Project

General

Profile

out_kt_upd.txt

Luc Tran Van, 11/23/2022 05:28 PM

 
1
ALTER   PROCEDURE [dbo].[MW_OUT_KT_Upd]
2
    @p_OUT_ID VARCHAR(15) = NULL,
3
    @p_TRN_Date VARCHAR(25) = NULL,
4
    @p_TRN_TIME VARCHAR(50) = NULL,
5
    @p_BRN_ID VARCHAR(15) = NULL,
6
    @p_DEPT_ID VARCHAR(15) = NULL,
7
    @p_QTY DECIMAL(18,2) = NULL,
8
    @p_PRICE NUMERIC(18, 0) = NULL,
9
    @p_TOTAL_AMT NUMERIC(18, 2) = NULL,
10
    @p_NOTES NVARCHAR(1000)= NULL,
11
    @p_OUT_DESC NVARCHAR(500) = NULL,
12
    @p_AUTH_STATUS VARCHAR(1) = NULL,
13
    @p_MAKER_ID VARCHAR(15) = NULL,
14
    @p_CREATE_DT VARCHAR(25) = NULL,
15
    @p_CHECKER_ID VARCHAR(15) = NULL,
16
    @p_APPROVE_DT VARCHAR(25) = NULL,
17
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
18
    @p_KT_MAKER_ID VARCHAR(15) = NULL,
19
    @p_KT_CREATE_DT VARCHAR(25) = NULL,
20
    @p_KT_CHECKER_ID VARCHAR(15) = NULL,
21
    @p_KT_APPROVE_DT VARCHAR(25) = NULL,
22
    @p_RECORD_STATUS VARCHAR(1) = NULL,
23
    @p_XmlData XML = NULL,
24
	@p_CORE_NOTE nvarchar(500) = NULL,
25
	@p_WARE_HOUSE VARCHAR(15) = NULL
26
AS
27
DECLARE
28
    --DVSD
29
    @OUT_ID VARCHAR(15) = NULL,
30
    @MAST_BAL_ID VARCHAR(15) = NULL,
31
    @CUST_NAME NVARCHAR(200) = NULL,
32
    @QTY DECIMAL(18,2) = NULL,
33
	@QTY_OLD DECIMAL(18,2) = NULL,
34
    @PRICE NUMERIC(18, 0) = NULL,
35
    @TOTAL_AMT NUMERIC(18, 2) = NULL,
36
    @NOTES NVARCHAR(1000),
37
	@TO_BRN_ID varchar(15) = NULL,
38
    @TO_DEPT_ID varchar(15) = NULL,
39
	@EVENT_NAME NVARCHAR(1000) = NULL, --LUCTV BO SUNG 15-02-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
40
	@IS_BCT VARCHAR(1) = 'N',-- LUCTV BO SUNG 05-04-2019 TEN SU KIEN TREN LUOI DS XUAT VAT LIEU
41
	@COST_ACC VARCHAR(50) = NULL
42
DECLARE @hdoc INT;
43
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
44
DECLARE XmlData CURSOR FOR
45
SELECT *
46
FROM
47
    OPENXML(@hdoc, '/Root/XmlData', 2)
48
    WITH
49
    (
50
        OUT_ID VARCHAR(15),
51
        MAST_BAL_ID VARCHAR(15),
52
        --FR_BRN_ID varchar(15) ,
53
        --FR_DEPT_ID varchar(15) ,
54
        --FR_PRICE_ID varchar(15) ,
55
        --TO_BRN_ID varchar(15) ,
56
        --TO_DEPT_ID varchar(15) ,
57
        CUST_NAME NVARCHAR(200),
58
        QTY DECIMAL(18,2),
59
		QTY_OLD DECIMAL(18,2),
60
        --QTY_OLD int ,
61
        PRICE NUMERIC(18, 0),
62
        TOTAL_AMT NUMERIC(18, 2),
63
        NOTES NVARCHAR(1000),
64
			TO_BRN_ID varchar(15),
65
		TO_DEPT_ID varchar(15),EVENT_NAME NVARCHAR(1000), IS_BCT VARCHAR(1), COST_ACC VARCHAR(50)
66
    );
67
OPEN XmlData;
68
BEGIN TRANSACTION;
69
	  --LUCTV: NGAY 07 -06 2019. BO SUNG RANG BUOC NEU DANG TRA VE CHO HANH CHINH THI KHONG DUOC PHEP CAP NHAT THONG TIN
70
		IF( (SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID)<>'A')
71
		BEGIN
72
				ROLLBACK TRANSACTION
73
				SELECT '-1' as Result,'' OUT_ID, N'Thông tin xuất vật liệu đang bị trả về bộ phận hành chính. Vui lòng chờ bộ phận hành chính kiểm duyệt' ErrorDesc
74
				RETURN '-1'
75
		END
76
		-- END LUCTV: NGAY 07 -06 2019.
77
	UPDATE [dbo].[MW_OUT]
78
	SET 
79
		--[TRN_Date] = CONVERT(VARCHAR(20), @p_TRN_Date, 103),
80
		--[TRN_TIME] = @p_TRN_TIME,
81
		[QTY] = @p_QTY,
82
		  --[QTY_OLD] = @p_QTY,
83
		[PRICE] = ROUND(@p_PRICE,0),
84
		[TOTAL_AMT] = @p_TOTAL_AMT,
85
		[NOTES] = @p_NOTES,
86
		KT_AUTH_STATUS ='U',
87
		KT_CREATE_DT = CONVERT(DATETIME, @p_KT_CREATE_DT, 103),
88
		KT_MAKER_ID =@p_KT_MAKER_ID,
