def dates_filter_growth_factor(id_process:int):

    start = moment.now().subtract(years=2,months=3).replace(day=1).format(ff)
    end = moment.now().format(ff)
    log((id_process,INFO, mesagges['ff_cal_fc'].format(start,end)))

    return start, end
def dates_filter_months(id_process:int, dates_search: dict):
    #start = moment.now().subtract(years=2).replace(day=1).format(ff)
    #end = moment.now().format(ff)
    data = pd.DataFrame({'day': [dates_search['start']]})
    data['day'] = pd.to_datetime(data['day'], format="%Y-%m-%d")
    data['day'] = data.\
        day.dt.to_period("W-SUN").apply(lambda x: x.start_time)
    start_week = str(data.loc[0,'day'])
    log((id_process,INFO, mesagges['ff_filter_months'].format(start_week[:10],dates_search['end'])))
    return datetime.strptime(start_week[:10], '%Y-%m-%d'), datetime.strptime(dates_search['end'], '%Y-%m-%d'), int(dates_search['start'][5:7])
def determine_what_to_work_with_local(location_codes: object, id_process:int):
    pd_transactional, dates = transactional(id_location=location_codes.code, id_process=id_process)
    mirror = False
    if pd_transactional.size == 0:
        log((id_process,WAR, mesagges['df_null']))
        log((id_process,INFO, mesagges['location_mirror'].format(location_codes.location_mirror_code)))
        pd_transactional, dates = transactional(id_location=location_codes.location_mirror_code, id_process=id_process)
        pd_transactional['LOCATION_ID'] = location_codes.code
        mirror = True
    #else:
    #    pass

    return pd_transactional, mirror
示例#4
0
def determine_what_to_work_with_local(location_codes: object, id_process: int):
    pd_transactional, dates = transactional(id_location=location_codes.code,
                                            id_process=id_process)
    mirror = False
    if pd_transactional.size == 0:
        log((id_process, WAR, mesagges['df_null']))
        log((id_process, INFO, mesagges['location_mirror'].format(
            location_codes.location_mirror_code)))
        pd_transactional, dates = transactional(
            id_location=location_codes.location_mirror_code,
            id_process=id_process)
        mirror = True
    else:
        for x in range(0, 16):
            start = moment.date(dates[0]).\
                add(months=x).\
                    format(ff)
            end = moment.date(dates[0]).add(months=x).\
                replace(day=calendar.monthrange(int(moment.date(dates[0]).\
                    add(months=x).format(fy)),int(moment.date(dates[0]).\
                        add(months=x).format(fm)))[1]).\
                            format(ff)
            pd_transactional['date'] = pd.to_datetime(
                pd_transactional['TRAN_START_DT'], format="%Y-%m-%d")
            num_register = pd_transactional[
                (pd_transactional['date'] >= start)
                & (pd_transactional['date'] <= end)].size
            print("{}  -  {}  -  {}".format(start, end, num_register))
            if num_register == 0:
                log((id_process, WAR, mesagges['df_null']))
                log((id_process, INFO, mesagges['location_mirror'].format(
                    location_codes.location_mirror_code)))
                pd_transactional, dates = transactional(
                    id_location=location_codes.location_mirror_code,
                    id_process=id_process)
                mirror = True
                break

    return pd_transactional, mirror
示例#5
0
def diary_init(id_process: int, attempts: int, id_location: str):
    logger.info('Procesando agenda con ID:[{}]'.format(id_process))
    log((id_process, INFO, mesagges['pross_scheduling']))

    update_activity_pross(idx=id_process,
                          data={
                              EcontrolOfProcessEndowments.execution_process:
                              True,
                              EcontrolOfProcessEndowments.attempts:
                              (attempts + 1),
                              EcontrolOfProcessEndowments.activity: 2,
                              EcontrolOfProcessEndowments.updated:
                              fn_now_ff_hh()
                          })

    logger.info('Buscando datos transaccionales ID:[{}]'.format(id_process))
    log((id_process, INFO, mesagges['pross_trass']))
    location_codes = get_location_by_id(idx=id_location)
    dates_search = determine_month_to_search(
        id_location_code=location_codes.code)
    log((id_process, INFO, mesagges['df_transaccionales']))

    return location_codes, dates_search
示例#6
0
def search_diary(monthyear: int, day: int = 0, attemps: int = 0):
    if day <= 60:
        if day <= 30:
            scheduling = today_ff_add_days(day=day)
            check_activity(monthyear=monthyear, scheduling=scheduling)
        else:
            attemps += 1
            monthyear = previous_monthyear
            scheduling = determinate_previous_scheduling(attemps=attemps)

        logger.info(
            'Consultando agendamiento con date:[{}] y monthyear:[{}]'.format(
                scheduling, monthyear))
        schedules = get_select_schedules(
            monthyear=monthyear,
            scheduling=scheduling,
            config_attempts=EnvironmentConfig.MAX_ATTEMPTS).fetchone()

        if schedules is not None:
            closet = False  # determina si el input fue creado y respaldado en la tabla last_month
            try:
                location_codes, dates_search = diary_init(
                    id_process=schedules[0],
                    attempts=schedules[3],
                    id_location=schedules[1])
                for numMonths in range(0, int(dates_search['months'])):
                    closet = False
                    month_to_month = incremet_month(date=dates_search['start'],
                                                    num_month=numMonths)
                    logger.info('GENERANDO CON FECHA DESDE {} HASTA {}'.format(
                        month_to_month['start'], month_to_month['end']))
                    log((schedules[0], INFO, mesagges['month_to_month'].format(
                        month_to_month['start'], month_to_month['end'])))

                    input_data = generate(id_process=schedules[0],
                                          location_codes=location_codes,
                                          dates_search=month_to_month,
                                          id_location=schedules[1])
                    closet_diary(id_control_of_process=schedules[0],
                                 dates_search=month_to_month,
                                 id_location_code=location_codes.code)
                    closet = True
                    search_model(input=input_data,
                                 control_of_process_id=schedules[0],
                                 dates_search=month_to_month,
                                 id_location_code=location_codes.code)

                activity_close(idx=schedules[0])

            except Exception as e:
                roll_back_pross(idx=schedules[0])
                if closet is True:
                    delete_last(dates_search=month_to_month,
                                id_location_code=location_codes.code)

                log((schedules[0], ERR, str(e)))
                logger.error(
                    ' En el proceso ID {} intento Nro {}. TIPO: {}'.format(
                        schedules[0], schedules[3] + 1, e))
        else:
            day += 1
            search_diary(monthyear, day, attemps)