1
|
DECLARE
|
2
|
@p_AUTH_STATUS varchar(50) = 'A',
|
3
|
@p_CHECKER_ID varchar(120) = 'admin',
|
4
|
@p_NOTES nvarchar(max) = '',
|
5
|
@p_APPROVE_DT VARCHAR(20) = '28/07/2023'
|
6
|
|
7
|
BEGIN
|
8
|
|
9
|
DECLARE @var1 VARCHAR(20)
|
10
|
|
11
|
DECLARE cur CURSOR FAST_FORWARD READ_ONLY LOCAL FOR
|
12
|
SELECT BCR.BUDC_RENT_ID
|
13
|
FROM dbo.BUD_CONTRACT_RENT BCR
|
14
|
|
15
|
OPEN cur
|
16
|
|
17
|
|
18
|
BEGIN TRANSACTION
|
19
|
|
20
|
FETCH NEXT FROM cur INTO @var1
|
21
|
|
22
|
WHILE @@FETCH_STATUS = 0
|
23
|
BEGIN
|
24
|
|
25
|
|
26
|
DECLARE @p_BUDC_RENT_CODE VARCHAR(100) = (SELECT BUDC_RENT_CODE FROM BUD_CONTRACT_RENT WHERE BUDC_RENT_ID = @var1)
|
27
|
|
28
|
UPDATE BUD_CONTRACT_RENT SET [AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
29
|
,IS_SEND_APPR = NULL, SEND_APPR_DT = NULL
|
30
|
WHERE BUDC_RENT_ID= @var1
|
31
|
|
32
|
|
33
|
DECLARE @l_BUDC_MOVE_ID VARCHAR(20),@ToDay DATE = CONVERT(DATE, @p_APPROVE_DT, 103), @ADJUST_CONDITION VARCHAR(10), @PRICE_BY_PERIOD_ADJUST DECIMAL = 0
|
34
|
, @TOTAL_AMT DECIMAL = 0, @ADJACENT_AMT DECIMAL =0, @ADJUST_PRICE_RATE DECIMAL =0 , @ADJACENT_ID VARCHAR(20), @ADJACENT_YEAR_AMT DECIMAL, @ADJACENT_YEAR_ID VARCHAR(20)
|
35
|
DECLARE @TYPE_PROCESS VARCHAR(10) = '', @START DATE, @END DATE, @PERIOD_ADJUST DECIMAL, @END_HD DATE, @RATE_UNIT VARCHAR(15), @IS_AUTO VARCHAR(1), @TANGGIAM VARCHAR(15)
|
36
|
|
37
|
SELECT @PERIOD_ADJUST = CAST(BCR.PERIOD_ADJUST AS DECIMAL), @END_HD = BCR.END_DT, @ADJUST_CONDITION = BCR.ADJUST_CONDITION,
|
38
|
@TOTAL_AMT = BCR.TOTAL_AMT, @ADJUST_PRICE_RATE = BCR.ADJUST_PRICE_RATE, @RATE_UNIT = BCR.RATE_UNIT, @IS_AUTO = BCR.IS_AUTO_ADJUST,
|
39
|
@TANGGIAM = BCR.ADJUST_PRICE_RANGE
|
40
|
FROM BUD_CONTRACT_RENT BCR WHERE BCR.BUDC_RENT_ID = @var1
|
41
|
|
42
|
DECLARE @LASTMOVE DATETIME, @NEXT_DT DATE
|
43
|
SELECT @LASTMOVE = DATEADD(MONTH, KEEP_PRICE_TIME, START_PAYMENT_DT),
|
44
|
@NEXT_DT = NEXT_DT
|
45
|
FROM BUD_CONTRACT_RENT WHERE BUDC_RENT_ID= @var1
|
46
|
|
47
|
|
48
|
IF(NOT EXISTS(SELECT * FROM BUD_CONTRACT_RENT_MOVEMENT BCR WHERE BCR.BUDC_RENT_ID = @var1))
|
49
|
BEGIN
|
50
|
|
51
|
|
52
|
IF(EXISTS(SELECT 1 FROM BUD_CONTRACT_RENT BCR WHERE BCR.BUDC_RENT_ID = @var1 AND BCR.FREE_FIX_TIME > 0))
|
53
|
BEGIN
|
54
|
|
55
|
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_RENT_MOVEMENT', @l_BUDC_MOVE_ID OUT
|
56
|
|
57
|
SELECT @START = BCR.START_DT, @END = DATEADD(DAY, -1, START_PAYMENT_DT) FROM BUD_CONTRACT_RENT BCR WHERE BCR.BUDC_RENT_ID = @var1
|
58
|
|
59
|
IF(CONVERT(DATE, @p_APPROVE_DT, 103) >= CONVERT(DATE, @START, 103) AND CONVERT(DATE, @p_APPROVE_DT, 103) <= CONVERT(DATE, @END, 103))
|
60
|
SET @TYPE_PROCESS = 'C'
|
61
|
ELSE
|
62
|
IF(CONVERT(DATE, @p_APPROVE_DT, 103) < CONVERT(DATE, @START, 103)) SET @TYPE_PROCESS = 'U'
|
63
|
ELSE
|
64
|
IF(CONVERT(DATE, @p_APPROVE_DT, 103) > CONVERT(DATE, @END, 103)) SET @TYPE_PROCESS = 'P'
|
65
|
|
66
|
INSERT INTO BUD_CONTRACT_RENT_MOVEMENT (BUDC_MOVE_ID, BUDC_RENT_ID, TYPE_PROCESS, PRICE_CONTRACT,
|
67
|
START_DT, END_DT, NEXT_DT,
|
68
|
NOTES, RECORD_STATUS, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, IS_USE)
|
69
|
SELECT @l_BUDC_MOVE_ID, @var1, @TYPE_PROCESS
|
70
|
,0
|
71
|
,DELIVERY_DT
|
72
|
,DATEADD(DAY, -1, START_PAYMENT_DT)
|
73
|
,NEXT_DT_NEWUP
|
74
|
,@p_NOTES
|
75
|
,'1',MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, '0'
|
76
|
FROM BUD_CONTRACT_RENT WHERE BUDC_RENT_ID= @var1
|
77
|
END
|
78
|
|
79
|
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_RENT_MOVEMENT', @l_BUDC_MOVE_ID OUT
|
80
|
|
81
|
SELECT @START = BCR.START_PAYMENT_DT,
|
82
|
@END = IIF(DATEADD(MONTH, KEEP_PRICE_TIME, START_PAYMENT_DT) > @END_HD, DATEADD(DAY, 1, @END_HD), DATEADD(MONTH, KEEP_PRICE_TIME, START_PAYMENT_DT))
|
83
|
FROM BUD_CONTRACT_RENT BCR WHERE BCR.BUDC_RENT_ID = @var1
|
84
|
|
85
|
IF(CONVERT(DATE, @p_APPROVE_DT, 103) >= CONVERT(DATE, @START, 103) AND CONVERT(DATE, @p_APPROVE_DT, 103) <= CONVERT(DATE, @END, 103))
|
86
|
SET @TYPE_PROCESS = 'C'
|
87
|
ELSE
|
88
|
IF(CONVERT(DATE, @p_APPROVE_DT, 103) < CONVERT(DATE, @START, 103)) SET @TYPE_PROCESS = 'U'
|
89
|
ELSE
|
90
|
IF(CONVERT(DATE, @p_APPROVE_DT, 103) > CONVERT(DATE, @END, 103)) SET @TYPE_PROCESS = 'P'
|
91
|
|
92
|
INSERT INTO BUD_CONTRACT_RENT_MOVEMENT (BUDC_MOVE_ID, BUDC_RENT_ID, TYPE_PROCESS, PRICE_CONTRACT,
|
93
|
START_DT, END_DT, NEXT_DT,
|
94
|
NOTES, RECORD_STATUS, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, IS_USE)
|
95
|
SELECT @l_BUDC_MOVE_ID, @var1, @TYPE_PROCESS
|
96
|
,TOTAL_AMT
|
97
|
,START_PAYMENT_DT
|
98
|
,DATEADD(DAY, -1, @END)
|
99
|
,NEXT_DT_NEWUP
|
100
|
,@p_NOTES
|
101
|
,'1',MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, '0'
|
102
|
FROM BUD_CONTRACT_RENT WHERE BUDC_RENT_ID= @var1
|
103
|
|
104
|
SELECT @LASTMOVE = DATEADD(MONTH, KEEP_PRICE_TIME, START_PAYMENT_DT)
|
105
|
FROM BUD_CONTRACT_RENT WHERE BUDC_RENT_ID= @var1
|
106
|
|
107
|
IF(@IS_AUTO = 'N')
|
108
|
BEGIN
|
109
|
|
110
|
EXEC SYS_CodeMasters_Gen 'BUD_CONTRACT_RENT_MOVEMENT', @l_BUDC_MOVE_ID OUT
|
111
|
|
112
|
INSERT INTO BUD_CONTRACT_RENT_MOVEMENT (BUDC_MOVE_ID, BUDC_RENT_ID, TYPE_PROCESS, PRICE_CONTRACT,
|
113
|
START_DT, END_DT, NEXT_DT,
|
114
|
NOTES, RECORD_STATUS, MAKER_ID, CREATE_DT, AUTH_STATUS, CHECKER_ID, APPROVE_DT, IS_USE)
|
115
|
SELECT @l_BUDC_MOVE_ID, @var1, 'C'
|
116
|
,TOTAL_AMT
|
117
|
,@END
|
118
|
,@END_HD
|
119
|
,NULL
|
120
|
,N'Hệ thống tự động'
|
121
|
,'1','', CONVERT(DATETIME, @p_APPROVE_DT, 103), AUTH_STATUS, '', CONVERT(DATETIME, @p_APPROVE_DT, 103), '1'
|
122
|
FROM BUD_CONTRACT_RENT WHERE BUDC_RENT_ID= @var1
|
123
|
END
|
124
|
|
125
|
END
|
126
|
|
127
|
|
128
|
FETCH NEXT FROM cur INTO @var1
|
129
|
END
|
130
|
|
131
|
CLOSE cur
|
132
|
DEALLOCATE cur
|
133
|
|
134
|
COMMIT TRANSACTION
|
135
|
SELECT '0' as Result, @var1 BUDC_RENT_ID, '' ErrorDesc
|
136
|
END
|