17 changed files with 403 additions and 27 deletions
-
26pytrustnfe/ChaveNFe.py
-
62pytrustnfe/nfe/__init__.py
-
9pytrustnfe/nfe/comunicacao.py
-
183pytrustnfe/nfe/templates/NfeAutorizacao.xml
-
8pytrustnfe/nfe/templates/NfeConsultaCadastro.xml
-
8pytrustnfe/nfe/templates/NfeConsultaDest.xml
-
6pytrustnfe/nfe/templates/NfeConsultaProtocolo.xml
-
6pytrustnfe/nfe/templates/NfeDownloadNF.xml
-
15pytrustnfe/nfe/templates/NfeInutilizacao.xml
-
5pytrustnfe/nfe/templates/NfeRetAutorizacao.xml
-
6pytrustnfe/nfe/templates/NfeStatusServico.xml
-
20pytrustnfe/nfe/templates/RecepcaoEventoCancelamento.xml
-
21pytrustnfe/nfe/templates/RecepcaoEventoCarta.xml
-
31pytrustnfe/nfe/templates/RecepcaoEventoEPEC.xml
-
18pytrustnfe/nfe/templates/RecepcaoEventoManifesto.xml
-
6pytrustnfe/utils.py
-
0pytrustnfe/xml/consultar_cadastro.xml
@ -1,26 +0,0 @@ |
|||||
# -*- coding: utf-8 -*- |
|
||||
# © 2016 Danimar Ribeiro, Trustcode |
|
||||
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). |
|
||||
|
|
||||
|
|
||||
class ChaveNFe(object): |
|
||||
|
|
||||
def __init__(self, **kwargs): |
|
||||
self.cnpj = kwargs.pop('cnpj', '') |
|
||||
self.estado = kwargs.pop('estado', '') |
|
||||
self.emissao = kwargs.pop('emissao', '') |
|
||||
self.modelo = kwargs.pop('modelo', '') |
|
||||
self.serie = kwargs.pop('serie', '') |
|
||||
self.numero = kwargs.pop('numero', '') |
|
||||
self.tipo = kwargs.pop('tipo', '') |
|
||||
self.codigo = kwargs.pop('codigo', '') |
|
||||
|
|
||||
def validar(self): |
|
||||
assert self.cnpj != '', 'CNPJ necessário para criar chave NF-e' |
|
||||
assert self.estado != '', 'Estado necessário para criar chave NF-e' |
|
||||
assert self.emissao != '', 'Emissão necessário para criar chave NF-e' |
|
||||
assert self.modelo != '', 'Modelo necessário para criar chave NF-e' |
|
||||
assert self.serie != '', 'Série necessária para criar chave NF-e' |
|
||||
assert self.numero != '', 'Número necessário para criar chave NF-e' |
|
||||
assert self.tipo != '', 'Tipo necessário para criar chave NF-e' |
|
||||
assert self.codigo != '', 'Código necessário para criar chave NF-e' |
|
||||
@ -0,0 +1,183 @@ |
|||||
|
<enviNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"> |
||||
|
<idLote>{{ idLote }}</idLote> |
||||
|
<indSinc>{{ indSinc }}</indSinc> |
||||
|
{% for NFe in NFes %} |
||||
|
<NFe xmlns="http://www.portalfiscal.inf.br/nfe"> |
||||
|
<infNFe versao="3.10" Id="{{ NFe.infNFe.Id }}"> |
||||
|
<ide> |
||||
|
{% with ide = NFe.infNFe.ide %} |
||||
|
<cUF>{{ ide.cUF }}</cUF> |
||||
|
<cNF>{{ ide.cNF }}</cNF> |
||||
|
<natOp>{{ ide.natOp }}</natOp> |
||||
|
<indPag>{{ ide.indPag }}</indPag> |
||||
|
<mod>{{ ide.mod }}</mod> |
||||
|
<serie>{{ ide.serie }}</serie> |
||||
|
<nNF>{{ ide.nNF }}</nNF> |
||||
|
<dhEmi>{{ ide.dhEmi }}</dhEmi> |
||||
|
<dhSaiEnt>{{ ide.dhSaiEnt }}</dhSaiEnt> |
||||
|
<tpNF>{{ ide.tpNF }}</tpNF> |
||||
|
<idDest>{{ ide.idDest }}</idDest> |
||||
|
<cMunFG>{{ ide.cMunFG }}</cMunFG> |
||||
|
<tpImp>{{ ide.tpImp }}</tpImp> |
||||
|
<tpEmis>{{ ide.tpEmis }}</tpEmis> |
||||
|
<cDV>{{ ide.cDV }}</cDV> |
||||
|
<tpAmb>{{ ide.tpAmb }}</tpAmb> |
||||
|
<finNFe>{{ ide.finNFe }}</finNFe> |
||||
|
<indFinal>{{ ide.indFinal }}</indFinal> |
||||
|
<indPres>{{ ide.indPres }}</indPres> |
||||
|
<procEmi>{{ ide.procEmi }}</procEmi> |
||||
|
<verProc>Odoo Brasil 9.0</verProc> |
||||
|
{% endwith %} |
||||
|
</ide> |
||||
|
<emit> |
||||
|
{% with emit = NFe.infNFe.emit %} |
||||
|
{% if emit.tipo == 'person' -%} |
||||
|
<CPF>{{ emit.cnpj_cpf }}</CPF> |
||||
|
{% endif %} |
||||
|
{% if emit.tipo == 'company' -%} |
||||
|
<CNPJ>{{ emit.cnpj_cpf }}</CNPJ> |
||||
|
{% endif %} |
||||
|
<xNome>{{ emit.xNome }}</xNome> |
||||
|
<xFant>{{ emit.xFant }}</xFant> |
||||
|
<enderEmit> |
||||
|
<xLgr>{{ emit.enderEmit.xLgr }}</xLgr> |
||||
|
<nro>{{ emit.enderEmit.nro }}</nro> |
||||
|
<xBairro>{{ emit.enderEmit.xBairro }}</xBairro> |
||||
|
<cMun>{{ emit.enderEmit.cMun }}</cMun> |
||||
|
<xMun>{{ emit.enderEmit.xMun }}</xMun> |
||||
|
<UF>{{ emit.enderEmit.UF }}</UF> |
||||
|
<CEP>{{ emit.enderEmit.CEP }}</CEP> |
||||
|
<cPais>{{ emit.enderEmit.cPais }}</cPais> |
||||
|
<xPais>{{ emit.enderEmit.xPais }}</xPais> |
||||
|
<fone>{{ emit.enderEmit.fone }}</fone> |
||||
|
</enderEmit> |
||||
|
<IE>{{ emit.IE }}</IE> |
||||
|
<CRT>{{ emit.CRT }}</CRT> |
||||
|
{% endwith %} |
||||
|
</emit> |
||||
|
<dest> |
||||
|
{% with dest = NFe.infNFe.dest %} |
||||
|
{% if dest.tipo == 'person' -%} |
||||
|
<CPF>{{ dest.cnpj_cpf }}</CPF> |
||||
|
{% endif %} |
||||
|
{% if dest.tipo == 'company' -%} |
||||
|
<CNPJ>{{ dest.cnpj_cpf }}</CNPJ> |
||||
|
{% endif %} |
||||
|
<xNome>{{ dest.xNome }}</xNome> |
||||
|
<enderDest> |
||||
|
<xLgr>{{ dest.enderDest.xLgr }}</xLgr> |
||||
|
<nro>{{ dest.enderDest.nro }}</nro> |
||||
|
<xBairro>{{ dest.enderDest.xBairro }}</xBairro> |
||||
|
<cMun>{{ dest.enderDest.cMun }}</cMun> |
||||
|
<xMun>{{ dest.enderDest.xMun }}</xMun> |
||||
|
<UF>{{ dest.enderDest.UF }}</UF> |
||||
|
<CEP>{{ dest.enderDest.CEP }}</CEP> |
||||
|
<cPais>{{ dest.enderDest.cPais }}</cPais> |
||||
|
<xPais>{{ dest.enderDest.xPais }}</xPais> |
||||
|
<fone>{{ dest.enderDest.fone }}</fone> |
||||
|
</enderDest> |
||||
|
<indIEDest>{{ dest.indIEDest }}</indIEDest> |
||||
|
{% if dest.IE != '' -%}<IE>{{ dest.IE }}</IE>{% endif %} |
||||
|
{% endwith %} |
||||
|
</dest> |
||||
|
{% for det in NFe.infNFe.detalhes %} |
||||
|
<det nItem="1"> |
||||
|
<prod> |
||||
|
{% with prod = det.prod %} |
||||
|
<cProd>{{ prod.cProd }}</cProd> |
||||
|
<cEAN>{{ prod.cEAN }}</cEAN> |
||||
|
<xProd>{{ prod.xProd }}</xProd> |
||||
|
<NCM>{{ prod.NCM }}</NCM> |
||||
|
<CFOP>{{ prod.CFOP }}</CFOP> |
||||
|
<uCom>{{ prod.uCom }}</uCom> |
||||
|
<qCom>{{ prod.qCom }}</qCom> |
||||
|
<vUnCom>{{ prod.vUnCom }}</vUnCom> |
||||
|
<vProd>{{ prod.vProd }}</vProd> |
||||
|
<cEANTrib>{{ prod.cEANTrib }}</cEANTrib> |
||||
|
<uTrib>{{ prod.uTrib }}</uTrib> |
||||
|
<qTrib>{{ prod.qTrib }}</qTrib> |
||||
|
<vUnTrib>{{ prod.vUnTrib }}</vUnTrib> |
||||
|
<indTot>{{ prod.indTot }}</indTot> |
||||
|
{% endwith %} |
||||
|
</prod> |
||||
|
<imposto> |
||||
|
{% with imposto = det.imposto %} |
||||
|
<vTotTrib>{{ imposto.vTotTrib }}</vTotTrib> |
||||
|
<ICMS> |
||||
|
<ICMS00> |
||||
|
<orig>{{ imposto.ICMS.ICMS00.orig }}</orig> |
||||
|
<CST>{{ imposto.ICMS.ICMS00.CST }}</CST> |
||||
|
<modBC>{{ imposto.ICMS.ICMS00.modBC }}</modBC> |
||||
|
<vBC>{{ imposto.ICMS.ICMS00.vBC }}</vBC> |
||||
|
<pICMS>{{ imposto.ICMS.ICMS00.pICMS }}</pICMS> |
||||
|
<vICMS>{{ imposto.ICMS.ICMS00.vICMS }}</vICMS> |
||||
|
</ICMS00> |
||||
|
</ICMS> |
||||
|
<IPI> |
||||
|
<cEnq>{{ imposto.IPI.cEnq }}</cEnq> |
||||
|
<IPITrib> |
||||
|
<CST>{{ imposto.IPI.IPITrib.CST }}</CST> |
||||
|
<vBC>{{ imposto.IPI.IPITrib.vBC }}</vBC> |
||||
|
<pIPI>{{ imposto.IPI.IPITrib.pIPI }}</pIPI> |
||||
|
<vIPI>{{ imposto.IPI.IPITrib.vIPI }}</vIPI> |
||||
|
</IPITrib> |
||||
|
</IPI> |
||||
|
<PIS> |
||||
|
<PISAliq> |
||||
|
<CST>{{ imposto.PIS.PISAliq.CST }}</CST> |
||||
|
<vBC>{{ imposto.PIS.PISAliq.vBC }}</vBC> |
||||
|
<pPIS>{{ imposto.PIS.PISAliq.pPIS }}</pPIS> |
||||
|
<vPIS>{{ imposto.PIS.PISAliq.vPIS }}</vPIS> |
||||
|
</PISAliq> |
||||
|
</PIS> |
||||
|
<COFINS> |
||||
|
<COFINSAliq> |
||||
|
<CST>{{ imposto.COFINS.COFINSAliq.CST }}</CST> |
||||
|
<vBC>{{ imposto.COFINS.COFINSAliq.vBC }}</vBC> |
||||
|
<pCOFINS>{{ imposto.COFINS.COFINSAliq.pCOFINS }}</pCOFINS> |
||||
|
<vCOFINS>{{ imposto.COFINS.COFINSAliq.vCOFINS }}</vCOFINS> |
||||
|
</COFINSAliq> |
||||
|
</COFINS> |
||||
|
{% endwith %} |
||||
|
</imposto> |
||||
|
</det> |
||||
|
{% endfor %} |
||||
|
<total> |
||||
|
{% with total = NFe.infNFe.total %} |
||||
|
<ICMSTot> |
||||
|
<vBC>{{ total.vBC }}</vBC> |
||||
|
<vICMS>{{ total.vICMS }}</vICMS> |
||||
|
<vICMSDeson>{{ total.vICMSDeson }}</vICMSDeson> |
||||
|
<vBCST>{{ total.vBCST }}</vBCST> |
||||
|
<vST>{{ total.vST }}</vST> |
||||
|
<vProd>{{ total.vProd }}</vProd> |
||||
|
<vFrete>{{ total.vFrete }}</vFrete> |
||||
|
<vSeg>{{ total.vSeg }}</vSeg> |
||||
|
<vDesc>{{ total.vDesc }}</vDesc> |
||||
|
<vII>{{ total.vII }}</vII> |
||||
|
<vIPI>{{ total.vIPI }}</vIPI> |
||||
|
<vPIS>{{ total.vPIS }}</vPIS> |
||||
|
<vCOFINS>{{ total.vCOFINS }}</vCOFINS> |
||||
|
<vOutro>{{ total.vOutro }}</vOutro> |
||||
|
<vNF>{{ total.vNF }}</vNF> |
||||
|
<vTotTrib>{{ total.vTotTrib }}</vTotTrib> |
||||
|
</ICMSTot> |
||||
|
{% endwith %} |
||||
|
</total> |
||||
|
<transp> |
||||
|
<modFrete>{{ NFe.infNFe.transp.modFrete }}</modFrete> |
||||
|
</transp> |
||||
|
<cobr> |
||||
|
<dup> |
||||
|
<nDup>339/1</nDup> |
||||
|
<dVenc>2016-06-02</dVenc> |
||||
|
<vDup>8611.76</vDup> |
||||
|
</dup> |
||||
|
</cobr> |
||||
|
<infAdic> |
||||
|
<infCpl>{{ NFe.infNFe.infAdic.infCpl }}</infCpl> |
||||
|
</infAdic> |
||||
|
</infNFe> |
||||
|
</NFe> |
||||
|
{% endfor %} |
||||
|
</enviNFe> |
||||
@ -0,0 +1,8 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<ConsCad xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"> |
||||
|
<infCons> |
||||
|
<xServ>CONS-CAD</xServ> |
||||
|
<UF>{{ obj.estado }}</UF> |
||||
|
<CNPJ>{{ obj.cnpj }}</CNPJ> |
||||
|
</infCons> |
||||
|
</ConsCad> |
||||
@ -0,0 +1,8 @@ |
|||||
|
<consNFeDest xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.01"> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<xServ>CONSULTAR NFE DEST</xServ> |
||||
|
<CNPJ>{{ obj.cnpj }}</CNPJ> |
||||
|
<indNFe>{{ obj.indicador_nfe }}</indNFe> |
||||
|
<indEmi>{{ obj.indicador_emissor }}</indEmi> |
||||
|
<ultNSU>{{ obj.ultimo_nsu }}</ultNSU> |
||||
|
</consNFeDest> |
||||
@ -0,0 +1,6 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<consSitNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.01"> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<xServ>CONSULTAR</xServ> |
||||
|
<chNFe>{{ obj.chave_nfe }}</chNFe> |
||||
|
</consSitNFe> |
||||
@ -0,0 +1,6 @@ |
|||||
|
<downloadNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<xServ>DOWNLOAD NFE</xServ> |
||||
|
<CNPJ>{{ obj.cnpj }}</CNPJ> |
||||
|
<chNFe>{{ obj.chave_nfe }}</chNFe> |
||||
|
</downloadNFe> |
||||
@ -0,0 +1,15 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<inutNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="2.00"> |
||||
|
<infInut Id="{{ obj.id }}"> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<xServ>INUTILIZAR</xServ> |
||||
|
<cUF>{{ obj.estado }}</cUF> |
||||
|
<ano>{{ obj.ano }}</ano> |
||||
|
<CNPJ>{{ obj.cnpj }}</CNPJ> |
||||
|
<mod>{{ obj.modelo }}</mod> |
||||
|
<serie>{{ obj.serie }}</serie> |
||||
|
<nNFIni>{{ obj.numero_inicio}}</nNFIni> |
||||
|
<nNFFin>{{ obj.numero_fim }}</nNFFin> |
||||
|
<xJust>{{ obj.justificativa }}</xJust> |
||||
|
</infInut> |
||||
|
<inutNFe> |
||||
@ -0,0 +1,5 @@ |
|||||
|
<?xml version="1.0" encoding="utf-8"?> |
||||
|
<consReciNFe xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<nRec>{{ obj.numero_recibo }}</nRec> |
||||
|
</consReciNFe> |
||||
@ -0,0 +1,6 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8" ?> |
||||
|
<consStatServ xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<cUF>{{ obj.estado }}</cUF> |
||||
|
<xServ>STATUS</xServ> |
||||
|
</consStatServ> |
||||
@ -0,0 +1,20 @@ |
|||||
|
<envEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<idLote>{{ obj.lote }}</idLote> |
||||
|
<evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<infEvento Id="{{ obj.id }}"> |
||||
|
<cOrgao>{{ obj.orgao }}</cOrgao> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<CNPJ>{{ obj.cnpj }}</CNPJ> |
||||
|
<chNFe>{{ obj.chave_nfe }}</chNFe> |
||||
|
<dhEvento>{{ obj.data_hora_evento }}</dhEvento> |
||||
|
<tpEvento>110111</tpEvento> |
||||
|
<nSeqEvento>{{ obj.numero_evento }}</nSeqEvento> |
||||
|
<verEvento>1.00</verEvento> |
||||
|
<detEvento versao="1.00"> |
||||
|
<descEvento>Cancelamento</descEvento> |
||||
|
<nProt>{{ obj.protocolo }}</nProt> |
||||
|
<xJust>{{obj.justificativa }}</xJust> |
||||
|
</detEvento> |
||||
|
</infEvento> |
||||
|
</evento> |
||||
|
</envEvento> |
||||
@ -0,0 +1,21 @@ |
|||||
|
<?xml version="1.0" encoding="UTF-8"?> |
||||
|
<envEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<idLote>00000001319901</idLote> |
||||
|
<evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<infEvento Id="ID1101103511051014278500019055111000000013199881790001"> |
||||
|
<cOrgao>{{ obj.orgao }}</cOrgao> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<CNPJ>{{ obj.cnpj }}</CNPJ> |
||||
|
<chNFe>{{ obj.chave_nfe }}</chNFe> |
||||
|
<dhEvento>{{} obj.data_hora_evento }</dhEvento> |
||||
|
<tpEvento>110110</tpEvento> |
||||
|
<nSeqEvento>{{ obj.sequencia }}</nSeqEvento> |
||||
|
<verEvento>1.00</verEvento> |
||||
|
<detEvento versao="1.00"> |
||||
|
<descEvento>Carta de Correção</descEvento> |
||||
|
<xCorrecao>{{ obj.correcao }}</xCorrecao> |
||||
|
<xCondUso>A Carta de Correção é disciplinada pelo § 1º-A do art. 7º do Convênio S/N, de 15 de dezembro de 1970 e pode ser utilizada para regularização de erro ocorrido na emissão de documento fiscal, desde que o erro não esteja relacionado com: I - as variáveis que determinam o valor do imposto tais como: base de cálculo, alíquota, diferença de preço, quantidade, valor da operação ou da prestação; II - a correção de dados cadastrais que implique mudança do remetente ou do destinatário; III - a data de emissão ou de saída.</xCondUso> |
||||
|
</detEvento> |
||||
|
</infEvento> |
||||
|
</evento> |
||||
|
</envEvento> |
||||
@ -0,0 +1,31 @@ |
|||||
|
<envEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<idLote>00106151340701</idLote> |
||||
|
<evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<infEvento Id="ID1101403514081014278500019055001001061513407959995201"> |
||||
|
<cOrgao>91</cOrgao> |
||||
|
<tpAmb>2</tpAmb> |
||||
|
<CNPJ>10142785000190</CNPJ> |
||||
|
<chNFe>35140810142785000190550010010615134079599952</chNFe> |
||||
|
<dhEvento>2014-08-07T04:52:51-03:00</dhEvento> |
||||
|
<tpEvento>110140</tpEvento> |
||||
|
<nSeqEvento>1</nSeqEvento> |
||||
|
<verEvento>1.00</verEvento> |
||||
|
<detEvento versao="1.00"> |
||||
|
<descEvento>EPEC</descEvento> |
||||
|
<cOrgaoAutor>35</cOrgaoAutor> |
||||
|
<tpAutor>1</tpAutor> |
||||
|
<verAplic>1.26</verAplic> |
||||
|
<dhEmi>2014-08-07T00:00:00-03:00</dhEmi> |
||||
|
<tpNF>1</tpNF> |
||||
|
<IE>495171423115</IE> |
||||
|
<dest> |
||||
|
<UF>SP</UF> |
||||
|
<CPF>00000000191</CPF> |
||||
|
<vNF>86.00</vNF> |
||||
|
<vICMS>6.02</vICMS> |
||||
|
<vST>0</vST> |
||||
|
</dest> |
||||
|
</detEvento> |
||||
|
</infEvento> |
||||
|
</evento> |
||||
|
</envEvento> |
||||
@ -0,0 +1,18 @@ |
|||||
|
<envEvento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<idLote>{{ obj.lote }}</idLote> |
||||
|
<evento xmlns="http://www.portalfiscal.inf.br/nfe" versao="1.00"> |
||||
|
<infEvento Id="{{ obj.id }}"> |
||||
|
<cOrgao>{{ obj.orgao }}</cOrgao> |
||||
|
<tpAmb>{{ obj.ambiente }}</tpAmb> |
||||
|
<CNPJ>{{ obj.cnpj }}</CNPJ> |
||||
|
<chNFe>{{ obj.chave_nfe }}</chNFe> |
||||
|
<dhEvento>{{ obj.data_hora_evento }}</dhEvento> |
||||
|
<tpEvento>210200</tpEvento> |
||||
|
<nSeqEvento>{{ obj.sequencia }}</nSeqEvento> |
||||
|
<verEvento>1.00</verEvento> |
||||
|
<detEvento versao="1.00"> |
||||
|
<descEvento>Confirmacao da Operacao</descEvento> |
||||
|
</detEvento> |
||||
|
</infEvento> |
||||
|
</evento> |
||||
|
</envEvento> |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue