Project

General

Profile

f6.txt

Luc Tran Van, 11/17/2023 11:55 AM

 
1

    
2
CREATE OR ALTER PROCEDURE dbo.MW_OUT_KSV_KT_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,@OUT_DT_ID VARCHAR(15) =NULL,
9
        @BRN_ID VARCHAR(15) =NULL,
10
        @DEPT_ID VARCHAR(20)=NULL,
11
        @MAST_BAL_ID VARCHAR(15) =NULL,
12
        @CUST_NAME NVARCHAR(200) =NULL,
13
        @QTY DECIMAL(18,2)=NULL,
14
        @PRICE NUMERIC(18, 0) =NULL,
15
        @TOTAL_AMT NUMERIC(18, 2) =NULL,
16
        @NOTES NVARCHAR(1000) =NULL,
17
        @TO_BRN_ID VARCHAR(15) =NULL,
18
        @TO_DEPT_ID VARCHAR(15) =NULL;
19
DECLARE @hdoc INT;
20
DECLARE @INDEX INT =0
21
DECLARE @p_ID_MAS_BAL VARCHAR(15);
22
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
23

    
24
DECLARE @C_TO_BRN_ID VARCHAR(15), @C_TO_DEP_ID VARCHAR(15)
25

    
26
DECLARE XmlData CURSOR FOR
27
SELECT *
28
  FROM
29
    OPENXML(@hdoc, '/Root/XmlData', 2)
30
    WITH(
31
        OUT_ID VARCHAR(15),
32
        OUT_DT_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
--Insert XmlData
46
--DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID
47
DECLARE @p_ID VARCHAR(15);
48
FETCH NEXT FROM XmlData
49
 INTO @OUT_ID,@OUT_DT_ID,
50
      @MAST_BAL_ID,
51
      @CUST_NAME,
52
      @QTY,
53
      @PRICE,
54
      @TOTAL_AMT,
55
      @NOTES,
56
      @TO_BRN_ID,
57
      @TO_DEPT_ID;
58
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0;
59
DECLARE @l_SUM_TOTAL_AMT NUMERIC(18, 2)=0;
60
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
61

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

    
72
  IF((SELECT mo.STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID)<> 'KSV_KT_APP')
73
  BEGIN
74
  	ROLLBACK TRANSACTION
75
    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
76
  	RETURN '-1'
77
  END
78

    
79
  IF NOT EXISTS(SELECT tugr.ROLE_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr WHERE tugr.ROLE_ID = 'KSV')
80
  BEGIN
81
  	ROLLBACK TRANSACTION
82
    SELECT '-1' as Result, '' OUT_ID, N'Người dùng không có quyền duyệt phiếu này.' ErrorDesc
83
  	RETURN '-1'
84
  END
85
-- 24-03-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
86
  IF((SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
87
  	BEGIN
88
  		CLOSE XmlData
89
  		DEALLOCATE XmlData
90
  		ROLLBACK TRANSACTION
91
  		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
92
  		RETURN '-1'
93
  	END
94

    
95
      DECLARE @CORE_NOTE NVARCHAR(1000) = NULL,
96
		@MATERIAL_ID VARCHAR(15) = NULL,
97
		@VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0),
98
		@FR_BRN_ID varchar(15) = NULL,
99
		@FR_DEPT_ID varchar(15) = NULL,
100
        @WARE_ID VARCHAR(15) = NULL
101
        DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50), @TCCT VARCHAR(50)
102
		DECLARE @l_DEP_CODE VARCHAR(15) = NULL;
103
        DECLARE @l_D_BRANCH_CODE VARCHAR(15) = NULL;
104
        DECLARE @l_C_BRANCH_CODE VARCHAR(15) = NULL
105
        DECLARE @l_MAT_CODE VARCHAR(15) = NULL;
106
        DECLARE @l_WARE_ID VARCHAR(15) = NULL;
107
        DECLARE @MATERIAL_ACCNO VARCHAR(15) = NULL;
108
        DECLARE @BR_CODE VARCHAR(25) = NULL;
109
        DECLARE @DP_CODE VARCHAR(25) = NULL;
110
        DECLARE @l_MAKER_ID VARCHAR(25) = NULL;
111
        DECLARE @p_MAKER_ID VARCHAR(25) = NULL;
112
        DECLARE @p_REQ_USER VARCHAR(25) = NULL;
113
--- GEN ID KSV ĐỂ QUẢN LÝ GD HẠCH TOÁN BƯỚC KSV ---
114
          DECLARE @p_OUT_KSV_ID VARCHAR(15);
115
        	EXEC SYS_CodeMasters_Gen 'OUT_KSV_ID', @p_OUT_KSV_ID OUT;
116

    
117
        ----- SO GIAO DICH
118
        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)
119
        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
120
        FROM MW_OUT A LEFT JOIN CM_BRANCH CB ON A.BRN_ID = CB.BRANCH_ID
121
        WHERE A.OUT_ID = @p_OUT_ID
