Project

General

Profile

script_upd_material.txt

Luc Tran Van, 07/18/2023 09:53 AM

 
1

    
2
ALTER   PROCEDURE [dbo].[MW_OUT_Upd]
3
    @p_OUT_ID VARCHAR(15) = NULL,
4
    @p_TRN_Date VARCHAR(25) = NULL,
5
    @p_TRN_TIME VARCHAR(50) = NULL,
6
    @p_BRN_ID VARCHAR(15) = NULL,
7
    @p_DEPT_ID VARCHAR(15) = NULL,
8
    @p_QTY DECIMAL(18,2) = NULL,
9
    @p_PRICE NUMERIC(18, 0) = NULL,
10
    @p_TOTAL_AMT NUMERIC(18, 2) = NULL,
11
    @p_NOTES NVARCHAR(1000),
12
    @p_OUT_DESC NVARCHAR(500) = NULL,
13
    @p_AUTH_STATUS VARCHAR(1) = NULL,
14
    @p_MAKER_ID VARCHAR(15) = NULL,
15
    @p_CREATE_DT VARCHAR(25) = NULL,
16
    @p_CHECKER_ID VARCHAR(15) = NULL,
17
    @p_APPROVE_DT VARCHAR(25) = NULL,
18
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
19
    @p_KT_MAKER_ID VARCHAR(15) = NULL,
20
    @p_KT_CREATE_DT VARCHAR(25) = NULL,
21
    @p_KT_CHECKER_ID VARCHAR(15) = NULL,
22
    @p_KT_APPROVE_DT VARCHAR(25) = NULL,
23
    @p_RECORD_STATUS VARCHAR(1) = NULL,
24
    @p_XmlData XML = NULL,
25
	@p_CORE_NOTE nvarchar(500) = NULL,
26
	@p_WARE_HOUSE VARCHAR(15) = NULL
27
AS
28
DECLARE
29
    --DVSD
30
    @OUT_ID VARCHAR(15) = NULL,
31
    @MAST_BAL_ID VARCHAR(15) = NULL,
32
    @CUST_NAME NVARCHAR(200) = NULL,
33
    @QTY DECIMAL(18,2) = NULL,
34
	@QTY_OLD DECIMAL(18,2) = NULL,
35
    @PRICE NUMERIC(18, 0) = NULL,
36
    @TOTAL_AMT NUMERIC(18, 2) = NULL,
37
    @NOTES NVARCHAR(1000) = NULL,
38
	@TO_BRN_ID varchar(15) = NULL,
39
    @TO_DEPT_ID varchar(15) = NULL,
40
	@EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
41
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
42
	@COST_ACC VARCHAR(50) = NULL
43
DECLARE @INDEX INT =0
44
DECLARE @PRICE_CODE VARCHAR(30)
45
DECLARE @hdoc INT;
46
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
47
DECLARE XmlData CURSOR FOR
48
SELECT *
49
FROM
50
    OPENXML(@hdoc, '/Root/XmlData', 2)
51
    WITH
52
    (
53
        OUT_ID VARCHAR(15),
54
        MAST_BAL_ID VARCHAR(15),
55
        --FR_BRN_ID varchar(15) ,
56
        --FR_DEPT_ID varchar(15) ,
57
        --FR_PRICE_ID varchar(15) ,
58
        --TO_BRN_ID varchar(15) ,
59
        --TO_DEPT_ID varchar(15) ,
60
        CUST_NAME NVARCHAR(200),
61
        QTY DECIMAL(18,2),
62
        QTY_OLD DECIMAL(18,2) ,
63
        PRICE NUMERIC(18, 0),
64
        TOTAL_AMT NUMERIC(18, 2),
65
        NOTES NVARCHAR(1000),
66
		TO_BRN_ID varchar(15),
67
		TO_DEPT_ID varchar(15),
68
		EVENT_NAME NVARCHAR(1000),
69
		IS_BCT VARCHAR(1),-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
70
		COST_ACC VARCHAR(50)
71
    );
72
OPEN XmlData;
73
BEGIN TRANSACTION;
74
UPDATE [dbo].[MW_OUT]
75
SET 
76
    [QTY] = @p_QTY,
77
	AUTH_STATUS='U',
78
    [PRICE] = @p_PRICE,
79
    [TOTAL_AMT] = @p_TOTAL_AMT,
80
    [NOTES] = @p_NOTES,
