Project

General

Profile

TR_CONTRACT_App.txt

Luc Tran Van, 04/10/2023 09:53 AM

 
1
ALTER PROCEDURE dbo.TR_CONTRACT_App
2
@p_CONTRACT_ID VARCHAR(15),
3
@p_AUTH_STATUS	varchar(50)  = NULL,
4
@p_CHECKER_ID	varchar(12)  = NULL,
5
@p_APPROVE_DT	VARCHAR(20) = NULL
6
AS
7
BEGIN
8
DECLARE @p_BRANCH_ID_CONTRACT VARCHAR(100) = (
9
		SELECT BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID
10
	)
11

    
12
DECLARE @p_CONTRACT_CODE VARCHAR(100) = (
13
		SELECT CONTRACT_CODE FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID
14
	)
15
IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'R'))
16
BEGIN
17
	SELECT '-1' as Result, 
18
		N'Phê duyệt thất bại. Hợp đồng ' + @p_CONTRACT_CODE + N' đang bị trả về' ErrorDesc
19
	RETURN '-1'
20
END
21
IF(EXISTS(SELECT * FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS = 'A'))
22
BEGIN
23
	SELECT '-1' as Result, 
24
			N'Phê duyệt thất bại. Hợp đồng ' + @p_CONTRACT_CODE + N' đã được phê duyệt trước đó' ErrorDesc
25
	RETURN '-1'
26
END
27
IF(NOT EXISTS(SELECT TLNANME FROM TL_USER WHERE TLNANME = @p_CHECKER_ID AND TLSUBBRID = @p_BRANCH_ID_CONTRACT))
28
BEGIN
29
	SELECT '-1' as Result, 
30
			N'Phê duyệt thất bại. Hợp đồng ' + @p_CONTRACT_CODE + N' của Hội sở' ErrorDesc
31
	RETURN '-1'
32
END
33

    
34
DECLARE @tmp_tbl TABLE(
35
			GOODS_NAME	nvarchar(MAX)  ,
36
			QUANTITY_USE DECIMAL
37
		)
38
		INSERT INTO @tmp_tbl
39
		SELECT B.GD_NAME AS GOODS_NAME, C.QUANTITY_USE FROM TR_CONTRACT_DT A
40
		LEFT JOIN CM_GOODS B ON A.GOODS_ID = B.GD_ID
41
		LEFT JOIN (
42
			select GOODS_ID, CONTRACT_ID, SUM(QUANTITY)  AS QUANTITY_USE FROM TR_PO_DETAIL A
43
			LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID
44
			WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A'
45
			GROUP BY GOODS_ID, CONTRACT_ID
46
		) C on A.GOODS_ID = C.GOODS_ID
47
		WHERE C.QUANTITY_USE > A.QUANTITY AND A.CONTRACT_ID = @p_CONTRACT_ID
48
		IF EXISTS(SELECT * FROM @tmp_tbl)
49
		BEGIN
50
			DECLARE @message NVARCHAR(MAX)
51
			SELECT @message = COALESCE(@message + '\n ', '') + (N'Hàng hóa ' + GOODS_NAME + N' số lượng đã gọi là ' + CONVERT(NVARCHAR(50),(QUANTITY_USE)))
52
			-- + N' (đã duyệt ' + CONVERT(NVARCHAR(50),QUANTITY_USE) + N', chờ duyệt ' + CONVERT(NVARCHAR(50),QUANTITY) + N')')
53
			FROM @tmp_tbl
54
			SELECT '-1' Result, ''  PO_ID, '' PO_CODE, N'Số lượng trong hợp đồng không được nhỏ hơn số lượng đã mua: \n' + @message ErrorDesc 
55
			RETURN '0'
56
		END
57
		DECLARE @TOTAL_PO DECIMAL, @TOTAL_CONTRACT DECIMAL, @l_CONTRACT_NAME NVARCHAR(MAX)
58
		SELECT @TOTAL_PO = SUM(A.TOTAL_AMT) FROM TR_PO_DETAIL A
59
		LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID
60
		WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A' 
61
		SELECT @TOTAL_CONTRACT = SUM(PRICE * QUANTITY) FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @p_CONTRACT_ID
62
		SET @l_CONTRACT_NAME = (SELECT [CONTRACT_NAME] FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID)
63
		IF @TOTAL_PO > @TOTAL_CONTRACT
64
		BEGIN
65
			DECLARE @message1 NVARCHAR(MAX)
66
			SELECT @message1 = COALESCE(@message + '\n ', '') + (N'Hợp đồng ' + @l_CONTRACT_NAME + N' giá trị đã gọi là ' + CONVERT(NVARCHAR(50),(@TOTAL_PO)))
67
			SELECT '-1' Result, ''  PO_ID, '' PO_CODE, N'Giá trị trong hợp đồng không được nhỏ hơn giá trị đã mua: \n' + @message1 ErrorDesc 
68
			RETURN '0'
69
		END
70
BEGIN TRANSACTION
71

    
72
		
73
		--insert master
74
		UPDATE TR_CONTRACT SET [AUTH_STATUS] = @p_AUTH_STATUS,[CHECKER_ID] = @p_CHECKER_ID,[APPROVE_DT] = CONVERT(DATETIME, @p_APPROVE_DT, 103)
75
		WHERE  CONTRACT_ID= @p_CONTRACT_ID
76
		IF @@Error <> 0 GOTO ABORT
77
		PRINT 'UPDATE MASTER SUCCESS'
78
		--insert asset detail tương đương như NỘI DUNG trong bảng contract detail
79

    
80
		------------------BAODNQ 24/2/2022 INSERT lưu lịch sử xử lý------------------
81
		INSERT INTO dbo.PL_PROCESS
82
				(
83
					REQ_ID,
84
					PROCESS_ID,
85
					CHECKER_ID,
86
					APPROVE_DT,
87
					PROCESS_DESC,
88
					NOTES
89
				)
90
				VALUES
91
				(	@p_CONTRACT_ID,       
92
					'APPROVE',
93
					@p_CHECKER_ID,        
94
					GETDATE(), 
95
					N'Trưởng đơn vị duyệt thông tin hợp đồng thành công' ,      
96
					N'Trưởng đơn vị duyệt thông tin hợp đồng'       
97
				)
98

    
99

    
100
COMMIT TRANSACTION
101
SELECT '0' as Result, @P_CONTRACT_ID  CONTRACT_ID, '' ErrorDesc
102
RETURN '0'
103
ABORT:
104
BEGIN		
105
		ROLLBACK TRANSACTION
106
		SELECT '-1' as Result, ''  CONTRACT_ID, ERROR_MESSAGE() ErrorDesc
107
		RETURN '-1'
108
End
109

    
110
END