Project

General

Profile

advance_payment_kt_app_17052023.txt

Luc Tran Van, 05/17/2023 05:10 PM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_KT_Appr]
3
--Luanlt 2019/17/10 - Sửa params
4
@p_REQ_PAY_ID	varchar(15)= NULL,
5
@p_CHECKER_ID_KT	varchar(15)	= NULL,
6
@p_AUTH_STATUS_KT VARCHAR(10) = NULL
7
AS
8
	
9
-- BEGIN VALIDATE
10
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE MAKER_ID_KT = @p_CHECKER_ID_KT AND REQ_PAY_ID =@p_REQ_PAY_ID)
11
	BEGIN
12
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này! Giao dịch viên không có quyền duyệt phiếu đề nghị tạm ứng' ErrorDesc
13
		RETURN '-1'
14
	END
15
	--IF (NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID = @p_REQ_PAY_ID AND TLNAME =@p_CHECKER_ID_KT AND TYPE_JOB = 'KS'))
16
	--BEGIN
17
	--	SELECT '-1' as Result, '' REQ_PAY_ID, N'Bạn không được phép duyệt phiếu đề nghị tạm ứng này. Phiếu đề nghị tạm ứng đang được kiểm soát viên khác xử lý' ErrorDesc
18
	--	RETURN '-1'
19
	--END
20
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
21
	BEGIN
22
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về bộ phận yêu cầu. Vui lòng cập nhật lại thông tin trước khi duyệt' ErrorDesc
23
		RETURN '-1'
24
	END
25
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='A' AND REQ_PAY_ID =@p_REQ_PAY_ID)
26
	BEGIN
27
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó' ErrorDesc
28
		RETURN '-1'
29
	END
30
	IF EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT ='R' AND REQ_PAY_ID =@p_REQ_PAY_ID)
31
	BEGIN
32
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đang được trả về giao dịch viên. Vui lòng kiểm tra lại thông tin' ErrorDesc
33
		RETURN '-1'
34
	END
35
-- CHAN CUOI
36
	IF (EXISTS (SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE AUTH_STATUS_KT <> 'P' AND AUTH_STATUS_KT <> 'S' AND REQ_PAY_ID =@p_REQ_PAY_ID))
37
	BEGIN
38
		SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' chưa được gửi phê duyệt. Vui lòng đợi người tạo gửi phê duyệt trước khi phê duyệt phiếu' ErrorDesc
39
		RETURN '-1'
40
	END
41
-- END VALIDATE
42

    
43
	DECLARE @LEVEL_JOB VARCHAR(5), @LEVEL_JOB_PREV INT
44
	SET @LEVEL_JOB =(SELECT LEVEL_JOB FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@p_REQ_PAY_ID AND TYPE_JOB='KS')
45
	SET @LEVEL_JOB_PREV = CONVERT(INT,@LEVEL_JOB) -1
46
BEGIN TRANSACTION
47
		IF(@LEVEL_JOB='1')
48
		BEGIN
49
			UPDATE TR_REQ_ADVANCE_PAYMENT
50
			SET  AUTH_STATUS_KT='A', CHECKER_ID_KT = @p_CHECKER_ID_KT, APPROVE_DT_KT =  GETDATE()
51
			WHERE  REQ_PAY_ID = @p_REQ_PAY_ID
52
			-- DOANPTT 291222: THEM LOG KPI
53
			UPDATE TR_REQ_KPI 
54
			SET AUTH_STATUS_KT ='A', APPROVE_DT_KT = GETDATE(),CHECKER_ID_KT = @p_CHECKER_ID_KT, REQ_STATUS = 'APP', IS_DONE = '1'
55
			WHERE REQ_ID = @p_REQ_PAY_ID AND AUTH_STATUS_KT = 'P' AND IS_DONE = '0'
56
			-- UPDATE LICH THANH TOAN
57
			UPDATE TR_REQ_PAY_SCHEDULE SET AUTH_STATUS_KT='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
58
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND (TLNAME=@p_CHECKER_ID_KT OR TYPE_JOB ='KS')
59
			-- INSERT VAO PL_PROCESS
60
			INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
61
			VALUES(@p_REQ_PAY_ID,'APP',@p_CHECKER_ID_KT,GETDATE(), N'Kiểm soát viên duyệt phiếu',N'Kế toán duyệt phiếu')
62
			--thieuvq ban vao core - 171219 BEGIN 
63
			DECLARE @MAKER VARCHAR(15) = (SELECT MAKER_ID_KT FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID)
64
			DECLARE @RES VARCHAR(10)
65
			--- BAN BUT TOAN VAO CORE
66
			EXEC [dbo].[PAY_ENTRIES_POST_SetApp] @p_REQ_PAY_ID,@MAKER,@p_CHECKER_ID_KT, @RES OUT 
