Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alteração do Layout EFD ICMS IPI #117

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
Loading