Project

General

Profile

PL_REQ_DOC_UPDATE_AFTER_APPROVE.txt

Truong Nguyen Vu, 10/27/2020 03:34 PM

 
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

    
28
					IF(EXISTS(SELECT * FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID AND (TRADE_ID IS NULL OR TRADE_ID='')))
29
					BEGIN
30
						
31
						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),
32
						@l_PLAN_NAME NVARCHAR(200),@CREATE_DT DATETIME,@DEP_CODE VARCHAR(20),@MARKER_ID VARCHAR(20),@l_TRADE_ID VARCHAR(20)
33

    
34
						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
35
						SELECT @DEP_CODE=DEP_CODE FROM dbo.CM_DEPARTMENT WHERE DEP_ID=@DEP_ID
36

    
37

    
38
						DECLARE lstPLAN CURSOR FOR
39
						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=''))
40
						OPEN lstPLAN
41

    
42
						FETCH NEXT FROM lstPLAN INTO @DVDM_ID
43
						WHILE @@FETCH_STATUS=0
44
						BEGIN
45

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

    
49
		
50
							EXEC SYS_CodeMasters_Gen 'PL_MASTER', @l_PLAN_ID out
51
							
52
								INSERT INTO dbo.PL_MASTER
53
								(
54
									PLAN_ID, PLAN_CODE,PLAN_NAME,BRANCH_ID,DEPT_ID,EFFECT_DT,PLAN_TYPE,TOTAL_AMT,APPROVE_VALUE, 
55
									VERSON,YEAR,STATUS,NOTES,RECORD_STATUS, MAKER_ID,CREATE_DT,AUTH_STATUS,CHECKER_ID,APPROVE_DT,PLAN_TYPE_ID,COST_ID)
56
								VALUES
57
								(   @l_PLAN_ID,@l_PLAN_CODE,@l_PLAN_NAME,@BRANCH_ID,@DEP_ID,GETDATE(),'',0, 0,      
58
									1,CAST( YEAR(@CREATE_DT) AS VARCHAR(10)),'1', N'','1', @MARKER_ID, GETDATE(),'A', @MARKER_ID, GETDATE(), '',@DVDM_ID  
59
								)
60

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

    
106
								    FETCH NEXT FROM lstTRADE INTO @GD_ID
107
								END
108
								CLOSE lstTRADE
109
								DEALLOCATE lstTRADE
110

    
111

    
112
						 FETCH NEXT FROM lstPLAN INTO @DVDM_ID
113
						END
114
						CLOSE lstPLAN
115
						DEALLOCATE lstPLAN
116

    
117
						
118
					END
119

    
120
					IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID))
121
					BEGIN
122
						DECLARE @FR_PLAN_ID VARCHAR(20),@FR_TRADE_ID VARCHAR(20),@FR_GOOD_ID VARCHAR(20)
123
						,@TO_PLAN_ID VARCHAR(20),@TO_TRADE_ID VARCHAR(20),@TO_GOOD_ID VARCHAR(20)
124
						DECLARE TransferDT CURSOR FOR 
125
						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
126
						OPEN TransferDT
127
					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
128
					WHILE @@FETCH_STATUS = 0
129
					BEGIN
130
							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
131
							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
132
						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
133
					END 
134
					CLOSE TransferDT
135
					DEALLOCATE TransferDT
136
					
137
					END
138

    
139

    
140
					DECLARE  RequestDT CURSOR FOR
141
					SELECT PLAN_ID,TRADE_ID,GOODS_ID,QUANTITY,TOTAL_AMT FROM dbo.PL_REQUEST_DOC_DT WHERE REQ_ID=@p_REQ_ID
142
					OPEN RequestDT
143
					FETCH NEXT FROM RequestDT INTO @PLAN_ID,@TRADE_ID,@GOOD_ID,@QTY,@TOTAL_AMT
144
					WHILE @@FETCH_STATUS = 0
145
					BEGIN
146
						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
147
						FETCH NEXT FROM RequestDT INTO @PLAN_ID,@TRADE_ID,@GOOD_ID,@QTY,@TOTAL_AMT
148
					END 
149
					CLOSE RequestDT
150
					DEALLOCATE RequestDT
151

    
152
				
153

    
154
		
155
COMMIT TRANSACTION
156
RETURN 1
157
ABORT:
158
BEGIN
159
		ROLLBACK TRANSACTION	
160
		RETURN 1
161
End
162
ABORT1:
163
BEGIN
164
		CLOSE RequestDT
165
		DEALLOCATE RequestDT
166
		CLOSE TransferDT
167
		DEALLOCATE TransferDT
168
		ROLLBACK TRANSACTION	
169
		RETURN 1	
170
End
171

    
172

    
173

    
174

    
175

    
176

    
177