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
|