Project

General

Profile

2.4. MW OUT KT APPR.txt

Luc Tran Van, 11/24/2022 04:36 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[MW_OUT_KT_App]
3
    @p_OUT_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
        @OUT_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
		--01-03-2019 : LUCTV BO SUNG NHUNG BIEN LIEN QUAN TOI PHAN UPDATE-INSERT KHI DUYET
21
		@BRN_ID VARCHAR(15) =NULL,
22
		@MAST_BAL_ID VARCHAR(15) =NULL,
23
		@CUST_NAME NVARCHAR(200) =NULL,
24
		@QTY DECIMAL(18,2)=NULL,
25
		@PRICE NUMERIC(18, 0) =NULL,
26
		@NOTES NVARCHAR(500) =NULL
27

    
28
DECLARE XmlData CURSOR FOR
29
SELECT A.OUT_DT_ID, A.TOTAL_AMT, A.TO_BRN_ID, A.TO_DEPT_ID, B.BRANCH_CREATE, B.CORE_NOTE,
30
B.KT_MAKER_ID, C.BRANCH_ID, C.DEPT_ID, D.PRICE_ID, E.GROUP_ID, E.MATERIAL_ID, A.IS_BCT /*E.IS_PROMO*/, E.VAT, E.PRICE_VAT,A.QTY,
31
A.TO_BRN_ID, A.MAST_BAL_ID,A.CUST_NAME,A.QTY,A.PRICE,A.NOTES, A.COST_ACC
32
FROM MW_OUT_DT A
33
INNER JOIN MW_OUT B ON A.OUT_ID = B.OUT_ID
34
INNER JOIN MW_MAST_BAL C ON A.MAST_BAL_ID = C.MAST_BAL_ID
35
INNER JOIN MW_MAST_PRICE D ON D.PRICE_ID = C.PRICE_ID
36
INNER JOIN MW_IN E ON D.MATERIAL_ID = E.IN_ID
37
WHERE A.OUT_ID = @p_OUT_ID
38
    
39
OPEN XmlData;
40

    
41
BEGIN TRANSACTION;
42
-- 02-04-19: KIEM TRA NEU DANG TRA VE THI KHONG DUOC PHEP DUYET
43
IF((SELECT KT_AUTH_STATUS FROM MW_OUT WHERE OUT_ID = @p_OUT_ID) ='R')
44
	BEGIN
45
		CLOSE XmlData
46
		DEALLOCATE XmlData
47
		ROLLBACK TRANSACTION
48
		SELECT '-1' as Result,@p_OUT_ID OUT_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
49
		RETURN '-1'
50
	END
51
UPDATE [dbo].[MW_OUT]
52
SET KT_AUTH_STATUS = 'A',
53
    KT_APPROVE_DT = CONVERT(DATETIME, @p_KT_APPROVE_DT, 103),
54
    KT_CHECKER_ID = @p_KT_CHECKER_ID
55
WHERE [OUT_ID] = @p_OUT_ID;
56
IF @@Error <> 0
57
    GOTO ABORT;
58
--Insert XmlData
59
--DELETE FROM MW_OUT_DT WHERE OUT_ID =@p_OUT_ID
60
DECLARE @EXP_ACCTNO VARCHAR(50), @MATERIAL_ACCTNO VARCHAR(50), @VAT_ACCTNO VARCHAR(50)
61

    
62
FETCH NEXT FROM XmlData INTO @OUT_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 ,@IS_PROMO, @VAT, @PRICE_VAT,@QTY,
63
						     @TO_BRN_ID, @MAST_BAL_ID,@CUST_NAME,@QTY,@PRICE,@NOTES,@EXP_ACCTNO
64
DECLARE @l_SUM_QTY_BALANCE DECIMAL(18,2)=0,@BR_CODE VARCHAR(15),@DP_CODE VARCHAR(25)
65
DECLARE @l_REMAIN_AMT NUMERIC(18, 2)=0;
66
DECLARE @l_TOTAL_AMT NUMERIC(18, 2)=0;
67
DECLARE @INDEX INT =0
68
WHILE @@FETCH_STATUS = 0
69
BEGIN
70

    
71
	-------- 01/03/2018 LUCTV: EDIT CODE KE TOAN DUYET THI MOI PHAT SINH UPDATE DU LIEU
72
	SELECT @l_SUM_QTY_BALANCE=SUM(QTY_BALANCE),
73
        @l_REMAIN_AMT=SUM(TOTAL_AMT)