81
	MAKER_ID=@p_MAKER_ID,
82
	[CORE_NOTE] = @p_CORE_NOTE,
83
	WARE_HOUSE=  @p_WARE_HOUSE,DEPT_ID = @p_DEPT_ID
84
WHERE [OUT_ID] = @p_OUT_ID;
85
IF @@Error <> 0
86
    GOTO ABORT;
87
--Insert XmlData
88
DECLARE @l_COST_ACC VARCHAR(50);
89
DELETE FROM MW_OUT_DT
90
WHERE OUT_ID = @p_OUT_ID;
91
FETCH NEXT FROM XmlData
92
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
93
WHILE @@FETCH_STATUS = 0
94
BEGIN
95
	SET @INDEX = @INDEX +1
96
	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))
97

    
98
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
99
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
100
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
101
														WHEN A.PRICE_ID = 'MWPRICE00251577' 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

    
108
	IF(@COST_ACC IS NULL OR @COST_ACC = '')
109
		BEGIN
110
			ROLLBACK TRANSACTION
111
			CLOSE XmlData;
112
			DEALLOCATE XmlData;
113
			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
114
			RETURN '-1'
115
		END
116
	IF(@l_COST_ACC <> @COST_ACC)
117
		BEGIN
118
			ROLLBACK TRANSACTION
119
			CLOSE XmlData;
120
			DEALLOCATE XmlData;
121
			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
122
			RETURN '-1'
123
		END	
124
	--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
125
	--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')))
126
	--BEGIN
127
	--	CLOSE XmlData;
128
	--	DEALLOCATE XmlData;
129
	--	ROLLBACK TRANSACTION;
130
	--	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;
131
	--	RETURN '-1';
132
	--END
133
	----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
134
	--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')))
135
	--BEGIN
136
	--	CLOSE XmlData;
137
	--	DEALLOCATE XmlData;
138
	--	ROLLBACK TRANSACTION;
139
	--	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;
140
	--	RETURN '-1';
141
	--END
142
	----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
143
	--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')))
144
	--BEGIN
145
	--	CLOSE XmlData;
146
	--	DEALLOCATE XmlData;
147
	--	ROLLBACK TRANSACTION;
148
	--	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;
149
	--	RETURN '-1';
150
	--END
151
	-- 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)
152

    
153
	-- 22/04/2022 doanptt
154
	IF(@QTY > @QTY_OLD)
155
	BEGIN
156
		CLOSE XmlData
157
		DEALLOCATE XmlData
158
		ROLLBACK TRANSACTION
159
		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
160
		RETURN '-1'
161
	END
162

    
163
    DECLARE @p_OUT_DT_ID VARCHAR(15);
164
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
165
    IF @p_OUT_DT_ID = ''
166
       OR @p_OUT_DT_ID IS NULL
167
        GOTO ABORT;
168
    INSERT INTO [dbo].[MW_OUT_DT]
169
    (
170
        [OUT_DT_ID],
171
        [OUT_ID],
172
        [MAST_BAL_ID],
173
        [CUST_NAME],
174
        [QTY],
175
		[QTY_OLD],
176
        [PRICE],
177
        [TOTAL_AMT],
178
        [NOTES],
179
		[TO_BRN_ID],
180
		[TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC]
181
    )
182
    SELECT @p_OUT_DT_ID,
183
           @p_OUT_ID,
184
           @MAST_BAL_ID,
185
           @CUST_NAME,
186
           @QTY,
187
		   @QTY_OLD,
188
           @PRICE,
189
           @QTY*@PRICE,
190
           @NOTES,
191
		   @TO_BRN_ID,
192
		   @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
193

    
194
    IF @@Error <> 0
195
        GOTO ABORT;
196
    FETCH NEXT FROM XmlData
197
    INTO @OUT_ID,
198
         @MAST_BAL_ID,
199
         @CUST_NAME,
200
         @QTY,
201
		 @QTY_OLD,
202
         @PRICE,
203
         @TOTAL_AMT,
204
         @NOTES,
205
		 @TO_BRN_ID,
206
		 @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
207
END;
208
CLOSE XmlData;
209
DEALLOCATE XmlData;
210

    
211
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
212
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @OUT_ID AND PROCESS_ID = 'UPDATE_HC'
213
		INSERT INTO dbo.PL_PROCESS
