DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_OE_MULTI_LINE_SCREDIT

Source


1 PACKAGE BODY OE_OE_Multi_Line_Scredit AS
2 /* $Header: OEXMLSCB.pls 120.1.12000000.2 2007/07/27 08:25:08 cpati ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_OE_Multi_Line_Scredit';
7 
8 --  Global variables holding cached record.
9 
10 g_Line_Multi_Scredit_Tbl      Line_Multi_SCREDIT_Tbl_Type;
11 g_Line_Multi_Scredit_Count    Number := 0;
12 g_Multi_MSG_Tbl               OE_DEBUG_PUB.Debug_Tbl_Type;
13 G_Multi_Msg_count             Number := 0;
14 G_MULTI_MSG_Index             Number := 0;
15 
16 --  Forward declaration of procedures maintaining entity record cache.
17 
18 Function Get_Multi_Errors
19    (p_start_with_first Varchar2 default FND_API.G_TRUE
20    ) Return Varchar2 IS
21    --
22    l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
23    --
24 Begin
25    if p_start_with_first = FND_API.G_TRUE
26       then G_MULTI_MSG_INDEX := 1;
27    else
28           G_MULTI_MSG_INDEX := G_Multi_MSG_Index + 1;
29    end if;
30    if G_MULTI_MSG_INDEX > G_MULTI_MSG_COUNT then
31       Return NULL;
32    else
33       Return(G_MULTI_MSG_TBL(g_multi_msg_index));
34    end if;
35 End Get_Multi_Errors;
36 
37 Procedure add_multi_errors(p_msg Varchar2)
38 IS
39 --
40 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
41 --
42 Begin
43   if p_msg is not null then
44      g_multi_msg_count := g_multi_msg_count + 1;
45      g_multi_msg_tbl(g_multi_msg_count) := p_msg;
46   end if;
47 END add_multi_errors;
48 
49 Procedure Copy_Errors_Multi_Msg( p_Line_id in number,
50                                  p_msg_count in Number) IS
51 Cursor C_Line_info( p_Line_id number) IS
52        select 'Following Errors Have occured for Line, (Line,Shipment) '
53              || to_char(line_number) || ',' || to_char(shipment_number)
54        from OE_ORDER_LineS
55        where Line_id = p_Line_id;
56 l_line_info varchar2(500);
57 I number;
58 --
59 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
60 --
61 Begin
62    -- open c_line_info(p_Line_id);
63    -- fetch c_line_info
64      -- into l_line_info;
65    -- close c_line_info;
66    -- add_multi_errors(l_line_info);
67 
68  -- for I in 1..p_msg_count loop
69      -- add_multi_errors(oe_msg_pub.get(I,FND_API.G_FALSE));
70  -- end loop;
71 /*for I in 1..p_msg_count loop
72      oe_msg_pub.add_with_context(
73          oe_msg_pub.get(I,FND_API.G_FALSE),
74 OE_GLOBALS.g_entity_line,to_char(p_line_id));
75  end loop;
76 */
77 null;
78 
79 
80 End Copy_errors_multi_msg;
81 
82 /* Replace credit type : R  - Revenue
83                          NR - Non Revenue
84                          B  - Both Revenue and Non-Revenue
85 */
86 PROCEDURE Replace_Line_Scredit
87 ( p_Line_ID              IN  Number
88   ,p_replace_credit_type IN  Varchar2
89 ,p_Return_Status OUT NOCOPY Varchar2
90 
91 ,p_msg_count OUT NOCOPY NUMBER
92 
93 ,p_msg_data OUT NOCOPY Varchar2
94 
95 )
96 IS
97 l_Line_Scredit_rec            OE_Order_PUB.Line_Scredit_Rec_Type;
98 l_old_Line_Scredit_rec        OE_Order_PUB.Line_Scredit_Rec_Type;
99 l_Line_Scredit_tbl            OE_Order_PUB.Line_Scredit_Tbl_Type;
100 l_old_Line_Scredit_tbl        OE_Order_PUB.Line_Scredit_Tbl_Type;
101 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
102 l_return_status               Varchar2(30);
103 l_x_header_rec                OE_Order_PUB.Header_Rec_Type;
104 l_x_Header_Adj_rec            OE_Order_PUB.Header_Adj_Rec_Type;
105 l_x_Header_Adj_tbl            OE_Order_PUB.Header_Adj_Tbl_Type;
106 l_x_Header_Scredit_rec        OE_Order_PUB.Header_Scredit_Rec_Type;
107 l_x_Header_Scredit_tbl        OE_Order_PUB.Header_Scredit_Tbl_Type;
108 l_x_line_rec                  OE_Order_PUB.Line_Rec_Type;
109 l_x_line_tbl                  OE_Order_PUB.Line_Tbl_Type;
110 l_x_Line_Adj_rec              OE_Order_PUB.Line_Adj_Rec_Type;
111 l_x_Line_Adj_tbl              OE_Order_PUB.Line_Adj_Tbl_Type;
112 l_x_Line_Scredit_rec          OE_Order_PUB.Line_Scredit_Rec_Type;
113 l_x_Line_Scredit_tbl          OE_Order_PUB.Line_Scredit_Tbl_Type;
114 l_x_Lot_Serial_rec            OE_Order_PUB.Lot_Serial_Rec_Type;
115 l_x_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
116 l_x_action_request_tbl        OE_Order_PUB.request_tbl_type;
117 l_x_Header_price_Att_tbl      OE_Order_PUB.Header_Price_Att_Tbl_Type;
118 l_x_Header_Adj_Att_tbl        OE_Order_PUB.Header_Adj_Att_Tbl_Type;
119 l_x_Header_Adj_Assoc_tbl      OE_Order_PUB.Header_Adj_Assoc_Tbl_Type;
120 l_x_Line_price_Att_tbl        OE_Order_PUB.Line_Price_Att_Tbl_Type;
121 l_x_Line_Adj_Att_tbl          OE_Order_PUB.Line_Adj_Att_Tbl_Type;
122 l_x_Line_Adj_Assoc_tbl        OE_Order_PUB.Line_Adj_Assoc_Tbl_Type;
123 
124 
125 Cursor C_OLD_R_SALES_CREDIT_ID(P_Line_ID Number) IS
126        SELECT Sales_Credit_ID
127        FROM OE_SALES_CREDITS SC,
128 	  OE_SALES_CREDIT_TYPES SCT
129        WHERE Line_ID = P_Line_ID
130 	  AND SC.SALES_CREDIT_TYPE_id = SCT.SALES_CREDIT_TYPE_id
131        AND   sct.QUOTA_FLAG  = 'Y';
132 Cursor C_OLD_NR_SALES_CREDIT_ID(P_Line_ID Number) IS
133        SELECT Sales_Credit_ID
134        FROM OE_SALES_CREDITS SC,
135 	  OE_SALES_CREDIT_TYPES SCT
136        WHERE Line_ID = P_Line_ID
137 	  AND SC.SALES_CREDIT_TYPE_id = SCT.SALES_CREDIT_TYPE_id
138        AND   SCT.QUOTA_FLAG  = 'N';
139 Cursor C_OLD_SALES_CREDIT_ID(P_Line_ID Number) IS
140        SELECT Sales_Credit_ID
141        FROM OE_SALES_CREDITS
142        WHERE Line_ID = P_Line_ID;
143 I Number;
144 --serla begin
145 l_x_Header_Payment_tbl        OE_Order_PUB.Header_Payment_Tbl_Type;
146 l_x_Line_Payment_tbl          OE_Order_PUB.Line_Payment_Tbl_Type;
147 --serla end
148 --
149 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
150 --
151 BEGIN
152    l_x_Line_Scredit_tbl.delete;
153    l_Old_Line_Scredit_tbl.delete;
154 
155     --  Set control flags for Delete
156 
157     l_control_rec.controlled_operation := TRUE;
158     l_control_rec.validate_entity      := FALSE;
159     l_control_rec.write_to_DB          := TRUE;
160 
161     l_control_rec.default_attributes   := FALSE;
162     l_control_rec.change_attributes    := FALSE;
163     l_control_rec.process              := FALSE;
164 
165     --  Instruct API to retain its caches
166 
167     l_control_rec.clear_api_cache      := FALSE;
168     l_control_rec.clear_api_requests   := FALSE;
169 
170     -- Delete Existing Sales Credits for the Line
171     I := 1;
172     IF P_REPLACE_CREDIT_TYPE = 'R' then -- Replace Revenue
173        FOR R_OLD_SALES_CREDIT IN C_OLD_R_SALES_CREDIT_ID(p_Line_id) LOOP
174            --  Read DB record from cache
175 
176                OE_Line_Scredit_Util.Lock_Row
177                (   p_sales_credit_id  => R_OLD_SALES_CREDIT.SALES_CREDIT_ID
178 			,   p_x_line_scredit_rec => l_Line_Scredit_rec
179 			,   x_return_status    =>   l_return_status
180                );
181 
182       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
183          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
184       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
185             RAISE FND_API.G_EXC_ERROR;
186       END IF;
187                --  Set Operation.
188 
189                l_Line_Scredit_rec.operation := OE_GLOBALS.G_OPR_LOCK;
190                --  Populate Line_Scredit table
191 
192                l_x_Line_Scredit_tbl(I) := l_Line_Scredit_rec;
193                I  := I +1;
194       END LOOP;
195     ELSIF P_REPLACE_CREDIT_TYPE = 'NR' then -- Replace NON Revenue
196        FOR R_OLD_SALES_CREDIT IN C_OLD_NR_SALES_CREDIT_ID(p_Line_id) LOOP
197            --  Read DB record from cache
198 
199                OE_Line_Scredit_Util.Lock_Row
200                (   p_sales_credit_id  => R_OLD_SALES_CREDIT.SALES_CREDIT_ID
201 			,   p_x_line_scredit_rec => l_Line_Scredit_rec
202 			,   x_return_status    =>   l_return_status
203                );
204 
205       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
206          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
207       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
208             RAISE FND_API.G_EXC_ERROR;
209       END IF;
210                --  Set Operation.
211 
212                l_Line_Scredit_rec.operation := OE_GLOBALS.G_OPR_LOCK;
213                --  Populate Line_Scredit table
214 
215                l_x_Line_Scredit_tbl(I) := l_Line_Scredit_rec;
216                I  := I +1;
217       END LOOP;
218     ELSE -- Replace both Revenue and Non-Revenue
219        FOR R_OLD_SALES_CREDIT IN C_OLD_SALES_CREDIT_ID(p_Line_id) LOOP
220            --  Read DB record from cache
221 
222                 OE_Line_Scredit_Util.Lock_Row
223                (   p_sales_credit_id  => R_OLD_SALES_CREDIT.SALES_CREDIT_ID
224 			,   p_x_line_scredit_rec => l_Line_Scredit_rec
225 			,   x_return_status    =>   l_return_status
226                );
227 
228       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
229          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
230       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
231             RAISE FND_API.G_EXC_ERROR;
232       END IF;
233                --  Set Operation.
234 
235                l_Line_Scredit_rec.operation := OE_GLOBALS.G_OPR_LOCK;
236                --  Populate Line_Scredit table
237 
238                l_x_Line_Scredit_tbl(I) := l_Line_Scredit_rec;
239                I  := I +1;
240       END LOOP;
241    END IF;
242    -- Set the operation code to Delete from LOCK
243    FOR J in 1..(I-1) LOOP
244        l_x_Line_Scredit_tbl(j).operation := OE_GLOBALS.G_OPR_DELETE;
245    END LOOP;
246    --  Call OE_Order_PVT.Process_order
247    OE_Order_PVT.Process_order
248       (   p_api_version_number          => 1.0
249       ,   p_init_msg_list               => FND_API.G_TRUE
250       ,   x_return_status               => l_return_status
251       ,   x_msg_count                   => p_msg_count
252       ,   x_msg_data                    => p_msg_data
253       ,   p_control_rec                 => l_control_rec
254       ,   p_x_header_rec                => l_x_header_rec
255       ,   p_x_Header_Adj_tbl            => l_x_Header_Adj_tbl
256       ,   p_x_Header_Scredit_tbl        => l_x_Header_Scredit_tbl
257 --serla begin
258       ,   p_x_Header_Payment_tbl        => l_x_Header_Payment_tbl
259 --serla end
260       ,   p_x_line_tbl                  => l_x_line_tbl
261       ,   p_x_Line_Adj_tbl              => l_x_Line_Adj_tbl
262       ,   p_x_Line_Scredit_tbl          => l_x_Line_Scredit_tbl
263 --serla begin
264       ,   p_x_Line_Payment_tbl          => l_x_Line_Payment_tbl
265 --serla end
266       ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_tbl
267       ,   p_x_action_request_tbl        => l_x_action_request_tbl
268       ,   p_x_Header_price_Att_tbl      => l_x_Header_price_Att_tbl
269       ,   p_x_Header_Adj_Att_tbl        => l_x_Header_Adj_Att_tbl
270       ,   p_x_Header_Adj_Assoc_tbl      => l_x_Header_Adj_Assoc_tbl
271       ,   p_x_Line_price_Att_tbl        => l_x_Line_price_Att_tbl
272       ,   p_x_Line_Adj_Att_tbl          => l_x_Line_Adj_Att_tbl
273       ,   p_x_Line_Adj_Assoc_tbl        => l_x_Line_Adj_Assoc_tbl
274 
275       );
276 
277       IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
278          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
279       ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
280             RAISE FND_API.G_EXC_ERROR;
281       END IF;
282 
283              --  Set return status.
284 
285     p_return_status := FND_API.G_RET_STS_SUCCESS;
286 
287    l_x_Line_Scredit_tbl.delete;
288    l_Old_Line_Scredit_tbl.delete;
289     --  Set control flags.
290 
291     l_control_rec.controlled_operation := TRUE;
292     l_control_rec.validate_entity      := TRUE;
293     l_control_rec.write_to_DB          := TRUE;
294 
295     l_control_rec.default_attributes   := TRUE;
296     l_control_rec.change_attributes    := TRUE;
297     l_control_rec.process              := FALSE;
298 
299     --  Instruct API to retain its caches
300 
301     l_control_rec.clear_api_cache      := FALSE;
302     l_control_rec.clear_api_requests   := FALSE;
303 
304 
305     --  Populate Line_Scredit table for Inserts
306   For I in 1 .. g_Line_Multi_Scredit_Count Loop
307     l_Line_Scredit_rec           := OE_Order_PUB.G_MISS_Line_SCREDIT_REC;
308     l_Line_Scredit_rec.operation := OE_GLOBALS.G_OPR_CREATE;
309     l_Line_Scredit_rec.Line_id := p_Line_id;
310     l_Line_Scredit_rec.SalesRep_Id
311            := g_Line_Multi_Scredit_Tbl(I).SalesRep_Id;
312     l_Line_Scredit_rec.sales_Credit_type_id
313            := g_Line_Multi_Scredit_Tbl(I).sales_Credit_type_id;
314     l_Line_Scredit_rec.percent
315            := g_Line_Multi_Scredit_Tbl(I).percent;
316     -- changes start for bug 3742335
317     l_Line_Scredit_rec.Context		:=	g_Line_Multi_Scredit_Tbl(I).Context ;
318     l_Line_Scredit_rec.Attribute1	:=	g_Line_Multi_Scredit_Tbl(I).Attribute1 ;
319     l_Line_Scredit_rec.Attribute2	:=	g_Line_Multi_Scredit_Tbl(I).Attribute2 ;
320     l_Line_Scredit_rec.Attribute3	:=	g_Line_Multi_Scredit_Tbl(I).Attribute3 ;
321     l_Line_Scredit_rec.Attribute4	:=	g_Line_Multi_Scredit_Tbl(I).Attribute4 ;
322     l_Line_Scredit_rec.Attribute5	:=	g_Line_Multi_Scredit_Tbl(I).Attribute5 ;
323     l_Line_Scredit_rec.Attribute6	:=	g_Line_Multi_Scredit_Tbl(I).Attribute6 ;
324     l_Line_Scredit_rec.Attribute7	:=	g_Line_Multi_Scredit_Tbl(I).Attribute7 ;
325     l_Line_Scredit_rec.Attribute8	:=	g_Line_Multi_Scredit_Tbl(I).Attribute8 ;
326     l_Line_Scredit_rec.Attribute9	:=	g_Line_Multi_Scredit_Tbl(I).Attribute9 ;
327     l_Line_Scredit_rec.Attribute10	:=	g_Line_Multi_Scredit_Tbl(I).Attribute10;
328     l_Line_Scredit_rec.Attribute11	:=	g_Line_Multi_Scredit_Tbl(I).Attribute11;
329     l_Line_Scredit_rec.Attribute12	:=	g_Line_Multi_Scredit_Tbl(I).Attribute12;
330     l_Line_Scredit_rec.Attribute13	:=	g_Line_Multi_Scredit_Tbl(I).Attribute13;
331     l_Line_Scredit_rec.Attribute14	:=	g_Line_Multi_Scredit_Tbl(I).Attribute14;
332     l_Line_Scredit_rec.Attribute15	:=	g_Line_Multi_Scredit_Tbl(I).Attribute15;
333     -- changes end for bug 3742335
334     l_Line_Scredit_rec.Sales_Group_Id := g_Line_Multi_Scredit_Tbl(I).Sales_Group_Id;  --5692017
335     l_Line_Scredit_rec.Sales_Group_updated_flag := g_Line_Multi_Scredit_Tbl(I).Sales_Group_updated_flag;  --5692017
336     l_x_Line_Scredit_tbl(I)     := l_Line_Scredit_rec;
337     l_old_Line_Scredit_tbl(I) := OE_Order_PUB.G_MISS_Line_SCREDIT_REC;
338  END loop;
339 
340     --  Call OE_Order_PVT.Process_order
341      OE_DELAYED_REQUESTS_PVT.Clear_Request(x_return_status => l_return_status);
342 
343 oe_debug_pub.add('Sales_Group_Id:'||l_Line_Scredit_rec.Sales_Group_Id);  --5692017
344 oe_debug_pub.add('Sales_Group_updated_flag:'||l_Line_Scredit_rec.Sales_Group_updated_flag);  --5692017
345 
346     OE_Order_PVT.Process_order
347     (   p_api_version_number          => 1.0
348     ,   p_init_msg_list               => FND_API.G_FALSE
349     ,   x_return_status               => l_return_status
350     ,   x_msg_count                   => p_msg_count
351     ,   x_msg_data                    => p_msg_data
352     ,   p_control_rec                 => l_control_rec
353     ,   p_x_header_rec                => l_x_header_rec
354     ,   p_x_Header_Adj_tbl            => l_x_Header_Adj_tbl
355     ,   p_x_Header_Scredit_tbl        => l_x_Header_Scredit_tbl
356 --serla begin
357     ,   p_x_Header_Payment_tbl        => l_x_Header_Payment_tbl
358 --serla end
359     ,   p_x_line_tbl                  => l_x_line_tbl
360     ,   p_x_Line_Adj_tbl              => l_x_Line_Adj_tbl
361     ,   p_x_Line_Scredit_tbl          => l_x_Line_Scredit_tbl
362 --serla begin
363     ,   p_x_Line_Payment_tbl          => l_x_Line_Payment_tbl
364 --serla end
365     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_tbl
366     ,   p_x_action_request_tbl        => l_x_action_request_tbl
367     ,   p_x_Header_price_Att_tbl      => l_x_Header_price_Att_tbl
368     ,   p_x_Header_Adj_Att_tbl        => l_x_Header_Adj_Att_tbl
369     ,   p_x_Header_Adj_Assoc_tbl      => l_x_Header_Adj_Assoc_tbl
370     ,   p_x_Line_price_Att_tbl        => l_x_Line_price_Att_tbl
371     ,   p_x_Line_Adj_Att_tbl          => l_x_Line_Adj_Att_tbl
372     ,   p_x_Line_Adj_Assoc_tbl        => l_x_Line_Adj_Assoc_tbl
373 
374     );
375 
376 oe_debug_pub.add('after process order: sales_group_id:'||l_x_Line_Scredit_tbl(1).sales_group_id);  --5692017
377 oe_debug_pub.add('after process order: sales_group_flag'||l_x_Line_Scredit_tbl(1).sales_group_updated_flag);  --5692017
378 
379 
380     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
381         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
382     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
383         RAISE FND_API.G_EXC_ERROR;
384     END IF;
385     OE_OE_Form_Line_Scredit.Process_entity
386                                (x_return_status =>l_return_status
387                                ,x_msg_count => p_msg_count
388                                ,x_msg_data => p_msg_data
389                                );
390     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
391         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
392     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
393         RAISE FND_API.G_EXC_ERROR;
394     END IF;
395 
396     p_return_status := FND_API.G_RET_STS_SUCCESS;
397 
398 EXCEPTION
399 
400     WHEN FND_API.G_EXC_ERROR THEN
401 
402         p_return_status := FND_API.G_RET_STS_ERROR;
403 
404     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
405 
406         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
407 
408     WHEN OTHERS THEN
409 
410         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
411 
412         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
413         THEN
414             oe_msg_pub.Add_Exc_Msg
415             (   G_PKG_NAME
416             ,   'Replace_Line_Scredit'
417             );
418         END IF;
419 
420 END Replace_Line_Scredit;
421 
422 Procedure Add_Multi_Line_Scredit_Req
423   (p_init              IN Varchar2 Default FND_API.G_FALSE
424   ,p_salesrep_id       IN Number
425   ,p_sales_Credit_type_id IN Number
426   ,p_percent           IN Number
427   -- changes start for bug 3742335
428   ,p_Context	  Varchar2
429   ,p_Attribute1	  Varchar2
430   ,p_Attribute2	  Varchar2
431   ,p_Attribute3   Varchar2
432   ,p_Attribute4   Varchar2
433   ,p_Attribute5   Varchar2
434   ,p_Attribute6   Varchar2
435   ,p_Attribute7   Varchar2
436   ,p_Attribute8   Varchar2
437   ,p_Attribute9   Varchar2
438   ,p_Attribute10  Varchar2
439   ,p_Attribute11  Varchar2
440   ,p_Attribute12  Varchar2
441   ,p_Attribute13  Varchar2
442   ,p_Attribute14  Varchar2
443   ,p_Attribute15  Varchar2
444   -- changes end for bug 3742335
445   ,p_sales_group_id       IN Number  --5692017
446   ,p_sales_group_updated_flag  IN Varchar2  --5692017
447 ,p_return_status OUT NOCOPY Varchar2
448 
449 ,p_msg_count OUT NOCOPY NUMBER
450 
451 ,p_msg_data OUT NOCOPY Varchar2
452 
453   ) IS
454 I number;
455 --
456 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
457 --
458 BEGIN
459     p_return_status := FND_API.G_RET_STS_SUCCESS;
460     if p_init = FND_API.G_TRUE then
461         --  Initialize message list.
462        oe_msg_pub.initialize;
463        g_Line_Multi_Scredit_Count := 0;
464        g_Line_Multi_Scredit_Tbl.delete;
465     end if;
466     g_Line_Multi_Scredit_Count := g_Line_Multi_Scredit_Count +1;
467     I := g_Line_Multi_Scredit_Count;
468     g_Line_Multi_Scredit_Tbl(I).salesrep_id := p_salesrep_id;
469     g_Line_Multi_Scredit_Tbl(I).sales_Credit_type_id := p_sales_Credit_type_id;
470     g_Line_Multi_Scredit_Tbl(I).percent := p_percent;
471     -- changes start for bug 3742335
472     g_Line_Multi_Scredit_Tbl(I).Context	    :=	p_Context   ;
473     g_Line_Multi_Scredit_Tbl(I).Attribute1  :=	p_Attribute1;
474     g_Line_Multi_Scredit_Tbl(I).Attribute2  :=	p_Attribute2;
475     g_Line_Multi_Scredit_Tbl(I).Attribute3  :=	p_Attribute3;
476     g_Line_Multi_Scredit_Tbl(I).Attribute4  :=	p_Attribute4;
477     g_Line_Multi_Scredit_Tbl(I).Attribute5  :=	p_Attribute5;
478     g_Line_Multi_Scredit_Tbl(I).Attribute6  :=	p_Attribute6;
479     g_Line_Multi_Scredit_Tbl(I).Attribute7  :=	p_Attribute7;
480     g_Line_Multi_Scredit_Tbl(I).Attribute8  :=	p_Attribute8;
481     g_Line_Multi_Scredit_Tbl(I).Attribute9  :=	p_Attribute9;
482     g_Line_Multi_Scredit_Tbl(I).Attribute10 :=	p_Attribute10;
483     g_Line_Multi_Scredit_Tbl(I).Attribute11 :=	p_Attribute11;
484     g_Line_Multi_Scredit_Tbl(I).Attribute12 :=	p_Attribute12;
485     g_Line_Multi_Scredit_Tbl(I).Attribute13 :=	p_Attribute13;
486     g_Line_Multi_Scredit_Tbl(I).Attribute14 :=	p_Attribute14;
487     g_Line_Multi_Scredit_Tbl(I).Attribute15 :=	p_Attribute15;
488     -- changes end for bug 3742335
489     g_Line_Multi_Scredit_Tbl(I).sales_group_id := p_sales_group_id;  --5692017
490     g_Line_Multi_Scredit_Tbl(I).sales_group_updated_flag := p_sales_group_updated_flag;  --5692017
491 
492   oe_msg_pub.Count_And_Get
493     (   p_count                       => p_msg_count
494     ,   p_data                        => p_msg_data
495     );
496 EXCEPTION
497 
498     WHEN FND_API.G_EXC_ERROR THEN
499 
500         p_return_status := FND_API.G_RET_STS_ERROR;
501 
502         --  Get message count and data
503 
504         oe_msg_pub.Count_And_Get
505         (   p_count                       => p_msg_count
506         ,   p_data                        => p_msg_data
507         );
508 
509     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
510 
511         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
512 
513         --  Get message count and data
514 
515         oe_msg_pub.Count_And_Get
516         (   p_count                       => p_msg_count
517         ,   p_data                        => p_msg_data
518         );
519 
520     WHEN OTHERS THEN
521 
522         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
523 
524         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
525         THEN
526             oe_msg_pub.Add_Exc_Msg
527             (   G_PKG_NAME
528             ,   'Add_Multi_Line_Scredit_Req'
529             );
530         END IF;
531 
532         --  Get message count and data
533 
534         oe_msg_pub.Count_And_Get
535         (   p_count                       => p_msg_count
536         ,   p_data                        => p_msg_data
537         );
538 
539 END Add_Multi_Line_Scredit_Req;
540 
541 Procedure Replace_Multi_Line_Scredit
542    (
543     p_cont_on_error            IN  Varchar2 Default FND_API.G_TRUE
544     ,p_Line_id_list          IN  Oe_Globals.Selected_Record_Tbl  --MOAC PI
545     ,p_replace_credit_type     IN  Varchar2
546 ,p_Return_Status OUT NOCOPY Varchar2
547 
548 ,p_msg_count OUT NOCOPY NUMBER
549 
550 ,p_msg_data OUT NOCOPY Varchar2
551 
552    ) IS
553 l_x_Line_id                  number;
554 l_x_Line_id_str              Varchar2(80);
555 --l_x_Line_id_list             Varchar2(2000) := p_Line_id_list;
556 l_return_status                Varchar2(30);
557 l_msg_count                    Number;
558 --MOAC PI
559 L_x_org_id                   Number;
560 l_prev_org_id                Number;
561 i                            Number;
562 --
563 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
564 --
565 BEGIN
566 
567   g_Multi_MSG_Tbl.Delete;
568   g_Multi_MSG_count := 0;
569   p_return_status := FND_API.G_RET_STS_SUCCESS;
570   OE_MSG_PUB.initialize;
571   --MOAC PI
572   i := p_Line_id_list.first;
573   while i is not null loop
574      SAVEPOINT Line_Salescredit;
575      l_x_Line_id := p_Line_id_list(i).id1;
576      l_x_org_id := p_Line_id_list(i).org_id;
577      IF l_prev_org_id is null or l_prev_org_id <> l_x_org_id Then
578         MO_GLOBAL.set_policy_context(p_access_mode => 'S',  p_org_id  =>  l_x_Org_Id);
579         L_prev_org_id := l_x_org_id;
580      End If;
581    --MOAC PI
582 
583      IF l_debug_level  > 0 THEN
584          oe_debug_pub.add(  'PROCESSING SALES CREDIT FOR LINE ID ' || TO_CHAR ( L_X_LINE_ID ) ) ;
585      END IF;
586      Replace_Line_Scredit(l_x_Line_id
587                            ,p_replace_credit_type
588                            ,l_return_status
589                            ,l_msg_count
590                            ,p_msg_data);
591     if l_return_status <> FND_API.G_RET_STS_SUCCESS then
592        Copy_Errors_Multi_Msg(l_x_Line_id,
593                              l_msg_count);
594        p_return_status := l_return_status;
595        rollback to Line_Salescredit;
596        if p_cont_on_error = FND_API.G_TRUE then
597           null;
598        else
599           EXIT;
600        end if;
601     end if;
602     i := p_Line_id_list.next(i); --MOAC PI
603   END LOOP;
604   IF l_return_status <> FND_API.G_RET_STS_SUCCESS then
605      RAISE FND_API.G_EXC_ERROR;
606   END IF;
607         oe_msg_pub.Count_And_Get
608         (   p_count                       => p_msg_count
609         ,   p_data                        => p_msg_data
610         );
611 EXCEPTION
612 
613     WHEN FND_API.G_EXC_ERROR THEN
614 
615         p_return_status := FND_API.G_RET_STS_ERROR;
616 
617         --  Get message count and data
618 
619         oe_msg_pub.Count_And_Get
620         (   p_count                       => p_msg_count
621         ,   p_data                        => p_msg_data
622         );
623 
624     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
625 
626         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
627 
628         --  Get message count and data
629 
630         oe_msg_pub.Count_And_Get
631         (   p_count                       => p_msg_count
632         ,   p_data                        => p_msg_data
633         );
634 
635     WHEN OTHERS THEN
636 
637         p_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
638 
639         IF oe_msg_pub.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
640         THEN
641             oe_msg_pub.Add_Exc_Msg
642             (   G_PKG_NAME
643             ,   'Replace_Multi_Line_Scredit'
644             );
645         END IF;
646 
647         --  Get message count and data
648 
649         oe_msg_pub.Count_And_Get
650         (   p_count                       => p_msg_count
651         ,   p_data                        => p_msg_data
652         );
653 
654 END Replace_Multi_Line_Scredit;
655 
656 END OE_OE_Multi_Line_Scredit;