Project

General

Profile

PYC.txt

Luc Tran Van, 11/17/2023 09:08 AM

 
1

    
2
ALTER PROCEDURE [dbo].[MW_REQ_CloseREQ]
3
  @p_REQ_ID VARCHAR(15),
4
  @p_CHECKER_ID VARCHAR(200),
5
  @p_APPROVE_DT VARCHAR(20)
6
AS 
7
  DECLARE @Auth VARCHAR(1),@CheckerId VARCHAR(15),@status VARCHAR(20), @BranchId VARCHAR(15), @DepId VARCHAR(15),@IS_DONE VARCHAR(1)
8
  SELECT @Auth = mr.AUTH_STATUS,
9
         @CheckerId = mr.CHECKER_ID,
10
         @status = mr.STATUS,
11
         @IS_DONE = mr.IS_DONE
12
  FROM MW_REQ mr 
13
  WHERE mr.REQ_ID = @p_REQ_ID
14
  
15

    
16
  IF(@Auth = 'A' AND @IS_DONE = '1')
17
  BEGIN
18
      SELECT '0' as Result, '' ErrorDesc, 'Phiếu đã được đóng trước đó' NOTIFICATION
19
		  RETURN 0
20
  END
21

    
22
BEGIN TRANSACTION
23
  IF(@status = 'DONE')
24
    BEGIN  
25
    	  SET @Auth = 'A'
26
        SET @status = 'DONE'
27

    
28
         IF(EXISTS(SELECT 1 FROM MW_REQ_PROCESS mrp WHERE mrp.REQ_ID = @p_REQ_ID AND ISNULL(mrp.AUTH_STATUS,'') <> 'A'))
29
        BEGIN
30
          GOTO ABORT3
31
        END
32

    
33
        SELECT @BranchId =  tugr.BRANCH_ID, @DepId =  tugr.DEPT_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr
34

    
35
        UPDATE MW_REQ 
36
        SET AUTH_STATUS = @Auth, STATUS = @status, APPROVE_DT = GETDATE(), CHECKER_ID = @CheckerId ,IS_DONE = '1'
37
        WHERE REQ_ID = @p_REQ_ID	IF @@Error <> 0 GOTO ABORT
38

    
39
        UPDATE MW_REQUEST_PROCESS
40
        SET STATUS = 'P'
41
        WHERE REQ_ID = @p_REQ_ID
42
        
43
        INSERT INTO MW_REQUEST_PROCESS (REQ_ID,CHECKER_ID, PROCESS_ID,PROCESS_NAME,BRANCH_ID,DEP_ID,RECEPTION_DT, STATUS, PARENT_PROCESS_ID, NOTES) 
44
        VALUES (@p_REQ_ID,@p_CHECKER_ID, @status,N'Hoàn thành phiếu',@BranchId,@DepId,GETDATE() , 'P', 'SENDAPP', N'Đóng phiếu yêu cầu ở bước đơn vị đầu mối')
45
    END
46
  ELSE
47
    BEGIN
48
        GOTO ABORT2
49
    END
50
  INSERT INTO dbo.MW_PROCESS
51
							(
52
								REQ_ID,
53
								PROCESS_ID,
54
								CHECKER_ID,
55
								APPROVE_DT,
56
								PROCESS_DESC,
57
								NOTES
58
							)
59
							VALUES
60
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
61
								'LOST',        -- PROCESS_ID - varchar(10)
62
								@p_CHECKER_ID,        -- CHECKER_ID - varchar(100)
63
								CONVERT(DATETIME, @p_APPROVE_DT, 103), -- APPROVE_DT - datetime
64
								N'Đóng phiếu yêu cầu',       -- PROCESS_DESC - nvarchar(1000)
65
								N'Đóng phiếu yêu cầu thành công'        -- NOTES - nvarchar(1000)
66
							)
67

    
68
COMMIT TRANSACTION
69
SELECT '0' as Result, N'Phiếu '+ @p_REQ_ID + N' Được đóng thành công' NOTIFICATION, '' ErrorDesc
70
RETURN '0'
71
ABORT: 
72
BEGIN
73
		ROLLBACK TRANSACTION
74
		SELECT '-1' as Result, '' ErrorDesc
75
		RETURN '-1'
76
END
77
ABORT2:
78
BEGIN
79
		ROLLBACK TRANSACTION
80
		SELECT '-1' as Result, N'Phiếu ' + @p_REQ_ID + N' Không thể đóng phiếu khi chưa đén bước xử lý này hoặc không được đóng phiếu' ErrorDesc
81
		RETURN '-1'
82
END
83
ABORT3:
84
BEGIN
85
		ROLLBACK TRANSACTION
86
		SELECT '-1' as Result, N'Phiếu đã có cấp xử lý tiếp theo không thể hủy phiếu tại bước này' ErrorDesc
87
		RETURN '-1'
88
End
89
GO
90
IF @@ERROR <> 0 SET NOEXEC ON
91
GO
92
PRINT N'Altering [dbo].[MW_REQ_SendApp]'
93
GO
94
ALTER PROCEDURE [dbo].[MW_REQ_SendApp]
95
  @p_REQ_ID VARCHAR(20),
96
  @p_REQ_CODE varchar(15),
97
  @p_AUTH_STATUS VARCHAR(1),
98
  @p_STATUS VARCHAR(15),
99
  @p_CHECKER_ID VARCHAR(25)
100

    
101
AS
102
BEGIN TRANSACTION
103
--  DECLARE @ROLE_KT VARCHAR(50) = (SELECT TU.RoleName FROM TL_USER TU WHERE TU.TLNANME = @p_USER_LOGIN)
104
--  DECLARE @DEP_ID VARCHAR(20),@BRANCH_ID VARCHAR(20)
105
--  DECLARE  @ROLE_LOGIN TABLE(ROLE_USER VARCHAR(20), BRANCH_ID VARCHAR(20), DEP_ID VARCHAR(20))
106
--  
107
--  INSERT INTO @ROLE_LOGIN
108
--  SELECT tugr.ROLE_ID, tugr.BRANCH_ID, tugr.DEPT_ID FROM dbo.TL_USER_GET_ROLES(@p_USER_LOGIN) tugr
109
--  
110
--  SET @DEP_ID= (SELECT DEP_ID FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
111
--  SET @BRANCH_ID= (SELECT TLSUBBRID FROM dbo.TL_USER WHERE TLNANME=@p_USER_LOGIN)
112
IF(EXISTS(SELECT 1 FROM MW_REQ WHERE REQ_ID = @p_REQ_ID AND STATUS = 'DONE'))
113
BEGIN
114
    ROLLBACK TRANSACTION
115
    SELECT '-1' as Result,'' REQ_ID,''REQ_ID,N'Phiếu yêu cầu đã được phê duyệt hoàn tất. Gửi phê duyệt thất bại.' NOTICATION
116
    RETURN '-1'
117
END
118

    
119
DECLARE @STATUS VARCHAR(10), @WARE_CODE VARCHAR(20)
120
SELECT TOP 1 @STATUS = A.STATUS, @WARE_CODE = C.WARE_CODE
121
FROM MW_REQ A 
122
LEFT JOIN CM_REQ_TYPE B ON A.REQ_TYPE = B.REQ_TYPE_ID
123
LEFT JOIN CM_WARE C ON B.WARE_TYPE = C.WARE_ID
124
WHERE A.REQ_ID = @p_REQ_ID
125

    
126
IF(EXISTS(SELECT REQ_ID FROM MW_REQ WHERE REQ_ID = @p_REQ_ID AND AUTH_STATUS = @p_AUTH_STATUS ) )
127
	BEGIN
128
			ROLLBACK TRANSACTION
129
			SELECT '-1' AS Result , ''  REQ_CODE, N'Phiếu yêu cầu đã được gửi phê duyệt trước đó.' NOTICATION
130
			RETURN '-1'
131
	END
132

    
133
    IF(NOT EXISTS(SELECT REQ_ID FROM MW_REQ_DT WHERE REQ_ID = @p_REQ_ID))
134
    BEGIN
135
        ROLLBACK TRANSACTION
136
  			SELECT '-1' AS Result , ''  REQ_ID, N'Nội dung chi tiết đơn vị yêu cầu không được để trống.' NOTICATION
137
  			RETURN '-1'
138
    END
139
    IF( EXISTS( SELECT MATERIAL_ID,BRANCH_USE,DEP_USE
140
                FROM MW_REQ_DT
141
                WHERE REQ_ID = @p_REQ_ID
142
                GROUP BY MATERIAL_ID, BRANCH_USE,DEP_USE HAVING COUNT(*)>1))
143
    BEGIN
144
        ROLLBACK TRANSACTION
145
  			SELECT '-1' AS Result , ''  REQ_ID, N'Nội dung chi tiết đơn vị yêu cầu bị  trùng lặp: loại vật liệu và đơn vị sử dụng.' NOTICATION
146
  			RETURN '-1'
147
    END
148

    
149
   IF(NOT EXISTS(SELECT * FROM MW_REQ_PROCESS mrp WHERE mrp.REQ_ID = @p_REQ_ID) AND (SELECT A.STATUS FROM MW_REQ A WHERE REQ_ID = @p_REQ_ID) = 'DMTN')
150
    BEGIN
151
       	ROLLBACK TRANSACTION
152
    		SELECT '-1' as Result,'' REQ_ID,''REQ_ID,N'Cấp xử lý phải được lưu lại trước khi gửi duyệt' NOTICATION
153
    		RETURN '-1'
154
    END
155

    
156

    
157
    IF((SELECT A.STATUS FROM MW_REQ A WHERE A.REQ_ID = @p_REQ_ID) = 'ADDNEW')
158
    BEGIN
159
      SET @p_AUTH_STATUS = 'U'
160
      SET @p_STATUS = 'SendApp'
161
      UPDATE MW_REQ SET AUTH_STATUS = @p_AUTH_STATUS, STATUS = @p_STATUS WHERE REQ_ID = @p_REQ_ID
162
      DECLARE @p_BRANCH_ID varchar(50) = (SELECT BRANCH_ID FROM MW_REQ WHERE REQ_ID = @p_REQ_ID)
163
      DECLARE @p_DEP_ID VARCHAR(50) = (SELECT DEP_ID FROM MW_REQ WHERE REQ_ID = @p_REQ_ID)
164
      UPDATE MW_REQUEST_PROCESS SET STATUS = 'P', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = GETDATE() WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'ADDNEW'
165

    
166
--      INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,CHECKER_ID)
167
--      VALUES(@p_REQ_CODE,'SENDAPP',N'GỬI TĐV DUYỆT','P','GDDV',@p_BRANCH_ID,'ADDNEW',@p_DEP_ID, 'Approve',GETDATE(),@p_CHECKER_ID)
168
--  	  INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,NOTES)
169
--      VALUES(@p_REQ_CODE,'APPNEW',N'TDV DUYỆT','C','GDDV',@p_BRANCH_ID,'ADDNEW',@p_DEP_ID, 'Approve',GETDATE(), N'CHỜ DUYỆT')
170

    
171
      INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,CHECKER_ID,NOTES)
