Project

General

Profile

script_mw.txt

Luc Tran Van, 11/29/2022 02:34 PM

 
1
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,
2
    @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,
3
    @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,
4
    @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,
5
    @p_KT_APPROVE_DT VARCHAR(25)=NULL, @p_RECORD_STATUS VARCHAR(1) =NULL, @p_XmlData XML=NULL, @p_CORE_NOTE NVARCHAR(500) =NULL,
6
    @p_BRANCH_CREATE VARCHAR(15) =NULL,@p_WARE_HOUSE VARCHAR(15) = NULL
7
AS
8
DECLARE
9
    --DVSD
10
    --@OUT_DT_ID varchar(15),
11
	@p_OUT_CODE NVARCHAR(100) = NULL,
12
    @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,
13
    @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,
14
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
15
	@COST_ACC VARCHAR(50) = NULL
16
DECLARE @INDEX INT =0
17
DECLARE @PRICE_CODE VARCHAR(30)
18
DECLARE @hdoc INT;
19
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
20
DECLARE XmlData CURSOR FOR
21
SELECT *
22
FROM
23
    OPENXML(@hdoc, '/Root/XmlData', 2)
24
    WITH(OUT_ID VARCHAR(15), MAST_BAL_ID VARCHAR(15),
25
    CUST_NAME NVARCHAR(200), QTY DECIMAL(18,2), QTY_OLD DECIMAL(18,2),
26
    PRICE NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000),
27
	TO_BRN_ID VARCHAR(15), TO_DEPT_ID VARCHAR(15),EVENT_NAME NVARCHAR(1000),IS_BCT VARCHAR(1),COST_ACC VARCHAR(50))
28
OPEN XmlData;
29

    
30
BEGIN TRANSACTION;
31
	DECLARE @p_OUT_ID VARCHAR(15), @l_COST_ACC VARCHAR(50);
32
	EXEC [MW_OUT_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_OUT_CODE OUT;
33

    
34
	EXEC SYS_CodeMasters_Gen 'MW_OUT', @p_OUT_ID OUT;
35
	IF @p_OUT_ID='' OR @p_OUT_ID IS NULL GOTO ABORT;
36

    
37
	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],
38
	[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],
39
	[BRANCH_CREATE],[WARE_HOUSE],[OUT_CODE])
40
	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',
41
		@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;
42
	IF @@error<>0 GOTO ABORT;
43
	--Insert XmlData
44
	FETCH NEXT FROM XmlData
45
	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
46
	WHILE @@fetch_status=0 BEGIN
47
		SET @INDEX = @INDEX+1
48
		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))
49

    
50
		SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
51
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
52
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
53
														ELSE MT.EXP_ACCTNO
54
														END 
55
		FROM dbo.MW_MAST_BAL A
56
		LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
57
		WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
58

    
59
		IF(@l_COST_ACC <> @COST_ACC)
60
		BEGIN
61
			ROLLBACK TRANSACTION
62
			CLOSE XmlData;
63
			DEALLOCATE XmlData;
64
			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
65
			RETURN '-1'
66
		END	
67

    
68
		IF(@COST_ACC IS NULL OR @COST_ACC = '')
69
		BEGIN
70
			ROLLBACK TRANSACTION
71
			CLOSE XmlData;
72
			DEALLOCATE XmlData;
73
			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
74
			RETURN '-1'
75
		END	
76
		--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
77
		--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)))
78
		--BEGIN
79
		--	CLOSE XmlData;
80
		--	DEALLOCATE XmlData;
81
		--	ROLLBACK TRANSACTION;
82
		--	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;
83
		--	RETURN '-1';
84
		--END
85
		----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
86
		--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')))
87
		--BEGIN
88
		--	CLOSE XmlData;
89
		--	DEALLOCATE XmlData;
90
		--	ROLLBACK TRANSACTION;
91
		--	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;
92
		--	RETURN '-1';
93
		--END
94
		----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
95
		--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')))
96
		--BEGIN
97
		--	CLOSE XmlData;
98
		--	DEALLOCATE XmlData;
99
		--	ROLLBACK TRANSACTION;
100
		--	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;
101
		--	RETURN '-1';
102
		--END
103
		---- 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)
104
		
105
		-- 22/04/2022 doanptt dòng 124-131 không chính xác, cần xác nhận lại
106
		IF(@QTY > @QTY_OLD)
107
		BEGIN
108
			CLOSE XmlData
109
			DEALLOCATE XmlData
110
			ROLLBACK TRANSACTION
111
			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
112
			RETURN '-1'
113
		END
114

    
115
		IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
116
		BEGIN
117
			CLOSE XmlData
118
			DEALLOCATE XmlData
119
			ROLLBACK TRANSACTION
120
			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
121
			RETURN '-1'
122
		END
123
		--END
124
		DECLARE @p_OUT_DT_ID VARCHAR(15);
125
		EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
126
		IF @p_OUT_DT_ID='' OR @p_OUT_DT_ID IS NULL GOTO ABORT;
127
		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])
128
		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
129

    
130
		--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])
131
		--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)
132
		IF @@error<>0 GOTO ABORT;
133
		FETCH NEXT FROM XmlData
134
		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
