Project

General

Profile

SCRIPT_DUYET_HOP_DONG_TN.sql

hợp đồng - Luc Tran Van, 08/01/2023 10:26 AM

 
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
                --insert master
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
        ----------- THÊM vào lịch sử biến động ----------------
48
        IF(NOT EXISTS(SELECT * FROM BUD_CONTRACT_RENT_MOVEMENT BCR WHERE BCR.BUDC_RENT_ID = @var1))
49
        BEGIN
50

    
51
            -- Nếu có thời gian sửa chữa miễn fí thì thêm biến động 0 giá trị
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