-- Script kiểm tra nợ tồn IsNotApproval,IsNotNhapCoc,IsNotOTP
-- SalePlatform..SPF_FSER_GetDebitRule_2022Aug16
--
-- input    
    DECLARE @pAccountID INT =1000485693
    DECLARE @pRegIDs1 NVARCHAR(500) = '1091197463'
    DECLARE @pRegIDs NVARCHAR(500) = '1091175913,1091175983,1091176013,1091176053,1091176093,1091176103,1091176743,1091176793,1091176573,1091176553,1091176533,1091176523,1091176583,1082261923,1082262073,1082262163,1082263663,1082263263,1082302023'
    DECLARE @pRegIDProList NVARCHAR(500) = ',1099694563,1099695433,1099695733,1099696503,1099696603,1099696803,1099696903,1099698973,1099699343,1099699743,1099700313,1099701583,1099701783,1099703053,,'
    DECLARE @pRegIDDevList NVARCHAR(500) = '1054341553,1020298652,1064246363,1064246893,1064247013,1064247523,1064248463,1064248473,1064249553,1064250293,1064250933,1064247073,1064247383,1064248253,1064248333,1064249253,1064249283,1064249883,1064250603'
   
    -- tim don hang trong thoi gian 1 nam
    DECLARE @vFirstDay_PrevYear DATETIME =  DATEADD(YEAR, DATEDIFF(YEAR, 0, GETDATE()) - 1, 0);

    IF (OBJECT_ID('tempdb..#vListReg') IS NOT NULL)
    DROP TABLE #vListReg;

    IF (OBJECT_ID('tempdb..#vListRegDebit') IS NOT NULL)
    DROP TABLE #vListRegDebit;
   
    -- step 2 table RegDebit ngay thanh toán
    CREATE TABLE #vListRegDebit
        (
            RegID INT,
            RegCode VARCHAR(20),
            ObjID INT,
            Contract VARCHAR(50),
            Supporter VARCHAR(100),
            Approval INT,
            LocalType INT,
            DebitDate DATETIME,
            ObjDate DATETIME,
            OrderCode VARCHAR(20),
            ServiceList VARCHAR(100),
            IsNotNhapCoc INT,
            IsNotOTP INT,
            IsNotApproval INT,
            OrderPaymentType INT ,
            ContentStr VARCHAR(100)
        );


    INSERT INTO #vListRegDebit
    (
        RegID,
        RegCode,
        ObjID,
        Contract,
        Supporter,
        Approval,
        LocalType,
        DebitDate,
        ObjDate,
        OrderCode,
        ServiceList,
        IsNotApproval,
        OrderPaymentType,
        ContentStr
    )
    SELECT r.ID AS RegId,
                   r.RegCode,
                   o.Id AS ObjId,
                   o.Contract,
                   r.Approval,
                   r.LocalType,
                   r.Supporter,
                   CASE
                       WHEN r.StatusDeposit = 0 THEN
                           o.Start_Date
                       ELSE
                           r.DepositDate
                   END AS DebitDate,
                   o.Start_Date,
                   NULL AS OrderCode,
                   NULL AS ServiceList,
                   1 AS IsNotApproval,
                   e.OrderPaymentType AS OrderPaymentType,
                   'IsNotApproval' AS ContentStr
            FROM Internet.dbo.RegistrationFTS (NOLOCK) AS r
                INNER JOIN Internet.dbo.Object (NOLOCK) AS o
                    ON r.ObjID = o.Id
                INNER JOIN PowerInside.dbo.ExtraRegistrationFTS (NOLOCK) AS e
                    ON r.ID = e.RegID
            WHERE 1=1
                  --AND r.Supporter = CAST(@pAccountID AS VARCHAR(100))
                  AND r.ID IN (SELECT value FROM STRING_SPLIT(@pRegIds, ','))
                  AND r.CreateDate >= @vFirstDay_PrevYear
                  AND ISNULL(r.Approval, 0) <> 1
                  AND ISNULL(r.InputType, 0) = 1 -- Phiếu đăng ký của Mobisale  
                  AND ISNULL(r.StatusReg, 0) <> 6 -- Lấy tình trạng phiếu bình thường  
                  AND o.Status NOT IN ( 6, 5 ) -- hợp đồng tình trạng bình thường                    
                  AND
                  (
                      r.StatusDeposit = 1 -- Lấy danh sách những phiếu  đã thanh toán , nhưng duyệt khác tình trạng OK  
                      OR
                      (
                          r.StatusDeposit = 0
                          AND r.RegType IS NULL
                      )
                  ); -- lấy những phiếu bán mới, nhưng chưa thanh toán

        SELECT * FROM #vListRegDebit
   
    --step 3 Xoa COD
    -- Xóa những record exception để by pass -> làm tạm cho phần COD
    DELETE #vListRegDebit WHERE ISNULL(OrderPaymentType,0) = 12

    /* Phiếu nào dính chưa nhập cọc, thì sẽ đánh dấu */
    UPDATE l
    SET l.IsNotNhapCoc = 1, l.ContentStr += ',IsNotNhapCoc'
    FROM #vListRegDebit AS l
        INNER JOIN PowerInfo.dbo.Online_Receipt (NOLOCK) AS B
            ON l.RegID = B.ResourceID
               AND B.Type = 27
        LEFT JOIN PowerInfo.dbo.Online_Receipt_Payment (NOLOCK) AS P
            ON B.BillNumber = P.BillNumber
    WHERE B.PaidAction = 0 /* 0 : Binh Thuong ; 1: Huy*/
          AND (ISNULL(B.PayAfter, 0) <> 1 OR P.ID IS NULL) /*Tình trạng chưa nhập cọc và chưa thanh toán */
         
         

    /* phiếu nào chưa OTP, thì sẽ đánh dấu*/
    UPDATE l
    SET l.IsNotOTP = 1, l.ContentStr += ',IsNotOTP'
    FROM #vListRegDebit AS l
        INNER JOIN PowerInfo.dbo.DocumentDigital (NOLOCK) AS d
            ON d.LinkID = l.RegID
               AND d.Source = 220
    WHERE d.Status = 1
          AND ISNULL(d.Confirm, 0) <> 1
          and d.TemplateID in (188,189); /*Chỉ lấy những Template bán hàng, ko lấy những template Preview*/

    SELECT RegID,
           RegCode,
           ObjID,
           Contract,
           Approval,
           LocalType,
           OrderPaymentType,
           DebitDate,
           ObjDate,
           OrderCode,
           ServiceList,
           IsNotNhapCoc,
           IsNotOTP,
           IsNotApproval,
           ContentStr
    FROM #vListRegDebit;