16-06-2026 1st commit
This commit is contained in:
+165
-60
@@ -432,65 +432,170 @@ def fetch_Coverage(engine: Engine, mids: list[int]) -> pl.DataFrame:
|
||||
mid_list = ",".join(str(mid) for mid in mids)
|
||||
|
||||
sql = f"""
|
||||
SELECT
|
||||
{p} AS project_id,
|
||||
JP.MID,
|
||||
sm.StoreId AS store_id,
|
||||
JP.EmpId AS employee_id,
|
||||
CONVERT(date, JP.VisitDate) AS visit_date,
|
||||
JP.InTime AS in_time,
|
||||
JP.OutTime AS out_time,
|
||||
CASE
|
||||
WHEN JP.OutTime IS NULL OR JP.InTime IS NULL THEN NULL
|
||||
WHEN JP.OutTime < JP.InTime THEN 0
|
||||
ELSE DATEDIFF(SECOND, JP.InTime, JP.OutTime) / 60
|
||||
END AS duration_minutes,
|
||||
CASE
|
||||
WHEN (
|
||||
SELECT TOP 1 EmpId
|
||||
FROM OneApp_KelloggsMT.dbo.T_StoreCoverage SC
|
||||
WHERE SC.EmpId = JP.EmpId
|
||||
AND SC.StoreId = JP.StoreId
|
||||
AND SC.VisitDate = JP.VisitDate
|
||||
AND SC.ReasonId IN (0,1,3,9,10,19,20)
|
||||
) > 0
|
||||
THEN 'Y' ELSE 'N'
|
||||
END AS is_covered,
|
||||
CASE JP.Deviation
|
||||
WHEN 0 THEN 'Planned'
|
||||
WHEN 1 THEN 'Adhoc'
|
||||
WHEN 2 THEN 'Beat Plan'
|
||||
WHEN 3 THEN 'Non Merchandised'
|
||||
WHEN 4 THEN 'Add New Store'
|
||||
WHEN 5 THEN 'Non Program'
|
||||
ELSE ''
|
||||
END AS coverage_type,
|
||||
sm.StoreTypeId AS storetype_id,
|
||||
Em.SupervisorId AS supervisor_id,
|
||||
ISNULL(JP.ReasonId, 0) AS reason_id,
|
||||
sm.CameraAllow AS camera_allow,
|
||||
CAST(
|
||||
CASE
|
||||
WHEN sm.Latitude IS NULL OR sm.Latitude = 0 THEN 0
|
||||
WHEN sm.Longitude IS NULL OR sm.Longitude = 0 THEN 0
|
||||
WHEN JP.Latitude IS NULL OR JP.Latitude = 0 THEN 0
|
||||
WHEN JP.Longitude IS NULL OR JP.Longitude = 0 THEN 0
|
||||
ELSE SQRT(
|
||||
POWER(69.1 * (JP.Latitude - sm.Latitude), 2) +
|
||||
POWER(69.1 * (sm.Longitude - JP.Longitude)
|
||||
* COS(JP.Latitude / 57.3), 2)
|
||||
) * 1000
|
||||
END AS FLOAT
|
||||
) AS distance_meters,
|
||||
GETDATE() AS update_date,
|
||||
'ETL-SQLAlchemy' AS update_by
|
||||
FROM OneApp_KelloggsMT.dbo.T_StoreCoverage JP WITH (NOLOCK)
|
||||
INNER JOIN OneApp_KelloggsMT.dbo.vw_StoreDetail sm
|
||||
ON JP.StoreId = sm.StoreId
|
||||
INNER JOIN OneApp_KelloggsMT.dbo.vw_Employee_Detail Em
|
||||
ON JP.EmpId = Em.EmpId
|
||||
WHERE JP.MID IN ({mid_list})
|
||||
AND Em.UserName NOT LIKE 'test%'
|
||||
WITH SOS_BASE AS
|
||||
(
|
||||
SELECT
|
||||
sm.CountryName,
|
||||
sc.MID,
|
||||
sm.RegionName,
|
||||
sm.StateName,
|
||||
sm.CityName,
|
||||
Em.SupervisorName,
|
||||
em.EmpId,
|
||||
Em.EmpName AS EmployeeName,
|
||||
Em.DesignationName AS Designation,
|
||||
sm.StoreId,
|
||||
CONVERT(varchar, sc.VisitDate, 101) AS VisitDate,
|
||||
sm.StoreCode,
|
||||
sm.StoreName,
|
||||
sm.Address,
|
||||
sm.StoreTypeid,
|
||||
sm.ChannelId,
|
||||
sm.ChainName,
|
||||
|
||||
MSD.SOSDefinitionName,
|
||||
|
||||
CASE
|
||||
WHEN ISNULL(TS.SOSHeaderTable,'')='Master_Category' THEN 'Category'
|
||||
WHEN ISNULL(TS.SOSHeaderTable,'')='Master_SubCategory' THEN 'SubCategory'
|
||||
WHEN ISNULL(TS.SOSHeaderTable,'')='Master_Brand' THEN 'Brand'
|
||||
WHEN ISNULL(TS.SOSHeaderTable,'')='Master_SubBrand' THEN 'SubBrand'
|
||||
END AS SOSHeaderDeatils,
|
||||
|
||||
TS.SOSHeaderName,
|
||||
TS.SOSHeaderValue AS SOSHeaderID,
|
||||
|
||||
'Header_Image' AS HDR1,
|
||||
|
||||
CASE
|
||||
WHEN ISNULL(TSC.SOSChildTable,'')='Master_Category' THEN 'Category'
|
||||
WHEN ISNULL(TSC.SOSChildTable,'')='Master_SubCategory' THEN 'SubCategory'
|
||||
WHEN ISNULL(TSC.SOSChildTable,'')='Master_Brand' THEN 'Brand'
|
||||
WHEN ISNULL(TSC.SOSChildTable,'')='Master_SubBrand' THEN 'SubBrand'
|
||||
END AS SOSChildDeatils,
|
||||
|
||||
TSC.SOSChildName,
|
||||
TSC.SOSChildValue AS SOSChildID,
|
||||
TSC.ChildTotalFacing,
|
||||
TS.SOSHeaderFacing,
|
||||
TSC.ChildSelfFacing,
|
||||
|
||||
(
|
||||
SELECT TOP 1 SOSTarget
|
||||
FROM OneApp_KelloggsMT.dbo.Mapping_StoreShareOfShelfTarget a
|
||||
WHERE a.SOSDefinitionId = MSD.SOSDefinitionId
|
||||
AND a.StoreId = sm.StoreId
|
||||
AND a.FromDate <= sc.VisitDate
|
||||
AND a.ToDate >= sc.VisitDate
|
||||
) AS SOSTarget,
|
||||
|
||||
CASE
|
||||
WHEN ISNULL(SHI.SOSHeaderImage,'') = ''
|
||||
THEN ''
|
||||
ELSE
|
||||
'https://kimt1.parinaam.in/Upload/SOSImages/'
|
||||
+ SHI.SOSHeaderImage
|
||||
END AS SOSHeaderImg
|
||||
|
||||
FROM OneApp_KelloggsMT.dbo.T_ShareOfShelfHeader ts
|
||||
|
||||
INNER JOIN OneApp_KelloggsMT.dbo.T_StoreCoverage sc
|
||||
ON ts.MID = sc.MID
|
||||
|
||||
INNER JOIN OneApp_KelloggsMT.dbo.vw_StoreDetail sm
|
||||
ON sc.StoreId = sm.StoreId
|
||||
|
||||
INNER JOIN OneApp_KelloggsMT.dbo.vw_Employee_Detail Em
|
||||
ON sc.EmpId = Em.EmpId
|
||||
|
||||
INNER JOIN OneApp_KelloggsMT.dbo.T_ShareOfShelfChild tsc
|
||||
ON ts.SOSId = tsc.SOSId
|
||||
|
||||
INNER JOIN OneApp_KelloggsMT.dbo.Master_ShareOfShelfDefinition msd
|
||||
ON msd.SOSDefinitionId = tsc.SOSDefinitionId
|
||||
|
||||
LEFT JOIN OneApp_KelloggsMT.dbo.T_ShareOfShelfHeaderImages SHI
|
||||
ON ts.SOSId = SHI.SOSId
|
||||
AND ts.SOSHeaderValue = SHI.SOSHeaderValue
|
||||
|
||||
LEFT JOIN OneApp_KelloggsMT.dbo.T_ShareOfShelfChildImages SCI
|
||||
ON tsc.SOSId = SCI.SOSId
|
||||
AND tsc.SOSChildValue = SCI.SOSChildValue
|
||||
|
||||
WHERE Em.EmpName NOT LIKE 'test%'
|
||||
AND sc.MID IN ({mid_list})
|
||||
),
|
||||
|
||||
SOS_PIVOT AS
|
||||
(
|
||||
SELECT *
|
||||
FROM SOS_BASE
|
||||
PIVOT
|
||||
(
|
||||
MIN(SOSHeaderImg)
|
||||
FOR HDR1 IN ([Header_Image])
|
||||
) pvt
|
||||
)
|
||||
|
||||
SELECT
|
||||
'40148' AS ProjectId,
|
||||
MID,
|
||||
EmpId AS employee_id,
|
||||
StoreId AS store_id,
|
||||
VisitDate AS visit_date,
|
||||
StoreTypeid AS storetype_id,
|
||||
ChannelId AS channel_id,
|
||||
SOSDefinitionName,
|
||||
SOSHeaderDeatils,
|
||||
SOSHeaderName,
|
||||
SOSHeaderID,
|
||||
SOSChildDeatils,
|
||||
SOSChildName,
|
||||
SOSChildID,
|
||||
SOSHeaderFacing,
|
||||
ChildTotalFacing,
|
||||
ChildSelfFacing,
|
||||
SOSTarget,
|
||||
GETDATE() AS update_date,
|
||||
'SP-Pius' AS update_by
|
||||
|
||||
FROM SOS_PIVOT
|
||||
|
||||
GROUP BY
|
||||
CountryName,
|
||||
MID,
|
||||
RegionName,
|
||||
StateName,
|
||||
CityName,
|
||||
SupervisorName,
|
||||
EmpId,
|
||||
EmployeeName,
|
||||
Designation,
|
||||
StoreId,
|
||||
VisitDate,
|
||||
StoreCode,
|
||||
StoreName,
|
||||
Address,
|
||||
StoreTypeid,
|
||||
ChannelId,
|
||||
ChainName,
|
||||
SOSDefinitionName,
|
||||
SOSHeaderDeatils,
|
||||
SOSHeaderName,
|
||||
SOSHeaderID,
|
||||
SOSChildDeatils,
|
||||
SOSChildName,
|
||||
SOSChildID,
|
||||
ChildTotalFacing,
|
||||
SOSHeaderFacing,
|
||||
ChildSelfFacing,
|
||||
SOSTarget
|
||||
|
||||
ORDER BY
|
||||
RegionName,
|
||||
StateName,
|
||||
CityName,
|
||||
VisitDate;
|
||||
"""
|
||||
|
||||
|
||||
@@ -856,7 +961,7 @@ def fetch_Web_Logins(
|
||||
WHERE CAST(AL.Date AS DATE) = '{run_date}'
|
||||
"""
|
||||
|
||||
|
||||
|
||||
log.info(f"Fetching Web Login data for {run_date}")
|
||||
|
||||
df = pl.read_database(
|
||||
|
||||
Reference in New Issue
Block a user