Project

General

Profile

FIX_DATA.txt

Luc Tran Van, 11/18/2023 01:49 PM

 
1

    
2
ALTER PROCEDURE dbo.MW_OUT_App 
3
    @p_OUT_ID VARCHAR(15) =NULL,
4
    @p_CHECKER_ID VARCHAR(100) =NULL,
5
    @p_APPROVE_DT VARCHAR(20) =NULL,
6
    @p_XmlData XML=NULL
7
AS
8
DECLARE @OUT_ID VARCHAR(15) =NULL,
9
        @BRN_ID VARCHAR(15) =NULL,
10
        @MAST_BAL_ID VARCHAR(15) =NULL,
11
        @CUST_NAME NVARCHAR(200) =NULL,
12
        @QTY DECIMAL(18,2)=NULL,
13
        @PRICE NUMERIC(18, 0) =NULL,
14
        @TOTAL_AMT NUMERIC(18, 2) =NULL,
15
        @NOTES NVARCHAR(1000) =NULL,
16
        @TO_BRN_ID VARCHAR(15) =NULL,
17
        @TO_DEPT_ID VARCHAR(15) =NULL;
18
DECLARE @hdoc INT;
19
DECLARE @INDEX INT =0
20
DECLARE @p_ID_MAS_BAL VARCHAR(15);
21
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
22

    
23
DECLARE @C_TO_BRN_ID VARCHAR(15), @C_TO_DEP_ID VARCHAR(15)
24
DECLARE @STATUS VARCHAR(50), @AUTH_STATUS VARCHAR(10)
25

    
26

    
27
DECLARE XmlData CURSOR FOR
28
SELECT *
29
  FROM
30
    OPENXML(@hdoc, '/Root/XmlData', 2)
31
    WITH(
32
        OUT_ID VARCHAR(15),
33
        MAST_BAL_ID VARCHAR(15),
34
        CUST_NAME NVARCHAR(200),
35
        QTY DECIMAL(18,2),
36
        PRICE NUMERIC(18, 0),
37
        TOTAL_AMT NUMERIC(18, 2),
38
        NOTES NVARCHAR(1000),
39
        TO_BRN_ID VARCHAR(15),
40
        TO_DEPT_ID VARCHAR(15)
41
        );
42
OPEN XmlData;
43
BEGIN TRANSACTION;
44

    
45
DECLARE @p_ID VARCHAR(15);
46
FETCH NEXT FROM XmlData
47
 INTO @OUT_ID,
48
      @MAST_BAL_ID,
49
      @CUST_NAME,
50
      @QTY,
51
      @PRICE,
52
      @TOTAL_AMT,
53
      @NOTES,
54
      @TO_BRN_ID,
55
      @TO_DEPT_ID;
56
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0;
57
DECLARE @l_SUM_TOTAL_AMT NUMERIC(18, 2)=0;
58
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
59

    
60

    
61

    
62
IF(@@FETCH_STATUS=-1)BEGIN
63
    ROLLBACK TRANSACTION;
64
    SELECT '-1' AS Result,
65
        @p_OUT_ID OUT_ID,
66
        N'Vui lòng duyệt lại sau khi dữ liệu được load hoàn tất' ErrorDesc;
67
    RETURN '-1';
68
END;
69

    
70
IF((SELECT STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID) <> 'SendApp')
71
BEGIN
72
	ROLLBACK TRANSACTION
73
  SELECT '-1' as Result, '' OUT_ID, N'Phiếu xuất chưa đến bước duyệt bạn không được phép cập nhật thông tin.' ErrorDesc
74
	RETURN '-1'
75
END
76

    
77
-- 24-03-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
78
IF((SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
79
	BEGIN
80
		CLOSE XmlData
81
		DEALLOCATE XmlData
82
		ROLLBACK TRANSACTION
83
		SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Giao dịch đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
84
		RETURN '-1'
85
	END
86

    
87
 DECLARE @CUR_PROCESS VARCHAR(20) DECLARE @p_BRANCH_LOGIN VARCHAR(15), @p_DEP_LOGIN VARCHAR(15)
88

    
89
  --Kiểm tra Kho nếu kho đặt biệt check đã yêu cầu hạch toán chưa nếu chưa yêu cầu chọn hạch toán mới được qua kế toán
90
  DECLARE @WARE_CODE VARCHAR(25),@ListWare_CODE VARCHAR(500);
91
  SELECT @WARE_CODE=cw.WARE_CODE FROM MW_OUT MO LEFT JOIN CM_WARE cw ON MO.WARE_ID = cw.WARE_ID WHERE MO.OUT_ID = @p_OUT_ID
92
  SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
93
  IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE, ',') WHERE VALUE = @WARE_CODE))
94
  BEGIN
95

    
96
    --Nếu tồn tại 3 kho quà tặng Thì TDV duyệt phiếu chờ KSV phê duyệt(MW_OUT_KSV_KT_APP) thì mới trừ số liệu
97

    
98
    --- KIỂM TRA TỰ XUẤT HAY XUẤT KHÁC ĐƠN VỊ
99
    IF EXISTS(SELECT 1 
100
    FROM MW_OUT_DT A
101
    LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
102
    WHERE A.OUT_ID = @p_OUT_ID
103
        AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
104
             OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
105
            )
106
    )
107
    BEGIN
108
        PRINT N'TỰ XUẤT'
