Ejemplo n.º 1
0
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)
Ejemplo n.º 2
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