Browse Source

[IMP] Fixing the fields for service invoices and danfe

pull/182/head
Danimar Ribeiro 7 years ago
parent
commit
49d1ab50ca
  1. 51
      pytrustnfe/nfe/danfe.py
  2. 106
      pytrustnfe/nfe/templates/NfeAutorizacao.xml
  3. 2
      setup.py

51
pytrustnfe/nfe/danfe.py

@ -197,7 +197,8 @@ class danfe(object):
oXML=oXML, el_det=el_det, max_index=nId, oXML=oXML, el_det=el_det, max_index=nId,
list_desc=list_desc, list_cod_prod=list_cod_prod) list_desc=list_desc, list_cod_prod=list_cod_prod)
self.adicionais(oXML=oXML)
tamanho_ocupado = self.calculo_issqn(oXML=oXML)
self.adicionais(oXML=oXML, tamanho_diminuir=tamanho_ocupado)
# Gera o restante das páginas do XML # Gera o restante das páginas do XML
while index < nId: while index < nId:
@ -779,7 +780,49 @@ obsCont[@xCampo='NomeVendedor']")
self.nlin += nH + 3 self.nlin += nH + 3
return id return id
def adicionais(self, oXML=None):
def calculo_issqn(self, oXML=None):
elem_emit = oXML.find(".//{http://www.portalfiscal.inf.br/nfe}emit")
el_total = oXML.find(".//{http://www.portalfiscal.inf.br/nfe}total")
issqn_total = el_total.find(
".//{http://www.portalfiscal.inf.br/nfe}ISSQNtot")
if not issqn_total:
return 0
self.nlin += 1
nMr = self.width - self.nRight
self.canvas.setFont('NimbusSanL-Bold', 7)
self.string(self.nLeft + 1, self.nlin + 1, 'CÁLCULO DO ISSQN')
self.rect(self.nLeft, self.nlin + 2,
self.width - self.nLeft - self.nRight, 5.5)
self.vline(nMr - 47.5, self.nlin + 2, 5.5)
self.vline(nMr - 95, self.nlin + 2, 5.5)
self.vline(nMr - 142.5, self.nlin + 2, 5.5)
self.vline(nMr - 190, self.nlin + 2, 5.5)
# Labels
self.canvas.setFont('NimbusSanL-Regu', 5)
self.string(self.nLeft + 1, self.nlin + 3.8, 'INSCRIÇÃO MUNICIPAL')
self.string(nMr - 141.5, self.nlin + 3.8, 'VALOR TOTAL DOS SERVIÇOS')
self.string(nMr - 94, self.nlin + 3.8, 'BASE DE CÁLCULO DO ISSQN')
self.string(nMr - 46.5, self.nlin + 3.8, 'VALOR DO ISSQN')
# Conteúdo campos
self.canvas.setFont('NimbusSanL-Regu', 8)
self.string(
self.nLeft + 1, self.nlin + 6.7,
tagtext(oNode=elem_emit, cTag='IM'))
self.stringRight(
self.nLeft + 94, self.nlin + 6.7,
format_number(tagtext(oNode=issqn_total, cTag='vServ')))
self.stringRight(
self.nLeft + 141.5, self.nlin + 6.7,
format_number(tagtext(oNode=issqn_total, cTag='vBC')))
self.stringRight(
self.nLeft + 189, self.nlin + 6.7,
format_number(tagtext(oNode=issqn_total, cTag='vISS')))
self.nlin += 8 # Nr linhas ocupadas pelo bloco
return 8
def adicionais(self, oXML=None, tamanho_diminuir=0):
el_infAdic = oXML.find( el_infAdic = oXML.find(
".//{http://www.portalfiscal.inf.br/nfe}infAdic") ".//{http://www.portalfiscal.inf.br/nfe}infAdic")
@ -791,8 +834,8 @@ obsCont[@xCampo='NomeVendedor']")
'INFORMAÇÕES COMPLEMENTARES') 'INFORMAÇÕES COMPLEMENTARES')
self.string((self.width / 2) + 1, self.nlin + 4, 'RESERVADO AO FISCO') self.string((self.width / 2) + 1, self.nlin + 4, 'RESERVADO AO FISCO')
self.rect(self.nLeft, self.nlin + 2, self.rect(self.nLeft, self.nlin + 2,
self.width - self.nLeft - self.nRight, 42)
self.vline(self.width / 2, self.nlin + 2, 42)
self.width - self.nLeft - self.nRight, 42 - tamanho_diminuir)
self.vline(self.width / 2, self.nlin + 2, 42 - tamanho_diminuir)
# Conteúdo campos # Conteúdo campos
styles = getSampleStyleSheet() styles = getSampleStyleSheet()
styleN = styles['Normal'] styleN = styles['Normal']