172
      VALUES(@p_REQ_ID,'SENDAPP',N'Gửi Trưởng đơn vị phê duyệt','P','GDDV',@p_BRANCH_ID,'ADDNEW',@p_DEP_ID, 'Approve',GETDATE(),@p_CHECKER_ID, N'Nhân viên tạo phiếu và gửi đến Trưởng đơn vị phê duyệt')
173

    
174
      --UPDATE MW_REQUEST_PROCESS SET STATUS = 'C' WHERE REQ_ID = @p_REQ_CODE AND PROCESS_ID = 'APPNEW'
175
    END
176

    
177
    --ĐỐI VỚI 3 KHO THẺ. TỪ TTKD GỬI LÊN, BẮT BUỘC PHẢI CHỌN CẤP XỬ LÝ TIẾP THEO
178
    IF(@STATUS = 'DMTN' AND @WARE_CODE IN ('02TE','03CT','04VT'))
179
    BEGIN
180
    	  IF(NOT EXISTS(SELECT 1 FROM MW_REQ_PROCESS WHERE REQ_ID = @p_REQ_ID))
181
        BEGIN
182
            ROLLBACK TRANSACTION
183
        		SELECT '-1' as Result,'' REQ_ID,''REQ_ID,N'Phiếu yêu cầu đối với kho vật liệu thẻ, phôi thẻ trắng, phôi thẻ cá thể hóa, bắt buộc chọn cấp xử lý tiếp theo.' NOTICATION
184
        		RETURN '-1'
185
        END
186
    END
187
  
188

    
189
    IF((SELECT A.STATUS FROM MW_REQ A WHERE REQ_ID = @p_REQ_ID) = 'DMTN' AND EXISTS(SELECT * FROM MW_REQ_PROCESS WHERE REQ_ID = @p_REQ_ID))
190
    BEGIN
191

    
192
      IF(NOT EXISTS(SELECT * FROM MW_REQ_PROCESS mrp WHERE mrp.REQ_ID = @p_REQ_ID))
193
      BEGIN
194
          GOTO ABORT2
195
      END
196
      
197
      SET @p_AUTH_STATUS = 'U'
198
      SET @p_STATUS = 'LEVEL'
199

    
200
      UPDATE MW_REQ SET AUTH_STATUS = @p_AUTH_STATUS, STATUS = @p_STATUS WHERE REQ_ID = @p_REQ_ID
201
      UPDATE MW_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'DMTN'
202

    
203
      INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,CHECKER_ID,NOTES)
204
      VALUES(@p_REQ_ID,'DMTN',N'Gửi các cấp xử lý tiếp theo','P',@p_BRANCH_ID,'APPNEW',@p_DEP_ID, 'SendApp',GETDATE(),@p_CHECKER_ID, N'Đầu mối tiếp nhập thêm cấp xử lý và gửi đến các cấp xử lý')
205

    
206
      INSERT INTO MW_REQUEST_PROCESS (REQ_ID, PROCESS_ID,PROCESS_NAME, STATUS, BRANCH_ID, PARENT_PROCESS_ID, IS_LEAF, IS_HAS_CHILD,DEP_ID, DVKD_USER_APP,  PROCESS_TYPE, STAGE, CHECKER_ID, NOTES, RECEPTION_DT)
207
      SELECT mrp.REQ_ID, 'LEVEL',N'CẤP XỬ LÝ TIẾP THEO', CASE WHEN ROW_NUMBER() OVER	(ORDER BY mrp.STAGE) = 1 THEN 'C'  ELSE 'U' END, 'DV0001', 'DMTN', 
208
      ROW_NUMBER() OVER	(ORDER BY mrp.STAGE), ROW_NUMBER() OVER	(ORDER BY mrp.STAGE) + 1,(SELECT a.SECUR_CODE FROM TL_USER a WHERE a.TLNANME = mrp.TLNAME),mrp.TLNAME,'Approve',STAGE, mrp.TLNAME, N'Chờ duyệt', DATEADD(SECOND,1,GETDATE())
209
      FROM MW_REQ_PROCESS mrp WHERE mrp.REQ_ID = @p_REQ_ID
210
    END
211

    
212
INSERT INTO dbo.MW_PROCESS
213
							(
214
								REQ_ID,
215
								PROCESS_ID,
216
								CHECKER_ID,
217
								APPROVE_DT,
218
								PROCESS_DESC,
219
								NOTES
220
							)
221
							VALUES
222
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
223
								'SENDAPP',        -- PROCESS_ID - varchar(10)
224
								@p_CHECKER_ID,        -- CHECKER_ID - varchar(100)
225
								GETDATE(), -- APPROVE_DT - datetime
226
								N'Nhân viên gửi phê duyệt',       -- PROCESS_DESC - nvarchar(1000)
227
								N'Nhân viên gửi phê duyệt thành công'        -- NOTES - nvarchar(1000)
228
							)
229
IF @@Error <> 0 GOTO ABORT
230
COMMIT TRANSACTION
231
SELECT '0' as Result,'' REQ_ID,'' REQ_ID, N'Phiếu yêu cầu: '+(SELECT REQ_ID FROM MW_REQ WHERE REQ_ID  = @p_REQ_ID)+N' đã được gửi phê duyệt thành công.' NOTICATION, '' ErrorDesc
232
RETURN '0'
233
ABORT:
234
BEGIN
235
		ROLLBACK TRANSACTION
236
		SELECT '-1' as Result,'' REQ_ID,''REQ_ID, '' NOTICATION
237
		RETURN '-1'
238
END
239
ABORT2:
240
BEGIN
241
		ROLLBACK TRANSACTION
242
		SELECT '-1' as Result,'' REQ_ID,''REQ_ID,N'Cấp xử lý phải được lưu lại trước khi gửi duyệt' NOTICATION
243
		RETURN '-1'
244
End
245
GO
246
IF @@ERROR <> 0 SET NOEXEC ON
247
GO
248
PRINT N'Altering [dbo].[MW_REQ_Upd]'
249
GO
250
ALTER PROCEDURE [dbo].[MW_REQ_Upd]
251
  @p_REQ_ID VARCHAR(20)= NULL,
252
  @p_REQ_CODE VARCHAR(15)= NULL,
253
  @p_REQ_TYPE VARCHAR(25) = NULL,
254
  @p_BRANCH_ID VARCHAR(25) = NULL,
255
  @p_DEP_ID VARCHAR(25) = NULL,
256
  @p_PROMOTION_ID VARCHAR(25)= NULL,
257
  @p_REGARDS_TO NVARCHAR(1000) = NULL,
258
  @p_REQUEST_DOC_CONTENT NVARCHAR(1000) = NULL,
259
  @p_AUTH_STATUS VARCHAR(1)= NULL,
260
  @p_QUANTITY_ALLOCATION VARCHAR(1000),
261
  @p_STATUS VARCHAR(15)= NULL,
262
  @p_RECORD_STATUS varchar(15)= NULL,
263
  @p_MAKER_ID	varchar(100)  = NULL,
264
  @p_CREATE_DT VARCHAR(30) = NULL,
265
  @p_APPROVE_DT varchar(25)= NULL,
266
  @p_CHECKER_ID varchar(100)= NULL,
267
  @p_BRANCH_RECEIVE_ID VARCHAR(50) = NULL,
268
  @p_BRANCH_RECEIVE_NAME NVARCHAR(1000) =NULL,
269
  @p_DEP_RECEIVE_ID VARCHAR(50) = NULL,
270
  @p_DEP_RECEIVE_NAME NVARCHAR(1000)= NULL,
271
  @p_XmlData XML = NULL,
272
  @p_XmlDataProcess XML = NULL
273
AS 
274

    
275
--Validation is here
276
DECLARE @ERRORSYS NVARCHAR(1500) = '' 
277
DECLARE @INDEX INT =1
278
--KHAI BAO BIEN CURSOR DETAIL
279
DECLARE @REQ_DT_ID varchar(15)= NULL,
280
        @REQ_ID VARCHAR(20)=NULL,
281
        @REQ_CODE varchar(15) =NULL,
282
        @MATERIAL_GROUP VARCHAR (200)= NULL,
283
        @MATERIAL_ID nvarchar(200) =NULL,
284
        @UNIT_ID VARCHAR(15) =NULL, 
285
        @QUANTITY_REQ DECIMAL(18,2)= NULL,
286
        @QUANTITY_ALLOCATION DECIMAL(18,2) = NULL,
287
        @REASON NVARCHAR(1000) =NULL,
288
        @DEP_USE VARCHAR(15) = NULL,
289
        @BRANCH_USE VARCHAR(15) = NULL,
290
        @BRANCH_NAME NVARCHAR(1000) = NULL,
291
        @ALLOCATED DECIMAL(18,2) = NULL
292
--KHAI BAO BIEN CURSOR Process
293
DECLARE @REQ_PROCESS_ID varchar(15),
294
        @TLNAME VARCHAR (200)= NULL,
295
        @PROCESS_STATUS nvarchar(200) =NULL,
296
        @NOTES NVARCHAR(1000) =NULL,
297
        @REQ_CODE_PROCESS varchar(15) =NULL,
298
        @STAGE INT
299
--
300
DECLARE @hdoc INT;
301

    
302
BEGIN TRANSACTION
303
IF(@p_STATUS = 'SendApp')
304
	BEGIN
305
			ROLLBACK TRANSACTION
306
			SELECT '-1' AS Result , ''  REQ_ID, N'Phiếu yêu cầu không được chỉnh sửa. Vui lòng kiểm tra lại' ErrorDesc
307
			RETURN '-1'
308
	END
309
IF(@p_AUTH_STATUS = 'R')
310
BEGIN
311
    DECLARE @USER_LOGIN VARCHAR(20) = @p_MAKER_ID
312
    IF((@p_STATUS = 'R_MAKERID' OR @p_STATUS = 'R_SENDAPP') AND (SELECT mr.MAKER_ID FROM MW_REQ mr WHERE mr.REQ_ID = @p_REQ_ID) != @USER_LOGIN)
313
    BEGIN
314
        ROLLBACK TRANSACTION
315
  			SELECT '-1' AS Result , ''  REQ_ID, N'Không được phép chỉnh phiếu, phiếu yêu cầu được trả về cho người tạo chỉnh sửa' ErrorDesc
316
  			RETURN '-1'
317
    END
