Project

General

Profile

f3.txt

Luc Tran Van, 11/16/2023 05:50 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(100) = NULL,
14
    @p_CREATE_DT VARCHAR(25) = NULL,
15
    @p_CHECKER_ID VARCHAR(100) = NULL,
16
    @p_APPROVE_DT VARCHAR(25) = NULL,
17
    @p_KT_AUTH_STATUS VARCHAR(1) = NULL,
18
    @p_KT_MAKER_ID VARCHAR(100) = NULL,
19
    @p_KT_CREATE_DT VARCHAR(25) = NULL,
20
    @p_KT_CHECKER_ID VARCHAR(100) = 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
    @UNIT_RECEIVE VARCHAR(50)= NULL,
43
    @DEP_RECEIVE VARCHAR(50)= NULL,
44
    @UNIT_CHARGE VARCHAR(50)= NULL,
45
    @DEP_CHARGE VARCHAR(50)= NULL,
46
    @UNIT_PAY VARCHAR(50)= NULL,
47
    @QTY_RECEIVE DECIMAL(18,2) = NULL,
48
    @QTY_DAMAGED DECIMAL(18,2) = NULL,
49
    @QTY_LOSS DECIMAL(18,2) = NULL,
50
    @RECEIVE_NOTES NVARCHAR(1000) = NULL,
51
    @VAT DECIMAL(18,2) = NULL,
52
    @PRICE_VAT DECIMAL(18,2) = NULL
53
DECLARE @hdoc INT;
54
EXEC sp_xml_preparedocument @hdoc OUTPUT, @p_XmlData;
55
DECLARE XmlData CURSOR FOR
56
SELECT *
57
FROM
58
    OPENXML(@hdoc, '/Root/XmlData', 2)
59
    WITH
60
    (
61
        OUT_ID VARCHAR(15),
62
        MAST_BAL_ID VARCHAR(15),
63
        --FR_BRN_ID varchar(15) ,
64
        --FR_DEPT_ID varchar(15) ,
65
        --FR_PRICE_ID varchar(15) ,
66
        --TO_BRN_ID varchar(15) ,
67
        --TO_DEPT_ID varchar(15) ,
68
        CUST_NAME NVARCHAR(200),
69
        QTY DECIMAL(18,2),
70
		    QTY_OLD DECIMAL(18,2),
71
        --QTY_OLD int ,
72
        PRICE NUMERIC(18, 0),
73
        TOTAL_AMT NUMERIC(18, 2),
74
        NOTES NVARCHAR(1000),
75
			  TO_BRN_ID varchar(15),
76
		    TO_DEPT_ID varchar(15),
77
        EVENT_NAME NVARCHAR(1000), 
78
        IS_BCT VARCHAR(1), 
79
        COST_ACC VARCHAR(50),
80
        UNIT_RECEIVE VARCHAR(50),
81
        DEP_RECEIVE VARCHAR(50),
82
        UNIT_CHARGE VARCHAR(50),
83
        DEP_CHARGE VARCHAR(50),
84
        UNIT_PAY VARCHAR(50),
85
        QTY_RECEIVE DECIMAL(18,2),
86
        QTY_DAMAGED DECIMAL(18,2),
87
        QTY_LOSS DECIMAL(18,2),
88
        RECEIVE_NOTES NVARCHAR(1000),
89
        VAT DECIMAL(18,2),
90
        PRICE_VAT DECIMAL(18,2)
91
    );
92
OPEN XmlData;
93
BEGIN TRANSACTION;
94
    IF((SELECT STATUS FROM MW_OUT mo WHERE mo.OUT_ID = @p_OUT_ID) <> 'OUT_KT')
95
    BEGIN
96
    	ROLLBACK TRANSACTION
97
      SELECT '-1' as Result, '' OUT_ID, N'Phiếu xuất chưa đến đến bước kế toán cập nhật.' ErrorDesc
98
    	RETURN '-1'
99
    END
100
	  --LUCTV: NGAY 07 -06 2019. BO SUNG RANG BUOC NEU DANG TRA VE CHO HANH CHINH THI KHONG DUOC PHEP CAP NHAT THONG TIN
101
		IF( (SELECT AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID)<>'A')
102
		BEGIN
103
				ROLLBACK TRANSACTION
104
				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
105
				RETURN '-1'
106
		END
107
		-- END LUCTV: NGAY 07 -06 2019.
108
	UPDATE [dbo].[MW_OUT]
109
	SET 
110
		--[TRN_Date] = CONVERT(VARCHAR(20), @p_TRN_Date, 103),
111
		--[TRN_TIME] = @p_TRN_TIME,
112
		[QTY] = @p_QTY,
113
		--[QTY_OLD] = @p_QTY,
