Project

General

Profile

PL_REQ_DOC_UPDATE_AFTER_APPROVE.txt

Truong Nguyen Vu, 11/17/2020 03:41 PM

 
1

    
2

    
3
ALTER PROCEDURE [dbo].[PL_REQ_DOC_UPDATE_AFTER_APPROVE]
4
@p_REQ_ID	VARCHAR(15)
5
AS
6

    
7
	
8
BEGIN TRANSACTION
9
	
10
DECLARE
11
					@PLAN_ID VARCHAR(15),
12
					@TRADE_ID VARCHAR(15),
13
					@GOOD_ID VARCHAR(15),
14
					@QTY DECIMAL(18,0),
15
					@TOTAL_AMT DECIMAL(18,2),
16
					@REQ_DT DATETIME
17
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID AND IS_BACKDAY=1))
18
					BEGIN
19
						SET @REQ_DT = (SELECT REQ_DT FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID) 
20
						UPDATE dbo.PL_REQUEST_DOC SET EFFEC_DT=@REQ_DT,APPROVE_DT=@REQ_DT WHERE REQ_ID=@p_REQ_ID
21
						UPDATE dbo.PL_REQUEST_PROCESS SET APPROVE_DT=@REQ_DT WHERE REQ_ID=@p_REQ_ID AND PROCESS_ID <>'APPROVE'
22
					END
23
					ELSE
24
						UPDATE dbo.PL_REQUEST_DOC SET EFFEC_DT=GETDATE() WHERE REQ_ID=@p_REQ_ID
25

    
26

    
27

    
28
					DELETE FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@p_REQ_ID
29
					INSERT	 dbo.PL_TRADEDETAIL_HIST
30
					(
31
						TRADE_ID,PLAN_ID,GOODS_ID,GOODS_CODE,GOODS_NAME,GOODS_TYPE,UNIT_ID,M1,M2,M3,M4,M5,M6,M7,M8,M9, M10, M11,M12,QUANTITY,QUANTITY_EXE,PRICE,START_DT_AMORT,MONTH_AMORT,END_DT_AMORT,RATE_AMORT, NOTES,RECORD_STATUS,MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,QUANTITY_ETM,
32
						AMT_ETM,AMT_EXE,AMT_APP,AMT_TF,AMT_RECEIVE_TF, REQ_ID
33
					)
34
					SELECT TRADE_ID,PLAN_ID,GOODS_ID,GOODS_CODE,GOODS_NAME,GOODS_TYPE,UNIT_ID,M1,M2,M3,M4,M5,M6,M7,M8,M9,M10,M11,M12,QUANTITY,QUANTITY_EXE,PRICE,START_DT_AMORT,MONTH_AMORT,END_DT_AMORT,RATE_AMORT,NOTES,RECORD_STATUS,MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,QUANTITY_ETM,
35
					AMT_ETM,AMT_EXE,AMT_APP,AMT_TF,AMT_RECEIVE_TF,@p_REQ_ID	FROM dbo.PL_TRADEDETAIL WHERE (TRADE_ID IN (SELECT TRADE_ID FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID) OR TRADE_ID IN (SELECT FR_TRADE_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
36

    
37
					
38

    
39
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (TRADE_ID IS NULL OR TRADE_ID='')))
40
					BEGIN
41
						
42
						DECLARE @BRANCH_ID VARCHAR(20),@DEP_ID VARCHAR(20),@l_PLAN_ID VARCHAR(20),@l_PLAN_CODE VARCHAR(20),@DVDM_ID VARCHAR(20),@GD_ID VARCHAR(20),
43
						@l_PLAN_NAME NVARCHAR(200),@CREATE_DT DATETIME,@DEP_CODE VARCHAR(20),@MARKER_ID VARCHAR(20),@l_TRADE_ID VARCHAR(20)
44

    
45
						SELECT @BRANCH_ID=BRANCH_ID,@DEP_ID=DEP_ID,@CREATE_DT=CREATE_DT,@MARKER_ID=MAKER_ID  FROM dbo.PL_REQUEST_DOC WHERE REQ_ID=@p_REQ_ID
46
						SELECT @DEP_CODE=DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_ID
47

    
48

    
49
						DECLARE lstPLAN CURSOR FOR
