-- Lấy danh sách phiếu còn nợ tồn
-- SalePlatform..SPF_FSER_GetDebitRule_2022Aug16
-- IsNotApproval,IsNotNhapCoc,IsNotOTP
-- input
DECLARE @pAccountID INT= 1000769923 -- IBBMember ftq.tamdt19
DECLARE @pRegID INT = -1
DECLARE @pRegIDStagList 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,1064248463,1064247523,1064247013,1064246893,1064250763,1064250603,1064249883,1064249283,1064249253,1064248333,1064248253,1064247383,1064247073,1064250933,1064250293,1064249553,1064246363,'
-- 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 1 table ListReg Phiếu đăng ký chua duyet
CREATE TABLE #vListReg
(
RegID INT,
RegCode VARCHAR(20),
Approval INT,
LocalType INT,
StatusDeposit BIT,
DepositDate DATETIME,
ObjID INT,
InputType INT,
StatusReg INT,
RegType INT
);
INSERT INTO #vListReg
(
RegID ,
RegCode ,
Approval ,
LocalType ,
StatusDeposit ,
DepositDate ,
ObjID ,
InputType ,
StatusReg ,
RegType
)
SELECT r.ID,r.RegCode,r.Approval,r.LocalType,r.StatusDeposit,r.DepositDate,r.ObjID,r.InputType,r.StatusReg,r.RegType FROM Internet.dbo.RegistrationFTS (NOLOCK) AS r
WHERE 1=1
AND r.ID IN (SELECT value FROM STRING_SPLIT(@pRegIDStagList, ','))
AND r.CreateDate >= @vFirstDay_PrevYear
-- AND r.Supporter = CAST(@pAccountID AS VARCHAR(100)) -- ko lay theo IBBMember nua
AND ISNULL(r.InputType, 0) = 1 -- Phiếu đăng ký của Mobisale
AND ISNULL(r.Approval, 0) <> 1 -- 1: Ok, 2 : Not Ok, null chua duyet
AND ISNULL(r.StatusReg, 0) <> 6 -- Lấy tình trạng phiếu bình thường
--AND r.ID NOT IN ( ISNULL(@pRegID, -1))
AND
(
r.StatusDeposit = 1 -- đã thanh toán
OR
(
r.StatusDeposit = 0 -- bán mới, 0 chưa thanh toán
AND r.RegType IS NULL
)
);
SELECT * FROM #vListReg
-- step 2 table RegDebit ngay thanh toán
CREATE TABLE #vListRegDebit
(
RegID INT,
RegCode VARCHAR(20),
ObjID INT,
Contract VARCHAR(50),
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,
Approval,
LocalType,
DebitDate,
ObjDate,
OrderCode,
ServiceList,
IsNotApproval,
OrderPaymentType,
ContentStr
)
SELECT TOP 20 r.RegID,
r.RegCode,
o.Id AS ObjID,
o.Contract,
r.Approval,
r.LocalType,
CASE
WHEN r.StatusDeposit = 0 THEN -- 1 đã thanh toán, 0 chua thanh toán
o.Start_Date -- Start_Date
ELSE
r.DepositDate -- ngay thanh toán
END AS DebitDate,
o.Start_Date,
NULL AS OrderCode,
NULL AS ServiceList,
1 AS IsNotApproval,
e.OrderPaymentType AS OrderPaymentType,
'IsNotApproval' as ContentStr
FROM #vListReg (NOLOCK) r
INNER JOIN Internet.dbo.Object (NOLOCK) AS o ON r.ObjID = o.Id
INNER JOIN PowerInside.dbo.ExtraRegistrationFTS (NOLOCK) AS e ON r.RegID = e.RegID
WHERE 1=1
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,
DebitDate,
ObjDate,
OrderCode,
ServiceList,
IsNotNhapCoc,
IsNotOTP,
IsNotApproval,
ContentStr
FROM #vListRegDebit;
0 Nhận xét