135
END;
136
CLOSE XmlData;
137
DEALLOCATE XmlData;
138
UPDATE MW_OUT
139
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
140
WHERE OUT_ID =@p_OUT_ID
141

    
142
-- doanptt 12/07/2022: Thêm process
143
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_OUT_ID AND PROCESS_ID = 'INSERT'
144
		INSERT INTO dbo.PL_PROCESS
145
		(
146
			REQ_ID,
147
			PROCESS_ID,
148
			CHECKER_ID,
149
			APPROVE_DT,
150
			PROCESS_DESC,NOTES
151
		)
152
		VALUES
153
		(   @p_OUT_ID,        -- REQ_ID - varchar(15)
154
			'INSERT',        -- PROCESS_ID - varchar(10)
155
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
156
			GETDATE(), -- APPROVE_DT - datetime
157
			N'Thêm mới phiếu xuất vật liệu thành công' ,
158
			N'Thêm mới phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
159
		)
160

    
161
COMMIT TRANSACTION;
162
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
163
RETURN '0';
164
ABORT:
165
BEGIN
166
    CLOSE XmlData;
167
    DEALLOCATE XmlData;
168
    ROLLBACK TRANSACTION;
169
    SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
170
    RETURN '-1';
171
END;
172

    
173
GO
174

    
175

    
176
ALTER   PROCEDURE [dbo].[MW_OUT_Upd]
177
    @p_OUT_ID VARCHAR(15) = NULL,
178
    @p_TRN_Date VARCHAR(25) = NULL,
179
    @p_TRN_TIME VARCHAR(50) = NULL,
180
    @p_BRN_ID VARCHAR(15) = NULL,
181
    @p_DEPT_ID VARCHAR(15) = NULL,
182
    @p_QTY DECIMAL(18,2) = NULL,
183
    @p_PRICE NUMERIC(18, 0) = NULL,
184
    @p_TOTAL_AMT NUMERIC(18, 2) = NULL,
185
    @p_NOTES NVARCHAR(1000),
186
    @p_OUT_DESC NVARCHAR(500) = NULL,
187
    @p_AUTH_STATUS VARCHAR(1) = NULL,
188
    @p_MAKER_ID VARCHAR(15) = NULL,
189
    @p_CREATE_DT VARCHAR(25) = NULL,
190
    @p_CHECKER_ID VARCHAR(15) = NULL,
191
    @p_APPROVE_DT VARCHAR(25) = NULL,
192
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
193
    @p_KT_MAKER_ID VARCHAR(15) = NULL,
194
    @p_KT_CREATE_DT VARCHAR(25) = NULL,
195
    @p_KT_CHECKER_ID VARCHAR(15) = NULL,
196
    @p_KT_APPROVE_DT VARCHAR(25) = NULL,
197
    @p_RECORD_STATUS VARCHAR(1) = NULL,
198
    @p_XmlData XML = NULL,
199
	@p_CORE_NOTE nvarchar(500) = NULL,
200
	@p_WARE_HOUSE VARCHAR(15) = NULL
201
AS
202
DECLARE
203
    --DVSD
204
    @OUT_ID VARCHAR(15) = NULL,
205
    @MAST_BAL_ID VARCHAR(15) = NULL,
206
    @CUST_NAME NVARCHAR(200) = NULL,
207
    @QTY DECIMAL(18,2) = NULL,
208
	@QTY_OLD DECIMAL(18,2) = NULL,
209
    @PRICE NUMERIC(18, 0) = NULL,
210
    @TOTAL_AMT NUMERIC(18, 2) = NULL,
211
    @NOTES NVARCHAR(1000) = NULL,
212
	@TO_BRN_ID varchar(15) = NULL,
213
    @TO_DEPT_ID varchar(15) = NULL,
214
	@EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
215
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
216
	@COST_ACC VARCHAR(50) = NULL
217
DECLARE @INDEX INT =0
218
DECLARE @PRICE_CODE VARCHAR(30)
219
DECLARE @hdoc INT;
220
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
221
DECLARE XmlData CURSOR FOR
222
SELECT *
223
FROM
224
    OPENXML(@hdoc, '/Root/XmlData', 2)
225
    WITH
226
    (
227
        OUT_ID VARCHAR(15),
228
        MAST_BAL_ID VARCHAR(15),
229
        --FR_BRN_ID varchar(15) ,
230
        --FR_DEPT_ID varchar(15) ,
231
        --FR_PRICE_ID varchar(15) ,
232
        --TO_BRN_ID varchar(15) ,
233
        --TO_DEPT_ID varchar(15) ,
234
        CUST_NAME NVARCHAR(200),
235
        QTY DECIMAL(18,2),
236
        QTY_OLD DECIMAL(18,2) ,
237
        PRICE NUMERIC(18, 0),
238
        TOTAL_AMT NUMERIC(18, 2),
239
        NOTES NVARCHAR(1000),
240
		TO_BRN_ID varchar(15),
241
		TO_DEPT_ID varchar(15),
242
		EVENT_NAME NVARCHAR(1000),
243
		IS_BCT VARCHAR(1),-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
244
		COST_ACC VARCHAR(50)
245
    );
246
OPEN XmlData;
247
BEGIN TRANSACTION;
248
UPDATE [dbo].[MW_OUT]
249
SET 
250
    [QTY] = @p_QTY,
