def xml_inactivate(self, cr, uid, ids, inv, ei_obj, cert_name, context=None): proc_nfe = ProcessadorNFe() proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2 proc_nfe.versao = '3.10' proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code proc_nfe.certificado.senha = inv.company_id.nfe_a1_password proc_nfe.certificado.arquivo = cert_name proc_nfe.salvar_arquivos = False processo = proc_nfe.inutilizar_nota( ambiente=ei_obj['ambiente'], codigo_estado=ei_obj['UF'], ano=ei_obj['ano'], cnpj=ei_obj['CNPJ/CPF'], serie=ei_obj['serie'], numero_inicial=ei_obj['numero_inicial'], numero_final=ei_obj['numero_final'], justificativa=ei_obj['justificativa']) if processo.resposta.infInut.cStat.valor == '102': result = { 'action': 'inactivate', 'message': processo.resposta.infInut.xMotivo.valor, 'ei_status': 'inactive'} else: msg = processo.resposta.infInut.cStat.valor + ' - ' + processo.resposta.xMotivo.valor result = { 'action': 'inactivate', 'message': msg } return result
def xml_send(self, cr, uid, ids, inv, ei_obj, cert_name, context=None): proc_nfe = ProcessadorNFe() proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2 proc_nfe.versao = '3.10' proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code proc_nfe.certificado.senha = inv.company_id.nfe_a1_password proc_nfe.certificado.arquivo = cert_name proc_nfe.salvar_arquivos = False for processo in proc_nfe.processar_notas([ei_obj]): result = { 'action': 'send', 'ei_status': 'failed', 'message': processo.resposta.cStat.valor + '-' + processo.resposta.xMotivo.valor, 'ei_access_key': ei_obj.chave} if processo.webservice == 1: for prot in processo.resposta.protNFe: result['message'] = prot.infProt.cStat.valor + '-' + prot.infProt.xMotivo.valor if prot.infProt.cStat.valor in ('100', '150'): result['ei_protocol'] = prot.infProt.nProt.valor result['ei_status'] = 'confirmed' result['ei_date'] = prot.infProt.dhRecbto.valor result['xml_send'] = ei_obj.xml result['ei_image'] = proc_nfe.danfe.conteudo_pdf result['ei_code'] = inv.internal_number elif processo.resposta.cStat.valor in ('100', '150'): result['ei_status'] = 'confirmed' result['ei_date'] = processo.resposta.protNFe.infProt.dhRecbto.valor result['ei_protocol'] = processo.resposta.protNFe.infProt.nProt.valor result['xml_send'] = ei_obj.xml result['ei_code'] = inv.internal_number return result
def __processo(company): p = ProcessadorNFe() p.ambiente = int(company.nfe_environment) p.estado = company.partner_id.l10n_br_city_id.state_id.code p.certificado.stream_certificado = base64.decodestring(company.nfe_a1_file) p.certificado.senha = company.nfe_a1_password p.salvar_arquivos = False p.contingencia_SCAN = False return p
def xml_cancel(self, cr, uid, ids, inv, ei_obj, cert_name, context=None): proc_nfe = ProcessadorNFe() proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2 proc_nfe.versao = '3.10' proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code proc_nfe.certificado.senha = inv.company_id.nfe_a1_password proc_nfe.certificado.arquivo = cert_name proc_nfe.salvar_arquivos = False processo = proc_nfe.enviar_lote_cancelamento(lista_eventos=[ei_obj]) result = { 'action': 'cancel', 'message': processo.resposta.xMotivo.valor } for prot in processo.resposta.retEvento: result['message'] = prot.infEvento.cStat.valor + '-' + processo.resposta.xMotivo.valor if prot.infEvento.cStat.valor == '135': result.update({'ei_status': 'cancelled'}) return result
def xml_correction_letter(self, cr, uid, ids, inv, ei_obj, cert_name, context=None): proc_nfe = ProcessadorNFe() proc_nfe.ambiente = 1 if inv.company_id.ei_environment == 'production' else 2 proc_nfe.versao = '3.10' proc_nfe.estado = inv.company_id.partner_id.l10n_br_city_id.state_id.code proc_nfe.certificado.senha = inv.company_id.nfe_a1_password proc_nfe.certificado.arquivo = cert_name proc_nfe.salvar_arquivos = False processo = proc_nfe.enviar_lote_cce(lista_eventos=[ei_obj]) if processo.resposta.cStat.valor == '128': result = { 'action': 'correction_letter', 'message': processo.resposta.xMotivo.valor } else: result = { 'action': 'correction_letter', 'message': '%s - %s' % ( processo.resposta.cStat.valor, processo.resposta.xMotivo.valor) } return result