1
|
ALTER PROCEDURE dbo.MW_OUT_Ins @p_TRN_Date VARCHAR(25) = NULL,
|
2
|
@p_TRN_TIME VARCHAR(50) = NULL,
|
3
|
@p_BRN_ID VARCHAR(15) = NULL, @p_DEPT_ID VARCHAR(15) = NULL,
|
4
|
@p_QTY DECIMAL(18, 2) = NULL, @p_PRICE NUMERIC(18, 0) = NULL,
|
5
|
@p_TOTAL_AMT NUMERIC(18, 2) = NULL, @p_NOTES NVARCHAR(1000),
|
6
|
@p_OUT_DESC NVARCHAR(500) = NULL,
|
7
|
@p_AUTH_STATUS VARCHAR(1) = NULL, @p_MAKER_ID VARCHAR(100) = NULL,
|
8
|
@p_CREATE_DT VARCHAR(25) = NULL, @p_CHECKER_ID VARCHAR(100) = NULL,
|
9
|
@p_APPROVE_DT VARCHAR(25) = NULL,
|
10
|
@p_KT_AUTH_STATUS VARCHAR(1) = NULL, @p_KT_MAKER_ID VARCHAR(100) = NULL,
|
11
|
@p_KT_CREATE_DT VARCHAR(25) = NULL, @p_KT_CHECKER_ID VARCHAR(100) = NULL,
|
12
|
@p_KT_APPROVE_DT VARCHAR(25) = NULL, @p_RECORD_STATUS VARCHAR(1) = NULL,
|
13
|
@p_XmlData XML = NULL, @p_CORE_NOTE NVARCHAR(500) = NULL,
|
14
|
@p_BRANCH_CREATE VARCHAR(15) = NULL, @p_WARE_HOUSE VARCHAR(15) = NULL,
|
15
|
@p_MW_REQ_ID VARCHAR(50) = NULL, @p_PROMOTION_ID VARCHAR(50) = NULL,
|
16
|
@p_WARE_ID VARCHAR(50) = NULL,
|
17
|
@p_STATUS VARCHAR(50) = NULL, @p_REQ_ACOUNT VARCHAR(5) = NULL, @p_REQ_USER VARCHAR(150) = NULL
|
18
|
AS
|
19
|
DECLARE
|
20
|
--DVSD
|
21
|
--@OUT_DT_ID varchar(15),
|
22
|
@p_OUT_CODE NVARCHAR(100) = NULL
|
23
|
,@OUT_ID VARCHAR(15) = NULL
|
24
|
,@MAST_BAL_ID VARCHAR(15) = NULL
|
25
|
,@CUST_NAME NVARCHAR(200) = NULL
|
26
|
,@QTY DECIMAL(18, 2) = NULL
|
27
|
,@QTY_OLD DECIMAL(18, 2) = NULL
|
28
|
,@QTY_REAL_OLD DECIMAL(18, 2) = NULL
|
29
|
,@PRICE NUMERIC(18, 0) = NULL
|
30
|
,@TOTAL_AMT NUMERIC(18, 2) = NULL
|
31
|
,@NOTES NVARCHAR(1000) = NULL
|
32
|
,@TO_BRN_ID VARCHAR(15) = NULL
|
33
|
,@TO_DEPT_ID VARCHAR(15) = NULL
|
34
|
,@EVENT_NAME NVARCHAR(1000) = NULL
|
35
|
,@IS_BCT VARCHAR(1) = 'N'
|
36
|
,-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
|
37
|
@COST_ACC VARCHAR(50) = NULL
|
38
|
,@CUSTOMER_NAME NVARCHAR(100) = NULL
|
39
|
,@CUSTOMER_ID VARCHAR(100) = NULL
|
40
|
,@CUSTOMER_CCCD VARCHAR(100) = NULL
|
41
|
,@CUSTOMER_LOCATION NVARCHAR(1000) = NULL
|
42
|
,@UNIT_RECEIVE VARCHAR(50) = NULL
|
43
|
,@DEP_RECEIVE VARCHAR(50) = NULL
|
44
|
,@UNIT_CHARGE VARCHAR(50) = NULL
|
45
|
,@DEP_CHARGE VARCHAR(50) = NULL
|
46
|
,@UNIT_PAY VARCHAR(50) = NULL
|
47
|
DECLARE @INDEX INT = 0
|
48
|
DECLARE @PRICE_CODE VARCHAR(30)
|
49
|
DECLARE @hdoc INT;
|
50
|
DECLARE @QUANTITY_ALLOCATION DECIMAL(18, 2)
|
51
|
,@ALLOCATED DECIMAL(18, 2)
|
52
|
,@MATERIAL_ID VARCHAR(50);
|
53
|
DECLARE @BRANCH_OUT VARCHAR(50)
|
54
|
,@UNIT_RECEIVE_TYPE VARCHAR(15)
|
55
|
,@UNIT_CHARGE_TYPE VARCHAR(15)
|
56
|
EXEC sp_xml_preparedocument @hdoc OUTPUT
|
57
|
,@p_XmlData;
|
58
|
DECLARE XmlData CURSOR FOR SELECT
|
59
|
*
|
60
|
FROM OPENXML(@hdoc, '/Root/XmlData', 2)
|
61
|
WITH (OUT_ID VARCHAR(15),
|
62
|
MAST_BAL_ID VARCHAR(15),
|
63
|
CUST_NAME NVARCHAR(200),
|
64
|
QTY DECIMAL(18, 2),
|
65
|
QTY_OLD DECIMAL(18, 2),
|
66
|
QTY_REAL_OLD DECIMAL(18, 2),
|
67
|
PRICE NUMERIC(18, 0),
|
68
|
TOTAL_AMT NUMERIC(18, 2),
|
69
|
NOTES NVARCHAR(1000),
|
70
|
TO_BRN_ID VARCHAR(15),
|
71
|
TO_DEPT_ID VARCHAR(15),
|
72
|
EVENT_NAME NVARCHAR(1000),
|
73
|
IS_BCT VARCHAR(1),
|
74
|
COST_ACC VARCHAR(50),
|
75
|
UNIT_RECEIVE VARCHAR(50),
|
76
|
DEP_RECEIVE VARCHAR(50),
|
77
|
UNIT_CHARGE VARCHAR(50),
|
78
|
DEP_CHARGE VARCHAR(50),
|
79
|
UNIT_PAY VARCHAR(50),
|
80
|
CUSTOMER_NAME VARCHAR(100),
|
81
|
CUSTOMER_ID VARCHAR(100),
|
82
|
CUSTOMER_CCCD VARCHAR(100),
|
83
|
CUSTOMER_LOCATION VARCHAR(1000))
|
84
|
OPEN XmlData;
|
85
|
|
86
|
BEGIN TRANSACTION;
|
87
|
|
88
|
IF (@p_WARE_ID IS NULL
|
89
|
OR @p_WARE_ID = '')
|
90
|
BEGIN
|
91
|
ROLLBACK TRANSACTION
|
92
|
SELECT
|
93
|
'-1' AS Result
|
94
|
,'' OUT_ID
|
95
|
,N'Loại kho đang để trống. Vui lòng chọn và thử lại' ErrorDesc
|
96
|
RETURN '-1'
|
97
|
END
|
98
|
|
99
|
DECLARE @p_OUT_ID VARCHAR(15)
|
100
|
,@l_COST_ACC VARCHAR(50);
|
101
|
EXEC [MW_OUT_CODE_Gen] @p_BRANCH_CREATE
|
102
|
,@p_WARE_HOUSE
|
103
|
,@p_OUT_CODE OUT;
|
104
|
--IF()
|
105
|
|
106
|
EXEC SYS_CodeMasters_Gen 'MW_OUT'
|
107
|
,@p_OUT_ID OUT;
|
108
|
IF @p_OUT_ID = '' OR @p_OUT_ID IS NULL GOTO ABORT;
|
109
|
SET @p_STATUS = 'ADDNEW'
|
110
|
INSERT INTO [dbo].[MW_OUT] ([OUT_ID],
|
111
|
[TRN_Date],
|
112
|
[TRN_TIME],
|
113
|
[BRN_ID],
|
114
|
[DEPT_ID],
|
115
|
[QTY],
|
116
|
[PRICE],
|
117
|
[TOTAL_AMT],
|
118
|
[NOTES],
|
119
|
[OUT_DESC],
|
120
|
[AUTH_STATUS],
|
121
|
[MAKER_ID],
|
122
|
[CREATE_DT],
|
123
|
[CHECKER_ID],
|
124
|
[APPROVE_DT],
|
125
|
[RECORD_STATUS],
|
126
|
[CORE_NOTE],
|
127
|
[BRANCH_CREATE],
|
128
|
[WARE_HOUSE],
|
129
|
[OUT_CODE],
|
130
|
MW_REQ_ID,
|
131
|
PROMOTION_ID,
|
132
|
WARE_ID,
|
133
|
STATUS,
|
134
|
REQ_ACOUNT
|
135
|
, IS_CANCEL, REQ_USER)
|
136
|
VALUES (
|
137
|
@p_OUT_ID
|
138
|
,CONVERT(DATETIME, @p_TRN_Date, 103)
|
139
|
,@p_TRN_TIME
|
140
|
,@p_BRN_ID
|
141
|
,@p_DEPT_ID
|
142
|
,@p_QTY
|
143
|
,@p_PRICE
|
144
|
,@p_TOTAL_AMT
|
145
|
,@p_NOTES
|
146
|
,@p_OUT_DESC
|
147
|
,'E'
|
148
|
,@p_MAKER_ID
|
149
|
,CONVERT(DATETIME, @p_CREATE_DT, 103)
|
150
|
,NULL
|
151
|
,NULL
|
152
|
,'1'
|
153
|
,@p_CORE_NOTE
|
154
|
,@p_BRANCH_CREATE
|
155
|
,@p_WARE_HOUSE
|
156
|
,@p_OUT_CODE
|
157
|
,@p_MW_REQ_ID
|
158
|
,@p_PROMOTION_ID
|
159
|
,@p_WARE_ID
|
160
|
,@p_STATUS
|
161
|
,@p_REQ_ACOUNT
|
162
|
,'0',@p_REQ_USER)
|
163
|
IF @@error <> 0
|
164
|
GOTO ABORT;
|
165
|
--Insert XmlData
|
166
|
FETCH NEXT FROM XmlData
|
167
|
INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @QTY_REAL_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,
|
168
|
@EVENT_NAME, @IS_BCT, @COST_ACC, @UNIT_RECEIVE, @DEP_RECEIVE, @UNIT_CHARGE, @DEP_CHARGE, @UNIT_PAY, @CUSTOMER_NAME, @CUSTOMER_ID, @CUSTOMER_CCCD, @CUSTOMER_LOCATION
|
169
|
WHILE @@fetch_status = 0
|
170
|
BEGIN
|
171
|
SET @UNIT_RECEIVE_TYPE = (SELECT
|
172
|
CB.BRANCH_TYPE
|
173
|
FROM CM_BRANCH CB
|
174
|
WHERE CB.BRANCH_ID = @UNIT_RECEIVE)
|
175
|
SET @UNIT_CHARGE_TYPE = (SELECT
|
176
|
CB.BRANCH_TYPE
|
177
|
FROM CM_BRANCH CB
|
178
|
WHERE CB.BRANCH_ID = @UNIT_CHARGE)
|
179
|
IF @UNIT_RECEIVE_TYPE = 'HS' AND (@DEP_RECEIVE IS NULL OR @DEP_RECEIVE = '')
|
180
|
BEGIN
|
181
|
ROLLBACK TRANSACTION
|
182
|
CLOSE XmlData;
|
183
|
DEALLOCATE XmlData;
|
184
|
SELECT '-1' AS Result ,'' OUT_ID ,N'Dòng ' + CONVERT(VARCHAR(5), @INDEX) + N': Phòng ban nhận không được để trống.' ErrorDesc
|
185
|
RETURN '-1'
|
186
|
END
|
187
|
IF @UNIT_CHARGE_TYPE = 'HS' AND (@DEP_CHARGE IS NULL OR @DEP_CHARGE = '')
|
188
|
BEGIN
|
189
|
ROLLBACK TRANSACTION
|
190
|
CLOSE XmlData;
|
191
|
DEALLOCATE XmlData;
|
192
|
SELECT '-1' AS Result ,'' OUT_ID ,N'Dòng ' + CONVERT(VARCHAR(5), @INDEX) + N': Phòng ban chịu chi phí không được để trống.' ErrorDesc
|
193
|
RETURN '-1'
|
194
|
END
|
195
|
|
196
|
--Thuantm TẠO PHIẾU XUẤT KIỂM TRA SỐ LƯỢNG CẤP PHÁT PHIẾU YÊU CẦU NẾU số lượng xuất vượt quá số lượng cấp phát thì chặn.
|
197
|
SELECT
|
198
|
@MATERIAL_ID = MATERIAL_ID
|
199
|
FROM MW_MAST_BAL mmb
|
200
|
WHERE mmb.MAST_BAL_ID = @MAST_BAL_ID
|
201
|
SELECT
|
202
|
@QUANTITY_ALLOCATION = mrd.QUANTITY_ALLOCATION
|
203
|
,@ALLOCATED = mrd.ALLOCATED
|
204
|
FROM MW_REQ_DT mrd
|
205
|
WHERE mrd.REQ_CODE = @p_MW_REQ_ID
|
206
|
AND mrd.MATERIAL_ID = @MATERIAL_ID
|
207
|
|
208
|
---- CHẶN SỐ LƯỢNG XUẤT LỚN HƠN PYC ----
|
209
|
DECLARE @CUR_QTY_PYC DECIMAL
|
210
|
IF(@p_MW_REQ_ID IS NOT NULL AND @p_MW_REQ_ID <> '')
|
211
|
BEGIN
|
212
|
SELECT @CUR_QTY_PYC = MRD.QUANTITY_REQ FROM MW_REQ_DT MRD WHERE MRD.REQ_ID = @p_MW_REQ_ID AND MRD.BRANCH_USE = @UNIT_RECEIVE AND ISNULL(MRD.DEP_USE, '') = ISNULL(@DEP_RECEIVE, '') AND MRD.MATERIAL_ID = @MATERIAL_ID
|
213
|
IF(@CUR_QTY_PYC < @QTY)
|
214
|
BEGIN
|
215
|
ROLLBACK TRANSACTION
|
216
|
CLOSE XmlData;
|
217
|
DEALLOCATE XmlData;
|
218
|
SELECT '-1' AS Result ,'' OUT_ID ,N'Dòng ' + CONVERT(VARCHAR(5), @INDEX) + N': Số lượng xuất lớn hơn số lượng được yêu cầu.' ErrorDesc
|
219
|
RETURN '-1'
|
220
|
END
|
221
|
END
|
222
|
|
223
|
|
224
|
|
225
|
SET @INDEX = @INDEX + 1
|
226
|
SET @PRICE_CODE = (SELECT
|
227
|
PRICE_CODE
|
228
|
FROM MW_MAST_PRICE
|
229
|
WHERE PRICE_ID = (SELECT
|
230
|
PRICE_ID
|
231
|
FROM MW_MAST_BAL
|
232
|
WHERE MAST_BAL_ID = @MAST_BAL_ID))
|
233
|
|
234
|
-- IF (@COST_ACC IS NULL OR @COST_ACC = '')
|
235
|
-- BEGIN
|
236
|
-- ROLLBACK TRANSACTION
|
237
|
-- CLOSE XmlData;
|
238
|
-- DEALLOCATE XmlData;
|
239
|
-- 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
|
240
|
-- RETURN '-1'
|
241
|
-- END
|
242
|
|
243
|
DECLARE @p_OUT_DT_ID VARCHAR(15);
|
244
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_DT'
|
245
|
,@p_OUT_DT_ID OUT;
|
246
|
IF @p_OUT_DT_ID = '' OR @p_OUT_DT_ID IS NULL GOTO ABORT;
|
247
|
INSERT INTO [dbo].[MW_OUT_DT] ([OUT_DT_ID], [OUT_ID], [MAST_BAL_ID], [CUST_NAME], [QTY], [QTY_OLD], [QTY_REAL_OLD], [PRICE], [TOTAL_AMT], [NOTES],
|
248
|
[TO_BRN_ID], [TO_DEPT_ID], [EVENT_NAME], [IS_BCT], [COST_ACC], UNIT_RECEIVE, DEP_RECEIVE, UNIT_CHARGE, DEP_CHARGE, UNIT_PAY, CUSTOMER_NAME, CUSTOMER_ID, CUSTOMER_CCCD, CUSTOMER_LOCATION)
|
249
|
VALUES (
|
250
|
@p_OUT_DT_ID
|
251
|
,@p_OUT_ID
|
252
|
,@MAST_BAL_ID
|
253
|
,@CUST_NAME
|
254
|
,@QTY
|
255
|
,(SELECT mmb.QTY_BALANCE FROM MW_MAST_BAL mmb WHERE mmb.MAST_BAL_ID = @MAST_BAL_ID)
|
256
|
,(SELECT mmb.QTY_REAL FROM MW_MAST_BAL mmb WHERE mmb.MAST_BAL_ID = @MAST_BAL_ID)
|
257
|
,@PRICE
|
258
|
,@TOTAL_AMT
|
259
|
,@NOTES
|
260
|
,@TO_BRN_ID
|
261
|
,@TO_DEPT_ID
|
262
|
,@EVENT_NAME
|
263
|
,@IS_BCT
|
264
|
,@COST_ACC
|
265
|
,@UNIT_RECEIVE
|
266
|
,@DEP_RECEIVE
|
267
|
,@UNIT_CHARGE
|
268
|
,@DEP_CHARGE
|
269
|
,@UNIT_PAY
|
270
|
,@CUSTOMER_NAME
|
271
|
,@CUSTOMER_ID
|
272
|
,@CUSTOMER_CCCD
|
273
|
,@CUSTOMER_LOCATION)
|
274
|
|
275
|
IF @@error <> 0
|
276
|
GOTO ABORT;
|
277
|
FETCH NEXT FROM XmlData
|
278
|
INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @QTY_REAL_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID, @EVENT_NAME, @IS_BCT, @COST_ACC,
|
279
|
@UNIT_RECEIVE, @DEP_RECEIVE, @UNIT_CHARGE, @DEP_CHARGE, @UNIT_PAY, @CUSTOMER_NAME, @CUSTOMER_ID, @CUSTOMER_CCCD, @CUSTOMER_LOCATION
|
280
|
END;
|
281
|
CLOSE XmlData;
|
282
|
DEALLOCATE XmlData;
|
283
|
UPDATE MW_OUT
|
284
|
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID = @p_OUT_ID)
|
285
|
WHERE OUT_ID = @p_OUT_ID
|
286
|
|
287
|
INSERT INTO dbo.MW_PROCESS (REQ_ID,
|
288
|
PROCESS_ID,
|
289
|
CHECKER_ID,
|
290
|
APPROVE_DT,
|
291
|
PROCESS_DESC,
|
292
|
NOTES)
|
293
|
VALUES (@p_OUT_ID, -- REQ_ID - varchar(15)
|
294
|
'INSERT', -- PROCESS_ID - varchar(10)
|
295
|
@p_MAKER_ID, -- CHECKER_ID - varchar(15)
|
296
|
GETDATE(), -- APPROVE_DT - datetime
|
297
|
N'Thêm mới phiếu xuất vật liệu thành công', N'Thêm mới phiếu xuất vật liệu' -- PROCESS_DESC - nvarchar(1000)
|
298
|
)
|
299
|
|
300
|
---- CHECK BƯỚC QUY TRÌNH
|
301
|
INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],ROLE_USER,[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, CHECKER_ID)
|
302
|
VALUES(@p_OUT_ID,'ADDNEW','NVTT','C',@p_BRN_ID,'',@p_DEPT_ID, @p_MAKER_ID)
|
303
|
|
304
|
|
305
|
COMMIT TRANSACTION;
|
306
|
SELECT
|
307
|
'0' AS Result
|
308
|
,@p_OUT_ID OUT_ID
|
309
|
,'' ErrorDesc;
|
310
|
RETURN '0';
|
311
|
ABORT:
|
312
|
BEGIN
|
313
|
CLOSE XmlData;
|
314
|
DEALLOCATE XmlData;
|
315
|
ROLLBACK TRANSACTION;
|
316
|
SELECT
|
317
|
'-1' AS Result
|
318
|
,'' OUT_ID
|
319
|
,'' ErrorDesc;
|
320
|
RETURN '-1';
|
321
|
END;
|
322
|
GO
|
323
|
|
324
|
ALTER PROCEDURE dbo.MW_OUT_Upd
|
325
|
@p_OUT_ID VARCHAR(15) = NULL,
|
326
|
@p_TRN_Date VARCHAR(25) = NULL,
|
327
|
@p_TRN_TIME VARCHAR(50) = NULL,
|
328
|
@p_BRN_ID VARCHAR(15) = NULL,
|
329
|
@p_DEPT_ID VARCHAR(15) = NULL,
|
330
|
@p_QTY DECIMAL(18,2) = NULL,
|
331
|
@p_PRICE NUMERIC(18, 0) = NULL,
|
332
|
@p_TOTAL_AMT NUMERIC(18, 2) = NULL,
|
333
|
@p_NOTES NVARCHAR(1000),
|
334
|
@p_OUT_DESC NVARCHAR(500) = NULL,
|
335
|
@p_AUTH_STATUS VARCHAR(1) = NULL,
|
336
|
@p_MAKER_ID VARCHAR(100) = NULL,
|
337
|
@p_CREATE_DT VARCHAR(25) = NULL,
|
338
|
@p_CHECKER_ID VARCHAR(100) = NULL,
|
339
|
@p_APPROVE_DT VARCHAR(25) = NULL,
|
340
|
@p_KT_AUTH_STATUS VARCHAR(1) = NULL,
|
341
|
@p_KT_MAKER_ID VARCHAR(100) = NULL,
|
342
|
@p_KT_CREATE_DT VARCHAR(25) = NULL,
|
343
|
@p_KT_CHECKER_ID VARCHAR(100) = NULL,
|
344
|
@p_KT_APPROVE_DT VARCHAR(25) = NULL,
|
345
|
@p_RECORD_STATUS VARCHAR(1) = NULL,
|
346
|
@p_XmlData XML = NULL,
|
347
|
@p_CORE_NOTE nvarchar(500) = NULL,
|
348
|
@p_WARE_HOUSE VARCHAR(15) = NULL,
|
349
|
@p_MW_REQ_ID VARCHAR(50)=NULL,
|
350
|
@p_PROMOTION_ID VARCHAR(50) = NULL,
|
351
|
@p_WARE_ID VARCHAR(50)=NULL,@p_REQ_ACOUNT VARCHAR(5)=NULL, @p_REQ_USER VARCHAR(150) = NULL
|
352
|
AS
|
353
|
DECLARE
|
354
|
--DVSD
|
355
|
@OUT_ID VARCHAR(15) = NULL,
|
356
|
@MAST_BAL_ID VARCHAR(15) = NULL,
|
357
|
@CUST_NAME NVARCHAR(200) = NULL,
|
358
|
@QTY DECIMAL(18,2) = NULL,
|
359
|
@QTY_OLD DECIMAL(18,2) = NULL,
|
360
|
@QTY_REAL_OLD DECIMAL(18,2)=NULL,
|
361
|
@PRICE NUMERIC(18, 0) = NULL,
|
362
|
@TOTAL_AMT NUMERIC(18, 2) = NULL,
|
363
|
@NOTES NVARCHAR(1000) = NULL,
|
364
|
@TO_BRN_ID varchar(15) = NULL,
|
365
|
@TO_DEPT_ID varchar(15) = NULL,
|
366
|
@EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
|
367
|
@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
|
368
|
@COST_ACC VARCHAR(50) = NULL,
|
369
|
@UNIT_RECEIVE VARCHAR(50)= NULL,
|
370
|
@DEP_RECEIVE VARCHAR(50)= NULL,
|
371
|
@UNIT_CHARGE VARCHAR(50)= NULL,
|
372
|
@DEP_CHARGE VARCHAR(50)= NULL,
|
373
|
@UNIT_PAY VARCHAR(50)= NULL,
|
374
|
@CUSTOMER_NAME NVARCHAR(100)= NULL,
|
375
|
@CUSTOMER_ID VARCHAR(100)= NULL,
|
376
|
@CUSTOMER_LOCATION NVARCHAR(1000)= NULL
|
377
|
DECLARE @INDEX INT =0
|
378
|
DECLARE @PRICE_CODE VARCHAR(30)
|
379
|
DECLARE @hdoc INT;
|
380
|
DECLARE @QUANTITY_ALLOCATION DECIMAL(18,2), @ALLOCATED DECIMAL(18,2), @MATERIAL_ID VARCHAR(50)
|
381
|
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
|
382
|
DECLARE XmlData CURSOR FOR
|
383
|
SELECT *
|
384
|
FROM
|
385
|
OPENXML(@hdoc, '/Root/XmlData', 2)
|
386
|
WITH
|
387
|
(
|
388
|
OUT_ID VARCHAR(15),
|
389
|
MAST_BAL_ID VARCHAR(15),
|
390
|
CUST_NAME NVARCHAR(200),
|
391
|
QTY DECIMAL(18,2),
|
392
|
QTY_OLD DECIMAL(18,2),
|
393
|
QTY_REAL_OLD DECIMAL(18,2),
|
394
|
PRICE NUMERIC(18, 0),
|
395
|
TOTAL_AMT NUMERIC(18, 2),
|
396
|
NOTES NVARCHAR(1000),
|
397
|
TO_BRN_ID varchar(15),
|
398
|
TO_DEPT_ID varchar(15),
|
399
|
EVENT_NAME NVARCHAR(1000),
|
400
|
IS_BCT VARCHAR(1),-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
|
401
|
COST_ACC VARCHAR(50),
|
402
|
UNIT_RECEIVE VARCHAR(50),
|
403
|
DEP_RECEIVE VARCHAR(50),
|
404
|
UNIT_CHARGE VARCHAR(50),
|
405
|
DEP_CHARGE VARCHAR(50),
|
406
|
UNIT_PAY VARCHAR(50),
|
407
|
CUSTOMER_NAME VARCHAR(100),
|
408
|
CUSTOMER_ID VARCHAR(100),
|
409
|
CUSTOMER_LOCATION VARCHAR(1000)
|
410
|
);
|
411
|
OPEN XmlData;
|
412
|
BEGIN TRANSACTION;
|
413
|
|
414
|
IF(@p_WARE_ID IS NULL OR @p_WARE_ID = '')
|
415
|
BEGIN
|
416
|
ROLLBACK TRANSACTION
|
417
|
SELECT '-1' as Result, '' OUT_ID, N'Loại kho đang để trống. Vui lòng chọn và thử lại' ErrorDesc
|
418
|
RETURN '-1'
|
419
|
END
|
420
|
|
421
|
IF(EXISTS(SELECT * FROM MW_OUT mo WHERE OUT_ID = @p_OUT_ID AND mo.STATUS = 'REQ_ACOUNT'))
|
422
|
BEGIN
|
423
|
UPDATE MW_OUT SET REQ_ACOUNT=@p_REQ_ACOUNT WHERE OUT_ID = @p_OUT_ID
|
424
|
|
425
|
DECLARE @CUR_PROCESS VARCHAR(20) = (SELECT TOP 1 MRP.PROCESS_ID FROM MW_REQUEST_PROCESS MRP WHERE MRP.REQ_ID = @p_OUT_ID AND MRP.STATUS = 'C')
|
426
|
-- UPDATE MW_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_OUT_ID AND STATUS = 'C'
|
427
|
-- INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],PROCESS_NAME,[STATUS],ROLE_USER,BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, PROCESS_TYPE,RECEPTION_DT,NOTES)
|
428
|
-- VALUES(@p_OUT_ID,'OUT_KT',N'Giao dịch viên xử lý','C','GDV',@p_BRN_ID,@CUR_PROCESS,@p_DEPT_ID, 'Approve',GETDATE(), N'Trưởng đơn vị phê duyệt')
|
429
|
|
430
|
END
|
431
|
ELSE
|
432
|
BEGIN
|
433
|
-- IF (SELECT mo.AUTH_STATUS FROM MW_OUT mo WHERE OUT_ID = @p_OUT_ID) = 'R'
|
434
|
-- BEGIN
|
435
|
-- SET @p_AUTH_STATUS = 'E'
|
436
|
-- END ELSE
|
437
|
SET @p_AUTH_STATUS = 'E'
|
438
|
|
439
|
UPDATE [dbo].[MW_OUT]
|
440
|
SET
|
441
|
[QTY] = @p_QTY,
|
442
|
AUTH_STATUS=@p_AUTH_STATUS,
|
443
|
[PRICE] = @p_PRICE,
|
444
|
[TOTAL_AMT] = @p_TOTAL_AMT,
|
445
|
[NOTES] = @p_NOTES,
|
446
|
MAKER_ID=@p_MAKER_ID,
|
447
|
[CORE_NOTE] = @p_CORE_NOTE,
|
448
|
WARE_HOUSE= @p_WARE_HOUSE,DEPT_ID = @p_DEPT_ID,REQ_ACOUNT = @p_REQ_ACOUNT,
|
449
|
MW_REQ_ID = @p_MW_REQ_ID, PROMOTION_ID = @p_PROMOTION_ID, WARE_ID = @p_WARE_ID, REQ_USER = @p_REQ_USER
|
450
|
WHERE [OUT_ID] = @p_OUT_ID;
|
451
|
IF @@Error <> 0
|
452
|
GOTO ABORT;
|
453
|
--Insert XmlData
|
454
|
DECLARE @l_COST_ACC VARCHAR(50);
|
455
|
DELETE FROM MW_OUT_DT WHERE OUT_ID = @p_OUT_ID;
|
456
|
FETCH NEXT FROM XmlData
|
457
|
INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD,@QTY_REAL_OLD,@PRICE,@TOTAL_AMT, @NOTES,@TO_BRN_ID, @TO_DEPT_ID, @EVENT_NAME,@IS_BCT, @COST_ACC,@UNIT_RECEIVE,@DEP_RECEIVE,@UNIT_CHARGE,@DEP_CHARGE,@UNIT_PAY,@CUSTOMER_NAME,@CUSTOMER_ID,@CUSTOMER_LOCATION
|
458
|
WHILE @@FETCH_STATUS = 0
|
459
|
BEGIN
|
460
|
--Thuantm TẠO PHIẾU XUẤT KIỂM TRA SỐ LƯỢNG CẤP PHÁT PHIẾU YÊU CẦU NẾU số lượng xuất vượt quá số lượng cấp phát thì chặn.
|
461
|
SELECT @MATERIAL_ID=MATERIAL_ID FROM MW_MAST_BAL mmb WHERE mmb.MAST_BAL_ID = @MAST_BAL_ID
|
462
|
SELECT @QUANTITY_ALLOCATION=mrd.QUANTITY_ALLOCATION, @ALLOCATED=mrd.ALLOCATED FROM MW_REQ_DT mrd WHERE mrd.REQ_CODE = @p_MW_REQ_ID AND mrd.MATERIAL_ID = @MATERIAL_ID
|
463
|
|
464
|
|
465
|
SET @INDEX = @INDEX +1
|
466
|
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))
|
467
|
|
468
|
SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
|
469
|
WHEN @COST_ACC = null then MT.EXP_ACCTNO
|
470
|
WHEN @COST_ACC = '' then MT.EXP_ACCTNO
|
471
|
ELSE MT.EXP_ACCTNO
|
472
|
END
|
473
|
FROM dbo.MW_MAST_BAL A
|
474
|
LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
|
475
|
WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
|
476
|
|
477
|
---- CHẶN SỐ LƯỢNG XUẤT LỚN HƠN PYC ----
|
478
|
DECLARE @CUR_QTY_PYC DECIMAL
|
479
|
IF(@p_MW_REQ_ID IS NOT NULL AND @p_MW_REQ_ID <> '')
|
480
|
BEGIN
|
481
|
SELECT @CUR_QTY_PYC = MRD.QUANTITY_REQ FROM MW_REQ_DT MRD WHERE MRD.REQ_ID = @p_MW_REQ_ID AND MRD.BRANCH_USE = @UNIT_RECEIVE AND ISNULL(MRD.DEP_USE, '') = ISNULL(@DEP_RECEIVE, '') AND MRD.MATERIAL_ID = @MATERIAL_ID
|
482
|
IF(@CUR_QTY_PYC < @QTY)
|
483
|
BEGIN
|
484
|
ROLLBACK TRANSACTION
|
485
|
CLOSE XmlData;
|
486
|
DEALLOCATE XmlData;
|
487
|
SELECT '-1' AS Result ,'' OUT_ID ,N'Dòng ' + CONVERT(VARCHAR(5), @INDEX) + N': Số lượng xuất lớn hơn số lượng được yêu cầu.' ErrorDesc
|
488
|
RETURN '-1'
|
489
|
END
|
490
|
END
|
491
|
|
492
|
-- IF(@COST_ACC IS NULL OR @COST_ACC = '')
|
493
|
-- BEGIN
|
494
|
-- ROLLBACK TRANSACTION
|
495
|
-- CLOSE XmlData;
|
496
|
-- DEALLOCATE XmlData;
|
497
|
-- 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
|
498
|
-- RETURN '-1'
|
499
|
-- END
|
500
|
|
501
|
DECLARE @p_OUT_DT_ID VARCHAR(15);
|
502
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
|
503
|
IF @p_OUT_DT_ID = ''
|
504
|
OR @p_OUT_DT_ID IS NULL
|
505
|
GOTO ABORT;
|
506
|
INSERT INTO [dbo].[MW_OUT_DT]
|
507
|
(
|
508
|
[OUT_DT_ID],
|
509
|
[OUT_ID],
|
510
|
[MAST_BAL_ID],
|
511
|
[CUST_NAME],
|
512
|
[QTY],
|
513
|
[QTY_OLD],
|
514
|
QTY_REAL_OLD,
|
515
|
[PRICE],
|
516
|
[TOTAL_AMT],
|
517
|
[NOTES],
|
518
|
[TO_BRN_ID],
|
519
|
[TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC],UNIT_RECEIVE,DEP_RECEIVE,UNIT_CHARGE,DEP_CHARGE,UNIT_PAY,CUSTOMER_NAME,CUSTOMER_ID,CUSTOMER_LOCATION
|
520
|
)
|
521
|
SELECT @p_OUT_DT_ID,
|
522
|
@p_OUT_ID,
|
523
|
@MAST_BAL_ID,
|
524
|
@CUST_NAME,
|
525
|
@QTY,
|
526
|
(SELECT mmb.QTY_BALANCE FROM MW_MAST_BAL mmb WHERE mmb.MAST_BAL_ID = @MAST_BAL_ID),
|
527
|
(SELECT mmb.QTY_REAL FROM MW_MAST_BAL mmb WHERE mmb.MAST_BAL_ID = @MAST_BAL_ID),
|
528
|
@PRICE,
|
529
|
@TOTAL_AMT,
|
530
|
@NOTES,
|
531
|
@TO_BRN_ID,
|
532
|
@TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC,@UNIT_RECEIVE,@DEP_RECEIVE,@UNIT_CHARGE,@DEP_CHARGE,@UNIT_PAY,@CUSTOMER_NAME,@CUSTOMER_ID,@CUSTOMER_LOCATION
|
533
|
|
534
|
IF @@Error <> 0
|
535
|
GOTO ABORT;
|
536
|
FETCH NEXT FROM XmlData
|
537
|
INTO @OUT_ID,
|
538
|
@MAST_BAL_ID,
|
539
|
@CUST_NAME,
|
540
|
@QTY,
|
541
|
@QTY_OLD,
|
542
|
@QTY_REAL_OLD,
|
543
|
@PRICE,
|
544
|
@TOTAL_AMT,
|
545
|
@NOTES,
|
546
|
@TO_BRN_ID,
|
547
|
@TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC,@UNIT_RECEIVE,@DEP_RECEIVE,@UNIT_CHARGE,@DEP_CHARGE,@UNIT_PAY,@CUSTOMER_NAME,@CUSTOMER_ID,@CUSTOMER_LOCATION
|
548
|
END;
|
549
|
CLOSE XmlData;
|
550
|
DEALLOCATE XmlData;
|
551
|
|
552
|
-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
|
553
|
--DELETE dbo.MW_PROCESS WHERE REQ_ID = @OUT_ID AND PROCESS_ID = 'UPDATE_HC'
|
554
|
INSERT INTO dbo.MW_PROCESS
|
555
|
(
|
556
|
REQ_ID,
|
557
|
PROCESS_ID,
|
558
|
CHECKER_ID,
|
559
|
APPROVE_DT,
|
560
|
PROCESS_DESC,NOTES
|
561
|
)
|
562
|
VALUES
|
563
|
( @OUT_ID, -- REQ_ID - varchar(15)
|
564
|
'UPD_HC', -- PROCESS_ID - varchar(10)
|
565
|
@p_MAKER_ID, -- CHECKER_ID - varchar(15)
|
566
|
GETDATE(), -- APPROVE_DT - datetime
|
567
|
N'Cập nhật phiếu xuất vật liệu thành công' ,
|
568
|
N'Cập nhật phiếu xuất vật liệu' -- PROCESS_DESC - nvarchar(1000)
|
569
|
)
|
570
|
---- CHECK BƯỚC QUY TRÌNH
|
571
|
-- INSERT INTO MW_REQUEST_PROCESS(REQ_ID,[PROCESS_ID],[STATUS],BRANCH_ID,PARENT_PROCESS_ID,DEP_ID, CHECKER_ID)
|
572
|
-- VALUES(@p_OUT_ID,'ADDNEW','C',@p_BRN_ID,'',@p_DEPT_ID, @p_MAKER_ID)
|
573
|
|
574
|
---
|
575
|
UPDATE MW_OUT
|
576
|
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
|
577
|
END
|
578
|
|
579
|
COMMIT TRANSACTION;
|
580
|
SELECT '0' AS Result,@p_OUT_ID OUT_ID,'' ErrorDesc;
|
581
|
RETURN '0';
|
582
|
ABORT:
|
583
|
BEGIN
|
584
|
CLOSE XmlData;
|
585
|
DEALLOCATE XmlData;
|
586
|
ROLLBACK TRANSACTION;
|
587
|
SELECT '-1' AS Result,'' OUT_ID,'' ErrorDesc;
|
588
|
RETURN '-1';
|
589
|
END;
|