Project

General

Profile

PL_PROCESS_UPDATE.txt

Luc Tran Van, 07/14/2020 11:11 AM

 
1
ALTER PROCEDURE [dbo].[PL_REQUEST_DOC_PROCESS_Upd]
2
@p_REQ_ID VARCHAR(15)=NULL,
3
@p_MAKER_ID	varchar(20)  = NULL,
4
@p_BRANCH_ID VARCHAR(15)=NULL,
5
@p_TC_NOTES NVARCHAR(500),
6
@p_KT_NOTES NVARCHAR(500),
7
@p_ListCostCenter XML,
8
@p_ListTransfer XML
9
AS
10
	
11
	
12
		
13
	DECLARE @DEP_ID VARCHAR(15),@BRANCH_ID VARCHAR(15),@ROLE_ID VARCHAR(20),
14
	@PROCESS_CURR VARCHAR(10),
15
	@STEP_CURR INT,
16
	@STEP_NEXT INT,
17
	@PROCESS_NEXT VARCHAR(10)
18

    
19
	SET @PROCESS_CURR = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND STATUS='C')
20
	SET @PROCESS_NEXT = (SELECT TOP 1 PROCESS_ID FROM dbo.PL_REQUEST_PROCESS WHERE REQ_ID=@p_REQ_ID AND PARENT_PROCESS_ID=@PROCESS_CURR)