318
    IF((@p_STATUS = 'R_DMTN') AND (((SELECT mr.MAKER_ID FROM MW_REQ mr WHERE mr.REQ_ID = @p_REQ_ID) = @USER_LOGIN) 
319
                                                                        OR ((SELECT mr.CHECKER_ID FROM MW_REQ mr WHERE mr.REQ_ID = @p_REQ_ID) = @USER_LOGIN)))
320
    BEGIN
321
        ROLLBACK TRANSACTION
322
  			SELECT '-1' AS Result , ''  REQ_ID, N'Không được phép chỉnh phiếu, phiếu yêu cầu được trả về cho đầu mối chỉnh sửa' ErrorDesc
323
  			RETURN '-1'
324
    END
325
END
326
---
327
		EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
328
		DECLARE XmlData CURSOR FOR
329
		SELECT *
330
		FROM
331
			OPENXML (@hdoc, '/Root/MWREQDT', 2)
332
			WITH (	REQ_DT_ID varchar(15),
333
              REQ_ID varchar(20),
334
              REQ_CODE varchar(15),
335
              MATERIAL_GROUP VARCHAR (200),
336
              MATERIAL_ID nvarchar(200),
337
              UNIT_ID VARCHAR(15), 
338
              QUANTITY_REQ DECIMAL(18,2),
339
              QUANTITY_ALLOCATION DECIMAL(18,2),
340
              REASON NVARCHAR(1000),
341
              DEP_USE VARCHAR(15),
342
              BRANCH_USE VARCHAR(15),
343
              BRANCH_NAME NVARCHAR(1000),
344
              ALLOCATED DECIMAL(18,2)
345
              );
346
		OPEN XmlData;
347

    
348
---
349
		EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlDataProcess;
350
		DECLARE XmlDataProcess CURSOR FOR
351
		SELECT * FROM OPENXML (@hdoc, '/Root/MWREQPROCESS', 2)
352
    WITH (    REQ_PROCESS_ID VARCHAR(15),
353
              TLNAME varchar(15),
354
              PROCESS_STATUS varchar(15),
355
              NOTES NVARCHAR(1000),
356
              REQ_ID varchar(15),
357
              STAGE INT);
358
		OPEN XmlDataProcess;
359

    
360
    IF(@p_STATUS = 'ADDNEW')
361
    BEGIN
362
       UPDATE MW_REQ SET  REQ_TYPE = @p_REQ_TYPE, 
363
                          BRANCH_ID = @p_BRANCH_ID, 
364
                          REGARDS_TO = @p_REGARDS_TO, 
365
                          REQUEST_DOC_CONTENT = @p_REQUEST_DOC_CONTENT, 
366
                          PROMOTION_ID = @p_PROMOTION_ID, DEP_ID = @p_DEP_ID,
367
                          BRANCH_RECEIVE_ID=@p_BRANCH_RECEIVE_ID,
368
                          BRANCH_RECEIVE_NAME=@p_BRANCH_RECEIVE_NAME,
369
                          DEP_RECEIVE_ID = @p_DEP_RECEIVE_ID,
370
                          DEP_RECEIVE_NAME=@p_DEP_RECEIVE_NAME 
371
                          WHERE REQ_ID = @p_REQ_ID
372

    
373
          DELETE MW_REQ_DT WHERE REQ_ID = @p_REQ_ID
374
          --
375
          FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
376
      		WHILE @@FETCH_STATUS = 0
377
      		BEGIN
378
            EXEC SYS_CodeMasters_Gen 'MW_REQ_DT', @REQ_DT_ID out
379
        		IF @REQ_DT_ID='' OR @REQ_DT_ID IS NULL GOTO ABORT
380

    
381
            IF(@QUANTITY_REQ=0)
382
            BEGIN
383
            	ROLLBACK TRANSACTION
384
        			CLOSE XmlData;
385
        			DEALLOCATE XmlData;
386
        			SELECT '-1' as Result, '' REQ_ID, N'Danh sách yêu cầu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': số lượng yêu cầu không thể đáp ứng.' ErrorDesc
387
        			RETURN '-1'
388
            END
389
            IF(ISNULL(@p_PROMOTION_ID,'') <> '' AND @MATERIAL_ID NOT IN (SELECT cpd.MATERIAL_ID FROM CM_PROMOTION_DT cpd WHERE cpd.PROMOTION_ID = @p_PROMOTION_ID))
390
            BEGIN
391
            	  ROLLBACK TRANSACTION
392
          			CLOSE XmlData;
393
          			DEALLOCATE XmlData;
394
          			SELECT '-1' as Result, '' REQ_ID, N'Danh sách yêu cầu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': loại vật liệu bạn chọn không có trong danh sách chương trình.' ErrorDesc
395
          			RETURN '-1'
396
            END
397
            --
398
            SET @REQ_ID = @p_REQ_ID
399
            INSERT INTO MW_REQ_DT (REQ_DT_ID,REQ_ID, REQ_CODE, MATERIAL_GROUP, MATERIAL_ID, UNIT_ID, QUANTITY_REQ, QUANTITY_ALLOCATION, REASON,DEP_USE,BRANCH_USE,BRANCH_NAME,ALLOCATED)
400
            VALUES (@REQ_DT_ID,@REQ_ID, @REQ_CODE, @MATERIAL_GROUP, @MATERIAL_ID, @UNIT_ID, @QUANTITY_REQ, @QUANTITY_ALLOCATION, @REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,0)
401

    
402
          
403
      	    --
404
            IF @@Error <> 0 GOTO ABORT;
405
      
406
          FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
407

    
408
          END
409
          CLOSE XmlData;
410
      		DEALLOCATE XmlData;
411

    
412
        --thêm lịch sử cập nhật
413
        --INSERT INTO MW_REQUEST_PROCESS () VALUES ()
414
    END
415
    IF(@p_STATUS = 'DMTN')
416
    BEGIN
417
      --Update quantity_allcation(số lượng cấp phát)
418
      DELETE MW_REQ_DT WHERE REQ_ID = @p_REQ_ID
419
      --
420
      FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
421
  		WHILE @@FETCH_STATUS = 0
422
  		BEGIN
423
        IF(@QUANTITY_ALLOCATION > @QUANTITY_REQ)
424
        BEGIN
425
        	ROLLBACK TRANSACTION
426
    			CLOSE XmlData;
427
    			DEALLOCATE XmlData;
428
    			SELECT '-1' as Result, '' REQ_ID, N'Danh sách yêu cầu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': số lượng cấp phát không được lớn hơn số lượng yêu cầu.' ErrorDesc
429
    			RETURN '-1'
430
        END
431
        IF(@QUANTITY_REQ=0)
432
        BEGIN
433
        	ROLLBACK TRANSACTION
434
    			CLOSE XmlData;
435
    			DEALLOCATE XmlData;
436
    			SELECT '-1' as Result, '' REQ_ID, N'Danh sách yêu cầu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': số lượng yêu cầu không thể đáp ứng.' ErrorDesc
437
    			RETURN '-1'
438
        END
439

    
440
        EXEC SYS_CodeMasters_Gen 'MW_REQ_DT', @REQ_DT_ID out
441
    		IF @REQ_DT_ID='' OR @REQ_DT_ID IS NULL GOTO ABORT
442
        --
443
        SET @INDEX = @INDEX +1
444
        SET @REQ_ID = @p_REQ_ID
445
        INSERT INTO MW_REQ_DT (REQ_DT_ID,REQ_ID, REQ_CODE, MATERIAL_GROUP, MATERIAL_ID, UNIT_ID, QUANTITY_REQ, QUANTITY_ALLOCATION, REASON,DEP_USE,BRANCH_USE,BRANCH_NAME,ALLOCATED)
446
        VALUES (@REQ_DT_ID,@REQ_ID, @REQ_CODE, @MATERIAL_GROUP, @MATERIAL_ID, @UNIT_ID, @QUANTITY_REQ, @QUANTITY_ALLOCATION, @REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,0)
447
  	    --
448
        IF @@Error <> 0 GOTO ABORT;
449
  
450
        FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
451

    
452
      END
453
      CLOSE XmlData;
454
  		DEALLOCATE XmlData;
455

    
456
      --Insert MW_REQ_PROCESS
457
      DELETE MW_REQ_PROCESS WHERE REQ_ID = @p_REQ_ID
458
      
459
        --
460
        FETCH NEXT FROM XmlDataProcess	INTO @REQ_PROCESS_ID,@TLNAME,@PROCESS_STATUS,@NOTES,@REQ_CODE_PROCESS,@STAGE
461
       -- DECLARE @STATUS_P VARCHAR(5) = 'C'
462
    		WHILE @@FETCH_STATUS = 0
463
    		BEGIN
464
          EXEC SYS_CodeMasters_Gen 'MW_REQ_PROCESS', @REQ_PROCESS_ID out
465
      		IF @REQ_PROCESS_ID='' OR @REQ_PROCESS_ID IS NULL GOTO ABORT
466
          --
467
          SET @REQ_CODE_PROCESS = @p_REQ_ID
468
          INSERT INTO MW_REQ_PROCESS (REQ_PROCESS_ID, TLNAME, PROCESS_STATUS, NOTES, REQ_ID,STAGE)
469
          VALUES (@REQ_PROCESS_ID, @TLNAME, @PROCESS_STATUS, @NOTES, @REQ_CODE_PROCESS,@STAGE)
470

    
471
          --INSERT INTO MW_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, NOTES, STAGE) VALUES (@p_REQ_ID, 'LEVEL', @STATUS_P, 'TDV', @TLNAME, '','DMTN', N'Chờ duyệt',@STAGE)
472
    	    --
473
          IF @@Error <> 0 GOTO ABORT;
474
          --SET @STATUS_P = 'U'
475
          FETCH NEXT FROM XmlDataProcess	INTO @REQ_PROCESS_ID,@TLNAME,@PROCESS_STATUS,@NOTES,@REQ_CODE_PROCESS,@STAGE
476
        END
477
      	CLOSE XmlDataProcess;
478
    		DEALLOCATE XmlDataProcess;
479

    
480
        --thêm lịch sử add process
481
        --INSERT INTO MW_REQUEST_PROCESS () VALUES ()
482
    END
483
    --Người tạo cập nhật lại phiếu bị từ chối ở Bước TDV duyệt và đầu mối kietvt 18/10/2023
484
    IF(EXISTS(SELECT * FROM MW_REQ WHERE REQ_ID = @p_REQ_ID AND MAKER_ID = @p_MAKER_ID AND STATUS IN ('R_SENDAPP','DMTN_MAKER','R_MAKERID')))
485
    BEGIN
486
      UPDATE MW_REQ SET REQ_TYPE = @p_REQ_TYPE, 
487
                        BRANCH_ID = @p_BRANCH_ID, 
488
                        REGARDS_TO = @p_REGARDS_TO, 
