1
|
ALTER PROCEDURE [dbo].[TR_REQ_PAYMENT_AUTO_Upd]
|
2
|
@p_REQ_PAY_AUTO_ID VARCHAR(20)= NULL,
|
3
|
@p_REQ_PAY_AUTO_CODE VARCHAR(20)= NULL,
|
4
|
@p_REQ_PAY_AUTO_DT VARCHAR(20)= NULL,
|
5
|
@p_REQ_PAY_AUTO_TYPE VARCHAR(20)= NULL,
|
6
|
@p_REQ_PAY_AUTO_SERVICE_TYPE VARCHAR(20)= NULL,
|
7
|
@p_REQ_PAY_AUTO_STATUS VARCHAR(20)= NULL,
|
8
|
@p_REQ_PAY_AUTO_EFFECTIVE_DT VARCHAR(20)= NULL,
|
9
|
@p_BRANCH_ID VARCHAR(20)= NULL,
|
10
|
@p_DEP_ID VARCHAR(20)= NULL,
|
11
|
@p_BRANCH_CREATE VARCHAR(20)= NULL,
|
12
|
@p_TRANSFER_USER_RECEIVE VARCHAR(20)= NULL,
|
13
|
@p_CONFIRM_NOTE VARCHAR(20)= NULL,
|
14
|
@p_CONTRACT_ID VARCHAR(20)= NULL,
|
15
|
@p_PROCESS VARCHAR(20)= NULL,
|
16
|
@p_TRANSFER_MAKER VARCHAR(20)= NULL,
|
17
|
@p_TRANSFER_DT VARCHAR(20)= NULL,
|
18
|
@p_MAKER_ID VARCHAR(20)= NULL,
|
19
|
@p_CREATE_DT VARCHAR(20)= NULL,
|
20
|
@p_EDITOR_ID VARCHAR(20)= NULL,
|
21
|
@p_EDIT_DT VARCHAR(20)= NULL,
|
22
|
@p_CHECKER_ID VARCHAR(20)= NULL,
|
23
|
@p_APPROVE_DT VARCHAR(20)= NULL,
|
24
|
@p_AUTH_STATUS VARCHAR(20)= NULL,
|
25
|
@p_MAKER_ID_KT VARCHAR(20)= NULL,
|
26
|
@p_CREATE_DT_KT VARCHAR(20)= NULL,
|
27
|
@p_CHECKER_ID_KT VARCHAR(20)= NULL,
|
28
|
@p_APPROVE_DT_KT VARCHAR(20)= NULL,
|
29
|
@p_AUTH_STATUS_KT VARCHAR(20)= NULL,
|
30
|
@p_RECORD_STATUS VARCHAR(20)= NULL,
|
31
|
@p_FRMDATE VARCHAR(20)= NULL,
|
32
|
@p_TODATE VARCHAR(20)= NULL,
|
33
|
@p_LEVEL VARCHAR(20)= NULL,
|
34
|
@p_USER_LOGIN VARCHAR(20)= NULL,
|
35
|
@p_IS_SEND_APPR VARCHAR(20)= NULL,
|
36
|
@p_TYPE_SEARCH VARCHAR(20)= NULL,
|
37
|
@p_BRANCH_LOGIN VARCHAR(20)= NULL,
|
38
|
@p_NOTIFI_EXPIRED_DT VARCHAR(20)= NULL,
|
39
|
@p_IS_MAKER_CONFIRM_CHECKBOX VARCHAR(20)= NULL,
|
40
|
@p_XMP_SCHEDULE XML = NULL,
|
41
|
@p_XMP_SCHEDULE_DETAIL XML = NULL,
|
42
|
@p_XMP_RECURRING XML = NULL,
|
43
|
@p_XMP_BUDGET_ALLOCATION XML = NULL,
|
44
|
@p_XMP_BUDGET_ALLOCATION_TYPE_A XML = NULL,
|
45
|
@p_XMP_METHOD XML = NULL
|
46
|
AS
|
47
|
-- BEGIN VALIDATE MASTER
|
48
|
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(MAKER_ID, '') <> @p_USER_LOGIN AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))
|
49
|
BEGIN
|
50
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Chỉnh sửa phiếu thất bại! Chỉ người tạo phiếu mới có quyền chỉnh sửa phiếu' ErrorDesc
|
51
|
RETURN '-1'
|
52
|
END
|
53
|
IF(ISNULL(@p_REQ_PAY_AUTO_TYPE, '') = '' OR ISNULL(@p_MAKER_ID, '') = '' OR ISNULL(@p_BRANCH_ID, '') = '' OR ISNULL(@p_DEP_ID, '') = '' OR ISNULL(@p_REQ_PAY_AUTO_SERVICE_TYPE, '') = '')
|
54
|
BEGIN
|
55
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Các thông tin sau không được để trống: loại thanh toán tự động, người tạo yêu cầu, đơn vị tạo yêu cầu, phòng ban tạo yêu cầu, loại dịch vụ thanh toán' ErrorDesc
|
56
|
RETURN '-1'
|
57
|
END
|
58
|
IF(ISNULL(@p_REQ_PAY_AUTO_CODE, '') = '' OR ISNULL(@p_REQ_PAY_AUTO_ID, '') = '')
|
59
|
BEGIN
|
60
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Mã số phiếu không được đế trống' ErrorDesc
|
61
|
RETURN '-1'
|
62
|
END
|
63
|
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE REQ_PAY_AUTO_ID <> @p_REQ_PAY_AUTO_ID AND CONTRACT_ID = @p_CONTRACT_ID AND AUTH_STATUS NOT IN ('E', 'R', 'D') AND REQ_PAY_AUTO_TYPE = 'A'))
|
64
|
BEGIN
|
65
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Số hợp đồng(ID hệ thống) ' + @p_CONTRACT_ID + N' đang được đề nghị thanh toán tự động trong hệ thống' ErrorDesc
|
66
|
RETURN '-1'
|
67
|
END
|
68
|
IF(@p_IS_SEND_APPR ='SEND')
|
69
|
BEGIN
|
70
|
IF(ISNULL(@p_CONTRACT_ID, '') = '')
|
71
|
BEGIN
|
72
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Số hợp đồng(ID hệ thống) không được đế trống' ErrorDesc
|
73
|
RETURN '-1'
|
74
|
END
|
75
|
END
|
76
|
-- END VALIDATE MASTER
|
77
|
-- BEGIN VALIDATE FLOW
|
78
|
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS = 'A' AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID))
|
79
|
BEGIN
|
80
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đã được trưởng đơn vị phê duyệt trước đó' ErrorDesc
|
81
|
RETURN '-1'
|
82
|
END
|
83
|
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE AUTH_STATUS_KT = 'A' AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID))
|
84
|
BEGIN
|
85
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Phê duyệt thất bại! Phiếu yêu cầu thanh toán tự động đã được kiểm sát viên phê duyệt' ErrorDesc
|
86
|
RETURN '-1'
|
87
|
END
|
88
|
IF(EXISTS (SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE ISNULL(PROCESS, '') <> '' AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID))
|
89
|
BEGIN
|
90
|
SELECT '-1' as Result, '' REQ_PAY_AUTO_ID, N'Cập nhật thất bại! Phiếu yêu cầu thanh toán tự động đã được gửi phê duyệt trước đó' ErrorDesc
|
91
|
RETURN '-1'
|
92
|
END
|
93
|
-- END VALIDATE FLOW
|
94
|
BEGIN TRANSACTION
|
95
|
DECLARE @BRANCH_MANAGE_ID VARCHAR(20)
|
96
|
SET @BRANCH_MANAGE_ID = ISNULL((SELECT TOP 1 BRANCH_ID FROM TR_CONTRACT WHERE CONTRACT_ID = @p_CONTRACT_ID), '');
|
97
|
UPDATE TR_REQ_PAYMENT_AUTO
|
98
|
SET REQ_PAY_AUTO_SERVICE_TYPE = @p_REQ_PAY_AUTO_SERVICE_TYPE, AUTH_STATUS = 'E', CREATE_DT = GETDATE(),
|
99
|
TRANSFER_USER_RECEIVE = @p_TRANSFER_USER_RECEIVE, CONTRACT_ID = @p_CONTRACT_ID,
|
100
|
NOTIFI_EXPIRED_DT = CONVERT(DATE, @p_NOTIFI_EXPIRED_DT, 103), IS_MAKER_CONFIRM = @p_IS_MAKER_CONFIRM_CHECKBOX,
|
101
|
IS_MAKER_CONFIRM_CHECKBOX = @p_IS_MAKER_CONFIRM_CHECKBOX, BRANCH_MANAGE_ID = @BRANCH_MANAGE_ID, IS_SEND_MAIL_EXPIRED = NULL
|
102
|
WHERE 1 = 1
|
103
|
AND REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
|
104
|
IF @@Error <> 0 GOTO ABORT
|
105
|
|
106
|
--- INSERT LICH THANH TOAN
|
107
|
DELETE FROM TR_REQ_PAY_AUTO_SCHEDULE WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
|
108
|
DECLARE @hDocSchedule INT
|
109
|
EXEC sp_xml_preparedocument @hDocSchedule OUTPUT, @p_XMP_SCHEDULE;
|
110
|
IF(@p_IS_SEND_APPR ='SEND')
|
111
|
BEGIN
|
112
|
IF(@p_REQ_PAY_AUTO_TYPE = 'A' AND NOT EXISTS(SELECT * FROM OPENXML(@hDocSchedule, '/Root/XmlDataSchedule', 2) WITH(REQ_PAY_AUTO_ID varchar(20))))
|
113
|
BEGIN
|
114
|
ROLLBACK TRANSACTION
|
115
|
SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách thông tin định kỳ thanh toán không được phép để trống' ErrorDesc
|
116
|
RETURN '-1'
|
117
|
END
|
118
|
END
|
119
|
|
120
|
DECLARE @REQ_PAY_AUTO_SCHEDULE_ID VARCHAR(20), @CONTRACT_ID VARCHAR(20), @TYPE_PERIOD VARCHAR(20), @START_DT VARCHAR(20), @END_DT VARCHAR(20), @PERIOD_AMT DECIMAL(18,2), @PERIOD_NUMBER DECIMAL(18,2), @PERIOD_PAY_DT VARCHAR(20), @PERIOD_PAY_DAY DECIMAL(18,0)
|
121
|
|
122
|
DECLARE XmlDataSchedule CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocSchedule, 'Root/XmlDataSchedule',2)
|
123
|
WITH(REQ_PAY_AUTO_CONTRACT_ID VARCHAR(20), CONTRACT_ID VARCHAR(20), TYPE_PERIOD VARCHAR(20), START_DT VARCHAR(20), END_DT VARCHAR(20), PERIOD_AMT DECIMAL(18,2), PERIOD_NUMBER DECIMAL(18,2), PERIOD_PAY_DT VARCHAR(20), PERIOD_PAY_DAY DECIMAL(18,0))
|
124
|
OPEN XmlDataSchedule
|
125
|
|
126
|
DECLARE @INDEX_SCHEDULE INT = 0;
|
127
|
FETCH NEXT FROM XmlDataSchedule INTO @REQ_PAY_AUTO_SCHEDULE_ID, @CONTRACT_ID, @TYPE_PERIOD, @START_DT, @END_DT, @PERIOD_AMT, @PERIOD_NUMBER , @PERIOD_PAY_DT, @PERIOD_PAY_DAY
|
128
|
WHILE @@fetch_status=0
|
129
|
BEGIN
|
130
|
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
|
131
|
IF(@p_IS_SEND_APPR ='SEND')
|
132
|
BEGIN
|
133
|
SET @INDEX_SCHEDULE = @INDEX_SCHEDULE + 1
|
134
|
|
135
|
IF(@TYPE_PERIOD IS NULL OR @TYPE_PERIOD = '')
|
136
|
BEGIN
|
137
|
ROLLBACK TRANSACTION
|
138
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Định kỳ không được để trống' ErrorDesc
|
139
|
RETURN '-1'
|
140
|
END
|
141
|
IF(@START_DT IS NULL OR @START_DT = '')
|
142
|
BEGIN
|
143
|
ROLLBACK TRANSACTION
|
144
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày bắt đầu không được để trống' ErrorDesc
|
145
|
RETURN '-1'
|
146
|
END
|
147
|
IF(@END_DT IS NULL OR @END_DT = '')
|
148
|
BEGIN
|
149
|
ROLLBACK TRANSACTION
|
150
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày kết thúc không được để trống' ErrorDesc
|
151
|
RETURN '-1'
|
152
|
END
|
153
|
IF(@PERIOD_AMT IS NULL OR @PERIOD_AMT < 0)
|
154
|
BEGIN
|
155
|
ROLLBACK TRANSACTION
|
156
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Số tiền định kỳ thanh toán không được để trống hoặc bé hơn 0' ErrorDesc
|
157
|
RETURN '-1'
|
158
|
END
|
159
|
IF(@PERIOD_PAY_DAY IS NULL OR @PERIOD_PAY_DAY < 0)
|
160
|
BEGIN
|
161
|
ROLLBACK TRANSACTION
|
162
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày thanh toán định kỳ không được để trống' ErrorDesc
|
163
|
RETURN '-1'
|
164
|
END
|
165
|
IF(CONVERT(DATE, @START_DT, 103) > CONVERT(DATE, @END_DT, 103))
|
166
|
BEGIN
|
167
|
ROLLBACK TRANSACTION
|
168
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin định kỳ thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE)+N': Ngày bắt đầu phải bé hơn ngày kết thúc' ErrorDesc
|
169
|
RETURN '-1'
|
170
|
END
|
171
|
END
|
172
|
|
173
|
EXEC SYS_CodeMasters_Gen 'REQ_PAY_AUTO_SCHEDULE_ID', @REQ_PAY_AUTO_SCHEDULE_ID OUT;
|
174
|
IF @REQ_PAY_AUTO_SCHEDULE_ID='' OR @REQ_PAY_AUTO_SCHEDULE_ID IS NULL GOTO ABORT;
|
175
|
|
176
|
INSERT INTO TR_REQ_PAY_AUTO_SCHEDULE(REQ_PAY_AUTO_SCHEDULE_ID, REQ_PAY_AUTO_ID, CONTRACT_ID, TYPE_PERIOD, START_DT, END_DT, PERIOD_AMT, PERIOD_NUMBER, PERIOD_PAY_DT, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, AUTH_STATUS, RECORD_STATUS, PERIOD_PAY_DAY)
|
177
|
VALUES (@REQ_PAY_AUTO_SCHEDULE_ID, @p_REQ_PAY_AUTO_ID, @CONTRACT_ID, @TYPE_PERIOD, CONVERT(DATE,@START_DT,103), CONVERT(DATE,@END_DT,103), @PERIOD_AMT, @PERIOD_NUMBER, CONVERT(DATE,@PERIOD_PAY_DT,103), @p_MAKER_ID, GETDATE(), NULL, NULL, 'A', '1', @PERIOD_PAY_DAY)
|
178
|
|
179
|
IF @@error<>0 GOTO ABORT;
|
180
|
FETCH NEXT FROM XmlDataSchedule INTO @REQ_PAY_AUTO_SCHEDULE_ID, @CONTRACT_ID, @TYPE_PERIOD, @START_DT, @END_DT, @PERIOD_AMT, @PERIOD_NUMBER , @PERIOD_PAY_DT, @PERIOD_PAY_DAY
|
181
|
END
|
182
|
CLOSE XmlDataSchedule;
|
183
|
DEALLOCATE XmlDataSchedule;
|
184
|
|
185
|
--- INSERT CHI TIET LICH THANH TOAN
|
186
|
DELETE FROM TR_REQ_PAY_AUTO_SCHEDULE_DETAIL WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID AND PAY_AUTO_STATUS <> 'Y'
|
187
|
|
188
|
DECLARE @hDocScheduleDetail INT
|
189
|
EXEC sp_xml_preparedocument @hDocScheduleDetail OUTPUT, @p_XMP_SCHEDULE_DETAIL;
|
190
|
IF(@p_IS_SEND_APPR ='SEND')
|
191
|
BEGIN
|
192
|
IF(@p_REQ_PAY_AUTO_TYPE = 'A' AND NOT EXISTS(SELECT * FROM OPENXML(@hDocScheduleDetail, '/Root/XmlDataScheduleDetail', 2) WITH(REQ_PAY_AUTO_ID varchar(20))))
|
193
|
BEGIN
|
194
|
ROLLBACK TRANSACTION
|
195
|
SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách lịch thanh toán chi tiết không được phép để trống' ErrorDesc
|
196
|
RETURN '-1'
|
197
|
END
|
198
|
END
|
199
|
|
200
|
DECLARE @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20), @EXPECTED_DT VARCHAR(20), @PAY_AUTO_AMT DECIMAL(18,2), @PAY_AUTO_DESC NVARCHAR(1000), @PAY_AUTO_STATUS VARCHAR(20), @EXACT_DT VARCHAR(20), @END_PERIOD_DT VARCHAR(20), @NOTES NVARCHAR(1000), @PAY_PHASE NVARCHAR(500)
|
201
|
|
202
|
DECLARE XmlDataScheduleDetail CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocScheduleDetail, 'Root/XmlDataScheduleDetail',2)
|
203
|
WITH(REQ_PAY_AUTO_SCHEDULE_DETAIL_ID VARCHAR(20),REQ_PAY_AUTO_SCHEDULE_ID VARCHAR(20),EXPECTED_DT VARCHAR(20),PAY_AUTO_AMT DECIMAL(18,2),PAY_AUTO_DESC NVARCHAR(1000),PAY_AUTO_STATUS VARCHAR(20), EXACT_DT VARCHAR(20), START_DT VARCHAR(20), END_DT VARCHAR(20), TYPE_PERIOD VARCHAR(20), END_PERIOD_DT VARCHAR(20), NOTES NVARCHAR(255), PAY_PHASE NVARCHAR(500))
|
204
|
OPEN XmlDataScheduleDetail
|
205
|
|
206
|
DECLARE @INDEX_SCHEDULE_DETAIL INT = 0
|
207
|
FETCH NEXT FROM XmlDataScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @EXACT_DT, @START_DT, @END_DT, @TYPE_PERIOD, @END_PERIOD_DT, @NOTES, @PAY_PHASE
|
208
|
WHILE @@fetch_status=0
|
209
|
BEGIN
|
210
|
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
|
211
|
IF(@p_IS_SEND_APPR ='SEND')
|
212
|
BEGIN
|
213
|
SET @INDEX_SCHEDULE_DETAIL = @INDEX_SCHEDULE_DETAIL + 1
|
214
|
|
215
|
IF(@EXPECTED_DT IS NULL OR @EXPECTED_DT = '')
|
216
|
BEGIN
|
217
|
ROLLBACK TRANSACTION
|
218
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lịch thanh toán chi tiết, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE_DETAIL)+N': Ngày dự kiến thanh toán không được để trống' ErrorDesc
|
219
|
RETURN '-1'
|
220
|
END
|
221
|
IF(@PAY_AUTO_AMT IS NULL OR @PAY_AUTO_AMT < 0)
|
222
|
BEGIN
|
223
|
ROLLBACK TRANSACTION
|
224
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lịch thanh toán chi tiết, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE_DETAIL)+N': Số tiền thanh toán không được để trống' ErrorDesc
|
225
|
RETURN '-1'
|
226
|
END
|
227
|
IF(@PAY_AUTO_STATUS IS NULL OR @PAY_AUTO_STATUS = '')
|
228
|
BEGIN
|
229
|
ROLLBACK TRANSACTION
|
230
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lịch thanh toán chi tiết, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE_DETAIL)+N': Tình trạng không được để trống' ErrorDesc
|
231
|
RETURN '-1'
|
232
|
END
|
233
|
|
234
|
IF(ISNULL(@PAY_PHASE, '') = '')
|
235
|
BEGIN
|
236
|
ROLLBACK TRANSACTION
|
237
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lịch thanh toán chi tiết, dòng ' + CONVERT(VARCHAR(5),@INDEX_SCHEDULE_DETAIL)+N': Kỳ thanh toán không được để trống' ErrorDesc
|
238
|
RETURN '-1'
|
239
|
END
|
240
|
END
|
241
|
|
242
|
IF(ISNULL(@PAY_AUTO_STATUS, '') <> 'Y')
|
243
|
BEGIN
|
244
|
EXEC SYS_CodeMasters_Gen 'REQ_PAY_AUTO_SCHEDULE_DETAIL_ID', @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID OUT;
|
245
|
IF @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID='' OR @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID IS NULL GOTO ABORT;
|
246
|
|
247
|
INSERT INTO TR_REQ_PAY_AUTO_SCHEDULE_DETAIL(REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, REQ_PAY_AUTO_SCHEDULE_ID, REQ_PAY_AUTO_ID, EXPECTED_DT, PAY_AUTO_AMT, PAY_AUTO_DESC, PAY_AUTO_STATUS, EXACT_DT, MAKER_ID, CREATE_DT, CHECKER_ID, APPROVE_DT, AUTH_STATUS, RECORD_STATUS, START_DT, END_DT, TYPE_PERIOD, END_PERIOD_DT, NOTES, PAY_PHASE)
|
248
|
VALUES (@REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @p_REQ_PAY_AUTO_ID, CONVERT(DATE,@EXPECTED_DT,103), @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, CONVERT(DATE,@EXACT_DT,103), @p_MAKER_ID, GETDATE(), NULL, NULL, 'A', '1', CONVERT(DATE,@START_DT,103), CONVERT(DATE,@END_DT,103), @TYPE_PERIOD, CONVERT(DATE,@END_PERIOD_DT,103), @NOTES, @PAY_PHASE)
|
249
|
END
|
250
|
|
251
|
|
252
|
IF @@error<>0 GOTO ABORT;
|
253
|
FETCH NEXT FROM XmlDataScheduleDetail INTO @REQ_PAY_AUTO_SCHEDULE_DETAIL_ID, @REQ_PAY_AUTO_SCHEDULE_ID, @EXPECTED_DT, @PAY_AUTO_AMT, @PAY_AUTO_DESC, @PAY_AUTO_STATUS, @EXACT_DT, @START_DT, @END_DT, @TYPE_PERIOD, @END_PERIOD_DT, @NOTES, @PAY_PHASE
|
254
|
END
|
255
|
CLOSE XmlDataScheduleDetail;
|
256
|
DEALLOCATE XmlDataScheduleDetail;
|
257
|
|
258
|
--- INSERT PHUONG THUC THANH TOAN
|
259
|
DELETE FROM TR_REQ_PAY_AUTO_METHOD WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
|
260
|
|
261
|
DECLARE @hDocMeThod INT
|
262
|
EXEC sp_xml_preparedocument @hDocMeThod OUTPUT, @p_XMP_METHOD;
|
263
|
IF(@p_IS_SEND_APPR ='SEND')
|
264
|
BEGIN
|
265
|
IF(@p_REQ_PAY_AUTO_TYPE = 'A' AND NOT EXISTS(SELECT * FROM OPENXML(@hDocMeThod, '/Root/XmlDataMethod', 2) WITH(REQ_PAY_AUTO_ID varchar(20))))
|
266
|
BEGIN
|
267
|
ROLLBACK TRANSACTION
|
268
|
SELECT '-1' Result, '' REQ_PAY_ID, N'Danh sách phương thức thanh toán không được phép để trống' ErrorDesc
|
269
|
RETURN '-1'
|
270
|
END
|
271
|
END
|
272
|
|
273
|
DECLARE @RECEIVE_ID VARCHAR(15), @RECEIVE_NAME NVARCHAR(100), @REQ_PAY_REASON NVARCHAR(MAX), @TOTAL_AMT DECIMAL(18,2),
|
274
|
@REQ_PAY_TYPE VARCHAR(1), @REQ_PAY_DESC NVARCHAR(MAX), @REQ_PAY_ENTRIES NVARCHAR(MAX), @ACC_NO VARCHAR(25), @ACC_NAME NVARCHAR(250),
|
275
|
@ISSUED_BY NVARCHAR(250), @ISSUED_DT VARCHAR(20), @CURRENCY VARCHAR(15), @RATE DECIMAL(18,2), @CHECK_IN VARCHAR(15), @TYPE_TRANSFER VARCHAR(15),
|
276
|
@BANKCODE_NAPAS VARCHAR(20), @BANKCODE VARCHAR(20), @BANKNAME VARCHAR(250), @SUB_ISSUED_BY NVARCHAR(250), @RECEIVER_DEBIT VARCHAR(20)
|
277
|
|
278
|
DECLARE XmlDataMethod CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocMeThod, 'Root/XmlDataMethod',2)
|
279
|
WITH(RECEIVE_ID VARCHAR(15),RECEIVE_NAME NVARCHAR(100),REQ_PAY_REASON NVARCHAR(MAX),TOTAL_AMT DECIMAL(18,2),
|
280
|
REQ_PAY_TYPE VARCHAR(1),REQ_PAY_DESC NVARCHAR(MAX),REQ_PAY_ENTRIES NVARCHAR(MAX),ACC_NO VARCHAR(25),
|
281
|
ACC_NAME NVARCHAR(250),ISSUED_BY NVARCHAR(250), ISSUED_DT VARCHAR(20),CURRENCY VARCHAR(15), RATE DECIMAL(18,2),CHECK_IN VARCHAR(15),TYPE_TRANSFER VARCHAR(15),
|
282
|
BANKCODE_NAPAS VARCHAR(20), BANKCODE VARCHAR(20), BANKNAME VARCHAR(250), SUB_ISSUED_BY NVARCHAR(250), RECEIVER_DEBIT VARCHAR(20))
|
283
|
OPEN XmlDataMethod
|
284
|
|
285
|
DECLARE @INDEX_METHOD INT = 0
|
286
|
FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT,@REQ_PAY_TYPE,
|
287
|
@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
|
288
|
WHILE @@fetch_status=0
|
289
|
BEGIN
|
290
|
-- KHI NAO BAM GUI PHE DUYET THI MOI CHECK VALIDATE
|
291
|
IF(@p_IS_SEND_APPR ='SEND')
|
292
|
BEGIN
|
293
|
SET @INDEX_METHOD = @INDEX_METHOD + 1
|
294
|
----------------------- begin validate ------------------------
|
295
|
IF(@ACC_NO IS NULL OR @ACC_NO = '')
|
296
|
BEGIN
|
297
|
ROLLBACK TRANSACTION
|
298
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': số tài khoản '+ N' không được để trống' ErrorDesc
|
299
|
RETURN '-1'
|
300
|
END
|
301
|
|
302
|
IF(@REQ_PAY_TYPE = '1' AND (@ISSUED_DT = '' OR @ISSUED_DT IS NULL))
|
303
|
BEGIN
|
304
|
ROLLBACK TRANSACTION
|
305
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Ngày cấp CMND '+ N' không được để trống nếu phương thức thanh toán là bằng tiền mặt' ErrorDesc
|
306
|
RETURN '-1'
|
307
|
END
|
308
|
|
309
|
IF(@TOTAL_AMT IS NULL OR @TOTAL_AMT < 0)
|
310
|
BEGIN
|
311
|
ROLLBACK TRANSACTION
|
312
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin phương thức thanh toán, dòng ' + CONVERT(VARCHAR(5),@INDEX_METHOD)+N': Số tiền thanh toán không được để trống hoặc bé hơn 0' ErrorDesc
|
313
|
RETURN '-1'
|
314
|
END
|
315
|
END
|
316
|
|
317
|
IF(@REQ_PAY_TYPE<>'1')
|
318
|
BEGIN
|
319
|
SET @ISSUED_DT = NULL
|
320
|
END
|
321
|
IF(@TYPE_TRANSFER IS NULL OR @TYPE_TRANSFER ='')
|
322
|
BEGIN
|
323
|
SET @TYPE_TRANSFER ='A'
|
324
|
END
|
325
|
|
326
|
DECLARE @p_REQ_PAY_METHOD_ID VARCHAR(15);
|
327
|
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_METHOD', @p_REQ_PAY_METHOD_ID OUT;
|
328
|
IF @p_REQ_PAY_METHOD_ID='' OR @p_REQ_PAY_METHOD_ID IS NULL GOTO ABORT;
|
329
|
|
330
|
INSERT INTO TR_REQ_PAY_AUTO_METHOD(METHOD_ID, REQ_PAY_AUTO_ID, EMP_ID, REQ_PAY_REASON, TOTAL_AMT, REQ_PAY_TYPE, REQ_PAY_DESC, REQ_PAY_ENTRIES, TEMP, MAKER_ID, CREATE_DT, ACC_NO, ACC_NAME, ISSUED_BY, ISSUED_DT, CURRENCY, RATE, CHECK_IN, TYPE_TRANSFER, BANKCODE_NAPAS, BANKCODE, BANKNAME, SUB_ISSUED_BY, RECEIVER_DEBIT)
|
331
|
VALUES (@p_REQ_PAY_METHOD_ID,@p_REQ_PAY_AUTO_ID,@RECEIVE_ID,@REQ_PAY_REASON, @TOTAL_AMT,@REQ_PAY_TYPE,@REQ_PAY_DESC,@REQ_PAY_ENTRIES,'',@p_MAKER_ID,GETDATE(),@ACC_NO, @ACC_NAME,@ISSUED_BY,CONVERT(DATE,@ISSUED_DT,103), 'VND' ,'1',@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME,@SUB_ISSUED_BY, @RECEIVER_DEBIT )
|
332
|
|
333
|
IF @@error<>0 GOTO ABORT;
|
334
|
FETCH NEXT FROM XmlDataMethod INTO @RECEIVE_ID,@RECEIVE_NAME,@REQ_PAY_REASON,@TOTAL_AMT,@REQ_PAY_TYPE,
|
335
|
@REQ_PAY_DESC,@REQ_PAY_ENTRIES,@ACC_NO, @ACC_NAME,@ISSUED_BY, @ISSUED_DT,@CURRENCY,@RATE,@CHECK_IN,@TYPE_TRANSFER, @BANKCODE_NAPAS, @BANKCODE, @BANKNAME, @SUB_ISSUED_BY, @RECEIVER_DEBIT
|
336
|
END
|
337
|
CLOSE XmlDataMethod;
|
338
|
DEALLOCATE XmlDataMethod;
|
339
|
|
340
|
--- INSERT THÔNG TIN DỊCH VỤ
|
341
|
DECLARE @hDocRecurring INT
|
342
|
EXEC sp_xml_preparedocument @hDocRecurring OUTPUT, @p_XMP_RECURRING;
|
343
|
|
344
|
IF(@p_IS_SEND_APPR = 'SEND')
|
345
|
BEGIN
|
346
|
IF(@p_REQ_PAY_AUTO_TYPE ='B')
|
347
|
BEGIN
|
348
|
IF(NOT EXISTS(SELECT * FROM OPENXML(@hDocRecurring, '/Root/XmlDataManufacturer', 2) WITH(REQ_PAY_AUTO_MANUFACTURER_ID VARCHAR(20))))
|
349
|
BEGIN
|
350
|
ROLLBACK TRANSACTION
|
351
|
SELECT '-1' Result, '' REQ_PAY_ID, N'Lưới Thông tin dịch vụ không được để trống' ErrorDesc
|
352
|
RETURN '-1'
|
353
|
END
|
354
|
END
|
355
|
END
|
356
|
|
357
|
DECLARE @REQ_PAY_AUTO_MANUFACTURER_ID VARCHAR(20), @SEVCODE VARCHAR(20), @SEVNAME NVARCHAR(255), @PRVCODE VARCHAR(20), @PRVNAME NVARCHAR(255), @ROUTETO VARCHAR(20), @TRANSACCOUNT VARCHAR(20), @TRANSACCOUNT_NAME VARCHAR(250),
|
358
|
@TRANS_GLCODE VARCHAR(20), @TRANS_GLNAME VARCHAR(250), @RECEIVE_GLCODE VARCHAR(20), @RECEIVE_GLNAME VARCHAR(250),
|
359
|
@CUSTOMER_ID VARCHAR(20), @CUSTOMER_CODE VARCHAR(20), @CUSTOMER_NAME NVARCHAR(255), @CUSTOMER_CODE_SYSTEM VARCHAR(20), @CUSTOMER_NAME_SYSTEM NVARCHAR(255), @CUSTOMER_ADDRESS_SYSTEM NVARCHAR(255), @IS_REGISTER VARCHAR(2), @IS_VALID VARCHAR(2),
|
360
|
@BILLCODE VARCHAR(50), @BILLALIAS NVARCHAR(255), @BILLID VARCHAR(20), @BILLTIME VARCHAR(20), @IS_CHECKED VARCHAR(1)
|
361
|
|
362
|
DECLARE XmlDataRecurring CURSOR LOCAL FOR SELECT * FROM OPENXML(@hDocRecurring, 'Root/XmlDataManufacturer',2)
|
363
|
WITH(REQ_PAY_AUTO_MANUFACTURER_ID VARCHAR(20), SEVCODE VARCHAR(20), SEVNAME NVARCHAR(255), PRVCODE VARCHAR(20), PRVNAME NVARCHAR(255), ROUTETO VARCHAR(20), TRANSACCOUNT VARCHAR(20), TRANSACCOUNT_NAME VARCHAR(250), TRANS_GLCODE VARCHAR(20), TRANS_GLNAME VARCHAR(250),
|
364
|
RECEIVE_GLCODE VARCHAR(20), RECEIVE_GLNAME VARCHAR(250), CUSTOMER_ID VARCHAR(20), CUSTOMER_CODE VARCHAR(20), CUSTOMER_NAME NVARCHAR(255), CUSTOMER_CODE_SYSTEM VARCHAR(20), CUSTOMER_NAME_SYSTEM NVARCHAR(255), CUSTOMER_ADDRESS_SYSTEM NVARCHAR(255),
|
365
|
IS_REGISTER VARCHAR(2), IS_VALID VARCHAR(2), BILLCODE VARCHAR(50), BILLALIAS NVARCHAR(255), BILLID VARCHAR(20), BILLTIME VARCHAR(20), IS_CHECKED VARCHAR(1))
|
366
|
OPEN XmlDataRecurring
|
367
|
|
368
|
DELETE FROM TR_REQ_PAY_AUTO_RECURRING WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
|
369
|
DECLARE @INDEX_AUTO_RECURRING INT = 0
|
370
|
FETCH NEXT FROM XmlDataRecurring INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @SEVCODE, @SEVNAME, @PRVCODE, @PRVNAME, @ROUTETO, @TRANSACCOUNT, @TRANSACCOUNT_NAME, @TRANS_GLCODE, @TRANS_GLNAME, @RECEIVE_GLCODE, @RECEIVE_GLNAME,
|
371
|
@CUSTOMER_ID, @CUSTOMER_CODE, @CUSTOMER_NAME, @CUSTOMER_CODE_SYSTEM, @CUSTOMER_NAME_SYSTEM, @CUSTOMER_ADDRESS_SYSTEM, @IS_REGISTER, @IS_VALID, @BILLCODE, @BILLALIAS, @BILLID, @BILLTIME, @IS_CHECKED
|
372
|
WHILE @@fetch_status=0
|
373
|
BEGIN
|
374
|
-- BEGIN VALIDATE
|
375
|
IF(@p_IS_SEND_APPR ='SEND')
|
376
|
BEGIN
|
377
|
SET @INDEX_AUTO_RECURRING = @INDEX_AUTO_RECURRING + 1
|
378
|
|
379
|
IF(ISNULL(@IS_CHECKED, '') = '')
|
380
|
BEGIN
|
381
|
ROLLBACK TRANSACTION
|
382
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin dịch vụ, dòng ' + CONVERT(VARCHAR(5),@INDEX_AUTO_RECURRING)+N', cột kiểm tra thông tin: Chưa nhấn nút kiểm tra thông tin! Bạn cần kiểm tra thông tin trước khi gửi phê duyệt' ErrorDesc
|
383
|
RETURN '-1'
|
384
|
END
|
385
|
IF(ISNULL(@CUSTOMER_CODE_SYSTEM, '') = '')
|
386
|
BEGIN
|
387
|
ROLLBACK TRANSACTION
|
388
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin dịch vụ, dòng ' + CONVERT(VARCHAR(5),@INDEX_AUTO_RECURRING)+N', Mã khách hàng tại NCC sai, hoặc quá trình kiểm tra thông tin gặp sự cố! Vui lòng kiểm tra lại mã khách hàng tại NCC trước khi gửi phê duyệt' ErrorDesc
|
389
|
RETURN '-1'
|
390
|
END
|
391
|
IF(ISNULL(@CUSTOMER_CODE_SYSTEM, '') <> ISNULL(@BILLCODE, ''))
|
392
|
BEGIN
|
393
|
ROLLBACK TRANSACTION
|
394
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin dịch vụ, dòng ' + CONVERT(VARCHAR(5),@INDEX_AUTO_RECURRING)+N', Mã khách hàng tại NCC không giống với Mã khách hàng tại NCC(Hệ thống)! Vui lòng kiểm tra lại thông tin trước khi gửi phê duyệt' ErrorDesc
|
395
|
RETURN '-1'
|
396
|
END
|
397
|
IF(ISNULL(@IS_REGISTER, '') = '1')
|
398
|
BEGIN
|
399
|
ROLLBACK TRANSACTION
|
400
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Thông tin dịch vụ, dòng ' + CONVERT(VARCHAR(5),@INDEX_AUTO_RECURRING)+N', Mã khách hàng tại NCC đã được đăng ký thanh toán tự động trước đó.' ErrorDesc
|
401
|
RETURN '-1'
|
402
|
END
|
403
|
END
|
404
|
-- END VALIDATE
|
405
|
|
406
|
DECLARE @REQ_PAY_AUTO_RECURRING_ID VARCHAR(20)
|
407
|
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_AUTO_RECURRING', @REQ_PAY_AUTO_RECURRING_ID OUT;
|
408
|
IF @REQ_PAY_AUTO_RECURRING_ID = '' OR @REQ_PAY_AUTO_RECURRING_ID IS NULL GOTO ABORT;
|
409
|
|
410
|
INSERT INTO TR_REQ_PAY_AUTO_RECURRING(REQ_PAY_AUTO_RECURRING_ID, REQ_PAY_AUTO_MANUFACTURER_ID, REQ_PAY_AUTO_ID, SEVCODE, SEVNAME, PRVCODE, PRVNAME, ROUTETO, TRANSACCOUNT, TRANSACCOUNT_NAME, TRANS_GLCODE, TRANS_GLNAME, RECEIVE_GLCODE, RECEIVE_GLNAME,
|
411
|
CUSTOMER_CODE, CUSTOMER_NAME, CUSTOMER_CODE_SYSTEM, CUSTOMER_NAME_SYSTEM, CUSTOMER_ADDRESS_SYSTEM, IS_REGISTER, IS_VALID, MAKER_ID, CREATE_DT, RECORD_STATUS, BILLCODE, BILLALIAS, BILLID, BILLTIME, IS_CHECKED)
|
412
|
VALUES (@REQ_PAY_AUTO_RECURRING_ID, @REQ_PAY_AUTO_MANUFACTURER_ID, @p_REQ_PAY_AUTO_ID, @SEVCODE, @SEVNAME, @PRVCODE, @PRVNAME, @ROUTETO, @TRANSACCOUNT, @TRANSACCOUNT_NAME, @TRANS_GLCODE, @TRANS_GLNAME, @RECEIVE_GLCODE, @RECEIVE_GLNAME,
|
413
|
@CUSTOMER_CODE, @CUSTOMER_NAME, @CUSTOMER_CODE_SYSTEM, @CUSTOMER_NAME_SYSTEM, @CUSTOMER_ADDRESS_SYSTEM, @IS_REGISTER, @IS_VALID, @p_MAKER_ID, GETDATE(), '1', @BILLCODE, @BILLALIAS, @BILLID, CONVERT(DATE, @BILLTIME, 103), @IS_CHECKED)
|
414
|
|
415
|
IF @@error<>0 GOTO ABORT;
|
416
|
FETCH NEXT FROM XmlDataRecurring INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @SEVCODE, @SEVNAME, @PRVCODE, @PRVNAME, @ROUTETO, @TRANSACCOUNT, @TRANSACCOUNT_NAME, @TRANS_GLCODE, @TRANS_GLNAME, @RECEIVE_GLCODE, @RECEIVE_GLNAME,
|
417
|
@CUSTOMER_ID, @CUSTOMER_CODE, @CUSTOMER_NAME, @CUSTOMER_CODE_SYSTEM, @CUSTOMER_NAME_SYSTEM, @CUSTOMER_ADDRESS_SYSTEM, @IS_REGISTER, @IS_VALID, @BILLCODE, @BILLALIAS, @BILLID, @BILLTIME, @IS_CHECKED
|
418
|
END
|
419
|
CLOSE XmlDataRecurring;
|
420
|
DEALLOCATE XmlDataRecurring;
|
421
|
|
422
|
--- INSERT PHÂN CHIA
|
423
|
DECLARE @INDEX_BUDGET_ALLOCATION INT = 0;
|
424
|
DECLARE @hDocBudgetAllocation INT
|
425
|
EXEC sp_xml_preparedocument @hDocBudgetAllocation OUTPUT, @p_XMP_BUDGET_ALLOCATION;
|
426
|
|
427
|
DECLARE @BRANCH_ID VARCHAR(20), @DEP_ID NVARCHAR(255), @TYPE_BUDGET_ALLOCAITON VARCHAR(20), @PERCENT_BUDGET_ALLOCAITON DECIMAL(18,2), @AMT_BUDGET_ALLOCAITON DECIMAL(18,2)
|
428
|
|
429
|
DECLARE XmlDataBudgetAllocation CURSOR FOR SELECT * FROM OPENXML(@hDocBudgetAllocation, 'Root/XmlDataBudgetAllocation',2)
|
430
|
WITH(REQ_PAY_AUTO_MANUFACTURER_ID VARCHAR(20), ACC_NO VARCHAR(20), ACC_NAME NVARCHAR(255), BRANCH_ID VARCHAR(20), DEP_ID NVARCHAR(255), TYPE_BUDGET_ALLOCAITON VARCHAR(20), PERCENT_BUDGET_ALLOCAITON DECIMAL(18,2), AMT_BUDGET_ALLOCAITON DECIMAL(18,2))
|
431
|
OPEN XmlDataBudgetAllocation
|
432
|
|
433
|
DELETE FROM TR_REQ_PAY_AUTO_BUDGET_ALLOCATION WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
|
434
|
FETCH NEXT FROM XmlDataBudgetAllocation INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON
|
435
|
WHILE @@fetch_status=0
|
436
|
BEGIN
|
437
|
SET @INDEX_BUDGET_ALLOCATION = @INDEX_BUDGET_ALLOCATION + 1;
|
438
|
IF(@p_IS_SEND_APPR ='SEND')
|
439
|
BEGIN
|
440
|
IF(ISNULL(@ACC_NO, '') = '')
|
441
|
BEGIN
|
442
|
ROLLBACK TRANSACTION
|
443
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION)+N': Số tài khoản không được để trống.' ErrorDesc
|
444
|
RETURN '-1'
|
445
|
END
|
446
|
IF(ISNULL(@ACC_NAME, '') = '')
|
447
|
BEGIN
|
448
|
ROLLBACK TRANSACTION
|
449
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION)+N': Tên tài khoản không được để trống.' ErrorDesc
|
450
|
RETURN '-1'
|
451
|
END
|
452
|
IF(ISNULL(@BRANCH_ID, '') = '')
|
453
|
BEGIN
|
454
|
ROLLBACK TRANSACTION
|
455
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION)+N': Đơn vị không được để trống.' ErrorDesc
|
456
|
RETURN '-1'
|
457
|
END
|
458
|
IF(ISNULL(@DEP_ID, '') = '')
|
459
|
BEGIN
|
460
|
ROLLBACK TRANSACTION
|
461
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION)+N': Phòng ban không được để trống.' ErrorDesc
|
462
|
RETURN '-1'
|
463
|
END
|
464
|
IF(ISNULL(@TYPE_BUDGET_ALLOCAITON, '') = '')
|
465
|
BEGIN
|
466
|
ROLLBACK TRANSACTION
|
467
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION)+N': Loại phân chia không được để trống.' ErrorDesc
|
468
|
RETURN '-1'
|
469
|
END
|
470
|
END
|
471
|
DECLARE @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID VARCHAR(20)
|
472
|
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_AUTO_ALLCOTION', @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID OUT;
|
473
|
IF @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID = '' OR @REQ_PAY_AUTO_BUDGET_ALLOCATION_ID IS NULL GOTO ABORT;
|
474
|
|
475
|
INSERT INTO TR_REQ_PAY_AUTO_BUDGET_ALLOCATION(REQ_PAY_AUTO_BUDGET_ALLOCATION_ID, REQ_PAY_AUTO_MANUFACTURER_ID, REQ_PAY_AUTO_ID, ACC_NO, ACC_NAME, BRANCH_ID, DEP_ID, TYPE_BUDGET_ALLOCAITON, PERCENT_BUDGET_ALLOCAITON, AMT_BUDGET_ALLOCAITON, MAKER_ID, CREATE_DT, RECORD_STATUS)
|
476
|
VALUES (@REQ_PAY_AUTO_BUDGET_ALLOCATION_ID, @REQ_PAY_AUTO_MANUFACTURER_ID, @p_REQ_PAY_AUTO_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON, @p_MAKER_ID, GETDATE(), '1')
|
477
|
|
478
|
IF @@error<>0 GOTO ABORT;
|
479
|
FETCH NEXT FROM XmlDataBudgetAllocation INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON
|
480
|
END
|
481
|
CLOSE XmlDataBudgetAllocation;
|
482
|
DEALLOCATE XmlDataBudgetAllocation;
|
483
|
|
484
|
--- INSERT PHÂN CHIA THUÊ TÀI SẢN
|
485
|
DECLARE @INDEX_BUDGET_ALLOCATION_TYPE_A INT = 0;
|
486
|
DECLARE @hDocBudgetAllocationTypeA INT
|
487
|
EXEC sp_xml_preparedocument @hDocBudgetAllocationTypeA OUTPUT, @p_XMP_BUDGET_ALLOCATION_TYPE_A;
|
488
|
|
489
|
DECLARE XmlDataBudgetAllocationTypeA CURSOR FOR SELECT * FROM OPENXML(@hDocBudgetAllocationTypeA, 'Root/XmlDataBudgetAllocation',2)
|
490
|
WITH(REQ_PAY_AUTO_MANUFACTURER_ID VARCHAR(20), ACC_NO VARCHAR(20), ACC_NAME NVARCHAR(255), BRANCH_ID VARCHAR(20), DEP_ID NVARCHAR(255), TYPE_BUDGET_ALLOCAITON VARCHAR(20), PERCENT_BUDGET_ALLOCAITON DECIMAL(18,2), AMT_BUDGET_ALLOCAITON DECIMAL(18,2))
|
491
|
OPEN XmlDataBudgetAllocationTypeA
|
492
|
|
493
|
DELETE FROM TR_REQ_PAY_AUTO_BUDGET_ALLOCATION WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
|
494
|
FETCH NEXT FROM XmlDataBudgetAllocationTypeA INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON
|
495
|
WHILE @@fetch_status=0
|
496
|
BEGIN
|
497
|
SET @INDEX_BUDGET_ALLOCATION_TYPE_A = @INDEX_BUDGET_ALLOCATION_TYPE_A + 1;
|
498
|
IF(@p_IS_SEND_APPR ='SEND')
|
499
|
BEGIN
|
500
|
IF(ISNULL(@ACC_NO, '') = '')
|
501
|
BEGIN
|
502
|
ROLLBACK TRANSACTION
|
503
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION_TYPE_A)+N': Số tài khoản không được để trống.' ErrorDesc
|
504
|
RETURN '-1'
|
505
|
END
|
506
|
IF(ISNULL(@ACC_NAME, '') = '')
|
507
|
BEGIN
|
508
|
ROLLBACK TRANSACTION
|
509
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION_TYPE_A)+N': Tên tài khoản không được để trống.' ErrorDesc
|
510
|
RETURN '-1'
|
511
|
END
|
512
|
IF(ISNULL(@BRANCH_ID, '') = '')
|
513
|
BEGIN
|
514
|
ROLLBACK TRANSACTION
|
515
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION_TYPE_A)+N': Đơn vị không được để trống.' ErrorDesc
|
516
|
RETURN '-1'
|
517
|
END
|
518
|
IF(ISNULL(@DEP_ID, '') = '')
|
519
|
BEGIN
|
520
|
ROLLBACK TRANSACTION
|
521
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION_TYPE_A)+N': Phòng ban không được để trống.' ErrorDesc
|
522
|
RETURN '-1'
|
523
|
END
|
524
|
IF(ISNULL(@TYPE_BUDGET_ALLOCAITON, '') = '')
|
525
|
BEGIN
|
526
|
ROLLBACK TRANSACTION
|
527
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lưới thông tin phân chia, dòng ' + CONVERT(VARCHAR(5),@INDEX_BUDGET_ALLOCATION_TYPE_A)+N': Loại phân chia không được để trống.' ErrorDesc
|
528
|
RETURN '-1'
|
529
|
END
|
530
|
END
|
531
|
DECLARE @REQ_PAY_AUTO_BUDGET_ALLOCATION_TYPE_A_ID VARCHAR(20)
|
532
|
EXEC SYS_CodeMasters_Gen 'TR_REQ_PAY_AUTO_ALLCOTION', @REQ_PAY_AUTO_BUDGET_ALLOCATION_TYPE_A_ID OUT;
|
533
|
IF @REQ_PAY_AUTO_BUDGET_ALLOCATION_TYPE_A_ID = '' OR @REQ_PAY_AUTO_BUDGET_ALLOCATION_TYPE_A_ID IS NULL GOTO ABORT;
|
534
|
|
535
|
INSERT INTO TR_REQ_PAY_AUTO_BUDGET_ALLOCATION(REQ_PAY_AUTO_BUDGET_ALLOCATION_ID, REQ_PAY_AUTO_MANUFACTURER_ID, REQ_PAY_AUTO_ID, ACC_NO, ACC_NAME, BRANCH_ID, DEP_ID, TYPE_BUDGET_ALLOCAITON, PERCENT_BUDGET_ALLOCAITON, AMT_BUDGET_ALLOCAITON, MAKER_ID, CREATE_DT, RECORD_STATUS)
|
536
|
VALUES (@REQ_PAY_AUTO_BUDGET_ALLOCATION_TYPE_A_ID, NULL, @p_REQ_PAY_AUTO_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON, @p_MAKER_ID, GETDATE(), '1')
|
537
|
|
538
|
IF @@error<>0 GOTO ABORT;
|
539
|
FETCH NEXT FROM XmlDataBudgetAllocationTypeA INTO @REQ_PAY_AUTO_MANUFACTURER_ID, @ACC_NO, @ACC_NAME, @BRANCH_ID, @DEP_ID, @TYPE_BUDGET_ALLOCAITON, @PERCENT_BUDGET_ALLOCAITON, @AMT_BUDGET_ALLOCAITON
|
540
|
END
|
541
|
CLOSE XmlDataBudgetAllocationTypeA;
|
542
|
DEALLOCATE XmlDataBudgetAllocationTypeA;
|
543
|
|
544
|
COMMIT TRANSACTION
|
545
|
|
546
|
IF(@p_IS_SEND_APPR ='SEND') -- KIEM TRA NEU 2 BIEN XML KHAC NULL TUC LA DANG TRONG QUA TRINH LUU NHAP
|
547
|
BEGIN
|
548
|
IF((SELECT COUNT(*) FROM TR_REQ_PAY_AUTO_RECURRING WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID) > 1)
|
549
|
BEGIN
|
550
|
SELECT '-1' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Gửi phê duyệt phiếu yêu cầu thanh toán tự động thất bại! Lưới thông tin dịch vụ hiện tại chỉ hỗ trợ chọn 1 dòng' ErrorDesc
|
551
|
RETURN '-1'
|
552
|
END
|
553
|
|
554
|
IF((SELECT COUNT(DISTINCT TYPE_BUDGET_ALLOCAITON) FROM TR_REQ_PAY_AUTO_BUDGET_ALLOCATION WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID) > 1)
|
555
|
BEGIN
|
556
|
SELECT '-1' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Gửi phê duyệt phiếu yêu cầu thanh toán tự động thất bại! Lưới thông tin phân chia, cột loại phân chia chỉ được chọn 1 loại phân chia' ErrorDesc
|
557
|
RETURN '-1'
|
558
|
END
|
559
|
IF ( (SELECT COUNT(*) FROM TR_REQ_PAY_AUTO_BUDGET_ALLOCATION WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID AND TYPE_BUDGET_ALLOCAITON = 'PERCENT') > 0
|
560
|
AND (SELECT SUM(ISNULL(PERCENT_BUDGET_ALLOCAITON, 0)) FROM TR_REQ_PAY_AUTO_BUDGET_ALLOCATION WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID) <> 100
|
561
|
)
|
562
|
BEGIN
|
563
|
SELECT '-1' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Gửi phê duyệt phiếu yêu cầu thanh toán tự động thất bại! Lưới thông tin phân chia, với loại phân chia là theo tỷ lệ, cột tổng tỷ lệ phân chia phải bằng 100' ErrorDesc
|
564
|
RETURN '-1'
|
565
|
END
|
566
|
/*
|
567
|
IF(1=1)
|
568
|
BEGIN
|
569
|
SELECT '-1' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Check data' ErrorDesc
|
570
|
RETURN '-1'
|
571
|
END
|
572
|
*/
|
573
|
UPDATE TR_REQ_PAYMENT_AUTO SET AUTH_STATUS = 'U', PROCESS = '0' WHERE REQ_PAY_AUTO_ID = @p_REQ_PAY_AUTO_ID
|
574
|
-- INSERT VAO PL_PROCESS
|
575
|
INSERT INTO dbo.PL_PROCESS(REQ_ID,PROCESS_ID,CHECKER_ID,APPROVE_DT,PROCESS_DESC,NOTES)
|
576
|
VALUES(@p_REQ_PAY_AUTO_ID,'SEND',@p_MAKER_ID,GETDATE(), N'Người tạo gửi phê duyệt',N'Gửi phê duyệt cấp đơn vị')
|
577
|
|
578
|
IF(EXISTS(SELECT * FROM TR_REQ_PAYMENT_AUTO WHERE (TRANSFER_USER_RECEIVE <> '' AND TRANSFER_USER_RECEIVE IS NOT NULL) AND REQ_PAY_AUTO_ID =@p_REQ_PAY_AUTO_ID))
|
579
|
BEGIN
|
580
|
SELECT '1' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Đơn vị gửi phiếu yêu cầu thanh toán tự động số: ' + ISNULL(@p_REQ_PAY_AUTO_CODE,'') + N' thành công. Vui lòng đợi cấp phê duyệt trung gian xác nhận phiếu' ErrorDesc
|
581
|
RETURN '1'
|
582
|
END
|
583
|
ELSE
|
584
|
BEGIN
|
585
|
SELECT '2' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_ID, N'Đơn vị gửi phiếu yêu cầu thanh toán tự động số: ' + ISNULL(@p_REQ_PAY_AUTO_CODE,'') + N' thành công. Vui lòng đợi trưởng đơn vị phê duyệt phiếu' ErrorDesc
|
586
|
RETURN '2'
|
587
|
END
|
588
|
END
|
589
|
|
590
|
SELECT '0' as Result, @p_REQ_PAY_AUTO_ID REQ_PAY_AUTO_ID, @p_REQ_PAY_AUTO_CODE AS REQ_PAY_AUTO_CODE, N'Thêm mới thành công' ErrorDesc
|
591
|
RETURN '0'
|
592
|
|
593
|
ABORT:
|
594
|
BEGIN
|
595
|
ROLLBACK TRANSACTION
|
596
|
SELECT '-1' as Result, '' REQ_PAY_ID,'' AS REQ_PAY_CODE, N'Lỗi không xác định' ErrorDesc
|
597
|
RETURN '-1'
|
598
|
End
|
599
|
|
600
|
GO
|
601
|
--21062023_secretkey
|