Exemplo n.º 1
0
def criar_exclusao(request, hash):
    from emensageriapro.settings import BASE_DIR
    db_slug = 'default'
    dict_hash = get_hash_url(hash)
    s2410_evtcdbenin_id = int(dict_hash['id'])
    if s2410_evtcdbenin_id:
        s2410_evtcdbenin = get_object_or_404(s2410evtCdBenIn.objects.using(db_slug), excluido=False,
                                                    id=s2410_evtcdbenin_id)
        arquivo = 'arquivos/Eventos/s2410_evtcdbenin/%s.xml' % s2410_evtcdbenin.identidade
        if not os.path.exists(BASE_DIR + '/' + arquivo):
            xml = gerar_xml_assinado(s2410_evtcdbenin_id, db_slug)
        texto = ler_arquivo('arquivos/Eventos/s2410_evtcdbenin/%s.xml' % s2410_evtcdbenin.identidade)
        texto = texto.replace('<inclusao>','<exclusao>').replace('</inclusao>','</exclusao>')
        texto = texto.replace('<alteracao>','<exclusao>').replace('</alteracao>','</exclusao>')
        salvar_arquivo('arquivos/Eventos/s2410_evtcdbenin/%s_exclusao_temp.xml' % s2410_evtcdbenin.identidade, texto)
        from emensageriapro.funcoes_importacao import importar_arquivo
        dados = importar_arquivo('arquivos/Eventos/s2410_evtcdbenin/%s_exclusao_temp.xml' % s2410_evtcdbenin.identidade, request)
        from emensageriapro.esocial.views.s2410_evtcdbenin import identidade_evento
        dent = identidade_evento(dados['identidade'], db_slug)
        s2410evtCdBenIn.objects.using(db_slug).filter(id=dados['identidade']).update(status=0, arquivo_original=0, arquivo='')
        usuario_id = request.session['usuario_id']
        gravar_auditoria(u'{}', u'{"funcao": "Evento de exclusão de identidade %s criado a partir da duplicação do evento %s"}' % (dent, s2410_evtcdbenin.identidade),
            's2410_evtcdbenin', dados['identidade'], usuario_id, 1)
        messages.success(request, 'Evento de exclusão criado com sucesso!')
        url_hash = base64.urlsafe_b64encode( '{"print": "0", "id": "%s"}' % dados['identidade'] )
        return redirect('s2410_evtcdbenin_salvar', hash=url_hash)
    messages.error(request, 'Erro ao criar evento de exclusão!')
    return redirect(request.session['retorno_pagina'], hash=request.session['retorno_hash'])
def duplicar(request, hash):
    from emensageriapro.settings import BASE_DIR
    db_slug = 'default'
    dict_hash = get_hash_url(hash)
    s2241_evtinsapo_id = int(dict_hash['id'])
    if s2241_evtinsapo_id:
        s2241_evtinsapo = get_object_or_404(s2241evtInsApo.objects.using(db_slug), excluido=False,
                                                    id=s2241_evtinsapo_id)

        arquivo = 'arquivos/Eventos/s2241_evtinsapo/%s.xml' % s2241_evtinsapo.identidade
        if not os.path.exists(BASE_DIR + '/' + arquivo):
            xml = gerar_xml_assinado(s2241_evtinsapo_id, db_slug)
   
        texto = ler_arquivo('arquivos/Eventos/s2241_evtinsapo/%s.xml' % s2241_evtinsapo.identidade)
        salvar_arquivo('arquivos/Eventos/s2241_evtinsapo/%s_duplicado_temp.xml' % s2241_evtinsapo.identidade, texto)
        from emensageriapro.funcoes_importacao import importar_arquivo
        dados = importar_arquivo('arquivos/Eventos/s2241_evtinsapo/%s_duplicado_temp.xml' % s2241_evtinsapo.identidade, request)
        from emensageriapro.esocial.views.s2241_evtinsapo import identidade_evento
        dent = identidade_evento(dados['identidade'], db_slug)
        s2241evtInsApo.objects.using(db_slug).filter(id=dados['identidade']).update(status=0, arquivo_original=0, arquivo='')
        messages.success(request, 'Evento duplicado com sucesso! Foi criado uma nova identidade para este evento!')
        url_hash = base64.urlsafe_b64encode( '{"print": "0", "id": "%s"}' % dados['identidade'] )
        usuario_id = request.user.id
        gravar_auditoria(u'{}', u'{"funcao": "Evento de identidade %s criado a partir da duplicação do evento %s"}' % (dent, s2241_evtinsapo.identidade),
            's2241_evtinsapo', dados['identidade'], usuario_id, 1)
        return redirect('s2241_evtinsapo_salvar', hash=url_hash)
    messages.error(request, 'Erro ao duplicar evento!')
    return redirect(request.session['retorno_pagina'], hash=request.session['retorno_hash'])