50
						SELECT DVDM_ID FROM dbo.CM_GOOD_DVDM WHERE GD_ID IN (SELECT GOODS_ID  FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (TRADE_ID IS NULL OR TRADE_ID=''))
51
						OPEN lstPLAN
52

    
53
						FETCH NEXT FROM lstPLAN INTO @DVDM_ID
54
						WHILE @@FETCH_STATUS=0
55
						BEGIN
56

    
57
							SET @l_PLAN_NAME=N'KẾ HOẠCH NGÂN SÁCH '+ CAST( YEAR(@CREATE_DT) AS VARCHAR(10))
58
							SET @l_PLAN_CODE= @DEP_CODE+(SELECT RIGHT(CAST(  YEAR(@CREATE_DT) AS VARCHAR(10)),2))
59

    
60
		
61
							EXEC SYS_CodeMasters_Gen 'PL_MASTER', @l_PLAN_ID out
62
							
63
								INSERT INTO dbo.PL_MASTER
64
								(
65
									PLAN_ID, PLAN_CODE,PLAN_NAME,BRANCH_ID,DEPT_ID,EFFECT_DT,PLAN_TYPE,TOTAL_AMT,APPROVE_VALUE, 
66
									VERSON,YEAR,STATUS,NOTES,RECORD_STATUS, MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,PLAN_TYPE_ID,COST_ID)
67
								VALUES
68
								(   @l_PLAN_ID,@l_PLAN_CODE,@l_PLAN_NAME,@BRANCH_ID,@DEP_ID,GETDATE(),'',0, 0,      
69
									1,CAST( YEAR(@CREATE_DT) AS VARCHAR(10)),'1', N'','1', @MARKER_ID, GETDATE(),'A', @MARKER_ID, GETDATE(), '',@DVDM_ID  
70
								)
71

    
72
								DECLARE lstTRADE CURSOR FOR
73
								SELECT DT.GOODS_ID FROM dbo.PL_REQUEST_DOC_DT  DT
74
								LEFT JOIN dbo.CM_GOOD_DVDM CGD ON CGD.GD_ID=DT.GOODS_ID
75
								WHERE REQ_ID=@p_REQ_ID AND (TRADE_ID IS NULL OR TRADE_ID='') AND CGD.DVDM_ID=@DVDM_ID
76
								GROUP BY DT.GOODS_ID
77
								
78
								OPEN lstTRADE
79
								FETCH NEXT FROM lstTRADE INTO @GD_ID
80
								WHILE @@FETCH_STATUS=0
81
								BEGIN
82
									
83
									EXEC SYS_CodeMasters_Gen 'PL_TRADEDETAIL', @l_TRADE_ID OUT
84
									INSERT INTO dbo.PL_TRADEDETAIL
85
										(
86
											TRADE_ID,
87
											PLAN_ID,
88
											GOODS_ID,
89
											QUANTITY,
90
											AMT_APP,
91
											NOTES,
92
											RECORD_STATUS,
93
											MAKER_ID,
94
											CREATE_DT,
95
											AUTH_STATUS,
96
											CHECKER_ID,
97
											APPROVE_DT
98
										)
99
										VALUES
100
										(   @l_TRADE_ID,        -- TRADE_ID - varchar(15)
101
											@l_PLAN_ID,        -- PLAN_ID - varchar(15)
102
											@GD_ID,        -- GOODS_ID - varchar(15)
103
											0,      -- QUANTITY - decimal(18, 0)
104
											0,      -- PRICE - decimal(18, 0)			  
105
											'',       -- NOTES - nvarchar(1000)
106
											'1',        -- RECORD_STATUS - varchar(1)
107
											@MARKER_ID,        -- MAKER_ID - varchar(12)
108
											GETDATE(), -- CREATE_DT - datetime
109
											'A',        -- AUTH_STATUS - varchar(50)
110
											@MARKER_ID,        -- CHECKER_ID - varchar(12)
111
											GETDATE()  -- APPROVE_DT - datetime
112
										)	
113
                                    
114
									UPDATE dbo.PL_REQUEST_DOC_DT SET TRADE_ID=@l_TRADE_ID,PLAN_ID=@l_PLAN_ID WHERE REQ_ID=@p_REQ_ID AND GOODS_ID=@GD_ID AND (TRADE_ID IS NULL OR TRADE_ID='')
