SHARE
TWEET

Untitled

a guest Nov 13th, 2019 94 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. USE [MRCSFA]
  2. GO
  3. /****** Object:  StoredProcedure [dbo].[sp_Sync_incentive_new]    Script Date: 11/14/2019 11:33:57 AM ******/
  4. SET ANSI_NULLS ON
  5. GO
  6. SET QUOTED_IDENTIFIER ON
  7. GO
  8. -- =============================================
  9. --Chỉ lấy IsPDA=1 (chỉ trả PDA, trước đây dùng để xác định IsDirect: 1|0 : Vansales|presales)
  10. --Có thêm trả hàng
  11. --Vì DMSEvaluationDefine ko có Date nên DMSAimIncentiveProgram được xác định sau khi đã xác định KH được trả thưởng
  12. -- =============================================
  13. -- exec [sp_Sync_incentive_new] 3
  14. ALTER PROCEDURE [dbo].[sp_Sync_incentive_new] @CompanyID INT
  15. AS
  16.     BEGIN
  17.         TRUNCATE TABLE DMSAimIncentiveList
  18.         TRUNCATE TABLE DMSAimIncentiveByAmount
  19.         TRUNCATE TABLE dbo.DMSAimIncentiveProgram
  20.        
  21.         DECLARE @INCENTIVE_TYPE_INVENTORY NVARCHAR(1)  = 'P';
  22.         DECLARE @INCENTIVE_TYPE_AMOUNT NVARCHAR(1)  = 'V';
  23.         DECLARE @INCENTIVE_TYPE_BOTH_PDA NVARCHAR(1)  = 'B';
  24.  
  25.     --PROGRAM TYPE
  26.         DECLARE @PROGRAM_TYPE_PERFECT_STORE NVARCHAR(1)  = 'P';
  27.         DECLARE @PROGRAM_TYPE_VISIBILITY NVARCHAR(1)  = 'V';
  28.              
  29.     -- Lấy line được trả thưởng chưa import qua Acu (Qua Acu được check done trong DMSEvaluationListDetails)
  30.     -- Lấy từ đơn hàng có OrderDate < GETDATE(), đơn trong ngày không lấy
  31.              
  32.         SELECT  DISTINCT
  33.                 d.RefNbr ,
  34.                 d.IncentiveLineNbr
  35.         INTO    #tempUnImportDone
  36.         FROM    [172.17.0.235].[MRCDMS].dbo.DMSPDAIncentiveDetail d
  37.                 INNER JOIN [172.17.0.235].[MRCDMS].dbo.DMSPDAOrder o ON o.OrderNbr = d.OrderNbr
  38.                                                            AND o.CompanyID = d.CompanyID
  39.         WHERE   o.Status = 'U'
  40.                 AND DATEDIFF(dd, o.OrderDate, GETDATE()) > 0
  41.                 AND d.CompanyID = @CompanyID
  42.      
  43.         SELECT  c.CustomerCD ,
  44.                 c.LocationCD ,
  45.                 c.UserName ,
  46.                 d.RefNbr ,
  47.                 d.LineNbr ,
  48.                 d.InventoryID ,
  49.                 d.Qty ,
  50.                 d.totalbonus ,
  51.                 d.IncentiveType,
  52.                 d.IncentiveFor,
  53.                 br.BreakByLevelName,
  54.                 RTRIM(p.FromPeriod) AS Period,
  55.                 ISNULL (d.expirydate, EOMONTH(GETDATE())) AS EndDate,
  56.                 d.isdone,
  57.                 d.Reason
  58.         INTO    #tempDetail
  59.         FROM    [172.17.0.235].[MRCDMS].dbo.DMSEvaluationDefine p
  60.                 JOIN [172.17.0.235].[MRCDMS].dbo.DMSEvaluationList l ON l.CompanyID = p.CompanyID
  61.                                                        AND l.RefNbr = p.RefNbr
  62.                 JOIN [172.17.0.235].[MRCDMS].dbo.DMSProgramBreakDownDetail br ON br.CompanyID = l.CompanyID
  63.                                                         AND br.ProgramID = l.ProgramID
  64.                                                         AND br.BreakByLevelID = l.LevelID
  65.                 JOIN [172.17.0.235].[MRCDMS].dbo.DMSEvaluationListDetails d ON d.CompanyID = d.CompanyID
  66.                                                               AND d.RefNbr =p.RefNbr
  67.                                                               AND d.CustomerID = l.CustomerID
  68.                 JOIN dbo.DMSAllCustomer a ON a.LocationID = d.CustomerID
  69.                 JOIN dbo.DMSAimCustomer c ON a.CustomerCD = c.CustomerCD
  70.                                                    AND a.LocationCD = c.LocationCD
  71.                 LEFT JOIN #tempUnImportDone un ON un.IncentiveLineNbr = d.LineNbr
  72.                                                   AND p.RefNbr = un.RefNbr
  73.         WHERE   p.CompanyID = @CompanyID
  74.                 AND p.Status = 'E'
  75.                 --AND p.IsPDA = 1
  76.                 AND ISNULL(d.isdone, 0) = 0 -- lấy line chưa done
  77.                 AND d.Status = 'R'            
  78.         --ko có beginDate
  79.                 AND DATEDIFF(dd, GETDATE(), ISNULL(d.expirydate, GETDATE())) >= 0
  80.                 AND un.IncentiveLineNbr IS NULL -- bỏ line chưa import
  81.  
  82.         SELECT RefNbr,
  83.                 MIN(EndDate) AS EndDate
  84.         INTO #tempEndDate
  85.         FROM #tempDetail
  86.         GROUP BY RefNbr
  87.    
  88.         INSERT INTO dbo.DMSAimIncentiveList
  89.         (
  90.             UserName,
  91.             CustomerCD,
  92.             LocationCD,
  93.             IncentiveCD,
  94.             InventoryCD,
  95.             IncentiveQty,
  96.             IsDirect,
  97.             LineNbr,
  98.             IncentiveFor,
  99.             Level,
  100.             IsDone,
  101.             Reason
  102.            
  103.         )
  104.         SELECT DISTINCT
  105.                UserName,          -- UserName - nvarchar(50)
  106.                CustomerCD,        -- CustomerCD - nvarchar(50)
  107.                LocationCD,        -- LocationCD - nvarchar(50)
  108.                RefNbr,            -- IncentiveCD - nvarchar(50)
  109.                i.InventoryCD,     -- InventoryCD - nvarchar(50)
  110.                Qty,               -- IncentiveQty - int
  111.                0,                 -- IsDirect - int  
  112.                d.LineNbr,         -- LineNbr - int      
  113.                d.IncentiveFor,    -- IncentiveFor - nvarchar(1)
  114.                d.BreakByLevelName, -- Level - nvarchar(50)
  115.                ISNULL(d.isdone,0),
  116.                Reason
  117.         FROM #tempDetail d
  118.             INNER JOIN dbo.DMSAimInventoryList i
  119.                 ON d.InventoryID = i.InventoryID
  120.         WHERE ISNULL(d.Qty, 0) > 0
  121.               AND d.IncentiveType = @INCENTIVE_TYPE_INVENTORY;
  122.  
  123.         INSERT INTO dbo.DMSAimIncentiveByAmount
  124.         (
  125.             UserName,
  126.             CustomerCD,
  127.             LocationCD,
  128.             IncentiveCD,
  129.             Level,
  130.             Amount,
  131.             IncentiveFor,
  132.             LineNbr,
  133.             IsDone,
  134.             Reason
  135.         )
  136.         SELECT DISTINCT
  137.                UserName,         -- UserName - nvarchar(50)
  138.                CustomerCD,       -- CustomerCD - nvarchar(50)
  139.                LocationCD,       -- LocationCD - nvarchar(50)
  140.                RefNbr,           -- IncentiveCD - nvarchar(50)
  141.                BreakByLevelName, -- Level - nvarchar(50)
  142.                totalbonus,       -- Amount - float
  143.                IncentiveFor,     -- IncentiveFor - nvarchar(1)
  144.                LineNbr,           -- LineNbr - int
  145.                ISNULL(isdone,0),
  146.                Reason
  147.         FROM #tempDetail
  148.         WHERE ISNULL(totalbonus, 0) > 0
  149.               AND IncentiveType = @INCENTIVE_TYPE_AMOUNT;
  150.  
  151.  
  152.    
  153.     --Chỉ lấy CT có KH đang được trả thưởng
  154.         INSERT INTO dbo.DMSAimIncentiveProgram
  155.         (
  156.             UserName,
  157.             IncentiveCD,
  158.             Descr,
  159.             StartDate,
  160.             EndDate,
  161.             Period,
  162.             IncentiveType,
  163.             ProgramType
  164.         )
  165.         SELECT DISTINCT
  166.                e.EmployeeICD,             -- UserName - nvarchar(50)
  167.                d.RefNbr,                  -- IncentiveCD - nvarchar(50)
  168.                ISNULL(d.Descr, d.RefNbr), -- Descr - nvarchar(255)
  169.                GETDATE(),                 -- StartDate - date
  170.                ed.EndDate,                -- EndDate - date
  171.                RTRIM(d.FromPeriod),     -- Period - nvarchar(50)
  172.                CASE
  173.                    WHEN a.IncentiveCD IS NOT NULL
  174.                         AND i.IncentiveCD IS NOT NULL THEN
  175.                        @INCENTIVE_TYPE_BOTH_PDA
  176.                    WHEN a.IncentiveCD IS NOT NULL THEN
  177.                        @INCENTIVE_TYPE_AMOUNT
  178.                    ELSE
  179.                        @INCENTIVE_TYPE_INVENTORY
  180.                END,                        -- IncentiveType - nvarchar(1)
  181.                IIF(ISNULL(p.IsPerfectStore, 0) = 1,
  182.                 @PROGRAM_TYPE_PERFECT_STORE, @PROGRAM_TYPE_VISIBILITY) -- ProgramType nvarchar(3)
  183.                
  184.         FROM [172.17.0.235].[MRCDMS].dbo.DMSEvaluationDefine d
  185.             LEFT JOIN [172.17.0.235].[MRCDMS].dbo.DMSProgram p ON   p.CompanyID = d.CompanyID
  186.                                             AND p.ProgramID = d.ProgramID
  187.             CROSS JOIN dbo.DMSAimEmployeeList e
  188.             JOIN #tempEndDate ed
  189.                 ON d.RefNbr = ed.RefNbr
  190.             LEFT JOIN
  191.             (
  192.                 SELECT DISTINCT
  193.                        UserName,
  194.                        IncentiveCD
  195.                 FROM dbo.DMSAimIncentiveByAmount
  196.             ) a
  197.                 ON d.RefNbr = a.IncentiveCD
  198.                    AND a.UserName = e.EmployeeICD
  199.             LEFT JOIN
  200.             (SELECT DISTINCT UserName, IncentiveCD FROM dbo.DMSAimIncentiveList) i
  201.                 ON i.IncentiveCD = d.RefNbr
  202.                    AND i.UserName = e.EmployeeICD
  203.         WHERE d.CompanyID = @CompanyID
  204.               AND
  205.               (
  206.                   a.IncentiveCD IS NOT NULL
  207.                   OR i.IncentiveCD IS NOT NULL
  208.               );
  209.  
  210.         DROP TABLE #tempEndDate
  211.         DROP TABLE #tempUnImportDone
  212.         DROP TABLE #tempDetail
  213.     END
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top