214
		(
215
			REQ_ID,
216
			PROCESS_ID,
217
			CHECKER_ID,
218
			APPROVE_DT,
219
			PROCESS_DESC,NOTES
220
		)
221
		VALUES
222
		(   @OUT_ID,        -- REQ_ID - varchar(15)
223
			'UPDATE_HC',        -- PROCESS_ID - varchar(10)
224
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
225
			GETDATE(), -- APPROVE_DT - datetime
226
			N'Cập nhật phiếu xuất vật liệu thành công' ,
227
			N'Cập nhật phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
228
		)
229

    
230
---
231
UPDATE MW_OUT
232
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
233
WHERE OUT_ID =@p_OUT_ID
234
COMMIT TRANSACTION;
235
SELECT '0' AS Result,@p_OUT_ID OUT_ID,'' ErrorDesc;
236
RETURN '0';
237
ABORT:
238
BEGIN
239
    CLOSE XmlData;
240
    DEALLOCATE XmlData;
241
    ROLLBACK TRANSACTION;
242
    SELECT '-1' AS Result,'' OUT_ID,'' ErrorDesc;
243
    RETURN '-1';
244
END;
245

    
246
GO
247

    
248

    
249
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,
250
    @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,
251
    @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,
252
    @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,
253
    @p_KT_APPROVE_DT VARCHAR(25)=NULL, @p_RECORD_STATUS VARCHAR(1) =NULL, @p_XmlData XML=NULL, @p_CORE_NOTE NVARCHAR(500) =NULL,
254
    @p_BRANCH_CREATE VARCHAR(15) =NULL,@p_WARE_HOUSE VARCHAR(15) = NULL
255
AS
256
DECLARE
257
    --DVSD
258
    --@OUT_DT_ID varchar(15),
259
	@p_OUT_CODE NVARCHAR(100) = NULL,
260
    @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,
261
    @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,
262
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
263
	@COST_ACC VARCHAR(50) = NULL
264
DECLARE @INDEX INT =0
265
DECLARE @PRICE_CODE VARCHAR(30)
266
DECLARE @hdoc INT;
267
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
268
DECLARE XmlData CURSOR FOR
269
SELECT *
270
FROM
271
    OPENXML(@hdoc, '/Root/XmlData', 2)
272
    WITH(OUT_ID VARCHAR(15), MAST_BAL_ID VARCHAR(15),
273
    CUST_NAME NVARCHAR(200), QTY DECIMAL(18,2), QTY_OLD DECIMAL(18,2),
274
    PRICE NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000),
275
	TO_BRN_ID VARCHAR(15), TO_DEPT_ID VARCHAR(15),EVENT_NAME NVARCHAR(1000),IS_BCT VARCHAR(1),COST_ACC VARCHAR(50))
276
OPEN XmlData;
277

    
278
BEGIN TRANSACTION;
279
	DECLARE @p_OUT_ID VARCHAR(15), @l_COST_ACC VARCHAR(50);
280
	EXEC [MW_OUT_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_OUT_CODE OUT;
281

    
282
	EXEC SYS_CodeMasters_Gen 'MW_OUT', @p_OUT_ID OUT;
283
	IF @p_OUT_ID='' OR @p_OUT_ID IS NULL GOTO ABORT;
284

    
285
	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],
286
	[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],
287
	[BRANCH_CREATE],[WARE_HOUSE],[OUT_CODE])
288
	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',
289
		@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;
290
	IF @@error<>0 GOTO ABORT;
291
	--Insert XmlData
292
	FETCH NEXT FROM XmlData
293
	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
294
	WHILE @@fetch_status=0 BEGIN
295
		SET @INDEX = @INDEX+1
296
		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))
297

    
298
		SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
299
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
300
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
301
														WHEN A.PRICE_ID = 'MWPRICE00251577' then @COST_ACC
302
														ELSE MT.EXP_ACCTNO
303
														END 
304
		FROM dbo.MW_MAST_BAL A
305
		LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
306
		WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
307

    
308
		IF(@l_COST_ACC <> @COST_ACC)
309
		BEGIN
310
			ROLLBACK TRANSACTION
311
			CLOSE XmlData;
312
			DEALLOCATE XmlData;
313
			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
314
			RETURN '-1'
315
		END	
316

    
317
		IF(@COST_ACC IS NULL OR @COST_ACC = '')
318
		BEGIN
319
			ROLLBACK TRANSACTION
320
			CLOSE XmlData;
321
			DEALLOCATE XmlData;