489
                        REQUEST_DOC_CONTENT = @p_REQUEST_DOC_CONTENT, 
490
                        PROMOTION_ID = @p_PROMOTION_ID, 
491
                        DEP_ID = @p_DEP_ID, 
492
                        STATUS = 'ADDNEW', AUTH_STATUS = 'E',
493
                        BRANCH_RECEIVE_ID=@p_BRANCH_RECEIVE_ID,
494
                        BRANCH_RECEIVE_NAME=@p_BRANCH_RECEIVE_NAME,
495
                        DEP_RECEIVE_ID = @p_DEP_RECEIVE_ID,
496
                        DEP_RECEIVE_NAME=@p_DEP_RECEIVE_NAME 
497
                        WHERE REQ_ID = @p_REQ_ID
498

    
499
          DELETE MW_REQ_DT WHERE REQ_ID = @p_REQ_ID
500
          --
501
          FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
502
      		WHILE @@FETCH_STATUS = 0
503
      		BEGIN
504
            EXEC SYS_CodeMasters_Gen 'MW_REQ_DT', @REQ_DT_ID out
505
        		IF @REQ_DT_ID='' OR @REQ_DT_ID IS NULL GOTO ABORT
506
            --
507
            SET @REQ_ID = @p_REQ_ID
508
            INSERT INTO MW_REQ_DT (REQ_DT_ID,REQ_ID, REQ_CODE, MATERIAL_GROUP, MATERIAL_ID, UNIT_ID, QUANTITY_REQ, QUANTITY_ALLOCATION, REASON,DEP_USE,BRANCH_USE,BRANCH_NAME,ALLOCATED)
509
            VALUES (@REQ_DT_ID,@p_REQ_ID, @REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID, @UNIT_ID, @QUANTITY_REQ, @QUANTITY_ALLOCATION, @REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,0)
510
      	    --
511
            IF @@Error <> 0 GOTO ABORT;
512
      
513
            FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
514

    
515
          END
516
          CLOSE XmlData;
517
      		DEALLOCATE XmlData;
518
      -- Tạo lại lịch sử xử lý 
519
      INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, CHECKER_ID,NOTES,RECEPTION_DT)
520
  		       VALUES(@REQ_ID,'ADDNEW',N'Chỉnh sửa','NVTT','C',@p_BRANCH_ID,'',@p_DEP_ID, @p_MAKER_ID, N'Chỉnh sửa lại phiếu',GETDATE())
521
--  	  INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,PROCESS_NAME,DEP_ID, PROCESS_TYPE)
522
--  		       VALUES(@REQ_ID,'APPNEW','U','GDDV',@p_BRANCH_ID,'ADDNEW','',@p_DEP_ID, 'Approve')
523
    END
524
    --Phiếu trả về ở bước LEVEL
525
    IF(EXISTS(SELECT * FROM MW_REQ WHERE REQ_ID = @p_REQ_ID AND CHECKER_ID != @p_MAKER_ID AND MAKER_ID != @p_MAKER_ID AND STATUS = 'R_DMTN'))
526
    BEGIN
527
      UPDATE MW_REQ SET STATUS = 'DMTN', AUTH_STATUS = 'A' WHERE REQ_ID = @p_REQ_ID
528
      --Update quantity_allcation(số lượng cấp phát)
529
      DELETE MW_REQ_DT WHERE REQ_ID = @p_REQ_ID
530
      --
531
      FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
532
      		WHILE @@FETCH_STATUS = 0
533
      		BEGIN
534
            IF(@QUANTITY_ALLOCATION > @QUANTITY_REQ)
535
            BEGIN
536
            	ROLLBACK TRANSACTION
537
        			CLOSE XmlData;
538
        			DEALLOCATE XmlData;
539
        			SELECT '-1' as Result, '' REQ_ID, N'Danh sách yêu cầu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': số lượng cấp phát không được lớn hơn số lượng yêu cầu.' ErrorDesc
540
        			RETURN '-1'
541
            END
542
            EXEC SYS_CodeMasters_Gen 'MW_REQ_DT', @REQ_DT_ID out
543
        		IF @REQ_DT_ID='' OR @REQ_DT_ID IS NULL GOTO ABORT
544
            --
545
            SET @INDEX = @INDEX +1
546
            SET @REQ_ID = @p_REQ_ID
547
            INSERT INTO MW_REQ_DT (REQ_DT_ID,REQ_ID, REQ_CODE, MATERIAL_GROUP, MATERIAL_ID, UNIT_ID, QUANTITY_REQ, QUANTITY_ALLOCATION, REASON,DEP_USE,BRANCH_USE,BRANCH_NAME,ALLOCATED)
548
            VALUES (@REQ_DT_ID,@p_REQ_ID, @REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID, @UNIT_ID, @QUANTITY_REQ, @QUANTITY_ALLOCATION, @REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,0)
549
      	    --
550
            IF @@Error <> 0 GOTO ABORT;
551
      
552
            FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@REASON,@DEP_USE,@BRANCH_USE,@BRANCH_NAME,@ALLOCATED
553

    
554
      END
555
      CLOSE XmlData;
556
  		DEALLOCATE XmlData;
557

    
558
      --Insert MW_REQ_PROCESS
559
      DELETE MW_REQ_PROCESS WHERE REQ_ID = @p_REQ_ID
560
      
561
        --
562
        FETCH NEXT FROM XmlDataProcess	INTO @REQ_PROCESS_ID,@TLNAME,@PROCESS_STATUS,@NOTES,@REQ_CODE_PROCESS,@STAGE
563
       -- DECLARE @STATUS_P VARCHAR(5) = 'C'
564
    		WHILE @@FETCH_STATUS = 0
565
    		BEGIN
566
          EXEC SYS_CodeMasters_Gen 'MW_REQ_PROCESS', @REQ_PROCESS_ID out
567
      		IF @REQ_PROCESS_ID='' OR @REQ_PROCESS_ID IS NULL GOTO ABORT
568
          --
569
          SET @REQ_CODE_PROCESS = @p_REQ_ID
570
          INSERT INTO MW_REQ_PROCESS (REQ_PROCESS_ID, TLNAME, PROCESS_STATUS, NOTES, REQ_ID,STAGE)
571
          VALUES (@REQ_PROCESS_ID, @TLNAME, @PROCESS_STATUS, @NOTES, @REQ_CODE_PROCESS,@STAGE)
572

    
573
          --INSERT INTO MW_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER, CHECKER_ID, APPROVE_DT, PARENT_PROCESS_ID, NOTES, STAGE) VALUES (@p_REQ_CODE, 'LEVEL', @STATUS_P, 'TDV', @TLNAME, '','DMTN', N'Chờ duyệt',@STAGE)
574
    	    --
575
          IF @@Error <> 0 GOTO ABORT;
576
          --SET @STATUS_P = 'U'
577
          FETCH NEXT FROM XmlDataProcess	INTO @REQ_PROCESS_ID,@TLNAME,@PROCESS_STATUS,@NOTES,@REQ_CODE_PROCESS,@STAGE
578
        END
579
      	CLOSE XmlDataProcess;
580
    		DEALLOCATE XmlDataProcess;
581

    
582
        --thêm lịch sử add process
583
        --INSERT INTO MW_REQUEST_PROCESS () VALUES ()
584
         INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, CHECKER_ID,NOTES,RECEPTION_DT)
585
  		       VALUES(@REQ_ID,'DMTN',N'Chỉnh sửa','DVDM','C',@p_BRANCH_ID,'',@p_DEP_ID, @p_MAKER_ID, N'Chỉnh sửa lại phiếu',GETDATE())
586
    END
587
  
588
 INSERT INTO dbo.MW_PROCESS
589
							(
590
								REQ_ID,
591
								PROCESS_ID,
592
								CHECKER_ID,
593
								APPROVE_DT,
594
								PROCESS_DESC,
595
								NOTES
596
							)
597
							VALUES
598
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
599
								'UPDATE',        -- PROCESS_ID - varchar(10)
600
								@p_MAKER_ID,        -- CHECKER_ID - varchar(100)
601
								CONVERT(DATETIME, @p_CREATE_DT, 103), -- APPROVE_DT - datetime
602
								N'Nhân viên cập nhật phiếu',       -- PROCESS_DESC - nvarchar(1000)
603
								N'Nhân viên cập nhật phiếu yêu cầu'        -- NOTES - nvarchar(1000)
604
							)
605
IF @@Error <> 0 GOTO ABORT
606
COMMIT TRANSACTION
607
SELECT '0' as Result,'' REQ_ID,'' REQ_ID, N'Phiếu yêu cầu: '+(SELECT REQ_ID FROM MW_REQ WHERE REQ_ID  = @p_REQ_ID)+N' đã được cập nhật thành công.' NOTICATION, '' ErrorDesc
608
RETURN '0'
609
ABORT:
610
BEGIN
611
    CLOSE XmlData;
612
		DEALLOCATE XmlData;
613
    CLOSE XmlDataProcess;
614
		DEALLOCATE XmlDataProcess;
615
		ROLLBACK TRANSACTION
616
		SELECT '-1' as Result,'' REQ_ID,''REQ_ID, '' ErrorDesc
617
		RETURN '-1'
618
End
619
GO
620
IF @@ERROR <> 0 SET NOEXEC ON
621
GO
622
PRINT N'Altering [dbo].[MW_REJECT_LOG_Ins]'
623
GO
624
ALTER PROC [dbo].[MW_REJECT_LOG_Ins]
625
@p_LOG_ID	varchar(15)	= NULL,
626
@p_STAGE	varchar(10)	 = NULL,
627
@p_TRN_ID	varchar(15)	 = NULL,
628
@p_TRN_TYPE	nvarchar(100)	 = NULL,
629
@p_LOG_DT	VARCHAR(50)	 = NULL,
630
@p_AUTH_STATUS	varchar(3)	 = NULL,
631
@p_REASON	nvarchar(4000)	 = NULL,
632
@p_IS_LATEST	varchar(1)	 = NULL,
633
@p_REJECTED_BY	varchar(20)	 = NULL,
634
@p_REJECTED_DT	VARCHAR(50)	 = NULL,
635
@p_RETURN_STEP VARCHAR(25) = NULL
636
AS
637

    
638
--Validation is here
639
DECLARE @ERRORSYS NVARCHAR(1500) = '' 
640
  IF ( EXISTS ( SELECT * FROM MW_REJECT_LOG WHERE LOG_ID = @p_LOG_ID))
641
	SET @ERRORSYS = N'Mã '+@p_LOG_ID+ N' đã tồn tại trong hệ thống'
642
IF @ERRORSYS <> '' 
643
BEGIN
644
	SELECT '-1' Result, @ERRORSYS ErrorDesc
645
	RETURN '-1'
