1
|
ALTER PROCEDURE [dbo].[TR_REQ_PAY_TRANSFER_Upd]
|
2
|
@p_TRANSFER_MAKER nvarchar(50) = NULL,
|
3
|
@p_TRANSFER_DT varchar(25) = NULL,
|
4
|
@p_TRASFER_USER_RECIVE varchar(15) = NULL,
|
5
|
@p_TRANSFER_TYPE varchar(15) = NULL,
|
6
|
@p_XMP_TEMP XML = NULL
|
7
|
AS
|
8
|
--Validation is here
|
9
|
/*
|
10
|
*/
|
11
|
Declare @hdoc INT
|
12
|
Exec sp_xml_preparedocument @hdoc Output,@p_XMP_TEMP
|
13
|
DECLARE TransferData CURSOR FOR
|
14
|
SELECT *
|
15
|
FROM OPENXML(@hDoc,'/Root/XmlData',2)
|
16
|
WITH
|
17
|
(
|
18
|
REQ_PAY_ID varchar(15) ,
|
19
|
TRANSFER_MAKER nvarchar(15) ,
|
20
|
TRASFER_USER_RECIVE varchar(15),
|
21
|
TRANSFER_ACTION VARCHAR(15)
|
22
|
)
|
23
|
OPEN TransferData
|
24
|
BEGIN TRANSACTION
|
25
|
|
26
|
DECLARE @REQ_PAY_ID VARCHAR(15), @TRANSFER_MAKER VARCHAR(15),@TRASFER_USER_RECIVE VARCHAR(15),@TRANSFER_ACTION VARCHAR(15)
|
27
|
DECLARE @INDEX INT =0
|
28
|
FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION
|
29
|
WHILE @@FETCH_STATUS = 0
|
30
|
BEGIN
|
31
|
DELETE FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID
|
32
|
SET @INDEX = @INDEX+1
|
33
|
-- KIEM TRA NEU CHUA CHON NHAN VIEN XU LY SE BAO LOI
|
34
|
IF(@TRASFER_USER_RECIVE ='' OR @TRASFER_USER_RECIVE IS NULL)
|
35
|
BEGIN
|
36
|
ROLLBACK TRANSACTION
|
37
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Nhân viên được giao xử lý không được phép để trống' ErrorDesc
|
38
|
RETURN '-1'
|
39
|
END
|
40
|
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A'))
|
41
|
BEGIN
|
42
|
ROLLBACK TRANSACTION
|
43
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán duyệt' ErrorDesc
|
44
|
RETURN '-1'
|
45
|
END
|
46
|
IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S'))
|
47
|
BEGIN
|
48
|
ROLLBACK TRANSACTION
|
49
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc
|
50
|
RETURN '-1'
|
51
|
END
|
52
|
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='S'))
|
53
|
BEGIN
|
54
|
ROLLBACK TRANSACTION
|
55
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đang được đề xuất từ chối và KSV đang xem xét' ErrorDesc
|
56
|
RETURN '-1'
|
57
|
END
|
58
|
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND AUTH_STATUS_KT='A'))
|
59
|
BEGIN
|
60
|
ROLLBACK TRANSACTION
|
61
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán duyệt' ErrorDesc
|
62
|
RETURN '-1'
|
63
|
END
|
64
|
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS')
|
65
|
BEGIN
|
66
|
ROLLBACK TRANSACTION
|
67
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc
|
68
|
RETURN '-1'
|
69
|
END
|
70
|
IF(EXISTS(SELECT * FROM TL_USER WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL')
|
71
|
BEGIN
|
72
|
ROLLBACK TRANSACTION
|
73
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc
|
74
|
RETURN '-1'
|
75
|
END
|
76
|
IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='KSV') AND @TRANSFER_ACTION <>'KS')
|
77
|
BEGIN
|
78
|
ROLLBACK TRANSACTION
|
79
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối KSV với vai trò xử lý phiếu' ErrorDesc
|
80
|
RETURN '-1'
|
81
|
END
|
82
|
IF(EXISTS(SELECT * FROM TL_USER_V2 WHERE TLNANME =@TRASFER_USER_RECIVE AND RoleName ='GDV') AND @TRANSFER_ACTION <>'XL')
|
83
|
BEGIN
|
84
|
ROLLBACK TRANSACTION
|
85
|
SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Bạn không được phép điều phối GDV với vai trò kiểm soát phiếu' ErrorDesc
|
86
|
RETURN '-1'
|
87
|
END
|
88
|
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
|
89
|
--BEGIN
|
90
|
-- ROLLBACK TRANSACTION
|
91
|
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc
|
92
|
-- RETURN '-1'
|
93
|
--END
|
94
|
--IF(EXISTS(SELECT * FROM TR_REQ_ADVANCE_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL AND MAKER_ID_KT <>''))
|
95
|
--BEGIN
|
96
|
-- ROLLBACK TRANSACTION
|
97
|
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị tạm ứng đã được kế toán cập nhật thông tin' ErrorDesc
|
98
|
-- RETURN '-1'
|
99
|
--END
|
100
|
--IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT WHERE REQ_PAY_ID=@REQ_PAY_ID AND MAKER_ID_KT IS NOT NULL))
|
101
|
--BEGIN
|
102
|
-- ROLLBACK TRANSACTION
|
103
|
-- SELECT '-1' as Result, '' REQ_PAY_ID, N'Dòng '+ CONVERT(VARCHAR(5),@INDEX) + N': Phiếu đề nghị thanh toán đã được kế toán cập nhật thông tin' ErrorDesc
|
104
|
-- RETURN '-1'
|
105
|
--END
|
106
|
IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TLNAME =@TRANSFER_MAKER))
|
107
|
BEGIN
|
108
|
INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS)
|
109
|
VALUES (@REQ_PAY_ID,NULL,@TRANSFER_MAKER,'KS',CONVERT(VARCHAR(5),'1'),'P','1')
|
110
|
END
|
111
|
-- KHAI BAO MAX LEVEL
|
112
|
DECLARE @MAX_LEVEL VARCHAR(5), @NEXT_LEVEL INT, @PREV_LEVEL INT
|
113
|
SET @MAX_LEVEL= (SELECT MAX(LEVEL_JOB) FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID=@REQ_PAY_ID)
|
114
|
SET @NEXT_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) +1
|
115
|
SET @PREV_LEVEL = (SELECT CONVERT(INT,@MAX_LEVEL)) -1
|
116
|
IF(@TRANSFER_ACTION ='XL')
|
117
|
BEGIN
|
118
|
--UPDATE TR_REQ_ADVANCE_PAYMENT SET
|
119
|
--AUTH_STATUS_KT ='U',
|
120
|
--TRANSFER_DT = CONVERT(DATE,GETDATE(),103),
|
121
|
--TRANSFER_MAKER = @TRANSFER_MAKER,
|
122
|
--TRASFER_USER_RECIVE = @TRASFER_USER_RECIVE
|
123
|
--WHERE REQ_PAY_ID =@REQ_PAY_ID
|
124
|
IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION))
|
125
|
BEGIN
|
126
|
INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS)
|
127
|
VALUES (@REQ_PAY_ID,NULL,@TRASFER_USER_RECIVE,'XL',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1')
|
128
|
INSERT INTO PL_PROCESS VALUES (@REQ_PAY_ID,'TRANSF',@p_TRANSFER_MAKER, GETDATE(),N'Điều phối về nhân viên ' +@TRASFER_USER_RECIVE,N'Điều phối thanh toán/ tạm ứng')
|
129
|
END
|
130
|
ELSE
|
131
|
BEGIN
|
132
|
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB=@TRANSFER_ACTION,TLNAME = @TRASFER_USER_RECIVE WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION
|
133
|
END
|
134
|
-- UPDATE BUOC TRUOC DO VE P
|
135
|
--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL
|
136
|
END
|
137
|
ELSE
|
138
|
BEGIN
|
139
|
IF(NOT EXISTS (SELECT * FROM PL_REQUEST_PROCESS_CHILD WHERE REQ_ID =@REQ_PAY_ID AND TYPE_JOB =@TRANSFER_ACTION))
|
140
|
BEGIN
|
141
|
INSERT INTO PL_REQUEST_PROCESS_CHILD(REQ_ID,PROCESS_ID,TLNAME,TYPE_JOB,LEVEL_JOB,STATUS_JOB,RECORD_STATUS)
|
142
|
VALUES (@REQ_PAY_ID,NULL,@TRASFER_USER_RECIVE,'KS',CONVERT(VARCHAR(5),@NEXT_LEVEL),'C','1')
|
143
|
END
|
144
|
ELSE
|
145
|
BEGIN
|
146
|
UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='C',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND TLNAME =@TRASFER_USER_RECIVE
|
147
|
END
|
148
|
-- UPDATE BUOC TRUOC DO VE P
|
149
|
--UPDATE PL_REQUEST_PROCESS_CHILD SET STATUS_JOB ='P',TYPE_JOB='KS' WHERE REQ_ID =@REQ_PAY_ID AND LEVEL_JOB =@MAX_LEVEL
|
150
|
END
|
151
|
IF(@p_TRANSFER_TYPE='A')
|
152
|
BEGIN
|
153
|
UPDATE TR_REQ_ADVANCE_PAYMENT SET
|
154
|
AUTH_STATUS_KT ='U'
|
155
|
WHERE REQ_PAY_ID =@REQ_PAY_ID
|
156
|
END
|
157
|
ELSE
|
158
|
BEGIN
|
159
|
UPDATE TR_REQ_PAYMENT SET
|
160
|
AUTH_STATUS_KT ='U'
|
161
|
WHERE REQ_PAY_ID =@REQ_PAY_ID
|
162
|
END
|
163
|
IF @@ERROR <> 0 GOTO ABORT
|
164
|
FETCH NEXT FROM TransferData INTO @REQ_PAY_ID, @TRANSFER_MAKER, @TRASFER_USER_RECIVE,@TRANSFER_ACTION
|
165
|
END
|
166
|
CLOSE TransferData
|
167
|
DEALLOCATE TransferData
|
168
|
IF @@Error <> 0 GOTO ABORT
|
169
|
COMMIT TRANSACTION
|
170
|
SELECT '0' as Result, '' REQ_PAY_ID, '' ErrorDesc
|
171
|
RETURN '0'
|
172
|
ABORT:
|
173
|
BEGIN
|
174
|
ROLLBACK TRANSACTION
|
175
|
CLOSE TransferData
|
176
|
DEALLOCATE TransferData
|
177
|
SELECT '-1' as Result, '' REQ_PAY_ID, '' ErrorDesc
|
178
|
RETURN '-1'
|
179
|
End
|