Ejemplo n.º 1
0
 def __init__(self, data_provider, output, calculation_type):
     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.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.scif = self.scif[self.scif['product_type'] != "Irrelevant"]
     self.united_scenes = self.get_united_scenes(
     )  # we don't need to check scenes without United products
     self.survey = Survey(self.data_provider, self.output)
     self.templates = {}
     self.calculation_type = calculation_type
     if self.calculation_type == Const.SOVI:
         self.TEMPLATE_PATH = TEMPLATE_PATH
         self.RED_SCORE = Const.RED_SCORE
         self.RED_SCORE_INTEG = Const.RED_SCORE_INTEG
         for sheet in Const.SHEETS:
             self.templates[sheet] = pd.read_excel(
                 self.TEMPLATE_PATH, sheetname=sheet).fillna('')
         self.converters = self.templates[Const.CONVERTERS]
     else:
         self.TEMPLATE_PATH = SURVEY_TEMPLATE_PATH
         self.RED_SCORE = Const.MANUAL_RED_SCORE
         self.RED_SCORE_INTEG = Const.MANUAL_RED_SCORE_INTEG
         for sheet in Const.SHEETS_MANUAL:
             self.templates[sheet] = pd.read_excel(
                 self.TEMPLATE_PATH, sheetname=sheet).fillna('')
     self.common_db_integ = Common(self.data_provider, self.RED_SCORE_INTEG)
     self.kpi_static_data_integ = self.common_db_integ.get_kpi_static_data()
     self.common_db = Common(self.data_provider, self.RED_SCORE)
     self.region = self.store_info['region_name'].iloc[0]
     self.store_type = self.store_info['store_type'].iloc[0]
     if self.store_type in STORE_TYPES:  #####
         self.store_type = STORE_TYPES[self.store_type]  ####
     self.store_attr = self.store_info['additional_attribute_15'].iloc[0]
     self.kpi_static_data = self.common_db.get_kpi_static_data()
     main_template = self.templates[Const.KPIS]
     self.templates[Const.KPIS] = main_template[
         (main_template[Const.REGION] == self.region)
         & (main_template[Const.STORE_TYPE] == self.store_type)]
     self.scene_calculator = CCBOTTLERSUSSceneRedToolBox(
         data_provider, output, self.templates, self)
     self.scenes_results = pd.DataFrame(columns=Const.COLUMNS_OF_SCENE)
     self.session_results = pd.DataFrame(columns=Const.COLUMNS_OF_SESSION)
     self.all_results = pd.DataFrame(columns=Const.COLUMNS_OF_SCENE)
     self.used_scenes = []
     self.red_score = 0
     self.weight_factor = self.get_weight_factor()
Ejemplo n.º 2
0
 def __init__(self, data_provider, output, calculation_type, common_db2):
     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.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.scif = self.scif[self.scif['product_type'] != "Irrelevant"]
     self.ps_data_provider = PsDataProvider(self.data_provider, self.output)
     self.templates = {}
     self.result_values = self.ps_data_provider.get_result_values()
     self.calculation_type = calculation_type
     if self.calculation_type == Const.SOVI:
         self.TEMPLATE_PATH = Const.TEMPLATE_PATH
         self.RED_SCORE = Const.RED_SCORE
         self.RED_SCORE_INTEG = Const.RED_SCORE_INTEG
         for sheet in Const.SHEETS:
             self.templates[sheet] = pd.read_excel(self.TEMPLATE_PATH, sheetname=sheet).fillna('')
         self.converters = self.templates[Const.CONVERTERS]
         self.scenes_results = self.ps_data_provider.get_scene_results(
             self.scene_info['scene_fk'].drop_duplicates().values)
         self.scenes_results = self.scenes_results[[Const.DB_RESULT, Const.DB_SCENE_FK, Const.DB_SCENE_KPI_FK]]
     else:
         self.TEMPLATE_PATH = Const.SURVEY_TEMPLATE_PATH
         self.RED_SCORE = Const.MANUAL_RED_SCORE
         self.RED_SCORE_INTEG = Const.MANUAL_RED_SCORE_INTEG
         for sheet in Const.SHEETS_MANUAL:
             self.templates[sheet] = pd.read_excel(self.TEMPLATE_PATH, sheetname=sheet).fillna('')
     self.store_attr = self.store_info['additional_attribute_15'].iloc[0]
     self.toolbox = FunctionsToolBox(self.data_provider, self.output, self.templates, self.store_attr)
     self.common_db_integ = Common(self.data_provider, self.RED_SCORE_INTEG)
     self.kpi_static_data_integ = self.common_db_integ.get_kpi_static_data()
     self.common_db = Common(self.data_provider, self.RED_SCORE)
     self.common_db2 = common_db2
     self.region = self.store_info['region_name'].iloc[0]
     self.store_type = self.store_info['store_type'].iloc[0]
     if self.store_type in Const.STORE_TYPES:
         self.store_type = Const.STORE_TYPES[self.store_type]
     self.kpi_static_data = self.common_db.get_kpi_static_data()
     main_template = self.templates[Const.KPIS]
     self.templates[Const.KPIS] = main_template[(main_template[Const.REGION] == self.region) &
                                                (main_template[Const.STORE_TYPE] == self.store_type)]
     self.session_results = pd.DataFrame(columns=Const.COLUMNS_OF_RESULTS)
     self.all_results = pd.DataFrame(columns=Const.COLUMNS_OF_RESULTS)
     self.used_scenes = []
     self.red_score = 0
     self.set_fk = self.common_db2.get_kpi_fk_by_kpi_name(self.RED_SCORE)
     self.set_integ_fk = self.common_db2.get_kpi_fk_by_kpi_name(self.RED_SCORE_INTEG)
     self.weight_factor = self.get_weight_factor()
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
    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.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.set_up_template = pd.read_excel(os.path.join(
            os.path.dirname(os.path.realpath(__file__)), '..', 'Data',
            'gsk_set_up.xlsx'),
                                             sheet_name='Functional KPIs',
                                             keep_default_na=False)

        self.gsk_generator = GSKGenerator(self.data_provider, self.output,
                                          self.common, self.set_up_template)