106
pytrustnfe/nfe/templates/NfeAutorizacao.xml

@ -266,6 +266,7 @@
<imposto> <imposto>
{% with imposto = det.imposto %} {% with imposto = det.imposto %}
<vTotTrib>{{ imposto.vTotTrib }}</vTotTrib> <vTotTrib>{{ imposto.vTotTrib }}</vTotTrib>
{% if imposto.ICMS is defined %}
<ICMS> <ICMS>
{% if imposto.ICMS.CST == '00' -%} {% if imposto.ICMS.CST == '00' -%}
<ICMS00> <ICMS00>
@ -529,37 +530,58 @@
</ICMSSN900> </ICMSSN900>
{% endif %} {% endif %}
</ICMS> </ICMS>
{% if NFe.infNFe.ide.mod != '65' %}
<IPI>
<clEnq>{{ imposto.IPI.clEnq }}</clEnq>
<CNPJProd>{{ imposto.IPI.CNPJProd }}</CNPJProd>
<cSelo>{{ imposto.IPI.cSelo }}</cSelo>
<qSelo>{{ imposto.IPI.qSelo }}</qSelo>
<cEnq>{{ imposto.IPI.cEnq }}</cEnq>
{% if imposto.IPI.CST in ('00', '49', '50', '99') %}
<IPITrib>
<CST>{{ imposto.IPI.CST }}</CST>
<vBC>{{ imposto.IPI.vBC }}</vBC>
<pIPI>{{ imposto.IPI.pIPI }}</pIPI>
<qUnid>{{ imposto.IPI.qUnid }}</qUnid>
<vUnid>{{ imposto.IPI.vUnid }}</vUnid>
<vIPI>{{ imposto.IPI.vIPI }}</vIPI>
</IPITrib>
{% endif %}
{% if imposto.IPI.CST in ('01', '02', '03', '04', '51', '52', '53', '54', '55') %}
<IPINT>
<CST>{{ imposto.IPI.CST }}</CST>
</IPINT>
{% endif %}
</IPI>
{% if imposto.II is defined %}
<II>
<vBC>{{ imposto.II.vBC }}</vBC>
<vDespAdu>{{ imposto.II.vDespAdu }}</vDespAdu>
<vII>{{ imposto.II.vII }}</vII>
<vIOF>{{ imposto.II.vIOF }}</vIOF>
</II>
{% endif %} {% endif %}
{% if NFe.infNFe.ide.mod != '65' and imposto.IPI is defined %}
<IPI>
<clEnq>{{ imposto.IPI.clEnq }}</clEnq>
<CNPJProd>{{ imposto.IPI.CNPJProd }}</CNPJProd>
<cSelo>{{ imposto.IPI.cSelo }}</cSelo>
<qSelo>{{ imposto.IPI.qSelo }}</qSelo>
<cEnq>{{ imposto.IPI.cEnq }}</cEnq>
{% if imposto.IPI.CST in ('00', '49', '50', '99') %}
<IPITrib>
<CST>{{ imposto.IPI.CST }}</CST>
<vBC>{{ imposto.IPI.vBC }}</vBC>
<pIPI>{{ imposto.IPI.pIPI }}</pIPI>
<qUnid>{{ imposto.IPI.qUnid }}</qUnid>
<vUnid>{{ imposto.IPI.vUnid }}</vUnid>
<vIPI>{{ imposto.IPI.vIPI }}</vIPI>
</IPITrib>
{% endif %}
{% if imposto.IPI.CST in ('01', '02', '03', '04', '51', '52', '53', '54', '55') %}
<IPINT>
<CST>{{ imposto.IPI.CST }}</CST>
</IPINT>
{% endif %}
</IPI>
{% if imposto.II is defined %}
<II>
<vBC>{{ imposto.II.vBC }}</vBC>
<vDespAdu>{{ imposto.II.vDespAdu }}</vDespAdu>
<vII>{{ imposto.II.vII }}</vII>
<vIOF>{{ imposto.II.vIOF }}</vIOF>
</II>
{% endif %}
{% endif %}
{% if imposto.ISSQN is defined %}
<ISSQN>
<vBC>{{ imposto.ISSQN.vBC }}</vBC>
<vAliq>{{ imposto.ISSQN.vAliq }}</vAliq>
<vISSQN>{{ imposto.ISSQN.vISSQN }}</vISSQN>
<cMunFG>{{ imposto.ISSQN.cMunFG }}</cMunFG>
<cListServ>{{ imposto.ISSQN.cListServ }}</cListServ>
<vDeducao>{{ imposto.ISSQN.vDeducao }}</vDeducao>
<vOutro>{{ imposto.ISSQN.vOutro }}</vOutro>
<vDescIncond>{{ imposto.ISSQN.vDescIncond }}</vDescIncond>
<vDescCond>{{ imposto.ISSQN.vDescCond }}</vDescCond>
<vISSRet>{{ imposto.ISSQN.vDeducao }}</vISSRet>
<indISS>{{ imposto.ISSQN.indISS }}</indISS>
<cServico>{{ imposto.ISSQN.cServico }}</cServico>
<cMun>{{ imposto.ISSQN.cMun }}</cMun>
<cPais>{{ imposto.ISSQN.cPais }}</cPais>
<nProcesso>{{ imposto.ISSQN.nProcesso }}</nProcesso>
<indIncentivo>{{ imposto.ISSQN.indIncentivo }}</indIncentivo>
</ISSQN>
{% endif %} {% endif %}
<PIS> <PIS>
{% if imposto.PIS.CST in ('01', '02') %} {% if imposto.PIS.CST in ('01', '02') %}
@ -637,33 +659,13 @@
{% endif %} {% endif %}
</COFINS> </COFINS>
{% if imposto.COFINSST is defined %} {% if imposto.COFINSST is defined %}
<PISST>
<COFINSST>
<vBC>{{ imposto.COFINSST.vBC }}</vBC> <vBC>{{ imposto.COFINSST.vBC }}</vBC>
<pCOFINS>{{ imposto.COFINSST.pCOFINS }}</pCOFINS> <pCOFINS>{{ imposto.COFINSST.pCOFINS }}</pCOFINS>
<qBCProd>{{ imposto.COFINSST.qBCProd }}</qBCProd> <qBCProd>{{ imposto.COFINSST.qBCProd }}</qBCProd>
<vAliqProd>{{ imposto.COFINSST.vAliqProd }}</vAliqProd> <vAliqProd>{{ imposto.COFINSST.vAliqProd }}</vAliqProd>
<vCOFINS>{{ imposto.COFINSST.vCOFINS }}</vCOFINS> <vCOFINS>{{ imposto.COFINSST.vCOFINS }}</vCOFINS>
</PISST>
{% endif %}
{% if imposto.ISSQN is defined %}
<ISSQN>
<vBC>{{ imposto.ISSQN.vBC }}</vBC>
<vAliq>{{ imposto.ISSQN.vAliq }}</vAliq>
<vISSQN>{{ imposto.ISSQN.vISSQN }}</vISSQN>
<cMunFG>{{ imposto.ISSQN.cMunFG }}</cMunFG>
<cListServ>{{ imposto.ISSQN.cListServ }}</cListServ>
<vDeducao>{{ imposto.ISSQN.vDeducao }}</vDeducao>
<vOutro>{{ imposto.ISSQN.vOutro }}</vOutro>
<vDescIncond>{{ imposto.ISSQN.vDescIncond }}</vDescIncond>
<vDescCond>{{ imposto.ISSQN.vDescCond }}</vDescCond>
<vISSRet>{{ imposto.ISSQN.vDeducao }}</vISSRet>
<indISS>{{ imposto.ISSQN.indISS }}</indISS>
<cServico>{{ imposto.ISSQN.cServico }}</cServico>
<cMun>{{ imposto.ISSQN.cMun }}</cMun>
<cPais>{{ imposto.ISSQN.cPais }}</cPais>
<nProcesso>{{ imposto.ISSQN.nProcesso }}</nProcesso>
<indIncentivo>{{ imposto.ISSQN.vDeducao }}</indIncentivo>
</ISSQN>
</COFINSST>
{% endif %} {% endif %}
{% if imposto.ICMSUFDest is defined %} {% if imposto.ICMSUFDest is defined %}
<ICMSUFDest> <ICMSUFDest>

2
setup.py

@ -2,7 +2,7 @@
from setuptools import setup, find_packages from setuptools import setup, find_packages
VERSION = "1.0.10"
VERSION = "1.0.11"
setup( setup(

Loading…
Cancel
Save