74
     FROM MW_MAST_BAL
75
     WHERE MAST_BAL_ID=@MAST_BAL_ID;/*PRICE_ID=(SELECT PRICE_ID FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID)AND */ 
76
    --IF(@QTY>@l_SUM_QTY_BALANCE)BEGIN
77
    --    ROLLBACK TRANSACTION;
78
    --    SELECT '-1' AS Result,
79
    --        @p_OUT_ID OUT_ID,
80
    --        N'Số lượng xuất vượt quá số lượng tồn' ErrorDesc;
81
    --    RETURN '-1';
82
    --END;
83
 	SET @INDEX = @INDEX+1
84
	-- 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)
85
	IF(@QTY > @l_SUM_QTY_BALANCE) /*(SELECT QTY_BALANCE FROM MW_MAST_BAL WHERE MAST_BAL_ID=@MAST_BAL_ID))*/
86
	BEGIN
87
		CLOSE XmlData
88
		DEALLOCATE XmlData
89
		ROLLBACK TRANSACTION
90
		SELECT '-1' as Result, @p_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
91
		RETURN '-1'
92
	END
93
    DECLARE @p_OUT_DT_ID VARCHAR(15);
94
    EXEC SYS_CodeMasters_Gen 'MW_OUT_DT', @p_OUT_DT_ID OUT;
95
    IF @p_OUT_DT_ID='' OR @p_OUT_DT_ID IS NULL GOTO ABORT;
96
    SELECT @BRN_ID=O.BRN_ID FROM dbo.MW_OUT O WHERE O.OUT_ID=@p_OUT_ID;
97
    
98
	IF((@QTY-@l_SUM_QTY_BALANCE)=0)---LA LO CUOI CUNG
99
	BEGIN
100
        --SET @l_TOTAL_AMT=@l_TOTAL_AMT-@l_SUM_TOTAL_AMT; --THIEUVQ 070120
101
		SET @TOTAL_AMT = @l_REMAIN_AMT; --THIEUVQ 070120
102
        UPDATE MW_MAST_BAL
103
        SET TOTAL_AMT= 0, --TOTAL_AMT-@TOTAL_AMT,--THIEUVQ 070120
104
           QTY_BALANCE= 0 --QTY_BALANCE-@QTY--THIEUVQ 070120
105
        WHERE MAST_BAL_ID=@MAST_BAL_ID;
106
        --LUCTV:30-11-2018 NEU DOT XUAT SU DUNG DO LA CUOI CUNG. THI CAP NHAT NGUOC SO TIEN VE CHO BANG MW_OUT_DT
107
        --UPDATE MW_OUT_DT SET TOTAL_AMT=@TOTAL_AMT WHERE OUT_DT_ID=@OUT_ID;
108
    END;
109
    ELSE 
110
	BEGIN
111
		IF @TOTAL_AMT > @l_REMAIN_AMT SET @TOTAL_AMT = @l_REMAIN_AMT --THIEUVQ 070120
112
        UPDATE MW_MAST_BAL
113
        SET TOTAL_AMT=TOTAL_AMT-@TOTAL_AMT,
114
            QTY_BALANCE=QTY_BALANCE-@QTY
115
        WHERE MAST_BAL_ID=@MAST_BAL_ID;
116
    END;
117
    DECLARE @p_ID_MAS_BAL VARCHAR(15);
118
    EXEC SYS_CodeMasters_Gen 'MW_MAST_BAL_STMT', @p_ID_MAS_BAL OUT;
119
    INSERT INTO MW_MAST_BAL_STMT(STMT_ID, REF_ID, MAST_BAL_ID, TRN_DATE, TRN_TIME, TRN_TYPE, CRDR, QTY, TRN_DESC, PRICE, TOTAL_AMT)
120
    VALUES(@p_ID_MAS_BAL, @p_OUT_ID, @MAST_BAL_ID, (SELECT KT_APPROVE_DT FROM MW_OUT WHERE OUT_ID=@p_OUT_ID), (SELECT TRN_TIME FROM MW_OUT WHERE OUT_ID=@p_OUT_ID),
121
    'O' , 'D', @QTY, @NOTES, @PRICE, @TOTAL_AMT);
122
	----- END LUCTV 01-03-2019
123
	---LAY TAI KHOAN HACH TOAN
124
	SELECT /*@EXP_ACCTNO = EXP_ACCTNO,*/ @MATERIAL_ACCTNO = MATERIAL_ACCTNO, @VAT_ACCTNO = VAT_ACCTNO 
