Project

General

Profile

trans_kt_upd.txt

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

 
1
ALTER   PROCEDURE [dbo].[MW_TRANSFER_KT_Upd]
2
    @p_TRANSFER_ID varchar(15) = NULL,
3
    @p_TRN_DATE VARCHAR(20) = NULL,
4
    @p_TRN_TIME varchar(50) = NULL,
5
    @p_QTY DECIMAL(18,2) = NULL,
6
    @p_PRICE NUMERIC(18, 0) = NULL,
7
    @p_TOTAL_AMT numeric(18, 2) = NULL,
8
    @p_NOTES nvarchar(1000) = NULL,
9
    @p_AUTH_STATUS varchar(1) = NULL,
10
    @p_MAKER_ID varchar(15) = NULL,
11
    @p_CREATE_DT VARCHAR(20) = NULL,
12
    @p_CHECKER_ID varchar(15) = NULL,
13
    @p_APPROVE_DT VARCHAR(20) = NULL,
14
    @p_KT_AUTH_STATUS varchar(1) = NULL,
15
    @p_KT_MAKER_ID varchar(15) = NULL,
16
    @p_KT_CREATE_DT VARCHAR(20) = NULL,
17
    @p_KT_CHECKER_ID varchar(15) = NULL,
18
    @p_KT_APPROVE_DT VARCHAR(20) = NULL,
19
	@p_RECORD_STATUS varchar(1) = NULL,
20
	@p_FRM_BRANCH_ID VARCHAR(15) = NULL,
21
	@p_FRM_DEPT_ID VARCHAR(15) = NULL,
22
	@p_XmlData XML = NULL,
23
	@p_CORE_NOTE VARCHAR(1000) = NULL,
24
	@p_WARE_HOUSE VARCHAR(15) = NULL
25
AS
26
DECLARE 
27
		--DVSD
28
	@TRANSFER_ID varchar(15) = NULL,
29
    @MAST_BAL_ID varchar(15) = NULL,
30
    @FR_BRN_ID varchar(15) = NULL,
31
    @FR_DEPT_ID varchar(15) = NULL,
32
    @FR_PRICE_ID varchar(15) = NULL,
33
    @TO_BRN_ID varchar(15) = NULL,
34
    @TO_DEPT_ID varchar(15) = NULL,
35
    @QTY DECIMAL(18,2) = NULL,
36
    @QTY_OLD DECIMAL(18,2) = NULL,
37
    @PRICE NUMERIC(18, 0) = NULL,
38
    @TOTAL_AMT numeric(18, 2) = NULL,
39
    @NOTES nvarchar(1000) = NULL,
40
	@COST_ACC varchar(50) = NULL
41
   Declare @hdoc INT
42
	Exec sp_xml_preparedocument @hdoc Output,@p_XmlData
43
	DECLARE XmlData CURSOR FOR
44
	SELECT *
45
	FROM OPENXML(@hDoc,'/Root/XmlData',2)
46
	WITH 
47
	(
48
		TRANSFER_ID varchar(15) ,
49
		MAST_BAL_ID varchar(15) ,
50
		FR_BRN_ID varchar(15) ,
51
		FR_DEPT_ID varchar(15) ,
52
		FR_PRICE_ID varchar(15) ,
53
		TO_BRN_ID varchar(15) ,
54
		TO_DEPT_ID varchar(15) ,
55
		QTY DECIMAL(18,2) ,
56
		QTY_OLD DECIMAL(18,2) ,
57
		PRICE NUMERIC(18, 0) ,
58
		TOTAL_AMT numeric(18, 2) ,
59
		NOTES nvarchar(1000),
60
		COST_ACC varchar(50)
61
	)
62
	OPEN XmlData
63
        BEGIN TRANSACTION
64
		 --LUCTV: NGAY 07 -06 2019. BO SUNG RANG BUOC NEU DANG TRA VE CHO HANH CHINH THI KHONG DUOC PHEP CAP NHAT THONG TIN
65
		IF( (SELECT AUTH_STATUS FROM MW_TRANSFER WHERE TRANSFER_ID = @p_TRANSFER_ID)<>'A')