646
END 
647

    
648
IF (@p_REJECTED_BY = (SELECT mr.MAKER_ID FROM MW_REQ mr WHERE mr.REQ_ID = @p_TRN_ID))
649
BEGIN
650
	SELECT '-1' Result, N'Không được phép trả phiếu' ErrorDesc
651
	RETURN '-1'
652
END 
653

    
654
BEGIN TRANSACTION
655
DECLARE @l_LOG_ID VARCHAR(15)
656
		EXEC SYS_CodeMasters_Gen 'MW_REJECT_LOG', @l_LOG_ID out
657
		IF @l_LOG_ID='' OR @l_LOG_ID IS NULL GOTO ABORT
658
		
659

    
660
DECLARE @p_BRANCH_ID varchar(50),@p_DEP_ID VARCHAR(50)
661
SELECT @p_DEP_ID = DEP_ID, @p_BRANCH_ID = BRANCH_ID FROM MW_REQ WHERE REQ_ID = @p_TRN_ID
662

    
663
    IF((SELECT STATUS FROM MW_REQ WHERE REQ_ID = @p_TRN_ID ) LIKE 'SendApp' )
664
    BEGIN
665
    	 INSERT INTO MW_REJECT_LOG (LOG_ID, STAGE, TRN_ID, TRN_TYPE, LOG_DT, AUTH_STATUS, REASON, IS_LATEST, REJECTED_BY, REJECTED_DT)
666
            VALUES (@l_LOG_ID, @p_STAGE, @p_TRN_ID, @p_TRN_TYPE, CONVERT(DATETIME,@p_LOG_DT,103), @p_AUTH_STATUS, @p_REASON, @p_IS_LATEST, @p_REJECTED_BY, CONVERT(DATETIME,@p_REJECTED_DT,103));
667
       
668
       UPDATE MW_REQ SET STATUS = 'R_SENDAPP', AUTH_STATUS = 'R' WHERE REQ_ID = @p_TRN_ID
669
      -- UPDATE MW_REQUEST_PROCESS SET STATUS = 'F', NOTES = N'Phiếu từ chối phiếu ở bước TDV duyệt' WHERE REQ_ID = @p_TRN_ID
670
        
671
          UPDATE MW_REQUEST_PROCESS
672
          SET STATUS = 'F'
673
          WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'SENDAPP'
674

    
675

    
676

    
677
       INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,CHECKER_ID,NOTES)
678
       VALUES(@p_TRN_ID,'R_SENDAPP',N'Từ chối phiếu','F','',@p_BRANCH_ID,'LEVEL',@p_DEP_ID, 'REJECT',GETDATE(),@p_REJECTED_BY, N'Phiếu bị từ chối ở trường đơn vị và trả về cho người tạo chỉnh sửa')
679
      
680
   
681
   END
682
    IF ((SELECT STATUS FROM MW_REQ WHERE REQ_ID = @p_TRN_ID ) LIKE 'LEVEL')
683
    BEGIN  
684
            INSERT INTO MW_REJECT_LOG (LOG_ID, STAGE, TRN_ID, TRN_TYPE, LOG_DT, AUTH_STATUS, REASON, IS_LATEST, REJECTED_BY, REJECTED_DT,RETURN_STEP)
685
            VALUES (@l_LOG_ID, @p_STAGE, @p_TRN_ID, @p_TRN_TYPE, CONVERT(DATETIME,@p_LOG_DT,103), @p_AUTH_STATUS, @p_REASON, @p_IS_LATEST, @p_REJECTED_BY, CONVERT(DATETIME,@p_REJECTED_DT,103),@p_RETURN_STEP);
686
      IF(@p_STAGE = 'R_MAKERID')
687
      BEGIN
688
      	
689

    
690
        UPDATE MW_REQ SET STATUS = 'R_MAKERID', AUTH_STATUS = 'R' WHERE REQ_ID = @p_TRN_ID
691

    
692
          UPDATE MW_REQUEST_PROCESS
693
          SET STATUS = 'F'
694
          WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'LEVEL'
695

    
696
       -- UPDATE MW_REQUEST_PROCESS SET STATUS = 'F', NOTES = N'Phiếu từ chối phiếu ở bước LEVEL duyệt trả về người tạo' WHERE REQ_ID = @p_TRN_ID
697
         INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,CHECKER_ID,NOTES)
698
             VALUES(@p_TRN_ID,'R_MAKERID',N'Từ chối phiếu','F','',@p_BRANCH_ID,'LEVEL',@p_DEP_ID, 'REJECT',GETDATE(),@p_REJECTED_BY, N'Phiếu bị từ chối ở cấp xử lý và trả về cho người tạo chỉnh sửa')
699
        DELETE MW_REQ_PROCESS WHERE REQ_ID = @p_TRN_ID
700
      END
701
      IF(@p_STAGE = 'R_DMTN')
702
      BEGIN
703
         UPDATE MW_REQUEST_PROCESS
704
          SET STATUS = 'F'
705
          WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'LEVEL'
706

    
707

    
708
        UPDATE MW_REQ SET STATUS = 'R_DMTN', AUTH_STATUS = 'R' WHERE REQ_ID = @p_TRN_ID
709
        INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,CHECKER_ID,NOTES)
710
             VALUES(@p_TRN_ID,'R_DMTN',N'Từ chối phiếu','F','',@p_BRANCH_ID,'LEVEL',@p_DEP_ID, 'REJECT',GETDATE(),@p_REJECTED_BY, N'Phiếu bị từ chối ở cấp xử lý và trả về cho đầu mối chỉnh sửa')
711
        DELETE MW_REQ_PROCESS WHERE REQ_ID = @p_TRN_ID
712
      END
713
    	
714
    END
715
    IF ((SELECT STATUS FROM MW_REQ WHERE REQ_ID = @p_TRN_ID ) LIKE 'DMTN')
716
    BEGIN  
717
            INSERT INTO MW_REJECT_LOG (LOG_ID, STAGE, TRN_ID, TRN_TYPE, LOG_DT, AUTH_STATUS, REASON, IS_LATEST, REJECTED_BY, REJECTED_DT,RETURN_STEP)
718
            VALUES (@l_LOG_ID, @p_STAGE, @p_TRN_ID, @p_TRN_TYPE, CONVERT(DATETIME,@p_LOG_DT,103), @p_AUTH_STATUS, @p_REASON, @p_IS_LATEST, @p_REJECTED_BY, CONVERT(DATETIME,@p_REJECTED_DT,103),@p_RETURN_STEP);
719
      IF(@p_STAGE = 'DMTN_MAKER')
720
      BEGIN
721
        UPDATE MW_REQ SET STATUS = 'DMTN_MAKER', AUTH_STATUS = 'R' WHERE REQ_ID = @p_TRN_ID
722
      --  UPDATE MW_REQUEST_PROCESS SET STATUS = 'F', NOTES = N'Phiếu từ chối phiếu ở bước đầu mối duyệt trả về người tạo' WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = ''
723
          
724
          UPDATE MW_REQUEST_PROCESS
725
          SET STATUS = 'F'
726
          WHERE REQ_ID = @p_TRN_ID AND PROCESS_ID = 'DMTN'
727

    
728
              INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,CHECKER_ID,NOTES)
729
             VALUES(@p_TRN_ID,'DMTN_MAKER',N'Từ chối phiếu','F','DVDM',@p_BRANCH_ID,'SENDAPP',@p_DEP_ID, 'REJECT',GETDATE(),@p_REJECTED_BY, N'Phiếu bị từ chối ở đầu mối và trả về cho người tạo chỉnh sửa')
730
      END
731
    END
732
    
733

    
734
INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
735
VALUES(@p_TRN_ID,'REJECT',@p_REJECTED_BY,GETDATE(),N'Trả về ',@p_REASON)
736

    
737
    IF @@Error <> 0 GOTO ABORT
738
COMMIT TRANSACTION
739
SELECT '0' as Result, @l_LOG_ID  ID, N'Từ chối phiếu thành công' ErrorDesc
740
RETURN '0'
741
ABORT:
742
BEGIN
743
		ROLLBACK TRANSACTION
744
		SELECT '-1' as Result, N'Phiếu' ID, N'từ chối thất bại' ErrorDesc
745
		RETURN '-1'
746
End
747
GO
748
IF @@ERROR <> 0 SET NOEXEC ON
749
GO
750
PRINT N'Altering [dbo].[MW_REQ_App]'
751
GO
752
ALTER PROCEDURE [dbo].[MW_REQ_App]
753
  @p_REQ_ID VARCHAR(20),
754
  @p_REQ_CODE VARCHAR(15),
755
  @p_AUTH_STATUS VARCHAR(1),
756
  @p_STATUS VARCHAR(15),
757
  @p_CHECKER_ID VARCHAR(200),
758
  @p_APPROVE_DT VARCHAR(20),
759
  @p_USER_LOGIN VARCHAR(25)
760
AS
761

    
762
--Validation is
763
  DECLARE @ROLE_USER VARCHAR(25), @DEP_RECEIVE VARCHAR(25)
764
	DECLARE	@aStatus VARCHAR(1), @p_BRANCH_ID VARCHAR(50), @p_DEP_ID VARCHAR(50), @p_BRANCH_GIVES_ID VARCHAR(50)
765
	SELECT @aStatus = [AUTH_STATUS], @p_STATUS = STATUS, @p_BRANCH_ID = BRANCH_ID, @p_DEP_ID = DEP_ID, @p_BRANCH_GIVES_ID = BRANCH_GIVES_ID FROM MW_REQ WHERE REQ_ID = @p_REQ_ID
766
  
767
  DECLARE @CHECK_DMTN NVARCHAR(50)
768
  SELECT @CHECK_DMTN = B.ROLE_RECEIVE FROM MW_REQ A LEFT JOIN CM_REQ_TYPE B ON B.REQ_TYPE_ID = A.REQ_TYPE WHERE A.REQ_ID = @p_REQ_ID AND ISNULL(@p_DEP_ID,'') = ISNULL(B.DEP_RECEIVE,'')
769
	IF @aStatus = 'A' 
770
	BEGIN
771
		SELECT '0' as Result, '' ErrorDesc
772
		RETURN 0
773
	END
774

    
775
BEGIN TRANSACTION
776

    
777
  IF(@p_STATUS LIKE 'SendApp')
778
  BEGIN
779

    
780
    --IF(@CHECK_DMTN = NULL OR @CHECK_DMTN IS NULL OR @CHECK_DMTN = '' )
781
    IF(ISNULL(@CHECK_DMTN,'') <> '')-- AND ISNULL(@p_BRANCH_GIVES_ID,'') = 'DEP000000000048')
782
    BEGIN
783
    	  SET @p_AUTH_STATUS = 'A'
784
        SET @p_STATUS = 'DONE'
