Project

General

Profile

MW_TRANSFER_KT_App.txt

Luc Tran Van, 03/30/2023 11:38 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[MW_TRANSFER_KT_App]
3
    @p_TRANSFER_ID varchar(15) = NULL,
4
    @p_KT_CHECKER_ID varchar(15) = NULL,
5
    @p_KT_APPROVE_DT VARCHAR(20) = NULL,
6
	@p_XmlData XML = NULL
7
AS
8
DECLARE 
9
		@TRANSFER_DT_ID VARCHAR(15) = NULL,@ERROR NVARCHAR(500),
10
        @TOTAL_AMT NUMERIC(18, 0) = NULL,
11
        @BRANCH_CREATE VARCHAR(15) = NULL,
12
        @CORE_NOTE NVARCHAR(1000) = NULL,
13
        @KT_MAKER_ID VARCHAR(20) = NULL,
14
        @BRANCH_ID VARCHAR(15) = NULL,
15
        @DEPT_ID VARCHAR(15) = NULL,
16
        @PRICE_ID VARCHAR(15) = NULL,
17
        @GROUP_ID VARCHAR(15) = NULL,
18
		@MATERIAL_ID VARCHAR(15) = NULL,@TO_BRN_ID VARCHAR(15) = NULL,@TO_DEPT_ID VARCHAR(15) = NULL,
19
		@IS_PROMO VARCHAR(1) = NULL, @VAT NUMERIC(18, 0), @VAT_AMT NUMERIC(18, 0),@PRICE_VAT NUMERIC(18, 0),
20
		-- LUCTV 01 03 2019 BO SUNG NHUNG BIEN PHUC VU CHO CURSOR DUYET
21
		@MAST_BAL_ID varchar(15) = NULL,
22
		@FR_BRN_ID varchar(15) = NULL,
23
		@FR_DEPT_ID varchar(15) = NULL,
24
		@FR_PRICE_ID varchar(15) = NULL,
25
		@QTY DECIMAL(18,2) = NULL,
26
		@QTY_OLD DECIMAL(18,2) = NULL,
27
		@PRICE numeric(18, 2) = NULL,
28
		@NOTES nvarchar(500) = NULL
29
   DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0
30
DECLARE @l_REMAIN_AMT NUMERIC(18, 2)=0;
31
	DECLARE XmlData CURSOR FOR
32
	SELECT A.TRANSFER_DT_ID, A.TOTAL_AMT, A.TO_BRN_ID, A.TO_DEPT_ID, B.BRANCH_CREATE, B.CORE_NOTE,
33
			B.KT_MAKER_ID, C.BRANCH_ID, C.DEPT_ID, D.PRICE_ID, E.GROUP_ID, E.MATERIAL_ID, 
34
			--LUCTV: BIEN CUA LUC THEM VO
35
			A.MAST_BAL_ID, A.FR_BRN_ID, A.FR_DEPT_ID, A.FR_PRICE_ID, A.QTY, A.QTY_OLD, A.PRICE, A.NOTES
36
			--, E.IS_PROMO, E.VAT, E.PRICE_VAT
37
	FROM MW_TRANSFER_DT A
38
	INNER JOIN MW_TRANSFER B ON A.TRANSFER_ID = B.TRANSFER_ID
39
	INNER JOIN MW_MAST_BAL C ON A.MAST_BAL_ID = C.MAST_BAL_ID
40
	INNER JOIN MW_MAST_PRICE D ON D.PRICE_ID = C.PRICE_ID
41
	INNER JOIN MW_IN E ON D.MATERIAL_ID = E.IN_ID
42
	WHERE A.TRANSFER_ID = @p_TRANSFER_ID
43

    
44
	OPEN XmlData
45
	BEGIN TRANSACTION
46
	-- 02-04-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
47
	IF((SELECT KT_AUTH_STATUS FROM MW_TRANSFER WHERE TRANSFER_ID = @p_TRANSFER_ID) ='R')
48
		BEGIN
49
			CLOSE XmlData
50
			DEALLOCATE XmlData
51
			ROLLBACK TRANSACTION
52
			SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Giao dịch đang bị trả về. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
53
			RETURN '-1'
54
		END	
55
		--end
56
	DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50), @TCCT VARCHAR(50)
57
		DECLARE @p_ID VARCHAR(15)
58
		DECLARE @INDEX INT =0
59
		DECLARE @IS_COLLECT VARCHAR(5),@TRN_TYPE VARCHAR(5)
60
	FETCH NEXT FROM XmlData INTO @TRANSFER_DT_ID, @TOTAL_AMT,@TO_BRN_ID,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID,
61
								@MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @QTY, @QTY_OLD, @PRICE, @NOTES
62
	WHILE @@FETCH_STATUS = 0
63
	BEGIN
64
		-- 22-05-2019 : KIEM TRA DON VI TAO DIEU CHUYEN VAT LIEU VOI DON VI NHAN, NEU "PLAG" = Y THI LA THU HOI VAT LIEU, SET "TRN_TYPE=C",
