def get_ibpt(self):
        for fiscal_classification in self:

            company = (fiscal_classification.env.user.company_id
                       or fiscal_classification.company_id)

            config = DeOlhoNoImposto(company.ipbt_token,
                                     punctuation_rm(company.cnpj_cpf),
                                     company.state_id.code)

            result = get_ibpt_product(
                config,
                punctuation_rm(fiscal_classification.code or ''),
            )

            vals = {
                'fiscal_classification_id': fiscal_classification.id,
                'origin': 'IBPT-WS',
                'state_id': company.state_id.id,
                'state_taxes': result.estadual,
                'federal_taxes_national': result.nacional,
                'federal_taxes_import': result.importado,
                'company_id': company.id,
            }

            tax_estimate = fiscal_classification.env['l10n_br_tax.estimate']

            tax_estimate.create(vals)

        return True
예제 #2
0
    def _nfe_references(self, inv_related):

        #
        # Documentos referenciadas
        #
        if inv_related.document_type == 'nf':
            self.nfref.refNF.cUF.valor = (inv_related.state_id
                                          and inv_related.state_id.ibge_code
                                          or '', )
            self.nfref.refNF.AAMM.valor = datetime.strptime(
                inv_related.date, '%Y-%m-%d').strftime('%y%m') or ''
            self.nfref.refNF.CNPJ.valor = punctuation_rm(inv_related.cnpj_cpf)
            self.nfref.refNF.mod.valor = (inv_related.fiscal_document_id and
                                          inv_related.fiscal_document_id.code
                                          or '')
            self.nfref.refNF.serie.valor = inv_related.serie or ''
            self.nfref.refNF.nNF.valor = inv_related.internal_number or ''

        elif inv_related.document_type == 'nfrural':
            self.nfref.refNFP.cUF.valor = (inv_related.state_id
                                           and inv_related.state_id.ibge_code
                                           or '', )
            self.nfref.refNFP.AAMM.valor = datetime.strptime(
                inv_related.date, '%Y-%m-%d').strftime('%y%m') or ''
            self.nfref.refNFP.IE.valor = punctuation_rm(inv_related.inscr_est)
            self.nfref.refNFP.mod.valor = (inv_related.fiscal_document_id and
                                           inv_related.fiscal_document_id.code
                                           or '')
            self.nfref.refNFP.serie.valor = inv_related.serie or ''
            self.nfref.refNFP.nNF.valor = inv_related.internal_number or ''

            if inv_related.cpfcnpj_type == 'cnpj':
                self.nfref.refNFP.CNPJ.valor = punctuation_rm(
                    inv_related.cnpj_cpf)
            else:
                self.nfref.refNFP.CPF.valor = punctuation_rm(
                    inv_related.cnpj_cpf)

        elif inv_related.document_type == 'nfe':
            self.nfref.refNFe.valor = inv_related.access_key or ''

        elif inv_related.document_type == 'cte':
            self.nfref.refCTe.valor = inv_related.access_key or ''

        elif inv_related.document_type == 'cf':
            self.nfref.refECF.mod.valor = (inv_related.fiscal_document_id and
                                           inv_related.fiscal_document_id.code
                                           or '')
            self.nfref.refECF.nECF.valor = inv_related.internal_number
            self.nfref.refECF.nCOO.valor = inv_related.serie
예제 #3
0
    def _receiver(self, invoice, company, nfe_environment):
        super(NFe310, self)._receiver(invoice, company, nfe_environment)

        if invoice.partner_id.country_id.id != \
                invoice.company_id.country_id.id:
            self.nfe.infNFe.dest.idEstrangeiro.valor = punctuation_rm(
                invoice.partner_id.cnpj_cpf)