251
	AUTH_STATUS='U',
252
    [PRICE] = @p_PRICE,
253
    [TOTAL_AMT] = @p_TOTAL_AMT,
254
    [NOTES] = @p_NOTES,
255
	MAKER_ID=@p_MAKER_ID,
256
	[CORE_NOTE] = @p_CORE_NOTE,
257
	WARE_HOUSE=  @p_WARE_HOUSE,DEPT_ID = @p_DEPT_ID
258
WHERE [OUT_ID] = @p_OUT_ID;
259
IF @@Error <> 0
260
    GOTO ABORT;
261
--Insert XmlData
262
DECLARE @l_COST_ACC VARCHAR(50);
263
DELETE FROM MW_OUT_DT
264
WHERE OUT_ID = @p_OUT_ID;
265
FETCH NEXT FROM XmlData
266
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
267
WHILE @@FETCH_STATUS = 0
268
BEGIN
269
	SET @INDEX = @INDEX +1
270
	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))
271

    
272
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
273
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
274
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
275
														ELSE MT.EXP_ACCTNO
276
														END 
277
						FROM dbo.MW_MAST_BAL A
278
						LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
279
						WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
280

    
281
	IF(@COST_ACC IS NULL OR @COST_ACC = '')
282
		BEGIN
283
			ROLLBACK TRANSACTION
284
			CLOSE XmlData;
285
			DEALLOCATE XmlData;
286
			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
287
			RETURN '-1'
288
		END
289
	IF(@l_COST_ACC <> @COST_ACC)
290
		BEGIN
291
			ROLLBACK TRANSACTION
292
			CLOSE XmlData;
293
			DEALLOCATE XmlData;
294
			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
295
			RETURN '-1'
296
		END	
297
	--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
298
	--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')))
299
	--BEGIN
300
	--	CLOSE XmlData;
301
	--	DEALLOCATE XmlData;
302
	--	ROLLBACK TRANSACTION;
303
	--	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;
304
	--	RETURN '-1';
305
	--END
306
	----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
307
	--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')))
308
	--BEGIN
309
	--	CLOSE XmlData;
310
	--	DEALLOCATE XmlData;
311
	--	ROLLBACK TRANSACTION;
312
	--	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;
313
	--	RETURN '-1';
314
	--END
315
	----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
316
	--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')))
317
	--BEGIN
318
	--	CLOSE XmlData;
319
	--	DEALLOCATE XmlData;
320
	--	ROLLBACK TRANSACTION;
321
	--	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;
322
	--	RETURN '-1';
323
	--END
324
	-- 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)
325

    
326
	-- 22/04/2022 doanptt
327
	IF(@QTY > @QTY_OLD)
328
	BEGIN
329
		CLOSE XmlData
330
		DEALLOCATE XmlData
331
		ROLLBACK TRANSACTION
332
		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
333
		RETURN '-1'
334
	END
335

    
336
    DECLARE @p_OUT_DT_ID VARCHAR(15);
337
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
338
    IF @p_OUT_DT_ID = ''
339
       OR @p_OUT_DT_ID IS NULL
340
        GOTO ABORT;
341
    INSERT INTO [dbo].[MW_OUT_DT]
342
    (
343
        [OUT_DT_ID],
344
        [OUT_ID],
345
        [MAST_BAL_ID],
346
        [CUST_NAME],
347
        [QTY],
348
		[QTY_OLD],
349
        [PRICE],
350
        [TOTAL_AMT],
351
        [NOTES],
352
		[TO_BRN_ID],
353
		[TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC]
354
    )
355
    SELECT @p_OUT_DT_ID,
356
           @p_OUT_ID,
357
           @MAST_BAL_ID,
358
           @CUST_NAME,
359
           @QTY,
360
		   @QTY_OLD,
361
           @PRICE,
362
           @QTY*@PRICE,
363
           @NOTES,
364
		   @TO_BRN_ID,
365
		   @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
366

    
367
    IF @@Error <> 0
368
        GOTO ABORT;
369
    FETCH NEXT FROM XmlData
370
    INTO @OUT_ID,
371
         @MAST_BAL_ID,
372
         @CUST_NAME,
373
         @QTY,
374
		 @QTY_OLD,
375
         @PRICE,
376
         @TOTAL_AMT,
377
         @NOTES,
378
		 @TO_BRN_ID,
379
		 @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
380
END;
381
CLOSE XmlData;
382
DEALLOCATE XmlData;
383

    
384
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
385
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @OUT_ID AND PROCESS_ID = 'UPDATE_HC'
386
		INSERT INTO dbo.PL_PROCESS
387
		(
388
			REQ_ID,
389
			PROCESS_ID,
390
			CHECKER_ID,
391
			APPROVE_DT,
392
			PROCESS_DESC,NOTES
393
		)
394
		VALUES
395
		(   @OUT_ID,        -- REQ_ID - varchar(15)
396
			'UPDATE_HC',        -- PROCESS_ID - varchar(10)
397
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
398
			GETDATE(), -- APPROVE_DT - datetime
399
			N'Cập nhật phiếu xuất vật liệu thành công' ,
400
			N'Cập nhật phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
401
		)