65
		--------------  NGUOC LAI "TRN_TYPE =T".
66
		SET @IS_COLLECT = (SELECT [dbo].[FN_MW_CHECK_COLLECT](@BRANCH_CREATE,@TO_BRN_ID))
67
		IF(@IS_COLLECT='Y')
68
		BEGIN
69
			SET @TRN_TYPE='C'
70
		END
71
		ELSE
72
		BEGIN
73
			SET @TRN_TYPE='T'
74
		END
75
		-- LUCTV 01-03-19 BO SUNG CODE PHAT SINH DATA KHI KE TOAN DUYET
76
		SET @INDEX = @INDEX +1
77
			--KIEM TRA XEM SO LUONG TON CO DU CHO VIEC DIEU CHUYEN NAY HAY KHONG
78
			--IF(@QTY > (SELECT SUM(QTY_BALANCE) FROM MW_MAST_BAL WHERE PRICE_ID = @FR_PRICE_ID AND MAST_BAL_ID=@MAST_BAL_ID))
79
			--BEGIN
80
			--	CLOSE XmlData
81
			--	DEALLOCATE XmlData
82
			--	ROLLBACK TRANSACTION
83
			--	SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
84
			--	RETURN '-1'
85
			--END
86
			SELECT @l_SUM_QTY_BALANCE=SUM(QTY_BALANCE),
87
				@l_REMAIN_AMT=SUM(TOTAL_AMT)
88
			 FROM MW_MAST_BAL
89
			 WHERE MAST_BAL_ID=@MAST_BAL_ID;
90

    
91
			IF(@QTY > @l_SUM_QTY_BALANCE )/*(SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))*/
92
			BEGIN
93
				CLOSE XmlData
94
				DEALLOCATE XmlData
95
				ROLLBACK TRANSACTION
96
				SELECT '-1' as Result, @p_TRANSFER_ID TRANSFER_ID, N'Dòng '+ CONVERT(VARCHAR(15),@INDEX) +N': Số lượng điều chuyển vượt quá số lượng tồn' ErrorDesc
97
				RETURN '-1'
98
			END
99

    
100
			IF @TOTAL_AMT > @l_REMAIN_AMT SET @TOTAL_AMT = @l_REMAIN_AMT --THIEUVQ 070120
101
			
102
			--UPDATE DATA GIAM SO LUONG DON VI DIEU CHUYEN
103
			UPDATE MW_MAST_BAL SET QTY_BALANCE = QTY_BALANCE -@QTY, 
104
			--TOTAL_AMT = (QTY_BALANCE -@QTY)*@PRICE
105
			TOTAL_AMT = TOTAL_AMT -@TOTAL_AMT								
106
			WHERE MAST_BAL_ID=@MAST_BAL_ID AND BRANCH_ID =@FR_BRN_ID
107

    
108
			-- DOANPTT 30032023: FIX BUG FR_PRICE_ID NULL
109
			IF(ISNULL(@FR_PRICE_ID, '') = '')
110
			BEGIN
111
				SET @FR_PRICE_ID = (SELECT TOP 1 PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID = @MAST_BAL_ID)
112
			END
113

    
114
			IF(NOT EXISTS(SELECT * FROM MW_MAST_BAL WHERE BRANCH_ID= @TO_BRN_ID AND DEPT_ID = @TO_DEPT_ID AND PRICE_ID = @FR_PRICE_ID))
115
			BEGIN
116
				DECLARE @p_ID_MAS VARCHAR(15)
117
				EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL', @p_ID_MAS out
118
				--INSERT INTO MW_MAST_BAL VALUES('XXXXX',@FR_PRICE_ID,@TO_BRN_ID,@TO_DEPT_ID,@QTY,NULL)
119

    
120
				INSERT INTO MW_MAST_BAL(MAST_BAL_ID, PRICE_ID, BRANCH_ID, DEPT_ID, QTY_BALANCE, MATERIAL_ID, TOTAL_AMT,PRICE)
121
					VALUES(@p_ID_MAS,@FR_PRICE_ID,@TO_BRN_ID,@TO_DEPT_ID,@QTY,(SELECT MATERIAL_ID FROM MW_IN WHERE IN_ID =(SELECT MATERIAL_ID FROM MW_MAST_PRICE WHERE PRICE_ID=@FR_PRICE_ID)), @TOTAL_AMT,@PRICE)
122
				--INSERT TANG DON VI DIEU CHUYEN	
123
				EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID OUT			
124
				INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, TOTAL_AMT,PRICE)
125
									
126
					VALUES (@p_ID,@p_TRANSFER_ID,@p_ID_MAS,(SELECT TRN_DATE FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID),
127
				(SELECT TRN_TIME FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID),@TRN_TYPE,'C',@QTY,@NOTES, @TOTAL_AMT,@PRICE)
128
			END
129
			ELSE
130
			BEGIN
131
				EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID out
132
				DECLARE @p_ID_MAS_BAL VARCHAR(15)