125
	FROM MW_MATERIAL WHERE MATERIAL_ID = @MATERIAL_ID
126

    
127
	---NEU XUAT CHO KHACH HANG THI DON VI NO LA DV CHU QUAN
128
	IF @TO_BRN_ID IS NULL OR @TO_BRN_ID = ''
129
	BEGIN
130
		SET @TO_BRN_ID = @BRANCH_ID
131
		SET @TO_DEPT_ID = @DEPT_ID
132
	END
133
	---TRUONG HOP CN XUAT PHONG BAN TRUC THUOC HOI SO
134
	IF @TO_DEPT_ID IS NOT NULL AND @TO_DEPT_ID <> ''
135
	BEGIN
136
		--LAY MA BRANCH CODE
137
		SET @BR_CODE = (SELECT BRANCH_CODE FROM CM_BRANCH WHERE BRANCH_ID = @TO_BRN_ID)
138
		SET @DP_CODE = (SELECT DEP_CODE FROM CM_DEPARTMENT WHERE DEP_ID = @TO_DEPT_ID)
139
		--KIEM TRA MA PHONG BAN KHAC MA DON VI QUAN LY HIEN TAI THI GAN LAI BRANCH_ID
140
		IF @BR_CODE <> LEFT(@DP_CODE,3)
141
		BEGIN
142
			SET @TO_BRN_ID = (SELECT BRANCH_ID FROM CM_BRANCH WHERE BRANCH_CODE = LEFT(@DP_CODE,3) )
143
		END
144
	END
145

    
146
	---NO TK CHI PHI - NEU NGUOI NHAN LA KHACH HANG THI HACH TOAN CHO DV CHU QUAN, NEU LA PHONG BAN NHAN THI HACH TOAN CHO PHONG BAN
147
	---CO TK VAT LIEU - DON VI CHU QUAN
148
	EXEC [dbo].[MW_ENTRIES_POST_Insert] @PRICE_ID, 'MW_OUT', @OUT_DT_ID, @BRANCH_CREATE, @MATERIAL_ACCTNO, @BRANCH_ID, @EXP_ACCTNO, @TO_BRN_ID, @TOTAL_AMT, 'Y', 
149
		@p_KT_APPROVE_DT, @CORE_NOTE, @KT_MAKER_ID, @p_KT_CHECKER_ID, @p_OUT_ID,@TO_DEPT_ID, @ERROR OUT
150
	IF @ERROR <> '0' GOTO ABORT	
151

    
152
	---KIEM TRA CO THUE DAU RA HAY KHONG
153
	IF @IS_PROMO = 'Y' --CO THUE VAT DAU RA, HACH TOAN BUT TOAN VAT
154
	BEGIN
155
		SET @VAT=10
156
		--TINH SO TIEN VAT
157
		SET @VAT_AMT = ROUND(@TOTAL_AMT*@VAT/100,0)
158

    
159
		--NO TK CHI PHI - CO TK VAT
160
		EXEC [dbo].[MW_ENTRIES_POST_Insert] @PRICE_ID, 'MW_OUT', @OUT_DT_ID, @BRANCH_CREATE, @VAT_ACCTNO, @BRANCH_ID, @EXP_ACCTNO, @TO_BRN_ID, @VAT_AMT, 'Y', 
161
			@p_KT_APPROVE_DT, @CORE_NOTE, @KT_MAKER_ID, @p_KT_CHECKER_ID, @p_OUT_ID,@TO_DEPT_ID, @ERROR OUT
162
		IF @ERROR <> '0' GOTO ABORT	
163
	END
164

    
165
    FETCH NEXT FROM XmlData INTO @OUT_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 ,@IS_PROMO , @VAT, @PRICE_VAT,@QTY,
166
								 @TO_BRN_ID, @MAST_BAL_ID,@CUST_NAME,@QTY,@PRICE,@NOTES,@EXP_ACCTNO
167
END;
168
CLOSE XmlData;
169
DEALLOCATE XmlData;
170

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

    
175
COMMIT TRANSACTION;
176
SELECT '0' AS Result, @p_OUT_ID OUT_ID,'' ErrorDesc;
177
RETURN '0';
178
ABORT:
179
BEGIN
180
    CLOSE XmlData;
181
    DEALLOCATE XmlData;
182
    ROLLBACK TRANSACTION;
183
    SELECT '-1' AS Result,'' OUT_ID, '' ErrorDesc;
184
    RETURN '-1';
185
END;