def create_request(dados, transmissor_dados): from emensageriapro.mensageiro.functions.funcoes import salvar_arquivo_esocial, ler_arquivo if dados['service'] == 'WsEnviarLoteEventos': xml = u'' eventos = TransmissorEventosEsocial.objects.\ filter(transmissor_lote_esocial_id=dados['transmissor_id'], status=STATUS_EVENTO_AGUARD_ENVIO).all() dados_evento = {} for e in eventos: dados_evento['evento'] = e.evento dados_evento['id'] = e.id dados_evento['identidade'] = e.identidade dados_evento['grupo'] = e.grupo dados_evento['tabela'] = e.tabela dados_evento[ 'empregador_tpinsc'] = e.transmissor_lote_esocial.empregador_tpinsc dados_evento['empregador_nrinsc'] = retirar_pontuacao_cpf_cnpj( e.transmissor_lote_esocial.empregador_nrinsc) dados_evento[ 'transmissor_tpinsc'] = e.transmissor_lote_esocial.transmissor.transmissor_tpinsc dados_evento['transmissor_nrinsc'] = retirar_pontuacao_cpf_cnpj( e.transmissor_lote_esocial.transmissor.transmissor_nrinsc) xml += '<evento Id="%s">' % e.identidade xml += ler_arquivo( '/arquivos/Eventos/%(tabela)s/%(identidade)s.xml' % dados_evento) xml += '</evento>' base_request = REQUEST_ENVIA_LOTE % dados_evento elif dados['service'] == 'WsConsultarLoteEventos': a = TransmissorLoteEsocial.objects.\ get(id=dados['transmissor_id']) xml = BASE_XML_CONSULTA_LOTE % a.protocolo base_request = REQUEST_CONSULTA_LOTE % transmissor_dados text = base_request.replace( '<!--You may enter ANY elements at this point-->', xml) salvar_arquivo_esocial(dados['request'], text, 0)
def gerar_xml_assinado(request, pk): from emensageriapro.settings import BASE_DIR from emensageriapro.mensageiro.functions.funcoes import salvar_arquivo_esocial from emensageriapro.mensageiro.functions.funcoes_esocial import assinar_esocial s1010_evttabrubrica = get_object_or_404(s1010evtTabRubrica, id=pk) if not s1010_evttabrubrica.identidade: from emensageriapro.functions import identidade_evento ident = identidade_evento(s1010_evttabrubrica, 'esocial') s1010_evttabrubrica = get_object_or_404(s1010evtTabRubrica, id=pk) if s1010_evttabrubrica.arquivo_original: xml = ler_arquivo(s1010_evttabrubrica.arquivo) else: xml = gerar_xml_s1010(request, pk) STATUS_ANT = [ STATUS_EVENTO_CADASTRADO, STATUS_EVENTO_IMPORTADO, STATUS_EVENTO_DUPLICADO, STATUS_EVENTO_GERADO ] if 'Signature' in xml and s1010_evttabrubrica.status in STATUS_ANT: xml_assinado = xml s1010evtTabRubrica.objects.\ filter(id=pk).update(status=STATUS_EVENTO_ASSINADO) else: if not s1010_evttabrubrica.transmissor_lote_esocial: from emensageriapro.mapa_processamento.views.funcoes_automaticas_esocial \ import vincular_transmissor_esocial, criar_transmissor_esocial, get_grupo grupo = get_grupo(s1010evtTabRubrica) criar_transmissor_esocial(request, grupo, s1010_evttabrubrica.nrinsc, s1010_evttabrubrica.tpinsc) vincular_transmissor_esocial(request, grupo, s1010evtTabRubrica, s1010_evttabrubrica) s1010_evttabrubrica = get_object_or_404(s1010evtTabRubrica, id=pk) xml_assinado = assinar_esocial( request, xml, s1010_evttabrubrica.transmissor_lote_esocial_id) if 'Signature' in xml_assinado and s1010_evttabrubrica.status in STATUS_ANT: s1010evtTabRubrica.objects.\ filter(id=pk).update(status=STATUS_EVENTO_ASSINADO) elif s1000evtInfoEmpregador.status in STATUS_ANT: s1010evtTabRubrica.objects.\ filter(id=pk).update(status=STATUS_EVENTO_GERADO) arquivo = '/arquivos/Eventos/s1010_evttabrubrica/%s.xml' % ( s1010_evttabrubrica.identidade) os.system('mkdir -p %s/arquivos/Eventos/s1010_evttabrubrica/' % BASE_DIR) if not os.path.exists(BASE_DIR + arquivo): salvar_arquivo_esocial(arquivo, xml_assinado, 1) xml_assinado = ler_arquivo(arquivo) return xml_assinado