DBA Data[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;