Browse Source

Código e descrição do produto com quebra de linha

Últimos ajustes na layout do danfe
pull/47/head
Danimar Ribeiro 9 years ago
parent
commit
f6813d73b0
  1. 106
      pytrustnfe/nfe/danfe.py
  2. 2
      pytrustnfe/test/XMLs/NFe00000857.xml
  3. 6
      pytrustnfe/test/test_danfe.py
  4. 2
      setup.py

106
pytrustnfe/nfe/danfe.py

@ -77,7 +77,7 @@ class danfe(object):
self.nLeft = 10
self.nRight = 10
self.nTop = 7
self.nBottom = 15
self.nBottom = 8
self.nlin = self.nTop
self.logo = logo
self.oFrete = {'0': '0 - Emitente',
@ -104,7 +104,7 @@ class danfe(object):
# Calculando total linhas usadas para descrições dos itens
# Com bloco fatura, apenas 29 linhas para itens na primeira folha
nNr_Lin_Pg_1 = 34 if oXML_cobr is None else 29
nNr_Lin_Pg_1 = 34 if oXML_cobr is None else 30
# [ rec_ini , rec_fim , lines , limit_lines ]
oPaginator = [[0, 0, 0, nNr_Lin_Pg_1]]
el_det = oXML.findall(".//{http://www.portalfiscal.inf.br/nfe}det")
@ -163,7 +163,8 @@ class danfe(object):
self.newpage()
self.ide_emit(oXML=oXML)
self.produtos(oXML=oXML, el_det=el_det, oPaginator=oPag,
list_desc=list_desc, nHeight=77)
list_desc=list_desc, nHeight=77,
list_cod_prod=list_cod_prod)
self.newpage()
@ -185,6 +186,8 @@ class danfe(object):
self.rect(self.nLeft+115, self.nlin+1,
self.width-self.nLeft-self.nRight-115, 39)
self.hline(self.nLeft+85, self.nlin+1, 125)
self.rect(self.nLeft+116, self.nlin+15,
self.width-self.nLeft-self.nRight-117, 6)
@ -196,7 +199,7 @@ class danfe(object):
# Labels
self.canvas.setFont('NimbusSanL-Bold', 12)
self.stringcenter(self.nLeft+98, self.nlin+4, 'DANFE')
self.stringcenter(self.nLeft+98, self.nlin+5, 'DANFE')
self.stringcenter(self.nLeft+109, self.nlin+19.5,
tagtext(oNode=elem_ide, cTag='tpNF'))
self.canvas.setFont('NimbusSanL-Bold', 8)
@ -342,9 +345,9 @@ class danfe(object):
self.string(nMr-69, self.nlin+7.5,
format_cnpj_cpf(tagtext(oNode=elem_dest, cTag='CNPJ')))
cDt, cHr = getdateUTC(tagtext(oNode=elem_ide, cTag='dhEmi'))
self.string(nMr-24, self.nlin+7.7, cDt)
self.string(nMr-24, self.nlin+7.7, cDt + ' ' + cHr)
cDt, cHr = getdateUTC(tagtext(oNode=elem_ide, cTag='dhSaiEnt'))
self.string(nMr-24, self.nlin+14.3, cDt) # Dt saída
self.string(nMr-24, self.nlin+14.3, cDt + ' ' + cHr) # Dt saída
cEnd = tagtext(oNode=elem_dest, cTag='xLgr') + ', ' + tagtext(
oNode=elem_dest, cTag='nro')
self.string(self.nLeft+1, self.nlin+14.3, cEnd)
@ -442,65 +445,67 @@ obsCont[@xCampo='NomeVendedor']")
self.width-self.nLeft-self.nRight, 13)
self.hline(self.nLeft, self.nlin+8.5, self.width-self.nLeft)
self.vline(nMr-35, self.nlin+2, 6.5)
self.vline(nMr-72, self.nlin+2, 6.5)
self.vline(nMr-110, self.nlin+2, 6.5)
self.vline(nMr-148, self.nlin+2, 6.5)
self.vline(nMr-65, self.nlin+2, 6.5)
self.vline(nMr-95, self.nlin+2, 6.5)
self.vline(nMr-125, self.nlin+2, 6.5)
self.vline(nMr-155, self.nlin+2, 6.5)
self.vline(nMr-35, self.nlin+8.5, 6.5)
self.vline(nMr-66, self.nlin+8.5, 6.5)
self.vline(nMr-90, self.nlin+8.5, 6.5)
self.vline(nMr-119, self.nlin+8.5, 6.5)
self.vline(nMr-140, self.nlin+8.5, 6.5)
self.vline(nMr-163, self.nlin+8.5, 6.5)
self.vline(nMr-65, self.nlin+8.5, 6.5)
self.vline(nMr-95, self.nlin+8.5, 6.5)
self.vline(nMr-125, self.nlin+8.5, 6.5)
self.vline(nMr-155, self.nlin+8.5, 6.5)
# Labels
self.canvas.setFont('NimbusSanL-Regu', 5)
self.string(nMr-34, self.nlin+3.8, 'VALOR TOTAL DOS PRODUTOS')
self.string(nMr-71, self.nlin+3.8, 'VALOR DO ICMS ST')
self.string(nMr-109, self.nlin+3.8, 'BASE DE CÁLCULO DO ICMS ST')
self.string(nMr-147, self.nlin+3.8, 'VALOR DO ICMS')
self.string(self.nLeft+1, self.nlin+3.8, 'BASE DE CÁLCULO DO ICMS')
self.string(nMr-34, self.nlin+10.2, 'VALOR TOTAL DA NOTA')
self.string(nMr-65, self.nlin+10.2, 'VALOR APROX TRIBUTOS')
self.string(nMr-89, self.nlin+10.2, 'VALOR DO IPI')
self.string(nMr-118, self.nlin+10.2, 'OUTRAS DESP. ACESSÓRIAS')
self.string(nMr-139, self.nlin+10.2, 'DESCONTO')
self.string(nMr-162, self.nlin+10.2, 'VALOR DO SEGURO')
self.string(nMr-154, self.nlin+3.8, 'VALOR DO ICMS')
self.string(nMr-124, self.nlin+3.8, 'BASE DE CÁLCULO DO ICMS ST')
self.string(nMr-94, self.nlin+3.8, 'VALOR DO ICMS ST')
self.string(nMr-64, self.nlin+3.8, 'VALOR APROX TRIBUTOS')
self.string(nMr-34, self.nlin+3.8, 'VALOR TOTAL DOS PRODUTOS')
self.string(self.nLeft+1, self.nlin+10.2, 'VALOR DO FRETE')
self.string(nMr-154, self.nlin+10.2, 'VALOR DO SEGURO')
self.string(nMr-124, self.nlin+10.2, 'DESCONTO')
self.string(nMr-94, self.nlin+10.2, 'OUTRAS DESP. ACESSÓRIAS')
self.string(nMr-64, self.nlin+10.2, 'VALOR DO IPI')
self.string(nMr-34, self.nlin+10.2, 'VALOR TOTAL DA NOTA')
# Conteúdo campos
self.canvas.setFont('NimbusSanL-Regu', 8)
self.stringRight(
self.nLeft+41, self.nlin+7.7,
self.nLeft+34, self.nlin+7.7,
format_number(tagtext(oNode=el_total, cTag='vBC'), precision=2))
self.stringRight(
self.nLeft+79, self.nlin+7.7,
self.nLeft+64, self.nlin+7.7,
format_number(tagtext(oNode=el_total, cTag='vICMS'), precision=2))
self.stringRight(
self.nLeft+117, self.nlin+7.7,
self.nLeft+94, self.nlin+7.7,
format_number(tagtext(oNode=el_total, cTag='vBCST'), precision=2))
self.stringRight(
nMr-36, self.nlin+7.7,
nMr-66, self.nlin+7.7,
format_number(tagtext(oNode=el_total, cTag='vST'), precision=2))
self.stringRight(
nMr-36, self.nlin+7.7,
format_number(tagtext(oNode=el_total, cTag='vTotTrib'),
precision=2))
self.stringRight(
nMr-1, self.nlin+7.7,
format_number(tagtext(oNode=el_total, cTag='vProd'), precision=2))
self.stringRight(
self.nLeft+26, self.nlin+14.1,
self.nLeft+34, self.nlin+14.1,
format_number(tagtext(oNode=el_total, cTag='vFrete'), precision=2))
self.stringRight(
self.nLeft+49, self.nlin+14.1,
self.nLeft+64, self.nlin+14.1,
format_number(tagtext(oNode=el_total, cTag='vSeg'), precision=2))
self.stringRight(
self.nLeft+70, self.nlin+14.1,
self.nLeft+94, self.nlin+14.1,
format_number(tagtext(oNode=el_total, cTag='vDesc'), precision=2))
self.stringRight(
self.nLeft+99, self.nlin+14.1,
self.nLeft+124, self.nlin+14.1,
format_number(tagtext(oNode=el_total, cTag='vOutro'), precision=2))
self.stringRight(
self.nLeft+123, self.nlin+14.1,
format_number(tagtext(oNode=el_total, cTag='vIPI'), precision=2))
self.stringRight(
self.nLeft+154, self.nlin+14.1,
format_number(tagtext(oNode=el_total, cTag='vTotTrib'),
precision=2))
format_number(tagtext(oNode=el_total, cTag='vIPI'), precision=2))
self.stringRight(
nMr-1, self.nlin+14.1,
format_number(tagtext(oNode=el_total, cTag='vNF'), precision=2))
@ -652,8 +657,6 @@ obsCont[@xCampo='NomeVendedor']")
vIPI = tagtext(oNode=el_imp_IPI, cTag='vIPI')
pIPI = tagtext(oNode=el_imp_IPI, cTag='pIPI')
#self.string(self.nLeft+1, nLin,
# tagtext(oNode=el_prod, cTag='cProd'))
self.stringcenter(nMr-112.5, nLin,
tagtext(oNode=el_prod, cTag='NCM'))
self.stringcenter(nMr-105, nLin, cCST)
@ -685,12 +688,14 @@ obsCont[@xCampo='NomeVendedor']")
line_cod += nStep
# Descrição Item
line_desc = nLin
for des in list_desc[id]:
self.string(self.nLeft+15.5, nLin, des)
nLin += nStep
self.string(self.nLeft+15.5, line_desc, des)
line_desc += nStep
nLin = max(line_cod, line_desc)
self.canvas.setStrokeColor(gray)
self.hline(self.nLeft, nLin-1.5, self.width-self.nLeft)
self.hline(self.nLeft, nLin-2, self.width-self.nLeft)
self.canvas.setStrokeColor(black)
self.nlin += nH + 3
@ -706,8 +711,8 @@ obsCont[@xCampo='NomeVendedor']")
self.string(self.nLeft+1, self.nlin+4, 'INFORMAÇÕES COMPLEMENTARES')
self.string((self.width/2)+1, self.nlin+4, 'RESERVADO AO FISCO')
self.rect(self.nLeft, self.nlin+2,
self.width-self.nLeft-self.nRight, 34)
self.vline(self.width/2, self.nlin+2, 34)
self.width-self.nLeft-self.nRight, 42)
self.vline(self.width/2, self.nlin+2, 42)
# Conteúdo campos
styles = getSampleStyleSheet()
styleN = styles['Normal']
@ -715,11 +720,14 @@ obsCont[@xCampo='NomeVendedor']")
styleN.fontName = 'NimbusSanL-Regu'
styleN.leading = 7
P = Paragraph(tagtext(oNode=el_infAdic,
cTag='infCpl'), styles['Normal'])
fisco = tagtext(oNode=el_infAdic, cTag='infAdFisco')
observacoes = tagtext(oNode=el_infAdic, cTag='infCpl')
if fisco:
observacoes = fisco + ' ' + observacoes
P = Paragraph(observacoes, styles['Normal'])
w, h = P.wrap(92*mm, 32*mm)
P.drawOn(self.canvas, (self.nLeft+1)*mm, (self.height-self.nlin-17)*mm)
altura = (self.height-self.nlin-5)*mm
P.drawOn(self.canvas, (self.nLeft+1)*mm, altura - h)
self.nlin += 36
def recibo_entrega(self, oXML=None):
@ -778,7 +786,7 @@ obsCont[@xCampo='NomeVendedor']")
P = Paragraph(cString, styleN)
w, h = P.wrap(149*mm, 7*mm)
P.drawOn(self.canvas, (self.nLeft+1)*mm,
(self.height-self.nlin-7.5)*mm)
((self.height-self.nlin)*mm) - h)
self.nlin += 20
self.hline(self.nLeft, self.nlin, self.width-self.nRight)

