Project

General

Profile

MW_TRANS_KT_UPD.txt

Luc Tran Van, 12/19/2022 11:29 AM

 
1

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

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

    
112
								IF(@QTY > @QTY_OLD)
113
								BEGIN
114
									ROLLBACK TRANSACTION
115
									CLOSE XmlData;
116
									DEALLOCATE XmlData;
117
									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
118
									RETURN '-1'
119
								END
120

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

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

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

    
148
								----LUCTV: KIEM TRA XEM MAST_BAL_ID CO DANG DIEU CHUYEN CHO DON VI NAO KHAC HAY KHONG 29-11-2018
149
								--IF(EXISTS (SELECT * FROM MW_TRANSFER_DT WHERE MAST_BAL_ID =@MAST_BAL_ID AND TRANSFER_ID <>@p_TRANSFER_ID
150
								--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')))
151
								--BEGIN
152
								--	CLOSE XmlData;
153
								--	DEALLOCATE XmlData;
154
								--	ROLLBACK TRANSACTION;
155
								--	SELECT '-1' AS Result,
156
								--		   '' TRANSFER_ID,
157
								--		   '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;
158
								--	RETURN '-1';
159
								--END
160
								----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
161
								--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')))
162
								--BEGIN
163
								--	CLOSE XmlData;
164
								--	DEALLOCATE XmlData;
165
								--	ROLLBACK TRANSACTION;
166
								--	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;
167
								--	RETURN '-1';
168
								--END
169
								----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
170
								--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')))
171
								--BEGIN
172
								--	CLOSE XmlData;
173
								--	DEALLOCATE XmlData;
174
								--	ROLLBACK TRANSACTION;
175
								--	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;
176
								--	RETURN '-1';
177
								--END
178
		--						DECLARE @p_TRANSFER_DT_ID VARCHAR(15)
179
		--						EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out
180
		--						IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT
181
		--						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])
182
		--						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)
183

    
184
								IF(ISNULL(@TRANSFER_DT_ID, '') = '')
185
								BEGIN
186
									print 'have not id'
187
									/*
188
									DECLARE @p_TRANSFER_DT_ID VARCHAR(15)
189
									EXEC SYS_CodeMasters_Gen 'MW_TRANSFER_DT', @p_TRANSFER_DT_ID out
190
									IF @p_TRANSFER_DT_ID='' OR @p_TRANSFER_DT_ID IS NULL GOTO ABORT
191
									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])
192
									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)
193
									*/
194
								END
195
								ELSE
196
								BEGIN
197
									UPDATE MW_TRANSFER_DT
198
									SET TO_BRN_ID = @TO_BRN_ID, TO_DEPT_ID = @TO_DEPT_ID, NOTES = @NOTES, COST_ACC = @COST_ACC
199
									WHERE TRANSFER_DT_ID = @TRANSFER_DT_ID
200
								END
201
								IF @@Error <> 0 GOTO ABORT
202
								FETCH NEXT FROM XmlData INTO	
203
											@TRANSFER_DT_ID,		
204
											@TRANSFER_ID,
205
											@MAST_BAL_ID,
206
											@FR_BRN_ID,
207
											@FR_DEPT_ID,
208
											@FR_PRICE_ID,
209
											@TO_BRN_ID,
210
											@TO_DEPT_ID,
211
											@QTY ,
212
											@QTY_OLD,
213
											@PRICE,
214
											@TOTAL_AMT ,
215
											@NOTES,
216
											@COST_ACC
217
								END
218
		CLOSE XmlData
219
		DEALLOCATE XmlData
220

    
221
		-- doanptt 07/06/2022: XÓA CÁC PROCESS UPDATE CŨ
222
		DELETE dbo.PL_PROCESS WHERE REQ_ID = @TRANSFER_ID AND PROCESS_ID = 'UPDATE_KT'
223
		INSERT INTO dbo.PL_PROCESS
224
		(
225
			REQ_ID,
226
			PROCESS_ID,
227
			CHECKER_ID,
228
			APPROVE_DT,
229
			PROCESS_DESC,NOTES
230
		)
231
		VALUES
232
		(   @TRANSFER_ID,        -- REQ_ID - varchar(15)
233
			'UPDATE_KT',        -- PROCESS_ID - varchar(10)
234
			@p_MAKER_ID,        -- CHECKER_ID - varchar(15)
235
			GETDATE(), -- APPROVE_DT - datetime
236
			N'Cập nhật phiếu điều chuyển vật liệu kế toán thành công' ,
237
			N'Cập nhật phiếu điều chuyển vật liệu kế toán'      -- PROCESS_DESC - nvarchar(1000)
238
		)
239

    
240
COMMIT TRANSACTION
241
SELECT '0' as Result, @p_TRANSFER_ID  TRANSFER_ID ,'' ErrorDesc
242
RETURN '0'
243
ABORT:
244
BEGIN
245
		CLOSE XmlData
246
		DEALLOCATE XmlData
247
		ROLLBACK TRANSACTION
248
		SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc
249
		RETURN '-1'
250
END