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 _generate_nfe_id(**kwargs): for item in kwargs['NFes']: vals = { 'cnpj': item['infNFe']['emit']['cnpj_cpf'], 'estado': item['infNFe']['ide']['cUF'], 'emissao': '%s%s' % (item['infNFe']['ide']['dhEmi'][2:4], item['infNFe']['ide']['dhEmi'][5:7]), 'modelo': item['infNFe']['ide']['mod'], 'serie': item['infNFe']['ide']['serie'], 'numero': item['infNFe']['ide']['nNF'], 'tipo': item['infNFe']['ide']['tpEmis'], 'codigo': item['infNFe']['ide']['cNF'], } chave_nfe = ChaveNFe(**vals) chave_nfe = gerar_chave(chave_nfe, 'NFe') item['infNFe']['Id'] = chave_nfe item['infNFe']['ide']['cDV'] = chave_nfe[len(chave_nfe) - 1:]
def test_geracao_chave(self): chave = ChaveNFe(**self.kwargs) str_chave = gerar_chave(chave) chave_correta = '52060433009911002506550120000007800267301615' self.assertEqual(str_chave, chave_correta, "Geração de chave nf-e incorreta") str_chave = gerar_chave(chave, prefix='NFe') chave_correta = 'NFe52060433009911002506550120000007800267301615' self.assertEqual(str_chave, chave_correta, "Geração de chave nf-e com prefixo incorreta") self.assertRaises(Exception, gerar_chave, "Not a ChaveNFe object") self.assertRaises(Exception, gerar_chave, "Not a ChaveNFe object")
def action_post_validate(self): super(InvoiceEletronic, self).action_post_validate() for item in self: chave_dict = { 'cnpj': re.sub('[^0-9]', '', item.company_id.cnpj_cpf), 'estado': item.company_id.state_id.ibge_code, 'emissao': item.data_emissao[2:4] + item.data_emissao[5:7], 'modelo': item.model, 'numero': item.numero, 'serie': item.serie.code.zfill(3), 'tipo': 0 if item.tipo_operacao == 'entrada' else 1, 'codigo': item.numero_controle } item.chave_nfe = gerar_chave(ChaveNFe(**chave_dict))
def action_post_validate(self): super(InvoiceEletronic, self).action_post_validate() if self.model not in ('55', '65'): return for item in self: chave_dict = { 'cnpj': re.sub('[^0-9]', '', item.company_id.cnpj_cpf), 'estado': item.company_id.state_id.ibge_code, 'emissao': item.data_emissao[2:4] + item.data_emissao[5:7], 'modelo': item.model, 'numero': item.numero, 'serie': item.serie.code.zfill(3), 'tipo': int(item.tipo_emissao), 'codigo': "%08d" % item.numero_controle } item.chave_nfe = gerar_chave(ChaveNFe(**chave_dict))
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 _generate_nfe_id(**kwargs): for item in kwargs["NFes"]: vals = { "cnpj": item["infNFe"]["emit"]["cnpj_cpf"], "estado": item["infNFe"]["ide"]["cUF"], "emissao": "%s%s" % ( item["infNFe"]["ide"]["dhEmi"][2:4], item["infNFe"]["ide"]["dhEmi"][5:7], ), "modelo": item["infNFe"]["ide"]["mod"], "serie": item["infNFe"]["ide"]["serie"], "numero": item["infNFe"]["ide"]["nNF"], "tipo": item["infNFe"]["ide"]["tpEmis"], "codigo": item["infNFe"]["ide"]["cNF"], } chave_nfe = ChaveNFe(**vals) chave_nfe = gerar_chave(chave_nfe, "NFe") item["infNFe"]["Id"] = chave_nfe item["infNFe"]["ide"]["cDV"] = chave_nfe[len(chave_nfe) - 1 :]
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, })
def test_chave_nfe(self): chave = ChaveNFe(**self.kwargs) with self.assertRaises(AssertionError) as cm: chave.cnpj = '' chave.validar() chave.cnpj = '1234567891011' self.assertEqual('CNPJ necessário para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta') with self.assertRaises(AssertionError) as cm: chave.estado = '' chave.validar() chave.estado = '42' self.assertEqual('Estado necessário para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta') with self.assertRaises(AssertionError) as cm: chave.emissao = '' chave.validar() chave.emissao = '0' self.assertEqual('Emissão necessário para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta') with self.assertRaises(AssertionError) as cm: chave.modelo = '' chave.validar() chave.modelo = '55' self.assertEqual('Modelo necessário para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta') with self.assertRaises(AssertionError) as cm: chave.serie = '' chave.validar() chave.serie = '012' self.assertEqual('Série necessária para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta') with self.assertRaises(AssertionError) as cm: chave.numero = '' chave.validar() chave.numero = '000000780' self.assertEqual('Número necessário para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta') with self.assertRaises(AssertionError) as cm: chave.tipo = '' chave.validar() chave.tipo = '42' self.assertEqual('Tipo necessário para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta') with self.assertRaises(AssertionError) as cm: chave.codigo = '' chave.validar() self.assertEqual('Código necessário para criar chave NF-e', str(cm.exception), 'Validação da chave nf-e incorreta')
def test_chave_nfe(self): chave = ChaveNFe(**self.kwargs) with self.assertRaises(AssertionError) as cm: chave.cnpj = "" chave.validar() chave.cnpj = "1234567891011" self.assertEqual( "CNPJ necessário para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", ) with self.assertRaises(AssertionError) as cm: chave.estado = "" chave.validar() chave.estado = "42" self.assertEqual( "Estado necessário para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", ) with self.assertRaises(AssertionError) as cm: chave.emissao = "" chave.validar() chave.emissao = "0" self.assertEqual( "Emissão necessário para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", ) with self.assertRaises(AssertionError) as cm: chave.modelo = "" chave.validar() chave.modelo = "55" self.assertEqual( "Modelo necessário para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", ) with self.assertRaises(AssertionError) as cm: chave.serie = "" chave.validar() chave.serie = "012" self.assertEqual( "Série necessária para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", ) with self.assertRaises(AssertionError) as cm: chave.numero = "" chave.validar() chave.numero = "000000780" self.assertEqual( "Número necessário para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", ) with self.assertRaises(AssertionError) as cm: chave.tipo = "" chave.validar() chave.tipo = "42" self.assertEqual( "Tipo necessário para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", ) with self.assertRaises(AssertionError) as cm: chave.codigo = "" chave.validar() self.assertEqual( "Código necessário para criar chave NF-e", str(cm.exception), "Validação da chave nf-e incorreta", )