322
			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
323
			RETURN '-1'
324
		END	
325
		--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
326
		--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)))
327
		--BEGIN
328
		--	CLOSE XmlData;
329
		--	DEALLOCATE XmlData;
330
		--	ROLLBACK TRANSACTION;
331
		--	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;
332
		--	RETURN '-1';
333
		--END
334
		----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
335
		--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')))
336
		--BEGIN
337
		--	CLOSE XmlData;
338
		--	DEALLOCATE XmlData;
339
		--	ROLLBACK TRANSACTION;
340
		--	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;
341
		--	RETURN '-1';
342
		--END
343
		----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
344
		--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')))
345
		--BEGIN
346
		--	CLOSE XmlData;
347
		--	DEALLOCATE XmlData;
348
		--	ROLLBACK TRANSACTION;
349
		--	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;
350
		--	RETURN '-1';
351
		--END
352
		---- 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)
353
		
354
		-- 22/04/2022 doanptt dòng 124-131 không chính xác, cần xác nhận lại
355
		IF(@QTY > @QTY_OLD)
356
		BEGIN
357
			CLOSE XmlData
358
			DEALLOCATE XmlData
359
			ROLLBACK TRANSACTION
360
			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
361
			RETURN '-1'
362
		END
363

    
364
		IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
365
		BEGIN
366
			CLOSE XmlData
367
			DEALLOCATE XmlData
368
			ROLLBACK TRANSACTION
369
			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
370
			RETURN '-1'
371
		END
372
		--END
373
		DECLARE @p_OUT_DT_ID VARCHAR(15);
374
		EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
375
		IF @p_OUT_DT_ID='' OR @p_OUT_DT_ID IS NULL GOTO ABORT;
376
		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])
377
		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
378

    
379
		--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])
380
		--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)
381
		IF @@error<>0 GOTO ABORT;
382
		FETCH NEXT FROM XmlData
383
		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
384
END;
385
CLOSE XmlData;
386
DEALLOCATE XmlData;
387
UPDATE MW_OUT
388
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
389
WHERE OUT_ID =@p_OUT_ID
390

    
391
-- doanptt 12/07/2022: Thêm process
392
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_OUT_ID AND PROCESS_ID = 'INSERT'
393
		INSERT INTO dbo.PL_PROCESS
394
		(
395
			REQ_ID,
396
			PROCESS_ID,
397
			CHECKER_ID,
398
			APPROVE_DT,
399
			PROCESS_DESC,NOTES
400
		)
401
		VALUES
402
		(   @p_OUT_ID,        -- REQ_ID - varchar(15)
403
			'INSERT',        -- PROCESS_ID - varchar(10)
404
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
405
			GETDATE(), -- APPROVE_DT - datetime
406
			N'Thêm mới phiếu xuất vật liệu thành công' ,
407
			N'Thêm mới phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
408
		)
409

    
410
COMMIT TRANSACTION;
411
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
412
RETURN '0';
413
ABORT:
414
BEGIN
415
    CLOSE XmlData;
416
    DEALLOCATE XmlData;
417
    ROLLBACK TRANSACTION;
418
    SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
419
    RETURN '-1';
420
END;
421

    
422
GO
423

    
424

    
425
ALTER   PROCEDURE [dbo].[MW_OUT_Upd]
426
    @p_OUT_ID VARCHAR(15) = NULL,
427
    @p_TRN_Date VARCHAR(25) = NULL,
428
    @p_TRN_TIME VARCHAR(50) = NULL,
429
    @p_BRN_ID VARCHAR(15) = NULL,
430
    @p_DEPT_ID VARCHAR(15) = NULL,
431
    @p_QTY DECIMAL(18,2) = NULL,
432
    @p_PRICE NUMERIC(18, 0) = NULL,
433
    @p_TOTAL_AMT NUMERIC(18, 2) = NULL,
434
    @p_NOTES NVARCHAR(1000),
435
    @p_OUT_DESC NVARCHAR(500) = NULL,
436
    @p_AUTH_STATUS VARCHAR(1) = NULL,
437
    @p_MAKER_ID VARCHAR(15) = NULL,
438
    @p_CREATE_DT VARCHAR(25) = NULL,
439
    @p_CHECKER_ID VARCHAR(15) = NULL,
440
    @p_APPROVE_DT VARCHAR(25) = NULL,
441
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
442
    @p_KT_MAKER_ID VARCHAR(15) = NULL,
