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
|