diff --git a/pynfe/entidades/base.py b/pynfe/entidades/base.py index 9f82806..1704944 100644 --- a/pynfe/entidades/base.py +++ b/pynfe/entidades/base.py @@ -16,6 +16,9 @@ class Entidade(object): self._fonte_dados.adicionar_objeto(self) + def __str__(self): + return self.__class__.__name__ + def __repr__(self): return '<%s %s>'%(self.__class__.__name__, str(self)) diff --git a/pynfe/entidades/notafiscal.py b/pynfe/entidades/notafiscal.py index 3c994c0..ed001bf 100644 --- a/pynfe/entidades/notafiscal.py +++ b/pynfe/entidades/notafiscal.py @@ -387,7 +387,6 @@ class NotaFiscal(Entidade): self.totais_icms_pis += obj.pis_valor self.totais_icms_cofins += obj.cofins_valor self.totais_icms_outras_despesas_acessorias += obj.outras_despesas_acessorias - self.totais_icms_total_nota += obj.valor_total_bruto # - Valor Total do FCP (Fundo de Combate à Pobreza) self.totais_fcp += obj.fcp_valor self.totais_fcp_destino += obj.fcp_destino_valor @@ -397,6 +396,12 @@ class NotaFiscal(Entidade): self.totais_icms_inter_remetente += obj.icms_inter_remetente_valor ## TODO calcular impostos aproximados #self.totais_tributos_aproximado += obj.tributos + + self.totais_icms_total_nota += obj.valor_total_bruto - obj.desconto + \ + obj.icms_desonerado + obj.icms_st_valor + \ + obj.total_frete + obj.total_seguro + \ + obj.outras_despesas_acessorias + obj.ipi_valor_ipi + return obj def adicionar_transporte_volume(self, **kwargs): diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index c6e56e9..c87074a 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -236,6 +236,10 @@ class SerializacaoXML(Serializacao): etree.SubElement(prod, 'uTrib').text = produto_servico.unidade_tributavel etree.SubElement(prod, 'qTrib').text = str(produto_servico.quantidade_tributavel) etree.SubElement(prod, 'vUnTrib').text = '{:.4f}'.format(produto_servico.valor_unitario_tributavel or 0) + + if produto_servico.desconto: + etree.SubElement(prod, 'vDesc').text = '{:.2f}'.format(produto_servico.desconto) + """ Indica se valor do Item (vProd) entra no valor total da NF-e (vProd) 0=Valor do item (vProd) não compõe o valor total da NF-e 1=Valor do item (vProd) compõe o valor total da NF-e (vProd) (v2.0) @@ -349,7 +353,7 @@ class SerializacaoXML(Serializacao): elif produto_servico.pis_modalidade == '03': pis_item = etree.SubElement(pis, 'PISQtde') etree.SubElement(pis_item, 'CST').text = produto_servico.pis_modalidade - etree.SubElement(pis_item, 'qBCProd').text = produto_servico.quantidade_comercial + etree.SubElement(pis_item, 'qBCProd').text = '{:.4f}'.format(produto_servico.quantidade_comercial) etree.SubElement(pis_item, 'vAliqProd').text = produto_servico.pis_aliquota_percentual etree.SubElement(pis_item, 'vPIS').text = '{:.2f}'.format(produto_servico.pis_valor_base_calculo or 0) else: @@ -358,7 +362,7 @@ class SerializacaoXML(Serializacao): etree.SubElement(pis_item, 'vBC').text = '{:.2f}'.format(produto_servico.pis_valor_base_calculo or 0) etree.SubElement(pis_item, 'pPIS').text = '{:.2f}'.format(produto_servico.pis_aliquota_percentual or 0) if produto_servico.pis_modalidade is not '99': - etree.SubElement(pis_item, 'qBCProd').text = produto_servico.quantidade_comercial + etree.SubElement(pis_item, 'qBCProd').text = '{:.4f}'.format(produto_servico.quantidade_comercial) etree.SubElement(pis_item, 'vAliqProd').text = produto_servico.pis_aliquota_percentual etree.SubElement(pis_item, 'vPIS').text = '{:.2f}'.format(produto_servico.pis_valor_base_calculo or 0) @@ -385,9 +389,9 @@ class SerializacaoXML(Serializacao): elif produto_servico.cofins_modalidade == '03': cofins_item = etree.SubElement(cofins, 'COFINSQtde') etree.SubElement(cofins_item, 'CST').text = produto_servico.cofins_modalidade - etree.SubElement(cofins_item, 'qBCProd').text = produto_servico.quantidade_comercial - etree.SubElement(cofins_item, 'vAliqProd').text = produto_servico.cofins_aliquota_percentual - etree.SubElement(cofins_item, 'vCOFINS').text = produto_servico.cofins_valor + etree.SubElement(cofins_item, 'qBCProd').text = '{:.4f}'.format(produto_servico.quantidade_comercial) + etree.SubElement(cofins_item, 'vAliqProd').text = '{:.4f}'.format(produto_servico.cofins_aliquota_percentual) + etree.SubElement(cofins_item, 'vCOFINS').text = '{:.2f}'.format(produto_servico.cofins_valor) else: cofins_item = etree.SubElement(cofins, 'COFINSOutr') etree.SubElement(cofins_item, 'CST').text = produto_servico.cofins_modalidade