1
|
|
2
|
ALTER PROCEDURE [dbo].[MW_OUT_Ins] @p_TRN_Date VARCHAR(25)=NULL, @p_TRN_TIME VARCHAR(50) =NULL, @p_BRN_ID VARCHAR(15) =NULL, @p_DEPT_ID VARCHAR(15) =NULL,
|
3
|
@p_QTY INT=NULL, @p_PRICE NUMERIC(18, 0) =NULL, @p_TOTAL_AMT NUMERIC(18, 2) =NULL, @p_NOTES NVARCHAR(1000), @p_OUT_DESC NVARCHAR(500) =NULL,
|
4
|
@p_AUTH_STATUS VARCHAR(1) =NULL, @p_MAKER_ID VARCHAR(15) =NULL, @p_CREATE_DT VARCHAR(25)=NULL, @p_CHECKER_ID VARCHAR(15) =NULL, @p_APPROVE_DT VARCHAR(25)=NULL,
|
5
|
@p_KT_AUTH_STATUS VARCHAR(1) =NULL, @p_KT_MAKER_ID VARCHAR(15) =NULL, @p_KT_CREATE_DT VARCHAR(25)=NULL, @p_KT_CHECKER_ID VARCHAR(15) =NULL,
|
6
|
@p_KT_APPROVE_DT VARCHAR(25)=NULL, @p_RECORD_STATUS VARCHAR(1) =NULL, @p_XmlData XML=NULL, @p_CORE_NOTE NVARCHAR(500) =NULL,
|
7
|
@p_BRANCH_CREATE VARCHAR(15) =NULL,@p_WARE_HOUSE VARCHAR(15) = NULL
|
8
|
AS
|
9
|
DECLARE
|
10
|
--DVSD
|
11
|
--@OUT_DT_ID varchar(15),
|
12
|
@p_OUT_CODE NVARCHAR(100) = NULL,
|
13
|
@OUT_ID VARCHAR(15) =NULL, @MAST_BAL_ID VARCHAR(15) =NULL, @CUST_NAME NVARCHAR(200) =NULL, @QTY INT=NULL, @QTY_OLD INT=NULL, @PRICE NUMERIC(18, 0) =NULL,
|
14
|
@TOTAL_AMT NUMERIC(18, 2) =NULL, @NOTES NVARCHAR(1000) =NULL, @TO_BRN_ID VARCHAR(15) =NULL, @TO_DEPT_ID VARCHAR(15) =NULL,@EVENT_NAME NVARCHAR(1000) = NULL,
|
15
|
@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
|
16
|
@COST_ACC VARCHAR(50) = NULL
|
17
|
DECLARE @INDEX INT =0
|
18
|
DECLARE @PRICE_CODE VARCHAR(30)
|
19
|
DECLARE @hdoc INT;
|
20
|
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
|
21
|
DECLARE XmlData CURSOR FOR
|
22
|
SELECT *
|
23
|
FROM
|
24
|
OPENXML(@hdoc, '/Root/XmlData', 2)
|
25
|
WITH(OUT_ID VARCHAR(15), MAST_BAL_ID VARCHAR(15),
|
26
|
CUST_NAME NVARCHAR(200), QTY INT, QTY_OLD INT,
|
27
|
PRICE NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000),
|
28
|
TO_BRN_ID VARCHAR(15), TO_DEPT_ID VARCHAR(15),EVENT_NAME NVARCHAR(1000),IS_BCT VARCHAR(1),COST_ACC VARCHAR(50))
|
29
|
OPEN XmlData;
|
30
|
|
31
|
BEGIN TRANSACTION;
|
32
|
DECLARE @p_OUT_ID VARCHAR(15);
|
33
|
EXEC [MW_OUT_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_OUT_CODE OUT;
|
34
|
|
35
|
EXEC SYS_CodeMasters_Gen 'MW_OUT', @p_OUT_ID OUT;
|
36
|
IF @p_OUT_ID='' OR @p_OUT_ID IS NULL GOTO ABORT;
|
37
|
|
38
|
INSERT INTO [dbo].[MW_OUT]([OUT_ID], [TRN_Date], [TRN_TIME], [BRN_ID], [DEPT_ID], [QTY], [PRICE], [TOTAL_AMT], [NOTES], [OUT_DESC], [AUTH_STATUS], [MAKER_ID],
|
39
|
[CREATE_DT], [CHECKER_ID], [APPROVE_DT], [KT_AUTH_STATUS], [KT_MAKER_ID], [KT_CREATE_DT], [KT_CHECKER_ID], [KT_APPROVE_DT], [RECORD_STATUS], [CORE_NOTE],
|
40
|
[BRANCH_CREATE],[WARE_HOUSE],[OUT_CODE])
|
41
|
SELECT @p_OUT_ID, CONVERT(DATETIME, @p_TRN_Date, 103), @p_TRN_TIME, @p_BRN_ID, @p_DEPT_ID, @p_QTY, @p_PRICE, @p_TOTAL_AMT, @p_NOTES, @p_OUT_DESC, 'U',
|
42
|
@p_MAKER_ID, CONVERT(DATETIME, @p_CREATE_DT, 103), NULL, NULL, 'U', NULL, NULL, NULL, NULL, '1', @p_CORE_NOTE, @p_BRANCH_CREATE,@p_WARE_HOUSE,@p_OUT_CODE;
|
43
|
IF @@error<>0 GOTO ABORT;
|
44
|
--Insert XmlData
|
45
|
FETCH NEXT FROM XmlData
|
46
|
INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
|
47
|
WHILE @@fetch_status=0 BEGIN
|
48
|
SET @INDEX = @INDEX+1
|
49
|
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))
|
50
|
|
51
|
IF(@COST_ACC = NULL OR @COST_ACC = '')
|
52
|
BEGIN
|
53
|
ROLLBACK TRANSACTION
|
54
|
CLOSE XmlData;
|
55
|
DEALLOCATE XmlData;
|
56
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Danh sách lô vật liệu, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc
|
57
|
RETURN '-1'
|
58
|
END
|
59
|
--LUCTV: 30-11-2018 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC XUAT SU DUNG THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
|
60
|
--IF(EXISTS(SELECT * FROM MW_OUT_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1' AND OUT_ID <> @p_OUT_ID)))
|
61
|
--BEGIN
|
62
|
-- CLOSE XmlData;
|
63
|
-- DEALLOCATE XmlData;
|
64
|
-- ROLLBACK TRANSACTION;
|
65
|
-- SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã là '+@PRICE_CODE +N' đang được xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
|
66
|
-- RETURN '-1';
|
67
|
--END
|
68
|
----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC DIEU CHUYEN THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
|
69
|
--IF(EXISTS(SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
|
70
|
--BEGIN
|
71
|
-- CLOSE XmlData;
|
72
|
-- DEALLOCATE XmlData;
|
73
|
-- ROLLBACK TRANSACTION;
|
74
|
-- SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được điều chuyển. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
|
75
|
-- RETURN '-1';
|
76
|
--END
|
77
|
----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC THANH LY THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
|
78
|
--IF(EXISTS(SELECT * FROM MW_LIQ_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND LIQ_ID IN (SELECT LIQ_ID FROM MW_LIQ_MASTER WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
|
79
|
--BEGIN
|
80
|
-- CLOSE XmlData;
|
81
|
-- DEALLOCATE XmlData;
|
82
|
-- ROLLBACK TRANSACTION;
|
83
|
-- SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' đang được thanh lý. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
|
84
|
-- RETURN '-1';
|
85
|
--END
|
86
|
---- 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)
|
87
|
IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
|
88
|
BEGIN
|
89
|
CLOSE XmlData
|
90
|
DEALLOCATE XmlData
|
91
|
ROLLBACK TRANSACTION
|
92
|
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
|
93
|
RETURN '-1'
|
94
|
END
|
95
|
--END
|
96
|
DECLARE @p_OUT_DT_ID VARCHAR(15);
|
97
|
EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
|
98
|
IF @p_OUT_DT_ID='' OR @p_OUT_DT_ID IS NULL GOTO ABORT;
|
99
|
INSERT INTO [dbo].[MW_OUT_DT]([OUT_DT_ID], [OUT_ID], [MAST_BAL_ID], [CUST_NAME], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES], [TO_BRN_ID], [TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC])
|
100
|
SELECT @p_OUT_DT_ID, @p_OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
|
101
|
|
102
|
--INSERT INTO [dbo].[MW_OUT_DT] ([OUT_DT_ID], [OUT_ID], [MAST_BAL_ID], [FR_BRN_ID], [FR_DEPT_ID], [FR_PRICE_ID], [TO_BRN_ID], [TO_DEPT_ID], [QTY], [QTY_OLD], [PRICE], [TOTAL_AMT], [NOTES])
|
103
|
--VALUES( @p_OUT_DT_ID, @p_OUT_ID, @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @TO_BRN_ID, @TO_DEPT_ID, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES)
|
104
|
IF @@error<>0 GOTO ABORT;
|
105
|
FETCH NEXT FROM XmlData
|
106
|
INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
|
107
|
END;
|
108
|
CLOSE XmlData;
|
109
|
DEALLOCATE XmlData;
|
110
|
UPDATE MW_OUT
|
111
|
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
|
112
|
WHERE OUT_ID =@p_OUT_ID
|
113
|
COMMIT TRANSACTION;
|
114
|
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
|
115
|
RETURN '0';
|
116
|
ABORT:
|
117
|
BEGIN
|
118
|
CLOSE XmlData;
|
119
|
DEALLOCATE XmlData;
|
120
|
ROLLBACK TRANSACTION;
|
121
|
SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
|
122
|
RETURN '-1';
|
123
|
END;
|