109
        IF((SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1')
110
    	BEGIN
111
           BEGIN
112
--        		CLOSE XmlData
113
--        		DEALLOCATE XmlData
114
--        		ROLLBACK TRANSACTION
115
--        		SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Xuất kho đối với các kho quà tặng chưa cập nhật yêu cầu hạch toán. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
116
--        		RETURN '-1'
117

    
118
            ------- TRẢ VỀ BƯỚC NHÂN VIÊN TẠO CẬP NHẬN YÊU CẦU HẠCH TOÁN ĐỂ TIẾP TỤC LÊN PHÒNG KẾ TOÁN XỬ LÝ
119
                --UPDATE MW_OUT SET STATUS = 'REQ_ACOUNT', AUTH_STATUS = 'A', KT_AUTH_STATUS = NULL WHERE OUT_ID =@p_OUT_ID
120
                UPDATE MW_OUT SET STATUS = 'KSV_KT_APP', AUTH_STATUS = 'A', KT_AUTH_STATUS = NULL WHERE OUT_ID =@p_OUT_ID
121
                UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
122
                FROM MW_OUT_DT A
123
                WHERE A.OUT_ID = @p_OUT_ID
124
        	END
125
    	END
126
        ELSE 
127
            BEGIN
128

    
129
                UPDATE MW_OUT SET STATUS = 'KSV_KT_APP', AUTH_STATUS = 'A', KT_AUTH_STATUS = NULL WHERE OUT_ID =@p_OUT_ID
130
                UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
131
                FROM MW_OUT_DT A
132
                WHERE A.OUT_ID = @p_OUT_ID
133

    
134
--                UPDATE MW_OUT SET STATUS = 'OUT_KT', AUTH_STATUS = 'A', KT_AUTH_STATUS = 'E' WHERE OUT_ID =@p_OUT_ID
135
--
136
--                UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
137
--                FROM MW_OUT_DT A
138
--                WHERE A.OUT_ID = @p_OUT_ID
139
             END
140
    END
141
    ELSE
142
    BEGIN
143
--    	IF((SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1')
144
--        BEGIN
145
--        		CLOSE XmlData
146
--        		DEALLOCATE XmlData
147
--        		ROLLBACK TRANSACTION
148
--        		SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Xuất kho đối với các kho quà tặng chưa cập nhật yêu cầu hạch toán. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
149
--        		RETURN '-1'
150
--        END
151
--    	ELSE 
152
        BEGIN
153
            BEGIN
154
            PRINT N'XUẤT KHÁC ĐƠN VỊ HOẶC PHÒNG BAN'
155
          	UPDATE [dbo].[MW_OUT]
156
            SET AUTH_STATUS='A',
157
            CHECKER_ID=@p_CHECKER_ID,
158
            STATUS ='KSV_KT_APP',
159
      	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
160
            WHERE [OUT_ID]=@p_OUT_ID;
161
    
162
            DECLARE CUR_CONFIRM CURSOR FOR
163
            SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
164
            FROM MW_OUT_DT 
165
            WHERE OUT_ID = @p_OUT_ID
166
            GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
167
            OPEN CUR_CONFIRM
168
            FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
169
            WHILE @@FETCH_STATUS = 0
170
            BEGIN
171
                DECLARE @p_OUT_CONF_ID_0 VARCHAR(15);
172
              	EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_0 OUT;
173
              	IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
174
              	BEGIN
175
              		INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)   
176
                  VALUES (@p_OUT_CONF_ID_0,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
177
              	END
178
                FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
179
            END
180
            CLOSE CUR_CONFIRM
181
            DEALLOCATE CUR_CONFIRM
182
            
183
            
184
                    SELECT @p_BRANCH_LOGIN = TU.TLSUBBRID, @p_DEP_LOGIN = TU.SECUR_CODE FROM TL_USER TU WHERE TU.TLNANME = (SELECT MO.MAKER_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID)
185
                  SET @CUR_PROCESS = (SELECT TOP 1 MRP.PROCESS_ID FROM MW_REQUEST_PROCESS MRP WHERE MRP.REQ_ID = @p_OUT_ID AND MRP.STATUS = 'C')
186
                  UPDATE MW_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_OUT_ID AND STATUS = 'C'
187
                  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)
188
                  VALUES(@p_OUT_ID,'CONF',N'Nhân viên tạo phiếu xác nhận','C','NVTT',@p_BRANCH_LOGIN,@CUR_PROCESS,@p_DEP_LOGIN, 'Update',GETDATE(), N'Xác nhận giao')
189
          END
190
    	END
191
      IF @@Error<>0 GOTO ABORT;
192
    END
193

    
194
  END
195
  ELSE
196
  BEGIN
197
--- KIỂM TRA TỰ XUẤT HAY XUẤT KHÁC ĐƠN VỊ
198
    IF EXISTS(SELECT 1 
199
    FROM MW_OUT_DT A
200
    LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
201
    WHERE A.OUT_ID = @p_OUT_ID 
202
        AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
203
             OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
204
            )
205
    )
206
      BEGIN
207
        PRINT N'TỰ XUẤT'
208

    
209
      	UPDATE [dbo].[MW_OUT]
210
        SET AUTH_STATUS='A',
211
        CHECKER_ID=@p_CHECKER_ID,
212
        STATUS ='OUT_KT',
213
  	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
214
        WHERE [OUT_ID]=@p_OUT_ID;
215

    
216
        UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
217
        FROM MW_OUT_DT A
218
        WHERE A.OUT_ID = @p_OUT_ID
219

    
220
      END
221
      ELSE -------------------
222
      BEGIN
223
        PRINT N'XUẤT KHÁC ĐƠN VỊ HOẶC PHÒNG BAN'
224
      	UPDATE [dbo].[MW_OUT]
225
        SET AUTH_STATUS='A',
226
        CHECKER_ID=@p_CHECKER_ID,
227
        STATUS ='CONFIRM',
228
  	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
229
        WHERE [OUT_ID]=@p_OUT_ID;
230

    
231
---- Khai báo cur insert bước xác nhận cho người tạo upload file danh sách chứng thực xuất kho
232
        DECLARE CUR_CONFIRM CURSOR FOR
233
        SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
234
        FROM MW_OUT_DT 
235
        WHERE OUT_ID = @p_OUT_ID
236
        GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
237
        OPEN CUR_CONFIRM
238
        FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
239
        WHILE @@FETCH_STATUS = 0
240
        BEGIN
241
            DECLARE @p_OUT_CONF_ID_1 VARCHAR(15);
242
          	EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_1 OUT;
243
          	IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
244
          	BEGIN
245
          		INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)   
246
              VALUES (@p_OUT_CONF_ID_1,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
247
          	END
248
            
249
            FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
250
        END
251
        CLOSE CUR_CONFIRM
252
        DEALLOCATE CUR_CONFIRM
253
        
254
                SELECT @p_BRANCH_LOGIN = TU.TLSUBBRID, @p_DEP_LOGIN = TU.SECUR_CODE FROM TL_USER TU WHERE TU.TLNANME = (SELECT MO.MAKER_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID)
255
              SET @CUR_PROCESS = (SELECT TOP 1 MRP.PROCESS_ID FROM MW_REQUEST_PROCESS MRP WHERE MRP.REQ_ID = @p_OUT_ID AND MRP.STATUS = 'C')
256
              UPDATE MW_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_OUT_ID AND STATUS = 'C'
257
              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)
258
              VALUES(@p_OUT_ID,'CONF',N'Nhân viên tạo phiếu xác nhận','C','NVTT',@p_BRANCH_LOGIN,@CUR_PROCESS,@p_DEP_LOGIN, 'Update',GETDATE(), N'Xác nhận giao')
259

    
260
      END
261
      IF @@Error<>0 GOTO ABORT;
262
      WHILE @@FETCH_STATUS=0 
263
      BEGIN
264
    	  SET @INDEX = @INDEX+1
265
    	  -- 07 -03 -2019 KIEM TRA LAI SO LUONG (VI SE CO TRUONG HOP VUA DIEU CHUYEN, VUA XUAT SD, VƯA THU HOI, VUA THANH LY TREN 1 MAST_BAL_ID)
266
    	  IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
267
    	  BEGIN
268
    		    CLOSE XmlData
269
    		    DEALLOCATE XmlData
270
    		    ROLLBACK TRANSACTION
271
    		    SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng xuất sử dụng vượt quá số lượng tồn' ErrorDesc
272
    		    RETURN '-1'
273
  	    END
274
        --Update MW_Mast_BAL khi TDV duyệt
275
        --UPDATE MW_MAST_BAL SET QTY_BALANCE = (QTY_BALANCE-@QTY), QTY_REAL = (QTY_REAL-@QTY), QTY_TEMP = (QTY_TEMP+@QTY) WHERE MAST_BAL_ID = @MAST_BAL_ID
276

    
277

    
278
--      	INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
279
--      	VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Hành chính duyệt phiếu.',N'Hành chính duyệt phiếu thành công.')
280

    
281
        IF @@Error<>0 GOTO ABORT;
282
        FETCH NEXT FROM XmlData
283
         INTO @OUT_ID,
284
             @MAST_BAL_ID,
285
             @CUST_NAME,
286
             @QTY,
287
             @PRICE,
288
             @TOTAL_AMT,
289
             @NOTES,
290
             @TO_BRN_ID,
291
             @TO_DEPT_ID;
292
        END;
293
        CLOSE XmlData;
294
        DEALLOCATE XmlData;
295
  END
296
  
297
	INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
298
	VALUES(@p_OUT_ID,'APPNEW',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị duyệt phiếu',N'Trưởng đơn vị duyệt phiếu thành công')
299
  
300

    
301

    
302
--NẾU CÁC KHO THƯỜNG THÌ TRỪ SỐ. - KHO QUÀ TẶNG THÌ TRỪ Ở BƯỚC KSV
303
  IF(NOT EXISTS(SELECT 1
304
            FROM STRING_SPLIT(@ListWare_CODE,',') A
305
            INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
306
            INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
307
            WHERE C.OUT_ID = @p_OUT_ID
308
            ))
309
  BEGIN
310

    
311
      UPDATE MMB SET MMB.QTY_REAL = MMB.QTY_REAL - RE1.QTY, MMB.QTY_TEMP = MMB.QTY_TEMP + RE1.QTY
312
      FROM (SELECT SUM(RE.QTY) AS QTY, RE.MAST_BAL_ID
313
          FROM(
314
              SELECT A.MAST_BAL_ID, A.QTY
315
              FROM MW_OUT_DT A
316
              WHERE A.OUT_ID = @p_OUT_ID) RE
317
          GROUP BY RE.MAST_BAL_ID) RE1
318
      INNER JOIN MW_MAST_BAL MMB ON RE1.MAST_BAL_ID = MMB.MAST_BAL_ID 
319
  END
320

    
321
COMMIT TRANSACTION;
322
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
323
RETURN '0';
324
ABORT:
325
BEGIN
326
    CLOSE XmlData;
327
    DEALLOCATE XmlData;
328
    ROLLBACK TRANSACTION;
329
    SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
330
    RETURN '-1';
331
END;
332
GO
333

    
334
ALTER PROCEDURE dbo.MW_OUT_KSV_KT_App 
335
    @p_OUT_ID VARCHAR(15) =NULL,
336
    @p_CHECKER_ID VARCHAR(100) =NULL,
337
    @p_APPROVE_DT VARCHAR(20) =NULL,
338
    @p_XmlData XML=NULL
339
AS
340
DECLARE @OUT_ID VARCHAR(15) =NULL,@OUT_DT_ID VARCHAR(15) =NULL,
341
        @BRN_ID VARCHAR(15) =NULL,
342
        @DEPT_ID VARCHAR(20)=NULL,
343
        @MAST_BAL_ID VARCHAR(15) =NULL,
344
        @CUST_NAME NVARCHAR(200) =NULL,
345
        @QTY DECIMAL(18,2)=NULL,
346
        @PRICE NUMERIC(18, 0) =NULL,
347
        @TOTAL_AMT NUMERIC(18, 2) =NULL,
348
        @NOTES NVARCHAR(1000) =NULL,
349
        @TO_BRN_ID VARCHAR(15) =NULL,
350
        @TO_DEPT_ID VARCHAR(15) =NULL;
351
DECLARE @hdoc INT;
352
DECLARE @INDEX INT =0
353
DECLARE @p_ID_MAS_BAL VARCHAR(15);
354
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
355

    
356
DECLARE @C_TO_BRN_ID VARCHAR(15), @C_TO_DEP_ID VARCHAR(15)
357

    
358
DECLARE XmlData CURSOR FOR
359
SELECT *
360
  FROM
361
    OPENXML(@hdoc, '/Root/XmlData', 2)
362
    WITH(
363
        OUT_ID VARCHAR(15),
364
        OUT_DT_ID VARCHAR(15),
365
        MAST_BAL_ID VARCHAR(15),
366
        CUST_NAME NVARCHAR(200),
367
        QTY DECIMAL(18,2),
368
        PRICE NUMERIC(18, 0),
369
        TOTAL_AMT NUMERIC(18, 2),
370
        NOTES NVARCHAR(1000),
371
        TO_BRN_ID VARCHAR(15),
372
        TO_DEPT_ID VARCHAR(15)
373
        );
374
OPEN XmlData;
375
BEGIN TRANSACTION;
376

    
377
--Insert XmlData
378
--DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID
379
DECLARE @p_ID VARCHAR(15);
380
FETCH NEXT FROM XmlData
381
 INTO @OUT_ID,@OUT_DT_ID,
382
      @MAST_BAL_ID,
383
      @CUST_NAME,
384
      @QTY,
385
      @PRICE,
386
      @TOTAL_AMT,
387
      @NOTES,
388
      @TO_BRN_ID,
389
      @TO_DEPT_ID;
390
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0;
391
DECLARE @l_SUM_TOTAL_AMT NUMERIC(18, 2)=0;
392
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
393

    
394
  IF(@@FETCH_STATUS=-1)BEGIN
395
  		CLOSE XmlData
396
  		DEALLOCATE XmlData
397
      ROLLBACK TRANSACTION;
398
      SELECT '-1' AS Result,
399
          @p_OUT_ID OUT_ID,
400
          N'Vui lòng duyệt lại sau khi dữ liệu được load hoàn tất' ErrorDesc;
401
      RETURN '-1';
402
  END;
403

    
404
  IF((SELECT mo.STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID)<> 'KSV_KT_APP')
405
  BEGIN
406
  	ROLLBACK TRANSACTION
407
    SELECT '-1' as Result, '' OUT_ID, N'Phiếu xuất chưa đến bước duyệt bạn không được phép cập nhật thông tin.' ErrorDesc
408
  	RETURN '-1'
409
  END
410

    
411
  IF NOT EXISTS(SELECT tugr.ROLE_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr WHERE tugr.ROLE_ID = 'KSV')
412
  BEGIN
413
  	ROLLBACK TRANSACTION
414
    SELECT '-1' as Result, '' OUT_ID, N'Người dùng không có quyền duyệt phiếu này.' ErrorDesc
415
  	RETURN '-1'
416
  END
417
-- 24-03-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
418
  IF((SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
419
  	BEGIN
420
  		CLOSE XmlData
421
  		DEALLOCATE XmlData
422
  		ROLLBACK TRANSACTION
423
  		SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Giao dịch đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
424
  		RETURN '-1'
425
  	END
426

    
427
      DECLARE @CORE_NOTE NVARCHAR(1000) = NULL,
428
		@MATERIAL_ID VARCHAR(15) = NULL,
429
		@VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0),
430
		@FR_BRN_ID varchar(15) = NULL,
431
		@FR_DEPT_ID varchar(15) = NULL,
432
        @WARE_ID VARCHAR(15) = NULL
433
        DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50), @TCCT VARCHAR(50)
434
		DECLARE @l_DEP_CODE VARCHAR(15) = NULL;
435
        DECLARE @l_D_BRANCH_CODE VARCHAR(15) = NULL;
436
        DECLARE @l_C_BRANCH_CODE VARCHAR(15) = NULL
437
        DECLARE @l_MAT_CODE VARCHAR(15) = NULL;
438
        DECLARE @l_WARE_ID VARCHAR(15) = NULL;
439
        DECLARE @MATERIAL_ACCNO VARCHAR(15) = NULL;
440
        DECLARE @BR_CODE VARCHAR(25) = NULL;
441
        DECLARE @DP_CODE VARCHAR(25) = NULL;
442
        DECLARE @l_MAKER_ID VARCHAR(25) = NULL;
443
        DECLARE @p_MAKER_ID VARCHAR(25) = NULL;
444
        DECLARE @p_REQ_USER VARCHAR(25) = NULL;
445
--- GEN ID KSV ĐỂ QUẢN LÝ GD HẠCH TOÁN BƯỚC KSV ---
446
          DECLARE @p_OUT_KSV_ID VARCHAR(15);
447
        	EXEC SYS_CodeMasters_Gen 'OUT_KSV_ID', @p_OUT_KSV_ID OUT;
448

    
449
        ----- SO GIAO DICH
450
        DECLARE @l_TRN_NO VARCHAR(15), @l_MAKER_KT VARCHAR(100), @l_ETP_ID VARCHAR(20), @l_ET_ID VARCHAR(20), @BR_CR_TYPE VARCHAR(20), @PYC VARCHAR(20)
451
        SELECT @p_MAKER_ID = A.MAKER_ID, @WARE_ID = A.WARE_ID, @BR_CR_TYPE = CB.BRANCH_TYPE, @CORE_NOTE = A.NOTES, @PYC = A.MW_REQ_ID, @p_REQ_USER = A.REQ_USER
452
        FROM MW_OUT A LEFT JOIN CM_BRANCH CB ON A.BRN_ID = CB.BRANCH_ID
453
        WHERE A.OUT_ID = @p_OUT_ID
454

    
455
-------- NẾU CÓ PYC THÌ LẤY NGƯỜI TẠO PHIẾU LÀM NVHT, KHONG THÌ LẤY NGƯỜI YÊU CẦU ELSE MAKER
456
        IF @PYC IS NOT NULL AND @PYC <> ''
457
        BEGIN
458
        	SET @l_MAKER_ID = (SELECT MR.MAKER_ID FROM MW_REQ MR WHERE MR.REQ_ID = @PYC)
459
        END
460
        ELSE SET @l_MAKER_ID = ISNULL(@p_REQ_USER,@p_MAKER_ID)
461

    
462
        EXEC ENTRIES_POST_GEN_NO_MW @p_BRANCH_ID = @l_MAKER_ID
463
                        ,@p_TRN_DATE = @p_APPROVE_DT
464
                        ,@p_KeyGen = @l_TRN_NO OUT
465
        -----------------
466

    
467
  --Kiểm tra Kho nếu kho đặt biệt check đã yêu cầu hạch toán chưa nếu chưa yêu cầu chọn hạch toán mới được qua kế toán
468
  DECLARE @WARE_CODE VARCHAR(25),@ListWare_CODE VARCHAR(500);
469
  SELECT @WARE_CODE=cw.WARE_CODE FROM MW_OUT MO LEFT JOIN CM_WARE cw ON MO.WARE_ID = cw.WARE_ID WHERE MO.OUT_ID = @p_OUT_ID
470
  SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
471

    
472
  IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE, ',') WHERE VALUE = @WARE_CODE))
