示例#1
0
def validar_arquivo(request, arquivo, lang=None):

    from emensageriapro.mensageiro.functions.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 1, ['Erro na importação. Arquivo XML inválido!']

    if dados['status'] == 1:

        from emensageriapro.mensageiro.functions.funcoes_validacoes import get_schema_name
        schema_filename = get_schema_name(arquivo)
        quant_erros, error_list = validar_schema(request, schema_filename, arquivo, lang=lang)

    return quant_erros, error_list
def validar_evento_funcao(s2220_evtmonit_id, db_slug):
    from emensageriapro.padrao import executar_sql
    from emensageriapro.mensageiro.functions.funcoes_importacao import get_versao_evento
    from emensageriapro.mensageiro.functions.funcoes_validacoes_precedencia import validar_precedencia
    from emensageriapro.mensageiro.functions.funcoes_validacoes import get_schema_name, validar_schema
    from emensageriapro.settings import BASE_DIR
    lista_validacoes = []
    s2220_evtmonit = get_object_or_404(s2220evtMonit.objects.using(db_slug),
                                       excluido=False,
                                       id=s2220_evtmonit_id)
    if s2220_evtmonit.transmissor_lote_esocial:
        if s2220_evtmonit.transmissor_lote_esocial.transmissor:
            if s2220_evtmonit.transmissor_lote_esocial.transmissor.verificar_predecessao:
                quant = validar_precedencia('esocial', 's2220_evtmonit',
                                            s2220_evtmonit_id)
                if quant <= 0:
                    lista_validacoes.append(u'Precedência não foi enviada!')
                    precedencia = 0
                else:
                    precedencia = 1
            else:
                precedencia = 1
        else:
            lista_validacoes.append(
                u'Precedência não pode ser verificada. Vincule um transmissor para que este evento possa ser validado!'
            )
            precedencia = 0
    else:
        lista_validacoes.append(
            u'Precedência não pode ser verificada. Cadastre um transmissor para este evento para que possa ser validado!'
        )
        precedencia = 0

    s2220evtMonit.objects.using( db_slug ).\
        filter(id=s2220_evtmonit_id, excluido = False).\
        update(validacao_precedencia=precedencia)

    #executar_sql("UPDATE public.s2220_evtmonit SET validacao_precedencia=%s WHERE id=%s;" % (precedencia, s2220_evtmonit_id), False)
    #
    # Validações internas
    #
    arquivo = 'arquivos/Eventos/s2220_evtmonit/%s.xml' % (
        s2220_evtmonit.identidade)
    os.system('mkdir -p %s/arquivos/Eventos/s2220_evtmonit/' % BASE_DIR)
    lista = []
    tipo = 'esocial'
    if not os.path.exists(BASE_DIR + '/' + arquivo):
        gerar_xml_assinado(s2220_evtmonit_id, db_slug)
    if os.path.exists(BASE_DIR + '/' + arquivo):
        texto_xml = ler_arquivo(arquivo).replace("s:", "")
        versao = get_versao_evento(texto_xml)
        from emensageriapro.esocial.views.s2220_evtmonit_validar import validacoes_s2220_evtmonit
        lista = validacoes_s2220_evtmonit(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:

        validacoes = '<br>'.join(lista_validacoes).replace("'", "''")

        s2220evtMonit.objects.using( db_slug ).\
            filter(id=s2220_evtmonit_id, excluido = False).\
            update(validacoes=validacoes, status=3)

        #executar_sql("UPDATE public.s2220_evtmonit SET validacoes='%s', status=3 WHERE id=%s;" % ('<br>'.join(lista_validacoes).replace("'","''"), s2220_evtmonit_id), False)

    else:

        s2220evtMonit.objects.using( db_slug ).\
            filter(id=s2220_evtmonit_id, excluido = False).\
            update(validacoes='', status=4)

        #executar_sql("UPDATE public.s2220_evtmonit SET validacoes='', status=4 WHERE id=%s;" % (s2220_evtmonit_id), False)

    return lista_validacoes
示例#3
0
def validar_evento_funcao(request, pk):

    from emensageriapro.padrao import executar_sql
    from emensageriapro.functions import get_versao_evento
    from emensageriapro.settings import BASE_DIR
    from emensageriapro.mensageiro.functions.funcoes_validacoes_precedencia import validar_precedencia
    from emensageriapro.mensageiro.functions.funcoes_validacoes import get_schema_name, validar_schema
    from emensageriapro.esocial.views.s1280_evtinfocomplper_gerar_xml import gerar_xml_assinado

    VERIFICAR_PREDECESSAO_ANTES_ENVIO = config.ESOCIAL_VERIFICAR_PREDECESSAO_ANTES_ENVIO

    lista_validacoes = []
    s1280_evtinfocomplper = get_object_or_404(s1280evtInfoComplPer, id=pk)

    if not s1280_evtinfocomplper.identidade:
        from emensageriapro.functions import identidade_evento
        ident = identidade_evento(s1280_evtinfocomplper, 'esocial')
        s1280_evtinfocomplper = get_object_or_404(s1280evtInfoComplPer, id=pk)

    #
    # Validações internas
    #

    arquivo = '/arquivos/Eventos/s1280_evtinfocomplper/%s.xml' % (s1280_evtinfocomplper.identidade)

    os.system('mkdir -p %s/arquivos/Eventos/s1280_evtinfocomplper/' % BASE_DIR)
    lista = []
    tipo = 'esocial'

    if not os.path.exists(BASE_DIR + arquivo):

        gerar_xml_assinado(request, pk)

    if os.path.exists(BASE_DIR + arquivo):

        from emensageriapro.esocial.views.s1280_evtinfocomplper_validar import validacoes_s1280_evtinfocomplper

        texto_xml = ler_arquivo(arquivo).replace("s:", "")
        versao = get_versao_evento(texto_xml)
        lista = validacoes_s1280_evtinfocomplper(arquivo)

    for a in lista:

        if a:

            lista_validacoes.append(a)

    #
    # validando schema
    #

    schema_filename = 'esocial/%s/evtInfoComplPer.xsd' % (s1280_evtinfocomplper.versao)
    quant_erros, error_list = validar_schema(request, schema_filename, arquivo, lang='pt')

    for a in error_list:

        if a:

            lista_validacoes.append(a)

    #
    #
    #

    if lista_validacoes:

        validacoes = '<br>'.join(lista_validacoes).replace("'", "''")

        s1280evtInfoComplPer.objects.\
            filter(id=pk).\
            update(validacoes=validacoes,
                   status=STATUS_EVENTO_VALIDADO_ERRO)

        messages.error(request,
            u'Validações foram processadas, porém foram encontrados erros!')

    else:

        from emensageriapro.mensageiro.functions.funcoes_validacoes_precedencia import EVENTOS_SEM_PREDECESSAO, validar_precedencia

        if VERIFICAR_PREDECESSAO_ANTES_ENVIO and 's1280_evtinfocomplper' not in EVENTOS_SEM_PREDECESSAO:

            quant = validar_precedencia('s1280_evtinfocomplper', pk)

            if quant <= 0:

                s1280evtInfoComplPer.objects.\
                    filter(id=pk).\
                    update(validacoes=None,
                           status=STATUS_EVENTO_AGUARD_PRECEDENCIA)

                messages.warning(request,
                    u'Validações foram processadas com sucesso, porém o evento está aguardando envio de sua precedência!')

            else:

                s1280evtInfoComplPer.objects.\
                    filter(id=pk).\
                    update(validacoes=None,
                           status=STATUS_EVENTO_AGUARD_ENVIO)

                messages.success(request,
                    u'Validações foram processadas com sucesso, evento está aguardandando envio!')

        else:

            s1280evtInfoComplPer.objects. \
                filter(id=pk).\
                update(validacoes=None,
                       status=STATUS_EVENTO_AGUARD_ENVIO)

            messages.success(request,
                u'Validações foram processadas com sucesso, evento está aguardandando envio!')

    return lista_validacoes
示例#4
0
def validar_evento_funcao(request, pk):

    from emensageriapro.padrao import executar_sql
    from emensageriapro.mensageiro.functions.funcoes_importacao import get_versao_evento
    from emensageriapro.mensageiro.functions.funcoes_validacoes_precedencia import validar_precedencia
    from emensageriapro.mensageiro.functions.funcoes_validacoes import get_schema_name, validar_schema
    from emensageriapro.settings import BASE_DIR
    from emensageriapro.efdreinf.views.r5011_evttotalcontrib_gerar_xml import gerar_xml_assinado
    VERIFICAR_PREDECESSAO_ANTES_ENVIO = config.EFDREINF_VERIFICAR_PREDECESSAO_ANTES_ENVIO

    lista_validacoes = []
    r5011_evttotalcontrib = get_object_or_404(r5011evtTotalContrib, id=pk)

    #
    # Validações internas
    #

    arquivo = 'arquivos/Eventos/r5011_evttotalcontrib/%s.xml' % (
        r5011_evttotalcontrib.identidade)
    os.system('mkdir -p %s/arquivos/Eventos/r5011_evttotalcontrib/' % BASE_DIR)
    lista = []
    tipo = 'efdreinf'

    if not os.path.exists(BASE_DIR + '/' + arquivo):

        gerar_xml_assinado(request, pk)

    if os.path.exists(BASE_DIR + '/' + arquivo):

        from emensageriapro.efdreinf.views.r5011_evttotalcontrib_validar import validacoes_r5011_evttotalcontrib

        texto_xml = ler_arquivo(arquivo).replace("s:", "")
        versao = get_versao_evento(texto_xml)
        lista = validacoes_r5011_evttotalcontrib(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(request,
                                             schema_filename,
                                             arquivo,
                                             lang='pt')

    for a in error_list:

        if a:

            lista_validacoes.append(a)

    #
    #
    #

    if lista_validacoes:

        validacoes = '<br>'.join(lista_validacoes).replace("'", "''")

        r5011evtTotalContrib.objects.\
            filter(id=pk).\
            update(validacoes=validacoes,
                   status=STATUS_EVENTO_VALIDADO_ERRO)

        messages.error(
            request,
            u'Validações foram processadas, porém foram encontrados erros!')

    else:

        if VERIFICAR_PREDECESSAO_ANTES_ENVIO:

            quant = validar_precedencia('efdreinf', 'r5011_evttotalcontrib',
                                        pk)

            if quant <= 0:

                r5011evtTotalContrib.objects.\
                    filter(id=pk).\
                    update(validacoes=None,
                           status=STATUS_EVENTO_AGUARD_PRECEDENCIA)

                messages.warning(
                    request,
                    u'Validações foram processadas com sucesso, porém o evento está aguardando envio de sua precedência!'
                )

            else:

                r5011evtTotalContrib.objects.\
                    filter(id=pk).\
                    update(validacoes=None,
                           status=STATUS_EVENTO_AGUARD_ENVIO)

                messages.success(
                    request,
                    u'Validações foram processadas com sucesso, evento está aguardandando envio!'
                )

        else:

            r5011evtTotalContrib.objects. \
                filter(id=pk).\
                update(validacoes=None,
                       status=STATUS_EVENTO_AGUARD_ENVIO)

            messages.success(
                request,
                u'Validações foram processadas com sucesso, evento está aguardandando envio!'
            )

    return lista_validacoes