def criar_alteracao(request, hash):
    from emensageriapro.settings import BASE_DIR
    db_slug = 'default'
    dict_hash = get_hash_url(hash)
    r2040_evtassocdesprep_id = int(dict_hash['id'])
    if r2040_evtassocdesprep_id:
        r2040_evtassocdesprep = get_object_or_404(r2040evtAssocDespRep.objects.using(db_slug), excluido=False,
                                                    id=r2040_evtassocdesprep_id)
        arquivo = 'arquivos/Eventos/r2040_evtassocdesprep/%s.xml' % r2040_evtassocdesprep.identidade
        if not os.path.exists(BASE_DIR + '/' + arquivo):
            xml = gerar_xml_assinado(r2040_evtassocdesprep_id, db_slug)
        texto = ler_arquivo('arquivos/Eventos/r2040_evtassocdesprep/%s.xml' % r2040_evtassocdesprep.identidade)
        texto = texto.replace('<inclusao>','<alteracao>').replace('</inclusao>','</alteracao>')
        salvar_arquivo('arquivos/Eventos/r2040_evtassocdesprep/%s_alteracao_temp.xml' % r2040_evtassocdesprep.identidade, texto)
        from emensageriapro.funcoes_importacao import importar_arquivo
        dados = importar_arquivo('arquivos/Eventos/r2040_evtassocdesprep/%s_alteracao_temp.xml' % r2040_evtassocdesprep.identidade, request)
        from emensageriapro.efdreinf.views.r2040_evtassocdesprep import identidade_evento
        dent = identidade_evento(dados['identidade'], db_slug)
        r2040evtAssocDespRep.objects.using(db_slug).filter(id=dados['identidade']).update(status=0, arquivo_original=0, arquivo='')
        usuario_id = request.user.id
        gravar_auditoria(u'{}', u'{"funcao": "Evento de de alteração de identidade %s criado a partir da duplicação do evento %s"}' % (dent, r2040_evtassocdesprep.identidade), 
            'r2040_evtassocdesprep', dados['identidade'], usuario_id, 1)
        messages.success(request, 'Evento de alteração criado com sucesso!')
        url_hash = base64.urlsafe_b64encode( '{"print": "0", "id": "%s"}' % dados['identidade'] )
        return redirect('r2040_evtassocdesprep_salvar', hash=url_hash)
    messages.error(request, 'Erro ao criar evento de alteração!')
    return redirect(request.session['retorno_pagina'], hash=request.session['retorno_hash'])
Exemplo n.º 4
0
def arquivos_recuperacao(request, hash):
    db_slug = 'default'
    try:
        usuario_id = request.user.id
        dict_hash = get_hash_url(hash)
        arquivos_id = int(dict_hash['id'])
        for_print = int(dict_hash['print'])
    except:
        usuario_id = False
        return redirect('login')
    usuario = get_object_or_404(Usuarios.objects.using(db_slug),
                                excluido=False,
                                id=usuario_id)
    pagina = ConfigPaginas.objects.using(db_slug).get(excluido=False,
                                                      endereco='arquivos')
    permissao = ConfigPermissoes.objects.using(db_slug).get(
        excluido=False,
        config_paginas=pagina,
        config_perfis=usuario.config_perfis)

    dict_permissoes = json_to_dict(usuario.config_perfis.permissoes)
    paginas_permitidas_lista = usuario.config_perfis.paginas_permitidas
    modulos_permitidos_lista = usuario.config_perfis.modulos_permitidos

    arquivos = get_object_or_404(Arquivos.objects.using(db_slug),
                                 excluido=False,
                                 id=arquivos_id)
    from emensageriapro.settings import BASE_DIR
    from emensageriapro.funcoes_importacao import importar_arquivo
    if arquivos.permite_recuperacao:
        dados = importar_arquivo(arquivos.arquivo, request, 0)
        if dados:
            messages.warning(
                request,
                'Arquivo recuperado com sucesso! Por gentileza confira todo o conteúdo do mesmo, pois este processo não passou por validação'
            )
        else:
            messages.error(
                request,
                'Arquivo não pode ser recuperado pois já existe um arquivo com a mesma identidade cadastrado!'
            )
    else:
        messages.error(request, 'Este arquivo não permite ser recuperado!')
    atualizar_versao()
    return redirect('arquivos', hash=request.session['retorno_hash'])