402

    
403
---
404
UPDATE MW_OUT
405
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
406
WHERE OUT_ID =@p_OUT_ID
407
COMMIT TRANSACTION;
408
SELECT '0' AS Result,@p_OUT_ID OUT_ID,'' ErrorDesc;
409
RETURN '0';
410
ABORT:
411
BEGIN
412
    CLOSE XmlData;
413
    DEALLOCATE XmlData;
414
    ROLLBACK TRANSACTION;
415
    SELECT '-1' AS Result,'' OUT_ID,'' ErrorDesc;
416
    RETURN '-1';
417
END;
418

    
419
GO
420

    
421

    
422
ALTER   PROCEDURE [dbo].[MW_TRANSFER_Ins]
423
    @p_TRN_DATE VARCHAR(20) = NULL,
424
    @p_TRN_TIME VARCHAR(50) = NULL,
425
    @p_QTY DECIMAL(18,2) = NULL,
426
    @p_PRICE NUMERIC(18, 0) = NULL,
427
    @p_TOTAL_AMT NUMERIC(18, 2) = NULL,
428
    @p_NOTES NVARCHAR(1000) = NULL,
429
    @p_AUTH_STATUS VARCHAR(1) = NULL,
430
    @p_MAKER_ID VARCHAR(15) = NULL,
431
    @p_CREATE_DT VARCHAR(20) = NULL,
432
    @p_CHECKER_ID VARCHAR(15) = NULL,
433
    @p_APPROVE_DT VARCHAR(20) = NULL,
434
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
435
    @p_KT_MAKER_ID VARCHAR(15) = NULL,
436
    @p_KT_CREATE_DT VARCHAR(20) = NULL,
437
    @p_KT_CHECKER_ID VARCHAR(15) = NULL,
438
    @p_KT_APPROVE_DT VARCHAR(20) = NULL,
439
    @p_RECORD_STATUS VARCHAR(1) = NULL,
440
    @p_FRM_BRANCH_ID VARCHAR(15) = NULL,
441
    @p_FRM_DEPT_ID VARCHAR(15) = NULL,
442
    @p_XmlData XML = NULL,
443
    @p_BRANCH_CREATE VARCHAR(15) = NULL,
444
	@p_WARE_HOUSE VARCHAR(15) = NULL
445
AS
446
DECLARE
447
    --DVSD
448
	@p_TRANSFER_CODE NVARCHAR(100) =NULL,
449
    @TRANSFER_ID VARCHAR(15) = NULL,
450
    @MAST_BAL_ID VARCHAR(15) = NULL,
451
    @FR_BRN_ID VARCHAR(15) = NULL,
452
    @FR_DEPT_ID VARCHAR(15) = NULL,
453
    @FR_PRICE_ID VARCHAR(15) = NULL,
454
    @TO_BRN_ID VARCHAR(15) = NULL,
455
    @TO_DEPT_ID VARCHAR(15) = 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
	@COST_ACC VARCHAR(50) = NULL;
462
DECLARE @hdoc INT;
463
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
464
DECLARE XmlData CURSOR FOR
465
SELECT *
466
FROM
467
    OPENXML (@hdoc, '/Root/XmlData', 2)
468
    WITH (TRANSFER_ID VARCHAR (15),
469
          MAST_BAL_ID VARCHAR (15),
470
          FR_BRN_ID VARCHAR (15),
471
          FR_DEPT_ID VARCHAR (15),
472
          FR_PRICE_ID VARCHAR (15),
473
          TO_BRN_ID VARCHAR (15),
474
          TO_DEPT_ID VARCHAR (15),
475
          QTY DECIMAL(18,2),
476
          QTY_OLD DECIMAL(18,2),
477
          PRICE NUMERIC (18, 2),
478
          TOTAL_AMT NUMERIC (18, 2),
479
          NOTES NVARCHAR (1000),
480
		  COST_ACC VARCHAR(50)
481
		  );