114
		[PRICE] = ROUND(@p_PRICE,0),
115
		[TOTAL_AMT] = @p_TOTAL_AMT,
116
		[NOTES] = @p_NOTES,
117
		KT_AUTH_STATUS ='E',
118
		KT_CREATE_DT = CONVERT(DATETIME, @p_KT_CREATE_DT, 103),
119
		KT_MAKER_ID =@p_KT_MAKER_ID,
120
		CORE_NOTE = @p_CORE_NOTE,
121
		DEPT_ID = @p_DEPT_ID
122
	WHERE [OUT_ID] = @p_OUT_ID;
123
IF @@Error <> 0
124
    GOTO ABORT;
125
--Insert XmlData
126
DELETE FROM MW_OUT_DT WHERE OUT_ID = @p_OUT_ID;
127
FETCH NEXT FROM XmlData
128
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,@UNIT_RECEIVE,@DEP_RECEIVE,@UNIT_CHARGE,@DEP_CHARGE,@UNIT_PAY,@QTY_RECEIVE,
129
        @QTY_DAMAGED,
130
        @QTY_LOSS,
131
        @RECEIVE_NOTES,@VAT,@PRICE_VAT
132
DECLARE @INDEX INT =0
133
DECLARE @PRICE_CODE VARCHAR(30)
134
WHILE @@FETCH_STATUS = 0
135
BEGIN
136
    DECLARE @p_OUT_DT_ID VARCHAR(15);
137
	DECLARE @l_COST_ACC VARCHAR(50);
138
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
139
    IF @p_OUT_DT_ID = ''
140
       OR @p_OUT_DT_ID IS NULL
141
        GOTO ABORT;
142
    --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])
143
    --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)
144
	  -- 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)
145
	SET @INDEX = @INDEX +1
146
	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))
147
	IF(@QTY > (SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))
148
	BEGIN
149
		CLOSE XmlData
150
		DEALLOCATE XmlData
151
		ROLLBACK TRANSACTION
152
		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
153
		RETURN '-1'
154
	END
155

    
156
    IF(@UNIT_CHARGE IS NULL OR @UNIT_CHARGE = '')
157
	BEGIN
158
		CLOSE XmlData
159
		DEALLOCATE XmlData
160
		ROLLBACK TRANSACTION
161
		SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Đơn vị chịu chi phí không được để trống' ErrorDesc
162
		RETURN '-1'
163
	END
164
    IF( EXISTS(SELECT 1 FROM CM_BRANCH CB WHERE CB.BRANCH_ID = @UNIT_CHARGE AND CB.BRANCH_TYPE = 'HS') AND (@DEP_CHARGE IS NULL OR @DEP_CHARGE = ''))
165
	BEGIN
166
		CLOSE XmlData
167
		DEALLOCATE XmlData
168
		ROLLBACK TRANSACTION
169
		SELECT '-1' as Result, @OUT_ID OUT_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Phòng ban chịu chi phí không được để trống' ErrorDesc
170
		RETURN '-1'
171
	END
172

    
173
	SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
174
													WHEN @COST_ACC = null then MT.EXP_ACCTNO
175
													WHEN @COST_ACC = '' then MT.EXP_ACCTNO
176
													ELSE MT.EXP_ACCTNO
177
													END 
178
												FROM dbo.MW_MAST_BAL A
179
												LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
180
												WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
181
    IF NOT EXISTS(SELECT 1 FROM ENTRIES_POST_ACCNO_MW WHERE ACC_NO = @COST_ACC)
182
    --OR NOT EXISTS(SELECT 1 FROM MW_GROUP WHERE EXP_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO = @COST_ACC OR INC_ACCTNO = @COST_ACC OR LIQ_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO_NHNN = @COST_ACC OR VAT_ACCTNO = @COST_ACC)
183
    --OR NOT EXISTS(SELECT 1 FROM MW_MATERIAL WHERE EXP_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO = @COST_ACC OR INC_ACCTNO = @COST_ACC OR LIQ_ACCTNO = @COST_ACC OR MATERIAL_ACCTNO_NHNN = @COST_ACC OR VAT_ACCTNO = @COST_ACC)
184
    BEGIN
185
		ROLLBACK TRANSACTION
186
		CLOSE XmlData;
187
		DEALLOCATE XmlData;
188
		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.' ErrorDesc
189
		RETURN '-1'
190
	END	
191

    
192
--	IF(@l_COST_ACC <> @COST_ACC)
193
--	BEGIN
194
--		ROLLBACK TRANSACTION
195
--		CLOSE XmlData;
196
--		DEALLOCATE XmlData;
197
--		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
198
--		RETURN '-1'
199
--	END	
200

    
201
	IF(@COST_ACC IS NULL OR @COST_ACC = '')
202
	BEGIN