예제 #4
0
    def _prepare_header(self):
        """

        :param:
        :return:
        """
        return {
            'controle_banco': int(self.order.mode.bank_id.bank_bic),
            'arquivo_data_de_geracao': self.data_hoje(),
            'arquivo_hora_de_geracao': self.hora_agora(),
            # TODO: Número sequencial de arquivo
            'arquivo_sequencia': int(self.get_file_numeration()),
            'cedente_inscricao_tipo': self.inscricao_tipo,
            'cedente_inscricao_numero': int(punctuation_rm(
                self.order.company_id.cnpj_cpf)),
            'cedente_agencia': int(
                self.order.mode.bank_id.bra_number),
            'cedente_conta': int(self.order.mode.bank_id.acc_number),
            'cedente_conta_dv': (self.order.mode.bank_id.acc_number_dig),
            'cedente_convenio': self.order.mode.boleto_convenio,
            'cedente_agencia_dv': self.order.mode.bank_id.bra_number_dig,
            'cedente_nome': self.order.company_id.legal_name,
            # DV ag e conta
            'cedente_dv_ag_cc': (self.order.mode.bank_id.bra_acc_dig),
            'arquivo_codigo': 1,  # Remessa/Retorno
            'servico_operacao': u'R',
            'nome_banco': unicode(self.order.mode.bank_id.bank_name),
        }
예제 #5
0
    def _prepare_header(self):
        """

        :param:
        :return:
        """
        return {
            'arquivo_data_de_geracao':
            self.data_hoje_pag_for(),
            'arquivo_hora_de_geracao':
            self.hora_agora(),
            # TODO: Número sequencial de arquivo
            'numero_remessa':
            int(self.get_file_numeration()),
            'cedente_inscricao_tipo':
            self.inscricao_tipo,
            'cnpj_cpf_base':
            int(punctuation_rm(self.order.company_id.cnpj_cpf)[0:8]),
            'cnpj_cpf_filial':
            int(punctuation_rm(self.order.company_id.cnpj_cpf)[9:12]),
            'sufixo_cnpj':
            int(punctuation_rm(self.order.company_id.cnpj_cpf)[12:14]),
            'cedente_agencia':
            int(self.order.mode.bank_id.bra_number),
            'cedente_conta':
            int(self.order.mode.bank_id.acc_number),
            'cedente_agencia_conta_dv':
            self.order.mode.bank_id.bra_number_dig,
            'nome_empresa_pagadora':
            self.order.company_id.legal_name,
            'cedente_codigo_agencia_digito':
            self.order.mode.bank_id.bra_number_dig,
            'arquivo_codigo':
            1,  # Remessa/Retorno
            'servico_operacao':
            u'R',
            'reservado_empresa':
            u'BRADESCO PAG FOR',
            # Sequencial crescente e nunca pode ser repetido
            'numero_lista_debito':
            int(self.get_file_numeration()),
            # TODO: Sequencial crescente de 1 a 1 no arquivo. O primeiro header
            #  será sempre 000001
            'sequencial':
            1
        }
예제 #6
0
    def _in_out_adress(self, invoice):

        #
        # Endereço de Entrega ou Retirada
        #
        if invoice.partner_shipping_id:
            if invoice.partner_id.id != invoice.partner_shipping_id.id:
                if self.nfe.infNFe.ide.tpNF.valor == 0:
                    self.nfe.infNFe.retirada.CNPJ.valor = punctuation_rm(
                        invoice.partner_shipping_id.cnpj_cpf)
                    self.nfe.infNFe.retirada.xLgr.valor = (
                        invoice.partner_shipping_id.street or '')
                    self.nfe.infNFe.retirada.nro.valor = (
                        invoice.partner_shipping_id.number or '')
                    self.nfe.infNFe.retirada.xCpl.valor = (
                        invoice.partner_shipping_id.street2 or '')
                    self.nfe.infNFe.retirada.xBairro.valor = (
                        invoice.partner_shipping_id.district or 'Sem Bairro')
                    self.nfe.infNFe.retirada.cMun.valor = '%s%s' % (
                        invoice.partner_shipping_id.state_id.ibge_code,
                        invoice.partner_shipping_id.l10n_br_city_id.ibge_code)
                    self.nfe.infNFe.retirada.xMun.valor = (
                        invoice.partner_shipping_id.l10n_br_city_id.name or '')
                    self.nfe.infNFe.retirada.UF.valor = (
                        invoice.partner_shipping_id.state_id.code or '')
                else:
                    self.nfe.infNFe.entrega.CNPJ.valor = punctuation_rm(
                        invoice.partner_shipping_id.cnpj_cpf)
                    self.nfe.infNFe.entrega.xLgr.valor = (
                        invoice.partner_shipping_id.street or '')
                    self.nfe.infNFe.entrega.nro.valor = (
                        invoice.partner_shipping_id.number or '')
                    self.nfe.infNFe.entrega.xCpl.valor = (
                        invoice.partner_shipping_id.street2 or '')
                    self.nfe.infNFe.entrega.xBairro.valor = (
                        invoice.partner_shipping_id.district or 'Sem Bairro')
                    self.nfe.infNFe.entrega.cMun.valor = '%s%s' % (
                        invoice.partner_shipping_id.state_id.ibge_code,
                        invoice.partner_shipping_id.l10n_br_city_id.ibge_code)
                    self.nfe.infNFe.entrega.xMun.valor = (
                        invoice.partner_shipping_id.l10n_br_city_id.name or '')
                    self.nfe.infNFe.entrega.UF.valor = (
                        invoice.partner_shipping_id.state_id.code or '')
