1
|
|
2
|
ALTER PROCEDURE dbo.MW_OUT_App
|
3
|
@p_OUT_ID VARCHAR(15) =NULL,
|
4
|
@p_CHECKER_ID VARCHAR(100) =NULL,
|
5
|
@p_APPROVE_DT VARCHAR(20) =NULL,
|
6
|
@p_XmlData XML=NULL
|
7
|
AS
|
8
|
DECLARE @OUT_ID VARCHAR(15) =NULL,
|
9
|
@BRN_ID VARCHAR(15) =NULL,
|
10
|
@MAST_BAL_ID VARCHAR(15) =NULL,
|
11
|
@CUST_NAME NVARCHAR(200) =NULL,
|
12
|
@QTY DECIMAL(18,2)=NULL,
|
13
|
@PRICE NUMERIC(18, 0) =NULL,
|
14
|
@TOTAL_AMT NUMERIC(18, 2) =NULL,
|
15
|
@NOTES NVARCHAR(1000) =NULL,
|
16
|
@TO_BRN_ID VARCHAR(15) =NULL,
|
17
|
@TO_DEPT_ID VARCHAR(15) =NULL;
|
18
|
DECLARE @hdoc INT;
|
19
|
DECLARE @INDEX INT =0
|
20
|
DECLARE @p_ID_MAS_BAL VARCHAR(15);
|
21
|
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
|
22
|
|
23
|
DECLARE @C_TO_BRN_ID VARCHAR(15), @C_TO_DEP_ID VARCHAR(15)
|
24
|
DECLARE @STATUS VARCHAR(50), @AUTH_STATUS VARCHAR(10)
|
25
|
|
26
|
|
27
|
DECLARE XmlData CURSOR FOR
|
28
|
SELECT *
|
29
|
FROM
|
30
|
OPENXML(@hdoc, '/Root/XmlData', 2)
|
31
|
WITH(
|
32
|
OUT_ID VARCHAR(15),
|
33
|
MAST_BAL_ID VARCHAR(15),
|
34
|
CUST_NAME NVARCHAR(200),
|
35
|
QTY DECIMAL(18,2),
|
36
|
PRICE NUMERIC(18, 0),
|
37
|
TOTAL_AMT NUMERIC(18, 2),
|
38
|
NOTES NVARCHAR(1000),
|
39
|
TO_BRN_ID VARCHAR(15),
|
40
|
TO_DEPT_ID VARCHAR(15)
|
41
|
);
|
42
|
OPEN XmlData;
|
43
|
BEGIN TRANSACTION;
|
44
|
|
45
|
DECLARE @p_ID VARCHAR(15);
|
46
|
FETCH NEXT FROM XmlData
|
47
|
INTO @OUT_ID,
|
48
|
@MAST_BAL_ID,
|
49
|
@CUST_NAME,
|
50
|
@QTY,
|
51
|
@PRICE,
|
52
|
@TOTAL_AMT,
|
53
|
@NOTES,
|
54
|
@TO_BRN_ID,
|
55
|
@TO_DEPT_ID;
|
56
|
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0;
|
57
|
DECLARE @l_SUM_TOTAL_AMT NUMERIC(18, 2)=0;
|
58
|
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
|
59
|
|
60
|
|
61
|
|
62
|
IF(@@FETCH_STATUS=-1)BEGIN
|
63
|
ROLLBACK TRANSACTION;
|
64
|
SELECT '-1' AS Result,
|
65
|
@p_OUT_ID OUT_ID,
|
66
|
N'Vui lòng duyệt lại sau khi dữ liệu được load hoàn tất' ErrorDesc;
|
67
|
RETURN '-1';
|
68
|
END;
|
69
|
|
70
|
IF((SELECT STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID) <> 'SendApp')
|
71
|
BEGIN
|
72
|
ROLLBACK TRANSACTION
|
73
|
SELECT '-1' as Result, '' OUT_ID, N'Phiếu xuất chưa đến bước duyệt bạn không được phép cập nhật thông tin.' ErrorDesc
|
74
|
RETURN '-1'
|
75
|
END
|
76
|
|
77
|
-- 24-03-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
|
78
|
IF((SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
|
79
|
BEGIN
|
80
|
CLOSE XmlData
|
81
|
DEALLOCATE XmlData
|
82
|
ROLLBACK TRANSACTION
|
83
|
SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Giao dịch đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
|
84
|
RETURN '-1'
|
85
|
END
|
86
|
|
87
|
DECLARE @CUR_PROCESS VARCHAR(20) DECLARE @p_BRANCH_LOGIN VARCHAR(15), @p_DEP_LOGIN VARCHAR(15)
|
88
|
|
89
|
--Kiểm tra Kho nếu kho đặt biệt check đã yêu cầu hạch toán chưa nếu chưa yêu cầu chọn hạch toán mới được qua kế toán
|
90
|
DECLARE @WARE_CODE VARCHAR(25),@ListWare_CODE VARCHAR(500);
|
91
|
SELECT @WARE_CODE=cw.WARE_CODE FROM MW_OUT MO LEFT JOIN CM_WARE cw ON MO.WARE_ID = cw.WARE_ID WHERE MO.OUT_ID = @p_OUT_ID
|
92
|
SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
|
93
|
IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE, ',') WHERE VALUE = @WARE_CODE))
|
94
|
BEGIN
|
95
|
|
96
|
--Nếu tồn tại 3 kho quà tặng Thì TDV duyệt phiếu chờ KSV phê duyệt(MW_OUT_KSV_KT_APP) thì mới trừ số liệu
|
97
|
|
98
|
--- KIỂM TRA TỰ XUẤT HAY XUẤT KHÁC ĐƠN VỊ
|
99
|
IF EXISTS(SELECT 1
|
100
|
FROM MW_OUT_DT A
|
101
|
LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
|
102
|
WHERE A.OUT_ID = @p_OUT_ID
|
103
|
AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
|
104
|
OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
|
105
|
)
|
106
|
)
|
107
|
BEGIN
|
108
|
PRINT N'TỰ XUẤT'
|
109
|
IF((SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1')
|
110
|
BEGIN
|
111
|
BEGIN
|
112
|
-- CLOSE XmlData
|
113
|
-- DEALLOCATE XmlData
|
114
|
-- ROLLBACK TRANSACTION
|
115
|
-- SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Xuất kho đối với các kho quà tặng chưa cập nhật yêu cầu hạch toán. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
|
116
|
-- RETURN '-1'
|
117
|
|
118
|
------- TRẢ VỀ BƯỚC NHÂN VIÊN TẠO CẬP NHẬN YÊU CẦU HẠCH TOÁN ĐỂ TIẾP TỤC LÊN PHÒNG KẾ TOÁN XỬ LÝ
|
119
|
--UPDATE MW_OUT SET STATUS = 'REQ_ACOUNT', AUTH_STATUS = 'A', KT_AUTH_STATUS = NULL WHERE OUT_ID =@p_OUT_ID
|
120
|
UPDATE MW_OUT SET STATUS = 'KSV_KT_APP', AUTH_STATUS = 'A', KT_AUTH_STATUS = NULL WHERE OUT_ID =@p_OUT_ID
|
121
|
UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
|
122
|
FROM MW_OUT_DT A
|
123
|
WHERE A.OUT_ID = @p_OUT_ID
|
124
|
END
|
125
|
END
|
126
|
ELSE
|
127
|
BEGIN
|
128
|
|
129
|
UPDATE MW_OUT SET STATUS = 'KSV_KT_APP', AUTH_STATUS = 'A', KT_AUTH_STATUS = NULL WHERE OUT_ID =@p_OUT_ID
|
130
|
UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
|
131
|
FROM MW_OUT_DT A
|
132
|
WHERE A.OUT_ID = @p_OUT_ID
|
133
|
|
134
|
-- UPDATE MW_OUT SET STATUS = 'OUT_KT', AUTH_STATUS = 'A', KT_AUTH_STATUS = 'E' WHERE OUT_ID =@p_OUT_ID
|
135
|
--
|
136
|
-- UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
|
137
|
-- FROM MW_OUT_DT A
|
138
|
-- WHERE A.OUT_ID = @p_OUT_ID
|
139
|
END
|
140
|
END
|
141
|
ELSE
|
142
|
BEGIN
|
143
|
-- IF((SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1')
|
144
|
-- BEGIN
|
145
|
-- CLOSE XmlData
|
146
|
-- DEALLOCATE XmlData
|
147
|
-- ROLLBACK TRANSACTION
|
148
|
-- SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Xuất kho đối với các kho quà tặng chưa cập nhật yêu cầu hạch toán. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
|
149
|
-- RETURN '-1'
|
150
|
-- END
|
151
|
-- ELSE
|
152
|
BEGIN
|
153
|
BEGIN
|
154
|
PRINT N'XUẤT KHÁC ĐƠN VỊ HOẶC PHÒNG BAN'
|
155
|
UPDATE [dbo].[MW_OUT]
|
156
|
SET AUTH_STATUS='A',
|
157
|
CHECKER_ID=@p_CHECKER_ID,
|
158
|
STATUS ='KSV_KT_APP',
|
159
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
160
|
WHERE [OUT_ID]=@p_OUT_ID;
|
161
|
|
162
|
DECLARE CUR_CONFIRM CURSOR FOR
|
163
|
SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
164
|
FROM MW_OUT_DT
|
165
|
WHERE OUT_ID = @p_OUT_ID
|
166
|
GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
167
|
OPEN CUR_CONFIRM
|
168
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
169
|
WHILE @@FETCH_STATUS = 0
|
170
|
BEGIN
|
171
|
DECLARE @p_OUT_CONF_ID_0 VARCHAR(15);
|
172
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_0 OUT;
|
173
|
IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
|
174
|
BEGIN
|
175
|
INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)
|
176
|
VALUES (@p_OUT_CONF_ID_0,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
|
177
|
END
|
178
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
179
|
END
|
180
|
CLOSE CUR_CONFIRM
|
181
|
DEALLOCATE CUR_CONFIRM
|
182
|
|
183
|
|
184
|
SELECT @p_BRANCH_LOGIN = TU.TLSUBBRID, @p_DEP_LOGIN = TU.SECUR_CODE FROM TL_USER TU WHERE TU.TLNANME = (SELECT MO.MAKER_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID)
|
185
|
SET @CUR_PROCESS = (SELECT TOP 1 MRP.PROCESS_ID FROM MW_REQUEST_PROCESS MRP WHERE MRP.REQ_ID = @p_OUT_ID AND MRP.STATUS = 'C')
|
186
|
UPDATE MW_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_OUT_ID AND STATUS = 'C'
|
187
|
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)
|
188
|
VALUES(@p_OUT_ID,'CONF',N'Nhân viên tạo phiếu xác nhận','C','NVTT',@p_BRANCH_LOGIN,@CUR_PROCESS,@p_DEP_LOGIN, 'Update',GETDATE(), N'Xác nhận giao')
|
189
|
END
|
190
|
END
|
191
|
IF @@Error<>0 GOTO ABORT;
|
192
|
END
|
193
|
|
194
|
END
|
195
|
ELSE
|
196
|
BEGIN
|
197
|
--- KIỂM TRA TỰ XUẤT HAY XUẤT KHÁC ĐƠN VỊ
|
198
|
IF EXISTS(SELECT 1
|
199
|
FROM MW_OUT_DT A
|
200
|
LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
|
201
|
WHERE A.OUT_ID = @p_OUT_ID
|
202
|
AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
|
203
|
OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
|
204
|
)
|
205
|
)
|
206
|
BEGIN
|
207
|
PRINT N'TỰ XUẤT'
|
208
|
|
209
|
UPDATE [dbo].[MW_OUT]
|
210
|
SET AUTH_STATUS='A',
|
211
|
CHECKER_ID=@p_CHECKER_ID,
|
212
|
STATUS ='OUT_KT',
|
213
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
214
|
WHERE [OUT_ID]=@p_OUT_ID;
|
215
|
|
216
|
UPDATE A SET A.QTY_RECEIVE = A.QTY, QTY_DAMAGED = 0, QTY_LOSS = 0
|
217
|
FROM MW_OUT_DT A
|
218
|
WHERE A.OUT_ID = @p_OUT_ID
|
219
|
|
220
|
END
|
221
|
ELSE -------------------
|
222
|
BEGIN
|
223
|
PRINT N'XUẤT KHÁC ĐƠN VỊ HOẶC PHÒNG BAN'
|
224
|
UPDATE [dbo].[MW_OUT]
|
225
|
SET AUTH_STATUS='A',
|
226
|
CHECKER_ID=@p_CHECKER_ID,
|
227
|
STATUS ='CONFIRM',
|
228
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
229
|
WHERE [OUT_ID]=@p_OUT_ID;
|
230
|
|
231
|
---- Khai báo cur insert bước xác nhận cho người tạo upload file danh sách chứng thực xuất kho
|
232
|
DECLARE CUR_CONFIRM CURSOR FOR
|
233
|
SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
234
|
FROM MW_OUT_DT
|
235
|
WHERE OUT_ID = @p_OUT_ID
|
236
|
GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
237
|
OPEN CUR_CONFIRM
|
238
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
239
|
WHILE @@FETCH_STATUS = 0
|
240
|
BEGIN
|
241
|
DECLARE @p_OUT_CONF_ID_1 VARCHAR(15);
|
242
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_1 OUT;
|
243
|
IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
|
244
|
BEGIN
|
245
|
INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)
|
246
|
VALUES (@p_OUT_CONF_ID_1,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
|
247
|
END
|
248
|
|
249
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
250
|
END
|
251
|
CLOSE CUR_CONFIRM
|
252
|
DEALLOCATE CUR_CONFIRM
|
253
|
|
254
|
SELECT @p_BRANCH_LOGIN = TU.TLSUBBRID, @p_DEP_LOGIN = TU.SECUR_CODE FROM TL_USER TU WHERE TU.TLNANME = (SELECT MO.MAKER_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID)
|
255
|
SET @CUR_PROCESS = (SELECT TOP 1 MRP.PROCESS_ID FROM MW_REQUEST_PROCESS MRP WHERE MRP.REQ_ID = @p_OUT_ID AND MRP.STATUS = 'C')
|
256
|
UPDATE MW_REQUEST_PROCESS SET STATUS = 'P' WHERE REQ_ID = @p_OUT_ID AND STATUS = 'C'
|
257
|
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)
|
258
|
VALUES(@p_OUT_ID,'CONF',N'Nhân viên tạo phiếu xác nhận','C','NVTT',@p_BRANCH_LOGIN,@CUR_PROCESS,@p_DEP_LOGIN, 'Update',GETDATE(), N'Xác nhận giao')
|
259
|
|
260
|
END
|
261
|
IF @@Error<>0 GOTO ABORT;
|
262
|
WHILE @@FETCH_STATUS=0
|
263
|
BEGIN
|
264
|
SET @INDEX = @INDEX+1
|
265
|
-- 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)
|
266
|
IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
|
267
|
BEGIN
|
268
|
CLOSE XmlData
|
269
|
DEALLOCATE XmlData
|
270
|
ROLLBACK TRANSACTION
|
271
|
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
|
272
|
RETURN '-1'
|
273
|
END
|
274
|
--Update MW_Mast_BAL khi TDV duyệt
|
275
|
--UPDATE MW_MAST_BAL SET QTY_BALANCE = (QTY_BALANCE-@QTY), QTY_REAL = (QTY_REAL-@QTY), QTY_TEMP = (QTY_TEMP+@QTY) WHERE MAST_BAL_ID = @MAST_BAL_ID
|
276
|
|
277
|
|
278
|
-- INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
279
|
-- VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Hành chính duyệt phiếu.',N'Hành chính duyệt phiếu thành công.')
|
280
|
|
281
|
IF @@Error<>0 GOTO ABORT;
|
282
|
FETCH NEXT FROM XmlData
|
283
|
INTO @OUT_ID,
|
284
|
@MAST_BAL_ID,
|
285
|
@CUST_NAME,
|
286
|
@QTY,
|
287
|
@PRICE,
|
288
|
@TOTAL_AMT,
|
289
|
@NOTES,
|
290
|
@TO_BRN_ID,
|
291
|
@TO_DEPT_ID;
|
292
|
END;
|
293
|
CLOSE XmlData;
|
294
|
DEALLOCATE XmlData;
|
295
|
END
|
296
|
|
297
|
INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
298
|
VALUES(@p_OUT_ID,'APPNEW',@p_CHECKER_ID,GETDATE(), N'Trưởng đơn vị duyệt phiếu',N'Trưởng đơn vị duyệt phiếu thành công')
|
299
|
|
300
|
|
301
|
|
302
|
--NẾU CÁC KHO THƯỜNG THÌ TRỪ SỐ. - KHO QUÀ TẶNG THÌ TRỪ Ở BƯỚC KSV
|
303
|
IF(NOT EXISTS(SELECT 1
|
304
|
FROM STRING_SPLIT(@ListWare_CODE,',') A
|
305
|
INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
|
306
|
INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
|
307
|
WHERE C.OUT_ID = @p_OUT_ID
|
308
|
))
|
309
|
BEGIN
|
310
|
UPDATE B SET B.QTY_REAL = B.QTY_REAL - A.QTY, B.QTY_TEMP = B.QTY_TEMP + A.QTY
|
311
|
FROM MW_OUT_DT A
|
312
|
INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
|
313
|
WHERE A.OUT_ID = @p_OUT_ID
|
314
|
END
|
315
|
COMMIT TRANSACTION;
|
316
|
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
|
317
|
RETURN '0';
|
318
|
ABORT:
|
319
|
BEGIN
|
320
|
CLOSE XmlData;
|
321
|
DEALLOCATE XmlData;
|
322
|
ROLLBACK TRANSACTION;
|
323
|
SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
|
324
|
RETURN '-1';
|
325
|
END;
|
326
|
GO
|
327
|
|
328
|
|
329
|
ALTER PROCEDURE dbo.MW_OUT_KSV_KT_App
|
330
|
@p_OUT_ID VARCHAR(15) =NULL,
|
331
|
@p_CHECKER_ID VARCHAR(100) =NULL,
|
332
|
@p_APPROVE_DT VARCHAR(20) =NULL,
|
333
|
@p_XmlData XML=NULL
|
334
|
AS
|
335
|
DECLARE @OUT_ID VARCHAR(15) =NULL,@OUT_DT_ID VARCHAR(15) =NULL,
|
336
|
@BRN_ID VARCHAR(15) =NULL,
|
337
|
@DEPT_ID VARCHAR(20)=NULL,
|
338
|
@MAST_BAL_ID VARCHAR(15) =NULL,
|
339
|
@CUST_NAME NVARCHAR(200) =NULL,
|
340
|
@QTY DECIMAL(18,2)=NULL,
|
341
|
@PRICE NUMERIC(18, 0) =NULL,
|
342
|
@TOTAL_AMT NUMERIC(18, 2) =NULL,
|
343
|
@NOTES NVARCHAR(1000) =NULL,
|
344
|
@TO_BRN_ID VARCHAR(15) =NULL,
|
345
|
@TO_DEPT_ID VARCHAR(15) =NULL;
|
346
|
DECLARE @hdoc INT;
|
347
|
DECLARE @INDEX INT =0
|
348
|
DECLARE @p_ID_MAS_BAL VARCHAR(15);
|
349
|
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
|
350
|
|
351
|
DECLARE @C_TO_BRN_ID VARCHAR(15), @C_TO_DEP_ID VARCHAR(15)
|
352
|
|
353
|
DECLARE XmlData CURSOR FOR
|
354
|
SELECT *
|
355
|
FROM
|
356
|
OPENXML(@hdoc, '/Root/XmlData', 2)
|
357
|
WITH(
|
358
|
OUT_ID VARCHAR(15),
|
359
|
OUT_DT_ID VARCHAR(15),
|
360
|
MAST_BAL_ID VARCHAR(15),
|
361
|
CUST_NAME NVARCHAR(200),
|
362
|
QTY DECIMAL(18,2),
|
363
|
PRICE NUMERIC(18, 0),
|
364
|
TOTAL_AMT NUMERIC(18, 2),
|
365
|
NOTES NVARCHAR(1000),
|
366
|
TO_BRN_ID VARCHAR(15),
|
367
|
TO_DEPT_ID VARCHAR(15)
|
368
|
);
|
369
|
OPEN XmlData;
|
370
|
BEGIN TRANSACTION;
|
371
|
|
372
|
--Insert XmlData
|
373
|
--DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID
|
374
|
DECLARE @p_ID VARCHAR(15);
|
375
|
FETCH NEXT FROM XmlData
|
376
|
INTO @OUT_ID,@OUT_DT_ID,
|
377
|
@MAST_BAL_ID,
|
378
|
@CUST_NAME,
|
379
|
@QTY,
|
380
|
@PRICE,
|
381
|
@TOTAL_AMT,
|
382
|
@NOTES,
|
383
|
@TO_BRN_ID,
|
384
|
@TO_DEPT_ID;
|
385
|
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0;
|
386
|
DECLARE @l_SUM_TOTAL_AMT NUMERIC(18, 2)=0;
|
387
|
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
|
388
|
|
389
|
IF(@@FETCH_STATUS=-1)BEGIN
|
390
|
CLOSE XmlData
|
391
|
DEALLOCATE XmlData
|
392
|
ROLLBACK TRANSACTION;
|
393
|
SELECT '-1' AS Result,
|
394
|
@p_OUT_ID OUT_ID,
|
395
|
N'Vui lòng duyệt lại sau khi dữ liệu được load hoàn tất' ErrorDesc;
|
396
|
RETURN '-1';
|
397
|
END;
|
398
|
|
399
|
IF((SELECT mo.STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID)<> 'KSV_KT_APP')
|
400
|
BEGIN
|
401
|
ROLLBACK TRANSACTION
|
402
|
SELECT '-1' as Result, '' OUT_ID, N'Phiếu xuất chưa đến bước duyệt bạn không được phép cập nhật thông tin.' ErrorDesc
|
403
|
RETURN '-1'
|
404
|
END
|
405
|
|
406
|
IF NOT EXISTS(SELECT tugr.ROLE_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr WHERE tugr.ROLE_ID = 'KSV')
|
407
|
BEGIN
|
408
|
ROLLBACK TRANSACTION
|
409
|
SELECT '-1' as Result, '' OUT_ID, N'Người dùng không có quyền duyệt phiếu này.' ErrorDesc
|
410
|
RETURN '-1'
|
411
|
END
|
412
|
-- 24-03-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
|
413
|
IF((SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
|
414
|
BEGIN
|
415
|
CLOSE XmlData
|
416
|
DEALLOCATE XmlData
|
417
|
ROLLBACK TRANSACTION
|
418
|
SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Giao dịch đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
|
419
|
RETURN '-1'
|
420
|
END
|
421
|
|
422
|
DECLARE @CORE_NOTE NVARCHAR(1000) = NULL,
|
423
|
@MATERIAL_ID VARCHAR(15) = NULL,
|
424
|
@VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0),
|
425
|
@FR_BRN_ID varchar(15) = NULL,
|
426
|
@FR_DEPT_ID varchar(15) = NULL,
|
427
|
@WARE_ID VARCHAR(15) = NULL
|
428
|
DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50), @TCCT VARCHAR(50)
|
429
|
DECLARE @l_DEP_CODE VARCHAR(15) = NULL;
|
430
|
DECLARE @l_D_BRANCH_CODE VARCHAR(15) = NULL;
|
431
|
DECLARE @l_C_BRANCH_CODE VARCHAR(15) = NULL
|
432
|
DECLARE @l_MAT_CODE VARCHAR(15) = NULL;
|
433
|
DECLARE @l_WARE_ID VARCHAR(15) = NULL;
|
434
|
DECLARE @MATERIAL_ACCNO VARCHAR(15) = NULL;
|
435
|
DECLARE @BR_CODE VARCHAR(25) = NULL;
|
436
|
DECLARE @DP_CODE VARCHAR(25) = NULL;
|
437
|
DECLARE @l_MAKER_ID VARCHAR(25) = NULL;
|
438
|
DECLARE @p_MAKER_ID VARCHAR(25) = NULL;
|
439
|
DECLARE @p_REQ_USER VARCHAR(25) = NULL;
|
440
|
--- GEN ID KSV ĐỂ QUẢN LÝ GD HẠCH TOÁN BƯỚC KSV ---
|
441
|
DECLARE @p_OUT_KSV_ID VARCHAR(15);
|
442
|
EXEC SYS_CodeMasters_Gen 'OUT_KSV_ID', @p_OUT_KSV_ID OUT;
|
443
|
|
444
|
----- SO GIAO DICH
|
445
|
DECLARE @l_TRN_NO VARCHAR(15), @l_MAKER_KT VARCHAR(100), @l_ETP_ID VARCHAR(20), @l_ET_ID VARCHAR(20), @BR_CR_TYPE VARCHAR(20), @PYC VARCHAR(20)
|
446
|
SELECT @p_MAKER_ID = A.MAKER_ID, @WARE_ID = A.WARE_ID, @BR_CR_TYPE = CB.BRANCH_TYPE, @CORE_NOTE = A.NOTES, @PYC = A.MW_REQ_ID, @p_REQ_USER = A.REQ_USER
|
447
|
FROM MW_OUT A LEFT JOIN CM_BRANCH CB ON A.BRN_ID = CB.BRANCH_ID
|
448
|
WHERE A.OUT_ID = @p_OUT_ID
|
449
|
|
450
|
-------- NẾU CÓ PYC THÌ LẤY NGƯỜI TẠO PHIẾU LÀM NVHT, KHONG THÌ LẤY NGƯỜI YÊU CẦU ELSE MAKER
|
451
|
IF @PYC IS NOT NULL AND @PYC <> ''
|
452
|
BEGIN
|
453
|
SET @l_MAKER_ID = (SELECT MR.MAKER_ID FROM MW_REQ MR WHERE MR.REQ_ID = @PYC)
|
454
|
END
|
455
|
ELSE SET @l_MAKER_ID = ISNULL(@p_REQ_USER,@p_MAKER_ID)
|
456
|
|
457
|
EXEC ENTRIES_POST_GEN_NO_MW @p_BRANCH_ID = @l_MAKER_ID
|
458
|
,@p_TRN_DATE = @p_APPROVE_DT
|
459
|
,@p_KeyGen = @l_TRN_NO OUT
|
460
|
-----------------
|
461
|
|
462
|
--Kiểm tra Kho nếu kho đặt biệt check đã yêu cầu hạch toán chưa nếu chưa yêu cầu chọn hạch toán mới được qua kế toán
|
463
|
DECLARE @WARE_CODE VARCHAR(25),@ListWare_CODE VARCHAR(500);
|
464
|
SELECT @WARE_CODE=cw.WARE_CODE FROM MW_OUT MO LEFT JOIN CM_WARE cw ON MO.WARE_ID = cw.WARE_ID WHERE MO.OUT_ID = @p_OUT_ID
|
465
|
SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
|
466
|
|
467
|
IF(EXISTS(SELECT 1
|
468
|
FROM STRING_SPLIT(@ListWare_CODE,',') A
|
469
|
INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
|
470
|
INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
|
471
|
WHERE C.OUT_ID = @p_OUT_ID
|
472
|
))
|
473
|
BEGIN
|
474
|
UPDATE B SET B.QTY_BALANCE = B.QTY_BALANCE - A.QTY, B.QTY_REAL = B.QTY_REAL - A.QTY, B.QTY_TEMP = B.QTY_TEMP + A.QTY, B.TOTAL_AMT = B.TOTAL_AMT - A.TOTAL_AMT
|
475
|
FROM MW_OUT_DT A
|
476
|
INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
|
477
|
WHERE A.OUT_ID = @p_OUT_ID
|
478
|
END
|
479
|
|
480
|
IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE, ',') WHERE VALUE = @WARE_CODE))
|
481
|
BEGIN
|
482
|
IF EXISTS(SELECT 1
|
483
|
FROM MW_OUT_DT A
|
484
|
LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
|
485
|
WHERE A.OUT_ID = @p_OUT_ID
|
486
|
AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
|
487
|
OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
|
488
|
)
|
489
|
)
|
490
|
BEGIN
|
491
|
UPDATE [dbo].[MW_OUT]
|
492
|
SET AUTH_STATUS='A',
|
493
|
CHECKER_ID=@p_CHECKER_ID,
|
494
|
STATUS = CASE WHEN (SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1' THEN 'REQ_ACOUNT' ELSE 'OUT_KT' END,
|
495
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
496
|
, OUT_KSV_ID = @p_OUT_KSV_ID
|
497
|
WHERE [OUT_ID]=@p_OUT_ID;
|
498
|
END
|
499
|
ELSE
|
500
|
BEGIN
|
501
|
UPDATE [dbo].[MW_OUT]
|
502
|
SET AUTH_STATUS='A',
|
503
|
CHECKER_ID=@p_CHECKER_ID,
|
504
|
STATUS ='CONFIRM',
|
505
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
506
|
, OUT_KSV_ID = @p_OUT_KSV_ID
|
507
|
WHERE [OUT_ID]=@p_OUT_ID;
|
508
|
END
|
509
|
|
510
|
IF @@Error<>0 GOTO ABORT;
|
511
|
WHILE @@FETCH_STATUS=0
|
512
|
BEGIN
|
513
|
SET @INDEX = @INDEX+1
|
514
|
-- 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)
|
515
|
IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
|
516
|
BEGIN
|
517
|
CLOSE XmlData
|
518
|
DEALLOCATE XmlData
|
519
|
ROLLBACK TRANSACTION
|
520
|
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
|
521
|
RETURN '-1'
|
522
|
END
|
523
|
|
524
|
-- UPDATE MW_MAST_BAL KHI TDV DUYỆT LÔ VẬT LIỆU SẼ TRỪ SỐ LƯỢNG HỆ THỐNG, TRỪ SỐ LƯỢNG THỰC TẾ, CỘNG SỐ LƯỢNG TREO
|
525
|
-- UPDATE MW_MAST_BAL SET QTY_BALANCE = QTY_BALANCE-@QTY, QTY_REAL = QTY_REAL-@QTY, QTY_TEMP = QTY_TEMP+@QTY WHERE MAST_BAL_ID = @MAST_BAL_ID
|
526
|
-- IF @@Error<>0 GOTO ABORT;
|
527
|
|
528
|
------------- HACH TOAN BUOC DUYET KSV XUAT KHO ------------
|
529
|
SELECT @EXP_ACCTNO = B.EXP_ACCTNO, @VAT_ACCTNO = B.VAT_ACCTNO , @l_MAT_CODE = B.MATERIAL_CODE
|
530
|
FROM MW_MAST_BAL A
|
531
|
LEFT JOIN MW_MATERIAL B ON A.MATERIAL_ID = B.MATERIAL_ID
|
532
|
WHERE A.MAST_BAL_ID = @MAST_BAL_ID
|
533
|
|
534
|
|
535
|
DECLARE @FR_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = (SELECT MO.BRN_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID))
|
536
|
DECLARE @FR_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = (SELECT MO.DEPT_ID FROM MW_OUT MO WHERE MO.OUT_ID = @p_OUT_ID))
|
537
|
DECLARE @TO_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @TO_BRN_ID)
|
538
|
DECLARE @TO_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @TO_DEPT_ID)
|
539
|
|
540
|
----------------HACH TOAN 05/09/2023 KHIEMCHG------------------
|
541
|
-------------------CHECK THEO LOAI KHO-------------------------
|
542
|
DECLARE @l_HS_BRANCH_CODE VARCHAR(20) = (SELECT CB.BRANCH_CODE FROM CM_BRANCH CB WHERE CB.BRANCH_TYPE = 'HS')
|
543
|
DECLARE @BRANCH_TYPE VARCHAR(20) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @TO_BRN_ID)
|
544
|
SET @WARE_CODE = (SELECT CW.WARE_CODE FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
|
545
|
DECLARE @WARE_TRANSFER_NO VARCHAR(20) = (SELECT TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE WARE_CODE = @WARE_CODE AND ACC_TYPE LIKE 'TRANS_%')
|
546
|
DECLARE @WARE_ACCNO VARCHAR(20) = (SELECT TOP 1 CW.ACC_ACCOUNTING FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
|
547
|
DECLARE @ACCNO_KSV_OUT VARCHAR(20) = (SELECT TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE ACC_TYPE = 'KSV_OUT')
|
548
|
|
549
|
--LAY MA BRANCH CODE
|
550
|
-- DECLARE @DB_ID VARCHAR(15) = (SELECT CW.DEP_ID FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
|
551
|
-- SELECT @DP_CODE = CD.DEP_CODE, @BR_CODE = CB.BRANCH_CODE
|
552
|
-- FROM CM_DEPARTMENT CD LEFT JOIN CM_BRANCH CB ON CD.BRANCH_ID = CB.BRANCH_ID
|
553
|
-- WHERE CD.DEP_ID = @DB_ID
|
554
|
|
555
|
BEGIN
|
556
|
--- TODO: NỢ
|
557
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
|
558
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
559
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
560
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT_KSV', @p_OUT_KSV_ID,@FR_BRN_CODE, @ACCNO_KSV_OUT, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_APPROVE_DT, 103), @l_MAKER_ID, @p_CHECKER_ID, @FR_DEP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
561
|
IF @@Error <> 0 GOTO ABORT;
|
562
|
|
563
|
--- TODO: CÓ
|
564
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
|
565
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
566
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT_KSV', @p_OUT_KSV_ID,@FR_BRN_CODE, @WARE_ACCNO, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_APPROVE_DT, 103), @l_MAKER_ID, @p_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
567
|
IF @@Error <> 0 GOTO ABORT;
|
568
|
|
569
|
END
|
570
|
|
571
|
FETCH NEXT FROM XmlData
|
572
|
INTO @OUT_ID,@OUT_DT_ID,
|
573
|
@MAST_BAL_ID,
|
574
|
@CUST_NAME,
|
575
|
@QTY,
|
576
|
@PRICE,
|
577
|
@TOTAL_AMT,
|
578
|
@NOTES,
|
579
|
@TO_BRN_ID,
|
580
|
@TO_DEPT_ID;
|
581
|
END;
|
582
|
CLOSE XmlData;
|
583
|
DEALLOCATE XmlData;
|
584
|
|
585
|
|
586
|
DECLARE CUR_CONFIRM CURSOR FOR
|
587
|
SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
588
|
FROM MW_OUT_DT
|
589
|
WHERE OUT_ID = @p_OUT_ID
|
590
|
GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
591
|
OPEN CUR_CONFIRM
|
592
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
593
|
WHILE @@FETCH_STATUS = 0
|
594
|
BEGIN
|
595
|
DECLARE @p_OUT_CONF_ID VARCHAR(15);
|
596
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID OUT;
|
597
|
IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
|
598
|
BEGIN
|
599
|
INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)
|
600
|
VALUES (@p_OUT_CONF_ID,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
|
601
|
END
|
602
|
|
603
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
604
|
END
|
605
|
CLOSE CUR_CONFIRM
|
606
|
DEALLOCATE CUR_CONFIRM
|
607
|
--Thêm lịch sử
|
608
|
INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
609
|
VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Hành chính duyệt phiếu',N'Hành chính duyệt phiếu')
|
610
|
|
611
|
END
|
612
|
ELSE
|
613
|
BEGIN
|
614
|
UPDATE [dbo].[MW_OUT]
|
615
|
SET AUTH_STATUS='A',
|
616
|
CHECKER_ID=@p_CHECKER_ID, STATUS ='CONFIRM',
|
617
|
--APPROVE_DT=CONVERT(DATE, @p_APPROVE_DT, 103)
|
618
|
-- LUCTV 13092019 CHINH SUA LAI NGAY DUYET DE LAY DUNG DINH DANG NGAY THANG NAM H PHUT GIAY
|
619
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
620
|
WHERE [OUT_ID]=@p_OUT_ID;
|
621
|
|
622
|
IF @@Error<>0 GOTO ABORT;
|
623
|
WHILE @@FETCH_STATUS=0
|
624
|
BEGIN
|
625
|
SET @INDEX = @INDEX+1
|
626
|
-- 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)
|
627
|
IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
|
628
|
BEGIN
|
629
|
CLOSE XmlData
|
630
|
DEALLOCATE XmlData
|
631
|
ROLLBACK TRANSACTION
|
632
|
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
|
633
|
RETURN '-1'
|
634
|
END
|
635
|
--Update MW_Mast_BAL khi TDV duyệt
|
636
|
-- UPDATE MW_MAST_BAL SET QTY_BALANCE = (QTY_BALANCE-@QTY), QTY_REAL = (QTY_REAL-@QTY), QTY_TEMP = (QTY_TEMP+@QTY) WHERE MAST_BAL_ID = @MAST_BAL_ID
|
637
|
|
638
|
|
639
|
DECLARE CUR_CONFIRM CURSOR FOR
|
640
|
SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
641
|
FROM MW_OUT_DT
|
642
|
WHERE OUT_ID = @p_OUT_ID
|
643
|
GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
644
|
OPEN CUR_CONFIRM
|
645
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
646
|
WHILE @@FETCH_STATUS = 0
|
647
|
BEGIN
|
648
|
DECLARE @p_OUT_CONF_ID_1 VARCHAR(15);
|
649
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_1 OUT;
|
650
|
IF(NOT EXISTS(SELECT 1 FROM MW_OUT_CONF WHERE OUT_ID = @p_OUT_ID AND ISNULL(BRANCH_RECIVE,'') = ISNULL(@C_TO_BRN_ID,'') AND ISNULL(DEP_RECIVE,'') = ISNULL(@C_TO_DEP_ID,'')))
|
651
|
BEGIN
|
652
|
INSERT INTO MW_OUT_CONF (ID, OUT_ID, BRANCH_RECIVE, DEP_RECIVE, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, BRANCH_CREATE, RECORD_STATUS,STATUS)
|
653
|
VALUES (@p_OUT_CONF_ID_1,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
|
654
|
END
|
655
|
|
656
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
657
|
END
|
658
|
CLOSE CUR_CONFIRM
|
659
|
DEALLOCATE CUR_CONFIRM
|
660
|
|
661
|
|
662
|
|
663
|
INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
664
|
VALUES(@p_OUT_ID,'APPR',@p_CHECKER_ID,GETDATE(), N'Kiểm soát viên xuất kho.',N'Kiểm soát viên xuất kho duyệt phiếu thành công.')
|
665
|
|
666
|
IF @@Error<>0 GOTO ABORT;
|
667
|
FETCH NEXT FROM XmlData
|
668
|
INTO @OUT_ID,
|
669
|
@MAST_BAL_ID,
|
670
|
@CUST_NAME,
|
671
|
@QTY,
|
672
|
@PRICE,
|
673
|
@TOTAL_AMT,
|
674
|
@NOTES,
|
675
|
@TO_BRN_ID,
|
676
|
@TO_DEPT_ID;
|
677
|
END;
|
678
|
CLOSE XmlData;
|
679
|
DEALLOCATE XmlData;
|
680
|
END
|
681
|
|
682
|
COMMIT TRANSACTION;
|
683
|
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
|
684
|
RETURN '0';
|
685
|
ABORT:
|
686
|
BEGIN
|
687
|
CLOSE XmlData;
|
688
|
DEALLOCATE XmlData;
|
689
|
ROLLBACK TRANSACTION;
|
690
|
SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
|
691
|
RETURN '-1';
|
692
|
END;
|
693
|
GO
|
694
|
|
695
|
|
696
|
|
697
|
ALTER PROCEDURE dbo.MW_OUT_KT_App
|
698
|
@p_OUT_ID VARCHAR(15) = NULL,
|
699
|
@p_KT_CHECKER_ID VARCHAR(100) = NULL,
|
700
|
@p_KT_APPROVE_DT VARCHAR(20) = NULL,
|
701
|
@p_XmlData XML = NULL
|
702
|
AS
|
703
|
DECLARE
|
704
|
@OUT_DT_ID VARCHAR(15) = NULL,@ERROR NVARCHAR(500),
|
705
|
@TOTAL_AMT NUMERIC(18, 0) = NULL,
|
706
|
@BRANCH_CREATE VARCHAR(15) = NULL,
|
707
|
@CORE_NOTE NVARCHAR(1000) = NULL,
|
708
|
@KT_MAKER_ID VARCHAR(100) = NULL,
|
709
|
@BRANCH_ID VARCHAR(15) = NULL,
|
710
|
@DEPT_ID VARCHAR(15) = NULL,
|
711
|
@PRICE_ID VARCHAR(15) = NULL,
|
712
|
@GROUP_ID VARCHAR(15) = NULL,
|
713
|
@MATERIAL_ID VARCHAR(15) = NULL,@TO_BRN_ID VARCHAR(15) = NULL,@TO_DEPT_ID VARCHAR(15) = NULL,
|
714
|
@IS_PROMO VARCHAR(1) = NULL, @VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0),
|
715
|
--01-03-2019 : LUCTV BO SUNG NHUNG BIEN LIEN QUAN TOI PHAN UPDATE-INSERT KHI DUYET
|
716
|
@BRN_ID VARCHAR(15) =NULL,
|
717
|
@MAST_BAL_ID VARCHAR(15) =NULL,
|
718
|
@CUST_NAME NVARCHAR(200) =NULL,
|
719
|
@QTY DECIMAL(18,2)=NULL,
|
720
|
@PRICE NUMERIC(18, 0) =NULL,
|
721
|
@NOTES NVARCHAR(500) =NULL,
|
722
|
@UNIT_RECEIVE VARCHAR(50)= NULL,
|
723
|
@UNIT_CHARGE VARCHAR(50)= NULL,
|
724
|
@UNIT_PAY VARCHAR(50)= NULL,
|
725
|
@QTY_RECEIVE DECIMAL(18,2) = NULL,
|
726
|
@QTY_DAMAGED DECIMAL(18,2) = NULL,
|
727
|
@QTY_LOSS DECIMAL(18,2) = NULL,
|
728
|
@RECEIVE_NOTES NVARCHAR(1000) = NULL,
|
729
|
@DEP_RECEIVE VARCHAR(15) = NULL,
|
730
|
@DEP_PAY VARCHAR(15) = NULL
|
731
|
|
732
|
DECLARE @l_DEP_CODE VARCHAR(15) = NULL;
|
733
|
DECLARE @l_D_BRANCH_CODE VARCHAR(15) = NULL;
|
734
|
DECLARE @l_C_BRANCH_CODE VARCHAR(15) = NULL
|
735
|
DECLARE @l_MAT_CODE VARCHAR(15) = NULL;
|
736
|
DECLARE @l_WARE_ID VARCHAR(15) = NULL;
|
737
|
DECLARE @MATERIAL_ACCNO VARCHAR(15) = NULL;
|
738
|
DECLARE @ListWare_CODE VARCHAR(500);
|
739
|
SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
|
740
|
DECLARE XmlData CURSOR FOR
|
741
|
SELECT A.OUT_DT_ID, A.TOTAL_AMT, A.TO_DEPT_ID, B.BRANCH_CREATE, B.CORE_NOTE,
|
742
|
B.KT_MAKER_ID, B.BRN_ID, B.DEPT_ID, D.PRICE_ID, E.GROUP_ID, E.MATERIAL_ID, A.IS_BCT /*E.IS_PROMO*/, A.VAT, A.PRICE_VAT,A.QTY,
|
743
|
A.TO_BRN_ID, A.MAST_BAL_ID,A.CUST_NAME,A.QTY,A.PRICE,A.NOTES, A.COST_ACC,A.UNIT_RECEIVE,A.UNIT_CHARGE, A.UNIT_PAY, A.QTY_RECEIVE, A.QTY_DAMAGED, A.QTY_LOSS, A.RECEIVE_NOTES
|
744
|
, A.DEP_RECEIVE, A.DEP_CHARGE
|
745
|
FROM MW_OUT_DT A
|
746
|
INNER JOIN MW_OUT B ON A.OUT_ID = B.OUT_ID
|
747
|
INNER JOIN MW_MAST_BAL C ON A.MAST_BAL_ID = C.MAST_BAL_ID
|
748
|
INNER JOIN MW_MAST_PRICE D ON D.PRICE_ID = C.PRICE_ID
|
749
|
INNER JOIN MW_IN E ON D.MATERIAL_ID = E.IN_ID
|
750
|
WHERE A.OUT_ID = @p_OUT_ID
|
751
|
|
752
|
DECLARE @ALLOCTED VARCHAR(1000), @QTY_ALLOCTION VARCHAR(1000),@MW_REQ_ID VARCHAR(1000)
|
753
|
DECLARE @p_ID_MAS_BAL VARCHAR(15);
|
754
|
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0,@BR_CODE VARCHAR(15),@DP_CODE VARCHAR(25)
|
755
|
DECLARE @l_REMAIN_AMT NUMERIC(18, 2)=0;
|
756
|
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
|
757
|
DECLARE @INDEX INT =0
|
758
|
SELECT @MW_REQ_ID=mo.MW_REQ_ID FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID
|
759
|
|
760
|
DECLARE @MW_OUT_QTY TABLE ( MAST_BAL_ID VARCHAR(50), QTY_OUT VARCHAR(50));
|
761
|
|
762
|
OPEN XmlData;
|
763
|
|
764
|
BEGIN TRANSACTION;
|
765
|
|
766
|
IF((SELECT A.STATUS FROM MW_OUT A WHERE OUT_ID = @p_OUT_ID) <> 'SendAppKT')
|
767
|
BEGIN
|
768
|
ROLLBACK TRANSACTION
|
769
|
SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Chưa đến bước duyệt vui lòng gửi duyệt' ErrorDesc
|
770
|
RETURN '-1'
|
771
|
END
|
772
|
-- 02-04-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
|
773
|
IF((SELECT KT_AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
|
774
|
BEGIN
|
775
|
CLOSE XmlData
|
776
|
DEALLOCATE XmlData
|
777
|
ROLLBACK TRANSACTION
|
778
|
SELECT '-1' as Result,@p_OUT_ID OUT_ID, N'Giao dịch đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
|
779
|
RETURN '-1'
|
780
|
END
|
781
|
|
782
|
UPDATE [dbo].[MW_OUT]
|
783
|
SET KT_AUTH_STATUS = 'A',
|
784
|
KT_APPROVE_DT = CONVERT(DATETIME, @p_KT_APPROVE_DT, 103),
|
785
|
KT_CHECKER_ID = @p_KT_CHECKER_ID,
|
786
|
STATUS = 'DONE'
|
787
|
WHERE [OUT_ID] = @p_OUT_ID;
|
788
|
IF @@Error <> 0
|
789
|
GOTO ABORT;
|
790
|
|
791
|
----- SO GIAO DICH
|
792
|
DECLARE @l_TRN_NO VARCHAR(15), @l_MAKER_KT VARCHAR(100), @l_ETP_ID VARCHAR(20), @l_ET_ID VARCHAR(20), @BR_CR_TYPE VARCHAR(20)
|
793
|
SELECT @KT_MAKER_ID = KT_MAKER_ID, @l_WARE_ID = WARE_ID, @BR_CR_TYPE = ISNULL(CB.BRANCH_TYPE, CB1.BRANCH_TYPE)
|
794
|
FROM MW_OUT A
|
795
|
LEFT JOIN CM_BRANCH CB ON A.BRANCH_CREATE = CB.BRANCH_ID
|
796
|
LEFT JOIN CM_BRANCH CB1 ON A.BRN_ID = CB1.BRANCH_ID
|
797
|
WHERE OUT_ID =@p_OUT_ID
|
798
|
EXEC ENTRIES_POST_GEN_NO_MW @p_BRANCH_ID = @KT_MAKER_ID
|
799
|
,@p_TRN_DATE = @p_KT_APPROVE_DT
|
800
|
,@p_KeyGen = @l_TRN_NO OUT
|
801
|
-----------------
|
802
|
|
803
|
--Insert XmlData
|
804
|
--DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID
|
805
|
DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50)
|
806
|
--Kiểm tra phiếu xuất nếu có phiếu yêu cầu thì cập nhật MW_REQ_DT
|
807
|
|
808
|
IF(EXISTS(SELECT 1
|
809
|
FROM STRING_SPLIT(@ListWare_CODE,',') A
|
810
|
INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
|
811
|
INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
|
812
|
WHERE C.OUT_ID = @p_OUT_ID
|
813
|
))
|
814
|
BEGIN
|
815
|
UPDATE B SET B.QTY_TEMP = B.QTY_TEMP - A.QTY
|
816
|
FROM MW_OUT_DT A
|
817
|
INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
|
818
|
WHERE A.OUT_ID = @p_OUT_ID
|
819
|
END
|
820
|
ELSE
|
821
|
BEGIN
|
822
|
UPDATE B SET B.QTY_TEMP = B.QTY_TEMP - A.QTY, B.QTY_BALANCE = B.QTY_BALANCE - A.QTY
|
823
|
FROM MW_OUT_DT A
|
824
|
INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
|
825
|
WHERE A.OUT_ID = @p_OUT_ID
|
826
|
END
|
827
|
|
828
|
FETCH NEXT FROM XmlData INTO @OUT_DT_ID, @TOTAL_AMT,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID ,@IS_PROMO, @VAT, @PRICE_VAT,@QTY,
|
829
|
@TO_BRN_ID, @MAST_BAL_ID,@CUST_NAME,@QTY,@PRICE,@NOTES,@EXP_ACCTNO,@UNIT_RECEIVE,@UNIT_CHARGE,@UNIT_PAY,@QTY_RECEIVE,@QTY_DAMAGED,@QTY_LOSS,@RECEIVE_NOTES, @DEP_RECEIVE, @DEP_PAY
|
830
|
|
831
|
WHILE @@FETCH_STATUS = 0
|
832
|
BEGIN
|
833
|
SET @MATERIAL_ACCTNO = @EXP_ACCTNO
|
834
|
-------- 01/03/2018 LUCTV: EDIT CODE KE TOAN DUYET THI MOI PHAT SINH UPDATE DU LIEU
|
835
|
SELECT @l_SUM_QTY_BALANCE=SUM(QTY_BALANCE),
|
836
|
@l_REMAIN_AMT=SUM(TOTAL_AMT)
|
837
|
FROM MW_MAST_BAL
|
838
|
WHERE MAST_BAL_ID=@MAST_BAL_ID;/*PRICE_ID=(SELECT PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)AND */
|
839
|
|
840
|
SET @INDEX = @INDEX+1
|
841
|
-- 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)
|
842
|
IF(@QTY > @l_SUM_QTY_BALANCE) /*(SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))*/
|
843
|
BEGIN
|
844
|
CLOSE XmlData
|
845
|
DEALLOCATE XmlData
|
846
|
ROLLBACK TRANSACTION
|
847
|
SELECT '-1' as Result, @p_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
|
848
|
RETURN '-1'
|
849
|
END
|
850
|
IF((SELECT IS_DONE FROM MW_REQ WHERE REQ_ID=@MW_REQ_ID) ='1')
|
851
|
BEGIN
|
852
|
ROLLBACK TRANSACTION
|
853
|
SELECT '-1' as Result, N'Phiếu yêu cầu mã' OUT_ID, N'Đã hoàn thành cấp phát bạn không thể duyệt phiếu.' ErrorDesc
|
854
|
RETURN '-1'
|
855
|
END
|
856
|
|
857
|
SELECT @QTY_ALLOCTION=mrd.QUANTITY_ALLOCATION, @ALLOCTED=mrd.ALLOCATED FROM MW_REQ_DT mrd WHERE mrd.REQ_ID = @MW_REQ_ID AND mrd.MATERIAL_ID = @MATERIAL_ID
|
858
|
|
859
|
-- IF((@QTY-@l_SUM_QTY_BALANCE)=0)---LA LO CUOI CUNG
|
860
|
-- BEGIN
|
861
|
-- --SET @l_TOTAL_AMT=@l_TOTAL_AMT-@l_SUM_TOTAL_AMT; --THIEUVQ 070120 --THUANTM THÊM CẬP NHẬT SỐ LƯỢNG HỆ THỐNG
|
862
|
-- SET @TOTAL_AMT = @l_REMAIN_AMT; --THIEUVQ 070120
|
863
|
-- UPDATE MW_MAST_BAL
|
864
|
-- SET TOTAL_AMT= 0, --TOTAL_AMT-@TOTAL_AMT,--THIEUVQ 070120
|
865
|
-- QTY_BALANCE= 0 --QTY_BALANCE-@QTY--THIEUVQ 070120
|
866
|
-- ,QTY_REAL= 0 --QTY_BALANCE-@QTY--THIEUVQ 070120
|
867
|
-- WHERE MAST_BAL_ID=@MAST_BAL_ID;
|
868
|
--
|
869
|
-- UPDATE MW_MAST_BAL SET QTY_BALANCE = (QTY_BALANCE-@QTY), QTY_REAL = (QTY_REAL-@QTY), QTY_TEMP = (QTY_TEMP+@QTY) WHERE MAST_BAL_ID = @MAST_BAL_ID
|
870
|
--
|
871
|
-- END;
|
872
|
-- ELSE
|
873
|
-- BEGIN
|
874
|
-- IF @TOTAL_AMT > @l_REMAIN_AMT SET @TOTAL_AMT = @l_REMAIN_AMT --THIEUVQ 070120
|
875
|
-- UPDATE MW_MAST_BAL
|
876
|
-- SET TOTAL_AMT=TOTAL_AMT-@TOTAL_AMT,
|
877
|
-- QTY_BALANCE=QTY_BALANCE-@QTY,
|
878
|
-- QTY_REAL=QTY_REAL-@QTY
|
879
|
-- WHERE MAST_BAL_ID=@MAST_BAL_ID;
|
880
|
--
|
881
|
-- --Cập nhật Số lượng treo khi KT duyệt
|
882
|
-- --UPDATE MW_MAST_BAL SET QTY_TEMP= QTY_TEMP-@QTY WHERE MAST_BAL_ID=@MAST_BAL_ID
|
883
|
--
|
884
|
-- END;
|
885
|
|
886
|
EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID_MAS_BAL OUT;
|
887
|
INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, PRICE, TOTAL_AMT)
|
888
|
VALUES(@p_ID_MAS_BAL, @p_OUT_ID, @MAST_BAL_ID, (SELECT KT_APPROVE_DT FROM MW_OUT WHERE OUT_ID=@p_OUT_ID), (SELECT TRN_TIME FROM MW_OUT WHERE OUT_ID=@p_OUT_ID),
|
889
|
'O' , 'D', @QTY, @NOTES, @PRICE, @TOTAL_AMT);
|
890
|
----- END LUCTV 01-03-2019
|
891
|
|
892
|
---LAY TAI KHOAN HACH TOAN
|
893
|
SELECT /*@EXP_ACCTNO = EXP_ACCTNO,*/ @MATERIAL_ACCTNO = MATERIAL_ACCTNO, @VAT_ACCTNO = VAT_ACCTNO
|
894
|
FROM MW_MATERIAL WHERE MATERIAL_ID = @MATERIAL_ID
|
895
|
|
896
|
--LAY MA BRANCH CODE
|
897
|
SET @BR_CODE = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @UNIT_CHARGE)
|
898
|
SET @DP_CODE = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEP_PAY)
|
899
|
DECLARE @BR_CODE_X VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @BRANCH_ID)
|
900
|
DECLARE @DP_CODE_X VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEPT_ID)
|
901
|
|
902
|
----------------HACH TOAN 05/09/2023 KHIEMCHG------------------
|
903
|
-------------------CHECK THEO LOAI KHO-------------------------
|
904
|
DECLARE @l_HS_BRANCH_CODE VARCHAR(20) = (SELECT CB.BRANCH_CODE FROM CM_BRANCH CB WHERE CB.BRANCH_TYPE = 'HS')
|
905
|
DECLARE @BRANCH_TYPE VARCHAR(20) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @TO_BRN_ID)
|
906
|
DECLARE @WARE_CODE VARCHAR(20) = (SELECT CW.WARE_CODE FROM CM_WARE CW WHERE CW.WARE_ID = @l_WARE_ID)
|
907
|
DECLARE @WARE_ACCNO VARCHAR(20) = (SELECT CW.ACC_ACCOUNTING FROM CM_WARE CW WHERE CW.WARE_ID = @l_WARE_ID)
|
908
|
SELECT @l_MAT_CODE = A.MATERIAL_CODE, @MATERIAL_ACCNO = MG.EXP_ACCTNO
|
909
|
FROM MW_MATERIAL A
|
910
|
LEFT JOIN MW_GROUP MG ON A.GROUP_ID = MG.GROUP_ID
|
911
|
WHERE MATERIAL_ID = @MATERIAL_ID
|
912
|
DECLARE @ACC_VAT VARCHAR(20) = (SELECT TOP 1 EPAM.ACC_NO FROM ENTRIES_POST_ACCNO_MW EPAM WHERE EPAM.ACC_TYPE = 'ACC_VAT_PROMO_NEC')
|
913
|
DECLARE @ACC_TRANS VARCHAR(20) = (SELECT TOP 1 EPAM.ACC_NO FROM ENTRIES_POST_ACCNO_MW EPAM WHERE EPAM.ACC_TYPE = 'ASSET_CCLD_N')
|
914
|
DECLARE @ACCNO_KSV_OUT VARCHAR(20) = (SELECT TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE ACC_TYPE = 'KSV_OUT')
|
915
|
|
916
|
BEGIN
|
917
|
SET @BR_CODE = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @UNIT_CHARGE)
|
918
|
SET @DP_CODE = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @DEP_PAY)
|
919
|
END
|
920
|
--IF @WARE_CODE = '10AP' OR @WARE_CODE = '11VL' SET @WARE_ACCNO = @MATERIAL_ACCNO
|
921
|
--LAY MA BRANCH CODE
|
922
|
DECLARE @DB_ID VARCHAR(15) = (SELECT CW.DEP_ID FROM CM_WARE CW WHERE CW.WARE_ID = @l_WARE_ID)
|
923
|
-- SELECT @DP_CODE = CD.DEP_CODE, @BR_CODE = CB.BRANCH_CODE
|
924
|
-- FROM CM_DEPARTMENT CD LEFT JOIN CM_BRANCH CB ON CD.BRANCH_ID = CB.BRANCH_ID
|
925
|
-- WHERE CD.DEP_ID = @DB_ID
|
926
|
--- XUẤT SỬ DỤNG ĐỐI VỚI KHO QUÀ TẶNG KHÁCH HÀNG, KHO QUÀ TẶNG MARKETING, KHO QUÀ TẶNG NHÂN VIÊN
|
927
|
IF @WARE_CODE = '06QT' OR @WARE_CODE = '07TT' OR @WARE_CODE = '08NV'
|
928
|
BEGIN
|
929
|
IF @BRANCH_CREATE = @UNIT_CHARGE
|
930
|
BEGIN
|
931
|
--- TODO: NỢ
|
932
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
|
933
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
934
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
935
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
936
|
IF @@Error <> 0 GOTO ABORT;
|
937
|
|
938
|
--- TODO: CÓ
|
939
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
940
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
941
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACCNO_KSV_OUT , 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE_X, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
942
|
IF @@Error <> 0 GOTO ABORT;
|
943
|
|
944
|
-------- ĐI CHI PHÍ THUẾ VAT ---
|
945
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
946
|
--- TODO: NỢ
|
947
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
948
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
949
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D',@PRICE_VAT, 1,@PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
950
|
IF @@Error <> 0 GOTO ABORT;
|
951
|
|
952
|
--IF(@VAT > 0)
|
953
|
BEGIN
|
954
|
--- TODO: CÓ
|
955
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
956
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
957
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_VAT, 'VND', 'C',@PRICE_VAT, 1,@PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
958
|
IF @@Error <> 0 GOTO ABORT;
|
959
|
END
|
960
|
END
|
961
|
ELSE
|
962
|
BEGIN
|
963
|
--- TODO: NỢ
|
964
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
|
965
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
966
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
967
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO , 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
968
|
IF @@Error <> 0 GOTO ABORT;
|
969
|
|
970
|
--- TODO: CÓ 5199
|
971
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
972
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
973
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_TRANS, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
974
|
IF @@Error <> 0 GOTO ABORT;
|
975
|
|
976
|
|
977
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
978
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
979
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
980
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO , 'VND', 'D', @PRICE_VAT, 1, @PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
981
|
IF @@Error <> 0 GOTO ABORT;
|
982
|
--IF(@VAT > 0)
|
983
|
BEGIN
|
984
|
--- TODO: CÓ
|
985
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
986
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
987
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_VAT, 'VND', 'C',@PRICE_VAT, 1,@PRICE_VAT, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
988
|
IF @@Error <> 0 GOTO ABORT;
|
989
|
END
|
990
|
|
991
|
|
992
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
993
|
--- TODO: NỢ
|
994
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
995
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
996
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACC_TRANS, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
997
|
IF @@Error <> 0 GOTO ABORT;
|
998
|
--- TODO: CÓ
|
999
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
1000
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
1001
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACCNO_KSV_OUT , 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE_X, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
1002
|
IF @@Error <> 0 GOTO ABORT;
|
1003
|
|
1004
|
|
1005
|
END
|
1006
|
DECLARE @MAT_NAME NVARCHAR(1000), @UNIT NVARCHAR(50)
|
1007
|
SELECT @MAT_NAME = mm.MATERIAL_NAME, @UNIT = cu.UNIT_NAME FROM MW_MATERIAL mm
|
1008
|
LEFT JOIN CM_UNIT cu ON mm.UNIT_ID = cu.UNIT_ID
|
1009
|
WHERE mm.MATERIAL_CODE = @l_MAT_CODE
|
1010
|
|
1011
|
INSERT INTO MTTB_INVOICE_ITEMS_DETAIL (item_id, trn_ref_no, branch_code, trn_ccy, txn_date, total_fee, total_vat, total_txn, stt, service_name, unit, quantity, unit_price, total, record_stat, order_no, tienthue, tongtiensauthue, thuesuat, app_code, ex_ref, etp_id)
|
1012
|
VALUES (@l_ET_ID, '', @BR_CODE, 'VND', CONVERT(DATE, @p_KT_APPROVE_DT, 103), @QTY*@PRICE, @PRICE_VAT, @QTY*@PRICE + @PRICE_VAT, CONVERT(VARCHAR(8), @INDEX), @MAT_NAME, @UNIT, CONVERT(VARCHAR(255), @QTY), CONVERT(VARCHAR(255), @PRICE), CONVERT(VARCHAR(255), @QTY*@PRICE), 'O', @INDEX, CONVERT(VARCHAR(255), @PRICE_VAT), CONVERT(VARCHAR(255), @QTY*@PRICE + @PRICE_VAT), CONVERT(VARCHAR(255), @VAT), 'AMS_AMS', @p_OUT_ID, @l_ET_ID)
|
1013
|
END
|
1014
|
|
1015
|
ELSE
|
1016
|
BEGIN
|
1017
|
IF @BRANCH_CREATE = @UNIT_CHARGE
|
1018
|
BEGIN
|
1019
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID out
|
1020
|
--- TODO: NỢ
|
1021
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
1022
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
1023
|
VALUES (@l_ETP_ID, @l_ETP_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
1024
|
IF @@Error <> 0 GOTO ABORT;
|
1025
|
|
1026
|
--- TODO: CÓ
|
1027
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
1028
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
1029
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @WARE_ACCNO, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
1030
|
IF @@Error <> 0 GOTO ABORT;
|
1031
|
END
|
1032
|
ELSE IF @BRANCH_CREATE <> @UNIT_CHARGE
|
1033
|
BEGIN
|
1034
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID out
|
1035
|
--- TODO: NỢ
|
1036
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
1037
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
1038
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @EXP_ACCTNO /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, @DP_CODE, @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
1039
|
IF @@Error <> 0 GOTO ABORT;
|
1040
|
|
1041
|
--- TODO: CÓ
|
1042
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
1043
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
1044
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE, @ACC_TRANS, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
1045
|
IF @@Error <> 0 GOTO ABORT;
|
1046
|
|
1047
|
--- TODO: NỢ
|
1048
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
1049
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
1050
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
1051
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @ACC_TRANS /*@MATERIAL_ACCNO*/, 'VND', 'D', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
1052
|
IF @@Error <> 0 GOTO ABORT;
|
1053
|
|
1054
|
--- TODO: CÓ
|
1055
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID out
|
1056
|
INSERT INTO MW_ENTRIES_POST_SYNC (ETP_ID, ET_ID, TRN_TYPE, TRN_ID, AC_BRANCH, AC_NO, AC_CCY, DRCR_IND, FCY_AMOUNT, EXCH_RATE, LCY_AMOUNT, RELATED_REFERENCE, TRN_DT, USER_ID, AUTH_ID, DEPT_CD, DESC_TRANS,TRN_NO, WARE_CODE)
|
1057
|
VALUES (@l_ETP_ID, @l_ET_ID, 'MW_OUT', @p_OUT_ID,@BR_CODE_X, @WARE_ACCNO, 'VND', 'C', @QTY*@PRICE, 1, @QTY*@PRICE, @l_MAT_CODE,CONVERT(DATETIME, @p_KT_APPROVE_DT, 103), @KT_MAKER_ID, @p_KT_CHECKER_ID, '', @CORE_NOTE,@l_TRN_NO,@WARE_CODE);
|
1058
|
IF @@Error <> 0 GOTO ABORT;
|
1059
|
END
|
1060
|
END
|
1061
|
|
1062
|
----------------END HACH TOAN 05/09/2023 KHIEMCHG------------------
|
1063
|
|
1064
|
|
1065
|
FETCH NEXT FROM XmlData INTO @OUT_DT_ID, @TOTAL_AMT,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID ,@IS_PROMO , @VAT, @PRICE_VAT,@QTY,
|
1066
|
@TO_BRN_ID, @MAST_BAL_ID,@CUST_NAME,@QTY,@PRICE,@NOTES,@EXP_ACCTNO,@UNIT_RECEIVE,@UNIT_CHARGE,@UNIT_PAY,@QTY_RECEIVE,@QTY_DAMAGED,@QTY_LOSS,@RECEIVE_NOTES, @DEP_RECEIVE, @DEP_PAY
|
1067
|
END
|
1068
|
CLOSE XmlData
|
1069
|
DEALLOCATE XmlData
|
1070
|
|
1071
|
|
1072
|
--NẾU CÓ PYC THÌ CỘNG SL VÀO PYC
|
1073
|
DECLARE @REQ_ID VARCHAR(15) = (SELECT MT.MW_REQ_ID FROM MW_OUT MT WHERE MT.OUT_ID = @p_OUT_ID)
|
1074
|
IF(ISNULL(@REQ_ID,'') <> '')
|
1075
|
BEGIN
|
1076
|
|
1077
|
UPDATE D SET D.ALLOCATED = ISNULL(D.ALLOCATED,0) + RE.QTY
|
1078
|
FROM (
|
1079
|
SELECT A.MAST_BAL_ID, SUM(A.QTY) AS QTY, A.UNIT_RECEIVE, ISNULL(A.DEP_RECEIVE,'') AS DEP_RECEIVE
|
1080
|
FROM MW_OUT_DT A
|
1081
|
WHERE A.OUT_ID = @p_OUT_ID
|
1082
|
GROUP BY A.MAST_BAL_ID, A.UNIT_RECEIVE, ISNULL(A.DEP_RECEIVE,'')) RE
|
1083
|
INNER JOIN MW_MAST_BAL B ON RE.MAST_BAL_ID = B.MAST_BAL_ID
|
1084
|
INNER JOIN MW_REQ_DT D ON B.MATERIAL_ID = D.MATERIAL_ID AND D.BRANCH_USE = RE.UNIT_RECEIVE AND ISNULL(D.DEP_USE,'') = ISNULL(RE.DEP_RECEIVE,'')
|
1085
|
WHERE D.REQ_ID = @REQ_ID
|
1086
|
|
1087
|
IF(EXISTS(SELECT 1 FROM MW_REQ_DT WHERE ISNULL(QUANTITY_ALLOCATION,0) < ISNULL(ALLOCATED,0) AND REQ_ID = @REQ_ID))
|
1088
|
BEGIN
|
1089
|
ROLLBACK TRANSACTION
|
1090
|
SELECT N'Số lượng cấp phát vượt yêu cầu của đơn vị.' AS Result,
|
1091
|
'' OUT_ID,
|
1092
|
'' ErrorDesc;
|
1093
|
RETURN '-1';
|
1094
|
END
|
1095
|
|
1096
|
IF(NOT EXISTS(SELECT 1 FROM MW_REQ_DT MRD WHERE MRD.REQ_ID = @REQ_ID AND ISNULL(MRD.QUANTITY_ALLOCATION,0) <> ISNULL(MRD.ALLOCATED,0)))
|
1097
|
BEGIN
|
1098
|
UPDATE MW_REQ SET IS_DONE = '1' WHERE REQ_ID = @REQ_ID
|
1099
|
END
|
1100
|
END
|
1101
|
|
1102
|
INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
1103
|
VALUES(@p_OUT_ID,'KT_APP',@p_KT_CHECKER_ID,GETDATE(), N'Kiểm soát viên kế toán duyệt phiếu',N'Kiểm soát viên kế toán duyệt phiếu')
|
1104
|
|
1105
|
COMMIT TRANSACTION;
|
1106
|
SELECT '0' AS Result, @p_OUT_ID OUT_ID,'' ErrorDesc;
|
1107
|
RETURN '0';
|
1108
|
ABORT:
|
1109
|
BEGIN
|
1110
|
CLOSE XmlData;
|
1111
|
DEALLOCATE XmlData;
|
1112
|
ROLLBACK TRANSACTION;
|
1113
|
SELECT '-1' AS Result,'' OUT_ID, '' ErrorDesc;
|
1114
|
RETURN '-1';
|
1115
|
END;
|