Skip to content

Commit

Permalink
REINF: Testes de desserialização do evento de retorno da série R-4000…
Browse files Browse the repository at this point in the history
… (R-9005).
  • Loading branch information
Henrique Clausing committed Sep 12, 2023
1 parent fae19cb commit 9b95183
Show file tree
Hide file tree
Showing 5 changed files with 168 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ public abstract class EventoRetorno : EfdReinfBindableObject
/// <summary>
/// <see cref="EficazFramework.SPED.Schemas.EFD_Reinf.Versao"/> do schema para leitura / escrita
/// </summary>
[XmlIgnore]
public Versao Versao { get; set; } = Versao.v2_01_02;

// Base Members
Expand Down
4 changes: 2 additions & 2 deletions src/Core/EficazFramework.SPED/Schemas/EFD-Reinf/R-9005.cs
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ public partial class R9005 : EventoRetorno
private R9005EventoRetornoTotal evtRetField;
private SignatureType signatureField;

[XmlElement(Order = 0)]
[XmlElement()]
public R9005EventoRetornoTotal evtRet
{
get => evtRetField;
Expand All @@ -21,7 +21,7 @@ public R9005EventoRetornoTotal evtRet
}

/// <exclude/>
[XmlElement(Namespace = "http://www.w3.org/2000/09/xmldsig#", Order = 1)]
[XmlElement(Namespace = "http://www.w3.org/2000/09/xmldsig#")]
public SignatureType Signature
{
get => signatureField;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

87 changes: 87 additions & 0 deletions src/Tests/EficazFramework.Tests/Resources/Schemas/EFD-Reinf.resx
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,93 @@
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<data name="Content_R9005_v2_01_02_B" xml:space="preserve">
<value>&lt;Reinf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.reinf.esocial.gov.br/schemas/evtRet/v2_01_02"&gt;
&lt;evtRet id="ID9005000000000000000000000601050088"&gt;
&lt;ideEvento&gt;
&lt;perApur&gt;2023-08&lt;/perApur&gt;
&lt;/ideEvento&gt;
&lt;ideContri&gt;
&lt;tpInsc&gt;1&lt;/tpInsc&gt;
&lt;nrInsc&gt;34785515&lt;/nrInsc&gt;
&lt;/ideContri&gt;
&lt;ideRecRetorno&gt;
&lt;ideStatus&gt;
&lt;cdRetorno&gt;0&lt;/cdRetorno&gt;
&lt;descRetorno&gt;SUCESSO&lt;/descRetorno&gt;
&lt;/ideStatus&gt;
&lt;/ideRecRetorno&gt;
&lt;infoRecEv&gt;
&lt;nrRecArqBase&gt;26072-02-4020-2308-26072&lt;/nrRecArqBase&gt;
&lt;nrProtLote&gt;2.202309.1247674&lt;/nrProtLote&gt;
&lt;dhRecepcao&gt;2023-09-11T21:43:41.877&lt;/dhRecepcao&gt;
&lt;dhProcess&gt;2023-09-11T21:43:42.5914104-03:00&lt;/dhProcess&gt;
&lt;tpEv&gt;4020&lt;/tpEv&gt;
&lt;idEv&gt;ID1000000112116922023091121434100001&lt;/idEv&gt;
&lt;hash&gt;NBZkwxhz0EL9Uxq0UQxgz/BJZF72DtqKkYB4az7Bqf0=&lt;/hash&gt;
&lt;/infoRecEv&gt;
&lt;infoTotal&gt;
&lt;ideEstab&gt;
&lt;tpInsc&gt;1&lt;/tpInsc&gt;
&lt;nrInsc&gt;61918769000188&lt;/nrInsc&gt;
&lt;nrInscBenef&gt;10608025000126&lt;/nrInscBenef&gt;
&lt;totApurMen&gt;
&lt;CRMen&gt;170806&lt;/CRMen&gt;
&lt;vlrBaseCRMen&gt;152725,25&lt;/vlrBaseCRMen&gt;
&lt;natRend&gt;15010&lt;/natRend&gt;
&lt;totApurTribMen&gt;
&lt;vlrCRMenInf&gt;2290,88&lt;/vlrCRMenInf&gt;
&lt;/totApurTribMen&gt;
&lt;/totApurMen&gt;
&lt;totApurMen&gt;
&lt;CRMen&gt;598707&lt;/CRMen&gt;
&lt;vlrBaseCRMen&gt;152725,25&lt;/vlrBaseCRMen&gt;
&lt;natRend&gt;15010&lt;/natRend&gt;
&lt;totApurTribMen&gt;
&lt;vlrCRMenInf&gt;15272,53&lt;/vlrCRMenInf&gt;
&lt;/totApurTribMen&gt;
&lt;/totApurMen&gt;
&lt;totApurMen&gt;
&lt;CRMen&gt;596007&lt;/CRMen&gt;
&lt;vlrBaseCRMen&gt;152725,25&lt;/vlrBaseCRMen&gt;
&lt;natRend&gt;15010&lt;/natRend&gt;
&lt;totApurTribMen&gt;
&lt;vlrCRMenInf&gt;4581,76&lt;/vlrCRMenInf&gt;
&lt;/totApurTribMen&gt;
&lt;/totApurMen&gt;
&lt;totApurMen&gt;
&lt;CRMen&gt;597907&lt;/CRMen&gt;
&lt;vlrBaseCRMen&gt;152725,25&lt;/vlrBaseCRMen&gt;
&lt;natRend&gt;15010&lt;/natRend&gt;
&lt;totApurTribMen&gt;
&lt;vlrCRMenInf&gt;992,71&lt;/vlrCRMenInf&gt;
&lt;/totApurTribMen&gt;
&lt;/totApurMen&gt;
&lt;/ideEstab&gt;
&lt;/infoTotal&gt;
&lt;/evtRet&gt;
&lt;Signature xmlns="http://www.w3.org/2000/09/xmldsig#"&gt;
&lt;SignedInfo&gt;
&lt;CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /&gt;
&lt;SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256" /&gt;
&lt;Reference URI="#ID9005000000000000000000000601050088"&gt;
&lt;Transforms&gt;
&lt;Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" /&gt;
&lt;Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" /&gt;
&lt;/Transforms&gt;
&lt;DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256" /&gt;
&lt;DigestValue&gt;bhXx4bp4kReZvKn6oDPKKdCFGBi2RaiP1MWzxAOozSE=&lt;/DigestValue&gt;
&lt;/Reference&gt;
&lt;/SignedInfo&gt;
&lt;SignatureValue&gt;s0qAJrcU2N5WpjFsWUbK5qsG2CTcn5qO93xKtqy6lld2prLZrjE/rlGhUU24h+Nt5xYbd77EYptIyzyJoFge+jtgEbSkAdefvzWzgQN3r22cblaX2Bfx7chv9lzN3ilLQ/Kx4vuLuNV0Md0F2RT9qSr7smeluAxKCiO0S7IAcWgFYEPNvEKQ8bRw5cY1khNZaM9yLypvGlnAEUoyh8lTa83697SWSeh2aVvfsDXL+RY7TF2CES85wQSXTLh5P6HfviRdYukFo4N+YxMMCgm42O0doa59bg+zzqHZIqht4GblVwD0XL6iUg7SG0HMqAZFImwG6oEyZFdzlWh395MW8g==&lt;/SignatureValue&gt;
&lt;KeyInfo&gt;
&lt;X509Data&gt;
&lt;X509Certificate&gt;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&lt;/X509Certificate&gt;
&lt;/X509Data&gt;
&lt;/KeyInfo&gt;
&lt;/Signature&gt;
&lt;/Reinf&gt;</value>
</data>
<data name="Content_R9015_v2_01_02_B_MovIsento" xml:space="preserve">
<value>&lt;Reinf xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.reinf.esocial.gov.br/schemas/evtRetCons/v2_01_02"&gt;
&lt;evtRetCons id="ID9015000000000000000000000323704091"&gt;
Expand Down
56 changes: 56 additions & 0 deletions src/Tests/EficazFramework.Tests/Schemas/EFD-Reinf/R-9005.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
using System.Linq.Expressions;

namespace EficazFramework.SPED.Schemas.EFD_Reinf;

public class R9005Test
{
[Test]
[TestCase(Versao.v2_01_02)]
public void ValidaRetornoEnvio(Versao versao)
{
R9005 instancia = new()
{
Versao = versao
};
instancia = (R9005)instancia.Read(Resources.Schemas.EFD_Reinf.Content_R9005_v2_01_02_B);
instancia.evtRet.id.Should().Be("ID9005000000000000000000000601050088");
instancia.evtRet.ideEvento.perApur.Should().Be("2023-08");
instancia.evtRet.ideContri.tpInsc.Should().Be(PersonalidadeJuridica.CNPJ);
instancia.evtRet.ideContri.nrInsc.Should().Be("34785515");
instancia.evtRet.ideRecRetorno.ideStatus.cdRetorno.Should().Be("0");
instancia.evtRet.ideRecRetorno.ideStatus.descRetorno.Should().Be("SUCESSO");
instancia.evtRet.infoRecEv.nrRecArqBase.Should().Be("26072-02-4020-2308-26072");
instancia.evtRet.infoRecEv.nrProtLote.Should().Be("2.202309.1247674");
instancia.evtRet.infoRecEv.dhRecepcao.Date.Should().Be(new DateTime(2023, 09, 11));
instancia.evtRet.infoRecEv.dhRecepcao.Hour.Should().Be(21);
instancia.evtRet.infoRecEv.dhRecepcao.Minute.Should().Be(43);
instancia.evtRet.infoRecEv.dhRecepcao.Second.Should().Be(41);
instancia.evtRet.infoRecEv.dhProcess.Date.Should().Be(new DateTime(2023, 09, 11));
instancia.evtRet.infoRecEv.dhProcess.Hour.Should().Be(21);
instancia.evtRet.infoRecEv.dhProcess.Minute.Should().Be(43);
instancia.evtRet.infoRecEv.dhProcess.Second.Should().Be(42);
instancia.evtRet.infoRecEv.tpEv.Should().Be("4020");
instancia.evtRet.infoRecEv.idEv.Should().Be("ID1000000112116922023091121434100001");
instancia.evtRet.infoRecEv.hash.Should().Be("NBZkwxhz0EL9Uxq0UQxgz/BJZF72DtqKkYB4az7Bqf0=");
instancia.evtRet.infoRecEv.fechRet.Should().BeNull();

instancia.evtRet.infoTotal.ideEstab.tpInsc.Should().Be(PersonalidadeJuridica.CNPJ);
instancia.evtRet.infoTotal.ideEstab.nrInsc.Should().Be("61918769000188");
instancia.evtRet.infoTotal.ideEstab.nrInscBenef.Should().Be("10608025000126");
instancia.evtRet.infoTotal.ideEstab.TotalApuracaoQuinzenal.Should().BeNull();
instancia.evtRet.infoTotal.ideEstab.TotalApuracaoDecendial.Should().BeNull();
instancia.evtRet.infoTotal.ideEstab.TotalApuracaoSemanal.Should().BeNull();
instancia.evtRet.infoTotal.ideEstab.TotalApuracaoDiaria.Should().BeNull();
var totalMesNR = instancia.evtRet.infoTotal.ideEstab.TotalApuracaoMensal;
totalMesNR.Should().NotBeNull();
totalMesNR.Where(e => e.CodigoReceita == "170806")
.Sum(e => decimal.Parse(e.ValorBaseCR ?? "0"))
.Should().Be(152725.25M);
totalMesNR.Where(e => e.CodigoReceita == "170806")
.Sum(e => decimal.Parse(e.TotalApuracaoTributo.ValorCRInformado ?? "0"))
.Should().Be(2290.88M);
totalMesNR.Sum(e => decimal.Parse(e.ValorBaseCR ?? "0")).Should().Be(610901M);
totalMesNR.Sum(e => decimal.Parse(e.TotalApuracaoTributo.ValorCRInformado ?? "0")).Should().Be(23137.88M);
}

}

0 comments on commit 9b95183

Please sign in to comment.