473
  BEGIN
474
      IF EXISTS(SELECT 1 
475
        FROM MW_OUT_DT A
476
        LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
477
        WHERE A.OUT_ID = @p_OUT_ID
478
            AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
479
                 OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
480
                )
481
        )
482
      BEGIN
483
        	UPDATE [dbo].[MW_OUT]
484
            SET AUTH_STATUS='A',
485
            CHECKER_ID=@p_CHECKER_ID,
486
            STATUS = CASE WHEN (SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1' THEN 'REQ_ACOUNT' ELSE 'OUT_KT' END,
487
      	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
488
            , OUT_KSV_ID = @p_OUT_KSV_ID
489
            WHERE [OUT_ID]=@p_OUT_ID;
490
      END
491
      ELSE
492
      BEGIN
493
      	UPDATE [dbo].[MW_OUT]
494
        SET AUTH_STATUS='A',
495
        CHECKER_ID=@p_CHECKER_ID,
496
        STATUS ='CONFIRM',
497
  	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
498
        , OUT_KSV_ID = @p_OUT_KSV_ID
499
        WHERE [OUT_ID]=@p_OUT_ID;
500
      END
501
    	
502
      IF @@Error<>0 GOTO ABORT;
503
      WHILE @@FETCH_STATUS=0 
504
      BEGIN
505
  	    SET @INDEX = @INDEX+1
506
  	    -- 07 -03 -2019 KIEM TRA LAI SO LUONG (VI SE CO TRUONG HOP VUA DIEU CHUYEN, VUA XUAT SD, VƯA THU HOI, VUA THANH LY TREN 1 MAST_BAL_ID)
507
--  	    IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
508
--  	    BEGIN
509
--      		CLOSE XmlData
510
--      		DEALLOCATE XmlData
511
--      		ROLLBACK TRANSACTION
512
--      		SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng xuất sử dụng vượt quá số lượng tồn' ErrorDesc
513
--      		RETURN '-1'
514
--  	    END
515
  
516
        -- UPDATE MW_MAST_BAL KHI TDV DUYỆT LÔ VẬT LIỆU SẼ TRỪ SỐ LƯỢNG HỆ THỐNG, TRỪ SỐ LƯỢNG THỰC TẾ, CỘNG SỐ LƯỢNG TREO
517
--        UPDATE MW_MAST_BAL SET QTY_BALANCE = QTY_BALANCE-@QTY, QTY_REAL = QTY_REAL-@QTY, QTY_TEMP = QTY_TEMP+@QTY WHERE MAST_BAL_ID = @MAST_BAL_ID
518
--        IF @@Error<>0 GOTO ABORT;
519

    
520
        IF(EXISTS(SELECT 1
521
            FROM STRING_SPLIT(@ListWare_CODE,',') A
522
            INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
523
            INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
524
            WHERE C.OUT_ID = @p_OUT_ID
525
            ))
526
        BEGIN
527
            UPDATE B SET B.QTY_BALANCE = B.QTY_BALANCE - A.QTY, B.QTY_REAL = B.QTY_REAL - A.QTY, B.QTY_TEMP = B.QTY_TEMP + A.QTY, B.TOTAL_AMT = B.TOTAL_AMT - A.TOTAL_AMT
528
            FROM MW_OUT_DT A
529
            INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
530
            WHERE A.OUT_DT_ID = @OUT_DT_ID
531
        END
532

    
533
------------- HACH TOAN BUOC DUYET KSV XUAT KHO ------------
534
        SELECT @EXP_ACCTNO = B.EXP_ACCTNO, @VAT_ACCTNO = B.VAT_ACCTNO , @l_MAT_CODE = B.MATERIAL_CODE
535
		FROM MW_MAST_BAL A
536
        LEFT JOIN MW_MATERIAL B ON A.MATERIAL_ID = B.MATERIAL_ID
537
        WHERE A.MAST_BAL_ID = @MAST_BAL_ID
538

    
539

    
540
        DECLARE @FR_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = (SELECT MO.BRN_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID))