21

    
22
	SET @DEP_ID=(SELECT SECUR_CODE FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
23
	SET @BRANCH_ID=(SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
24
	SET @ROLE_ID=(SELECT RoleName FROM dbo.TL_USER WHERE TLNANME=@p_MAKER_ID)
25
		BEGIN TRANSACTION
26
		IF(@PROCESS_CURR='KT')
27
		BEGIN
28
			IF(@p_KT_NOTES IS NULL OR @p_KT_NOTES ='')
29
			BEGIN
30
				SELECT '-1' Result, '' REQ_ID, N'Vui lòng nhập ý kiến của phòng Kế Toán' ErrorDesc 
31
				ROLLBACK TRANSACTION
32
				RETURN '-1'
33
			END
34
			UPDATE dbo.PL_REQUEST_DOC SET KT_NOTES=@p_KT_NOTES WHERE REQ_ID=@p_REQ_ID
35
		END
36
		ELSE IF(@PROCESS_CURR='TC')
37
		BEGIN
38
			UPDATE dbo.PL_REQUEST_DOC SET TC_NOTES=@p_TC_NOTES WHERE REQ_ID=@p_REQ_ID
39
		END
40
		ELSE
41
		BEGIN
42
		IF @@Error <> 0 GOTO ABORT
43
		Declare @hdoc INT
44
		
45
		Declare 
46
		@REQ_TRANSFER_ID	varchar(15),
47
		@FR_PLAN_ID	varchar(15),
48
			@FR_TRADE_ID	varchar(15),
49
			@FR_GOOD_ID	varchar(15),
50
			@FR_BRN_ID	varchar(15),
51
			@TO_BRN_ID	varchar(15),
52
			@TO_PLAN_ID	varchar(15),
53
			@TO_TRADE_ID	varchar(15),	
54
			@TO_GOOD_ID	varchar(15),	
55
			@QTY  DECIMAL(18,0),
56
			@FR_DEP_ID VARCHAR(20),
57
			@TO_DEP_ID VARCHAR(20),
58
			@FR_DVDM_ID VARCHAR(20),
59
			@TO_DVDM_ID VARCHAR(20),
60
			@FR_KHOI_ID VARCHAR(20),
61
			@TO_KHOI_ID VARCHAR(20),
62
			@FR_GD_TYPE VARCHAR(20),
63
			@TO_GD_TYPE VARCHAR(20),
64
	
65
		@TOTAL_AMT  DECIMAL(18,0),
66
		@NOTES NVARCHAR(500),
67
		@AUTH_STATUS VARCHAR(5),
68
		@COST_ID	varchar(15),
69
		@REQ_COST_ID	varchar(15),
70
		@DVDM_ID VARCHAR(20)
71

    
72
		IF(EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE REQ_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
73
		BEGIN 
74
				--Insert into TABLE PL_REQUEST_DOC_DT
75
			Exec sp_xml_preparedocument @hdoc Output,@p_ListCostCenter
76
			DECLARE ListCostCenters  CURSOR FOR
77
			SELECT *
78
			FROM OPENXML(@hDoc,'/Root/ListCostCenter',2)
79
			WITH 
80
			(
81
				REQ_COST_ID VARCHAR(15),
82
				COST_ID	varchar(15),	
83
				AUTH_STATUS VARCHAR(5),
84
				NOTES	nvarchar(1000)
85
				
86
			)
87
			OPEN ListCostCenters
88

    
89
			FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@AUTH_STATUS, @NOTES
90
			WHILE @@FETCH_STATUS = 0	
91
			BEGIN
92
				IF(EXISTS(SELECT REQ_COST_ID FROM dbo.PL_REQUEST_COSTCENTER WHERE COST_ID=@COST_ID AND REQ_ID=@p_REQ_ID AND AUTH_STATUS <> 'A'))
93
				BEGIN
94
						UPDATE dbo.PL_REQUEST_COSTCENTER SET NOTES=@NOTES WHERE REQ_COST_ID=@REQ_COST_ID AND COST_ID=@COST_ID 				
95
				END
96
			
97
				
98
				
99
				IF @@ERROR <> 0 GOTO ABORT1
100
			-- next Group_Id
101
				FETCH NEXT FROM ListCostCenters INTO @REQ_COST_ID,@COST_ID,@AUTH_STATUS, @NOTES
102
			END
103
			CLOSE ListCostCenters
104
			DEALLOCATE ListCostCenters
105
			
106
			--IF(NOT EXISTS( SELECT * FROM dbo.PL_REQUEST_PROCESS WHERE PROCESS_ID=@PROCESS_CURR AND REQ_ID=@p_REQ_ID AND STATUS='C'))
107
			--BEGIN
108
						
109
			--			UPDATE dbo.PL_REQUEST_PROCESS SET [STATUS]='C' WHERE PROCESS_ID=@PROCESS_NEXT AND REQ_ID=@p_REQ_ID
110
			--			UPDATE dbo.PL_REQUEST_DOC SET PROCESS_ID=@PROCESS_NEXT WHERE REQ_ID=@p_REQ_ID
111
						
112
			--END
113
		
114
		END
115

    
116
		
117
		IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_DOC_ID=@p_REQ_ID AND AUTH_STATUS <>'A'))
118
		BEGIN
119
			DECLARE @TABLE TABLE(
120
				REQ_TRANSFER_ID VARCHAR(15),
121
				FR_PLAN_ID	varchar(15),
122
				FR_TRADE_ID	varchar(15),
123
				FR_GOOD_ID	varchar(15),
124
				FR_BRN_ID	varchar(15),
125
				TO_BRN_ID	varchar(15),
126
				TO_PLAN_ID	varchar(15),
127
				TO_TRADE_ID	varchar(15),	
128
				TO_GOOD_ID	varchar(15),	
129
				QTY  DECIMAL(18,0),
130
				TOTAL_AMT	decimal(18),	
131
				AUTH_STATUS VARCHAR(10),
132
				NOTES	nvarchar(1000),
133
				FR_DEP_ID VARCHAR(20),
134
				TO_DEP_ID VARCHAR(20),
135
				FR_DVDM_ID VARCHAR(20),
136
				TO_DVDM_ID VARCHAR(20),
137
				FR_KHOI_ID VARCHAR(20),
138
				TO_KHOI_ID VARCHAR(20),
139
				FR_GD_TYPE VARCHAR(20),
140
				TO_GD_TYPE VARCHAR(20)
141
			)
142
			Exec sp_xml_preparedocument @hdoc Output,@p_ListTransfer
143
			INSERT INTO @TABLE		
144
			SELECT *
145
			FROM OPENXML(@hDoc,'/Root/ListTransfer',2)
146
			WITH 
147
			(
148
				REQ_TRANSFER_ID VARCHAR(15),
149
				FR_PLAN_ID	varchar(15),
150
				FR_TRADE_ID	varchar(15),
151
				FR_GOOD_ID	varchar(15),
152
				FR_BRN_ID	varchar(15),
153
				TO_BRN_ID	varchar(15),
154
				TO_PLAN_ID	varchar(15),
155
				TO_TRADE_ID	varchar(15),	
156
				TO_GOOD_ID	varchar(15),	
157
				QTY  DECIMAL(18,0),
158
				TOTAL_AMT	decimal(18),	
159
				AUTH_STATUS VARCHAR(10),
160
				NOTES	nvarchar(1000),
161
				FR_DEP_ID VARCHAR(20),
162
				TO_DEP_ID VARCHAR(20),
163
				FR_DVDM_ID VARCHAR(20),
164
				TO_DVDM_ID VARCHAR(20),
165
				FR_KHOI_ID VARCHAR(20),
166
				TO_KHOI_ID VARCHAR(20),
167
				FR_GD_TYPE VARCHAR(20),
168
				TO_GD_TYPE VARCHAR(20)
169
		
170
			)
171
			
172
			--IF(EXISTS(SELECT * FROM(
173
			--SELECT TB.FR_TRADE_ID, SUM(TB.TOTAL_AMT) AS TOTAL_TRANSFER,SUM (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)- ISNULL(PT.AMT_TF,0)- ISNULL(PT.AMT_ETM,0)   ) AS TOTAL_AMT FROM @TABLE TB 
174
			--LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
175
			--GROUP BY TB.FR_TRADE_ID
176
			--) TEMP		
177
			--WHERE TEMP.TOTAL_TRANSFER > TEMP.TOTAL_AMT
178
			--))