482
OPEN XmlData;
483
BEGIN TRANSACTION;
484
DECLARE @p_TRANSFER_ID VARCHAR(15);
485
EXEC [MW_TRANSFER_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_TRANSFER_CODE OUT;
486
EXEC SYS_CodeMasters_Gen 'MW_TRANSFER', @p_TRANSFER_ID OUT;
487
IF @p_TRANSFER_ID = '' OR @p_TRANSFER_ID IS NULL
488
    GOTO ABORT;
489
INSERT INTO [dbo].[MW_TRANSFER]
490
(
491
    [TRANSFER_ID],
492
    [TRN_DATE],
493
    [TRN_TIME],
494
    [QTY],
495
    [PRICE],
496
    [TOTAL_AMT],
497
    [NOTES],
498
    [AUTH_STATUS],
499
    [MAKER_ID],
500
    [CREATE_DT],
501
    [CHECKER_ID],
502
    [APPROVE_DT],
503
    [KT_AUTH_STATUS],
504
    [KT_MAKER_ID],
505
    [KT_CREATE_DT],
506
    [KT_CHECKER_ID],
507
    [KT_APPROVE_DT],
508
    [RECORD_STATUS],
509
    [FR_BRN_ID],
510
    FR_DEPT_ID,
511
    CORE_NOTE,
512
	BRANCH_CREATE, WARE_HOUSE,TRANSFER_CODE
513
)
514
SELECT @p_TRANSFER_ID,
515
       CONVERT (DATETIME, GETDATE(), 103),
516
       CONVERT (DATE, @p_TRN_TIME, 103),
517
       @p_QTY,
518
       ROUND(@p_PRICE,0),
519
       @p_TOTAL_AMT,
520
       @p_NOTES,
521
       'U',
522
       @p_MAKER_ID,
523
       CONVERT (DATETIME, GETDATE (), 0),
524
       NULL,
525
       NULL,
526
       'U',
527
       NULL,
528
       NULL,
529
       NULL,
530
       NULL,
531
       '1',
532
       @p_FRM_BRANCH_ID,
533
       @p_FRM_DEPT_ID,
534
       '',
535
	   @p_BRANCH_CREATE,@p_WARE_HOUSE,@p_TRANSFER_CODE;
536
IF @@Error <> 0
537
    GOTO ABORT;
538
--Insert XmlData
539
FETCH NEXT FROM XmlData
540
INTO @TRANSFER_ID,
541
     @MAST_BAL_ID,
542
     @FR_BRN_ID,
543
     @FR_DEPT_ID,
544
     @FR_PRICE_ID,
545
     @TO_BRN_ID,
546
     @TO_DEPT_ID,
547
     @QTY,
548
     @QTY_OLD,
549
     @PRICE,
550
     @TOTAL_AMT,
551
     @NOTES,
552
	 @COST_ACC;
553
DECLARE @INDEX INT =0
554
DECLARE @PRICE_CODE VARCHAR(30)
555
--LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO
556
DECLARE @BRANCH_TYPE_CRE VARCHAR(15), @l_COST_ACC VARCHAR(50);
557
--END LUCTV
558
WHILE @@FETCH_STATUS = 0
559
BEGIN
560
	SET @INDEX = @INDEX +1
561
	SET @PRICE_CODE = (SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID=@FR_PRICE_ID)
562

    
563
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
564
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
565
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
566
														ELSE MT.EXP_ACCTNO
567
														END 
568
						FROM dbo.MW_MAST_BAL A
569
						LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
570
						WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
571
	IF(@l_COST_ACC <> @COST_ACC)
572
		BEGIN
573
			ROLLBACK TRANSACTION
574
			CLOSE XmlData;
575
			DEALLOCATE XmlData;
576
			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
577
			RETURN '-1'
578
		END	
579

    
580
		IF(@COST_ACC IS NULL OR @COST_ACC = '')
581
		BEGIN
582
			ROLLBACK TRANSACTION
583
			CLOSE XmlData;
584
			DEALLOCATE XmlData;
585
			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
586
			RETURN '-1'
587
		END
588

    
589
	IF(@QTY > @QTY_OLD)
590
	BEGIN
591
		ROLLBACK TRANSACTION
592
		CLOSE XmlData;
593
		DEALLOCATE XmlData;
594
		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': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
595
		RETURN '-1'
596
	END
597
	--LUCTV: KIEM TRA XEM MAST_BAL_ID CO DANG DIEU CHUYEN CHO DON VI NAO KHAC HAY KHONG 29-11-2018
598
	--IF(EXISTS (SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID <>@p_TRANSFER_ID
599
	--AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE AUTH_STATUS IS NOT NULL AND KT_AUTH_STATUS <>'' AND KT_AUTH_STATUS <>'A' AND RECORD_STATUS ='1')))
600
	--BEGIN
601
	--	CLOSE XmlData;
602
	--	DEALLOCATE XmlData;
603
	--	ROLLBACK TRANSACTION;
604
	--	SELECT '-1' AS Result,
605
	--		   '' TRANSFER_ID,
606
	--		   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 điều chuyển mới!'ErrorDesc;
607
	--	RETURN '-1';
608
	--END
609
	----LUCTV: 09-04-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
610
	--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' AND TRANSFER_ID <>@p_TRANSFER_ID)))
611
	--BEGIN
612
	--	CLOSE XmlData;
613
	--	DEALLOCATE XmlData;
614
	--	ROLLBACK TRANSACTION;
615
	--	SELECT '-1' AS Result, '' TRANSFER_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;
616
	--	RETURN '-1';
617
	--END
618
	----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
619
	--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')))
620
	--BEGIN
621
	--	CLOSE XmlData;
622
	--	DEALLOCATE XmlData;
623
	--	ROLLBACK TRANSACTION;
624
	--	SELECT '-1' AS Result, '' TRANSFER_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;
625
	--	RETURN '-1';
626
	--END
627
	----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
628
	--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')))
629
	--BEGIN
630
	--	CLOSE XmlData;
631
	--	DEALLOCATE XmlData;
632
	--	ROLLBACK TRANSACTION;
633
	--	SELECT '-1' AS Result, '' TRANSFER_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;
634
	--	RETURN '-1';
635
	--END
636
	----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)
637

    
638
	-- LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO
639
	SET @BRANCH_TYPE_CRE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
640
	--IF(@BRANCH_TYPE_CRE IN ('PGD','CN') AND @p_BRANCH_CREATE =@TO_BRN_ID)
641
	IF(@p_BRANCH_CREATE =@TO_BRN_ID) -- DuyTN
642
	BEGIN