66
		BEGIN
67
				ROLLBACK TRANSACTION
68
				SELECT '-1' as Result,'' TRANSFER_ID, N'Thông tin điều chuyển đ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
69
				RETURN '-1'
70
		END
71
		-- END LUCTV: NGAY 07 -06 2019.
72
        UPDATE [dbo].[MW_TRANSFER]
73
	    SET    [TRN_TIME] = CONVERT(DATE,@p_TRN_TIME,103), [QTY] = @p_QTY, [PRICE] = ROUND(@p_PRICE,0),
74
			   [TOTAL_AMT] = @p_TOTAL_AMT, [NOTES] = @p_NOTES,KT_CREATE_DT =CONVERT(DATETIME,@p_KT_CREATE_DT,103),
75
			   KT_MAKER_ID =@p_KT_MAKER_ID,FR_BRN_ID = @p_FRM_BRANCH_ID, 
76
			   FR_DEPT_ID = @p_FRM_DEPT_ID, CORE_NOTE = dbo.fChuyenCoDauThanhKhongDau(@p_CORE_NOTE),WARE_HOUSE=@p_WARE_HOUSE,
77
			   KT_AUTH_STATUS ='U'
78

    
79
	    WHERE  [TRANSFER_ID] = @p_TRANSFER_ID
80
		IF @@Error <> 0 GOTO ABORT
81
		--Insert XmlData
82
		DELETE FROM MW_TRANSFER_DT WHERE TRANSFER_ID =@p_TRANSFER_ID
83
		DECLARE @INDEX  INT =0
84
		DECLARE @l_COST_ACC VARCHAR(50);
85
		DECLARE @PRICE_CODE VARCHAR(30)
86
		FETCH NEXT FROM XmlData INTO  @TRANSFER_ID,
87
											@MAST_BAL_ID,
88
											@FR_BRN_ID,
89
											@FR_DEPT_ID,
90
											@FR_PRICE_ID,
91
											@TO_BRN_ID,
92
											@TO_DEPT_ID,
93
											@QTY ,
94
											@QTY_OLD,
95
											@PRICE,
96
											@TOTAL_AMT ,
97
											@NOTES,
98
											@COST_ACC
99
								WHILE @@FETCH_STATUS = 0
100
								BEGIN 
101
								SET @INDEX = @INDEX+1
102
								SET @PRICE_CODE= (SELECT PRICE_CODE FROM MW_MAST_PRICE WHERE PRICE_ID =@FR_PRICE_ID)
103

    
104
								IF(@QTY > @QTY_OLD)
105
								BEGIN
106
									ROLLBACK TRANSACTION
107
									CLOSE XmlData;
108
									DEALLOCATE XmlData;
109
									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': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
110
									RETURN '-1'
111
								END
112

    
113
								SET @l_COST_ACC = (SELECT TOP 1 COST_ACC = CASE WHEN MT.GROUP_ID = 'MWG000000016073' and LEN(@COST_ACC) > 0 then @COST_ACC
114
														WHEN @COST_ACC = null then MT.EXP_ACCTNO
115
														WHEN @COST_ACC = '' then MT.EXP_ACCTNO
116
														ELSE MT.EXP_ACCTNO
117
														END 
118
													FROM dbo.MW_MAST_BAL A
119
													LEFT JOIN MW_MATERIAL MT ON A.MATERIAL_ID = MT.MATERIAL_ID
120
													WHERE A.MAST_BAL_ID = @MAST_BAL_ID)
121

    
122
								IF(@l_COST_ACC <> @COST_ACC)
123
									BEGIN
124
										ROLLBACK TRANSACTION
125
										CLOSE XmlData;
126
										DEALLOCATE XmlData;
127
										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
128
										RETURN '-1'
129
									END	
130

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

    
140
								----LUCTV: KIEM TRA XEM MAST_BAL_ID CO DANG DIEU CHUYEN CHO DON VI NAO KHAC HAY KHONG 29-11-2018
