Project

General

Profile

mw_out_hc_upd.txt

Luc Tran Van, 03/24/2022 03:57 PM

 
1

    
2
ALTER PROCEDURE [dbo].[MW_OUT_Upd]
3
    @p_OUT_ID VARCHAR(15) = NULL,
4
    @p_TRN_Date VARCHAR(25) = NULL,
5
    @p_TRN_TIME VARCHAR(50) = NULL,
6
    @p_BRN_ID VARCHAR(15) = NULL,
7
    @p_DEPT_ID VARCHAR(15) = NULL,
8
    @p_QTY INT = NULL,
9
    @p_PRICE NUMERIC(18, 0) = NULL,
10
    @p_TOTAL_AMT NUMERIC(18, 2) = NULL,
11
    @p_NOTES NVARCHAR(1000),
12
    @p_OUT_DESC NVARCHAR(500) = NULL,
13
    @p_AUTH_STATUS VARCHAR(1) = NULL,
14
    @p_MAKER_ID VARCHAR(15) = NULL,
15
    @p_CREATE_DT VARCHAR(25) = NULL,
16
    @p_CHECKER_ID VARCHAR(15) = NULL,
17
    @p_APPROVE_DT VARCHAR(25) = NULL,
18
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
19
    @p_KT_MAKER_ID VARCHAR(15) = NULL,
20
    @p_KT_CREATE_DT VARCHAR(25) = NULL,
21
    @p_KT_CHECKER_ID VARCHAR(15) = NULL,
22
    @p_KT_APPROVE_DT VARCHAR(25) = NULL,
23
    @p_RECORD_STATUS VARCHAR(1) = NULL,
24
    @p_XmlData XML = NULL,
25
	@p_CORE_NOTE nvarchar(500) = NULL,
26
	@p_WARE_HOUSE VARCHAR(15) = NULL
27
AS
28
DECLARE
29
    --DVSD
30
    @OUT_ID VARCHAR(15) = NULL,
31
    @MAST_BAL_ID VARCHAR(15) = NULL,
32
    @CUST_NAME NVARCHAR(200) = NULL,
33
    @QTY INT = NULL,
34
	@QTY_OLD INT = NULL,
35
    @PRICE NUMERIC(18, 0) = NULL,
36
    @TOTAL_AMT NUMERIC(18, 2) = NULL,
37
    @NOTES NVARCHAR(1000) = NULL,
38
	@TO_BRN_ID varchar(15) = NULL,
39
    @TO_DEPT_ID varchar(15) = NULL,
40
	@EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
41
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
42
	@COST_ACC VARCHAR(50) = NULL
43
DECLARE @INDEX INT =0
44
DECLARE @PRICE_CODE VARCHAR(30)
45
DECLARE @hdoc INT;
46
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
47
DECLARE XmlData CURSOR FOR
48
SELECT *
49
FROM
50
    OPENXML(@hdoc, '/Root/XmlData', 2)
51
    WITH
52
    (
53
        OUT_ID VARCHAR(15),
54
        MAST_BAL_ID VARCHAR(15),
55
        --FR_BRN_ID varchar(15) ,
56
        --FR_DEPT_ID varchar(15) ,
57
        --FR_PRICE_ID varchar(15) ,
58
        --TO_BRN_ID varchar(15) ,
59
        --TO_DEPT_ID varchar(15) ,
60
        CUST_NAME NVARCHAR(200),
61
        QTY INT,
62
        QTY_OLD int ,
63
        PRICE NUMERIC(18, 0),
64
        TOTAL_AMT NUMERIC(18, 2),
65
        NOTES NVARCHAR(1000),
66
		TO_BRN_ID varchar(15),
67
		TO_DEPT_ID varchar(15),
68
		EVENT_NAME NVARCHAR(1000),
69
		IS_BCT VARCHAR(1),-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
70
		COST_ACC VARCHAR(50)
71
    );
72
OPEN XmlData;
73
BEGIN TRANSACTION;
74
UPDATE [dbo].[MW_OUT]
75
SET 
76
    [QTY] = @p_QTY,
77
	AUTH_STATUS='U',
78
    [PRICE] = @p_PRICE,
79
    [TOTAL_AMT] = @p_TOTAL_AMT,
80
    [NOTES] = @p_NOTES,
81
	MAKER_ID=@p_MAKER_ID,
82
	[CORE_NOTE] = @p_CORE_NOTE,
