def processa_fma(session, fma: dict): ovr = session.query(OVR).filter(OVR.numero == fma['Numero_FMA']).filter( OVR.recinto_id == int(fma['Cod_Recinto'])).filter( OVR.ano == fma['Ano_FMA']).first() if ovr is not None: logger.info('FMA %s - %s já existente, pulando... ' % (fma['Cod_Recinto'], fma['Numero_FMA'])) return ovr = OVR() ovr.numero = fma['Numero_FMA'] ovr.ano = fma['Ano_FMA'] try: ovr.datahora = datetime.strptime(fma['Data_Emissao'], '%Y-%m-%d') except Exception as err: print(err) ovr.datahora = datetime.now() try: ovr.dataentrada = datetime.strptime(fma['Data_Entrada_Recinto'], '%Y-%m-%d') except Exception as err: print(err) ovr.dataentrada = ovr.datahora - timedelta(days=90) ovr.recinto_id = int(fma['Cod_Recinto']) ovr.setor_id = 4 # EQMAB ovr.numeroCEmercante = fma['CE_Mercante'] try: conhecimento = get_conhecimento(session, ovr.numeroCEmercante) if conhecimento: ovr.cnpj_fiscalizado = conhecimento.consignatario except Exception as err: logger.error(str(err), exc_info=True) ovr.tipooperacao = 0 ovr.fase = 0 ovr.tipoevento_id = 30 try: session.add(ovr) logger.info('Inserindo OVR Recinto %s Numero %s ' % (fma['Cod_Recinto'], fma['Numero_FMA'])) session.commit() except Exception as err: print(err) session.rollback()
def processa_dirs(): listadir = os.listdir(RAIZ) # print(listadir) validos = 0 invalidos = 0 for arq in listadir: if arq[:2] == 'TG': # print(caminho) caminho_tgs = os.path.join(RAIZ, arq) for subarq in sorted(os.listdir(caminho_tgs)): caminho_tg = os.path.join(caminho_tgs, subarq) if os.path.isdir(caminho_tg): pdf = pegaarquivo_dirTG(caminho_tg, ['pdf'], 'CE') planilha = pegaarquivo_dirTG(caminho_tg, ['ods', 'xls', 'xlsx']) print(caminho_tg, pdf, planilha) if not pdf: continue ce = '' ce, cnpj = processa_PDF_CE(os.path.join(caminho_tg, pdf)) print(ce, cnpj) if not ce.isnumeric(): print(f'Erro para processar CE no caminho: {caminho_tg} CE: {ce}') invalidos += 1 ce = f'Inválido {invalidos}' # Cria Ficha e TG tgovr = db_session.query(TGOVR).filter(TGOVR.numerolote == ce).one_or_none() if not tgovr: ovr = db_session.query(OVR).filter(OVR.numeroCEmercante == ce). \ one_or_none() if not ovr: ovr = OVR() ovr.numeroCEmercante = ce ovr.cnpj_fiscalizado = ''.join([s for s in cnpj if s.isnumeric()]) db_session.add(ovr) create_time = datetime.fromtimestamp(os.path.getmtime( os.path.join(caminho_tg, pdf))) ovr.datahora = create_time ovr.create_date = create_time ovr.setor_id = '1' db_session.commit() db_session.refresh(ovr) tgovr = TGOVR() tgovr.ovr_id = ovr.id tgovr.numerolote = ce create_time = datetime.fromtimestamp(os.path.getmtime( os.path.join(caminho_tg, planilha))) tgovr.create_date = create_time tgovr.descricao = 'Importado automaticamente' db_session.add(tgovr) db_session.commit() db_session.refresh(tgovr) if len(tgovr.itenstg) > 0: print(f'Pulando TG {tgovr.id} OVR {tgovr.ovr_id} porque já possui itens') continue if planilha: alertas = importa_planilha_tg(db_session, tgovr, os.path.join(caminho_tg, planilha)) if alertas: print(alertas) invalidos += 1 else: print(f'Criou ItensTG no OVR id {tgovr.ovr_id}') validos += 1 print(validos, invalidos)