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
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
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