141
								--IF(EXISTS (SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID <>@p_TRANSFER_ID
142
								--AND TRANSFER_ID IN (SELECT TRANSFER_ID FROM MW_TRANSFER WHERE AUTH_STATUS IS NOT NULL AND KT_AUTH_STATUS <>'' AND KT_AUTH_STATUS <>'A' AND RECORD_STATUS='1')))
143
								--BEGIN
144
								--	CLOSE XmlData;
145
								--	DEALLOCATE XmlData;
146
								--	ROLLBACK TRANSACTION;
147
								--	SELECT '-1' AS Result,
148
								--		   '' TRANSFER_ID,
149
								--		   '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 điều chuyển mới!'ErrorDesc;
150
								--	RETURN '-1';
151
								--END
152
								----LUCTV: 08-03-2019 BO SUNG HAM KIEM TRA LO VAT LIEU NEU DANG DUOC XUAT SD THI PHAI CHO DUYET XONG MOI TAO MOI XUAT SD
153
								--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')))
154
								--BEGIN
155
								--	CLOSE XmlData;
156
								--	DEALLOCATE XmlData;
157
								--	ROLLBACK TRANSACTION;
158
								--	SELECT '-1' AS Result, '' TRANSFER_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;
159
								--	RETURN '-1';
160
								--END
161
								----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
162
								--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')))
163
								--BEGIN
164
								--	CLOSE XmlData;
165
								--	DEALLOCATE XmlData;
166
								--	ROLLBACK TRANSACTION;
167
								--	SELECT '-1' AS Result, '' TRANSFER_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;
168
								--	RETURN '-1';
169
								--END
170
		--						DECLARE @p_TRANSFER_DT_ID VARCHAR(15)
171
		--						EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out
172
		--						IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT
173
		--						INSERT INTO [dbo].[MW_TRANSFER_DT] ([TRANSFER_DT_ID], [TRANSFER_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])
174
		--						VALUES( @p_TRANSFER_DT_ID, @p_TRANSFER_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)
175
								DECLARE @p_TRANSFER_DT_ID VARCHAR(15)
176
								EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out
177
								IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT
178
								INSERT INTO [dbo].[MW_TRANSFER_DT] ([TRANSFER_DT_ID], [TRANSFER_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], [COST_ACC])
179
								VALUES( @p_TRANSFER_DT_ID, @p_TRANSFER_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, @COST_ACC)
180
								IF @@Error <> 0 GOTO ABORT
181
								FETCH NEXT FROM XmlData INTO	@TRANSFER_ID,
182
											@MAST_BAL_ID,
183
											@FR_BRN_ID,
184
											@FR_DEPT_ID,
185
											@FR_PRICE_ID,
186
											@TO_BRN_ID,
187
											@TO_DEPT_ID,
188
											@QTY ,
189
											@QTY_OLD,
190
											@PRICE,
191
											@TOTAL_AMT ,
192
											@NOTES,
193
											@COST_ACC
194
								END
195
		CLOSE XmlData
196
		DEALLOCATE XmlData
197

    
198
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
199
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @TRANSFER_ID AND PROCESS_ID = 'UPDATE_KT'
200
		INSERT INTO dbo.PL_PROCESS
201
		(
202
			REQ_ID,
203
			PROCESS_ID,
204
			CHECKER_ID,
205
			APPROVE_DT,
206
			PROCESS_DESC,NOTES
207
		)
208
		VALUES
209
		(   @TRANSFER_ID,        -- REQ_ID - varchar(15)
210
			'UPDATE_KT',        -- PROCESS_ID - varchar(10)
211
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
212
			GETDATE(), -- APPROVE_DT - datetime
213
			N'Cập nhật phiếu điều chuyển vật liệu kế toán thành công' ,
214
			N'Cập nhật phiếu điều chuyển vật liệu kế toán'      -- PROCESS_DESC - nvarchar(1000)
215
		)
216

    
217
COMMIT TRANSACTION
218
SELECT '0' as Result, @p_TRANSFER_ID  TRANSFER_ID ,'' ErrorDesc
219
RETURN '0'
220
ABORT:
221
BEGIN
222
		CLOSE XmlData
223
		DEALLOCATE XmlData
224
		ROLLBACK TRANSACTION
225
		SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc
226
		RETURN '-1'
227
END