785
        UPDATE MW_REQ SET AUTH_STATUS = @p_AUTH_STATUS, STATUS = @p_STATUS, APPROVE_DT = GETDATE(), CHECKER_ID = @p_USER_LOGIN WHERE REQ_ID = @p_REQ_ID	IF @@Error <> 0 GOTO ABORT
786
        INSERT INTO MW_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, PARENT_PROCESS_ID, NOTES) VALUES (@p_REQ_CODE, 'DONE', 'C', 'APPNEW', N'Hoàn thành phiếu')
787
    END
788
    ELSE
789
    BEGIN
790
      SET @p_AUTH_STATUS = 'U'
791
      SET @p_STATUS = 'DMTN'
792
      UPDATE MW_REQ SET AUTH_STATUS = @p_AUTH_STATUS, CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103), STATUS = @p_STATUS
793
  	  WHERE REQ_ID = @p_REQ_ID	IF @@Error <> 0 GOTO ABORT
794
      --UPDATE MW_REQUEST_PROCESS SET STATUS = 'P', NOTES = N'Đã duyệt',CHECKER_ID = @p_USER_LOGIN, RECEPTION_DT = GETDATE() WHERE REQ_ID = @p_REQ_CODE AND PROCESS_ID = 'APPNEW'
795
      
796
      UPDATE MW_REQUEST_PROCESS
797
      SET STATUS = 'P'
798
      WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'SENDAPP'
799
      
800
      SELECT @ROLE_USER=B.ROLE_RECEIVE, @DEP_RECEIVE = B.DEP_RECEIVE
801
      FROM MW_REQ A
802
      LEFT JOIN CM_REQ_TYPE B ON B.REQ_TYPE_ID = A.REQ_TYPE
803
      WHERE A.REQ_ID = @p_REQ_ID
804
  
805
    	INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,NOTES, CHECKER_ID)
806
      VALUES(@p_REQ_ID,'APPNEW',N'Trưởng đơn vị phê duyệt','P','GDDV',@p_BRANCH_ID,'ADDNEW',@DEP_RECEIVE, 'Approve',GETDATE(), N'Chấp thuận',@p_CHECKER_ID)
807
  
808
     
809
      INSERT INTO MW_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE, CHECKER_ID, PROCESS_NAME, NOTES, RECEPTION_DT) 
810
                              VALUES (@p_REQ_ID, 'DMTN', 'C',@ROLE_USER,'DV0001','APPNEW',@DEP_RECEIVE,'SendApp',( SELECT STUFF((select ', ' + RE.TLNANME  
811
                                                                                                                  		FROM(
812
                                                                                                                  		SELECT * FROM dbo.FN_GET_USER_BY_ROLE_VB('DVDM','DV0001',@DEP_RECEIVE) ) RE
813
                                                                                                                  			FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)'), 1, 1, '')), N'Đơn vị đầu mối', N'Đơn vị đầu mối tiếp nhận',DATEADD(SECOND, 1, GETDATE()))
814
    END
815
    
816
  END
817
	IF(@p_STATUS LIKE 'LEVEL')
818
  BEGIN
819
    IF(EXISTS(SELECT * FROM MW_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND DVKD_USER_APP = @p_CHECKER_ID AND PROCESS_ID = 'LEVEL' AND STATUS = 'U'))
820
    BEGIN
821
    	ROLLBACK TRANSACTION
822
			SELECT '-1' AS Result , ''  REQ_CODE, N'Phiếu yêu cầu chưa tới cấp duyệt tiếp theo.' ErrorDesc
823
			RETURN '-1'
824
    END
825

    
826
    IF(EXISTS (SELECT * FROM MW_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND DVKD_USER_APP = @p_CHECKER_ID AND PROCESS_ID = 'LEVEL' AND STATUS = 'C'))
827
    BEGIN
828
      DECLARE @STAGE_CURRENT INT = (SELECT mrp.IS_LEAF FROM MW_REQUEST_PROCESS mrp WHERE  REQ_ID = @p_REQ_ID AND DVKD_USER_APP = @p_CHECKER_ID AND PROCESS_ID = 'LEVEL' AND STATUS = 'C')
829
      UPDATE MW_REQUEST_PROCESS SET STATUS = 'P', RECEPTION_DT = GETDATE(), APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103), NOTES = N'Chấp thuận' WHERE REQ_ID = @p_REQ_ID AND DVKD_USER_APP = @p_CHECKER_ID AND PROCESS_ID = 'LEVEL'
830

    
831
      UPDATE MW_REQ_PROCESS SET PROCESS_STATUS = 'Approve', AUTH_STATUS = 'A', CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103), NOTES = N'Chấp thuận' WHERE REQ_ID = @p_REQ_ID AND TLNAME = @p_CHECKER_ID
832

    
833
      IF(EXISTS(SELECT 1 FROM MW_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND PROCESS_ID = 'LEVEL' AND IS_LEAF = (@STAGE_CURRENT+1)))
834
      BEGIN
835
      	UPDATE MW_REQUEST_PROCESS SET STATUS = 'C' WHERE REQ_ID = @p_REQ_ID AND IS_LEAF = (@STAGE_CURRENT+1) AND PROCESS_ID = 'LEVEL'
836
      END
837
      ELSE
838
      BEGIN
839
        SET @p_AUTH_STATUS = 'A'
840
        SET @p_STATUS = 'DONE'
841
        --UPDATE MW_REQ SET AUTH_STATUS = @p_AUTH_STATUS, CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103), STATUS = @p_STATUS WHERE REQ_CODE = @p_REQ_CODE	IF @@Error <> 0 GOTO ABORT
842
        UPDATE MW_REQ SET AUTH_STATUS = @p_AUTH_STATUS, STATUS = @p_STATUS WHERE REQ_ID = @p_REQ_ID	IF @@Error <> 0 GOTO ABORT
843
        INSERT INTO MW_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, PARENT_PROCESS_ID, NOTES) VALUES (@p_REQ_ID, 'DONE', 'C', 'APPLEVEL', N'Hoàn thành phiếu')
844
      END
845
       
846
      --UPDATE MW_REQUEST_PROCESS SET STATUS = 'C' WHERE REQ_ID = @p_REQ_CODE AND STAGE = (SELECT MIN(STAGE) FROM MW_REQUEST_PROCESS WHERE STATUS = 'U' AND PROCESS_ID = 'LEVEL' AND REQ_ID = @p_REQ_CODE) 
847
    
848
    
849
    END
850

    
851
    IF(EXISTS (SELECT * FROM MW_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_ID AND CHECKER_ID = @p_CHECKER_ID AND STATUS = 'U'))
852
    BEGIN
853
      ROLLBACK TRANSACTION
854
			SELECT '-1' AS Result , ''  REQ_CODE, N'Phiếu yêu cầu chưa tới cấp duyệt tiếp theo.' ErrorDesc
855
			RETURN '-1'
856
    END
857

    
858
--    IF((SELECT COUNT(*) FROM MW_REQ_PROCESS WHERE REQ_PROCESS_ID = @p_REQ_CODE) = (SELECT COUNT(*) FROM MW_REQUEST_PROCESS WHERE REQ_ID = @p_REQ_CODE AND STATUS = 'P'))
859
--    BEGIN
860
--       SET @p_AUTH_STATUS = 'A'
861
--       SET @p_STATUS = 'DONE'
862
--       UPDATE MW_REQ SET AUTH_STATUS = @p_AUTH_STATUS, CHECKER_ID = @p_CHECKER_ID, APPROVE_DT = CONVERT(DATETIME,@p_APPROVE_DT,103), STATUS = @p_STATUS WHERE REQ_CODE = @p_REQ_CODE	IF @@Error <> 0 GOTO ABORT
863
--       INSERT INTO MW_REQUEST_PROCESS (REQ_ID, PROCESS_ID, STATUS, PARENT_PROCESS_ID, NOTES) VALUES (@p_REQ_CODE, 'DONE', 'P', 'APPLEVEL', N'Hoàn thành phiếu')
864
--       
865
--    END
866
   
867
	  
868
  END
869
INSERT INTO dbo.MW_PROCESS
870
							(
871
								REQ_ID,
872
								PROCESS_ID,
873
								CHECKER_ID,
874
								APPROVE_DT,
875
								PROCESS_DESC,
876
								NOTES
877
							)
878
							VALUES
879
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
880
								'APPROVE',        -- PROCESS_ID - varchar(10)
881
								@p_CHECKER_ID,        -- CHECKER_ID - varchar(100)
882
								CONVERT(DATETIME, @p_APPROVE_DT, 103), -- APPROVE_DT - datetime
883
								N'Cấp xử lý phê duyệt',       -- PROCESS_DESC - nvarchar(1000)
884
								N'Cấp xử lý phê duyệt thành công'        -- NOTES - nvarchar(1000)
885
							)
886
COMMIT TRANSACTION
887
SELECT '0' as Result, '' ErrorDesc
888
RETURN '0'
889
ABORT:
890
BEGIN
891
		ROLLBACK TRANSACTION
892
		SELECT '-1' as Result, '' ErrorDesc
893
		RETURN '-1'
894
End
895
GO
896
IF @@ERROR <> 0 SET NOEXEC ON
897
GO
898
PRINT N'Altering [dbo].[MW_REQ_Ins]'
899
GO
900

    
901
ALTER PROCEDURE [dbo].[MW_REQ_Ins]
902
  @p_REQ_ID varchar(20),
903
  @p_REQ_CODE varchar(15),
904
  @p_REQ_TYPE nvarchar(200)= NULL,
905
  @p_DEP_ID VARCHAR(50) = NULL,
906
  @p_BRANCH_ID nvarchar(500)= NULL,
907
  @p_BRANCH_NAME NVARCHAR(1000)= NULL,
908
  @p_BRANCH_RECEIVE_ID VARCHAR(50) = NULL,
909
  @p_BRANCH_RECEIVE_NAME NVARCHAR(1000)= NULL,
910
  @p_DEP_RECEIVE_ID VARCHAR(50) = NULL,
911
  @p_DEP_RECEIVE_NAME NVARCHAR(1000)= NULL,
912
  @p_PROMOTION_ID VARCHAR(50)=NULL,
913
  @p_REGARDS_TO nvarchar(500)= NULL,
914
  @p_REQUEST_DOC_CONTENT NVARCHAR(500)= NULL,
915
  @p_STATUS VARCHAR(15)= NULL,
916
  @p_RECORD_STATUS varchar(15)= NULL,
917
  @p_MAKER_ID varchar(100)= NULL,
918
  @p_CREATE_DT varchar(25)= NULL,
919
  @p_AUTH_STATUS varchar(50)= NULL,
920
  @p_CHECKER_ID varchar(100)= NULL,
921
  @p_APPROVE_DT varchar(25)= NULL,
