DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_BLANKET_UTIL

Source


1 PACKAGE BODY OE_Blanket_util AS
2 /* $Header: OEXUBSOB.pls 120.31.12020000.5 2013/01/08 10:22:09 sipillut ship $ */
3 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_Blanket_Util';
4 
5 PROCEDURE Insert_History_Records
6           (p_header_rec           IN OUT NOCOPY OE_Blanket_PUB.Header_Rec_Type
7           ,p_line_tbl             IN OUT NOCOPY OE_Blanket_PUB.Line_Tbl_Type
8           ,p_version_flag in varchar2 := null
9           ,p_phase_change_flag in varchar2 := null
10           ,x_return_status        IN OUT NOCOPY VARCHAR2
11           );
12 
13 PROCEDURE Validate_Min_Max_Range (p_min_value IN NUMBER, p_max_value IN NUMBER, p_attribute IN VARCHAR2, x_return_status IN OUT NOCOPY VARCHAR2);
14 
15 PROCEDURE Lock_Blanket
16 (   x_return_status             OUT NOCOPY VARCHAR2
17 ,   p_blanket_id                IN NUMBER
18 ,   p_blanket_line_id           IN NUMBER
19 ,   p_x_lock_control            IN OUT NOCOPY NUMBER
20 );
21 
22 -- ER 5743580
23 --Added for Bug 9027699
24 FUNCTION  is_end_date_operation
25 ( p_line_rec           IN     OE_Blanket_PUB.line_rec_type,
26   p_old_line_rec       IN     OE_Blanket_PUB.line_rec_type)
27 RETURN BOOLEAN
28 IS
29 l_dummy VARCHAR2(10);
30 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
31 l_return_status varchar2(1);
32 
33 BEGIN
34 IF l_debug_level > 0 then
35 oe_debug_pub.add('Entering is_end_date_operation ');
36 end if;
37 IF p_line_rec.operation = oe_globals.g_opr_update AND p_line_rec.end_date_active = trunc(sysdate) AND
38    NOT OE_GLOBALS.Equal(p_line_rec.end_date_active, p_old_line_rec.end_date_active) THEN
39 
40 	IF  p_line_rec.override_blanket_controls_flag = 'N' THEN
41           IF nvl(p_line_rec.released_amount,0) < p_line_rec.blanket_min_amount THEN
42               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
43               OE_MSG_PUB.ADD;
44               if l_debug_level > 0 then
45                oe_debug_pub.add('Blanket line close min amount ');
46               end if;
47              -- return false; This is a warning..hence not returning ..
48 
49           ELSIF nvl(p_line_rec.released_quantity,0) < p_line_rec.blanket_min_quantity THEN
50               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
51               OE_MSG_PUB.ADD;
52               if l_debug_level > 0 then
53                  oe_debug_pub.add('Blanket line close min quantity ');
54               end if;
55               --return false; This is a warning..hence not returning ..
56           END IF;
57 	END IF;
58 
59 
60 	BEGIN
61 		SELECT 'ERROR'
62 		INTO l_dummy
63 		FROM OE_ORDER_LINES
64 		WHERE trunc(request_date) > trunc(p_line_rec.end_date_active)
65 		--- Bug 14487632, FP of 14469059 Start
66 		AND OPEN_FLAG = 'Y'
67 		--- Bug 14487632, FP of 14469059 End
68 		AND BLANKET_NUMBER = p_line_rec.order_number
69 		AND BLANKET_LINE_NUMBER = p_line_rec.line_number
70 		AND ROWNUM = 1;
71 
72 		IF l_dummy = 'ERROR' THEN
73 			fnd_message.set_name('ONT', 'OE_BLKT_LINE_RELEASE_END_DATE');
74 			OE_MSG_PUB.Add;
75 			return false;
76 		END IF;
77 
78 	EXCEPTION
79 	WHEN NO_DATA_FOUND THEN
80 	NULL;  --no rows with conflicting end dates
81 	END;
82 
83 
84       --validate item uniqueness
85       -- This is called just to make sure that a delayed request is logged..else validate_entity was being called again
86       -- from process_object
87       OE_Delayed_Requests_Pvt.Log_Request(p_Entity_Code =>
88 	         OE_BLANKET_pub.G_ENTITY_BLANKET_LINE ,
89                p_Entity_Id => p_line_rec.line_id,
90                p_requesting_entity_code    =>
91                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
92                p_requesting_entity_id      => p_line_rec.line_id,
93                p_request_type => 'VALIDATE_BLANKET_INV_ITEM',
94                p_param1    => p_line_rec.inventory_item_id,
95                p_param2    => p_line_rec.header_id,
96                p_param3    => p_line_rec.item_identifier_type,
97 	       p_param4    => p_line_rec.ordered_item_id, --bug6826787
98 	       p_param5    => p_line_rec.ordered_item,    --bug6826787
99                p_date_param1    => p_line_rec.start_date_active,
100                p_date_param2    => p_line_rec.end_date_active,
101                x_return_status => l_return_status);
102 
103     return true;
104 
105 
106 ELSE
107     return false;
108 END IF;
109 
110 END is_end_date_operation;
111 
112 
113 FUNCTION Validate_Ship_to_Org
114 ( p_ship_to_org_id      IN  NUMBER
115 , p_sold_to_org_id      IN  NUMBER)
116 RETURN BOOLEAN
117 IS
118 l_dummy VARCHAR2(10);
119 l_site_use_code   VARCHAR2(30) := 'SHIP_TO';
120 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
121 
122 BEGIN
123     IF l_debug_level > 0 then
124     oe_debug_pub.add('Entering Validate_ship_to_org',1);
125     oe_debug_pub.add('ship_to_org_id :'||to_char(p_ship_to_org_id),2);
126     END IF;
127 
128     IF  g_customer_relations = 'N' THEN
129 
130     Select 'VALID'
131     Into   l_dummy
132     From   oe_ship_to_orgs_v
133     Where  customer_id = p_sold_to_org_id
134     AND          site_use_id = p_ship_to_org_id
135     AND  status = 'A'
136     AND  address_status ='A'; --bug 2752321
137     IF l_debug_level > 0 then
138     oe_debug_pub.add('Exiting Validate_ship_to_org',1);
139     END IF;
140     RETURN TRUE;
141     ELSIF g_customer_relations = 'Y' THEN
142         IF l_debug_level > 0 then
143         oe_debug_pub.add ('Cr: Yes Line Ship',2);
144         END IF;
145 
146     SELECT /* MOAC_SQL_CHANGE */ 'VALID'
147     Into   l_dummy
148     FROM   HZ_CUST_SITE_USES_ALL SITE,
149            HZ_CUST_ACCT_SITES ACCT_SITE
150     WHERE SITE.SITE_USE_ID     = p_ship_to_org_id
151     AND SITE.SITE_USE_CODE     = l_site_use_code
152     AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
153     AND SITE.STATUS = 'A'
154        AND ACCT_SITE.STATUS ='A' AND --bug 2752321
155     ACCT_SITE.CUST_ACCOUNT_ID in (
156                     SELECT p_sold_to_org_id FROM DUAL
157                     UNION
158                     SELECT CUST_ACCOUNT_ID FROM
159                     HZ_CUST_ACCT_RELATE_ALL h WHERE
160                     RELATED_CUST_ACCOUNT_ID = p_sold_to_org_id
161                     and h.org_id=acct_site.org_id
162                         and ship_to_flag = 'Y' and status = 'A')
163     AND EXISTS(SELECT 1 FROM HZ_CUST_ACCOUNTS WHERE CUST_ACCOUNT_ID =
164 ACCT_SITE.CUST_ACCOUNT_ID AND STATUS='A')
165     AND ROWNUM = 1;
166    RETURN TRUE;
167     ELSIF g_customer_relations = 'A' THEN
168     SELECT  'VALID'
169     INTO    l_dummy
170     FROM    OE_SHIP_TO_ORGS_V   SHP
171     WHERE   SHP.ORGANIZATION_ID =p_ship_to_org_id
172     AND     SHP.STATUS = 'A'
173     AND     SHP.ADDRESS_STATUS ='A' --bug 2752321
174     AND     SYSDATE BETWEEN NVL(SHP.START_DATE_ACTIVE, SYSDATE)
175                     AND     NVL(SHP.END_DATE_ACTIVE, SYSDATE);
176 
177     RETURN TRUE;
178 
179     END IF;
180    RETURN TRUE;
181 
182 
183 EXCEPTION
184 
185    WHEN OTHERS THEN
186       RETURN FALSE;
187 
188 END Validate_Ship_To_Org;
189 
190 
191 FUNCTION Validate_Deliver_To_Org
192 ( p_deliver_to_org_id IN  NUMBER
193 , p_sold_to_org_id        IN  NUMBER)
194 RETURN BOOLEAN
195 IS
196 l_dummy VARCHAR2(10);
197 l_site_use_code   VARCHAR2(30) := 'DELIVER_TO';
198 
199 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
200 BEGIN
201   IF l_debug_level > 0 then
202   oe_debug_pub.add('Entering OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
203   oe_debug_pub.add('deliver_to_org_id :'||to_char(p_deliver_to_org_id),2);
204   END IF;
205 
206 
207   IF g_customer_relations  = 'N' THEN
208     SELECT 'VALID'
209     INTO   l_dummy
210     FROM   oe_deliver_to_orgs_v
211     WHERE  customer_id = p_sold_to_org_id
212     AND          site_use_id = p_deliver_to_org_id
213     AND  status = 'A'
214     AND  address_status ='A';--bug 2752321
215     IF l_debug_level > 0 then
216     oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
217     END IF;
218     RETURN TRUE;
219 
220   ELSIF g_customer_relations = 'Y' THEN
221     IF l_debug_level > 0 then
222     oe_debug_pub.add('Cr: Yes Line Deliver',2);
223     END IF;
224 
225     SELECT /* MOAC_SQL_CHANGE */ 'VALID'
226       Into   l_dummy
227       FROM   HZ_CUST_SITE_USES_ALL SITE,
228            HZ_CUST_ACCT_SITES ACCT_SITE
229      WHERE SITE.SITE_USE_ID     = p_deliver_to_org_id
230        AND SITE.SITE_USE_CODE     = l_site_use_code
231        AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
232        AND SITE.STATUS = 'A'
233        AND ACCT_SITE.STATUS ='A' AND
234        ACCT_SITE.CUST_ACCOUNT_ID in (
235                     SELECT p_sold_to_org_id FROM DUAL
236                     UNION
237                     SELECT CUST_ACCOUNT_ID FROM
238                     HZ_CUST_ACCT_RELATE_ALL h WHERE
239                     RELATED_CUST_ACCOUNT_ID = p_sold_to_org_id
240                     and h.org_id=acct_site.org_id
241                         and ship_to_flag = 'Y' and status='A')
242     AND EXISTS(SELECT 1 FROM HZ_CUST_ACCOUNTS WHERE CUST_ACCOUNT_ID =
243 ACCT_SITE.CUST_ACCOUNT_ID AND STATUS='A')
244         AND ROWNUM = 1;
245 
246     IF l_debug_level > 0 then
247     oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
248     END IF;
249     RETURN TRUE;
250 
251   ELSIF g_customer_relations = 'A' THEN
252 
253     SELECT  'VALID'
254       INTO    l_dummy
255       FROM    OE_DELIVER_TO_ORGS_V   DEL
256      WHERE   DEL.ORGANIZATION_ID =p_deliver_to_org_id
257        AND     DEL.STATUS = 'A'
258                AND DEL.ADDRESS_STATUS ='A' --bug 2752321
259        AND     SYSDATE BETWEEN NVL(DEL.START_DATE_ACTIVE, SYSDATE)
260                     AND     NVL(DEL.END_DATE_ACTIVE, SYSDATE);
261     IF l_debug_level > 0 then
262     oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
263     END IF;
264     RETURN TRUE;
265 
266 
267   END IF;
268    IF l_debug_level > 0 then
269   oe_debug_pub.add('Exiting OE_VALIDATE_LINE.Validate_Deliver_To_Org',1);
270    END IF;
271   RETURN TRUE;
272 
273 EXCEPTION
274 
275    WHEN OTHERS THEN
276       RETURN FALSE;
277 
278 END Validate_Deliver_To_Org;
279 
280 
281 FUNCTION Validate_Invoice_To_Org
282 ( p_Invoice_to_org_id IN  NUMBER
283 , p_sold_to_org_id        IN  NUMBER)
284 RETURN BOOLEAN
285 IS
286 l_dummy VARCHAR2(10);
287 l_site_use_code   VARCHAR2(30) := 'BILL_TO';
288 
289 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
290 BEGIN
291   IF l_debug_level > 0 then
292   oe_debug_pub.add('Entering Validate_Invoice_To_Org',1);
293   oe_debug_pub.add('Invoice_to_org_id :'||to_char(p_Invoice_to_org_id),2);
294   END IF;
295 
296 
297   IF g_customer_relations  = 'N' THEN
298 
299             Select 'VALID'
300             Into   l_dummy
301             From   oe_invoice_to_orgs_v
302             Where  customer_id = p_sold_to_org_id
303             And    site_use_id = p_invoice_to_org_id
304             and    status='A'
305             and   address_status ='A';
306           RETURN TRUE;
307 
308     ELSIF g_customer_relations = 'Y' THEN
309         IF l_debug_level > 0 then
310         oe_debug_pub.add('Cr: Yes Line Inv',2);
311         END IF;
312 
313     SELECT /* MOAC_SQL_CHANGE */ 'VALID'
314     Into   l_dummy
315     FROM   HZ_CUST_SITE_USES_ALL SITE,
316            HZ_CUST_ACCT_SITES ACCT_SITE
317     WHERE SITE.SITE_USE_ID     = p_invoice_to_org_id
318     AND SITE.SITE_USE_CODE     = l_site_use_code
319     AND SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
320     AND SITE.STATUS = 'A'
321        AND ACCT_SITE.STATUS ='A' AND
322     ACCT_SITE.CUST_ACCOUNT_ID in (
323                     SELECT p_sold_to_org_id FROM DUAL
324                     UNION
325                     SELECT CUST_ACCOUNT_ID FROM
326                     HZ_CUST_ACCT_RELATE_ALL h WHERE
327                     RELATED_CUST_ACCOUNT_ID = p_sold_to_org_id
328                     and h.org_id=acct_site.org_id
329                         and bill_to_flag = 'Y' and status='A')
330     AND EXISTS(SELECT 1 FROM HZ_CUST_ACCOUNTS WHERE CUST_ACCOUNT_ID = ACCT_SITE.CUST_ACCOUNT_ID AND STATUS='A')
331     AND ROWNUM = 1;
332 
333   RETURN TRUE;
334   END IF;
335   RETURN TRUE;
336 
337         EXCEPTION
338                 WHEN OTHERS THEN
339            RETURN FALSE;
340    END Validate_Invoice_To_Org;
341  -- End ER 5743580
342 
343 
344 PROCEDURE create_price_list(
345 			    p_index in NUMBER,
346 			    x_return_status OUT NOCOPY varchar2)
347 IS
348  gpr_return_status varchar2(1) := NULL;
349  gpr_msg_count number := 0;
350  gpr_msg_data varchar2(2000);
351  gpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
352  gpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
353  gpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
354  gpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
355  gpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
356  l_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
357  gpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
358  gpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
359  gpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
360  ppr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
361  ppr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
362  ppr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
363  ppr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
364  ppr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
365  ppr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
366  ppr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
367  ppr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
368  xpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
369  xpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
370  xpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
371  xpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
372  xpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
373  xpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
374  xpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
375  xpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
376  K number := 1;
377  j number := 1;
378  I number := p_Index;
379  lheader_id number;
380  l_list_line_seq NUMBER;
381  ind NUMBER := 1;
382 --
383 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
384 --
385 l_user_precedence NUMBER; --Bug#8468331
386 
387 BEGIN
388    /* set the list_header_id to g_miss_num */
389 
390     if l_debug_level > 0 then
391 	oe_debug_pub.add('Blanket In create price list');
392     end if;
393 	IF oe_delayed_requests_pvt.g_delayed_requests(I).param1 IS NULL THEN
394 		RETURN;
395 	END IF;
396 
397    gpr_price_list_rec.list_header_id := FND_API.G_MISS_NUM;
398    gpr_price_list_rec.name := oe_delayed_requests_pvt.g_delayed_requests(I).param1;
399    gpr_price_list_rec.list_type_code := 'PRL';
400    gpr_price_list_rec.list_source_code := 'BLKT';
401 --   gpr_price_list_rec.description := oe_delayed_requests_pvt.g_delayed_requests(I).paramtext1;
402    gpr_price_list_rec.currency_code := oe_delayed_requests_pvt.g_delayed_requests(I).param2;
403    --11i10 Pricing Changes Start
404    if oe_code_control.get_code_release_level >= '110510' then
405       gpr_price_list_rec.list_source_code := 'BSO';
406       gpr_price_list_rec.orig_system_header_ref :=
407                 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
408       gpr_price_list_rec.shareable_flag := 'N';
409       gpr_price_list_rec.sold_to_org_id :=
410                 oe_delayed_requests_pvt.g_delayed_requests(I).param7;
411       -- Add blanket header qualifier
412         l_qualifiers_tbl(1).excluder_flag := 'N';
413         l_qualifiers_tbl(1).comparison_operator_code := '=';
414         l_qualifiers_tbl(1).qualifier_context := 'ORDER';
415 	--Bug#8468331
416         /*The precedence with which pricing was being called was hardcoded as 700(the seeded value)
417         so even if this value is changed in Pricing Setup the price list being created via BSO has
418         the precedence as 700 and not the user updated value.*/
419         SELECT a.user_precedence INTO l_user_precedence
420 	FROM   qp_segments_v a,
421 	       qp_prc_contexts_b b,
422 	       qp_pte_segments c
423 	WHERE
424 	    b.prc_context_type = 'QUALIFIER' and
425 	    b.prc_context_code = 'ORDER' and
426 	    b.prc_context_id = a.prc_context_id and
427 	    a.segment_mapping_column = 'QUALIFIER_ATTRIBUTE5' and
428 	    a.segment_id = c.segment_id and
429             c.pte_code = 'ORDFUL';
430         --Bug#8468331
431         --l_qualifiers_tbl(1).qualifier_precedence := 700; --commented Bug#8468331
432         l_qualifiers_tbl(1).qualifier_precedence := l_user_precedence; --Bug#8468331
433 
434         l_qualifiers_tbl(1).qualifier_attribute := 'QUALIFIER_ATTRIBUTE5';
435         -- Blanket Header ID is the qualifier attribute value
436         l_qualifiers_tbl(1).qualifier_attr_value :=
437                 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
438         l_qualifiers_tbl(1).qualifier_grouping_no := 1;
439         l_qualifiers_tbl(1).operation := QP_GLOBALS.G_OPR_CREATE;
440    end if;
441    --11i10 Pricing Changes End
442 
443    gpr_price_list_rec.operation := QP_GLOBALS.G_OPR_CREATE;
444    --MOAC changes to force the PL tobe created in a ORG
445    gpr_price_list_rec.org_id := mo_global.get_current_org_id;
446    gpr_price_list_rec.global_flag := 'N';
447    lheader_id := oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
448 
449 	I := oe_delayed_requests_pvt.g_delayed_requests.first;
450 
451 	WHILE I IS NOT NULL
452 	LOOP
453 IF oe_delayed_requests_pvt.g_delayed_requests(I).request_type = 'CREATE_BLANKET_PRICE_LIST'
454 		AND
455 		oe_delayed_requests_pvt.g_delayed_requests(I).entity_code =
456 			 oe_blanket_pub.g_entity_blanket_LINE THEN
457     if l_debug_level > 0 then
458 	oe_debug_pub.add('Blanket In create price list - line');
459     end if;
460 		IF oe_delayed_requests_pvt.g_delayed_requests(I).param1 IS NULL THEN
461                      if l_debug_level > 0 then
462 			oe_debug_pub.add('Blanket In Skip');
463                      end if;
464 			GOTO SKIP_LINE;
465 		END IF;
466 	g_line_id_tbl(ind).line_id := oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
467 
468           select QP_LIST_LINES_S.NEXTVAL into l_list_line_seq from dual; --bug8344368
469 	  gpr_price_list_line_tbl(ind).list_line_id := l_list_line_seq;
470           gpr_price_list_line_tbl(ind).list_line_type_code := 'PLL';
471           gpr_price_list_line_tbl(ind).operation := QP_GLOBALS.G_OPR_CREATE;
472           gpr_price_list_line_tbl(ind).operand := oe_delayed_requests_pvt.g_delayed_requests(I).param1;
473           gpr_price_list_line_tbl(ind).arithmetic_operator := 'UNIT_PRICE';
474 
475         -- Bug 3209215, Issue 9.1
476         -- Pass precedence value on price list lines
477         gpr_price_list_line_tbl(ind).product_precedence := 1;
478 
479         gpr_pricing_attr_tbl(K).pricing_attribute_id := FND_API.G_MISS_NUM;
480         gpr_pricing_attr_tbl(K).list_line_id := FND_API.G_MISS_NUM;
481         gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
482 
483 
484 	IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CAT' THEN
485 
486 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE2';
487            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
488 
489 	ELSIF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'ALL' THEN
490 
491 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE3';
492            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := 'ALL';
493 
494 	ELSE
495 
496 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
497            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
498 
499            -- 11i10 Pricing Change
500            -- Send customer item on price list line record
501            IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CUST'
502               AND OE_Code_Control.Get_Code_Release_Level >= '110510'
503            THEN
504               gpr_price_list_line_tbl(ind).customer_item_id :=
505                 oe_delayed_requests_pvt.g_delayed_requests(I).param8;
506              oe_debug_pub.add('sending cust item id :'||
507                 gpr_price_list_line_tbl(ind).customer_item_id);
508            END IF;
509 
510 	END IF;
511 
512 
513 
514         gpr_pricing_attr_tbl(K).PRODUCT_UOM_CODE := oe_delayed_requests_pvt.g_delayed_requests(I).param2;
515         gpr_pricing_attr_tbl(K).EXCLUDER_FLAG := 'N';
516         gpr_pricing_attr_tbl(K).ATTRIBUTE_GROUPING_NO := 1;
517         gpr_pricing_attr_tbl(K).list_line_id := l_list_line_seq;
518         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
519 
520 	--Added for bug8344368
521 	k:= K+1;
522 
523 	gpr_pricing_attr_tbl(K).pricing_attribute_id := FND_API.G_MISS_NUM;
524 	gpr_pricing_attr_tbl(K).list_line_id := l_list_line_seq;
525         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
526         gpr_pricing_attr_tbl(K).pricing_attribute_context := 'QP_INTERNAL';
527         gpr_pricing_attr_tbl(K).pricing_attribute := 'PRICING_ATTRIBUTE1';
528         gpr_pricing_attr_tbl(K).pricing_attr_value_from := l_list_line_seq;
529         gpr_pricing_attr_tbl(K).comparison_operator_code := '=';
530 
531 
532 	k:= k+1;
533 	ind := ind+1;
534 
535 		<< SKIP_LINE >>
536 		oe_delayed_requests_pvt.g_delayed_requests.delete(I);
537 		END IF;
538 		I := oe_delayed_requests_pvt.g_delayed_requests.next(I);
539 
540 	END LOOP;
541 
542         /*
543         -- 11i10 Pricing Changes
544         IF OE_Code_Control.Get_Code_Release_Level >= '110510' THEN
545         -----------------------------------------------------------
546         -- Set up the blanket line qualifier record
547         -----------------------------------------------------------
548         gpr_qualifiers_tbl(K).qualifier_grouping_no := 1;
549         gpr_qualifiers_tbl(K).excluder_flag := 'N';
550         gpr_qualifiers_tbl(K).qualifier_precedence := 700;
551         gpr_qualifiers_tbl(K).qualifier_context := 'ORDER';
552         gpr_qualifiers_tbl(K).qualifier_attribute := 'QUALIFIER_ATTRIBUTE6';
553         gpr_qualifiers_tbl(K).comparison_operator_code := '=';
554         -- Blanket Line ID is the qualifier attribute value
555         gpr_qualifiers_tbl(K).qualifier_attr_value := oe_delayed_requests_pvt.g_delayed_requests(I).entity_id;
556         oe_debug_pub.add('entity id :'||oe_delayed_requests_pvt.g_delayed_requests(I).entity_id);
557         gpr_qualifiers_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
558         END IF;
559         */
560 
561         QP_PRICE_LIST_GRP.Process_Price_List
562 (   p_api_version_number            => 1
563 ,   p_init_msg_list                 => FND_API.G_FALSE
564 ,   p_return_values                 => FND_API.G_FALSE
565 ,   p_commit                        => FND_API.G_FALSE
566 ,   x_return_status                 => x_return_status
567 ,   x_msg_count                     => gpr_msg_count
568 ,   x_msg_data                      => gpr_msg_data
569 ,   p_PRICE_LIST_rec                => gpr_price_list_rec
570 ,   p_PRICE_LIST_LINE_tbl           => gpr_price_list_line_tbl
571 ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
572 ,   p_qualifiers_tbl                => l_qualifiers_tbl
573 ,   x_PRICE_LIST_rec                => ppr_price_list_rec
574 ,   x_PRICE_LIST_val_rec            => ppr_price_list_val_rec
575 ,   x_PRICE_LIST_LINE_tbl           => ppr_price_list_line_tbl
576 ,   x_PRICE_LIST_LINE_val_tbl       => ppr_price_list_line_val_tbl
577 ,   x_QUALIFIERS_tbl                => ppr_qualifiers_tbl
578 ,   x_QUALIFIERS_val_tbl            => ppr_qualifiers_val_tbl
579 ,   x_PRICING_ATTR_tbl              => ppr_pricing_attr_tbl
580 ,   x_PRICING_ATTR_val_tbl          => ppr_pricing_attr_val_tbl
581 );
582 
583 
584   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
585 
586       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
587 
588   END IF;
589 
590   --Removed for bug8344368
591   /*IF OE_Code_Control.Code_Release_Level >= '110510' THEN
592 
593      gpr_pricing_attr_tbl.delete;
594      K := ppr_price_list_line_tbl.first;
595      WHILE K is not null LOOP
596         gpr_pricing_attr_tbl(K).list_line_id :=
597                  ppr_price_list_line_tbl(K).list_line_id;
598         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
599         gpr_pricing_attr_tbl(K).pricing_attribute_context := 'QP_INTERNAL';
600         gpr_pricing_attr_tbl(K).pricing_attribute := 'PRICING_ATTRIBUTE1';
601         gpr_pricing_attr_tbl(K).pricing_attr_value_from :=
602                  ppr_price_list_line_tbl(K).list_line_id;
603         gpr_pricing_attr_tbl(K).comparison_operator_code := '=';
604         if l_debug_level > 0 then
605            oe_debug_pub.add('pricing attr id :'||
606                                gpr_pricing_attr_tbl(K).pricing_attribute_id);
607            oe_debug_pub.add('list line id :'||
608                                gpr_pricing_attr_tbl(K).pricing_attr_value_from);
609         end if;
610 	K := ppr_price_list_line_tbl.next(K);
611      END LOOP;
612 
613      QP_PRICE_LIST_GRP.Process_Price_List
614            ( p_api_version_number            => 1
615            ,   p_init_msg_list                 => FND_API.G_FALSE
616            ,   p_return_values                 => FND_API.G_FALSE
617            ,   p_commit                        => FND_API.G_FALSE
618            ,   x_return_status                 => x_return_status
619            ,   x_msg_count                     => gpr_msg_count
620            ,   x_msg_data                      => gpr_msg_data
621            ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
622            ,   x_PRICE_LIST_rec                => xpr_price_list_rec
623            ,   x_PRICE_LIST_val_rec            => xpr_price_list_val_rec
624            ,   x_PRICE_LIST_LINE_tbl           => xpr_price_list_line_tbl
625            ,   x_PRICE_LIST_LINE_val_tbl       => xpr_price_list_line_val_tbl
626            ,   x_QUALIFIERS_tbl                => xpr_qualifiers_tbl
627            ,   x_QUALIFIERS_val_tbl            => xpr_qualifiers_val_tbl
628            ,   x_PRICING_ATTR_tbl              => xpr_pricing_attr_tbl
629            ,   x_PRICING_ATTR_val_tbl          => xpr_pricing_attr_val_tbl
630            );
631 
632       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
633          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
634       END IF;
635 
636   END IF; -- end if code release level check to create pricing attributes
637 
638 */
639 
640   --11i10 Pricing Changes Start
641   if oe_code_control.get_code_release_level >= '110510' then
642 	Update oe_blanket_headers
643            set lock_control = lock_control + 1
644                ,last_updated_by = fnd_global.user_id
645                ,last_update_date = sysdate
646 	where header_id = lheader_id ;
647 	Update oe_blanket_headers_ext
648 	set new_price_list_id = ppr_price_list_rec.list_header_id
649         where order_number = (select  /* MOAC_SQL_CHANGE */ order_number
650                                 from oe_blanket_headers_all
651                                where header_id = lheader_id);
652         g_header_rec.new_price_list_id := ppr_price_list_rec.list_header_id;
653         --for bug 3285562
654         IF g_header_rec.price_list_id is NULL
655         THEN
656            Update oe_blanket_headers
657            set price_list_id = ppr_price_list_rec.list_header_id
658            where header_id = lheader_id;
659         g_header_rec.price_list_id := ppr_price_list_rec.list_header_id;
660         END IF;
661         --End bug 3285562
662   else
663 	Update oe_blanket_headers
664 	set --qp_list_header_id = ppr_price_list_rec.list_header_id,
665 	    price_list_id = ppr_price_list_rec.list_header_id ,
666 		lock_control = lock_control + 1
667 	where header_id = lheader_id ;
668         g_header_rec.price_list_id := ppr_price_list_rec.list_header_id;
669   end if;
670   --11i10 Pricing Changes End
671 
672 	K := ppr_price_list_line_tbl.first;
673 	WHILE K is not null
674 	LOOP
675 
676 	Update oe_blanket_lines
677 	set
678 	    price_list_id = ppr_price_list_rec.list_header_id,
679 		lock_control = lock_control + 1
680 	WHERE
681 	line_id = g_line_id_tbl(K).line_id ;
682 
683 	UPDATE oe_blanket_lines_ext
684 	SET
685 	    qp_list_line_id = ppr_price_list_line_tbl(K).list_line_id
686 	WHERE
687 	line_id = g_line_id_tbl(K).line_id ;
688 
689 		K := ppr_price_list_line_tbl.next(K);
690 	END LOOP;
691 
692         OE_GLOBALS.G_CASCADING_REQUEST_LOGGED := TRUE;
693 		g_new_price_list := false;
694 EXCEPTION
695 
696     WHEN FND_API.G_EXC_ERROR THEN
697 
698         x_return_status := FND_API.G_RET_STS_ERROR;
699 
700         --  Get message count and data
701 
702 
703     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
704 
705         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
706 
707 
708     WHEN OTHERS THEN
709 
710         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
711 
712 END create_price_list;
713 
714 PROCEDURE Add_price_list_line
715 (p_req_ind           IN NUMBER
716 ,x_return_status     OUT NOCOPY varchar2)
717 IS
718  gpr_return_status varchar2(1) := NULL;
719  gpr_msg_count number := 0;
720  gpr_msg_data varchar2(2000);
721  gpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
722  gpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
723  gpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
724  gpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
725  gpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
726  gpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
727  gpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
728  gpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
729  ppr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
730  ppr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
731  ppr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
732  ppr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
733  ppr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
734  ppr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
735  ppr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
736  ppr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
737  xpr_price_list_rec QP_PRICE_LIST_PUB.Price_List_Rec_Type;
738  xpr_price_list_val_rec QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
739  xpr_price_list_line_tbl QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
740  xpr_price_list_line_val_tbl QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
741  xpr_qualifiers_tbl QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
742  xpr_qualifiers_val_tbl QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
743  xpr_pricing_attr_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
744  xpr_pricing_attr_val_tbl QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
745  K number := 1;
746  j number := 1;
747  I number := p_req_ind;
748  lheader_id number;
749  l_list_line_seq NUMBER;
750 
751 --
752 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
753 --
754 BEGIN
755 	--begin commented the below if statement for bug 4762658
756 		/*IF oe_delayed_requests_pvt.g_delayed_requests(I).param3 IS NULL THEN
757 				RETURN;
758 		END IF;*/
759 	--end for bug 4762658
760 	--for bug 3229225
761         IF  (oe_delayed_requests_pvt.g_delayed_requests(I).param1 IS NULL OR oe_delayed_requests_pvt.g_delayed_requests(I).param1=FND_API.G_MISS_NUM)
762         THEN
763            IF l_debug_level > 0
764            THEN
765               oe_debug_pub.add('Skip for null values');
766            END IF;
767            oe_delayed_requests_pvt.g_delayed_requests.delete(I);
768            GOTO SKIP_LINE1;
769         END IF;
770 
771           select QP_LIST_LINES_S.NEXTVAL into l_list_line_seq from dual; --bug8344368
772 	  gpr_price_list_line_tbl(k).list_line_id := l_list_line_seq;
773           gpr_price_list_line_tbl(k).list_line_type_code := 'PLL';
774           gpr_price_list_line_tbl(k).operation := QP_GLOBALS.G_OPR_CREATE;
775           gpr_price_list_line_tbl(k).operand := oe_delayed_requests_pvt.g_delayed_requests(I).param1;
776           gpr_price_list_line_tbl(k).arithmetic_operator := 'UNIT_PRICE';
777           gpr_price_list_line_tbl(k).list_header_id :=
778 	   oe_delayed_requests_pvt.g_delayed_requests(I).param5 ;
779         -- Bug 3209215, Issue 9.1
780         -- Pass precedence value on price list lines
781         gpr_price_list_line_tbl(k).product_precedence := 1;
782 
783         gpr_pricing_attr_tbl(K).pricing_attribute_id := FND_API.G_MISS_NUM;
784         gpr_pricing_attr_tbl(K).list_line_id := FND_API.G_MISS_NUM;
785         gpr_pricing_attr_tbl(K).list_header_id :=
786 		oe_delayed_requests_pvt.g_delayed_requests(I).param5;
787         gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE_CONTEXT := 'ITEM';
788 
789 	IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CAT' THEN
790 
791 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE2';
792            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
793 
794 	ELSIF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'ALL' THEN
795 
796 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE3';
797            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := 'ALL';
798 
799 	ELSE
800 
801 	   gpr_pricing_attr_tbl(K).PRODUCT_ATTRIBUTE := 'PRICING_ATTRIBUTE1';
802            gpr_pricing_attr_tbl(K).PRODUCT_ATTR_VALUE := oe_delayed_requests_pvt.g_delayed_requests(I).param3;
803 
804            -- 11i10 Pricing Change
805            -- Send customer item on price list line record
806            IF oe_delayed_requests_pvt.g_delayed_requests(I).param4 = 'CUST'
807               AND OE_Code_Control.Get_Code_Release_Level >= '110510'
808            THEN
809               gpr_price_list_line_tbl(k).customer_item_id :=
810                 oe_delayed_requests_pvt.g_delayed_requests(I).param8;
811              oe_debug_pub.add('sending cust item id :'||
812                 gpr_price_list_line_tbl(k).customer_item_id);
813            END IF;
814 
815 	END IF;
816 
817         gpr_pricing_attr_tbl(K).PRODUCT_UOM_CODE := oe_delayed_requests_pvt.g_delayed_requests(I).param2;
818         gpr_pricing_attr_tbl(K).EXCLUDER_FLAG := 'N';
819         gpr_pricing_attr_tbl(K).ATTRIBUTE_GROUPING_NO := 1;
820         gpr_pricing_attr_tbl(K).list_line_id := l_list_line_seq;
821         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
822 
823 	--Added for bug8344368
824 	k:= K+1;
825 
826 	gpr_pricing_attr_tbl(K).pricing_attribute_id := FND_API.G_MISS_NUM;
827 	gpr_pricing_attr_tbl(K).list_line_id := l_list_line_seq;
828         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
829         gpr_pricing_attr_tbl(K).pricing_attribute_context := 'QP_INTERNAL';
830         gpr_pricing_attr_tbl(K).pricing_attribute := 'PRICING_ATTRIBUTE1';
831         gpr_pricing_attr_tbl(K).pricing_attr_value_from := l_list_line_seq;--bug8344368
832         gpr_pricing_attr_tbl(K).comparison_operator_code := '=';
833 
834 
835                 --oe_delayed_requests_pvt.g_delayed_requests.delete(I);
836 
837         QP_PRICE_LIST_GRP.Process_Price_List
838 (   p_api_version_number            => 1
839 ,   p_init_msg_list                 => FND_API.G_FALSE
840 ,   p_return_values                 => FND_API.G_FALSE
841 ,   p_commit                        => FND_API.G_FALSE
842 ,   x_return_status                 => x_return_status
843 ,   x_msg_count                     => gpr_msg_count
844 ,   x_msg_data                      => gpr_msg_data
845 ,   p_PRICE_LIST_rec                => gpr_price_list_rec
846 ,   p_PRICE_LIST_LINE_tbl           => gpr_price_list_line_tbl
847 ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
848 ,   x_PRICE_LIST_rec                => ppr_price_list_rec
849 ,   x_PRICE_LIST_val_rec            => ppr_price_list_val_rec
850 ,   x_PRICE_LIST_LINE_tbl           => ppr_price_list_line_tbl
851 ,   x_PRICE_LIST_LINE_val_tbl       => ppr_price_list_line_val_tbl
852 ,   x_QUALIFIERS_tbl                => ppr_qualifiers_tbl
853 ,   x_QUALIFIERS_val_tbl            => ppr_qualifiers_val_tbl
854 ,   x_PRICING_ATTR_tbl              => ppr_pricing_attr_tbl
855 ,   x_PRICING_ATTR_val_tbl          => ppr_pricing_attr_val_tbl
856 );
857 
858 
859   IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
860 
861       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
862 
863   END IF;
864 
865  -- removed for bug8344368
866  /* IF OE_Code_Control.Code_Release_Level >= '110510' THEN
867 
868      gpr_pricing_attr_tbl.delete;
869      K := ppr_price_list_line_tbl.first;
870      WHILE K is not null LOOP
871         gpr_pricing_attr_tbl(K).list_line_id :=
872                  ppr_price_list_line_tbl(K).list_line_id;
873         gpr_pricing_attr_tbl(K).operation := QP_GLOBALS.G_OPR_CREATE;
874         gpr_pricing_attr_tbl(K).pricing_attribute_context := 'QP_INTERNAL';
875         gpr_pricing_attr_tbl(K).pricing_attribute := 'PRICING_ATTRIBUTE1';
876         gpr_pricing_attr_tbl(K).pricing_attr_value_from :=
877                  ppr_price_list_line_tbl(K).list_line_id;
878         gpr_pricing_attr_tbl(K).comparison_operator_code := '=';
879         if l_debug_level > 0 then
880            oe_debug_pub.add('pricing attr id :'||
881                                gpr_pricing_attr_tbl(K).pricing_attribute_id);
882            oe_debug_pub.add('list line id :'||
883                                gpr_pricing_attr_tbl(K).pricing_attr_value_from);
884         end if;
885 	K := ppr_price_list_line_tbl.next(K);
886      END LOOP;
887 
888      QP_PRICE_LIST_GRP.Process_Price_List
889            ( p_api_version_number            => 1
890            ,   p_init_msg_list                 => FND_API.G_FALSE
891            ,   p_return_values                 => FND_API.G_FALSE
892            ,   p_commit                        => FND_API.G_FALSE
893            ,   x_return_status                 => x_return_status
894            ,   x_msg_count                     => gpr_msg_count
895            ,   x_msg_data                      => gpr_msg_data
896            ,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
897            ,   x_PRICE_LIST_rec                => xpr_price_list_rec
898            ,   x_PRICE_LIST_val_rec            => xpr_price_list_val_rec
899            ,   x_PRICE_LIST_LINE_tbl           => xpr_price_list_line_tbl
900            ,   x_PRICE_LIST_LINE_val_tbl       => xpr_price_list_line_val_tbl
901            ,   x_QUALIFIERS_tbl                => xpr_qualifiers_tbl
902            ,   x_QUALIFIERS_val_tbl            => xpr_qualifiers_val_tbl
903            ,   x_PRICING_ATTR_tbl              => xpr_pricing_attr_tbl
904            ,   x_PRICING_ATTR_val_tbl          => xpr_pricing_attr_val_tbl
905            );
906 
907       IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
908          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
909       END IF;
910 
911   END IF; -- end if code release level check to create pricing attributes
912 */
913 
914         Update oe_blanket_lines
915         set
916             price_list_id = ppr_price_list_line_tbl(1).list_header_id,
917                 lock_control = lock_control + 1
918         WHERE
919         line_id =
920 	 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id ;
921 
922         Update oe_blanket_lines_ext
923         set qp_list_line_id = ppr_price_list_line_tbl(1).list_line_id
924         WHERE
925         line_id =
926 	 oe_delayed_requests_pvt.g_delayed_requests(I).entity_id ;
927 
928 << SKIP_LINE1 >>
929             g_new_price_list := false;
930 EXCEPTION
931 
932     WHEN FND_API.G_EXC_ERROR THEN
933 
934         x_return_status := FND_API.G_RET_STS_ERROR;
935 
936         --  Get message count and data
937 
938 
939     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
940 
941         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
942 
943 
944     WHEN OTHERS THEN
945 
946         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
947 
948 NULL;
949 END Add_price_list_line;
950 
951 
952 --for bug 3309427
953 --To clear the List Line ID if the user swaps from inline Pricelist to standard Pricelist
954 PROCEDURE Clear_Price_List_Line
955 (p_req_ind           IN NUMBER
956 ,x_return_status     OUT NOCOPY varchar2)
957 IS
958 --
959  gpr_return_status varchar2(1)	:= NULL;
960  gpr_msg_count number 		:= 0;
961  gpr_msg_data varchar2(2000);
962  gpr_price_list_rec		QP_PRICE_LIST_PUB.Price_List_Rec_Type;
963  gpr_price_list_line_tbl 	QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
964  gpr_pricing_attr_tbl 		QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
965  gpr_pricing_attr_val_tbl 	QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
966  ppr_price_list_rec 		QP_PRICE_LIST_PUB.Price_List_Rec_Type;
967  ppr_price_list_val_rec 	QP_PRICE_LIST_PUB.Price_List_Val_Rec_Type;
968  ppr_price_list_line_tbl	QP_PRICE_LIST_PUB.Price_List_Line_Tbl_Type;
969  ppr_price_list_line_val_tbl 	QP_PRICE_LIST_PUB.Price_List_Line_Val_Tbl_Type;
970  ppr_qualifiers_tbl 		QP_Qualifier_Rules_Pub.Qualifiers_Tbl_Type;
971  ppr_qualifiers_val_tbl 	QP_Qualifier_Rules_Pub.Qualifiers_Val_Tbl_Type;
972  ppr_pricing_attr_tbl 		QP_PRICE_LIST_PUB.Pricing_Attr_Tbl_Type;
973  ppr_pricing_attr_val_tbl 	QP_PRICE_LIST_PUB.Pricing_Attr_Val_Tbl_Type;
974  k number			:= 1;
975  l_debug_level CONSTANT NUMBER 	:= oe_debug_pub.g_debug_level;
976 --
977 BEGIN
978   x_return_status:= FND_API.G_RET_STS_SUCCESS;
979   gpr_price_list_line_tbl(K).list_line_id := oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).Param1 ;
980   gpr_price_list_line_tbl(K).operation 	  := QP_GLOBALS.G_OPR_UPDATE;
981   gpr_price_list_line_tbl(K).list_header_id :=
982 		oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2;
983   gpr_price_list_line_tbl(K).end_date_active :=sysdate;
984 
985   IF((NOT IS_BLANKET_PRICE_LIST(p_price_list_id => oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).Param3
986                                 ,p_blanket_header_id =>oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).Param4 ))
987   AND (gpr_price_list_line_tbl(K).list_line_id is not null))
988   THEN
989      QP_PRICE_LIST_GRP.Process_Price_List
990 	(   p_api_version_number            => 1
991 	,   p_init_msg_list                 => FND_API.G_FALSE
992 	,   p_return_values                 => FND_API.G_FALSE
993 	,   p_commit                        => FND_API.G_FALSE
994 	,   x_return_status                 => x_return_status
995 	,   x_msg_count                     => gpr_msg_count
996 	,   x_msg_data                      => gpr_msg_data
997 	,   p_PRICE_LIST_rec                => gpr_price_list_rec
998 	,   p_PRICE_LIST_LINE_tbl           => gpr_price_list_line_tbl
999 	,   p_PRICING_ATTR_tbl              => gpr_pricing_attr_tbl
1000 	,   x_PRICE_LIST_rec                => ppr_price_list_rec
1001 	,   x_PRICE_LIST_val_rec            => ppr_price_list_val_rec
1002 	,   x_PRICE_LIST_LINE_tbl           => ppr_price_list_line_tbl
1003 	,   x_PRICE_LIST_LINE_val_tbl       => ppr_price_list_line_val_tbl
1004 	,   x_QUALIFIERS_tbl                => ppr_qualifiers_tbl
1005 	,   x_QUALIFIERS_val_tbl            => ppr_qualifiers_val_tbl
1006 	,   x_PRICING_ATTR_tbl              => ppr_pricing_attr_tbl
1007 	,   x_PRICING_ATTR_val_tbl          => ppr_pricing_attr_val_tbl
1008 	);
1009 
1010 
1011      IF  x_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1012             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1013      ELSIF  x_return_status = FND_API.G_RET_STS_ERROR THEN
1014            RAISE FND_API.G_EXC_ERROR;
1015      END IF;
1016 
1017      Update oe_blanket_lines_ext
1018      set    qp_list_line_id = Null
1019      WHERE  line_id = oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).entity_id ;
1020   END IF;
1021 
1022 
1023 EXCEPTION
1024 
1025     WHEN FND_API.G_EXC_ERROR THEN
1026 
1027         IF l_debug_level > 0 THEN
1028             OE_DEBUG_PUB.Add('Expected Error in Clear_Blanket_List_line...',4);
1029         END IF;
1030         x_return_status := FND_API.G_RET_STS_ERROR;
1031 
1032 
1033     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1034 
1035         IF l_debug_level > 0 THEN
1036             OE_DEBUG_PUB.Add('UnExpected Error in Clear_Blanket_list_line...'||sqlerrm,4);
1037         END IF;
1038         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1039 
1040 
1041     WHEN OTHERS THEN
1042 
1043         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1044 
1045         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1046         THEN
1047            OE_MSG_PUB.Add_Exc_Msg
1048              (   G_PKG_NAME
1049              ,'Validate Attributes'
1050              );
1051         END IF;
1052 END Clear_price_list_line;
1053 
1054 PROCEDURE Validate_Attributes
1055 (  p_x_header_rec        IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
1056 ,  p_old_header_rec      IN OE_Blanket_PUB.Header_rec_type
1057 ,  p_validation_level     IN   NUMBER := FND_API.G_VALID_LEVEL_FULL
1058 ,  x_return_status       OUT NOCOPY VARCHAR2
1059 ) IS
1060 l_dummy VARCHAR2(10);
1061 --
1062 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1063 --
1064 BEGIN
1065 
1066     if l_debug_level > 0 then
1067        oe_debug_pub.add('Entering OE_BLANKET_UTIL.VALIDATE_ATTRIBUTES',1);
1068     end if;
1069     x_return_status := FND_API.G_RET_STS_SUCCESS;
1070 
1071     --  Validate header attributes
1072 
1073     IF  p_x_header_rec.accounting_rule_id IS NOT NULL AND
1074         (   p_x_header_rec.accounting_rule_id <>
1075             p_old_header_rec.accounting_rule_id OR
1076             p_old_header_rec.accounting_rule_id IS NULL )
1077     THEN
1078 
1079       IF NOT OE_Validate.Accounting_Rule(p_x_header_rec.accounting_rule_id)
1080       THEN
1081          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1082             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1083 	   p_x_header_rec.accounting_rule_id := NULL;
1084 	 ELSE
1085            x_return_status := FND_API.G_RET_STS_ERROR;
1086          END IF;
1087       END IF;
1088 
1089     END IF;
1090 
1091     IF  p_x_header_rec.freight_terms_code IS NOT NULL AND
1092         (   p_x_header_rec.freight_terms_code <>
1093             p_old_header_rec.freight_terms_code OR
1094             p_old_header_rec.freight_terms_code IS NULL )
1095     THEN
1096 
1097       IF NOT OE_Validate.Freight_Terms(p_x_header_rec.freight_terms_code)
1098       THEN
1099          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1100             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1101 	   p_x_header_rec.freight_terms_code := NULL;
1102 	 ELSE
1103            x_return_status := FND_API.G_RET_STS_ERROR;
1104          END IF;
1105        END IF;
1106 
1107     END IF;
1108 
1109        IF  p_x_header_rec.invoicing_rule_id IS NOT NULL AND
1110         (   p_x_header_rec.invoicing_rule_id <>
1111             p_old_header_rec.invoicing_rule_id OR
1112             p_old_header_rec.invoicing_rule_id IS NULL )
1113     THEN
1114 
1115       IF NOT OE_Validate.Invoicing_Rule(p_x_header_rec.invoicing_rule_id)
1116       THEN
1117          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1118             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1119 	   p_x_header_rec.invoicing_rule_id := NULL;
1120 	 ELSE
1121            x_return_status := FND_API.G_RET_STS_ERROR;
1122          END IF;
1123        END IF;
1124 
1125     END IF;
1126 
1127      IF  p_x_header_rec.order_type_id IS NOT NULL AND
1128         (   p_x_header_rec.order_type_id <>
1129             p_old_header_rec.order_type_id OR
1130             p_old_header_rec.order_type_id IS NULL )
1131     THEN
1132        BEGIN
1133 
1134        SELECT 'VALID' into l_dummy
1135        FROM 	oe_transaction_types_vl
1136        WHERE 	SALES_DOCUMENT_TYPE_CODE = 'B'
1137        AND      transaction_type_id = p_x_header_rec.order_type_id
1138        AND	trunc(sysdate) between start_date_Active and
1139         nvl(end_date_active,trunc(sysdate));
1140 
1141        EXCEPTION
1142          WHEN OTHERS THEN
1143            x_return_status := FND_API.G_RET_STS_ERROR;
1144        END;
1145     END IF;
1146 
1147     IF  p_x_header_rec.payment_term_id IS NOT NULL AND
1148         (   p_x_header_rec.payment_term_id <>
1149             p_old_header_rec.payment_term_id OR
1150             p_old_header_rec.payment_term_id IS NULL )
1151     THEN
1152       IF NOT OE_Validate.Payment_Term(p_x_header_rec.payment_term_id)
1153       THEN
1154          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1155             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1156 	   p_x_header_rec.payment_term_id := NULL;
1157 	 ELSE
1158            x_return_status := FND_API.G_RET_STS_ERROR;
1159          END IF;
1160       END IF;
1161 
1162     END IF;
1163 
1164     IF  p_x_header_rec.price_list_id IS NOT NULL AND
1165         (   p_x_header_rec.price_list_id <>
1166             p_old_header_rec.price_list_id OR
1167             p_old_header_rec.price_list_id IS NULL )
1168     THEN
1169       IF NOT OE_Validate.Price_List(p_x_header_rec.price_list_id)
1170       THEN
1171          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1172             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1173 	   p_x_header_rec.price_list_id := NULL;
1174 	 ELSE
1175           x_return_status := FND_API.G_RET_STS_ERROR;
1176          END IF;
1177       END IF;
1178 
1179     END IF;
1180 
1181     IF  p_x_header_rec.shipping_method_code IS NOT NULL AND
1182         (   p_x_header_rec.shipping_method_code <>
1183             p_old_header_rec.shipping_method_code OR
1184             p_old_header_rec.shipping_method_code IS NULL )
1185     THEN
1186 
1187       IF NOT OE_Validate.Shipping_Method(p_x_header_rec.shipping_method_code)
1188       THEN
1189          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1190             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1191 	   p_x_header_rec.shipping_method_code := NULL;
1192 	 ELSE
1193            x_return_status := FND_API.G_RET_STS_ERROR;
1194          END IF;
1195       END IF;
1196 
1197     END IF;
1198 
1199     IF  p_x_header_rec.ship_from_org_id IS NOT NULL AND
1200         (   p_x_header_rec.ship_from_org_id <>
1201             p_old_header_rec.ship_from_org_id OR
1202             p_old_header_rec.ship_from_org_id IS NULL )
1203     THEN
1204 
1205       IF NOT OE_Validate.Ship_From_Org(p_x_header_rec.ship_from_org_id)
1206       THEN
1207          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1208             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1209 	   p_x_header_rec.ship_from_org_id := NULL;
1210 	 ELSE
1211            x_return_status := FND_API.G_RET_STS_ERROR;
1212          END IF;
1213       END IF;
1214 
1215     END IF;
1216 
1217     IF  p_x_header_rec.sold_to_org_id IS NOT NULL AND
1218         (   p_x_header_rec.sold_to_org_id <>
1219             p_old_header_rec.sold_to_org_id OR
1220             p_old_header_rec.sold_to_org_id IS NULL )
1221     THEN
1222 
1223       IF NOT OE_Validate.Sold_To_Org(p_x_header_rec.sold_to_org_id)
1224       THEN
1225            x_return_status := FND_API.G_RET_STS_ERROR;
1226 
1227       END IF;
1228 
1229     END IF;
1230 
1231 -- hashraf start of pack J
1232     IF  p_x_header_rec.sold_to_site_use_id IS NOT NULL AND
1233         (   p_x_header_rec.sold_to_site_use_id <>
1234             p_old_header_rec.sold_to_site_use_id OR
1235             p_old_header_rec.sold_to_site_use_id IS NULL )
1236     THEN
1237 
1238       IF NOT OE_Validate.Customer_Location(p_x_header_rec.sold_to_site_use_id)
1239       THEN
1240            x_return_status := FND_API.G_RET_STS_ERROR;
1241 
1242       END IF;
1243 
1244     END IF;
1245 
1246 -- hashraf end of pack J
1247 
1248     IF  p_x_header_rec.invoice_to_org_id IS NOT NULL AND
1249         (   p_x_header_rec.invoice_to_org_id <>
1250             p_old_header_rec.invoice_to_org_id OR
1251             p_old_header_rec.invoice_to_org_id IS NULL )
1252     THEN
1253 
1254       IF NOT OE_Validate.Invoice_To_Org(p_x_header_rec.invoice_to_org_id)
1255       THEN
1256          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1257             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1258 	   p_x_header_rec.invoice_to_org_id := NULL;
1259 	 ELSE
1260            x_return_status := FND_API.G_RET_STS_ERROR;
1261          END IF;
1262       END IF;
1263 
1264     END IF;
1265 
1266     IF  p_x_header_rec.ship_to_org_id IS NOT NULL AND
1267         (   p_x_header_rec.ship_to_org_id <>
1268             p_old_header_rec.ship_to_org_id OR
1269             p_old_header_rec.ship_to_org_id IS NULL )
1270     THEN
1271 
1272       IF NOT OE_Validate.Ship_To_Org(p_x_header_rec.ship_to_org_id)
1273       THEN
1274          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1275             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1276 	   p_x_header_rec.ship_to_org_id := NULL;
1277 	 ELSE
1278            x_return_status := FND_API.G_RET_STS_ERROR;
1279          END IF;
1280       END IF;
1281 
1282     END IF;
1283 
1284     IF  p_x_header_rec.transactional_curr_code IS NOT NULL AND
1285         (   p_x_header_rec.transactional_curr_code <>
1286             p_old_header_rec.transactional_curr_code OR
1287             p_old_header_rec.transactional_curr_code IS NULL )
1288     THEN
1289 
1290       IF NOT OE_Validate.Transactional_Curr
1291                          (p_x_header_rec.transactional_curr_code)
1292       THEN
1293            x_return_status := FND_API.G_RET_STS_ERROR;
1294        END IF;
1295 
1296     END IF;
1297 
1298     -- Salesrep_id
1299     IF  p_x_header_rec.salesrep_id IS NOT NULL AND
1300         (   p_x_header_rec.salesrep_id <>
1301             p_old_header_rec.salesrep_id OR
1302             p_old_header_rec.salesrep_id IS NULL )
1303     THEN
1304 
1305       IF NOT OE_Validate.salesrep(p_x_header_rec.salesrep_id)
1306       THEN
1307          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1308             p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1309 	   p_x_header_rec.salesrep_id := NULL;
1310 	 ELSE
1311            x_return_status := FND_API.G_RET_STS_ERROR;
1312          END IF;
1313       END IF;
1314 
1315     END IF;
1316 
1317     -- Validate descriptive flex
1318 
1319     IF p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE OR
1320 
1321     (  p_x_header_rec.operation = OE_GLOBALS.G_OPR_UPDATE AND
1322          (p_x_header_rec.attribute1 IS NOT NULL AND
1323         (   p_x_header_rec.attribute1 <>
1324             p_old_header_rec.attribute1 OR
1325             p_old_header_rec.attribute1 IS NULL ))
1326     OR  (p_x_header_rec.attribute10 IS NOT NULL AND
1327         (   p_x_header_rec.attribute10 <>
1328             p_old_header_rec.attribute10 OR
1329             p_old_header_rec.attribute10 IS NULL ))
1330     OR  (p_x_header_rec.attribute11 IS NOT NULL AND
1331         (   p_x_header_rec.attribute11 <>
1332             p_old_header_rec.attribute11 OR
1333             p_old_header_rec.attribute11 IS NULL ))
1334     OR  (p_x_header_rec.attribute12 IS NOT NULL AND
1335         (   p_x_header_rec.attribute12 <>
1336             p_old_header_rec.attribute12 OR
1337             p_old_header_rec.attribute12 IS NULL ))
1338     OR  (p_x_header_rec.attribute13 IS NOT NULL AND
1339         (   p_x_header_rec.attribute13 <>
1340             p_old_header_rec.attribute13 OR
1341             p_old_header_rec.attribute13 IS NULL ))
1342     OR  (p_x_header_rec.attribute14 IS NOT NULL AND
1343         (   p_x_header_rec.attribute14 <>
1344             p_old_header_rec.attribute14 OR
1345             p_old_header_rec.attribute14 IS NULL ))
1346     OR  (p_x_header_rec.attribute15 IS NOT NULL AND
1347         (   p_x_header_rec.attribute15 <>
1348             p_old_header_rec.attribute15 OR
1349             p_old_header_rec.attribute15 IS NULL ))
1350     OR  (p_x_header_rec.attribute16 IS NOT NULL AND --For bug 2184255
1351         (   p_x_header_rec.attribute16 <>
1352             p_old_header_rec.attribute16 OR
1353             p_old_header_rec.attribute16 IS NULL ))
1354     OR  (p_x_header_rec.attribute17 IS NOT NULL AND
1355         (   p_x_header_rec.attribute17 <>
1356             p_old_header_rec.attribute17 OR
1357             p_old_header_rec.attribute17 IS NULL ))
1358     OR  (p_x_header_rec.attribute18 IS NOT NULL AND
1359         (   p_x_header_rec.attribute18 <>
1360             p_old_header_rec.attribute18 OR
1361             p_old_header_rec.attribute18 IS NULL ))
1362     OR  (p_x_header_rec.attribute19 IS NOT NULL AND
1363         (   p_x_header_rec.attribute19 <>
1364             p_old_header_rec.attribute19 OR
1365             p_old_header_rec.attribute19 IS NULL ))
1366     OR  (p_x_header_rec.attribute2 IS NOT NULL AND
1367         (   p_x_header_rec.attribute2 <>
1368             p_old_header_rec.attribute2 OR
1369             p_old_header_rec.attribute2 IS NULL ))
1370     OR  (p_x_header_rec.attribute20 IS NOT NULL AND  -- for bug 2184255
1371         (   p_x_header_rec.attribute20 <>
1372             p_old_header_rec.attribute20 OR
1373             p_old_header_rec.attribute20 IS NULL ))
1374     OR  (p_x_header_rec.attribute3 IS NOT NULL AND
1375         (   p_x_header_rec.attribute3 <>
1376             p_old_header_rec.attribute3 OR
1377             p_old_header_rec.attribute3 IS NULL ))
1378     OR  (p_x_header_rec.attribute4 IS NOT NULL AND
1379         (   p_x_header_rec.attribute4 <>
1380             p_old_header_rec.attribute4 OR
1381             p_old_header_rec.attribute4 IS NULL ))
1382     OR  (p_x_header_rec.attribute5 IS NOT NULL AND
1383         (   p_x_header_rec.attribute5 <>
1384             p_old_header_rec.attribute5 OR
1385             p_old_header_rec.attribute5 IS NULL ))
1386     OR  (p_x_header_rec.attribute6 IS NOT NULL AND
1387         (   p_x_header_rec.attribute6 <>
1388             p_old_header_rec.attribute6 OR
1389             p_old_header_rec.attribute6 IS NULL ))
1390     OR  (p_x_header_rec.attribute7 IS NOT NULL AND
1391         (   p_x_header_rec.attribute7 <>
1392             p_old_header_rec.attribute7 OR
1393             p_old_header_rec.attribute7 IS NULL ))
1394     OR  (p_x_header_rec.attribute8 IS NOT NULL AND
1395         (   p_x_header_rec.attribute8 <>
1396             p_old_header_rec.attribute8 OR
1397             p_old_header_rec.attribute8 IS NULL ))
1398     OR  (p_x_header_rec.attribute9 IS NOT NULL AND
1399         (   p_x_header_rec.attribute9 <>
1400             p_old_header_rec.attribute9 OR
1401             p_old_header_rec.attribute9 IS NULL ))
1402     OR  (p_x_header_rec.context IS NOT NULL AND
1403         (   p_x_header_rec.context <>
1404             p_old_header_rec.context OR
1405             p_old_header_rec.context IS NULL )))
1406     THEN
1407 
1408 
1409          oe_debug_pub.add('Before calling header_desc_flex',2);
1410 	IF OE_ORDER_CACHE.IS_FLEX_ENABLED('OE_BLKT_HEADER_ATTRIBUTES') = 'Y' THEN
1411 
1412          IF NOT OE_VALIDATE.Header_Desc_Flex
1413           (p_context            => p_x_header_rec.context
1414           ,p_attribute1         => p_x_header_rec.attribute1
1415           ,p_attribute2         => p_x_header_rec.attribute2
1416           ,p_attribute3         => p_x_header_rec.attribute3
1417           ,p_attribute4         => p_x_header_rec.attribute4
1418           ,p_attribute5         => p_x_header_rec.attribute5
1419           ,p_attribute6         => p_x_header_rec.attribute6
1420           ,p_attribute7         => p_x_header_rec.attribute7
1421           ,p_attribute8         => p_x_header_rec.attribute8
1422           ,p_attribute9         => p_x_header_rec.attribute9
1423           ,p_attribute10        => p_x_header_rec.attribute10
1424           ,p_attribute11        => p_x_header_rec.attribute11
1425           ,p_attribute12        => p_x_header_rec.attribute12
1426           ,p_attribute13        => p_x_header_rec.attribute13
1427           ,p_attribute14        => p_x_header_rec.attribute14
1428           ,p_attribute15        => p_x_header_rec.attribute15
1429           ,p_attribute16        => p_x_header_rec.attribute16  -- for bug 2184255
1430           ,p_attribute17        => p_x_header_rec.attribute17
1431           ,p_attribute18        => p_x_header_rec.attribute18
1432           ,p_attribute19        => p_x_header_rec.attribute19
1433           ,p_attribute20        => p_x_header_rec.attribute20
1434           ,p_document_type      => 'BLANKET')
1435           THEN
1436 
1437             IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1438                p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE
1439             THEN
1440                 p_x_header_rec.context    := null;
1441                 p_x_header_rec.attribute1 := null;
1442                 p_x_header_rec.attribute2 := null;
1443                 p_x_header_rec.attribute3 := null;
1444                 p_x_header_rec.attribute4 := null;
1445                 p_x_header_rec.attribute5 := null;
1446                 p_x_header_rec.attribute6 := null;
1447                 p_x_header_rec.attribute7 := null;
1448                 p_x_header_rec.attribute8 := null;
1449                 p_x_header_rec.attribute9 := null;
1450                 p_x_header_rec.attribute10 := null;
1451                 p_x_header_rec.attribute11 := null;
1452                 p_x_header_rec.attribute12 := null;
1453                 p_x_header_rec.attribute13 := null;
1454                 p_x_header_rec.attribute14 := null;
1455                 p_x_header_rec.attribute15 := null;
1456                 p_x_header_rec.attribute16 := null;  -- for bug 2184255
1457                 p_x_header_rec.attribute17 := null;
1458                 p_x_header_rec.attribute18 := null;
1459                 p_x_header_rec.attribute19 := null;
1460                 p_x_header_rec.attribute20 := null;
1461 
1462 
1463             ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF AND
1464                   p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE
1465             THEN
1466                 p_x_header_rec.context    := FND_API.G_MISS_CHAR;
1467                 p_x_header_rec.attribute1 := FND_API.G_MISS_CHAR;
1468                 p_x_header_rec.attribute2 := FND_API.G_MISS_CHAR;
1469                 p_x_header_rec.attribute3 := FND_API.G_MISS_CHAR;
1470                 p_x_header_rec.attribute4 := FND_API.G_MISS_CHAR;
1471                 p_x_header_rec.attribute5 := FND_API.G_MISS_CHAR;
1472                 p_x_header_rec.attribute6 := FND_API.G_MISS_CHAR;
1473                 p_x_header_rec.attribute7 := FND_API.G_MISS_CHAR;
1474                 p_x_header_rec.attribute8 := FND_API.G_MISS_CHAR;
1475                 p_x_header_rec.attribute9 := FND_API.G_MISS_CHAR;
1476                 p_x_header_rec.attribute10 := FND_API.G_MISS_CHAR;
1477                 p_x_header_rec.attribute11 := FND_API.G_MISS_CHAR;
1478                 p_x_header_rec.attribute12 := FND_API.G_MISS_CHAR;
1479                 p_x_header_rec.attribute13 := FND_API.G_MISS_CHAR;
1480                 p_x_header_rec.attribute14 := FND_API.G_MISS_CHAR;
1481                 p_x_header_rec.attribute15 := FND_API.G_MISS_CHAR;
1482                 p_x_header_rec.attribute16 := FND_API.G_MISS_CHAR;  -- for bug 2184255
1483                 p_x_header_rec.attribute17 := FND_API.G_MISS_CHAR;
1484                 p_x_header_rec.attribute18 := FND_API.G_MISS_CHAR;
1485                 p_x_header_rec.attribute19 := FND_API.G_MISS_CHAR;
1486                 p_x_header_rec.attribute20 := FND_API.G_MISS_CHAR;
1487 
1488 
1489             ELSE
1490                 x_return_status := FND_API.G_RET_STS_ERROR;
1491             END IF;
1492 	  ELSE -- if the flex validation is successfull
1493 	    -- For bug 2511313
1494 	    IF p_x_header_rec.context IS NULL
1495 	      OR p_x_header_rec.context = FND_API.G_MISS_CHAR THEN
1496 	       p_x_header_rec.context    := oe_validate.g_context;
1497 	    END IF;
1498 
1499 	    IF p_x_header_rec.attribute1 IS NULL
1500 	      OR p_x_header_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1501 	       p_x_header_rec.attribute1 := oe_validate.g_attribute1;
1502 	    END IF;
1503 
1504 	    IF p_x_header_rec.attribute2 IS NULL
1505 	      OR p_x_header_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1506 	       p_x_header_rec.attribute2 := oe_validate.g_attribute2;
1507 	    END IF;
1508 
1509 	    IF p_x_header_rec.attribute3 IS NULL
1510 	      OR p_x_header_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1511 	       p_x_header_rec.attribute3 := oe_validate.g_attribute3;
1512 	    END IF;
1513 
1514 	    IF p_x_header_rec.attribute4 IS NULL
1515 	      OR p_x_header_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1516 	       p_x_header_rec.attribute4 := oe_validate.g_attribute4;
1517 	    END IF;
1518 
1519 	    IF p_x_header_rec.attribute5 IS NULL
1520 	      OR p_x_header_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1521 	       p_x_header_rec.attribute5 := oe_validate.g_attribute5;
1522 	    END IF;
1523 
1524 	    IF p_x_header_rec.attribute6 IS NULL
1525 	      OR p_x_header_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1526 	       p_x_header_rec.attribute6 := oe_validate.g_attribute6;
1527 	    END IF;
1528 
1529 	    IF p_x_header_rec.attribute7 IS NULL
1530 	      OR p_x_header_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1531 	       p_x_header_rec.attribute7 := oe_validate.g_attribute7;
1532 	    END IF;
1533 
1534 	    IF p_x_header_rec.attribute8 IS NULL
1535 	      OR p_x_header_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1536 	       p_x_header_rec.attribute8 := oe_validate.g_attribute8;
1537 	    END IF;
1538 
1539 	    IF p_x_header_rec.attribute9 IS NULL
1540 	      OR p_x_header_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1541 	       p_x_header_rec.attribute9 := oe_validate.g_attribute9;
1542 	    END IF;
1543 
1544 	    IF p_x_header_rec.attribute10 IS NULL
1545 	      OR p_x_header_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1546 	       p_x_header_rec.attribute10 := Oe_validate.G_attribute10;
1547 	    End IF;
1548 
1549 	    IF p_x_header_rec.attribute11 IS NULL
1550 	      OR p_x_header_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1551 	       p_x_header_rec.attribute11 := oe_validate.g_attribute11;
1552 	    END IF;
1553 
1554 	    IF p_x_header_rec.attribute12 IS NULL
1555 	      OR p_x_header_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1556 	       p_x_header_rec.attribute12 := oe_validate.g_attribute12;
1557 	    END IF;
1558 
1559 	    IF p_x_header_rec.attribute13 IS NULL
1560 	      OR p_x_header_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1561 	       p_x_header_rec.attribute13 := oe_validate.g_attribute13;
1562 	    END IF;
1563 
1564 	    IF p_x_header_rec.attribute14 IS NULL
1565 	      OR p_x_header_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1566 	       p_x_header_rec.attribute14 := oe_validate.g_attribute14;
1567 	    END IF;
1568 
1569 	    IF p_x_header_rec.attribute15 IS NULL
1570 	      OR p_x_header_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1571 	       p_x_header_rec.attribute15 := oe_validate.g_attribute15;
1572 	    END IF;
1573 
1574 	    IF p_x_header_rec.attribute16 IS NULL  -- for bug 2184255
1575 	      OR p_x_header_rec.attribute16 = FND_API.G_MISS_CHAR THEN
1576 	       p_x_header_rec.attribute16 := oe_validate.g_attribute16;
1577 	    END IF;
1578 
1579 	    IF p_x_header_rec.attribute17 IS NULL
1580 	      OR p_x_header_rec.attribute17 = FND_API.G_MISS_CHAR THEN
1581 	       p_x_header_rec.attribute17 := oe_validate.g_attribute17;
1582 	    END IF;
1583 
1584 	    IF p_x_header_rec.attribute18 IS NULL
1585 	      OR p_x_header_rec.attribute18 = FND_API.G_MISS_CHAR THEN
1586 	       p_x_header_rec.attribute18 := oe_validate.g_attribute18;
1587 	    END IF;
1588 
1589 	    IF p_x_header_rec.attribute19 IS NULL
1590 	      OR p_x_header_rec.attribute19 = FND_API.G_MISS_CHAR THEN
1591 	       p_x_header_rec.attribute19 := oe_validate.g_attribute19;
1592 	    END IF;
1593 
1594 	    IF p_x_header_rec.attribute20 IS NULL
1595 	      OR p_x_header_rec.attribute20 = FND_API.G_MISS_CHAR THEN
1596 	       p_x_header_rec.attribute20 := oe_validate.g_attribute20;
1597 	    END IF;
1598 
1599 	    -- end of assignments, bug 2511313
1600 	 END IF;
1601 	END IF ; -- If flex enabled
1602     END IF;
1603 
1604     if l_debug_level > 0 then
1605       oe_debug_pub.add('After blanket header_desc_flex  ' || x_return_status,2);
1606       oe_debug_pub.add('Exiting OE_BLANKET_UTIL.VALIDATE_ATTRIBUTES',1);
1607     end if;
1608 EXCEPTION
1609 
1610     WHEN FND_API.G_EXC_ERROR THEN
1611       x_return_status := FND_API.G_RET_STS_ERROR;
1612 
1613     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1614       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1615 
1616     WHEN OTHERS THEN
1617       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1618 
1619       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1620       THEN
1621         OE_MSG_PUB.Add_Exc_Msg
1622         (   G_PKG_NAME
1623            ,'Validate Attributes'
1624          );
1625       END IF;
1626 
1627 END Validate_Attributes;
1628 
1629 PROCEDURE Validate_Attributes
1630 ( p_x_line_rec         IN OUT NOCOPY OE_Blanket_PUB.line_rec_type
1631 , p_old_line_rec       IN OE_Blanket_PUB.line_rec_type
1632 ,  p_validation_level     IN   NUMBER := FND_API.G_VALID_LEVEL_FULL
1633 , x_return_status      OUT NOCOPY VARCHAR2
1634 ) IS
1635 --{ Bug # 5562785
1636 
1637 l_context_required_flag fnd_descriptive_flexs_vl.context_required_flag%TYPE;
1638 l_default_context_field_name fnd_descriptive_flexs_vl.default_context_field_name%TYPE;
1639 l_validate_line VARCHAR2(1) := 'Y';
1640 
1641 CURSOR c_check_context(l_flex_name fnd_descriptive_flexs_vl.descriptive_flexfield_name%TYPE) IS
1642   SELECT context_required_flag, default_context_field_name
1643   FROM FND_DESCRIPTIVE_FLEXS_VL
1644   WHERE (application_id = 660)
1645   AND (descriptive_flexfield_name = l_flex_name);
1646   -- Bug # 5562785}
1647 --
1648 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1649 --
1650 BEGIN
1651 
1652     if l_debug_level > 0 then
1653        oe_debug_pub.add('Enter procedure OE_blanket_util.validate line Attributes',1);
1654     end if;
1655 
1656     x_return_status := FND_API.G_RET_STS_SUCCESS;
1657  -- Compare line attributes with header record if the header record is
1658     -- created in the same call to process_order. If they match
1659     -- then no need to re-validate line attributes.
1660 
1661 
1662 --  Validate line attributes
1663 
1664     IF  p_x_line_rec.accounting_rule_id IS NOT NULL AND
1665         (   p_x_line_rec.accounting_rule_id <>
1666             p_old_line_rec.accounting_rule_id OR
1667             p_old_line_rec.accounting_rule_id IS NULL )
1668     THEN
1669       if l_debug_level > 0 then
1670         oe_debug_pub.add('Calling OE_VALIDATE for accounting_rule',1);
1671       end if;
1672         IF NOT OE_Validate.Accounting_Rule(p_x_line_rec.accounting_rule_id) THEN
1673          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1674             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1675 	   p_x_line_rec.accounting_rule_id := NULL;
1676 	 ELSE
1677               x_return_status := FND_API.G_RET_STS_ERROR;
1678          END IF;
1679         END IF;
1680     END IF;
1681 
1682     IF  p_x_line_rec.freight_terms_code IS NOT NULL AND
1683         (   p_x_line_rec.freight_terms_code <>
1684             p_old_line_rec.freight_terms_code OR
1685             p_old_line_rec.freight_terms_code IS NULL )
1686     THEN
1687 
1688         IF NOT OE_Validate.Freight_Terms(p_x_line_rec.freight_terms_code) THEN
1689          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1690             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1691 	   p_x_line_rec.freight_terms_code := NULL;
1692 	 ELSE
1693             x_return_status := FND_API.G_RET_STS_ERROR;
1694          END IF;
1695 	END IF;
1696     END IF;
1697 
1698     IF  p_x_line_rec.invoicing_rule_id IS NOT NULL AND
1699         (   p_x_line_rec.invoicing_rule_id <>
1700             p_old_line_rec.invoicing_rule_id OR
1701             p_old_line_rec.invoicing_rule_id IS NULL )
1702     THEN
1703         IF NOT OE_Validate.Invoicing_Rule(p_x_line_rec.invoicing_rule_id) THEN
1704          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1705             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1706 	   p_x_line_rec.invoicing_rule_id := NULL;
1707 	 ELSE
1708             x_return_status := FND_API.G_RET_STS_ERROR;
1709          END IF;
1710         END IF;
1711     END IF;
1712 
1713     IF  p_x_line_rec.item_type_code IS NOT NULL AND
1714         (   p_x_line_rec.item_type_code <>
1715             p_old_line_rec.item_type_code OR
1716             p_old_line_rec.item_type_code IS NULL )
1717     THEN
1718         IF NOT OE_Validate.Item_Type(p_x_line_rec.item_type_code) THEN
1719             x_return_status := FND_API.G_RET_STS_ERROR;
1720         END IF;
1721     END IF;
1722 
1723 
1724     IF  p_x_line_rec.payment_term_id IS NOT NULL AND
1725         (   p_x_line_rec.payment_term_id <>
1726             p_old_line_rec.payment_term_id OR
1727             p_old_line_rec.payment_term_id IS NULL )
1728     THEN
1729         IF NOT OE_Validate.Payment_Term(p_x_line_rec.payment_term_id) THEN
1730          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1731             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1732 	   p_x_line_rec.payment_term_id := NULL;
1733 	 ELSE
1734              x_return_status := FND_API.G_RET_STS_ERROR;
1735          END IF;
1736         END IF;
1737     END IF;
1738 
1739     IF  p_x_line_rec.price_list_id IS NOT NULL AND
1740         (   p_x_line_rec.price_list_id <>
1741             p_old_line_rec.price_list_id OR
1742             p_old_line_rec.price_list_id IS NULL )
1743     THEN
1744         IF NOT OE_Validate.Price_List(p_x_line_rec.price_list_id) THEN
1745              x_return_status := FND_API.G_RET_STS_ERROR;
1746         END IF;
1747     END IF;
1748 
1749     IF  p_x_line_rec.shipping_method_code IS NOT NULL AND
1750         (   p_x_line_rec.shipping_method_code <>
1751             p_old_line_rec.shipping_method_code OR
1752             p_old_line_rec.shipping_method_code IS NULL )
1753     THEN
1754         IF NOT OE_Validate.Shipping_Method(p_x_line_rec.shipping_method_code) THEN
1755          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1756             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1757 	   p_x_line_rec.shipping_method_code := NULL;
1758 	 ELSE
1759             x_return_status := FND_API.G_RET_STS_ERROR;
1760          END IF;
1761         END IF;
1762     END IF;
1763 
1764     IF  p_x_line_rec.ship_from_org_id IS NOT NULL AND
1765         (   p_x_line_rec.ship_from_org_id <>
1766             p_old_line_rec.ship_from_org_id OR
1767             p_old_line_rec.ship_from_org_id IS NULL )
1768     THEN
1769         IF NOT OE_Validate.Ship_From_Org(p_x_line_rec.ship_from_org_id) THEN
1770           IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1771             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1772 	   p_x_line_rec.ship_from_org_id := NULL;
1773 	  ELSE
1774             x_return_status := FND_API.G_RET_STS_ERROR;
1775           END IF;
1776         END IF;
1777     END IF;
1778 
1779     IF  p_x_line_rec.salesrep_id IS NOT NULL AND
1780         (   p_x_line_rec.salesrep_id <>
1781             p_old_line_rec.salesrep_id OR
1782             p_old_line_rec.salesrep_id IS NULL )
1783     THEN
1784         IF NOT OE_Validate.salesrep(p_x_line_rec.salesrep_id) THEN
1785          IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1786             p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
1787 	   p_x_line_rec.salesrep_id := NULL;
1788 	 ELSE
1789              x_return_status := FND_API.G_RET_STS_ERROR;
1790          END IF;
1791         END IF;
1792     END IF;
1793 
1794     --{ Bug # 5562785
1795 
1796 OPEN c_check_context('OE_BLKT_LINE_ATTRIBUTES');
1797 FETCH c_check_context INTO l_context_required_flag,l_default_context_field_name;
1798 CLOSE c_check_context;
1799 
1800 oe_debug_pub.add('Maitrayee: Entering the code change in Validate_Attributes');
1801 -- Skip the Validation if not changes are made in the DFF from the UI.
1802 
1803 IF l_context_required_flag = 'Y' AND ( p_x_line_rec.context IS NULL OR p_x_line_rec.context = FND_API.G_MISS_CHAR ) AND (OE_GLOBALS.G_UI_FLAG) THEN
1804 
1805   l_validate_line := 'N';
1806   IF l_debug_level > 0 then
1807     oe_debug_pub.add('Skipping Validation');
1808   END IF;
1809 
1810 ELSIF l_context_required_flag = 'Y' AND ( p_x_line_rec.context IS NULL OR p_x_line_rec.context = FND_API.G_MISS_CHAR ) AND NOT (OE_GLOBALS.G_UI_FLAG) THEN
1811 
1812 -- Show Error message if appropriate context value is not passed
1813 -- from the Process Order Call and if the Context field is required.
1814 
1815 	FND_MESSAGE.SET_NAME('FND', 'ONT_BLKT_CONTEXT_NOT_FOUND');
1816 
1817         OE_MSG_PUB.ADD;
1818 	IF l_debug_level  > 0 THEN
1819             oe_debug_pub.add(  'Context not set for OE_BLKT_LINE_ATTRIBUTES DFF ' ) ;
1820         END IF;
1821 	RAISE FND_API.G_EXC_ERROR;
1822  ELSE
1823 
1824  -- Validate the DFF in all other cases.
1825 
1826   l_validate_line := 'Y';
1827 
1828   IF l_debug_level > 0 then
1829      oe_debug_pub.add('Validating the Flex Field');
1830   END IF;
1831 
1832 END IF;
1833 
1834 -- Bug # 5562785)
1835 
1836   IF(l_validate_line = 'Y') THEN   -- Bug # 5562785
1837 
1838     IF p_x_line_rec.operation = oe_globals.g_opr_create OR
1839 	(p_x_line_rec.operation = oe_globals.g_opr_update  AND
1840           (p_x_line_rec.attribute1 IS NOT NULL AND
1841         (   p_x_line_rec.attribute1 <>
1842             p_old_line_rec.attribute1 OR
1843             p_old_line_rec.attribute1 IS NULL ))
1844     OR  (p_x_line_rec.attribute10 IS NOT NULL AND
1845         (   p_x_line_rec.attribute10 <>
1846             p_old_line_rec.attribute10 OR
1847             p_old_line_rec.attribute10 IS NULL ))
1848     OR  (p_x_line_rec.attribute11 IS NOT NULL AND
1849         (   p_x_line_rec.attribute11 <>
1850             p_old_line_rec.attribute11 OR
1851             p_old_line_rec.attribute11 IS NULL ))
1852     OR  (p_x_line_rec.attribute12 IS NOT NULL AND
1853         (   p_x_line_rec.attribute12 <>
1854             p_old_line_rec.attribute12 OR
1855             p_old_line_rec.attribute12 IS NULL ))
1856     OR  (p_x_line_rec.attribute13 IS NOT NULL AND
1857         (   p_x_line_rec.attribute13 <>
1858             p_old_line_rec.attribute13 OR
1859             p_old_line_rec.attribute13 IS NULL ))
1860     OR  (p_x_line_rec.attribute14 IS NOT NULL AND
1861         (   p_x_line_rec.attribute14 <>
1862             p_old_line_rec.attribute14 OR
1863             p_old_line_rec.attribute14 IS NULL ))
1864     OR  (p_x_line_rec.attribute15 IS NOT NULL AND
1865         (   p_x_line_rec.attribute15 <>
1866             p_old_line_rec.attribute15 OR
1867             p_old_line_rec.attribute15 IS NULL ))
1868     OR  (p_x_line_rec.attribute16 IS NOT NULL AND -- For bug 2184255
1869         (   p_x_line_rec.attribute16 <>
1870             p_old_line_rec.attribute16 OR
1871             p_old_line_rec.attribute16 IS NULL ))
1872     OR  (p_x_line_rec.attribute17 IS NOT NULL AND
1873         (   p_x_line_rec.attribute17 <>
1874             p_old_line_rec.attribute17 OR
1875             p_old_line_rec.attribute17 IS NULL ))
1876     OR  (p_x_line_rec.attribute18 IS NOT NULL AND
1877         (   p_x_line_rec.attribute18 <>
1878             p_old_line_rec.attribute18 OR
1879             p_old_line_rec.attribute18 IS NULL ))
1880     OR  (p_x_line_rec.attribute19 IS NOT NULL AND
1881         (   p_x_line_rec.attribute19 <>
1882             p_old_line_rec.attribute19 OR
1883             p_old_line_rec.attribute19 IS NULL ))
1884     OR  (p_x_line_rec.attribute2 IS NOT NULL AND
1885         (   p_x_line_rec.attribute2 <>
1886             p_old_line_rec.attribute2 OR
1887             p_old_line_rec.attribute2 IS NULL ))
1888     OR  (p_x_line_rec.attribute20 IS NOT NULL AND
1889         (   p_x_line_rec.attribute20 <>
1890             p_old_line_rec.attribute20 OR
1891             p_old_line_rec.attribute20 IS NULL ))
1892     OR  (p_x_line_rec.attribute3 IS NOT NULL AND
1893         (   p_x_line_rec.attribute3 <>
1894             p_old_line_rec.attribute3 OR
1895             p_old_line_rec.attribute3 IS NULL ))
1896     OR  (p_x_line_rec.attribute4 IS NOT NULL AND
1897         (   p_x_line_rec.attribute4 <>
1898             p_old_line_rec.attribute4 OR
1899             p_old_line_rec.attribute4 IS NULL ))
1900     OR  (p_x_line_rec.attribute5 IS NOT NULL AND
1901         (   p_x_line_rec.attribute5 <>
1902             p_old_line_rec.attribute5 OR
1903             p_old_line_rec.attribute5 IS NULL ))
1904     OR  (p_x_line_rec.attribute6 IS NOT NULL AND
1905         (   p_x_line_rec.attribute6 <>
1906             p_old_line_rec.attribute6 OR
1907             p_old_line_rec.attribute6 IS NULL ))
1908     OR  (p_x_line_rec.attribute7 IS NOT NULL AND
1909         (   p_x_line_rec.attribute7 <>
1910             p_old_line_rec.attribute7 OR
1911             p_old_line_rec.attribute7 IS NULL ))
1912     OR  (p_x_line_rec.attribute8 IS NOT NULL AND
1913         (   p_x_line_rec.attribute8 <>
1914             p_old_line_rec.attribute8 OR
1915             p_old_line_rec.attribute8 IS NULL ))
1916     OR  (p_x_line_rec.attribute9 IS NOT NULL AND
1917         (   p_x_line_rec.attribute9 <>
1918             p_old_line_rec.attribute9 OR
1919             p_old_line_rec.attribute9 IS NULL ))
1920     OR  (p_x_line_rec.context IS NOT NULL AND
1921         (   p_x_line_rec.context <>
1922             p_old_line_rec.context OR
1923             p_old_line_rec.context IS NULL )))
1924     THEN
1925 
1926        oe_debug_pub.add('Before calling line_desc_flex',2);
1927        IF Oe_Order_Cache.IS_FLEX_ENABLED('OE_BLKT_LINE_ATTRIBUTES') = 'Y'  THEN
1928 
1929 	  IF NOT OE_VALIDATE.Line_Desc_Flex
1930 	    (p_context            => p_x_line_rec.context
1931 	     ,p_attribute1         => p_x_line_rec.attribute1
1932 	     ,p_attribute2         => p_x_line_rec.attribute2
1933 	     ,p_attribute3         => p_x_line_rec.attribute3
1934 	     ,p_attribute4         => p_x_line_rec.attribute4
1935 	     ,p_attribute5         => p_x_line_rec.attribute5
1936 	     ,p_attribute6         => p_x_line_rec.attribute6
1937 	     ,p_attribute7         => p_x_line_rec.attribute7
1938 	     ,p_attribute8         => p_x_line_rec.attribute8
1939 	     ,p_attribute9         => p_x_line_rec.attribute9
1940 	     ,p_attribute10        => p_x_line_rec.attribute10
1941 	     ,p_attribute11        => p_x_line_rec.attribute11
1942 	     ,p_attribute12        => p_x_line_rec.attribute12
1943 	     ,p_attribute13        => p_x_line_rec.attribute13
1944 	     ,p_attribute14        => p_x_line_rec.attribute14
1945 	     ,p_attribute15        => p_x_line_rec.attribute15
1946 	     ,p_attribute16        => p_x_line_rec.attribute16  -- for bug 2184255
1947 	     ,p_attribute17        => p_x_line_rec.attribute17
1948 	     ,p_attribute18        => p_x_line_rec.attribute18
1949 	     ,p_attribute19        => p_x_line_rec.attribute19
1950 	     ,p_attribute20        => p_x_line_rec.attribute20
1951 	     ,p_document_type      => 'BLANKET'              ) THEN	-- Bug # 5562785
1952 
1953 	     IF p_validation_level = OE_GLOBALS.G_VALID_LEVEL_PARTIAL AND
1954 	       p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE   THEN
1955 
1956                 p_x_line_rec.context    := null;
1957                 p_x_line_rec.attribute1 := null;
1958                 p_x_line_rec.attribute2 := null;
1959                 p_x_line_rec.attribute3 := null;
1960                 p_x_line_rec.attribute4 := null;
1961                 p_x_line_rec.attribute5 := null;
1962                 p_x_line_rec.attribute6 := null;
1963                 p_x_line_rec.attribute7 := null;
1964                 p_x_line_rec.attribute8 := null;
1965                 p_x_line_rec.attribute9 := null;
1966                 p_x_line_rec.attribute10 := null;
1967                 p_x_line_rec.attribute11 := null;
1968                 p_x_line_rec.attribute12 := null;
1969                 p_x_line_rec.attribute13 := null;
1970                 p_x_line_rec.attribute14 := null;
1971                 p_x_line_rec.attribute15 := null;
1972                 p_x_line_rec.attribute16 := null;  -- for bug 2184255
1973                 p_x_line_rec.attribute17 := null;
1974                 p_x_line_rec.attribute18 := null;
1975                 p_x_line_rec.attribute19 := null;
1976                 p_x_line_rec.attribute20 := null;
1977 
1978 	   ELSIF p_validation_level = OE_GLOBALS.G_VALID_PARTIAL_WITH_DEF AND
1979 	     p_x_line_rec.operation =OE_GLOBALS.G_OPR_CREATE THEN
1980 
1981                 p_x_line_rec.context    := FND_API.G_MISS_CHAR;
1982                 p_x_line_rec.attribute1 := FND_API.G_MISS_CHAR;
1983                 p_x_line_rec.attribute2 := FND_API.G_MISS_CHAR;
1984                 p_x_line_rec.attribute3 := FND_API.G_MISS_CHAR;
1985                 p_x_line_rec.attribute4 := FND_API.G_MISS_CHAR;
1986                 p_x_line_rec.attribute5 := FND_API.G_MISS_CHAR;
1987                 p_x_line_rec.attribute6 := FND_API.G_MISS_CHAR;
1988                 p_x_line_rec.attribute7 := FND_API.G_MISS_CHAR;
1989                 p_x_line_rec.attribute8 := FND_API.G_MISS_CHAR;
1990                 p_x_line_rec.attribute9 := FND_API.G_MISS_CHAR;
1991                 p_x_line_rec.attribute10 := FND_API.G_MISS_CHAR;
1992                 p_x_line_rec.attribute11 := FND_API.G_MISS_CHAR;
1993                 p_x_line_rec.attribute12 := FND_API.G_MISS_CHAR;
1994                 p_x_line_rec.attribute13 := FND_API.G_MISS_CHAR;
1995                 p_x_line_rec.attribute14 := FND_API.G_MISS_CHAR;
1996                 p_x_line_rec.attribute15 := FND_API.G_MISS_CHAR;
1997                 p_x_line_rec.attribute16 := FND_API.G_MISS_CHAR;  -- for bug 2184255
1998                 p_x_line_rec.attribute17 := FND_API.G_MISS_CHAR;
1999                 p_x_line_rec.attribute18 := FND_API.G_MISS_CHAR;
2000                 p_x_line_rec.attribute19 := FND_API.G_MISS_CHAR;
2001                 p_x_line_rec.attribute20 := FND_API.G_MISS_CHAR;
2002 
2003 	   ELSIF p_validation_level = FND_API.G_VALID_LEVEL_NONE THEN
2004   	        NULL;
2005 
2006           ELSE
2007 	     x_return_status := FND_API.G_RET_STS_ERROR;
2008           END IF;
2009 
2010 	ELSE -- if the flex validation is successfull
2011 	    -- For bug 2511313
2012 	    IF p_x_line_rec.context IS NULL
2013 	      OR p_x_line_rec.context = FND_API.G_MISS_CHAR THEN
2014 	       p_x_line_rec.context    := oe_validate.g_context;
2015 	    END IF;
2016 
2017 	    IF p_x_line_rec.attribute1 IS NULL
2018 	      OR p_x_line_rec.attribute1 = FND_API.G_MISS_CHAR THEN
2019 	       p_x_line_rec.attribute1 := oe_validate.g_attribute1;
2020 	    END IF;
2021 
2022 	    IF p_x_line_rec.attribute2 IS NULL
2023 	      OR p_x_line_rec.attribute2 = FND_API.G_MISS_CHAR THEN
2024 	       p_x_line_rec.attribute2 := oe_validate.g_attribute2;
2025 	    END IF;
2026 
2027 	    IF p_x_line_rec.attribute3 IS NULL
2028 	      OR p_x_line_rec.attribute3 = FND_API.G_MISS_CHAR THEN
2029 	       p_x_line_rec.attribute3 := oe_validate.g_attribute3;
2030 	    END IF;
2031 
2032 	    IF p_x_line_rec.attribute4 IS NULL
2033 	      OR p_x_line_rec.attribute4 = FND_API.G_MISS_CHAR THEN
2034 	       p_x_line_rec.attribute4 := oe_validate.g_attribute4;
2035 	    END IF;
2036 
2037 	    IF p_x_line_rec.attribute5 IS NULL
2038 	      OR p_x_line_rec.attribute5 = FND_API.G_MISS_CHAR THEN
2039 	       p_x_line_rec.attribute5 := oe_validate.g_attribute5;
2040 	    END IF;
2041 
2042 	    IF p_x_line_rec.attribute6 IS NULL
2043 	      OR p_x_line_rec.attribute6 = FND_API.G_MISS_CHAR THEN
2044 	       p_x_line_rec.attribute6 := oe_validate.g_attribute6;
2045 	    END IF;
2046 
2047 	    IF p_x_line_rec.attribute7 IS NULL
2048 	      OR p_x_line_rec.attribute7 = FND_API.G_MISS_CHAR THEN
2049 	       p_x_line_rec.attribute7 := oe_validate.g_attribute7;
2050 	    END IF;
2051 
2052 	    IF p_x_line_rec.attribute8 IS NULL
2053 	      OR p_x_line_rec.attribute8 = FND_API.G_MISS_CHAR THEN
2054 	       p_x_line_rec.attribute8 := oe_validate.g_attribute8;
2055 	    END IF;
2056 
2057 	    IF p_x_line_rec.attribute9 IS NULL
2058 	      OR p_x_line_rec.attribute9 = FND_API.G_MISS_CHAR THEN
2059 	       p_x_line_rec.attribute9 := oe_validate.g_attribute9;
2060 	    END IF;
2061 
2062 	    IF p_x_line_rec.attribute10 IS NULL
2063 	      OR p_x_line_rec.attribute10 = FND_API.G_MISS_CHAR THEN
2064 	       p_x_line_rec.attribute10 := Oe_validate.G_attribute10;
2065 	    End IF;
2066 
2067 	    IF p_x_line_rec.attribute11 IS NULL
2068 	      OR p_x_line_rec.attribute11 = FND_API.G_MISS_CHAR THEN
2069 	       p_x_line_rec.attribute11 := oe_validate.g_attribute11;
2070 	    END IF;
2071 
2072 	    IF p_x_line_rec.attribute12 IS NULL
2073 	      OR p_x_line_rec.attribute12 = FND_API.G_MISS_CHAR THEN
2074 	       p_x_line_rec.attribute12 := oe_validate.g_attribute12;
2075 	    END IF;
2076 
2077 	    IF p_x_line_rec.attribute13 IS NULL
2078 	      OR p_x_line_rec.attribute13 = FND_API.G_MISS_CHAR THEN
2079 	       p_x_line_rec.attribute13 := oe_validate.g_attribute13;
2080 	    END IF;
2081 
2082 	    IF p_x_line_rec.attribute14 IS NULL
2083 	      OR p_x_line_rec.attribute14 = FND_API.G_MISS_CHAR THEN
2084 	       p_x_line_rec.attribute14 := oe_validate.g_attribute14;
2085 	    END IF;
2086 
2087 	    IF p_x_line_rec.attribute15 IS NULL
2088 	      OR p_x_line_rec.attribute15 = FND_API.G_MISS_CHAR THEN
2089 	       p_x_line_rec.attribute15 := oe_validate.g_attribute15;
2090 	    END IF;
2091 	    IF p_x_line_rec.attribute16 IS NULL  -- for bug 2184255
2092 	      OR p_x_line_rec.attribute16 = FND_API.G_MISS_CHAR THEN
2093 	       p_x_line_rec.attribute16 := oe_validate.g_attribute16;
2094 	    END IF;
2095 
2096 	    IF p_x_line_rec.attribute17 IS NULL
2097 	      OR p_x_line_rec.attribute17 = FND_API.G_MISS_CHAR THEN
2098 	       p_x_line_rec.attribute17 := oe_validate.g_attribute17;
2099 	    END IF;
2100 
2101 	    IF p_x_line_rec.attribute18 IS NULL
2102 	      OR p_x_line_rec.attribute18 = FND_API.G_MISS_CHAR THEN
2103 	       p_x_line_rec.attribute18 := oe_validate.g_attribute18;
2104 	    END IF;
2105 
2106 	    IF p_x_line_rec.attribute19 IS NULL
2107 	      OR p_x_line_rec.attribute19 = FND_API.G_MISS_CHAR THEN
2108 	       p_x_line_rec.attribute19 := oe_validate.g_attribute19;
2109 	    END IF;
2110 
2111 	    IF p_x_line_rec.attribute20 IS NULL  -- for bug 2184255
2112 	      OR p_x_line_rec.attribute20 = FND_API.G_MISS_CHAR THEN
2113 	       p_x_line_rec.attribute20 := oe_validate.g_attribute20;
2114 	    END IF;
2115 
2116 	    -- end of assignments, bug 2511313
2117          END IF; -- Flex Validation successfull
2118 	END IF; -- Is flex enabled
2119 
2120          oe_debug_pub.add('After line_desc_flex  ' || x_return_status,2);
2121 
2122     END IF;  -- For Additional Line Information
2123 
2124   END IF; -- 5562785
2125 
2126     if l_debug_level > 0 then
2127         oe_debug_pub.add('Exiting procedure OE_BLANKET_UTIL.Validate Line Attributes',1);
2128     end if;
2129 
2130 EXCEPTION
2131 
2132     WHEN FND_API.G_EXC_ERROR THEN
2133 
2134         x_return_status := FND_API.G_RET_STS_ERROR;
2135 
2136     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2137 
2138         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2139 
2140     WHEN OTHERS THEN
2141 
2142         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2143 
2144         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
2145         THEN
2146             OE_MSG_PUB.Add_Exc_Msg
2147             (   G_PKG_NAME
2148             ,   'Validate Attributes'
2149             );
2150         END IF;
2151 
2152 END Validate_Attributes;
2153 
2154 FUNCTION Validate_Item_Fields(
2155  p_item_identifier_type IN VARCHAR2,
2156  p_inventory_item_id IN NUMBER,
2157  p_sold_to_org_id IN NUMBER,
2158  p_ordered_item_id IN NUMBER,
2159  p_ordered_item IN VARCHAR2
2160 )
2161 RETURN BOOLEAN
2162 IS
2163 l_dummy VARCHAR2(240);
2164 
2165 --code taken from OE_validate_line.validate_item_fields
2166 /* added for 2219230 */
2167 l_org_flag   NUMBER := 2;
2168 item_val_org NUMBER := to_number(OE_Sys_Parameters.VALUE('MASTER_ORGANIZATION_ID'));
2169 
2170 CURSOR xref IS
2171         SELECT DECODE(items.org_independent_flag, 'Y', 1,
2172                  DECODE(items.organization_id, item_val_org, 1, 2))
2173         FROM  mtl_cross_reference_types types
2174             , mtl_cross_references items
2175             , mtl_system_items_vl sitems
2176         WHERE types.cross_reference_type = items.cross_reference_type
2177            AND items.inventory_item_id = sitems.inventory_item_id
2178            AND sitems.organization_id = item_val_org
2179            AND sitems.inventory_item_id = p_inventory_item_id
2180            AND items.cross_reference_type = p_item_identifier_type
2181            AND items.cross_reference = p_ordered_item
2182 	   ORDER BY 1;
2183 /* end of code added for 2219230 */
2184 
2185 --
2186 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2187 --
2188 BEGIN
2189     if l_debug_level > 0 then
2190      oe_debug_pub.add('In validate Item Fields', 1);
2191 
2192      oe_debug_pub.add('item identifier type :'||p_item_identifier_type);
2193      oe_debug_pub.add('inventory item id :'||p_inventory_item_id);
2194      oe_debug_pub.add('ordered item id :'||p_ordered_item_id);
2195      oe_debug_pub.add('ordered item :'||p_ordered_item);
2196      oe_debug_pub.add('sold to org id :'||p_sold_to_org_id);
2197     end if;
2198      --perform validation of inventory_item_id based on context
2199       IF p_item_identifier_type = 'INT' THEN --validate inventory_item_id
2200        if l_debug_level > 0 then
2201 	  oe_debug_pub.add('Blanket In validate INT');
2202        end if;
2203       	   	SELECT 'valid'
2204       	   	INTO  l_dummy
2205       	   	FROM  mtl_system_items_b
2206       	  	WHERE inventory_item_id = p_inventory_item_id
2207       	   	AND organization_id = OE_Sys_Parameters.VALUE_WNPS('MASTER_ORGANIZATION_ID')
2208                 AND customer_order_enabled_flag = 'Y';
2209 
2210       ELSIF p_item_identifier_type = 'CUST' THEN
2211        if l_debug_level > 0 then
2212 	oe_debug_pub.add('Blanket In validate CUST',1);
2213        end if;
2214 	      	SELECT 'valid'
2215       		INTO  l_dummy
2216       		FROM   mtl_customer_items citems
2217         	        ,mtl_customer_item_xrefs cxref
2218         	    	,mtl_system_items_vl sitems
2219       		WHERE citems.customer_item_id = cxref.customer_item_id
2220         		AND cxref.inventory_item_id = sitems.inventory_item_id
2221         		AND sitems.inventory_item_id = p_inventory_item_id
2222         		AND sitems.organization_id =
2223 		   	OE_Sys_Parameters.VALUE_WNPS('MASTER_ORGANIZATION_ID')
2224         		AND citems.customer_item_id = p_ordered_item_id
2225         		AND citems.customer_id = p_sold_to_org_id
2226          		AND citems.inactive_flag = 'N'
2227         		AND cxref.inactive_flag = 'N';
2228 
2229       ELSIF  p_item_identifier_type = 'CAT' THEN
2230        if l_debug_level > 0 then
2231 	oe_debug_pub.add('Blanket In validate CAT');
2232        end if;
2233              SELECT  'VALID'
2234             INTO    l_dummy
2235             FROM    MTL_CATEGORIES_VL
2236             WHERE   CATEGORY_ID = p_inventory_item_id
2237             AND     ENABLED_FLAG = 'Y';
2238 
2239       ELSE
2240        if l_debug_level > 0 then
2241 	oe_debug_pub.add('Blanket In validate generic');
2242        end if;
2243         	--code taken from OE_validate_line.validate_item_fields
2244         	/* SELECT replaced for with the following for 2219230 */
2245               if l_debug_level > 0 then
2246         	oe_debug_pub.add('Validating generic item, item_val_org:'||to_char(item_val_org),5);
2247               end if;
2248         	OPEN xref;
2249         	FETCH xref INTO l_org_flag;
2250         	IF xref%NOTFOUND OR l_org_flag <> 1 THEN
2251                  if l_debug_level > 0 then
2252         	  oe_debug_pub.add('Blanket Invalid Generic Item', 1);
2253                  end if;
2254         	  CLOSE xref;
2255         	END IF;
2256         	CLOSE xref;
2257 
2258       END IF;
2259 
2260       RETURN TRUE;
2261 
2262     EXCEPTION
2263 	   WHEN NO_DATA_FOUND THEN
2264             if l_debug_level > 0 then
2265              oe_debug_pub.add('Validate Item based on context: No data found',1);
2266             end if;
2267 	     RETURN FALSE;
2268            WHEN OTHERS THEN
2269             if l_debug_level > 0 then
2270              oe_debug_pub.add('Validate_Item_Fields: When Others',1);
2271             end if;
2272 	     RETURN FALSE;
2273 END Validate_Item_Fields;
2274 
2275 --PP Revenue Recognition
2276 --bug 4893057
2277 FUNCTION Validate_Accounting_Rule(
2278 p_inventory_item_id IN NUMBER,
2279 p_accounting_rule_id IN NUMBER
2280 )
2281 RETURN BOOLEAN
2282 IS
2283 l_rule_type VARCHAR2(10);
2284 l_item_org NUMBER := to_number(OE_Sys_Parameters.VALUE('MASTER_ORGANIZATION_ID'));
2285 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2286 l_service_item_flag VARCHAR2(1);
2287 l_bom_item_type NUMBER;
2288 l_dummy VARCHAR2(25);
2289 
2290 BEGIN
2291     if l_debug_level > 0 then
2292 	     oe_debug_pub.add('In validate accounting rule', 1);
2293 	     oe_debug_pub.add('inventory item id :'||p_inventory_item_id);
2294 	     oe_debug_pub.add('l_item_org :'||l_item_org);
2295     end if;
2296     --Bug 5169363
2297     --bug5220335 moved the query under BEGIN-EXCEPTION-END
2298     BEGIN
2299        SELECT  'VALID'
2300        INTO    l_dummy
2301        FROM    MTL_CATEGORIES_VL
2302        WHERE   CATEGORY_ID = p_inventory_item_id
2303        AND     ENABLED_FLAG = 'Y';
2304     EXCEPTION
2305        WHEN OTHERS THEN
2306 	  l_dummy := null;
2307     END;
2308 
2309     IF OE_GLOBALS.Equal(l_dummy,'VALID') THEN
2310 	RETURN TRUE;
2311     ELSE
2312 	    IF p_inventory_item_id IS NOT NULL THEN
2313 		select service_item_flag,bom_item_type
2314 		into l_service_item_flag, l_bom_item_type
2315 		from MTL_SYSTEM_ITEMS
2316 		where inventory_item_id = p_inventory_item_id
2317 		AND    organization_id =  l_item_org;
2318 	    END IF;
2319 
2320 	    IF NOT (l_bom_item_type = 4 and l_service_item_flag = 'Y') THEN -- not service
2321 		IF p_accounting_rule_id <> FND_API.G_MISS_NUM AND
2322 		     p_accounting_rule_id IS NOT NULL THEN
2323 			IF l_debug_level > 0 THEN
2324 				oe_debug_pub.add('Getting accounting rule type');
2325 			END IF;
2326 			SELECT type
2327 			INTO l_rule_type
2328 			FROM ra_rules
2329 			WHERE rule_id = p_accounting_rule_id;
2330 			IF l_debug_level > 0 THEN
2331 				oe_debug_pub.add('Rule Type is :'||l_rule_type);
2332 			END IF;
2333 			IF l_rule_type = 'PP_DR_ALL' or l_rule_type = 'PP_DR_PP' THEN
2334 			     RETURN FALSE;
2335 			END IF; --End of rule type
2336 		END IF;--End of accounting type id is not null
2337 	      END IF; --End of item type not Service
2338 
2339 	      RETURN TRUE;
2340     END IF;
2341     --Bug 5169363
2342 
2343 EXCEPTION
2344    WHEN OTHERS THEN
2345 	    if l_debug_level > 0 then
2346 		oe_debug_pub.add('Validate_Accounting Rule: When Others',1);
2347 		oe_debug_pub.add('Error message...'||sqlerrm);
2348 	    end if;
2349     RETURN FALSE;
2350 END Validate_Accounting_Rule;
2351 --bug 4893057
2352 
2353 
2354 PROCEDURE Validate_Entity
2355 ( p_line_rec           IN OUT NOCOPY  OE_Blanket_PUB.line_rec_type
2356 , p_old_line_rec       IN OE_Blanket_PUB.Line_rec_type := OE_Blanket_PUB.G_MISS_BLANKET_LINE_REC
2357 , x_return_status      OUT NOCOPY VARCHAR2
2358 )IS
2359 
2360 l_dummy varchar2(30);
2361 l_valid_line_number varchar2(1);
2362 l_old_line_rec OE_Blanket_PUB.Line_rec_type  := p_old_line_rec;
2363 l_site_use_code   VARCHAR2(30);
2364 l_return_status varchar2(1);
2365 
2366 --
2367 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
2368 --
2369 l_list_line_exists            VARCHAR2(1) := 'N';
2370 l_temp varchar2(100);
2371 BEGIN
2372 
2373     x_return_status := FND_API.G_RET_STS_SUCCESS;
2374 
2375 
2376 
2377     if l_debug_level > 0 then
2378        oe_debug_pub.add('Enter OE_BLANKET_UTIL.Validate ENTITY - Line',1);
2379        oe_debug_pub.add('Operation : '||p_line_rec.operation);
2380        oe_debug_pub.add('Price List ID : '||p_line_rec.price_list_id);
2381        oe_debug_pub.add('Unit List Price : '||p_line_rec.unit_list_price);
2382        oe_debug_pub.add('Line end date : '||p_line_rec.end_date_active);
2383        oe_debug_pub.add('Header end date : '||g_header_rec.end_date_active);
2384     end if;
2385 
2386     -- Load old line rec if not passed
2387     IF p_line_rec.operation = oe_globals.g_opr_update THEN
2388        IF l_old_line_rec.line_id is null THEN
2389    	  l_old_line_rec := Query_Row(p_line_id => p_line_rec.line_id);
2390        END IF;
2391     END IF;
2392 
2393   -- Validate Last Updated By values.
2394     -- Added for bug #6270818.
2395     IF p_line_rec.operation = oe_globals.g_opr_update
2396     THEN
2397        If p_line_rec.last_updated_by <> FND_GLOBAL.USER_ID or
2398            l_old_line_rec.last_updated_by <> FND_GLOBAL.USER_ID
2399        THEN
2400           p_line_rec.last_updated_by := FND_GLOBAL.USER_ID;
2401           l_old_line_rec.last_updated_by := FND_GLOBAL.USER_ID;
2402       END IF;
2403           p_line_rec.last_update_date := sysdate;
2404           l_old_line_rec.last_update_date := sysdate;
2405      END IF;
2406 
2407 
2408     -- Load header
2409     Load_Header(p_header_id => p_line_rec.header_id,
2410                 x_return_status => l_return_status);
2411     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2412        x_return_status := l_return_status;
2413     END IF;
2414 
2415     -- Versioning/Reasons changes (moved to beginning for bug 3775937
2416     if OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
2417        OE_GLOBALS.G_CAPTURED_REASON = 'V' THEN
2418         OE_GLOBALS.G_REASON_CODE := p_line_rec.revision_change_reason_code;
2419         OE_GLOBALS.G_REASON_COMMENTS := p_line_rec.revision_change_comments;
2420         OE_GLOBALS.G_CAPTURED_REASON := 'Y';
2421     end if;
2422 
2423    -- added for bug 3443777 need to call validate entity for reasons capture
2424    IF (p_line_rec.operation <> OE_GLOBALS.g_opr_delete)
2425     and  not  OE_BLANKET_UTIL.is_end_date_operation(p_line_rec, l_old_line_rec)    -- Added for bug 9027699
2426 
2427    THEN
2428 
2429  /*   IF p_line_rec.operation = oe_globals.g_opr_update AND p_line_rec.end_date_active = trunc(sysdate) AND
2430    NOT OE_GLOBALS.Equal(p_line_rec.end_date_active, p_old_line_rec.end_date_active) THEN
2431 
2432      null;
2433 
2434 else*/
2435     -----------------------------------------------------------
2436     --  Check required attributes.
2437     -----------------------------------------------------------
2438 
2439      if l_debug_level > 0 then
2440 	oe_debug_pub.add('Blanket In validate entity 1');
2441         oe_debug_pub.add('1 '||x_return_status, 1);
2442      end if;
2443 
2444     IF  p_line_rec.line_id IS NULL
2445     THEN
2446 
2447         x_return_status := FND_API.G_RET_STS_ERROR;
2448 
2449         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2450         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2451 			OE_Order_UTIL.Get_Attribute_Name('line_id'));
2452         OE_MSG_PUB.Add;
2453 
2454     END IF;
2455 
2456     IF p_line_rec.item_identifier_type IS NULL
2457     THEN
2458 
2459         x_return_status := FND_API.G_RET_STS_ERROR;
2460 
2461         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2462         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2463              OE_Order_UTIL.Get_Attribute_Name('ITEM_IDENTIFIER_TYPE'));
2464         OE_MSG_PUB.Add;
2465 
2466     ELSIF p_line_rec.item_identifier_type <> 'ALL'
2467         AND p_line_rec.inventory_item_id IS NULL
2468     THEN
2469 
2470         x_return_status := FND_API.G_RET_STS_ERROR;
2471 
2472         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2473         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2474              OE_Order_UTIL.Get_Attribute_Name('INVENTORY_ITEM_ID'));
2475         OE_MSG_PUB.Add;
2476 
2477     END IF;
2478 
2479     IF  p_line_rec.start_date_active IS NULL
2480     THEN
2481 
2482         x_return_status := FND_API.G_RET_STS_ERROR;
2483 
2484         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2485         FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Activation Date');
2486         OE_MSG_PUB.Add;
2487 
2488     END IF;
2489 
2490     --  Return Error if a required attribute is missing.
2491 
2492     IF x_return_status = FND_API.G_RET_STS_ERROR THEN
2493 
2494         RAISE FND_API.G_EXC_ERROR;
2495 
2496     END IF;
2497 
2498     if l_debug_level > 0 then
2499 	oe_debug_pub.add('Blanket In validate entity 2');
2500     end if;
2501 
2502     -- Customer Item Validation
2503     IF (p_line_rec.operation = oe_globals.g_opr_update or p_line_rec.operation = oe_globals.g_opr_create) AND
2504         p_line_rec.ITEM_IDENTIFIER_TYPE = 'CUST' then
2505        oe_blanket_util.Get_Inventory_Item(p_x_line_rec => p_line_rec,
2506                                        x_return_status => l_return_status);
2507     END if;
2508     IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2509        oe_debug_pub.add('Raise and Error in Customer ITem Validation oe_blanket_util.Get_Inventory_Item');
2510        RAISE FND_API.G_EXC_ERROR;
2511     END IF;
2512     --PP Revenue Recognition
2513     --bug 4893057
2514     IF NOT Validate_Accounting_Rule
2515 	(p_line_rec.inventory_item_id,
2516 	p_line_rec.accounting_rule_id)
2517     THEN
2518 	x_return_status := FND_API.G_RET_STS_ERROR;
2519 	FND_MESSAGE.Set_Name('ONT','OE_INVALID_ATTRIBUTE');
2520 	FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2521         OE_Order_Util.Get_Attribute_Name('ACCOUNTING_RULE_ID'));
2522 	OE_MSG_PUB.ADD;
2523     END IF;
2524 
2525 
2526     ---------------------------------------------------------------------
2527     --  Validate attribute dependencies here.
2528     ---------------------------------------------------------------------
2529 
2530     -- Log request to validate line number if line number changed
2531 
2532     IF NOT OE_GLOBALS.Equal
2533        (p_line_rec.line_number,l_old_line_rec.line_number)
2534     THEN
2535        --some fields not allowed to update if release exists against line
2536        IF (p_line_rec.released_amount > 0) THEN
2537 	   fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2538            fnd_message.set_token('ATTRIBUTE',
2539            OE_Order_UTIL.Get_Attribute_Name('LINE_NUMBER'));
2540            OE_MSG_PUB.Add;
2541        ELSE
2542            oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
2543 		 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2544 		    p_Entity_Id => p_line_rec.line_id,
2545 	            p_requesting_entity_code    =>
2546 		 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2547 		p_requesting_entity_id      => p_line_rec.line_id,
2548 		    p_request_type => 'VALIDATE_BLANKET_LINE_NUMBER',
2549 		    p_param1    => p_line_rec.header_id,
2550 		    p_param2   => p_line_rec.line_number,
2551 		    x_return_status => l_return_status);
2552                 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2553                    RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2554                 END IF;
2555        END IF;
2556     END IF;
2557 
2558 
2559     -- Inventory Item Validations
2560 
2561     IF NOT OE_GLOBALS.Equal
2562         (p_line_rec.item_identifier_type,l_old_line_rec.item_identifier_type)
2563        OR NOT OE_GLOBALS.Equal
2564         (p_line_rec.inventory_item_id,l_old_line_rec.inventory_item_id)
2565        OR NOT OE_GLOBALS.Equal
2566         (p_line_rec.end_date_active,l_old_line_rec.end_date_active)
2567        OR NOT OE_GLOBALS.Equal
2568         (p_line_rec.start_date_active,l_old_line_rec.start_date_active)
2569     THEN
2570       --fields not allowed to update if releases exist against this line
2571      IF (p_line_rec.released_amount > 0) AND
2572        (NOT OE_GLOBALS.Equal
2573         (p_line_rec.inventory_item_id,l_old_line_rec.inventory_item_id)) THEN
2574 
2575             fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2576             fnd_message.set_token('ATTRIBUTE',
2577                OE_Order_UTIL.Get_Attribute_Name('INVENTORY_ITEM_ID'));
2578             OE_MSG_PUB.add;
2579             x_return_status := FND_API.G_RET_STS_ERROR;
2580 
2581      ELSIF (p_line_rec.released_amount > 0) AND
2582       (NOT OE_GLOBALS.Equal
2583        (p_line_rec.item_identifier_type,l_old_line_rec.item_identifier_type)) THEN
2584             fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2585             fnd_message.set_token('ATTRIBUTE',
2586                OE_Order_UTIL.Get_Attribute_Name('ITEM_IDENTIFIER_TYPE'));
2587             OE_MSG_PUB.add;
2588             x_return_status := FND_API.G_RET_STS_ERROR;
2589 
2590      ELSE
2591 
2592       -- Inventory Item ID should be null for 'ALL Item' Context
2593       IF p_line_rec.item_identifier_type = 'ALL' THEN
2594 
2595         IF p_line_rec.inventory_item_id IS NOT NULL THEN
2596             x_return_status := FND_API.G_RET_STS_ERROR;
2597             fnd_message.set_name('ONT', 'OE_ITEM_VALIDATION_FAILED');
2598             OE_MSG_PUB.add;
2599         END IF;
2600 
2601       -- For all other context values, validate item id
2602       ELSE
2603 
2604 	IF NOT Validate_Item_Fields
2605 			( p_line_rec.item_identifier_type,
2606 			p_line_rec.inventory_item_id,
2607                         p_line_rec.sold_to_org_id,
2608 			p_line_rec.ordered_item_id,
2609 			p_line_rec.ordered_item
2610 			) THEN
2611             x_return_status := FND_API.G_RET_STS_ERROR;
2612             fnd_message.set_name('ONT', 'OE_ITEM_VALIDATION_FAILED');
2613             OE_MSG_PUB.add;
2614         END IF;
2615 
2616       END IF;
2617 
2618       if l_debug_level > 0 then
2619 	oe_debug_pub.add('before logging request for item uniqueness');
2620       end if;
2621 
2622       --validate item uniqueness
2623       OE_Delayed_Requests_Pvt.Log_Request(p_Entity_Code =>
2624 	         OE_BLANKET_pub.G_ENTITY_BLANKET_LINE ,
2625                p_Entity_Id => p_line_rec.line_id,
2626                p_requesting_entity_code    =>
2627                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2628                p_requesting_entity_id      => p_line_rec.line_id,
2629                p_request_type => 'VALIDATE_BLANKET_INV_ITEM',
2630                p_param1    => p_line_rec.inventory_item_id,
2631                p_param2    => p_line_rec.header_id,
2632                p_param3    => p_line_rec.item_identifier_type,
2633 	       p_param4    => p_line_rec.ordered_item_id, --bug6826787
2634 	       p_param5    => p_line_rec.ordered_item,    --bug6826787
2635                p_date_param1    => p_line_rec.start_date_active,
2636                p_date_param2    => p_line_rec.end_date_active,
2637                x_return_status => l_return_status);
2638       IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2639          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2640       END IF;
2641 
2642 
2643 
2644      END IF; --if released amount
2645 
2646     END IF; --if item changing
2647 
2648 
2649     -- Validate Ship to
2650 
2651     IF p_line_rec.ship_to_org_id IS NOT NULL AND
2652              ( NOT OE_GLOBALS.EQUAL(p_line_rec.ship_to_org_id ,l_old_line_rec.ship_to_org_id) OR
2653                NOT OE_GLOBALS.EQUAL(p_line_rec.sold_to_org_id ,l_old_line_rec.sold_to_org_id)) THEN
2654              -- ER 5743580
2655               IF ( NOT Validate_Ship_To_Org(p_line_rec.ship_to_org_id,
2656                                             p_line_rec.sold_to_org_id )) THEN
2657                   if l_debug_level > 0 then
2658                    oe_debug_pub.add ('Blanket In: No data found',2);
2659                   end if;
2660                    x_return_status := FND_API.G_RET_STS_ERROR;
2661                    fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
2662                    FND_MESSAGE.SET_TOKEN('ATTRIBUTE'
2663                       , OE_Order_Util.Get_Attribute_Name('ship_to_org_id'));
2664                    OE_MSG_PUB.Add;
2665                END IF;
2666     END IF; -- Ship to
2667 
2668     --  Deliver to Org id depends on sold to org.
2669        if l_debug_level > 0 then
2670              oe_debug_pub.add('Validating deliver_to_org_id :'|| to_char(p_line_rec.deliver_to_org_id),2);
2671              oe_debug_pub.add(' Customer Relations :'|| g_customer_relations, 1);
2672        end if;
2673     IF p_line_rec.deliver_to_org_id IS NOT NULL AND
2674          ( NOT OE_GLOBALS.EQUAL(p_line_rec.deliver_to_org_id,l_old_line_rec.deliver_to_org_id) OR
2675            NOT OE_GLOBALS.EQUAL(p_line_rec.sold_to_org_id ,l_old_line_rec.sold_to_org_id)) THEN
2676                 -- ER 5743580
2677              IF NOT (Validate_Deliver_To_Org(p_line_rec.deliver_to_org_id,
2678                                             p_line_rec.sold_to_org_id )) THEN
2679 
2680                   x_return_status := FND_API.G_RET_STS_ERROR;
2681                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
2682                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2683                   OE_Order_Util.Get_Attribute_Name('deliver_to_org_id'));
2684                   OE_MSG_PUB.Add;
2685               END IF;
2686 
2687     END IF; -- Deliver to
2688 
2689     --  Invoice to Org id depends on sold to org.
2690 
2691     IF p_line_rec.invoice_to_org_id IS NOT NULL AND
2692           ( NOT OE_GLOBALS.EQUAL(p_line_rec.invoice_to_org_id ,l_old_line_rec.invoice_to_org_id) OR
2693             NOT OE_GLOBALS.EQUAL(p_line_rec.sold_to_org_id ,l_old_line_rec.sold_to_org_id)) THEN
2694                 -- ER 5743580
2695                 IF NOT ( Validate_Invoice_To_Org ( p_line_rec.invoice_to_org_id,
2696                                                    p_line_rec.sold_to_org_id )) THEN
2697                   x_return_status := FND_API.G_RET_STS_ERROR;
2698                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
2699                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2700                   OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
2701                   OE_MSG_PUB.Add;
2702                 END IF;
2703     END IF; -- Invoice to org
2704 
2705     if l_debug_level > 0 then
2706 	oe_debug_pub.add('Blanket In validate entity 3');
2707     end if;
2708 
2709 
2710   -- Date Validations
2711   --Changes made for Bug No 5528599 start
2712   if (p_line_rec.end_date_active is not NULL and
2713        (p_line_rec.start_date_active)
2714 	  > (p_line_rec.end_date_active)) THEN
2715              if ( nvl(p_line_rec.source_document_type_id,0) = 2 --bug#5528507
2716                AND p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE)
2717              then
2718               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
2719 	      OE_MSG_PUB.ADD;
2720               oe_debug_pub.add('1: Not Setting Error',1);
2721 
2722             else
2723               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
2724               OE_MSG_PUB.ADD;
2725               oe_debug_pub.add('1: Setting Error',1);
2726               x_return_status := FND_API.G_RET_STS_ERROR;
2727            end if;
2728   --Changes made for Bug No 5528599
2729   end if;
2730 
2731   --line start date must be after header date range
2732   if (p_line_rec.start_date_active < g_header_rec.start_date_active)
2733   then
2734         FND_MESSAGE.SET_NAME('ONT','OE_BLKT_END_DATE_CONFLICT');
2735 	OE_MSG_PUB.ADD;
2736 	x_return_status := FND_API.G_RET_STS_ERROR;
2737   end if;
2738 
2739   -- if header end date exists, line end date cannot be null
2740   -- and it cannot be greater than header end date
2741   if g_header_rec.end_date_active is not NULL then
2742    if p_line_rec.end_date_active is NULL
2743       or (p_line_rec.end_date_active
2744             > g_header_rec.end_date_active)
2745    then
2746         FND_MESSAGE.SET_NAME('ONT','OE_BLKT_END_DATE_CONFLICT');
2747 	OE_MSG_PUB.ADD;
2748 	x_return_status := FND_API.G_RET_STS_ERROR;
2749    end if;
2750   end if;
2751 
2752   if l_debug_level > 0 then
2753      oe_debug_pub.add('Blanket In validate entity 4, status :'||
2754                                       x_return_status);
2755   end if;
2756 
2757   -- pricing uom is required if it is a blanket price list
2758   -- and ordered UOM is null
2759   IF p_line_rec.order_quantity_uom IS NULL THEN
2760     IF (g_new_price_list AND (p_line_rec.pricing_uom IS NULL)) THEN
2761         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2762         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2763             OE_Order_Util.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2764         OE_MSG_PUB.Add;
2765     ELSIF p_line_rec.price_list_id IS NOT NULL THEN
2766       IF IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id)
2767       AND p_line_rec.pricing_uom IS NULL THEN
2768         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2769         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2770             OE_Order_Util.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2771         OE_MSG_PUB.Add;
2772       END IF;
2773     END IF;
2774   END IF;
2775 
2776 IF NOT g_new_price_list AND
2777    p_line_rec.price_list_id IS NULL AND
2778    (p_line_rec.enforce_price_list_flag = 'Y') THEN
2779         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
2780         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2781 			OE_Order_UTIL.Get_Attribute_Name('PRICE_LIST_ID'));
2782 	  OE_MSG_PUB.ADD;
2783 	  x_return_status := FND_API.G_RET_STS_ERROR;
2784 END IF;
2785 
2786 -- UOM is required if any of the quantities are given on the blanket line
2787 IF     p_line_rec.order_quantity_uom IS NULL AND
2788       (p_line_rec.Blanket_Min_Quantity IS NOT NULL
2789     OR p_line_rec.Blanket_Max_Quantity IS NOT NULL
2790     OR p_line_rec.Min_Release_Quantity IS NOT NULL
2791     OR p_line_rec.Max_Release_Quantity IS NOT NULL) THEN
2792           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_QUANTITY_UOM');
2793 	  OE_MSG_PUB.ADD;
2794 	  x_return_status := FND_API.G_RET_STS_ERROR;
2795 
2796 END IF;
2797 
2798 -- Bug 8770382 Start
2799 
2800 	If (p_line_rec.blanket_max_quantity < p_line_rec.released_quantity)
2801 	and ((l_old_line_rec.blanket_max_quantity >= l_old_line_rec.released_quantity)
2802 	      or (Nvl(l_old_line_rec.blanket_max_quantity,0) = 0))
2803 	and (p_line_rec.override_blanket_controls_flag = 'N') then
2804 
2805       		fnd_message.set_name('ONT','OE_BSA_REL_QUANTITY');
2806      		FND_MESSAGE.SET_TOKEN('VALUE',l_old_line_rec.released_quantity);
2807       		OE_MSG_PUB.ADD;
2808       		x_return_status := FND_API.G_RET_STS_ERROR;
2809 
2810  	elsif  (p_line_rec.blanket_max_amount < p_line_rec.released_amount)
2811     	and ((l_old_line_rec.blanket_max_amount >= l_old_line_rec.released_amount)
2812               or (nvl(l_old_line_rec.blanket_max_amount,0) = 0))
2813     	and (p_line_rec.override_blanket_controls_flag = 'N') then
2814 
2815        		fnd_message.set_name('ONT','OE_BSA_REL_AMOUNT');
2816        		FND_MESSAGE.SET_TOKEN('VALUE',l_old_line_rec.released_amount);
2817        		OE_MSG_PUB.ADD;
2818        		x_return_status := FND_API.G_RET_STS_ERROR;
2819 
2820 
2821  	end if;
2822 
2823  -- Bug 8770382 End
2824 
2825 
2826 
2827 -- Validate min/max limits
2828   Validate_Min_Max_Range(p_line_rec.Blanket_Min_Quantity,
2829        p_line_rec.blanket_max_quantity,
2830        'BLANKET_LINE_QUANTITY', x_return_status);
2831   Validate_Min_Max_Range(p_line_rec.Min_release_quantity,
2832        p_line_rec.Max_release_quantity,
2833        'BLANKET_LINE_RELEASE_QUANTITY', x_return_status);
2834   Validate_Min_Max_Range(p_line_rec.Min_release_amount,
2835        p_line_rec.Max_release_amount,
2836        'BLANKET_LINE_RELEASE_AMOUNT', x_return_status);
2837   Validate_Min_Max_Range(p_line_rec.blanket_min_amount,
2838        p_line_rec.blanket_max_amount,
2839        'BLANKET_LINE_AMOUNT', x_return_status);
2840 /*
2841     IF p_line_rec.blanket_max_amount > g_header_rec.blanket_max_amount THEN
2842          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_MIN_MAX_VALUES');
2843          OE_MSG_PUB.ADD;
2844          x_return_status := FND_API.G_RET_STS_ERROR;
2845     END IF;
2846 */
2847     IF p_line_rec.min_release_amount > p_line_rec.blanket_max_amount OR
2848        p_line_rec.max_release_amount > p_line_rec.blanket_max_amount THEN
2849          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_MAX_AMOUNT');
2850          OE_MSG_PUB.ADD;
2851          x_return_status := FND_API.G_RET_STS_ERROR;
2852 
2853     END IF;
2854 
2855     IF p_line_rec.min_release_quantity > p_line_rec.blanket_max_quantity OR
2856        p_line_rec.max_release_quantity > p_line_rec.blanket_max_quantity THEN
2857          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_MAX_QUANTITY');
2858          OE_MSG_PUB.ADD;
2859          x_return_status := FND_API.G_RET_STS_ERROR;
2860 
2861     END IF;
2862 
2863    IF p_line_rec.operation = oe_globals.g_opr_update THEN
2864 
2865     if l_debug_level > 0 then
2866 	oe_debug_pub.add('Blanket In validate entity 4: update');
2867     end if;
2868 
2869       --not allowed to change any attributes on a previously closed blanket
2870     IF p_line_rec.end_date_active < trunc(sysdate) and
2871        l_old_line_rec.end_date_active < trunc(sysdate) THEN
2872                  x_return_status := FND_API.G_RET_STS_ERROR;
2873                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_ATTR_CLOSED');
2874                  OE_MSG_PUB.Add;
2875     END IF;
2876     --Srini
2877     --oe_blanket_util.Get_Inventory_Item(p_x_line_rec => p_line_rec,
2878     --                                   x_return_status => l_return_status);
2879     --End srini
2880       --display warning if we haven't fulfilled minimum requirements
2881 
2882 
2883     IF NOT OE_GLOBALS.Equal(p_line_rec.end_date_active, l_old_line_rec.end_date_active) AND
2884        p_line_rec.end_date_active <= trunc(sysdate) AND
2885        p_line_rec.override_blanket_controls_flag = 'N' THEN
2886           IF nvl(p_line_rec.released_amount,0) < p_line_rec.blanket_min_amount THEN
2887               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
2888               OE_MSG_PUB.ADD;
2889               if l_debug_level > 0 then
2890                oe_debug_pub.add('Blanket line close min amount ');
2891               end if;
2892 
2893           ELSIF nvl(p_line_rec.released_quantity,0) < p_line_rec.blanket_min_quantity THEN
2894               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
2895               OE_MSG_PUB.ADD;
2896               if l_debug_level > 0 then
2897                  oe_debug_pub.add('Blanket line close min quantity ');
2898               end if;
2899           END IF;
2900     END IF;
2901 
2902        --some fields are not allowed to update if release exists against line
2903        IF (p_line_rec.released_amount > 0) THEN
2904 	         IF NOT OE_GLOBALS.Equal (p_line_rec.order_quantity_uom,
2905 	               l_old_line_rec.order_quantity_uom) THEN
2906                         x_return_status := FND_API.G_RET_STS_ERROR;
2907 	                fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2908 			fnd_message.set_token('ATTRIBUTE',
2909                                    OE_Order_UTIL.Get_Attribute_Name('ORDER_QUANTITY_UOM'));
2910 			OE_MSG_PUB.Add;
2911                  END IF;
2912        END IF;
2913 
2914          /*     IF NOT OE_GLOBALS.EQUAL (p_line_rec.end_date_active, l_old_line_rec.end_date_active) THEN
2915                 --validate item uniqueness
2916 		OE_Delayed_Requests_Pvt.Log_Request(p_Entity_Code =>
2917 			OE_BLANKET_pub.G_ENTITY_BLANKET_LINE ,
2918 		    p_Entity_Id => p_line_rec.line_id,
2919                     p_requesting_entity_code    =>
2920                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
2921                 p_requesting_entity_id      => p_line_rec.line_id,
2922 		   p_request_type => 'VALIDATE_BLANKET_INV_ITEM',
2923 		    p_param1    => p_line_rec.inventory_item_id,
2924 		    p_param2    => p_line_rec.header_id,
2925 		    p_param3    => p_line_rec.item_identifier_type,
2926 		    p_param4    => p_line_rec.ordered_item_id, --bug6826787
2927 		    p_param5    => p_line_rec.ordered_item,    --bug6826787
2928 		    p_date_param1    => p_line_rec.start_date_active,
2929 		    p_date_param2    => p_line_rec.end_date_active,
2930 		    x_return_status => l_return_status);
2931 
2932                  IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
2933                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2934                  END IF;
2935 
2936               END IF;*/
2937 
2938                IF p_line_rec.end_date_active IS NOT NULL THEN
2939                     BEGIN
2940                        SELECT 'ERROR'
2941                          INTO l_dummy
2942                          FROM OE_ORDER_LINES
2943                         WHERE trunc(request_date) > trunc(p_line_rec.end_date_active)
2944 						--- Bug 14487632, FP of 14469059 Start
2945 						AND OPEN_FLAG = 'Y'
2946 						--- Bug 14487632, FP of 14469059 End
2947                         AND BLANKET_NUMBER = p_line_rec.order_number
2948                         AND BLANKET_LINE_NUMBER = p_line_rec.line_number
2949                         AND ROWNUM = 1;
2950 
2951                         IF l_dummy = 'ERROR' THEN
2952                                 x_return_status := FND_API.G_RET_STS_ERROR;
2953                                 fnd_message.set_name('ONT', 'OE_BLKT_LINE_RELEASE_END_DATE');
2954                                 OE_MSG_PUB.Add;
2955                         END IF;
2956 
2957                     EXCEPTION
2958                           WHEN NO_DATA_FOUND THEN
2959                              NULL;  --no rows with conflicting end dates
2960                     END;
2961                END IF;
2962 
2963 /*
2964        -- Bug 2792852 => pricing uom is not stored on the blanket line, it
2965        -- is derived from the list_line_id in the forms post-query.
2966        -- So it will always be null on the old rec thus this check will
2967        -- always post error even if user was updating some other field
2968        -- on the blanket line.
2969        -- Therefore commenting out NOCOPY {file.sql.39 change}  the check, logging of price list
2970        -- line creation is anyway restricted to line CREATE operation.
2971        oe_debug_pub.add('old pricing uom :'||l_old_line_rec.pricing_uom);
2972        oe_debug_pub.add('new pricing uom :'||p_line_rec.pricing_uom);
2973        --pricing uom not allowed to change if blanket price list
2974        if NOT OE_GLOBALS.EQUAL(p_line_rec.pricing_uom,
2975                            l_old_line_rec.pricing_uom) THEN
2976           if (g_new_price_list) THEN
2977              FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2978              FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2979                OE_Order_UTIL.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2980 	     OE_MSG_PUB.ADD;
2981 	     x_return_status := FND_API.G_RET_STS_ERROR;
2982           elsif p_line_rec.price_list_id IS NOT NULL THEN
2983            if IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id) THEN
2984 	     x_return_status := FND_API.G_RET_STS_ERROR;
2985              FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
2986              FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
2987                OE_Order_UTIL.Get_Attribute_Name('PRICING_QUANTITY_UOM'));
2988 	     OE_MSG_PUB.ADD;
2989     	     x_return_status := FND_API.G_RET_STS_ERROR;
2990            end if;
2991           end if;
2992        end if;
2993 */
2994 
2995       if l_debug_level > 0 then
2996 	oe_debug_pub.add('Blanket In validate entity update 1');
2997       end if;
2998        if NOT OE_GLOBALS.EQUAL(p_line_rec.released_amount,
2999                            l_old_line_rec.released_amount) THEN
3000           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
3001           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Released Amount');
3002 	  OE_MSG_PUB.ADD;
3003 	  x_return_status := FND_API.G_RET_STS_ERROR;
3004        end if;
3005 
3006        if NOT OE_GLOBALS.EQUAL(p_line_rec.returned_amount,
3007                            l_old_line_rec.returned_amount) THEN
3008           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
3009           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Returned Amount');
3010 	  OE_MSG_PUB.ADD;
3011 	  x_return_status := FND_API.G_RET_STS_ERROR;
3012        end if;
3013 
3014        if NOT OE_GLOBALS.EQUAL(p_line_rec.released_quantity,
3015                            Round(l_old_line_rec.released_quantity, 6)) THEN --round() added for bug 9587613
3016           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
3017           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Released Quantity');
3018 	  OE_MSG_PUB.ADD;
3019 	  x_return_status := FND_API.G_RET_STS_ERROR;
3020        end if;
3021 
3022        if NOT OE_GLOBALS.EQUAL(p_line_rec.fulfilled_quantity,
3023                            Round(l_old_line_rec.fulfilled_quantity, 6)) THEN --round() added for bug 9587613
3024           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
3025           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Fulfilled Quantity');
3026 	  OE_MSG_PUB.ADD;
3027 	  x_return_status := FND_API.G_RET_STS_ERROR;
3028        end if;
3029 
3030        if NOT OE_GLOBALS.EQUAL(p_line_rec.fulfilled_amount,
3031                            l_old_line_rec.fulfilled_amount) THEN
3032           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
3033           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Fulfilled Amount');
3034 	  OE_MSG_PUB.ADD;
3035 	  x_return_status := FND_API.G_RET_STS_ERROR;
3036        end if;
3037 
3038        if NOT OE_GLOBALS.EQUAL(p_line_rec.returned_quantity,
3039                            Round(l_old_line_rec.returned_quantity, 6)) THEN --round() added for bug 9587613
3040           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UPDATE_LINE_ATTRIBUTE');
3041           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Returned Quantity');
3042 	  OE_MSG_PUB.ADD;
3043 	  x_return_status := FND_API.G_RET_STS_ERROR;
3044        end if;
3045        if l_debug_level > 0 then
3046 	oe_debug_pub.add('Blanket In validate entity update 2');
3047        end if;
3048 
3049     END IF; --if g_opr_update
3050 
3051 
3052     ---------------------------------------------------------------------
3053     -- Bug 3193220
3054     -- Expiration Date cannot be less than sysdate
3055     ---------------------------------------------------------------------
3056 --Changes made for Bug No 5528599
3057     if (NOT OE_GLOBALS.EQUAL(trunc(p_line_rec.end_date_active),
3058                            trunc(l_old_line_rec.end_date_active))
3059        AND trunc(p_line_rec.end_date_active) < trunc(sysdate))
3060        THEN
3061              oe_debug_pub.add('2:source_document_type_id :'|| p_line_rec.source_document_type_id,1);
3062              oe_debug_pub.add('2:source_document_line_id :'|| p_line_rec.source_document_line_id,1);
3063 
3064              if ( nvl(p_line_rec.source_document_type_id,0) = 2 --bug#5528507
3065                AND p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE)
3066              then
3067               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3068               OE_MSG_PUB.ADD;
3069               oe_debug_pub.add('2: Not Setting Error',1);
3070 
3071             else
3072               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3073               OE_MSG_PUB.ADD;
3074               x_return_status := FND_API.G_RET_STS_ERROR;
3075               oe_debug_pub.add('2:  Setting Error',1);
3076            end if;
3077     end if;
3078 --Changes made for Bug No 5528599
3079     -- End Expiration Date < sysdate check
3080 
3081 
3082 
3083     -- Bug 2792852
3084     -- Price list lines can only be created for new blanket lines.
3085     -- Comment out NOCOPY /* file.sql.39 change */ this if check
3086     -- 11i10 - also support creation of new price list lines when
3087     -- blanket line is updated with list price information i.e. list
3088     -- price was originally null on the line.
3089     -- Note that it's not supported if list price existed before
3090     -- and user tries to update list price itself.
3091     --IF p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
3092 
3093       --only add line information if new price list
3094     -- This if is for the scenario where price list is also being
3095     -- created i.e. blanket header with new price list is being
3096     -- created.
3097     IF (g_new_price_list AND p_line_rec.price_list_id IS NULL)
3098     THEN
3099 
3100       if l_debug_level > 0 then
3101          oe_debug_pub.add('log CREATE_BLANKET_PRICE_LIST');
3102       end if;
3103 
3104      --for bug 3229225.Commented out NOCOPY /* file.sql.39 change */ the If condition and added modified condition
3105      --     IF p_line_rec.unit_list_price IS NOT NULL
3106      IF NOT OE_GLOBALS.EQUAL(p_line_rec.unit_list_price,p_old_line_rec.unit_list_price)
3107      THEN
3108          oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
3109                 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3110 		p_Entity_Id => p_line_rec.line_id,
3111                 p_requesting_entity_code    =>
3112                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3113                 p_requesting_entity_id  => p_line_rec.line_id,
3114 		p_request_type => 'CREATE_BLANKET_PRICE_LIST',
3115 		p_param1=> p_line_rec.unit_list_price,
3116 		p_param2 => nvl(p_line_rec.pricing_uom,
3117 		p_line_rec.order_quantity_uom),
3118 		p_param3 => p_line_rec.inventory_item_id,
3119 		p_param4 => p_line_rec.item_identifier_type,
3120                 -- 11i10 Pricing Changes
3121                 -- Add header_id, sold_to_org and ordered_item parameters
3122                 p_param6 => p_line_rec.header_id,
3123                 p_param7 => p_line_rec.sold_to_org_id,
3124                 p_param8 => p_line_rec.ordered_item_id,
3125 		x_return_status => l_return_status );
3126             IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3127                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3128             END IF;
3129       END IF;
3130 
3131     -- This if is for the scenario where either new blanket lines
3132     -- with price information are being added OR existing blanket
3133     -- lines with null price are being updated with list price.
3134     -- 11i10 Pricing Changes
3135     ELSIF IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id
3136                                 ,p_blanket_header_id => p_line_rec.header_id)
3137           OR (p_line_rec.price_list_id IS NULL
3138               AND g_header_rec.new_price_list_id IS NOT NULL)
3139     THEN
3140       -- Only for release before 11i10 check if header and line price list
3141       -- are same.
3142       IF (OE_Code_Control.Get_Code_Release_Level < '110510'
3143           AND OE_GLOBALS.Equal(p_line_rec.price_list_id, g_header_rec.price_list_id))
3144          OR OE_Code_Control.Get_Code_Release_Level >= '110510'
3145       THEN
3146 
3147       if l_debug_level > 0 then
3148          oe_debug_pub.add('qp list line id :'||p_line_rec.qp_list_line_id);
3149       end if;
3150 
3151 
3152       --for bug 3229225.Commented out NOCOPY /* file.sql.39 change */ the If condition and added modified condition
3153       --      IF p_line_rec.unit_list_price IS NOT NULL
3154       --       AND p_line_rec.qp_list_line_id IS NULL THEN
3155 
3156       IF (NOT OE_GLOBALS.EQUAL(p_line_rec.unit_list_price,p_old_line_rec.unit_list_price))
3157            OR (p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE AND
3158                      p_line_rec.unit_list_price IS NOT NULL) --Bug#4694968
3159       THEN
3160 
3161         -- Bug 3380740
3162         -- Log the add price list line if price changes and list
3163         -- line does not exist
3164         if p_line_rec.qp_list_line_id IS NOT NULL then
3165 
3166             BEGIN
3167 
3168             SELECT 'Y'
3169              INTO l_list_line_exists
3170              FROM QP_LIST_LINES
3171             WHERE LIST_LINE_ID = p_line_rec.qp_list_line_id;
3172 
3173             EXCEPTION
3174               WHEN NO_DATA_FOUND THEN
3175                 l_list_line_exists := 'N';
3176             END;
3177 
3178         end if;
3179 
3180         if l_list_line_exists = 'N' THEN
3181 
3182         if l_debug_level > 0 then
3183          oe_debug_pub.add('log ADD_BLANKET_PRICE_LIST_LINE');
3184         end if;
3185 
3186 	oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
3187 				 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3188 		p_Entity_Id => p_line_rec.line_id,
3189                 p_requesting_entity_code    =>
3190                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3191                 p_requesting_entity_id  => p_line_rec.line_id,
3192 		p_request_type => 'ADD_BLANKET_PRICE_LIST_LINE',
3193 		p_param1=> p_line_rec.unit_list_price,
3194 		p_param2 => nvl(p_line_rec.pricing_uom,
3195 		p_line_rec.order_quantity_uom),
3196 		p_param3 => p_line_rec.inventory_item_id,
3197 		p_param4 => p_line_rec.item_identifier_type,
3198                 -- 11i10 Pricing Changes
3199                 -- Send header new price list if line price list is null
3200                 -- Add header_id, sold_to_org and ordered_item parameters
3201 		p_param5 => nvl(p_line_rec.price_list_id,
3202                                 g_header_rec.new_price_list_id),
3203                 p_param6 => p_line_rec.header_id,
3204                 p_param7 => p_line_rec.sold_to_org_id,
3205                 p_param8 => p_line_rec.ordered_item_id,
3206 		x_return_status => x_return_status );
3207 
3208         end if; -- if list line does not exist
3209 
3210       END IF; -- if list price changes
3211 
3212       ELSIF p_line_rec.price_list_id IS NOT NULL THEN
3213          x_return_status := FND_API.G_RET_STS_ERROR;
3214          FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
3215          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3216              OE_Order_UTIL.Get_Attribute_Name('UNIT_LIST_PRICE'));
3217          OE_MSG_PUB.ADD;
3218       END IF;
3219 
3220     END IF; --if g_new_price_list
3221 
3222     --END IF; -- if operation is CREATE
3223 
3224    --for bug 3309427
3225    --Log request to clear out NOCOPY /* file.sql.39 change */ unit price if the Price list field is updated to a non blanket pricelist.
3226    IF((NOT IS_BLANKET_PRICE_LIST(p_price_list_id => p_line_rec.price_list_id
3227                                 ,p_blanket_header_id => p_line_rec.header_id))
3228    AND (p_line_rec.qp_list_line_id is not null))
3229    THEN
3230       if l_debug_level > 0 then
3231          oe_debug_pub.add('qp list line id :'||p_line_rec.qp_list_line_id);
3232          oe_debug_pub.add('Log delayed request: CLEAR_BLANKET_PRICE_LIST_LINE');
3233       end if;
3234 
3235       oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
3236 				 OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3237 		p_Entity_Id => p_line_rec.line_id,
3238                 p_requesting_entity_code    =>
3239                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3240                 p_requesting_entity_id  => p_line_rec.line_id,
3241 		p_request_type => OE_GLOBALS.G_CLEAR_BLKT_PRICE_LIST_LINE,
3242                 p_param1=> p_line_rec.qp_list_line_id,
3243 	        p_param2 => g_header_rec.new_price_list_id,
3244                 p_param3 =>  p_line_rec.price_list_id,
3245                 p_param4 => p_line_rec.header_id,
3246          	x_return_status => x_return_status );
3247     END IF;
3248 
3249     -- 11i10 Pricing Changes Start
3250     -- Log request to create new discount line
3251     IF NOT OE_GLOBALS.EQUAL(p_line_rec.discount_percent,
3252                             p_old_line_rec.discount_percent)
3253        OR NOT OE_GLOBALS.EQUAL(p_line_rec.discount_amount,
3254                             p_old_line_rec.discount_amount)
3255           OR (p_line_rec.operation = OE_GLOBALS.G_OPR_CREATE AND --bug#4691643
3256                 (p_line_rec.discount_amount IS NOT NULL OR
3257                   p_line_rec.discount_percent IS NOT NULL))
3258     THEN
3259 
3260         IF p_line_rec.modifier_list_line_id IS NOT NULL
3261         THEN
3262            oe_debug_pub.add('modifier list line id is not null');
3263            fnd_message.set_name('ONT','OE_BLKT_CANNOT_UPDATE_DIS');
3264            oe_msg_pub.add;
3265            x_return_status := FND_API.G_RET_STS_ERROR;
3266         ELSIF g_header_rec.new_modifier_list_name IS NULL
3267               AND g_header_rec.new_modifier_list_id IS NULL
3268         THEN
3269            fnd_message.set_name('ONT','OE_BLKT_CANNOT_ENTER_DIS');
3270            oe_msg_pub.add;
3271            x_return_status := FND_API.G_RET_STS_ERROR;
3272         ELSIF p_line_rec.discount_percent IS NOT NULL
3273               AND p_line_rec.discount_amount IS NOT NULL
3274         THEN
3275            fnd_message.set_name('ONT','OE_BLKT_DISCOUNT_CONFLICT');
3276            oe_msg_pub.add;
3277            x_return_status := FND_API.G_RET_STS_ERROR;
3278         ELSE
3279            -- Log delayed request to create new modifier list line
3280 	   oe_delayed_requests_pvt.Log_request
3281 	       (p_entity_code => OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3282 		p_Entity_Id => p_line_rec.line_id,
3283                 p_requesting_entity_code    =>
3284                  OE_BLANKET_pub.G_ENTITY_BLANKET_LINE,
3285                 p_requesting_entity_id  => p_line_rec.line_id,
3286 		p_request_type => 'ADD_MODIFIER_LIST_LINE',
3287 		p_param1 => p_line_rec.discount_percent,
3288 		p_param2 => p_line_rec.discount_amount,
3289 		p_param3 => p_line_rec.inventory_item_id,
3290 		p_param4 => p_line_rec.item_identifier_type,
3291 		p_param5 => nvl(p_line_rec.pricing_uom,
3292 		                p_line_rec.order_quantity_uom),
3293 		p_param6 => p_line_rec.header_id,
3294 		x_return_status => x_return_status );
3295         END IF;
3296 
3297     END IF;
3298     -- 11i10 Pricing Changes End
3299 
3300 
3301    END IF; --bug 3443777, need to call validate entity for reasons capture
3302 
3303     if l_debug_level > 0 then
3304     --  Done validating entity
3305       oe_debug_pub.add('Exit OE_BLANKET_UTIL.Validate ENTITY- Line',1);
3306     end if;
3307 
3308 EXCEPTION
3309 
3310     WHEN FND_API.G_EXC_ERROR THEN
3311 
3312         x_return_status := FND_API.G_RET_STS_ERROR;
3313 
3314     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3315 
3316         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3317 
3318     WHEN OTHERS THEN
3319 
3320         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3321 
3322         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3323         THEN
3324             OE_MSG_PUB.Add_Exc_Msg
3325             (   G_PKG_NAME
3326             ,   'Validate Entity'
3327             );
3328         END IF;
3329 
3330 END Validate_Entity;
3331 
3332 PROCEDURE Validate_Entity
3333 (   p_header_rec           IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
3334 ,   p_old_header_rec       IN OE_Blanket_PUB.Header_rec_type := OE_Blanket_PUB.g_miss_header_rec
3335 ,   x_return_status        OUT NOCOPY VARCHAR2
3336 )IS
3337     l_return_status varchar2(1);
3338     l_dummy varchar2(30);
3339     l_old_header_rec OE_Blanket_PUB.Header_rec_type := p_old_header_rec;
3340     l_db_version_number    NUMBER;
3341     -- 11i10 Pricing Changes
3342     l_list_header_id       NUMBER;
3343     l_new_pl_name          VARCHAR2(240);
3344     l_site_use_code        VARCHAR2(30);
3345 --
3346 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
3347 --
3348 BEGIN
3349     x_return_status := FND_API.G_RET_STS_SUCCESS;
3350 
3351     if l_debug_level > 0 then
3352       oe_debug_pub.add('Enter OE_BLANKET_UTIL.Validate_ENTITY- Header',1);
3353       oe_debug_pub.add('Operation :'||p_header_rec.operation);
3354       oe_debug_pub.add('new end date :'||p_header_rec.end_date_active);
3355       oe_debug_pub.add('old end date :'||l_old_header_rec.end_date_active);
3356     end if;
3357 
3358     IF p_header_rec.operation = oe_globals.g_opr_update THEN
3359          if l_old_header_rec.header_id is null THEN
3360               Query_Header(
3361                           p_header_id => p_header_rec.header_id,
3362                           x_header_rec => l_old_header_Rec,
3363                           x_return_status => l_return_status);
3364               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3365                  x_return_status := l_return_status;
3366               END IF;
3367          end if;
3368     END IF;
3369 
3370 -- Validate Last Updated By valued issue
3371     -- Added for a bug #6270818.
3372     IF p_header_rec.operation = oe_globals.g_opr_update
3373     THEN
3374        If p_header_rec.last_updated_by <> FND_GLOBAL.USER_ID or
3375            l_old_header_rec.last_updated_by <> FND_GLOBAL.USER_ID
3376        THEN
3377           p_header_rec.last_updated_by := FND_GLOBAL.USER_ID;
3378           l_old_header_rec.last_updated_by := FND_GLOBAL.USER_ID;
3379        END IF;
3380           p_header_rec.last_update_date := sysdate;
3381           l_old_header_rec.last_update_date := sysdate;
3382      END IF;
3383 
3384     g_header_rec := p_header_rec;
3385 
3386 
3387     -- Validate Transaction Phase
3388     -- Added for Pack -j Srini.
3389     IF p_header_rec.operation = oe_globals.g_opr_create and
3390        oe_code_control.get_code_release_level >= '110510'
3391     THEN
3392        If p_header_rec.TRANSACTION_PHASE_CODE is null and
3393            l_old_header_rec.TRANSACTION_PHASE_CODE is null
3394        THEN
3395           p_header_rec.TRANSACTION_PHASE_CODE := 'F';
3396           l_old_header_rec.TRANSACTION_PHASE_CODE := 'F';
3397        END IF;
3398     END IF;
3399 
3400     g_header_rec := p_header_rec;
3401 
3402     -- Get Blanket Number
3403     IF NOT OE_GLOBALS.EQUAL(p_header_rec.order_type_id,
3404             l_old_header_rec.order_type_id) THEN
3405        IF p_header_rec.order_number is null or
3406           p_header_rec.order_number = FND_API.G_MISS_NUM
3407        Then
3408           get_order_number(   p_x_header_rec => p_header_rec,
3409                                x_return_status => l_return_status);
3410               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
3411                  x_return_status := l_return_status;
3412               END IF;
3413        End if;
3414     END IF;
3415 
3416     -- Get Blanket Agreement Name For Null values
3417     -- Added for Pack -j Srini.
3418     IF oe_code_control.get_code_release_level >= '110510'
3419     THEN
3420        If p_header_rec.sales_document_name is null and
3421            l_old_header_rec.sales_document_name is null
3422        THEN
3423           p_header_rec.sales_document_name := p_header_rec.order_number;
3424           l_old_header_rec.sales_document_name := p_header_rec.order_number;
3425        END IF;
3426     END IF;
3427 
3428     g_header_rec := p_header_rec;
3429 
3430     -- Versioning/Reasons changes (moved to beginning for bug 3775937
3431     if OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
3432        OE_GLOBALS.G_CAPTURED_REASON = 'V' THEN
3433         OE_GLOBALS.G_REASON_CODE := p_header_rec.revision_change_reason_code;
3434         OE_GLOBALS.G_REASON_COMMENTS := p_header_rec.revision_change_comments;
3435         OE_GLOBALS.G_CAPTURED_REASON := 'Y';
3436     end if;
3437 
3438     -- Check Required attributes
3439     IF  p_header_rec.header_id IS NULL THEN
3440         x_return_status := FND_API.G_RET_STS_ERROR;
3441         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3442         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3443         OE_Order_UTIL.Get_Attribute_Name('header_id'));
3444         OE_MSG_PUB.Add;
3445     END IF;
3446 
3447     IF  p_header_rec.order_number IS NULL THEN
3448         x_return_status := FND_API.G_RET_STS_ERROR;
3449         fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3450         FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3451            OE_Order_UTIL.Get_Attribute_Name('BLANKET_NUMBER'));
3452         OE_MSG_PUB.Add;
3453     END IF;
3454     --Enabling Pricing Agreements for pack J
3455     IF OE_CODE_CONTROL.Get_Code_Release_Level < '110510' THEN
3456        IF  p_header_rec.sold_to_org_id IS NULL THEN
3457            x_return_status := FND_API.G_RET_STS_ERROR;
3458            fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3459            FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3460            OE_Order_UTIL.Get_Attribute_Name('SOLD_TO_ORG_ID'));
3461            OE_MSG_PUB.Add;
3462        END IF;
3463     END IF;
3464 
3465     IF  p_header_rec.transactional_curr_code IS NULL THEN
3466          x_return_status := FND_API.G_RET_STS_ERROR;
3467          fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3468          FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3469          OE_Order_UTIL.Get_Attribute_Name('TRANSACTIONAL_CURR_CODE'));
3470          OE_MSG_PUB.Add;
3471     END IF;
3472 
3473     IF  p_header_rec.start_date_active IS NULL THEN
3474          x_return_status := FND_API.G_RET_STS_ERROR;
3475          fnd_message.set_name('ONT','OE_ATTRIBUTE_REQUIRED');
3476          FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Activation Date');
3477          OE_MSG_PUB.Add;
3478     END IF;
3479 
3480     ---------------------------------------------------------------------
3481     -- Bug 3193220
3482     -- Expiration Date cannot be less than sysdate
3483     ---------------------------------------------------------------------
3484 --Changes made for Bug No 5528599 start
3485     if (NOT OE_GLOBALS.EQUAL(trunc(p_header_rec.end_date_active),
3486                            trunc(l_old_header_rec.end_date_active))
3487        AND trunc(p_header_rec.end_date_active) < trunc(sysdate))
3488     then
3489 
3490           if ( nvl(p_header_rec.source_document_type_id,0) = 2) --bug#5528507
3491                AND p_header_rec.operation = OE_GLOBALS.G_OPR_CREATE
3492              then
3493               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3494               OE_MSG_PUB.ADD;
3495               oe_debug_pub.add('3: Not Setting Error',1);
3496 
3497             else
3498               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3499               OE_MSG_PUB.ADD;
3500               x_return_status := FND_API.G_RET_STS_ERROR;
3501               oe_debug_pub.add('3: Setting Error',1);
3502            end if;
3503     end if;
3504 --Changes made for Bug No 5528599 start
3505     -- End Expiration Date < sysdate check
3506 
3507     -- Validate Ship to
3508     IF p_header_rec.ship_to_org_id IS NOT NULL AND
3509              ( NOT OE_GLOBALS.EQUAL(p_header_rec.ship_to_org_id ,l_old_header_rec.ship_to_org_id) OR
3510                NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3511                -- ER 5743580
3512               IF ( NOT Validate_Ship_To_Org(p_header_rec.ship_to_org_id,
3513                                             p_header_rec.sold_to_org_id )) THEN
3514                   if l_debug_level > 0 then
3515                    oe_debug_pub.add ('Blanket In: No data found',2);
3516                   end if;
3517                    x_return_status := FND_API.G_RET_STS_ERROR;
3518                    fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3519                    FND_MESSAGE.SET_TOKEN('ATTRIBUTE'
3520                       , OE_Order_Util.Get_Attribute_Name('ship_to_org_id'));
3521                    OE_MSG_PUB.Add;
3522                END IF;
3523 
3524     END IF; -- Ship to
3525 
3526 
3527 -- hashraf start of pack J
3528 
3529     --  Customer Location depends on Sold To Org
3530 
3531     IF p_header_rec.sold_to_site_use_id IS NOT NULL AND
3532       ( NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_site_use_id
3533                             ,p_old_header_rec.sold_to_site_use_id) OR
3534         NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id
3535                             ,p_old_header_rec.sold_to_org_id))
3536     THEN
3537 
3538       BEGIN
3539 
3540         SELECT  'VALID'
3541         INTO    l_dummy
3542         FROM
3543              HZ_CUST_SITE_USES   SITE,
3544              HZ_CUST_ACCT_SITES  ACCT_SITE
3545         WHERE
3546              SITE.SITE_USE_ID = p_header_rec.sold_to_site_use_id
3547              AND  SITE.SITE_USE_CODE = 'SOLD_TO'
3548              AND  SITE.CUST_ACCT_SITE_ID = ACCT_SITE.CUST_ACCT_SITE_ID
3549              AND  ACCT_SITE.CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id
3550              AND  SITE.STATUS = 'A'
3551              AND  ACCT_SITE.STATUS='A';
3552 
3553         --  Valid Customer Location
3554 
3555       EXCEPTION
3556 
3557         WHEN NO_DATA_FOUND THEN
3558           l_return_status := FND_API.G_RET_STS_ERROR;
3559           fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3560           FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3561           OE_Order_Util.Get_Attribute_Name('SOLD_TO_SITE_USE_ID'));
3562           OE_MSG_PUB.Add;
3563 
3564         WHEN OTHERS THEN
3565 
3566          IF OE_MSG_PUB.Check_Msg_Level
3567          (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3568          THEN
3569 
3570            OE_MSG_PUB.Add_Exc_Msg
3571            (  G_PKG_NAME ,
3572              'Record - Customer Location'
3573            );
3574          END IF;
3575 
3576          RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3577 
3578       END;
3579 
3580     END IF;
3581 
3582 -- hashraf end of pack J
3583 
3584       if l_debug_level > 0 then
3585              oe_debug_pub.add('Validating deliver_to_org_id :'|| to_char(p_header_rec.deliver_to_org_id),2);
3586              oe_debug_pub.add(' Customer Relations :'|| g_customer_relations, 1);
3587             end if;
3588     IF p_header_rec.deliver_to_org_id IS NOT NULL AND
3589          ( NOT OE_GLOBALS.EQUAL(p_header_rec.deliver_to_org_id,l_old_header_rec.deliver_to_org_id) OR
3590            NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3591           -- ER 5743580
3592        IF NOT (Validate_Deliver_To_Org(p_header_rec.deliver_to_org_id,
3593                                             p_header_rec.sold_to_org_id )) THEN
3594 
3595                   x_return_status := FND_API.G_RET_STS_ERROR;
3596                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3597                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3598                   OE_Order_Util.Get_Attribute_Name('deliver_to_org_id'));
3599                   OE_MSG_PUB.Add;
3600         END IF;
3601 
3602     END if; -- Deliver to
3603 
3604     --  Invoice to Org id depends on sold to org.
3605     IF p_header_rec.invoice_to_org_id IS NOT NULL AND
3606           ( NOT OE_GLOBALS.EQUAL(p_header_rec.invoice_to_org_id ,l_old_header_rec.invoice_to_org_id) OR
3607             NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3608                -- ER 5743580
3609             IF NOT ( Validate_Invoice_To_Org ( p_header_rec.invoice_to_org_id,
3610                                                p_header_rec.sold_to_org_id )) THEN
3611                   x_return_status := FND_API.G_RET_STS_ERROR;
3612                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3613                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3614                   OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
3615                   OE_MSG_PUB.Add;
3616                 END IF;
3617 
3618     END IF; -- Invoice to org
3619 
3620     --  Sold to contact depends on Sold To Org
3621     IF p_header_rec.sold_to_contact_id IS NOT NULL AND
3622       ( NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_contact_id ,l_old_header_rec.sold_to_contact_id) OR
3623         NOT OE_GLOBALS.EQUAL(p_header_rec.sold_to_org_id ,l_old_header_rec.sold_to_org_id)) THEN
3624          BEGIN
3625 
3626              SELECT 'VALID'
3627              INTO   l_dummy
3628              FROM   HZ_CUST_ACCOUNT_ROLES ACCT_ROLE
3629              WHERE  ACCT_ROLE.CUST_ACCOUNT_ROLE_ID = p_header_rec.sold_to_contact_id
3630              AND    ACCT_ROLE.CUST_ACCOUNT_ID = p_header_rec.sold_to_org_id
3631              AND    ACCT_ROLE.ROLE_TYPE = 'CONTACT'
3632              AND  ROWNUM = 1;
3633 
3634          --  Valid Sold To Contact
3635          EXCEPTION
3636                WHEN NO_DATA_FOUND THEN
3637                     x_return_status := FND_API.G_RET_STS_ERROR;
3638                     fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
3639                     FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
3640                     OE_Order_Util.Get_Attribute_Name('SOLD_TO_CONTACT_ID'));
3641                     OE_MSG_PUB.Add;
3642                WHEN OTHERS THEN
3643                     IF OE_MSG_PUB.Check_Msg_Level ( OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
3644                          OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Sold To Contact');
3645                     END IF;
3646                     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3647          END; -- BEGIN
3648     END IF; -- Sold to contact needed validation.
3649 
3650     if p_header_rec.start_date_active is not NULL and
3651        p_header_rec.end_date_active is not NULL and
3652        p_header_rec.start_date_active  > p_header_rec.end_date_active then
3653          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
3654          OE_MSG_PUB.ADD;
3655          x_return_status := FND_API.G_RET_STS_ERROR;
3656     end if;
3657 
3658     -- 11i10 Pricing Changes Start
3659     -- In prior releases, existing price list ID would store either
3660     -- the standard price list or new price list
3661     IF OE_CODE_CONTROL.Get_Code_Release_Level < '110510' THEN
3662 
3663     IF p_header_rec.price_list_id IS NULL AND
3664        p_header_rec.price_list_name IS NOT NULL THEN
3665       BEGIN
3666        if l_debug_level > 0 then
3667         oe_debug_pub.add('Derive price_list_id',1);
3668        end if;
3669        -- <R12.MOAC> START Need to check why we need to pass ORG_ID?
3670         SELECT list_header_id
3671         INTO   p_header_rec.price_list_id
3672         FROM   qp_list_headers_vl
3673         WHERE  list_type_code in ('PRL' ,'AGR')
3674         AND    p_header_rec.price_list_name = name
3675         AND    (((nvl(global_flag,'Y') = 'Y'
3676            OR     orig_org_id = mo_global.get_current_org_id)
3677            AND    qp_security.security_on = 'Y') or  qp_security.security_on = 'N');
3678         -- <R12.MOAC> END
3679       EXCEPTION
3680         WHEN NO_DATA_FOUND THEN
3681          if l_debug_level > 0 then
3682           oe_debug_pub.add('New price list needs to be created',1);
3683          end if;
3684           g_new_price_list := true;
3685       END;
3686     END IF;
3687 
3688     ELSE
3689 
3690     -- In 11i10, new price list field will store the new blanket specific
3691     -- price list and existing price list ID will store the standard price
3692     -- list.
3693 
3694     if l_debug_level > 0 then
3695        oe_debug_pub.add('pl name :'||p_header_rec.new_price_list_name);
3696        oe_debug_pub.add('old pl name :'||p_old_header_rec.new_price_list_name);
3697        oe_debug_pub.add('pl id :'||p_header_rec.new_price_list_id);
3698        oe_debug_pub.add('old pl id :'||p_old_header_rec.new_price_list_id);
3699        oe_debug_pub.add('ml name :'||p_header_rec.new_modifier_list_name);
3700        oe_debug_pub.add('old ml name :'||p_old_header_rec.new_modifier_list_name);
3701        oe_debug_pub.add('ml id :'||p_header_rec.new_modifier_list_id);
3702        oe_debug_pub.add('old ml id :'||p_old_header_rec.new_modifier_list_id);
3703     end if;
3704 
3705        IF NOT OE_GLOBALS.EQUAL(p_header_rec.new_price_list_id,
3706                               p_old_header_rec.new_price_list_id)
3707        THEN
3708 
3709           -- Cannot enter ID for a new price list, only name
3710           fnd_message.set_name('ONT','OE_BLKT_CANT_ENTER_NEW_PL_ID');
3711           oe_msg_pub.add;
3712           x_return_status := FND_API.G_RET_STS_ERROR;
3713 
3714        ELSIF p_header_rec.new_price_list_name IS NOT NULL
3715          -- Bug 3213174
3716          -- Changes from null to not null will be allowed
3717          AND p_old_header_rec.new_price_list_name IS NULL
3718          AND NOT OE_GLOBALS.EQUAL(p_header_rec.new_price_list_name
3719                                   ,p_old_header_rec.new_price_list_name
3720                                  )
3721        THEN
3722 
3723           BEGIN
3724 
3725           -- Check if name already exists
3726           SELECT list_header_id
3727             INTO l_list_header_id
3728             FROM qp_list_headers_vl
3729            WHERE name = p_header_rec.new_price_list_name
3730              AND rownum = 1;
3731 
3732           fnd_message.set_name('ONT','OE_BLKT_PRICE_LIST_EXISTS');
3733           oe_msg_pub.add;
3734           x_return_status := FND_API.G_RET_STS_ERROR;
3735 
3736           EXCEPTION
3737           WHEN NO_DATA_FOUND THEN
3738             g_new_price_list := true;
3739           END;
3740 
3741        END IF;
3742 
3743        IF NOT OE_GLOBALS.EQUAL(p_header_rec.new_modifier_list_id,
3744                               p_old_header_rec.new_modifier_list_id)
3745        THEN
3746 
3747           -- Cannot enter ID for a new modifier list, only name
3748           fnd_message.set_name('ONT','OE_BLKT_CANT_ENTER_MOD_LIST_ID');
3749           oe_msg_pub.add;
3750           x_return_status := FND_API.G_RET_STS_ERROR;
3751 
3752        ELSIF p_header_rec.new_modifier_list_name IS NOT NULL
3753          -- Bug 3213174
3754          -- Changes from null to not null will be allowed
3755          AND p_old_header_rec.new_modifier_list_name IS NULL
3756          AND NOT OE_GLOBALS.EQUAL(p_header_rec.new_modifier_list_name
3757                                   ,p_old_header_rec.new_modifier_list_name
3758                                  )
3759        THEN
3760 
3761          oe_debug_pub.add('check if ml exists');
3762 
3763           BEGIN
3764 
3765           -- Check if name already exists
3766           SELECT list_header_id
3767             INTO l_list_header_id
3768             FROM qp_list_headers_vl
3769            WHERE name = p_header_rec.new_modifier_list_name
3770              AND rownum = 1;
3771 
3772           fnd_message.set_name('ONT','OE_BLKT_MOD_LIST_EXISTS');
3773           oe_msg_pub.add;
3774           x_return_status := FND_API.G_RET_STS_ERROR;
3775 
3776           EXCEPTION
3777           WHEN NO_DATA_FOUND THEN
3778             g_new_modifier_list := true;
3779           END;
3780 
3781        END IF;
3782 
3783     END IF; -- End of code release level check
3784     -- 11i10 Pricing Changes End
3785 
3786 
3787     -- Apending Time component to End Date Active for Create or Update Operation.
3788     -- Pack J
3789     IF (p_header_rec.operation = oe_globals.g_opr_create) OR
3790        (p_header_rec.operation = oe_globals.g_opr_update)
3791       THEN
3792                IF NOT OE_GLOBALS.EQUAL(p_header_rec.end_date_active
3793                            ,l_old_header_rec.end_date_active)
3794         THEN
3795            p_header_rec.end_date_active :=
3796                 trunc(p_header_rec.end_date_active,'DD') +
3797                                           ((24*60*60)-1)/(24*60*60);
3798         END IF;
3799 
3800 
3801     END IF; -- End of WF time component changes
3802 
3803 
3804     Validate_Min_Max_Range(p_min_value => p_header_rec.Blanket_Min_amount,
3805         p_max_value => p_header_rec.Blanket_Max_amount,
3806         p_attribute => 'BLANKET_HEADER_AMOUNT', x_return_status => x_return_status);
3807 
3808     IF p_header_rec.operation = oe_globals.g_opr_update THEN
3809        --validate for updates
3810 
3811 
3812       --commented because waiting for message
3813       --not allowed to change any attributes on a previously closed blanket
3814     IF p_header_rec.end_date_active < trunc(sysdate) and
3815        l_old_header_rec.end_date_active < trunc(sysdate) THEN
3816                  x_return_status := FND_API.G_RET_STS_ERROR;
3817                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_ATTR_CLOSED');
3818                  OE_MSG_PUB.Add;
3819     END IF;
3820 
3821 
3822       --display warning if we haven't fulfilled minimum requirements
3823     IF NOT OE_GLOBALS.Equal(p_header_rec.end_date_active, l_old_header_rec.end_date_active) AND
3824        p_header_rec.end_date_active <= trunc(sysdate) AND
3825        nvl(p_header_rec.released_amount,0) < p_header_rec.blanket_min_amount THEN
3826          if l_debug_level > 0 then
3827            oe_debug_pub.add('Blanket header close min amount ');
3828          end if;
3829          FND_MESSAGE.SET_NAME('ONT','OE_BLKT_CLOSE_MIN_VALUES');
3830          OE_MSG_PUB.ADD;
3831     END IF;
3832 
3833 
3834                IF NOT OE_GLOBALS.Equal (p_header_rec.header_id,
3835                                 l_old_header_rec.header_id) THEN
3836                  x_return_status := FND_API.G_RET_STS_ERROR;
3837                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3838                  fnd_message.set_token('ATTRIBUTE',
3839                      OE_Order_UTIL.Get_Attribute_Name('HEADER_ID'));
3840                  OE_MSG_PUB.Add;
3841                END IF;
3842 
3843                IF NOT OE_GLOBALS.Equal (p_header_rec.order_number,
3844                                 l_old_header_rec.order_number) THEN
3845                  x_return_status := FND_API.G_RET_STS_ERROR;
3846                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3847                  fnd_message.set_token('ATTRIBUTE',
3848                      OE_Order_UTIL.Get_Attribute_Name('BLANKET_NUMBER'));
3849                  OE_MSG_PUB.Add;
3850                END IF;
3851 
3852                IF NOT OE_GLOBALS.Equal (p_header_rec.order_category_code,
3853                                 l_old_header_rec.order_category_code) THEN
3854                  x_return_status := FND_API.G_RET_STS_ERROR;
3855                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3856                  fnd_message.set_token('ATTRIBUTE',
3857                      OE_Order_UTIL.Get_Attribute_Name('ORDER_CATEGORY_CODE'));
3858                  OE_MSG_PUB.Add;
3859                END IF;
3860 
3861                IF NOT OE_GLOBALS.Equal (p_header_rec.org_id,
3862                                 l_old_header_rec.org_id) THEN
3863                  x_return_status := FND_API.G_RET_STS_ERROR;
3864                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3865                  fnd_message.set_token('ATTRIBUTE',
3866                      OE_Order_UTIL.Get_Attribute_Name('ORG_ID'));
3867                  OE_MSG_PUB.Add;
3868                END IF;
3869 
3870              --restricted from changing if releases exist
3871              IF p_header_rec.released_amount > 0 THEN
3872                IF NOT OE_GLOBALS.Equal (p_header_rec.sold_to_org_id,
3873                                 l_old_header_rec.sold_to_org_id) THEN
3874                  x_return_status := FND_API.G_RET_STS_ERROR;
3875                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3876                  fnd_message.set_token('ATTRIBUTE',
3877                      OE_Order_UTIL.Get_Attribute_Name('SOLD_TO_ORG_ID'));
3878                  OE_MSG_PUB.Add;
3879                END IF;
3880 
3881                IF NOT OE_GLOBALS.Equal (p_header_rec.transactional_curr_code,
3882                                 l_old_header_rec.transactional_curr_code) THEN
3883                  x_return_status := FND_API.G_RET_STS_ERROR;
3884                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3885                  fnd_message.set_token('ATTRIBUTE',
3886                    OE_Order_UTIL.Get_Attribute_Name('TRANSACTIONAL_CURR_CODE'));
3887                  OE_MSG_PUB.Add;
3888                END IF;
3889 
3890                IF NOT OE_GLOBALS.Equal (p_header_rec.start_date_active,
3891                                 l_old_header_rec.start_date_active) THEN
3892                  x_return_status := FND_API.G_RET_STS_ERROR;
3893                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3894                  fnd_message.set_token('ATTRIBUTE','Activation Date');
3895                  OE_MSG_PUB.Add;
3896                END IF;
3897              END IF; --if releases exist
3898 
3899                IF NOT OE_GLOBALS.Equal (p_header_rec.released_amount,
3900                                 l_old_header_rec.released_amount) THEN
3901                  x_return_status := FND_API.G_RET_STS_ERROR;
3902                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3903                  fnd_message.set_token('ATTRIBUTE','Released Amount');
3904                  OE_MSG_PUB.Add;
3905                END IF;
3906 
3907                IF NOT OE_GLOBALS.Equal (p_header_rec.returned_amount,
3908                                 l_old_header_rec.returned_amount) THEN
3909                  x_return_status := FND_API.G_RET_STS_ERROR;
3910                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3911                  fnd_message.set_token('ATTRIBUTE', 'Returned Amount');
3912                  fnd_message.set_token('new amount', p_header_rec.returned_amount);
3913                  fnd_message.set_token('old amount', l_old_header_rec.returned_amount);
3914                  OE_MSG_PUB.Add;
3915                END IF;
3916 
3917                IF NOT OE_GLOBALS.Equal (p_header_rec.fulfilled_amount,
3918                                 l_old_header_rec.fulfilled_amount) THEN
3919                  x_return_status := FND_API.G_RET_STS_ERROR;
3920                  fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_HDR_ATTRIBUTE');
3921                  fnd_message.set_token('ATTRIBUTE','Fulfilled Amount');
3922                  fnd_message.set_token('new amount', p_header_rec.fulfilled_amount);
3923                  fnd_message.set_token('old amount', l_old_header_rec.fulfilled_amount);
3924                  OE_MSG_PUB.Add;
3925                END IF;
3926 
3927 
3928       -- Date Validations
3929 
3930                IF p_header_rec.end_date_active IS NOT NULL
3931                   AND NOT OE_GLOBALS.EQUAL(p_header_rec.end_date_active
3932                                        ,l_old_header_rec.end_date_active)
3933                THEN
3934 
3935                   IF (l_old_header_rec.end_date_active IS NOT NULL
3936                       AND p_header_rec.end_date_active <
3937                              l_old_header_rec.end_date_active)
3938                       OR l_old_header_rec.end_date_active IS NULL
3939                   THEN
3940 
3941                   -- check for conflicting end dates on blanket lines
3942                      BEGIN
3943 
3944                      SELECT 'ERROR'
3945                      INTO l_dummy
3946                      FROM OE_BLANKET_LINES_EXT
3947                      WHERE ORDER_NUMBER = p_header_rec.order_number
3948                        AND END_DATE_ACTIVE > p_header_rec.end_date_active
3949                        AND ROWNUM = 1;
3950 
3951                      IF l_dummy = 'ERROR' THEN
3952                        x_return_status := FND_API.G_RET_STS_ERROR;
3953                        fnd_message.set_name('ONT', 'OE_BLKT_END_DATE_CONFLICT');
3954                        OE_MSG_PUB.Add;
3955                      END IF;
3956 
3957                      EXCEPTION
3958                        WHEN NO_DATA_FOUND THEN
3959                             NULL;
3960                      END;
3961 
3962                   -- check for existing releases that are not within these
3963                   -- effectivity dates
3964                      BEGIN
3965 
3966                      SELECT /* MOAC_SQL_NO_CHANGE */ 'ERROR'
3967                        INTO l_dummy
3968                        FROM OE_ORDER_LINES
3969                       WHERE trunc(request_date) > trunc(p_header_rec.end_date_active)
3970 					  	--- Bug 14487632, FP of 14469059 Start
3971 						AND OPEN_FLAG = 'Y'
3972 						--- Bug 14487632, FP of 14469059 End
3973                         AND BLANKET_NUMBER = p_header_rec.order_number
3974                         AND ROWNUM = 1;
3975                       IF l_dummy = 'ERROR' THEN
3976                          x_return_status := FND_API.G_RET_STS_ERROR;
3977                          fnd_message.set_name('ONT', 'OE_BLKT_RELEASE_END_DATE');
3978                          OE_MSG_PUB.Add;
3979                       END IF;
3980 
3981                      EXCEPTION
3982                        WHEN NO_DATA_FOUND THEN
3983                             NULL;
3984                      END;
3985 
3986                   END IF;
3987 
3988                --check to see if we are cascading end dates to lines
3989                   IF l_old_header_rec.end_date_active IS NULL
3990                      AND x_return_status = FND_API.G_RET_STS_SUCCESS
3991                   THEN
3992                     BEGIN
3993                        SELECT 'CASCADE'
3994                        INTO l_dummy
3995                        FROM OE_BLANKET_LINES_EXT
3996                        WHERE ORDER_NUMBER = p_header_rec.order_number
3997                        AND END_DATE_ACTIVE IS NULL
3998                        AND ROWNUM = 1;
3999 
4000                        IF l_dummy = 'CASCADE' THEN
4001                          OE_GLOBALS.G_CASCADING_REQUEST_LOGGED := TRUE;
4002 
4003                          --if cascading, check to see if minimum values are satisfied
4004                          IF (p_header_rec.end_date_active <= trunc(sysdate)) THEN
4005                            SELECT 'WARNING'
4006                            INTO   l_dummy
4007                            FROM   OE_BLANKET_LINES_EXT OLX, OE_BLANKET_LINES OL
4008                            WHERE  OLX.LINE_ID = OL.LINE_ID
4009                            AND    OLX.ORDER_NUMBER = p_header_rec.order_number
4010                            AND    END_DATE_ACTIVE IS NULL
4011                            AND    OVERRIDE_BLANKET_CONTROLS_FLAG = 'N'
4012                            AND   (BLANKET_LINE_MIN_AMOUNT < RELEASED_AMOUNT
4013                            OR     BLANKET_MIN_QUANTITY < RELEASED_QUANTITY)
4014                            AND    ROWNUM = 1;
4015 
4016                            IF l_dummy = 'WARNING' THEN
4017                              fnd_message.set_name('ONT', 'OE_BLKT_CLOSE_MIN_VALUES');
4018                              OE_MSG_PUB.Add;
4019                            END IF;
4020                          END IF;
4021                        END IF;
4022 
4023                     EXCEPTION
4024                        WHEN OTHERS THEN
4025                           NULL;
4026                     END;
4027                   END IF;
4028                END IF;
4029 
4030 
4031        --verify max limits
4032 
4033                IF NOT OE_GLOBALS.Equal (p_header_rec.blanket_max_amount,
4034                     l_old_header_rec.blanket_max_amount)
4035                   AND p_header_rec.blanket_max_amount < p_header_rec.released_amount
4036                   AND nvl(p_header_rec.override_amount_flag, 'N') = 'N' THEN
4037                      x_return_status := FND_API.G_RET_STS_ERROR;
4038                      fnd_message.set_name('ONT', 'OE_BLKT_UPDATE_MAX_LIMIT');
4039                      OE_MSG_PUB.Add;
4040                END IF;
4041 
4042       -- Version Change
4043       -- Validations and Record History
4044 
4045       IF NOT OE_GLOBALS.EQUAL(p_header_rec.version_number,
4046                             l_old_header_rec.version_number)
4047          AND OE_CODE_CONTROL.CODE_RELEASE_LEVEL < '110510'
4048       THEN
4049 
4050        SELECT  /* MOAC_SQL_CHANGE */ version_number
4051          INTO l_db_version_number
4052          FROM OE_BLANKET_HEADERS_ALL
4053         WHERE HEADER_ID = p_header_rec.header_id;
4054 
4055        if l_debug_level > 0 then
4056           oe_debug_pub.add('new version :'||p_header_rec.version_number);
4057           oe_debug_pub.add('old version :'||l_old_header_rec.version_number);
4058           oe_debug_pub.add('DB version :'||l_db_version_number);
4059        end if;
4060 
4061         IF p_header_rec.version_number
4062                   <= l_old_header_rec.version_number
4063         THEN
4064 
4065           x_return_status := FND_API.G_RET_STS_ERROR;
4066           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_REVISION_NUM');
4067           OE_MSG_PUB.ADD;
4068 
4069         ELSIF p_header_rec.revision_change_reason_code IS NULL THEN
4070 
4071           x_return_status := FND_API.G_RET_STS_ERROR;
4072           FND_MESSAGE.SET_NAME('ONT','OE_ATTRIBUTE_REQUIRED');
4073           FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Revision Reason');
4074           OE_MSG_PUB.ADD;
4075 
4076         ELSE
4077 
4078        --validate reason code
4079       /*
4080           BEGIN
4081            SELECT 'VALID'
4082              INTO l_dummy
4083              FROM OE_LOOKUPS
4084              WHERE LOOKUP_TYPE = 'REVISION_REASON'
4085              AND LOOKUP_CODE = p_header_rec.revision_change_reason_code;
4086 
4087           EXCEPTION
4088              WHEN NO_DATA_FOUND THEN
4089                FND_MESSAGE.SET_NAME('ONT','OE_INVALID_REASON_CODE');
4090                FND_MESSAGE.SET_TOKEN('REASON_CODE', p_header_rec.revision_change_reason_code);
4091                OE_MSG_PUB.ADD;
4092                x_return_status := FND_API.G_RET_STS_ERROR;
4093           END;
4094 
4095       */
4096 
4097           query_blanket(p_header_id => p_header_rec.header_id
4098                        ,p_x_header_rec => g_old_header_hist_Rec
4099                        ,p_x_line_tbl => g_old_line_hist_tbl
4100                        ,x_return_status => l_return_status
4101                       );
4102            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4103                x_return_status := l_return_status;
4104            END IF;
4105 
4106            IF NOT OE_GLOBALS.Equal(x_return_status, FND_API.G_RET_STS_ERROR) THEN
4107              OE_Delayed_Requests_PVT.Log_Request
4108                   (p_entity_code  => OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
4109                   ,p_Entity_Id => p_header_rec.header_id
4110 	          ,p_requesting_entity_code    =>
4111                            OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
4112                   ,p_requesting_entity_id  => p_header_rec.header_id
4113                   ,p_request_type => 'RECORD_BLANKET_HISTORY'
4114                   ,p_param1=> p_header_rec.revision_change_reason_code
4115                   ,p_long_param1  => p_header_rec.revision_change_comments
4116                   ,x_return_status => l_return_status);
4117              IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4118                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4119              END IF;
4120 
4121              IF p_header_rec.revision_change_date IS NULL THEN
4122                p_header_rec.revision_change_date := sysdate;
4123              END IF;
4124 
4125            END IF; --if no errors then log request
4126 
4127         END IF; --if version number less than old
4128 
4129       END IF; -- if version number is not equal
4130 
4131      -- Validate WF STATUS for Start and End Date for a BSA. For Pack J
4132     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
4133     THEN
4134        if (NOT OE_GLOBALS.Equal(p_header_rec.start_date_active,l_old_header_rec.start_date_active) OR
4135            NOT OE_GLOBALS.Equal(p_header_rec.end_date_active,l_old_header_rec.end_date_active))
4136        THEN
4137              OE_Delayed_Requests_PVT.Log_Request
4138                   (p_entity_code  => OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
4139                   ,p_Entity_Id => p_header_rec.header_id
4140                   ,p_requesting_entity_code    =>
4141                            OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
4142                   ,p_requesting_entity_id  => p_header_rec.header_id
4143                   ,p_request_type => 'BLANKET_DATE_CHANGE'
4144                   ,x_return_status => l_return_status);
4145              IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4146                RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4147              END IF;
4148        end if;
4149     END IF; -- Validate WF STATUS for  Start and End date for a BSA
4150 
4151 
4152     END IF; -- if update operation
4153 
4154     -- For bug #4447494
4155     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
4156     THEN
4157        if (NOT OE_GLOBALS.Equal(p_header_rec.sold_to_org_id,l_old_header_rec.sold_to_org_id) and
4158                p_header_rec.operation = oe_globals.g_opr_update) THEN
4159            OE_Delayed_Requests_PVT.Log_Request
4160                   (p_entity_code  => OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
4161                   ,p_Entity_Id => p_header_rec.header_id
4162                   ,p_param1 => p_header_rec.sold_to_org_id
4163                   ,p_requesting_entity_code    =>
4164                            OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER
4165                   ,p_requesting_entity_id  => p_header_rec.header_id
4166                   ,p_request_type => 'VALIDATE_BLANKET_SOLD_TO'
4167                   ,x_return_status => l_return_status);
4168            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4169               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4170            END IF;
4171        end if;
4172     END IF; -- For bug #4447494
4173 
4174      IF g_new_price_list THEN
4175         if l_debug_level > 0 then
4176           oe_debug_pub.add('logging request to create blanket price list',1);
4177         end if;
4178         if oe_code_control.get_code_release_level >= '110510' then
4179            l_new_pl_name := p_header_rec.new_price_list_name;
4180         else
4181            l_new_pl_name := p_header_rec.price_list_name;
4182         end if;
4183         oe_delayed_requests_pvt.Log_request(p_Entity_Code =>
4184 			 OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER,
4185                      p_Entity_Id => p_header_rec.header_id,
4186                      p_requesting_entity_code    =>
4187                  OE_BLANKET_pub.G_ENTITY_BLANKET_HEADER,
4188                 p_requesting_entity_id      => p_header_rec.header_id,
4189                      p_request_type => 'CREATE_BLANKET_PRICE_LIST',
4190                      -- 11i10 Pricing Changes
4191                      p_param1 => l_new_pl_name,
4192                      p_param2 => nvl(p_header_rec.price_list_currency_code,
4193                      p_header_rec.transactional_curr_code),
4194                      p_long_param1  => p_header_rec.price_list_description,
4195                      -- 11i10 Pricing Changes
4196                      -- Add header_id and sold_to_org parameters
4197                      p_param6 => p_header_rec.header_id,
4198                      p_param7 => p_header_rec.sold_to_org_id,
4199 		     x_return_status => l_return_status);
4200          IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4201             RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4202          END IF;
4203 
4204       END IF;
4205 
4206     -- 11i10 Pricing Changes
4207     -- Log request to create new modifier
4208     IF g_new_modifier_list THEN
4209 	oe_delayed_requests_pvt.Log_request
4210 	       (p_entity_code => oe_blanket_pub.g_entity_blanket_header,
4211 		p_Entity_Id => p_header_rec.header_id,
4212                 p_requesting_entity_code    =>
4213                   oe_blanket_pub.g_entity_blanket_header,
4214                 p_requesting_entity_id  => p_header_rec.header_id,
4215 		p_request_type => 'CREATE_MODIFIER_LIST',
4216 		p_param1 => p_header_rec.new_modifier_list_name,
4217                 p_param2 => p_header_rec.transactional_curr_code,
4218 		x_return_status => x_return_status );
4219     END IF;
4220 
4221     g_header_rec := p_header_rec;
4222 
4223    if l_debug_level > 0 then
4224     oe_debug_pub.add('Exit OE_BLANKET_UTIL.Validate_ENTITY- Header',1);
4225    end if;
4226 
4227 EXCEPTION
4228     WHEN FND_API.G_EXC_ERROR THEN
4229          x_return_status := FND_API.G_RET_STS_ERROR;
4230     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4231          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4232     WHEN OTHERS THEN
4233          x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4234          IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
4235               OE_MSG_PUB.Add_Exc_Msg (   G_PKG_NAME ,   'Validate_Entity');
4236          END IF;
4237 END Validate_Entity;
4238 
4239 PROCEDURE Insert_Row
4240 (p_header_rec        IN  OE_Blanket_PUB.Header_rec_type
4241 ,x_return_status     OUT NOCOPY VARCHAR2)
4242 IS
4243 	l_org_id	NUMBER;
4244 	l_upgraded_flag varchar2(1) ;
4245         l_lock_control  NUMBER := 1;
4246 --
4247 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4248 --
4249 BEGIN
4250 
4251     x_return_status := FND_API.G_RET_STS_SUCCESS;
4252 
4253     if l_debug_level > 0 then
4254      oe_debug_pub.add('Entering OE_BLANKET_UTIL.INSERT_ROW - Header ID :'||
4255                        p_header_rec.header_id);
4256     end if;
4257     --bug 7139169
4258     OE_GLOBALS.Set_Context;
4259     l_org_id := OE_GLOBALS.G_ORG_ID;
4260 
4261     --l_org_id := to_number(FND_PROFILE.VALUE('ORG_ID'));
4262     -- for bug 3342548. Added column CONTEXT
4263     INSERT  INTO OE_BLANKET_HEADERS
4264     (       ACCOUNTING_RULE_ID
4265     ,       AGREEMENT_ID
4266     , 	    CONTEXT
4267     ,       ATTRIBUTE1
4268     ,       ATTRIBUTE10
4269     ,       ATTRIBUTE11
4270     ,       ATTRIBUTE12
4271     ,       ATTRIBUTE13
4272     ,       ATTRIBUTE14
4273     ,       ATTRIBUTE15
4274     ,       ATTRIBUTE16
4275     ,       ATTRIBUTE17
4276     ,       ATTRIBUTE18
4277     ,       ATTRIBUTE19
4278     ,       ATTRIBUTE20
4279     ,       ATTRIBUTE2
4280     ,       ATTRIBUTE3
4281     ,       ATTRIBUTE4
4282     ,       ATTRIBUTE5
4283     ,       ATTRIBUTE6
4284     ,       ATTRIBUTE7
4285     ,       ATTRIBUTE8
4286     ,       ATTRIBUTE9
4287     ,       CREATED_BY
4288     ,       CREATION_DATE
4289     ,       CUST_PO_NUMBER
4290     ,       DELIVER_TO_ORG_ID
4291     ,       FREIGHT_TERMS_CODE
4292     ,       header_id
4293     ,       INVOICE_TO_ORG_ID
4294     ,       INVOICING_RULE_ID
4295     ,       LAST_UPDATED_BY
4296     ,       LAST_UPDATE_DATE
4297     ,       LAST_UPDATE_LOGIN
4298     ,       ORDER_NUMBER
4299     ,       ORDER_TYPE_ID
4300     ,       PAYMENT_TERM_ID
4301     ,       PRICE_LIST_ID
4302     ,       PROGRAM_APPLICATION_ID
4303     ,       PROGRAM_ID
4304     ,       PROGRAM_UPDATE_DATE
4305     ,       REQUEST_ID
4306     ,       SALESREP_ID
4307     ,       SHIPPING_METHOD_CODE
4308     ,       ship_from_org_id
4309     ,       SHIP_TO_ORG_ID
4310     ,       SOLD_TO_CONTACT_ID
4311     ,       SOLD_TO_ORG_ID
4312     ,       TRANSACTIONAL_CURR_CODE
4313     ,       conversion_type_code
4314     ,       lock_control
4315     ,       open_flag
4316     ,       booked_flag
4317     ,       VERSION_NUMBER
4318     ,       SHIPPING_INSTRUCTIONS
4319     ,       PACKING_INSTRUCTIONS
4320     ,       ORG_ID
4321     ,       SALES_DOCUMENT_TYPE_CODE
4322     ,       ORDER_CATEGORY_CODE
4323     ,       SOURCE_DOCUMENT_TYPE_ID
4324     ,       SOURCE_DOCUMENT_ID
4325 -- hashraf start of Pack J
4326     ,	    SALES_DOCUMENT_NAME
4327     ,	    TRANSACTION_PHASE_CODE
4328     ,	    USER_STATUS_CODE
4329     ,	    flow_status_code
4330     ,	    SUPPLIER_SIGNATURE
4331     ,	    SUPPLIER_SIGNATURE_DATE
4332     ,	    CUSTOMER_SIGNATURE
4333     ,	    CUSTOMER_SIGNATURE_DATE
4334     ,	    SOLD_TO_SITE_USE_ID
4335     ,	    DRAFT_SUBMITTED_FLAG
4336     ,	    SOURCE_DOCUMENT_VERSION_NUMBER
4337     )  -- end of Pack J
4338     VALUES
4339     (       p_header_rec.accounting_rule_id
4340     ,       p_header_rec.agreement_id
4341     ,	    p_header_rec.context
4342     ,       p_header_rec.attribute1
4343     ,       p_header_rec.attribute10
4344     ,       p_header_rec.attribute11
4345     ,       p_header_rec.attribute12
4346     ,       p_header_rec.attribute13
4347     ,       p_header_rec.attribute14
4348     ,       p_header_rec.attribute15
4349     ,       p_header_rec.attribute16
4350     ,       p_header_rec.attribute17
4351     ,       p_header_rec.attribute18
4352     ,       p_header_rec.attribute19
4353     ,       p_header_rec.attribute20
4354     ,       p_header_rec.attribute2
4355     ,       p_header_rec.attribute3
4356     ,       p_header_rec.attribute4
4357     ,       p_header_rec.attribute5
4358     ,       p_header_rec.attribute6
4359     ,       p_header_rec.attribute7
4360     ,       p_header_rec.attribute8
4361     ,       p_header_rec.attribute9
4362     ,       p_header_rec.created_by
4363     ,       p_header_rec.creation_date
4364     ,       p_header_rec.cust_po_number
4365     ,       p_header_rec.deliver_to_org_id
4366     ,       p_header_rec.freight_terms_code
4367     ,       p_header_rec.header_id
4368     ,       p_header_rec.invoice_to_org_id
4369     ,       p_header_rec.invoicing_rule_id
4370     ,       p_header_rec.last_updated_by
4371     ,       p_header_rec.last_update_date
4372     ,       p_header_rec.last_update_login
4373     ,       p_header_rec.order_number
4374     ,       p_header_rec.order_type_id
4375     ,       p_header_rec.payment_term_id
4376     ,       p_header_rec.price_list_id
4377     ,       p_header_rec.program_application_id
4378     ,       p_header_rec.program_id
4379     ,       p_header_rec.program_update_date
4380     ,       p_header_rec.request_id
4381     ,       p_header_rec.salesrep_id
4382     ,       p_header_rec.shipping_method_code
4383     ,       p_header_rec.ship_from_org_id
4384     ,       p_header_rec.ship_to_org_id
4385     ,       p_header_rec.sold_to_contact_id
4386     ,       p_header_rec.sold_to_org_id
4387     ,       p_header_rec.transactional_curr_code
4388     ,       p_header_rec.conversion_type_code
4389     ,       l_lock_control
4390     ,       'Y'
4391     ,       'N'
4392     ,       p_header_rec.version_number
4393     ,	    p_header_rec.shipping_instructions
4394     ,	    p_header_rec.packing_instructions
4395     ,       mo_global.get_current_org_id
4396     ,       'B'
4397     ,       'ORDER'
4398     ,       p_header_rec.source_document_type_id
4399     ,       p_header_rec.source_document_id
4400     ,       p_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
4401     ,       p_header_rec.TRANSACTION_PHASE_CODE
4402     ,       p_header_rec.USER_STATUS_CODE
4403     ,       p_header_rec.FLOW_STATUS_CODE
4404     ,       p_header_rec.SUPPLIER_SIGNATURE
4405     ,       p_header_rec.SUPPLIER_SIGNATURE_DATE
4406     ,       p_header_rec.CUSTOMER_SIGNATURE
4407     ,       p_header_rec.CUSTOMER_SIGNATURE_DATE
4408     ,       p_header_rec.sold_to_site_use_id
4409     ,       p_header_rec.draft_submitted_flag
4410     ,       p_header_rec.source_document_version_number
4411     );
4412 -- hashraf ... end of pack J
4413 
4414     INSERT  INTO OE_BLANKET_HEADERS_EXT
4415     (       ORDER_NUMBER
4416     ,       START_DATE_ACTIVE
4417     ,       END_DATE_ACTIVE
4418     ,       on_hold_flag
4419     ,       ENFORCE_PRICE_LIST_FLAG
4420     ,   enforce_ship_to_flag
4421     ,   enforce_invoice_to_flag
4422     ,   enforce_freight_term_flag
4423     ,   enforce_shipping_method_flag
4424     ,   enforce_payment_term_flag
4425     ,   enforce_accounting_rule_flag
4426     ,   enforce_invoicing_rule_flag
4427     ,       OVERRIDE_AMOUNT_FLAG
4428     ,       BLANKET_MAX_AMOUNT
4429     ,       BLANKET_MIN_AMOUNT
4430     ,       RELEASED_AMOUNT
4431     ,       FULFILLED_AMOUNT
4432     ,       REVISION_CHANGE_REASON_CODE
4433     ,       REVISION_CHANGE_COMMENTS
4434     ,       REVISION_CHANGE_DATE
4435     -- 11i10 Pricing Changes
4436     ,       NEW_PRICE_LIST_ID
4437     ,       NEW_MODIFIER_LIST_ID
4438     ,       DEFAULT_DISCOUNT_PERCENT
4439     ,       DEFAULT_DISCOUNT_AMOUNT
4440 )
4441 VALUES
4442     (       p_header_rec.order_number
4443     ,       p_header_rec.START_DATE_ACTIVE
4444     ,       p_header_rec.END_DATE_ACTIVE
4445     ,       p_header_rec.on_hold_flag
4446     ,       p_header_rec.ENFORCE_PRICE_LIST_FLAG
4447     ,       p_header_rec.enforce_ship_to_flag
4448     ,       p_header_rec.enforce_invoice_to_flag
4449     ,       p_header_rec.enforce_freight_term_flag
4450     ,       p_header_rec.enforce_shipping_method_flag
4451     ,       p_header_rec.enforce_payment_term_flag
4452     ,       p_header_rec.enforce_accounting_rule_flag
4453     ,       p_header_rec.enforce_invoicing_rule_flag
4454     ,       p_header_rec.OVERRIDE_AMOUNT_FLAG
4455     ,       p_header_rec.Blanket_Max_Amount
4456     ,       p_header_rec.Blanket_Min_Amount
4457     ,       p_header_rec.RELEASED_AMOUNT
4458     ,       p_header_rec.FULFILLED_AMOUNT
4459     ,       p_header_rec.REVISION_CHANGE_REASON_CODE
4460     ,       p_header_rec.REVISION_CHANGE_COMMENTS
4461     ,       p_header_rec.REVISION_CHANGE_DATE
4462     -- 11i10 Pricing Changes
4463     ,       p_header_rec.NEW_PRICE_LIST_ID
4464     ,       p_header_rec.NEW_MODIFIER_LIST_ID
4465     ,       p_header_rec.default_DISCOUNT_PERCENT
4466     ,       p_header_rec.default_DISCOUNT_AMOUNT
4467 );
4468 
4469    OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4470    if l_debug_level > 0 then
4471     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.INSERT_ROW- Header', 1);
4472    end if;
4473 
4474 EXCEPTION
4475 
4476     WHEN OTHERS THEN
4477         OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4478         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4479         THEN
4480             OE_MSG_PUB.Add_Exc_Msg
4481             (   G_PKG_NAME
4482             ,   'Insert_Row'
4483             );
4484         END IF;
4485 
4486         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4487         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4488 
4489 End Insert_Row;
4490 
4491 PROCEDURE Update_Row
4492 (   p_header_rec       IN   OE_Blanket_PUB.Header_rec_type
4493 ,   x_return_status    OUT  NOCOPY VARCHAR2
4494 )
4495 IS
4496 l_return_status VARCHAR2(1);
4497 --
4498 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4499 --
4500 BEGIN
4501 
4502     x_return_status := FND_API.G_RET_STS_SUCCESS;
4503 
4504     --Versioning changes
4505     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
4506        NOT g_old_version_captured THEN
4507           query_blanket(p_header_id => p_header_rec.header_id
4508                        ,p_x_header_rec => g_old_header_hist_Rec
4509                        ,p_x_line_tbl => g_old_line_hist_tbl
4510                        ,x_return_status => l_return_status
4511                       );
4512            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4513                x_return_status := l_return_status;
4514            END IF;
4515            g_old_version_captured := TRUE;
4516     END IF;
4517     -- for bug 3342548. Added column CONTEXT
4518     UPDATE  OE_BLANKET_HEADERS
4519     SET     ACCOUNTING_RULE_ID             = p_header_rec.accounting_rule_id
4520     ,       AGREEMENT_ID                   = p_header_rec.agreement_id
4521     , 	    CONTEXT			   = p_header_rec.context
4522     ,       ATTRIBUTE1                     = p_header_rec.attribute1
4523     ,       ATTRIBUTE10                    = p_header_rec.attribute10
4524     ,       ATTRIBUTE11                    = p_header_rec.attribute11
4525     ,       ATTRIBUTE12                    = p_header_rec.attribute12
4526     ,       ATTRIBUTE13                    = p_header_rec.attribute13
4527     ,       ATTRIBUTE14                    = p_header_rec.attribute14
4528     ,       ATTRIBUTE15                    = p_header_rec.attribute15
4529     ,       ATTRIBUTE16                    = p_header_rec.attribute16
4530     ,       ATTRIBUTE17                    = p_header_rec.attribute17
4531     ,       ATTRIBUTE18                    = p_header_rec.attribute18
4532     ,       ATTRIBUTE19                    = p_header_rec.attribute19
4533     ,       ATTRIBUTE20                    = p_header_rec.attribute20
4534     ,       ATTRIBUTE2                     = p_header_rec.attribute2
4535     ,       ATTRIBUTE3                     = p_header_rec.attribute3
4536     ,       ATTRIBUTE4                     = p_header_rec.attribute4
4537     ,       ATTRIBUTE5                     = p_header_rec.attribute5
4538     ,       ATTRIBUTE6                     = p_header_rec.attribute6
4539     ,       ATTRIBUTE7                     = p_header_rec.attribute7
4540     ,       ATTRIBUTE8                     = p_header_rec.attribute8
4541     ,       ATTRIBUTE9                     = p_header_rec.attribute9
4542   --  ,       CREATED_BY                     = p_header_rec.created_by
4543   --  ,       CREATION_DATE                  = p_header_rec.creation_date
4544     ,       CUST_PO_NUMBER                 = p_header_rec.cust_po_number
4545     ,       DELIVER_TO_ORG_ID              = p_header_rec.deliver_to_org_id
4546     ,       FREIGHT_TERMS_CODE             = p_header_rec.freight_terms_code
4547     ,       INVOICE_TO_ORG_ID              = p_header_rec.invoice_to_org_id
4548     ,       INVOICING_RULE_ID              = p_header_rec.invoicing_rule_id
4549     ,       LAST_UPDATED_BY                = nvl(p_header_rec.last_updated_by, FND_GLOBAL.USER_ID)
4550     ,       LAST_UPDATE_DATE               = nvl(p_header_rec.last_update_date, sysdate)
4551     ,       LAST_UPDATE_LOGIN              = p_header_rec.last_update_login
4552     ,       ORDER_TYPE_ID                  = p_header_rec.order_type_id
4553     ,       PAYMENT_TERM_ID                = p_header_rec.payment_term_id
4554     ,       PRICE_LIST_ID                  = p_header_rec.price_list_id
4555     ,       PROGRAM_APPLICATION_ID         = p_header_rec.program_application_id
4556     ,       PROGRAM_ID                     = p_header_rec.program_id
4557     ,       PROGRAM_UPDATE_DATE            = p_header_rec.program_update_date
4558 
4559 
4560     ,       REQUEST_ID                     = p_header_rec.request_id
4561     ,       salesrep_id                    = p_header_rec.salesrep_id
4562     ,       SHIPPING_METHOD_CODE           = p_header_rec.shipping_method_code
4563     ,       ship_from_org_id               =    p_header_rec.ship_from_org_id
4564     ,       SHIP_TO_ORG_ID                 = p_header_rec.ship_to_org_id
4565     ,       SOLD_TO_CONTACT_ID             = p_header_rec.sold_to_contact_id
4566     ,       SOLD_TO_ORG_ID                 = p_header_rec.sold_to_org_id
4567     ,       TRANSACTIONAL_CURR_CODE        = p_header_rec.transactional_curr_code
4568     ,       CONVERSION_TYPE_CODE        = p_header_rec.CONVERSION_TYPE_CODE
4569     ,       LOCK_CONTROL        = LOCK_CONTROL + 1
4570     ,       VERSION_NUMBER                 = p_header_rec.version_number
4571     ,       SHIPPING_INSTRUCTIONS       = p_header_rec.shipping_instructions
4572     ,       PACKING_INSTRUCTIONS        = p_header_rec.packing_instructions
4573     ,       SOURCE_DOCUMENT_TYPE_ID = p_header_rec.source_document_type_id
4574     ,       SOURCE_DOCUMENT_ID     = p_header_rec.source_document_id
4575 -- hashraf ... start of pack J
4576     ,       SALES_DOCUMENT_NAME		= p_header_rec.SALES_DOCUMENT_NAME
4577     ,       TRANSACTION_PHASE_CODE      = p_header_rec.TRANSACTION_PHASE_CODE
4578     ,       USER_STATUS_CODE		= p_header_rec.USER_STATUS_CODE
4579     ,       FLOW_STATUS_CODE		= p_header_rec.FLOW_STATUS_CODE
4580     ,       SUPPLIER_SIGNATURE 		= p_header_rec.SUPPLIER_SIGNATURE
4581     ,       SUPPLIER_SIGNATURE_DATE	= p_header_rec.SUPPLIER_SIGNATURE_DATE
4582     ,       CUSTOMER_SIGNATURE		= p_header_rec.CUSTOMER_SIGNATURE
4583     ,       CUSTOMER_SIGNATURE_DATE	= p_header_rec.CUSTOMER_SIGNATURE_DATE
4584     ,       sold_to_site_use_id         = p_header_rec.sold_to_site_use_id
4585     ,       draft_submitted_flag	= p_header_rec.draft_submitted_flag
4586     ,       source_document_version_number      = p_header_rec.source_document_version_number
4587 -- hashraf ... end of pack J
4588 
4589     WHERE   header_id = p_header_rec.header_id;
4590 
4591     UPDATE  OE_BLANKET_HEADERS_EXT
4592     SET
4593             START_DATE_ACTIVE = p_header_rec.START_DATE_ACTIVE
4594     ,       END_DATE_ACTIVE = p_header_rec.END_DATE_ACTIVE
4595     ,       on_hold_flag = p_header_rec.on_hold_flag
4596     ,       ENFORCE_PRICE_LIST_FLAG = p_header_rec.ENFORCE_PRICE_LIST_FLAG
4597     ,   enforce_ship_to_flag = p_header_rec.enforce_ship_to_flag
4598     ,   enforce_invoice_to_flag = p_header_rec.enforce_invoice_to_flag
4599     ,   enforce_freight_term_flag = p_header_rec.enforce_freight_term_flag
4600     ,   enforce_shipping_method_flag = p_header_rec.enforce_shipping_method_flag
4601     ,   enforce_payment_term_flag = p_header_rec.enforce_payment_term_flag
4602     ,   enforce_accounting_rule_flag = p_header_rec.enforce_accounting_rule_flag
4603     ,   enforce_invoicing_rule_flag = p_header_rec.enforce_invoicing_rule_flag
4604     ,       OVERRIDE_AMOUNT_FLAG = p_header_rec.OVERRIDE_AMOUNT_FLAG
4605     ,       blanket_max_amount = p_header_rec.Blanket_Max_Amount
4606     ,       blanket_min_amount = p_header_rec.Blanket_Min_Amount
4607 --    ,       released_amount = p_header_rec.released_amount
4608 --    ,       fulfilled_amount = p_header_rec.fulfilled_amount
4609 --    ,       returned_amount = p_header_rec.returned_amount
4610     ,       REVISION_CHANGE_REASON_CODE     = p_header_rec.revision_change_reason_code
4611     ,       REVISION_CHANGE_COMMENTS        = p_header_rec.revision_change_comments
4612     ,       REVISION_CHANGE_DATE                   = p_header_rec.revision_change_date
4613     -- 11i10 Pricing Changes
4614     ,       new_price_list_id = p_header_rec.new_price_list_id
4615     ,       new_modifier_list_id = p_header_rec.new_modifier_list_id
4616     ,       default_discount_percent = p_header_rec.default_discount_percent
4617     ,       default_discount_amount = p_header_rec.default_discount_amount
4618     WHERE   order_number = p_header_rec.order_number;
4619 
4620     UPDATE OE_BLANKET_LINES_EXT
4621     SET
4622             END_DATE_ACTIVE = p_header_rec.end_date_active
4623     WHERE   order_number = p_header_rec.order_number
4624     AND     END_DATE_ACTIVE IS NULL;
4625 
4626    OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4627    if l_debug_level > 0 then
4628     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.UPDATE_ROW', 1);
4629    end if;
4630 
4631 EXCEPTION
4632 
4633     WHEN OTHERS THEN
4634 
4635         OE_Blanket_Header_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
4636         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4637         THEN
4638             OE_MSG_PUB.Add_Exc_Msg
4639             (   G_PKG_NAME
4640             ,   'Update_Row'
4641             );
4642         END IF;
4643 
4644         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4645         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4646 End Update_Row;
4647 
4648 PROCEDURE Delete_Row
4649 (   p_header_id      IN   NUMBER
4650 , x_return_status OUT NOCOPY VARCHAR2)
4651 
4652 IS
4653 --
4654 l_transaction_phase_code VARCHAR2(30);
4655 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4656 l_return_status          VARCHAR2(1);
4657 -- added for delete articles
4658 l_msg_count NUMBER;
4659 l_msg_data VARCHAR2(2000);
4660 --
4661 --for bug 3348870
4662 l_order_number		Number;
4663 l_line_id		Number;
4664 Cursor c_line_id is
4665        SELECT	line_id
4666        FROM 	OE_BLANKET_LINES
4667        WHERE 	header_id=p_header_id;
4668 --
4669 
4670 BEGIN
4671 -- hashraf ... start of pack J
4672     x_return_status := FND_API.G_RET_STS_SUCCESS;
4673 
4674    if l_debug_level > 0 then
4675      oe_debug_pub.add('Entering OE_BLANKET_UTIL.DELETE_ROW - HEADER ID :'||
4676                        p_header_id);
4677    end if;
4678 
4679   BEGIN
4680 
4681    SELECT   /* MOAC_SQL_CHANGE */ transaction_phase_code
4682    INTO l_transaction_phase_code
4683    FROM oe_blanket_headers_all
4684    WHERE header_id = p_header_id;
4685 
4686   --for bug 3348870
4687   SELECT order_number
4688   INTO l_order_number
4689   FROM OE_BLANKET_HEADERS_ALL
4690   WHERE header_id=p_header_id;
4691 
4692   EXCEPTION
4693          WHEN OTHERS THEN
4694 	 null;
4695   END;
4696 
4697 
4698   IF l_transaction_phase_code IS NOT NULL THEN
4699 
4700     IF l_transaction_phase_code = 'N' THEN
4701      oe_debug_pub.add('OE_BLANKET_UTIL.Delete_Row WF negotiate');
4702      OE_Order_WF_Util.delete_row(p_type=>'NEGOTIATE', p_id => p_header_id);
4703     ELSE
4704      oe_debug_pub.add('OE_BLANKET_UTIL.Delete_Row WF blanket');
4705      OE_Order_WF_Util.delete_row(p_type=>'BLANKET', p_id => p_header_id);
4706     END IF;
4707 
4708   END IF;
4709      oe_debug_pub.add('OE_BLANKET_UTIL.Delete_Row after WF delete');
4710 
4711    -- 11i10 Pricing Changes
4712    OE_Blanket_Pricing_Util.Deactivate_Pricing
4713                      (p_blanket_header_id => p_header_id
4714                      ,x_return_status => l_return_status
4715                      );
4716    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4717       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4718    END IF;
4719 
4720 -- added for delete attachments
4721     OE_Atchmt_Util.Delete_Attachments
4722                ( p_entity_code	=> OE_GLOBALS.G_ENTITY_HEADER
4723                , p_entity_id      	=> p_header_id
4724                , x_return_status   => l_return_status
4725                );
4726     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
4727           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4728     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
4729           RAISE FND_API.G_EXC_ERROR;
4730     END IF;
4731 
4732 	 OE_CONTRACTS_UTIL.delete_articles
4733         (
4734         p_api_version    =>1,
4735         p_doc_type       => OE_CONTRACTS_UTIL.G_BSA_DOC_TYPE,
4736         p_doc_id         =>p_header_id,
4737         x_return_status  =>l_return_status,
4738         x_msg_count      =>l_msg_count,
4739         x_msg_data       =>l_msg_data);
4740 
4741    --for bug 3348870
4742    For r_line_id in c_line_id
4743    Loop
4744         OE_Blanket_Util.Delete_Row(p_line_id => r_line_id.line_id
4745 				,x_return_status => X_RETURN_STATUS);
4746    End Loop;
4747 
4748    --End bug
4749 
4750    DELETE FROM OE_BLANKET_HEADERS
4751    WHERE header_id = p_header_id;
4752 
4753    DELETE FROM OE_BLANKET_HEADERS_HIST
4754    WHERE header_id = p_header_id;
4755 
4756    --for bug 3348870
4757    DELETE FROM OE_BLANKET_HEADERS_EXT
4758    WHERE order_number=l_order_number;
4759 
4760   if l_debug_level > 0 then
4761     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.DELETE_ROW', 1);
4762    end if;
4763 
4764 EXCEPTION
4765     WHEN FND_API.G_EXC_ERROR THEN
4766     --added for delete articles
4767     OE_MSG_PUB.Count_And_Get
4768      (
4769        p_count       => l_msg_count,
4770        p_data        => l_msg_data
4771       );
4772 		RAISE FND_API.G_EXC_ERROR;
4773     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4774     --added for delete articles
4775     OE_MSG_PUB.Count_And_Get
4776      (
4777        p_count       => l_msg_count,
4778        p_data        => l_msg_data
4779      );
4780 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4781     WHEN OTHERS THEN
4782 
4783         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4784         THEN
4785             OE_MSG_PUB.Add_Exc_Msg
4786             (   G_PKG_NAME
4787             ,   'Delete_Row'
4788             );
4789         END IF;
4790 
4791         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4792         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4793 
4794 End Delete_Row;
4795 
4796 PROCEDURE Insert_Row
4797 ( p_line_rec IN OE_Blanket_PUB.Line_rec_type
4798 , x_return_status OUT NOCOPY VARCHAR2)
4799 IS
4800 l_org_id 	NUMBER ;
4801 l_sold_from_org NUMBER;
4802 l_upgraded_flag varchar2(1);
4803 l_lock_control  NUMBER:= 1;
4804 l_index         NUMBER;
4805 l_return_status varchar2(1);
4806 --
4807 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
4808 --
4809 BEGIN
4810 
4811     x_return_status := FND_API.G_RET_STS_SUCCESS;
4812 
4813    if l_debug_level > 0 then
4814      oe_debug_pub.add('Entering OE_BLANKET_UTIL.INSERT_ROW - Line ID :'||
4815                        p_line_rec.line_id);
4816    end if;
4817 
4818     --Versioning changes
4819     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
4820        NOT g_old_version_captured THEN
4821           query_blanket(p_header_id => p_line_rec.header_id
4822                        ,p_x_header_rec => g_old_header_hist_Rec
4823                        ,p_x_line_tbl => g_old_line_hist_tbl
4824                        ,x_return_status => l_return_status
4825                       );
4826            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
4827                x_return_status := l_return_status;
4828            END IF;
4829            g_old_version_captured := TRUE;
4830     END IF;
4831 
4832     INSERT  INTO OE_BLANKET_LINES
4833     (       ACCOUNTING_RULE_ID
4834     ,       AGREEMENT_ID
4835     ,       ATTRIBUTE1
4836     ,       ATTRIBUTE10
4837     ,       ATTRIBUTE11
4838     ,       ATTRIBUTE12
4839     ,       ATTRIBUTE13
4840     ,       ATTRIBUTE14
4841     ,       ATTRIBUTE15
4842     ,       ATTRIBUTE16
4843     ,       ATTRIBUTE17
4844     ,       ATTRIBUTE18
4845     ,       ATTRIBUTE19
4846     ,       ATTRIBUTE20
4847     ,       ATTRIBUTE2
4848     ,       ATTRIBUTE3
4849     ,       ATTRIBUTE4
4850     ,       ATTRIBUTE5
4851     ,       ATTRIBUTE6
4852     ,       ATTRIBUTE7
4853     ,       ATTRIBUTE8
4854     ,       ATTRIBUTE9
4855     ,       CONTEXT
4856     ,       CREATED_BY
4857     ,       CREATION_DATE
4858     ,       CUST_PO_NUMBER
4859     ,       DELIVER_TO_ORG_ID
4860     ,       FREIGHT_TERMS_CODE
4861     ,       header_id
4862     ,       inventory_item_id
4863     ,       SOLD_TO_ORG_ID
4864     ,       INVOICE_TO_ORG_ID
4865     ,       INVOICING_RULE_ID
4866     ,       ORDERED_ITEM_ID
4867     ,       item_identifier_type
4868     ,       lock_control
4869     ,       open_flag
4870     ,       ORDERED_ITEM
4871     ,       ITEM_TYPE_CODE
4872     ,       LAST_UPDATED_BY
4873     ,       LAST_UPDATE_DATE
4874     ,       LAST_UPDATE_LOGIN
4875     ,       line_id
4876     ,       line_type_id
4877     ,       line_number
4878     ,       ORG_ID
4879     ,       PAYMENT_TERM_ID
4880     ,       PREFERRED_GRADE             --OPM Added 02/JUN/00
4881     ,       PRICE_LIST_ID
4882     ,       PROGRAM_APPLICATION_ID
4883     ,       PROGRAM_ID
4884     ,       PROGRAM_UPDATE_DATE
4885     ,       REQUEST_ID
4886     ,       SALESREP_ID
4887     ,       SHIPPING_METHOD_CODE
4888     ,       ship_from_org_id
4889     ,       ship_to_org_id
4890     ,       SHIPPING_INSTRUCTIONS
4891     ,       PACKING_INSTRUCTIONS
4892     ,       ORDER_QUANTITY_UOM
4893     ,       SALES_DOCUMENT_TYPE_CODE
4894     ,       SHIPMENT_NUMBER
4895     ,       LINE_CATEGORY_CODE
4896     ,       BOOKED_FLAG
4897     ,       SOURCE_DOCUMENT_TYPE_ID
4898     ,       SOURCE_DOCUMENT_ID
4899     ,       SOURCE_DOCUMENT_LINE_ID
4900     ,       transaction_phase_code -- hashraf pack J
4901     ,       source_document_version_number
4902     )
4903     VALUES
4904     (       p_line_rec.accounting_rule_id
4905     ,       p_line_rec.agreement_id
4906     ,       p_line_rec.attribute1
4907     ,       p_line_rec.attribute10
4908     ,       p_line_rec.attribute11
4909     ,       p_line_rec.attribute12
4910     ,       p_line_rec.attribute13
4911     ,       p_line_rec.attribute14
4912     ,       p_line_rec.attribute15
4913     ,       p_line_rec.attribute16
4914     ,       p_line_rec.attribute17
4915     ,       p_line_rec.attribute18
4916     ,       p_line_rec.attribute19
4917     ,       p_line_rec.attribute20
4918     ,       p_line_rec.attribute2
4919     ,       p_line_rec.attribute3
4920     ,       p_line_rec.attribute4
4921     ,       p_line_rec.attribute5
4922     ,       p_line_rec.attribute6
4923     ,       p_line_rec.attribute7
4924     ,       p_line_rec.attribute8
4925     ,       p_line_rec.attribute9
4926     ,       p_line_rec.context
4927     ,       p_line_rec.created_by
4928     ,       p_line_rec.creation_date
4929     ,       p_line_rec.cust_po_number
4930     ,       p_line_rec.deliver_to_org_id
4931     ,       p_line_rec.freight_terms_code
4932     ,       p_line_rec.header_id
4933     ,       p_line_rec.inventory_item_id
4934     ,       p_line_rec.sold_to_org_id
4935     ,       p_line_rec.invoice_to_org_id
4936     ,       p_line_rec.invoicing_rule_id
4937     ,       p_line_rec.ordered_item_id
4938     ,       p_line_rec.item_identifier_type
4939     ,       l_lock_control
4940     ,       'Y'
4941     ,       p_line_rec.ordered_item
4942     ,       p_line_rec.item_type_code
4943     ,       p_line_rec.last_updated_by
4944     ,       p_line_rec.last_update_date
4945     ,       p_line_rec.last_update_login
4946     ,       p_line_rec.line_id
4947     ,       p_line_rec.line_type_id
4948     ,       p_line_rec.line_number
4949     ,       MO_GLOBAL.GET_CURRENT_ORG_ID
4950     ,       p_line_rec.payment_term_id
4951     ,       p_line_rec.preferred_grade            --OPM 02/JUN/00
4952     ,       p_line_rec.price_list_id
4953     ,       p_line_rec.program_application_id
4954     ,       p_line_rec.program_id
4955     ,       p_line_rec.program_update_date
4956     ,       p_line_rec.request_id
4957     ,       p_line_rec.salesrep_id
4958     ,       p_line_rec.shipping_method_code
4959     ,       p_line_rec.ship_from_org_id
4960     ,       p_line_rec.ship_to_org_id
4961     ,       p_line_rec.shipping_instructions
4962     ,       p_line_rec.packing_instructions
4963     ,       p_line_rec.ORDER_QUANTITY_UOM
4964     ,       'B'
4965     ,       1
4966     ,       'ORDER'
4967     ,       'N'
4968     ,       p_line_rec.source_document_type_id
4969     ,       p_line_rec.source_document_id
4970     ,       p_line_rec.source_document_line_id
4971     ,       p_line_rec.transaction_phase_code -- hashraf pack J
4972     ,       p_line_rec.source_document_version_number
4973     );
4974 
4975     INSERT  INTO OE_BLANKET_LINES_EXT
4976     (       START_DATE_ACTIVE
4977     ,       END_DATE_ACTIVE
4978     ,       MAX_RELEASE_AMOUNT
4979     ,       MIN_RELEASE_AMOUNT
4980     ,       min_release_quantity
4981     ,       max_release_quantity
4982     ,       BLANKET_LINE_MAX_AMOUNT
4983     ,       BLANKET_LINE_MIN_AMOUNT
4984     ,       BLANKET_MAX_QUANTITY
4985     ,       BLANKET_MIN_QUANTITY
4986     ,       OVERRIDE_BLANKET_CONTROLS_FLAG
4987     ,       OVERRIDE_RELEASE_CONTROLS_FLAG
4988     ,       ENFORCE_PRICE_LIST_FLAG
4989     ,   enforce_ship_to_flag
4990     ,   enforce_invoice_to_flag
4991     ,   enforce_freight_term_flag
4992     ,   enforce_shipping_method_flag
4993     ,   enforce_payment_term_flag
4994     ,   enforce_accounting_rule_flag
4995     ,   enforce_invoicing_rule_flag
4996     ,       RELEASED_QUANTITY
4997     ,       FULFILLED_QUANTITY
4998     ,       RETURNED_QUANTITY
4999     ,       ORDER_NUMBER
5000     ,       RELEASED_AMOUNT
5001     ,       FULFILLED_AMOUNT
5002     ,       line_id
5003     ,       line_number
5004 )
5005 VALUES
5006 (           p_line_rec.START_DATE_ACTIVE
5007     ,       p_line_rec.END_DATE_ACTIVE
5008     ,       p_line_rec.MAX_RELEASE_AMOUNT
5009     ,       p_line_rec.MIN_RELEASE_AMOUNT
5010     ,       p_line_rec.min_release_quantity
5011     ,       p_line_rec.max_release_quantity
5012     ,       p_line_rec.BLANKET_MAX_AMOUNT
5013     ,       p_line_rec.BLANKET_MIN_AMOUNT
5014     ,       p_line_rec.BLANKET_MAX_QUANTITY
5015     ,       p_line_rec.BLANKET_MIN_QUANTITY
5016     ,       p_line_rec.OVERRIDE_BLANKET_CONTROLS_FLAG
5017     ,       p_line_rec.OVERRIDE_RELEASE_CONTROLS_FLAG
5018     ,       p_line_rec.ENFORCE_PRICE_LIST_FLAG
5019     ,       p_line_rec.enforce_ship_to_flag
5020     ,       p_line_rec.enforce_invoice_to_flag
5021     ,       p_line_rec.enforce_freight_term_flag
5022     ,       p_line_rec.enforce_shipping_method_flag
5023     ,       p_line_rec.enforce_payment_term_flag
5024     ,       p_line_rec.enforce_accounting_rule_flag
5025     ,       p_line_rec.enforce_invoicing_rule_flag
5026     ,       p_line_rec.RELEASED_QUANTITY
5027     ,       p_line_rec.FULFILLED_QUANTITY
5028     ,       p_line_rec.RETURNED_QUANTITY
5029     ,       p_line_rec.ORDER_NUMBER
5030     ,       p_line_rec.RELEASED_AMOUNT
5031     ,       p_line_rec.FULFILLED_AMOUNT
5032     ,       p_line_rec.line_id
5033     ,       p_line_rec.line_number
5034     );
5035 
5036    OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
5037    if l_debug_level > 0 then
5038     oe_debug_pub.add('Exiting OE_blanket_UTIL.INSERT_ROW', 1);
5039    end if;
5040 
5041 EXCEPTION
5042 
5043     WHEN OTHERS THEN
5044 
5045         OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
5046         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5047         THEN
5048             OE_MSG_PUB.Add_Exc_Msg
5049             (   G_PKG_NAME
5050             ,   'Insert_Row'
5051             );
5052         END IF;
5053 
5054         x_return_status          := FND_API.G_RET_STS_UNEXP_ERROR;
5055         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5056 
5057 End Insert_Row;
5058 
5059 PROCEDURE Update_Row
5060 (   p_line_rec       IN   OE_Blanket_PUB.Line_rec_type
5061 ,   x_return_status  OUT NOCOPY VARCHAR2)
5062 IS
5063 l_return_status VARCHAR2(1);
5064 --
5065 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5066 --
5067 BEGIN
5068    if l_debug_level > 0 then
5069     oe_debug_pub.add('Entering OE_Blanket_UTIL.UPDATE_ROW - LINE', 1);
5070    end if;
5071     x_return_status          := FND_API.G_RET_STS_SUCCESS;
5072 
5073     --Versioning changes
5074     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
5075        NOT g_old_version_captured THEN
5076           query_blanket(p_header_id => p_line_rec.header_id
5077                        ,p_x_header_rec => g_old_header_hist_Rec
5078                        ,p_x_line_tbl => g_old_line_hist_tbl
5079                        ,x_return_status => l_return_status
5080                       );
5081            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5082                x_return_status := l_return_status;
5083            END IF;
5084            g_old_version_captured := TRUE;
5085     END IF;
5086 
5087     UPDATE  OE_BLANKET_LINES
5088     SET     ACCOUNTING_RULE_ID             = p_line_rec.accounting_rule_id
5089     ,       AGREEMENT_ID                   = p_line_rec.agreement_id
5090     ,       ATTRIBUTE1                     = p_line_rec.attribute1
5091     ,       ATTRIBUTE10                    = p_line_rec.attribute10
5092     ,       ATTRIBUTE11                    = p_line_rec.attribute11
5093     ,       ATTRIBUTE12                    = p_line_rec.attribute12
5094     ,       ATTRIBUTE13                    = p_line_rec.attribute13
5095     ,       ATTRIBUTE14                    = p_line_rec.attribute14
5096     ,       ATTRIBUTE15                    = p_line_rec.attribute15
5097     ,       ATTRIBUTE16                    = p_line_rec.attribute16
5098     ,       ATTRIBUTE17                    = p_line_rec.attribute17
5099     ,       ATTRIBUTE18                    = p_line_rec.attribute18
5100     ,       ATTRIBUTE19                    = p_line_rec.attribute19
5101     ,       ATTRIBUTE20                    = p_line_rec.attribute20
5102     ,       ATTRIBUTE2                     = p_line_rec.attribute2
5103     ,       ATTRIBUTE3                     = p_line_rec.attribute3
5104     ,       ATTRIBUTE4                     = p_line_rec.attribute4
5105     ,       ATTRIBUTE5                     = p_line_rec.attribute5
5106     ,       ATTRIBUTE6                     = p_line_rec.attribute6
5107     ,       ATTRIBUTE7                     = p_line_rec.attribute7
5108     ,       ATTRIBUTE8                     = p_line_rec.attribute8
5109     ,       ATTRIBUTE9                     = p_line_rec.attribute9
5110     ,       CONTEXT                        = p_line_rec.context
5111  --   ,       CREATED_BY                     = p_line_rec.created_by
5112  --   ,       CREATION_DATE                  = p_line_rec.creation_date
5113     ,       CUST_PO_NUMBER                 = p_line_rec.cust_po_number
5114     ,       DELIVER_TO_ORG_ID              = p_line_rec.deliver_to_org_id
5115     ,       FREIGHT_TERMS_CODE             = p_line_rec.freight_terms_code
5116     ,       header_id              = p_line_rec.header_id
5117     ,       inventory_item_id              = p_line_rec.inventory_item_id
5118     ,       INVOICE_TO_ORG_ID              = p_line_rec.invoice_to_org_id
5119     ,       INVOICING_RULE_ID              = p_line_rec.invoicing_rule_id
5120     ,       ORDERED_ITEM_ID                        = p_line_rec.ordered_item_id
5121     ,       item_identifier_type           = p_line_rec.item_identifier_type
5122     ,       lock_control           = lock_control + 1
5123 
5124     ,       ORDERED_ITEM                     = p_line_rec.ordered_item
5125     ,       ITEM_TYPE_CODE                 = p_line_rec.item_type_code
5126     ,       LAST_UPDATED_BY                = nvl(p_line_rec.last_updated_by, FND_GLOBAL.USER_ID)
5127     ,       LAST_UPDATE_DATE               = nvl(p_line_rec.last_update_date, sysdate)
5128     ,       LAST_UPDATE_LOGIN              = p_line_rec.last_update_login
5129     ,       line_number            = p_line_rec.line_number
5130     ,       PAYMENT_TERM_ID                = p_line_rec.payment_term_id
5131     ,       PREFERRED_GRADE                = p_line_rec.preferred_grade
5132     ,       PRICE_LIST_ID                  = p_line_rec.price_list_id
5133     ,       PROGRAM_APPLICATION_ID         = p_line_rec.program_application_id
5134     ,       PROGRAM_ID                     = p_line_rec.program_id
5135     ,       PROGRAM_UPDATE_DATE            = p_line_rec.program_update_date
5136     ,       REQUEST_ID                     = p_line_rec.request_id
5137     ,       SALESREP_ID                    = p_line_rec.salesrep_id
5138     ,       SHIPPING_METHOD_CODE           = p_line_rec.shipping_method_code
5139     ,       ship_from_org_id               = p_line_rec.ship_from_org_id
5140     ,       SHIP_TO_ORG_ID                 = p_line_rec.ship_to_org_id
5141     ,       SHIPPING_INSTRUCTIONS          = p_line_rec.shipping_instructions
5142     ,       PACKING_INSTRUCTIONS           = p_line_rec.packing_instructions
5143     ,       ORDER_QUANTITY_UOM = p_line_rec.ORDER_QUANTITY_UOM
5144 -- hashraf ... start of pack J
5145     ,       transaction_phase_code         = p_line_rec.transaction_phase_code
5146     ,       source_document_version_number         = p_line_rec.source_document_version_number
5147 -- hashraf ... end of pack J
5148     WHERE   line_id		  = p_line_rec.line_id
5149       AND   header_id	  = p_line_rec.header_id ;
5150 
5151 	IF SQL%NOTFOUND THEN
5152         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5153         END IF;
5154 
5155     UPDATE OE_BLANKET_LINES_EXT
5156     SET
5157            min_release_quantity              = p_line_rec.min_release_quantity
5158     ,       max_release_quantity              = p_line_rec.max_release_quantity
5159     ,       START_DATE_ACTIVE = p_line_rec.START_DATE_ACTIVE
5160     ,       END_DATE_ACTIVE = p_line_rec.END_DATE_ACTIVE
5161     ,       MAX_RELEASE_AMOUNT = p_line_rec.MAX_RELEASE_AMOUNT
5162     ,       MIN_RELEASE_AMOUNT = p_line_rec.MIN_RELEASE_AMOUNT
5163 
5164     ,       BLANKET_LINE_MAX_AMOUNT = p_line_rec.BLANKET_MAX_AMOUNT
5165     ,       BLANKET_LINE_MIN_AMOUNT = p_line_rec.BLANKET_MIN_AMOUNT
5166     ,       BLANKET_MAX_QUANTITY = p_line_rec.BLANKET_MAX_QUANTITY
5167     ,       BLANKET_MIN_QUANTITY = p_line_rec.BLANKET_MIN_QUANTITY
5168     ,       OVERRIDE_BLANKET_CONTROLS_FLAG = p_line_rec.OVERRIDE_BLANKET_CONTROLS_FLAG
5169     ,       OVERRIDE_RELEASE_CONTROLS_FLAG = p_line_rec.OVERRIDE_RELEASE_CONTROLS_FLAG
5170     ,       ENFORCE_PRICE_LIST_FLAG = p_line_rec.ENFORCE_PRICE_LIST_FLAG
5171     ,       enforce_ship_to_flag = p_line_rec.enforce_ship_to_flag
5172     ,       enforce_invoice_to_flag = p_line_rec.enforce_invoice_to_flag
5173     ,       enforce_freight_term_flag = p_line_rec.enforce_freight_term_flag
5174     ,       enforce_shipping_method_flag = p_line_rec.enforce_shipping_method_flag
5175     ,       enforce_payment_term_flag = p_line_rec.enforce_payment_term_flag
5176     ,       enforce_accounting_rule_flag = p_line_rec.enforce_accounting_rule_flag
5177     ,       enforce_invoicing_rule_flag = p_line_rec.enforce_invoicing_rule_flag
5178 --    ,       RELEASED_QUANTITY = p_line_rec.RELEASED_QUANTITY
5179 --    ,       FULFILLED_QUANTITY = p_line_rec.FULFILLED_QUANTITY
5180 --    ,       RETURNED_QUANTITY = p_line_rec.RETURNED_QUANTITY
5181 --    ,       released_amount = p_line_rec.released_amount
5182 --    ,       fulfilled_amount = p_line_rec.fulfilled_amount
5183 --    ,       returned_amount = p_line_rec.returned_amount
5184       ,       line_number = p_line_rec.line_number  --bug5894169
5185     WHERE   line_id = p_line_rec.line_id;
5186 
5187    OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
5188    if l_debug_level > 0 then
5189     oe_debug_pub.add('Exiting OE_Blanket_UTIL.UPDATE_ROW - LINE', 1);
5190    end if;
5191 
5192 EXCEPTION
5193 
5194 
5195     WHEN OTHERS THEN
5196         OE_Blanket_Line_Security.g_check_all_cols_constraint := 'Y'; /* Bug # 5516348 */
5197         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5198         THEN
5199             OE_MSG_PUB.Add_Exc_Msg
5200             (   G_PKG_NAME
5201             ,   'Update_Row'
5202             );
5203         END IF;
5204 
5205         x_return_status          := FND_API.G_RET_STS_ERROR;
5206         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5207 End Update_Row;
5208 
5209 PROCEDURE Delete_Row
5210 (   p_line_id      IN   NUMBER
5211 , x_return_status OUT NOCOPY VARCHAR2
5212 )
5213 IS
5214 l_header_id   NUMBER := g_header_rec.header_id;
5215 l_return_status varchar2(1);
5216 --
5217 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5218 --
5219 BEGIN
5220 -- hashraf ... start of pack J
5221     x_return_status := FND_API.G_RET_STS_SUCCESS;
5222 
5223    if l_debug_level > 0 then
5224      oe_debug_pub.add('Entering OE_BLANKET_UTIL.DELETE_ROW - LINE ID :'||
5225                        p_line_id);
5226    end if;
5227 
5228    IF l_header_id IS NULL or
5229       l_header_id = FND_API.G_MISS_NUM THEN
5230     SELECT  /* MOAC_SQL_CHANGE */ header_id into l_header_id
5231     FROM OE_BLANKET_LINES_all
5232     WHERE line_id = p_line_id;
5233    END IF;
5234 
5235     --Versioning changes
5236     IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
5237        NOT g_old_version_captured THEN
5238           query_blanket(p_header_id => l_header_id
5239                        ,p_x_header_rec => g_old_header_hist_Rec
5240                        ,p_x_line_tbl => g_old_line_hist_tbl
5241                        ,x_return_status => l_return_status
5242                       );
5243            IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5244                x_return_status := l_return_status;
5245            END IF;
5246            g_old_version_captured := TRUE;
5247     END IF;
5248 
5249    --for bug 3348870
5250    OE_Blanket_Pricing_Util.Deactivate_Pricing
5251                      (p_blanket_header_id => l_header_id
5252    		     ,p_blanket_line_id => p_line_id
5253                      ,x_return_status => l_return_status
5254                      );
5255    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
5256       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5257    END IF;
5258 
5259    OE_Atchmt_Util.Delete_Attachments
5260                ( p_entity_code	=> OE_GLOBALS.G_ENTITY_LINE
5261                , p_entity_id      	=> p_line_id
5262                , x_return_status   => l_return_status
5263                );
5264     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
5265           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5266     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
5267           RAISE FND_API.G_EXC_ERROR;
5268     END IF;
5269     -- End bug
5270 
5271    DELETE FROM OE_BLANKET_LINES
5272    WHERE line_id = p_line_id;
5273 
5274    --for bug 3348870
5275 
5276    DELETE FROM OE_BLANKET_LINES_EXT
5277    WHERE line_id = p_line_id;
5278 
5279    DELETE FROM OE_BLANKET_LINES_HIST
5280    WHERE line_id = p_line_id;
5281 
5282   if l_debug_level > 0 then
5283     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.DELETE_ROW', 1);
5284    end if;
5285 
5286 EXCEPTION
5287     WHEN FND_API.G_EXC_ERROR THEN
5288     	RAISE FND_API.G_EXC_ERROR;
5289     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5290     	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5291     WHEN OTHERS THEN
5292 
5293         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5294         THEN
5295             OE_MSG_PUB.Add_Exc_Msg
5296             (   G_PKG_NAME
5297             ,   'Delete_Row'
5298             );
5299         END IF;
5300 
5301         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5302         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5303 
5304 End Delete_Row;
5305 
5306 
5307 PROCEDURE Query_Header
5308 ( p_header_id          IN   NUMBER
5309 , p_version_number     IN   NUMBER := NULL
5310 , p_phase_change_flag  IN VARCHAR2 := NULL
5311 , x_header_rec         IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
5312 , x_return_status      OUT NOCOPY VARCHAR2
5313 )IS
5314 
5315 CURSOR l_hdr_csr IS
5316     SELECT  ACCOUNTING_RULE_ID
5317     ,       AGREEMENT_ID
5318     ,       ATTRIBUTE1
5319     ,       ATTRIBUTE10
5320     ,       ATTRIBUTE11
5321     ,       ATTRIBUTE12
5322     ,       ATTRIBUTE13
5323     ,       ATTRIBUTE14
5324     ,       ATTRIBUTE15
5325     ,       ATTRIBUTE16
5326     ,       ATTRIBUTE17
5327     ,       ATTRIBUTE18
5328     ,       ATTRIBUTE19
5329     ,       ATTRIBUTE20
5330     ,       ATTRIBUTE2
5331     ,       ATTRIBUTE3
5332     ,       ATTRIBUTE4
5333     ,       ATTRIBUTE5
5334     ,       ATTRIBUTE6
5335     ,       ATTRIBUTE7
5336     ,       ATTRIBUTE8
5337     ,       ATTRIBUTE9
5338     ,       CONTEXT
5339     ,       CREATED_BY
5340     ,       CREATION_DATE
5341     ,       CUST_PO_NUMBER
5342     ,       DELIVER_TO_ORG_ID
5343     ,       FREIGHT_TERMS_CODE
5344     ,       header_id
5345     ,       INVOICE_TO_ORG_ID
5346     ,       INVOICING_RULE_ID
5347     ,       LAST_UPDATED_BY
5348     ,       LAST_UPDATE_DATE
5349     ,       LAST_UPDATE_LOGIN
5350     ,       bh.ORDER_NUMBER
5351     ,       ORDER_TYPE_ID
5352     ,       ORG_ID
5353     ,       PAYMENT_TERM_ID
5354     ,       PRICE_LIST_ID
5355     ,       PROGRAM_APPLICATION_ID
5356     ,       PROGRAM_ID
5357     ,       PROGRAM_UPDATE_DATE
5358     ,       REQUEST_ID
5359     ,       SALESREP_ID
5360     ,       SHIPPING_METHOD_CODE
5361     ,       ship_from_org_id
5362     ,       SHIP_TO_ORG_ID
5363     ,       SOLD_TO_CONTACT_ID
5364     ,       SOLD_TO_ORG_ID
5365     ,       TRANSACTIONAL_CURR_CODE
5366     ,       conversion_type_code
5367     ,       LOCK_CONTROL
5368     ,       VERSION_NUMBER
5369     ,       SHIPPING_INSTRUCTIONS
5370     ,       PACKING_INSTRUCTIONS
5371     ,       START_DATE_ACTIVE
5372     ,       END_DATE_ACTIVE
5373     ,       on_hold_flag
5374     ,       ENFORCE_PRICE_LIST_FLAG
5375     ,       enforce_ship_to_flag
5376     ,       enforce_invoice_to_flag
5377     ,       enforce_freight_term_flag
5378     ,       enforce_shipping_method_flag
5379     ,       enforce_payment_term_flag
5380     ,       enforce_accounting_rule_flag
5381     ,       enforce_invoicing_rule_flag
5382     ,       OVERRIDE_AMOUNT_FLAG
5383     ,       BLANKET_MAX_AMOUNT
5384     ,       BLANKET_MIN_AMOUNT
5385     ,       RELEASED_AMOUNT
5386     ,       FULFILLED_AMOUNT
5387     ,       RETURNED_AMOUNT
5388     ,       source_document_id
5389     ,       source_document_type_id
5390     ,       SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5391     ,       TRANSACTION_PHASE_CODE
5392     ,       USER_STATUS_CODE
5393     ,       FLOW_STATUS_CODE
5394     ,	    SUPPLIER_SIGNATURE
5395     ,	    SUPPLIER_SIGNATURE_DATE
5396     ,	    CUSTOMER_SIGNATURE
5397     ,	    CUSTOMER_SIGNATURE_DATE
5398     ,       sold_to_site_use_id
5399     ,       draft_submitted_flag
5400     ,       source_document_version_number -- hashraf ... end of pack J
5401     -- 11i10 Pricing Changes
5402     ,       new_price_list_id
5403     ,       new_modifier_list_id
5404     ,       default_discount_percent
5405     ,       default_discount_amount
5406     FROM    OE_BLANKET_HEADERS bh, OE_BLANKET_HEADERS_EXT bhx
5407     WHERE   bh.order_number = bhx.order_number
5408       AND   bh.header_id = p_header_id
5409       AND   bh.sales_document_type_code = 'B';
5410 
5411 CURSOR l_hdr_hist_csr IS
5412     SELECT  ACCOUNTING_RULE_ID
5413     ,       AGREEMENT_ID
5414     ,       ATTRIBUTE1
5415     ,       ATTRIBUTE10
5416     ,       ATTRIBUTE11
5417     ,       ATTRIBUTE12
5418     ,       ATTRIBUTE13
5419     ,       ATTRIBUTE14
5420     ,       ATTRIBUTE15
5421     ,       ATTRIBUTE16
5422     ,       ATTRIBUTE17
5423     ,       ATTRIBUTE18
5424     ,       ATTRIBUTE19
5425     ,       ATTRIBUTE20
5426     ,       ATTRIBUTE2
5427     ,       ATTRIBUTE3
5428     ,       ATTRIBUTE4
5429     ,       ATTRIBUTE5
5430     ,       ATTRIBUTE6
5431     ,       ATTRIBUTE7
5432     ,       ATTRIBUTE8
5433     ,       ATTRIBUTE9
5434     ,       CONTEXT
5435     ,       CREATED_BY
5436     ,       CREATION_DATE
5437     ,       CUST_PO_NUMBER
5438     ,       DELIVER_TO_ORG_ID
5439     ,       FREIGHT_TERMS_CODE
5440     ,       header_id
5441     ,       INVOICE_TO_ORG_ID
5442     ,       INVOICING_RULE_ID
5443     ,       LAST_UPDATED_BY
5444     ,       LAST_UPDATE_DATE
5445     ,       LAST_UPDATE_LOGIN
5446     ,       bh.ORDER_NUMBER
5447     ,       ORDER_TYPE_ID
5448     ,       ORG_ID
5449     ,       PAYMENT_TERM_ID
5450     ,       PRICE_LIST_ID
5451     ,       PROGRAM_APPLICATION_ID
5452     ,       PROGRAM_ID
5453     ,       PROGRAM_UPDATE_DATE
5454     ,       REQUEST_ID
5455     ,       SALESREP_ID
5456     ,       SHIPPING_METHOD_CODE
5457     ,       ship_from_org_id
5458     ,       SHIP_TO_ORG_ID
5459     ,       SOLD_TO_CONTACT_ID
5460     ,       SOLD_TO_ORG_ID
5461     ,       TRANSACTIONAL_CURR_CODE
5462     ,       conversion_type_code
5463     ,       NULL                         --    ,       LOCK_CONTROL
5464     ,       VERSION_NUMBER
5465     ,       SHIPPING_INSTRUCTIONS
5466     ,       PACKING_INSTRUCTIONS
5467     ,       START_DATE_ACTIVE
5468     ,       END_DATE_ACTIVE
5469     ,       on_hold_flag
5470     ,       ENFORCE_PRICE_LIST_FLAG
5471     ,       enforce_ship_to_flag
5472     ,       enforce_invoice_to_flag
5473     ,       enforce_freight_term_flag
5474     ,       enforce_shipping_method_flag
5475     ,       enforce_payment_term_flag
5476     ,       enforce_accounting_rule_flag
5477     ,       enforce_invoicing_rule_flag
5478     ,       OVERRIDE_AMOUNT_FLAG
5479     ,       BLANKET_MAX_AMOUNT
5480     ,       BLANKET_MIN_AMOUNT
5481     ,       RELEASED_AMOUNT
5482     ,       FULFILLED_AMOUNT
5483     ,       RETURNED_AMOUNT
5484     ,       source_document_id
5485     ,       source_document_type_id
5486     ,       SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5487     ,       TRANSACTION_PHASE_CODE
5488     ,       USER_STATUS_CODE
5489     ,       FLOW_STATUS_CODE
5490     ,	    SUPPLIER_SIGNATURE
5491     ,	    SUPPLIER_SIGNATURE_DATE
5492     ,	    CUSTOMER_SIGNATURE
5493     ,	    CUSTOMER_SIGNATURE_DATE
5494     ,       sold_to_site_use_id
5495     ,       draft_submitted_flag
5496     ,       source_document_version_number -- hashraf ... end of pack J
5497     -- 11i10 Pricing Changes
5498     ,       new_price_list_id
5499     ,       new_modifier_list_id
5500     ,       default_discount_percent
5501     ,       default_discount_amount
5502     FROM    OE_BLANKET_HEADERS_HIST bh
5503     WHERE   bh.header_id = p_header_id
5504       AND   bh.sales_document_type_code = 'B'
5505       AND   bh.version_number = p_version_number
5506      AND    (PHASE_CHANGE_FLAG = p_phase_change_flag
5507      OR     (nvl(p_phase_change_flag, 'NULL') <> 'Y'));
5508 
5509 l_org_id		      NUMBER;
5510 l_current_version_number      NUMBER := NULL;
5511 
5512 --
5513 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5514 --
5515 BEGIN
5516 
5517    x_return_status := FND_API.G_RET_STS_SUCCESS;
5518 
5519    if l_debug_level > 0 then
5520     oe_debug_pub.add('Entering OE_BLANKET_UTIL.QUERY_ROW', 1);
5521    end if;
5522 
5523    IF p_version_number IS NOT NULL THEN
5524     SELECT  /* MOAC_SQL_CHANGE */ version_number INTO l_current_version_number FROM OE_BLANKET_HEADERS_ALL WHERE header_id = p_header_id;
5525    END IF;
5526 
5527    IF p_version_number IS NULL OR
5528       p_version_number = l_current_version_number THEN
5529 
5530       --Fetch from blanket tables
5531       OPEN l_hdr_csr;
5532       FETCH l_hdr_csr
5533     INTO    x_header_rec.accounting_rule_id
5534     ,       x_header_rec.agreement_id
5535     ,       x_header_rec.attribute1
5536     ,       x_header_rec.attribute10
5537     ,       x_header_rec.attribute11
5538     ,       x_header_rec.attribute12
5539     ,       x_header_rec.attribute13
5540     ,       x_header_rec.attribute14
5541     ,       x_header_rec.attribute15
5542     ,       x_header_rec.attribute16
5543     ,       x_header_rec.attribute17
5544     ,       x_header_rec.attribute18
5545     ,       x_header_rec.attribute19
5546     ,       x_header_rec.attribute20
5547     ,       x_header_rec.attribute2
5548     ,       x_header_rec.attribute3
5549     ,       x_header_rec.attribute4
5550     ,       x_header_rec.attribute5
5551     ,       x_header_rec.attribute6
5552     ,       x_header_rec.attribute7
5553     ,       x_header_rec.attribute8
5554     ,       x_header_rec.attribute9
5555     ,       x_header_rec.context
5556     ,       x_header_rec.created_by
5557     ,       x_header_rec.creation_date
5558     ,       x_header_rec.cust_po_number
5559     ,       x_header_rec.deliver_to_org_id
5560     ,       x_header_rec.freight_terms_code
5561     ,       x_header_rec.header_id
5562     ,       x_header_rec.invoice_to_org_id
5563     ,       x_header_rec.invoicing_rule_id
5564     ,       x_header_rec.last_updated_by
5565     ,       x_header_rec.last_update_date
5566     ,       x_header_rec.last_update_login
5567     ,       x_header_rec.order_number
5568     ,       x_header_rec.order_type_id
5569     ,       x_header_rec.org_id
5570     ,       x_header_rec.payment_term_id
5571     ,       x_header_rec.price_list_id
5572     ,       x_header_rec.program_application_id
5573     ,       x_header_rec.program_id
5574     ,       x_header_rec.program_update_date
5575     ,       x_header_rec.request_id
5576     ,       x_header_rec.salesrep_id
5577     ,       x_header_rec.shipping_method_code
5578     ,       x_header_rec.ship_from_org_id
5579     ,       x_header_rec.ship_to_org_id
5580     ,       x_header_rec.sold_to_contact_id
5581     ,       x_header_rec.sold_to_org_id
5582     ,       x_header_rec.transactional_curr_code
5583     ,       x_header_rec.conversion_type_code
5584     ,       x_header_rec.LOCK_CONTROL
5585     ,       x_header_rec.version_number
5586     ,       x_header_rec.shipping_instructions
5587     ,       x_header_rec.packing_instructions
5588     ,       x_header_rec.START_DATE_ACTIVE
5589     ,       x_header_rec.END_DATE_ACTIVE
5590     ,       x_header_rec.on_hold_flag
5591     ,       x_header_rec.ENFORCE_PRICE_LIST_FLAG
5592     ,       x_header_rec.enforce_ship_to_flag
5593     ,       x_header_rec.enforce_invoice_to_flag
5594     ,       x_header_rec.enforce_freight_term_flag
5595     ,       x_header_rec.enforce_shipping_method_flag
5596     ,       x_header_rec.enforce_payment_term_flag
5597     ,       x_header_rec.enforce_accounting_rule_flag
5598     ,       x_header_rec.enforce_invoicing_rule_flag
5599     ,       x_header_rec.OVERRIDE_AMOUNT_FLAG
5600     ,       x_header_rec.Blanket_Max_Amount
5601     ,       x_header_rec.Blanket_Min_Amount
5602     ,       x_header_rec.RELEASED_AMOUNT
5603     ,       x_header_rec.FULFILLED_AMOUNT
5604     ,       x_header_rec.RETURNED_AMOUNT
5605     ,       x_header_rec.source_document_id
5606     ,       x_header_rec.source_document_type_id
5607     ,       x_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5608     ,       x_header_rec.TRANSACTION_PHASE_CODE
5609     ,       x_header_rec.USER_STATUS_CODE
5610     ,       x_header_rec.FLOW_STATUS_CODE
5611     ,       x_header_rec.SUPPLIER_SIGNATURE
5612     ,       x_header_rec.SUPPLIER_SIGNATURE_DATE
5613     ,       x_header_rec.CUSTOMER_SIGNATURE
5614     ,       x_header_rec.CUSTOMER_SIGNATURE_DATE
5615     ,       x_header_rec.sold_to_site_use_id
5616     ,       x_header_rec.draft_submitted_flag
5617     ,       x_header_rec.source_document_version_number -- hashraf ... end of pack J
5618     -- 11i10 Pricing Changes
5619     ,       x_header_rec.new_price_list_id
5620     ,       x_header_rec.new_modifier_list_id
5621     ,       x_header_rec.default_discount_percent
5622     ,       x_header_rec.default_discount_amount
5623     ;
5624       IF x_header_rec.new_price_list_id IS NOT NULL THEN
5625          SELECT name
5626            INTO x_header_rec.new_price_list_name
5627            FROM qp_list_headers_vl
5628           WHERE list_header_id = x_header_rec.new_price_list_id;
5629       END IF;
5630       IF x_header_rec.new_modifier_list_id IS NOT NULL THEN
5631          SELECT name
5632            INTO x_header_rec.new_modifier_list_name
5633            FROM qp_list_headers_vl
5634           WHERE list_header_id = x_header_rec.new_modifier_list_id;
5635       END IF;
5636       CLOSE l_hdr_csr;
5637    ELSE
5638      --Fetch from history table
5639       OPEN l_hdr_hist_csr;
5640       FETCH l_hdr_hist_csr
5641     INTO    x_header_rec.accounting_rule_id
5642     ,       x_header_rec.agreement_id
5643     ,       x_header_rec.attribute1
5644     ,       x_header_rec.attribute10
5645     ,       x_header_rec.attribute11
5646     ,       x_header_rec.attribute12
5647     ,       x_header_rec.attribute13
5648     ,       x_header_rec.attribute14
5649     ,       x_header_rec.attribute15
5650     ,       x_header_rec.attribute16
5651     ,       x_header_rec.attribute17
5652     ,       x_header_rec.attribute18
5653     ,       x_header_rec.attribute19
5654     ,       x_header_rec.attribute20
5655     ,       x_header_rec.attribute2
5656     ,       x_header_rec.attribute3
5657     ,       x_header_rec.attribute4
5658     ,       x_header_rec.attribute5
5659     ,       x_header_rec.attribute6
5660     ,       x_header_rec.attribute7
5661     ,       x_header_rec.attribute8
5662     ,       x_header_rec.attribute9
5663     ,       x_header_rec.context
5664     ,       x_header_rec.created_by
5665     ,       x_header_rec.creation_date
5666     ,       x_header_rec.cust_po_number
5667     ,       x_header_rec.deliver_to_org_id
5668     ,       x_header_rec.freight_terms_code
5669     ,       x_header_rec.header_id
5670     ,       x_header_rec.invoice_to_org_id
5671     ,       x_header_rec.invoicing_rule_id
5672     ,       x_header_rec.last_updated_by
5673     ,       x_header_rec.last_update_date
5674     ,       x_header_rec.last_update_login
5675     ,       x_header_rec.order_number
5676     ,       x_header_rec.order_type_id
5677     ,       x_header_rec.org_id
5678     ,       x_header_rec.payment_term_id
5679     ,       x_header_rec.price_list_id
5680     ,       x_header_rec.program_application_id
5681     ,       x_header_rec.program_id
5682     ,       x_header_rec.program_update_date
5683     ,       x_header_rec.request_id
5684     ,       x_header_rec.salesrep_id
5685     ,       x_header_rec.shipping_method_code
5686     ,       x_header_rec.ship_from_org_id
5687     ,       x_header_rec.ship_to_org_id
5688     ,       x_header_rec.sold_to_contact_id
5689     ,       x_header_rec.sold_to_org_id
5690     ,       x_header_rec.transactional_curr_code
5691     ,       x_header_rec.conversion_type_code
5692     ,       x_header_rec.LOCK_CONTROL
5693     ,       x_header_rec.version_number
5694     ,       x_header_rec.shipping_instructions
5695     ,       x_header_rec.packing_instructions
5696     ,       x_header_rec.START_DATE_ACTIVE
5697     ,       x_header_rec.END_DATE_ACTIVE
5698     ,       x_header_rec.on_hold_flag
5699     ,       x_header_rec.ENFORCE_PRICE_LIST_FLAG
5700     ,       x_header_rec.enforce_ship_to_flag
5701     ,       x_header_rec.enforce_invoice_to_flag
5702     ,       x_header_rec.enforce_freight_term_flag
5703     ,       x_header_rec.enforce_shipping_method_flag
5704     ,       x_header_rec.enforce_payment_term_flag
5705     ,       x_header_rec.enforce_accounting_rule_flag
5706     ,       x_header_rec.enforce_invoicing_rule_flag
5707     ,       x_header_rec.OVERRIDE_AMOUNT_FLAG
5708     ,       x_header_rec.Blanket_Max_Amount
5709     ,       x_header_rec.Blanket_Min_Amount
5710     ,       x_header_rec.RELEASED_AMOUNT
5711     ,       x_header_rec.FULFILLED_AMOUNT
5712     ,       x_header_rec.RETURNED_AMOUNT
5713     ,       x_header_rec.source_document_id
5714     ,       x_header_rec.source_document_type_id
5715     ,       x_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
5716     ,       x_header_rec.TRANSACTION_PHASE_CODE
5717     ,       x_header_rec.USER_STATUS_CODE
5718     ,       x_header_rec.FLOW_STATUS_CODE
5719     ,       x_header_rec.SUPPLIER_SIGNATURE
5720     ,       x_header_rec.SUPPLIER_SIGNATURE_DATE
5721     ,       x_header_rec.CUSTOMER_SIGNATURE
5722     ,       x_header_rec.CUSTOMER_SIGNATURE_DATE
5723     ,       x_header_rec.sold_to_site_use_id
5724     ,       x_header_rec.draft_submitted_flag
5725     ,       x_header_rec.source_document_version_number -- hashraf ... end of pack J
5726     -- 11i10 Pricing Changes
5727     ,       x_header_rec.new_price_list_id
5728     ,       x_header_rec.new_modifier_list_id
5729     ,       x_header_rec.default_discount_percent
5730     ,       x_header_rec.default_discount_amount
5731     ;
5732       IF x_header_rec.new_price_list_id IS NOT NULL THEN
5733          SELECT name
5734            INTO x_header_rec.new_price_list_name
5735            FROM qp_list_headers_vl
5736           WHERE list_header_id = x_header_rec.new_price_list_id;
5737       END IF;
5738       IF x_header_rec.new_modifier_list_id IS NOT NULL THEN
5739          SELECT name
5740            INTO x_header_rec.new_modifier_list_name
5741            FROM qp_list_headers_vl
5742           WHERE list_header_id = x_header_rec.new_modifier_list_id;
5743       END IF;
5744      CLOSE l_hdr_hist_csr;
5745    END IF;
5746 
5747    if l_debug_level > 0 then
5748     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.QUERY_ROW -Header', 1);
5749    end if;
5750 
5751 EXCEPTION
5752 
5753     WHEN NO_DATA_FOUND THEN
5754 
5755     x_return_status := FND_API.G_RET_STS_ERROR;
5756 	   RAISE NO_DATA_FOUND;
5757 
5758     WHEN OTHERS THEN
5759 
5760         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
5761 
5762         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5763         THEN
5764             OE_MSG_PUB.Add_Exc_Msg
5765             (   G_PKG_NAME
5766             ,   'Query_Header'
5767             );
5768         END IF;
5769 
5770         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5771 END Query_Header;
5772 
5773 PROCEDURE Query_Lines
5774 (p_line_id              IN NUMBER := NULL
5775 ,p_header_id            IN NUMBER := NULL
5776 ,p_version_number       IN NUMBER := NULL
5777 ,p_phase_change_flag    IN VARCHAR2 := NULL
5778 ,x_line_tbl             IN OUT NOCOPY OE_Blanket_PUB.line_tbl_type
5779 ,x_return_status        OUT NOCOPY VARCHAR2
5780 )IS
5781 
5782 l_org_id 		      	NUMBER;
5783 l_count				NUMBER;
5784 l_entity				VARCHAR2(1);
5785 l_current_version_number        NUMBER;
5786 
5787 CURSOR l_line_csr IS
5788     SELECT  ACCOUNTING_RULE_ID
5789     ,       AGREEMENT_ID
5790     ,       ATTRIBUTE1
5791     ,       ATTRIBUTE10
5792     ,       ATTRIBUTE11
5793     ,       ATTRIBUTE12
5794     ,       ATTRIBUTE13
5795     ,       ATTRIBUTE14
5796     ,       ATTRIBUTE15
5797     ,       ATTRIBUTE16
5798     ,       ATTRIBUTE17
5799     ,       ATTRIBUTE18
5800     ,       ATTRIBUTE19
5801     ,       ATTRIBUTE20
5802     ,       ATTRIBUTE2
5803     ,       ATTRIBUTE3
5804     ,       ATTRIBUTE4
5805     ,       ATTRIBUTE5
5806     ,       ATTRIBUTE6
5807     ,       ATTRIBUTE7
5808     ,       ATTRIBUTE8
5809     ,       ATTRIBUTE9
5810     ,       CONTEXT
5811     ,       CREATED_BY
5812     ,       CREATION_DATE
5813     ,       CUST_PO_NUMBER
5814     ,       DELIVER_TO_ORG_ID
5815     ,       FREIGHT_TERMS_CODE
5816     ,       header_id
5817     ,       min_release_quantity
5818     ,       max_release_quantity
5819     ,       inventory_item_id
5820     ,       INVOICE_TO_ORG_ID
5821     ,       INVOICING_RULE_ID
5822     ,       ORDERED_ITEM_ID
5823     ,       item_identifier_type
5824     ,       lock_control
5825     ,       ORDERED_ITEM
5826     ,       ITEM_TYPE_CODE
5827     ,       LAST_UPDATED_BY
5828     ,       LAST_UPDATE_DATE
5829     ,       LAST_UPDATE_LOGIN
5830     ,       bl.line_id
5831     ,       bl.line_number
5832     ,       PAYMENT_TERM_ID
5833     ,       PREFERRED_GRADE                --OPM 02/JUN/00
5834     ,       PRICE_LIST_ID
5835     ,       PROGRAM_APPLICATION_ID
5836     ,       PROGRAM_ID
5837     ,       PROGRAM_UPDATE_DATE
5838     ,       REQUEST_ID
5839     ,       SALESREP_ID
5840     ,       SHIPPING_METHOD_CODE
5841     ,       ship_from_org_id
5842     ,       SHIP_TO_ORG_ID
5843     ,       SHIPPING_INSTRUCTIONS
5844     ,       PACKING_INSTRUCTIONS
5845     ,       START_DATE_ACTIVE
5846     ,       END_DATE_ACTIVE
5847     ,       MAX_RELEASE_AMOUNT
5848     ,       MIN_RELEASE_AMOUNT
5849     ,       BLANKET_LINE_MAX_AMOUNT
5850     ,       BLANKET_LINE_MIN_AMOUNT
5851     ,       BLANKET_MAX_QUANTITY
5852     ,       BLANKET_MIN_QUANTITY
5853     ,       OVERRIDE_BLANKET_CONTROLS_FLAG
5854     ,       OVERRIDE_RELEASE_CONTROLS_FLAG
5855     ,       ENFORCE_PRICE_LIST_FLAG
5856     ,       enforce_ship_to_flag
5857     ,       enforce_invoice_to_flag
5858     ,       enforce_freight_term_flag
5859     ,       enforce_shipping_method_flag
5860     ,       enforce_payment_term_flag
5861     ,       enforce_accounting_rule_flag
5862     ,       enforce_invoicing_rule_flag
5863     ,       ORDER_QUANTITY_UOM
5864     ,       RELEASED_QUANTITY
5865     ,       blx.FULFILLED_QUANTITY
5866     ,       RETURNED_QUANTITY
5867     ,       ORDER_NUMBER
5868     ,       RELEASED_AMOUNT
5869     ,       FULFILLED_AMOUNT
5870     ,       RETURNED_AMOUNT
5871     ,       TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
5872     ,       source_document_version_number
5873     -- 11i10 Pricing Changes
5874     ,       modifier_list_line_id
5875     ,       blx.qp_list_line_id
5876     FROM    OE_BLANKET_LINES bl, OE_BLANKET_LINES_EXT blx
5877     WHERE   bl.line_id = blx.line_id
5878       AND   bl.sales_document_type_code = 'B'
5879       AND  ( bl.line_id = p_line_id OR
5880 	    header_id = p_header_id) ;
5881 
5882 CURSOR l_line_hist_csr IS
5883     SELECT  ACCOUNTING_RULE_ID
5884     ,       AGREEMENT_ID
5885     ,       ATTRIBUTE1
5886     ,       ATTRIBUTE10
5887     ,       ATTRIBUTE11
5888     ,       ATTRIBUTE12
5889     ,       ATTRIBUTE13
5890     ,       ATTRIBUTE14
5891     ,       ATTRIBUTE15
5892     ,       ATTRIBUTE16
5893     ,       ATTRIBUTE17
5894     ,       ATTRIBUTE18
5895     ,       ATTRIBUTE19
5896     ,       ATTRIBUTE20
5897     ,       ATTRIBUTE2
5898     ,       ATTRIBUTE3
5899     ,       ATTRIBUTE4
5900     ,       ATTRIBUTE5
5901     ,       ATTRIBUTE6
5902     ,       ATTRIBUTE7
5903     ,       ATTRIBUTE8
5904     ,       ATTRIBUTE9
5905     ,       CONTEXT
5906     ,       CREATED_BY
5907     ,       CREATION_DATE
5908     ,       CUST_PO_NUMBER
5909     ,       DELIVER_TO_ORG_ID
5910     ,       FREIGHT_TERMS_CODE
5911     ,       header_id
5912     ,       min_release_quantity
5913     ,       max_release_quantity
5914     ,       inventory_item_id
5915     ,       INVOICE_TO_ORG_ID
5916     ,       INVOICING_RULE_ID
5917     ,       ORDERED_ITEM_ID
5918     ,       item_identifier_type
5919     ,       NULL                           --    ,       lock_control
5920     ,       ORDERED_ITEM
5921     ,       ITEM_TYPE_CODE
5922     ,       LAST_UPDATED_BY
5923     ,       LAST_UPDATE_DATE
5924     ,       LAST_UPDATE_LOGIN
5925     ,       bl.line_id
5926     ,       bl.line_number
5927     ,       PAYMENT_TERM_ID
5928     ,       PREFERRED_GRADE                --OPM 02/JUN/00
5929     ,       PRICE_LIST_ID
5930     ,       PROGRAM_APPLICATION_ID
5931     ,       PROGRAM_ID
5932     ,       PROGRAM_UPDATE_DATE
5933     ,       REQUEST_ID
5934     ,       SALESREP_ID
5935     ,       SHIPPING_METHOD_CODE
5936     ,       ship_from_org_id
5937     ,       SHIP_TO_ORG_ID
5938     ,       SHIPPING_INSTRUCTIONS
5939     ,       PACKING_INSTRUCTIONS
5940     ,       START_DATE_ACTIVE
5941     ,       END_DATE_ACTIVE
5942     ,       MAX_RELEASE_AMOUNT
5943     ,       MIN_RELEASE_AMOUNT
5944     ,       BLANKET_LINE_MAX_AMOUNT
5945     ,       BLANKET_LINE_MIN_AMOUNT
5946     ,       BLANKET_MAX_QUANTITY
5947     ,       BLANKET_MIN_QUANTITY
5948     ,       OVERRIDE_BLANKET_CONTROLS_FLAG
5949     ,       OVERRIDE_RELEASE_CONTROLS_FLAG
5950     ,       ENFORCE_PRICE_LIST_FLAG
5951     ,       enforce_ship_to_flag
5952     ,       enforce_invoice_to_flag
5953     ,       enforce_freight_term_flag
5954     ,       enforce_shipping_method_flag
5955     ,       enforce_payment_term_flag
5956     ,       enforce_accounting_rule_flag
5957     ,       enforce_invoicing_rule_flag
5958     ,       ORDER_QUANTITY_UOM
5959     ,       RELEASED_QUANTITY
5960     ,       FULFILLED_QUANTITY
5961     ,       RETURNED_QUANTITY
5962     ,       ORDER_NUMBER
5963     ,       RELEASED_AMOUNT
5964     ,       FULFILLED_AMOUNT
5965     ,       RETURNED_AMOUNT
5966     ,       TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
5967     ,       source_document_version_number
5968     -- 11i10 Pricing Changes
5969     ,       modifier_list_line_id
5970     ,       qp_list_line_id
5971     FROM    OE_BLANKET_LINES_HIST bl
5972     WHERE   bl.sales_document_type_code = 'B'
5973       AND  ( bl.line_id = p_line_id OR
5974 	    header_id = p_header_id)
5975       AND   version_number = p_version_number
5976      AND    (PHASE_CHANGE_FLAG = p_phase_change_flag
5977      OR     (nvl(p_phase_change_flag, 'NULL') <> 'Y'));
5978 
5979 --
5980 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
5981 --
5982 BEGIN
5983 
5984     x_return_status := FND_API.G_RET_STS_SUCCESS;
5985 
5986     IF
5987     (p_line_id IS NOT NULL
5988      AND
5989     p_header_id IS NOT NULL)
5990     THEN
5991             IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5992             THEN
5993                 OE_MSG_PUB.Add_Exc_Msg
5994                 (   G_PKG_NAME
5995                 ,   'Query Rows'
5996                 ,   'Keys are mutually exclusive: line_id = '|| p_line_id || ',
5997 header_id = '|| p_header_id
5998                 );
5999             END IF;
6000 
6001         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6002 
6003     END IF;
6004 
6005    IF p_version_number IS NOT NULL THEN
6006     SELECT  /* MOAC_SQL_CHANGE */ version_number INTO l_current_version_number FROM OE_BLANKET_HEADERS_ALL WHERE (header_id = p_header_id OR header_id = (select header_id from oe_blanket_lines_ALL where line_id = p_line_id));
6007    END IF;
6008 
6009 
6010  IF p_version_number IS NULL OR
6011     p_version_number = l_current_version_number THEN
6012 
6013     --  Loop over fetched records
6014 
6015     l_count := 1;
6016 
6017     FOR l_rec IN l_line_csr LOOP
6018 
6019         x_line_tbl(l_count).accounting_rule_id  := l_rec.ACCOUNTING_RULE_ID;
6020         x_line_tbl(l_count).agreement_id        := l_rec.AGREEMENT_ID;
6021         x_line_tbl(l_count).attribute1          := l_rec.ATTRIBUTE1;
6022         x_line_tbl(l_count).attribute10         := l_rec.ATTRIBUTE10;
6023         x_line_tbl(l_count).attribute11         := l_rec.ATTRIBUTE11;
6024         x_line_tbl(l_count).attribute12         := l_rec.ATTRIBUTE12;
6025         x_line_tbl(l_count).attribute13         := l_rec.ATTRIBUTE13;
6026         x_line_tbl(l_count).attribute14         := l_rec.ATTRIBUTE14;
6027         x_line_tbl(l_count).attribute15         := l_rec.ATTRIBUTE15;
6028         x_line_tbl(l_count).attribute16         := l_rec.ATTRIBUTE16;
6029         x_line_tbl(l_count).attribute17         := l_rec.ATTRIBUTE17;
6030         x_line_tbl(l_count).attribute18         := l_rec.ATTRIBUTE18;
6031         x_line_tbl(l_count).attribute19         := l_rec.ATTRIBUTE19;
6032         x_line_tbl(l_count).attribute20         := l_rec.ATTRIBUTE20;
6033         x_line_tbl(l_count).attribute2          := l_rec.ATTRIBUTE2;
6034         x_line_tbl(l_count).attribute3          := l_rec.ATTRIBUTE3;
6035         x_line_tbl(l_count).attribute4          := l_rec.ATTRIBUTE4;
6036         x_line_tbl(l_count).attribute5          := l_rec.ATTRIBUTE5;
6037         x_line_tbl(l_count).attribute6          := l_rec.ATTRIBUTE6;
6038         x_line_tbl(l_count).attribute7          := l_rec.ATTRIBUTE7;
6039         x_line_tbl(l_count).attribute8          := l_rec.ATTRIBUTE8;
6040         x_line_tbl(l_count).attribute9          := l_rec.ATTRIBUTE9;
6041         x_line_tbl(l_count).context             := l_rec.CONTEXT;
6042 
6043         x_line_tbl(l_count).created_by          := l_rec.CREATED_BY;
6044         x_line_tbl(l_count).creation_date       := l_rec.CREATION_DATE;
6045         x_line_tbl(l_count).cust_po_number      := l_rec.CUST_PO_NUMBER;
6046         x_line_tbl(l_count).deliver_to_org_id   := l_rec.DELIVER_TO_ORG_ID;
6047         x_line_tbl(l_count).freight_terms_code  := l_rec.FREIGHT_TERMS_CODE;
6048         x_line_tbl(l_count).header_id  := l_rec.header_id;
6049         x_line_tbl(l_count).min_release_quantity  := l_rec.min_release_quantity;
6050         x_line_tbl(l_count).max_release_quantity  := l_rec.max_release_quantity;
6051         x_line_tbl(l_count).inventory_item_id   := l_rec.INVENTORY_ITEM_ID;
6052         x_line_tbl(l_count).invoice_to_org_id   := l_rec.INVOICE_TO_ORG_ID;
6053         x_line_tbl(l_count).invoicing_rule_id   := l_rec.INVOICING_RULE_ID;
6054         x_line_tbl(l_count).ordered_item_id             := l_rec.ORDERED_ITEM_ID;
6055         x_line_tbl(l_count).item_identifier_type := l_rec.item_identifier_type;
6056         x_line_tbl(l_count).lock_control := l_rec.lock_control;
6057 
6058         x_line_tbl(l_count).ordered_item          := l_rec.ORDERED_ITEM;
6059         x_line_tbl(l_count).item_type_code      := l_rec.ITEM_TYPE_CODE;
6060         x_line_tbl(l_count).last_updated_by     := l_rec.LAST_UPDATED_BY;
6061         x_line_tbl(l_count).last_update_date    := l_rec.LAST_UPDATE_DATE;
6062         x_line_tbl(l_count).last_update_login   := l_rec.LAST_UPDATE_LOGIN;
6063         x_line_tbl(l_count).line_id := l_rec.line_id;
6064         x_line_tbl(l_count).line_number  := l_rec.line_number;
6065         x_line_tbl(l_count).payment_term_id     := l_rec.PAYMENT_TERM_ID;
6066         x_line_tbl(l_count).preferred_grade     := l_rec.PREFERRED_GRADE;  -- OPM
6067         x_line_tbl(l_count).price_list_id       := l_rec.PRICE_LIST_ID;
6068         x_line_tbl(l_count).program_application_id := l_rec.PROGRAM_APPLICATION_ID;
6069         x_line_tbl(l_count).program_id          := l_rec.PROGRAM_ID;
6070         x_line_tbl(l_count).program_update_date := l_rec.PROGRAM_UPDATE_DATE;
6071         x_line_tbl(l_count).request_id          := l_rec.REQUEST_ID;
6072          x_line_tbl(l_count).salesrep_id      := l_rec.SALESREP_ID;
6073          x_line_tbl(l_count).released_amount  := l_rec.released_amount;
6074         x_line_tbl(l_count).shipping_method_code := l_rec.SHIPPING_METHOD_CODE;
6075         x_line_tbl(l_count).ship_from_org_id    := l_rec.ship_from_org_id;
6076         x_line_tbl(l_count).ship_to_org_id      := l_rec.SHIP_TO_ORG_ID;
6077         x_line_tbl(l_count).shipping_instructions := l_rec.shipping_instructions;
6078         x_line_tbl(l_count).packing_instructions := l_rec.packing_instructions;
6079     x_line_tbl(l_count).start_Date_active :=   l_rec.START_DATE_ACTIVE;
6080     x_line_tbl(l_count).END_DATE_ACTIVE :=   l_rec.END_DATE_ACTIVE;
6081     x_line_tbl(l_count).MAX_RELEASE_AMOUNT :=
6082                l_rec.MAX_RELEASE_AMOUNT;
6083     x_line_tbl(l_count).MIN_RELEASE_AMOUNT :=
6084                  l_rec.MIN_RELEASE_AMOUNT;
6085 
6086     x_line_tbl(l_count).BLANKET_MAX_AMOUNT :=
6087           l_rec.Blanket_Line_Max_Amount;
6088     x_line_tbl(l_count).BLANKET_MIN_AMOUNT :=
6089                  l_rec.Blanket_Line_Min_Amount;
6090     x_line_tbl(l_count).Blanket_Max_Quantity :=
6091                        l_rec.Blanket_Max_Quantity;
6092     x_line_tbl(l_count).Blanket_Min_Quantity :=
6093                       l_rec.Blanket_Min_Quantity;
6094     x_line_tbl(l_count).OVERRIDE_BLANKET_CONTROLS_FLAG :=
6095           l_rec.OVERRIDE_BLANKET_CONTROLS_FLAG;
6096     x_line_tbl(l_count).OVERRIDE_RELEASE_CONTROLS_FLAG :=
6097           l_rec.OVERRIDE_RELEASE_CONTROLS_FLAG;
6098     x_line_tbl(l_count).ENFORCE_PRICE_LIST_FLAG :=
6099                       l_rec.ENFORCE_PRICE_LIST_FLAG;
6100     x_line_tbl(l_count).enforce_ship_to_flag :=
6101                       l_rec.enforce_ship_to_flag;
6102     x_line_tbl(l_count).enforce_invoice_to_flag :=
6103                       l_rec.enforce_invoice_to_flag;
6104     x_line_tbl(l_count).enforce_freight_term_flag :=
6105                       l_rec.enforce_freight_term_flag;
6106     x_line_tbl(l_count).enforce_shipping_method_flag :=
6107                       l_rec.enforce_shipping_method_flag;
6108     x_line_tbl(l_count).enforce_payment_term_flag :=
6109                       l_rec.enforce_payment_term_flag;
6110     x_line_tbl(l_count).enforce_accounting_rule_flag :=
6111                       l_rec.enforce_accounting_rule_flag;
6112     x_line_tbl(l_count).enforce_invoicing_rule_flag :=
6113                       l_rec.enforce_invoicing_rule_flag;
6114     x_line_tbl(l_count).ORDER_QUANTITY_UOM :=   l_rec.ORDER_QUANTITY_UOM;
6115     x_line_tbl(l_count).RELEASED_QUANTITY :=  l_rec.RELEASED_QUANTITY;
6116     x_line_tbl(l_count).FULFILLED_QUANTITY  :=  l_rec.FULFILLED_QUANTITY;
6117     x_line_tbl(l_count).RETURNED_QUANTITY :=  l_rec.RETURNED_QUANTITY;
6118     x_line_tbl(l_count).order_number :=  l_rec.order_number;
6119     x_line_tbl(l_count).fulfilled_amount :=  l_rec.fulfilled_amount;
6120     x_line_tbl(l_count).returned_amount := l_rec.returned_amount;
6121 -- hashraf ... start of pack J
6122     x_line_tbl(l_count).transaction_phase_code := l_rec.transaction_phase_code;
6123     x_line_tbl(l_count).source_document_version_number := l_rec.source_document_version_number;
6124 -- hashraf ... end of pack J
6125     x_line_tbl(l_count).qp_list_line_id :=  l_rec.qp_list_line_id;
6126     -- 11i10 Pricing Changes Start
6127     x_line_tbl(l_count).modifier_list_line_id :=  l_rec.modifier_list_line_id;
6128     IF x_line_tbl(l_count).modifier_list_line_id IS NOT NULL THEN
6129 
6130         --For bug 3553063.Catching No_Data_Found for the query
6131         BEGIN
6132            select decode(arithmetic_operator,'%',operand,null)
6133                 ,decode(arithmetic_operator,'AMT',operand,null)
6134            into x_line_tbl(l_count).discount_percent
6135                ,x_line_tbl(l_count).discount_amount
6136            from qp_list_lines
6137            where list_line_id = x_line_tbl(l_count).modifier_list_line_id;
6138         EXCEPTION
6139               WHEN NO_DATA_FOUND THEN
6140                  Null;
6141         END;
6142     END IF;
6143     -- 11i10 Pricing Changes End
6144 	   x_line_tbl(l_count).db_flag 		:= FND_API.G_TRUE;
6145 	   l_count := l_count + 1;
6146 
6147     END LOOP;
6148 
6149   ELSE
6150 
6151     --  Loop over fetched records
6152 
6153     l_count := 1;
6154 
6155     FOR l_rec IN l_line_hist_csr LOOP
6156 
6157         x_line_tbl(l_count).accounting_rule_id  := l_rec.ACCOUNTING_RULE_ID;
6158         x_line_tbl(l_count).agreement_id        := l_rec.AGREEMENT_ID;
6159         x_line_tbl(l_count).attribute1          := l_rec.ATTRIBUTE1;
6160         x_line_tbl(l_count).attribute10         := l_rec.ATTRIBUTE10;
6161         x_line_tbl(l_count).attribute11         := l_rec.ATTRIBUTE11;
6162         x_line_tbl(l_count).attribute12         := l_rec.ATTRIBUTE12;
6163         x_line_tbl(l_count).attribute13         := l_rec.ATTRIBUTE13;
6164         x_line_tbl(l_count).attribute14         := l_rec.ATTRIBUTE14;
6165         x_line_tbl(l_count).attribute15         := l_rec.ATTRIBUTE15;
6166         x_line_tbl(l_count).attribute16         := l_rec.ATTRIBUTE16;
6167         x_line_tbl(l_count).attribute17         := l_rec.ATTRIBUTE17;
6168         x_line_tbl(l_count).attribute18         := l_rec.ATTRIBUTE18;
6169         x_line_tbl(l_count).attribute19         := l_rec.ATTRIBUTE19;
6170         x_line_tbl(l_count).attribute20         := l_rec.ATTRIBUTE20;
6171         x_line_tbl(l_count).attribute2          := l_rec.ATTRIBUTE2;
6172         x_line_tbl(l_count).attribute3          := l_rec.ATTRIBUTE3;
6173         x_line_tbl(l_count).attribute4          := l_rec.ATTRIBUTE4;
6174         x_line_tbl(l_count).attribute5          := l_rec.ATTRIBUTE5;
6175         x_line_tbl(l_count).attribute6          := l_rec.ATTRIBUTE6;
6176         x_line_tbl(l_count).attribute7          := l_rec.ATTRIBUTE7;
6177         x_line_tbl(l_count).attribute8          := l_rec.ATTRIBUTE8;
6178         x_line_tbl(l_count).attribute9          := l_rec.ATTRIBUTE9;
6179         x_line_tbl(l_count).context             := l_rec.CONTEXT;
6180 
6181         x_line_tbl(l_count).created_by          := l_rec.CREATED_BY;
6182         x_line_tbl(l_count).creation_date       := l_rec.CREATION_DATE;
6183         x_line_tbl(l_count).cust_po_number      := l_rec.CUST_PO_NUMBER;
6184         x_line_tbl(l_count).deliver_to_org_id   := l_rec.DELIVER_TO_ORG_ID;
6185         x_line_tbl(l_count).freight_terms_code  := l_rec.FREIGHT_TERMS_CODE;
6186         x_line_tbl(l_count).header_id  := l_rec.header_id;
6187         x_line_tbl(l_count).min_release_quantity  := l_rec.min_release_quantity;
6188         x_line_tbl(l_count).max_release_quantity  := l_rec.max_release_quantity;
6189         x_line_tbl(l_count).inventory_item_id   := l_rec.INVENTORY_ITEM_ID;
6190         x_line_tbl(l_count).invoice_to_org_id   := l_rec.INVOICE_TO_ORG_ID;
6191         x_line_tbl(l_count).invoicing_rule_id   := l_rec.INVOICING_RULE_ID;
6192         x_line_tbl(l_count).ordered_item_id             := l_rec.ORDERED_ITEM_ID;
6193         x_line_tbl(l_count).item_identifier_type := l_rec.item_identifier_type;
6194         x_line_tbl(l_count).lock_control := NULL; --l_rec.lock_control;
6195 
6196         x_line_tbl(l_count).ordered_item          := l_rec.ORDERED_ITEM;
6197         x_line_tbl(l_count).item_type_code      := l_rec.ITEM_TYPE_CODE;
6198         x_line_tbl(l_count).last_updated_by     := l_rec.LAST_UPDATED_BY;
6199         x_line_tbl(l_count).last_update_date    := l_rec.LAST_UPDATE_DATE;
6200         x_line_tbl(l_count).last_update_login   := l_rec.LAST_UPDATE_LOGIN;
6201         x_line_tbl(l_count).line_id := l_rec.line_id;
6202         x_line_tbl(l_count).line_number  := l_rec.line_number;
6203         x_line_tbl(l_count).payment_term_id     := l_rec.PAYMENT_TERM_ID;
6204         x_line_tbl(l_count).preferred_grade     := l_rec.PREFERRED_GRADE;  -- OPM
6205         x_line_tbl(l_count).price_list_id       := l_rec.PRICE_LIST_ID;
6206         x_line_tbl(l_count).program_application_id := l_rec.PROGRAM_APPLICATION_ID;
6207         x_line_tbl(l_count).program_id          := l_rec.PROGRAM_ID;
6208         x_line_tbl(l_count).program_update_date := l_rec.PROGRAM_UPDATE_DATE;
6209         x_line_tbl(l_count).request_id          := l_rec.REQUEST_ID;
6210          x_line_tbl(l_count).salesrep_id      := l_rec.SALESREP_ID;
6211          x_line_tbl(l_count).released_amount  := l_rec.released_amount;
6212         x_line_tbl(l_count).shipping_method_code := l_rec.SHIPPING_METHOD_CODE;
6213         x_line_tbl(l_count).ship_from_org_id    := l_rec.ship_from_org_id;
6214         x_line_tbl(l_count).ship_to_org_id      := l_rec.SHIP_TO_ORG_ID;
6215         x_line_tbl(l_count).shipping_instructions := l_rec.shipping_instructions;
6216         x_line_tbl(l_count).packing_instructions := l_rec.packing_instructions;
6217     x_line_tbl(l_count).start_Date_active :=   l_rec.START_DATE_ACTIVE;
6218     x_line_tbl(l_count).END_DATE_ACTIVE :=   l_rec.END_DATE_ACTIVE;
6219     x_line_tbl(l_count).MAX_RELEASE_AMOUNT :=
6220                l_rec.MAX_RELEASE_AMOUNT;
6221     x_line_tbl(l_count).MIN_RELEASE_AMOUNT :=
6222                  l_rec.MIN_RELEASE_AMOUNT;
6223 
6224     x_line_tbl(l_count).BLANKET_MAX_AMOUNT :=
6225           l_rec.Blanket_Line_Max_Amount;
6226     x_line_tbl(l_count).BLANKET_MIN_AMOUNT :=
6227                  l_rec.Blanket_Line_Min_Amount;
6228     x_line_tbl(l_count).Blanket_Max_Quantity :=
6229                        l_rec.Blanket_Max_Quantity;
6230     x_line_tbl(l_count).Blanket_Min_Quantity :=
6231                       l_rec.Blanket_Min_Quantity;
6232     x_line_tbl(l_count).OVERRIDE_BLANKET_CONTROLS_FLAG :=
6233           l_rec.OVERRIDE_BLANKET_CONTROLS_FLAG;
6234     x_line_tbl(l_count).OVERRIDE_RELEASE_CONTROLS_FLAG :=
6235           l_rec.OVERRIDE_RELEASE_CONTROLS_FLAG;
6236     x_line_tbl(l_count).ENFORCE_PRICE_LIST_FLAG :=
6237                       l_rec.ENFORCE_PRICE_LIST_FLAG;
6238     x_line_tbl(l_count).enforce_ship_to_flag :=
6239                       l_rec.enforce_ship_to_flag;
6240     x_line_tbl(l_count).enforce_invoice_to_flag :=
6241                       l_rec.enforce_invoice_to_flag;
6242     x_line_tbl(l_count).enforce_freight_term_flag :=
6243                       l_rec.enforce_freight_term_flag;
6244     x_line_tbl(l_count).enforce_shipping_method_flag :=
6245                       l_rec.enforce_shipping_method_flag;
6246     x_line_tbl(l_count).enforce_payment_term_flag :=
6247                       l_rec.enforce_payment_term_flag;
6248     x_line_tbl(l_count).enforce_accounting_rule_flag :=
6249                       l_rec.enforce_accounting_rule_flag;
6250     x_line_tbl(l_count).enforce_invoicing_rule_flag :=
6251                       l_rec.enforce_invoicing_rule_flag;
6252     x_line_tbl(l_count).ORDER_QUANTITY_UOM :=   l_rec.ORDER_QUANTITY_UOM;
6253     x_line_tbl(l_count).RELEASED_QUANTITY :=  l_rec.RELEASED_QUANTITY;
6254     x_line_tbl(l_count).FULFILLED_QUANTITY  :=  l_rec.FULFILLED_QUANTITY;
6255     x_line_tbl(l_count).RETURNED_QUANTITY :=  l_rec.RETURNED_QUANTITY;
6256     x_line_tbl(l_count).order_number :=  l_rec.order_number;
6257     x_line_tbl(l_count).fulfilled_amount :=  l_rec.fulfilled_amount;
6258     x_line_tbl(l_count).returned_amount := l_rec.returned_amount;
6259 -- hashraf ... start of pack J
6260     x_line_tbl(l_count).transaction_phase_code := l_rec.transaction_phase_code;
6261     x_line_tbl(l_count).source_document_version_number := l_rec.source_document_version_number;
6262 -- hashraf ... end of pack J
6263     x_line_tbl(l_count).qp_list_line_id :=  l_rec.qp_list_line_id;
6264     -- 11i10 Pricing Changes Start
6265     x_line_tbl(l_count).modifier_list_line_id :=  l_rec.modifier_list_line_id;
6266     IF x_line_tbl(l_count).modifier_list_line_id IS NOT NULL THEN
6267 
6268        --For bug 3553063.Catching No_Data_Found for the query
6269        BEGIN
6270           select decode(arithmetic_operator,'%',operand,null)
6271                 ,decode(arithmetic_operator,'AMT',operand,null)
6272           into x_line_tbl(l_count).discount_percent
6273                ,x_line_tbl(l_count).discount_amount
6274           from qp_list_lines
6275           where list_line_id = x_line_tbl(l_count).modifier_list_line_id;
6276        EXCEPTION
6277               WHEN NO_DATA_FOUND THEN
6278                  Null;
6279        END;
6280     END IF;
6281     -- 11i10 Pricing Changes End
6282 	   x_line_tbl(l_count).db_flag 		:= FND_API.G_TRUE;
6283 	   l_count := l_count + 1;
6284 
6285     END LOOP;
6286 
6287   END IF;
6288 
6289     --  PK sent and no rows found
6290 
6291     IF
6292     p_line_id IS NOT NULL
6293     AND
6294     x_line_tbl.COUNT = 0
6295     THEN
6296         RAISE NO_DATA_FOUND;
6297     END IF;
6298 
6299 
6300     --  Return fetched table
6301    if l_debug_level > 0 then
6302     oe_debug_pub.add('Exiting OE_LINE_UTIL.QUERY_ROWS', 1);
6303    end if;
6304 
6305 EXCEPTION
6306 
6307     WHEN NO_DATA_FOUND THEN
6308 
6309     x_return_status := FND_API.G_RET_STS_ERROR;
6310 	   RAISE NO_DATA_FOUND;
6311 
6312     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6313 
6314     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6315         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6316 
6317     WHEN OTHERS THEN
6318 
6319     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6320         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6321         THEN
6322             OE_MSG_PUB.Add_Exc_Msg
6323             (   G_PKG_NAME
6324             ,   'Query_Lines'
6325             );
6326         END IF;
6327 
6328         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6329 END Query_Lines;
6330 
6331 PROCEDURE Query_blanket
6332 (p_header_id           IN NUMBER
6333 ,p_version_number      IN NUMBER := NULL
6334 ,p_phase_change_flag   IN VARCHAR2 := NULL
6335 ,p_x_header_rec        IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
6336 ,p_x_line_tbl          IN OUT NOCOPY OE_Blanket_PUB.line_tbl_type
6337 ,x_return_status       OUT NOCOPY VARCHAR2
6338 )IS
6339 l_return_status varchar2(1);
6340 l_version_number NUMBER := p_version_number;
6341 l_current_version_number NUMBER;
6342 --
6343 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6344 --
6345 BEGIN
6346 
6347    x_return_status := FND_API.G_RET_STS_SUCCESS;
6348 
6349    IF p_version_number IS NOT NULL THEN
6350     SELECT  /* MOAC_SQL_CHANGE */ version_number INTO l_current_version_number FROM OE_BLANKET_HEADERS_ALL WHERE header_id = p_header_id;
6351 
6352     IF l_version_number >= l_current_version_number THEN
6353       l_version_number := NULL;
6354     END IF;
6355    END IF;
6356 
6357    Query_Header(P_header_id => p_header_id ,
6358                 p_version_number => l_version_number,
6359                 p_phase_change_flag => p_phase_change_flag,
6360 		x_header_rec => p_x_header_rec,
6361                 x_return_status => l_return_status);
6362    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6363       x_return_status := l_return_status;
6364    END IF;
6365    p_x_line_tbl.delete; --Bug# 15846967
6366    Query_Lines(P_header_id => p_header_id ,
6367                p_version_number => l_version_number,
6368                p_phase_change_flag => p_phase_change_flag,
6369 	       x_line_tbl => p_x_line_tbl ,
6370                x_return_status => l_return_status);
6371    IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
6372       x_return_status := l_return_status;
6373    END IF;
6374 
6375 EXCEPTION
6376    WHEN OTHERS THEN
6377         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6378         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6379         THEN
6380             OE_MSG_PUB.Add_Exc_Msg
6381             (   G_PKG_NAME
6382             ,   'Query_Blanket'
6383             );
6384         END IF;
6385         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6386 END Query_Blanket;
6387 
6388 FUNCTION Query_Row
6389 (   p_line_id                       NUMBER
6390    ,p_version_number                NUMBER := NULL
6391    ,p_phase_change_flag             VARCHAR2 := NULL
6392 ) RETURN OE_Blanket_PUB.Line_Rec_Type
6393 IS
6394 l_return_status varchar2(1);
6395 l_line_tbl               OE_Blanket_PUB.Line_Tbl_Type;
6396 --
6397 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6398 --
6399 BEGIN
6400 
6401     Query_Lines
6402         (   p_line_id                     => p_line_id
6403            ,   p_version_number             => p_version_number
6404            ,   p_phase_change_flag          => p_phase_change_flag
6405            ,   x_line_tbl                    => l_line_tbl
6406            ,   x_return_status              => l_return_status
6407         );
6408 
6409     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
6410       RETURN l_line_tbl(1);
6411     END IF;
6412 END Query_Row;
6413 
6414 --Currently lock row will lock blanket values by blanket only
6415 PROCEDURE Lock_Row
6416 (   x_return_status             OUT NOCOPY VARCHAR2
6417 ,   p_blanket_id                IN NUMBER
6418 ,   p_blanket_line_id           IN NUMBER
6419 ,   p_x_lock_control            IN OUT NOCOPY NUMBER
6420 ,   x_msg_count                 OUT NOCOPY NUMBER
6421 ,   x_msg_data                  OUT NOCOPY VARCHAR2
6422 )
6423 IS
6424 l_return_status               VARCHAR2(1);
6425 --
6426 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6427 --
6428 BEGIN
6429 
6430    if l_debug_level > 0 then
6431     oe_debug_pub.add('Entering OE_BLANKET_UTIL.LOCK_ROW', 1);
6432    end if;
6433 
6434     OE_MSG_PUB.initialize;
6435 
6436     Lock_Blanket
6437     (   x_return_status      => l_return_status
6438     ,   p_blanket_id         => p_blanket_id
6439     ,   p_blanket_line_id    => p_blanket_line_id
6440     ,   p_x_lock_control     => p_x_lock_control
6441     );
6442 
6443     --  Set return status.
6444 
6445     x_return_status := l_return_status;
6446     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6447         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6448     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
6449         RAISE FND_API.G_EXC_ERROR;
6450     END IF;
6451 
6452     --  Get message count and data
6453 
6454     OE_MSG_PUB.Count_And_Get
6455     (   p_count                       => x_msg_count
6456     ,   p_data                        => x_msg_data
6457     );
6458 
6459    if l_debug_level > 0 then
6460     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.LOCK_ROW', 1);
6461    end if;
6462 
6463 EXCEPTION
6464      WHEN FND_API.G_EXC_ERROR THEN
6465 
6466            OE_GLOBALS.G_UI_FLAG := FALSE;
6467 
6468         x_return_status := FND_API.G_RET_STS_ERROR;
6469 
6470         --  Get message count and data
6471 
6472         oe_msg_pub.count_and_get
6473         (   p_count                       => x_msg_count
6474         ,   p_data                        => x_msg_data
6475         );
6476 
6477     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6478 
6479            OE_GLOBALS.G_UI_FLAG := FALSE;
6480 
6481         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6482 
6483         --  Get message count and data
6484 
6485         oe_msg_pub.count_and_get
6486         (   p_count                       => x_msg_count
6487         ,   p_data                        => x_msg_data
6488          );
6489     WHEN OTHERS THEN
6490 
6491         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6492         THEN
6493             OE_MSG_PUB.Add_Exc_Msg
6494             (   G_PKG_NAME
6495             ,   'Lock_Row'
6496             );
6497         END IF;
6498 
6499         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6500 
6501         --  Get message count and data
6502 
6503         OE_MSG_PUB.Count_And_Get
6504         (   p_count                       => x_msg_count
6505         ,   p_data                        => x_msg_data
6506         );
6507 
6508 END Lock_Row;
6509 
6510 
6511 
6512 --Currently lock blanket will lock blanket values by blanket only
6513 PROCEDURE Lock_Blanket
6514 (   x_return_status             OUT NOCOPY VARCHAR2
6515 ,   p_blanket_id                IN NUMBER
6516 ,   p_blanket_line_id           IN NUMBER
6517 ,   p_x_lock_control            IN OUT NOCOPY NUMBER
6518 )
6519 IS
6520      l_blanket_id		      NUMBER;
6521      l_blanket_line_id                NUMBER;
6522      l_is_line_lock_control           BOOLEAN;
6523      l_lock_control                   NUMBER;
6524      l_db_lock_control                NUMBER;
6525      l_temp_lock_control              NUMBER;
6526 
6527 CURSOR c_blanket_header IS
6528   SELECT  /* MOAC_SQL_CHANGE */ bh.lock_control
6529     FROM OE_BLANKET_HEADERS_ALL BH, OE_BLANKET_HEADERS_EXT BHX
6530    WHERE BH.ORDER_NUMBER = BHX.ORDER_NUMBER
6531      AND BH.ORDER_NUMBER = p_blanket_id
6532      AND ORG_ID = MO_GLOBAL.get_current_org_id
6533      AND BH.SALES_DOCUMENT_TYPE_CODE = 'B'
6534      FOR UPDATE NOWAIT;
6535 
6536 CURSOR c_blanket_lines IS
6537   SELECT   /* MOAC_SQL_CHANGE */ bl.line_id, bl.lock_control
6538     FROM OE_BLANKET_LINES_ALL BL, OE_BLANKET_LINES_EXT BLX
6539    WHERE BL.LINE_ID = BLX.LINE_ID
6540      AND BLX.ORDER_NUMBER = l_blanket_id
6541      AND BL.ORG_ID = MO_GLOBAL.GET_CURRENT_ORG_ID
6542      AND BL.SALES_DOCUMENT_TYPE_CODE = 'B'
6543      FOR UPDATE NOWAIT;
6544 
6545 --
6546 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6547 --
6548 BEGIN
6549 
6550 
6551    if l_debug_level > 0 then
6552     oe_debug_pub.add('Entering OE_BLANKET_UTIL.LOCK_BLANKET', 1);
6553    end if;
6554 
6555     OE_MSG_PUB.initialize;
6556 
6557     SAVEPOINT Lock_Blanket;
6558 
6559     -- Retrieve the primary key.
6560     IF 	p_blanket_id <> FND_API.G_MISS_NUM THEN
6561 		l_blanket_id := p_blanket_id;
6562                 l_is_line_lock_control := FALSE;
6563     ELSE
6564         SELECT ORDER_NUMBER
6565         INTO   l_blanket_id
6566         FROM   OE_BLANKET_LINES_EXT
6567         WHERE  LINE_ID = p_blanket_line_id;
6568 
6569         l_is_line_lock_control := TRUE;
6570     END IF;
6571 
6572         l_lock_control := p_x_lock_control;
6573 
6574     -- Lock blanket header
6575     OPEN c_blanket_header;
6576     FETCH c_blanket_header INTO l_temp_lock_control;
6577     CLOSE c_blanket_header;
6578 
6579     IF l_is_line_lock_control = FALSE THEN
6580        l_db_lock_control := l_temp_lock_control;
6581     END IF;
6582 
6583     -- Lock blanket lines
6584     OPEN c_blanket_lines;
6585     LOOP
6586     FETCH c_blanket_lines INTO l_blanket_line_id, l_temp_lock_control;
6587 
6588     IF l_is_line_lock_control AND
6589        p_blanket_line_id = l_blanket_line_id THEN
6590        l_db_lock_control := l_temp_lock_control;
6591     END IF;
6592     EXIT WHEN (C_BLANKET_LINES%NOTFOUND);
6593     END LOOP;
6594     CLOSE c_blanket_lines;
6595 
6596 --    p_x_lock_control := l_db_lock_control;
6597 
6598    if l_debug_level > 0 then
6599     oe_debug_pub.add('p_x_lock_control'||p_x_lock_control, 3);
6600 --    oe_debug_pub.add('is line lock control'||l_is_line_lock_control, 3);
6601     oe_debug_pub.add('l_db_lock_control'||l_db_lock_control, 3);
6602    end if;
6603 
6604    if l_debug_level > 0 then
6605     oe_debug_pub.add('selected for update, now compare', 3);
6606    end if;
6607 
6608 
6609     -- If lock_control is not passed(is null or missing), then return the locked record.
6610 
6611     IF l_lock_control is null OR
6612        l_lock_control = FND_API.G_MISS_NUM
6613     THEN
6614 
6615         --  Set out NOCOPY /* file.sql.39 change */ parameter, out NOCOPY /* file.sql.39 change */ rec is already set by query row.
6616 
6617         --  Set return status
6618         x_return_status                := FND_API.G_RET_STS_SUCCESS;
6619 
6620 	RETURN;
6621 
6622     END IF;
6623 
6624     --  Row locked. If the whole record is passed, then
6625     --  Compare the value of lock_control column to DB value.
6626 
6627 -- following constants are used to debug lock_order,
6628 -- please do not use them for any other purpose.
6629 -- set G_LOCK_TEST := 'Y', for debugging.
6630 
6631 --    OE_GLOBALS.G_LOCK_CONST  := 0;
6632     --OE_GLOBALS.G_LOCK_TEST := 'Y';
6633 --    OE_GLOBALS.G_LOCK_TEST   := 'N';
6634 
6635     IF OE_GLOBALS.Equal(p_x_lock_control,
6636                         l_db_lock_control)
6637       THEN
6638 
6639    if l_debug_level > 0 then
6640         oe_debug_pub.add('done comparison, success', 1);
6641    end if;
6642         --  Row has not changed. Set out NOCOPY /* file.sql.39 change */ parameter.
6643 
6644         --  Set return status
6645 
6646         x_return_status                  := FND_API.G_RET_STS_SUCCESS;
6647 
6648     ELSE
6649 
6650    if l_debug_level > 0 then
6651         oe_debug_pub.add('row changed by other user', 1);
6652    end if;
6653 
6654         --  Row has changed by another user.
6655 
6656         x_return_status                  := FND_API.G_RET_STS_ERROR;
6657 
6658 	    -- Release the lock
6659 
6660             fnd_message.set_name('ONT','OE_LOCK_ROW_CHANGED');
6661             OE_MSG_PUB.Add;
6662 
6663     END IF;
6664 
6665    if l_debug_level > 0 then
6666     oe_debug_pub.add('Exiting OE_BLANKET_UTIL.LOCK_BLANKET', 1);
6667    end if;
6668 
6669     OE_GLOBALS.G_LOCK_TEST := 'N';
6670 
6671 
6672 EXCEPTION
6673 
6674     WHEN NO_DATA_FOUND THEN
6675 
6676         x_return_status                := FND_API.G_RET_STS_ERROR;
6677 
6678    if l_debug_level > 0 then
6679         oe_debug_pub.add('no data found in blanket lock_blanket', 1);
6680    end if;
6681 
6682             fnd_message.set_name('ONT','OE_LOCK_ROW_DELETED');
6683             OE_MSG_PUB.Add;
6684 
6685         OE_GLOBALS.G_LOCK_TEST := 'N';
6686 
6687     WHEN APP_EXCEPTIONS.RECORD_LOCK_EXCEPTION THEN
6688 
6689         x_return_status                := FND_API.G_RET_STS_ERROR;
6690 
6691    if l_debug_level > 0 then
6692         oe_debug_pub.add('record_lock in blanket lock_blanket', 1);
6693    end if;
6694 
6695             fnd_message.set_name('ONT','OE_LOCK_ROW_ALREADY_LOCKED');
6696             OE_MSG_PUB.Add;
6697 
6698         OE_GLOBALS.G_LOCK_TEST := 'N';
6699 
6700     WHEN OTHERS THEN
6701 
6702    if l_debug_level > 0 then
6703         oe_debug_pub.add('others in blanket lock_blanket', 1);
6704    end if;
6705         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
6706 
6707             OE_MSG_PUB.Add_Exc_Msg
6708             (   G_PKG_NAME
6709             ,   'Lock_Blanket'
6710             );
6711         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6712         OE_GLOBALS.G_LOCK_TEST := 'N';
6713 
6714 END Lock_Blanket;
6715 
6716 
6717 PROCEDURE Default_Attributes
6718 (p_x_header_rec        IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type
6719 ,x_return_status       OUT NOCOPY VARCHAR2
6720 ) IS
6721 --
6722 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6723 --
6724 
6725 CURSOR c_contract_template_exist (cp_trans_type_id NUMBER) IS
6726        SELECT contract_template_id
6727        FROM   oe_transaction_types_all
6728        WHERE  transaction_type_id = cp_trans_type_id;
6729 
6730    l_order_type_id                 NUMBER := NULL;
6731    l_deflt_contract_template_id    NUMBER := NULL;
6732 
6733 BEGIN
6734      x_return_status                := FND_API.G_RET_STS_SUCCESS;
6735 
6736      if l_debug_level > 0 then
6737         oe_debug_pub.add('Enter Default_Attributes - Header');
6738         oe_debug_pub.add('operation is : '||p_x_header_rec.operation);
6739      end if;
6740 
6741      -- Default Blanket Header ID
6742      IF p_x_header_rec.header_id IS NULL THEN
6743         SELECT  OE_ORDER_HEADERS_S.NEXTVAL
6744         INTO    p_x_header_rec.header_id
6745         FROM    DUAL;
6746      END IF;
6747 
6748      -- Default Start Date Active
6749      IF p_x_header_rec.start_Date_active IS NULL THEN
6750         p_x_header_rec.start_Date_active := trunc(sysdate);
6751      END IF;
6752 
6753      -- Default Who Columns
6754      IF p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
6755         p_x_header_rec.creation_Date := sysdate;
6756         p_x_header_rec.created_by := FND_GLOBAL.USER_ID;
6757      END IF;
6758 
6759      p_x_header_rec.last_update_date := sysdate;
6760      p_x_header_rec.last_updated_by := FND_GLOBAL.USER_ID;
6761 
6762      -- Default Currency Code
6763      IF p_x_header_rec.transactional_curr_code IS NULL THEN
6764      BEGIN
6765           SELECT CURRENCY_CODE
6766           INTO    p_x_header_rec.transactional_curr_code
6767           FROM    OE_GL_SETS_OF_BOOKS_V
6768           WHERE SET_OF_BOOKS_ID = OE_Sys_Parameters.VALUE('SET_OF_BOOKS_ID');
6769      EXCEPTION
6770           WHEN OTHERS THEN
6771               NULL;
6772      END;
6773      END IF;
6774 
6775      -- Default Flags
6776      IF p_x_header_rec.on_hold_flag IS NULL OR
6777         p_x_header_rec.on_hold_flag NOT IN ('Y','N') THEN
6778         p_x_header_rec.on_hold_flag := 'N';
6779      END IF;
6780      IF p_x_header_rec.enforce_price_list_flag IS NULL OR
6781         p_x_header_rec.enforce_price_list_flag NOT IN ('Y','N') THEN
6782         p_x_header_rec.enforce_price_list_flag := 'N';
6783      END IF;
6784      IF p_x_header_rec.enforce_ship_to_flag IS NULL OR
6785         p_x_header_rec.enforce_ship_to_flag NOT IN ('Y','N') THEN
6786         p_x_header_rec.enforce_ship_to_flag := 'N';
6787      END IF;
6788      IF p_x_header_rec.enforce_invoice_to_flag IS NULL OR
6789         p_x_header_rec.enforce_invoice_to_flag NOT IN ('Y','N') THEN
6790         p_x_header_rec.enforce_invoice_to_flag := 'N';
6791      END IF;
6792      IF p_x_header_rec.enforce_freight_term_flag IS NULL OR
6793         p_x_header_rec.enforce_freight_term_flag NOT IN ('Y','N') THEN
6794         p_x_header_rec.enforce_freight_term_flag := 'N';
6795      END IF;
6796      IF p_x_header_rec.enforce_shipping_method_flag IS NULL OR
6797         p_x_header_rec.enforce_shipping_method_flag NOT IN ('Y','N') THEN
6798         p_x_header_rec.enforce_shipping_method_flag := 'N';
6799      END IF;
6800      IF p_x_header_rec.enforce_payment_term_flag IS NULL OR
6801         p_x_header_rec.enforce_payment_term_flag NOT IN ('Y','N') THEN
6802         p_x_header_rec.enforce_payment_term_flag := 'N';
6803      END IF;
6804      IF p_x_header_rec.enforce_accounting_rule_flag IS NULL OR
6805         p_x_header_rec.enforce_accounting_rule_flag NOT IN ('Y','N') THEN
6806         p_x_header_rec.enforce_accounting_rule_flag := 'N';
6807      END IF;
6808      IF p_x_header_rec.enforce_invoicing_rule_flag IS NULL OR
6809         p_x_header_rec.enforce_invoicing_rule_flag NOT IN ('Y','N') THEN
6810         p_x_header_rec.enforce_invoicing_rule_flag := 'N';
6811      END IF;
6812 
6813      IF p_x_header_rec.override_amount_flag IS NULL OR
6814         p_x_header_rec.override_amount_flag NOT IN ('Y','N') THEN
6815         p_x_header_rec.override_amount_flag := 'N';
6816      END IF;
6817 
6818      IF p_x_header_rec.order_type_id IS NULL THEN
6819         p_x_header_rec.order_type_id := FND_PROFILE.VALUE('OE_DEFAULT_BLANKET_ORDER_TYPE');
6820      END IF;
6821 
6822      IF p_x_header_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
6823         -- Revision Number
6824         p_x_header_rec.version_number := 0.0;
6825         -- Operating unit
6826         -- <R12.MOAC> START
6827         --p_x_header_rec.org_id := to_number(FND_PROFILE.VALUE('ORG_ID'));
6828         -- <R12.MOAC> END
6829 
6830         -- Default of Transaction Phase.
6831         IF oe_code_control.get_code_release_level >= '110510' THEN
6832 
6833            IF p_x_header_rec.transaction_phase_code IS NULL THEN
6834               p_x_header_rec.transaction_phase_code :=
6835                       fnd_profile.value('ONT_DEF_BSA_TRANSACTION_PHASE');
6836               IF p_x_header_rec.transaction_phase_code IS NULL  AND
6837                  p_x_header_rec.order_type_id IS NOT NULL THEN
6838                  -- Get The Transaciton Phase from the Order Type if any.
6839                  Begin
6840                     Select  /* MOAC_SQL_CHANGE */ DEF_TRANSACTION_PHASE_CODE
6841                     INTO   p_x_header_rec.transaction_phase_code
6842                     from  oe_transaction_types_all
6843                     where TRANSACTION_TYPE_ID = p_x_header_rec.order_type_id;
6844                  Exception
6845                     when no_data_found then
6846                        null;
6847                     when OTHERS then
6848                        null;
6849                  End;
6850               END IF;
6851            END IF; -- End of Default Transaction Phase
6852 
6853            p_x_header_rec.draft_submitted_flag := 'N';
6854 
6855         END IF;  -- End of Code Level Check
6856 
6857 
6858         --ABH
6859         --default the contract template id
6860          IF OE_CODE_CONTROL.Get_Code_Release_Level >= '110510' THEN
6861             NULL;
6862             -- << place logic here  >>
6863             -- << p_x_header_rec.contract_template_id := <defaulted contract_template_id >        >>
6864             l_order_type_id := p_x_header_rec.order_type_id;
6865 
6866             IF c_contract_template_exist%ISOPEN THEN
6867                CLOSE c_contract_template_exist;
6868             END IF;
6869             OPEN c_contract_template_exist (l_order_type_id);
6870             FETCH c_contract_template_exist INTO l_deflt_contract_template_id;
6871             CLOSE c_contract_template_exist;
6872 
6873             p_x_header_rec.contract_template_id := l_deflt_contract_template_id;
6874 
6875 
6876          END IF;
6877         --ABH
6878 
6879      END IF; -- End if operation = CREATE
6880 
6881 EXCEPTION
6882      WHEN OTHERS THEN
6883      x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
6884         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6885         THEN
6886             OE_MSG_PUB.Add_Exc_Msg
6887             (   G_PKG_NAME
6888             ,   'Default_Attributes - Header'
6889             );
6890         END IF;
6891         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6892 END Default_Attributes;
6893 
6894 PROCEDURE Default_Attributes
6895 (p_x_line_rec               IN OUT NOCOPY OE_Blanket_PUB.line_rec_type
6896 ,p_default_from_header      IN BOOLEAN
6897 ,x_return_status            OUT NOCOPY VARCHAR2
6898 ) IS
6899 l_return_status varchar2(1);
6900 --
6901 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
6902 --
6903 BEGIN
6904      x_return_status                := FND_API.G_RET_STS_SUCCESS;
6905 
6906      -- Load Header
6907      Load_Header(p_header_id => p_x_line_rec.header_id
6908                  ,x_return_status => l_return_status);
6909      IF l_return_status = FND_API.G_RET_STS_ERROR THEN
6910         RAISE FND_API.G_EXC_ERROR;
6911      ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
6912         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6913      END IF;
6914 
6915      -- Get Blanket Line
6916      IF p_x_line_rec.line_id IS NULL THEN
6917        SELECT  OE_ORDER_LINES_S.NEXTVAL
6918        INTO    p_x_line_rec.line_id
6919        FROM    DUAL;
6920      END IF;
6921 
6922      -- Get Blanket Line Number
6923      IF p_x_line_rec.line_number IS NULL THEN
6924           SELECT  NVL(MAX(line_number)+1,1)
6925           INTO    p_x_line_rec.line_number
6926           FROM    OE_BLANKET_LINES
6927           WHERE   header_id = p_x_line_rec.header_id;
6928      END IF;
6929 
6930      -- Constant Defaults
6931      IF p_x_line_rec.override_blanket_controls_flag IS NULL OR
6932         p_x_line_rec.override_blanket_controls_flag NOT IN ('Y','N') THEN
6933         p_x_line_rec.override_blanket_controls_flag := 'N';
6934      END IF;
6935 
6936      IF p_x_line_rec.override_release_controls_flag IS NULL OR
6937         p_x_line_rec.override_release_controls_flag NOT IN ('Y','N') THEN
6938         p_x_line_rec.override_release_controls_flag := 'N';
6939      END IF;
6940 
6941      IF p_x_line_rec.item_identifier_type is  NULL THEN
6942         p_x_line_rec.item_identifier_type := 'INT';
6943      END IF;
6944 
6945      IF p_x_line_rec.order_quantity_uom is NULL AND
6946         p_x_line_rec.item_identifier_type NOT IN ('ALL', 'CAT') THEN
6947           BEGIN
6948             SELECT PRIMARY_UOM_CODE
6949             INTO   p_x_line_rec.order_quantity_uom
6950             FROM   MTL_SYSTEM_ITEMS_B
6951             WHERE  INVENTORY_ITEM_ID = p_x_line_rec.inventory_item_id
6952             AND    ORGANIZATION_ID = g_header_rec.org_id;
6953           EXCEPTION
6954             WHEN NO_DATA_FOUND THEN
6955              if l_debug_level > 0 then
6956               oe_debug_pub.add('no inventory item exists for this organization');
6957              end if;
6958           END;
6959      END IF;
6960 
6961      IF p_x_line_rec.pricing_uom is NULL AND
6962         p_x_line_rec.order_quantity_uom is NOT NULL THEN
6963         p_x_line_rec.pricing_uom := p_x_line_rec.order_quantity_uom;
6964      END IF;
6965 
6966      IF p_x_line_rec.item_identifier_type = 'ALL' THEN
6967         p_x_line_rec.inventory_item_id := NULL;
6968      END IF;
6969 
6970      --Always default order_number
6971      IF p_x_line_rec.order_number IS NULL THEN
6972         p_x_line_rec.order_number:= g_header_rec.order_number;
6973      END IF;
6974 
6975   IF p_default_from_header THEN
6976 
6977      -- Default from header
6978      IF p_x_line_rec.cust_po_number IS NULL THEN
6979         p_x_line_rec.cust_po_number := g_header_rec.cust_po_number;
6980      END IF;
6981      IF p_x_line_rec.price_list_id IS NULL THEN
6982         p_x_line_rec.price_list_id := g_header_rec.price_list_id;
6983      END IF;
6984 
6985      IF p_x_line_rec.enforce_price_list_flag IS NULL OR
6986         p_x_line_rec.enforce_price_list_flag NOT IN ('Y','N') THEN
6987         p_x_line_rec.enforce_price_list_flag :=
6988                             g_header_rec.enforce_price_list_flag;
6989      END IF;
6990      IF p_x_line_rec.enforce_ship_to_flag IS NULL OR
6991         p_x_line_rec.enforce_ship_to_flag NOT IN ('Y','N') THEN
6992         p_x_line_rec.enforce_ship_to_flag :=
6993                             g_header_rec.enforce_ship_to_flag;
6994      END IF;
6995      IF p_x_line_rec.enforce_invoice_to_flag IS NULL OR
6996         p_x_line_rec.enforce_invoice_to_flag NOT IN ('Y','N') THEN
6997         p_x_line_rec.enforce_invoice_to_flag :=
6998                             g_header_rec.enforce_invoice_to_flag;
6999      END IF;
7000      IF p_x_line_rec.enforce_freight_term_flag IS NULL OR
7001         p_x_line_rec.enforce_freight_term_flag NOT IN ('Y','N') THEN
7002         p_x_line_rec.enforce_freight_term_flag :=
7003                             g_header_rec.enforce_freight_term_flag;
7004      END IF;
7005      IF p_x_line_rec.enforce_shipping_method_flag IS NULL OR
7006         p_x_line_rec.enforce_shipping_method_flag NOT IN ('Y','N') THEN
7007         p_x_line_rec.enforce_shipping_method_flag :=
7008                             g_header_rec.enforce_shipping_method_flag;
7009      END IF;
7010      IF p_x_line_rec.enforce_payment_term_flag IS NULL OR
7011         p_x_line_rec.enforce_payment_term_flag NOT IN ('Y','N') THEN
7012         p_x_line_rec.enforce_payment_term_flag :=
7013                             g_header_rec.enforce_payment_term_flag;
7014      END IF;
7015      IF p_x_line_rec.enforce_accounting_rule_flag IS NULL OR
7016         p_x_line_rec.enforce_accounting_rule_flag NOT IN ('Y','N') THEN
7017         p_x_line_rec.enforce_accounting_rule_flag :=
7018                             g_header_rec.enforce_accounting_rule_flag;
7019      END IF;
7020      IF p_x_line_rec.enforce_invoicing_rule_flag IS NULL OR
7021         p_x_line_rec.enforce_invoicing_rule_flag NOT IN ('Y','N') THEN
7022         p_x_line_rec.enforce_invoicing_rule_flag :=
7023                             g_header_rec.enforce_invoicing_rule_flag;
7024      END IF;
7025      IF p_x_line_rec.ship_from_org_id IS NULL THEN
7026         p_x_line_rec.ship_from_org_id := g_header_rec.ship_from_org_id;
7027      END IF;
7028      --sold to org is defaulted for org validations (ship to, deliver to, bill to)
7029      IF p_x_line_rec.sold_to_org_id IS NULL THEN
7030         p_x_line_rec.sold_to_org_id := g_header_rec.sold_to_org_id;
7031      END IF;
7032      IF p_x_line_rec.ship_to_org_id IS NULL THEN
7033         p_x_line_rec.ship_to_org_id := g_header_rec.ship_to_org_id;
7034      END IF;
7035      IF p_x_line_rec.invoice_to_org_id IS NULL THEN
7036         p_x_line_rec.invoice_to_org_id := g_header_rec.invoice_to_org_id;
7037      END IF;
7038      IF p_x_line_rec.deliver_to_org_id IS NULL THEN
7039         p_x_line_rec.deliver_to_org_id := g_header_rec.deliver_to_org_id;
7040      END IF;
7041      IF p_x_line_rec.payment_term_id IS NULL THEN
7042         p_x_line_rec.payment_term_id := g_header_rec.payment_term_id;
7043      END IF;
7044      IF p_x_line_rec.invoicing_rule_id IS NULL THEN
7045         p_x_line_rec.invoicing_rule_id := g_header_rec.invoicing_rule_id;
7046      END IF;
7047      IF p_x_line_rec.shipping_method_code IS NULL THEN
7048         p_x_line_rec.shipping_method_code := g_header_rec.shipping_method_code;
7049      END IF;
7050      IF p_x_line_rec.accounting_rule_id IS NULL THEN
7051         p_x_line_rec.accounting_rule_id := g_header_rec.accounting_rule_id;
7052      END IF;
7053      IF p_x_line_rec.shipping_instructions IS NULL THEN
7054         p_x_line_rec.shipping_instructions :=
7055                      g_header_rec.shipping_instructions;
7056      END IF;
7057      IF p_x_line_rec.packing_instructions IS NULL THEN
7058         p_x_line_rec.packing_instructions := g_header_rec.packing_instructions;
7059      END IF;
7060      IF p_x_line_rec.freight_terms_code IS NULL THEN
7061         p_x_line_rec.freight_terms_code := g_header_rec.freight_terms_code;
7062      END IF;
7063      IF p_x_line_rec.salesrep_id IS NULL THEN
7064         p_x_line_rec.salesrep_id := g_header_rec.salesrep_id;
7065      END IF;
7066      IF p_x_line_rec.start_date_active IS NULL THEN
7067         p_x_line_rec.start_date_active := g_header_rec.start_date_active;
7068      END IF;
7069      IF p_x_line_rec.end_date_active IS NULL THEN
7070         p_x_line_rec.end_date_active := g_header_rec.end_date_active;
7071      END IF;
7072      -- Start of Transaction Phase changes for 11i10.
7073      IF p_x_line_rec.Transaction_Phase_code IS NULL THEN
7074         p_x_line_rec.Transaction_Phase_code := g_header_rec.Transaction_Phase_code;
7075      END IF;
7076      -- End of Transaction Phase changes.
7077      -- 11i10 Pricing Changes Start
7078      IF p_x_line_rec.discount_percent IS NULL THEN
7079         p_x_line_rec.discount_percent := g_header_rec.default_discount_percent;
7080      END IF;
7081      IF p_x_line_rec.discount_amount IS NULL THEN
7082         p_x_line_rec.discount_amount := g_header_rec.default_discount_amount;
7083      END IF;
7084      -- 11i10 Pricing Changes End
7085    END IF; --if default from header
7086 
7087      -- WHO columns
7088      IF p_x_line_rec.operation = OE_GLOBALS.G_OPR_CREATE THEN
7089         p_x_line_rec.creation_Date := sysdate;
7090         p_x_line_rec.created_by := FND_GLOBAL.USER_ID;
7091      END IF;
7092      p_x_line_rec.last_update_date := sysdate;
7093      p_x_line_rec.last_updated_by := FND_GLOBAL.USER_ID;
7094 
7095 EXCEPTION
7096      WHEN FND_API.G_EXC_ERROR THEN
7097         x_return_status := FND_API.G_RET_STS_ERROR;
7098      WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7099         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7100      WHEN OTHERS THEN
7101         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
7102         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7103         THEN
7104             OE_MSG_PUB.Add_Exc_Msg
7105             (   G_PKG_NAME
7106             ,   'Default_Attributes - Line'
7107             );
7108         END IF;
7109         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7110 END Default_Attributes;
7111 
7112 PROCEDURE Load_Header(p_header_id IN NUMBER
7113 , x_return_status OUT NOCOPY VARCHAR2)
7114 IS
7115 l_return_status varchar2(1);
7116 --
7117 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7118 --
7119 BEGIN
7120 	IF g_header_rec.header_id is NULL
7121            OR g_header_rec.header_id <> p_header_id
7122         THEN
7123 		Query_Header(p_header_id => p_header_id,
7124 			     x_header_rec => g_header_rec,
7125                              x_return_status => l_return_status);
7126               IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7127                  x_return_status := l_return_status;
7128               END IF;
7129 
7130         END IF;
7131 EXCEPTION
7132      WHEN OTHERS THEN
7133         x_return_status                := FND_API.G_RET_STS_UNEXP_ERROR;
7134 
7135         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7136         THEN
7137             OE_MSG_PUB.Add_Exc_Msg
7138             (   G_PKG_NAME
7139             ,   'Load Header'
7140             );
7141         END IF;
7142         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7143 END Load_Header;
7144 
7145 PROCEDURE GET_ORDER_NUMBER(
7146           p_x_header_rec     IN OUT NOCOPY OE_Blanket_PUB.Header_rec_type,
7147 	  x_return_status    OUT NOCOPY varchar2)
7148 IS
7149 
7150 	l_order_number    		VARCHAR2(30):= NULL;
7151 	x_doc_sequence_value     	NUMBER;
7152 	x_doc_category_code      	VARCHAR(30);
7153 	X_doc_sequence_id       	NUMBER;
7154 	X_db_sequence_name      	VARCHAR2(50);
7155 	x_doc_sequence_type 		CHAR(1);
7156 	X_doc_sequence_name 		VARCHAR2(240);
7157 	X_Prd_Tbl_Name			VARCHAR2(240) ;
7158 	X_Aud_Tbl_Name 			VARCHAR2(240);
7159 	X_Msg_Flag 			VARCHAR2(240);
7160 	X_set_Of_Books_id       	NUMBER;
7161 	seqassid                	INTEGER;
7162 	l_ord_num_src_id    		NUMBER	:= NULL;
7163 	l_order_number_csr  		INTEGER;
7164 	l_result	  		INTEGER;
7165 	l_select_stmt	   	 	VARCHAR2(240);
7166 	l_column_name	    		VARCHAR2(80);
7167 	t 		   		VARCHAR2(240);
7168 	l_return_status	    		VARCHAR2(30);
7169 	X_trx_date         		DATE;
7170 	lcount 				NUMBER;
7171 	x_result 			NUMBER;
7172 
7173 --
7174 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7175 --
7176 BEGIN
7177    if l_debug_level > 0 then
7178 	oe_debug_pub.add('Entering OR_BLANKET_UTIL.Get_Order_Number',1);
7179    end if;
7180 
7181 	--x_header_rec := p_header_rec;
7182 	 x_return_status     := FND_API.G_RET_STS_SUCCESS;
7183 
7184 	x_Set_Of_Books_Id := OE_Sys_Parameters.VALUE('SET_OF_BOOKS_ID');
7185 
7186     	IF p_x_header_rec.order_type_id IS NOT NULL THEN
7187 		x_doc_category_code := p_x_header_rec.order_type_id;
7188 
7189    if l_debug_level > 0 then
7190     	oe_debug_pub.ADD('before calling get_seq_info ', 2);
7191  	oe_debug_pub.ADD('Category Code'||x_doc_category_code, 3);
7192     	oe_debug_pub.ADD('Set of Books'||x_set_of_books_id, 3);
7193    end if;
7194         x_result :=   fnd_seqnum.get_seq_info(
7195                                              660,
7196                                              x_doc_category_code,
7197                                              x_set_of_books_id,
7198                                              null,
7199                                              sysdate,
7200                                              X_doc_sequence_id,
7201 					     x_doc_sequence_type,
7202 					     x_doc_sequence_name,
7203                                              X_db_sequence_name,
7204         				     seqassid,
7205 					     X_Prd_Tbl_Name,
7206 					     X_Aud_Tbl_Name,
7207 					     X_Msg_Flag
7208 					 );
7209 
7210    if l_debug_level > 0 then
7211     	oe_debug_pub.ADD('after calling get_seq_info ', 2);
7212    end if;
7213 
7214    		IF x_result <>  FND_SEQNUM.SEQSUCC   THEN
7215     		IF x_result = FND_SEQNUM.NOTUSED THEN
7216     			fnd_message.set_name('ONT','OE_MISS_DOC_SEQ');
7217     			OE_MSG_PUB.Add;
7218     			RAISE FND_API.G_EXC_ERROR;
7219     		END IF;
7220 
7221    		END IF;
7222 		t := x_doc_sequence_type;
7223 
7224     	  IF ( t = 'A')  THEN --automatic numbering
7225 
7226 
7227              X_result := fnd_seqnum.get_seq_val(
7228                                                 660,
7229                                                 x_doc_category_code,
7230                                                 x_set_of_books_id,
7231                                                 null,
7232                                                 sysdate,
7233                                                 x_doc_sequence_value,
7234                                                 X_doc_sequence_id,
7235 					        'Y',
7236 					        'Y');
7237    			IF x_result <>  0   THEN
7238     			RAISE FND_API.G_EXC_ERROR;
7239    			END IF;
7240 
7241    if l_debug_level > 0 then
7242     		oe_debug_pub.ADD('fndseqresult'||to_char(x_result), 2);
7243     		oe_debug_pub.ADD('fndseqtype'||x_doc_sequence_value, 2);
7244    end if;
7245     		p_x_header_rec.order_number :=  x_doc_sequence_value;
7246    		--ELSIF (t = 'M') THEN
7247 	  ELSE
7248                 SELECT meaning
7249                 INTO l_column_name
7250                 FROM fnd_lookups
7251                 WHERE lookup_type = 'SEQUENCE_METHOD'
7252                 AND lookup_code = t;
7253 	 		fnd_message.set_name('ONT','OE_BLKT_INVALID_DOC_SEQ');
7254                         fnd_message.set_token('Document Sequence', l_column_name);
7255           	  	OE_MSG_PUB.Add;
7256 
7257 	 		RAISE FND_API.G_EXC_ERROR;
7258 	--	x_doc_sequence_value := p_x_header_rec.order_number;
7259 	--   	     	NULL;
7260    	  END IF;
7261 
7262 		Select Count(header_id) into
7263 		lcount  From
7264 		OE_BLANKET_HEADERS_ALL
7265 		WHERE order_number =  X_doc_sequence_value;
7266 
7267 		IF  lcount > 0 THEN
7268 	 		fnd_message.set_name('ONT','OE_BLKT_NUM_EXISTS');
7269        	  	OE_MSG_PUB.Add;
7270 	 		RAISE FND_API.G_EXC_ERROR;
7271 		END IF;
7272 	END IF; -- Blanket category code not null
7273 
7274    if l_debug_level > 0 then
7275 	oe_debug_pub.add('Exiting OR_BLANKET_UTIL.Get_Order_Number',1);
7276    end if;
7277 
7278 EXCEPTION
7279     WHEN FND_API.G_EXC_ERROR THEN
7280 	 x_return_status     := FND_API.G_RET_STS_ERROR;
7281    if l_debug_level > 0 then
7282     oe_debug_pub.ADD('Get blanket Number-Exp exception ', 1);
7283    end if;
7284      RAISE FND_API.G_EXC_ERROR;
7285 
7286 
7287     WHEN OTHERS THEN
7288    if l_debug_level > 0 then
7289     oe_debug_pub.ADD('Get blanket Number-exception ', 1);
7290    end if;
7291 
7292 	 x_return_status     := FND_API.G_RET_STS_UNEXP_ERROR;
7293 
7294     	IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7295 	THEN
7296     	    OE_MSG_PUB.Add_Exc_Msg
7297     	    (	G_PKG_NAME  	    ,
7298     	        'Get_Order_Number'
7299 	    );
7300     	END IF;
7301 
7302 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7303 
7304 END Get_Order_Number;
7305 
7306 PROCEDURE Process_Object(x_return_status OUT NOCOPY VARCHAR2) IS
7307 l_valid varchar2(1);
7308 lcount number ;
7309 I number;
7310 l_return_status varchar2(1);
7311 --
7312 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7313 --
7314 
7315 lx_return_status         VARCHAR2(1)           := FND_API.G_RET_STS_SUCCESS;
7316 lx_msg_count             NUMBER                := 0;
7317 lx_msg_data              VARCHAR2(2000);
7318 
7319 
7320 BEGIN
7321 
7322    x_return_status := FND_API.G_RET_STS_SUCCESS;
7323 
7324 -- Process Header requests
7325 
7326        OE_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
7327           (p_entity_code   => OE_BLANKET_PUB.G_ENTITY_BLANKET_HEADER
7328           ,p_delete        => FND_API.G_TRUE
7329           ,x_return_status => l_return_status
7330           );
7331        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7332                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7333        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
7334                  RAISE FND_API.G_EXC_ERROR;
7335        END IF;
7336 
7337 -- Process Line Level Request
7338 
7339        OE_DELAYED_REQUESTS_PVT.Process_Request_for_Entity
7340           (p_entity_code   => OE_BLANKET_PUB.G_ENTITY_BLANKET_LINE
7341           ,p_delete        => FND_API.G_TRUE
7342           ,x_return_status => l_return_status
7343           );
7344        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7345                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7346        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
7347                  RAISE FND_API.G_EXC_ERROR;
7348        END IF;
7349 
7350 
7351      IF oe_code_control.get_code_release_level >= '110510' and
7352           G_Header_Rec.operation = OE_GLOBALS.G_OPR_CREATE  THEN
7353                    oe_debug_pub.ADD('Create and Start Flow srini : '||G_Header_Rec.operation) ;
7354                         oe_blanket_wf_util.create_and_start_flow(
7355                                             p_header_id => G_header_rec.header_id,
7356                                             p_transaction_phase_code => G_header_rec.transaction_phase_code,
7357                                             p_blanket_number => G_header_rec.order_number,
7358                                             x_return_status => l_return_status,
7359                                             x_msg_count     => lx_msg_count,
7360                                             x_msg_data      => lx_msg_Data);
7361              IF lx_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7362                  if l_debug_level > 0 then
7363                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in  Create and Start flow ', 1);
7364                  end if;
7365                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7366              ELSIF lx_return_status = FND_API.G_RET_STS_ERROR THEN
7367                  if l_debug_level > 0 then
7368                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in Create and Start Flow ', 1);
7369                  end if;
7370                  RAISE FND_API.G_EXC_ERROR;
7371              END IF;
7372 
7373      end if;
7374 
7375 -- moved instantiate call after create_and_start_flow procedure for bug 3691452
7376 
7377 -- Instantiate the contract template id against the BSA if new record      --ABH
7378      IF G_Header_Rec.operation = OE_GLOBALS.G_OPR_CREATE AND
7379         OE_CODE_CONTROL.Get_Code_Release_Level >= '110510'
7380         -- Do not instantiate for copied orders
7381         AND nvl(g_header_rec.source_document_type_id,-1) <> 2
7382      THEN
7383 
7384         OE_CONTRACTS_UTIL.instantiate_doc_terms (
7385              p_api_version         =>  1.0,
7386              p_commit              => FND_API.G_TRUE,
7387 
7388              p_template_id         => G_Header_Rec.contract_template_id,
7389              p_doc_type            => 'B',
7390              p_doc_id              => G_Header_Rec.header_id,
7391              p_doc_start_date      => G_Header_Rec.start_date_active,
7392              p_doc_number          => G_Header_Rec.order_number,
7393 
7394              x_return_status       => lx_return_status,
7395              x_msg_count           => lx_msg_count,
7396              x_msg_data            => lx_msg_data
7397         );
7398 
7399        IF lx_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7400                  if l_debug_level > 0 then
7401                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in inst. doc terms ', 1);
7402                  end if;
7403                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7404        ELSIF lx_return_status = FND_API.G_RET_STS_ERROR THEN
7405                  if l_debug_level > 0 then
7406                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in inst. doc terms ', 1);
7407                  end if;
7408                  RAISE FND_API.G_EXC_ERROR;
7409        END IF;
7410 
7411      END IF;
7412 
7413      IF OE_CODE_CONTROL.Code_Release_Level >= '110510' AND
7414         OE_GLOBALS.G_ROLL_VERSION <> 'N' AND
7415         Not OE_GLOBALS.Equal(G_Header_Rec.operation, OE_GLOBALS.G_OPR_CREATE) THEN
7416            OE_Versioning_Util.Perform_Versioning(p_header_id => g_header_rec.header_id,
7417                                    p_document_type => 'BLANKETS',
7418                                    x_msg_count => lx_msg_count,
7419                                    x_msg_data => lx_msg_data,
7420                                    x_return_status => l_return_status);
7421 
7422        IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7423                  if l_debug_level > 0 then
7424                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in perform versioning ', 1);
7425                  end if;
7426                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7427        ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
7428                  if l_debug_level > 0 then
7429                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in perform versioning ', 1);
7430                  end if;
7431                  RAISE FND_API.G_EXC_ERROR;
7432        END IF;
7433 
7434              OE_Contracts_Util.Version_Articles(p_api_version => 1.0,
7435                           p_doc_type => OE_Contracts_Util.G_BSA_DOC_TYPE,
7436                           p_doc_id => g_old_header_hist_rec.header_id,
7437                           p_version_number => g_old_header_hist_rec.version_number,
7438                           x_return_status => lx_return_status,
7439                           x_msg_data => lx_msg_data,
7440                           x_msg_count => lx_msg_count);
7441 
7442 
7443        IF lx_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
7444                  if l_debug_level > 0 then
7445                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object unexp error in perform versioning ', 1);
7446                  end if;
7447                  RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7448        ELSIF lx_return_status = FND_API.G_RET_STS_ERROR THEN
7449                  if l_debug_level > 0 then
7450                    oe_debug_pub.ADD('OE_Blanket_Util.Process_Object exc error in perform versioning ', 1);
7451                  end if;
7452                  RAISE FND_API.G_EXC_ERROR;
7453        END IF;
7454 
7455      END IF;
7456 
7457      g_old_version_captured := FALSE;
7458      G_Header_Rec.operation := OE_GLOBALS.G_OPR_NONE;
7459 
7460 EXCEPTION
7461 
7462     WHEN FND_API.G_EXC_ERROR THEN
7463 	 --Commented for Bug 15879874
7464      --OE_Delayed_Requests_PVT.Clear_Request(lx_return_status); --bug 4691643
7465       x_return_status := FND_API.G_RET_STS_ERROR;
7466 
7467     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7468 	--Commented for Bug 15879874
7469     --OE_Delayed_Requests_PVT.Clear_Request(lx_return_status); --bug 4691643
7470       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7471 
7472     WHEN OTHERS THEN
7473 	--Commented for Bug 15879874
7474     --OE_Delayed_Requests_PVT.Clear_Request(lx_return_status); --bug 4691643
7475       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7476 
7477       IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7478       THEN
7479         OE_MSG_PUB.Add_Exc_Msg
7480         (   G_PKG_NAME
7481            ,'Process Object'
7482          );
7483       END IF;
7484 
7485 END Process_Object;
7486 
7487 PROCEDURE VALIDATE_LINE_NUMBER
7488 (p_req_ind                IN NUMBER
7489 ,x_return_status          OUT NOCOPY VARCHAR2
7490 )
7491 IS
7492 l_valid varchar2(1);
7493 --
7494 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7495 --
7496 BEGIN
7497       x_return_status := FND_API.G_RET_STS_SUCCESS;
7498 
7499   IF oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2 < 1 THEN
7500       l_valid := 'N';
7501   ELSE
7502 	BEGIN
7503            SELECT 'N'
7504            INTO   l_valid
7505            FROM   oe_blanket_lines L
7506            WHERE  L.line_number =
7507 		oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2
7508            AND    L.header_id =
7509 		 oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param1
7510            AND    L.line_id <>
7511 	 oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).entity_id;
7512 
7513           EXCEPTION
7514                 WHEN no_data_found THEN
7515                    l_valid := 'Y';
7516                 WHEN too_many_rows THEN
7517                    l_valid := 'N';
7518 	END;
7519 
7520   END IF;
7521 	  IF l_valid = 'N' THEN
7522                 FND_MESSAGE.SET_NAME('ONT','OE_BLKT_LINE_NUMBER_EXISTS');
7523                 OE_MSG_PUB.ADD;
7524                 RAISE FND_API.G_EXC_ERROR;
7525           END IF;
7526 
7527 EXCEPTION
7528 
7529     WHEN FND_API.G_EXC_ERROR THEN
7530    if l_debug_level > 0 then
7531     oe_debug_pub.ADD('Validate line Number-Exp exception ', 1);
7532    end if;
7533       x_return_status := FND_API.G_RET_STS_ERROR;
7534      RAISE FND_API.G_EXC_ERROR;
7535 
7536 
7537     WHEN OTHERS THEN
7538    if l_debug_level > 0 then
7539     oe_debug_pub.ADD('Validate line Number-exception ', 1);
7540    end if;
7541 
7542       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7543         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7544         THEN
7545             OE_MSG_PUB.Add_Exc_Msg
7546             (   G_PKG_NAME          ,
7547                 'Validate Line NUmber'
7548             );
7549         END IF;
7550 
7551         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7552 
7553 END VALIDATE_LINE_NUMBER;
7554 
7555 PROCEDURE VALIDATE_ITEM_UNIQUENESS
7556 (p_req_ind             IN NUMBER
7557 ,x_return_status       OUT NOCOPY VARCHAR2
7558 )
7559 IS
7560 l_valid varchar2(1);
7561 lcount number;
7562 
7563   l_line_id               NUMBER;
7564   l_header_id             NUMBER;
7565   l_item_id               NUMBER;
7566   l_item_identifier_type  VARCHAR2(30);
7567   l_start_date_active     DATE;
7568   l_end_date_active       DATE;
7569   l_ordered_item_id       NUMBER; --bug6826787
7570   l_ordered_item          VARCHAR2(2000);--bug6826787
7571 
7572 
7573 --
7574 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7575 --
7576 BEGIN
7577 
7578    x_return_status := FND_API.G_RET_STS_SUCCESS;
7579 
7580    l_line_id :=
7581      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).entity_id;
7582    l_item_id :=
7583      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param1;
7584    l_header_id :=
7585      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param2;
7586    l_item_identifier_type :=
7587      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param3;
7588 
7589    l_ordered_item_id :=
7590      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param4;
7591 
7592    l_ordered_item :=
7593     oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).param5;
7594 
7595 
7596 
7597    l_start_date_active :=
7598      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).date_param1;
7599    l_end_date_active :=
7600      oe_delayed_requests_pvt.g_delayed_requests(p_req_ind).date_param2;
7601 
7602    if l_debug_level > 0 then
7603      oe_debug_pub.add('In validate Item Uniqueness');
7604      oe_debug_pub.add('item identifier type :'|| l_item_identifier_type);
7605      oe_debug_pub.add('inventory item id :'|| l_item_id);
7606      oe_debug_pub.add('header id :'|| l_header_id);
7607      oe_debug_pub.add('line id :'|| l_line_id);
7608      oe_debug_pub.add('start date :'|| l_start_date_active);
7609      oe_debug_pub.add('end date :'|| l_end_date_active);
7610     end if;
7611 
7612      --modified the following sql to check for uiqueness of
7613    -- (inventory_item_id,item_idenitfier_type,ordered_item_id) for bug6826787
7614 
7615     select count(1) into lcount
7616     from OE_BLANKET_LINES L, OE_BLANKET_LINES_EXT LX
7617     where L.line_id = LX.line_id
7618       AND L.header_id = l_header_id
7619       AND L.line_id <> l_line_id
7620       AND ( ( l_item_identifier_type NOT IN ('ALL','CAT')
7621               AND L.item_identifier_type NOT IN ('ALL','CAT')
7622              )
7623            OR (L.item_identifier_type = l_item_identifier_type)
7624           )
7625       AND nvl(L.inventory_item_id,-1) = nvl(l_item_id,-1)
7626       AND L.item_identifier_type = l_item_identifier_type
7627       AND  NVL( to_char(L.ordered_item_id),
7628                 decode (L.item_identifier_type,'INT', to_char(NVL(L.inventory_item_id,-1)),
7629 		                               'ALL', to_char(NVL(L.inventory_item_id,-1)),
7630 					       'CAT', to_char(NVL(L.inventory_item_id,-1)),
7631 					       'CUST', to_char(NVL(L.ordered_item_id, NVL(L.inventory_item_id,-1) )),
7632 					        NVL(L.Ordered_item,'XXXX') ) ) = decode ( l_item_identifier_type , 'INT', to_char(nvl(l_item_id,-1))
7633 														 , 'ALL',  to_char(nvl(l_item_id,-1))
7634 														 , 'CAT' , to_char(nvl(l_item_id,-1))
7635 														 , 'CUST', to_char(nvl(l_ordered_item_id,-1))
7636 														 ,  to_char(nvl(l_ordered_item,'XXXX') ))
7637       AND (  (l_end_date_active IS NULL
7638               -- Duplicate blanket line date cannot be effective
7639               -- beyond the start date of this blanket line
7640               AND l_start_date_active <=
7641                     nvl(LX.end_date_active,l_start_date_active)
7642              )
7643           OR (l_end_date_active IS NOT NULL
7644               -- Dates for this line cannot be between effectivity dates
7645               -- for duplicate blanket line
7646               AND (l_end_date_active BETWEEN
7647                     LX.start_date_active AND
7648                     nvl(LX.end_date_active,l_end_date_active + 1)
7649                   OR l_start_date_active BETWEEN
7650                     LX.start_date_active AND
7651                     nvl(LX.end_date_active,l_end_date_active + 1)
7652                   )
7653              )
7654           );
7655 
7656       if (lcount > 0) then
7657           -- ERROR: date overlap problem.  Show error and
7658           FND_MESSAGE.SET_NAME('ONT','OE_BLKT_UNIQUE_ITEM_VIOLATION');
7659           OE_MSG_PUB.ADD;
7660           RAISE FND_API.G_EXC_ERROR;
7661       end if;
7662 
7663 EXCEPTION
7664    WHEN FND_API.G_EXC_ERROR THEN
7665    if l_debug_level > 0 then
7666     oe_debug_pub.ADD('Validate item uniqr-Exp exception ', 1);
7667    end if;
7668       x_return_status := FND_API.G_RET_STS_ERROR;
7669       RAISE FND_API.G_EXC_ERROR;
7670    WHEN OTHERS THEN
7671    if l_debug_level > 0 then
7672     oe_debug_pub.ADD('Validate item uniqueness-exception ', 1);
7673    end if;
7674       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7675       IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7676       THEN
7677             OE_MSG_PUB.Add_Exc_Msg
7678             (   G_PKG_NAME          ,
7679                 'Validate item uniqueness'
7680             );
7681       END IF;
7682 END VALIDATE_ITEM_UNIQUENESS;
7683 
7684 
7685 FUNCTION IS_BLANKET_PRICE_LIST(p_price_list_id NUMBER
7686                                -- 11i10 Pricing Change
7687                                ,p_blanket_header_id NUMBER DEFAULT NULL)
7688 RETURN BOOLEAN IS
7689 l_dummy VARCHAR2(30);
7690 l_result   BOOLEAN;
7691 --
7692 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7693 --
7694 BEGIN
7695 
7696      -- 11i10 pricing change - source code is BSO in 11i10.
7697      -- Select from qp tables with source as blanket
7698      -- if exist then return true otherwise false
7699 
7700      IF OE_Code_Control.Get_Code_Release_Level < '110510' THEN
7701 
7702         SELECT 'VALID'
7703         INTO l_dummy
7704         FROM QP_LIST_HEADERS
7705         WHERE LIST_HEADER_ID = p_price_list_id
7706         AND LIST_SOURCE_CODE = 'BLKT';
7707 
7708      ELSE
7709 
7710         l_result := OE_Blanket_Pricing_Util.Is_Blanket_Price_List
7711                 (p_price_list_id            => p_price_list_id
7712                 ,p_blanket_header_id        => p_blanket_header_id
7713                 );
7714 
7715         RETURN l_result;
7716 
7717 /*
7718         SELECT 'VALID'
7719         INTO l_dummy
7720         FROM QP_LIST_HEADERS
7721         WHERE LIST_HEADER_ID = p_price_list_id
7722         AND LIST_SOURCE_CODE = 'BSO'
7723         AND orig_system_header_ref = p_blanket_header_id
7724         ;
7725 */
7726 
7727      END IF;
7728 
7729         RETURN TRUE;
7730 
7731 EXCEPTION
7732 WHEN NO_DATA_FOUND THEN
7733    if l_debug_level > 0 then
7734      oe_debug_pub.ADD('Not a blanket price list', 1);
7735    end if;
7736      RETURN FALSE;
7737 
7738 END IS_BLANKET_PRICE_LIST;
7739 
7740 PROCEDURE RECORD_BLANKET_HISTORY
7741           (p_version_flag in varchar2 := null,
7742            p_phase_change_flag in varchar2 := null,
7743            x_return_status        OUT NOCOPY VARCHAR2
7744           )
7745 IS
7746    l_return_status            VARCHAR2(1);
7747    l_new_version_number       NUMBER;
7748 --
7749 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7750 --
7751 BEGIN
7752    if l_debug_level > 0 then
7753      oe_debug_pub.ADD('Entering Record_Blanket_History from delayed req', 1);
7754    end if;
7755 
7756       x_return_status := FND_API.G_RET_STS_SUCCESS;
7757 
7758   SELECT  /* MOAC_SQL_CHANGE */ version_number
7759     INTO l_new_version_number
7760     FROM oe_blanket_headers_all
7761    WHERE header_id = g_old_header_hist_rec.header_id;
7762 
7763   if l_debug_level > 0 then
7764      oe_debug_pub.ADD('old versn :'||g_old_header_hist_rec.version_number);
7765      oe_debug_pub.ADD('new versn :'||l_new_version_number);
7766   end if;
7767 
7768   -- This check is needed as user could change version number multiple times
7769   -- but in the end, latest version number could be same as the old version
7770   -- number. If that occurs, we need not record history.
7771 
7772   -- For 11i10, version update occurs after history is inserted
7773   IF OE_CODE_CONTROL.Code_Release_Level < '110510' AND
7774      l_new_version_number <= g_old_header_hist_rec.version_number THEN
7775      RETURN;
7776   END IF;
7777 
7778   Insert_History_Records
7779       (p_header_rec             => g_old_header_hist_rec
7780       ,p_line_tbl               => g_old_line_hist_tbl
7781       ,p_version_flag             => p_version_flag
7782       ,p_phase_change_flag        => p_phase_change_flag
7783       ,x_return_status          => l_return_status);
7784 
7785   IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
7786     x_return_status := l_return_status;
7787   END IF;
7788 
7789 EXCEPTION
7790     WHEN OTHERS THEN
7791    if l_debug_level > 0 then
7792     oe_debug_pub.ADD('Record Blanket History Exception ', 1);
7793    end if;
7794 
7795       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7796 
7797         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7798         THEN
7799             OE_MSG_PUB.Add_Exc_Msg
7800             (   G_PKG_NAME          ,
7801                 'Record Blanket History'
7802             );
7803 	END IF;
7804         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7805 
7806 END RECORD_BLANKET_HISTORY;
7807 
7808 PROCEDURE Copy_Blanket (p_header_id IN NUMBER,
7809                         p_version_number IN NUMBER,
7810                         x_header_id OUT NOCOPY NUMBER,
7811                         x_return_status OUT NOCOPY VARCHAR2,
7812                         x_msg_count OUT NOCOPY NUMBER,
7813                         x_msg_data  OUT NOCOPY VARCHAR2)
7814 IS
7815 
7816 l_header_rec  OE_Blanket_Pub.header_rec_type;
7817 l_line_tbl    OE_Blanket_Pub.line_tbl_type;
7818 l_control_rec OE_Blanket_Pub.control_rec_type;
7819 x_header_rec  OE_Blanket_Pub.header_rec_type;
7820 x_line_tbl    OE_Blanket_Pub.line_tbl_type;
7821 l_return_status VARCHAR2(1);
7822 l_header_id   NUMBER;
7823 l_count       NUMBER;
7824 --
7825 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
7826 --
7827 BEGIN
7828 
7829    if l_debug_level > 0 then
7830     oe_debug_pub.ADD('Entering Copy_blanket ', 1);
7831    end if;
7832 
7833     OE_MSG_PUB.initialize;
7834 
7835   SAVEPOINT Copy_Blanket;
7836 
7837     OE_MSG_PUB.set_msg_context(
7838 	 p_entity_code			=> 'BLANKET_HEADER'
7839   	,p_entity_id         		=> p_header_id
7840     	,p_header_id         		=> p_header_id
7841     	,p_line_id           		=> null
7842     	,p_orig_sys_document_ref	=> null
7843     	,p_orig_sys_document_line_ref	=> null
7844         ,p_change_sequence              => null
7845     	,p_source_document_id		=> null
7846     	,p_source_document_line_id	=> null
7847 	,p_order_source_id            => null
7848 	,p_source_document_type_id    => null);
7849 
7850   x_return_status := FND_API.G_RET_STS_SUCCESS;
7851 
7852   -- Set message context
7853 
7854   -- Step One: Populate header record and line table with desired
7855   -- attributes. Refer Blankets HLD for specific attributes to be copied.
7856 
7857   Query_Blanket(p_header_id => p_header_id
7858                , p_version_number => p_version_number
7859                ,p_x_header_rec        => l_header_rec
7860                ,p_x_line_tbl          => l_line_tbl
7861                ,x_return_status       => x_return_status);
7862 
7863   -- Prepare control record
7864   l_control_rec.UI_CALL := FALSE;
7865   l_control_rec.validate_attributes := TRUE;
7866   l_control_rec.validate_entity := TRUE;
7867   l_control_rec.check_security := TRUE;
7868 
7869   -- Prepare attributes for new blanket
7870   l_header_rec.source_document_type_id := 2; --Copy source
7871   l_header_rec.source_document_id := l_header_rec.header_id;
7872   l_header_rec.source_document_version_number := l_header_rec.version_number;
7873 
7874     -- Pre-default header_id for proper message display
7875     SELECT OE_ORDER_HEADERS_S.NEXTVAL
7876     INTO l_header_rec.header_id
7877     FROM DUAL;
7878 
7879   l_header_rec.order_number := NULL;
7880   l_header_rec.version_number := 0;
7881   l_header_rec.operation := oe_globals.g_opr_create;
7882   --l_header_rec.start_date_active := trunc(SYSDATE);
7883   --l_header_rec.end_date_active := NULL;
7884   l_header_rec.revision_change_date := NULL;
7885   l_header_rec.revision_change_reason_code := NULL;
7886   l_header_rec.revision_change_comments := NULL;
7887   l_header_rec.released_amount := NULL;
7888   l_header_rec.returned_amount := NULL;
7889   l_header_rec.fulfilled_amount := NULL;
7890 
7891   l_header_rec.sales_document_name := null;
7892   --clear out NOCOPY /* file.sql.39 change */ signature columns here
7893   l_header_rec.customer_signature := null;
7894   l_header_rec.customer_signature_date := null;
7895   l_header_rec.supplier_signature := null;
7896   l_header_rec.supplier_signature_date := null;
7897   l_header_rec.transaction_phase_code := null;
7898   l_header_rec.user_status_code := null;
7899   l_header_rec.flow_status_code := null;
7900   l_header_rec.draft_submitted_flag := null;
7901 
7902   --Null out NOCOPY /* file.sql.39 change */ price list if it's a blanket price list, repeat for header and each line:
7903   -- 11i10 Pricing changes, pass header id to is_blanket_price_list
7904   If Is_Blanket_Price_List(p_price_list_id => l_header_rec.price_list_id
7905                            ,p_blanket_header_id => p_header_id) Then
7906       l_header_rec.price_list_id := NULL;
7907       l_header_rec.enforce_price_list_flag := NULL;
7908   End If;
7909   -- 11i10 Pricing Changes
7910   -- Always null out NOCOPY /* file.sql.39 change */ new price list/modifier/discount fields when copying
7911   l_header_rec.new_price_list_id := NULL;
7912   l_header_rec.new_modifier_list_id := NULL;
7913   l_header_rec.default_discount_percent := NULL;
7914   l_header_rec.default_discount_amount := NULL;
7915   l_header_rec.new_price_list_name := NULL;
7916   l_header_rec.new_modifier_list_name := NULL;
7917 
7918   FOR l_count in 1..l_line_tbl.COUNT LOOP
7919     l_line_tbl(l_count).source_document_type_id := 2; --Copy source
7920     l_line_tbl(l_count).source_document_id := l_header_rec.source_document_id;
7921     l_line_tbl(l_count).source_document_version_number := l_header_rec.source_document_version_number;
7922     l_line_tbl(l_count).source_document_line_id := l_line_tbl(l_count).line_id;
7923     l_line_tbl(l_count).header_id := l_header_rec.header_id;
7924     l_line_tbl(l_count).order_number := NULL;
7925 
7926     -- Pre-default header_id for proper message display
7927     SELECT OE_ORDER_LINES_S.NEXTVAL
7928     INTO l_line_tbl(l_count).line_id
7929     FROM DUAL;
7930 
7931     l_line_tbl(l_count).operation := oe_globals.g_opr_create;
7932     l_line_tbl(l_count).order_number := NULL;
7933     l_line_tbl(l_count).line_number := NULL;
7934     --l_line_tbl(l_count).start_date_active := NULL;
7935     --l_line_tbl(l_count).end_date_active := NULL;
7936     l_line_tbl(l_count).released_amount := NULL;
7937     l_line_tbl(l_count).released_quantity := NULL;
7938     l_line_tbl(l_count).returned_amount := NULL;
7939     l_line_tbl(l_count).returned_quantity := NULL;
7940     l_line_tbl(l_count).fulfilled_amount := NULL;
7941     l_line_tbl(l_count).fulfilled_quantity := NULL;
7942     l_line_tbl(l_count).transaction_phase_code := null;
7943 
7944     -- 11i10 Pricing changes, pass header id to is_blanket_price_list
7945     If Is_Blanket_Price_List(p_price_list_id => l_line_tbl(l_count).price_list_id,
7946                              p_blanket_header_id => p_header_id) Then
7947       l_line_tbl(l_count).price_list_id := NULL;
7948       l_line_tbl(l_count).qp_list_line_id := NULL;
7949       l_line_tbl(l_count).enforce_price_list_flag := NULL;
7950     End If;
7951     -- 11i10 Pricing Changes
7952     -- Always null out NOCOPY /* file.sql.39 change */ new modifier/discount fields when copying
7953     l_line_tbl(l_count).modifier_list_line_id := NULL;
7954     l_line_tbl(l_count).discount_percent := NULL;
7955     l_line_tbl(l_count).discount_amount := NULL;
7956   END LOOP;
7957 
7958   OE_BLANKET_PVT.Process_Blanket
7959   (   p_api_version_number            => 1.0
7960   ,   p_validation_level              => OE_GLOBALS.G_VALID_LEVEL_PARTIAL
7961   ,   x_return_status                 => x_return_status
7962   ,   x_msg_count                     => x_msg_count
7963   ,   x_msg_data                      => x_msg_data
7964   ,   p_header_rec            => l_header_rec
7965   ,   p_line_tbl              => l_line_tbl
7966   ,   p_control_rec        =>  l_control_rec
7967   ,   x_header_rec           => x_header_rec
7968   ,   x_line_tbl             => x_line_tbl
7969   );
7970 
7971   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7972         fnd_message.set_name('ONT','OE_CPY_COPY_FAILED');
7973         OE_MSG_PUB.Add;
7974         ROLLBACK TO SAVEPOINT Copy_Blanket;
7975         RAISE FND_API.G_EXC_ERROR;
7976   END IF;
7977 
7978   -- copy articles
7979   OE_Contracts_Util.copy_articles(p_api_version => 1.0,
7980                       p_doc_type => 'B',
7981                       p_copy_from_doc_id => p_header_id,
7982                       p_version_number => p_version_number,
7983                       p_copy_to_doc_id => x_header_rec.header_id,
7984                       p_copy_to_doc_number => x_header_rec.order_number,
7985                       x_return_status => l_return_status,
7986                       x_msg_count => x_msg_count,
7987                       x_msg_data => x_msg_data
7988                       );
7989 
7990 
7991   IF NOT OE_GLOBALS.EQUAL(l_return_status, FND_API.G_RET_STS_SUCCESS) THEN
7992       x_return_status := nvl(l_return_status, x_return_status);
7993   END IF;
7994 
7995   IF (x_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
7996         fnd_message.set_name('ONT','OE_CPY_COPY_FAILED');
7997         OE_MSG_PUB.Add;
7998         ROLLBACK TO SAVEPOINT Copy_Blanket;
7999         RAISE FND_API.G_EXC_ERROR;
8000   ELSE
8001     	fnd_message.set_name('ONT','OE_BL_COPY_SUCCESS');
8002         -- Bug 3337297
8003         -- Set blanket number token
8004         fnd_message.set_token('BLANKET_NUMBER',x_header_rec.order_number);
8005     	OE_MSG_PUB.Add;
8006         x_header_id := x_header_rec.header_id;
8007   END IF;
8008 
8009 
8010   --  Get message count and data
8011 
8012         OE_MSG_PUB.Count_And_Get
8013         (   p_count                       => x_msg_count
8014         ,   p_data                        => x_msg_data
8015         );
8016 
8017 EXCEPTION
8018     WHEN FND_API.G_EXC_ERROR THEN
8019          x_return_status := FND_API.G_RET_STS_ERROR;
8020 
8021     OE_MSG_PUB.Count_And_Get
8022     (   p_count                       => x_msg_count
8023     ,   p_data                        => x_msg_data
8024     );
8025 
8026     WHEN OTHERS THEN
8027    if l_debug_level > 0 then
8028     oe_debug_pub.ADD('Copy Blanket Exception ', 1);
8029    end if;
8030 
8031       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
8032 
8033     OE_MSG_PUB.Count_And_Get
8034     (   p_count                       => x_msg_count
8035     ,   p_data                        => x_msg_data
8036     );
8037 
8038         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
8039         THEN
8040             OE_MSG_PUB.Add_Exc_Msg
8041             (   G_PKG_NAME          ,
8042                 'Copy Blanket'
8043             );
8044 	END IF;
8045         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8046 
8047 END Copy_Blanket;
8048 
8049 Procedure Validate_Min_Max_Range (
8050 p_min_value IN NUMBER,
8051 p_max_value IN NUMBER,
8052 p_attribute IN VARCHAR2,
8053 x_return_status IN OUT NOCOPY VARCHAR2
8054 )
8055 IS
8056 --
8057 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8058 --
8059 BEGIN
8060 
8061 
8062   IF (p_min_value IS NOT NULL)
8063     AND (p_max_value IS NOT NULL)
8064     AND (p_min_value > p_max_value) THEN
8065        if l_debug_level > 0 then
8066           oe_debug_pub.add('Invalid min/max for attribute :'||p_attribute);
8067        end if;
8068        FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_MIN_MAX_RANGE');
8069        FND_MESSAGE.SET_TOKEN('MIN', p_min_value);
8070        FND_MESSAGE.SET_TOKEN('MAX', p_max_value);
8071        OE_MSG_PUB.ADD;
8072        x_return_status := FND_API.G_RET_STS_ERROR;
8073   END IF;
8074 
8075 EXCEPTION
8076 
8077     WHEN OTHERS THEN
8078    if l_debug_level > 0 then
8079     oe_debug_pub.ADD('Validate min max range - U exeception  ', 1);
8080    end if;
8081 
8082         IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
8083         THEN
8084             OE_MSG_PUB.Add_Exc_Msg
8085             (   G_PKG_NAME          ,
8086                 'Validate min max range'
8087             );
8088 	END IF;
8089         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8090 
8091 END Validate_Min_Max_Range;
8092 
8093 
8094 PROCEDURE Insert_History_Records
8095           (p_header_rec           IN OUT NOCOPY OE_Blanket_PUB.Header_Rec_Type
8096           ,p_line_tbl             IN OUT NOCOPY OE_Blanket_PUB.Line_Tbl_Type
8097           ,p_version_flag in varchar2 := null
8098           ,p_phase_change_flag in varchar2 := null
8099           ,x_return_status        IN OUT NOCOPY VARCHAR2
8100 )
8101 IS
8102     l_org_id                 NUMBER;
8103 --
8104 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8105 --
8106 BEGIN
8107     -- <R12.MOAC> START
8108     --l_org_id := to_number(FND_PROFILE.VALUE('ORG_ID'));
8109     -- <R12.MOAC> END
8110 
8111    if l_debug_level > 0 then
8112     oe_debug_pub.ADD('Before inserting blanket history header_id  ' || p_header_rec.header_id, 5);
8113    end if;
8114 
8115     INSERT  INTO OE_BLANKET_HEADERS_HIST
8116     (       ACCOUNTING_RULE_ID
8117     ,       AGREEMENT_ID
8118     ,       ATTRIBUTE1
8119     ,       ATTRIBUTE10
8120     ,       ATTRIBUTE11
8121     ,       ATTRIBUTE12
8122     ,       ATTRIBUTE13
8123     ,       ATTRIBUTE14
8124     ,       ATTRIBUTE15
8125     ,       ATTRIBUTE16
8126     ,       ATTRIBUTE17
8127     ,       ATTRIBUTE18
8128     ,       ATTRIBUTE19
8129     ,       ATTRIBUTE20
8130     ,       ATTRIBUTE2
8131     ,       ATTRIBUTE3
8132     ,       ATTRIBUTE4
8133     ,       ATTRIBUTE5
8134     ,       ATTRIBUTE6
8135     ,       ATTRIBUTE7
8136     ,       ATTRIBUTE8
8137     ,       ATTRIBUTE9
8138 --adding context  since it was missing
8139     ,       CONTEXT
8140     ,       CREATED_BY
8141     ,       CREATION_DATE
8142     ,       CUST_PO_NUMBER
8143     ,       DELIVER_TO_ORG_ID
8144     ,       FREIGHT_TERMS_CODE
8145     ,       header_id
8146     ,       INVOICE_TO_ORG_ID
8147     ,       INVOICING_RULE_ID
8148     ,       LAST_UPDATED_BY
8149     ,       LAST_UPDATE_DATE
8150     ,       LAST_UPDATE_LOGIN
8151     ,       ORDER_NUMBER
8152     ,       ORDER_TYPE_ID
8153     ,       PAYMENT_TERM_ID
8154     ,       PRICE_LIST_ID
8155     ,       PROGRAM_APPLICATION_ID
8156     ,       PROGRAM_ID
8157     ,       PROGRAM_UPDATE_DATE
8158     ,       REQUEST_ID
8159     ,       SALESREP_ID
8160     ,       SHIPPING_METHOD_CODE
8161     ,       ship_from_org_id
8162     ,       SHIP_TO_ORG_ID
8163     ,       SOLD_TO_CONTACT_ID
8164     ,       SOLD_TO_ORG_ID
8165     ,       TRANSACTIONAL_CURR_CODE
8166     ,       conversion_type_code
8167     ,       VERSION_NUMBER
8168     ,       SHIPPING_INSTRUCTIONS
8169     ,       PACKING_INSTRUCTIONS
8170     ,       START_DATE_ACTIVE
8171     ,       END_DATE_ACTIVE
8172     ,       on_hold_flag
8173     ,       ENFORCE_PRICE_LIST_FLAG
8174     ,       enforce_ship_to_flag
8175     ,       enforce_invoice_to_flag
8176     ,       enforce_freight_term_flag
8177     ,       enforce_shipping_method_flag
8178     ,       enforce_payment_term_flag
8179     ,       enforce_accounting_rule_flag
8180     ,       enforce_invoicing_rule_flag
8181     ,       OVERRIDE_AMOUNT_FLAG
8182     ,       BLANKET_MAX_AMOUNT
8183     ,       BLANKET_MIN_AMOUNT
8184     ,       RELEASED_AMOUNT
8185     ,       FULFILLED_AMOUNT
8186     ,       RETURNED_AMOUNT
8187     ,       ORG_ID
8188     ,       REVISION_CHANGE_REASON_CODE
8189     ,       REVISION_CHANGE_COMMENTS
8190     ,       REVISION_CHANGE_DATE
8191     ,       RESPONSIBILITY_ID
8192     ,       HIST_TYPE_CODE
8193     ,       HIST_CREATION_DATE
8194     ,       HIST_CREATED_BY
8195     ,       SALES_DOCUMENT_TYPE_CODE
8196     ,       source_document_id
8197     ,       source_document_type_id
8198     ,       SALES_DOCUMENT_NAME -- hashraf ... start of pack J
8199     ,       TRANSACTION_PHASE_CODE
8200     ,       USER_STATUS_CODE
8201     ,       FLOW_STATUS_CODE
8202     ,	    SUPPLIER_SIGNATURE
8203     ,	    SUPPLIER_SIGNATURE_DATE
8204     ,	    CUSTOMER_SIGNATURE
8205     ,	    CUSTOMER_SIGNATURE_DATE
8206     ,       sold_to_site_use_id
8207     ,       draft_submitted_flag
8208     ,       source_document_version_number -- hashraf ... end of pack J
8209     ,       version_flag
8210     ,       phase_change_flag
8211     ,       new_modifier_list_id
8212     ,       new_price_list_id
8213     ,       default_discount_amount
8214     ,       default_discount_percent
8215     )
8216     VALUES
8217     (       p_header_rec.accounting_rule_id
8218     ,       p_header_rec.agreement_id
8219     ,       p_header_rec.attribute1
8220     ,       p_header_rec.attribute10
8221     ,       p_header_rec.attribute11
8222     ,       p_header_rec.attribute12
8223     ,       p_header_rec.attribute13
8224     ,       p_header_rec.attribute14
8225     ,       p_header_rec.attribute15
8226     ,       p_header_rec.attribute16
8227     ,       p_header_rec.attribute17
8228     ,       p_header_rec.attribute18
8229     ,       p_header_rec.attribute19
8230     ,       p_header_rec.attribute20
8231     ,       p_header_rec.attribute2
8232     ,       p_header_rec.attribute3
8233     ,       p_header_rec.attribute4
8234     ,       p_header_rec.attribute5
8235     ,       p_header_rec.attribute6
8236     ,       p_header_rec.attribute7
8237     ,       p_header_rec.attribute8
8238     ,       p_header_rec.attribute9
8239 --added context ,since it was missing
8240     ,       p_header_rec.context
8241     ,       p_header_rec.created_by
8242     ,       p_header_rec.creation_date
8243     ,       p_header_rec.cust_po_number
8244     ,       p_header_rec.deliver_to_org_id
8245     ,       p_header_rec.freight_terms_code
8246     ,       p_header_rec.header_id
8247     ,       p_header_rec.invoice_to_org_id
8248     ,       p_header_rec.invoicing_rule_id
8249     ,       p_header_rec.last_updated_by
8250     ,       p_header_rec.last_update_date
8251     ,       p_header_rec.last_update_login
8252     ,       p_header_rec.order_number
8253     ,       p_header_rec.order_type_id
8254     ,       p_header_rec.payment_term_id
8255     ,       p_header_rec.price_list_id
8256     ,       p_header_rec.program_application_id
8257     ,       p_header_rec.program_id
8258     ,       p_header_rec.program_update_date
8259     ,       p_header_rec.request_id
8260     ,       p_header_rec.salesrep_id
8261     ,       p_header_rec.shipping_method_code
8262     ,       p_header_rec.ship_from_org_id
8263     ,       p_header_rec.ship_to_org_id
8264     ,       p_header_rec.sold_to_contact_id
8265     ,       p_header_rec.sold_to_org_id
8266     ,       p_header_rec.transactional_curr_code
8267     ,       p_header_rec.conversion_type_code
8268     ,       p_header_rec.version_number
8269     ,	    p_header_rec.shipping_instructions
8270     ,	    p_header_rec.packing_instructions
8271     ,       p_header_rec.START_DATE_ACTIVE
8272     ,       p_header_rec.END_DATE_ACTIVE
8273     ,       p_header_rec.on_hold_flag
8274     ,       p_header_rec.ENFORCE_PRICE_LIST_FLAG
8275     ,       p_header_rec.enforce_ship_to_flag
8276     ,       p_header_rec.enforce_invoice_to_flag
8277     ,       p_header_rec.enforce_freight_term_flag
8278     ,       p_header_rec.enforce_shipping_method_flag
8279     ,       p_header_rec.enforce_payment_term_flag
8280     ,       p_header_rec.enforce_accounting_rule_flag
8281     ,       p_header_rec.enforce_invoicing_rule_flag
8282     ,       p_header_rec.OVERRIDE_AMOUNT_FLAG
8283     ,       p_header_rec.Blanket_Max_Amount
8284     ,       p_header_rec.Blanket_Min_Amount
8285     ,       p_header_rec.RELEASED_AMOUNT
8286     ,       p_header_rec.FULFILLED_AMOUNT
8287     ,       p_header_rec.RETURNED_AMOUNT
8288     ,       p_header_rec.ORG_ID
8289     ,       p_header_rec.REVISION_CHANGE_REASON_CODE
8290     ,       p_header_rec.REVISION_CHANGE_COMMENTS
8291     ,       p_header_rec.REVISION_CHANGE_DATE
8292     ,       nvl(FND_GLOBAL.RESP_ID,-1)
8293     ,       'UPDATE'
8294     ,       sysdate
8295     ,       nvl(FND_GLOBAL.USER_ID, -1)
8296     ,       'B'
8297     ,       p_header_rec.source_document_id
8298     ,       p_header_rec.source_document_type_id
8299     ,       p_header_rec.SALES_DOCUMENT_NAME -- hashraf ... start of pack J
8300     ,       p_header_rec.TRANSACTION_PHASE_CODE
8301     ,       p_header_rec.USER_STATUS_CODE
8302     ,       p_header_rec.FLOW_STATUS_CODE
8303     ,       p_header_rec.SUPPLIER_SIGNATURE
8304     ,       p_header_rec.SUPPLIER_SIGNATURE_DATE
8305     ,       p_header_rec.CUSTOMER_SIGNATURE
8306     ,       p_header_rec.CUSTOMER_SIGNATURE_DATE
8307     ,       p_header_rec.sold_to_site_use_id
8308     ,       p_header_rec.draft_submitted_flag
8309     ,       p_header_rec.source_document_version_number -- hashraf ... end of pack J
8310     ,       p_version_flag
8311     ,       p_phase_change_flag
8312     ,       p_header_rec.new_modifier_list_id
8313     ,       p_header_rec.new_price_list_id
8314     ,       p_header_rec.default_discount_amount
8315     ,       p_header_rec.default_discount_percent
8316     );
8317 
8318 
8319     FOR I IN 1..p_line_tbl.COUNT LOOP
8320 
8321    if l_debug_level > 0 then
8322     oe_debug_pub.ADD('Before inserting blanket line history line_id  ' || p_line_tbl(I).line_id, 5);
8323    end if;
8324 
8325         INSERT  INTO OE_BLANKET_LINES_HIST
8326         (       ACCOUNTING_RULE_ID
8327         ,       AGREEMENT_ID
8328         ,       ATTRIBUTE1
8329         ,       ATTRIBUTE10
8330         ,       ATTRIBUTE11
8331         ,       ATTRIBUTE12
8332         ,       ATTRIBUTE13
8333         ,       ATTRIBUTE14
8334         ,       ATTRIBUTE15
8335         ,       ATTRIBUTE16
8336         ,       ATTRIBUTE17
8337         ,       ATTRIBUTE18
8338         ,       ATTRIBUTE19
8339         ,       ATTRIBUTE20
8340         ,       ATTRIBUTE2
8341         ,       ATTRIBUTE3
8342         ,       ATTRIBUTE4
8343         ,       ATTRIBUTE5
8344         ,       ATTRIBUTE6
8345         ,       ATTRIBUTE7
8346         ,       ATTRIBUTE8
8347         ,       ATTRIBUTE9
8348         ,       CONTEXT
8349         ,       CREATED_BY
8350         ,       CREATION_DATE
8351         ,       CUST_PO_NUMBER
8352         ,       DELIVER_TO_ORG_ID
8353         ,       FREIGHT_TERMS_CODE
8354         ,       header_id --header_id
8355         ,       min_release_quantity
8356         ,       max_release_quantity
8357         ,       inventory_item_id
8358         ,       INVOICE_TO_ORG_ID
8359         ,       INVOICING_RULE_ID
8360         ,       ORDERED_ITEM_ID
8361         ,       item_identifier_type
8362         ,       ORDERED_ITEM
8363         ,       ITEM_TYPE_CODE
8364         ,       LAST_UPDATED_BY
8365         ,       LAST_UPDATE_DATE
8366         ,       LAST_UPDATE_LOGIN
8367         ,       line_id --line_id
8368         ,       line_number --blanket_line_number
8369         ,       PAYMENT_TERM_ID
8370         ,       PREFERRED_GRADE             --OPM Added 02/JUN/00
8371         ,       PRICE_LIST_ID
8372         ,       PROGRAM_APPLICATION_ID
8373         ,       PROGRAM_ID
8374         ,       PROGRAM_UPDATE_DATE
8375         ,       REQUEST_ID
8376         ,       SALESREP_ID
8377         ,       SHIPPING_METHOD_CODE
8378         ,       ship_from_org_id
8379         ,       ship_to_org_id
8380         ,       SHIPPING_INSTRUCTIONS
8381         ,       PACKING_INSTRUCTIONS
8382         ,       START_DATE_ACTIVE
8383         ,       END_DATE_ACTIVE
8384         ,       MAX_RELEASE_AMOUNT
8385         ,       MIN_RELEASE_AMOUNT
8386         ,       BLANKET_LINE_MAX_AMOUNT
8387         ,       BLANKET_LINE_MIN_AMOUNT
8388         ,       BLANKET_MAX_QUANTITY
8389         ,       BLANKET_MIN_QUANTITY
8390         ,       OVERRIDE_BLANKET_CONTROLS_FLAG
8391         ,       OVERRIDE_RELEASE_CONTROLS_FLAG
8392         ,       ENFORCE_PRICE_LIST_FLAG
8393         ,   enforce_ship_to_flag
8394         ,   enforce_invoice_to_flag
8395         ,   enforce_freight_term_flag
8396         ,   enforce_shipping_method_flag
8397         ,   enforce_payment_term_flag
8398         ,   enforce_accounting_rule_flag
8399         ,   enforce_invoicing_rule_flag
8400         ,       ORDER_QUANTITY_UOM
8401         ,       RELEASED_QUANTITY
8402         ,       FULFILLED_QUANTITY
8403         ,       RETURNED_QUANTITY
8404         ,       ORDER_NUMBER
8405         ,       RELEASED_AMOUNT
8406         ,       FULFILLED_AMOUNT
8407         ,       RETURNED_AMOUNT
8408         ,       RESPONSIBILITY_ID
8409         ,       HIST_TYPE_CODE
8410         ,       HIST_CREATION_DATE
8411         ,       HIST_CREATED_BY
8412         ,       VERSION_NUMBER
8413         ,       SALES_DOCUMENT_TYPE_CODE
8414     	,       TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
8415         ,       source_document_version_number
8416         ,       version_flag
8417         ,       phase_change_flag
8418         ,       modifier_list_line_id
8419         )
8420         VALUES
8421         (       p_line_tbl(I).accounting_rule_id
8422         ,       p_line_tbl(I).agreement_id
8423         ,       p_line_tbl(I).attribute1
8424         ,       p_line_tbl(I).attribute10
8425         ,       p_line_tbl(I).attribute11
8426         ,       p_line_tbl(I).attribute12
8427         ,       p_line_tbl(I).attribute13
8428         ,       p_line_tbl(I).attribute14
8429         ,       p_line_tbl(I).attribute15
8430         ,       p_line_tbl(I).attribute16
8431         ,       p_line_tbl(I).attribute17
8432         ,       p_line_tbl(I).attribute18
8433         ,       p_line_tbl(I).attribute19
8434         ,       p_line_tbl(I).attribute20
8435         ,       p_line_tbl(I).attribute2
8436         ,       p_line_tbl(I).attribute3
8437         ,       p_line_tbl(I).attribute4
8438         ,       p_line_tbl(I).attribute5
8439         ,       p_line_tbl(I).attribute6
8440         ,       p_line_tbl(I).attribute7
8441         ,       p_line_tbl(I).attribute8
8442         ,       p_line_tbl(I).attribute9
8443         ,       p_line_tbl(I).context
8444         ,       p_line_tbl(I).created_by
8445         ,       p_line_tbl(I).creation_date
8446         ,       p_line_tbl(I).cust_po_number
8447         ,       p_line_tbl(I).deliver_to_org_id
8448         ,       p_line_tbl(I).freight_terms_code
8449         ,       p_line_tbl(I).header_id
8450         ,       p_line_tbl(I).min_release_quantity
8451         ,       p_line_tbl(I).max_release_quantity
8452         ,       p_line_tbl(I).inventory_item_id
8453         ,       p_line_tbl(I).invoice_to_org_id
8454         ,       p_line_tbl(I).invoicing_rule_id
8455         ,       p_line_tbl(I).ordered_item_id
8456         ,       p_line_tbl(I).item_identifier_type
8457 
8458         ,       p_line_tbl(I).ordered_item
8459         ,       p_line_tbl(I).item_type_code
8460         ,       p_line_tbl(I).last_updated_by
8461         ,       p_line_tbl(I).last_update_date
8462         ,       p_line_tbl(I).last_update_login
8463         ,       p_line_tbl(I).line_id
8464         ,       p_line_tbl(I).line_number
8465         ,       p_line_tbl(I).payment_term_id
8466         ,       p_line_tbl(I).preferred_grade            --OPM 02/JUN/00
8467         ,       p_line_tbl(I).price_list_id
8468         ,       p_line_tbl(I).program_application_id
8469         ,       p_line_tbl(I).program_id
8470         ,       p_line_tbl(I).program_update_date
8471         ,       p_line_tbl(I).request_id
8472         ,       p_line_tbl(I).salesrep_id
8473         ,       p_line_tbl(I).shipping_method_code
8474         ,       p_line_tbl(I).ship_from_org_id
8475         ,       p_line_tbl(I).ship_to_org_id
8476         ,       p_line_tbl(I).shipping_instructions
8477         ,       p_line_tbl(I).packing_instructions
8478         ,       p_line_tbl(I).START_DATE_ACTIVE
8479         ,       p_line_tbl(I).END_DATE_ACTIVE
8480         ,       p_line_tbl(I).MAX_RELEASE_AMOUNT
8481         ,       p_line_tbl(I).MIN_RELEASE_AMOUNT
8482         ,       p_line_tbl(I).BLANKET_MAX_AMOUNT
8483         ,       p_line_tbl(I).BLANKET_MIN_AMOUNT
8484         ,       p_line_tbl(I).BLANKET_MAX_QUANTITY
8485         ,       p_line_tbl(I).BLANKET_MIN_QUANTITY
8486         ,       p_line_tbl(I).OVERRIDE_BLANKET_CONTROLS_FLAG
8487         ,       p_line_tbl(I).OVERRIDE_RELEASE_CONTROLS_FLAG
8488         ,       p_line_tbl(I).ENFORCE_PRICE_LIST_FLAG
8489         ,       p_line_tbl(I).enforce_ship_to_flag
8490         ,       p_line_tbl(I).enforce_invoice_to_flag
8491         ,       p_line_tbl(I).enforce_freight_term_flag
8492         ,       p_line_tbl(I).enforce_shipping_method_flag
8493         ,       p_line_tbl(I).enforce_payment_term_flag
8494         ,       p_line_tbl(I).enforce_accounting_rule_flag
8495         ,       p_line_tbl(I).enforce_invoicing_rule_flag
8496         ,       p_line_tbl(I).ORDER_QUANTITY_UOM
8497         ,       p_line_tbl(I).RELEASED_QUANTITY
8498         ,       p_line_tbl(I).FULFILLED_QUANTITY
8499         ,       p_line_tbl(I).RETURNED_QUANTITY
8500         ,       p_line_tbl(I).ORDER_NUMBER
8501         ,       p_line_tbl(I).RELEASED_AMOUNT
8502         ,       p_line_tbl(I).FULFILLED_AMOUNT
8503         ,       p_line_tbl(I).RETURNED_AMOUNT
8504         ,       nvl(FND_GLOBAL.RESP_ID,-1)
8505         ,       'UPDATE'
8506         ,       sysdate
8507         ,       nvl(FND_GLOBAL.USER_ID, -1)
8508         ,       p_header_rec.version_number
8509         ,       'B'
8510     	,       p_line_tbl(I).TRANSACTION_PHASE_CODE -- hashraf ... start of pack J
8511     	,       p_line_tbl(I).source_document_version_number
8512         ,       p_version_flag
8513         ,       p_phase_change_flag
8514         ,       p_line_tbl(I).modifier_list_line_id
8515         );
8516 
8517     END LOOP;
8518 
8519    if l_debug_level > 0 then
8520     oe_debug_pub.ADD('After inserting blanket history', 1);
8521    end if;
8522 
8523 END Insert_History_Records;
8524 
8525 Procedure Return_Lines_Exist( p_application_id IN NUMBER,
8526 					p_entity_short_name in VARCHAR2,
8527 					p_validation_entity_short_name in VARCHAR2,
8528 					p_validation_tmplt_short_name in VARCHAR2,
8529 					p_record_set_tmplt_short_name in VARCHAR2,
8530 					p_scope in VARCHAR2,
8531 					p_result OUT NOCOPY NUMBER ) IS
8532 
8533 l_blanket_number number;
8534 l_blanket_line_number number;
8535 --
8536 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8537 --
8538 BEGIN
8539     if l_debug_level > 0 then
8540 	oe_debug_pub.add('Enter OE_Blanket_Util.Returns_Exist');
8541     end if;
8542 
8543   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8544      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8545      l_blanket_line_number := oe_blanket_line_security.g_record.line_number;
8546 
8547     BEGIN
8548        Select 1 into p_result
8549        from oe_order_lines
8550        where blanket_number = l_blanket_number
8551        and blanket_line_number = l_blanket_line_number
8552        and line_category_code = 'RETURN'
8553        and rownum = 1;
8554     EXCEPTION
8555       WHEN NO_DATA_FOUND THEN
8556         p_result := 0;
8557     END;
8558 
8559   Else
8560      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8561 
8562     BEGIN
8563        Select 1 into p_result
8564        from oe_order_lines
8565        where blanket_number = l_blanket_number
8566        and line_category_code = 'RETURN'
8567        and rownum = 1;
8568     EXCEPTION
8569       WHEN NO_DATA_FOUND THEN
8570         p_result := 0;
8571     END;
8572 
8573   End If;
8574 
8575 END Return_Lines_Exist;
8576 
8577 Procedure Release_Lines_Exist( p_application_id IN NUMBER,
8578 					p_entity_short_name in VARCHAR2,
8579 					p_validation_entity_short_name in VARCHAR2,
8580 					p_validation_tmplt_short_name in VARCHAR2,
8581 					p_record_set_tmplt_short_name in VARCHAR2,
8582 					p_scope in VARCHAR2,
8583 					p_result OUT NOCOPY NUMBER ) IS
8584 
8585 l_blanket_number number;
8586 l_blanket_line_number number;
8587 --
8588 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8589 --
8590 BEGIN
8591     if l_debug_level > 0 then
8592 	oe_debug_pub.add('Enter OE_Blanket_Util.Release_Lines_Exist');
8593     end if;
8594 
8595   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8596      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8597      l_blanket_line_number := oe_blanket_line_security.g_record.line_number;
8598 
8599     BEGIN
8600        Select 1 into p_result
8601        from oe_order_lines
8602        where blanket_number = l_blanket_number
8603        and blanket_line_number = l_blanket_line_number
8604        and rownum = 1;
8605     EXCEPTION
8606       WHEN NO_DATA_FOUND THEN
8607         p_result := 0;
8608     END;
8609 
8610   Else
8611      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8612 
8613     BEGIN
8614        Select 1 into p_result
8615        from oe_order_lines
8616        where blanket_number = l_blanket_number
8617        and rownum = 1;
8618     EXCEPTION
8619       WHEN NO_DATA_FOUND THEN
8620         p_result := 0;
8621     END;
8622 
8623   End If;
8624 
8625 END Release_Lines_Exist;
8626 
8627 Procedure Release_Headers_Exist( p_application_id IN NUMBER,
8628 					p_entity_short_name in VARCHAR2,
8629 					p_validation_entity_short_name in VARCHAR2,
8630 					p_validation_tmplt_short_name in VARCHAR2,
8631 					p_record_set_tmplt_short_name in VARCHAR2,
8632 					p_scope in VARCHAR2,
8633 					p_result OUT NOCOPY NUMBER ) IS
8634 
8635 l_blanket_number number;
8636 l_blanket_line_number number;
8637 --
8638 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8639 --
8640 BEGIN
8641     if l_debug_level > 0 then
8642 	oe_debug_pub.add('Enter OE_Blanket_Util.Release_Lines_Exist');
8643     end if;
8644 
8645   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8646      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8647 
8648     BEGIN
8649        Select 1 into p_result
8650        from oe_order_headers_all
8651        where blanket_number = l_blanket_number
8652        and rownum = 1;
8653     EXCEPTION
8654       WHEN NO_DATA_FOUND THEN
8655         p_result := 0;
8656     END;
8657 
8658   Else
8659      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8660 
8661     BEGIN
8662        Select 1 into p_result
8663        from oe_order_headers_all
8664        where blanket_number = l_blanket_number
8665        and rownum = 1;
8666     EXCEPTION
8667       WHEN NO_DATA_FOUND THEN
8668         p_result := 0;
8669     END;
8670 
8671   End If;
8672 
8673 END Release_Headers_Exist;
8674 
8675 Procedure Open_Release_Lines_Exist( p_application_id IN NUMBER,
8676 					p_entity_short_name in VARCHAR2,
8677 					p_validation_entity_short_name in VARCHAR2,
8678 					p_validation_tmplt_short_name in VARCHAR2,
8679 					p_record_set_tmplt_short_name in VARCHAR2,
8680 					p_scope in VARCHAR2,
8681 					p_result OUT NOCOPY NUMBER ) IS
8682 
8683 l_blanket_number number;
8684 l_blanket_line_number number;
8685 --
8686 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8687 --
8688 BEGIN
8689     if l_debug_level > 0 then
8690 	oe_debug_pub.add('Enter OE_Blanket_Util.Open_Release_Lines_Exist');
8691     end if;
8692 
8693   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8694      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8695      l_blanket_line_number := oe_blanket_line_security.g_record.line_number;
8696 
8697     BEGIN
8698        Select 1 into p_result
8699        from oe_order_lines
8700        where blanket_number = l_blanket_number
8701        and blanket_line_number = l_blanket_line_number
8702        and open_flag = 'Y'
8703        and rownum = 1;
8704     EXCEPTION
8705       WHEN NO_DATA_FOUND THEN
8706         p_result := 0;
8707     END;
8708 
8709   Else
8710      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8711 
8712     BEGIN
8713        Select 1 into p_result
8714        from oe_order_lines
8715        where blanket_number = l_blanket_number
8716        and open_flag = 'Y'
8717        and rownum = 1;
8718     EXCEPTION
8719       WHEN NO_DATA_FOUND THEN
8720         p_result := 0;
8721     END;
8722 
8723   End If;
8724 
8725 END Open_Release_Lines_Exist;
8726 
8727 Procedure Open_Release_Headers_Exist( p_application_id IN NUMBER,
8728 					p_entity_short_name in VARCHAR2,
8729 					p_validation_entity_short_name in VARCHAR2,
8730 					p_validation_tmplt_short_name in VARCHAR2,
8731 					p_record_set_tmplt_short_name in VARCHAR2,
8732 					p_scope in VARCHAR2,
8733 					p_result OUT NOCOPY NUMBER ) IS
8734 
8735 l_blanket_number number;
8736 l_blanket_line_number number;
8737 --
8738 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8739 --
8740 BEGIN
8741     if l_debug_level > 0 then
8742 	oe_debug_pub.add('Enter OE_Blanket_Util.Open_Release_Lines_Exist');
8743     end if;
8744 
8745   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8746      l_blanket_number := oe_blanket_line_security.g_record.order_number;
8747 
8748     BEGIN
8749        Select 1 into p_result
8750        from oe_order_headers_all
8751        where blanket_number = l_blanket_number
8752        and open_flag = 'Y'
8753        and rownum = 1;
8754     EXCEPTION
8755       WHEN NO_DATA_FOUND THEN
8756         p_result := 0;
8757     END;
8758 
8759   Else
8760      l_blanket_number := oe_blanket_header_security.g_record.order_number;
8761 
8762     BEGIN
8763        Select 1 into p_result
8764        from oe_order_headers_all
8765        where blanket_number = l_blanket_number
8766        and open_flag = 'Y'
8767        and rownum = 1;
8768     EXCEPTION
8769       WHEN NO_DATA_FOUND THEN
8770         p_result := 0;
8771     END;
8772 
8773   End If;
8774 
8775 END Open_Release_Headers_Exist;
8776 
8777 Procedure Is_Expired( p_application_id IN NUMBER,
8778 					p_entity_short_name in VARCHAR2,
8779 					p_validation_entity_short_name in VARCHAR2,
8780 					p_validation_tmplt_short_name in VARCHAR2,
8781 					p_record_set_tmplt_short_name in VARCHAR2,
8782 					p_scope in VARCHAR2,
8783 					p_result OUT NOCOPY NUMBER ) IS
8784 
8785 --
8786 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
8787 --
8788 BEGIN
8789     if l_debug_level > 0 then
8790 	oe_debug_pub.add('Enter OE_Blanket_Util.Is_Expired');
8791     end if;
8792 
8793   If p_validation_entity_short_name = 'BLANKET_LINE' Then
8794     If (trunc(sysdate) >= OE_Blanket_Line_Security.g_record.start_date_active
8795        AND trunc(sysdate) <= trunc(nvl(OE_Blanket_Line_Security.g_record.end_date_active, sysdate)))
8796     Then
8797        p_result := 0;
8798     Else
8799        p_result := 1;
8800     End If;
8801   Else
8802     If (trunc(sysdate) >= OE_Blanket_Header_Security.g_record.start_date_active
8803        AND trunc(sysdate) <= trunc(nvl(OE_Blanket_Header_Security.g_record.end_date_active, sysdate)))
8804     Then
8805        p_result := 0;
8806     Else
8807        p_result := 1;
8808     End If;
8809 
8810   End If;
8811 
8812 END Is_Expired;
8813 
8814 FUNCTION G_MISS_OE_AK_BLKT_HEADER_REC
8815 RETURN OE_AK_BLANKET_HEADERS_V%ROWTYPE IS
8816 	l_rowtype_rec					OE_AK_BLANKET_HEADERS_V%ROWTYPE;
8817 BEGIN
8818 
8819 	l_rowtype_rec.ACCOUNTING_RULE_ID			:= FND_API.G_MISS_NUM;
8820 	l_rowtype_rec.CONVERSION_TYPE_CODE			:= FND_API.G_MISS_CHAR;
8821 	l_rowtype_rec.CUST_PO_NUMBER				:= FND_API.G_MISS_CHAR;
8822 	l_rowtype_rec.DELIVER_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8823 	l_rowtype_rec.END_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
8824 	l_rowtype_rec.FREIGHT_TERMS_CODE			:= FND_API.G_MISS_CHAR;
8825 	l_rowtype_rec.HEADER_ID					:= FND_API.G_MISS_NUM;
8826 	l_rowtype_rec.INVOICE_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8827 	l_rowtype_rec.INVOICING_RULE_ID				:= FND_API.G_MISS_NUM;
8828 	l_rowtype_rec.LAST_UPDATED_BY				:= FND_API.G_MISS_NUM;
8829 	l_rowtype_rec.LAST_UPDATE_DATE				:= FND_API.G_MISS_DATE;
8830 	l_rowtype_rec.LAST_UPDATE_LOGIN				:= FND_API.G_MISS_NUM;
8831 	l_rowtype_rec.ORDER_NUMBER					:= FND_API.G_MISS_NUM;
8832 	l_rowtype_rec.ORDER_TYPE_ID					:= FND_API.G_MISS_NUM;
8833 	l_rowtype_rec.ORG_ID						:= FND_API.G_MISS_NUM;
8834 	l_rowtype_rec.PACKING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
8835 	l_rowtype_rec.PAYMENT_TERM_ID				:= FND_API.G_MISS_NUM;
8836 	l_rowtype_rec.PRICE_LIST_ID					:= FND_API.G_MISS_NUM;
8837 	l_rowtype_rec.PROGRAM_APPLICATION_ID		:= FND_API.G_MISS_NUM;
8838 	l_rowtype_rec.PROGRAM_ID					:= FND_API.G_MISS_NUM;
8839 	l_rowtype_rec.PROGRAM_UPDATE_DATE			:= FND_API.G_MISS_DATE;
8840 	l_rowtype_rec.SALESREP_ID					:= FND_API.G_MISS_NUM;
8841 	l_rowtype_rec.SHIPPING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
8842 	l_rowtype_rec.SHIPPING_METHOD_CODE			:= FND_API.G_MISS_CHAR;
8843 	l_rowtype_rec.SHIP_FROM_ORG_ID				:= FND_API.G_MISS_NUM;
8844 	l_rowtype_rec.SHIP_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8845 	l_rowtype_rec.SOLD_TO_CONTACT_ID			:= FND_API.G_MISS_NUM;
8846 	l_rowtype_rec.SOLD_TO_ORG_ID				:= FND_API.G_MISS_NUM;
8847 	l_rowtype_rec.START_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
8848 	l_rowtype_rec.TRANSACTIONAL_CURR_CODE		:= FND_API.G_MISS_CHAR;
8849 	l_rowtype_rec.VERSION_NUMBER				:= FND_API.G_MISS_NUM;
8850 
8851 	l_rowtype_rec.CREATED_BY           := FND_API.G_MISS_NUM;
8852 	l_rowtype_rec.CREATION_DATE           := FND_API.G_MISS_DATE;
8853 	l_rowtype_rec.REVISION_CHANGE_DATE           := FND_API.G_MISS_DATE;
8854 	l_rowtype_rec.REVISION_CHANGE_REASON_CODE           := FND_API.G_MISS_CHAR;
8855 	l_rowtype_rec.REVISION_CHANGE_COMMENTS           := FND_API.G_MISS_CHAR;
8856 	l_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := FND_API.G_MISS_CHAR;
8857 	l_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := FND_API.G_MISS_CHAR;
8858 	l_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := FND_API.G_MISS_CHAR;
8859 	l_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := FND_API.G_MISS_CHAR;
8860 	l_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := FND_API.G_MISS_CHAR;
8861 	l_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := FND_API.G_MISS_CHAR;
8862 	l_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := FND_API.G_MISS_CHAR;
8863 	l_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := FND_API.G_MISS_CHAR;
8864 	l_rowtype_rec.BLANKET_MIN_AMOUNT           := FND_API.G_MISS_NUM;
8865 	l_rowtype_rec.BLANKET_MAX_AMOUNT           := FND_API.G_MISS_NUM;
8866 	l_rowtype_rec.OVERRIDE_AMOUNT_FLAG           := FND_API.G_MISS_CHAR;
8867 	l_rowtype_rec.ON_HOLD_FLAG           := FND_API.G_MISS_CHAR;
8868 	l_rowtype_rec.SUPPLIER_SIGNATURE            := FND_API.G_MISS_CHAR;
8869 	l_rowtype_rec.SUPPLIER_SIGNATURE_DATE            := FND_API.G_MISS_DATE;
8870 	l_rowtype_rec.CUSTOMER_SIGNATURE            := FND_API.G_MISS_CHAR;
8871 	l_rowtype_rec.CUSTOMER_SIGNATURE_DATE            := FND_API.G_MISS_DATE;
8872 	l_rowtype_rec.FLOW_STATUS_CODE            := FND_API.G_MISS_CHAR;
8873 	l_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID            := FND_API.G_MISS_NUM;
8874 	l_rowtype_rec.NEW_MODIFIER_LIST_ID            := FND_API.G_MISS_NUM;
8875 	l_rowtype_rec.NEW_PRICE_LIST_ID            := FND_API.G_MISS_NUM;
8876 	l_rowtype_rec.DEFAULT_DISCOUNT_PERCENT            := FND_API.G_MISS_NUM;
8877 	l_rowtype_rec.DEFAULT_DISCOUNT_AMOUNT            := FND_API.G_MISS_NUM;
8878 	l_rowtype_rec.CONTRACT_TERMS            := FND_API.G_MISS_CHAR;
8879 	l_rowtype_rec.OPEN_FLAG            := FND_API.G_MISS_CHAR;
8880 
8881     --QUOTING changes
8882 	l_rowtype_rec.TRANSACTION_PHASE_CODE       		:= FND_API.G_MISS_CHAR;
8883 	l_rowtype_rec.USER_STATUS_CODE       			:= FND_API.G_MISS_CHAR;
8884 --	l_rowtype_rec.QUOTE_NUMBER       			:= FND_API.G_MISS_NUM;
8885 --	l_rowtype_rec.QUOTE_DATE     				:= FND_API.G_MISS_DATE;
8886 	l_rowtype_rec.SALES_DOCUMENT_NAME       		:= FND_API.G_MISS_CHAR;
8887 	l_rowtype_rec.SOLD_TO_SITE_USE_ID       		:= FND_API.G_MISS_NUM;
8888 	l_rowtype_rec.SOURCE_DOCUMENT_VERSION_NUMBER   		:= FND_API.G_MISS_NUM;
8889 	l_rowtype_rec.DRAFT_SUBMITTED_FLAG       		:= FND_API.G_MISS_CHAR;
8890         -- QUOTING changes END
8891 
8892 	RETURN l_rowtype_rec;
8893 
8894 EXCEPTION
8895 
8896 	WHEN OTHERS THEN
8897 		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
8898 		THEN
8899 			OE_MSG_PUB.Add_Exc_Msg
8900 			(   G_PKG_NAME
8901 			,   'G_MISS_OE_AK_HEADER_REC'
8902 			);
8903 		END IF;
8904 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
8905 
8906 END G_MISS_OE_AK_BLKT_HEADER_REC;
8907 
8908 PROCEDURE API_Rec_To_Rowtype_Rec
8909 (   p_HEADER_rec                    IN  OE_Blanket_PUB.HEADER_Rec_Type
8910 ,   x_rowtype_rec                   IN OUT NOCOPY OE_AK_BLANKET_HEADERS_V%ROWTYPE
8911 ) IS
8912 BEGIN
8913 
8914 	x_rowtype_rec.ACCOUNTING_RULE_ID       := p_header_rec.ACCOUNTING_RULE_ID;
8915 	x_rowtype_rec.CONVERSION_TYPE_CODE     := p_header_rec.CONVERSION_TYPE_CODE;
8916 	x_rowtype_rec.CUST_PO_NUMBER           := p_header_rec.CUST_PO_NUMBER;
8917 	x_rowtype_rec.DELIVER_TO_ORG_ID        := p_header_rec.DELIVER_TO_ORG_ID;
8918 	x_rowtype_rec.END_DATE_ACTIVE          := p_header_rec.END_DATE_ACTIVE;
8919 	x_rowtype_rec.FREIGHT_TERMS_CODE       := p_header_rec.FREIGHT_TERMS_CODE;
8920 	x_rowtype_rec.HEADER_ID       := p_header_rec.HEADER_ID;
8921 	x_rowtype_rec.INVOICE_TO_ORG_ID        := p_header_rec.INVOICE_TO_ORG_ID;
8922 	x_rowtype_rec.INVOICING_RULE_ID        := p_header_rec.INVOICING_RULE_ID;
8923 	x_rowtype_rec.LAST_UPDATED_BY          := p_header_rec.LAST_UPDATED_BY;
8924 	x_rowtype_rec.LAST_UPDATE_DATE         := p_header_rec.LAST_UPDATE_DATE;
8925 	x_rowtype_rec.LAST_UPDATE_LOGIN        := p_header_rec.LAST_UPDATE_LOGIN;
8926 	x_rowtype_rec.ORDER_NUMBER             := p_header_rec.ORDER_NUMBER;
8927 	x_rowtype_rec.ORDER_TYPE_ID            := p_header_rec.ORDER_TYPE_ID;
8928 	x_rowtype_rec.ORG_ID                   := p_header_rec.ORG_ID;
8929 	x_rowtype_rec.PACKING_INSTRUCTIONS     := p_header_rec.PACKING_INSTRUCTIONS;
8930 	x_rowtype_rec.PAYMENT_TERM_ID          := p_header_rec.PAYMENT_TERM_ID;
8931 	x_rowtype_rec.PRICE_LIST_ID            := p_header_rec.PRICE_LIST_ID;
8932 	x_rowtype_rec.PROGRAM_APPLICATION_ID   := p_header_rec.PROGRAM_APPLICATION_ID;
8933 	x_rowtype_rec.PROGRAM_ID               := p_header_rec.PROGRAM_ID;
8934 	x_rowtype_rec.PROGRAM_UPDATE_DATE      := p_header_rec.PROGRAM_UPDATE_DATE;
8935 	x_rowtype_rec.SALESREP_ID              := p_header_rec.SALESREP_ID;
8936 	x_rowtype_rec.SHIPPING_INSTRUCTIONS    := p_header_rec.SHIPPING_INSTRUCTIONS;
8937 	x_rowtype_rec.SHIPPING_METHOD_CODE     := p_header_rec.SHIPPING_METHOD_CODE;
8938 	x_rowtype_rec.SHIP_FROM_ORG_ID         := p_header_rec.SHIP_FROM_ORG_ID;
8939 	x_rowtype_rec.SHIP_TO_ORG_ID           := p_header_rec.SHIP_TO_ORG_ID;
8940 	x_rowtype_rec.SOLD_TO_CONTACT_ID       := p_header_rec.SOLD_TO_CONTACT_ID;
8941 	x_rowtype_rec.SOLD_TO_ORG_ID           := p_header_rec.SOLD_TO_ORG_ID;
8942 	x_rowtype_rec.START_DATE_ACTIVE        := p_header_rec.START_DATE_ACTIVE;
8943 	x_rowtype_rec.TRANSACTIONAL_CURR_CODE  := p_header_rec.TRANSACTIONAL_CURR_CODE;
8944 	x_rowtype_rec.VERSION_NUMBER           := p_header_rec.VERSION_NUMBER;
8945 
8946 	x_rowtype_rec.CREATED_BY           := p_header_rec.CREATED_BY;
8947 	x_rowtype_rec.CREATION_DATE           := p_header_rec.CREATION_DATE;
8948 	x_rowtype_rec.REVISION_CHANGE_DATE           := p_header_rec.REVISION_CHANGE_DATE;
8949 	x_rowtype_rec.REVISION_CHANGE_REASON_CODE           := p_header_rec.REVISION_CHANGE_REASON_CODE;
8950 	x_rowtype_rec.REVISION_CHANGE_COMMENTS           := p_header_rec.REVISION_CHANGE_COMMENTS;
8951 	x_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := p_header_rec.ENFORCE_SHIP_TO_FLAG;
8952 	x_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_header_rec.ENFORCE_FREIGHT_TERM_FLAG;
8953 	x_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_header_rec.ENFORCE_SHIPPING_METHOD_FLAG;
8954 	x_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := p_header_rec.ENFORCE_PRICE_LIST_FLAG;
8955 	x_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_header_rec.ENFORCE_PAYMENT_TERM_FLAG;
8956 	x_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := p_header_rec.ENFORCE_INVOICE_TO_FLAG;
8957 	x_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := p_header_rec.ENFORCE_INVOICING_RULE_FLAG;
8958 	x_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_header_rec.ENFORCE_ACCOUNTING_RULE_FLAG;
8959 	x_rowtype_rec.BLANKET_MIN_AMOUNT           := p_header_rec.BLANKET_MIN_AMOUNT;
8960 	x_rowtype_rec.BLANKET_MAX_AMOUNT           := p_header_rec.BLANKET_MAX_AMOUNT;
8961 	x_rowtype_rec.OVERRIDE_AMOUNT_FLAG           := p_header_rec.OVERRIDE_AMOUNT_FLAG;
8962 	x_rowtype_rec.ON_HOLD_FLAG           := p_header_rec.ON_HOLD_FLAG;
8963 	x_rowtype_rec.SUPPLIER_SIGNATURE            := p_header_rec.SUPPLIER_SIGNATURE;
8964 	x_rowtype_rec.SUPPLIER_SIGNATURE_DATE            := p_header_rec.SUPPLIER_SIGNATURE_DATE;
8965 	x_rowtype_rec.CUSTOMER_SIGNATURE            := p_header_rec.CUSTOMER_SIGNATURE;
8966 	x_rowtype_rec.CUSTOMER_SIGNATURE_DATE            := p_header_rec.CUSTOMER_SIGNATURE_DATE;
8967 --	x_rowtype_rec.QUOTE_NUMBER            := p_header_rec.QUOTE_NUMBER;
8968 --	x_rowtype_rec.QUOTE_DATE            := p_header_rec.QUOTE_DATE;
8969 	x_rowtype_rec.FLOW_STATUS_CODE            := p_header_rec.FLOW_STATUS_CODE;
8970 	x_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID            := p_header_rec.SOURCE_DOCUMENT_TYPE_ID;
8971 	x_rowtype_rec.NEW_MODIFIER_LIST_ID            := p_header_rec.NEW_MODIFIER_LIST_ID;
8972 	x_rowtype_rec.NEW_PRICE_LIST_ID            := p_header_rec.NEW_PRICE_LIST_ID;
8973 	x_rowtype_rec.DEFAULT_DISCOUNT_PERCENT            := p_header_rec.DEFAULT_DISCOUNT_PERCENT;
8974 	x_rowtype_rec.DEFAULT_DISCOUNT_AMOUNT            := p_header_rec.DEFAULT_DISCOUNT_AMOUNT;
8975 	x_rowtype_rec.CONTRACT_TERMS            := p_header_rec.CONTRACT_TEMPLATE_ID;
8976 	x_rowtype_rec.OPEN_FLAG            := p_header_rec.OPEN_FLAG;
8977            --bug 6531947
8978            x_rowtype_rec.CONTEXT               := p_header_rec.CONTEXT;
8979 	   x_rowtype_rec.ATTRIBUTE1            := p_header_rec.ATTRIBUTE1;
8980 	   x_rowtype_rec.ATTRIBUTE2            := p_header_rec.ATTRIBUTE2;
8981 	   x_rowtype_rec.ATTRIBUTE3            := p_header_rec.ATTRIBUTE3;
8982 	   x_rowtype_rec.ATTRIBUTE4            := p_header_rec.ATTRIBUTE4;
8983 	   x_rowtype_rec.ATTRIBUTE5            := p_header_rec.ATTRIBUTE5;
8984 	   x_rowtype_rec.ATTRIBUTE6            := p_header_rec.ATTRIBUTE6;
8985 	   x_rowtype_rec.ATTRIBUTE7            := p_header_rec.ATTRIBUTE7;
8986 	   x_rowtype_rec.ATTRIBUTE8            := p_header_rec.ATTRIBUTE8;
8987 	   x_rowtype_rec.ATTRIBUTE9            := p_header_rec.ATTRIBUTE9;
8988 	   x_rowtype_rec.ATTRIBUTE10            := p_header_rec.ATTRIBUTE10;
8989 	   x_rowtype_rec.ATTRIBUTE11            := p_header_rec.ATTRIBUTE11;
8990 	   x_rowtype_rec.ATTRIBUTE12            := p_header_rec.ATTRIBUTE12;
8991 	   x_rowtype_rec.ATTRIBUTE13            := p_header_rec.ATTRIBUTE13;
8992 	   x_rowtype_rec.ATTRIBUTE14            := p_header_rec.ATTRIBUTE14;
8993 	   x_rowtype_rec.ATTRIBUTE15            := p_header_rec.ATTRIBUTE15;
8994 	   x_rowtype_rec.ATTRIBUTE16            := p_header_rec.ATTRIBUTE16;
8995 	   x_rowtype_rec.ATTRIBUTE17            := p_header_rec.ATTRIBUTE17;
8996 	   x_rowtype_rec.ATTRIBUTE18            := p_header_rec.ATTRIBUTE18;
8997 	   x_rowtype_rec.ATTRIBUTE19            := p_header_rec.ATTRIBUTE19;
8998 	   x_rowtype_rec.ATTRIBUTE20            := p_header_rec.ATTRIBUTE20;
8999 
9000      -- QUOTING changes
9001         x_rowtype_rec.sales_document_name      := p_header_rec.sales_document_name;
9002         x_rowtype_rec.transaction_phase_code   := p_header_rec.transaction_phase_code;
9003         x_rowtype_rec.user_status_code         := p_header_rec.user_status_code;
9004         x_rowtype_rec.draft_submitted_flag     := p_header_rec.draft_submitted_flag;
9005         x_rowtype_rec.source_document_version_number := p_header_rec.source_document_version_number;
9006         x_rowtype_rec.sold_to_site_use_id      := p_header_rec.sold_to_site_use_id;
9007         -- QUOTING changes END
9008 
9009 
9010 EXCEPTION
9011 
9012 	WHEN OTHERS THEN
9013  		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9014 		THEN
9015    			OE_MSG_PUB.Add_Exc_Msg
9016          	(   G_PKG_NAME
9017          	,   'API_Rec_To_RowType_Rec'
9018          	);
9019      	END IF;
9020 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9021 END API_Rec_To_RowType_Rec;
9022 
9023 PROCEDURE Rowtype_Rec_To_API_Rec
9024 (   p_record                        IN  OE_AK_BLANKET_HEADERS_V%ROWTYPE
9025 ,   x_api_rec                       IN OUT NOCOPY OE_Blanket_PUB.HEADER_Rec_Type
9026 ) IS
9027 BEGIN
9028 
9029 	x_api_rec.ACCOUNTING_RULE_ID       := p_record.ACCOUNTING_RULE_ID;
9030 	x_api_rec.CONVERSION_TYPE_CODE     := p_record.CONVERSION_TYPE_CODE;
9031 	x_api_rec.CUST_PO_NUMBER           := p_record.CUST_PO_NUMBER;
9032 	x_api_rec.DELIVER_TO_ORG_ID        := p_record.DELIVER_TO_ORG_ID;
9033         x_api_rec.END_DATE_ACTIVE          := p_record.END_DATE_ACTIVE;
9034 	x_api_rec.FREIGHT_TERMS_CODE       := p_record.FREIGHT_TERMS_CODE;
9035 	x_api_rec.HEADER_ID       := p_record.HEADER_ID;
9036 	x_api_rec.INVOICE_TO_ORG_ID        := p_record.INVOICE_TO_ORG_ID;
9037 	x_api_rec.INVOICING_RULE_ID        := p_record.INVOICING_RULE_ID;
9038 	x_api_rec.ORDER_NUMBER             := p_record.ORDER_NUMBER;
9039 	x_api_rec.ORDER_TYPE_ID            := p_record.ORDER_TYPE_ID;
9040 	x_api_rec.PACKING_INSTRUCTIONS     := p_record.PACKING_INSTRUCTIONS;
9041 	x_api_rec.PAYMENT_TERM_ID          := p_record.PAYMENT_TERM_ID;
9042 	x_api_rec.PRICE_LIST_ID            := p_record.PRICE_LIST_ID;
9043 	x_api_rec.SALESREP_ID              := p_record.SALESREP_ID;
9044 	x_api_rec.SHIPPING_INSTRUCTIONS    := p_record.SHIPPING_INSTRUCTIONS;
9045 	x_api_rec.SHIPPING_METHOD_CODE     := p_record.SHIPPING_METHOD_CODE;
9046 	x_api_rec.SHIP_FROM_ORG_ID         := p_record.SHIP_FROM_ORG_ID;
9047 	x_api_rec.SHIP_TO_ORG_ID           := p_record.SHIP_TO_ORG_ID;
9048 	x_api_rec.SOLD_TO_CONTACT_ID       := p_record.SOLD_TO_CONTACT_ID;
9049 	x_api_rec.SOLD_TO_ORG_ID           := p_record.SOLD_TO_ORG_ID;
9050         x_api_rec.START_DATE_ACTIVE        := p_record.START_DATE_ACTIVE;
9051 	x_api_rec.TRANSACTIONAL_CURR_CODE  := p_record.TRANSACTIONAL_CURR_CODE;
9052 	x_api_rec.VERSION_NUMBER           := p_record.VERSION_NUMBER;
9053 
9054 	x_api_rec.CREATED_BY           := p_record.CREATED_BY;
9055 	x_api_rec.CREATION_DATE           := p_record.CREATION_DATE;
9056 	x_api_rec.REVISION_CHANGE_DATE           := p_record.REVISION_CHANGE_DATE;
9057 	x_api_rec.REVISION_CHANGE_REASON_CODE           := p_record.REVISION_CHANGE_REASON_CODE;
9058 	x_api_rec.REVISION_CHANGE_COMMENTS           := p_record.REVISION_CHANGE_COMMENTS;
9059 	x_api_rec.ENFORCE_SHIP_TO_FLAG           := p_record.ENFORCE_SHIP_TO_FLAG;
9060 	x_api_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_record.ENFORCE_FREIGHT_TERM_FLAG;
9061 	x_api_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_record.ENFORCE_SHIPPING_METHOD_FLAG;
9062 	x_api_rec.ENFORCE_PRICE_LIST_FLAG           := p_record.ENFORCE_PRICE_LIST_FLAG;
9063 	x_api_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_record.ENFORCE_PAYMENT_TERM_FLAG;
9064 	x_api_rec.ENFORCE_INVOICE_TO_FLAG           := p_record.ENFORCE_INVOICE_TO_FLAG;
9065 	x_api_rec.ENFORCE_INVOICING_RULE_FLAG           := p_record.ENFORCE_INVOICING_RULE_FLAG;
9066 	x_api_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_record.ENFORCE_ACCOUNTING_RULE_FLAG;
9067 	x_api_rec.BLANKET_MIN_AMOUNT           := p_record.BLANKET_MIN_AMOUNT;
9068 	x_api_rec.BLANKET_MAX_AMOUNT           := p_record.BLANKET_MAX_AMOUNT;
9069 	x_api_rec.OVERRIDE_AMOUNT_FLAG           := p_record.OVERRIDE_AMOUNT_FLAG;
9070 	x_api_rec.ON_HOLD_FLAG           := p_record.ON_HOLD_FLAG;
9071 	x_api_rec.SUPPLIER_SIGNATURE            := p_record.SUPPLIER_SIGNATURE;
9072 	x_api_rec.SUPPLIER_SIGNATURE_DATE            := p_record.SUPPLIER_SIGNATURE_DATE;
9073 	x_api_rec.CUSTOMER_SIGNATURE            := p_record.CUSTOMER_SIGNATURE;
9074 	x_api_rec.CUSTOMER_SIGNATURE_DATE            := p_record.CUSTOMER_SIGNATURE_DATE;
9075 --	x_api_rec.QUOTE_NUMBER            := p_record.QUOTE_NUMBER;
9076 --	x_api_rec.QUOTE_DATE            := p_record.QUOTE_DATE;
9077 	x_api_rec.FLOW_STATUS_CODE            := p_record.FLOW_STATUS_CODE;
9078 	x_api_rec.SOURCE_DOCUMENT_TYPE_ID            := p_record.SOURCE_DOCUMENT_TYPE_ID;
9079 	x_api_rec.NEW_MODIFIER_LIST_ID            := p_record.NEW_MODIFIER_LIST_ID;
9080 	x_api_rec.NEW_PRICE_LIST_ID            := p_record.NEW_PRICE_LIST_ID;
9081 	x_api_rec.DEFAULT_DISCOUNT_PERCENT            := p_record.DEFAULT_DISCOUNT_PERCENT;
9082 	x_api_rec.DEFAULT_DISCOUNT_AMOUNT            := p_record.DEFAULT_DISCOUNT_AMOUNT;
9083 	x_api_rec.CONTRACT_TEMPLATE_ID            := p_record.CONTRACT_TERMS;
9084 	x_api_rec.OPEN_FLAG            := p_record.OPEN_FLAG;
9085         --bug 6531947
9086 
9087           x_api_rec.CONTEXT               := p_record.CONTEXT;
9088 	  x_api_rec.ATTRIBUTE1            := p_record.ATTRIBUTE1;
9089 	  x_api_rec.ATTRIBUTE2            := p_record.ATTRIBUTE2;
9090 	  x_api_rec.ATTRIBUTE3            := p_record.ATTRIBUTE3;
9091 	  x_api_rec.ATTRIBUTE4            := p_record.ATTRIBUTE4;
9092 	  x_api_rec.ATTRIBUTE5            := p_record.ATTRIBUTE5;
9093 	  x_api_rec.ATTRIBUTE6            := p_record.ATTRIBUTE6;
9094 	  x_api_rec.ATTRIBUTE7            := p_record.ATTRIBUTE7;
9095 	  x_api_rec.ATTRIBUTE8            := p_record.ATTRIBUTE8;
9096 	  x_api_rec.ATTRIBUTE9            := p_record.ATTRIBUTE9;
9097 	  x_api_rec.ATTRIBUTE10            := p_record.ATTRIBUTE10;
9098 	  x_api_rec.ATTRIBUTE11            := p_record.ATTRIBUTE11;
9099 	  x_api_rec.ATTRIBUTE12            := p_record.ATTRIBUTE12;
9100 	  x_api_rec.ATTRIBUTE13            := p_record.ATTRIBUTE13;
9101 	  x_api_rec.ATTRIBUTE14            := p_record.ATTRIBUTE14;
9102 	  x_api_rec.ATTRIBUTE15            := p_record.ATTRIBUTE15;
9103 	  x_api_rec.ATTRIBUTE16            := p_record.ATTRIBUTE16;
9104 	  x_api_rec.ATTRIBUTE17            := p_record.ATTRIBUTE17;
9105 	  x_api_rec.ATTRIBUTE18            := p_record.ATTRIBUTE18;
9106 	  x_api_rec.ATTRIBUTE19            := p_record.ATTRIBUTE19;
9107 	  x_api_rec.ATTRIBUTE20            := p_record.ATTRIBUTE20;
9108 
9109         -- QUOTING changes
9110 	x_api_rec.sales_document_name      := p_record.sales_document_name;
9111 	x_api_rec.transaction_phase_code   := p_record.transaction_phase_code;
9112 	x_api_rec.user_status_code         := p_record.user_status_code;
9113 	x_api_rec.draft_submitted_flag     := p_record.draft_submitted_flag;
9114 	x_api_rec.source_document_version_number := p_record.source_document_version_number;
9115 	x_api_rec.sold_to_site_use_id      := p_record.sold_to_site_use_id;
9116         -- QUOTING changes END
9117 
9118 EXCEPTION
9119 
9120 	WHEN OTHERS THEN
9121 	IF	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9122 	THEN
9123 		OE_MSG_PUB.Add_Exc_Msg
9124          	(   G_PKG_NAME
9125          	,   'Rowtype_Rec_To_API_Rec'
9126          	);
9127 	END IF;
9128 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9129 END Rowtype_Rec_To_API_Rec;
9130 
9131 FUNCTION G_MISS_OE_AK_BLKT_LINE_REC
9132 RETURN OE_AK_BLANKET_LINES_V%ROWTYPE IS
9133 	l_rowtype_rec					OE_AK_BLANKET_LINES_V%ROWTYPE;
9134 BEGIN
9135 
9136 	l_rowtype_rec.ACCOUNTING_RULE_ID			:= FND_API.G_MISS_NUM;
9137 	l_rowtype_rec.CUST_PO_NUMBER				:= FND_API.G_MISS_CHAR;
9138 	l_rowtype_rec.DELIVER_TO_ORG_ID				:= FND_API.G_MISS_NUM;
9139 	l_rowtype_rec.END_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
9140 	l_rowtype_rec.FREIGHT_TERMS_CODE			:= FND_API.G_MISS_CHAR;
9141 	l_rowtype_rec.INVOICE_TO_ORG_ID				:= FND_API.G_MISS_NUM;
9142 	l_rowtype_rec.INVOICING_RULE_ID				:= FND_API.G_MISS_NUM;
9143 	l_rowtype_rec.LINE_ID					:= FND_API.G_MISS_NUM;
9144 	l_rowtype_rec.ORDER_NUMBER					:= FND_API.G_MISS_NUM;
9145 	l_rowtype_rec.PACKING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
9146 	l_rowtype_rec.PAYMENT_TERM_ID				:= FND_API.G_MISS_NUM;
9147 	l_rowtype_rec.PRICE_LIST_ID					:= FND_API.G_MISS_NUM;
9148 	l_rowtype_rec.SALESREP_ID					:= FND_API.G_MISS_NUM;
9149 	l_rowtype_rec.SHIPPING_INSTRUCTIONS			:= FND_API.G_MISS_CHAR;
9150 	l_rowtype_rec.SHIPPING_METHOD_CODE			:= FND_API.G_MISS_CHAR;
9151 	l_rowtype_rec.SHIP_FROM_ORG_ID				:= FND_API.G_MISS_NUM;
9152 	l_rowtype_rec.SHIP_TO_ORG_ID				:= FND_API.G_MISS_NUM;
9153 	l_rowtype_rec.START_DATE_ACTIVE				:= FND_API.G_MISS_DATE;
9154 
9155 	l_rowtype_rec.LINE_NUMBER					:= FND_API.G_MISS_NUM;
9156 	l_rowtype_rec.PREFERRED_GRADE					:= FND_API.G_MISS_NUM;
9157 	l_rowtype_rec.ITEM_IDENTIFIER_TYPE              := FND_API.G_MISS_CHAR;
9158 	l_rowtype_rec.INVENTORY_ITEM_ID              := FND_API.G_MISS_NUM;
9159 	l_rowtype_rec.ORDER_QUANTITY_UOM              := FND_API.G_MISS_CHAR;
9160 	l_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := FND_API.G_MISS_CHAR;
9161 	l_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := FND_API.G_MISS_CHAR;
9162 	l_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := FND_API.G_MISS_CHAR;
9163 	l_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := FND_API.G_MISS_CHAR;
9164 	l_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := FND_API.G_MISS_CHAR;
9165 	l_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := FND_API.G_MISS_CHAR;
9166 	l_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := FND_API.G_MISS_CHAR;
9167 	l_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := FND_API.G_MISS_CHAR;
9168 	l_rowtype_rec.BLANKET_LINE_MIN_AMOUNT           := FND_API.G_MISS_NUM;
9169 	l_rowtype_rec.BLANKET_LINE_MAX_AMOUNT           := FND_API.G_MISS_NUM;
9170 
9171 	l_rowtype_rec.BLANKET_MIN_QUANTITY              := FND_API.G_MISS_NUM;
9172 	l_rowtype_rec.BLANKET_MAX_QUANTITY              := FND_API.G_MISS_NUM;
9173 	l_rowtype_rec.MIN_RELEASE_AMOUNT              := FND_API.G_MISS_NUM;
9174 	l_rowtype_rec.MAX_RELEASE_AMOUNT              := FND_API.G_MISS_NUM;
9175 	l_rowtype_rec.MIN_RELEASE_QUANTITY              := FND_API.G_MISS_NUM;
9176 	l_rowtype_rec.MAX_RELEASE_QUANTITY              := FND_API.G_MISS_NUM;
9177 	l_rowtype_rec.OVERRIDE_BLANKET_CONTROLS_FLAG              := FND_API.G_MISS_CHAR;
9178 	l_rowtype_rec.OVERRIDE_RELEASE_CONTROLS_FLAG              := FND_API.G_MISS_CHAR;
9179 	l_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID              := FND_API.G_MISS_NUM;
9180 	l_rowtype_rec.MODIFIER_LIST_LINE_ID              := FND_API.G_MISS_NUM;
9181 
9182     -- QUOTING changes
9183     l_rowtype_rec.TRANSACTION_PHASE_CODE          := FND_API.G_MISS_CHAR;
9184     l_rowtype_rec.SOURCE_DOCUMENT_VERSION_NUMBER  := FND_API.G_MISS_NUM;
9185 
9186         l_rowtype_rec.unit_list_price := fnd_api.g_miss_num;
9187         l_rowtype_rec.pricing_quantity_uom := fnd_api.g_miss_char;
9188         l_rowtype_rec.discount_percent := fnd_api.g_miss_num;
9189         l_rowtype_rec.discount_amount := fnd_api.g_miss_num;
9190 
9191 	RETURN l_rowtype_rec;
9192 
9193 EXCEPTION
9194 
9195 	WHEN OTHERS THEN
9196 		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9197 		THEN
9198 			OE_MSG_PUB.Add_Exc_Msg
9199 			(   G_PKG_NAME
9200 			,   'G_MISS_OE_AK_LINE_REC'
9201 			);
9202 		END IF;
9203 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9204 
9205 END G_MISS_OE_AK_BLKT_LINE_REC;
9206 
9207 PROCEDURE Line_API_Rec_To_Rowtype_Rec
9208 (   p_LINE_rec                    IN  OE_Blanket_PUB.LINE_Rec_Type
9209 ,   x_rowtype_rec                   IN OUT NOCOPY OE_AK_BLANKET_LINES_V%ROWTYPE
9210 ) IS
9211 BEGIN
9212 
9213 	x_rowtype_rec.ACCOUNTING_RULE_ID       := p_line_rec.ACCOUNTING_RULE_ID;
9214 	x_rowtype_rec.CUST_PO_NUMBER           := p_line_rec.CUST_PO_NUMBER;
9215 	x_rowtype_rec.DELIVER_TO_ORG_ID        := p_line_rec.DELIVER_TO_ORG_ID;
9216 	x_rowtype_rec.END_DATE_ACTIVE          := p_line_rec.END_DATE_ACTIVE;
9217 	x_rowtype_rec.FREIGHT_TERMS_CODE       := p_line_rec.FREIGHT_TERMS_CODE;
9218 	x_rowtype_rec.INVOICE_TO_ORG_ID        := p_line_rec.INVOICE_TO_ORG_ID;
9219 	x_rowtype_rec.INVOICING_RULE_ID        := p_line_rec.INVOICING_RULE_ID;
9220 	x_rowtype_rec.LINE_ID             := p_line_rec.LINE_ID;
9221 	x_rowtype_rec.ORDER_NUMBER             := p_line_rec.ORDER_NUMBER;
9222 	x_rowtype_rec.PACKING_INSTRUCTIONS     := p_line_rec.PACKING_INSTRUCTIONS;
9223 	x_rowtype_rec.PAYMENT_TERM_ID          := p_line_rec.PAYMENT_TERM_ID;
9224 	x_rowtype_rec.PRICE_LIST_ID            := p_line_rec.PRICE_LIST_ID;
9225 	x_rowtype_rec.SALESREP_ID              := p_line_rec.SALESREP_ID;
9226 	x_rowtype_rec.SHIPPING_INSTRUCTIONS    := p_line_rec.SHIPPING_INSTRUCTIONS;
9227 	x_rowtype_rec.SHIPPING_METHOD_CODE     := p_line_rec.SHIPPING_METHOD_CODE;
9228 	x_rowtype_rec.SHIP_FROM_ORG_ID         := p_line_rec.SHIP_FROM_ORG_ID;
9229 	x_rowtype_rec.SHIP_TO_ORG_ID           := p_line_rec.SHIP_TO_ORG_ID;
9230 	x_rowtype_rec.START_DATE_ACTIVE          := p_line_rec.START_DATE_ACTIVE;
9231 
9232 	x_rowtype_rec.LINE_NUMBER             := p_line_rec.LINE_NUMBER;
9233 	x_rowtype_rec.PREFERRED_GRADE              := p_line_rec.PREFERRED_GRADE;
9234 	x_rowtype_rec.ITEM_IDENTIFIER_TYPE              := p_line_rec.ITEM_IDENTIFIER_TYPE;
9235 	x_rowtype_rec.INVENTORY_ITEM_ID              := p_line_rec.INVENTORY_ITEM_ID;
9236 	x_rowtype_rec.ORDER_QUANTITY_UOM              := p_line_rec.ORDER_QUANTITY_UOM;
9237 	x_rowtype_rec.ENFORCE_SHIP_TO_FLAG           := p_line_rec.ENFORCE_SHIP_TO_FLAG;
9238 	x_rowtype_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_line_rec.ENFORCE_FREIGHT_TERM_FLAG;
9239 	x_rowtype_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_line_rec.ENFORCE_SHIPPING_METHOD_FLAG;
9240 	x_rowtype_rec.ENFORCE_PRICE_LIST_FLAG           := p_line_rec.ENFORCE_PRICE_LIST_FLAG;
9241 	x_rowtype_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_line_rec.ENFORCE_PAYMENT_TERM_FLAG;
9242 	x_rowtype_rec.ENFORCE_INVOICE_TO_FLAG           := p_line_rec.ENFORCE_INVOICE_TO_FLAG;
9243 	x_rowtype_rec.ENFORCE_INVOICING_RULE_FLAG           := p_line_rec.ENFORCE_INVOICING_RULE_FLAG;
9244 	x_rowtype_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_line_rec.ENFORCE_ACCOUNTING_RULE_FLAG;
9245 	x_rowtype_rec.BLANKET_LINE_MIN_AMOUNT           := p_line_rec.BLANKET_MIN_AMOUNT;
9246 	x_rowtype_rec.BLANKET_LINE_MAX_AMOUNT           := p_line_rec.BLANKET_MAX_AMOUNT;
9247 
9248 	x_rowtype_rec.BLANKET_MIN_QUANTITY              := p_line_rec.BLANKET_MIN_QUANTITY;
9249 	x_rowtype_rec.BLANKET_MAX_QUANTITY              := p_line_rec.BLANKET_MAX_QUANTITY;
9250 	x_rowtype_rec.MIN_RELEASE_AMOUNT              := p_line_rec.MIN_RELEASE_AMOUNT;
9251 	x_rowtype_rec.MAX_RELEASE_AMOUNT              := p_line_rec.MAX_RELEASE_AMOUNT;
9252 	x_rowtype_rec.MIN_RELEASE_QUANTITY              := p_line_rec.MIN_RELEASE_QUANTITY;
9253 	x_rowtype_rec.MAX_RELEASE_QUANTITY              := p_line_rec.MAX_RELEASE_QUANTITY;
9254 	x_rowtype_rec.OVERRIDE_BLANKET_CONTROLS_FLAG              := p_line_rec.OVERRIDE_BLANKET_CONTROLS_FLAG;
9255 	x_rowtype_rec.OVERRIDE_RELEASE_CONTROLS_FLAG              := p_line_rec.OVERRIDE_RELEASE_CONTROLS_FLAG;
9256 	x_rowtype_rec.SOURCE_DOCUMENT_TYPE_ID              := p_line_rec.SOURCE_DOCUMENT_TYPE_ID;
9257 	x_rowtype_rec.MODIFIER_LIST_LINE_ID              := p_line_rec.MODIFIER_LIST_LINE_ID;
9258         --bug6531947
9259            x_rowtype_rec.CONTEXT               := p_line_rec.CONTEXT;
9260 	   x_rowtype_rec.ATTRIBUTE1            := p_line_rec.ATTRIBUTE1;
9261 	   x_rowtype_rec.ATTRIBUTE2            := p_line_rec.ATTRIBUTE2;
9262 	   x_rowtype_rec.ATTRIBUTE3            := p_line_rec.ATTRIBUTE3;
9263 	   x_rowtype_rec.ATTRIBUTE4            := p_line_rec.ATTRIBUTE4;
9264 	   x_rowtype_rec.ATTRIBUTE5            := p_line_rec.ATTRIBUTE5;
9265 	   x_rowtype_rec.ATTRIBUTE6            := p_line_rec.ATTRIBUTE6;
9266 	   x_rowtype_rec.ATTRIBUTE7            := p_line_rec.ATTRIBUTE7;
9267 	   x_rowtype_rec.ATTRIBUTE8            := p_line_rec.ATTRIBUTE8;
9268 	   x_rowtype_rec.ATTRIBUTE9            := p_line_rec.ATTRIBUTE9;
9269 	   x_rowtype_rec.ATTRIBUTE10            := p_line_rec.ATTRIBUTE10;
9270 	   x_rowtype_rec.ATTRIBUTE11            := p_line_rec.ATTRIBUTE11;
9271 	   x_rowtype_rec.ATTRIBUTE12            := p_line_rec.ATTRIBUTE12;
9272 	   x_rowtype_rec.ATTRIBUTE13            := p_line_rec.ATTRIBUTE13;
9273 	   x_rowtype_rec.ATTRIBUTE14            := p_line_rec.ATTRIBUTE14;
9274 	   x_rowtype_rec.ATTRIBUTE15            := p_line_rec.ATTRIBUTE15;
9275 	   x_rowtype_rec.ATTRIBUTE16            := p_line_rec.ATTRIBUTE16;
9276 	   x_rowtype_rec.ATTRIBUTE17            := p_line_rec.ATTRIBUTE17;
9277 	   x_rowtype_rec.ATTRIBUTE18            := p_line_rec.ATTRIBUTE18;
9278 	   x_rowtype_rec.ATTRIBUTE19            := p_line_rec.ATTRIBUTE19;
9279 	   x_rowtype_rec.ATTRIBUTE20            := p_line_rec.ATTRIBUTE20;
9280 
9281     -- QUOTING changes
9282     x_rowtype_rec.transaction_phase_code := p_line_rec.transaction_phase_code;
9283     x_rowtype_rec.source_document_version_number :=
9284                                 p_line_rec.source_document_version_number;
9285     x_rowtype_rec.unit_list_price := p_line_rec.unit_list_price;
9286     x_rowtype_rec.pricing_quantity_uom := p_line_rec.pricing_uom;
9287     x_rowtype_rec.discount_percent := p_line_rec.discount_percent;
9288     x_rowtype_rec.discount_amount := p_line_rec.discount_amount;
9289 
9290 EXCEPTION
9291 
9292 	WHEN OTHERS THEN
9293  		IF 	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9294 		THEN
9295    			OE_MSG_PUB.Add_Exc_Msg
9296          	(   G_PKG_NAME
9297          	,   'API_Rec_To_RowType_Rec'
9298          	);
9299      	END IF;
9300 		RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9301 END Line_API_Rec_To_RowType_Rec;
9302 
9303 PROCEDURE Line_Rowtype_Rec_To_API_Rec
9304 (   p_record                        IN  OE_AK_BLANKET_LINES_V%ROWTYPE
9305 ,   x_api_rec                       IN OUT NOCOPY OE_Blanket_PUB.LINE_Rec_Type
9306 ) IS
9307 BEGIN
9308 
9309 	x_api_rec.ACCOUNTING_RULE_ID       := p_record.ACCOUNTING_RULE_ID;
9310 	x_api_rec.CUST_PO_NUMBER           := p_record.CUST_PO_NUMBER;
9311 	x_api_rec.DELIVER_TO_ORG_ID        := p_record.DELIVER_TO_ORG_ID;
9312 	x_api_rec.END_DATE_ACTIVE          := p_record.END_DATE_ACTIVE;
9313 	x_api_rec.FREIGHT_TERMS_CODE       := p_record.FREIGHT_TERMS_CODE;
9314 	x_api_rec.INVOICE_TO_ORG_ID        := p_record.INVOICE_TO_ORG_ID;
9315 	x_api_rec.INVOICING_RULE_ID        := p_record.INVOICING_RULE_ID;
9316 	x_api_rec.LINE_ID        := p_record.LINE_ID;
9317 	x_api_rec.ORDER_NUMBER             := p_record.ORDER_NUMBER;
9318 	x_api_rec.PACKING_INSTRUCTIONS     := p_record.PACKING_INSTRUCTIONS;
9319 	x_api_rec.PAYMENT_TERM_ID          := p_record.PAYMENT_TERM_ID;
9320 	x_api_rec.PRICE_LIST_ID            := p_record.PRICE_LIST_ID;
9321 	x_api_rec.SALESREP_ID              := p_record.SALESREP_ID;
9322 	x_api_rec.SHIPPING_INSTRUCTIONS    := p_record.SHIPPING_INSTRUCTIONS;
9323 	x_api_rec.SHIPPING_METHOD_CODE     := p_record.SHIPPING_METHOD_CODE;
9324 	x_api_rec.SHIP_FROM_ORG_ID         := p_record.SHIP_FROM_ORG_ID;
9325 	x_api_rec.SHIP_TO_ORG_ID           := p_record.SHIP_TO_ORG_ID;
9326 	x_api_rec.START_DATE_ACTIVE          := p_record.START_DATE_ACTIVE;
9327 
9328 	x_api_rec.LINE_NUMBER             := p_record.LINE_NUMBER;
9329 	x_api_rec.PREFERRED_GRADE              := p_record.PREFERRED_GRADE;
9330 	x_api_rec.ITEM_IDENTIFIER_TYPE              := p_record.ITEM_IDENTIFIER_TYPE;
9331 	x_api_rec.INVENTORY_ITEM_ID              := p_record.INVENTORY_ITEM_ID;
9332 	x_api_rec.ORDER_QUANTITY_UOM              := p_record.ORDER_QUANTITY_UOM;
9333 	x_api_rec.ENFORCE_SHIP_TO_FLAG           := p_record.ENFORCE_SHIP_TO_FLAG;
9334 	x_api_rec.ENFORCE_FREIGHT_TERM_FLAG           := p_record.ENFORCE_FREIGHT_TERM_FLAG;
9335 	x_api_rec.ENFORCE_SHIPPING_METHOD_FLAG           := p_record.ENFORCE_SHIPPING_METHOD_FLAG;
9336 	x_api_rec.ENFORCE_PRICE_LIST_FLAG           := p_record.ENFORCE_PRICE_LIST_FLAG;
9337 	x_api_rec.ENFORCE_PAYMENT_TERM_FLAG           := p_record.ENFORCE_PAYMENT_TERM_FLAG;
9338 	x_api_rec.ENFORCE_INVOICE_TO_FLAG           := p_record.ENFORCE_INVOICE_TO_FLAG;
9339 	x_api_rec.ENFORCE_INVOICING_RULE_FLAG           := p_record.ENFORCE_INVOICING_RULE_FLAG;
9340 	x_api_rec.ENFORCE_ACCOUNTING_RULE_FLAG           := p_record.ENFORCE_ACCOUNTING_RULE_FLAG;
9341 	x_api_rec.BLANKET_MIN_AMOUNT           := p_record.BLANKET_LINE_MIN_AMOUNT;
9342 	x_api_rec.BLANKET_MAX_AMOUNT           := p_record.BLANKET_LINE_MAX_AMOUNT;
9343 
9344 	x_api_rec.BLANKET_MIN_QUANTITY              := p_record.BLANKET_MIN_QUANTITY;
9345 	x_api_rec.BLANKET_MAX_QUANTITY              := p_record.BLANKET_MAX_QUANTITY;
9346 	x_api_rec.MIN_RELEASE_AMOUNT              := p_record.MIN_RELEASE_AMOUNT;
9347 	x_api_rec.MAX_RELEASE_AMOUNT              := p_record.MAX_RELEASE_AMOUNT;
9348 	x_api_rec.MIN_RELEASE_QUANTITY              := p_record.MIN_RELEASE_QUANTITY;
9349 	x_api_rec.MAX_RELEASE_QUANTITY              := p_record.MAX_RELEASE_QUANTITY;
9350 	x_api_rec.OVERRIDE_BLANKET_CONTROLS_FLAG              := p_record.OVERRIDE_BLANKET_CONTROLS_FLAG;
9351 	x_api_rec.OVERRIDE_RELEASE_CONTROLS_FLAG              := p_record.OVERRIDE_RELEASE_CONTROLS_FLAG;
9352 	x_api_rec.SOURCE_DOCUMENT_TYPE_ID              := p_record.SOURCE_DOCUMENT_TYPE_ID;
9353 	x_api_rec.MODIFIER_LIST_LINE_ID              := p_record.MODIFIER_LIST_LINE_ID;
9354         --bug6531947
9355           x_api_rec.CONTEXT               := p_record.CONTEXT;
9356 	  x_api_rec.ATTRIBUTE1            := p_record.ATTRIBUTE1;
9357 	  x_api_rec.ATTRIBUTE2            := p_record.ATTRIBUTE2;
9358 	  x_api_rec.ATTRIBUTE3            := p_record.ATTRIBUTE3;
9359 	  x_api_rec.ATTRIBUTE4            := p_record.ATTRIBUTE4;
9360 	  x_api_rec.ATTRIBUTE5            := p_record.ATTRIBUTE5;
9361 	  x_api_rec.ATTRIBUTE6            := p_record.ATTRIBUTE6;
9362 	  x_api_rec.ATTRIBUTE7            := p_record.ATTRIBUTE7;
9363 	  x_api_rec.ATTRIBUTE8            := p_record.ATTRIBUTE8;
9364 	  x_api_rec.ATTRIBUTE9            := p_record.ATTRIBUTE9;
9365 	  x_api_rec.ATTRIBUTE10            := p_record.ATTRIBUTE10;
9366 	  x_api_rec.ATTRIBUTE11            := p_record.ATTRIBUTE11;
9367 	  x_api_rec.ATTRIBUTE12            := p_record.ATTRIBUTE12;
9368 	  x_api_rec.ATTRIBUTE13            := p_record.ATTRIBUTE13;
9369 	  x_api_rec.ATTRIBUTE14            := p_record.ATTRIBUTE14;
9370 	  x_api_rec.ATTRIBUTE15            := p_record.ATTRIBUTE15;
9371 	  x_api_rec.ATTRIBUTE16            := p_record.ATTRIBUTE16;
9372 	  x_api_rec.ATTRIBUTE17            := p_record.ATTRIBUTE17;
9373 	  x_api_rec.ATTRIBUTE18            := p_record.ATTRIBUTE18;
9374 	  x_api_rec.ATTRIBUTE19            := p_record.ATTRIBUTE19;
9375 	  x_api_rec.ATTRIBUTE20            := p_record.ATTRIBUTE20;
9376 
9377     -- QUOTING changes
9378     x_api_rec.transaction_phase_code := p_record.transaction_phase_code;
9379     x_api_rec.source_document_version_number :=
9380                                 p_record.source_document_version_number;
9381 
9382     x_api_rec.unit_list_price := p_record.unit_list_price;
9383     x_api_rec.pricing_uom := p_record.pricing_quantity_uom;
9384     x_api_rec.discount_percent := p_record.discount_percent;
9385     x_api_rec.discount_amount := p_record.discount_amount;
9386 
9387 EXCEPTION
9388 
9389 	WHEN OTHERS THEN
9390 	IF	OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
9391 	THEN
9392 		OE_MSG_PUB.Add_Exc_Msg
9393          	(   G_PKG_NAME
9394          	,   'Rowtype_Rec_To_API_Rec'
9395          	);
9396 	END IF;
9397 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9398 END Line_Rowtype_Rec_To_API_Rec;
9399 
9400 PROCEDURE Get_Inventory_Item
9401 (p_x_line_rec       IN OUT NOCOPY    OE_Blanket_Pub.Line_Rec_Type
9402 ,x_return_status    OUT NOCOPY /* file.sql.39 change */  VARCHAR2
9403 )
9404 IS
9405 l_attribute_value             VARCHAR2(2000);
9406 l_address_id                  VARCHAR2(2000):= NULL;
9407 l_cust_id                     NUMBER:= NULL;
9408 l_update_inventory_item       VARCHAR2(1) := FND_API.G_FALSE;
9409 l_inventory_item_id           NUMBER;
9410 l_error_code                  VARCHAR2(2000);
9411 l_error_flag                  VARCHAR2(2000);
9412 l_error_message               VARCHAR2(2000);
9413 BEGIN
9414  /*
9415          1.call  INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value
9416            to get the inventory_item_id
9417            given the customer_item_id, and the new ship_from_org_id.
9418 
9419          2.check the value of the inventory_item_id returned:
9420            if internal item number return is not null, then
9421            assign the inventory_item_id to the out NOCOPY  {file.sql.39 change } parameter
9422            otherwise
9423            post  message OE_INVALIDATES_CUSTOMER_ITEM
9424            set return status to error.
9425           */
9426     x_return_status := FND_API.G_RET_STS_SUCCESS;
9427     oe_debug_pub.add('Entering Oe_blanket_util Get_Inventory_Item', 1);
9428     IF (p_x_line_rec.ship_to_org_id IS NOT NULL AND
9429         p_x_line_rec.ship_to_org_id <> FND_API.G_MISS_NUM) THEN
9430 
9431         SELECT  u.cust_acct_site_id,s.cust_account_id
9432         INTO  l_address_id,
9433               l_cust_id
9434         FROM  HZ_CUST_SITE_USES u,HZ_CUST_ACCT_SITES s
9435         WHERE  u.cust_acct_site_id = s.cust_acct_site_id
9436            AND u.site_use_id = p_x_line_rec.ship_to_org_id
9437            AND u.site_use_code = 'SHIP_TO';
9438         oe_debug_pub.add('ship to address:' || l_address_id||' - Customer:'||to_char(l_cust_id));
9439 
9440         IF l_cust_id <> p_x_line_rec.sold_to_org_id  THEN
9441           oe_debug_pub.add('Sold-To Customer:'||to_char(p_x_line_rec.sold_to_org_id));
9442           l_address_id := NULL;
9443         END IF;
9444 
9445     END IF;
9446 
9447     oe_debug_pub.add('INVENTORY_ITEM_ID Before calling CI_Attribute_Value '
9448 	||to_char(p_x_line_rec.inventory_item_id), 1);
9449     INV_CUSTOMER_ITEM_GRP.CI_Attribute_Value(
9450                      Z_Customer_Item_Id => p_x_line_rec.ordered_item_id
9451                    , Z_Customer_Id => p_x_line_rec.sold_to_org_id
9452                    , Z_Address_Id => l_address_id
9453                    , Z_Organization_Id => nvl(p_x_line_rec.ship_from_org_id, OE_Sys_Parameters.value('MASTER_ORGANIZATION_ID'))
9454                    , Z_Inventory_Item_Id => p_x_line_rec.inventory_item_id
9455                    , Attribute_Name => 'INVENTORY_ITEM_ID'
9456                    , Error_Code => l_error_code
9457                    , Error_Flag => l_error_flag
9458                    , Error_Message => l_error_message
9459                    , Attribute_Value => l_attribute_value
9460                      );
9461 
9462     oe_debug_pub.add('INVENTORY_ITEM_ID After call is '||l_attribute_value, 1);
9463     IF (l_attribute_value IS NOT NULL AND
9464        to_number(l_attribute_value) <> p_x_line_rec.inventory_item_id) THEN
9465        oe_debug_pub.add('Assigning new inventory_item_id', 1);
9466        l_update_inventory_item := FND_API.G_TRUE;
9467        l_inventory_item_id := TO_NUMBER(l_attribute_value);
9468     ELSIF to_number(l_attribute_value) = p_x_line_rec.inventory_item_id THEN
9469        NULL;
9470     ELSE
9471        oe_debug_pub.add('Issue error message', 1);
9472        fnd_message.set_name('ONT','OE_INVALIDATES_CUSTOMER_ITEM');
9473        OE_MSG_PUB.Add;
9474        x_return_status := FND_API.G_RET_STS_ERROR;
9475     END IF;
9476 END Get_Inventory_Item;
9477 
9478 -- for bug 4447494
9479 PROCEDURE validate_sold_to(p_header_id      IN NUMBER,
9480                            p_sold_to_org_id IN NUMBER,
9481                            x_return_status  OUT NOCOPY VARCHAR2)
9482 IS
9483 --
9484 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
9485 L_DUMMY VARCHAR2(30) := 'VALID';
9486 l_invoice_to_org_id number;
9487 l_deliver_to_org_id number;
9488 l_ship_To_org_id    number;
9489 L_LINE_ID           number;
9490 --
9491 cursor c1 is
9492 select sold_to_org_id,
9493        line_id,
9494        ship_to_org_id,
9495        deliver_to_org_id,
9496        invoice_to_org_id
9497 from
9498     oe_blanket_lines_all where header_id = p_header_id;
9499  mc1x c1%ROWTYPE;
9500 
9501 BEGIN
9502     OE_MSG_PUB.initialize;
9503     x_return_status := FND_API.G_RET_STS_SUCCESS;
9504     IF l_debug_level  > 0 THEN
9505        oe_debug_pub.add('ENTERING OE_Blanket_util.validate_sold_to:');
9506        oe_debug_pub.add('DB Line ID : '|| TO_CHAR (mc1x.line_id) ,1);
9507        oe_debug_pub.add('DB Sold To Org ID : '|| TO_CHAR (mc1x.sold_to_org_id) ,1);
9508        oe_debug_pub.add('actual Hdr Sold To Org ID : '|| TO_CHAR (p_sold_to_org_id) ,1);
9509     END IF;
9510 
9511     -- Open the cursor
9512     OPEN c1;
9513     loop
9514       FETCH c1 into mc1x;
9515       exit when c1%NOTFOUND;
9516        oe_debug_pub.add('DB Line To : '|| TO_CHAR (mc1x.Line_id) ,1);
9517        oe_debug_pub.add('DB Ship To : '|| TO_CHAR (mc1x.ship_to_org_id) ,1);
9518        oe_debug_pub.add('DB Del ID  : '|| TO_CHAR (mc1x.deliver_to_org_id) ,1);
9519        oe_debug_pub.add('DB Invo ID : '|| TO_CHAR (mc1x.invoice_to_org_id) ,1);
9520        if mc1x.ship_to_org_id is not null then
9521          --Ship to
9522          BEGIN
9523              SELECT 'VALID' INTO   l_dummy
9524              FROM   oe_ship_to_orgs_v
9525              WHERE  customer_id = p_sold_to_org_id
9526              AND    site_use_id = mc1x.ship_to_org_id
9527              AND    status = 'A'
9528              and    address_status='A';
9529          EXCEPTION
9530              WHEN NO_DATA_FOUND THEN
9531                   if l_debug_level > 0 then
9532                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to Blanket In ship to No data found',2);
9533                   end if;
9534                   l_dummy := 'INVALID';
9535                    x_return_status := FND_API.G_RET_STS_ERROR;
9536                    fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
9537                    FND_MESSAGE.SET_TOKEN('ATTRIBUTE'
9538                       , OE_Order_Util.Get_Attribute_Name('ship_to_org_id'));
9539                    OE_MSG_PUB.Add;
9540              WHEN OTHERS THEN
9541                   if l_debug_level > 0 then
9542                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to WOE Blanket In Ship No data found',2);
9543                   end if;
9544                  l_dummy := 'INVALID';
9545                  x_return_status := FND_API.G_RET_STS_ERROR;
9546                  IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9547                       OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Ship To');
9548                  END IF;
9549                  --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9550          END ;
9551        end if;
9552        if mc1x.deliver_to_org_id is not null then
9553          -- Deliver to
9554          BEGIN
9555              SELECT 'VALID' INTO   l_dummy
9556              FROM   oe_deliver_to_orgs_v
9557              WHERE  customer_id = p_sold_to_org_id
9558              AND    site_use_id = mc1x.deliver_to_org_id
9559              AND     status = 'A'
9560              and    address_status='A'; --2752321
9561 
9562          EXCEPTION
9563              WHEN NO_DATA_FOUND THEN
9564                   if l_debug_level > 0 then
9565                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to Blanket In deliver No data found',2);
9566                   end if;
9567                  l_dummy := 'INVALID';
9568                  x_return_status := FND_API.G_RET_STS_ERROR;
9569                  fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
9570                  FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
9571                  OE_Order_Util.Get_Attribute_Name('deliver_to_org_id'));
9572                  OE_MSG_PUB.Add;
9573              WHEN OTHERS THEN
9574                  if l_debug_level > 0 then
9575                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to WOE Blanket In Deliver No data found',2);
9576                  end if;
9577                  l_dummy := 'INVALID';
9578                  x_return_status := FND_API.G_RET_STS_ERROR;
9579                  IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9580                       OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Deliver To');
9581                  END IF;
9582                  --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9583          END;
9584        end if;
9585        if mc1x.invoice_to_org_id is not null then
9586          -- Invoice To
9587          BEGIN
9588              Select 'VALID' Into   l_dummy
9589              from   oe_invoice_to_orgs_v
9590              Where  customer_id = p_sold_to_org_id
9591              AND    site_use_id = mc1x.invoice_to_org_id;
9592          EXCEPTION
9593              WHEN NO_DATA_FOUND THEN
9594                   if l_debug_level > 0 then
9595                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to Blanket In invoice  No data found',2);
9596                   end if;
9597                   l_dummy := 'INVALID';
9598                   x_return_status := FND_API.G_RET_STS_ERROR;
9599                   fnd_message.set_name('ONT','OE_INVALID_ATTRIBUTE');
9600                   FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
9601                   OE_Order_Util.Get_Attribute_Name('invoice_to_org_id'));
9602                   OE_MSG_PUB.Add;
9603             WHEN OTHERS THEN
9604                   if l_debug_level > 0 then
9605                    oe_debug_pub.add ('OE_blanket_util.validate_sold_to WOE Blanket In Invoice  No data found',2);
9606                   end if;
9607                   l_dummy := 'INVALID';
9608                   x_return_status := FND_API.G_RET_STS_ERROR;
9609                   IF OE_MSG_PUB.Check_Msg_Level (OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
9610                          OE_MSG_PUB.Add_Exc_Msg (  G_PKG_NAME , 'Record - Invoice To');
9611                   END IF;
9612                   --RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9613          END;
9614        end if;
9615     END LOOP;
9616     CLOSE C1;
9617     if l_debug_level > 0 then
9618        oe_debug_pub.add ('OE_blanket_util.validate_sold_to After Close  In Invoice '||x_return_status,2);
9619     end if;
9620 
9621     if x_return_status = FND_API.G_RET_STS_ERROR then
9622        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
9623     elsif l_dummy = 'VALID' then
9624        update oe_blanket_lines_all set sold_to_org_id = p_sold_to_org_id
9625        where header_id = p_header_id;
9626     end if;
9627     IF l_debug_level  > 0 THEN
9628        oe_debug_pub.add('EXISTING OE_Blanket_util.validate_sold_to: '|| TO_CHAR (p_header_id) ,1);
9629     END IF;
9630 END  validate_sold_to;
9631 
9632 -- New procedure added for 5528599 start
9633 PROCEDURE  valid_blanket_dates
9634 ( p_header_id                 IN NUMBER,
9635   x_return_status             OUT NOCOPY VARCHAR2,
9636   x_msg_count                 OUT NOCOPY NUMBER,
9637   x_msg_data                  OUT NOCOPY VARCHAR2)
9638 
9639 IS
9640 
9641 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
9642 l_header_rec  OE_Blanket_Pub.header_rec_type;
9643 l_line_tbl    OE_Blanket_Pub.line_tbl_type;
9644 K             NUMBER :=1;
9645 BEGIN
9646  --bug#5528507
9647     x_return_status := FND_API.G_RET_STS_SUCCESS;
9648     oe_debug_pub.add('In the valid_blanket_dates',1);
9649 
9650     Query_Blanket(p_header_id           => p_header_id
9651                  ,p_x_header_rec        => l_header_rec
9652                  ,p_x_line_tbl          => l_line_tbl
9653                  ,x_return_status       => x_return_status);
9654 
9655 
9656      if ( x_return_status = 'S')
9657        then
9658             oe_debug_pub.add('End Date :'||trunc(l_header_rec.end_date_active),1);
9659             oe_debug_pub.add('Sysdate :'||trunc(sysdate),1);
9660 
9661        OE_MSG_PUB.set_msg_context(
9662             p_entity_code                  => 'BLANKET_HEADER'
9663            ,p_entity_id                    => l_header_rec.header_id
9664            ,p_header_id                    => l_header_rec.header_id
9665            ,p_line_id                      => null
9666            ,p_orig_sys_document_ref        => null
9667            ,p_orig_sys_document_line_ref   => null
9668            ,p_change_sequence              => null
9669            ,p_source_document_id           => null
9670            ,p_source_document_line_id      => null
9671            ,p_order_source_id            => null
9672            ,p_source_document_type_id    => null);
9673 
9674           if (trunc(l_header_rec.end_date_active) < trunc(sysdate))
9675              then
9676               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
9677               OE_MSG_PUB.ADD;
9678               x_return_status := FND_API.G_RET_STS_ERROR;
9679            end if;
9680 
9681 
9682    K := l_line_tbl.FIRST;
9683              oe_debug_pub.add('validating Lines ',1);
9684   WHILE K IS NOT NULL
9685    LOOP
9686 
9687     OE_MSG_PUB.set_msg_context(
9688          p_entity_code                  => 'BLANKET_LINE'
9689         ,p_entity_id                    => l_line_tbl(K).line_id
9690         ,p_header_id                    => l_line_tbl(K).header_id
9691         ,p_line_id                      => l_line_tbl(K).line_id
9692         ,p_orig_sys_document_ref        => null
9693         ,p_orig_sys_document_line_ref   => null
9694         ,p_change_sequence              => null
9695         ,p_source_document_id           => null
9696         ,p_source_document_line_id      => null
9697         ,p_order_source_id            => null
9698         ,p_source_document_type_id    => null);
9699 
9700           oe_debug_pub.add('start date active:'|| l_line_tbl(K).start_date_active,1);
9701           oe_debug_pub.add('end_date_active :'|| l_line_tbl(K).end_date_active,1);
9702           oe_debug_pub.add('SYSDATE :'|| trunc(sysdate),1);
9703 
9704        if (l_line_tbl(K).end_date_active is not NULL and
9705           (l_line_tbl(K).start_date_active)
9706               > (l_line_tbl(K).end_date_active)) THEN
9707               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
9708               OE_MSG_PUB.ADD;
9709               x_return_status := FND_API.G_RET_STS_ERROR;
9710        end if;
9711 
9712        if( trunc(l_line_tbl(K).end_date_active) < trunc(sysdate))
9713          then
9714               FND_MESSAGE.SET_NAME('ONT','OE_BLKT_INVALID_DATE_RANGE');
9715               OE_MSG_PUB.ADD;
9716               x_return_status := FND_API.G_RET_STS_ERROR;
9717         end if;
9718 
9719      K:= l_line_tbl.next(K);
9720    END LOOP;
9721 
9722         OE_MSG_PUB.Count_And_Get
9723         (   p_count                       => x_msg_count
9724         ,   p_data                        => x_msg_data
9725         );
9726 
9727  END IF;
9728 
9729   EXCEPTION
9730     when others then
9731     null;
9732 
9733 END valid_blanket_dates;
9734 -- New procedure added for 5528599 end
9735 Procedure IS_Batch_Call( p_application_id IN NUMBER,
9736                                         p_entity_short_name in VARCHAR2,
9737                                         p_validation_entity_short_name in VARCHAR2,
9738                                         p_validation_tmplt_short_name in VARCHAR2,
9739                                         p_record_set_tmplt_short_name in VARCHAR2,
9740                                         p_scope in VARCHAR2,
9741                                         p_result OUT NOCOPY NUMBER ) IS
9742 
9743 --
9744 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
9745 --
9746 BEGIN
9747     if l_debug_level > 0 then
9748         oe_debug_pub.add('Enter OE_Blanket_Util.Batch_Call');
9749     end if;
9750 
9751   if OE_GLOBALS.G_UI_FLAG THEN
9752      oe_debug_pub.add(' UI Call ');
9753    ELSE
9754      oe_debug_pub.add(' Batch call' );
9755   end if;
9756      IF NOT (OE_GLOBALS.G_UI_FLAG ) THEN
9757      p_result :=1;
9758     ELSE
9759     p_result :=0;
9760    END IF;
9761 --END IF;
9762 END Is_Batch_Call;
9763 
9764 
9765 
9766 END OE_Blanket_UTIL;