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
|