Skip to content

Commit

Permalink
Merge pull request #117 from esistemsistemas/master_fork_issue_107
Browse files Browse the repository at this point in the history
Alteração do Layout EFD ICMS IPI
  • Loading branch information
orochasamuel authored Jan 26, 2024
2 parents fe75afb + bb5f594 commit f8ac625
Show file tree
Hide file tree
Showing 9 changed files with 99 additions and 18 deletions.
17 changes: 15 additions & 2 deletions src/FiscalBr.Common/Enums.cs
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,8 @@ public enum VersaoLeiauteSped
[DefaultValue("14")] V14,
[DefaultValue("15")] V15,
[DefaultValue("16")] V16,
[DefaultValue("17")] V17
[DefaultValue("17")] V17,
[DefaultValue("18")] V18
}

public enum CodVersaoSpedECD
Expand Down Expand Up @@ -460,6 +461,13 @@ public enum CodVersaoSpedFiscal
/// Validade: 01/01/2023 - 31/12/2023
/// </summary>
[DefaultValue("017")] V17,

/// <summary>
/// Código: 018
/// Versão: 1.16
/// Validade: 01/01/2024 - 31/12/2024
/// </summary>
[DefaultValue("018")] V18
}

public enum SimOuNao
Expand Down Expand Up @@ -896,7 +904,12 @@ public enum IndTipoOperacaoStUfDiversa
/// <summary>
/// 1 - Leasing de veículos ou faturamento direto.
/// </summary>
[DefaultValue("1")] LeasingVeiculosFaturamentoDireto
[DefaultValue("1")] LeasingVeiculosFaturamentoDireto,

/// <summary>
/// 2 - Recusa de recebimento (de acordo com as condições descritas nas instruções do Registro)
/// </summary>
[DefaultValue("2")] RecusaDeRecebimento
}

/// <summary>
Expand Down
2 changes: 2 additions & 0 deletions src/FiscalBr.Common/Sped/ArquivoSpedV2.cs
Original file line number Diff line number Diff line change
Expand Up @@ -755,6 +755,8 @@ public virtual Enum ObterEnumVersaoLeiaute()
return CodVersaoSpedFiscal.V16;
case VersaoLeiauteSped.V17:
return CodVersaoSpedFiscal.V17;
case VersaoLeiauteSped.V18:
return CodVersaoSpedFiscal.V18;
}
break;
}
Expand Down
25 changes: 23 additions & 2 deletions src/FiscalBr.EFDFiscal/Bloco1.cs
Original file line number Diff line number Diff line change
Expand Up @@ -988,15 +988,34 @@ public Registro1391() : base("1391")
/// 01 – Bagaço de cana
/// 02 - DDG
/// 03 - WDG
/// 04 - (DDG + WDG)
/// </remarks>
[SpedCampos(19, "TP_RESIDUO", "N", 2, 0, false, 6)]
public int? TpResiduo { get; set; }

/// <summary>
/// Quantidade de resíduo produzido (toneladas)
/// </summary>
[SpedCampos(19, "QTD_RESIDUO", "N", int.MaxValue, 2, true, 6)]
[SpedCampos(20, "QTD_RESIDUO", "N", int.MaxValue, 2, true, 6)]
public decimal QtdResiduo { get; set; }

/// <summary>
/// Quantidade de resíduo produzido de DDG (toneladas)
/// </summary>
[SpedCampos(21, "QTD_RESIDUO_DDG", "N", int.MaxValue, 2, true, 18)]
public decimal QtdResiduoDdg { get; set; }

/// <summary>
/// Quantidade de resíduo produzido de WDG (toneladas)
/// </summary>
[SpedCampos(22, "QTD_RESIDUO_WDG", "N", int.MaxValue, 2, true, 18)]
public decimal QtdResiduoWdg { get; set; }

/// <summary>
/// Quantidade de resíduo produzido de bagaço de cana (toneladas)
/// </summary>
[SpedCampos(23, "QTD_RESIDUO_CANA", "N", int.MaxValue, 2, true, 18)]
public decimal QtdResiduoCana { get; set; }
}

/// <summary>
Expand All @@ -1012,7 +1031,9 @@ public Registro1400() : base("1400")
}

/// <summary>
/// Código do item - próprio IPM ou campo 02 do Registro 0200
/// Código do item (Tabela 5.9.1 de Itens UF Índice de
/// Participação dos Municípios ou Tabela 5.9.2 de Itens UF_ST
/// Índice de participação dos Municípios) ou campo 02 do Registro 0200
/// </summary>
[SpedCampos(2, "COD_ITEM_IPM", "C", 60, 0, true, 2)]
public string CodItemIpm { get; set; }
Expand Down
8 changes: 5 additions & 3 deletions src/FiscalBr.EFDFiscal/BlocoC.cs
Original file line number Diff line number Diff line change
Expand Up @@ -1278,8 +1278,8 @@ public RegistroC105() : base("C105")
/// </summary>
/// <remarks>
/// 0 - Combustíveis e lubrificantes;
/// <para />
/// 1 - Leasing de veículos ou faturamento direto.
/// 1 - Leasing de veículos ou faturamento direto;
/// 2 - Recusa de recebimento (de acordo com as condições descritas nas instruções do Registro).
/// </remarks>
[SpedCampos(2, "OPER", "N", 1, 0, true, 3)]
public IndTipoOperacaoStUfDiversa Oper { get; set; }
Expand Down Expand Up @@ -5512,7 +5512,9 @@ public RegistroC690() : base("C690")

