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
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)
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, })
'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')