2
pytrustnfe/test/XMLs/NFe00000857.xml

@ -1,4 +1,4 @@
<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"><NFe><infNFe versao="3.10" Id="NFe35170221332917000163550010000008571134165777"><ide><cUF>35</cUF><cNF>13416577</cNF><natOp>Venda N&#227;o Contribuintes</natOp><indPag>1</indPag><mod>55</mod><serie>1</serie><nNF>857</nNF><dhEmi>2017-02-24T11:39:30-00:00</dhEmi><dhSaiEnt>2017-02-24T11:39:30-00:00</dhSaiEnt><tpNF>1</tpNF><idDest>2</idDest><cMunFG>3550308</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>7</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><indFinal>1</indFinal><indPres>0</indPres><procEmi>0</procEmi><verProc>Odoo Brasil 10</verProc></ide><emit><CNPJ>21332917000163</CNPJ><xNome>TRUSTCODE TECNOLOGIA DA INFORMAÇÃO LTDA</xNome><xFant>Trustcode</xFant><enderEmit><xLgr>Rua Vinicius de Moraes</xLgr><nro>42</nro><xBairro>Córrego Grande</xBairro><cMun>3550308</cMun><xMun>Florianópolis</xMun><UF>SC</UF><CEP>88037240</CEP><cPais>1058</cPais><xPais>Brasil</xPais><fone>1135302850</fone></enderEmit><IE>144013873114</IE><CRT>1</CRT></emit><dest><CNPJ>11370685000184</CNPJ><xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome><enderDest><xLgr>AV AMAZONAS</xLgr><nro>1193</nro><xBairro>Centro</xBairro><cMun>4314902</cMun><xMun>Porto Alegre</xMun><UF>RS</UF><CEP>90240542</CEP><cPais>1058</cPais><xPais>Brasil</xPais></enderDest><indIEDest>9</indIEDest></dest><det nItem="1"><prod><cProd>VTS-L123110090339FIU32898EDSDKJ23JK4K2JLKJ4LK23234234KLJ3L3</cProd><cEAN/><xProd>VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAOVENTIS PRETO- O2 CO H2S2</xProd><NCM>90271000</NCM><CFOP>6108</CFOP><uCom>UN</uCom><qCom>1.0</qCom><vUnCom>100.00</vUnCom><vProd>100.00</vProd><cEANTrib/><uTrib>UN</uTrib><qTrib>1.0</qTrib><vUnTrib>3562.26</vUnTrib><vFrete>95.00</vFrete><indTot>1</indTot></prod><imposto><vTotTrib>0.00</vTotTrib><ICMS><ICMSSN102><orig>0</orig><CSOSN>102</CSOSN></ICMSSN102></ICMS><IPI><cEnq>999</cEnq><IPITrib><CST>49</CST><vBC>3657.26</vBC><pIPI>0.00</pIPI><vIPI>0.00</vIPI></IPITrib></IPI><PIS><PISNT><CST>07</CST></PISNT></PIS><COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS></imposto></det><total><ICMSTot><vBC>0.00</vBC><vICMS>0.00</vICMS><vICMSDeson>0.00</vICMSDeson><vBCST>0.00</vBCST><vST>0.00</vST><vProd>3562.26</vProd><vFrete>95.00</vFrete><vSeg>0.00</vSeg><vDesc>0.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vPIS>0.00</vPIS><vCOFINS>0.00</vCOFINS><vOutro>0.00</vOutro><vNF>3657.26</vNF><vTotTrib>0.00</vTotTrib></ICMSTot></total><transp><modFrete>1</modFrete><transporta><xNome>SEDEX</xNome><xEnder>False - False, False</xEnder></transporta></transp><cobr><fat><nFat>INV/2017/0126</nFat><vOrig>3562.26</vOrig><vLiq>3657.26</vLiq></fat><dup><nDup>01</nDup><dVenc>2017-03-16</dVenc><vDup>1828.63</vDup></dup><dup><nDup>02</nDup><dVenc>2017-04-15</dVenc><vDup>1828.63</vDup></dup></cobr><infAdic><infCpl>PERMITE O APROVEITAMENTO DO CR&#201;DITO DE ICMS NO VALOR CORRESPONDENTE &#192; AL&#205;QUOTA DE 1,25%, NOS TERMOS DO ART. 23 DA LC 123/2006 &gt;&gt;IMPORTANTE&lt;&lt; P/ LIQUIDACAO DESTA NF, EFETUE DEPOSITO IDENTIFICADO NO BANCO BRADESCO AG: 1992-5, C/c: 4897-6 PEDIDO DE COMPRAS: OC 0045-05/2017 N/S 16122WZ-021 (Or&#231;amento SO176) **VENCIMENTO: 15/04/2017 ==&gt; .</infCpl></infAdic><compra><xPed>OC 0045-05/2017 N/S 16122WZ-021</xPed></compra></infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#NFe35170221332917000163550010000008571134165777"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>bNLOBxpMk5J6rrz37coB8/pvTBE=</DigestValue></Reference></SignedInfo><SignatureValue>Y++vItLsZAbwzM/YDsgGqSn2+u035OSigoskd1x7DDJuAFuM0imbOuC20TAJPODcZCFxfqO1VTFCVgMmJUtHGzwvVdr3DSlbxIevfTF0nNwBYN2LzQVY2R/495ro2Vw2waKfOU+O2IZrKlFxBfu91Vv/JRpbECElwZaDK1BEp2ekGkB0tHfisGbQu1WFR8HBqwcyn8khhScO8nE7S+MR8uyEqf5057AiZZr1/vG/vyNhN1yzP8FFT3kHOG3w2aNe0H85s9spUrSC5hOAIy0yD6/NUUfH9AOOlER+cCLgLT52W7I5nnxC7dgEzG6YQffy1XGd/TQ4RC7ppKwmkVFaoQ==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4
<nfeProc xmlns="http://www.portalfiscal.inf.br/nfe" versao="3.10"><NFe><infNFe versao="3.10" Id="NFe35170221332917000163550010000008571134165777"><ide><cUF>35</cUF><cNF>13416577</cNF><natOp>Venda N&#227;o Contribuintes</natOp><indPag>1</indPag><mod>55</mod><serie>1</serie><nNF>857</nNF><dhEmi>2017-02-24T11:39:30-00:00</dhEmi><dhSaiEnt>2017-02-24T11:39:30-00:00</dhSaiEnt><tpNF>1</tpNF><idDest>2</idDest><cMunFG>3550308</cMunFG><tpImp>1</tpImp><tpEmis>1</tpEmis><cDV>7</cDV><tpAmb>2</tpAmb><finNFe>1</finNFe><indFinal>1</indFinal><indPres>0</indPres><procEmi>0</procEmi><verProc>Odoo Brasil 10</verProc></ide><emit><CNPJ>21332917000163</CNPJ><xNome>TRUSTCODE TECNOLOGIA DA INFORMAÇÃO LTDA</xNome><xFant>Trustcode</xFant><enderEmit><xLgr>Rua Vinicius de Moraes</xLgr><nro>42</nro><xBairro>Córrego Grande</xBairro><cMun>3550308</cMun><xMun>Florianópolis</xMun><UF>SC</UF><CEP>88037240</CEP><cPais>1058</cPais><xPais>Brasil</xPais><fone>1135302850</fone></enderEmit><IE>144013873114</IE><CRT>1</CRT></emit><dest><CNPJ>11370685000184</CNPJ><xNome>NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL</xNome><enderDest><xLgr>AV AMAZONAS</xLgr><nro>1193</nro><xBairro>Centro</xBairro><cMun>4314902</cMun><xMun>Porto Alegre</xMun><UF>RS</UF><CEP>90240542</CEP><cPais>1058</cPais><xPais>Brasil</xPais></enderDest><indIEDest>9</indIEDest></dest><det nItem="1"><prod><cProd>VTS-L123110090339FIU32898EDSDKJ23JK4K2JLKJ4LK23234234KLJ3L3</cProd><cEAN/><xProd>VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAOVENTIS PRETO- O2 CO H2S2</xProd><NCM>90271000</NCM><CFOP>6108</CFOP><uCom>UN</uCom><qCom>1.0</qCom><vUnCom>100.00</vUnCom><vProd>100.00</vProd><cEANTrib/><uTrib>UN</uTrib><qTrib>1.0</qTrib><vUnTrib>3562.26</vUnTrib><vFrete>95.00</vFrete><indTot>1</indTot></prod><imposto><vTotTrib>0.00</vTotTrib><ICMS><ICMSSN102><orig>0</orig><CSOSN>102</CSOSN></ICMSSN102></ICMS><IPI><cEnq>999</cEnq><IPITrib><CST>49</CST><vBC>3657.26</vBC><pIPI>0.00</pIPI><vIPI>0.00</vIPI></IPITrib></IPI><PIS><PISNT><CST>07</CST></PISNT></PIS><COFINS><COFINSNT><CST>07</CST></COFINSNT></COFINS></imposto></det><total><ICMSTot><vBC>0.00</vBC><vICMS>0.00</vICMS><vICMSDeson>0.00</vICMSDeson><vBCST>0.00</vBCST><vST>0.00</vST><vProd>3562.26</vProd><vFrete>95.00</vFrete><vSeg>0.00</vSeg><vDesc>0.00</vDesc><vII>0.00</vII><vIPI>0.00</vIPI><vPIS>0.00</vPIS><vCOFINS>0.00</vCOFINS><vOutro>0.00</vOutro><vNF>3657.26</vNF><vTotTrib>0.00</vTotTrib></ICMSTot></total><transp><modFrete>1</modFrete><transporta><xNome>SEDEX</xNome><xEnder>False - False, False</xEnder></transporta></transp><cobr><fat><nFat>INV/2017/0126</nFat><vOrig>3562.26</vOrig><vLiq>3657.26</vLiq></fat><dup><nDup>01</nDup><dVenc>2017-03-16</dVenc><vDup>1828.63</vDup></dup><dup><nDup>02</nDup><dVenc>2017-04-15</dVenc><vDup>1828.63</vDup></dup></cobr><infAdic><infCpl>PERMITE O APROVEITAMENTO DO CR&#201;DITO DE ICMS NO VALOR CORRESPONDENTE &#192; AL&#205;QUOTA DE 1,25%, NOS TERMOS DO ART. 23 DA LC 123/2006 &gt;&gt;IMPORTANTE&lt;&lt; P/ LIQUIDACAO DESTA NF, EFETUE DEPOSITO IDENTIFICADO NO BANCO BRADESCO AG: PEDIDO DE COMPRAS: OC 0045-05/2017 (Or&#231;amento SO176) **VENCIMENTO: 15/04/2017 ==&gt; .</infCpl></infAdic><compra><xPed>OC 0045-05/2017 N/S 16122WZ-021</xPed></compra></infNFe><Signature xmlns="http://www.w3.org/2000/09/xmldsig#"><SignedInfo><CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/><SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/><Reference URI="#NFe35170221332917000163550010000008571134165777"><Transforms><Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/><Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/></Transforms><DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/><DigestValue>bNLOBxpMk5J6rrz37coB8/pvTBE=</DigestValue></Reference></SignedInfo><SignatureValue>Y++vItLsZAbwzM/YDsgGqSn2+u035OSigoskd1x7DDJuAFuM0imbOuC20TAJPODcZCFxfqO1VTFCVgMmJUtHGzwvVdr3DSlbxIevfTF0nNwBYN2LzQVY2R/495ro2Vw2waKfOU+O2IZrKlFxBfu91Vv/JRpbECElwZaDK1BEp2ekGkB0tHfisGbQu1WFR8HBqwcyn8khhScO8nE7S+MR8uyEqf5057AiZZr1/vG/vyNhN1yzP8FFT3kHOG3w2aNe0H85s9spUrSC5hOAIy0yD6/NUUfH9AOOlER+cCLgLT52W7I5nnxC7dgEzG6YQffy1XGd/TQ4RC7ppKwmkVFaoQ==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4
MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj
cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD
VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw

6
pytrustnfe/test/test_danfe.py

@ -14,11 +14,13 @@ class test_danfe(unittest.TestCase):
def test_can_generate_danfe(self):
path = os.path.join(os.path.dirname(__file__), 'XMLs')
xml_string = open(os.path.join(path, 'NFe00000857.xml'), "r").read()
# xml_string = open('/home/danimar/Downloads/NFe (5).xml', "r").read()
xml_element = etree.fromstring(xml_string)
oDanfe = danfe(list_xml=[xml_element])
# Para testar localmente o Danfe
with open('/home/danimar/danfe.pdf', 'w') as oFile:
# with tempfile.TemporaryFile(mode='w') as oFile:
# with open('/home/danimar/danfe.pdf', 'w') as oFile:
with tempfile.TemporaryFile(mode='w') as oFile:
oDanfe.writeto_pdf(oFile)

2
setup.py

@ -1,7 +1,7 @@
# coding=utf-8
from setuptools import setup, find_packages
VERSION = "0.1.30"
VERSION = "0.1.31"
setup(
name="PyTrustNFe",

Loading…
Cancel
Save