443
    @p_KT_CREATE_DT VARCHAR(25) = NULL,
444
    @p_KT_CHECKER_ID VARCHAR(15) = NULL,
445
    @p_KT_APPROVE_DT VARCHAR(25) = NULL,
446
    @p_RECORD_STATUS VARCHAR(1) = NULL,
447
    @p_XmlData XML = NULL,
448
	@p_CORE_NOTE nvarchar(500) = NULL,
449
	@p_WARE_HOUSE VARCHAR(15) = NULL
450
AS
451
DECLARE
452
    --DVSD
453
    @OUT_ID VARCHAR(15) = NULL,
454
    @MAST_BAL_ID VARCHAR(15) = NULL,
455
    @CUST_NAME NVARCHAR(200) = NULL,
456
    @QTY DECIMAL(18,2) = NULL,
457
	@QTY_OLD DECIMAL(18,2) = NULL,
458
    @PRICE NUMERIC(18, 0) = NULL,
459
    @TOTAL_AMT NUMERIC(18, 2) = NULL,
460
    @NOTES NVARCHAR(1000) = NULL,
461
	@TO_BRN_ID varchar(15) = NULL,
462
    @TO_DEPT_ID varchar(15) = NULL,
463
	@EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
464
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
465
	@COST_ACC VARCHAR(50) = NULL
466
DECLARE @INDEX INT =0
467
DECLARE @PRICE_CODE VARCHAR(30)
468
DECLARE @hdoc INT;
469
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
470
DECLARE XmlData CURSOR FOR
471
SELECT *
472
FROM
473
    OPENXML(@hdoc, '/Root/XmlData', 2)
474
    WITH
475
    (
476
        OUT_ID VARCHAR(15),
477
        MAST_BAL_ID VARCHAR(15),
478
        --FR_BRN_ID varchar(15) ,
479
        --FR_DEPT_ID varchar(15) ,
480
        --FR_PRICE_ID varchar(15) ,
481
        --TO_BRN_ID varchar(15) ,
482
        --TO_DEPT_ID varchar(15) ,
483
        CUST_NAME NVARCHAR(200),
484
        QTY DECIMAL(18,2),
485
        QTY_OLD DECIMAL(18,2) ,
486
        PRICE NUMERIC(18, 0),
487
        TOTAL_AMT NUMERIC(18, 2),
488
        NOTES NVARCHAR(1000),
489
		TO_BRN_ID varchar(15),
490
		TO_DEPT_ID varchar(15),
491
		EVENT_NAME NVARCHAR(1000),
492
		IS_BCT VARCHAR(1),-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
493
		COST_ACC VARCHAR(50)
494
    );
495
OPEN XmlData;
496
BEGIN TRANSACTION;
497
UPDATE [dbo].[MW_OUT]
498
SET 
499
    [QTY] = @p_QTY,
500
	AUTH_STATUS='U',
501
    [PRICE] = @p_PRICE,
502
    [TOTAL_AMT] = @p_TOTAL_AMT,
503
    [NOTES] = @p_NOTES,
504
	MAKER_ID=@p_MAKER_ID,
505
	[CORE_NOTE] = @p_CORE_NOTE,
506
	WARE_HOUSE=  @p_WARE_HOUSE,DEPT_ID = @p_DEPT_ID
507
WHERE [OUT_ID] = @p_OUT_ID;
508
IF @@Error <> 0
509
    GOTO ABORT;
510
--Insert XmlData
511
DECLARE @l_COST_ACC VARCHAR(50);
512
DELETE FROM MW_OUT_DT
513
WHERE OUT_ID = @p_OUT_ID;
514
FETCH NEXT FROM XmlData
515
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
516
WHILE @@FETCH_STATUS = 0
517
BEGIN
518
	SET @INDEX = @INDEX +1
519
	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))
520

    
521
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
522
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
523
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
524
														WHEN A.PRICE_ID = 'MWPRICE00251577' then @COST_ACC
525
														ELSE MT.EXP_ACCTNO
526
														END 
527
						FROM dbo.MW_MAST_BAL A
528
						LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
529
						WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
530

    
531
	IF(@COST_ACC IS NULL OR @COST_ACC = '')
532
		BEGIN
533
			ROLLBACK TRANSACTION
534
			CLOSE XmlData;
535
			DEALLOCATE XmlData;
536
			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
537
			RETURN '-1'