83
	WARE_HOUSE=  @p_WARE_HOUSE,DEPT_ID = @p_DEPT_ID
84
WHERE [OUT_ID] = @p_OUT_ID;
85
IF @@Error <> 0
86
    GOTO ABORT;
87
--Insert XmlData
88
DELETE FROM MW_OUT_DT
89
WHERE OUT_ID = @p_OUT_ID;
90
FETCH NEXT FROM XmlData
91
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
92
WHILE @@FETCH_STATUS = 0
93
BEGIN
94
		SET @INDEX = @INDEX+1
95
		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))
96

    
97
		IF(@COST_ACC = NULL OR @COST_ACC = '')
98
		BEGIN
99
			ROLLBACK TRANSACTION
100
			CLOSE XmlData;
101
			DEALLOCATE XmlData;
102
			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
103
			RETURN '-1'
104
		END
105
	--LUCTV: 03-1-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC XUAT SU DUNG THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
106
	--IF(EXISTS(SELECT * FROM MW_OUT_DT  WHERE MAST_BAL_ID =@MAST_BAL_ID AND OUT_ID<>@p_OUT_ID AND OUT_ID IN (SELECT OUT_ID FROM MW_OUT WHERE KT_AUTH_STATUS<>'A' AND RECORD_STATUS='1')))
107
	--BEGIN
108
	--	CLOSE XmlData;
109
	--	DEALLOCATE XmlData;
110
	--	ROLLBACK TRANSACTION;
111
	--	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 xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
112
	--	RETURN '-1';
113
	--END
114
	----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
115
	--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')))
116
	--BEGIN
117
	--	CLOSE XmlData;
118
	--	DEALLOCATE XmlData;
119
	--	ROLLBACK TRANSACTION;
120
	--	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;
121
	--	RETURN '-1';
122
	--END
123
	----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
124
	--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')))
125
	--BEGIN
126
	--	CLOSE XmlData;
127
	--	DEALLOCATE XmlData;
128
	--	ROLLBACK TRANSACTION;
129
	--	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;
130
	--	RETURN '-1';
131
	--END
132
	-- 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)
133
	IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
134
	BEGIN
135
		CLOSE XmlData
136
		DEALLOCATE XmlData
137
		ROLLBACK TRANSACTION
138
		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
139
		RETURN '-1'
140
	END
141
    DECLARE @p_OUT_DT_ID VARCHAR(15);
142
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
143
    IF @p_OUT_DT_ID = ''
144
       OR @p_OUT_DT_ID IS NULL
145
        GOTO ABORT;
146
    INSERT INTO [dbo].[MW_OUT_DT]
147
    (
148
        [OUT_DT_ID],
149
        [OUT_ID],
150
        [MAST_BAL_ID],
151
        [CUST_NAME],
152
        [QTY],
153
		[QTY_OLD],
154
        [PRICE],
155
        [TOTAL_AMT],
156
        [NOTES],
157
		[TO_BRN_ID],
158
		[TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC]
159
    )
160
    SELECT @p_OUT_DT_ID,
161
           @p_OUT_ID,
162
           @MAST_BAL_ID,
163
           @CUST_NAME,
164
           @QTY,
165
		   @QTY_OLD,
166
           @PRICE,
167
           @TOTAL_AMT,
168
           @NOTES,
169
		   @TO_BRN_ID,
170
		   @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
171

    
172
    IF @@Error <> 0
173
        GOTO ABORT;
174
    FETCH NEXT FROM XmlData
175
    INTO @OUT_ID,
176
         @MAST_BAL_ID,
177
         @CUST_NAME,
178
         @QTY,
179
		 @QTY_OLD,
180
         @PRICE,
181
         @TOTAL_AMT,
182
         @NOTES,
183
		 @TO_BRN_ID,
184
		 @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
185
END;
186
CLOSE XmlData;
187
DEALLOCATE XmlData;
188
---
189
UPDATE MW_OUT
190
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
191
WHERE OUT_ID =@p_OUT_ID
192
COMMIT TRANSACTION;
193
SELECT '0' AS Result,@p_OUT_ID OUT_ID,'' ErrorDesc;
194
RETURN '0';
195
ABORT:
196
BEGIN
197
    CLOSE XmlData;
198
    DEALLOCATE XmlData;
199
    ROLLBACK TRANSACTION;
200
    SELECT '-1' AS Result,'' OUT_ID,'' ErrorDesc;
201
    RETURN '-1';
202
END;