예제 #7
0
    def _emmiter(self, invoice, company):
        """Emitente"""

        self.nfe.infNFe.emit.CNPJ.valor = punctuation_rm(
            invoice.company_id.partner_id.cnpj_cpf)
        self.nfe.infNFe.emit.xNome.valor = (
            invoice.company_id.partner_id.legal_name[:60])
        self.nfe.infNFe.emit.xFant.valor = invoice.company_id.partner_id.name
        self.nfe.infNFe.emit.enderEmit.xLgr.valor = company.street or ''
        self.nfe.infNFe.emit.enderEmit.nro.valor = company.number or ''
        self.nfe.infNFe.emit.enderEmit.xCpl.valor = company.street2 or ''
        self.nfe.infNFe.emit.enderEmit.xBairro.valor = (company.district
                                                        or 'Sem Bairro')
        self.nfe.infNFe.emit.enderEmit.cMun.valor = '%s%s' % (
            company.state_id.ibge_code, company.l10n_br_city_id.ibge_code)
        self.nfe.infNFe.emit.enderEmit.xMun.valor = (
            company.l10n_br_city_id.name or '')
        self.nfe.infNFe.emit.enderEmit.UF.valor = company.state_id.code or ''
        self.nfe.infNFe.emit.enderEmit.CEP.valor = punctuation_rm(company.zip
                                                                  or '')
        self.nfe.infNFe.emit.enderEmit.cPais.valor = (
            company.country_id.bc_code[1:])
        self.nfe.infNFe.emit.enderEmit.xPais.valor = company.country_id.name
        self.nfe.infNFe.emit.enderEmit.fone.valor = punctuation_rm(
            str(company.phone or '').replace(' ', ''))
        self.nfe.infNFe.emit.IE.valor = punctuation_rm(
            invoice.company_id.partner_id.inscr_est)
        self.nfe.infNFe.emit.IEST.valor = ''
        self.nfe.infNFe.emit.IM.valor = punctuation_rm(
            invoice.company_id.partner_id.inscr_mun or '')
        self.nfe.infNFe.emit.CRT.valor = invoice.company_id.fiscal_type or ''

        if invoice.company_id.partner_id.inscr_mun:
            self.nfe.infNFe.emit.CNAE.valor = punctuation_rm(
                invoice.company_id.cnae_main_id.code or '')
예제 #8
0
def create_fci(fci):
    arq = arquivos.ArquivoDigital()

    cpf_cnpj_numbers = punctuation_rm(fci.company_id.partner_id.cnpj_cpf)
    inscr_est_numbers = punctuation_rm(fci.company_id.partner_id.inscr_est)
    zip_numbers = punctuation_rm(fci.company_id.partner_id.zip)

    input0000 = ('0000|' + cpf_cnpj_numbers + '|' +
                 fci.company_id.partner_id.name + '|' + '1.0')
    input0010 = ('0010|' + cpf_cnpj_numbers + '|' +
                 fci.company_id.partner_id.legal_name + '|' +
                 inscr_est_numbers + '|' + fci.company_id.partner_id.street +
                 ', ' + fci.company_id.partner_id.number + '|' + zip_numbers +
                 '|' + fci.company_id.partner_id.l10n_br_city_id.name + '|' +
                 fci.company_id.partner_id.state_id.code)
    for line in fci.fci_line:
        if not line.valor_parcela_importada:
            raise Warning(
                ('Error!'),
                ('O campo Valor parcela importada nao pode ser zero'))
        else:
            line.ncm_id_numbers = punctuation_rm(line.fiscal_classification_id)
            input5020 = (
                '5020|' + line.name + '|' + str(line.ncm_id_numbers) + '|' +
                line.default_code + '|' + str(line.ean13) + '|' +
                (line.product_uom.name or '99') + '|' + str("{0:.2f}".format(
                    round(line.list_price))).replace('.', ',') + '|' +
                str("{0:.2f}".format(round(line.valor_parcela_importada,
                                           2))).replace('.', ',') + '|' +
                str("{0:.2f}".format(round(line.conteudo_importacao,
                                           2))).replace('.', ','))
        arq.read_registro(input5020)
    arq.read_registro(input0000)
    arq.read_registro(input0010)

    return base64.b64encode(arq.getstring().encode('utf-8'))
