Exemplo n.º 1
0
def validar_evento_funcao(s2410_evtcdbenin_id, db_slug):
    from emensageriapro.padrao import executar_sql
    from emensageriapro.funcoes_importacao import get_versao_evento
    from emensageriapro.funcoes_validacoes_precedencia import validar_precedencia
    from emensageriapro.funcoes_validacoes import get_schema_name, validar_schema
    from emensageriapro.settings import BASE_DIR
    lista_validacoes = []
    s2410_evtcdbenin = get_object_or_404(s2410evtCdBenIn.objects.using(db_slug), excluido=False, id=s2410_evtcdbenin_id)
    quant = validar_precedencia('esocial', 's2410_evtcdbenin', s2410_evtcdbenin_id)
    if quant <= 0:
        #lista_validacoes.append('Precedência não foi enviada!')
        precedencia = 0
    else:
        precedencia = 1
    executar_sql("UPDATE public.s2410_evtcdbenin SET validacao_precedencia=%s WHERE id=%s;" % (precedencia, s2410_evtcdbenin_id), False)
    #
    # Validações internas
    #
    arquivo = 'arquivos/Eventos/s2410_evtcdbenin/%s.xml' % (s2410_evtcdbenin.identidade)
    os.system('mkdir -p %s/arquivos/Eventos/s2410_evtcdbenin/' % BASE_DIR)
    lista = []
    tipo = 'esocial'
    if not os.path.exists(BASE_DIR + '/' + arquivo):
        gerar_xml_assinado(s2410_evtcdbenin_id, db_slug)
    if os.path.exists(BASE_DIR + '/' + arquivo):
        texto_xml = ler_arquivo(arquivo).replace("s:", "")
        versao = get_versao_evento(texto_xml)
        if tipo == 'esocial':
            if versao == 'v02_04_02':
                from emensageriapro.esocial.validacoes.v02_04_02.s2410_evtcdbenin import validacoes_s2410_evtcdbenin
                lista = validacoes_s2410_evtcdbenin(arquivo)
        elif tipo == 'efdreinf':
            if versao == 'v1_03_02':
                from emensageriapro.efdreinf.validacoes.v1_03_02.s2410_evtcdbenin import validacoes_s2410_evtcdbenin
                lista = validacoes_s2410_evtcdbenin(arquivo)
    for a in lista:
        if a:
            lista_validacoes.append(a)
    #
    # validando schema
    #
    schema_filename = get_schema_name(arquivo)
    quant_erros, error_list = validar_schema(schema_filename, arquivo, lang='pt')
    for a in error_list:
        if a:
            lista_validacoes.append(a)
    #
    #
    #
    if lista_validacoes:
        executar_sql("UPDATE public.s2410_evtcdbenin SET validacoes='%s', status=3 WHERE id=%s;" % ('<br>'.join(lista_validacoes).replace("'","''"), s2410_evtcdbenin_id), False)
    else:
        executar_sql("UPDATE public.s2410_evtcdbenin SET validacoes='', status=4 WHERE id=%s;" % (s2410_evtcdbenin_id), False)
    return lista_validacoes
def validar_arquivo(arquivo, request, lang=None):
    from emensageriapro.funcoes_validacoes import validar_schema
    from django.contrib import messages
    import untangle
    quant_erros = 0
    error_list = 0
    xml = ler_arquivo(arquivo).replace("s:", "")
    dados = {}
    try:
        doc = untangle.parse(xml)
        dados['status'] = 1
    except:
        messages.error(request, 'Erro na importação. Arquivo XML inválido!')
        dados['status'] = 3
        return dados, request, 1, ['Erro na importação. Arquivo XML inválido!']

    if dados['status'] == 1:
        from emensageriapro.funcoes_validacoes import get_schema_name
        schema_filename = get_schema_name(arquivo)
        quant_erros, error_list = validar_schema(schema_filename, arquivo, lang=lang)
    return quant_erros, error_list