Project

General

Profile

TR_CONTRACT_SendAppr.txt

Luc Tran Van, 12/12/2022 01:55 PM

 
1

    
2

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

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

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

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

    
80
		--------BAODNQ 16/02/2022: Insert vào PL_PROCESS 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
					'SEND',
93
					@p_USER_LOGIN,        
94
					GETDATE(), 
95
					N'Người tạo gửi phê duyệt thành công' ,      
96
					N'Người tạo gửi phê duyệt'       
97
				)
98
		IF @@ERROR <> 0 GOTO ABORT
99

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