643
		CLOSE XmlData
644
		DEALLOCATE XmlData
645
		ROLLBACK TRANSACTION
646
		SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': CN và PGD không được phép điều chuyển vật liệu về chính CN, PGD đang tạo phiếu điều chuyển vật liệu' ErrorDesc
647
		RETURN '-1'
648
	END
649
	-----
650
	IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
651
	BEGIN
652
		CLOSE XmlData
653
		DEALLOCATE XmlData
654
		ROLLBACK TRANSACTION
655
		SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
656
		RETURN '-1'
657
	END
658
    DECLARE @p_TRANSFER_DT_ID VARCHAR(15);
659
    EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID OUT;
660
    IF @p_TRANSFER_DT_ID = '' OR @p_TRANSFER_DT_ID IS NULL
661
        GOTO ABORT;
662
    INSERT INTO [dbo].[MW_TRANSFER_DT]
663
    (
664
        [TRANSFER_DT_ID], [TRANSFER_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], [COST_ACC]
665
    )
666
    VALUES
667
    (@p_TRANSFER_DT_ID, @p_TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @QTY*@PRICE, @NOTES, @COST_ACC);
668
    IF @@Error <> 0
669
        GOTO ABORT;
670
    FETCH NEXT FROM XmlData
671
    INTO @TRANSFER_ID,
672
         @MAST_BAL_ID,
673
         @FR_BRN_ID,
674
         @FR_DEPT_ID,
675
         @FR_PRICE_ID,
676
         @TO_BRN_ID,
677
         @TO_DEPT_ID,
678
         @QTY,
679
         @QTY_OLD,
680
         @PRICE,
681
         @TOTAL_AMT,
682
         @NOTES,
683
		 @COST_ACC;
684
END;
685
CLOSE XmlData;
686
DEALLOCATE XmlData;
687

    
688
-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
689
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_TRANSFER_ID AND PROCESS_ID = 'INSERT'
690
		INSERT INTO dbo.PL_PROCESS
691
		(
692
			REQ_ID,
693
			PROCESS_ID,
694
			CHECKER_ID,
695
			APPROVE_DT,
696
			PROCESS_DESC,NOTES
697
		)
698
		VALUES
699
		(   @p_TRANSFER_ID,        -- REQ_ID - varchar(15)
700
			'INSERT',        -- PROCESS_ID - varchar(10)
701
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
702
			GETDATE(), -- APPROVE_DT - datetime
703
			N'Thêm mới phiếu điều chuyển vật liệu thành công' ,
704
			N'Thêm mới phiếu điều chuyển vật liệu'      -- PROCESS_DESC - nvarchar(1000)
705
		)
706

    
707
COMMIT TRANSACTION;
708
SELECT '0' AS Result,
709
       @p_TRANSFER_ID TRANSFER_ID,
710
	   @p_TRANSFER_CODE TRANSFER_CODE,
711
       '' ErrorDesc;
712
RETURN '0';
713
ABORT:
714
BEGIN
715
    CLOSE XmlData;
716
    DEALLOCATE XmlData;
717
    ROLLBACK TRANSACTION;
718
    SELECT '-1' AS Result,
719
           '' TRANSFER_ID,
720
           '' ErrorDesc;
721
    RETURN '-1';
722
END;
723

    
724
GO
725

    
726

    
727
ALTER   PROCEDURE [dbo].[MW_TRANSFER_Upd]
728
    @p_TRANSFER_ID varchar(15) = NULL,
729
    @p_TRN_DATE VARCHAR(20) = NULL,
730
    @p_TRN_TIME varchar(50) = NULL,
731
    @p_QTY DECIMAL(18,2) = NULL,
732
    @p_PRICE NUMERIC(18, 0) = NULL,
733
    @p_TOTAL_AMT numeric(18, 2) = NULL,
734
    @p_NOTES nvarchar(1000) = NULL,
735
    @p_AUTH_STATUS varchar(1) = NULL,
736
    @p_MAKER_ID varchar(15) = NULL,
737
    @p_CREATE_DT VARCHAR(20) = NULL,
738
    @p_CHECKER_ID varchar(15) = NULL,
739
    @p_APPROVE_DT VARCHAR(20) = NULL,
740
    @p_KT_AUTH_STATUS varchar(1) = NULL,
741
    @p_KT_MAKER_ID varchar(15) = NULL,
742
    @p_KT_CREATE_DT VARCHAR(20) = NULL,
743
    @p_KT_CHECKER_ID varchar(15) = NULL,
744
    @p_KT_APPROVE_DT VARCHAR(20) = NULL,
745
	@p_RECORD_STATUS VARCHAR(1)= NULL,
746
	@p_FRM_BRANCH_ID VARCHAR(15) = NULL,
747
	@p_FRM_DEPT_ID VARCHAR(15) = NULL,
748
	@p_XmlData XML = NULL,
749
	@p_WARE_HOUSE VARCHAR(15) = NULL
750
AS
751
DECLARE 
752
		--DVSD
753
	@TRANSFER_ID varchar(15) = NULL,
754
    @MAST_BAL_ID varchar(15) = NULL,
755
    @FR_BRN_ID varchar(15) = NULL,
756
    @FR_DEPT_ID varchar(15) = NULL,