122

    
123
-------- 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
124
        IF @PYC IS NOT NULL AND @PYC <> ''
125
        BEGIN
126
        	SET @l_MAKER_ID = (SELECT MR.MAKER_ID FROM MW_REQ MR WHERE MR.REQ_ID = @PYC)
127
        END
128
        ELSE SET @l_MAKER_ID = ISNULL(@p_REQ_USER,@p_MAKER_ID)
129

    
130
        EXEC ENTRIES_POST_GEN_NO_MW @p_BRANCH_ID = @l_MAKER_ID
131
                        ,@p_TRN_DATE = @p_APPROVE_DT
132
                        ,@p_KeyGen = @l_TRN_NO OUT
133
        -----------------
134

    
135
  --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
136
  DECLARE @WARE_CODE VARCHAR(25),@ListWare_CODE VARCHAR(500);
137
  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
138
  SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
139

    
140
  IF(EXISTS(SELECT 1
141
            FROM STRING_SPLIT(@ListWare_CODE,',') A
142
            INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
143
            INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
144
            WHERE C.OUT_ID = @p_OUT_ID
145
            ))
146
  BEGIN
147
      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
148
      FROM MW_OUT_DT A
149
      INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
150
      WHERE A.OUT_ID = @p_OUT_ID
151
  END
152

    
153
  IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE, ',') WHERE VALUE = @WARE_CODE))
154
  BEGIN
155
      IF EXISTS(SELECT 1 
156
        FROM MW_OUT_DT A
157
        LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
158
        WHERE A.OUT_ID = @p_OUT_ID
159
            AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
160
                 OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
161
                )
162
        )
163
      BEGIN
164
        	UPDATE [dbo].[MW_OUT]
165
            SET AUTH_STATUS='A',
166
            CHECKER_ID=@p_CHECKER_ID,
167
            STATUS = CASE WHEN (SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1' THEN 'REQ_ACOUNT' ELSE 'OUT_KT' END,
168
      	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
169
            , OUT_KSV_ID = @p_OUT_KSV_ID
170
            WHERE [OUT_ID]=@p_OUT_ID;
171
      END
172
      ELSE
173
      BEGIN
174
      	UPDATE [dbo].[MW_OUT]
175
        SET AUTH_STATUS='A',
176
        CHECKER_ID=@p_CHECKER_ID,
177
        STATUS ='CONFIRM',
178
  	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
179
        , OUT_KSV_ID = @p_OUT_KSV_ID
180
        WHERE [OUT_ID]=@p_OUT_ID;
181
      END
182
    	
183
      IF @@Error<>0 GOTO ABORT;
184
      WHILE @@FETCH_STATUS=0 
185
      BEGIN
186
  	    SET @INDEX = @INDEX+1
187
  	    -- 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)
188
--  	    IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
189
--  	    BEGIN
190
--      		CLOSE XmlData
191
--      		DEALLOCATE XmlData
192
--      		ROLLBACK TRANSACTION
193
--      		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
194
--      		RETURN '-1'
195
--  	    END
196
  
197
        -- 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
198
--        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
199
--        IF @@Error<>0 GOTO ABORT;
200

    
201
------------- HACH TOAN BUOC DUYET KSV XUAT KHO ------------
202
        SELECT @EXP_ACCTNO = B.EXP_ACCTNO, @VAT_ACCTNO = B.VAT_ACCTNO , @l_MAT_CODE = B.MATERIAL_CODE
203
		FROM MW_MAST_BAL A
204
        LEFT JOIN MW_MATERIAL B ON A.MATERIAL_ID = B.MATERIAL_ID
205
        WHERE A.MAST_BAL_ID = @MAST_BAL_ID
206

    
207

    
208
        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))
209
        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))
210
        DECLARE @TO_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @TO_BRN_ID)
211
        DECLARE @TO_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @TO_DEPT_ID)
212
    
213
        ----------------HACH TOAN 05/09/2023 KHIEMCHG------------------
214
        -------------------CHECK THEO LOAI KHO-------------------------
215
        DECLARE @l_HS_BRANCH_CODE VARCHAR(20) = (SELECT CB.BRANCH_CODE FROM CM_BRANCH CB WHERE CB.BRANCH_TYPE = 'HS')
216
        DECLARE @BRANCH_TYPE VARCHAR(20) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @TO_BRN_ID)
217
        SET @WARE_CODE = (SELECT CW.WARE_CODE FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
218
        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_%')
219
        DECLARE @WARE_ACCNO VARCHAR(20) = (SELECT  TOP 1 CW.ACC_ACCOUNTING FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
220
        DECLARE @ACCNO_KSV_OUT VARCHAR(20) = (SELECT  TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE ACC_TYPE = 'KSV_OUT')
221

    
222
  		--LAY MA BRANCH CODE
223
--        DECLARE @DB_ID VARCHAR(15) = (SELECT CW.DEP_ID FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
224
--        SELECT @DP_CODE = CD.DEP_CODE, @BR_CODE = CB.BRANCH_CODE 
225
--        FROM CM_DEPARTMENT CD LEFT JOIN CM_BRANCH CB ON CD.BRANCH_ID = CB.BRANCH_ID 
226
--        WHERE CD.DEP_ID = @DB_ID
227

    
228
                BEGIN
229
                ---   TODO: NỢ
230
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
231
                EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
232
                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)
233
                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);
234
            	IF @@Error <> 0 GOTO ABORT;
235
                
236
            	---   TODO: CÓ
237
            	  EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
238
                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)