922
  @p_BRANCH_GIVES_ID VARCHAR(50) = NULL,
923
  @p_BRANCH_GIVES_NAME NVARCHAR(1000)= NULL,
924
  @p_DEP_GIVES_ID VARCHAR(50) = NULL,
925
  @p_DEP_GIVES_NAME NVARCHAR(1000)= NULL,
926
  @p_XmlData XML = NULL
927
  
928
AS
929

    
930

    
931
--Validation is here
932
DECLARE @ERRORSYS NVARCHAR(1500) = '' 
933

    
934
--KHAI BAO BIEN CURSOR DETAIL
935
DECLARE @REQ_DT_ID varchar(15)= NULL,
936
        @REQ_CODE varchar(15) =NULL,
937
        @MATERIAL_GROUP VARCHAR (200)= NULL,
938
        @MATERIAL_ID nvarchar(200) =NULL,
939
        @UNIT_ID VARCHAR(15) =NULL, 
940
        @QUANTITY_REQ DECIMAL(18,2)= NULL,
941
        @QUANTITY_ALLOCATION DECIMAL(18,2) = NULL,
942
        @DEP_ID VARCHAR(50) = NULL,
943
        @BRANCH_ID nvarchar(500)= NULL,
944
        @BRANCH_NAME NVARCHAR(1000)= NULL,
945
        @PROMOTION_ID VARCHAR(15) =NULL,
946
        @REASON NVARCHAR(1000) =NULL,
947
        @RECORD_STATUS varchar(15) =NULL,
948
        @MAKER_ID varchar(100) =NULL,
949
        @CREATE_DT varchar(25) =NULL,
950
        @AUTH_STATUS varchar(50) =NULL,
951
        @CHECKER_ID varchar(100) =NULL,
952
        @APPROVE_DT varchar(25) =NULL,
953
        @DEP_USE VARCHAR(15) =NULL,
954
        @BRANCH_USE VARCHAR(15) = NULL,
955
        @ALLOCATED DECIMAL(18,2)= NULL        
956
DECLARE @INDEX INT =1
957
DECLARE @hdoc INT;
958
--DECLARE @CM_PROMOTION_ID TABLE
959
--        (
960
--          PROMOTION_ID VARCHAR(20)
961
--        )
962
	---
963
		EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
964
		DECLARE XmlData CURSOR FOR
965
		SELECT *
966
		FROM
967
			OPENXML (@hdoc, '/Root/MWREQDT', 2)
968
			WITH (	REQ_DT_ID varchar(15),
969
              REQ_ID VARCHAR(20),
970
              REQ_CODE varchar(15),
971
              MATERIAL_GROUP VARCHAR (200),
972
              MATERIAL_ID nvarchar(200),
973
              UNIT_ID VARCHAR(15), 
974
              QUANTITY_REQ DECIMAL(18,2),
975
              QUANTITY_ALLOCATION DECIMAL(18,2),
976
              PROMOTION_ID VARCHAR(15),
977
              REASON NVARCHAR(1000),
978
              DEP_USE VARCHAR(15),
979
              BRANCH_USE VARCHAR(15),
980
              BRANCH_NAME NVARCHAR(1000),
981
              ALLOCATED DECIMAL(18,2)
982
              
983
              );
984
		OPEN XmlData;
985

    
986
BEGIN TRANSACTION
987
  IF(CONVERT(DATETIME,(SELECT END_DATE FROM CM_PROMOTION WHERE PROMOTION_ID = @p_PROMOTION_ID),103) < CONVERT(DATETIME,GETDATE(),103))
988
    BEGIN
989
      ROLLBACK TRANSACTION
990
  		SELECT '-1' as Result, N''ID, N'Chương trình này đã quá hạn vui lòng chọn chương trình khác' ErrorDesc
991
  		RETURN '-1'
992
    END
993

    
994
DECLARE @l_REQ_ID VARCHAR(15)
995
		EXEC SYS_CodeMasters_Gen 'MW_REQ', @l_REQ_ID out
996
		IF @l_REQ_ID='' OR @l_REQ_ID IS NULL GOTO ABORT
997
--
998
    IF ( EXISTS ( SELECT * FROM MW_REQ WHERE REQ_CODE = @l_REQ_ID))
999
    	SET @ERRORSYS = N'Mã '+@l_REQ_ID+ N' đã tồn tại trong hệ thống'
1000
    IF @ERRORSYS <> '' 
1001
    BEGIN
1002
      CLOSE XmlData;
1003
  		DEALLOCATE XmlData;
1004
  		ROLLBACK TRANSACTION
1005
    	SELECT '-1' Result, @ERRORSYS ErrorDesc
1006
    	RETURN '-1'
1007
    END 
1008
    IF (@p_BRANCH_ID IS NULL OR @p_BRANCH_ID = '') SET @p_BRANCH_ID = (SELECT TU.TLSUBBRID FROM TL_USER TU WHERE TU.TLNANME = @p_MAKER_ID)
1009
--
1010
		SET @p_STATUS = 'ADDNEW'
1011
    SET @p_AUTH_STATUS = 'E'
1012
    SET @ALLOCATED = '0'
1013
    --
1014
        INSERT INTO MW_REQ (
1015
        REQ_ID,
1016
        REQ_CODE, 
1017
        REQ_TYPE,
1018
        DEP_ID,
1019
        BRANCH_ID, 
1020
        BRANCH_NAME,
1021
        PROMOTION_ID,
1022
        REGARDS_TO,
1023
        IS_DONE,
1024
        REQUEST_DOC_CONTENT, 
1025
        STATUS,
1026
        RECORD_STATUS,
1027
        MAKER_ID, 
1028
        CREATE_DT, 
1029
        AUTH_STATUS, 
1030
        CHECKER_ID, 
1031
        APPROVE_DT,
1032
        BRANCH_RECEIVE_ID,
1033
        BRANCH_RECEIVE_NAME,
1034
        DEP_RECEIVE_ID,
1035
        DEP_RECEIVE_NAME,
1036
        BRANCH_GIVES_ID,
1037
        BRANCH_GIVES_NAME,
1038
        DEP_GIVES_ID,
1039
        DEP_GIVES_NAME)
1040
        VALUES 
1041
        (
1042
        @l_REQ_ID,
1043
        @p_REQ_CODE, 
1044
        @p_REQ_TYPE,
1045
        @p_DEP_ID, 
1046
        @p_BRANCH_ID,
1047
        @p_BRANCH_NAME, 
1048
        @p_PROMOTION_ID,
1049
        @p_REGARDS_TO, 
1050
        '0',
1051
        @p_REQUEST_DOC_CONTENT, 
1052
        @p_STATUS,
1053
        '1', 
1054
        @p_MAKER_ID, 
1055
        CONVERT(DATETIME,@p_CREATE_DT,103), 
1056
        @p_AUTH_STATUS, 
1057
        @p_CHECKER_ID, 
1058
        CONVERT(DATETIME,@p_APPROVE_DT,103),
1059
        @p_BRANCH_RECEIVE_ID,
1060
        @p_BRANCH_RECEIVE_NAME,
1061
        @p_DEP_RECEIVE_ID,
1062
        @p_DEP_RECEIVE_NAME,
1063
        @p_BRANCH_GIVES_ID,
1064
        @p_BRANCH_GIVES_NAME,
1065
        @p_DEP_GIVES_ID,
1066
        @p_DEP_GIVES_NAME
1067
        )
1068
 
1069
        
1070
--        INSERT INTO @CM_PROMOTION_ID(MATERIAL_ID) 
1071
--        SELECT cpd.MATERIAL_ID FROM CM_PROMOTION_DT cpd WHERE cpd.PROMOTION_ID = @p_PROMOTION_ID
1072
--
1073
    FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@PROMOTION_ID,@REASON,@DEP_USE, @BRANCH_USE,@BRANCH_NAME,@ALLOCATED
1074
		WHILE @@FETCH_STATUS = 0
1075
		BEGIN
1076
      EXEC SYS_CodeMasters_Gen 'MW_REQ_DT', @REQ_DT_ID out
1077
  		IF @REQ_DT_ID='' OR @REQ_DT_ID IS NULL GOTO ABORT
1078
      IF(@QUANTITY_REQ=0)
1079
        BEGIN
1080
        	ROLLBACK TRANSACTION
1081
    			CLOSE XmlData;
1082
    			DEALLOCATE XmlData;
1083
    			SELECT '-1' as Result, '' REQ_ID, N'Danh sách yêu cầu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': số lượng yêu cầu không thể đáp ứng.' ErrorDesc
1084
    			RETURN '-1'
1085
        END
1086
      IF(ISNULL(@p_PROMOTION_ID,'') <> '' AND @MATERIAL_ID NOT IN (SELECT cpd.MATERIAL_ID FROM CM_PROMOTION_DT cpd WHERE cpd.PROMOTION_ID = @p_PROMOTION_ID))
1087
      BEGIN
1088
      	  ROLLBACK TRANSACTION
1089
    			CLOSE XmlData;
1090
    			DEALLOCATE XmlData;
1091
    			SELECT '-1' as Result, '' REQ_ID, N'Danh sách yêu cầu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': loại vật liệu bạn chọn không có trong danh sách chương trình.' ErrorDesc
1092
    			RETURN '-1'
1093
      END
1094
      
1095
      --
1096
      SET @INDEX = @INDEX +1
1097
      SET @p_REQ_ID = @l_REQ_ID
1098
      INSERT INTO MW_REQ_DT (REQ_DT_ID, REQ_ID, REQ_CODE, MATERIAL_GROUP, MATERIAL_ID, UNIT_ID, QUANTITY_REQ, QUANTITY_ALLOCATION, PROMOTION_ID, REASON,DEP_USE, BRANCH_USE,BRANCH_NAME,ALLOCATED)
1099
      VALUES (@REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@PROMOTION_ID,@REASON,@DEP_USE, @BRANCH_USE,@BRANCH_NAME, 0)
1100
	    --
1101
      IF @@Error <> 0 GOTO ABORT;
1102

    
1103
      FETCH NEXT FROM XmlData	INTO @REQ_DT_ID,@p_REQ_ID,@REQ_CODE,@MATERIAL_GROUP,@MATERIAL_ID,@UNIT_ID,@QUANTITY_REQ,@QUANTITY_ALLOCATION,@PROMOTION_ID,@REASON,@DEP_USE, @BRANCH_USE,@BRANCH_NAME,@ALLOCATED
1104
    END
1105
  	CLOSE XmlData;
1106
		DEALLOCATE XmlData;
1107
    
1108
    BEGIN