541
        DECLARE @FR_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = (SELECT MO.DEPT_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID))
542
        DECLARE @TO_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @TO_BRN_ID)
543
        DECLARE @TO_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @TO_DEPT_ID)
544
    
545
        ----------------HACH TOAN 05/09/2023 KHIEMCHG------------------
546
        -------------------CHECK THEO LOAI KHO-------------------------
547
        DECLARE @l_HS_BRANCH_CODE VARCHAR(20) = (SELECT CB.BRANCH_CODE FROM CM_BRANCH CB WHERE CB.BRANCH_TYPE = 'HS')
548
        DECLARE @BRANCH_TYPE VARCHAR(20) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @TO_BRN_ID)
549
        SET @WARE_CODE = (SELECT CW.WARE_CODE FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
550
        DECLARE @WARE_TRANSFER_NO VARCHAR(20) = (SELECT TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE WARE_CODE = @WARE_CODE AND ACC_TYPE LIKE 'TRANS_%')
551
        DECLARE @WARE_ACCNO VARCHAR(20) = (SELECT  TOP 1 CW.ACC_ACCOUNTING FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
552
        DECLARE @ACCNO_KSV_OUT VARCHAR(20) = (SELECT  TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE ACC_TYPE = 'KSV_OUT')
553

    
554
  		--LAY MA BRANCH CODE
555
--        DECLARE @DB_ID VARCHAR(15) = (SELECT CW.DEP_ID FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
556
--        SELECT @DP_CODE = CD.DEP_CODE, @BR_CODE = CB.BRANCH_CODE 
557
--        FROM CM_DEPARTMENT CD LEFT JOIN CM_BRANCH CB ON CD.BRANCH_ID = CB.BRANCH_ID 
558
--        WHERE CD.DEP_ID = @DB_ID
559

    
560
                BEGIN
561
                ---   TODO: NỢ
562
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
563
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
564
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
565
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT_KSV', @p_OUT_KSV_ID,@FR_BRN_CODE, @ACCNO_KSV_OUT, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_APPROVE_DT, 103), @l_MAKER_ID, @p_CHECKER_ID, @FR_DEP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
566
            	IF @@Error <> 0 GOTO ABORT;
567
                
568
            	---   TODO: CÓ
569
            	  EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
570
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
571
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT_KSV', @p_OUT_KSV_ID,@FR_BRN_CODE, @WARE_ACCNO, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_APPROVE_DT, 103), @l_MAKER_ID, @p_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
572
            	IF @@Error <> 0 GOTO ABORT;
573
    
574
        END
575

    
576
        FETCH NEXT FROM XmlData
577
         INTO @OUT_ID,@OUT_DT_ID,
578
             @MAST_BAL_ID,
579
             @CUST_NAME,
580
             @QTY,
581
             @PRICE,
582
             @TOTAL_AMT,
583
             @NOTES,
584
             @TO_BRN_ID,
585
             @TO_DEPT_ID;
586
      END;
587
      CLOSE XmlData;
588
      DEALLOCATE XmlData;
589

    
590

    
591
      DECLARE CUR_CONFIRM CURSOR FOR
592
      SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
593
      FROM MW_OUT_DT 
594
      WHERE OUT_ID = @p_OUT_ID
595
      GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
596
      OPEN CUR_CONFIRM
597
      FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
598
      WHILE @@FETCH_STATUS = 0
599
      BEGIN
600
          DECLARE @p_OUT_CONF_ID VARCHAR(15);
601
        	EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID OUT;
602
        	IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
603
        	BEGIN
604
        		INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)   
605
            VALUES (@p_OUT_CONF_ID,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
606
        	END
607
      
608
          FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
609
      END
610
      CLOSE CUR_CONFIRM
611
      DEALLOCATE CUR_CONFIRM
612
      --Thêm lịch sử 
613
      INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
614
	    VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Hành chính duyệt phiếu',N'Hành chính duyệt phiếu')
615

    
616
  END
617
  ELSE
618
  BEGIN  	
619
      UPDATE [dbo].[MW_OUT]
620
          SET AUTH_STATUS='A',
621
          CHECKER_ID=@p_CHECKER_ID, STATUS ='CONFIRM',
622
          --APPROVE_DT=CONVERT(DATE, @p_APPROVE_DT, 103)
623
    	    -- LUCTV 13092019 CHINH SUA LAI NGAY DUYET DE LAY DUNG DINH DANG NGAY THANG NAM H PHUT GIAY
624
    	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
625
          WHERE [OUT_ID]=@p_OUT_ID;
626

    
627
      IF @@Error<>0 GOTO ABORT;
628
      WHILE @@FETCH_STATUS=0 
629
      BEGIN
630
    	  SET @INDEX = @INDEX+1
631
    	  -- 07 -03 -2019 KIEM TRA LAI SO LUONG (VI SE CO TRUONG HOP VUA DIEU CHUYEN, VUA XUAT SD, VƯA THU HOI, VUA THANH LY TREN 1 MAST_BAL_ID)
632
--    	  IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
633
--    	  BEGIN
634
--    		    CLOSE XmlData
635
--    		    DEALLOCATE XmlData
636
--    		    ROLLBACK TRANSACTION
637
--    		    SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng xuất sử dụng vượt quá số lượng tồn' ErrorDesc
638
--    		    RETURN '-1'
639
--  	    END
640
        --Update MW_Mast_BAL khi TDV duyệt
641
--        UPDATE MW_MAST_BAL SET QTY_BALANCE = (QTY_BALANCE-@QTY), QTY_REAL = (QTY_REAL-@QTY), QTY_TEMP = (QTY_TEMP+@QTY) WHERE MAST_BAL_ID = @MAST_BAL_ID
642

    
643

    
644
        DECLARE CUR_CONFIRM CURSOR FOR
645
        SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
646
        FROM MW_OUT_DT 
647
        WHERE OUT_ID = @p_OUT_ID
648
        GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
649
        OPEN CUR_CONFIRM
650
        FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
651
        WHILE @@FETCH_STATUS = 0
652
        BEGIN
653
            DECLARE @p_OUT_CONF_ID_1 VARCHAR(15);
654
          	EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_1 OUT;
655
          	IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
656
          	BEGIN
657
          		INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)   
658
              VALUES (@p_OUT_CONF_ID_1,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
659
          	END
660
        
661
            FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
662
        END
663
        CLOSE CUR_CONFIRM
664
        DEALLOCATE CUR_CONFIRM
665

    
666

    
667

    
668
      	INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
669
      	VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Kiểm soát viên xuất kho.',N'Kiểm soát viên xuất kho duyệt phiếu thành công.')
670
       
671
        IF @@Error<>0 GOTO ABORT;
672
        FETCH NEXT FROM XmlData
673
         INTO @OUT_ID,
674
             @MAST_BAL_ID,
675
             @CUST_NAME,
676
             @QTY,
677
             @PRICE,
678
             @TOTAL_AMT,
679
             @NOTES,
680
             @TO_BRN_ID,
681
             @TO_DEPT_ID;
682
        END;
683
        CLOSE XmlData;
684
        DEALLOCATE XmlData;
685
  END
686

    
687
COMMIT TRANSACTION;
688
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
689
RETURN '0';
690
ABORT:
691
BEGIN
692
    CLOSE XmlData;
693
    DEALLOCATE XmlData;
694
    ROLLBACK TRANSACTION;
695
    SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
696
    RETURN '-1';
697
END;
698
GO
699

    
700

    
701
ALTER PROCEDURE dbo.MW_OUT_KT_App
702
    @p_OUT_ID VARCHAR(15) = NULL,
703
    @p_KT_CHECKER_ID VARCHAR(100) = NULL,
704
    @p_KT_APPROVE_DT VARCHAR(20) = NULL,
705
    @p_XmlData XML = NULL
706
AS
707
DECLARE 
708
        @OUT_DT_ID VARCHAR(15) = NULL,@ERROR NVARCHAR(500),
709
        @TOTAL_AMT NUMERIC(18, 0) = NULL,
710
        @BRANCH_CREATE VARCHAR(15) = NULL,
711
        @CORE_NOTE NVARCHAR(1000) = NULL,
712
        @KT_MAKER_ID VARCHAR(100) = NULL,
713
        @BRANCH_ID VARCHAR(15) = NULL,
714
        @DEPT_ID VARCHAR(15) = NULL,
715
        @PRICE_ID VARCHAR(15) = NULL,
716
        @GROUP_ID VARCHAR(15) = NULL,
717
		    @MATERIAL_ID VARCHAR(15) = NULL,@TO_BRN_ID VARCHAR(15) = NULL,@TO_DEPT_ID VARCHAR(15) = NULL,
718
		    @IS_PROMO VARCHAR(1) = NULL, @VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0),
719
		    --01-03-2019 : LUCTV BO SUNG NHUNG BIEN LIEN QUAN TOI PHAN UPDATE-INSERT KHI DUYET
720
		    @BRN_ID VARCHAR(15) =NULL,
721
	    	@MAST_BAL_ID VARCHAR(15) =NULL,
722
		    @CUST_NAME NVARCHAR(200) =NULL,
723
		    @QTY DECIMAL(18,2)=NULL,
724
		    @PRICE NUMERIC(18, 0) =NULL,
725
		    @NOTES NVARCHAR(500) =NULL,
726
        @UNIT_RECEIVE VARCHAR(50)= NULL,
727
        @UNIT_CHARGE VARCHAR(50)= NULL,
728
        @UNIT_PAY VARCHAR(50)= NULL,
729
        @QTY_RECEIVE DECIMAL(18,2) = NULL,
730
        @QTY_DAMAGED DECIMAL(18,2) = NULL,
731
        @QTY_LOSS DECIMAL(18,2) = NULL,
732
        @RECEIVE_NOTES NVARCHAR(1000) = NULL,
733
        @DEP_RECEIVE VARCHAR(15) = NULL,
734
        @DEP_PAY VARCHAR(15) = NULL
735
      
736
DECLARE @l_DEP_CODE VARCHAR(15) = NULL;
737
DECLARE @l_D_BRANCH_CODE VARCHAR(15) = NULL;
738
DECLARE @l_C_BRANCH_CODE VARCHAR(15) = NULL
739
DECLARE @l_MAT_CODE VARCHAR(15) = NULL;
740
DECLARE @l_WARE_ID VARCHAR(15) = NULL;
741
DECLARE @MATERIAL_ACCNO VARCHAR(15) = NULL;
742
DECLARE @ListWare_CODE VARCHAR(500);
743
SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
744
DECLARE XmlData CURSOR FOR
745
SELECT A.OUT_DT_ID, A.TOTAL_AMT, A.TO_DEPT_ID, B.BRANCH_CREATE, B.CORE_NOTE,
746
B.KT_MAKER_ID, B.BRN_ID, B.DEPT_ID, D.PRICE_ID, E.GROUP_ID, E.MATERIAL_ID, A.IS_BCT /*E.IS_PROMO*/, A.VAT, A.PRICE_VAT,A.QTY,
747
A.TO_BRN_ID, A.MAST_BAL_ID,A.CUST_NAME,A.QTY,A.PRICE,A.NOTES, A.COST_ACC,A.UNIT_RECEIVE,A.UNIT_CHARGE, A.UNIT_PAY, A.QTY_RECEIVE, A.QTY_DAMAGED, A.QTY_LOSS, A.RECEIVE_NOTES
748
, A.DEP_RECEIVE, A.DEP_CHARGE
749
FROM MW_OUT_DT A
750
INNER JOIN MW_OUT B ON A.OUT_ID = B.OUT_ID
751
INNER JOIN MW_MAST_BAL C ON A.MAST_BAL_ID = C.MAST_BAL_ID
752
INNER JOIN MW_MAST_PRICE D ON D.PRICE_ID = C.PRICE_ID
753
INNER JOIN MW_IN E ON D.MATERIAL_ID = E.IN_ID
754
WHERE A.OUT_ID = @p_OUT_ID
755

    
756
DECLARE @ALLOCTED VARCHAR(1000), @QTY_ALLOCTION VARCHAR(1000),@MW_REQ_ID VARCHAR(1000)
757
DECLARE @p_ID_MAS_BAL VARCHAR(15);
758
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0,@BR_CODE VARCHAR(15),@DP_CODE VARCHAR(25)
759
DECLARE @l_REMAIN_AMT NUMERIC(18, 2)=0;
760
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
761
DECLARE @INDEX INT =0
762
SELECT @MW_REQ_ID=mo.MW_REQ_ID FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID
763

    
764
DECLARE @MW_OUT_QTY TABLE ( MAST_BAL_ID VARCHAR(50), QTY_OUT VARCHAR(50));
765

    
766
OPEN XmlData;
767

    
768
BEGIN TRANSACTION;
769

    
770
  IF((SELECT A.STATUS FROM MW_OUT A WHERE OUT_ID = @p_OUT_ID) <> 'SendAppKT')
771
  BEGIN
772
  	  ROLLBACK TRANSACTION
773
  		SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Chưa đến bước duyệt vui lòng gửi duyệt' ErrorDesc
774
  		RETURN '-1'
775
  END
776
-- 02-04-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
777
IF((SELECT KT_AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
778
	BEGIN
779
		CLOSE XmlData
780
		DEALLOCATE XmlData
781
		ROLLBACK TRANSACTION
782
		SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Giao dịch đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
783
		RETURN '-1'
784
	END
785

    
786
UPDATE [dbo].[MW_OUT]
787
SET KT_AUTH_STATUS = 'A',
788
    KT_APPROVE_DT = CONVERT(DATETIME, @p_KT_APPROVE_DT, 103),
789
    KT_CHECKER_ID = @p_KT_CHECKER_ID,
790
    STATUS = 'DONE'
791
WHERE [OUT_ID] = @p_OUT_ID;
792
IF @@Error <> 0
793
    GOTO ABORT;
794

    
795
        ----- SO GIAO DICH
796
        DECLARE @l_TRN_NO VARCHAR(15), @l_MAKER_KT VARCHAR(100), @l_ETP_ID VARCHAR(20), @l_ET_ID VARCHAR(20), @BR_CR_TYPE VARCHAR(20)
797
        SELECT @KT_MAKER_ID = KT_MAKER_ID, @l_WARE_ID = WARE_ID, @BR_CR_TYPE = ISNULL(CB.BRANCH_TYPE, CB1.BRANCH_TYPE)
798
        FROM MW_OUT A 
799
        LEFT JOIN CM_BRANCH CB ON A.BRANCH_CREATE = CB.BRANCH_ID
800
        LEFT JOIN CM_BRANCH CB1 ON A.BRN_ID = CB1.BRANCH_ID
801
        WHERE OUT_ID =@p_OUT_ID
802
        EXEC ENTRIES_POST_GEN_NO_MW @p_BRANCH_ID = @KT_MAKER_ID
803
                        ,@p_TRN_DATE = @p_KT_APPROVE_DT
804
                        ,@p_KeyGen = @l_TRN_NO OUT
805
        -----------------
806

    
807
--Insert XmlData
808
--DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID
809
DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50)
810
--Kiểm tra phiếu xuất nếu có phiếu yêu cầu thì cập nhật MW_REQ_DT
811

    
812
FETCH NEXT FROM XmlData INTO @OUT_DT_ID, @TOTAL_AMT,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID ,@IS_PROMO, @VAT, @PRICE_VAT,@QTY,
813
						     @TO_BRN_ID, @MAST_BAL_ID,@CUST_NAME,@QTY,@PRICE,@NOTES,@EXP_ACCTNO,@UNIT_RECEIVE,@UNIT_CHARGE,@UNIT_PAY,@QTY_RECEIVE,@QTY_DAMAGED,@QTY_LOSS,@RECEIVE_NOTES, @DEP_RECEIVE, @DEP_PAY
814

    
815
  WHILE @@FETCH_STATUS = 0
816
  BEGIN
817
    SET @MATERIAL_ACCTNO = @EXP_ACCTNO
818
  	-------- 01/03/2018 LUCTV: EDIT CODE KE TOAN DUYET THI MOI PHAT SINH UPDATE DU LIEU
819
  	SELECT @l_SUM_QTY_BALANCE=SUM(QTY_BALANCE),
820
          @l_REMAIN_AMT=SUM(TOTAL_AMT)
821
       FROM MW_MAST_BAL
822
       WHERE MAST_BAL_ID=@MAST_BAL_ID;/*PRICE_ID=(SELECT PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)AND */ 
823

    
824
   	SET @INDEX = @INDEX+1
825
  	-- 07 -03 -2019 KIEM TRA LAI SO LUONG (VI SE CO TRUONG HOP VUA DIEU CHUYEN, VUA XUAT SD, VƯA THU HOI, VUA THANH LY TREN 1 MAST_BAL_ID)
826
  	IF(@QTY > @l_SUM_QTY_BALANCE) /*(SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))*/
827
  	BEGIN
828
  		CLOSE XmlData
829
  		DEALLOCATE XmlData
830
  		ROLLBACK TRANSACTION
831
  		SELECT '-1' as Result, @p_OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng xuất sử dụng vượt quá số lượng tồn' ErrorDesc
832
  		RETURN '-1'
833
  	END
834
    IF((SELECT IS_DONE FROM MW_REQ WHERE REQ_ID=@MW_REQ_ID) ='1')
835
    BEGIN
836
    	ROLLBACK TRANSACTION
837
      SELECT '-1' as Result, N'Phiếu yêu cầu mã' OUT_ID, N'Đã hoàn thành cấp phát bạn không thể duyệt phiếu.' ErrorDesc
838
    	RETURN '-1'
839
    END
840
    
841
    SELECT @QTY_ALLOCTION=mrd.QUANTITY_ALLOCATION, @ALLOCTED=mrd.ALLOCATED FROM MW_REQ_DT mrd WHERE mrd.REQ_ID = @MW_REQ_ID AND mrd.MATERIAL_ID = @MATERIAL_ID
842

    
843
    IF(EXISTS(SELECT 1
844
            FROM STRING_SPLIT(@ListWare_CODE,',') A
845
            INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
846
            INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
847
            WHERE C.OUT_ID = @p_OUT_ID
848
            ))
849
    BEGIN
850
    
851
        UPDATE B SET B.QTY_TEMP = B.QTY_TEMP - A.QTY
852
        FROM MW_OUT_DT A
853
        INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
854
        WHERE A.OUT_DT_ID = @OUT_DT_ID
855
    END
856
    ELSE
857
    BEGIN
858
        UPDATE B SET B.QTY_TEMP = B.QTY_TEMP - A.QTY, B.QTY_BALANCE = B.QTY_BALANCE - A.QTY
859
        FROM MW_OUT_DT A
860
        INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
861
        WHERE A.OUT_DT_ID = @OUT_DT_ID
862
    END
863

    
864
--  	IF((@QTY-@l_SUM_QTY_BALANCE)=0)---LA LO CUOI CUNG
865
--  	BEGIN
866
--          --SET @l_TOTAL_AMT=@l_TOTAL_AMT-@l_SUM_TOTAL_AMT; --THIEUVQ 070120 --THUANTM THÊM CẬP NHẬT SỐ LƯỢNG HỆ THỐNG
867
--  		SET @TOTAL_AMT = @l_REMAIN_AMT; --THIEUVQ 070120
868
--          UPDATE MW_MAST_BAL
869
--          SET TOTAL_AMT= 0, --TOTAL_AMT-@TOTAL_AMT,--THIEUVQ 070120
870
--             QTY_BALANCE= 0 --QTY_BALANCE-@QTY--THIEUVQ 070120
871
--             ,QTY_REAL= 0 --QTY_BALANCE-@QTY--THIEUVQ 070120
872
--          WHERE MAST_BAL_ID=@MAST_BAL_ID;
873
--
874
--        UPDATE MW_MAST_BAL SET QTY_BALANCE = (QTY_BALANCE-@QTY), QTY_REAL = (QTY_REAL-@QTY), QTY_TEMP = (QTY_TEMP+@QTY) WHERE MAST_BAL_ID = @MAST_BAL_ID
875
--
876
--    END;
877
--    ELSE 
878
--  	BEGIN
879
--  		IF @TOTAL_AMT > @l_REMAIN_AMT SET @TOTAL_AMT = @l_REMAIN_AMT --THIEUVQ 070120
880
--          UPDATE MW_MAST_BAL
881
--          SET TOTAL_AMT=TOTAL_AMT-@TOTAL_AMT,
882
--              QTY_BALANCE=QTY_BALANCE-@QTY,
883
--              QTY_REAL=QTY_REAL-@QTY
884
--          WHERE MAST_BAL_ID=@MAST_BAL_ID;
885
--        
886
--          --Cập nhật Số lượng treo khi KT duyệt
887
--          --UPDATE MW_MAST_BAL SET QTY_TEMP= QTY_TEMP-@QTY WHERE MAST_BAL_ID=@MAST_BAL_ID
888
--
889
--      END;
890

    
891
      EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID_MAS_BAL OUT;
892
      INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, PRICE, TOTAL_AMT)
893
      VALUES(@p_ID_MAS_BAL, @p_OUT_ID, @MAST_BAL_ID, (SELECT KT_APPROVE_DT FROM MW_OUT WHERE OUT_ID=@p_OUT_ID), (SELECT TRN_TIME FROM MW_OUT WHERE OUT_ID=@p_OUT_ID),
894
      'O' , 'D', @QTY, @NOTES, @PRICE, @TOTAL_AMT);
895
  	----- END LUCTV 01-03-2019
896

    
897
  	---LAY TAI KHOAN HACH TOAN
898
  	SELECT /*@EXP_ACCTNO = EXP_ACCTNO,*/ @MATERIAL_ACCTNO = MATERIAL_ACCTNO, @VAT_ACCTNO = VAT_ACCTNO 
899
  	FROM MW_MATERIAL WHERE MATERIAL_ID = @MATERIAL_ID
900
  
901
  		--LAY MA BRANCH CODE
902
  		SET @BR_CODE = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @UNIT_CHARGE)
903
  		SET @DP_CODE = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEP_PAY)