89
		CORE_NOTE = dbo.fChuyenCoDauThanhKhongDau(@p_CORE_NOTE),
90
		DEPT_ID = @p_DEPT_ID
91
	WHERE [OUT_ID] = @p_OUT_ID;
92
IF @@Error <> 0
93
    GOTO ABORT;
94
--Insert XmlData
95
DELETE FROM MW_OUT_DT
96
WHERE OUT_ID = @p_OUT_ID;
97
FETCH NEXT FROM XmlData
98
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
99
DECLARE @INDEX INT =0
100
DECLARE @PRICE_CODE VARCHAR(30)
101
WHILE @@FETCH_STATUS = 0
102
BEGIN
103
    DECLARE @p_OUT_DT_ID VARCHAR(15);
104
	DECLARE @l_COST_ACC VARCHAR(50);
105
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
106
    IF @p_OUT_DT_ID = ''
107
       OR @p_OUT_DT_ID IS NULL
108
        GOTO ABORT;
109
    --INSERT INTO [dbo].[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])
110
    --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)
111
	-- 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)
112
	SET @INDEX = @INDEX +1
113
	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))
114
	IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
115
	BEGIN
116
		CLOSE XmlData
117
		DEALLOCATE XmlData
118
		ROLLBACK TRANSACTION
119
		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
120
		RETURN '-1'
121
	END
122

    
123
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
124
													WHEN @COST_ACC = null then MT.EXP_ACCTNO
125
													WHEN @COST_ACC = '' then MT.EXP_ACCTNO
126
													ELSE MT.EXP_ACCTNO
127
													END 
128
												FROM dbo.MW_MAST_BAL A
129
												LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
130
												WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
131

    
132
	IF(@l_COST_ACC <> @COST_ACC)
133
	BEGIN
134
		ROLLBACK TRANSACTION
135
		CLOSE XmlData;
136
		DEALLOCATE XmlData;
137
		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
138
		RETURN '-1'
139
	END	
140

    
141
	IF(@COST_ACC IS NULL OR @COST_ACC = '')
142
	BEGIN
143
		ROLLBACK TRANSACTION
144
		CLOSE XmlData;
145
		DEALLOCATE XmlData;
146
		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
147
		RETURN '-1'
148
	END
149

    
150
	----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
151
	--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')))
152
	--BEGIN
153
	--	CLOSE XmlData;
154
	--	DEALLOCATE XmlData;
155
	--	ROLLBACK TRANSACTION;
156
	--	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;
157
	--	RETURN '-1';
158
	--END
159
	----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
160
	--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')))
161
	--BEGIN
162
	--	CLOSE XmlData;
163
	--	DEALLOCATE XmlData;
164
	--	ROLLBACK TRANSACTION;
165
	--	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;
166
	--	RETURN '-1';
167
	--END
168
	----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
169
	--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')))
170
	--BEGIN
171
	--	CLOSE XmlData;
172
	--	DEALLOCATE XmlData;
173
	--	ROLLBACK TRANSACTION;
174
	--	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;
175
	--	RETURN '-1';
176
	--END
177
    INSERT INTO [dbo].[MW_OUT_DT]
178
    (
179
        [OUT_DT_ID],
180
        [OUT_ID],
181
        [MAST_BAL_ID],
182
        [CUST_NAME],
183
        [QTY],
184
		 [QTY_OLD],
185
        [PRICE],
186
        [TOTAL_AMT],
187
        [NOTES],
188
		[TO_BRN_ID],
189
		[TO_DEPT_ID],[EVENT_NAME],[IS_BCT], [COST_ACC]
190
    )
191
    SELECT @p_OUT_DT_ID,
192
           @OUT_ID,
193
           @MAST_BAL_ID,
194
           @CUST_NAME,
195
           @QTY,
196
		   @QTY_OLD,
197
           @PRICE,
198
           @TOTAL_AMT,
199
           @NOTES,
200
		   @TO_BRN_ID,
201
		   @TO_DEPT_ID,@EVENT_NAME,@IS_BCT, @COST_ACC
202
    IF @@Error <> 0
203
        GOTO ABORT;
204
    FETCH NEXT FROM XmlData
205
    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
206
END;
207
CLOSE XmlData;
208
DEALLOCATE XmlData;
209

    
210
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
211
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @OUT_ID AND PROCESS_ID = 'UPDATE_KT'
212
		INSERT INTO dbo.PL_PROCESS
213
		(
214
			REQ_ID,
215
			PROCESS_ID,
216
			CHECKER_ID,
217
			APPROVE_DT,
218
			PROCESS_DESC,NOTES
219
		)
220
		VALUES
221
		(   @OUT_ID,        -- REQ_ID - varchar(15)
222
			'UPDATE_KT',        -- PROCESS_ID - varchar(10)
223
			@p_KT_MAKER_ID,        -- CHECKER_ID - varchar(15)
224
			GETDATE(), -- APPROVE_DT - datetime
225
			N'Cập nhật phiếu xuất vật kế toán thành công' ,
226
			N'Cập nhật phiếu xuất vật liệu kế toán'      -- PROCESS_DESC - nvarchar(1000)
227
		)
228

    
229
COMMIT TRANSACTION;
230
SELECT '0' AS Result,
231
       @p_OUT_ID OUT_ID,
232
       '' ErrorDesc;
233
RETURN '0';
234
ABORT:
235
BEGIN
236
    CLOSE XmlData;
237
    DEALLOCATE XmlData;
238
    ROLLBACK TRANSACTION;
239
    SELECT '-1' AS Result,
240
           '' OUT_ID,
241
           '' ErrorDesc;
242
    RETURN '-1';
243
END;