Project

General

Profile

MW_OUT_UPD.TXT

Luc Tran Van, 03/25/2022 10:58 AM

 
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
DECLARE @l_COST_ACC VARCHAR(50);
89
DELETE FROM MW_OUT_DT
90
WHERE OUT_ID = @p_OUT_ID;
91
FETCH NEXT FROM XmlData
92
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
93
WHILE @@FETCH_STATUS = 0
94
BEGIN
95
	SET @INDEX = @INDEX +1
96
	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))
97

    
98
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
99
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
100
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
101
														ELSE MT.EXP_ACCTNO
102
														END 
103
						FROM dbo.MW_MAST_BAL A
104
						LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
105
						WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
106

    
107
	IF(@COST_ACC IS NULL OR @COST_ACC = '')
108
		BEGIN
109
			ROLLBACK TRANSACTION
110
			CLOSE XmlData;
111
			DEALLOCATE XmlData;
112
			SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí không được để trống' ErrorDesc
113
			RETURN '-1'
114
		END
115
	IF(@l_COST_ACC <> @COST_ACC)
116
		BEGIN
117
			ROLLBACK TRANSACTION
118
			CLOSE XmlData;
119
			DEALLOCATE XmlData;
120
			SELECT '-1' as Result, '' OUT_ID, N'Danh sách đơn vị/ khách hàng nhận, Dòng ' + CONVERT(VARCHAR(5),@INDEX)+N': Tài khoản chi phí sai quy định. Bạn chỉ được điều chỉnh tài khoản chi phí của vật liệu thuộc nhóm Vật Liệu Thẻ Dùng Chung.' ErrorDesc
121
			RETURN '-1'
122
		END	
123
	--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
124
	--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')))
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 xuất sử dụng. Vui lòng duyệt thông tin trước khi tạo đợt mới' ErrorDesc;
130
	--	RETURN '-1';
131
	--END
132
	----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
133
	--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')))
134
	--BEGIN
135
	--	CLOSE XmlData;
136
	--	DEALLOCATE XmlData;
137
	--	ROLLBACK TRANSACTION;
138
	--	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;
139
	--	RETURN '-1';
140
	--END
141
	----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
142
	--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')))
143
	--BEGIN
144
	--	CLOSE XmlData;
145
	--	DEALLOCATE XmlData;
146
	--	ROLLBACK TRANSACTION;
147
	--	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;
148
	--	RETURN '-1';
149
	--END
150
	-- 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)
151
	IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
152
	BEGIN
153
		CLOSE XmlData
154
		DEALLOCATE XmlData
155
		ROLLBACK TRANSACTION
156
		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
157
		RETURN '-1'
158
	END
159
    DECLARE @p_OUT_DT_ID VARCHAR(15);
160
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
161
    IF @p_OUT_DT_ID = ''
162
       OR @p_OUT_DT_ID IS NULL
163
        GOTO ABORT;
164
    INSERT INTO [dbo].[MW_OUT_DT]
165
    (
166
        [OUT_DT_ID],
167
        [OUT_ID],
168
        [MAST_BAL_ID],
169
        [CUST_NAME],
170
        [QTY],
171
		[QTY_OLD],
172
        [PRICE],
173
        [TOTAL_AMT],
174
        [NOTES],
175
		[TO_BRN_ID],
176
		[TO_DEPT_ID],[EVENT_NAME],[IS_BCT],[COST_ACC]
177
    )
178
    SELECT @p_OUT_DT_ID,
179
           @p_OUT_ID,
180
           @MAST_BAL_ID,
181
           @CUST_NAME,
182
           @QTY,
183
		   @QTY_OLD,
184
           @PRICE,
185
           @TOTAL_AMT,
186
           @NOTES,
187
		   @TO_BRN_ID,
188
		   @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
189

    
190
    IF @@Error <> 0
191
        GOTO ABORT;
192
    FETCH NEXT FROM XmlData
193
    INTO @OUT_ID,
194
         @MAST_BAL_ID,
195
         @CUST_NAME,
196
         @QTY,
197
		 @QTY_OLD,
198
         @PRICE,
199
         @TOTAL_AMT,
200
         @NOTES,
201
		 @TO_BRN_ID,
202
		 @TO_DEPT_ID,@EVENT_NAME,@IS_BCT,@COST_ACC
203
END;
204
CLOSE XmlData;
205
DEALLOCATE XmlData;
206
---
207
UPDATE MW_OUT
208
SET TOTAL_AMT = (SELECT SUM(TOTAL_AMT) FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID)
209
WHERE OUT_ID =@p_OUT_ID
210
COMMIT TRANSACTION;
211
SELECT '0' AS Result,@p_OUT_ID OUT_ID,'' ErrorDesc;
212
RETURN '0';
213
ABORT:
214
BEGIN
215
    CLOSE XmlData;
216
    DEALLOCATE XmlData;
217
    ROLLBACK TRANSACTION;
218
    SELECT '-1' AS Result,'' OUT_ID,'' ErrorDesc;
219
    RETURN '-1';
220
END;