203
		ROLLBACK TRANSACTION
204
		CLOSE XmlData;
205
		DEALLOCATE XmlData;
206
		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
207
		RETURN '-1'
208
	END
209

    
210
	----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
211
	--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')))
212
	--BEGIN
213
	--	CLOSE XmlData;
214
	--	DEALLOCATE XmlData;
215
	--	ROLLBACK TRANSACTION;
216
	--	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;
217
	--	RETURN '-1';
218
	--END
219
	----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
220
	--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')))
221
	--BEGIN
222
	--	CLOSE XmlData;
223
	--	DEALLOCATE XmlData;
224
	--	ROLLBACK TRANSACTION;
225
	--	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;
226
	--	RETURN '-1';
227
	--END
228
	----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
229
	--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')))
230
	--BEGIN
231
	--	CLOSE XmlData;
232
	--	DEALLOCATE XmlData;
233
	--	ROLLBACK TRANSACTION;
234
	--	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;
235
	--	RETURN '-1';
236
	--END
237

    
238
    INSERT INTO [dbo].[MW_OUT_DT]
239
    (
240
        [OUT_DT_ID],
241
        [OUT_ID],
242
        [MAST_BAL_ID],
243
        [CUST_NAME],
244
        [QTY],
245
		    [QTY_OLD],
246
        [PRICE],
247
        [TOTAL_AMT],
248
        [NOTES],
249
		    [TO_BRN_ID],
250
		    [TO_DEPT_ID],
251
        [EVENT_NAME],
252
        [IS_BCT], 
253
        [COST_ACC],
254
        UNIT_RECEIVE,
255
        DEP_RECEIVE,
256
        UNIT_CHARGE,
257
        DEP_CHARGE,
258
        UNIT_PAY,
259
        QTY_RECEIVE,
260
        QTY_DAMAGED,
261
        QTY_LOSS,
262
        RECEIVE_NOTES,
263
        VAT,
264
        PRICE_VAT
265
    )
266
    SELECT @p_OUT_DT_ID,
267
           @OUT_ID,
268
           @MAST_BAL_ID,
269
           @CUST_NAME,
270
           @QTY,
271
		       @QTY_OLD,
272
           @PRICE,
273
           @TOTAL_AMT,
274
           @NOTES,
275
		       @TO_BRN_ID,
276
		       @TO_DEPT_ID,
277
           @EVENT_NAME,
278
           @IS_BCT,
279
           @COST_ACC,
280
           @UNIT_RECEIVE,
281
           @DEP_RECEIVE,
282
           @UNIT_CHARGE,
283
           @DEP_CHARGE,
284
           @UNIT_PAY,
285
           @QTY_RECEIVE,
286
           @QTY_DAMAGED,
287
           @QTY_LOSS,
288
           @RECEIVE_NOTES,
289
           @VAT,
290
           @PRICE_VAT
291
    IF @@Error <> 0 GOTO ABORT;
292
    FETCH NEXT FROM XmlData
293
    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,@UNIT_RECEIVE,@DEP_RECEIVE,@UNIT_CHARGE,@DEP_CHARGE,@UNIT_PAY,@QTY_RECEIVE,
294
        @QTY_DAMAGED,
295
        @QTY_LOSS,
296
        @RECEIVE_NOTES,@VAT,@PRICE_VAT
297
END;
298
CLOSE XmlData;
299
DEALLOCATE XmlData;
300

    
301
		INSERT INTO dbo.MW_PROCESS
302
		(
303
			REQ_ID,
304
			PROCESS_ID,
305
			CHECKER_ID,
306
			APPROVE_DT,
307
			PROCESS_DESC,NOTES
308
		)
309
		VALUES
310
		(   @OUT_ID,        -- REQ_ID - varchar(15)
311
			'UPDATE_KT',        -- PROCESS_ID - varchar(10)
312
			@p_KT_MAKER_ID,        -- CHECKER_ID - varchar(15)
313
			GETDATE(), -- APPROVE_DT - datetime
314
			N'Giao dịch viên cập nhật phiếu xuất vật liệu thành công' ,
315
			N'Giao dịch viên c ập nhật phiếu xuất vật liệu'      -- PROCESS_DESC - nvarchar(1000)
316
		)
317

    
318
COMMIT TRANSACTION;
319
SELECT '0' AS Result,
320
       @p_OUT_ID OUT_ID,
321
       '' ErrorDesc;
322
RETURN '0';
323
ABORT:
324
BEGIN
325
    CLOSE XmlData;
326
    DEALLOCATE XmlData;
327
    ROLLBACK TRANSACTION;
328
    SELECT '-1' AS Result,
329
           '' OUT_ID,
330
           '' ErrorDesc;
331
    RETURN '-1';
332
END