904
  		DECLARE @BR_CODE_X VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)
905
  		DECLARE @DP_CODE_X VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEPT_ID)
906

    
907
    ----------------HACH TOAN 05/09/2023 KHIEMCHG------------------
908
    -------------------CHECK THEO LOAI KHO-------------------------
909
    DECLARE @l_HS_BRANCH_CODE VARCHAR(20) = (SELECT CB.BRANCH_CODE FROM CM_BRANCH CB WHERE CB.BRANCH_TYPE = 'HS')
910
    DECLARE @BRANCH_TYPE VARCHAR(20) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @TO_BRN_ID)
911
    DECLARE @WARE_CODE VARCHAR(20) = (SELECT CW.WARE_CODE FROM CM_WARE CW WHERE CW.WARE_ID = @l_WARE_ID)
912
    DECLARE @WARE_ACCNO VARCHAR(20) = (SELECT CW.ACC_ACCOUNTING FROM CM_WARE CW WHERE CW.WARE_ID = @l_WARE_ID)
913
	SELECT @l_MAT_CODE = A.MATERIAL_CODE, @MATERIAL_ACCNO = MG.EXP_ACCTNO
914
    FROM MW_MATERIAL A
915
    LEFT JOIN MW_GROUP MG ON A.GROUP_ID = MG.GROUP_ID