예제 #9
0
    def _carrier_data(self, invoice):
        """Dados da Transportadora e veiculo"""

        self.nfe.infNFe.transp.modFrete.valor = (
            invoice.incoterm and invoice.incoterm.freight_responsibility
            or '9')

        if invoice.carrier_id:

            if invoice.carrier_id.partner_id.is_company:
                self.nfe.infNFe.transp.transporta.CNPJ.valor = \
                    punctuation_rm(
                        invoice.carrier_id.partner_id.cnpj_cpf or '')
            else:
                self.nfe.infNFe.transp.transporta.CPF.valor = \
                    punctuation_rm(
                        invoice.carrier_id.partner_id.cnpj_cpf or '')

            self.nfe.infNFe.transp.transporta.xNome.valor = (
                invoice.carrier_id.partner_id.legal_name[:60] or '')
            self.nfe.infNFe.transp.transporta.IE.valor = punctuation_rm(
                invoice.carrier_id.partner_id.inscr_est)
            self.nfe.infNFe.transp.transporta.xEnder.valor = (
                invoice.carrier_id.partner_id.street or '')
            self.nfe.infNFe.transp.transporta.xMun.valor = (
                invoice.carrier_id.partner_id.l10n_br_city_id.name or '')
            self.nfe.infNFe.transp.transporta.UF.valor = (
                invoice.carrier_id.partner_id.state_id.code or '')

        if invoice.vehicle_id:
            self.nfe.infNFe.transp.veicTransp.placa.valor = (
                invoice.vehicle_id.plate or '')
            self.nfe.infNFe.transp.veicTransp.UF.valor = (
                invoice.vehicle_id.plate.state_id.code or '')
            self.nfe.infNFe.transp.veicTransp.RNTC.valor = (
                invoice.vehicle_id.rntc_code or '')
def mount_path_nfe(company, document='nfe'):
    db_name = company._cr.dbname
    cnpj = punctuation_rm(company.cnpj_cpf)

    filestore = config.filestore(db_name)
    nfe_path = '/'.join([filestore, 'PySPED', document, cnpj])
    if not os.path.exists(nfe_path):
        try:
            os.makedirs(nfe_path)
        except OSError:
            raise RedirectWarning(
                _(u'Erro!'),
                _(u"""Verifique as permissões de escrita
                    e o caminho da pasta"""))
    return nfe_path
예제 #11
0
    def remessa(self, order):
        result = ''
        for line in order.line_ids:
            if line.partner_id.is_company:
                tipo_inscricao = '2'
            else:
                tipo_inscricao = '1'

            endereco01 = strip_accents(line.partner_id.street)
            # endereco02 = str(line.partner_id.street2.replace('º', ''))
            endereco_cliente = endereco01
            vals = {
                'identificador_tributo':
                'G',
                'nome_cliente':
                str(line.partner_id.name),
                'endereco_cliente':
                endereco_cliente,
                'cep_cliente':
                str(punctuation_rm(line.partner_id.zip)),
                'uf_cliente':
                str(line.partner_id.state_id.code),
                'autoriza_pagamento':
                'S',
                'tipo_inscricao':
                tipo_inscricao,
                'uf_favorecida':
                str(line.partner_id.state_id.code),
                'telefone_cliente':
                str(punctuation_rm(line.partner_id.phone)),
                'numero_inscricao':
                str(punctuation_rm(line.partner_id.cnpj_cpf)),
                'valor_do_principal':
                punctuation_rm(str(line.amount_currency)),
                'data_pagamento_tributo':
                punctuation_rm(line.date),
                'data_vencimento_tributo':
                punctuation_rm(line.date),
                'codigo_de_receita':
                str(punctuation_rm(line.order_id.mode.gnre_type.code)),
                'num_doc_origem':
                str(punctuation_rm(line.ml_inv_ref.internal_number)),
            }
            result += "%s\n" % self._remessa(**vals)
        return result
