@ -40,11 +40,9 @@ def getdateUTC(cDateUTC):
return ' / ' . join ( cDt ) , cDateUTC [ 11 : 16 ]
return ' / ' . join ( cDt ) , cDateUTC [ 11 : 16 ]
def format_number ( cNumber , precision = 0 , group_sep = ' . ' , decimal_sep = ' , ' ) :
def format_number ( cNumber ) :
if cNumber :
if cNumber :
number = float ( cNumber )
return ( " {:,. " + str ( precision ) + " f} " ) . format ( number ) . \
replace ( " , " , " X " ) . replace ( " . " , " , " ) . replace ( " X " , " . " )
return cNumber . replace ( " , " , " X " ) . replace ( " . " , " , " ) . replace ( " X " , " . " )
return " "
return " "
@ -417,8 +415,7 @@ class danfe(object):
self . string ( self . nLeft + nCol + 17 , self . nlin + nLin , cDt )
self . string ( self . nLeft + nCol + 17 , self . nlin + nLin , cDt )
self . stringRight (
self . stringRight (
self . nLeft + nCol + 47 , self . nlin + nLin ,
self . nLeft + nCol + 47 , self . nlin + nLin ,
format_number ( tagtext ( oNode = oXML_dup , cTag = ' vDup ' ) ,
precision = 2 ) )
format_number ( tagtext ( oNode = oXML_dup , cTag = ' vDup ' ) ) )
if nPar == 3 :
if nPar == 3 :
nLin = 7
nLin = 7
@ -486,41 +483,40 @@ obsCont[@xCampo='NomeVendedor']")
self . canvas . setFont ( ' NimbusSanL-Regu ' , 8 )
self . canvas . setFont ( ' NimbusSanL-Regu ' , 8 )
self . stringRight (
self . stringRight (
self . nLeft + 34 , self . nlin + 7.7 ,
self . nLeft + 34 , self . nlin + 7.7 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vBC ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vBC ' ) ) )
self . stringRight (
self . stringRight (
self . nLeft + 64 , self . nlin + 7.7 ,
self . nLeft + 64 , self . nlin + 7.7 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vICMS ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vICMS ' ) ) )
self . stringRight (
self . stringRight (
self . nLeft + 94 , self . nlin + 7.7 ,
self . nLeft + 94 , self . nlin + 7.7 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vBCST ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vBCST ' ) ) )
self . stringRight (
self . stringRight (
nMr - 66 , self . nlin + 7.7 ,
nMr - 66 , self . nlin + 7.7 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vST ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vST ' ) ) )
self . stringRight (
self . stringRight (
nMr - 36 , self . nlin + 7.7 ,
nMr - 36 , self . nlin + 7.7 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vTotTrib ' ) ,
precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vTotTrib ' ) ) )
self . stringRight (
self . stringRight (
nMr - 1 , self . nlin + 7.7 ,
nMr - 1 , self . nlin + 7.7 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vProd ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vProd ' ) ) )
self . stringRight (
self . stringRight (
self . nLeft + 34 , self . nlin + 14.1 ,
self . nLeft + 34 , self . nlin + 14.1 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vFrete ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vFrete ' ) ) )
self . stringRight (
self . stringRight (
self . nLeft + 64 , self . nlin + 14.1 ,
self . nLeft + 64 , self . nlin + 14.1 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vSeg ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vSeg ' ) ) )
self . stringRight (
self . stringRight (
self . nLeft + 94 , self . nlin + 14.1 ,
self . nLeft + 94 , self . nlin + 14.1 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vDesc ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vDesc ' ) ) )
self . stringRight (
self . stringRight (
self . nLeft + 124 , self . nlin + 14.1 ,
self . nLeft + 124 , self . nlin + 14.1 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vOutro ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vOutro ' ) ) )
self . stringRight (
self . stringRight (
self . nLeft + 154 , self . nlin + 14.1 ,
self . nLeft + 154 , self . nlin + 14.1 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vIPI ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vIPI ' ) ) )
self . stringRight (
self . stringRight (
nMr - 1 , self . nlin + 14.1 ,
nMr - 1 , self . nlin + 14.1 ,
format_number ( tagtext ( oNode = el_total , cTag = ' vNF ' ) , precision = 2 ) )
format_number ( tagtext ( oNode = el_total , cTag = ' vNF ' ) ) )
self . nlin + = 17 # Nr linhas ocupadas pelo bloco
self . nlin + = 17 # Nr linhas ocupadas pelo bloco
@ -589,10 +585,10 @@ obsCont[@xCampo='NomeVendedor']")
tagtext ( oNode = el_transp , cTag = ' nVol ' ) )
tagtext ( oNode = el_transp , cTag = ' nVol ' ) )
self . stringRight (
self . stringRight (
nMr - 27 , self . nlin + 21.2 ,
nMr - 27 , self . nlin + 21.2 ,
format_number ( tagtext ( oNode = el_transp , cTag = ' pesoB ' ) , precision = 3 ) )
format_number ( tagtext ( oNode = el_transp , cTag = ' pesoB ' ) ) )
self . stringRight (
self . stringRight (
nMr - 1 , self . nlin + 21.2 ,
nMr - 1 , self . nlin + 21.2 ,
format_number ( tagtext ( oNode = el_transp , cTag = ' pesoL ' ) , precision = 3 ) )
format_number ( tagtext ( oNode = el_transp , cTag = ' pesoL ' ) ) )
self . nlin + = 23
self . nlin + = 23
@ -628,10 +624,10 @@ obsCont[@xCampo='NomeVendedor']")
self . stringcenter ( nMr - 44 , self . nlin + 5.5 , ' BC ICMS ' )
self . stringcenter ( nMr - 44 , self . nlin + 5.5 , ' BC ICMS ' )
self . vline ( nMr - 64 , self . nlin + 2 , nH )
self . vline ( nMr - 64 , self . nlin + 2 , nH )
self . stringcenter ( nMr - 57 , self . nlin + 5.5 , ' VLR TOTAL ' )
self . stringcenter ( nMr - 57 , self . nlin + 5.5 , ' VLR TOTAL ' )
self . vline ( nMr - 77 , self . nlin + 2 , nH )
self . vline ( nMr - 78 , self . nlin + 2 , nH )
self . stringcenter ( nMr - 70.5 , self . nlin + 5.5 , ' VLR UNIT ' )
self . stringcenter ( nMr - 70.5 , self . nlin + 5.5 , ' VLR UNIT ' )
self . vline ( nMr - 90 , self . nlin + 2 , nH )
self . vline ( nMr - 90 , self . nlin + 2 , nH )
self . stringcenter ( nMr - 83.5 , self . nlin + 5.5 , ' QTD ' )
self . stringcenter ( nMr - 83.8 , self . nlin + 5.5 , ' QTD ' )
self . vline ( nMr - 96 , self . nlin + 2 , nH )
self . vline ( nMr - 96 , self . nlin + 2 , nH )
self . stringcenter ( nMr - 93 , self . nlin + 5.5 , ' UNID ' )
self . stringcenter ( nMr - 93 , self . nlin + 5.5 , ' UNID ' )
self . vline ( nMr - 102 , self . nlin + 2 , nH )
self . vline ( nMr - 102 , self . nlin + 2 , nH )
@ -677,24 +673,20 @@ obsCont[@xCampo='NomeVendedor']")
tagtext ( oNode = el_prod , cTag = ' CFOP ' ) )
tagtext ( oNode = el_prod , cTag = ' CFOP ' ) )
self . stringcenter ( nMr - 93 , nLin ,
self . stringcenter ( nMr - 93 , nLin ,
tagtext ( oNode = el_prod , cTag = ' uCom ' ) )
tagtext ( oNode = el_prod , cTag = ' uCom ' ) )
self . stringRight ( nMr - 77 .5 , nLin , format_number (
tagtext ( oNode = el_prod , cTag = ' qCom ' ) , precision = 4 ) )
self . stringRight ( nMr - 78 .5 , nLin , format_number (
tagtext ( oNode = el_prod , cTag = ' qCom ' ) ) )
self . stringRight ( nMr - 64.5 , nLin , format_number (
self . stringRight ( nMr - 64.5 , nLin , format_number (
tagtext ( oNode = el_prod , cTag = ' vUnCom ' ) , precision = 2 ) )
self . stringRight ( nMr - 50.5 , nLin , format_number (
tagtext ( oNode = el_prod , cTag = ' vProd ' ) , precision = 2 ) )
self . stringRight ( nMr - 38.5 , nLin , format_number ( vBC , precision = 2 ) )
self . stringRight ( nMr - 26.5 , nLin ,
format_number ( vICMS , precision = 2 ) )
self . stringRight (
nMr - 7.5 , nLin , format_number ( pICMS , precision = 2 ) )
tagtext ( oNode = el_prod , cTag = ' vUnCom ' ) ) )
self . stringRight ( nMr - 50.5 , nLin ,
tagtext ( oNode = el_prod , cTag = ' vProd ' ) )
self . stringRight ( nMr - 38.5 , nLin , format_number ( vBC ) )
self . stringRight ( nMr - 26.5 , nLin , format_number ( vICMS ) )
self . stringRight ( nMr - 7.5 , nLin , format_number ( pICMS ) )
if vIPI :
if vIPI :
self . stringRight ( nMr - 14.5 , nLin ,
format_number ( vIPI , precision = 2 ) )
self . stringRight ( nMr - 14.5 , nLin , format_number ( vIPI ) )
if pIPI :
if pIPI :
self . stringRight ( nMr - 0.5 , nLin ,
format_number ( pIPI , precision = 2 ) )
self . stringRight ( nMr - 0.5 , nLin , format_number ( pIPI ) )
# Código Item
# Código Item
line_cod = nLin
line_cod = nLin
@ -778,8 +770,7 @@ obsCont[@xCampo='NomeVendedor']")
u " SÉRIE %s " % ( tagtext ( oNode = el_ide , cTag = ' serie ' ) ) )
u " SÉRIE %s " % ( tagtext ( oNode = el_ide , cTag = ' serie ' ) ) )
cDt , cHr = getdateUTC ( tagtext ( oNode = el_ide , cTag = ' dhEmi ' ) )
cDt , cHr = getdateUTC ( tagtext ( oNode = el_ide , cTag = ' dhEmi ' ) )
cTotal = format_number ( tagtext ( oNode = el_total , cTag = ' vNF ' ) ,
precision = 2 )
cTotal = format_number ( tagtext ( oNode = el_total , cTag = ' vNF ' ) )
cEnd = tagtext ( oNode = el_dest , cTag = ' xNome ' ) + ' - '
cEnd = tagtext ( oNode = el_dest , cTag = ' xNome ' ) + ' - '
cEnd + = tagtext ( oNode = el_dest , cTag = ' xLgr ' ) + ' , ' + tagtext (
cEnd + = tagtext ( oNode = el_dest , cTag = ' xLgr ' ) + ' , ' + tagtext (
@ -922,4 +913,3 @@ obsCont[@xCampo='NomeVendedor']")
paragraph = Paragraph ( ptext , style = style )
paragraph = Paragraph ( ptext , style = style )
w , h = paragraph . wrapOn ( self . canvas , x , y )
w , h = paragraph . wrapOn ( self . canvas , x , y )
return w , h , paragraph
return w , h , paragraph