538
		END
539
	IF(@l_COST_ACC <> @COST_ACC)
540
		BEGIN
541
			ROLLBACK TRANSACTION
542
			CLOSE XmlData;
543
			DEALLOCATE XmlData;
544
			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
545
			RETURN '-1'
546
		END	
547
	--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
548
	--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')))
549
	--BEGIN
550
	--	CLOSE XmlData;
551
	--	DEALLOCATE XmlData;
552
	--	ROLLBACK TRANSACTION;
553
	--	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;
554
	--	RETURN '-1';
555
	--END
556
	----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
557
	--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')))
558
	--BEGIN
559
	--	CLOSE XmlData;
560
	--	DEALLOCATE XmlData;
561
	--	ROLLBACK TRANSACTION;
562
	--	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;
563
	--	RETURN '-1';
564
	--END
565
	----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
566
	--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')))
567
	--BEGIN
568
	--	CLOSE XmlData;
569
	--	DEALLOCATE XmlData;
570
	--	ROLLBACK TRANSACTION;
571
	--	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;
572
	--	RETURN '-1';
573
	--END
574
	-- 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)
575

    
576
	-- 22/04/2022 doanptt
577
	IF(@QTY > @QTY_OLD)
578
	BEGIN
579
		CLOSE XmlData
580
		DEALLOCATE XmlData
581
		ROLLBACK TRANSACTION
582
		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
583
		RETURN '-1'
584
	END
585

    
586
    DECLARE @p_OUT_DT_ID VARCHAR(15);
587
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
588
    IF @p_OUT_DT_ID = ''
589
       OR @p_OUT_DT_ID IS NULL
590
        GOTO ABORT;
591
    INSERT INTO [dbo].[MW_OUT_DT]
592
    (
593
        [OUT_DT_ID],
594
        [OUT_ID],
595
        [MAST_BAL_ID],
596
        [CUST_NAME],
597
        [QTY],
598
		[QTY_OLD],
599
        [PRICE],
600
        [TOTAL_AMT],
601
        [NOTES],
602
		[TO_BRN_ID],
603
		[TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC]
604
    )
605
    SELECT @p_OUT_DT_ID,
606
           @p_OUT_ID,
607
           @MAST_BAL_ID,
608
           @CUST_NAME,
609
           @QTY,
610
		   @QTY_OLD,
611
           @PRICE,
612
           @QTY*@PRICE,
613
           @NOTES,
614
		   @TO_BRN_ID,
615
		   @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
616

    
617
    IF @@Error <> 0
618
        GOTO ABORT;
619
    FETCH NEXT FROM XmlData
620
    INTO @OUT_ID,
621
         @MAST_BAL_ID,
622
         @CUST_NAME,
623
         @QTY,
624
		 @QTY_OLD,
625
         @PRICE,
626
         @TOTAL_AMT,
627
         @NOTES,
628
		 @TO_BRN_ID,
629
		 @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
630
END;
631
CLOSE XmlData;
632
DEALLOCATE XmlData;
633

    
634
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
635
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @OUT_ID AND PROCESS_ID = 'UPDATE_HC'
636
		INSERT INTO dbo.PL_PROCESS
637
		(
638
			REQ_ID,
639
			PROCESS_ID,
640
			CHECKER_ID,
641
			APPROVE_DT,
642
			PROCESS_DESC,NOTES
643
		)
644
		VALUES
645
		(   @OUT_ID,        -- REQ_ID - varchar(15)
646
			'UPDATE_HC',        -- PROCESS_ID - varchar(10)
647
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
648
			GETDATE(), -- APPROVE_DT - datetime
649
			N'Cập nhật phiếu xuất vật liệu thành công' ,
650
			N'Cập nhật phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
651
		)
652

    
653
---
654
UPDATE MW_OUT
655
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
656
WHERE OUT_ID =@p_OUT_ID
657
COMMIT TRANSACTION;
658
SELECT '0' AS Result,@p_OUT_ID OUT_ID,'' ErrorDesc;
659
RETURN '0';
660
ABORT:
661
BEGIN
662
    CLOSE XmlData;
663
    DEALLOCATE XmlData;
664
    ROLLBACK TRANSACTION;
665
    SELECT '-1' AS Result,'' OUT_ID,'' ErrorDesc;
666
    RETURN '-1';
667
END;
668

    
669
GO
670

    
671
--18072023_secretkey