Project

General

Profile

MW OUT INS.txt

Luc Tran Van, 01/19/2021 01:58 PM

 
1

    
2

    
3

    
4
ALTER PROCEDURE [dbo].[MW_OUT_Ins] @p_TRN_Date DATE=NULL, @p_TRN_TIME VARCHAR(50) =NULL, @p_BRN_ID VARCHAR(15) =NULL, @p_DEPT_ID VARCHAR(15) =NULL,
5
    @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,
6
    @p_AUTH_STATUS VARCHAR(1) =NULL, @p_MAKER_ID VARCHAR(15) =NULL, @p_CREATE_DT DATETIME=NULL, @p_CHECKER_ID VARCHAR(15) =NULL, @p_APPROVE_DT DATETIME=NULL,
7
    @p_KT_AUTH_STATUS VARCHAR(1) =NULL, @p_KT_MAKER_ID VARCHAR(15) =NULL, @p_KT_CREATE_DT DATETIME=NULL, @p_KT_CHECKER_ID VARCHAR(15) =NULL,
8
    @p_KT_APPROVE_DT DATETIME=NULL, @p_RECORD_STATUS VARCHAR(1) =NULL, @p_XmlData XML=NULL, @p_CORE_NOTE NVARCHAR(500) =NULL,
9
    @p_BRANCH_CREATE VARCHAR(15) =NULL,@p_WARE_HOUSE VARCHAR(15) = NULL
10
AS
11
DECLARE
12
    --DVSD
13
    --@OUT_DT_ID varchar(15),
14
	@p_OUT_CODE NVARCHAR(100) = NULL,
15
    @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,
16
    @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,
17
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
18
	@COST_ACC VARCHAR(50) = NULL, @PRICE_ID VARCHAR(25)
19
DECLARE @INDEX INT =0
20
DECLARE @PRICE_CODE VARCHAR(30)
21
DECLARE @hdoc INT;
22
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
23
DECLARE XmlData CURSOR FOR
24
SELECT *
25
FROM
26
    OPENXML(@hdoc, '/Root/XmlData', 2)
27
    WITH(OUT_ID VARCHAR(15), MAST_BAL_ID VARCHAR(15),
28
    CUST_NAME NVARCHAR(200), QTY INT, QTY_OLD INT,
29
    PRICE NUMERIC(18, 0), TOTAL_AMT NUMERIC(18, 2), NOTES NVARCHAR(1000),
30
	TO_BRN_ID VARCHAR(15), TO_DEPT_ID VARCHAR(15),EVENT_NAME NVARCHAR(1000),IS_BCT VARCHAR(1),COST_ACC VARCHAR(50))
31
OPEN XmlData;
32
BEGIN TRANSACTION;
33
DECLARE @p_OUT_ID VARCHAR(15);
34
EXEC [MW_OUT_CODE_Gen] @p_BRANCH_CREATE,@p_WARE_HOUSE, @p_OUT_CODE OUT;
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
INSERT INTO [dbo].[MW_OUT]([OUT_ID], [TRN_Date], [TRN_TIME], [BRN_ID], [DEPT_ID], [QTY], [PRICE], [TOTAL_AMT], [NOTES], [OUT_DESC], [AUTH_STATUS], [MAKER_ID],
38
[CREATE_DT], [CHECKER_ID], [APPROVE_DT], [KT_AUTH_STATUS], [KT_MAKER_ID], [KT_CREATE_DT], [KT_CHECKER_ID], [KT_APPROVE_DT], [RECORD_STATUS], [CORE_NOTE],
39
[BRANCH_CREATE],[WARE_HOUSE],[OUT_CODE])
40
SELECT @p_OUT_ID, CONVERT(DATETIME, @p_TRN_Date, 103), @p_TRN_TIME, @p_BRN_ID, @p_DEPT_ID, @p_QTY, @p_PRICE, @p_TOTAL_AMT, @p_NOTES, @p_OUT_DESC, 'U',
41
    @p_MAKER_ID, CONVERT(DATETIME, GETDATE(), 0), NULL, NULL, 'U', NULL, NULL, NULL, NULL, '1', @p_CORE_NOTE, @p_BRANCH_CREATE,@p_WARE_HOUSE,@p_OUT_CODE;
