Project

General

Profile

06_upd_mw.txt

Luc Tran Van, 09/21/2023 03:34 PM

 
1
ALTER   PROCEDURE [dbo].[MW_OUT_Upd]
2
    @p_OUT_ID VARCHAR(15) = NULL,
3
    @p_TRN_Date VARCHAR(25) = NULL,
4
    @p_TRN_TIME VARCHAR(50) = NULL,
5
    @p_BRN_ID VARCHAR(15) = NULL,
6
    @p_DEPT_ID VARCHAR(15) = NULL,
7
    @p_QTY DECIMAL(18,2) = NULL,
8
    @p_PRICE NUMERIC(18, 0) = NULL,
9
    @p_TOTAL_AMT NUMERIC(18, 2) = NULL,
10
    @p_NOTES NVARCHAR(1000),
11
    @p_OUT_DESC NVARCHAR(500) = NULL,
12
    @p_AUTH_STATUS VARCHAR(1) = NULL,
13
    @p_MAKER_ID VARCHAR(15) = NULL,
14
    @p_CREATE_DT VARCHAR(25) = NULL,
15
    @p_CHECKER_ID VARCHAR(15) = NULL,
16
    @p_APPROVE_DT VARCHAR(25) = NULL,
17
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
18
    @p_KT_MAKER_ID VARCHAR(15) = NULL,
19
    @p_KT_CREATE_DT VARCHAR(25) = NULL,
20
    @p_KT_CHECKER_ID VARCHAR(15) = NULL,
21
    @p_KT_APPROVE_DT VARCHAR(25) = NULL,
22
    @p_RECORD_STATUS VARCHAR(1) = NULL,
23
    @p_XmlData XML = NULL,
24
	@p_CORE_NOTE nvarchar(500) = NULL,
25
	@p_WARE_HOUSE VARCHAR(15) = NULL
26
AS
27
DECLARE
28
    --DVSD
29
    @OUT_ID VARCHAR(15) = NULL,
30
    @MAST_BAL_ID VARCHAR(15) = NULL,
31
    @CUST_NAME NVARCHAR(200) = NULL,
32
    @QTY DECIMAL(18,2) = NULL,
33
	@QTY_OLD DECIMAL(18,2) = NULL,
34
    @PRICE NUMERIC(18, 0) = NULL,
35
    @TOTAL_AMT NUMERIC(18, 2) = NULL,
36
    @NOTES NVARCHAR(1000) = NULL,
37
	@TO_BRN_ID varchar(15) = NULL,
38
    @TO_DEPT_ID varchar(15) = NULL,
39
	@EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
40
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
41
	@COST_ACC VARCHAR(50) = NULL
42
DECLARE @INDEX INT =0
43
DECLARE @PRICE_CODE VARCHAR(30)
44
DECLARE @hdoc INT;
45
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
46
DECLARE XmlData CURSOR FOR
47
SELECT *
48
FROM
49
    OPENXML(@hdoc, '/Root/XmlData', 2)
50
    WITH
51
    (
52
        OUT_ID VARCHAR(15),
53
        MAST_BAL_ID VARCHAR(15),
54
        --FR_BRN_ID varchar(15) ,
55
        --FR_DEPT_ID varchar(15) ,
56
        --FR_PRICE_ID varchar(15) ,
57
        --TO_BRN_ID varchar(15) ,
58
        --TO_DEPT_ID varchar(15) ,
59
        CUST_NAME NVARCHAR(200),
60
        QTY DECIMAL(18,2),
61
        QTY_OLD DECIMAL(18,2) ,
62
        PRICE NUMERIC(18, 0),
63
        TOTAL_AMT NUMERIC(18, 2),
64
        NOTES NVARCHAR(1000),
65
		TO_BRN_ID varchar(15),
66
		TO_DEPT_ID varchar(15),
67
		EVENT_NAME NVARCHAR(1000),
68
		IS_BCT VARCHAR(1),-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
69
		COST_ACC VARCHAR(50)
70
    );
71
OPEN XmlData;
72
BEGIN TRANSACTION;
73
UPDATE [dbo].[MW_OUT]
74
SET 
75
    [QTY] = @p_QTY,
76
	AUTH_STATUS='U',
77
    [PRICE] = @p_PRICE,
78
    [TOTAL_AMT] = @p_TOTAL_AMT,
79
    [NOTES] = @p_NOTES,
80
	MAKER_ID=@p_MAKER_ID,
81
	[CORE_NOTE] = @p_CORE_NOTE,
