[Home] [Help]
PACKAGE BODY: APPS.OE_ACCEPTANCE_PVT
Source
1 PACKAGE BODY OE_ACCEPTANCE_PVT AS
2 /* $Header: OEXVACCB.pls 120.5 2006/09/20 09:31:53 serla noship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'OE_ACCEPTANCE_PVT';
7
8 G_LINE_ID_TBL NUMBER_TYPE;
9 G_HEADER_ID_TBL NUMBER_TYPE;
10 G_REVREC_COMMENTS_TBL VARCHAR_2000_TYPE;
11 G_REVREC_REF_DOC_TBL VARCHAR_240_TYPE;
12 G_REVREC_SIGNATURE_TBL VARCHAR_240_TYPE;
13 G_REVREC_IMPLICIT_FLAG_TBL FLAG_TYPE;
14 G_REVREC_SIGNATURE_DATE_TBL DATE_TYPE;
15 G_ACCEPTED_BY_TBL NUMBER_TYPE;
16 G_ACCEPTED_QUANTITY_TBL NUMBER_TYPE;
17 G_FLOW_STATUS_TBL VARCHAR_30_TYPE;
18
19 PROCEDURE Reset_global_tbls IS
20 BEGIN
21 G_LINE_ID_TBL.delete;
22 G_HEADER_ID_TBL.delete;
23 G_REVREC_COMMENTS_TBL.delete;
24 G_REVREC_REF_DOC_TBL.delete;
25 G_REVREC_SIGNATURE_TBL.delete;
26 G_REVREC_IMPLICIT_FLAG_TBL.delete;
27 G_REVREC_SIGNATURE_DATE_TBL.delete;
28 G_ACCEPTED_BY_TBL.delete;
29 G_ACCEPTED_QUANTITY_TBL.delete;
30 G_FLOW_STATUS_TBL.delete;
31 END Reset_global_tbls;
32
33 PROCEDURE Process_Acceptance
34 ( p_request_tbl IN OUT NOCOPY OE_ORDER_PUB.request_tbl_type
35 ,p_index IN NUMBER DEFAULT 1
36 ,x_return_status OUT NOCOPY /* file.sql.39 change */ varchar2)
37 IS
38 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
39 --
40 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
41 --
42 BEGIN
43 IF l_debug_level > 0 THEN
44 oe_debug_pub.add('ENTERING OE_ACCEPTANCE_UTIL.Process_Acceptance' , 1);
45 END IF;
46
47 FOR i IN p_index..p_request_tbl.COUNT
48 LOOP
49 IF (p_request_tbl(i).processed = 'Y') OR
50 p_request_tbl(i).request_type NOT IN (OE_GLOBALS.G_ACCEPT_FULFILLMENT,OE_GLOBALS.G_REJECT_FULFILLMENT) THEN
51 GOTO END_LOOP;
52 END IF;
53 -- Initialize each request's return_status as 'S'. It will be set to 'E' when required.
54 p_request_tbl(i).return_status := FND_API.G_RET_STS_SUCCESS;
55 IF p_request_tbl(i).entity_code = 'HEADER' THEN
56
57 Build_Header_Acceptance_table(p_request_rec =>p_request_tbl(i)
58 ,x_return_status => l_return_status);
59
60 IF l_debug_level > 0 THEN
61 oe_debug_pub.add('sasi: p_request_rec return_status after Build_Header_Acceptance_table:'||p_request_tbl(i).return_status , 3);
62 END IF;
63
64 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
65 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
66 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
67 RAISE FND_API.G_EXC_ERROR;
68 END IF;
69 p_request_tbl(i).processed := 'Y';
70 ELSIF p_request_tbl(i).entity_code = 'LINE' THEN
71
72 Build_Line_Acceptance_table(p_request_rec => p_request_tbl(i)
73 , x_return_status => l_return_status);
74
75 IF l_debug_level > 0 THEN
76 oe_debug_pub.add('sasi: p_request_rec return_status after Build_Line_Acceptance_table:'||p_request_tbl(i).return_status , 3);
77 END IF;
78
79 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
80 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
81 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
82 RAISE FND_API.G_EXC_ERROR;
83 END IF;
84 p_request_tbl(i).processed := 'Y';
85 END IF;
86 << END_LOOP >> -- Label for requests that do not need to be processed
87 NULL;
88 END LOOP;
89
90 IF G_LINE_ID_TBL.count = 0 THEN
91
92 IF l_debug_level > 0 THEN
93 oe_debug_pub.add('NO ROWS to process' , 2 );
94 oe_debug_pub.add('EXITING OE_ACCEPTANCE_UTIL.Process_Acceptance' , 1);
95 END IF;
96 -- No lines are eligible for acceptance
97 FND_MESSAGE.set_name('ONT', 'ONT_ACCEPTANCE_NA');
98 RETURN;
99 END IF;
100
101 IF l_debug_level > 0 THEN
102 oe_debug_pub.add('IN OE_ACCEPTANCE_UTIL.Process_Acceptance - before bulk update' , 1);
103 END IF;
104
105 FORALL i in g_line_id_tbl.FIRST .. g_line_id_tbl.LAST
106 UPDATE oe_order_lines_all
107 SET revrec_comments = g_revrec_comments_tbl(i),
108 Revrec_reference_document = g_revrec_ref_doc_tbl(i),
109 Revrec_signature = g_revrec_signature_tbl(i),
110 Revrec_implicit_flag = g_revrec_implicit_flag_tbl(i),
111 Revrec_signature_date = g_revrec_signature_date_tbl(i),
112 Accepted_by = g_accepted_by_tbl(i),
113 Accepted_quantity = g_accepted_quantity_tbl(i)
114 WHERE line_id = g_line_id_tbl(i);
115
116 IF l_debug_level > 0 THEN
117 oe_debug_pub.add('IN OE_ACCEPTANCE_UTIL.Process_Acceptance - after bulk update' , 1);
118 END IF;
119
120 -- Progress workflow for each processed lines in a loop.
121 OE_ACCEPTANCE_PVT.Progress_Accepted_lines(l_return_status);
122
123 IF l_debug_level > 0 THEN
124 oe_debug_pub.add('IN OE_ACCEPTANCE_UTIL.Process_Acceptance-progress_accepted_lines return status:'|| l_return_status , 1);
125 END IF;
126
127 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
128 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
129 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
130 RAISE FND_API.G_EXC_ERROR;
131 END IF;
132
133 Reset_global_tbls;
134
135 EXCEPTION
136 WHEN FND_API.G_EXC_ERROR THEN
137 RAISE FND_API.G_EXC_ERROR;
138 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
139 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
140 WHEN OTHERS THEN
141 IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
142 THEN
143 OE_MSG_PUB.Add_Exc_Msg
144 ( G_PKG_NAME
145 , 'Process_Acceptance'
146 );
147 END IF;
148 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
149 END Process_Acceptance;
150
151 PROCEDURE Build_Header_Acceptance_table(p_request_rec IN OUT NOCOPY OE_ORDER_PUB.request_rec_type,
152 x_return_status OUT NOCOPY VARCHAR2)
153 IS
154 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
155 l_header_id NUMBER := p_request_rec.entity_id;
156 l_line_id NUMBER;
157 CURSOR order_lines is
158 SELECT line_id
159 FROM oe_order_lines_all
160 WHERE header_id = l_header_id
161 AND open_flag = 'Y'
162 AND flow_status_code in ('PRE-BILLING_ACCEPTANCE', 'POST-BILLING_ACCEPTANCE');
163 --
164 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
165 --
166 BEGIN
167
168 OPEN order_lines ;
169 LOOP
170 FETCH order_lines into l_line_id;
171 EXIT WHEN order_lines%NOTFOUND;
172
173 Build_Line_Acceptance_table(p_request_rec => p_request_rec
174 ,p_line_id => l_line_id
175 ,x_return_status => l_return_status);
176 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
177 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
178 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
179 RAISE FND_API.G_EXC_ERROR;
180 END IF;
181
182 END LOOP;
183
184 EXCEPTION
185 WHEN OTHERS THEN
186 IF l_debug_level > 0 THEN
187 oe_debug_pub.add(' Build_Header_Acceptance_table '|| SQLERRM , 1);
188 END IF;
189 x_return_status := l_return_status;
190
191 END Build_Header_Acceptance_table;
192
193
194 PROCEDURE Build_Line_Acceptance_table(p_request_rec IN OUT NOCOPY OE_ORDER_PUB.request_rec_type
195 ,p_line_id IN NUMBER DEFAULT NULL
196 ,x_return_status OUT NOCOPY VARCHAR2)
197 IS
198 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
199 l_line_id NUMBER := nvl(p_line_id, p_request_rec.entity_id);
200 l_header_id NUMBER;
201 l_item_type_code VARCHAR2(30);
202 l_top_model_line_id NUMBER;
203 l_flow_status_code VARCHAR2(30);
204 l_line_count NUMBER := 0;
205 l_notify_index NUMBER := NULL;
206 l_notify_status VARCHAR2(1);
207 l_fulfilled_quantity NUMBER;
208 l_ordered_quantity NUMBER;
209 l_shipped_quantity NUMBER;
210
211 CURSOR model_children is
212 SELECT line_id, fulfilled_quantity,shipped_quantity, ordered_quantity,header_id, flow_status_code
213 FROM oe_order_lines_all
214 WHERE header_id = l_header_id
215 AND open_flag = 'Y'
216 AND top_model_line_id = l_line_id;
217
218 CURSOR c_service_lines is
219 SELECT line_id, fulfilled_quantity, shipped_quantity, ordered_quantity, header_id, flow_status_code
220 FROM oe_order_lines_all
221 WHERE open_flag='Y'
222 AND service_reference_line_id = l_line_id;
223
224
225 --
226 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
227 --
228
229 BEGIN
230 IF l_line_id IS NOT NULL THEN
231
232 l_line_count := G_LINE_ID_TBL.COUNT;
233 -- changes for bug# 5232503
234 -- accept all lines sent by implicit program without any check for eligibility if system param is turned off
235 IF NVL(OE_SYS_PARAMETERS.VALUE('ENABLE_FULFILLMENT_ACCEPTANCE'), 'N') = 'N' THEN
236 SELECT header_id, item_type_code, top_model_line_id, fulfilled_quantity,
237 shipped_quantity, ordered_quantity, flow_status_code
238 INTO l_header_id, l_item_type_code, l_top_model_line_id, l_fulfilled_quantity,
239 l_shipped_quantity, l_ordered_quantity, l_flow_status_code
240 FROM oe_order_lines_all
241 WHERE line_id=l_line_id;
242
243 l_line_count := l_line_count + 1;
244 G_LINE_ID_TBL(l_line_count) := l_line_id;
245 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
246 G_ACCEPTED_QUANTITY_TBL(l_line_count) := nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,nvl(l_ordered_quantity,0)));
247 ELSE
248 G_ACCEPTED_QUANTITY_TBL(l_line_count) := 0;
249 END IF;
250 G_REVREC_COMMENTS_TBL(l_line_count) := p_request_rec.param1;
251 G_REVREC_SIGNATURE_TBL(l_line_count) := p_request_rec.param2;
252 G_REVREC_REF_DOC_TBL(l_line_count) := p_request_rec.param3;
253 G_REVREC_IMPLICIT_FLAG_TBL(l_line_count) := p_request_rec.param4;
254 G_HEADER_ID_TBL(l_line_count) := l_header_id;
255 G_REVREC_SIGNATURE_DATE_TBL(l_line_count) := nvl(p_request_rec.date_param1,sysdate);
256 G_ACCEPTED_BY_TBL(l_line_count) := FND_GLOBAL.USER_ID;
257 G_FLOW_STATUS_TBL(l_line_count) := l_flow_status_code;
258
259 IF OE_GLOBALS.G_UPDATE_GLOBAL_PICTURE = 'Y' THEN
260 OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists =>False,
261 p_line_id => l_line_id,
262 x_index => l_notify_index,
263 x_return_status => l_notify_status);
264
265 IF (l_notify_status <> FND_API.G_RET_STS_SUCCESS) THEN
266 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
267 END IF;
268
269 IF l_notify_index IS NOT NULL THEN
270 OE_ORDER_UTIL.g_line_tbl(l_notify_index) := OE_ORDER_UTIL.g_old_line_tbl(l_notify_index);
271 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
272 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=
273 nvl(l_fulfilled_quantity,nvl(l_shipped_quantity, nvl(l_ordered_quantity,0)));
274 ELSE
275 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=0;
276 END IF;
277 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_comments := p_request_rec.param1;
278 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature := p_request_rec.param2;
279 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_reference_document := p_request_rec.param3;
280 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_implicit_flag := p_request_rec.param4;
281 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature_date := nvl(p_request_rec.date_param1,sysdate);
282 OE_ORDER_UTIL.g_line_tbl(l_notify_index).ACCEPTED_BY := FND_GLOBAL.USER_ID;
283 END IF;
284
285 END IF;
286 ELSE -- system param on
287
288 IF OE_ACCEPTANCE_UTIL.Customer_Acceptance_Eligible(l_line_id) THEN
289
290 SELECT header_id, item_type_code, top_model_line_id, fulfilled_quantity,
291 shipped_quantity, ordered_quantity, flow_status_code
292 INTO l_header_id, l_item_type_code, l_top_model_line_id, l_fulfilled_quantity,
293 l_shipped_quantity, l_ordered_quantity, l_flow_status_code
294 FROM oe_order_lines_all
295 WHERE line_id=l_line_id;
296
297
298 --Entering children lines in to global tbls
299 IF (l_item_type_code = 'MODEL' OR l_item_type_code='KIT') AND
300 ( l_top_model_line_id IS NOT NULL AND l_top_model_line_id = l_line_id) THEN
301
302 OPEN model_children ;
303 LOOP
304 FETCH model_children into l_line_id, l_fulfilled_quantity, l_shipped_quantity,
305 l_ordered_quantity, l_header_id, l_flow_status_code;
306 EXIT when model_children%NOTFOUND;
307 l_line_count := l_line_count+1;
308 G_LINE_ID_TBL(l_line_count) := l_line_id;
309 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
310 G_ACCEPTED_QUANTITY_TBL(l_line_count) := nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,
311 nvl(l_ordered_quantity,0)));
312 ELSE
313 G_ACCEPTED_QUANTITY_TBL(l_line_count) := 0;
314 END IF;
315 G_REVREC_COMMENTS_TBL(l_line_count) := p_request_rec.param1;
316 G_REVREC_SIGNATURE_TBL(l_line_count) := p_request_rec.param2;
317 G_REVREC_REF_DOC_TBL(l_line_count) := p_request_rec.param3;
318 G_REVREC_IMPLICIT_FLAG_TBL(l_line_count) := p_request_rec.param4;
319 G_HEADER_ID_TBL(l_line_count) := l_header_id;
320 G_REVREC_SIGNATURE_DATE_TBL(l_line_count) := nvl(p_request_rec.date_param1,sysdate);
321 G_ACCEPTED_BY_TBL(l_line_count) := FND_GLOBAL.USER_ID;
322 G_FLOW_STATUS_TBL(l_line_count) := l_flow_status_code;
323
324 IF OE_GLOBALS.G_UPDATE_GLOBAL_PICTURE = 'Y' THEN
325 OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists =>False,
326 p_line_id => l_line_id,
327 x_index => l_notify_index,
328 x_return_status => l_notify_status);
329
330 IF (l_notify_status <> FND_API.G_RET_STS_SUCCESS) THEN
331 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
332 END IF;
333
334 IF l_notify_index IS NOT NULL THEN
335 OE_ORDER_UTIL.g_line_tbl(l_notify_index) := OE_ORDER_UTIL.g_old_line_tbl(l_notify_index);
336 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
337 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=
338 nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,nvl(l_ordered_quantity,0)));
339 ELSE
340 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=0;
341 END IF;
342 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_comments := p_request_rec.param1;
343 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature := p_request_rec.param2;
344 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_reference_document := p_request_rec.param3;
345 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_implicit_flag := p_request_rec.param4;
346 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature_date := nvl(p_request_rec.date_param1,sysdate);
347 OE_ORDER_UTIL.g_line_tbl(l_notify_index).ACCEPTED_BY := FND_GLOBAL.USER_ID;
348 END IF;
349 END IF;
350
351 OPEN c_service_lines ;
352 LOOP
353 FETCH c_service_lines into l_line_id, l_fulfilled_quantity, l_shipped_quantity,
354 l_ordered_quantity, l_header_id, l_flow_status_code;
355 EXIT when c_service_lines%NOTFOUND;
356
357 l_line_count := l_line_count + 1;
358 G_LINE_ID_TBL(l_line_count) := l_line_id;
359 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
360 G_ACCEPTED_QUANTITY_TBL(l_line_count) := nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,nvl(l_ordered_quantity,0)));
361 ELSE
362 G_ACCEPTED_QUANTITY_TBL(l_line_count) := 0;
363 END IF;
364 G_REVREC_COMMENTS_TBL(l_line_count) := p_request_rec.param1;
365 G_REVREC_SIGNATURE_TBL(l_line_count) := p_request_rec.param2;
366 G_REVREC_REF_DOC_TBL(l_line_count) := p_request_rec.param3;
367 G_REVREC_IMPLICIT_FLAG_TBL(l_line_count) := p_request_rec.param4;
368 G_HEADER_ID_TBL(l_line_count) := l_header_id;
369 G_REVREC_SIGNATURE_DATE_TBL(l_line_count) := nvl(p_request_rec.date_param1,sysdate);
370 G_ACCEPTED_BY_TBL(l_line_count) := FND_GLOBAL.USER_ID;
371 G_FLOW_STATUS_TBL(l_line_count) := l_flow_status_code;
372
373 IF OE_GLOBALS.G_UPDATE_GLOBAL_PICTURE = 'Y' THEN
374 OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists =>False,
375 p_line_id => l_line_id,
376 x_index => l_notify_index,
377 x_return_status => l_notify_status);
378
379 IF (l_notify_status <> FND_API.G_RET_STS_SUCCESS) THEN
380 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
381 END IF;
382
383 IF l_notify_index IS NOT NULL THEN
384 OE_ORDER_UTIL.g_line_tbl(l_notify_index) := OE_ORDER_UTIL.g_old_line_tbl(l_notify_index);
385 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
386 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=
387 nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,nvl(l_ordered_quantity,0)));
388 ELSE
389 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=0;
390 END IF;
391 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_comments := p_request_rec.param1;
392 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature := p_request_rec.param2;
393 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_reference_document := p_request_rec.param3;
394 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_implicit_flag := p_request_rec.param4;
395 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature_date := nvl(p_request_rec.date_param1,sysdate);
396 OE_ORDER_UTIL.g_line_tbl(l_notify_index).ACCEPTED_BY := FND_GLOBAL.USER_ID;
397 END IF;
398 END IF;
399 END LOOP;
400 close c_service_lines;
401 END LOOP;
402 ELSE --standard lines
403 l_line_count := l_line_count + 1;
404 G_LINE_ID_TBL(l_line_count) := l_line_id;
405 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
406 G_ACCEPTED_QUANTITY_TBL(l_line_count) := nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,
407 nvl(l_ordered_quantity,0)));
408 ELSE
409 G_ACCEPTED_QUANTITY_TBL(l_line_count) := 0;
410 END IF;
411 G_REVREC_COMMENTS_TBL(l_line_count) := p_request_rec.param1;
412 G_REVREC_SIGNATURE_TBL(l_line_count) := p_request_rec.param2;
413 G_REVREC_REF_DOC_TBL(l_line_count) := p_request_rec.param3;
414 G_REVREC_IMPLICIT_FLAG_TBL(l_line_count) := p_request_rec.param4;
415 G_HEADER_ID_TBL(l_line_count) := l_header_id;
416 G_REVREC_SIGNATURE_DATE_TBL(l_line_count) := nvl(p_request_rec.date_param1,sysdate);
417 G_ACCEPTED_BY_TBL(l_line_count) := FND_GLOBAL.USER_ID;
418 G_FLOW_STATUS_TBL(l_line_count) := l_flow_status_code;
419
420 IF OE_GLOBALS.G_UPDATE_GLOBAL_PICTURE = 'Y' THEN
421 OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists =>False,
422 p_line_id => l_line_id,
423 x_index => l_notify_index,
424 x_return_status => l_notify_status);
425
426 IF (l_notify_status <> FND_API.G_RET_STS_SUCCESS) THEN
427 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
428 END IF;
429
430 IF l_notify_index IS NOT NULL THEN
431 OE_ORDER_UTIL.g_line_tbl(l_notify_index) := OE_ORDER_UTIL.g_old_line_tbl(l_notify_index);
432 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
433 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=
434 nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,
435 nvl(l_ordered_quantity,0)));
436 ELSE
437 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=0;
438 END IF;
439 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_comments := p_request_rec.param1;
440 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature := p_request_rec.param2;
441 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_reference_document := p_request_rec.param3;
442 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_implicit_flag := p_request_rec.param4;
443 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature_date := nvl(p_request_rec.date_param1,sysdate);
444 OE_ORDER_UTIL.g_line_tbl(l_notify_index).ACCEPTED_BY := FND_GLOBAL.USER_ID;
445 END IF;
446
447 END IF;
448 --Entering service lines for parent line
449 OPEN c_service_lines ;
450 LOOP
451 FETCH c_service_lines into l_line_id, l_fulfilled_quantity, l_shipped_quantity, l_ordered_quantity,
452 l_header_id, l_flow_status_code;
453 EXIT when c_service_lines%NOTFOUND;
454 l_line_count := l_line_count + 1;
455 G_LINE_ID_TBL(l_line_count) := l_line_id;
456 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
457 G_ACCEPTED_QUANTITY_TBL(l_line_count):= nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,nvl(l_ordered_quantity,0)));
458 ELSE
459 G_ACCEPTED_QUANTITY_TBL(l_line_count) := 0;
460 END IF;
461 G_REVREC_COMMENTS_TBL(l_line_count) := p_request_rec.param1;
462 G_REVREC_SIGNATURE_TBL(l_line_count) := p_request_rec.param2;
463 G_REVREC_REF_DOC_TBL(l_line_count) := p_request_rec.param3;
464 G_REVREC_IMPLICIT_FLAG_TBL(l_line_count) := p_request_rec.param4;
465 G_HEADER_ID_TBL(l_line_count) := l_header_id;
466 G_REVREC_SIGNATURE_DATE_TBL(l_line_count) := nvl(p_request_rec.date_param1,sysdate);
467 G_ACCEPTED_BY_TBL(l_line_count) := FND_GLOBAL.USER_ID;
468 G_FLOW_STATUS_TBL(l_line_count) := l_flow_status_code;
469
470 IF OE_GLOBALS.G_UPDATE_GLOBAL_PICTURE = 'Y' THEN
471 OE_ORDER_UTIL.Update_Global_Picture(p_Upd_New_Rec_If_Exists =>False,
472 p_line_id => l_line_id,
473 x_index => l_notify_index,
474 x_return_status => l_notify_status);
475
476 IF (l_notify_status <> FND_API.G_RET_STS_SUCCESS) THEN
477 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
478 END IF;
479
480 IF l_notify_index IS NOT NULL THEN
481 OE_ORDER_UTIL.g_line_tbl(l_notify_index) := OE_ORDER_UTIL.g_old_line_tbl(l_notify_index);
482 IF p_request_rec.request_type = OE_GLOBALS.G_ACCEPT_FULFILLMENT THEN
483 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=
484 nvl(l_fulfilled_quantity,nvl(l_shipped_quantity,nvl(l_ordered_quantity,0)));
485 ELSE
486 OE_ORDER_UTIL.g_line_tbl(l_notify_index).accepted_quantity :=0;
487 END IF;
488 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_comments := p_request_rec.param1;
489 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature := p_request_rec.param2;
490 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_reference_document := p_request_rec.param3;
491 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_implicit_flag := p_request_rec.param4;
492 OE_ORDER_UTIL.g_line_tbl(l_notify_index).revrec_signature_date := nvl(p_request_rec.date_param1,sysdate);
493 OE_ORDER_UTIL.g_line_tbl(l_notify_index).ACCEPTED_BY := FND_GLOBAL.USER_ID;
494
495 END IF;
496 END IF;
497 END LOOP;
498 CLOSE c_service_lines;
499 END IF;
500 ELSE
501 IF l_debug_level > 0 THEN
502 OE_DEBUG_PUB.Add('Acceptance not allowed for this line. setting retun status of request_rec to E:'||l_line_id);
503 END IF;
504 p_request_rec.return_status := FND_API.G_RET_STS_ERROR;
505 END IF;
506 END IF; -- sys param check
507 END IF;
508 EXCEPTION
509 WHEN OTHERS THEN
510 IF l_debug_level > 0 THEN
511 oe_debug_pub.add('Build_Line_Acceptance_table '|| SQLERRM , 1);
512 END IF;
513 x_return_status := l_return_status;
514
515 END Build_Line_Acceptance_table;
516
517 PROCEDURE Progress_Accepted_lines
518 (x_return_status OUT NOCOPY Varchar2)
519 IS
520 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
521 l_msg_count NUMBER;
522 l_msg_data VARCHAR2(2000);
523 l_line_flex_rec ar_deferral_reasons_grp.line_flex_rec;
524 --
525 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
526 --
527 BEGIN
528
529 IF l_debug_level > 0 THEN
530 oe_debug_pub.add('ENTERING Progress_ Accepted_Lines' , 1);
531 END IF;
532
533 FOR i IN 1..g_line_id_tbl.count LOOP
534 IF l_debug_level > 0 THEN
535 oe_debug_pub.add('Processing line_id:'||g_line_id_tbl(i));
536 END IF;
537 IF g_flow_status_tbl(i) = 'PRE-BILLING_ACCEPTANCE' THEN
538 BEGIN
539 WF_ENGINE.CompleteActivityInternalName(OE_GLOBALS.G_WFI_LIN, g_line_id_tbl(i), 'INVOICE_PENDING_ACCEPTANCE' , 'COMPLETE');
540 EXCEPTION
541 WHEN OTHERS THEN
542 IF l_debug_level > 0 THEN
543 oe_debug_pub.add('error progressing INVOICE_PENDING_ACCEPTANCE for line_id='||g_line_id_tbl(i)||sqlerrm, 1);
544 END IF;
545 null;
546 END;
547 ELSIF g_flow_status_tbl(i) = 'POST-BILLING_ACCEPTANCE' THEN -- pending at close line'
548 BEGIN
549 WF_ENGINE.CompleteActivityInternalName(OE_GLOBALS.G_WFI_LIN, g_line_id_tbl(i), 'CLOSE_PENDING_ACCEPTANCE', 'COMPLETE');
550 EXCEPTION
551 WHEN OTHERS THEN
552 IF l_debug_level > 0 THEN
553 oe_debug_pub.add('error progressing CLOSE_PENDING_ACCEPTANCE for line_id='||g_line_id_tbl(i)||sqlerrm, 1);
554 END IF;
555 null;
556 END;
557 END IF;
558 --AR should be notified only for post-billing acceptance and not for rejection.(i.e. if accepted_quantity=0)
559 IF g_accepted_quantity_tbl(i) is not null and g_accepted_quantity_tbl(i) <>0 THEN
560 OE_AR_Acceptance_GRP.Get_interface_attributes
561 ( p_line_id => g_line_id_tbl(i)
562 , x_line_flex_rec => l_line_flex_rec
563 , x_return_status => l_return_status
564 , x_msg_count => l_msg_count
565 , x_msg_data => l_msg_data
566 );
567
568 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
569 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
570 -- no need to raise if the info cannot be derived. just do not call AR.
571 --ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
572 -- RAISE FND_API.G_EXC_ERROR;
573 END IF;
574
575 IF l_line_flex_rec.interface_line_attribute6 IS NOT NULL THEN
576 IF l_debug_level > 0 THEN
577 oe_debug_pub.add('Calling ar_deferral_reasons_grp.record_acceptance');
578 END IF;
579 ar_deferral_reasons_grp.record_acceptance (
580 p_api_version => 1.0,
581 p_order_line => l_line_flex_rec,
582 x_return_status => l_return_status ,
583 x_msg_count =>l_msg_count,
584 x_msg_data => l_msg_data );
585
586 IF l_debug_level > 0 THEN
587 oe_debug_pub.add('return status from AR api '||l_return_status);
588 END IF;
589
590 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
591 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
592 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
593 RAISE FND_API.G_EXC_ERROR;
594 END IF;
595 END IF;
596
597 END IF;
598 END LOOP;
599 EXCEPTION
600 WHEN OTHERS THEN
601 IF l_debug_level > 0 THEN
602 oe_debug_pub.add('Progress_ Accepted_Lines '|| SQLERRM , 1);
603 END IF;
604 x_return_status := l_return_status;
605 END Progress_Accepted_lines;
606
607 END OE_ACCEPTANCE_PVT;