916
    WHERE MATERIAL_ID = @MATERIAL_ID
917
    DECLARE @ACC_VAT VARCHAR(20) =  (SELECT TOP 1 EPAM.ACC_NO FROM ENTRIES_POST_ACCNO_MW EPAM WHERE EPAM.ACC_TYPE = 'ACC_VAT_PROMO_NEC')
918
    DECLARE @ACC_TRANS VARCHAR(20) =  (SELECT TOP 1 EPAM.ACC_NO FROM ENTRIES_POST_ACCNO_MW EPAM WHERE EPAM.ACC_TYPE = 'ASSET_CCLD_N')
919
        DECLARE @ACCNO_KSV_OUT VARCHAR(20) = (SELECT  TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE ACC_TYPE = 'KSV_OUT')
920

    
921
    BEGIN
922
      		SET @BR_CODE = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @UNIT_CHARGE)
923
      		SET @DP_CODE = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEP_PAY)
924
    END
925
        --IF @WARE_CODE = '10AP' OR @WARE_CODE = '11VL' SET @WARE_ACCNO = @MATERIAL_ACCNO
926
        --LAY MA BRANCH CODE
927
        DECLARE @DB_ID VARCHAR(15) = (SELECT CW.DEP_ID FROM CM_WARE CW WHERE CW.WARE_ID = @l_WARE_ID)