/// <summary>
/// REGISTRO C700: CONSOLIDAÇÃO DOS DOCUMENTOS (EMPRESAS OBRIGADAS
/// À ENTREGA DO ARQUIVO PREVISTO NO CONVÊNIO ICMS 115/03)
/// À ENTREGA DO ARQUIVO PREVISTO NO CONVÊNIO ICMS 115/03), NOTA FISCAL/CONTA DE
/// FORNECIMENTO DE GÁS CANALIZADO (CÓDIGO 28) e NOTA FISCAL DE ENERGIA
/// ELÉTRICA ELETRÔNICA – NF3e (CÓDIGO 66)
/// </summary>
public class RegistroC700 : RegistroSped
{
Expand Down
13 changes: 8 additions & 5 deletions src/FiscalBr.EFDFiscal/BlocoD.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3066,6 +3066,7 @@ public RegistroD700() : base("D700")
/// Série do documento fiscal.
/// </summary>
[SpedCampos(7, "SER", "N", 3, 0, false, 17)]
[SpedCampos(7, "SER", "N", 3, 0, true, 18)]
public string Ser { get; set; }

/// <summary>
Expand All @@ -3081,7 +3082,7 @@ public RegistroD700() : base("D700")
public DateTime? DtDoc { get; set; }

/// <summary>
/// Data da entrada.
/// Data da entrada ou da saída.
/// </summary>
[SpedCampos(10, "DT_E_S", "N", 8, 0, false, 17)]
public DateTime? DtEs { get; set; }
Expand Down Expand Up @@ -3156,6 +3157,7 @@ public RegistroD700() : base("D700")
/// Chave da Nota Fiscal Fatura de Serviço de Comunicação Eletrônica.
/// </summary>
[SpedCampos(22, "CHV_DOCe", "C", 44, 0, false, 17)]
[SpedCampos(22, "CHV_DOCe", "C", 44, 0, true, 18)]
public string ChvDoce { get; set; }

/// <summary>
Expand Down Expand Up @@ -3262,8 +3264,8 @@ public RegistroD730() : base("D730")
public decimal AliqIcms { get; set; }

/// <summary>
/// Valor total acumulado das operações correspondentes à combinação de CST_ICMS, CFOP e alíquota do ICMS, incluídas as
/// despesas acessórias e acréscimos.
/// Valor total dos itens relacionados aos serviços próprios, com destaque de ICMS, correspondente à
/// combinação de CST_ICMS, CFOP, e alíquota do CMS.
/// </summary>
[SpedCampos(5, "VL_OPR", "N", 0, 2, true, 17)]
public decimal VlOpr { get; set; }
Expand Down Expand Up @@ -3424,6 +3426,7 @@ public RegistroD750() : base("D750")
/// Série do documento fiscal
/// </summary>
[SpedCampos(3, "SER", "C", 3, 0, true, 17)]
[SpedCampos(3, "SER", "N", 3, 0, true, 18)]
public string Ser { get; set; }

/// <summary>
Expand Down Expand Up @@ -3540,8 +3543,8 @@ public RegistroD760() : base("D760")
public decimal AliqIcms { get; set; }

/// <summary>
/// Valor total acumulado das operações correspondentes à combinação de CST_ICMS, CFOP e alíquota do ICMS, incluídas as
/// despesas acessórias menos os descontos incondicionais.
/// Valor total dos itens relacionados aos serviços próprios com destaque de ICMS, correspondente à combinação de
/// CST_ICMS, CFOP, e alíquota do ICMS.
/// </summary>
[SpedCampos(5, "VL_OPR", "N", 0, 2, true, 17)]
public decimal VlOpr { get; set; }
Expand Down
12 changes: 9 additions & 3 deletions src/FiscalBr.EFDFiscal/BlocoE.cs
Original file line number Diff line number Diff line change
Expand Up @@ -414,11 +414,11 @@ public RegistroE113() : base("E113")
}

/// <summary>
/// Código do participante
/// Código do participante (campo 02 do Registro 0150)
/// </summary>
/// <remarks>
/// - do emitente do documento ou do remetente das mercadorias, no caso das entradas;
/// - do adquirente, no caso de saídas
/// - do adquirente, no caso de saídas.
/// </remarks>
[SpedCampos(2, "COD_PART", "C", 60, 0, true, 2)]
public string CodPart { get; set; }
Expand Down Expand Up @@ -454,7 +454,7 @@ public RegistroE113() : base("E113")
public DateTime DtDoc { get; set; }

