diff --git a/pynfe/entidades/notafiscal.py b/pynfe/entidades/notafiscal.py index 2d23311..7a257ad 100644 --- a/pynfe/entidades/notafiscal.py +++ b/pynfe/entidades/notafiscal.py @@ -274,6 +274,12 @@ class NotaFiscal(Entidade): # - Valor total do ICMS Interestadual para a UF do remetente totais_icms_inter_remetente = Decimal() + # - Valor total do qBCMonoRet + totais_icms_q_bc_mono_ret = Decimal() + + # - Valor total do vICMSMonoRet + totais_icms_v_icms_mono_ret = Decimal() + # Transporte # - Modalidade do Frete (obrigatorio - seleciona de lista) - MODALIDADES_FRETE # 0=Contratação do Frete por conta do Remetente (CIF); @@ -415,6 +421,8 @@ def adicionar_produto_servico(self, **kwargs): self.totais_fcp_st_ret += obj.fcp_st_ret_valor self.totais_icms_inter_destino += obj.icms_inter_destino_valor self.totais_icms_inter_remetente += obj.icms_inter_remetente_valor + self.totais_icms_q_bc_mono_ret += obj.icms_q_bc_mono_ret + self.totais_icms_v_icms_mono_ret += obj.icms_v_icms_mono_ret # TODO calcular impostos aproximados # self.totais_tributos_aproximado += obj.tributos @@ -715,6 +723,9 @@ class NotaFiscalProduto(Entidade): fcp_st_ret_valor = Decimal() icms_inter_destino_valor = Decimal() icms_inter_remetente_valor = Decimal() + icms_q_bc_mono_ret = Decimal() + icms_ad_rem_icms_ret = Decimal() + icms_v_icms_mono_ret = Decimal() # - IPI # - Situacao tributaria (seleciona de lista) - IPI_TIPOS_TRIBUTACAO diff --git a/pynfe/processamento/serializacao.py b/pynfe/processamento/serializacao.py index 9bee007..3e04697 100644 --- a/pynfe/processamento/serializacao.py +++ b/pynfe/processamento/serializacao.py @@ -1,26 +1,27 @@ # -*- coding: utf-8 -*- -from pynfe.entidades import NotaFiscal, Manifesto +import base64 +import hashlib +import re +from datetime import datetime + +from pynfe.entidades import Manifesto, NotaFiscal from pynfe.utils import ( etree, - so_numeros, + obter_codigo_por_municipio, obter_municipio_por_codigo, obter_pais_por_codigo, - obter_codigo_por_municipio, + so_numeros, ) from pynfe.utils.flags import ( CODIGOS_ESTADOS, - VERSAO_PADRAO, - VERSAO_MDFE, - NAMESPACE_NFE, NAMESPACE_MDFE, + NAMESPACE_NFE, NAMESPACE_SIG, + VERSAO_MDFE, + VERSAO_PADRAO, VERSAO_QRCODE, ) -from pynfe.utils.webservices import NFCE, MDFE -import base64 -import hashlib -from datetime import datetime -import re +from pynfe.utils.webservices import MDFE, NFCE class Serializacao(object): @@ -697,6 +698,21 @@ def _serializar_imposto_icms( etree.SubElement(icms_item, "vFCPSTRet").text = "{:.2f}".format( produto_servico.fcp_st_valor or 0 ) + + # 61=Tributação monofásica sobre combustíveis cobrada anteriormente + elif produto_servico.icms_modalidade == "61": + icms_item = etree.SubElement(icms, "ICMS" + produto_servico.icms_modalidade) + etree.SubElement(icms_item, "orig").text = str(produto_servico.icms_origem) + etree.SubElement(icms_item, "CST").text = "61" + etree.SubElement(icms_item, "qBCMonoRet").text = "{:.2f}".format( + produto_servico.icms_q_bc_mono_ret or 0 + ) + etree.SubElement(icms_item, "adRemICMSRet").text = "{:.2f}".format( + produto_servico.icms_ad_rem_icms_ret or 0 + ) + etree.SubElement(icms_item, "vICMSMonoRet").text = "{:.2f}".format( + produto_servico.icms_v_icms_mono_ret or 0 + ) # 70=Com redução da BC e cobrança do ICMS por substituição tributária elif produto_servico.icms_modalidade == "70": @@ -1494,6 +1510,14 @@ def _serializar_nota_fiscal( etree.SubElement(icms_total, "vICMSUFRemet").text = "{:.2f}".format( nota_fiscal.totais_icms_remetente ) + if nota_fiscal.totais_icms_q_bc_mono_ret: + etree.SubElement(icms_total, "qBCMonoRet").text = "{:.2f}".format( + nota_fiscal.totais_icms_q_bc_mono_ret + ) + if nota_fiscal.totais_icms_v_icms_mono_ret: + etree.SubElement(icms_total, "vICMSMonoRet").text = "{:.2f}".format( + nota_fiscal.totais_icms_v_icms_mono_ret + ) etree.SubElement(icms_total, "vFCP").text = "{:.2f}".format( nota_fiscal.totais_fcp )