From 7146acdab76eb3f956506bae5a3c43eed6eada03 Mon Sep 17 00:00:00 2001 From: Danimar Ribeiro Date: Sat, 25 Feb 2017 19:05:05 -0300 Subject: [PATCH] =?UTF-8?q?Ajuste=20no=20tamanho=20do=20c=C3=B3digo=20do?= =?UTF-8?q?=20produto?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pytrustnfe/nfe/danfe.py | 61 +++++++++++++++++++++--------------- pytrustnfe/test/XMLs/NFe00000857.xml | 2 +- pytrustnfe/test/test_danfe.py | 4 ++- 3 files changed, 40 insertions(+), 27 deletions(-) diff --git a/pytrustnfe/nfe/danfe.py b/pytrustnfe/nfe/danfe.py index bbaddf0..5544975 100644 --- a/pytrustnfe/nfe/danfe.py +++ b/pytrustnfe/nfe/danfe.py @@ -110,6 +110,7 @@ class danfe(object): el_det = oXML.findall(".//{http://www.portalfiscal.inf.br/nfe}det") if el_det is not None: list_desc = [] + list_cod_prod = [] nPg = 0 for nId, item in enumerate(el_det): el_prod = item.find( @@ -117,11 +118,14 @@ class danfe(object): infAdProd = item.find( ".//{http://www.portalfiscal.inf.br/nfe}infAdProd") - list_ = wrap(tagtext(oNode=el_prod, cTag='xProd'), 51) + list_ = wrap(tagtext(oNode=el_prod, cTag='xProd'), 56) if infAdProd is not None: - list_.extend(wrap(infAdProd.text, 51)) + list_.extend(wrap(infAdProd.text, 56)) list_desc.append(list_) + list_cProd = wrap(tagtext(oNode=el_prod, cTag='cProd'), 14) + list_cod_prod.append(list_cProd) + # Nr linhas necessárias p/ descrição item nLin_Itens = len(list_) @@ -150,7 +154,7 @@ class danfe(object): self.impostos(oXML=oXML) self.transportes(oXML=oXML) self.produtos(oXML=oXML, el_det=el_det, oPaginator=oPaginator[0], - list_desc=list_desc) + list_desc=list_desc, list_cod_prod=list_cod_prod) self.adicionais(oXML=oXML) @@ -576,7 +580,7 @@ obsCont[@xCampo='NomeVendedor']") self.nlin += 23 def produtos(self, oXML=None, el_det=None, oPaginator=None, - list_desc=None, nHeight=29): + list_desc=None, list_cod_prod=None, nHeight=29): nMr = self.width-self.nRight nStep = 2.5 # Passo entre linhas @@ -591,8 +595,8 @@ obsCont[@xCampo='NomeVendedor']") self.canvas.setFont('NimbusSanL-Regu', 5.5) # Colunas - self.vline(self.nLeft+11, self.nlin+2, nH) - self.stringcenter(self.nLeft+5.5, self.nlin+5.5, 'CÓDIGO') + self.vline(self.nLeft+15, self.nlin+2, nH) + self.stringcenter(self.nLeft+7.5, self.nlin+5.5, 'CÓDIGO') self.vline(nMr-7, self.nlin+2, nH) self.stringcenter(nMr-3.5, self.nlin+4.5, 'ALÍQ') self.stringcenter(nMr-3.5, self.nlin+6.5, 'IPI') @@ -611,17 +615,17 @@ obsCont[@xCampo='NomeVendedor']") self.stringcenter(nMr-70.5, self.nlin+5.5, 'VLR UNIT') self.vline(nMr-90, self.nlin+2, nH) self.stringcenter(nMr-83.5, self.nlin+5.5, 'QTD') - self.vline(nMr-98, self.nlin+2, nH) - self.stringcenter(nMr-94, self.nlin+5.5, 'UNID') - self.vline(nMr-104, self.nlin+2, nH) - self.stringcenter(nMr-101, self.nlin+5.5, 'CFOP') - self.vline(nMr-110, self.nlin+2, nH) - self.stringcenter(nMr-107, self.nlin+5.5, 'CST') - self.vline(nMr-123, self.nlin+2, nH) - self.stringcenter(nMr-116.5, self.nlin+5.5, 'NCM/SH') + self.vline(nMr-96, self.nlin+2, nH) + self.stringcenter(nMr-93, self.nlin+5.5, 'UNID') + self.vline(nMr-102, self.nlin+2, nH) + self.stringcenter(nMr-99, self.nlin+5.5, 'CFOP') + self.vline(nMr-108, self.nlin+2, nH) + self.stringcenter(nMr-105, self.nlin+5.5, 'CST') + self.vline(nMr-117, self.nlin+2, nH) + self.stringcenter(nMr-112.5, self.nlin+5.5, 'NCM/SH') nWidth_Prod = nMr-135-self.nLeft-11 - nCol_ = self.nLeft+11 + (nWidth_Prod / 2) + nCol_ = self.nLeft+20 + (nWidth_Prod / 2) self.stringcenter(nCol_, self.nlin+5.5, 'DESCRIÇÃO DO PRODUTO/SERVIÇO') # Conteúdo campos @@ -648,14 +652,14 @@ 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-116.5, nLin, + #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-107, nLin, cCST) - self.stringcenter(nMr-101, nLin, + self.stringcenter(nMr-105, nLin, cCST) + self.stringcenter(nMr-99, nLin, tagtext(oNode=el_prod, cTag='CFOP')) - self.stringcenter(nMr-94, nLin, + self.stringcenter(nMr-93, nLin, tagtext(oNode=el_prod, cTag='uCom')) self.stringRight(nMr-77.5, nLin, format_number( tagtext(oNode=el_prod, cTag='qCom'), precision=4)) @@ -674,14 +678,21 @@ obsCont[@xCampo='NomeVendedor']") self.stringRight(nMr-0.5, nLin, format_number(pIPI, precision=2)) - self.canvas.setStrokeColor(gray) - self.hline(self.nLeft, nLin+0.5, self.width-self.nLeft) - self.canvas.setStrokeColor(black) + # Código Item + line_cod = nLin + for des in list_cod_prod[id]: + self.string(self.nLeft+0.2, line_cod, des) + line_cod += nStep + # Descrição Item for des in list_desc[id]: - self.string(self.nLeft+12, nLin, des) + self.string(self.nLeft+15.5, nLin, des) nLin += nStep + self.canvas.setStrokeColor(gray) + self.hline(self.nLeft, nLin-1.5, self.width-self.nLeft) + self.canvas.setStrokeColor(black) + self.nlin += nH + 3 def adicionais(self, oXML=None): diff --git a/pytrustnfe/test/XMLs/NFe00000857.xml b/pytrustnfe/test/XMLs/NFe00000857.xml index cb47a9c..7da0140 100644 --- a/pytrustnfe/test/XMLs/NFe00000857.xml +++ b/pytrustnfe/test/XMLs/NFe00000857.xml @@ -1,4 +1,4 @@ -3513416577Venda Não Contribuintes15518572017-02-24T11:39:30-00:002017-02-24T11:39:30-00:0012355030811721100Odoo Brasil 1021332917000163TRUSTCODE TECNOLOGIA DA INFORMAÇÃO LTDATrustcodeRua Vinicius de Moraes42Córrego Grande3550308FlorianópolisSC880372401058Brasil1135302850144013873114111370685000184NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCALAV AMAZONAS1193Centro4314902Porto AlegreRS902405421058Brasil9VTS-L1231100907VENTIS PRETO- O2 CO H2S DIFUSAO902710006108UN1.0100.00100.00UN1.03562.2695.0010.000102999493657.260.000.0007070.000.000.000.000.003562.2695.000.000.000.000.000.000.000.003657.260.001SEDEXFalse - False, FalseINV/2017/01263562.263657.26012017-03-161828.63022017-04-151828.63PERMITE O APROVEITAMENTO DO CRÉDITO DE ICMS NO VALOR CORRESPONDENTE À ALÍQUOTA DE 1,25%, NOS TERMOS DO ART. 23 DA LC 123/2006 >>IMPORTANTE<< 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çamento SO176) **VENCIMENTO: 15/04/2017 ==> .OC 0045-05/2017 N/S 16122WZ-021bNLOBxpMk5J6rrz37coB8/pvTBE=Y++vItLsZAbwzM/YDsgGqSn2+u035OSigoskd1x7DDJuAFuM0imbOuC20TAJPODcZCFxfqO1VTFCVgMmJUtHGzwvVdr3DSlbxIevfTF0nNwBYN2LzQVY2R/495ro2Vw2waKfOU+O2IZrKlFxBfu91Vv/JRpbECElwZaDK1BEp2ekGkB0tHfisGbQu1WFR8HBqwcyn8khhScO8nE7S+MR8uyEqf5057AiZZr1/vG/vyNhN1yzP8FFT3kHOG3w2aNe0H85s9spUrSC5hOAIy0yD6/NUUfH9AOOlER+cCLgLT52W7I5nnxC7dgEzG6YQffy1XGd/TQ4RC7ppKwmkVFaoQ==MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 +3513416577Venda Não Contribuintes15518572017-02-24T11:39:30-00:002017-02-24T11:39:30-00:0012355030811721100Odoo Brasil 1021332917000163TRUSTCODE TECNOLOGIA DA INFORMAÇÃO LTDATrustcodeRua Vinicius de Moraes42Córrego Grande3550308FlorianópolisSC880372401058Brasil1135302850144013873114111370685000184NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCALAV AMAZONAS1193Centro4314902Porto AlegreRS902405421058Brasil9VTS-L123110090339FIU32898EDSDKJ23JK4K2JLKJ4LK23234234KLJ3L3VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAO VENTIS PRETO- O2 CO H2S DIFUSAOVENTIS PRETO- O2 CO H2S2902710006108UN1.0100.00100.00UN1.03562.2695.0010.000102999493657.260.000.0007070.000.000.000.000.003562.2695.000.000.000.000.000.000.000.003657.260.001SEDEXFalse - False, FalseINV/2017/01263562.263657.26012017-03-161828.63022017-04-151828.63PERMITE O APROVEITAMENTO DO CRÉDITO DE ICMS NO VALOR CORRESPONDENTE À ALÍQUOTA DE 1,25%, NOS TERMOS DO ART. 23 DA LC 123/2006 >>IMPORTANTE<< 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çamento SO176) **VENCIMENTO: 15/04/2017 ==> .OC 0045-05/2017 N/S 16122WZ-021bNLOBxpMk5J6rrz37coB8/pvTBE=Y++vItLsZAbwzM/YDsgGqSn2+u035OSigoskd1x7DDJuAFuM0imbOuC20TAJPODcZCFxfqO1VTFCVgMmJUtHGzwvVdr3DSlbxIevfTF0nNwBYN2LzQVY2R/495ro2Vw2waKfOU+O2IZrKlFxBfu91Vv/JRpbECElwZaDK1BEp2ekGkB0tHfisGbQu1WFR8HBqwcyn8khhScO8nE7S+MR8uyEqf5057AiZZr1/vG/vyNhN1yzP8FFT3kHOG3w2aNe0H85s9spUrSC5hOAIy0yD6/NUUfH9AOOlER+cCLgLT52W7I5nnxC7dgEzG6YQffy1XGd/TQ4RC7ppKwmkVFaoQ==MIIIPzCCBiegAwIBAgIQYdesnYUNG8VPne0qhTeKOzANBgkqhkiG9w0BAQsFADB4 MQswCQYDVQQGEwJCUjETMBEGA1UEChMKSUNQLUJyYXNpbDE2MDQGA1UECxMtU2Vj cmV0YXJpYSBkYSBSZWNlaXRhIEZlZGVyYWwgZG8gQnJhc2lsIC0gUkZCMRwwGgYD VQQDExNBQyBDZXJ0aXNpZ24gUkZCIEc0MB4XDTE2MDUxMDAwMDAwMFoXDTE3MDUw diff --git a/pytrustnfe/test/test_danfe.py b/pytrustnfe/test/test_danfe.py index c73bfd9..031f492 100644 --- a/pytrustnfe/test/test_danfe.py +++ b/pytrustnfe/test/test_danfe.py @@ -18,5 +18,7 @@ class test_danfe(unittest.TestCase): oDanfe = danfe(list_xml=[xml_element]) - with tempfile.TemporaryFile(mode='w') as oFile: + # Para testar localmente o Danfe + with open('/home/danimar/danfe.pdf', 'w') as oFile: + # with tempfile.TemporaryFile(mode='w') as oFile: oDanfe.writeto_pdf(oFile)