82
	WARE_HOUSE=  @p_WARE_HOUSE,DEPT_ID = @p_DEPT_ID
83
WHERE [OUT_ID] = @p_OUT_ID;
84
IF @@Error <> 0
85
    GOTO ABORT;
86
--Insert XmlData
87
DECLARE @l_COST_ACC VARCHAR(50);
88
DELETE FROM MW_OUT_DT
89
WHERE OUT_ID = @p_OUT_ID;
90
FETCH NEXT FROM XmlData
91
INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD,@PRICE,@TOTAL_AMT, @NOTES,@TO_BRN_ID, @TO_DEPT_ID, @EVENT_NAME,@IS_BCT, @COST_ACC
92
WHILE @@FETCH_STATUS = 0
93
BEGIN
94
	SET @INDEX = @INDEX +1
95
	SET @PRICE_CODE =(SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID =(SELECT PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
96
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
97
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
98
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
99
														WHEN A.PRICE_ID = 'MWPRICE00251577' then @COST_ACC
100
														WHEN A.PRICE_ID = 'MWPRICE00251839' then @COST_ACC
101
														WHEN A.PRICE_ID = 'MWPRICE00251859' then @COST_ACC
102
														ELSE MT.EXP_ACCTNO
103
														END 
104
						FROM dbo.MW_MAST_BAL A
105
						LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
106
						WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
107
	IF(@COST_ACC IS NULL OR @COST_ACC = '')
108
		BEGIN
109
			ROLLBACK TRANSACTION
110
			CLOSE XmlData;
111
			DEALLOCATE XmlData;
112
			SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc
113
			RETURN '-1'
114
		END
115
	IF(@l_COST_ACC <> @COST_ACC)
116
		BEGIN
117
			ROLLBACK TRANSACTION
118
			CLOSE XmlData;
119
			DEALLOCATE XmlData;
120
			SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí sai quy định. Bạn chỉ được điều chỉnh tài khoản chi phí của vật liệu thuộc nhóm Vật Liệu Thẻ Dùng Chung.' ErrorDesc
121
			RETURN '-1'
122
		END	
123
	--LUCTV: 03-1-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC XUAT SU DUNG THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
124
	--IF(EXISTS(SELECT * FROM MW_OUT_DT  WHERE MAST_BAL_ID =@MAST_BAL_ID AND OUT_ID<>@p_OUT_ID AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
125
	--BEGIN
126
	--	CLOSE XmlData;
127
	--	DEALLOCATE XmlData;
128
	--	ROLLBACK TRANSACTION;
129
	--	SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
130
	--	RETURN '-1';
131
	--END
132
	----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
133
	--IF(EXISTS(SELECT * FROM MW_TRANSFER_DT  WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
134
	--BEGIN
135
	--	CLOSE XmlData;
136
	--	DEALLOCATE XmlData;
137
	--	ROLLBACK TRANSACTION;
138
	--	SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
139
	--	RETURN '-1';
140
	--END
141
	----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC THANH LY THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
142
	--IF(EXISTS(SELECT * FROM MW_LIQ_DT  WHERE MAST_BAL_ID =@MAST_BAL_ID AND LIQ_ID IN (SELECT LIQ_ID FROM MW_LIQ_MASTER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
143
	--BEGIN
144
	--	CLOSE XmlData;
145
	--	DEALLOCATE XmlData;
146
	--	ROLLBACK TRANSACTION;
147
	--	SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được thanh lý. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
148
	--	RETURN '-1';
149
	--END
150
	-- 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)
151
	-- 22/04/2022 doanptt
152
	IF(@QTY > @QTY_OLD)
153
	BEGIN
154
		CLOSE XmlData
155
		DEALLOCATE XmlData
156
		ROLLBACK TRANSACTION
157
		SELECT '-1' as Result, @OUT_ID OUT_ID, N'Danh sách đơn vị, khách hàng nhậ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
158
		RETURN '-1'
159
	END
160
    DECLARE @p_OUT_DT_ID VARCHAR(15);
161
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
162
    IF @p_OUT_DT_ID = ''
163
       OR @p_OUT_DT_ID IS NULL
164
        GOTO ABORT;
165
    INSERT INTO [dbo].[MW_OUT_DT]
166
    (
167
        [OUT_DT_ID],
168
        [OUT_ID],
169
        [MAST_BAL_ID],
170
        [CUST_NAME],
171
        [QTY],
172
		[QTY_OLD],
173
        [PRICE],
174
        [TOTAL_AMT],
175
        [NOTES],
176
		[TO_BRN_ID],
177
		[TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC]
178
    )
179
    SELECT @p_OUT_DT_ID,
180
           @p_OUT_ID,
181
           @MAST_BAL_ID,
182
           @CUST_NAME,
183
           @QTY,
184
		   @QTY_OLD,
185
           @PRICE,
186
           @QTY*@PRICE,
187
           @NOTES,
188
		   @TO_BRN_ID,
189
		   @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
190
    IF @@Error <> 0
191
        GOTO ABORT;
192
    FETCH NEXT FROM XmlData
193
    INTO @OUT_ID,
194
         @MAST_BAL_ID,
195
         @CUST_NAME,
196
         @QTY,
197
		 @QTY_OLD,
198
         @PRICE,
199
         @TOTAL_AMT,
200
         @NOTES,
201
		 @TO_BRN_ID,
202
		 @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
203
END;
204
CLOSE XmlData;
205
DEALLOCATE XmlData;
206
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
207
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @OUT_ID AND PROCESS_ID = 'UPDATE_HC'
208
		INSERT INTO dbo.PL_PROCESS
209
		(
210
			REQ_ID,
211
			PROCESS_ID,
212
			CHECKER_ID,
213
			APPROVE_DT,
214
			PROCESS_DESC,NOTES
215
		)
216
		VALUES
217
		(   @OUT_ID,        -- REQ_ID - varchar(15)
218
			'UPDATE_HC',        -- PROCESS_ID - varchar(10)
219
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
220
			GETDATE(), -- APPROVE_DT - datetime
221
			N'Cập nhật phiếu xuất vật liệu thành công' ,
222
			N'Cập nhật phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
223
		)
224
---
225
UPDATE MW_OUT
226
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
227
WHERE OUT_ID =@p_OUT_ID
228
COMMIT TRANSACTION;
229
SELECT '0' AS Result,@p_OUT_ID OUT_ID,'' ErrorDesc;
230
RETURN '0';
231
ABORT:
232
BEGIN
233
    CLOSE XmlData;
234
    DEALLOCATE XmlData;
235
    ROLLBACK TRANSACTION;
236
    SELECT '-1' AS Result,'' OUT_ID,'' ErrorDesc;
237
    RETURN '-1';
238
END;
239
GO
240
ALTER   PROCEDURE [dbo].[MW_OUT_Ins] @p_TRN_Date VARCHAR(25)=NULL, @p_TRN_TIME VARCHAR(50) =NULL, @p_BRN_ID VARCHAR(15) =NULL, @p_DEPT_ID VARCHAR(15) =NULL,
241
    @p_QTY DECIMAL(18,2)=NULL, @p_PRICE NUMERIC(18, 0) =NULL, @p_TOTAL_AMT NUMERIC(18, 2) =NULL, @p_NOTES NVARCHAR(1000), @p_OUT_DESC NVARCHAR(500) =NULL,
242
    @p_AUTH_STATUS VARCHAR(1) =NULL, @p_MAKER_ID VARCHAR(15) =NULL, @p_CREATE_DT VARCHAR(25)=NULL, @p_CHECKER_ID VARCHAR(15) =NULL, @p_APPROVE_DT VARCHAR(25)=NULL,
243
    @p_KT_AUTH_STATUS VARCHAR(1) =NULL, @p_KT_MAKER_ID VARCHAR(15) =NULL, @p_KT_CREATE_DT VARCHAR(25)=NULL, @p_KT_CHECKER_ID VARCHAR(15) =NULL,
244
    @p_KT_APPROVE_DT VARCHAR(25)=NULL, @p_RECORD_STATUS VARCHAR(1) =NULL, @p_XmlData XML=NULL, @p_CORE_NOTE NVARCHAR(500) =NULL,
245
    @p_BRANCH_CREATE VARCHAR(15) =NULL,@p_WARE_HOUSE VARCHAR(15) = NULL
246
AS
247
DECLARE
248
    --DVSD
249
    --@OUT_DT_ID varchar(15),
250
	@p_OUT_CODE NVARCHAR(100) = NULL,
251
    @OUT_ID VARCHAR(15) =NULL, @MAST_BAL_ID VARCHAR(15) =NULL, @CUST_NAME NVARCHAR(200) =NULL, @QTY DECIMAL(18,2)=NULL, @QTY_OLD DECIMAL(18,2)=NULL, @PRICE NUMERIC(18, 0) =NULL,
252
    @TOTAL_AMT NUMERIC(18, 2) =NULL, @NOTES NVARCHAR(1000) =NULL, @TO_BRN_ID VARCHAR(15) =NULL, @TO_DEPT_ID VARCHAR(15) =NULL,@EVENT_NAME NVARCHAR(1000) = NULL,
253
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
254
	@COST_ACC VARCHAR(50) = NULL
255
DECLARE @INDEX INT =0
256
DECLARE @PRICE_CODE VARCHAR(30)
257
DECLARE @hdoc INT;
258
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
259
DECLARE XmlData CURSOR FOR
260
SELECT *
261
FROM
262
    OPENXML(@hdoc, '/Root/XmlData', 2)
263
    WITH(OUT_ID VARCHAR(15), MAST_BAL_ID VARCHAR(15),
264
    CUST_NAME NVARCHAR(200), QTY DECIMAL(18,2), QTY_OLD DECIMAL(18,2),
265
    PRICE NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000),
266
	TO_BRN_ID VARCHAR(15), TO_DEPT_ID VARCHAR(15),EVENT_NAME NVARCHAR(1000),IS_BCT VARCHAR(1),COST_ACC VARCHAR(50))
267
OPEN XmlData;
268
BEGIN TRANSACTION;
269
	DECLARE @p_OUT_ID VARCHAR(15), @l_COST_ACC VARCHAR(50);
270
	EXEC [MW_OUT_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_OUT_CODE OUT;
271
	EXEC SYS_CodeMasters_Gen 'MW_OUT', @p_OUT_ID OUT;
272
	IF @p_OUT_ID='' OR @p_OUT_ID IS NULL GOTO ABORT;
273
	INSERT INTO [dbo].[MW_OUT]([OUT_ID], [TRN_Date], [TRN_TIME], [BRN_ID], [DEPT_ID], [QTY], [PRICE], [TOTAL_AMT], [NOTES], [OUT_DESC], [AUTH_STATUS], [MAKER_ID],
274
	[CREATE_DT], [CHECKER_ID], [APPROVE_DT], [KT_AUTH_STATUS], [KT_MAKER_ID], [KT_CREATE_DT], [KT_CHECKER_ID], [KT_APPROVE_DT], [RECORD_STATUS], [CORE_NOTE],
275
	[BRANCH_CREATE],[WARE_HOUSE],[OUT_CODE])
276
	SELECT @p_OUT_ID, CONVERT(DATETIME, @p_TRN_Date, 103), @p_TRN_TIME, @p_BRN_ID, @p_DEPT_ID, @p_QTY, @p_PRICE, @p_TOTAL_AMT, @p_NOTES, @p_OUT_DESC, 'U',
277
		@p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), NULL, NULL, 'U', NULL, NULL, NULL, NULL, '1', @p_CORE_NOTE, @p_BRANCH_CREATE,@p_WARE_HOUSE,@p_OUT_CODE;
278
	IF @@error<>0 GOTO ABORT;
279
	--Insert XmlData
280
	FETCH NEXT FROM XmlData
281
	INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
282
	WHILE @@fetch_status=0 BEGIN
283
		SET @INDEX = @INDEX+1
284
		SET @PRICE_CODE = (SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID =(SELECT PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
285
		SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
286
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
287
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
288
														WHEN A.PRICE_ID = 'MWPRICE00251577' then @COST_ACC
289
														WHEN A.PRICE_ID = 'MWPRICE00251839' then @COST_ACC
290
														WHEN A.PRICE_ID = 'MWPRICE00251859' then @COST_ACC
291
														ELSE MT.EXP_ACCTNO
292
														END 
293
		FROM dbo.MW_MAST_BAL A
294
		LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
295
		WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
296
		IF(@l_COST_ACC <> @COST_ACC)
297
		BEGIN
298
			ROLLBACK TRANSACTION
299
			CLOSE XmlData;
300
			DEALLOCATE XmlData;
301
			SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí sai quy định. Bạn chỉ được điều chỉnh tài khoản chi phí của vật liệu thuộc nhóm Vật Liệu Thẻ Dùng Chung.' ErrorDesc
302
			RETURN '-1'
303
		END	
304
		IF(@COST_ACC IS NULL OR @COST_ACC = '')
305
		BEGIN
306
			ROLLBACK TRANSACTION
307
			CLOSE XmlData;
308
			DEALLOCATE XmlData;
309
			SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc
310
			RETURN '-1'
311
		END	
312
		--LUCTV: 30-11-2018 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC XUAT SU DUNG THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
313
		--IF(EXISTS(SELECT * FROM MW_OUT_DT  WHERE MAST_BAL_ID =@MAST_BAL_ID  AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1' AND OUT_ID <> @p_OUT_ID)))
314
		--BEGIN
315
		--	CLOSE XmlData;
316
		--	DEALLOCATE XmlData;
317
		--	ROLLBACK TRANSACTION;
318
		--	SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã là '+@PRICE_CODE +N' đang được xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
319
		--	RETURN '-1';
320
		--END
321
		----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
322
		--IF(EXISTS(SELECT * FROM MW_TRANSFER_DT  WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
323
		--BEGIN
324
		--	CLOSE XmlData;
325
		--	DEALLOCATE XmlData;
326
		--	ROLLBACK TRANSACTION;
327
		--	SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
328
		--	RETURN '-1';
329
		--END
330
		----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC THANH LY THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
331
		--IF(EXISTS(SELECT * FROM MW_LIQ_DT  WHERE MAST_BAL_ID =@MAST_BAL_ID AND LIQ_ID IN (SELECT LIQ_ID FROM MW_LIQ_MASTER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
332
		--BEGIN
333
		--	CLOSE XmlData;
334
		--	DEALLOCATE XmlData;
335
		--	ROLLBACK TRANSACTION;
336
		--	SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được thanh lý. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
337
		--	RETURN '-1';
338
		--END
339
		---- 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)
340
		
341
		-- 22/04/2022 doanptt dòng 124-131 không chính xác, cần xác nhận lại
342
		IF(@QTY > @QTY_OLD)
343
		BEGIN
344
			CLOSE XmlData
345
			DEALLOCATE XmlData
346
			ROLLBACK TRANSACTION
347
			SELECT '-1' as Result, @OUT_ID OUT_ID, N'Danh sách đơn vị, khách hàng nhậ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
348
			RETURN '-1'
349
		END
350
		IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
351
		BEGIN
352
			CLOSE XmlData
353
			DEALLOCATE XmlData
354
			ROLLBACK TRANSACTION
355
			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
356
			RETURN '-1'
357
		END
358
		--END
359
		DECLARE @p_OUT_DT_ID VARCHAR(15);
360
		EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
361
		IF @p_OUT_DT_ID='' OR @p_OUT_DT_ID IS NULL GOTO ABORT;
362
		INSERT INTO [dbo].[MW_OUT_DT]([OUT_DT_ID], [OUT_ID], [MAST_BAL_ID], [CUST_NAME], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES], [TO_BRN_ID], [TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC])
363
		SELECT @p_OUT_DT_ID, @p_OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @QTY*@PRICE, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
364
		--INSERT INTO [dbo].[MW_OUT_DT] ([OUT_DT_ID], [OUT_ID], [MAST_BAL_ID], [FR_BRN_ID], [FR_DEPT_ID], [FR_PRICE_ID], [TO_BRN_ID], [TO_DEPT_ID], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES])
365
		--VALUES( @p_OUT_DT_ID, @p_OUT_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES)
366
		IF @@error<>0 GOTO ABORT;
367
		FETCH NEXT FROM XmlData
368
		INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
369
END;
370
CLOSE XmlData;
371
DEALLOCATE XmlData;
372
UPDATE MW_OUT
373
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
374
WHERE OUT_ID =@p_OUT_ID
375
-- doanptt 12/07/2022: Thêm process
376
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_OUT_ID AND PROCESS_ID = 'INSERT'
377
		INSERT INTO dbo.PL_PROCESS
378
		(
379
			REQ_ID,
380
			PROCESS_ID,
381
			CHECKER_ID,
382
			APPROVE_DT,
383
			PROCESS_DESC,NOTES
384
		)
385
		VALUES
386
		(   @p_OUT_ID,        -- REQ_ID - varchar(15)
387
			'INSERT',        -- PROCESS_ID - varchar(10)
388
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
389
			GETDATE(), -- APPROVE_DT - datetime
390
			N'Thêm mới phiếu xuất vật liệu thành công' ,
391
			N'Thêm mới phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
392
		)
393
COMMIT TRANSACTION;
394
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
395
RETURN '0';
396
ABORT:
397
BEGIN
398
    CLOSE XmlData;
399
    DEALLOCATE XmlData;
400
    ROLLBACK TRANSACTION;
401
    SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
402
    RETURN '-1';
403
END;
404
GO
405
--21092023_secretkey