DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_OE_MULTI_HEADER_SCREDIT

Source


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