Ejemplo n.º 5
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.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.united_scenes = self.get_united_scenes() # we don't need to check scenes without United products
     self.survey = Survey(self.data_provider, self.output)
     self.sos = SOS(self.data_provider, self.output)
     self.templates = {}
     self.common_db = Common(self.data_provider, CMA_COMPLIANCE)
     self.region = self.store_info['region_name'].iloc[0]
     self.store_type = self.store_info['store_type'].iloc[0]
     self.program = self.store_info['additional_attribute_14'].iloc[0]
     self.sales_center = self.store_info['additional_attribute_5'].iloc[0]
     if self.store_type in STORE_TYPES: #####
         self.store_type = STORE_TYPES[self.store_type] ####
     self.store_attr = self.store_info['additional_attribute_15'].iloc[0]
     self.kpi_static_data = self.common_db.get_kpi_static_data()
     self.total_score = 0
     for sheet in Const.SHEETS_CMA:
         self.templates[sheet] = pd.read_excel(TEMPLATE_PATH, sheetname=sheet).fillna('')
Ejemplo n.º 6
0
 def __init__(self, data_provider, output):
     self.data_provider = data_provider
     self.output = output
     self.project_name = data_provider.project_name
     self.session_uid = self.data_provider.session_uid
     self.common = Common(data_provider)
     self.tool_box = DIAGEODISPUSToolBox(self.data_provider, self.output, self.common)
Ejemplo n.º 7
0
 def __init__(self, data_provider, output):
     self.data_provider = data_provider
     self.output = output
     self.project_name = data_provider.project_name
     self.session_uid = self.data_provider.session_uid
     self.tool_box = LIONJP_SANDToolBox(self.data_provider, self.output)
     self.common = Common(data_provider)
Ejemplo n.º 8
0
 def __init__(self, data_provider, output):
     self.output = output
     self.data_provider = data_provider
     self.common = Common(self.data_provider)
     self.commonV2 = CommonV2(self.data_provider)
     self.project_name = self.data_provider.project_name
     self.session_uid = self.data_provider.session_uid
     self.k_engine = BaseCalculationsGroup(data_provider, output)
     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.commonV2.get_kpi_static_data()
     self.kpi_results_queries = []
     self.templates = {}
     self.all_products = self.commonV2.data_provider[Data.ALL_PRODUCTS]
     self.session_id = self.data_provider.session_id
     self.score_templates = {}
     self.get_templates()
     self.get_score_template()
     self.manufacturer_fk = self.all_products[
         self.all_products['manufacturer_name'] == 'Coca Cola'].iloc[0]
     self.sos = SOS(self.data_provider, self.output)
     self.total_score = 0
     self.session_fk = self.data_provider[Data.SESSION_INFO]['pk'].iloc[0]
     self.toolbox = GENERALToolBox(self.data_provider)
     self.scenes_info = self.data_provider[Data.SCENES_INFO]
     self.kpi_results_new_tables_queries = []