115
									UPDATE dbo.PL_REQUEST_TRANSFER SET TO_TRADE_ID=@l_TRADE_ID,TO_PLAN_ID=@l_PLAN_ID WHERE REQ_DOC_ID=@p_REQ_ID AND TO_GOOD_ID=@GD_ID AND (TO_TRADE_ID IS NULL OR TO_TRADE_ID='')
116

    
117
								    FETCH NEXT FROM lstTRADE INTO @GD_ID
118
								END
119
								CLOSE lstTRADE
120
								DEALLOCATE lstTRADE
121

    
122

    
123
						 FETCH NEXT FROM lstPLAN INTO @DVDM_ID
124
						END
125
						CLOSE lstPLAN
126
						DEALLOCATE lstPLAN
127

    
128
						
129
					END
130

    
131
					IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
132
					BEGIN
133
						DECLARE @FR_PLAN_ID VARCHAR(20),@FR_TRADE_ID VARCHAR(20),@FR_GOOD_ID VARCHAR(20)
134
						,@TO_PLAN_ID VARCHAR(20),@TO_TRADE_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20)
135
						DECLARE TransferDT CURSOR FOR 
136
						SELECT FR_PLAN_ID,FR_TRADE_ID,FR_GOOD_ID,TO_TRADE_ID,TO_PLAN_ID,TO_GOOD_ID,TOTAL_AMT  FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID
137
						OPEN TransferDT
138
					FETCH NEXT FROM TransferDT INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@TO_TRADE_ID,@TO_PLAN_ID,@TO_GOOD_ID,@TOTAL_AMT
139
					WHILE @@FETCH_STATUS = 0
140
					BEGIN
141
							UPDATE dbo.PL_TRADEDETAIL SET AMT_TF=ISNULL(AMT_TF,0)+@TOTAL_AMT WHERE PLAN_ID=@FR_PLAN_ID AND TRADE_ID=@FR_TRADE_ID AND GOODS_ID=@FR_GOOD_ID
142
							UPDATE dbo.PL_TRADEDETAIL SET AMT_RECEIVE_TF=ISNULL(AMT_RECEIVE_TF,0)+@TOTAL_AMT WHERE PLAN_ID=@TO_PLAN_ID AND TRADE_ID=@TO_TRADE_ID AND GOODS_ID=@TO_GOOD_ID
143
						FETCH NEXT FROM TransferDT INTO @FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@TO_TRADE_ID,@TO_PLAN_ID,@TO_GOOD_ID,@TOTAL_AMT
144
					END 
145
					CLOSE TransferDT
146
					DEALLOCATE TransferDT
147
					
148
					END
149

    
150

    
151
					DECLARE  RequestDT CURSOR FOR
152
					SELECT PLAN_ID,TRADE_ID,GOODS_ID,QUANTITY,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID
153
					OPEN RequestDT
154
					FETCH NEXT FROM RequestDT INTO @PLAN_ID,@TRADE_ID,@GOOD_ID,@QTY,@TOTAL_AMT
155
					WHILE @@FETCH_STATUS = 0
156
					BEGIN
157
						UPDATE dbo.PL_TRADEDETAIL SET QUANTITY_ETM=ISNULL(QUANTITY_ETM,0)+@QTY,AMT_ETM=ISNULL(AMT_ETM,0)+@TOTAL_AMT WHERE PLAN_ID=@PLAN_ID AND TRADE_ID=@TRADE_ID AND GOODS_ID=@GOOD_ID
158
						FETCH NEXT FROM RequestDT INTO @PLAN_ID,@TRADE_ID,@GOOD_ID,@QTY,@TOTAL_AMT
159
					END 
160
					CLOSE RequestDT
161
					DEALLOCATE RequestDT
162

    
163
				
164

    
165
		
166
COMMIT TRANSACTION
167
RETURN 1
168
ABORT:
169
BEGIN
170
		ROLLBACK TRANSACTION	
171
		RETURN 1
172
End
173
ABORT1:
174
BEGIN
175
		CLOSE RequestDT
176
		DEALLOCATE RequestDT
177
		CLOSE TransferDT
178
		DEALLOCATE TransferDT
179
		ROLLBACK TRANSACTION	
180
		RETURN 1	
181
End
182

    
183

    
184

    
185

    
186

    
187

    
188

    
189