179
			--BEGIN
180
			--		SELECT '-1' Result, '' REQ_ID, N'Số tiền điều chuyển lớn hơn số tiền dự kiến còn lại của hạng mục ngân sách' ErrorDesc 
181
			--		ROLLBACK TRANSACTION
182
			--		RETURN '-1'
183
			--END
184

    
185
			DECLARE ListTransfers  CURSOR FOR
186
			SELECT REQ_TRANSFER_ID,
187
                   FR_PLAN_ID,
188
                   FR_TRADE_ID,
189
                   FR_GOOD_ID,
190
                   FR_BRN_ID,
191
                   TO_BRN_ID,
192
                   TO_PLAN_ID,
193
                   TO_TRADE_ID,
194
                   TO_GOOD_ID,
195
                   QTY,
196
                   TOTAL_AMT,
197
                   AUTH_STATUS,
198
                   NOTES,
199
                   FR_DEP_ID,
200
                   TO_DEP_ID,
201
                   FR_DVDM_ID,
202
                   TO_DVDM_ID,
203
                   FR_KHOI_ID,
204
                   TO_KHOI_ID,
205
                   FR_GD_TYPE,
206
                   TO_GD_TYPE FROM @TABLE
207
			OPEN ListTransfers
208

    
209

    
210
			FETCH NEXT FROM ListTransfers INTO @REQ_TRANSFER_ID,@FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
211
			@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT,@AUTH_STATUS, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
212
			WHILE @@FETCH_STATUS = 0	
213
			BEGIN
214
				--- KIEM TRA NGAN SACH DIEU CHUYEN TAI DVDC PHAI BAT BUOC NHAP
215
				IF(@FR_GOOD_ID IS NULL OR @FR_GOOD_ID ='')
216
				BEGIN
217
						SELECT '-1' Result, '' REQ_ID, N'Lưới điều chuyển ngân sách: Bạn là đơn vị điều chuyển ngân sách. Vui lòng chọn hạng mục ngân sách chuyển!' ErrorDesc 
218
						ROLLBACK TRANSACTION
219
						RETURN '-1'
220
				END
221
				----
222
				DECLARE @FR_GD_TYPE_NAME NVARCHAR(100),@TO_GD_TYPE_NAME NVARCHAR(100)
223
				IF(@FR_GOOD_ID IS NOT NULL AND @FR_GOOD_ID<>'')
224
				IF(NOT EXISTS(SELECT * FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID= @FR_GD_TYPE AND @TO_GD_TYPE IN (SELECT value FROM dbo.wsiSplit(NOTES,';')) )  )
225
				BEGIN
226
				
227
				SET @FR_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@FR_GD_TYPE)
228
				SET @TO_GD_TYPE_NAME=(SELECT GD_TYPE_NAME FROM dbo.CM_GOODSTYPE WHERE GD_TYPE_ID=@TO_GD_TYPE)