Ejemplo n.º 9
0
 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.templates = self.data_provider[Data.TEMPLATES]
     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.template = self.data_provider.all_templates  # templates
     self.kpi_static_data = self.common.get_new_kpi_static_data()
     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")
Ejemplo n.º 10
0
    def __init__(self, data_provider, output):
        self.output = output
        self.data_provider = data_provider
        self.common = Common(self.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.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.template_info = self.data_provider.all_templates
        self.rds_conn = ProjectConnector(self.project_name,
                                         DbUsers.CalculationEng)
        self.ps_data_provider = PsDataProvider(self.data_provider)
        self.thresholds_and_results = {}
        self.result_df = []
        self.writing_to_db_time = datetime.timedelta(0)
        self.kpi_results_queries = []
        self.potential_products = {}
        self.shelf_square_boundaries = {}
        self.average_shelf_values = {}
        self.kpi_static_data = self.common.get_kpi_static_data()
        self.kpi_results_queries = []
        self.all_template_data = parse_template(TEMPLATE_PATH, "KPI")
        self.spacing_template_data = parse_template(TEMPLATE_PATH, "Spacing")
        self.fixture_width_template = pd.read_excel(FIXTURE_WIDTH_TEMPLATE,
                                                    "Fixture Width",
                                                    dtype=pd.Int64Dtype())
        self.facings_to_feet_template = pd.read_excel(FIXTURE_WIDTH_TEMPLATE,
                                                      "Conversion Table",
                                                      dtype=pd.Int64Dtype())
        self.header_positions_template = pd.read_excel(FIXTURE_WIDTH_TEMPLATE,
                                                       "Header Positions")
        self.flip_sign_positions_template = pd.read_excel(
            FIXTURE_WIDTH_TEMPLATE, "Flip Sign Positions")
        self.custom_entity_data = self.ps_data_provider.get_custom_entities(
            1005)
        self.ignore_stacking = False
        self.facings_field = 'facings' if not self.ignore_stacking else 'facings_ign_stack'
        self.INCLUDE_FILTER = 1
        self.assortment = Assortment(self.data_provider,
                                     output=self.output,
                                     ps_data_provider=self.ps_data_provider)
        self.store_assortment = self.assortment.get_lvl3_relevant_ass()

        self.kpi_new_static_data = self.common.get_new_kpi_static_data()
        try:
            self.mpis = self.match_product_in_scene.merge(self.products, on='product_fk', suffixes=['', '_p']) \
                        .merge(self.scene_info, on='scene_fk', suffixes=['', '_s']) \
                          .merge(self.template_info, on='template_fk', suffixes=['', '_t'])
        except KeyError:
            Log.warning('MPIS cannot be generated!')
            return
        self.adp = AltriaDataProvider(self.data_provider)
Ejemplo n.º 11
0
 def __init__(self, data_provider, output):
     self.output = output
     self.data_provider = data_provider
     self.common = Common(self.data_provider)
     self.common2 = Common2(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.templates = self.data_provider.all_templates
     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_11_v3.xlsx')
     self.availability = Availability(self.data_provider)
     self.survey_response = self.data_provider[Data.SURVEY_RESPONSES]
     self.geo = GeoLocation.INBEVTRADMXGeo(self.rds_conn, self.session_uid,
                                           self.data_provider,
                                           self.kpi_static_data,
                                           self.common, self.common2)
     self.new_static_data = self.common2.kpi_static_data
     self.manufacturer_fk = 1
     self.match_displays_in_scene = self.data_provider.match_display_in_scene
     self.mpis = self.mpis_merger()
     self.all_data = pd.merge(self.scif,
                              self.match_product_in_scene[[
                                  'product_fk', 'shelf_number', 'scene_fk',
                                  'facing_sequence_number'
                              ]],
                              how="inner",
                              left_on=['item_id', 'scene_id'],
                              right_on=['product_fk',
                                        'scene_fk']).drop_duplicates()
     self.ignore_stacking = False
     self.facings_field = 'facings' if not self.ignore_stacking else 'facings_ign_stack'
     self.INCLUDE_FILTER = 1
     self.EXCLUDE_FILTER = 0
     self.CONTAIN_FILTER = 2
     self.EXCLUDE_EMPTY = False
     self.INCLUDE_EMPTY = True
Ejemplo n.º 12
0
 def main_function(self):
     """
     This is the main KPI calculation function.
     It calculates the score for every KPI set and saves it to the DB.
     """
     Common(self.data_provider).commit_results_data()
     self.calculate_red_score(
     )  # should be first, because it can include a deletion from the common
     # # self.calculate_bci()
     self.calculate_manufacturer_displays()
     self.calculate_cma_compliance()
     self.calculate_sovi()
     self.calculate_ara()
     self.calculate_msc()
     self.calculate_liberty()
     self.common_db.commit_results_data()
Ejemplo n.º 13
0
 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.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 = []
Ejemplo n.º 14
0
 def main_function(self):
     """
     This is the main KPI calculation function.
     It calculates the score for every KPI set and saves it to the DB.
     """
     Common(self.data_provider).commit_results_data()
     self.calculate_red_score()
     # self.calculate_bci()
     # self.calculate_manufacturer_displays()
     self.calculate_cma_compliance()
     # self.calculate_cma_compliance_sw()
     self.calculate_warehouse_juice()
     self.calculate_sovi()
     self.calculate_msc()
     self.calculate_liberty()
     self.calculate_contact_center()
     self.calculate_facings_by_shelf()
     self.common_v2.commit_results_data()  # saves results to new tables
Ejemplo n.º 15
0
 def __init__(self, data_provider, output):
     self.output = output
     self.data_provider = data_provider
     self.common = Common(self.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.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.template_info = self.data_provider.all_templates
     self.rds_conn = ProjectConnector(self.project_name, DbUsers.CalculationEng)
     self.ps_data_provider = PsDataProvider(self.data_provider)
     self.match_product_in_probe_state_reporting = self.ps_data_provider.get_match_product_in_probe_state_reporting()
     self.kpi_results_queries = []
     self.fixture_width_template = pd.read_excel(FIXTURE_WIDTH_TEMPLATE, "Fixture Width", dtype=pd.Int64Dtype())
     self.facings_to_feet_template = pd.read_excel(FIXTURE_WIDTH_TEMPLATE, "Conversion Table", dtype=pd.Int64Dtype())
     self.header_positions_template = pd.read_excel(FIXTURE_WIDTH_TEMPLATE, "Header Positions")
     self.flip_sign_positions_template = pd.read_excel(FIXTURE_WIDTH_TEMPLATE, "Flip Sign Positions")
     self.custom_entity_data = self.ps_data_provider.get_custom_entities(1005)
     self.ignore_stacking = False
     self.facings_field = 'facings' if not self.ignore_stacking else 'facings_ign_stack'
     self.kpi_new_static_data = self.common.get_new_kpi_static_data()
     try:
         self.mpis = self.match_product_in_scene.merge(self.products, on='product_fk', suffixes=['', '_p']) \
                     .merge(self.scene_info, on='scene_fk', suffixes=['', '_s']) \
                       .merge(self.template_info, on='template_fk', suffixes=['', '_t'])
     except KeyError:
         Log.warning('MPIS cannot be generated!')
         return
     self.adp = AltriaDataProvider(self.data_provider)
     self.active_kpis = self._get_active_kpis()
     self.external_targets = self.ps_data_provider.get_kpi_external_targets()
     self.survey_dot_com_collected_this_session = self._get_survey_dot_com_collected_value()
     self._add_smart_attributes_to_mpis()
     self.scene_graphs = {}
     self.excessive_flipsigns = False
     self.incorrect_tags_in_pos_areas = []
Ejemplo n.º 16
0
 def __init__(self, data_provider, output, common_db2):
     self.output = output
     self.data_provider = data_provider
     self.common_db = Common(self.data_provider, SUB_PROJECT)
     self.common_db2 = common_db2
     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.scif = self.scif[~(self.scif['product_type'] == 'Irrelevant')]
     self.sw_scenes = self.get_relevant_scenes(
     )  # we don't need to check scenes without United products
     self.survey = Survey(self.data_provider, self.output)
     self.sos = SOS(self.data_provider, self.output)
     self.results = self.data_provider[Data.SCENE_KPI_RESULTS]
     self.region = self.store_info['region_name'].iloc[0]
     self.store_type = self.store_info['store_type'].iloc[0]
     self.program = self.store_info['additional_attribute_3'].iloc[0]
     self.sales_center = self.store_info['additional_attribute_5'].iloc[0]
     if self.store_type in STORE_TYPES:  #####
         self.store_type = STORE_TYPES[self.store_type]  ####
     self.store_attr = self.store_info['additional_attribute_3'].iloc[0]
     # self.kpi_static_data = self.common_db.get_kpi_static_data()
     self.ignore_stacking = False
     self.facings_field = 'facings' if not self.ignore_stacking else 'facings_ign_stack'
     self.sub_scores = defaultdict(int)
     self.sub_totals = defaultdict(int)
     self.templates = self.get_template()
     self.hierarchy = self.templates[Const.KPIS].set_index(
         Const.KPI_NAME)[Const.PARENT].to_dict()
     self.templates = self.get_relevant_template(self.templates)
     self.children = self.templates[Const.KPIS][Const.KPI_NAME]
     self.tools = Shared(self.data_provider, self.output)
Ejemplo n.º 17
0
 def __init__(self, data_provider, output, common_db2):
     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.manufacturer_fk = 1
     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.united_scenes = self.get_united_scenes(
     )  # we don't need to check scenes without United products
     self.survey = Survey(self.data_provider, self.output)
     self.ps_data_provider = PsDataProvider(self.data_provider, self.output)
     self.sos = SOS(self.data_provider, self.output)
     self.templates = {}
     self.common_db = Common(self.data_provider, SUB_PROJECT)
     self.common_db2 = common_db2
     self.result_values = self.ps_data_provider.get_result_values()
     self.region = self.store_info['region_name'].iloc[0]
     self.store_type = self.store_info['store_type'].iloc[0]
     self.program = self.store_info['additional_attribute_14'].iloc[0]
     self.sales_center = self.store_info['additional_attribute_5'].iloc[0]
     if self.store_type in STORE_TYPES:
         self.store_type = STORE_TYPES[self.store_type]
     self.store_attr = self.store_info['additional_attribute_15'].iloc[0]
     self.kpi_static_data = self.common_db.get_kpi_static_data()
     self.ignore_stacking = False
     self.facings_field = 'facings' if not self.ignore_stacking else 'facings_ign_stack'
     self.total_score = 0
     self.total_count = 0
     for sheet in Const.SHEETS_CMA:
         self.templates[sheet] = pd.read_excel(TEMPLATE_PATH,
                                               sheetname=sheet).fillna('')
     self.tools = Shared(self.data_provider, self.output)
Ejemplo n.º 18
0
 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.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.template_data = pd.read_excel(TEMPLATE_PATH, 'KPIs').fillna('')
     self.rds_conn = PSProjectConnector(self.project_name, DbUsers.CalculationEng)
     self.kpi_static_data = self.common.get_new_kpi_static_data()
     self.kpi_static_data = self.kpi_static_data[self.kpi_static_data['kpi_family_fk'] == CCPHLConsts.CUSTOM_KPIS]
     self.kpi_results_queries = []
     self.mapping_param = {"manufacturer": "manufacturer_name"}
     self.mapping_entity = {"manufacturer": "manufacturer_fk", "store": "store_id",
                            "scene_type": "template_fk", "brand": "brand_fk", "product": "product_fk"}
Ejemplo n.º 19
0
 def __init__(self, data_provider, output, common_v2):
     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.scif = self.data_provider[Data.SCENE_ITEM_FACTS]
     self.scif = self.scif[~(self.scif['product_type'] == 'Irrelevant')]
     self.sw_scenes = self.get_sw_scenes(
     )  # we don't need to check scenes without United products
     self.survey = Survey(self.data_provider, self.output)
     self.sos = SOS(self.data_provider, self.output)
     self.templates = {}
     self.common_db = Common(self.data_provider, CMA_COMPLIANCE)
     self.common_db2 = common_v2
     self.common_scene = CommonV2(self.data_provider)
     self.region = self.store_info['region_name'].iloc[0]
     self.store_type = self.store_info['store_type'].iloc[0]
     self.program = self.store_info['additional_attribute_3'].iloc[0]
     self.sales_center = self.store_info['additional_attribute_5'].iloc[0]
     if self.store_type in STORE_TYPES:  #####
         self.store_type = STORE_TYPES[self.store_type]  ####
     self.store_attr = self.store_info['additional_attribute_3'].iloc[0]
     self.kpi_static_data = self.common_db.get_kpi_static_data()
     self.total_score = 0
     self.sub_scores = defaultdict(int)
     self.sub_totals = defaultdict(int)
     self.ignore_stacking = False
     self.facings_field = 'facings' if not self.ignore_stacking else 'facings_ign_stack'
     for sheet in Const.SHEETS_CMA:
         self.templates[sheet] = pd.read_excel(TEMPLATE_PATH,
                                               sheetname=sheet).fillna('')