42
IF @@error<>0 GOTO ABORT;
43
--Insert XmlData
44
FETCH NEXT FROM XmlData
45
INTO @OUT_ID, @MAST_BAL_ID, @CUST_NAME, @QTY, @QTY_OLD, @PRICE, @TOTAL_AMT, @NOTES, @TO_BRN_ID, @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
46
WHILE @@fetch_status=0 BEGIN
47
	SET @INDEX = @INDEX+1
48
	SET @PRICE_CODE = (SELECT TOP 1 PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID =(SELECT PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
49
	--LUCTV 12 01 2021 BO SUNG RANG BUOC NEU CHUA DUOC XAC NHAN LO VAT LIEU THI KHONG CHO PHÉP ĐIỀU CHUYỂN VẬT LIỆU
50
	SET @PRICE_ID = (SELECT TOP 1 PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)
51
	IF(EXISTS(SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID IN (SELECT MAST_BAL_ID FROM MW_MAST_BAL WHERE PRICE_ID =@PRICE_ID) AND TO_BRN_ID =@p_BRANCH_CREATE AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE KT_AUTH_STATUS ='A')))
52
	BEGIN
53
		IF(NOT EXISTS(SELECT * FROM MW_TRANSFER_CONF WHERE BRANCH_RECIVE =@p_BRANCH_CREATE AND TRANSFER_ID IN 
54
		(SELECT TRANSFER_ID FROM MW_TRANSFER_DT WHERE MAST_BAL_ID IN  (SELECT MAST_BAL_ID FROM MW_MAST_BAL WHERE PRICE_ID =@PRICE_ID) AND TO_BRN_ID =@p_BRANCH_CREATE) ))
55
		BEGIN
56
			CLOSE XmlData;
57
			DEALLOCATE XmlData;
58
			ROLLBACK TRANSACTION;
59
			SELECT '-1' AS Result, '' OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Lô vật liệu có mã '+@PRICE_CODE +N' chưa được xác nhận điều chuyển. Vui lòng xác nhận điều chuyển trước khi sử dụng' ErrorDesc;
60
			RETURN '-1';
61
			END
62
	END
63
	--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
64
	--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)))
65
	--BEGIN
66
	--	CLOSE XmlData;
67
	--	DEALLOCATE XmlData;
68
	--	ROLLBACK TRANSACTION;
69
	--	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;
70
	--	RETURN '-1';
71
	--END
72
	----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
73
	--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')))
74
	--BEGIN
75
	--	CLOSE XmlData;
76
	--	DEALLOCATE XmlData;
77
	--	ROLLBACK TRANSACTION;
78
	--	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;
79
	--	RETURN '-1';
80
	--END
81
	----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
82
	--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')))
83
	--BEGIN
84
	--	CLOSE XmlData;
85
	--	DEALLOCATE XmlData;
86
	--	ROLLBACK TRANSACTION;
87
	--	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;
88
	--	RETURN '-1';
89
	--END
90
	---- 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)
91
	IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
92
	BEGIN
93
		CLOSE XmlData
94
		DEALLOCATE XmlData
95
		ROLLBACK TRANSACTION
96
		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
97
		RETURN '-1'
98
	END
99
	--END
100
    DECLARE @p_OUT_DT_ID VARCHAR(15);
101
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
102
    IF @p_OUT_DT_ID='' OR @p_OUT_DT_ID IS NULL GOTO ABORT;
103
    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])
104
    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
105

    
106
    --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])
107
    --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)
108
    IF @@error<>0 GOTO ABORT;
109
    FETCH NEXT FROM XmlData
110
    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
111
END;
112
CLOSE XmlData;
113
DEALLOCATE XmlData;
114
UPDATE MW_OUT
115
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
116
WHERE OUT_ID =@p_OUT_ID
117
COMMIT TRANSACTION;
118
SELECT '0' AS Result, @p_OUT_ID OUT_ID, '' ErrorDesc;
119
RETURN '0';
120
ABORT:
121
BEGIN
122
    CLOSE XmlData;
123
    DEALLOCATE XmlData;
124
    ROLLBACK TRANSACTION;
125
    SELECT '-1' AS Result, '' OUT_ID, '' ErrorDesc;
126
    RETURN '-1';
127
END;