def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.common_v2 = CommonV2(self.data_provider) self.common_v1 = CommonV1(self.data_provider) self.data_provider.common_v2 = self.common_v2 self.data_provider.common_v1 = self.common_v1 self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.channel = self.get_store_channel(self.store_id) self.kpi_static_data = self.common_v2.get_kpi_static_data() self.data_provider.kpi_sheets = {} self.kpi_sheets = self.data_provider.kpi_sheets self.old_kpi_static_data = self.common_v1.get_kpi_static_data() for name in SHEETS_NAME: parsed_template = ParseTemplates.parse_template(TEMPLATE_PATH, sheet_name=name) self.kpi_sheets[name] = parsed_template[parsed_template['Channel'] == self.channel] self.data_provider.sos = SOS(self.data_provider, output=None) self.data_provider.assortment = Assortment(self.data_provider, output=None)
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = CCUS_SANDNEW_OBBOGENERALCCUS_SANDToolBox( self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.pop_data = parse_template(TEMPLATE_PATH, 'POP') self.adj_data = parse_template(TEMPLATE_PATH, 'Adjacency') self.pathway_data = parse_template(TEMPLATE_PATH, 'Pathway') self.store_types = parse_template(TEMPLATE_PATH, 'store types') self.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0] self.ps_data_provider = PsDataProvider(self.data_provider, self.output) self.store_areas = self.ps_data_provider.get_store_area_df()
def __init__(self, data_provider, output, common): self.output = output self.data_provider = data_provider self.common = common self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.templates_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), '..', 'Data') self.excel_file_path = os.path.join(self.templates_path, 'Template.xlsx') self.kpi_sheet = pd.read_excel(self.excel_file_path, sheetname=KPI_SHEET) self.products = self.data_provider[Data.PRODUCTS] self.templates = self.data_provider[Data.TEMPLATES] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.store_type = self.data_provider.store_type self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.common.get_kpi_static_data() self.kpi_results_queries = []
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = HEINEKENPILOTCNGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.tamplate_tools = HEINEKENPILOTCNHandleTemplate( self.data_provider, output, kpi_static_data=self.kpi_static_data) self.kpi_results_queries = [] self.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0] self.custom_templates = {} self.set_templates_data = {} self.scif_filters = { 'Brand pk': 'brand_fk', 'Category pk': 'category_fk' }
def __init__(self, data_provider, output): self.output = output self.common = Common(data_provider) self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.manufacturer_fk = None if self.data_provider[Data.OWN_MANUFACTURER]['param_value'].iloc[0] is None else \ int(self.data_provider[Data.OWN_MANUFACTURER]['param_value'].iloc[0]) self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO].merge( self.data_provider[Data.ALL_TEMPLATES][[ 'template_fk', 'template_name' ]], on='template_fk', how='left') self.store_id = self.data_provider[Data.STORE_FK] self.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0] self.segmentation = self.store_info['additional_attribute_2'].iloc[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = CCMYGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.kpi_static_data_new = self.common.get_new_kpi_static_data() self.template_data = pd.read_excel(TEMPLATE_PATH, 'KPIs').fillna('') self.kpi_results_queries = []
def __init__(self, data_provider, output, common=None): self.output = output self.data_provider = data_provider # self.common = common self.common = Common(self.data_provider) self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.templates = self.data_provider[Data.TEMPLATES] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] if self.data_provider[Data.STORE_FK] is not None \ else self.session_info['store_fk'].values[0] self.all_templates = self.data_provider[Data.ALL_TEMPLATES] self.store_type = self.data_provider.store_type self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.common.get_kpi_static_data() self.kpi_results_queries = [] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.kpi_results = pd.DataFrame( columns=['kpi_fk', 'numerator', 'denominator', 'result', 'score'])
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) # self.store_type = self.data_provider[Data.STORE_INFO]['store_type'].iloc[0] query_store_type = CCZAQueries.get_attr3(self.session_uid) store_type = pd.read_sql_query(query_store_type, self.rds_conn.db) self.store_type = store_type[Const.ATTR3].iloc[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.tools = GENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.survey_response = self.data_provider[Data.SURVEY_RESPONSES] self.tool_box_for_flow = ToolBox # create data-frames from template self.kpi_sheets = {} for name in Const.sheet_names_and_rows: self.kpi_sheets[name] = parse_template(TEMPLATE_PATH, sheet_name=name, lower_headers_row_index=Const.sheet_names_and_rows[name]) self.common = Common(self.data_provider, Const.RED_SCORE) self.survey_handler = Survey(self.data_provider, self.output, self.kpi_sheets[Const.SURVEY_QUESTIONS]) self.kpi_static_data = self.common.kpi_static_data self.kpi_results_queries = [] self.common_v2 = CommonV2(self.data_provider) self.own_manuf_fk = self.get_own_manufacturer_fk() self.scif_match_react = self.scif[self.scif[ScifConsts.RLV_SOS_SC] == 1]
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = CUBAUCUBAUGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.common = Common(self.data_provider) self.common_sos = SOS(self.data_provider, self.output) self.kpi_results_queries = [] self.k_engine = BaseCalculationsGroup(data_provider, output) self.store_type = data_provider.store_type self.matches_with_direction = self.get_match_product_in_scene_with_direction( )
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = MJNCN_SANDGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.custom_templates = {} self.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0] self.scif_filters = { 'Product EAN': 'product_ean_code', 'Template Name': 'template_name', 'att1': 'att1' }
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scenes_info = self.data_provider[Data.SCENES_INFO].merge( self.data_provider[Data.ALL_TEMPLATES], how='left', on='template_fk', suffixes=['', '_y']) self.store_id = self.data_provider[Data.STORE_FK] self.store_type = self.data_provider[ Data.STORE_INFO]['store_type'].iloc[0] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.scif = self.get_missing_attributes( self.data_provider[Data.SCENE_ITEM_FACTS]) self.display_matches = self.get_match_display() self.custom_templates = {} self.sr_to_templates = self.get_sr_to_templates() self.tools = OBBOGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn, scif=self.scif) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = []
def __init__(self, project_name, scif, matches, set_name): self.rds_conn = PSProjectConnector(project_name, DbUsers.CalculationEng) self.scif = scif self.matches = matches self.set_name = set_name self.kpi_static_data = self.get_static_kpi_data()
def __init__(self, data_provider, output, common): self.output = output self.data_provider = data_provider self.common = common self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.common.get_kpi_static_data() self.kpi_results_queries = [] self.manufacturer_fk = self.products['manufacturer_fk'][ self.products['manufacturer_name'] == 'MONDELEZ INTERNATIONAL INC'].iloc[0] self.store_assortment = pd.DataFrame() self.assortment = Assortment(self.data_provider, common=self.common) self.store_number = self.get_store_number() self.ps_data_provider = PsDataProvider(self.data_provider, self.output) self.custom_entities = self.ps_data_provider.get_custom_entities( Const.PPG_ENTITY_TYPE_FK)
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.session_id = self.data_provider.session_id self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) # self.tools = RISPARKWINEDEGENERALToolBox( # self.data_provider, self.output, rds_conn=self.rds_conn) # self.New_kpi_static_data = self.get_new_kpi_static_data() self.kpi_results_new_tables_queries = [] # self.store_assortment = PSAssortmentDataProvider(self.data_provider).execute() self.store_info = self.data_provider[Data.STORE_INFO] self.current_date = datetime.now() self.assortment = Assortment(self.data_provider, self.output) self.store_assortment = self.assortment.store_assortment self.common = Common(self.data_provider)
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.all_products = self.data_provider[Data.ALL_PRODUCTS] # self.all_products = self.all_products.merge(self.get_additional_attributes(), on='product_fk', how='left') self.match_display_in_scene = self.get_match_display() self.tools = CCBOTTLERSUSDISPLAYSGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn, scif=self.scif) self.template_data = parse_template(TEMPLATE_PATH) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = []
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = RBUSGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.old_common = common_old(data_provider) self.kpi_static_data = self.old_common.get_kpi_static_data() # self.kpi_results_queries = [] self.templates_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'Data') self.template_dict = self.get_df_from_excel_path() self.template_dict = self.template_dict[self.template_dict['Template for KPI'] != 'none']\ .set_index('Template for KPI')['KPI Level 3 Name'].to_dict() self.excluded_sub_categories = self.get_excluded_sub_categories(self.get_df_from_excel_path()) self.common_new = Common(data_provider) self.manufacturer_fk = self.data_provider[Data.OWN_MANUFACTURER]['param_value'].iloc[0] self.ps_data = PsDataProvider(self.data_provider, self.output) self.templates = self.data_provider[Data.TEMPLATES] self.sub_brands = self.ps_data.get_custom_entities(1001)
def __init__(self, data_provider, output, common): self.output = output self.data_provider = data_provider self.common = common self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.templates = self.data_provider[Data.TEMPLATES] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.store_type = self.data_provider.store_type self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.common.get_kpi_static_data() self.kpi_results_queries = [] self.tools = CCBZA_SAND_GENERALToolBox(self.data_provider, self.output) self.scif = self.data_provider[ Data.SCENE_ITEM_FACTS] # do we have it for scene??? debug CCIT self.store_data = self.get_store_data_by_store_id() self.template_path = self.get_template_path() self.template_data = self.get_template_data() self.session_kpis = self.template_data[KPI_TAB][KPI_NAME].unique( ).tolist() self.kpi_score_values = self.get_kpi_score_values_df() self.kpi_result_values = self.get_kpi_result_values_df( ) # maybe for ps data provider, create mock
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.ps_data_provider = PsDataProvider(data_provider) self.kpi_result_values = self.ps_data_provider.get_result_values() self.common_v2 = Common(self.data_provider) self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.assortment = Assortment(self.data_provider) self.own_manufacturer_fk = int( self.data_provider.own_manufacturer.param_value.values[0]) self.kpi_static_data = self.common_v2.kpi_static_data[[ 'pk', StaticKpis.TYPE ]] # self.custom_entity = self.ps_data_provider.get_custom_entities(Consts.PRODUCT_GROUP) self.visit_date = self.data_provider[Data.VISIT_DATE] self.project_name = self.data_provider.project_name self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.external_targets = self._retrieve_completeness_external_targets() self.products_trax_cat = self._get_products_with_trax_categories() self.ass_groups_present = { Consts.DISTR_SNACKS: 0, Consts.DISTR_SABRA: 0 }
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.store_info = self.data_provider[Data.STORE_INFO] self.store_channel = self.store_info['store_type'].values[0] if self.store_channel: self.store_channel = self.store_channel.upper() self.store_type = self.store_info['additional_attribute_1'].values[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = INBEVCO_SANDGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.relative_positioning = parse_template(TEMPLATE_PATH, 'Relative Positioning', lower_headers_row_index=2) self.brand_blocking = parse_template(TEMPLATE_PATH, 'Brand Blocking', lower_headers_row_index=6) self.purity = parse_template(TEMPLATE_PATH, 'Purity', lower_headers_row_index=3)
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.common = Common(self.data_provider) self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_info = self.data_provider[Data.STORE_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.match_probe_in_scene = self.get_product_special_attribute_data( self.session_uid) self.kpi_static_data = self.common.get_kpi_static_data() self.kpi_results_queries = [] self.kpis_sheet = pd.read_excel(PATH, Const.KPIS).fillna("") self.osd_rules_sheet = pd.read_excel(PATH, Const.OSD_RULES).fillna("") self.kpi_excluding = pd.DataFrame() self.df = pd.DataFrame() self.tools = GENERALToolBox(self.data_provider) self.templates = self.data_provider[Data.ALL_TEMPLATES] self.psdataprovider = PsDataProvider(self.data_provider)
def __init__(self, data_provider, output, common): self.output = output self.data_provider = data_provider self.common = common self.project_name = self.data_provider.project_name self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.templates = self.data_provider[Data.TEMPLATES] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] empties = self.all_products[self.all_products['product_type'] == 'Empty']['product_fk'].unique().tolist() self.match_product_in_scene = self.match_product_in_scene[~( self.match_product_in_scene['product_fk'].isin(empties))] self.visit_date = self.data_provider[Data.VISIT_DATE] self.scene_info = self.data_provider[Data.SCENES_INFO] self.template_group = self.templates['template_group'].iloc[0] self.template_fk = self.templates['template_fk'].iloc[0] self.scene_id = self.scene_info['scene_fk'][0] self.kpi_fk = self.common.get_kpi_fk_by_kpi_name(Const.POC) self.poc_number = 1
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.store_info = self.data_provider[Data.STORE_INFO] self.store_channel = self.store_info['store_type'].values[0] if self.store_channel: self.store_channel = self.store_channel.upper() self.store_type = self.store_info['additional_attribute_1'].values[0] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.match_display_in_scene = self.get_match_display() self.set_templates_data = {} self.kpi_static_data = self.get_kpi_static_data() self.scores = {self.LEVEL1: {}, self.LEVEL2: {}, self.LEVEL3: {}} self.kpi_results_queries = [] self.output = output self.common = Common(self.data_provider) self.commonV2 = CommonV2(self.data_provider) self.tools = DIAGEOToolBox(self.data_provider, output, match_display_in_scene=self.match_display_in_scene) # replace the old one self.diageo_generator = DIAGEOGenerator(self.data_provider, self.output, self.common)
def __init__(self, data_provider, common, output): self.output = output self.data_provider = data_provider self.common = common self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.scene = self.scene_info.loc[0, 'scene_fk'] self.templates = self.data_provider[Data.TEMPLATES] self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.mpis = self.make_mpis() self.visit_date = self.data_provider[Data.VISIT_DATE] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.scif = self.scif[~(self.scif['product_type'] == 'Irrelevant')] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.common.get_kpi_static_data() self.manufacturer_fk = int( self.data_provider[Data.OWN_MANUFACTURER].iloc[0, 1]) self.gp_manufacturer = self.get_gp_manufacturer() self.gp_categories = self.get_gp_categories() self.brands = self.get_brands() self.gp_brands = self.get_gp_brands() self.man_fk_filter = { 'manufacturer_name': list(self.gp_manufacturer.keys()) } self.cat_filter = {'category': list(self.gp_categories.keys())} self.brand_filter = {'brand_name': list(self.gp_brands.keys())} self.kpi_results = [] self.dedupe = set()
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.common_v2 = CommonV2(self.data_provider) self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.templates = self.data_provider[Data.TEMPLATES] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_info = self.data_provider[Data.STORE_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.own_manufacturer_fk = int(self.data_provider.own_manufacturer.param_value.values[0]) self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.common_v2.get_kpi_static_data() self.kpi_results_queries = [] self.template = self.data_provider.all_templates # templates self.toolbox = GENERALToolBox(data_provider) kpi_path = os.path.dirname(os.path.realpath(__file__)) base_file = os.path.basename(kpi_path) self.exclude_filters = pd.read_excel(os.path.join(kpi_path[:- len(base_file)], 'Data', 'template.xlsx'), sheetname="Exclude") self.Include_filters = pd.read_excel(os.path.join(kpi_path[:- len(base_file)], 'Data', 'template.xlsx'), sheetname="Include") self.bay_count_kpi = pd.read_excel(os.path.join(kpi_path[:- len(base_file)], 'Data', 'template.xlsx'), sheetname="BayCountKPI") self.assortment_data = pd.read_excel(os.path.join(kpi_path[:- len(base_file)], 'Data', 'template.xlsx'), sheetname="Assortment")
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.common = Common(self.data_provider) self.old_common = oldCommon(self.data_provider) self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.session_fk = self.data_provider.session_id self.match_product_in_scene = self.data_provider[Data.MATCHES] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.store_info = self.data_provider[Data.STORE_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.survey = Survey(self.data_provider) self.block = Block(self.data_provider) self.general_toolbox = GENERALToolBox(self.data_provider) self.visit_date = self.data_provider[Data.VISIT_DATE] self.template_path = self.get_relevant_template self.gap_data = self.get_gap_data() self.kpi_weights = parse_template(self.template_path, Consts.KPI_WEIGHT, lower_headers_row_index=0) self.template_data = self.parse_template_data() self.kpis_gaps = list() self.passed_availability = list() self.kpi_static_data = self.old_common.get_kpi_static_data() self.own_manufacturer_fk = int( self.data_provider.own_manufacturer.param_value.values[0]) self.parser = Parser self.all_products = self.data_provider[Data.ALL_PRODUCTS]
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.common = Common(self.data_provider) self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.store_info = self.data_provider[Data.STORE_INFO] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.common.get_kpi_static_data() self.kpi_results_queries = [] self.templates_path = os.path.join( os.path.dirname(os.path.realpath(__file__)), '..', 'Data') self.excel_file_path = os.path.join(self.templates_path, 'inbevtradmx_template.xlsx') self.availability = Availability(self.data_provider) self.survey_response = self.data_provider[Data.SURVEY_RESPONSES] self.geo = GeoLocation.Geo(self.rds_conn, self.session_uid, self.data_provider, self.kpi_static_data, self.common)
def __init__(self, data_provider, output, kpi_static_data, geometric_kpi_flag=False, **data): self.k_engine = BaseCalculationsGroup(data_provider, output) self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalcAdmin) self.scif = self.scif.merge(self.data_provider[Data.STORE_INFO], how='left', left_on='store_id', right_on='store_fk') self.match_display_in_scene = data.get('match_display_in_scene') self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.survey_response = self.data_provider[Data.SURVEY_RESPONSES] self.kpi_static_data = kpi_static_data # self.get_atts() if geometric_kpi_flag: self.position_graph_data = CCUS_SANDPositionGraphs( self.data_provider) self.matches = self.position_graph_data.match_product_in_scene self.position_graph = self.position_graph_data.position_graphs else: self.position_graph_data = None self.matches = self.data_provider[Data.MATCHES] self.matches = self.matches.merge(self.match_display_in_scene, how='left', on=['scene_fk', 'bay_number'])
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.product_attributes = self.get_missing_attributes_data() self.products = self.data_provider[Data.PRODUCTS] self.products = self.products.merge(self.product_attributes, how='left', on='product_fk') self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.all_products = self.all_products.merge(self.product_attributes, how='left', on='product_fk') self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.scif = self.scif.merge(self.product_attributes, how='left', on='product_fk') self.matches = self.data_provider[Data.MATCHES] self.matches = self.matches.merge(self.products, how='left', on='product_fk') self.matches = self.matches.merge(self.scif[['scene_fk', LOCATION_FIELD]].drop_duplicates(), how='left', on='scene_fk') self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_type = self.data_provider[Data.STORE_INFO].store_type.values[0] self.store_id = self.data_provider[Data.STORE_FK] self.kpi_static_data = self.get_kpi_static_data() self.tools = GENERALToolBox(self.data_provider, output, self.kpi_static_data, geometric_kpi_flag=False) self.template_data = self.tools.get_json_data('{}/Template.xlsx'.format(TEMPLATES_PATH)) self.power_skus = self.get_power_skus_for_store() self.kpi_results_queries = []
def __init__(self, data_provider, output, commonv2): self.k_engine = BaseCalculationsScript(data_provider, output) self.output = output self.data_provider = data_provider self.common = commonv2 self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.templates = self.data_provider[Data.TEMPLATES] self.store_id = self.data_provider[Data.STORE_FK] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) # self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0] # self.rules = pd.read_excel(TEMPLATE_PATH).set_index('store_type').to_dict('index') self.ps_data_provider = PsDataProvider(self.data_provider, self.output) self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.ignore_stacking = False self.facings_field = 'facings' if not self.ignore_stacking else 'facings_ign_stack' self.manufacturer_fk = self.all_products['manufacturer_fk'][self.all_products['manufacturer_name'] == 'CCNA'].iloc[0] # self.scene_data = self.load_scene_data() # self.kpi_set_fk = kpi_set_fk self.templates = {} self.parse_template() self.toolbox = GENERALToolBox(self.data_provider) self.SOS = SOS_calc(self.data_provider) self.survey = Survey_calc(self.data_provider) self._merge_matches_and_all_product()
def __init__(self, data_provider, output): self.k_engine = BaseCalculationsScript(data_provider, output) self.output = output self.data_provider = data_provider self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = MSCGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.custom_templates = {} self.store_info = self.data_provider[Data.STORE_INFO] self.get_atts() self.survey_response = self.data_provider[Data.SURVEY_RESPONSES] self.store_type = self.store_info['store_type'].iloc[0] self.scif_filters = {'In Scene Type': 'template_name', 'Template Group': 'template_group', 'Excluded Template Group':'template_group', 'Manufacturer':'manufacturer_name', 'Manufacturer Exclude': 'manufacturer_name', 'Trademark (att2)': 'att2', 'Exluded Trademark (att2)':'att2', 'Sub Category': 'sub_category', 'Excluded Package Type (att3)': 'att3', 'Package Group (att1)': 'att1', 'SSD Still (att4)':'att4', 'Product Categories':'category', 'Package Type (att3)': 'att3', 'Excluded Product Categories':'category', 'Excluded EAN Code': 'product_ean_code', 'EAN Code': 'product_ean_code', 'Question fk':'Question fk'} self.row_filters = ['In Scene Type', 'Template Group', 'Excluded Template Group', 'Manufacturer', 'Manufacturer Exclude', 'Trademark (att2)', 'Exluded Trademark (att2)', 'Sub Category', 'Package Type (att3)', 'Excluded Package Type (att3)', 'Package Group (att1)', 'SSD Still (att4)', 'Product Categories', 'Excluded Product Categories', 'Excluded EAN Code', 'EAN Code']
def __init__(self, data_provider, output): self.output = output self.data_provider = data_provider self.common = Common(self.data_provider) self.match_display_in_scene = self.data_provider.match_display_in_scene self.project_name = self.data_provider.project_name self.session_uid = self.data_provider.session_uid self.products = self.data_provider[Data.PRODUCTS] self.all_products = self.data_provider[Data.ALL_PRODUCTS] self.scene_info = self.data_provider[Data.SCENES_INFO] self.templates = self.data_provider[Data.TEMPLATES] self.match_product_in_scene = self.data_provider[Data.MATCHES] self.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.scene_info = self.data_provider[Data.SCENES_INFO] self.store_id = self.data_provider[Data.STORE_FK] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.ps_data_provider = PsDataProvider(self.data_provider, self.output) self.kpi_static_data = self.common.get_kpi_static_data() self.kpi_results_queries = [] self.templates_path = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', 'Data') self.excel_file_path = os.path.join(self.templates_path, 'Template.xlsx') self.external_targets = self.ps_data_provider.get_kpi_external_targets( kpi_operation_types=["Target Config"], key_fields=["product_fks", "template_fks", "product_group_fk"], data_fields=["stacking_exclude", "min_product_facing", "best_shelf_position", "group_facings_count"] )