239
                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);
240
            	IF @@Error <> 0 GOTO ABORT;
241
    
242
        END
243

    
244
        FETCH NEXT FROM XmlData
245
         INTO @OUT_ID,@OUT_DT_ID,
246
             @MAST_BAL_ID,
247
             @CUST_NAME,
248
             @QTY,
249
             @PRICE,
250
             @TOTAL_AMT,
251
             @NOTES,
252
             @TO_BRN_ID,
253
             @TO_DEPT_ID;
254
      END;
255
      CLOSE XmlData;
256
      DEALLOCATE XmlData;
257

    
258

    
259
      DECLARE CUR_CONFIRM CURSOR FOR
260
      SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
261
      FROM MW_OUT_DT 
262
      WHERE OUT_ID = @p_OUT_ID
263
      GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
264
      OPEN CUR_CONFIRM
265
      FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
266
      WHILE @@FETCH_STATUS = 0
267
      BEGIN
268
          DECLARE @p_OUT_CONF_ID VARCHAR(15);
269
        	EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID OUT;
270
        	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,'')))
271
        	BEGIN
272
        		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)   
273
            VALUES (@p_OUT_CONF_ID,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
274
        	END
275
      
276
          FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
277
      END
278
      CLOSE CUR_CONFIRM
279
      DEALLOCATE CUR_CONFIRM
280
      --Thêm lịch sử 
281
      INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
282
	    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')
283

    
284
  END
285
  ELSE
286
  BEGIN  	
287
      UPDATE [dbo].[MW_OUT]
288
          SET AUTH_STATUS='A',
289
          CHECKER_ID=@p_CHECKER_ID, STATUS ='CONFIRM',
290
          --APPROVE_DT=CONVERT(DATE, @p_APPROVE_DT, 103)
291
    	    -- LUCTV 13092019 CHINH SUA LAI NGAY DUYET DE LAY DUNG DINH DANG NGAY THANG NAM H PHUT GIAY
292
    	    APPROVE_DT =  CONVERT(DATETIME, @p_APPROVE_DT, 103)
293
          WHERE [OUT_ID]=@p_OUT_ID;
294

    
295
      IF @@Error<>0 GOTO ABORT;
296
      WHILE @@FETCH_STATUS=0 
297
      BEGIN
298
    	  SET @INDEX = @INDEX+1
299
    	  -- 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)
300
--    	  IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
301
--    	  BEGIN
302
--    		    CLOSE XmlData
303
--    		    DEALLOCATE XmlData
304
--    		    ROLLBACK TRANSACTION
305
--    		    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
306
--    		    RETURN '-1'
307
--  	    END
308
        --Update MW_Mast_BAL khi TDV duyệt
309
--        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
310

    
311

    
312
        DECLARE CUR_CONFIRM CURSOR FOR
313
        SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
314
        FROM MW_OUT_DT 
315
        WHERE OUT_ID = @p_OUT_ID
316
        GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
317
        OPEN CUR_CONFIRM
318
        FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
319
        WHILE @@FETCH_STATUS = 0
320
        BEGIN
321
            DECLARE @p_OUT_CONF_ID_1 VARCHAR(15);
322
          	EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_1 OUT;
323
          	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,'')))
324
          	BEGIN
325
          		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)   
326
              VALUES (@p_OUT_CONF_ID_1,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
327
          	END
328
        
329
            FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
330
        END
331
        CLOSE CUR_CONFIRM
332
        DEALLOCATE CUR_CONFIRM
333

    
334

    
335

    
336
      	INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
337
      	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.')
338
       
339
        IF @@Error<>0 GOTO ABORT;
340
        FETCH NEXT FROM XmlData
341
         INTO @OUT_ID,
342
             @MAST_BAL_ID,
343
             @CUST_NAME,
344
             @QTY,
345
             @PRICE,
346
             @TOTAL_AMT,
347
             @NOTES,
348
             @TO_BRN_ID,
349
             @TO_DEPT_ID;
350
        END;
351
        CLOSE XmlData;
352
        DEALLOCATE XmlData;
353
  END
354

    
355
COMMIT TRANSACTION;
356
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
357
RETURN '0';
358
ABORT:
359
BEGIN
360
    CLOSE XmlData;
361
    DEALLOCATE XmlData;
362
    ROLLBACK TRANSACTION;
363
    SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
364
    RETURN '-1';
365
END