예제 #12
0
    def _nfe_identification(self, invoice, company, nfe_environment):

        super(NFe310, self)._nfe_identification(invoice, company,
                                                nfe_environment)

        self.nfe.infNFe.ide.idDest.valor = (
            invoice.fiscal_position.cfop_id.id_dest or '')
        self.nfe.infNFe.ide.indFinal.valor = invoice.ind_final or ''
        self.nfe.infNFe.ide.indPres.valor = invoice.ind_pres or ''
        self.nfe.infNFe.ide.dhEmi.valor = datetime.strptime(
            invoice.date_hour_invoice, '%Y-%m-%d %H:%M:%S')
        self.nfe.infNFe.ide.dhSaiEnt.valor = datetime.strptime(
            invoice.date_in_out, '%Y-%m-%d %H:%M:%S')
        self.aut_xml = self._get_AutXML()
        self.aut_xml.CNPJ.valor = punctuation_rm(
            invoice.company_id.accountant_cnpj_cpf)
        self.nfe.infNFe.autXML.append(self.aut_xml)
예제 #13
0
    def _details(self, invoice, invoice_line, index):
        """Detalhe"""

        self.det.nItem.valor = index
        self.det.prod.cProd.valor = invoice_line.product_id.code or ''
        self.det.prod.cEAN.valor = invoice_line.product_id.ean13 or ''
        self.det.prod.xProd.valor = invoice_line.product_id.name[:120] or ''
        self.det.prod.NCM.valor = punctuation_rm(
            invoice_line.fiscal_classification_id.code or '')[:8]
        self.det.prod.EXTIPI.valor = ''
        self.det.prod.nFCI.valor = invoice_line.fci or ''
        self.det.prod.CFOP.valor = invoice_line.cfop_id.code
        self.det.prod.uCom.valor = invoice_line.uos_id.name or ''
        self.det.prod.qCom.valor = str("%.4f" % invoice_line.quantity)
        self.det.prod.vUnCom.valor = str("%.7f" % invoice_line.price_unit)
        self.det.prod.vProd.valor = str("%.2f" % invoice_line.price_gross)
        self.det.prod.cEANTrib.valor = invoice_line.product_id.ean13 or ''
        self.det.prod.uTrib.valor = self.det.prod.uCom.valor
        self.det.prod.qTrib.valor = self.det.prod.qCom.valor
        self.det.prod.vUnTrib.valor = self.det.prod.vUnCom.valor
        self.det.prod.vFrete.valor = str("%.2f" % invoice_line.freight_value)
        self.det.prod.vSeg.valor = str("%.2f" % invoice_line.insurance_value)
        self.det.prod.vDesc.valor = str("%.2f" % invoice_line.discount_value)
        self.det.prod.vOutro.valor = str("%.2f" %
                                         invoice_line.other_costs_value)
        self.det.infAdProd.valor = invoice_line.fiscal_comment or ''

        #
        # Produto entra no total da NF-e
        #
        self.det.prod.indTot.valor = 1

        if invoice_line.product_type == 'product':
            # ICMS
            if invoice_line.icms_cst_id.code > 100:
                self.det.imposto.ICMS.CSOSN.valor = (
                    invoice_line.icms_cst_id.code)
                self.det.imposto.ICMS.pCredSN.valor = str(
                    "%.2f" % invoice_line.icms_percent)
                self.det.imposto.ICMS.vCredICMSSN.valor = str(
                    "%.2f" % invoice_line.icms_value)

            self.det.imposto.ICMS.orig.valor = invoice_line.icms_origin or ''
            self.det.imposto.ICMS.CST.valor = invoice_line.icms_cst_id.code
            self.det.imposto.ICMS.modBC.valor = invoice_line.icms_base_type
            self.det.imposto.ICMS.vBC.valor = str("%.2f" %
                                                  invoice_line.icms_base)
            self.det.imposto.ICMS.pRedBC.valor = str(
                "%.2f" % invoice_line.icms_percent_reduction)
            self.det.imposto.ICMS.pICMS.valor = str("%.2f" %
                                                    invoice_line.icms_percent)
            self.det.imposto.ICMS.vICMS.valor = str("%.2f" %
                                                    invoice_line.icms_value)

            # ICMS ST
            self.det.imposto.ICMS.modBCST.valor = (
                invoice_line.icms_st_base_type)
            self.det.imposto.ICMS.pMVAST.valor = str("%.2f" %
                                                     invoice_line.icms_st_mva)
            self.det.imposto.ICMS.pRedBCST.valor = str(
                "%.2f" % invoice_line.icms_st_percent_reduction)
            self.det.imposto.ICMS.vBCST.valor = str("%.2f" %
                                                    invoice_line.icms_st_base)
            self.det.imposto.ICMS.pICMSST.valor = str(
                "%.2f" % invoice_line.icms_st_percent)
            self.det.imposto.ICMS.vICMSST.valor = str(
                "%.2f" % invoice_line.icms_st_value)

            # IPI
            self.det.imposto.IPI.CST.valor = invoice_line.ipi_cst_id.code
            if invoice_line.ipi_type == 'percent' or '':
                self.det.imposto.IPI.vBC.valor = str("%.2f" %
                                                     invoice_line.ipi_base)
                self.det.imposto.IPI.pIPI.valor = str("%.2f" %
                                                      invoice_line.ipi_percent)
            if invoice_line.ipi_type == 'quantity':
                pesol = 0
                if invoice_line.product_id:
                    pesol = invoice_line.product_id.weight_net
                    self.det.imposto.IPI.qUnid.valor = str(
                        "%.2f" % invoice_line.quantity * pesol)
                    self.det.imposto.IPI.vUnid.valor = str(
                        "%.2f" % invoice_line.ipi_percent)
            self.det.imposto.IPI.vIPI.valor = str("%.2f" %
                                                  invoice_line.ipi_value)

        else:
            # ISSQN
            self.det.imposto.ISSQN.vBC.valor = str("%.2f" %
                                                   invoice_line.issqn_base)
            self.det.imposto.ISSQN.vAliq.valor = str(
                "%.2f" % invoice_line.issqn_percent)
            self.det.imposto.ISSQN.vISSQN.valor = str("%.2f" %
                                                      invoice_line.issqn_value)
            self.det.imposto.ISSQN.cMunFG.valor = (
                '%s%s') % (invoice.partner_id.state_id.ibge_code,
                           invoice.partner_id.l10n_br_city_id.ibge_code)
            self.det.imposto.ISSQN.cListServ.valor = punctuation_rm(
                invoice_line.service_type_id.code or '')
            self.det.imposto.ISSQN.cSitTrib.valor = invoice_line.issqn_type

        # PIS
        self.det.imposto.PIS.CST.valor = invoice_line.pis_cst_id.code
        self.det.imposto.PIS.vBC.valor = str("%.2f" % invoice_line.pis_base)
        self.det.imposto.PIS.pPIS.valor = str("%.2f" %
                                              invoice_line.pis_percent)
        self.det.imposto.PIS.vPIS.valor = str("%.2f" % invoice_line.pis_value)

        # PISST
        self.det.imposto.PISST.vBC.valor = str("%.2f" %
                                               invoice_line.pis_st_base)
        self.det.imposto.PISST.pPIS.valor = str("%.2f" %
                                                invoice_line.pis_st_percent)
        self.det.imposto.PISST.qBCProd.valor = ''
        self.det.imposto.PISST.vAliqProd.valor = ''
        self.det.imposto.PISST.vPIS.valor = str("%.2f" %
                                                invoice_line.pis_st_value)

        # COFINS
        self.det.imposto.COFINS.CST.valor = invoice_line.cofins_cst_id.code
        self.det.imposto.COFINS.vBC.valor = str("%.2f" %
                                                invoice_line.cofins_base)
        self.det.imposto.COFINS.pCOFINS.valor = str(
            "%.2f" % invoice_line.cofins_percent)
        self.det.imposto.COFINS.vCOFINS.valor = str("%.2f" %
                                                    invoice_line.cofins_value)

        # COFINSST
        self.det.imposto.COFINSST.vBC.valor = str("%.2f" %
                                                  invoice_line.cofins_st_base)
        self.det.imposto.COFINSST.pCOFINS.valor = str(
            "%.2f" % invoice_line.cofins_st_percent)
        self.det.imposto.COFINSST.qBCProd.valor = ''
        self.det.imposto.COFINSST.vAliqProd.valor = ''
        self.det.imposto.COFINSST.vCOFINS.valor = str(
            "%.2f" % invoice_line.cofins_st_value)

        # II
        self.det.imposto.II.vBC.valor = str("%.2f" % invoice_line.ii_base)
        self.det.imposto.II.vDespAdu.valor = str(
            "%.2f" % invoice_line.ii_customhouse_charges)
        self.det.imposto.II.vII.valor = str("%.2f" % invoice_line.ii_value)
        self.det.imposto.II.vIOF.valor = str("%.2f" % invoice_line.ii_iof)

        self.det.imposto.vTotTrib.valor = str("%.2f" %
                                              invoice_line.total_taxes)