229
					
230
					ROLLBACK TRANSACTION
231
					SELECT '-1' AS Result , ''  REQ_ID, N'Không được điều chuyển từ ' + @FR_GD_TYPE_NAME +N' sang ' + @TO_GD_TYPE_NAME ErrorDesc
232
					RETURN '-1'
233
					CLOSE ListTransfers
234
					DEALLOCATE ListTransfers
235
				END
236
				---  KIEM TRA HAN MUC CO HOP LE HAY KHONG
237
				IF(EXISTS(SELECT * FROM(
238
				SELECT TB.FR_TRADE_ID, SUM(TB.TOTAL_AMT) AS TOTAL_TRANSFER,SUM (ISNULL(PT.AMT_APP,0) + ISNULL(PT.AMT_RECEIVE_TF,0)- ISNULL(PT.AMT_TF,0)- ISNULL(PT.AMT_ETM,0)   ) AS TOTAL_AMT FROM @TABLE TB 
239
				LEFT JOIN dbo.PL_TRADEDETAIL PT ON PT.TRADE_ID=TB.FR_TRADE_ID
240
				GROUP BY TB.FR_TRADE_ID
241
				) TEMP		
242
				WHERE TEMP.TOTAL_TRANSFER > TEMP.TOTAL_AMT
243
				))
244
				BEGIN
245
						SELECT '-1' Result, '' REQ_ID, N'Số tiền điều chuyển lớn hơn số tiền dự kiến còn lại của hạng mục ngân sách' ErrorDesc 
246
						ROLLBACK TRANSACTION
247
						RETURN '-1'
248
				END
249
				----
250
				IF(EXISTS(SELECT REQ_TRANSFER_ID FROM dbo.PL_REQUEST_TRANSFER WHERE REQ_TRANSFER_ID=@REQ_TRANSFER_ID AND AUTH_STATUS <> 'A'))
251
				BEGIN
252
					UPDATE dbo.PL_REQUEST_TRANSFER SET FR_GOOD_ID=@FR_GOOD_ID,FR_PLAN_ID=@FR_PLAN_ID,FR_TRADE_ID=@FR_TRADE_ID, NOTES=@NOTES,TOTAL_AMT=@TOTAL_AMT
253
					,FR_DVDM_ID=@FR_DVDM_ID,FR_KHOI_ID=@FR_KHOI_ID
254
					 WHERE REQ_TRANSFER_ID=@REQ_TRANSFER_ID	
255
				END
256
				
257
				
258
				IF @@ERROR <> 0 GOTO ABORT1
259
			-- next Group_Id
260
				FETCH NEXT FROM ListTransfers INTO @REQ_TRANSFER_ID,@FR_PLAN_ID,@FR_TRADE_ID,@FR_GOOD_ID,@FR_BRN_ID,@TO_BRN_ID,@TO_PLAN_ID,
261
			@TO_TRADE_ID,@TO_GOOD_ID,@QTY,@TOTAL_AMT,@AUTH_STATUS, @NOTES,@FR_DEP_ID,@TO_DEP_ID,@FR_DVDM_ID,@TO_DVDM_ID,@FR_KHOI_ID,@TO_KHOI_ID,@FR_GD_TYPE,@TO_GD_TYPE
262
			END
263
			CLOSE ListTransfers
264
			DEALLOCATE ListTransfers
265

    
266
			IF @@Error <> 0 GOTO ABORT
267
	
268
			
269
			
270
		END
271
		END
272
		
273
		
274
		
275
		
276
		
277
COMMIT TRANSACTION
278
SELECT '0' as Result, @p_REQ_ID  REQ_ID, '' ErrorDesc
279
RETURN '0'
280
ABORT:
281
BEGIN
282
		ROLLBACK TRANSACTION
283
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
284
		RETURN '-1'
285
End
286
ABORT1:
287
BEGIN
288
		
289
		CLOSE ListCostCenters
290
		DEALLOCATE ListCostCenters
291
		CLOSE ListTransfers
292
		DEALLOCATE ListTransfers
293
		ROLLBACK TRANSACTION
294
		SELECT '-1' AS Result ,'' REQ_ID, '' ErrorDesc
295
		RETURN '-1'
296
End