928
        --        SELECT @DP_CODE = CD.DEP_CODE, @BR_CODE = CB.BRANCH_CODE 
929
        --        FROM CM_DEPARTMENT CD LEFT JOIN CM_BRANCH CB ON CD.BRANCH_ID = CB.BRANCH_ID 
930
        --        WHERE CD.DEP_ID = @DB_ID
931
--- XUẤT SỬ DỤNG ĐỐI VỚI KHO QUÀ TẶNG KHÁCH HÀNG, KHO QUÀ TẶNG MARKETING, KHO QUÀ TẶNG NHÂN VIÊN
932
        IF @WARE_CODE = '06QT' OR @WARE_CODE = '07TT' OR @WARE_CODE = '08NV' 
933
        BEGIN
934
            IF @BRANCH_CREATE = @UNIT_CHARGE
935
            BEGIN
936
                ---   TODO: NỢ
937
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
938
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
939
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
940
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
941
            	IF @@Error <> 0 GOTO ABORT;
942
    
943
                ---   TODO: CÓ
944
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
945
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
946
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACCNO_KSV_OUT , 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE_X, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
947
            	IF @@Error <> 0 GOTO ABORT;
948
    
949
                -------- ĐI CHI PHÍ THUẾ VAT ---
950
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
951
                ---   TODO: NỢ
952
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
953
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
954
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D',@PRICE_VAT, 1,@PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
955
            	IF @@Error <> 0 GOTO ABORT;
956
    
957
                --IF(@VAT > 0)
958
                BEGIN
959
                	---   TODO: CÓ
960
                	EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
961
                    INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
962
                    VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_VAT, 'VND', 'C',@PRICE_VAT, 1,@PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
963
                	IF @@Error <> 0 GOTO ABORT;
964
                END
965
            END
966
            ELSE
967
            BEGIN
968
            	---   TODO: NỢ
969
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
970
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
971
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
972
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO , 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
973
            	IF @@Error <> 0 GOTO ABORT;
974
    
975
                ---   TODO: CÓ 5199
976
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
977
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
978
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_TRANS, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
979
                IF @@Error <> 0 GOTO ABORT;
980
            
981

    
982
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
983
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
984
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
985
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO , 'VND', 'D', @PRICE_VAT, 1, @PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
986
            	IF @@Error <> 0 GOTO ABORT;
987
                --IF(@VAT > 0)
988
                BEGIN
989
                	---   TODO: CÓ
990
                	EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
991
                    INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
992
                    VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_VAT, 'VND', 'C',@PRICE_VAT, 1,@PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
993
                	IF @@Error <> 0 GOTO ABORT;
994
                END
995

    
996
                
997
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
998
                ---   TODO: NỢ
