1
|
ALTER PROCEDURE [dbo].[TR_REQ_ADVANCE_PAYMENT_Confirm]
|
2
|
@p_REQ_PAY_ID varchar(15)= NULL,
|
3
|
@p_CHECKER_ID varchar(15) = NULL,
|
4
|
@p_NOTES NVARCHAR(MAX) = NULL
|
5
|
AS
|
6
|
|
7
|
|
8
|
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND PROCESS = '' AND @p_CHECKER_ID = TRASFER_USER_RECIVE))
|
9
|
BEGIN
|
10
|
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đã được cấp phê duyệt trung gian xác nhận trước đó' ErrorDesc
|
11
|
RETURN '-1'
|
12
|
END
|
13
|
|
14
|
|
15
|
BEGIN TRANSACTION
|
16
|
DECLARE @ROLE_SIGN VARCHAR(50), @REQ_TYPE VARCHAR(15), @BRANCH_CREATE_TYPE VARCHAR(15)
|
17
|
SET @BRANCH_CREATE_TYPE = (SELECT TOP 1 BRANCH_TYPE FROM CM_BRANCH WHERE BRANCH_ID = (SELECT TOP 1 BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID))
|
18
|
|
19
|
|
20
|
SET @ROLE_SIGN = (SELECT STRING_AGG(CONVERT(NVARCHAR (MAX), C.DisplayName), ',')
|
21
|
FROM TL_USER A
|
22
|
LEFT JOIN AbpUserRoles B ON A.ID = B.UserId
|
23
|
LEFT JOIN AbpRoles C ON B.RoleId = C.Id
|
24
|
WHERE A.TLNANME = @p_CHECKER_ID) + ','
|
25
|
|
26
|
|
27
|
DECLARE @TABLE_ROLE TABLE (ROLE_AUTH VARCHAR(50))
|
28
|
DECLARE @MENU_PERMISSON NVARCHAR(500) = 'Pages.Administration.ReqTempPayment'
|
29
|
|
30
|
INSERT INTO @TABLE_ROLE SELECT RoleDisplayName FROM SYS_PERMISSIONS_PAGE_FOR_USER A WHERE A.TLNAME = @p_CHECKER_ID
|
31
|
AND (DATEDIFF(DAY, CONVERT(DATE, A.EffectiveDate, 103) , CONVERT(DATE, GETDATE(), 103)) >= 0 OR A.EffectiveDate IS NULL OR A.EffectiveDate = '')
|
32
|
AND (DATEDIFF(DAY, CONVERT(DATE, A.ExpirationDate, 103) , CONVERT(DATE, GETDATE(), 103)) <= 0 OR A.ExpirationDate IS NULL OR A.ExpirationDate = '')
|
33
|
AND A.AUTH_STATUS = 'A' AND A.RECORD_STATUS = '1'
|
34
|
AND EXISTS(SELECT DT.PER_PAGE_FOR_USER_DT_ID FROM SYS_PERMISSIONS_PAGE_FOR_USER_DT DT WHERE DT.PER_PAGE_FOR_USER_ID = A.PER_PAGE_FOR_USER_ID AND DT.MENU_PERMISSION = @MENU_PERMISSON)
|
35
|
|
36
|
DECLARE @ROLE_ID_TL_USER_V2 VARCHAR(50)
|
37
|
IF(@ROLE_SIGN IS NOT NULL AND @ROLE_SIGN <>'' AND EXISTS(SELECT TOP 1 A.ROLE_NAME FROM TMP_ROLE_PAYMENT_SEARCH A WHERE CHARINDEX(A.ROLE_NAME + ',', @ROLE_SIGN) > 0))
|
38
|
BEGIN
|
39
|
PRINT @ROLE_SIGN
|
40
|
END
|
41
|
ELSE
|
42
|
BEGIN
|
43
|
SET @ROLE_ID_TL_USER_V2 = (SELECT TOP 1 RoleName FROM TL_USER_V2 WHERE TLNANME = @p_CHECKER_ID)
|
44
|
SET @ROLE_SIGN = @ROLE_SIGN + @ROLE_ID_TL_USER_V2 + ','
|
45
|
END
|
46
|
SET @REQ_TYPE =(SELECT REQ_TYPE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
47
|
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@p_REQ_PAY_ID AND AUTH_STATUS ='R'))
|
48
|
BEGIN
|
49
|
ROLLBACK TRANSACTION
|
50
|
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Bạn không được phép xác nhận hoặc phê duyệt giao dịch này. Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+ N' đang được trả về. Vui lòng đợi nhân viên cập nhật thông tin và gửi phê duyệt lại' ErrorDesc
|
51
|
RETURN '-1'
|
52
|
END
|
53
|
|
54
|
IF(@REQ_TYPE ='I')
|
55
|
BEGIN
|
56
|
PRINT '0'
|
57
|
DECLARE @USER_SIGN VARCHAR(15)
|
58
|
SET @USER_SIGN =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)
|
59
|
|
60
|
IF(@BRANCH_CREATE_TYPE ='HS' AND EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID AND TRASFER_USER_RECIVE IS NOT NULL AND TRASFER_USER_RECIVE <> ''))
|
61
|
BEGIN
|
62
|
IF(@p_CHECKER_ID <> @USER_SIGN AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = 'SEND')
|
63
|
BEGIN
|
64
|
ROLLBACK TRANSACTION
|
65
|
SELECT '-1' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng đang chờ cấp phê duyệt trung gian xác nhận. User domain: '+ISNULL(@USER_SIGN,'') ErrorDesc
|
66
|
RETURN '-1'
|
67
|
END
|
68
|
|
69
|
IF(@p_CHECKER_ID <> @USER_SIGN
|
70
|
AND CHARINDEX('GDDV,', @ROLE_SIGN) > 0
|
71
|
AND (SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604'
|
72
|
AND (SELECT TOP 1 PROCESS_ID FROM PL_PROCESS WHERE REQ_ID =@p_REQ_PAY_ID ORDER BY ID DESC ) = '0')
|
73
|
BEGIN
|
74
|
ROLLBACK TRANSACTION
|
75
|
SELECT '3' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,ISNULL(@USER_SIGN,'') ErrorDesc
|
76
|
RETURN '3'
|
77
|
END
|
78
|
|
79
|
|
80
|
|
81
|
|
82
|
|
83
|
|
84
|
END
|
85
|
IF(EXISTS(SELECT TOP 1 A.ROLE_NAME FROM TMP_ROLE_PAYMENT_SEARCH A WHERE A.ROLE_NAME IN ('GDDV','PP','KTT','TC','TPTC') AND CHARINDEX(A.ROLE_NAME + ',', @ROLE_SIGN) > 0)
|
86
|
OR ( EXISTS (SELECT * FROM @TABLE_ROLE WHERE ROLE_AUTH IN ('GDDV','PP','KTT','TC','TPTC'))
|
87
|
AND NOT EXISTS ( SELECT * FROM TR_REQ_ADVANCE_PAYMENT
|
88
|
WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
89
|
AND TRASFER_USER_RECIVE =@p_CHECKER_ID
|
90
|
)
|
91
|
)
|
92
|
)
|
93
|
BEGIN
|
94
|
|
95
|
IF(@p_CHECKER_ID = @USER_SIGN
|
96
|
AND (SELECT B.DEP_CODE FROM TL_USER A LEFT JOIN CM_DEPARTMENT B ON A.DEP_ID = B.DEP_ID WHERE TLNANME =@p_CHECKER_ID) ='0690604')
|
97
|
BEGIN
|
98
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
99
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES ,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
|
100
|
END
|
101
|
ELSE
|
102
|
BEGIN
|
103
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='0',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
104
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Trưởng đơn vị xác nhận phiếu tạm ứng',NULL)
|
105
|
END
|
106
|
|
107
|
END
|
108
|
ELSE
|
109
|
BEGIN
|
110
|
IF((SELECT BRANCH_CREATE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID) ='DV0001')
|
111
|
BEGIN
|
112
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
113
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
|
114
|
END
|
115
|
ELSE
|
116
|
BEGIN
|
117
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
118
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
|
119
|
END
|
120
|
END
|
121
|
|
122
|
|
123
|
END
|
124
|
|
125
|
ELSE
|
126
|
BEGIN
|
127
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET PROCESS='',NOTES =N'SIGN' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
128
|
INSERT INTO PL_PROCESS VALUES (@p_REQ_PAY_ID,'0',@p_CHECKER_ID, GETDATE(),@p_NOTES,N'Cấp phê duyệt trung gian xác nhận phiếu tạm ứng',NULL)
|
129
|
END
|
130
|
|
131
|
COMMIT TRANSACTION
|
132
|
IF(@p_CHECKER_ID =(SELECT ISNULL(TRASFER_USER_RECIVE,'') FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID))
|
133
|
BEGIN
|
134
|
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được cấp phê duyệt trung gian xác nhận thành công! Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
|
135
|
RETURN '0'
|
136
|
END
|
137
|
ELSE
|
138
|
BEGIN
|
139
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET NOTES =N'' WHERE REQ_PAY_ID =@p_REQ_PAY_ID
|
140
|
SELECT '0' as Result, @p_REQ_PAY_ID REQ_PAY_ID ,N'Phiếu đề nghị tạm ứng số: '+(SELECT REQ_PAY_CODE FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID =@p_REQ_PAY_ID)+N' đã được xác nhận thành công! Vui lòng đợi các cấp phê duyệt tiếp theo' ErrorDesc
|
141
|
RETURN '0'
|
142
|
END
|
143
|
ABORT:
|
144
|
BEGIN
|
145
|
ROLLBACK TRANSACTION
|
146
|
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
|
147
|
RETURN '-1'
|
148
|
END
|