Пример #1
0
    def action_post_validate(self):
        super(InvoiceEletronic, self).action_post_validate()
        if self.model not in ('55', '65'):
            return
        chave_dict = {
            'cnpj': re.sub('[^0-9]', '', self.company_id.cnpj_cpf),
            'estado': self.company_id.state_id.ibge_code,
            'emissao': self.data_emissao[2:4] + self.data_emissao[5:7],
            'modelo': self.model,
            'numero': self.numero,
            'serie': self.serie.code.zfill(3),
            'tipo': int(self.tipo_emissao),
            'codigo': "%08d" % self.numero_controle
        }
        self.chave_nfe = gerar_chave(ChaveNFe(**chave_dict))

        cert = self.company_id.with_context({'bin_size': False}).nfe_a1_file
        cert_pfx = base64.decodestring(cert)

        certificado = Certificado(cert_pfx, self.company_id.nfe_a1_password)

        nfe_values = self._prepare_eletronic_invoice_values()
        lote = self._prepare_lote(self.id, nfe_values)

        xml_enviar = xml_autorizar_nfe(certificado, **lote)

        mensagens_erro = valida_nfe(xml_enviar)
        if mensagens_erro:
            raise UserError(mensagens_erro)

        self.xml_to_send = base64.encodestring(xml_enviar.encode('utf-8'))
        self.xml_to_send_name = 'nfse-enviar-%s.xml' % self.numero
Пример #2
0
    def action_post_validate(self):
        super(InvoiceEletronic, self).action_post_validate()
        if self.model not in ('55', '65'):
            return
        chave_dict = {
            'cnpj': re.sub('[^0-9]', '', self.company_id.cnpj_cpf),
            'estado': self.company_id.state_id.ibge_code,
            'emissao': self.data_emissao[2:4] + self.data_emissao[5:7],
            'modelo': self.model,
            'numero': self.numero,
            'serie': self.serie.code.zfill(3),
            'tipo': int(self.tipo_emissao),
            'codigo': "%08d" % self.numero_controle
        }
        self.chave_nfe = gerar_chave(ChaveNFe(**chave_dict))

        cert = self.company_id.with_context({'bin_size': False}).nfe_a1_file
        cert_pfx = base64.decodestring(cert)

        certificado = Certificado(cert_pfx, self.company_id.nfe_a1_password)

        nfe_values = self._prepare_eletronic_invoice_values()

        lote = self._prepare_lote(self.id, nfe_values)
        xml_enviar = xml_autorizar_nfe(certificado, **lote)
        # _logger.info("============================xml_enviar before===========================%s", xml_enviar)
        # xml_enviar1 = xml_enviar.split('<dest>')[0]
        # xml_enviar2 = xml_enviar.split('<dest>')[1]
        # if self.ind_dest == '3':
        #    xml_enviar = xml_enviar1+'<dest><idEstrangeiro>'+re.sub('[^0-9]', '', self.partner_id.cnpj_cpf or '')+'</idEstrangeiro>'+xml_enviar2 if self.partner_id.cnpj_cpf else xml_enviar1+'<dest><idEstrangeiro/>'+xml_enviar2
        #    _logger.info("========================xml_enviar after===========================%s", xml_enviar)

        mensagens_erro = valida_nfe(xml_enviar)
        _logger.info(
            "========================mensagens_erro===========================%s",
            mensagens_erro)
        if mensagens_erro:
            raise UserError(mensagens_erro)

        self.xml_to_send = base64.encodestring(xml_enviar.encode('utf-8'))
        self.xml_to_send_name = 'nfse-enviar-%s.xml' % self.numero
        _logger.info(
            "========================self.xml_to_send_name===========================%s",
            self.xml_to_send_name)
Пример #3
0
    def action_post_validate(self):
        chave_dict = {
            'cnpj': re.sub('[^0-9]', '', self.company_id.l10n_br_cnpj_cpf),
            'estado': self.company_id.state_id.l10n_br_ibge_code,
            'emissao': self.data_emissao.strftime("%y%m"),
            'modelo': '55' if self.model == 'nfe' else '65',
            'numero': self.numero,
            'serie': self.serie_documento.zfill(3),
            'tipo': int(self.tipo_emissao),
            'codigo': "%08d" % self.numero_controle
        }
        self.chave_nfe = gerar_chave(ChaveNFe(**chave_dict))

        cert = self.company_id.with_context({
            'bin_size': False
        }).l10n_br_certificate
        cert_pfx = base64.decodestring(cert)

        certificado = Certificado(cert_pfx,
                                  self.company_id.l10n_br_cert_password)

        nfe_values = self._prepare_eletronic_invoice_values()

        lote = self._prepare_lote(self.id, nfe_values)

        xml_enviar = xml_autorizar_nfe(certificado, **lote)

        mensagens_erro = valida_nfe(xml_enviar)
        if mensagens_erro:
            raise UserError(mensagens_erro)

        self.sudo().write({
            'xml_to_send':
            base64.encodestring(xml_enviar.encode('utf-8')),
            'xml_to_send_name':
            'nfe-enviar-%s.xml' % self.numero,
        })
Пример #4
0
        'idLote': 1001,
        'indSinc': 0,
        'estado': 13,
        'ambiente': 2,
        'NFes': [{
            'infNFe': _prepare_eletronic_invoice_values()
        }],
        'modelo': '55',
    }


lote = _prepare_lote()
print(lote)

# Funções Para Gerar e Assinar o XML
xml_enviar = xml_autorizar_nfe(certificado, **lote)
mensagens_erro = valida_nfe(xml_enviar)
if mensagens_erro:
    print(mensagens_erro)
print(xml_enviar)

#xml_to_send = base64.encodestring(xml_enviar.encode('utf-8'))

#Funções para Envio do XML
estado = '15'
resposta_recibo = None
resposta = autorizar_nfe(certificado,
                         xml=xml_enviar,
                         estado='13',
                         ambiente=2,
                         modelo='55')