/// <summary>
/// Código do item
/// Código do item (campo 02 do Registro 0200)
/// </summary>
[SpedCampos(8, "COD_ITEM", "C", 60, 0, false, 2)]
public string CodItem { get; set; }
Expand Down Expand Up @@ -856,6 +856,12 @@ public RegistroE240() : base("E240")
/// </summary>
[SpedCampos(9, "VL_AJ_ITEM", "N", 0, 2, true, 2)]
public decimal VlAjItem { get; set; }

/// <summary>
/// Chave do Documento Eletrônico
/// </summary>
[SpedCampos(9, "CHV_DOCe", "N", 44, 0, false, 18)]
public decimal ChvDoc { get; set; }
}

/// <summary>
Expand Down
34 changes: 34 additions & 0 deletions tests/FiscalBr.Test/Sped/Bloco0/Bloco0Registro000Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -67,5 +67,39 @@ public void Escrever_Registro_0000_EFDFiscal_VNova()

Assert.Equal(expectedResult, currentResult);
}

[Fact]
public void Escrever_Registro_0000_EFDFiscal_V18()
{
var initialDate = DateTime.Now.AddDays(-(DateTime.Now.Day - 1)).Date;
var finalDate = initialDate.AddMonths(1).AddDays(-1);

var formatedInitialDate = initialDate.ToString(new CultureInfo("pt-BR")).Replace("/", "").Split(" ")[0];
var formatedFinalDate = finalDate.ToString(new CultureInfo("pt-BR")).Replace("/", "").Split(" ")[0];

var expectedResult =
$"|0000|018|0|{formatedInitialDate}|{formatedFinalDate}|BANCO DO BRASIL S.A.|00000000000191||GO|123456789|5204508|||A|1|{Environment.NewLine}";

var source = new EFDFiscal.Bloco0.Registro0000
{
CodVer = CodVersaoSpedFiscal.V18,
CodFin = IndCodFinalidadeArquivo.RemessaArquivoOriginal,
DtIni = initialDate,
DtFin = finalDate,
Nome = "BANCO DO BRASIL S.A.",
Cnpj = "00000000000191",
Uf = "GO",
Ie = "123456789",
CodMun = "5204508",
IndPerfil = IndPerfilArquivo.A,
IndAtiv = Common.Sped.Enums.TipoAtivSpedFiscal.Outros
};

var efd = new ArquivoEFDFiscalV2(VersaoLeiauteSped.V18);

var currentResult = efd.EscreverLinha(source);

Assert.Equal(expectedResult, currentResult);
}
}
}
2 changes: 1 addition & 1 deletion tests/FiscalBr.Test/Sped/Bloco1/Bloco1Registro1391Test.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ public class Bloco1Registro1391Test
[Fact]
public void Ler_Registro_1391_EFDFiscal()
{
string linha = "|1391|01012023|123,41|123,42|123,43|123,44|123,45|123,46|123,47|123,48|123,49|123,40|123,41|123,42|123,43|123,44|Observações|COD_ITEM|01|123,45|";
string linha = "|1391|01012023|123,41|123,42|123,43|123,44|123,45|123,46|123,47|123,48|123,49|123,40|123,41|123,42|123,43|123,44|Observações|COD_ITEM|01|123,45|123,45|123,45|123,45|";

var registro = (FiscalBr.EFDFiscal.Bloco1.Registro1391)LerCamposSped.LerCampos(linha, "EFDFiscal", 0);

Expand Down
4 changes: 2 additions & 2 deletions tests/FiscalBr.Test/Sped/Enums/CodigoVersaoLeiauteSpedTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ public void ObterIntVersaoEFDContribTest(VersaoLeiauteSped? v, int versaoEsperad

[Theory]
[InlineData(VersaoLeiauteSped.V2, CodVersaoSpedFiscal.V2)]
[InlineData(null, CodVersaoSpedFiscal.V17)]
[InlineData(null, CodVersaoSpedFiscal.V18)]
public void ObterEnumVersaoEFDFiscalTest(VersaoLeiauteSped? v, CodVersaoSpedFiscal? resultadoEsperado)
{
var maiorVersao = (int)EnumHelpers.GetEnumMaxValue<CodVersaoSpedFiscal>();
Expand Down Expand Up @@ -141,7 +141,7 @@ public void ObterNumeroVersoesEFDContribTest(int qtdEsperada)
}

[Theory]
[InlineData(16)]
[InlineData(17)]
public void ObterNumeroVersoesEFDFiscalTest(int qtdEsperada)
{
var efd = new ArquivoEFDFiscalV2();
Expand Down

0 comments on commit f8ac625

Please sign in to comment.