999
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1000
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1001
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACC_TRANS, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1002
                IF @@Error <> 0 GOTO ABORT;
1003
                ---   TODO: CÓ
1004
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1005
                INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1006
                VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACCNO_KSV_OUT , 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE_X, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1007
            	IF @@Error <> 0 GOTO ABORT;
1008
                
1009

    
1010
            END
1011
            DECLARE @MAT_NAME NVARCHAR(1000), @UNIT NVARCHAR(50)
1012
            SELECT @MAT_NAME = mm.MATERIAL_NAME, @UNIT = cu.UNIT_NAME FROM MW_MATERIAL mm
1013
            LEFT JOIN CM_UNIT cu ON mm.UNIT_ID = cu.UNIT_ID
1014
            WHERE mm.MATERIAL_CODE = @l_MAT_CODE
1015

    
1016
            INSERT INTO MTTB_INVOICE_ITEMS_DETAIL (item_id, trn_ref_no, branch_code, trn_ccy, txn_date, total_fee, total_vat, total_txn, stt, service_name, unit, quantity, unit_price, total, record_stat, order_no, tienthue, tongtiensauthue, thuesuat, app_code, ex_ref, etp_id)
1017
            VALUES (@l_ET_ID, '', @BR_CODE, 'VND', CONVERT(DATE, @p_KT_APPROVE_DT, 103), @QTY*@PRICE, @PRICE_VAT, @QTY*@PRICE + @PRICE_VAT, CONVERT(VARCHAR(8), @INDEX), @MAT_NAME, @UNIT, CONVERT(VARCHAR(255), @QTY), CONVERT(VARCHAR(255), @PRICE), CONVERT(VARCHAR(255), @QTY*@PRICE), 'O', @INDEX, CONVERT(VARCHAR(255), @PRICE_VAT), CONVERT(VARCHAR(255), @QTY*@PRICE + @PRICE_VAT), CONVERT(VARCHAR(255), @VAT), 'AMS_AMS', @p_OUT_ID, @l_ET_ID)
1018
        END
1019

    
1020
        ELSE 
1021
        BEGIN
1022
                    IF @BRANCH_CREATE = @UNIT_CHARGE
1023
                    BEGIN
1024
                        EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID out
1025
                	    ---   TODO: NỢ
1026
                        EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1027
                        INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1028
                        VALUES (@l_ETP_ID, @l_ETP_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1029
                    	IF @@Error <> 0 GOTO ABORT;
1030
                        
1031
                    	---   TODO: CÓ
1032
                    	EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1033
                        INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1034
                        VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @WARE_ACCNO, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1035
                    	IF @@Error <> 0 GOTO ABORT;
1036
                    END
1037
                    ELSE IF @BRANCH_CREATE <> @UNIT_CHARGE
1038
                    BEGIN
1039
                    	EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID out
1040
                	    ---   TODO: NỢ
1041
                        EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1042
                        INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1043
                        VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1044
                    	IF @@Error <> 0 GOTO ABORT;
1045
                        
1046
                    	---   TODO: CÓ
1047
                    	EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1048
                        INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1049
                        VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_TRANS, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1050
                    	IF @@Error <> 0 GOTO ABORT;
1051
            
1052
                        ---   TODO: NỢ
1053
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
1054
                        EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1055
                        INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1056
                        VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACC_TRANS /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1057
                    	IF @@Error <> 0 GOTO ABORT;
1058
                        
1059
                    	---   TODO: CÓ
1060
                    	EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
1061
                        INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
1062
                        VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @WARE_ACCNO, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
1063
                    	IF @@Error <> 0 GOTO ABORT;
1064
                    END
1065
        END
1066

    
1067
	----------------END HACH TOAN 05/09/2023 KHIEMCHG------------------
1068

    
1069
  
1070
      FETCH NEXT FROM XmlData INTO @OUT_DT_ID, @TOTAL_AMT,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID ,@IS_PROMO , @VAT, @PRICE_VAT,@QTY,
1071
  								 @TO_BRN_ID, @MAST_BAL_ID,@CUST_NAME,@QTY,@PRICE,@NOTES,@EXP_ACCTNO,@UNIT_RECEIVE,@UNIT_CHARGE,@UNIT_PAY,@QTY_RECEIVE,@QTY_DAMAGED,@QTY_LOSS,@RECEIVE_NOTES, @DEP_RECEIVE, @DEP_PAY
1072
  END
1073
  CLOSE XmlData
1074
  DEALLOCATE XmlData
1075

    
1076

    
1077
--NẾU CÓ PYC THÌ CỘNG SL VÀO PYC
1078
  DECLARE @REQ_ID VARCHAR(15) = (SELECT MT.MW_REQ_ID FROM MW_OUT MT WHERE MT.OUT_ID = @p_OUT_ID)
1079
  IF(ISNULL(@REQ_ID,'') <> '')
1080
  BEGIN
1081
      
1082
      UPDATE D SET D.ALLOCATED = ISNULL(D.ALLOCATED,0) + RE.QTY
1083
      FROM (
1084
        SELECT A.MAST_BAL_ID, SUM(A.QTY) AS QTY, A.UNIT_RECEIVE, ISNULL(A.DEP_RECEIVE,'') AS DEP_RECEIVE
1085
        FROM MW_OUT_DT A    
1086
        WHERE A.OUT_ID = @p_OUT_ID
1087
        GROUP BY A.MAST_BAL_ID, A.UNIT_RECEIVE, ISNULL(A.DEP_RECEIVE,'')) RE 
1088
      INNER JOIN MW_MAST_BAL B ON RE.MAST_BAL_ID = B.MAST_BAL_ID      
1089
      INNER JOIN MW_REQ_DT D ON B.MATERIAL_ID = D.MATERIAL_ID AND D.BRANCH_USE = RE.UNIT_RECEIVE AND ISNULL(D.DEP_USE,'') = ISNULL(RE.DEP_RECEIVE,'')
1090
      WHERE D.REQ_ID = @REQ_ID
1091

    
1092
      IF(EXISTS(SELECT 1 FROM MW_REQ_DT WHERE ISNULL(QUANTITY_ALLOCATION,0) < ISNULL(ALLOCATED,0) AND REQ_ID = @REQ_ID))
1093
      BEGIN
1094
          ROLLBACK TRANSACTION
1095
    		  SELECT N'Số lượng cấp phát vượt yêu cầu của đơn vị.' AS Result,
1096
               '' OUT_ID,
1097
               '' ErrorDesc;
1098
          RETURN '-1';
1099
      END
1100
    
1101
      IF(NOT EXISTS(SELECT 1 FROM MW_REQ_DT MRD WHERE MRD.REQ_ID = @REQ_ID AND ISNULL(MRD.QUANTITY_ALLOCATION,0) <> ISNULL(MRD.ALLOCATED,0)))
1102
      BEGIN
1103
          UPDATE MW_REQ SET IS_DONE = '1' WHERE REQ_ID = @REQ_ID
1104
      END
1105
  END   
1106

    
1107
	INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
1108
	VALUES(@p_OUT_ID,'KT_APP',@p_KT_CHECKER_ID,GETDATE(), N'Kiểm soát viên kế toán duyệt phiếu',N'Kiểm soát viên kế toán duyệt phiếu')
1109

    
1110
COMMIT TRANSACTION;
1111
SELECT '0' AS Result, @p_OUT_ID OUT_ID,'' ErrorDesc;
1112
RETURN '0';
1113
ABORT:
1114
BEGIN
1115
    CLOSE XmlData;
1116
    DEALLOCATE XmlData;
1117
    ROLLBACK TRANSACTION;
1118
    SELECT '-1' AS Result,'' OUT_ID, '' ErrorDesc;
1119
    RETURN '-1';
1120
END;
1121

    
1122
GO
1123
UPDATE MW_OUT SET TOTAL_AMT = (SELECT SUM(mod.TOTAL_AMT) FROM MW_OUT_DT mod WHERE mod.OUT_ID = MW_OUT.OUT_ID) WHERE OUT_ID IN ('MWOUT0000000002','MWOUT0000000005')