Project

General

Profile

PL_REQ_DOC_UPDATE_AFTER_APPROVE.txt

Truong Nguyen Vu, 11/06/2020 08:26 AM

 
1

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

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

    
25

    
26

    
27
					DELETE FROM dbo.PL_TRADEDETAIL_HIST WHERE REQ_ID=@p_REQ_ID
28
					INSERT	 dbo.PL_TRADEDETAIL_HIST
29
					(
30
						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,
31
						AMT_ETM,AMT_EXE,AMT_APP,AMT_TF,AMT_RECEIVE_TF, REQ_ID
32
					)
33
					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,
34
					AMT_APP,AMT_EXE,AMT_ETM,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))
35

    
36
					
37

    
38
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (TRADE_ID IS NULL OR TRADE_ID='')))
39
					BEGIN
40
						
41
						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),
42
						@l_PLAN_NAME NVARCHAR(200),@CREATE_DT DATETIME,@DEP_CODE VARCHAR(20),@MARKER_ID VARCHAR(20),@l_TRADE_ID VARCHAR(20)
43

    
44
						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
45
						SELECT @DEP_CODE=DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_ID
46

    
47

    
48
						DECLARE lstPLAN CURSOR FOR
49
						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=''))
50
						OPEN lstPLAN
51

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

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

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

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

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

    
121

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

    
127
						
128
					END
129

    
130
					IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
131
					BEGIN
132
						DECLARE @FR_PLAN_ID VARCHAR(20),@FR_TRADE_ID VARCHAR(20),@FR_GOOD_ID VARCHAR(20)
133
						,@TO_PLAN_ID VARCHAR(20),@TO_TRADE_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20)
134
						DECLARE TransferDT CURSOR FOR 
135
						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
136
						OPEN TransferDT
137
					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
138
					WHILE @@FETCH_STATUS = 0
139
					BEGIN
140
							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
141
							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
142
						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
143
					END 
144
					CLOSE TransferDT
145
					DEALLOCATE TransferDT
146
					
147
					END
148

    
149

    
150
					DECLARE  RequestDT CURSOR FOR
151
					SELECT PLAN_ID,TRADE_ID,GOODS_ID,QUANTITY,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID
152
					OPEN RequestDT
153
					FETCH NEXT FROM RequestDT INTO @PLAN_ID,@TRADE_ID,@GOOD_ID,@QTY,@TOTAL_AMT
154
					WHILE @@FETCH_STATUS = 0
155
					BEGIN
156
						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
157
						FETCH NEXT FROM RequestDT INTO @PLAN_ID,@TRADE_ID,@GOOD_ID,@QTY,@TOTAL_AMT
158
					END 
159
					CLOSE RequestDT
160
					DEALLOCATE RequestDT
161

    
162
				
163

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

    
182

    
183

    
184

    
185

    
186

    
187

    
188