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