Computer Code

Some programming code:

    USE [Bridge]
    GO
    /****** Object:  StoredProcedure [dbo].[AutoTermAuto]    Script Date: 1/17/2023 10:14:34 PM ******/
    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO
    -- =============================================
    -- Author:		
    -- Description:	
    -- =============================================
    ALTER PROCEDURE [dbo].[AutoTermAuto]
        
    AS
    BEGIN
        -- SET NOCOUNT ON added to prevent extra result sets from
        -- interfering with SELECT statements.
        SET NOCOUNT ON;
    
        DELETE FROM [Bridge].[dbo].[AutoTerm]
         Where ClientID is not null
    
    
        -- Insert statements for procedure here
         DROP TABLE IF EXISTS #ATermLastPaydate
        DROP TABLE IF EXISTS #ATermfinal
    
     ----ANY ACTIVE EMPLOYEE REMOVE FROM HISTORY 
    
            DELETE [Bridge].[dbo].[AutoTermHistory] 
            FROM 
             [Bridge].[dbo].[AutoTermHistory] h INNER JOIN [Welland_Export_Cloud].[dbo].[EMPLOYEE_COM] ec
            ON h.ClientID = RIGHT('000000' + CAST(ec.Client_ID as varchar (6)), 6) 
            AND h.EE_ID = ec.EE_ID 
            AND h.LastHireDate = ec.EE_Last_Hire_Date
            WHERE (ec.EE_Status_Code <> 'T'
            AND h.EE_Sort_Name is not null)
    
    --------------------------------------------------
     SELECT DISTINCT
        e.Client_ID
        ,a.ClientName
        ,e.EE_Status_Code 
        ,e.EE_ID	
        ,e.EE_Last_Hire_Date	
        ,a.AutoTermDays
        ,a.PayRepID
        ,MAX(p.Pay_Date) as lastMoneypaydate
        INTO #ATermLastPaydate
    FROM [Welland_Export_Cloud].[dbo].[EMPLOYEE_COM] e
      LEFT JOIN [Bridge].[dbo].[AutoTermSet] a
     ON a.ClientID = e.Client_ID  
     LEFT JOIN [Welland_Export_Cloud].[dbo].[EPV] p
    ON p.Client_ID = e.Client_ID AND p.EE_ID = e.EE_ID AND p.Tot_Earn_Amt > 0
    WHERE e.EE_Status_Code <> 'T'
    AND a.AutoTermYesNo = 1  
    --AND e.EE_ID	= 'H48473'
    GROUP BY 
        e.Client_ID
        ,a.ClientName
        ,e.EE_Status_Code 
        ,e.EE_ID		
        ,e.EE_Last_Hire_Date	
        ,a.AutoTermDays
        ,a.PayRepID
    
    ----------------------------------------------------
        SELECT DISTINCT
                RIGHT('000000' + CAST(t.Client_ID as varchar (6)), 6) as Client_ID	
            --	,t.ClientName
                ,t.EE_Status_Code
                ,t.EE_ID
                ,ep.EE_Sort_Name
                ,t.EE_Last_Hire_Date
                ,p.Pay_Period_End_Date as PayPeriodEnd
                ,t.lastMoneypaydate	 		
                
                ,CASE WHEN t.lastMoneypaydate is NULL THEN  DATEDIFF(DAY, t.EE_Last_Hire_Date, GETDATE()) 
                ELSE DATEDIFF(DAY, t.lastMoneypaydate, GETDATE()) END  as DayWithoutPay
                --,DATEDIFF(DAY, t.lastMoneypaydate, GETDATE())   as DayWithoutPay
                ,t.AutoTermDays as AutotermSetDay
                ,t.AutoTermDays - DATEDIFF(DAY, t.lastMoneypaydate, GETDATE()) as dayleftToAutoterm
                ,b.Ben_Status_Code as EStatus
                ,t.PayRepID
                INTO #ATermfinal
        FROM #ATermLastPaydate t
        LEFT JOIN [Welland_Export_Cloud].[dbo].[EPV] p
        ON p.Client_ID = t.Client_ID AND p.EE_ID = t.EE_ID AND t.lastMoneypaydate = p.Pay_Date
        LEFT JOIN [Welland_Export_Cloud].[dbo].[EMPLOYEE_PER] ep
        ON ep.u2_id = t.EE_ID 
        LEFT JOIN (SELECT Client_ID ,EE_ID ,Ben_Status_Code				 
                FROM  [Welland_Export_Cloud].[dbo].[EMPLOYEE_BENEFIT_ENROLLMENTS]
                WHERE Ben_Status_Code = 'A'
                GROUP BY  Client_ID 
                        ,EE_ID 
                        ,Ben_Status_Code) b
        ON b.Client_ID = t.Client_ID AND b.EE_ID = t.EE_ID 
        --AND p.Tot_Earn_Amt > 0
    --	WHERE t.EE_ID IN ('A05194','A81586', 'H75209', 'A70609', 'E15062')
           
           -------------------------------------
        UPDATE #ATermfinal
        SET DayWithoutPay = DATEDIFF(Day, EE_Last_Hire_Date, GETDATE()) 
        WHERE EE_Last_Hire_Date > lastMoneypaydate	   
    
    
           UPDATE #ATermfinal
           SET dayleftToAutoterm = AutotermSetDay - DayWithoutPay
    
        
        UPDATE #ATermfinal
        SET EStatus = ec.gg
        FROM
         (SELECT 
            Client_ID
            ,EE_ID
            ,EE_Last_Hire_Date
            ,ONBOARD_INPROGRESS	 
            ,'ONBOARDING' as gg
         FROM [Welland_Export_Cloud].[dbo].[EMPLOYEE_COM]
         WHERE ONBOARD_INPROGRESS = 'Y'	) ec
         WHERE ec.Client_ID = #ATermfinal.Client_ID
         AND ec.EE_ID = #ATermfinal.EE_ID
         AND ec.EE_Last_Hire_Date = #ATermfinal.EE_Last_Hire_Date
    
    
        UPDATE #ATermfinal
        SET EStatus = ec.gg
        FROM
         (SELECT 
            Client_ID
            ,EE_ID
            ,EE_Last_Hire_Date
            ,'Family Member' as gg
         FROM [Welland_Export_Cloud].[dbo].[EMPLOYEE_COM]
         WHERE EE_Type_Code = 'FM'	) ec
         WHERE ec.Client_ID = #ATermfinal.Client_ID
         AND ec.EE_ID = #ATermfinal.EE_ID
         AND ec.EE_Last_Hire_Date = #ATermfinal.EE_Last_Hire_Date
    
         
          UPDATE #ATermfinal
           SET EStatus =  'ActiveBenefit'  
           WHERE Estatus = 'A'
    
    
           UPDATE #ATermfinal
           SET PayPeriodEnd = DATEADD(day, 1, EE_Last_Hire_Date)
           WHERE PayPeriodEnd is NULL
           
         INSERT INTO [Bridge].[dbo].[AutoTerm]
               ([ClientID]
               ,[EmpStatus]
               ,[EE_ID]
               ,[EE_Sort_Name]
               ,[EE_Last_Hire_Date]
        ,[LastPaidPeriodEnd]
        ,[LastInvoiceDate]
               ,[DaysWithoutPay]
               ,[AutotermSet]
               ,[DaysLeftToAutoterm]
               ,[BenStatus]
               ,PayRepID
               )  
               
    SELECT	t.Client_ID
        ,t.EE_Status_Code
        ,t.EE_ID
        ,t.EE_Sort_Name
        ,t.EE_Last_Hire_Date
        ,t.PayPeriodEnd
        ,t.lastMoneypaydate
        ,t.DayWithoutPay
        ,t.AutotermSetDay
        ,t.dayleftToAutoterm
        ,t.EStatus
        ,t.PayRepID
            FROM #ATermfinal t		
            WHERE t.dayleftToAutoterm < 3 
    END
    
         DROP TABLE IF EXISTS #ATermLastPaydate
        DROP TABLE IF EXISTS #ATermfinal