1
|
|
2
|
CREATE OR ALTER PROCEDURE dbo.MW_OUT_KSV_KT_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,@OUT_DT_ID VARCHAR(15) =NULL,
|
9
|
@BRN_ID VARCHAR(15) =NULL,
|
10
|
@DEPT_ID VARCHAR(20)=NULL,
|
11
|
@MAST_BAL_ID VARCHAR(15) =NULL,
|
12
|
@CUST_NAME NVARCHAR(200) =NULL,
|
13
|
@QTY DECIMAL(18,2)=NULL,
|
14
|
@PRICE NUMERIC(18, 0) =NULL,
|
15
|
@TOTAL_AMT NUMERIC(18, 2) =NULL,
|
16
|
@NOTES NVARCHAR(1000) =NULL,
|
17
|
@TO_BRN_ID VARCHAR(15) =NULL,
|
18
|
@TO_DEPT_ID VARCHAR(15) =NULL;
|
19
|
DECLARE @hdoc INT;
|
20
|
DECLARE @INDEX INT =0
|
21
|
DECLARE @p_ID_MAS_BAL VARCHAR(15);
|
22
|
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
|
23
|
|
24
|
DECLARE @C_TO_BRN_ID VARCHAR(15), @C_TO_DEP_ID VARCHAR(15)
|
25
|
|
26
|
DECLARE XmlData CURSOR FOR
|
27
|
SELECT *
|
28
|
FROM
|
29
|
OPENXML(@hdoc, '/Root/XmlData', 2)
|
30
|
WITH(
|
31
|
OUT_ID VARCHAR(15),
|
32
|
OUT_DT_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
|
--Insert XmlData
|
46
|
--DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID
|
47
|
DECLARE @p_ID VARCHAR(15);
|
48
|
FETCH NEXT FROM XmlData
|
49
|
INTO @OUT_ID,@OUT_DT_ID,
|
50
|
@MAST_BAL_ID,
|
51
|
@CUST_NAME,
|
52
|
@QTY,
|
53
|
@PRICE,
|
54
|
@TOTAL_AMT,
|
55
|
@NOTES,
|
56
|
@TO_BRN_ID,
|
57
|
@TO_DEPT_ID;
|
58
|
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0;
|
59
|
DECLARE @l_SUM_TOTAL_AMT NUMERIC(18, 2)=0;
|
60
|
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
|
61
|
|
62
|
IF(@@FETCH_STATUS=-1)BEGIN
|
63
|
CLOSE XmlData
|
64
|
DEALLOCATE XmlData
|
65
|
ROLLBACK TRANSACTION;
|
66
|
SELECT '-1' AS Result,
|
67
|
@p_OUT_ID OUT_ID,
|
68
|
N'Vui lòng duyệt lại sau khi dữ liệu được load hoàn tất' ErrorDesc;
|
69
|
RETURN '-1';
|
70
|
END;
|
71
|
|
72
|
IF((SELECT mo.STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID)<> 'KSV_KT_APP')
|
73
|
BEGIN
|
74
|
ROLLBACK TRANSACTION
|
75
|
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
|
76
|
RETURN '-1'
|
77
|
END
|
78
|
|
79
|
IF NOT EXISTS(SELECT tugr.ROLE_ID FROM dbo.TL_USER_GET_ROLES(@p_CHECKER_ID) tugr WHERE tugr.ROLE_ID = 'KSV')
|
80
|
BEGIN
|
81
|
ROLLBACK TRANSACTION
|
82
|
SELECT '-1' as Result, '' OUT_ID, N'Người dùng không có quyền duyệt phiếu này.' ErrorDesc
|
83
|
RETURN '-1'
|
84
|
END
|
85
|
-- 24-03-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
|
86
|
IF((SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
|
87
|
BEGIN
|
88
|
CLOSE XmlData
|
89
|
DEALLOCATE XmlData
|
90
|
ROLLBACK TRANSACTION
|
91
|
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
|
92
|
RETURN '-1'
|
93
|
END
|
94
|
|
95
|
DECLARE @CORE_NOTE NVARCHAR(1000) = NULL,
|
96
|
@MATERIAL_ID VARCHAR(15) = NULL,
|
97
|
@VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0),
|
98
|
@FR_BRN_ID varchar(15) = NULL,
|
99
|
@FR_DEPT_ID varchar(15) = NULL,
|
100
|
@WARE_ID VARCHAR(15) = NULL
|
101
|
DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50), @TCCT VARCHAR(50)
|
102
|
DECLARE @l_DEP_CODE VARCHAR(15) = NULL;
|
103
|
DECLARE @l_D_BRANCH_CODE VARCHAR(15) = NULL;
|
104
|
DECLARE @l_C_BRANCH_CODE VARCHAR(15) = NULL
|
105
|
DECLARE @l_MAT_CODE VARCHAR(15) = NULL;
|
106
|
DECLARE @l_WARE_ID VARCHAR(15) = NULL;
|
107
|
DECLARE @MATERIAL_ACCNO VARCHAR(15) = NULL;
|
108
|
DECLARE @BR_CODE VARCHAR(25) = NULL;
|
109
|
DECLARE @DP_CODE VARCHAR(25) = NULL;
|
110
|
DECLARE @l_MAKER_ID VARCHAR(25) = NULL;
|
111
|
DECLARE @p_MAKER_ID VARCHAR(25) = NULL;
|
112
|
DECLARE @p_REQ_USER VARCHAR(25) = NULL;
|
113
|
--- GEN ID KSV ĐỂ QUẢN LÝ GD HẠCH TOÁN BƯỚC KSV ---
|
114
|
DECLARE @p_OUT_KSV_ID VARCHAR(15);
|
115
|
EXEC SYS_CodeMasters_Gen 'OUT_KSV_ID', @p_OUT_KSV_ID OUT;
|
116
|
|
117
|
----- SO GIAO DICH
|
118
|
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)
|
119
|
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
|
120
|
FROM MW_OUT A LEFT JOIN CM_BRANCH CB ON A.BRN_ID = CB.BRANCH_ID
|
121
|
WHERE A.OUT_ID = @p_OUT_ID
|
122
|
|
123
|
-------- 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
|
124
|
IF @PYC IS NOT NULL AND @PYC <> ''
|
125
|
BEGIN
|
126
|
SET @l_MAKER_ID = (SELECT MR.MAKER_ID FROM MW_REQ MR WHERE MR.REQ_ID = @PYC)
|
127
|
END
|
128
|
ELSE SET @l_MAKER_ID = ISNULL(@p_REQ_USER,@p_MAKER_ID)
|
129
|
|
130
|
EXEC ENTRIES_POST_GEN_NO_MW @p_BRANCH_ID = @l_MAKER_ID
|
131
|
,@p_TRN_DATE = @p_APPROVE_DT
|
132
|
,@p_KeyGen = @l_TRN_NO OUT
|
133
|
-----------------
|
134
|
|
135
|
--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
|
136
|
DECLARE @WARE_CODE VARCHAR(25),@ListWare_CODE VARCHAR(500);
|
137
|
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
|
138
|
SELECT @ListWare_CODE = sp.ParaValue FROM SYS_PARAMETERS sp WHERE sp.ParaKey = 'MW_OUT_WARE_CUSTOMER'
|
139
|
|
140
|
IF(EXISTS(SELECT 1
|
141
|
FROM STRING_SPLIT(@ListWare_CODE,',') A
|
142
|
INNER JOIN CM_WARE B ON A.VALUE = B.WARE_CODE
|
143
|
INNER JOIN MW_OUT C ON B.WARE_ID = C.WARE_ID
|
144
|
WHERE C.OUT_ID = @p_OUT_ID
|
145
|
))
|
146
|
BEGIN
|
147
|
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
|
148
|
FROM MW_OUT_DT A
|
149
|
INNER JOIN MW_MAST_BAL B ON A.MAST_BAL_ID = B.MAST_BAL_ID
|
150
|
WHERE A.OUT_ID = @p_OUT_ID
|
151
|
END
|
152
|
|
153
|
IF(EXISTS(SELECT 1 FROM STRING_SPLIT(@ListWare_CODE, ',') WHERE VALUE = @WARE_CODE))
|
154
|
BEGIN
|
155
|
IF EXISTS(SELECT 1
|
156
|
FROM MW_OUT_DT A
|
157
|
LEFT JOIN MW_OUT B ON A.OUT_ID= B.OUT_ID
|
158
|
WHERE A.OUT_ID = @p_OUT_ID
|
159
|
AND ((A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID <> 'DV0001')
|
160
|
OR (A.UNIT_RECEIVE = B.BRN_ID AND B.BRN_ID = 'DV0001' AND ISNULL(B.DEPT_ID,'') = ISNULL(A.DEP_RECEIVE,''))
|
161
|
)
|
162
|
)
|
163
|
BEGIN
|
164
|
UPDATE [dbo].[MW_OUT]
|
165
|
SET AUTH_STATUS='A',
|
166
|
CHECKER_ID=@p_CHECKER_ID,
|
167
|
STATUS = CASE WHEN (SELECT REQ_ACOUNT FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) <> '1' THEN 'REQ_ACOUNT' ELSE 'OUT_KT' END,
|
168
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
169
|
, OUT_KSV_ID = @p_OUT_KSV_ID
|
170
|
WHERE [OUT_ID]=@p_OUT_ID;
|
171
|
END
|
172
|
ELSE
|
173
|
BEGIN
|
174
|
UPDATE [dbo].[MW_OUT]
|
175
|
SET AUTH_STATUS='A',
|
176
|
CHECKER_ID=@p_CHECKER_ID,
|
177
|
STATUS ='CONFIRM',
|
178
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
179
|
, OUT_KSV_ID = @p_OUT_KSV_ID
|
180
|
WHERE [OUT_ID]=@p_OUT_ID;
|
181
|
END
|
182
|
|
183
|
IF @@Error<>0 GOTO ABORT;
|
184
|
WHILE @@FETCH_STATUS=0
|
185
|
BEGIN
|
186
|
SET @INDEX = @INDEX+1
|
187
|
-- 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)
|
188
|
-- IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
|
189
|
-- BEGIN
|
190
|
-- CLOSE XmlData
|
191
|
-- DEALLOCATE XmlData
|
192
|
-- ROLLBACK TRANSACTION
|
193
|
-- 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
|
194
|
-- RETURN '-1'
|
195
|
-- END
|
196
|
|
197
|
-- 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
|
198
|
-- 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
|
199
|
-- IF @@Error<>0 GOTO ABORT;
|
200
|
|
201
|
------------- HACH TOAN BUOC DUYET KSV XUAT KHO ------------
|
202
|
SELECT @EXP_ACCTNO = B.EXP_ACCTNO, @VAT_ACCTNO = B.VAT_ACCTNO , @l_MAT_CODE = B.MATERIAL_CODE
|
203
|
FROM MW_MAST_BAL A
|
204
|
LEFT JOIN MW_MATERIAL B ON A.MATERIAL_ID = B.MATERIAL_ID
|
205
|
WHERE A.MAST_BAL_ID = @MAST_BAL_ID
|
206
|
|
207
|
|
208
|
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))
|
209
|
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))
|
210
|
DECLARE @TO_BRN_CODE VARCHAR(20) = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @TO_BRN_ID)
|
211
|
DECLARE @TO_DEP_CODE VARCHAR(20) = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @TO_DEPT_ID)
|
212
|
|
213
|
----------------HACH TOAN 05/09/2023 KHIEMCHG------------------
|
214
|
-------------------CHECK THEO LOAI KHO-------------------------
|
215
|
DECLARE @l_HS_BRANCH_CODE VARCHAR(20) = (SELECT CB.BRANCH_CODE FROM CM_BRANCH CB WHERE CB.BRANCH_TYPE = 'HS')
|
216
|
DECLARE @BRANCH_TYPE VARCHAR(20) = (SELECT CB.BRANCH_TYPE FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @TO_BRN_ID)
|
217
|
SET @WARE_CODE = (SELECT CW.WARE_CODE FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
|
218
|
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_%')
|
219
|
DECLARE @WARE_ACCNO VARCHAR(20) = (SELECT TOP 1 CW.ACC_ACCOUNTING FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
|
220
|
DECLARE @ACCNO_KSV_OUT VARCHAR(20) = (SELECT TOP 1 ACC_NO FROM ENTRIES_POST_ACCNO_MW WHERE ACC_TYPE = 'KSV_OUT')
|
221
|
|
222
|
--LAY MA BRANCH CODE
|
223
|
-- DECLARE @DB_ID VARCHAR(15) = (SELECT CW.DEP_ID FROM CM_WARE CW WHERE CW.WARE_ID = @WARE_ID)
|
224
|
-- SELECT @DP_CODE = CD.DEP_CODE, @BR_CODE = CB.BRANCH_CODE
|
225
|
-- FROM CM_DEPARTMENT CD LEFT JOIN CM_BRANCH CB ON CD.BRANCH_ID = CB.BRANCH_ID
|
226
|
-- WHERE CD.DEP_ID = @DB_ID
|
227
|
|
228
|
BEGIN
|
229
|
--- TODO: NỢ
|
230
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
|
231
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST', @l_ET_ID OUT
|
232
|
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)
|
233
|
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);
|
234
|
IF @@Error <> 0 GOTO ABORT;
|
235
|
|
236
|
--- TODO: CÓ
|
237
|
EXEC SYS_CodeMasters_Gen 'MW_ENTRIES_POST_SYNC', @l_ETP_ID OUT
|
238
|
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)
|
239
|
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);
|
240
|
IF @@Error <> 0 GOTO ABORT;
|
241
|
|
242
|
END
|
243
|
|
244
|
FETCH NEXT FROM XmlData
|
245
|
INTO @OUT_ID,@OUT_DT_ID,
|
246
|
@MAST_BAL_ID,
|
247
|
@CUST_NAME,
|
248
|
@QTY,
|
249
|
@PRICE,
|
250
|
@TOTAL_AMT,
|
251
|
@NOTES,
|
252
|
@TO_BRN_ID,
|
253
|
@TO_DEPT_ID;
|
254
|
END;
|
255
|
CLOSE XmlData;
|
256
|
DEALLOCATE XmlData;
|
257
|
|
258
|
|
259
|
DECLARE CUR_CONFIRM CURSOR FOR
|
260
|
SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
261
|
FROM MW_OUT_DT
|
262
|
WHERE OUT_ID = @p_OUT_ID
|
263
|
GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
264
|
OPEN CUR_CONFIRM
|
265
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
266
|
WHILE @@FETCH_STATUS = 0
|
267
|
BEGIN
|
268
|
DECLARE @p_OUT_CONF_ID VARCHAR(15);
|
269
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID OUT;
|
270
|
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,'')))
|
271
|
BEGIN
|
272
|
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)
|
273
|
VALUES (@p_OUT_CONF_ID,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
|
274
|
END
|
275
|
|
276
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
277
|
END
|
278
|
CLOSE CUR_CONFIRM
|
279
|
DEALLOCATE CUR_CONFIRM
|
280
|
--Thêm lịch sử
|
281
|
INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
282
|
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')
|
283
|
|
284
|
END
|
285
|
ELSE
|
286
|
BEGIN
|
287
|
UPDATE [dbo].[MW_OUT]
|
288
|
SET AUTH_STATUS='A',
|
289
|
CHECKER_ID=@p_CHECKER_ID, STATUS ='CONFIRM',
|
290
|
--APPROVE_DT=CONVERT(DATE, @p_APPROVE_DT, 103)
|
291
|
-- LUCTV 13092019 CHINH SUA LAI NGAY DUYET DE LAY DUNG DINH DANG NGAY THANG NAM H PHUT GIAY
|
292
|
APPROVE_DT = CONVERT(DATETIME, @p_APPROVE_DT, 103)
|
293
|
WHERE [OUT_ID]=@p_OUT_ID;
|
294
|
|
295
|
IF @@Error<>0 GOTO ABORT;
|
296
|
WHILE @@FETCH_STATUS=0
|
297
|
BEGIN
|
298
|
SET @INDEX = @INDEX+1
|
299
|
-- 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)
|
300
|
-- IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
|
301
|
-- BEGIN
|
302
|
-- CLOSE XmlData
|
303
|
-- DEALLOCATE XmlData
|
304
|
-- ROLLBACK TRANSACTION
|
305
|
-- 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
|
306
|
-- RETURN '-1'
|
307
|
-- END
|
308
|
--Update MW_Mast_BAL khi TDV duyệt
|
309
|
-- 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
|
310
|
|
311
|
|
312
|
DECLARE CUR_CONFIRM CURSOR FOR
|
313
|
SELECT ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
314
|
FROM MW_OUT_DT
|
315
|
WHERE OUT_ID = @p_OUT_ID
|
316
|
GROUP BY ISNULL(UNIT_RECEIVE,''), ISNULL(DEP_RECEIVE,'')
|
317
|
OPEN CUR_CONFIRM
|
318
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
319
|
WHILE @@FETCH_STATUS = 0
|
320
|
BEGIN
|
321
|
DECLARE @p_OUT_CONF_ID_1 VARCHAR(15);
|
322
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_CONF', @p_OUT_CONF_ID_1 OUT;
|
323
|
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,'')))
|
324
|
BEGIN
|
325
|
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)
|
326
|
VALUES (@p_OUT_CONF_ID_1,@p_OUT_ID,@C_TO_BRN_ID,@C_TO_DEP_ID,NULL,NULL,NULL, NULL,NULL,'1','CONFIRM')
|
327
|
END
|
328
|
|
329
|
FETCH NEXT FROM CUR_CONFIRM INTO @C_TO_BRN_ID,@C_TO_DEP_ID
|
330
|
END
|
331
|
CLOSE CUR_CONFIRM
|
332
|
DEALLOCATE CUR_CONFIRM
|
333
|
|
334
|
|
335
|
|
336
|
INSERT INTO dbo.MW_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
337
|
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.')
|
338
|
|
339
|
IF @@Error<>0 GOTO ABORT;
|
340
|
FETCH NEXT FROM XmlData
|
341
|
INTO @OUT_ID,
|
342
|
@MAST_BAL_ID,
|
343
|
@CUST_NAME,
|
344
|
@QTY,
|
345
|
@PRICE,
|
346
|
@TOTAL_AMT,
|
347
|
@NOTES,
|
348
|
@TO_BRN_ID,
|
349
|
@TO_DEPT_ID;
|
350
|
END;
|
351
|
CLOSE XmlData;
|
352
|
DEALLOCATE XmlData;
|
353
|
END
|
354
|
|
355
|
COMMIT TRANSACTION;
|
356
|
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
|
357
|
RETURN '0';
|
358
|
ABORT:
|
359
|
BEGIN
|
360
|
CLOSE XmlData;
|
361
|
DEALLOCATE XmlData;
|
362
|
ROLLBACK TRANSACTION;
|
363
|
SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
|
364
|
RETURN '-1';
|
365
|
END
|