67
			--END
68
			--- NEU LA TAM UNG DINH KI THI BO SUNG 1 KI THANHH TOAN
69
			--- KIEM TRA NEU LA THANH TOAN CAC HOP DONG DINH KI
70
		IF(((SELECT TOP 1 REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID) ='P') AND (SELECT IS_PERIOD FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='Y')
71
		BEGIN
72
		DECLARE @PAY_AMOUNT DECIMAL(18,0),@PAY_DT DATETIME,@l_CONTRACT_ID VARCHAR(15),@p_PAY_PHASE NVARCHAR(100),@REASON_TTDK NVARCHAR(2000)
73
		DECLARE CURS_PERIOD CURSOR FOR SELECT A.AMT_PAY,A.PAY_DT_REAL,A.CONTRACT_ID,A.PAY_PHASE,A.REASON FROM TR_REQ_PAY_PERIOD A  WHERE A.REQ_PAY_ID =@p_REQ_PAY_ID ORDER BY A.CONTRACT_ID
74
		OPEN CURS_PERIOD
75
			FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK
76
			WHILE @@FETCH_STATUS = 0
77
			BEGIN
78
				DECLARE @l_PAY_ID VARCHAR(15)
79
				EXEC SYS_CodeMasters_Gen 'TR_CONTRACT_PAYMENT', @l_PAY_ID out
80
				IF @l_PAY_ID='' OR @l_PAY_ID IS NULL GOTO ABORT
81
				INSERT INTO TR_CONTRACT_PAYMENT([PAY_AMOUNT],[PAY_DT], [PAY_ID],[CONTRACT_ID],[PAY_PHASE],[EXPECTED_DT],[PERCENT],[AMOUNT],[PAY_STATUS],[NOTES],[RECORD_STATUS],[MAKER_ID],[CREATE_DT],[AUTH_STATUS],[CHECKER_ID],[APPROVE_DT])
82
				VALUES(@PAY_AMOUNT,GETDATE(), 
83
				@l_PAY_ID ,@l_CONTRACT_ID ,@p_PAY_PHASE ,GETDATE(),100,@PAY_AMOUNT,'2' ,@REASON_TTDK ,'1' ,@p_CHECKER_ID_KT ,GETDATE() ,'A' ,@p_CHECKER_ID_KT,GETDATE())
84
				IF @@Error <> 0 GOTO ABORT
85
				FETCH NEXT FROM CURS_PERIOD INTO @PAY_AMOUNT ,@PAY_DT ,@l_CONTRACT_ID,@p_PAY_PHASE,@REASON_TTDK
86
			END
87
		CLOSE CURS_PERIOD
88
		DEALLOCATE CURS_PERIOD
89
		-- CAP NHAT DETAIL
90
		UPDATE TR_REQ_PAY_PERIOD SET AUTH_STATUS_KT ='A' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
91
		END
92
		END
93
		ELSE
94
		BEGIN
95
			-- CAP NHAT C CHO CAP CHA
96
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P' WHERE REQ_ID=@p_REQ_PAY_ID AND TLNAME=@p_CHECKER_ID_KT
97
			UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C' WHERE REQ_ID=@p_REQ_PAY_ID AND LEVEL_JOB = CONVERT(VARCHAR(5),@LEVEL_JOB_PREV)
98
			COMMIT TRANSACTION
99
			SELECT '2' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Xác nhận phiếu thành công' ErrorDesc
100
			RETURN '2'
101
			
102
		END
103

    
104
		IF((SELECT COUNT(*) FROM PL_PROCESS WHERE REQ_ID = @p_REQ_PAY_ID AND PROCESS_ID = 'APP' AND PROCESS_DESC = N'Kiểm soát viên duyệt phiếu') > 1)
105
		BEGIN
106
			ROLLBACK TRANSACTION
107
			SELECT '-1' as Result, '' REQ_PAY_ID, N'Phiếu đề nghị tạm ứng số: '+(SELECT ISNULL(REQ_PAY_CODE, '') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID = @p_REQ_PAY_ID)+N' đã được kiểm soát viên phê duyệt trước đó. Lỗi này xảy ra khi duyệt 2 lần liên tiếp. Vui lòng liên hệ IT để được hỗ trợ thêm' ErrorDesc
108
			RETURN '-1'
109
		END
110

    
111
		IF @@Error <> 0 GOTO ABORT
112
COMMIT TRANSACTION
113
SELECT '0' as Result, @p_REQ_PAY_ID  REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được phê duyệt thành công!' ErrorDesc
114
RETURN '0'
115
ABORT:
116
BEGIN
117
		ROLLBACK TRANSACTION
118
		SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
119
		RETURN '-1'
120
END