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
|