Project

General

Profile

TR_CONTRACT_SendAppr.txt

Luc Tran Van, 12/12/2022 10:52 AM

 
1

    
2
ALTER   PROCEDURE [dbo].[TR_CONTRACT_SendAppr]
3
@p_CONTRACT_ID VARCHAR(15),
4
@p_AUTH_STATUS	varchar(50)  = NULL,
5
@p_USER_LOGIN	varchar(12)  = NULL,
6
@p_SEND_APPR_DT	VARCHAR(20) = NULL
7
AS
8
BEGIN TRANSACTION
9
	DECLARE @tmp_tbl TABLE(
10
			GOODS_NAME	nvarchar(MAX)  ,
11
			QUANTITY_USE DECIMAL
12
		)
13
		INSERT INTO @tmp_tbl
14
		SELECT B.GD_NAME AS GOODS_NAME, C.QUANTITY_USE FROM TR_CONTRACT_DT A
15
		LEFT JOIN CM_GOODS B ON A.GOODS_ID = B.GD_ID
16
		LEFT JOIN (
17
			select GOODS_ID, CONTRACT_ID, SUM(QUANTITY)  AS QUANTITY_USE FROM TR_PO_DETAIL A
18
			LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID
19
			WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A'
20
			GROUP BY GOODS_ID, CONTRACT_ID
21
		) C on A.GOODS_ID = C.GOODS_ID
22
		WHERE C.QUANTITY_USE > A.QUANTITY AND A.CONTRACT_ID = @p_CONTRACT_ID
23
		IF EXISTS(SELECT * FROM @tmp_tbl)
24
		BEGIN
25
			DECLARE @message NVARCHAR(MAX)
26
			SELECT @message = COALESCE(@message + '\n ', '') + (N'Hàng hóa ' + GOODS_NAME + N' số lượng đã gọi là ' + CONVERT(NVARCHAR(50),(QUANTITY_USE)))
27
			-- + N' (đã duyệt ' + CONVERT(NVARCHAR(50),QUANTITY_USE) + N', chờ duyệt ' + CONVERT(NVARCHAR(50),QUANTITY) + N')')
28
			FROM @tmp_tbl
29
			ROLLBACK TRANSACTION
30
			SELECT '-1' Result, ''  CONTRACT_ID, '' CONTRACT_CODE, N'Số lượng trong hợp đồng không được nhỏ hơn số lượng đã mua: \n' + @message ErrorDesc 
31
			RETURN '0'
32
		END
33
		DECLARE @TOTAL_PO DECIMAL, @TOTAL_CONTRACT DECIMAL, @l_CONTRACT_NAME NVARCHAR(MAX)
34
		SELECT @TOTAL_PO = SUM(A.TOTAL_AMT) FROM TR_PO_DETAIL A
35
		LEFT JOIN TR_PO_MASTER B ON A.PO_ID = B.PO_ID
36
		WHERE B.CONTRACT_ID = @p_CONTRACT_ID AND B.AUTH_STATUS = 'A' 
37
		SELECT @TOTAL_CONTRACT = SUM(PRICE * QUANTITY) FROM TR_CONTRACT_DT WHERE CONTRACT_ID = @p_CONTRACT_ID
38
		SET @l_CONTRACT_NAME = (SELECT [CONTRACT_NAME] FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID)
39
		IF @TOTAL_PO > @TOTAL_CONTRACT
40
		BEGIN
41
			DECLARE @message1 NVARCHAR(MAX)
42
			SELECT @message1 = COALESCE(@message + '\n ', '') + (N'Hợp đồng ' + @l_CONTRACT_NAME + N' giá trị đã gọi là ' + CONVERT(NVARCHAR(50),(@TOTAL_PO)))
43
			ROLLBACK TRANSACTION
44
			SELECT '-1' Result, ''  CONTRACT_ID, '' CONTRACT_CODE, N'Giá trị trong hợp đồng không được nhỏ hơn giá trị đã mua: \n' + @message1 ErrorDesc 
45
			RETURN '0'
46
		END
47

    
48
		--------------BAODNQ 12/12/2022 : Nếu hợp đồng ko ph là hợp đồng định kỳ-----------
49
		------------------bắt buộc chọn NCC---------------
50
		DECLARE @p_CONT_TYPE VARCHAR(10) = (
51
			SELECT TOP 1 CONT_TYPE FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID
52
		)
53
		IF(@p_CONT_TYPE <> 'DK')
54
		BEGIN
55
			DECLARE @p_DK_TYPE_NAME NVARCHAR(200) = (
56
				SELECT TOP 1 CONTENT FROM CM_ALLCODE 
57
				WHERE CDTYPE = 'CONTRACT' AND CDNAME = 'CONTRACT_TYPE' AND CDVAL = 'DK'
58
			)
59
			ROLLBACK TRANSACTION
60
			SELECT '-1' Result, ''  CONTRACT_ID, '' CONTRACT_CODE, 
61
				N'Nếu loại hợp đồng không phải là ' +@p_DK_TYPE_NAME+ 
62
				N', bắt buộc chọn nhà cung cấp từ hệ thống' ErrorDesc 
63
			RETURN '0'
64
		END
65

    
66
		UPDATE TR_CONTRACT SET 
67
			AUTH_STATUS = @p_AUTH_STATUS,
68
			IS_SEND_APPR = 'Y',
69
			SEND_APPR_DT = CONVERT(DATETIME, @p_SEND_APPR_DT, 103)
70
		WHERE CONTRACT_ID = @p_CONTRACT_ID
71
		IF @@ERROR <> 0 GOTO ABORT
72

    
73
		DECLARE @p_IS_SEND_APPR VARCHAR(15) = 
74
			(SELECT IS_SEND_APPR FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID)
75
		DECLARE @p_CONTRACT_NAME NVARCHAR(500) = 
76
			(SELECT [CONTRACT_NAME] FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID)
77

    
78
		--------BAODNQ 16/02/2022: Insert vào PL_PROCESS lưu lịch sử xử lý---------
79
		INSERT INTO dbo.PL_PROCESS
80
				(
81
					REQ_ID,
82
					PROCESS_ID,
83
					CHECKER_ID,
84
					APPROVE_DT,
85
					PROCESS_DESC,
86
					NOTES
87
				)
88
				VALUES
89
				(	@p_CONTRACT_ID,       
90
					'SEND',
91
					@p_USER_LOGIN,        
92
					GETDATE(), 
93
					N'Người tạo gửi phê duyệt thành công' ,      
94
					N'Người tạo gửi phê duyệt'       
95
				)
96
		IF @@ERROR <> 0 GOTO ABORT
97

    
98
COMMIT TRANSACTION
99
SELECT '0' as Result, @P_CONTRACT_ID  CONTRACT_ID, @p_IS_SEND_APPR IS_SEND_APPR,
100
			N'Thông tin hợp đồng: '+@p_CONTRACT_NAME+
101
			N' đã được gửi phê duyệt thành công. Vui lòng đợi trưởng đơn vị phê duyệt.' ErrorDesc
102
RETURN '0'
103
ABORT:
104
BEGIN		
105
		ROLLBACK TRANSACTION
106
		SELECT '-1' as Result, ''  CONTRACT_ID, '' IS_SEND_APPR, ERROR_MESSAGE() ErrorDesc
107
		RETURN '-1'
108
End