def scripts_processar_arquivos(request):
    #atualizar_importador()
    import os
    from emensageriapro.settings import BASE_DIR
    from emensageriapro.funcoes_importacao import importar_arquivo, get_identidade_evento, get_versao_evento
    from emensageriapro.funcoes_validacoes import VERSAO_ATUAL
    db_slug = 'default'


    for_print = 0
    executar_sql("""
    UPDATE public.importacao_arquivos_eventos
       SET excluido=True
     WHERE importacao_arquivos_id IN (SELECT id FROM importacao_arquivos WHERE excluido=True);""", False)

    arquivos = ImportacaoArquivosEventos.objects.using( db_slug ).filter(excluido = False, status=0).exclude(id=0).all()

    for arquivo in arquivos:
        error_list = []

        ident = str(arquivo.id)
        while len(ident) < 10: ident = '0' + ident
        filename = arquivo.arquivo
        dados_eventos = {}
        import os.path
        if os.path.isfile(BASE_DIR+'/'+filename):
            dados_eventos['identidade_evento'] = get_identidade_evento(ler_arquivo(filename))
            dados_eventos['versao'] = get_versao_evento(ler_arquivo(filename))
            existe_identidade = executar_sql(
                "SELECT count(*) FROM public.transmissor_eventos_esocial WHERE identidade='%s'" % dados_eventos['identidade_evento'], True)
            existe_identidade = existe_identidade[0][0]

            if existe_identidade:
                dados_eventos['status'] = 5
                error_list = ['Não é possível importar o evento pois o ID já existe em nossa base!']
                origem = BASE_DIR + '/' + arquivo.arquivo
                destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__')
                os.system('mv %s %s' % (origem, destino))
                dados_eventos['arquivo'] = arquivo.arquivo.replace('/aguardando/', '/erro/'+ ident + '__')
                ia_id = arquivo.importacao_arquivos_id
                gravar_nome_arquivo(dados_eventos['arquivo'], 1)

            elif dados_eventos['versao'] in VERSAO_ATUAL:
                quant_erros, error_list = validar_arquivo(filename, request, lang='pt')
                if not quant_erros or (quant_erros == 1 and 'Signature' in str(error_list) ):
                    dados_importacao = importar_arquivo(filename, request, 1)
                    #dados_eventos['evento'] = dados_eventos['tabela']
                    #del dados_eventos['tabela']
                    dados_eventos['evento'] = dados_importacao['tabela']
                    dados_eventos['status'] = 1
                    origem = BASE_DIR + '/' + arquivo.arquivo
                    destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/processado/' + ident + '__')
                    os.system('mv %s %s' % (origem, destino))
                    dados_eventos['arquivo'] = '/' + arquivo.arquivo.replace('/aguardando/', '/processado/' + ident + '__')
                    atualizar_arquivo_tabela(dados_eventos['evento'], dados_importacao['identidade'], dados_eventos['arquivo'], arquivo.id)
                    gravar_nome_arquivo(dados_eventos['arquivo'], 1)
                else:
                    #dados_eventos['evento'] = dados_eventos['tabela']
                    #del dados_eventos['tabela']
                    dados_eventos['status'] = 2
                    origem = BASE_DIR + '/' + arquivo.arquivo
                    destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__')
                    os.system('mv %s %s' % (origem, destino))
                    dados_eventos['arquivo'] = arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__')
                    gravar_nome_arquivo(dados_eventos['arquivo'], 1)

            else:
                dados_eventos['status'] = 2
                error_list = ['Versão do evento incompatível!']
                origem = BASE_DIR + '/' + arquivo.arquivo
                destino = BASE_DIR + '/' + arquivo.arquivo.replace('/aguardando/', '/erro/' + ident + '__')
                os.system('mv %s %s' % (origem, destino))
                dados_eventos['arquivo'] = arquivo.arquivo.replace('/aguardando/', '/erro/'+ ident + '__')
                ia_id = arquivo.importacao_arquivos_id
                gravar_nome_arquivo(dados_eventos['arquivo'], 1)
        else:
            dados_eventos['status'] = 2
            error_list = ['Arquivo não encontrado!']

        dados_eventos['validacoes'] = '<br>'.join(error_list)
        dados_eventos['criado_em'] = datetime.datetime.now()
        dados_eventos['criado_por_id'] = 1
        dados_eventos['excluido'] = False
        ImportacaoArquivosEventos.objects.using(db_slug).filter(id=arquivo.id).update(**dados_eventos)
        ia_id = arquivo.importacao_arquivos_id
        atualizar_importador()
    return HttpResponse('')
