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, kpi_set_fk): 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.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.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.tools = NEW_OBBOGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) 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.scene_data = self.load_scene_data() self.kpi_set_fk = kpi_set_fk
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.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.scif = self.scif.merge(self.get_missing_attributes(), on='product_fk', how='left', suffixes=['', '_1']) self.template_data = parse_template(TEMPLATE_PATH, 'Sheet1') self.tools = CCUSGENERALToolBox(self.data_provider, self.output, scif=self.scif) self.output_df = pd.read_excel(OUTPUT_PATH) self.kpi_static_data = self.get_kpi_static_data(set_name='CCUS Test') 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.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_results_queries = [] 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() self.all_brand = self.all_products[['brand_name', 'brand_fk']].set_index(u'brand_fk').to_dict() # Get Pillars KPI Scene's result self.scenes_result = self.data_provider.scene_kpi_results self.scenes_result = self.scenes_result.loc[self.scenes_result['type'] == Const.SCENE_KPI_NAME]
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.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.store_info = self.data_provider[Data.STORE_INFO] self.store_id = self.data_provider[Data.STORE_FK] 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.segment = self.get_business_unit_name() self.scene_info = self.data_provider[Data.SCENES_INFO] 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.tools = DIAGEOToolBox(self.data_provider, output, match_display_in_scene=self.match_display_in_scene) self.kpi_results_queries = [] self.common = Common(self.data_provider) self.commonV2 = CommonV2(self.data_provider) self.diageo_generator = DIAGEOGenerator(self.data_provider, self.output, self.common)
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.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 = OBBOGENERALCCUS_SANDToolBox(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, 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.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].values[0] self.number_of_checkouts = self.store_info['additional_attribute_1'].values[0] self.segmentation = self.get_segmentation() self.region = self.store_info['region_name'].values[0] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.match_display_in_scene = self.get_match_display() self.tools = PEPSICOBR_SANDGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.price_data = self.get_price_data() self.kpi_static_data = self.get_kpi_static_data() self.template_data = parse_template(TEMPLATE_PATH, 'KPIs') self.availability_template = parse_template(TEMPLATE_PATH, 'Assortment', 3, 2, 3) self.price_template = parse_template(TEMPLATE_PATH, 'Price', 1, 0, 2) self.planogram_template = parse_template(TEMPLATE_PATH, 'Planogram', 0, 0, 5, columns_for_vertical_padding=[self.PLANOGRAM_NAME, self.COUNT_OF_SHELVES, self.SCENE_TYPE]) self.planogram_template[self.COUNT_OF_SHELVES] = self.planogram_template[self.COUNT_OF_SHELVES].astype(float) self.availability_id = '{};{}'.format(self.region, self.segmentation) 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 = 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.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 = DISPLAYSGENERALToolBox(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.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 = NEW_OBBOGENERALToolBox(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): 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 = MSC_NEWGENERALCCUS_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.kpi_data = parse_template(TEMPLATE_PATH, 'KPI') self.scif_filters = { 'include manufacturer': 'manufacturer_name', 'exclude manufacturer': 'manufacturer_name', 'include att2': 'att2', 'exclude att2': 'att2', 'att4': 'att4', 'scene type': 'template_name' } self.row_filters = [ 'include manufacturer', 'exclude manufacturer', 'include att2', 'exclude att2', 'att4', 'scene type' ]
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.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.general_tools = CCKHGENERALToolBox(self.data_provider, self.output) self.template = CCKHTemplateConsts() self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.commonV2 = CommonV2(self.data_provider) self.kpi_new_static_data = self.commonV2.get_new_kpi_static_data() self.manufacturer = int(self.data_provider.own_manufacturer.param_value.values[0]) self.ps_data_provider = PsDataProvider(self.data_provider, self.output) self.external_targets = self.ps_data_provider.get_kpi_external_targets() self.assortment = Assortment(self.data_provider, self.output) self.templates_info = self.external_targets[self.external_targets[CCKHTemplateConsts.TEMPLATE_OPERATION] == CCKHTemplateConsts.BASIC_SHEET] self.visibility_info = self.external_targets[self.external_targets[CCKHTemplateConsts.TEMPLATE_OPERATION] == CCKHTemplateConsts.VISIBILITY_SHEET] self.cooler_info = self.external_targets[self.external_targets[CCKHTemplateConsts.TEMPLATE_OPERATION] == CCKHTemplateConsts.COOLER_SHEET]
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.visit_date = self.data_provider[Data.VISIT_DATE] self.session_info = self.data_provider[Data.SESSION_INFO] self.store_id = self.data_provider[Data.STORE_FK] store_type = self.data_provider[ Data.STORE_INFO]['store_type'].values[0] self.store_type = '' if not store_type else store_type self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.tools = JTIUA_SANDGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.matches = self.tools.match_product_in_scene self.scene_info = self.tools.scenes_info self.match_display = self.get_match_display() self.template_data = parse_template(TEMPLATE_PATH, 'KPIs') self.posm_template = parse_template(TEMPLATE_PATH, 'POSM', columns_for_vertical_padding=[ JTIUA_SANDConsts.SCENE_TYPE, JTIUA_SANDConsts.DISPLAY_TYPE, JTIUA_SANDConsts.DISPLAY_BRAND ]) self.kpi_static_data = self.get_kpi_static_data() self.hotspots = self.calculate_hotspot_range() self.posm_scoring = self.calculate_posm_scoring() 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 = HEINEKENCNGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.tamplate_tools = HandleTemplate( 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.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 = PNGMCCN_SANDGENERALToolBox(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): 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.session_fk = self.session_info['pk'][0] 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.store_type = '' if self.store_type is None else self.store_type self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.survey_response = self.data_provider[Data.SURVEY_RESPONSES] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.segmentation, self.region = self.get_segmentation_and_region() self.kpi_static_data = self.get_kpi_static_data() self.tools = CCTH_UATGENERALToolBox(self.data_provider, self.output) if '7-11' in self.store_type: if self.visit_date >= datetime(2017, 7, 1).date(): template_name = CCTH_UATParseTemplates.TEMPLATE_7_11_AFTER_JULY2017 else: template_name = CCTH_UATParseTemplates.TEMPLATE_7_11_UNTIL_JULY2017 self.template = CCTH_UATParseTemplates(template=template_name) self.calculation_type = template_name self.availability_id = self.gap_id = self.store_type else: if self.visit_date >= datetime(2017, 10, 25).date(): template_name = CCTH_UATParseTemplates.TEMPLATE_TT_AFTER_NOV2017 self.template = CCTH_UATParseTemplates(template=template_name) self.calculation_type = self.template.TEMPLATE_TT_AFTER_NOV2017 else: template_name = CCTH_UATParseTemplates.TEMPLATE_TT_UNTIL_NOV2017 self.template = CCTH_UATParseTemplates(template=template_name) self.calculation_type = self.template.TEMPLATE_TT_UNTIL_NOV2017 self.availability_id = self.gap_id = '{};{}'.format( self.region, self.store_type) self.survey_id = '{};{};{}'.format(self.region, self.store_type, self.segmentation) self.templates_data = self.template.parse_kpi() self.availability_data = self.template.parse_availability() self.survey_data = self.template.parse_survey() self.gap_data = self.template.parse_gap() self.gap_translations = pd.read_excel( os.path.join(TEMPLATE_PATH, 'Gaps.xlsx')) self.kpi_results_queries = [] self.gaps = {} self.gaps_queries = []
def __init__(self, data_provider, output, project_name): self.k_engine = BaseCalculationsScript(data_provider, output) self.project_name = project_name self.data_provider = data_provider 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.get_kpi_static_data()
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.all_templates = self.data_provider[Data.ALL_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.store_type = self.data_provider[ Data.STORE_INFO]['store_type'].values[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.brand_to_manufacturer = { x['brand_name']: x['manufacturer_name'] for i, x in self.scif[['brand_name', 'manufacturer_name' ]].drop_duplicates().iterrows() } self.match_display_in_scene = self.get_match_display() self.store_retailer = self.get_retailer() self.tools = PNGAUGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) if self.visit_date <= datetime(2017, 12, 31).date(): self.TEMPLATE_PATH = os.path.join( os.path.dirname(os.path.realpath(__file__)), '..', 'Data', 'Template Dec.xlsx') else: self.TEMPLATE_PATH = os.path.join( os.path.dirname(os.path.realpath(__file__)), '..', 'Data', 'Template.xlsx') self.template_data = parse_template(self.TEMPLATE_PATH, 'KPIs') self.scoring_data = parse_template(self.TEMPLATE_PATH, 'Scores') self.category_scene_types, self.template_groups = self.get_category_scene_types( ) self._custom_templates = {} self.scenes_types_for_categories = {} self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.kpi_results = {} self.atomic_results = {} self.categories = self.all_products['category_fk'].unique().tolist()
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.all_products = self.data_provider[Data.ALL_PRODUCTS] 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.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.matches = self.get_match_product_in_scene() self.kpi_static_data = self.get_kpi_static_data() self.session_categories_data = self.get_session_categories_data() self.kpi_results_queries = [] self.empty_spaces = {self.get_category_name(category): {'png': 0, 'other': 0} for category in RELEVANT_CATEGORIES \ if self.check_validation_of_category(category)} self.irrelevant_empties = 0
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 = MONSTERGENERALCCUS_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.ssd_score = 0 # Save the current score for Kpi1, fail Kp12 in case Kpi1 succeed.
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.store_info = self.data_provider[Data.STORE_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 = NESTLEUKGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.store_type = self.store_info['store_type'].iloc[0] self.store_type = '' if self.store_type is None else self.store_type self.templates_class = NESTLEUKParseTemplates('Nestle_UK_v3.0') self.template_ava_class = NESTLEUKParseTemplates('Template') self.templates_data = self.templates_class.parse_template( sheet_name='KPIs') self.template_ava_data = self.template_ava_class.parse_template( sheet_name='Hierarchy') self.template_ava_visible = self.template_ava_class.parse_template( sheet_name='Visible') self.template_ava_bottom_shelf = self.template_ava_class.parse_template( sheet_name='Bottom shelf') self.template_ava_adjacent = self.template_ava_class.parse_template( sheet_name='Adjacent') self.template_ava_diamond = self.template_ava_class.parse_template( sheet_name='Diamond') self.scores = pd.DataFrame(columns=['ean_code', 'visible', 'ava']) self.session_fk = self.data_provider[Data.SESSION_INFO]['pk'].iloc[0] self.custom_scif_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 = GOLD_PEAK_BLOCKGeneralToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.kpi_data = parse_template(TEMPLATE_PATH, 'KPIs') self.store_info = self.data_provider[Data.STORE_INFO] self.store_type = self.store_info['store_type'].iloc[0]
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.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_type = self.store_info['store_type'].values[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.kpi_static_data = self.get_kpi_static_data() self.match_display_in_scene = self.get_match_display() self.general_tools = GILLETTEUSGENERALToolBox(self.data_provider, output) self.template_data = self.general_tools.get_json_data(TEMPLATE_PATH) 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.all_templates = self.data_provider[Data.ALL_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.store_type = self.data_provider[ Data.STORE_INFO]['store_type'].values[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.brand_to_manufacturer = self.scif[[ 'brand_name', 'manufacturer_name' ]].drop_duplicates() self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng) self.match_display_in_scene = self.get_match_display() self.tools = PNGJPGENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.template_data = parse_template(TEMPLATE_PATH, 'KPIs') self.category_scene_types, self.template_groups = self.get_category_scene_types( ) self._custom_templates = {} self.scenes_types_for_categories = {} self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.kpi_results = {} self.atomic_results = {} self.categories = self.all_products['category_fk'].unique().tolist()
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.all_templates = self.data_provider[Data.ALL_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.store_type = self.data_provider[Data.STORE_INFO][ StoreInfoConsts.STORE_TYPE].values[0] self.scif = self.data_provider[Data.SCENE_ITEM_FACTS] self.match_display_in_scene = self.get_match_display() self.data_provider.probe_groups = self.get_probe_group( self.data_provider.session_uid) self.tools = PNGJP_SAND2GENERALToolBox(self.data_provider, self.output, rds_conn=self.rds_conn) self.template_name = 'TemplateQualitative.xlsx' self.TEMPLATE_PATH = os.path.join( os.path.dirname(os.path.realpath(__file__)), '..', 'Data', self.template_name) self.template_data = parse_template(self.TEMPLATE_PATH, self.HIERARCHY) self.golden_zone_data = parse_template(self.TEMPLATE_PATH, self.GOLDEN_ZONE) self.golden_zone_data_criteria = parse_template( self.TEMPLATE_PATH, self.GOLDEN_ZONE_CRITERIA) self.block_data = parse_template(self.TEMPLATE_PATH, self.BLOCK) self.adjacency_data = parse_template(self.TEMPLATE_PATH, self.ADJACENCY) self.anchor_data = parse_template(self.TEMPLATE_PATH, self.ANCHOR) self.perfect_execution_data = parse_template(self.TEMPLATE_PATH, self.PERFECT_EXECUTION) self.category_list_data = parse_template(self.TEMPLATE_PATH, self.CATEGORY_LIST) self.product_groups_data = parse_template(self.TEMPLATE_PATH, self.PRODUCT_GROUP) self._custom_templates = {} self.scenes_types_for_categories = {} self.kpi_static_data = self.get_kpi_static_data() self.kpi_results_queries = [] self.kpi_results = {} self.atomic_results = {} self.categories = self.all_products[ ProductsConsts.CATEGORY_FK].unique().tolist() self.display_types = [ 'Aisle', 'Casher', 'End-shelf', 'Entrance', 'Island', 'Side-End', 'Side-net' ] self.custom_scif_queries = [] self.session_fk = self.data_provider[Data.SESSION_INFO][ BasicConsts.PK].iloc[0] self.block = Block(data_provider=self.data_provider, rds_conn=self.rds_conn) self.adjacency = Adjancency(data_provider=self.data_provider, rds_conn=self.rds_conn) self.fix_utf_space_problem() self.kpi_scores = {}