예제 #14
0
    def _receiver(self, invoice, company, nfe_environment):
        """Destinatário"""

        partner_bc_code = ''
        address_invoice_state_code = ''
        address_invoice_city = ''
        partner_cep = ''

        if invoice.partner_id.country_id.bc_code:
            partner_bc_code = invoice.partner_id.country_id.bc_code[1:]

        if invoice.partner_id.country_id.id != \
                invoice.company_id.country_id.id:
            address_invoice_state_code = 'EX'
            address_invoice_city = 'Exterior'
            address_invoice_city_code = '9999999'
        else:
            address_invoice_state_code = invoice.partner_id.state_id.code
            address_invoice_city = (invoice.partner_id.l10n_br_city_id.name
                                    or '')
            address_invoice_city_code = (
                '%s%s') % (invoice.partner_id.state_id.ibge_code,
                           invoice.partner_id.l10n_br_city_id.ibge_code)
            partner_cep = punctuation_rm(invoice.partner_id.zip)

        # Se o ambiente for de teste deve ser
        # escrito na razão do destinatário
        if nfe_environment == '2':
            self.nfe.infNFe.dest.xNome.valor = (
                'NF-E EMITIDA EM AMBIENTE DE HOMOLOGACAO - SEM VALOR FISCAL')
        else:
            self.nfe.infNFe.dest.xNome.valor = (
                invoice.partner_id.legal_name[:60] or '')

            if invoice.partner_id.is_company:
                self.nfe.infNFe.dest.CNPJ.valor = punctuation_rm(
                    invoice.partner_id.cnpj_cpf)
                self.nfe.infNFe.dest.IE.valor = punctuation_rm(
                    invoice.partner_id.inscr_est)
            else:
                self.nfe.infNFe.dest.CPF.valor = punctuation_rm(
                    invoice.partner_id.cnpj_cpf)

        self.nfe.infNFe.dest.enderDest.xLgr.valor = (invoice.partner_id.street
                                                     or '')
        self.nfe.infNFe.dest.enderDest.nro.valor = (invoice.partner_id.number
                                                    or '')
        self.nfe.infNFe.dest.enderDest.xCpl.valor = (invoice.partner_id.street2
                                                     or '')
        self.nfe.infNFe.dest.enderDest.xBairro.valor = (
            invoice.partner_id.district or 'Sem Bairro')
        self.nfe.infNFe.dest.enderDest.cMun.valor = address_invoice_city_code
        self.nfe.infNFe.dest.enderDest.xMun.valor = address_invoice_city
        self.nfe.infNFe.dest.enderDest.UF.valor = address_invoice_state_code
        self.nfe.infNFe.dest.enderDest.CEP.valor = partner_cep
        self.nfe.infNFe.dest.enderDest.cPais.valor = partner_bc_code
        self.nfe.infNFe.dest.enderDest.xPais.valor = (
            invoice.partner_id.country_id.name or '')
        self.nfe.infNFe.dest.enderDest.fone.valor = punctuation_rm(
            invoice.partner_id.phone or '').replace(' ', '')
        self.nfe.infNFe.dest.email.valor = invoice.partner_id.email or ''