133
				SET @p_ID_MAS_BAL =(SELECT MAST_BAL_ID FROM MW_MAST_BAL WHERE BRANCH_ID= @TO_BRN_ID AND DEPT_ID = @TO_DEPT_ID AND PRICE_ID = @FR_PRICE_ID)
134
				--UPDATE DATA TANG SO LUONG DON VI NHAN
135
				UPDATE MW_MAST_BAL SET QTY_BALANCE = QTY_BALANCE +@QTY,
136
				TOTAL_AMT = TOTAL_AMT+@TOTAL_AMT
137
				WHERE MAST_BAL_ID= @p_ID_MAS_BAL
138

    
139
				--INSERT TANG DON VI DIEU CHUYEN
140
				INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, TOTAL_AMT,PRICE)
141
					VALUES (@p_ID,@p_TRANSFER_ID,@p_ID_MAS_BAL,GETDATE(),
142
				(SELECT TRN_TIME FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID),@TRN_TYPE,'C',@QTY,@NOTES, @TOTAL_AMT,@PRICE)
143
			END
144
			--INSERT GIAM DON VI DIEU CHUYEN
145

    
146
				EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID out
147
				INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, TOTAL_AMT,PRICE)
148
					VALUES (@p_ID,@p_TRANSFER_ID,@MAST_BAL_ID,GETDATE(),
149
				(SELECT TRN_TIME FROM MW_TRANSFER WHERE TRANSFER_ID=@p_TRANSFER_ID),@TRN_TYPE,'D',@QTY,@NOTES, @TOTAL_AMT,@PRICE)
150
		------ END LUCTV
151

    
152
		-----------------thieuvq 150319 - hach toan - begin ------------------
153
		---LAY TAI KHOAN HACH TOAN
154
		SELECT @EXP_ACCTNO = EXP_ACCTNO, @MATERIAL_ACCTNO = MATERIAL_ACCTNO, @VAT_ACCTNO = VAT_ACCTNO 
155
		FROM MW_MATERIAL WHERE MATERIAL_ID = @MATERIAL_ID
156

    
157
		---NO TK TCCT - DV NHAN
158
		---CO TK VAT LIEU - DON VI CHUYEN
159

    
160
		SET @TCCT = (SELECT DAO_CODE FROM CM_BRANCH WHERE BRANCH_ID = @TO_BRN_ID)
161
		EXEC [dbo].[MW_ENTRIES_POST_Insert] @PRICE_ID, 'MW_TRANSFER', @TRANSFER_DT_ID, @BRANCH_CREATE, @MATERIAL_ACCTNO, @FR_BRN_ID, @TCCT, @TO_BRN_ID, @TOTAL_AMT, 'Y', 
162
			@p_KT_APPROVE_DT, @CORE_NOTE, @KT_MAKER_ID, @p_KT_CHECKER_ID, @p_TRANSFER_ID,''/*@TO_DEPT_ID*/, @ERROR OUT
163
		IF @ERROR <> '0' GOTO ABORT	
164

    
165
		-----------------------end hach toan---------------------------------
166
		
167
		FETCH NEXT FROM XmlData INTO @TRANSFER_DT_ID, @TOTAL_AMT,@TO_BRN_ID,@TO_DEPT_ID, @BRANCH_CREATE , @CORE_NOTE ,@KT_MAKER_ID ,@BRANCH_ID ,@DEPT_ID ,@PRICE_ID ,@GROUP_ID ,@MATERIAL_ID,
168
									 @MAST_BAL_ID, @FR_BRN_ID, @FR_DEPT_ID, @FR_PRICE_ID, @QTY, @QTY_OLD, @PRICE, @NOTES
169
	END
170
	CLOSE XmlData
171
	DEALLOCATE XmlData
172
	UPDATE [dbo].[MW_TRANSFER]
173
	SET    KT_AUTH_STATUS='A', KT_APPROVE_DT = CONVERT(DATETIME,@p_KT_APPROVE_DT,103),KT_CHECKER_ID=@p_KT_CHECKER_ID
174
	WHERE  [TRANSFER_ID] = @p_TRANSFER_ID
175

    
176
--doanptt 05/05/2022 thêm lịch sử xử lý
177
	INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
178
	VALUES(@p_TRANSFER_ID,'KTAPP',@p_KT_CHECKER_ID,GETDATE(), N'Kế toán duyệt phiếu',N'Kế toán duyệt phiếu')
179

    
180
	IF @@Error <> 0 GOTO ABORT
181
COMMIT TRANSACTION
182
SELECT '0' as Result, @p_TRANSFER_ID  TRANSFER_ID ,'' ErrorDesc
183
RETURN '0'
184
ABORT:
185
BEGIN
186
		CLOSE XmlData
187
		DEALLOCATE XmlData
188
		ROLLBACK TRANSACTION
189
		SELECT '-1' as Result, '' TRANSFER_ID, '' ErrorDesc
190
		RETURN '-1'
191
END