Пример #1
0
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()
Пример #2
0
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)