diff --git a/pytrustnfe/nfe/danfe.py b/pytrustnfe/nfe/danfe.py index ef052ad..07fd669 100644 --- a/pytrustnfe/nfe/danfe.py +++ b/pytrustnfe/nfe/danfe.py @@ -56,7 +56,6 @@ def getdateByTimezone(cDateUTC, timezone=None): # Verificamos se a string está completa (data + hora + timezone) if timezone and len(cDateUTC) == 25: - # tz irá conter informações da timezone contida em cDateUTC tz = cDateUTC[19:25] tz = int(tz.split(':')[0]) @@ -81,7 +80,12 @@ def getdateByTimezone(cDateUTC, timezone=None): def format_number(cNumber): if cNumber: # Vírgula para a separação de milhar e 2f para 2 casas decimais - cNumber = "{:,.2f}".format(float(cNumber)) + try: + index = cNumber.find('.') + places = len(cNumber[index + 1:]) + cNumber = '{:.{prec}f}'.format(float(cNumber), prec=places) + except: + cNumber = "{:,.2f}".format(float(cNumber)) return cNumber.replace(",", "X").replace(".", ",").replace("X", ".") return "" @@ -122,7 +126,7 @@ class danfe(object): pdfmetrics.registerFont( TTFont('NimbusSanL-Bold', os.path.join(path, 'NimbusSanL Bold.ttf'))) - self.width = 210 # 21 x 29,7cm + self.width = 210 # 21 x 29,7cm self.height = 297 self.nLeft = 10 self.nRight = 10 @@ -583,7 +587,7 @@ obsCont[@xCampo='NomeVendedor']") nMr - 1, self.nlin + 14.1, format_number(tagtext(oNode=el_total, cTag='vNF'))) - self.nlin += 17 # Nr linhas ocupadas pelo bloco + self.nlin += 17 # Nr linhas ocupadas pelo bloco def transportes(self, oXML=None): el_transp = oXML.find(".//{http://www.portalfiscal.inf.br/nfe}transp") @@ -742,8 +746,8 @@ obsCont[@xCampo='NomeVendedor']") el_imp_IPI = el_imp.find( ".//{http://www.portalfiscal.inf.br/nfe}IPI") cCST = tagtext(oNode=el_imp_ICMS, cTag='orig') + \ - (tagtext(oNode=el_imp_ICMS, cTag='CST') or - tagtext(oNode=el_imp_ICMS, cTag='CSOSN')) + (tagtext(oNode=el_imp_ICMS, cTag='CST') or + tagtext(oNode=el_imp_ICMS, cTag='CSOSN')) vBC = tagtext(oNode=el_imp_ICMS, cTag='vBC') vICMS = tagtext(oNode=el_imp_ICMS, cTag='vICMS') pICMS = tagtext(oNode=el_imp_ICMS, cTag='pICMS') @@ -763,7 +767,7 @@ obsCont[@xCampo='NomeVendedor']") self.stringRight(nMr - 64.5, nLin, format_number( tagtext(oNode=el_prod, cTag='vUnCom'))) self.stringRight(nMr - 50.5, nLin, format_number( - tagtext(oNode=el_prod, cTag='vProd'))) + tagtext(oNode=el_prod, cTag='vProd'))) self.stringRight(nMr - 38.5, nLin, format_number(vBC or '0.00')) self.stringRight(nMr - 26.5, nLin, format_number(vICMS or '0.00')) self.stringRight(nMr - 7.5, nLin, format_number(pICMS or '0.00')) @@ -830,7 +834,7 @@ obsCont[@xCampo='NomeVendedor']") self.nLeft + 189, self.nlin + 6.7, format_number(tagtext(oNode=issqn_total, cTag='vISS'))) - self.nlin += 8 # Nr linhas ocupadas pelo bloco + self.nlin += 8 # Nr linhas ocupadas pelo bloco return 8 def adicionais(self, oXML=None, tamanho_diminuir=0):