1109
--      INSERT INTO dbo.MW_PROCESS
1110
--							(
1111
--								REQ_ID,
1112
--								PROCESS_ID,
1113
--								CHECKER_ID,
1114
--								APPROVE_DT,
1115
--								PROCESS_DESC,
1116
--								NOTES
1117
--							)
1118
--							VALUES
1119
--							(   @l_REQ_CODE,        -- REQ_ID - varchar(15)
1120
--								'ADDNEW',        -- PROCESS_ID - varchar(10)
1121
--								@p_MAKER_ID,        -- CHECKER_ID - varchar(100)
1122
--								CONVERT(DATETIME, @p_CREATE_DT, 103), -- APPROVE_DT - datetime
1123
--								N'Nhân viên tạo phiếu',       -- PROCESS_DESC - nvarchar(1000)
1124
--								N'Nhân viên tạo phiếu yêu cầu'        -- NOTES - nvarchar(1000)
1125
--							)
1126
      -- MỚI TẠO
1127
      INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, CHECKER_ID,RECEPTION_DT,NOTES)
1128
  		       VALUES(@l_REQ_ID,'ADDNEW',N'Nhân viên tạo phiếu','NVTT','C',@p_BRANCH_ID,'',@p_DEP_ID, @p_MAKER_ID,GETDATE(),N'Nhân viên tạo phiếu yêu cầu')
1129
--  	  INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT)
1130
--  		       VALUES(@l_REQ_CODE,'APPNEW',N'CHỜ TDV DUYỆT','U','GDDV',@p_BRANCH_ID,'ADDNEW',@p_DEP_ID, 'Approve',GETDATE())
1131
    END
1132

    
1133
    IF @@Error <> 0 GOTO ABORT
1134
COMMIT TRANSACTION
1135
SELECT '0' as Result, @l_REQ_ID  ID, '' ErrorDesc
1136
RETURN '0'
1137
ABORT:
1138
BEGIN
1139
    CLOSE XmlData;
1140
		DEALLOCATE XmlData;
1141
		ROLLBACK TRANSACTION
1142
		SELECT '-1' as Result, '' ID, '' ErrorDesc
1143
		RETURN '-1'
1144
End
1145

    
1146
GO
1147
IF @@ERROR <> 0 SET NOEXEC ON
1148
GO
1149
PRINT N'Altering [dbo].[MW_REQ_DT_ById]'
1150
GO
1151
ALTER PROCEDURE [dbo].[MW_REQ_DT_ById]
1152
@REQ_ID	varchar(15)
1153
AS
1154
SELECT A.*, B.PROMOTION_NAME, A.REQ_DT_ID AS REQ_DT_CODE, MM.MATERIAL_CODE, MG.GROUP_CODE AS MATERIAL_GROUP_CODE, MM.MATERIAL_NAME AS MATERIAL_NAME, MG.GROUP_NAME AS GROUP_NAME
1155
FROM MW_REQ_DT A
1156
LEFT JOIN MW_MATERIAL MM ON A.MATERIAL_ID = MM.MATERIAL_ID
1157
LEFT JOIN MW_GROUP MG ON A.MATERIAL_GROUP = MG.GROUP_ID
1158
LEFT JOIN CM_PROMOTION B ON B.PROMOTION_ID = A.PROMOTION_ID
1159
WHERE  A.REQ_ID = @REQ_ID
1160
GO
1161
IF @@ERROR <> 0 SET NOEXEC ON
1162
GO
1163
PRINT N'Altering [dbo].[MW_REQ_ById]'
1164
GO
1165
ALTER PROCEDURE [dbo].[MW_REQ_ById]
1166
@REQ_ID	varchar(15)
1167
AS
1168
--DECLARE @DONE_LEVEL VARCHAR(1) = CASE WHEN (NOT EXISTS(SELECT * FROM MW_REQ_PROCESS mrp WHERE mrp.REQ_ID = @REQ_ID AND mrp.AUTH_STATUS IS NULL)) THEN '1' ELSE '0' END
1169
DECLARE @DVDM_USER VARCHAR(50) = (
1170
SELECT TOP 1 A.CHECKER_ID 
1171
FROM MW_REQUEST_PROCESS A 
1172
WHERE A.REQ_ID = @REQ_ID AND A.PROCESS_ID = 'DMTN' 
1173
ORDER BY A.ID DESC)
1174

    
1175
SELECT A.*, B.DEP_NAME AS BRANCH_NAME,B.DEP_ID AS BRANCH_ID, C.REQ_TYPE_NAME, cp.PROMOTION_NAME, mrp.DVKD_USER_APP AS NEXT_APP_USER, @DVDM_USER AS DVDM_USER
1176
FROM MW_REQ A
1177
LEFT JOIN CM_DEPARTMENT B ON B.DEP_ID = A.BRANCH_ID
1178
LEFT JOIN CM_REQ_TYPE C ON C.REQ_TYPE_ID = A.REQ_TYPE
1179
LEFT JOIN MW_REQ_DT D ON D.REQ_ID = A.REQ_ID
1180
LEFT JOIN CM_PROMOTION cp ON cp.PROMOTION_ID = A.PROMOTION_ID
1181
LEFT JOIN MW_REQUEST_PROCESS mrp ON mrp.REQ_ID = @REQ_ID AND  mrp.STATUS = 'C' AND mrp.PROCESS_ID = 'LEVEL'
1182
WHERE  A.REQ_ID = @REQ_ID
1183

    
1184
GO
1185
ALTER PROCEDURE dbo.MW_REQ_ApproveNow
1186
  @p_REQ_ID VARCHAR(15),
1187
  @p_CHECKER_ID VARCHAR(200),
1188
  @p_APPROVE_DT VARCHAR(20)
1189
AS 
1190
  DECLARE @Auth VARCHAR(1),@CheckerId VARCHAR(15),@status VARCHAR(20), @BranchId VARCHAR(15), @DepId VARCHAR(15)
1191
  SELECT @Auth = mr.AUTH_STATUS,
1192
         @CheckerId = mr.CHECKER_ID,
1193
         @status = mr.STATUS
1194
  FROM MW_REQ mr 
1195
  WHERE mr.REQ_ID = @p_REQ_ID
1196
  
1197

    
1198
  IF(@Auth = 'A')
1199
  BEGIN
1200
      SELECT '0' as Result, '' ErrorDesc
1201
		  RETURN 0
1202
  END
1203
   IF(EXISTS(SELECT * FROM MW_REQ mr
1204
            LEFT JOIN CM_REQ_TYPE crt ON crt.REQ_TYPE_ID = mr.REQ_TYPE
1205
            LEFT JOIN CM_WARE cw ON crt.WARE_TYPE  = cw.WARE_ID
1206
            WHERE cw.WARE_CODE IN ('02TE','03CT','04VT') AND mr.REQ_ID = @p_REQ_ID))
1207
  BEGIN
1208
	  SELECT '-1' as Result, N'Phiếu yêu cầu đối với kho vật liệu thẻ, phôi thẻ trắng, phôi thẻ cá thể hóa, bắt buộc gửi cấp xử lý tiếp theo, đầu mối không được phép duyệt' ErrorDesc
1209
		RETURN '-1'
1210
  END
1211

    
1212

    
1213
BEGIN TRANSACTION
1214
  IF(@status = 'DMTN' AND @CheckerId <> @p_CHECKER_ID)
1215
    BEGIN  
1216
        IF(EXISTS(SELECT * FROM MW_REQ_PROCESS mrp WHERE mrp.REQ_ID = @p_REQ_ID ))
1217
        BEGIN
1218
          GOTO ABORT3
1219
        END
1220
    	  SET @Auth = 'A'
1221
        SET @status = 'DONE'
1222
        
1223
        SELECT @BranchId =  tugr.BRANCH_ID, @DepId =  tugr.DEPT_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr
1224

    
1225
        UPDATE MW_REQ 
1226
        SET AUTH_STATUS = @Auth, STATUS = @status, APPROVE_DT = GETDATE(), CHECKER_ID = @CheckerId
1227
        WHERE REQ_ID = @p_REQ_ID	
1228
        
1229
        IF @@Error <> 0 GOTO ABORT
1230

    
1231
        UPDATE MW_REQUEST_PROCESS
1232
        SET STATUS = 'P'
1233
        WHERE REQ_ID = @p_REQ_ID
1234
        
1235
        INSERT INTO MW_REQUEST_PROCESS (REQ_ID,CHECKER_ID, PROCESS_ID,PROCESS_NAME,BRANCH_ID,DEP_ID,RECEPTION_DT, STATUS, PARENT_PROCESS_ID, NOTES) 
1236
        VALUES (@p_REQ_ID,@p_CHECKER_ID, @status,N'Phê duyệt phiếu',@BranchId,@DepId,GETDATE() , 'P', 'DMTN', N'Hoàn thành phê duyệt phiếu ở bước đơn vị đầu mối phê duyệt')
1237
    END
1238
  ELSE
1239
    BEGIN
1240
        GOTO ABORT2
1241
    END
1242
  
1243
INSERT INTO dbo.MW_PROCESS
1244
							(
1245
								REQ_ID,
1246
								PROCESS_ID,
1247
								CHECKER_ID,
1248
								APPROVE_DT,
1249
								PROCESS_DESC,
1250
								NOTES
1251
							)
1252
							VALUES
1253
							(   @p_REQ_ID,        -- REQ_ID - varchar(15)
1254
								'APP_NOW',        -- PROCESS_ID - varchar(10)
1255
								@p_CHECKER_ID,        -- CHECKER_ID - varchar(100)
1256
								CONVERT(DATETIME, @p_APPROVE_DT, 103), -- APPROVE_DT - datetime
1257
								N'DVDM phê duyệt hoàn tất phiếu',       -- PROCESS_DESC - nvarchar(1000)
1258
								N'DVDM phê duyệt hoàn tất phiếu thành công'        -- NOTES - nvarchar(1000)
1259
							)
1260
COMMIT TRANSACTION
1261
SELECT '0' as Result, N'Phiếu '+ @p_REQ_ID + N' Được phê duyệt thành công' NOTICATION, '' ErrorDesc
1262
RETURN '0'
1263
ABORT:
1264
BEGIN
1265
		ROLLBACK TRANSACTION
1266
		SELECT '-1' as Result, '' ErrorDesc
1267
		RETURN '-1'
1268
END
1269
ABORT2:
1270
BEGIN
1271
		ROLLBACK TRANSACTION
1272
		SELECT '-1' as Result, N'Phiếu' + @p_REQ_ID + N'Không thể phê duyệt khi chưa đén bước xử lý này hoặc không được phép phê duyệt' ErrorDesc
1273
		RETURN '-1'
1274
END
1275
ABORT3:
1276
BEGIN
1277
		ROLLBACK TRANSACTION
1278
		SELECT '-1' as Result, N'Phiếu đã có cấp xử lý tiếp theo không thể phê duyệt tại bước này' ErrorDesc
1279
		RETURN '-1'
1280
End