757
    @FR_PRICE_ID varchar(15) = NULL,
758
    @TO_BRN_ID varchar(15) = NULL,
759
    @TO_DEPT_ID varchar(15) = NULL,
760
    @QTY DECIMAL(18,2) = NULL,
761
    @QTY_OLD DECIMAL(18,2) = NULL,
762
    @PRICE NUMERIC(18, 0) = NULL,
763
    @TOTAL_AMT numeric(18, 2) = NULL,
764
    @NOTES nvarchar(1000) = NULL,
765
	@COST_ACC VARCHAR(20) = NULL
766
    Declare @hdoc INT
767
	Exec sp_xml_preparedocument @hdoc Output,@p_XmlData
768
	DECLARE XmlData CURSOR FOR
769
	SELECT *
770
	FROM OPENXML(@hDoc,'/Root/XmlData',2)
771
	WITH 
772
	(
773
		TRANSFER_ID varchar(15) ,
774
		MAST_BAL_ID varchar(15) ,
775
		FR_BRN_ID varchar(15) ,
776
		FR_DEPT_ID varchar(15) ,
777
		FR_PRICE_ID varchar(15) ,
778
		TO_BRN_ID varchar(15) ,
779
		TO_DEPT_ID varchar(15) ,
780
		QTY DECIMAL(18,2) ,
781
		QTY_OLD DECIMAL(18,2) ,
782
		PRICE NUMERIC(18, 0) ,
783
		TOTAL_AMT numeric(18, 2) ,
784
		NOTES nvarchar(1000) ,
785
		COST_ACC VARCHAR(20)
786
	)
787
	OPEN XmlData
788
        BEGIN TRANSACTION
789
        UPDATE [dbo].[MW_TRANSFER]
790
	    SET    [TRN_TIME] = CONVERT(DATE,@p_TRN_TIME,103), [QTY] = @p_QTY, [PRICE] = @p_PRICE,KT_MAKER_ID = NULL,AUTH_STATUS='U',
791
			   [TOTAL_AMT] = @p_TOTAL_AMT, [NOTES] = @p_NOTES,MAKER_ID = @p_MAKER_ID,FR_BRN_ID = @p_FRM_BRANCH_ID, FR_DEPT_ID = @p_FRM_DEPT_ID, WARE_HOUSE = @p_WARE_HOUSE
792

    
793
	    WHERE  [TRANSFER_ID] = @p_TRANSFER_ID
794
		IF @@Error <> 0 GOTO ABORT
795
		--Insert XmlData
796
		DECLARE @INDEX INT =0
797
		DECLARE @PRICE_CODE VARCHAR(30)
798
		--LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO
799
		DECLARE  @p_BRANCH_CREATE VARCHAR(15), @BRANCH_TYPE_CRE VARCHAR(15), @l_COST_ACC VARCHAR(50);
800
		SET @p_BRANCH_CREATE =(SELECT BRANCH_CREATE FROM MW_TRANSFER WHERE TRANSFER_ID =@p_TRANSFER_ID)
801
		--END LUCTV
802
		DELETE FROM MW_TRANSFER_DT WHERE TRANSFER_ID =@p_TRANSFER_ID
803
		FETCH NEXT FROM XmlData INTO  @TRANSFER_ID,
804
											@MAST_BAL_ID,
805
											@FR_BRN_ID,
806
											@FR_DEPT_ID,
807
											@FR_PRICE_ID,
808
											@TO_BRN_ID,
809
											@TO_DEPT_ID,
810
											@QTY ,
811
											@QTY_OLD,
812
											@PRICE,
813
											@TOTAL_AMT ,
814
											@NOTES,
815
											@COST_ACC
816
								WHILE @@FETCH_STATUS = 0
817
								BEGIN
818
								SET @INDEX = @INDEX +1
819
								SET @PRICE_CODE = (SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID=@FR_PRICE_ID)
820

    
821
								SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
822
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
823
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
824
														ELSE MT.EXP_ACCTNO
825
														END 
826
													FROM dbo.MW_MAST_BAL A
827
													LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
828
													WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
829

    
830
								IF(@l_COST_ACC <> @COST_ACC)
831
								BEGIN
832
									ROLLBACK TRANSACTION
833
									CLOSE XmlData;
834
									DEALLOCATE XmlData;
835
									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
836
									RETURN '-1'
837
								END	
838

    
839
								IF(@COST_ACC IS NULL OR @COST_ACC = '')
840
								BEGIN
841
									ROLLBACK TRANSACTION
842
									CLOSE XmlData;
843
									DEALLOCATE XmlData;
844
									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
845
									RETURN '-1'
846
								END
847

    
848
								IF(@QTY > @QTY_OLD)
849
								BEGIN
850
									ROLLBACK TRANSACTION
851
									CLOSE XmlData;
852
									DEALLOCATE XmlData;
853
									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': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
854
									RETURN '-1'
855
								END
856
								--LUCTV: KIEM TRA XEM MAST_BAL_ID CO DANG DIEU CHUYEN CHO DON VI NAO KHAC HAY KHONG 29-11-2018
857
								--IF(EXISTS (SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID <>@p_TRANSFER_ID
858
								--AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE AUTH_STATUS IS NOT NULL AND KT_AUTH_STATUS <>'' AND KT_AUTH_STATUS <>'A' AND RECORD_STATUS='1')))