Exemplo n.º 6
0
def scripts_validacao_automatica(request):
    import os
    from emensageriapro.settings import BASE_DIR
    from emensageriapro.padrao import executar_sql
    for_print = 0
    executar_sql(
        """
    UPDATE public.importacao_arquivos_eventos
       SET excluido=True
     WHERE importacao_arquivos_id IN (SELECT id FROM importacao_arquivos WHERE excluido=True) ;

    """, False)
    db_slug = 'default'
    arquivos = ImportacaoArquivosEventos.objects.using(db_slug).filter(
        excluido=False, status=0).exclude(id=0).all()
    for arquivo in arquivos:
        filename = arquivo.arquivo

        arq_compl = filename
        from emensageriapro.funcoes_importacao import validar_arquivo, importar_arquivo
        dados_eventos = {}
        dados_eventos, request, quant_erros, error_list = validar_arquivo(
            filename, request, lang='pt')
        if not error_list:
            dados_eventos = importar_arquivo(filename, request, 1)
        if not dados_eventos:
            dados_eventos = {}
            dados_eventos['status'] = 5
            dados_eventos['validacoes'] = 'Evento já existe em nossa base!'
            dados_eventos['criado_em'] = datetime.datetime.now()
            dados_eventos['criado_por_id'] = 1
            dados_eventos['excluido'] = False
            ImportacaoArquivosEventos.objects.using(db_slug).filter(
                id=arquivo.id).update(**dados_eventos)
            from emensageriapro.padrao import executar_sql
            ia_id = arquivo.importacao_arquivos_id
            executar_sql(
                """
                UPDATE public.importacao_arquivos SET
                quant_aquardando = (
                SELECT count(*) FROM public.importacao_arquivos_eventos e
                WHERE e.importacao_arquivos_id=%s AND e.status=0),
                quant_error = (
                SELECT count(*) FROM public.importacao_arquivos_eventos e
                WHERE e.importacao_arquivos_id=%s AND e.status in (2,5)),
                quant_processado = (
                SELECT count(*) FROM public.importacao_arquivos_eventos e
                WHERE e.importacao_arquivos_id=%s AND e.status=1)
                WHERE id=%s
            """ % (ia_id, ia_id, ia_id, ia_id), False)

        else:
            if error_list:
                dados_eventos['status'] = 2
            else:
                dados_eventos['status'] = 4
            dados_eventos['validacoes'] = '<br>'.join(error_list)
            dados_eventos['criado_em'] = datetime.datetime.now()
            dados_eventos['criado_por_id'] = 1
            dados_eventos['excluido'] = False
            print dados_eventos
            ImportacaoArquivosEventos.objects.using(db_slug).filter(
                id=arquivo.id).update(**dados_eventos)
            from emensageriapro.padrao import executar_sql
            ia_id = arquivo.importacao_arquivos_id
            executar_sql(
                """
                UPDATE public.importacao_arquivos SET
                quant_aquardando = (
                SELECT count(*) FROM public.importacao_arquivos_eventos e
                WHERE e.importacao_arquivos_id=%s AND e.status=0),
                quant_error = (
                SELECT count(*) FROM public.importacao_arquivos_eventos e
                WHERE e.importacao_arquivos_id=%s AND e.status in (2,5) ),
                quant_processado = (
                SELECT count(*) FROM public.importacao_arquivos_eventos e
                WHERE e.importacao_arquivos_id=%s AND e.status=1)
                WHERE id=%s
            """ % (ia_id, ia_id, ia_id, ia_id), False)
    arquivos = ImportacaoArquivosEventos.objects.using(db_slug).filter(
        excluido=False).exclude(id=0).all()
    for arquivo in arquivos:
        if arquivo.status in [2, 5]:
            for arquivo in arquivos:
                origem = BASE_DIR + '/' + arquivo.arquivo
                destino = BASE_DIR + '/' + arquivo.arquivo.replace(
                    '/aguardando/', '/erro/')
                print 'mv %s %s' % (origem, destino)
                os.system('mv %s %s' % (origem, destino))
                dados = {}
                dados['arquivo'] = arquivo.arquivo.replace(
                    '/aguardando/', '/erro/')
                ImportacaoArquivosEventos.objects.using(db_slug).filter(
                    id=arquivo.id).update(**dados)
        elif arquivo.status == 1:
            for arquivo in arquivos:
                origem = BASE_DIR + '/' + arquivo.arquivo
                destino = BASE_DIR + '/' + arquivo.arquivo.replace(
                    '/aguardando/', '/processado/')
                print 'mv %s %s' % (origem, destino)
                os.system('mv %s %s' % (origem, destino))
                dados = {}
                dados['arquivo'] = arquivo.arquivo.replace(
                    '/aguardando/', '/processado/')
                ImportacaoArquivosEventos.objects.using(db_slug).filter(
                    id=arquivo.id).update(**dados)

    return HttpResponse('')