DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_OE_FORM_CONTRACT

Source


1 PACKAGE BODY OE_OE_Form_Contract AS
2 /* $Header: OEXFPCTB.pls 115.0 99/07/15 19:22:32 porting shi $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_OE_Form_Contract';
7 
8 --  Global variables holding cached record.
9 
10 g_Contract_rec                OE_Pricing_Cont_PUB.Contract_Rec_Type;
11 g_db_Contract_rec             OE_Pricing_Cont_PUB.Contract_Rec_Type;
12 
13 -- Revision Control S
14 g_Revision_Change             VARCHAR2(1) :=  FND_API.G_FALSE;
15 g_Agreement_Id		      NUMBER := FND_API.G_MISS_NUM;
16 -- Revision Control E
17 
18 --  Forward declaration of procedures maintaining entity record cache.
19 
20 PROCEDURE Write_Contract
21 (   p_Contract_rec                  IN  OE_Pricing_Cont_PUB.Contract_Rec_Type
22 ,   p_db_record                     IN  BOOLEAN := FALSE
23 );
24 
25 FUNCTION Get_Contract
26 (   p_db_record                     IN  BOOLEAN := FALSE
27 ,   p_pricing_contract_id           IN  NUMBER
28 )
29 RETURN OE_Pricing_Cont_PUB.Contract_Rec_Type;
30 
31 PROCEDURE Clear_Contract;
32 
33 --  Global variable holding performed operations.
34 
35 g_opr__tbl                    OE_Pricing_Cont_PUB.Contract_Tbl_Type;
36 
37 PROCEDURE Get_Startup_Values
38 (Item_Id_Flex_Code         IN VARCHAR2,
39  Item_Id_Flex_Num          OUT NUMBER) IS
40 
41     CURSOR C_Item_Flex(X_Id_Flex_Code VARCHAR2) is
42       SELECT id_flex_num
43       FROM   fnd_id_flex_structures
44       WHERE  id_flex_code = X_Id_Flex_Code;
45 BEGIN
46 
47     oe_debug_pub.add('Entering OE_OE_FORM_CONTRACT.GET_FORM_STARTUP_VALUES');
48 
49     OPEN C_Item_Flex(Item_Id_Flex_Code);
50     FETCH C_Item_Flex INTO Item_Id_Flex_Num;
51     CLOSE C_Item_Flex;
52 
53     oe_debug_pub.add('Exiting OE_OE_FORM_CONTRACT.GET_FORM_STARTUP_VALUES');
54 
55   EXCEPTION
56     WHEN OTHERS THEN
57       OE_MSG.Internal_Exception('OE_OE_Form_Contract.Get_Form_Startup_Values',
58                                 'Get Form Startup Values', 'AGREEMENT');
59 
60 END Get_Startup_Values;
61 
62 
63 
64 --  Procedure : Default_Attributes
65 --
66 
67 PROCEDURE Default_Attributes
68 (   x_return_status                 OUT VARCHAR2
69 ,   x_msg_count                     OUT NUMBER
70 ,   x_msg_data                      OUT VARCHAR2
71 ,   x_agreement_id                  OUT NUMBER
72 ,   x_attribute1                    OUT VARCHAR2
73 ,   x_attribute10                   OUT VARCHAR2
74 ,   x_attribute11                   OUT VARCHAR2
75 ,   x_attribute12                   OUT VARCHAR2
76 ,   x_attribute13                   OUT VARCHAR2
77 ,   x_attribute14                   OUT VARCHAR2
78 ,   x_attribute15                   OUT VARCHAR2
79 ,   x_attribute2                    OUT VARCHAR2
80 ,   x_attribute3                    OUT VARCHAR2
81 ,   x_attribute4                    OUT VARCHAR2
82 ,   x_attribute5                    OUT VARCHAR2
83 ,   x_attribute6                    OUT VARCHAR2
84 ,   x_attribute7                    OUT VARCHAR2
85 ,   x_attribute8                    OUT VARCHAR2
86 ,   x_attribute9                    OUT VARCHAR2
87 ,   x_context                       OUT VARCHAR2
88 ,   x_discount_id                   OUT NUMBER
89 ,   x_last_updated_by               OUT NUMBER
90 ,   x_price_list_id                 OUT NUMBER
91 ,   x_pricing_contract_id           OUT NUMBER
92 ,   x_agreement                     OUT VARCHAR2
93 ,   x_discount                      OUT VARCHAR2
94 ,   x_price_list                    OUT VARCHAR2
95 )
96 IS
97 l_Contract_rec                OE_Pricing_Cont_PUB.Contract_Rec_Type;
98 l_Contract_val_rec            OE_Pricing_Cont_PUB.Contract_Val_Rec_Type;
99 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
100 l_return_status               VARCHAR2(1);
101 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
102 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
103 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
104 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
105 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
106 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
107 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
108 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
109 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
110 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
111 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
112 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
113 BEGIN
114 
115     oe_debug_pub.add('Entering OE_OE_Form_Contract.Default_Attributes');
116 
117     --  Set control flags.
118 
119     l_control_rec.controlled_operation := TRUE;
120     l_control_rec.default_attributes   := TRUE;
121 
122     l_control_rec.change_attributes    := FALSE;
123     l_control_rec.validate_entity      := FALSE;
124     l_control_rec.write_to_DB          := FALSE;
125     l_control_rec.process              := FALSE;
126 
127     --  Instruct API to retain its caches
128 
129     l_control_rec.clear_api_cache      := FALSE;
130     l_control_rec.clear_api_requests   := FALSE;
131 
132     --  Load IN parameters if any exist
133 
134 
135     --  Defaulting of flex values is currently done by the form.
136     --  Set flex attributes to NULL in order to avoid defaulting them.
137 
138     l_Contract_rec.attribute1                     := 'NULL';
139     l_Contract_rec.attribute10                    := 'NULL';
140     l_Contract_rec.attribute11                    := 'NULL';
141     l_Contract_rec.attribute12                    := 'NULL';
142     l_Contract_rec.attribute13                    := 'NULL';
143     l_Contract_rec.attribute14                    := 'NULL';
144     l_Contract_rec.attribute15                    := 'NULL';
145     l_Contract_rec.attribute2                     := 'NULL';
146     l_Contract_rec.attribute3                     := 'NULL';
147     l_Contract_rec.attribute4                     := 'NULL';
148     l_Contract_rec.attribute5                     := 'NULL';
149     l_Contract_rec.attribute6                     := 'NULL';
150     l_Contract_rec.attribute7                     := 'NULL';
151     l_Contract_rec.attribute8                     := 'NULL';
152     l_Contract_rec.attribute9                     := 'NULL';
153     l_Contract_rec.context                        := 'NULL';
154 
155     --  Set Operation to Create
156 
157     l_Contract_rec.operation := OE_GLOBALS.G_OPR_CREATE;
158 
159     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
160 
161     OE_Pricing_Cont_PVT.Process_Pricing_Cont
162     (   p_api_version_number          => 1.0
163     ,   p_init_msg_list               => FND_API.G_TRUE
164     ,   x_return_status               => l_return_status
165     ,   x_msg_count                   => x_msg_count
166     ,   x_msg_data                    => x_msg_data
167     ,   p_control_rec                 => l_control_rec
168     ,   p_Contract_rec                => l_Contract_rec
169     ,   x_Contract_rec                => l_x_Contract_rec
170     ,   x_Agreement_rec               => l_x_Agreement_rec
171     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
172     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
173     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
174     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
175     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
176     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
177     );
178 
179     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
180         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
181     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
182         RAISE FND_API.G_EXC_ERROR;
183     END IF;
184 
185 
186     --  Load OUT parameters.
187 
188     x_agreement_id                 := l_x_Contract_rec.agreement_id;
189     x_attribute1                   := l_x_Contract_rec.attribute1;
190     x_attribute10                  := l_x_Contract_rec.attribute10;
191     x_attribute11                  := l_x_Contract_rec.attribute11;
192     x_attribute12                  := l_x_Contract_rec.attribute12;
193     x_attribute13                  := l_x_Contract_rec.attribute13;
194     x_attribute14                  := l_x_Contract_rec.attribute14;
195     x_attribute15                  := l_x_Contract_rec.attribute15;
196     x_attribute2                   := l_x_Contract_rec.attribute2;
197     x_attribute3                   := l_x_Contract_rec.attribute3;
198     x_attribute4                   := l_x_Contract_rec.attribute4;
199     x_attribute5                   := l_x_Contract_rec.attribute5;
200     x_attribute6                   := l_x_Contract_rec.attribute6;
201     x_attribute7                   := l_x_Contract_rec.attribute7;
202     x_attribute8                   := l_x_Contract_rec.attribute8;
203     x_attribute9                   := l_x_Contract_rec.attribute9;
204     x_context                      := l_x_Contract_rec.context;
205     x_discount_id                  := l_x_Contract_rec.discount_id;
206     x_last_updated_by              := l_x_Contract_rec.last_updated_by;
207     x_price_list_id                := l_x_Contract_rec.price_list_id;
208     x_pricing_contract_id          := l_x_Contract_rec.pricing_contract_id;
209 
210     --  Load display out parameters if any
211 
212     l_Contract_val_rec := OE_Contract_Util.Get_Values
213     (   p_Contract_rec                => l_x_Contract_rec
214     );
215     x_agreement                    := l_Contract_val_rec.agreement;
216     x_discount                     := l_Contract_val_rec.discount;
217     x_price_list                   := l_Contract_val_rec.price_list;
218 
219     --  Write to cache.
220     --  Set db_flag to False before writing to cache
221 
222     l_x_Contract_rec.db_flag := FND_API.G_FALSE;
223 
224     Write_Contract
225     (   p_Contract_rec                => l_x_Contract_rec
226     );
227 
228     --  Set return status.
229 
230     x_return_status := FND_API.G_RET_STS_SUCCESS;
231 
232     --  Get message count and data
233 
234     OE_MSG_PUB.Count_And_Get
235     (   p_count                       => x_msg_count
236     ,   p_data                        => x_msg_data
237     );
238 
239     oe_debug_pub.add('Exiting OE_OE_Form_Contract.Default_Attributes');
240 
241 EXCEPTION
242 
243     WHEN FND_API.G_EXC_ERROR THEN
244 
245         x_return_status := FND_API.G_RET_STS_ERROR;
246 
247         --  Get message count and data
248 
249         OE_MSG_PUB.Count_And_Get
250         (   p_count                       => x_msg_count
251         ,   p_data                        => x_msg_data
252         );
253 
254     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
255 
256         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
257 
258         --  Get message count and data
259 
260         OE_MSG_PUB.Count_And_Get
261         (   p_count                       => x_msg_count
262         ,   p_data                        => x_msg_data
263         );
264 
265     WHEN OTHERS THEN
266 
267         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
268 
269         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
270         THEN
271             OE_MSG_PUB.Add_Exc_Msg
272             (   G_PKG_NAME
273             ,   'Default_Attributes'
274             );
275         END IF;
276 
277         --  Get message count and data
278 
279         OE_MSG_PUB.Count_And_Get
280         (   p_count                       => x_msg_count
281         ,   p_data                        => x_msg_data
282         );
283 
284 END Default_Attributes;
285 
286 --  Procedure   :   Change_Attribute
287 --
288 
289 PROCEDURE Change_Attribute
290 (   x_return_status                 OUT VARCHAR2
291 ,   x_msg_count                     OUT NUMBER
292 ,   x_msg_data                      OUT VARCHAR2
293 ,   p_pricing_contract_id           IN  NUMBER
294 ,   p_attr_id                       IN  NUMBER
295 ,   p_attr_value                    IN  VARCHAR2
296 ,   p_attribute1                    IN  VARCHAR2
297 ,   p_attribute10                   IN  VARCHAR2
298 ,   p_attribute11                   IN  VARCHAR2
299 ,   p_attribute12                   IN  VARCHAR2
300 ,   p_attribute13                   IN  VARCHAR2
301 ,   p_attribute14                   IN  VARCHAR2
302 ,   p_attribute15                   IN  VARCHAR2
303 ,   p_attribute2                    IN  VARCHAR2
304 ,   p_attribute3                    IN  VARCHAR2
305 ,   p_attribute4                    IN  VARCHAR2
306 ,   p_attribute5                    IN  VARCHAR2
307 ,   p_attribute6                    IN  VARCHAR2
308 ,   p_attribute7                    IN  VARCHAR2
309 ,   p_attribute8                    IN  VARCHAR2
310 ,   p_attribute9                    IN  VARCHAR2
311 ,   p_context                       IN  VARCHAR2
312 ,   x_agreement_id                  OUT NUMBER
313 ,   x_attribute1                    OUT VARCHAR2
314 ,   x_attribute10                   OUT VARCHAR2
315 ,   x_attribute11                   OUT VARCHAR2
316 ,   x_attribute12                   OUT VARCHAR2
317 ,   x_attribute13                   OUT VARCHAR2
318 ,   x_attribute14                   OUT VARCHAR2
319 ,   x_attribute15                   OUT VARCHAR2
320 ,   x_attribute2                    OUT VARCHAR2
321 ,   x_attribute3                    OUT VARCHAR2
322 ,   x_attribute4                    OUT VARCHAR2
323 ,   x_attribute5                    OUT VARCHAR2
324 ,   x_attribute6                    OUT VARCHAR2
325 ,   x_attribute7                    OUT VARCHAR2
326 ,   x_attribute8                    OUT VARCHAR2
327 ,   x_attribute9                    OUT VARCHAR2
328 ,   x_context                       OUT VARCHAR2
329 ,   x_discount_id                   OUT NUMBER
330 ,   x_last_updated_by               OUT NUMBER
331 ,   x_price_list_id                 OUT NUMBER
332 ,   x_pricing_contract_id           OUT NUMBER
333 ,   x_agreement                     OUT VARCHAR2
334 ,   x_discount                      OUT VARCHAR2
335 ,   x_price_list                    OUT VARCHAR2
336 )
337 IS
338 l_Contract_rec                OE_Pricing_Cont_PUB.Contract_Rec_Type;
339 l_old_Contract_rec            OE_Pricing_Cont_PUB.Contract_Rec_Type;
340 l_Contract_val_rec            OE_Pricing_Cont_PUB.Contract_Val_Rec_Type;
341 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
342 l_return_status               VARCHAR2(1);
343 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
344 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
345 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
346 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
347 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
348 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
349 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
350 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
351 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
352 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
353 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
354 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
355 BEGIN
356 
357     oe_debug_pub.add('Entering OE_OE_Form_Contract.Change_Attribute');
358 
359     --  Set control flags.
360 
361     l_control_rec.controlled_operation := TRUE;
362     l_control_rec.change_attributes    := TRUE;
363 
364     l_control_rec.default_attributes   := FALSE;
365     l_control_rec.validate_entity      := FALSE;
366     l_control_rec.write_to_DB          := FALSE;
367     l_control_rec.process              := FALSE;
368 
369     --  Instruct API to retain its caches
370 
371     l_control_rec.clear_api_cache      := FALSE;
372     l_control_rec.clear_api_requests   := FALSE;
373 
374     --  Read Contract from cache
375 
376     l_Contract_rec := Get_Contract
377     (   p_db_record                   => FALSE
378     ,   p_pricing_contract_id         => p_pricing_contract_id
379     );
380 
381     l_old_Contract_rec             := l_Contract_rec;
382 
383     IF p_attr_id = OE_Contract_Util.G_AGREEMENT THEN
384         l_Contract_rec.agreement_id := TO_NUMBER(p_attr_value);
385     ELSIF p_attr_id = OE_Contract_Util.G_DISCOUNT THEN
386         l_Contract_rec.discount_id := TO_NUMBER(p_attr_value);
387     ELSIF p_attr_id = OE_Contract_Util.G_LAST_UPDATED_BY THEN
388         l_Contract_rec.last_updated_by := TO_NUMBER(p_attr_value);
389     ELSIF p_attr_id = OE_Contract_Util.G_PRICE_LIST THEN
390         l_Contract_rec.price_list_id := TO_NUMBER(p_attr_value);
391     ELSIF p_attr_id = OE_Contract_Util.G_PRICING_CONTRACT THEN
392         l_Contract_rec.pricing_contract_id := TO_NUMBER(p_attr_value);
393     ELSIF p_attr_id = OE_Contract_Util.G_ATTRIBUTE1
394     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE10
395     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE11
396     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE12
397     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE13
398     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE14
399     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE15
400     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE2
401     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE3
402     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE4
403     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE5
404     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE6
405     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE7
406     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE8
407     OR     p_attr_id = OE_Contract_Util.G_ATTRIBUTE9
408     OR     p_attr_id = OE_Contract_Util.G_CONTEXT
409     THEN
410 
411         l_Contract_rec.attribute1      := p_attribute1;
412         l_Contract_rec.attribute10     := p_attribute10;
413         l_Contract_rec.attribute11     := p_attribute11;
414         l_Contract_rec.attribute12     := p_attribute12;
415         l_Contract_rec.attribute13     := p_attribute13;
416         l_Contract_rec.attribute14     := p_attribute14;
417         l_Contract_rec.attribute15     := p_attribute15;
418         l_Contract_rec.attribute2      := p_attribute2;
419         l_Contract_rec.attribute3      := p_attribute3;
420         l_Contract_rec.attribute4      := p_attribute4;
421         l_Contract_rec.attribute5      := p_attribute5;
422         l_Contract_rec.attribute6      := p_attribute6;
423         l_Contract_rec.attribute7      := p_attribute7;
424         l_Contract_rec.attribute8      := p_attribute8;
425         l_Contract_rec.attribute9      := p_attribute9;
426         l_Contract_rec.context         := p_context;
427 
428     ELSE
429 
430         --  Unexpected error, unrecognized attribute
431 
432         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
433         THEN
434             OE_MSG_PUB.Add_Exc_Msg
435             (   G_PKG_NAME
436             ,   'Change_Attribute'
437             ,   'Unrecognized attribute'
438             );
439         END IF;
440 
441         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
442 
443     END IF;
444 
445     --  Set Operation.
446 
447     IF FND_API.To_Boolean(l_Contract_rec.db_flag) THEN
448         l_Contract_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
449     ELSE
450         l_Contract_rec.operation := OE_GLOBALS.G_OPR_CREATE;
451     END IF;
452 
453     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
454 
455     OE_Pricing_Cont_PVT.Process_Pricing_Cont
456     (   p_api_version_number          => 1.0
457     ,   p_init_msg_list               => FND_API.G_TRUE
458     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
459     ,   x_return_status               => l_return_status
460     ,   x_msg_count                   => x_msg_count
461     ,   x_msg_data                    => x_msg_data
462     ,   p_control_rec                 => l_control_rec
463     ,   p_Contract_rec                => l_Contract_rec
464     ,   p_old_Contract_rec            => l_old_Contract_rec
465     ,   x_Contract_rec                => l_x_Contract_rec
466     ,   x_Agreement_rec               => l_x_Agreement_rec
467     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
468     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
469     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
470     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
471     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
472     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
473     );
474 
475     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
476         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
477     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
478         RAISE FND_API.G_EXC_ERROR;
479     END IF;
480 
481 
482     --  Init OUT parameters to missing.
483 
484     x_agreement_id                 := FND_API.G_MISS_NUM;
485     x_attribute1                   := FND_API.G_MISS_CHAR;
486     x_attribute10                  := FND_API.G_MISS_CHAR;
487     x_attribute11                  := FND_API.G_MISS_CHAR;
488     x_attribute12                  := FND_API.G_MISS_CHAR;
489     x_attribute13                  := FND_API.G_MISS_CHAR;
490     x_attribute14                  := FND_API.G_MISS_CHAR;
491     x_attribute15                  := FND_API.G_MISS_CHAR;
492     x_attribute2                   := FND_API.G_MISS_CHAR;
493     x_attribute3                   := FND_API.G_MISS_CHAR;
494     x_attribute4                   := FND_API.G_MISS_CHAR;
495     x_attribute5                   := FND_API.G_MISS_CHAR;
496     x_attribute6                   := FND_API.G_MISS_CHAR;
497     x_attribute7                   := FND_API.G_MISS_CHAR;
498     x_attribute8                   := FND_API.G_MISS_CHAR;
499     x_attribute9                   := FND_API.G_MISS_CHAR;
500     x_context                      := FND_API.G_MISS_CHAR;
501     x_discount_id                  := FND_API.G_MISS_NUM;
502     x_last_updated_by              := FND_API.G_MISS_NUM;
503     x_price_list_id                := FND_API.G_MISS_NUM;
504     x_pricing_contract_id          := FND_API.G_MISS_NUM;
505     x_agreement                    := FND_API.G_MISS_CHAR;
506     x_discount                     := FND_API.G_MISS_CHAR;
507     x_price_list                   := FND_API.G_MISS_CHAR;
508 
509     --  Load display out parameters if any
510 
511     l_Contract_val_rec := OE_Contract_Util.Get_Values
512     (   p_Contract_rec                => l_x_Contract_rec
513     ,   p_old_Contract_rec            => l_Contract_rec
514     );
515 
516     --  Return changed attributes.
517 
518     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.agreement_id,
519                             l_Contract_rec.agreement_id)
520     THEN
521         x_agreement_id := l_x_Contract_rec.agreement_id;
522         x_agreement := l_Contract_val_rec.agreement;
523     END IF;
524 
525     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute1,
526                             l_Contract_rec.attribute1)
527     THEN
528         x_attribute1 := l_x_Contract_rec.attribute1;
529     END IF;
530 
531     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute10,
532                             l_Contract_rec.attribute10)
533     THEN
534         x_attribute10 := l_x_Contract_rec.attribute10;
535     END IF;
536 
537     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute11,
538                             l_Contract_rec.attribute11)
539     THEN
540         x_attribute11 := l_x_Contract_rec.attribute11;
541     END IF;
542 
543     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute12,
544                             l_Contract_rec.attribute12)
545     THEN
546         x_attribute12 := l_x_Contract_rec.attribute12;
547     END IF;
548 
549     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute13,
550                             l_Contract_rec.attribute13)
551     THEN
552         x_attribute13 := l_x_Contract_rec.attribute13;
553     END IF;
554 
555     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute14,
556                             l_Contract_rec.attribute14)
557     THEN
558         x_attribute14 := l_x_Contract_rec.attribute14;
559     END IF;
560 
561     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute15,
562                             l_Contract_rec.attribute15)
563     THEN
564         x_attribute15 := l_x_Contract_rec.attribute15;
565     END IF;
566 
567     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute2,
568                             l_Contract_rec.attribute2)
569     THEN
570         x_attribute2 := l_x_Contract_rec.attribute2;
571     END IF;
572 
573     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute3,
574                             l_Contract_rec.attribute3)
575     THEN
576         x_attribute3 := l_x_Contract_rec.attribute3;
577     END IF;
578 
579     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute4,
580                             l_Contract_rec.attribute4)
581     THEN
582         x_attribute4 := l_x_Contract_rec.attribute4;
583     END IF;
584 
585     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute5,
586                             l_Contract_rec.attribute5)
587     THEN
588         x_attribute5 := l_x_Contract_rec.attribute5;
589     END IF;
590 
591     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute6,
592                             l_Contract_rec.attribute6)
593     THEN
594         x_attribute6 := l_x_Contract_rec.attribute6;
595     END IF;
596 
597     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute7,
598                             l_Contract_rec.attribute7)
599     THEN
600         x_attribute7 := l_x_Contract_rec.attribute7;
601     END IF;
602 
603     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute8,
604                             l_Contract_rec.attribute8)
605     THEN
606         x_attribute8 := l_x_Contract_rec.attribute8;
607     END IF;
608 
609     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.attribute9,
610                             l_Contract_rec.attribute9)
611     THEN
612         x_attribute9 := l_x_Contract_rec.attribute9;
613     END IF;
614 
615     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.context,
616                             l_Contract_rec.context)
617     THEN
618         x_context := l_x_Contract_rec.context;
619     END IF;
620 
621     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.discount_id,
622                             l_Contract_rec.discount_id)
623     THEN
624         x_discount_id := l_x_Contract_rec.discount_id;
625         x_discount := l_Contract_val_rec.discount;
626     END IF;
627 
628     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.last_updated_by,
629                             l_Contract_rec.last_updated_by)
630     THEN
631         x_last_updated_by := l_x_Contract_rec.last_updated_by;
632     END IF;
633 
634     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.price_list_id,
635                             l_Contract_rec.price_list_id)
636     THEN
637         x_price_list_id := l_x_Contract_rec.price_list_id;
638         x_price_list := l_Contract_val_rec.price_list;
639     END IF;
640 
641     IF NOT OE_GLOBALS.Equal(l_x_Contract_rec.pricing_contract_id,
642                             l_Contract_rec.pricing_contract_id)
643     THEN
644         x_pricing_contract_id := l_x_Contract_rec.pricing_contract_id;
645     END IF;
646 
647 
648     --  Write to cache.
649 
650     Write_Contract
651     (   p_Contract_rec                => l_x_Contract_rec
652     );
653 
654     --  Set return status.
655 
656     x_return_status := FND_API.G_RET_STS_SUCCESS;
657 
658     --  Get message count and data
659 
660     OE_MSG_PUB.Count_And_Get
661     (   p_count                       => x_msg_count
662     ,   p_data                        => x_msg_data
663     );
664 
665     oe_debug_pub.add('Exiting OE_OE_Form_Contract.Change_Attribute');
666 
667 EXCEPTION
668 
669     WHEN FND_API.G_EXC_ERROR THEN
670 
671         x_return_status := FND_API.G_RET_STS_ERROR;
672 
673         --  Get message count and data
674 
675         OE_MSG_PUB.Count_And_Get
676         (   p_count                       => x_msg_count
677         ,   p_data                        => x_msg_data
678         );
679 
680     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
681 
682         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
683 
684         --  Get message count and data
685 
686         OE_MSG_PUB.Count_And_Get
687         (   p_count                       => x_msg_count
688         ,   p_data                        => x_msg_data
689         );
690 
691     WHEN OTHERS THEN
692 
693         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
694 
695         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
696         THEN
697             OE_MSG_PUB.Add_Exc_Msg
698             (   G_PKG_NAME
699             ,   'Change_Attribute'
700             );
701         END IF;
702 
703         --  Get message count and data
704 
705         OE_MSG_PUB.Count_And_Get
706         (   p_count                       => x_msg_count
707         ,   p_data                        => x_msg_data
708         );
709 
710 END Change_Attribute;
711 
712 --  Procedure       Validate_And_Write
713 --
714 
715 PROCEDURE Validate_And_Write
716 (   x_return_status                 OUT VARCHAR2
717 ,   x_msg_count                     OUT NUMBER
718 ,   x_msg_data                      OUT VARCHAR2
719 ,   p_pricing_contract_id           IN  NUMBER
720 ,   x_creation_date                 OUT DATE
721 ,   x_created_by                    OUT NUMBER
722 ,   x_last_update_date              OUT DATE
723 ,   x_last_updated_by               OUT NUMBER
724 ,   x_last_update_login             OUT NUMBER
725 )
726 IS
727 l_Contract_rec                OE_Pricing_Cont_PUB.Contract_Rec_Type;
728 l_old_Contract_rec            OE_Pricing_Cont_PUB.Contract_Rec_Type;
729 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
730 l_return_status               VARCHAR2(1);
731 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
732 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
733 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
734 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
735 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
736 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
737 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
738 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
739 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
740 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
741 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
742 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
743 BEGIN
744 
745     oe_debug_pub.add('Entering OE_OE_Form_Contract.Validate_And_Write');
746 
747     --  Set control flags.
748 
749     l_control_rec.controlled_operation := TRUE;
750     l_control_rec.validate_entity      := TRUE;
751     l_control_rec.write_to_DB          := TRUE;
752 
753     l_control_rec.default_attributes   := FALSE;
754     l_control_rec.change_attributes    := FALSE;
755     l_control_rec.process              := FALSE;
756 
757     --  Instruct API to retain its caches
758 
759     l_control_rec.clear_api_cache      := FALSE;
760     l_control_rec.clear_api_requests   := FALSE;
761 
762     --  Read Contract from cache
763 
764     l_old_Contract_rec := Get_Contract
765     (   p_db_record                   => TRUE
766     ,   p_pricing_contract_id         => p_pricing_contract_id
767     );
768 
769     l_Contract_rec := Get_Contract
770     (   p_db_record                   => FALSE
771     ,   p_pricing_contract_id         => p_pricing_contract_id
772     );
773 
774     --  Set Operation.
775 
776     IF FND_API.To_Boolean(l_Contract_rec.db_flag) THEN
777         l_Contract_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
778     ELSE
779         l_Contract_rec.operation := OE_GLOBALS.G_OPR_CREATE;
780     END IF;
781 
782     --Revision Control S
783     IF FND_API.To_Boolean(g_Revision_Change) THEN
784         select oe_pricing_contracts_s.nextval into l_Contract_rec.pricing_contract_id  from dual;
785 	l_contract_rec.agreement_id := g_Agreement_Id;
786         l_Contract_rec.operation := OE_GLOBALS.G_OPR_CREATE;
787         l_Contract_rec.db_flag := FND_API.G_FALSE;
788 	g_Revision_Change := FND_API.G_FALSE;
789     END IF;
790     --Revision Control E
791 
792     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
793 
794     OE_Pricing_Cont_PVT.Process_Pricing_Cont
795     (   p_api_version_number          => 1.0
796     ,   p_init_msg_list               => FND_API.G_TRUE
797     ,   x_return_status               => l_return_status
798     ,   x_msg_count                   => x_msg_count
799     ,   x_msg_data                    => x_msg_data
800     ,   p_control_rec                 => l_control_rec
801     ,   p_Contract_rec                => l_Contract_rec
802     ,   p_old_Contract_rec            => l_old_Contract_rec
803     ,   x_Contract_rec                => l_x_Contract_rec
804     ,   x_Agreement_rec               => l_x_Agreement_rec
805     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
806     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
807     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
808     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
809     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
810     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
811     );
812 
813     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
814         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
815     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
816         RAISE FND_API.G_EXC_ERROR;
817     END IF;
818 
819 
820     --  Load OUT parameters.
821 
822 
823     x_creation_date                := l_x_Contract_rec.creation_date;
824     x_created_by                   := l_x_Contract_rec.created_by;
825     x_last_update_date             := l_x_Contract_rec.last_update_date;
826     x_last_updated_by              := l_x_Contract_rec.last_updated_by;
827     x_last_update_login            := l_x_Contract_rec.last_update_login;
828 
829     --  Clear Contract record cache
830 
831     Clear_Contract;
832 
833     --  Keep track of performed operations.
834 
835     l_old_Contract_rec.operation := l_Contract_rec.operation;
836 
837 
838     --  Set return status.
839 
840     x_return_status := FND_API.G_RET_STS_SUCCESS;
841 
842     --  Get message count and data
843 
844     OE_MSG_PUB.Count_And_Get
845     (   p_count                       => x_msg_count
846     ,   p_data                        => x_msg_data
847     );
848 
849     oe_debug_pub.add('Exiting OE_OE_Form_Contract.Validate_And_Write');
850 
851 EXCEPTION
852 
853     WHEN FND_API.G_EXC_ERROR THEN
854 
855         x_return_status := FND_API.G_RET_STS_ERROR;
856 
857         --  Get message count and data
858 
859         OE_MSG_PUB.Count_And_Get
860         (   p_count                       => x_msg_count
861         ,   p_data                        => x_msg_data
862         );
863 
864     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
865 
866         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
867 
868         --  Get message count and data
869 
870         OE_MSG_PUB.Count_And_Get
871         (   p_count                       => x_msg_count
872         ,   p_data                        => x_msg_data
873         );
874 
875     WHEN OTHERS THEN
876 
877         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
878 
879         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
880         THEN
881             OE_MSG_PUB.Add_Exc_Msg
882             (   G_PKG_NAME
883             ,   'Validate_And_Write'
884             );
885         END IF;
886 
887         --  Get message count and data
888 
889         OE_MSG_PUB.Count_And_Get
890         (   p_count                       => x_msg_count
891         ,   p_data                        => x_msg_data
892         );
893 
894 END Validate_And_Write;
895 
896 --  Procedure       Delete_Row
897 --
898 
899 PROCEDURE Delete_Row
900 (   x_return_status                 OUT VARCHAR2
901 ,   x_msg_count                     OUT NUMBER
902 ,   x_msg_data                      OUT VARCHAR2
903 ,   p_pricing_contract_id           IN  NUMBER
904 )
905 IS
906 l_Contract_rec                OE_Pricing_Cont_PUB.Contract_Rec_Type;
907 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
908 l_return_status               VARCHAR2(1);
909 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
910 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
911 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
912 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
913 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
914 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
915 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
916 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
917 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
918 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
919 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
920 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
921 BEGIN
922 
923     --  Set control flags.
924 
925     l_control_rec.controlled_operation := TRUE;
926     l_control_rec.validate_entity      := TRUE;
927     l_control_rec.write_to_DB          := TRUE;
928 
929     l_control_rec.default_attributes   := FALSE;
930     l_control_rec.change_attributes    := FALSE;
931     l_control_rec.process              := FALSE;
932 
933     --  Instruct API to retain its caches
934 
935     l_control_rec.clear_api_cache      := FALSE;
936     l_control_rec.clear_api_requests   := FALSE;
937 
938     --  Read DB record from cache
939 
940     l_Contract_rec := Get_Contract
941     (   p_db_record                   => TRUE
942     ,   p_pricing_contract_id         => p_pricing_contract_id
943     );
944 
945     --  Set Operation.
946 
947     l_Contract_rec.operation := OE_GLOBALS.G_OPR_DELETE;
948 
949     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
950 
951     OE_Pricing_Cont_PVT.Process_Pricing_Cont
952     (   p_api_version_number          => 1.0
953     ,   p_init_msg_list               => FND_API.G_TRUE
954     ,   x_return_status               => l_return_status
955     ,   x_msg_count                   => x_msg_count
956     ,   x_msg_data                    => x_msg_data
957     ,   p_control_rec                 => l_control_rec
958     ,   p_Contract_rec                => l_Contract_rec
959     ,   x_Contract_rec                => l_x_Contract_rec
960     ,   x_Agreement_rec               => l_x_Agreement_rec
961     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
962     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
963     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
964     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
965     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
966     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
967     );
968 
969     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
970         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
971     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
972         RAISE FND_API.G_EXC_ERROR;
973     END IF;
974 
975 
976     --  Clear Contract record cache
977 
978     Clear_Contract;
979 
980     --  Set return status.
981 
982     x_return_status := FND_API.G_RET_STS_SUCCESS;
983 
984     --  Get message count and data
985 
986     OE_MSG_PUB.Count_And_Get
987     (   p_count                       => x_msg_count
988     ,   p_data                        => x_msg_data
989     );
990 
991 
992 EXCEPTION
993 
994     WHEN FND_API.G_EXC_ERROR THEN
995 
996         x_return_status := FND_API.G_RET_STS_ERROR;
997 
998         --  Get message count and data
999 
1000         OE_MSG_PUB.Count_And_Get
1001         (   p_count                       => x_msg_count
1002         ,   p_data                        => x_msg_data
1003         );
1004 
1005     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1006 
1007         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1008 
1009         --  Get message count and data
1010 
1011         OE_MSG_PUB.Count_And_Get
1012         (   p_count                       => x_msg_count
1013         ,   p_data                        => x_msg_data
1014         );
1015 
1016     WHEN OTHERS THEN
1017 
1018         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1019 
1020         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1021         THEN
1022             OE_MSG_PUB.Add_Exc_Msg
1023             (   G_PKG_NAME
1024             ,   'Delete_Row'
1025             );
1026         END IF;
1027 
1028         --  Get message count and data
1029 
1030         OE_MSG_PUB.Count_And_Get
1031         (   p_count                       => x_msg_count
1032         ,   p_data                        => x_msg_data
1033         );
1034 
1035 END Delete_Row;
1036 
1037 --  Procedure       Process_Entity
1038 --
1039 
1040 PROCEDURE Process_Entity
1041 (   x_return_status                 OUT VARCHAR2
1042 ,   x_msg_count                     OUT NUMBER
1043 ,   x_msg_data                      OUT VARCHAR2
1044 )
1045 IS
1046 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1047 l_return_status               VARCHAR2(1);
1048 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
1049 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1050 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
1051 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
1052 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
1053 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
1054 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
1055 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
1056 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
1057 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
1058 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
1059 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
1060 BEGIN
1061 
1062     --  Set control flags.
1063 
1064     l_control_rec.controlled_operation := TRUE;
1065     l_control_rec.process              := TRUE;
1066     l_control_rec.process_entity       := OE_GLOBALS.G_ENTITY_CONTRACT;
1067 
1068     l_control_rec.default_attributes   := FALSE;
1069     l_control_rec.change_attributes    := FALSE;
1070     l_control_rec.validate_entity      := FALSE;
1071     l_control_rec.write_to_DB          := FALSE;
1072 
1073     --  Instruct API to clear its request table
1074 
1075     l_control_rec.clear_api_cache      := FALSE;
1076     l_control_rec.clear_api_requests   := FALSE;
1077 
1078     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
1079 
1080     OE_Pricing_Cont_PVT.Process_Pricing_Cont
1081     (   p_api_version_number          => 1.0
1082     ,   p_init_msg_list               => FND_API.G_TRUE
1083     ,   x_return_status               => l_return_status
1084     ,   x_msg_count                   => x_msg_count
1085     ,   x_msg_data                    => x_msg_data
1086     ,   p_control_rec                 => l_control_rec
1087     ,   x_Contract_rec                => l_x_Contract_rec
1088     ,   x_Agreement_rec               => l_x_Agreement_rec
1089     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
1090     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
1091     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
1092     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
1093     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
1094     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
1095     );
1096 
1097     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1098         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1099     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1100         RAISE FND_API.G_EXC_ERROR;
1101     END IF;
1102 
1103 
1104     --  Set return status.
1105 
1106     x_return_status := FND_API.G_RET_STS_SUCCESS;
1107 
1108     --  Get message count and data
1109 
1110     OE_MSG_PUB.Count_And_Get
1111     (   p_count                       => x_msg_count
1112     ,   p_data                        => x_msg_data
1113     );
1114 
1115 
1116 EXCEPTION
1117 
1118     WHEN FND_API.G_EXC_ERROR THEN
1119 
1120         x_return_status := FND_API.G_RET_STS_ERROR;
1121 
1122         --  Get message count and data
1123 
1124         OE_MSG_PUB.Count_And_Get
1125         (   p_count                       => x_msg_count
1126         ,   p_data                        => x_msg_data
1127         );
1128 
1129     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1130 
1131         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1132 
1133         --  Get message count and data
1134 
1135         OE_MSG_PUB.Count_And_Get
1136         (   p_count                       => x_msg_count
1137         ,   p_data                        => x_msg_data
1138         );
1139 
1140     WHEN OTHERS THEN
1141 
1142         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1143 
1144         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1145         THEN
1146             OE_MSG_PUB.Add_Exc_Msg
1147             (   G_PKG_NAME
1148             ,   'Process_Entity'
1149             );
1150         END IF;
1151 
1152         --  Get message count and data
1153 
1154         OE_MSG_PUB.Count_And_Get
1155         (   p_count                       => x_msg_count
1156         ,   p_data                        => x_msg_data
1157         );
1158 
1159 END Process_Entity;
1160 
1161 --  Procedure       Process_Object
1162 --
1163 
1164 PROCEDURE Process_Object
1165 (   x_return_status                 OUT VARCHAR2
1166 ,   x_msg_count                     OUT NUMBER
1167 ,   x_msg_data                      OUT VARCHAR2
1168 )
1169 IS
1170 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1171 l_return_status               VARCHAR2(1);
1172 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
1173 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1174 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
1175 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
1176 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
1177 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
1178 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
1179 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
1180 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
1181 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
1182 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
1183 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
1184 BEGIN
1185 
1186     --  Set control flags.
1187 
1188     l_control_rec.controlled_operation := TRUE;
1189     l_control_rec.process              := TRUE;
1190     l_control_rec.process_entity       := OE_GLOBALS.G_ENTITY_ALL;
1191 
1192     l_control_rec.default_attributes   := FALSE;
1193     l_control_rec.change_attributes    := FALSE;
1194     l_control_rec.validate_entity      := FALSE;
1195     l_control_rec.write_to_DB          := FALSE;
1196 
1197     --  Instruct API to clear its request table
1198 
1199     l_control_rec.clear_api_cache      := FALSE;
1200     l_control_rec.clear_api_requests   := TRUE;
1201 
1202     --  Call OE_Pricing_Cont_PVT.Process_Pricing_Cont
1203 
1204     OE_Pricing_Cont_PVT.Process_Pricing_Cont
1205     (   p_api_version_number          => 1.0
1206     ,   p_init_msg_list               => FND_API.G_TRUE
1207     ,   x_return_status               => l_return_status
1208     ,   x_msg_count                   => x_msg_count
1209     ,   x_msg_data                    => x_msg_data
1210     ,   p_control_rec                 => l_control_rec
1211     ,   x_Contract_rec                => l_x_Contract_rec
1212     ,   x_Agreement_rec               => l_x_Agreement_rec
1213     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
1214     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
1215     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
1216     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
1217     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
1218     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
1219     );
1220 
1221     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1222         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1223     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1224         RAISE FND_API.G_EXC_ERROR;
1225     END IF;
1226 
1227 
1228     --  Set return status.
1229 
1230     x_return_status := FND_API.G_RET_STS_SUCCESS;
1231 
1232     --  Get message count and data
1233 
1234     OE_MSG_PUB.Count_And_Get
1235     (   p_count                       => x_msg_count
1236     ,   p_data                        => x_msg_data
1237     );
1238 
1239 
1240 EXCEPTION
1241 
1242     WHEN FND_API.G_EXC_ERROR THEN
1243 
1244         x_return_status := FND_API.G_RET_STS_ERROR;
1245 
1246         --  Get message count and data
1247 
1248         OE_MSG_PUB.Count_And_Get
1249         (   p_count                       => x_msg_count
1250         ,   p_data                        => x_msg_data
1251         );
1252 
1253     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1254 
1255         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1256 
1257         --  Get message count and data
1258 
1259         OE_MSG_PUB.Count_And_Get
1260         (   p_count                       => x_msg_count
1261         ,   p_data                        => x_msg_data
1262         );
1263 
1264     WHEN OTHERS THEN
1265 
1266         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1267 
1268         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1269         THEN
1270             OE_MSG_PUB.Add_Exc_Msg
1271             (   G_PKG_NAME
1272             ,   'Process_Object'
1273             );
1274         END IF;
1275 
1276         --  Get message count and data
1277 
1278         OE_MSG_PUB.Count_And_Get
1279         (   p_count                       => x_msg_count
1280         ,   p_data                        => x_msg_data
1281         );
1282 
1283 END Process_Object;
1284 
1285 --  Procedure       lock_Row
1286 --
1287 
1288 PROCEDURE Lock_Row
1289 (   x_return_status                 OUT VARCHAR2
1290 ,   x_msg_count                     OUT NUMBER
1291 ,   x_msg_data                      OUT VARCHAR2
1292 ,   p_agreement_id                  IN  NUMBER
1293 ,   p_attribute1                    IN  VARCHAR2
1294 ,   p_attribute10                   IN  VARCHAR2
1295 ,   p_attribute11                   IN  VARCHAR2
1296 ,   p_attribute12                   IN  VARCHAR2
1297 ,   p_attribute13                   IN  VARCHAR2
1298 ,   p_attribute14                   IN  VARCHAR2
1299 ,   p_attribute15                   IN  VARCHAR2
1300 ,   p_attribute2                    IN  VARCHAR2
1301 ,   p_attribute3                    IN  VARCHAR2
1302 ,   p_attribute4                    IN  VARCHAR2
1303 ,   p_attribute5                    IN  VARCHAR2
1304 ,   p_attribute6                    IN  VARCHAR2
1305 ,   p_attribute7                    IN  VARCHAR2
1306 ,   p_attribute8                    IN  VARCHAR2
1307 ,   p_attribute9                    IN  VARCHAR2
1308 ,   p_context                       IN  VARCHAR2
1309 ,   p_created_by                    IN  NUMBER
1310 ,   p_creation_date                 IN  DATE
1311 ,   p_discount_id                   IN  NUMBER
1312 ,   p_last_updated_by               IN  NUMBER
1313 ,   p_last_update_date              IN  DATE
1314 ,   p_last_update_login             IN  NUMBER
1315 ,   p_price_list_id                 IN  NUMBER
1316 ,   p_pricing_contract_id           IN  NUMBER
1317 )
1318 IS
1319 l_return_status               VARCHAR2(1);
1320 l_Contract_rec                OE_Pricing_Cont_PUB.Contract_Rec_Type;
1321 l_x_Contract_rec              OE_Pricing_Cont_PUB.Contract_Rec_Type;
1322 l_x_Agreement_rec             OE_Pricing_Cont_PUB.Agreement_Rec_Type;
1323 l_x_Price_LHeader_rec         OE_Price_List_PUB.Price_List_Rec_Type;
1324 l_x_Discount_Header_rec       OE_Pricing_Cont_PUB.Discount_Header_Rec_Type;
1325 l_x_Price_LLine_rec           OE_Price_List_PUB.Price_List_Line_Rec_Type;
1326 l_x_Price_LLine_tbl           OE_Price_List_PUB.Price_List_Line_Tbl_Type;
1327 l_x_Discount_Cust_rec         OE_Pricing_Cont_PUB.Discount_Cust_Rec_Type;
1328 l_x_Discount_Cust_tbl         OE_Pricing_Cont_PUB.Discount_Cust_Tbl_Type;
1329 l_x_Discount_Line_rec         OE_Pricing_Cont_PUB.Discount_Line_Rec_Type;
1330 l_x_Discount_Line_tbl         OE_Pricing_Cont_PUB.Discount_Line_Tbl_Type;
1331 l_x_Price_Break_rec           OE_Pricing_Cont_PUB.Price_Break_Rec_Type;
1332 l_x_Price_Break_tbl           OE_Pricing_Cont_PUB.Price_Break_Tbl_Type;
1333 BEGIN
1334 
1335     --  Load Contract record
1336 
1337     l_Contract_rec.agreement_id    := p_agreement_id;
1338     l_Contract_rec.attribute1      := p_attribute1;
1339     l_Contract_rec.attribute10     := p_attribute10;
1340     l_Contract_rec.attribute11     := p_attribute11;
1341     l_Contract_rec.attribute12     := p_attribute12;
1342     l_Contract_rec.attribute13     := p_attribute13;
1343     l_Contract_rec.attribute14     := p_attribute14;
1344     l_Contract_rec.attribute15     := p_attribute15;
1345     l_Contract_rec.attribute2      := p_attribute2;
1346     l_Contract_rec.attribute3      := p_attribute3;
1347     l_Contract_rec.attribute4      := p_attribute4;
1348     l_Contract_rec.attribute5      := p_attribute5;
1349     l_Contract_rec.attribute6      := p_attribute6;
1350     l_Contract_rec.attribute7      := p_attribute7;
1351     l_Contract_rec.attribute8      := p_attribute8;
1352     l_Contract_rec.attribute9      := p_attribute9;
1353     l_Contract_rec.context         := p_context;
1354     l_Contract_rec.created_by      := p_created_by;
1355     l_Contract_rec.creation_date   := p_creation_date;
1356     l_Contract_rec.discount_id     := p_discount_id;
1357     l_Contract_rec.last_updated_by := p_last_updated_by;
1358     l_Contract_rec.last_update_date := p_last_update_date;
1359     l_Contract_rec.last_update_login := p_last_update_login;
1360     l_Contract_rec.price_list_id   := p_price_list_id;
1361     l_Contract_rec.pricing_contract_id := p_pricing_contract_id;
1362 
1363     --  Call OE_Pricing_Cont_PVT.Lock_Pricing_Cont
1364 
1365     OE_Pricing_Cont_PVT.Lock_Pricing_Cont
1366     (   p_api_version_number          => 1.0
1367     ,   p_init_msg_list               => FND_API.G_TRUE
1368     ,   x_return_status               => l_return_status
1369     ,   x_msg_count                   => x_msg_count
1370     ,   x_msg_data                    => x_msg_data
1371     ,   p_Contract_rec                => l_Contract_rec
1372     ,   x_Contract_rec                => l_x_Contract_rec
1373     ,   x_Agreement_rec               => l_x_Agreement_rec
1374     ,   x_Price_LHeader_rec           => l_x_Price_LHeader_rec
1375     ,   x_Discount_Header_rec         => l_x_Discount_Header_rec
1376     ,   x_Price_LLine_tbl             => l_x_Price_LLine_tbl
1377     ,   x_Discount_Cust_tbl           => l_x_Discount_Cust_tbl
1378     ,   x_Discount_Line_tbl           => l_x_Discount_Line_tbl
1379     ,   x_Price_Break_tbl             => l_x_Price_Break_tbl
1380     );
1381 
1382     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1383 
1384         --  Set DB flag and write record to cache.
1385 
1386         l_x_Contract_rec.db_flag := FND_API.G_TRUE;
1387 
1388         Write_Contract
1389         (   p_Contract_rec                => l_x_Contract_rec
1390         ,   p_db_record                   => TRUE
1391         );
1392 
1393     END IF;
1394 
1395     --  Set return status.
1396 
1397     x_return_status := l_return_status;
1398 
1399     --  Get message count and data
1400 
1401     OE_MSG_PUB.Count_And_Get
1402     (   p_count                       => x_msg_count
1403     ,   p_data                        => x_msg_data
1404     );
1405 
1406 
1407 EXCEPTION
1408 
1409     WHEN OTHERS THEN
1410 
1411         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1412         THEN
1413             OE_MSG_PUB.Add_Exc_Msg
1414             (   G_PKG_NAME
1415             ,   'Lock_Row'
1416             );
1417         END IF;
1418 
1419         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1420 
1421         --  Get message count and data
1422 
1423         OE_MSG_PUB.Count_And_Get
1424         (   p_count                       => x_msg_count
1425         ,   p_data                        => x_msg_data
1426         );
1427 
1428 
1429 
1430 END Lock_Row;
1431 
1432 --  Procedures maintaining Contract record cache.
1433 
1434 PROCEDURE Write_Contract
1435 (   p_Contract_rec                  IN  OE_Pricing_Cont_PUB.Contract_Rec_Type
1436 ,   p_db_record                     IN  BOOLEAN := FALSE
1437 )
1438 IS
1439 BEGIN
1440 
1441     g_Contract_rec := p_Contract_rec;
1442 
1443     IF p_db_record THEN
1444 
1445         g_db_Contract_rec := p_Contract_rec;
1446 
1447     END IF;
1448 
1449 END Write_Contract;
1450 
1451 FUNCTION Get_Contract
1452 (   p_db_record                     IN  BOOLEAN := FALSE
1453 ,   p_pricing_contract_id           IN  NUMBER
1454 )
1455 RETURN OE_Pricing_Cont_PUB.Contract_Rec_Type
1456 IS
1457 BEGIN
1458 
1459     IF  p_pricing_contract_id <> g_Contract_rec.pricing_contract_id
1460     THEN
1461 
1462         --  Query row from DB
1463 
1464         g_Contract_rec := OE_Contract_Util.Query_Row
1465         (   p_pricing_contract_id         => p_pricing_contract_id
1466         );
1467 
1468         g_Contract_rec.db_flag         := FND_API.G_TRUE;
1469 
1470         --  Load DB record
1471 
1472         g_db_Contract_rec              := g_Contract_rec;
1473 
1474     END IF;
1475 
1476     IF p_db_record THEN
1477 
1478         RETURN g_db_Contract_rec;
1479 
1480     ELSE
1481 
1482         RETURN g_Contract_rec;
1483 
1484     END IF;
1485 
1486 END Get_Contract;
1487 
1488 PROCEDURE Clear_Contract
1489 IS
1490 BEGIN
1491 
1492     g_Contract_rec                 := OE_Pricing_Cont_PUB.G_MISS_CONTRACT_REC;
1493     g_db_Contract_rec              := OE_Pricing_Cont_PUB.G_MISS_CONTRACT_REC;
1494 
1495 END Clear_Contract;
1496 
1497 -- Revision Control S
1498 PROCEDURE Create_Revision (l_Agreement_Id IN NUMBER)
1499 IS
1500 BEGIN
1501     g_Revision_Change := FND_API.G_TRUE;
1502     g_Agreement_Id := l_Agreement_Id;
1503     --Validate_And_Write;
1504     --g_Revision_Change := FND_API.G_FALSE;
1505 END;
1506 -- Revision Control E
1507 
1508 END OE_OE_Form_Contract;