859
								--BEGIN
860
								--	CLOSE XmlData;
861
								--	DEALLOCATE XmlData;
862
								--	ROLLBACK TRANSACTION;
863
								--	SELECT '-1' AS Result,
864
								--		   '' TRANSFER_ID,
865
								--		   '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 điều chuyển mới!'ErrorDesc;
866
								--	RETURN '-1';
867
								--END
868
								----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
869
								--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')))
870
								--BEGIN
871
								--	CLOSE XmlData;
872
								--	DEALLOCATE XmlData;
873
								--	ROLLBACK TRANSACTION;
874
								--	SELECT '-1' AS Result, '' TRANSFER_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;
875
								--	RETURN '-1';
876
								--END
877
								----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
878
								--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')))
879
								--BEGIN
880
								--	CLOSE XmlData;
881
								--	DEALLOCATE XmlData;
882
								--	ROLLBACK TRANSACTION;
883
								--	SELECT '-1' AS Result, '' TRANSFER_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;
884
								--	RETURN '-1';
885
								--END
886
								--KIEM TRA XEM SO LUONG TON CO DU CHO VIEC DIEU CHUYEN NAY HAY KHONG
887
								--IF(@QTY > (SELECT SUM(QTY_BALANCE) FROM MW_MAST_BAL WHERE PRICE_ID = @FR_PRICE_ID AND MAST_BAL_ID=@MAST_BAL_ID))
888
								--BEGIN
889
								--	CLOSE XmlData
890
								--	DEALLOCATE XmlData
891
								--	ROLLBACK TRANSACTION
892
								--	SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
893
								--	RETURN '-1'
894
								--END
895
								IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
896
								BEGIN
897
									CLOSE XmlData
898
									DEALLOCATE XmlData
899
									ROLLBACK TRANSACTION
900
									SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
901
									RETURN '-1'
902
								END
903
								-- LUCTV 03062020 DIEU CHINH THEO HOP DONG BAO HANH BAO TRI: KHONG CHO CN, PGD DIEU CHUYEN VAT LIEU DO CHINH MINH TAO
904
								SET @BRANCH_TYPE_CRE =(SELECT BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID =@p_BRANCH_CREATE)
905
								--IF(@BRANCH_TYPE_CRE IN ('PGD','CN') AND @p_BRANCH_CREATE =@TO_BRN_ID)
906
								IF(@p_BRANCH_CREATE =@TO_BRN_ID) -- Duy TN
907
								BEGIN
908
									CLOSE XmlData
909
									DEALLOCATE XmlData
910
									ROLLBACK TRANSACTION
911
									SELECT '-2' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': CN và PGD không được phép điều chuyển vật liệu về chính CN, PGD đang tạo phiếu điều chuyển vật liệu' ErrorDesc
912
									RETURN '-2'
913
								END
914
								DECLARE @p_TRANSFER_DT_ID VARCHAR(15)
915
								EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out
916
								IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT
917
								INSERT INTO [dbo].[MW_TRANSFER_DT] ([TRANSFER_DT_ID], [TRANSFER_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], COST_ACC)
918
								VALUES( @p_TRANSFER_DT_ID, @p_TRANSFER_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @QTY*@PRICE, @NOTES, @COST_ACC)
919
								IF @@Error <> 0 GOTO ABORT
920
								FETCH NEXT FROM XmlData INTO	@TRANSFER_ID,
921
											@MAST_BAL_ID,
922
											@FR_BRN_ID,
923
											@FR_DEPT_ID,
924
											@FR_PRICE_ID,
925
											@TO_BRN_ID,
926
											@TO_DEPT_ID,
927
											@QTY ,
928
											@QTY_OLD,
929
											@PRICE,
930
											@TOTAL_AMT ,
931
											@NOTES,
932
											@COST_ACC
933
								END
934
		CLOSE XmlData
935
		DEALLOCATE XmlData
936

    
937
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
938
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @p_TRANSFER_ID AND PROCESS_ID = 'UPDATE_HC'
939
		INSERT INTO dbo.PL_PROCESS
940
		(
941
			REQ_ID,
942
			PROCESS_ID,
943
			CHECKER_ID,
944
			APPROVE_DT,
945
			PROCESS_DESC,NOTES
946
		)
947
		VALUES
948
		(   @p_TRANSFER_ID,        -- REQ_ID - varchar(15)
949
			'UPDATE_HC',        -- PROCESS_ID - varchar(10)
950
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
951
			GETDATE(), -- APPROVE_DT - datetime
952
			N'Cập nhật phiếu điều chuyển vật liệu thành công' ,
953
			N'Cập nhật phiếu điều chuyển vật liệu'      -- PROCESS_DESC - nvarchar(1000)
954
		)
955

    
956
COMMIT TRANSACTION
957
SELECT '0' as Result, @p_TRANSFER_ID  TRANSFER_ID ,'' ErrorDesc
958
RETURN '0'
959
ABORT:
960
BEGIN
961
		CLOSE XmlData
962
		DEALLOCATE XmlData
963
		ROLLBACK TRANSACTION
964
		SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc
965
		RETURN '-1'
966
END