DBA Data[Home] [Help]

PACKAGE BODY: APPS.CSD_ESTIMATE_UTILS_PVT

Source


1 Package BODY Csd_Estimate_utils_Pvt AS
2   /* $Header: csdueutb.pls 120.7 2012/05/08 10:07:28 subhat ship $ */
3 
4   -- ---------------------------------------------------------
5   -- Define global variables
6   -- ---------------------------------------------------------
7 
8   G_PKG_NAME  CONSTANT VARCHAR2(30) := 'CSD_REPAIR_ESTIMATE_PVT';
9   G_FILE_NAME CONSTANT VARCHAR2(12) := 'csduestb.pls';
10   g_debug NUMBER := Csd_Gen_Utility_Pvt.g_debug_level;
11   ----Begin change for 3931317, wrpper aPI forward port
12 
13   C_EST_STATUS_ACCEPTED CONSTANT VARCHAR2(30) := 'ACCEPTED';
14   C_EST_STATUS_REJECTED CONSTANT VARCHAR2(30) := 'REJECTED';
15   C_EST_STATUS_NEW      CONSTANT VARCHAR2(30) := 'NEW';
16   C_REP_STATUS_APPROVED CONSTANT VARCHAR2(30) := 'A';
17   C_REP_STATUS_REJECTED CONSTANT VARCHAR2(30) := 'R';
18   G_DEBUG_LEVEL         CONSTANT NUMBER := TO_NUMBER(NVL(Fnd_Profile.value('CSD_DEBUG_LEVEL'),
19                                                          '0'));
20 
21   ------------------------------------------------------------------
22   -----------------------------------------------------------------
23 
24   PROCEDURE debug(msg VARCHAR2) IS
25   BEGIN
26     IF (G_DEBUG_LEVEL >= 0) THEN
27       Csd_Gen_Utility_Pvt.ADD(msg);
28       --DBMS_OUTPUT.PUT_LINE(msg);
29     END IF;
30   END DEBUG;
31 
32   /*-------------------------------------------------------*/
33   /* function name: validate_estimate_id                   */
34   /* DEscription: Validates the estimate in the context    */
35   /*              of repair_line_Id                        */
36   /*  Change History  : Created 16th Sep 2004 by Vijay     */
37   /*-------------------------------------------------------*/
38   FUNCTION VALIDATE_ESTIMATE_ID(p_estimate_id    NUMBER,
39                                 p_repair_line_id NUMBER) RETURN BOOLEAN IS
40     --Cursor to validate estimate id
41     CURSOR CUR_EST IS
42       SELECT 'x' col1
43         FROM CSD_REPAIR_ESTIMATE_V
44        WHERE repair_estimate_id = p_estimate_id
45          AND repair_line_id = p_repair_line_id
46          AND NVL(ESTIMATE_FREEZE_FLAG, 'N') = 'N';
47 
48     l_dummy VARCHAR2(1);
49 
50   BEGIN
51 
52     l_dummy := ' ';
53     FOR c1_rec IN CUR_EST LOOP
54       l_dummy := c1_rec.col1;
55     END LOOP;
56 
57     IF l_dummy = 'x' THEN
58       RETURN TRUE;
59     ELSE
60       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_ESTIMATE');
61       Fnd_Message.SET_TOKEN('REPAIR_ESTIMATE_ID', p_estimate_id);
62       Fnd_Msg_Pub.ADD;
63       RETURN FALSE;
64     END IF;
65 
66   END VALIDATE_ESTIMATE_ID;
67 
68   /*-------------------------------------------------------*/
69   /* procedure name: validate_estiamte_status              */
70   /* DEscription: Validates the estimate status            */
71   /*  Change History  : Created 16th Sep 2004 by Vijay     */
72   /*-------------------------------------------------------*/
73   FUNCTION VALIDATE_EST_STATUS(p_estimate_status VARCHAR2) RETURN BOOLEAN IS
74     --Cursor to validate estimate status
75     CURSOR CUR_EST_STATUS(p_estimate_status VARCHAR2) IS
76       SELECT 1 col1
77         FROM fnd_lookup_values_vl
78        WHERE lookup_type = 'CSD_ESTIMATE_STATUS'
79          AND enabled_flag = 'Y'
80          AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE)) AND
81              TRUNC(NVL(end_date_active, SYSDATE))
82          AND lookup_code = p_estimate_status;
83 
84     l_tmp_count NUMBER;
85 
86   BEGIN
87 
88     l_tmp_count := 0;
89     FOR c1_rec IN CUR_EST_STATUS(p_estimate_status) LOOP
90       l_tmp_count := c1_rec.col1;
91     END LOOP;
92 
93     IF l_tmp_count > 0 THEN
94       RETURN TRUE;
95     ELSE
96       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_EST_STATUS');
97       Fnd_Message.SET_TOKEN('STATUS', p_estimate_status);
98       Fnd_Msg_Pub.ADD;
99       RETURN FALSE;
100     END IF;
101 
102   END VALIDATE_EST_STATUS;
103   /*-------------------------------------------------------*/
104   /* function name: validate_Reason                 */
105   /* DEscription: Validates the estimate reject reason     */
106   /*  Change History  : Created 16th Sep 2004 by Vijay     */
107   /*                    11/3/04 added status as param      */
108   /*-------------------------------------------------------*/
109   FUNCTION VALIDATE_REASON(p_reason_code VARCHAR2,
110                            p_status      VARCHAR2) RETURN BOOLEAN IS
111     --Cursor to validate estimate status
112     CURSOR CUR_REJECT_REASON IS
113       SELECT 1 col1
114         FROM fnd_lookup_values_vl
115        WHERE lookup_type = DECODE(p_status,
116                                   C_EST_STATUS_REJECTED,
117                                   'CSD_REJECT_REASON',
118                                   C_EST_STATUS_ACCEPTED,
119                                   'CSD_REASON')
120          AND enabled_flag = 'Y'
121          AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE)) AND
122              TRUNC(NVL(end_date_active, SYSDATE))
123          AND lookup_code = p_reason_code;
124 
125     l_tmp_count NUMBER;
126 
127   BEGIN
128 
129     l_tmp_count := 0;
130     FOR c1_rec IN CUR_REJECT_REASON LOOP
131       l_tmp_count := c1_rec.col1;
132     END LOOP;
133 
134     IF l_tmp_count > 0 THEN
135       RETURN TRUE;
136     ELSE
137       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_REJECT_REASON');
138       Fnd_Msg_Pub.ADD;
139       RETURN FALSE;
140     END IF;
141   END VALIDATE_REASON;
142 
143   /*-------------------------------------------------------*/
144   /* function name: validate_lead_time_uom                 */
145   /* DEscription: Validates the uom code of the lead time  */
146   /*  Change History  : Created 24th Sep 2004 by Vijay     */
147   /*-------------------------------------------------------*/
148   FUNCTION VALIDATE_LEAD_TIME_UOM(p_lead_time_uom VARCHAR2) RETURN BOOLEAN IS
149     --Cursor to validate estimate status
150     CURSOR CUR_LEAD_TIME_UOM IS
151       SELECT 1 col1
152         FROM fnd_lookup_values_vl
153        WHERE lookup_type = 'CSD_UNIT_OF_MEASURE'
154          AND enabled_flag = 'Y'
155          AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE)) AND
156              TRUNC(NVL(end_date_active, SYSDATE))
157          AND lookup_code = p_lead_time_uom;
158 
159     l_tmp_count NUMBER;
160 
161   BEGIN
162 
163     l_tmp_count := 0;
164     FOR c1_rec IN CUR_LEAD_TIME_UOM LOOP
165       l_tmp_count := c1_rec.col1;
166     END LOOP;
167 
168     IF l_tmp_count > 0 THEN
169       RETURN TRUE;
170     ELSE
171       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_LEAD_TIME_UOM');
172       Fnd_Msg_Pub.ADD;
173       RETURN FALSE;
174     END IF;
175   END VALIDATE_LEAD_TIME_UOM;
176 
177   /*-------------------------------------------------------*/
178   /* function name: validate_uom_Code                      */
179   /* Description: Validates the uom code                   */
180   /* Change History  : Created 16th Sep 2004 by Vijay      */
181   /*-------------------------------------------------------*/
182   FUNCTION VALIDATE_UOM_CODE(p_uom_code VARCHAR2,
183                              p_item_id  NUMBER) RETURN BOOLEAN IS
184     CURSOR c1 IS
185       SELECT 1 col1
186         FROM mtl_item_uoms_view
187        WHERE inventory_item_id = p_item_id
188          AND organization_id = Cs_Std.get_item_valdn_orgzn_id
189          AND uom_type =
190              (SELECT allowed_units_lookup_code
191                 FROM mtl_system_items_b
192                WHERE organization_id = Cs_Std.get_item_valdn_orgzn_id
193                  AND inventory_item_id = p_item_id)
194          AND uom_code = p_uom_code;
195     l_tmp_count NUMBER;
196   BEGIN
197 
198     l_tmp_count := 0;
199     FOR c1_rec IN c1 LOOP
200       l_tmp_count := c1_rec.col1;
201     END LOOP;
202     IF l_tmp_count > 0 THEN
203       RETURN TRUE;
204     ELSE
205       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_UOM');
206       Fnd_Msg_Pub.ADD;
207       RETURN FALSE;
208 
209     END IF;
210 
211   END VALIDATE_UOM_CODE;
212 
213   /*-------------------------------------------------------*/
214   /* function name: validate_price_list                    */
215   /* DEscription: Validates price_list                     */
216   /*  Change History  : Created 16th Sep 2004 by Vijay     */
217   /*-------------------------------------------------------*/
218   FUNCTION VALIDATE_PRICE_LIST(p_price_list_id NUMBER) RETURN BOOLEAN IS
219     CURSOR c1 IS
220       SELECT 1 col1
221         FROM oe_price_lists
222        WHERE price_list_id = p_price_list_id;
223     l_tmp_count NUMBER;
224   BEGIN
225 
226     l_tmp_count := 0;
227     FOR c1_rec IN c1 LOOP
228       l_tmp_count := c1_rec.col1;
229     END LOOP;
230     IF l_tmp_count > 0 THEN
231       RETURN TRUE;
232     ELSE
233       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_PRICE_LIST_ID');
234       Fnd_Message.SET_TOKEN('PRICE_LIST_ID', TO_CHAR(p_price_list_id));
235       Fnd_Msg_Pub.ADD;
236       RETURN FALSE;
237 
238     END IF;
239 
240   END VALIDATE_PRICE_LIST;
241   /*-------------------------------------------------------*/
242   /* function name: validate_Item_pl_uom                   */
243   /* DEscription: Validates the item/pl/uom code           */
244   /*  Change History  : Created 16th Sep 2004 by Vijay     */
245   /*-------------------------------------------------------*/
246   -- FUNCTION VALIDATE_ITEM_PL_UOM
247   --          ( p_item_id       NUMBER,
248   --            p_price_list_id NUMBER,
249   --            p_uom           VARCHAR2) RETURN BOOLEAN;
250   -- BEGIN
251   --      null;
252   --
253   -- END VALIDATE_ITEM_PL_UOM;
254 
255   /*-------------------------------------------------------*/
256   /* function name: validate_order                         */
257   /* DEscription: Validates the order header and line      */
258   /*  Change History  : Created 16th Sep 2004 by Vijay     */
259   /*-------------------------------------------------------*/
260   FUNCTION VALIDATE_ORDER(p_order_header_id NUMBER) RETURN VARCHAR2 IS
261 
262     CURSOR c1 IS
263       SELECT A.ORDER_NUMBER
264         FROM oe_order_headers_all A
265        WHERE A.HEADER_ID = p_order_header_id;
266 
267     l_order_number VARCHAR2(30);
268   BEGIN
269 
270     l_order_number := NULL;
271     FOR c1_rec IN c1 LOOP
272       l_order_number := c1_rec.order_number;
273     END LOOP;
274     IF l_order_number IS NOT NULL THEN
275       RETURN l_order_number;
276     ELSE
277       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_ORDER_HEADER_ID');
278       Fnd_Message.SET_TOKEN('ORDER_HEADER_ID', TO_CHAR(p_order_header_id));
279       Fnd_Msg_Pub.ADD;
280       RETURN NULL;
281 
282     END IF;
283   END VALIDATE_ORDER;
284 
285   /*-------------------------------------------------------*/
286   /* function name: validate_item_instance                 */
287   /* DEscription: Validates the item instance and returns  */
288   /*              the itme instance number                 */
289   /*  Change History  : Created 16th Sep 2004 by Vijay     */
290   /*-------------------------------------------------------*/
291   FUNCTION VALIDATE_ITEM_INSTANCE(p_instance_id NUMBER) RETURN VARCHAR2 IS
292 
293     CURSOR c1 IS
294       SELECT INSTANCE_NUMBER
295         FROM CSI_ITEM_INSTANCES
296        WHERE INSTANCE_ID = p_instance_id;
297 
298     l_instance_number VARCHAR2(30);
299   BEGIN
300 
301     l_instance_number := NULL;
302     FOR c1_rec IN c1 LOOP
303       l_instance_number := c1_rec.instance_number;
304     END LOOP;
305     IF l_instance_number IS NOT NULL THEN
306       RETURN l_instance_number;
307     ELSE
308       Fnd_Message.SET_NAME('CSD', 'CSD_INVALID_INSTANCE');
309       Fnd_Msg_Pub.ADD;
310       RETURN NULL;
311 
312     END IF;
313   END VALIDATE_ITEM_INSTANCE;
314 
315   /*-------------------------------------------------------*/
316   /* function name: validate_revision                      */
317   /* DEscription: Validates the revision                   */
318   /*  Change History  : Created 16th Sep 2004 by Vijay     */
319   /*-------------------------------------------------------*/
320   FUNCTION VALIDATE_REVISION(p_revision VARCHAR2,
321                              p_item_id  NUMBER,
322                              p_org_id   NUMBER) RETURN BOOLEAN IS
323     CURSOR c1 IS
324       SELECT 1 col1
325         FROM mtl_item_revisions
326        WHERE revision = p_revision
327          AND inventory_item_id = p_item_id
328          AND organization_id = p_org_id;
329 
330     l_tmp_count NUMBER;
331 
332   BEGIN
333 
334     l_tmp_count := 0;
335     FOR c1_rec IN c1 LOOP
336       l_tmp_count := c1_rec.col1;
337     END LOOP;
338     IF l_tmp_count > 0 THEN
339       RETURN TRUE;
340     ELSE
341       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_REVISION');
342       Fnd_Message.SET_TOKEN('REVISION', p_revision);
343       Fnd_Msg_Pub.ADD;
344       RETURN FALSE;
345     END IF;
346 
347   END VALIDATE_REVISION;
348 
349   /*-------------------------------------------------------*/
350   /* function name: validate_serial_number                 */
351   /* DEscription: Validates the serial number              */
352   /*  Change History  : Created 16th Sep 2004 by Vijay     */
353   /*-------------------------------------------------------*/
354   FUNCTION VALIDATE_SERIAL_NUMBER(p_serial_number VARCHAR2,
355                                   p_item_id       NUMBER) RETURN BOOLEAN IS
356     CURSOR c1 IS
357       SELECT 1 col1
358         FROM mtl_serial_numbers
359        WHERE serial_number = p_serial_number
360          AND inventory_item_id = p_item_id;
361 
362     l_tmp_count NUMBER;
363 
364   BEGIN
365 
366     l_tmp_count := 0;
367     FOR c1_rec IN c1 LOOP
368       l_tmp_count := c1_rec.col1;
369     END LOOP;
370     IF l_tmp_count > 0 THEN
371       RETURN TRUE;
372     ELSE
373       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_SERIAL_NUMBER');
374       Fnd_Message.SET_TOKEN('SERIAL_NUMBER', p_serial_number);
375       Fnd_Msg_Pub.ADD;
376       RETURN FALSE;
377     END IF;
378 
379   END VALIDATE_SERIAL_NUMBER;
380 
381   /*-------------------------------------------------------*/
382   /* function name: validate_billing_type                  */
383   /* DEscription: Validates the billing type from looks    */
384   /* table                                                 */
385   /*  Change History  : Created 21st Sep 2004 by Vijay     */
386   /*-------------------------------------------------------*/
387   FUNCTION VALIDATE_BILLING_TYPE(p_billing_type VARCHAR2) RETURN BOOLEAN IS
388 
389     CURSOR c1 IS
390       SELECT 1 col1
391         FROM fnd_lookup_values
392        WHERE lookup_code = P_BILLING_TYPE
393          AND lookup_type = 'CSD_EST_BILLING_TYPE'
394          AND enabled_flag = 'Y'
395          AND LANGUAGE = 'US'
396          AND TRUNC(SYSDATE) BETWEEN TRUNC(NVL(start_date_active, SYSDATE)) AND
397              TRUNC(NVL(end_date_active, SYSDATE));
398 
399     l_tmp_count NUMBER;
400 
401   BEGIN
402 
403     l_tmp_count := 0;
404     FOR c1_rec IN c1 LOOP
405       l_tmp_count := c1_rec.col1;
406     END LOOP;
407     IF l_tmp_count > 0 THEN
408       RETURN TRUE;
409     ELSE
410       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_BILLING_TYPE');
411       Fnd_Message.SET_TOKEN('BILLING_TYPE', p_billing_type);
412       Fnd_Msg_Pub.ADD;
413       RETURN FALSE;
414     END IF;
415 
416   END VALIDATE_BILLING_TYPE;
417 
418   /*-------------------------------------------------------*/
419   /* function name: validate_rep_line_id                  */
420   /* DEscription: Validates the repair line id             */
421   /*                                                       */
422   /*  Change History  : Created 30th Sep 2004 by Vijay     */
423   /*-------------------------------------------------------*/
424   FUNCTION validate_rep_line_id(p_repair_line_id IN NUMBER) RETURN BOOLEAN
425 
426    IS
427     l_C_STATUS_CLOSED VARCHAR2(1) := 'C';
428 
429     CURSOR c1 IS
430       SELECT 'x' col1
431         FROM csd_repairs
432        WHERE repair_line_id = p_repair_line_id
433          AND status <> l_C_STATUS_CLOSED;
434 
435     l_dummy VARCHAR2(1);
436 
437   BEGIN
438     l_dummy := ' ';
439     FOR c1_rec IN c1 LOOP
440       l_dummy := c1_rec.col1;
441     END LOOP;
442     IF l_dummy = 'x' THEN
443       RETURN TRUE;
444     ELSE
445       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_REP_LINE_ID');
446       Fnd_Message.SET_TOKEN('REPAIR_LINE_ID', p_repair_line_id);
447       Fnd_Msg_Pub.ADD;
448       RETURN FALSE;
449     END IF;
450 
451   END Validate_rep_line_id;
452 
453   /*-------------------------------------------------------*/
454   /* function name: validate_incident_id                  */
455   /* DEscription: Validates the incident    id             */
456   /*                                                       */
457   /*  Change History  : Created 30th Sep 2004 by Vijay     */
458   /*-------------------------------------------------------*/
459   FUNCTION validate_incident_id(p_incident_id IN NUMBER) RETURN BOOLEAN IS
460 
461     CURSOR c1 IS
462       SELECT 'x' col1
463         FROM cs_incidents_all_b A, cs_incident_statuses_b B
464        WHERE A.incident_id = p_incident_id
465          AND B.INCIDENT_STATUS_ID = A.INCIDENT_STATUS_ID
466          AND B.incident_subtype = 'INC'
467          AND TRUNC(SYSDATE) BETWEEN
468              TRUNC(NVL(B.start_date_active, SYSDATE)) AND
469              TRUNC(NVL(B.end_date_active, SYSDATE))
470          AND B.CLOSE_FLAG = 'Y';
471 
472     l_dummy VARCHAR2(1);
473 
474   BEGIN
475     l_dummy := ' ';
476     FOR c1_rec IN c1 LOOP
477       l_dummy := c1_rec.col1;
478     END LOOP;
479     IF l_dummy = 'x' THEN
480       Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_INC_STATUS');
481       Fnd_Message.SET_TOKEN('INCIDENT_ID', p_incident_id);
482       Fnd_Msg_Pub.ADD;
483       RETURN FALSE;
484     ELSE
485       RETURN TRUE;
486     END IF;
487 
488   END validate_incident_id;
489 
490   /*-------------------------------------------------------*/
491   /* procedure name: validate_est_hdr_rec                  */
492   /* DEscription: Validates estimates header record        */
493   /*                                                       */
494   /*  Change History  : Created 25th June2005 by Vijay     */
495   /*-------------------------------------------------------*/
496 
497   PROCEDURE validate_est_hdr_rec(p_estimate_hdr_rec IN Csd_Repair_Estimate_Pub.estimate_hdr_Rec ,
498                                  p_validation_level                       IN NUMBER) IS
499     --Cursor definition to check the existing repair estimate header record for the
500     -- given repair order line.
501     CURSOR CUR_ESTIMATE_HDR(p_repair_line_id NUMBER) IS
502       SELECT 1 col1
503         FROM CSD_REPAIR_ESTIMATE
504        WHERE REPAIR_LINE_ID = p_repair_line_id
505          AND ROWNUM = 1;
506 
507     l_tmp_count NUMBER;
508     l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_EST_HDR_REC';
509 
510   BEGIN
511 
512     -- Check the required parameters
513     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_hdr_rec.repair_line_id,
514                                       p_param_name  => 'REPAIR_LINE_ID',
515                                       p_api_name    => l_api_name);
516     /*
517     -- swai: bug 9462862 - lead time and uom are not required fields
518     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_hdr_rec.lead_time,
519                                       p_param_name  => 'LEAD_TIME',
520                                       p_api_name    => l_api_name);
521     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_hdr_rec.lead_time_uom,
522                                       p_param_name  => 'LEAD_TIME_UOM',
523                                       p_api_name    => l_api_name);
524     */
525     -- Validate repair line id
526     IF (NOT VALIDATE_REP_LINE_ID(p_estimate_hdr_rec.repair_line_id)) THEN
527       debug('Invalid repair order line[' ||
528             p_estimate_hdr_rec.repair_line_id || ']');
529       RAISE Fnd_Api.G_EXC_ERROR;
530     END IF;
531 
532     -- Check if the repair line has already an estimate record.
533     -- if so then return failure with warning message.
534     l_tmp_count := 0;
535     FOR c1_rec IN CUR_ESTIMATE_HDR(p_estimate_hdr_rec.repair_line_id) LOOP
536       l_tmp_count := c1_rec.col1;
537     END LOOP;
538 
539     IF l_tmp_count > 0 THEN
540       Fnd_Message.SET_NAME('CSD', 'CSD_API_ESTIMATE_EXISTS');
541       Fnd_Message.SET_TOKEN('REPAIR_LINE_ID',
542                             p_estimate_hdr_rec.repair_line_id);
543       Fnd_Msg_Pub.ADD;
544       Fnd_Msg_Pub.ADD_DETAIL(p_message_type => Fnd_Msg_Pub.G_WARNING_MSG);
545       debug('Estimate header already exists');
546       RAISE Fnd_Api.G_EXC_ERROR;
547     END IF;
548 
549   END VALIDATE_EST_HDR_REC;
550 
551   /*------------------------------------------------------------------------*/
552   /* procedure name: DEFAULT_EST_HDR_REC                                    */
553   /* DEscription: DEfault values are set in  estimates header record        */
554   /*                                                                        */
555   /*  Change History  : Created 25th June2005 by Vijay                      */
556   /*------------------------------------------------------------------------*/
557 
558   PROCEDURE DEFAULT_EST_HDR_REC(p_estimate_hdr_rec IN OUT NOCOPY Csd_Repair_Estimate_Pub.estimate_hdr_Rec) IS
559     -- Cursor to get the object version number and repair quantity
560     -- and SR summary
561     CURSOR CUR_REPAIR_LINE(p_Repair_line_id NUMBER) IS
562       SELECT A.QUANTITY, A.OBJECT_VERSION_NUMBER, B.SUMMARY, B.INCIDENT_ID
563         FROM CSD_REPAIRS A, CS_INCIDENTS_ALL_VL B
564        WHERE A.REPAIR_LINE_ID = p_repair_line_id
565          AND A.INCIDENT_ID = B.INCIDENT_ID;
566 
567     l_incident_id NUMBER;
568 
569   BEGIN
570 
571     --------------------------------------------------------------------
572     -- Get the repair line attributes and default into the estimate hdr
573     --------------------------------------------------------------------
574     p_estimate_hdr_rec.ro_object_version_number := -1;
575     p_estimate_hdr_rec.repair_line_quantity     := 0;
576     FOR c1_rec IN CUR_REPAIR_LINE(p_estimate_hdr_rec.repair_line_id) LOOP
577       p_estimate_hdr_rec.ro_object_version_number := c1_rec.Object_Version_number;
578       p_estimate_hdr_rec.repair_line_quantity     := c1_rec.quantity;
579       l_incident_id                               := c1_rec.incident_id;
580       IF (p_estimate_hdr_rec.work_summary IS NULL) THEN
581         p_estimate_hdr_rec.work_summary := c1_rec.summary;
582       END IF;
583     END LOOP;
584     debug('summary=[' || p_estimate_hdr_rec.work_summary || ']');
585 
586     --------------------------------------------------------------------
587     -- Validate incident id status. Ensure that the SR status is not closed.
588     --------------------------------------------------------------------
589     IF (NOT VALIDATE_INCIDENT_ID(l_incident_id)) THEN
590       debug('Invalid incident id[' || l_incident_id || ']');
591       RAISE Fnd_Api.G_EXC_ERROR;
592     END IF;
593 
594     -- Defualt the estiamte date to sysdate if it is null
595     IF (p_estimate_hdr_rec.estimate_date IS NULL) THEN
596       p_estimate_hdr_rec.estimate_date := SYSDATE;
597     END IF;
598 
599     -- Defualt the status to 'NEW' if null
600     IF (p_estimate_hdr_rec.estimate_status IS NULL) THEN
601       p_estimate_hdr_rec.estimate_status := C_EST_STATUS_NEW;
602     END IF;
603 
604   END DEFAULT_EST_HDR_REC;
605 
606   /*------------------------------------------------------------------------*/
607   /* procedure name: VALIDATE_DEFAULTED_EST_HDR                             */
608   /* DEscription: Validate the defaulted  estimates header record           */
609   /*                                                                        */
610   /*  Change History  : Created 25th June2005 by Vijay                      */
611   /*------------------------------------------------------------------------*/
612   PROCEDURE VALIDATE_DEFAULTED_EST_HDR(p_estimate_hdr_rec IN Csd_Repair_Estimate_Pub.estimate_hdr_Rec,
613                                        p_validation_level IN NUMBER) IS
614 
615   l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_DEFAULTED_EST_HDR';
616 
617   BEGIN
618     -- If the summary is null even after SR summary is defaulted, then
619     -- it is an error.
620     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_hdr_rec.work_summary,
621                                       p_param_name  => 'SUMMARY',
622                                       p_api_name    => l_api_name);
623 
624     --Validate input status
625     IF (NOT VALIDATE_EST_STATUS(p_estimate_hdr_rec.estimate_status)) THEN
626       debug('Invalid estimate status[' ||
627             p_estimate_hdr_rec.estimate_status || ']');
628       RAISE Fnd_Api.G_EXC_ERROR;
629     END IF;
630 
631 
632     -- Validate lead time UOM
633     -- swai: bug 9462862  only validate lead time UOM if it has been entered.
634     -- Lead time is optional and UOM should not be validated if not enetered.
635     IF (p_estimate_hdr_rec.lead_time is not null or
636         p_estimate_hdr_rec.lead_time_uom is not null) THEN
637         IF (NOT VALIDATE_LEAD_TIME_UOM(p_estimate_hdr_rec.lead_time_uom)) THEN
638           debug('Invalid lead time uom[' || p_estimate_hdr_rec.lead_time_uom || ']');
639           RAISE Fnd_Api.G_EXC_ERROR;
640         END IF;
641     END IF;
642 
643   END VALIDATE_DEFAULTED_EST_HDR;
644 
645   /*------------------------------------------------------------------------*/
646   /* procedure name: COPY_TO_EST_HDR_REC                                    */
647   /* DEscription: Creates the record required for private api              */
648   /*                                                                        */
649   /*  Change History  : Created 25th June2005 by Vijay                      */
650   /*------------------------------------------------------------------------*/
651   PROCEDURE COPY_TO_EST_HDR_REC(p_estimate_hdr_rec IN Csd_Repair_Estimate_Pub.estimate_hdr_Rec,
652                                 x_est_pvt_hdr_rec  OUT NOCOPY Csd_Repair_Estimate_Pvt.REPAIR_ESTIMATE_REC) IS
653   BEGIN
654 
655     IF (p_estimate_hdr_rec.repair_estimate_id IS NOT NULL) then
656       x_est_pvt_hdr_rec.repair_estimate_id := p_estimate_hdr_rec.repair_estimate_id;
657     END IF;
658 
659     IF (p_estimate_hdr_rec.repair_line_id IS NOT NULL) then
660       x_est_pvt_hdr_rec.repair_line_id := p_estimate_hdr_rec.repair_line_id;
661     END IF;
662     IF (p_estimate_hdr_rec.note_id IS NOT NULL) then
663       x_est_pvt_hdr_rec.note_id := p_estimate_hdr_rec.note_id;
664     END IF;
665     IF (p_estimate_hdr_rec.estimate_date IS NOT NULL) then
666       x_est_pvt_hdr_rec.estimate_date := p_estimate_hdr_rec.estimate_date;
667     END IF;
668     IF (p_estimate_hdr_rec.estimate_status IS NOT NULL) then
669       x_est_pvt_hdr_rec.estimate_status := p_estimate_hdr_rec.estimate_status;
670     END IF;
671     IF (p_estimate_hdr_rec.lead_time IS NOT NULL) then
672       x_est_pvt_hdr_rec.lead_time := p_estimate_hdr_rec.lead_time;
673     END IF;
674     IF (p_estimate_hdr_rec.lead_time_uom IS NOT NULL) then
675       x_est_pvt_hdr_rec.lead_time_uom := p_estimate_hdr_rec.lead_time_uom;
676     END IF;
677     IF (p_estimate_hdr_rec.work_summary IS NOT NULL) then
678       x_est_pvt_hdr_rec.work_summary := p_estimate_hdr_rec.work_summary;
679     END IF;
680     IF (p_estimate_hdr_rec.po_number IS NOT NULL) then
681       x_est_pvt_hdr_rec.po_number := p_estimate_hdr_rec.po_number;
682     END IF;
683     IF (p_estimate_hdr_rec.estimate_reason_code IS NOT NULL) then
684       x_est_pvt_hdr_rec.estimate_reason_code := p_estimate_hdr_rec.estimate_reason_code;
685     END IF;
686     IF (p_estimate_hdr_rec.last_update_date IS NOT NULL) then
687       x_est_pvt_hdr_rec.last_update_date := p_estimate_hdr_rec.last_update_date;
688     END IF;
689     IF (p_estimate_hdr_rec.creation_date IS NOT NULL) then
690       x_est_pvt_hdr_rec.creation_date := p_estimate_hdr_rec.creation_date;
691     END IF;
692     IF (p_estimate_hdr_rec.last_updated_by IS NOT NULL) then
693       x_est_pvt_hdr_rec.last_updated_by := p_estimate_hdr_rec.last_updated_by;
694     END IF;
695     IF (p_estimate_hdr_rec.created_by IS NOT NULL) then
696       x_est_pvt_hdr_rec.created_by := p_estimate_hdr_rec.created_by;
697     END IF;
698     IF (p_estimate_hdr_rec.last_update_login IS NOT NULL) then
699       x_est_pvt_hdr_rec.last_update_login := p_estimate_hdr_rec.last_update_login;
700     END IF;
701     IF (p_estimate_hdr_rec.attribute1 IS NOT NULL) then
702       x_est_pvt_hdr_rec.attribute1 := p_estimate_hdr_rec.attribute1;
703     END IF;
704     IF (p_estimate_hdr_rec.attribute2 IS NOT NULL) then
705       x_est_pvt_hdr_rec.attribute2 := p_estimate_hdr_rec.attribute2;
706     END IF;
707     IF (p_estimate_hdr_rec.attribute3 IS NOT NULL) then
708       x_est_pvt_hdr_rec.attribute3 := p_estimate_hdr_rec.attribute3;
709     END IF;
710     IF (p_estimate_hdr_rec.attribute4 IS NOT NULL) then
711       x_est_pvt_hdr_rec.attribute4 := p_estimate_hdr_rec.attribute4;
712     END IF;
713     IF (p_estimate_hdr_rec.attribute5 IS NOT NULL) then
714       x_est_pvt_hdr_rec.attribute5 := p_estimate_hdr_rec.attribute5;
715     END IF;
716     IF (p_estimate_hdr_rec.attribute6 IS NOT NULL) then
717       x_est_pvt_hdr_rec.attribute6 := p_estimate_hdr_rec.attribute6;
718     END IF;
719     IF (p_estimate_hdr_rec.attribute7 IS NOT NULL) then
720       x_est_pvt_hdr_rec.attribute7 := p_estimate_hdr_rec.attribute7;
721     END IF;
722     IF (p_estimate_hdr_rec.attribute8 IS NOT NULL) then
723       x_est_pvt_hdr_rec.attribute8 := p_estimate_hdr_rec.attribute8;
724     END IF;
725     IF (p_estimate_hdr_rec.attribute9 IS NOT NULL) then
726       x_est_pvt_hdr_rec.attribute9 := p_estimate_hdr_rec.attribute9;
727     END IF;
728     IF (p_estimate_hdr_rec.attribute10 IS NOT NULL) then
729       x_est_pvt_hdr_rec.attribute10 := p_estimate_hdr_rec.attribute10;
730     END IF;
731     IF (p_estimate_hdr_rec.attribute11 IS NOT NULL) then
732       x_est_pvt_hdr_rec.attribute11 := p_estimate_hdr_rec.attribute11;
733     END IF;
734     IF (p_estimate_hdr_rec.attribute12 IS NOT NULL) then
735       x_est_pvt_hdr_rec.attribute12 := p_estimate_hdr_rec.attribute12;
736     END IF;
737     IF (p_estimate_hdr_rec.attribute13 IS NOT NULL) then
738       x_est_pvt_hdr_rec.attribute13 := p_estimate_hdr_rec.attribute13;
739     END IF;
740     IF (p_estimate_hdr_rec.attribute14 IS NOT NULL) then
741       x_est_pvt_hdr_rec.attribute14 := p_estimate_hdr_rec.attribute14;
742     END IF;
743     IF (p_estimate_hdr_rec.attribute15 IS NOT NULL) then
744       x_est_pvt_hdr_rec.attribute15 := p_estimate_hdr_rec.attribute15;
745     END IF;
746     IF (p_estimate_hdr_rec.context IS NOT NULL) then
747       x_est_pvt_hdr_rec.context := p_estimate_hdr_rec.context;
748     END IF;
749     IF (p_estimate_hdr_rec.object_version_number IS NOT NULL) then
750       x_est_pvt_hdr_rec.object_version_number := p_estimate_hdr_rec.object_version_number;
751     END IF;
752     -- swai: bug 9462789
753     IF (p_estimate_hdr_rec.not_to_exceed IS NOT NULL) then
754       x_est_pvt_hdr_rec.not_to_exceed := p_estimate_hdr_rec.not_to_exceed;
755     END IF;
756     -- swai: end bug 9462789
757 
758   END COPY_TO_EST_HDR_REC;
759 
760   /*------------------------------------------------------------------------*/
761   /* procedure name: COPY_TO_EST_HDR_REC_UPD                                */
762   /* DEscription: Creates the record required for private update api        */
763   /*                                                                        */
764   /*  Change History  : Created 25th June2005 by Vijay                      */
765   /*------------------------------------------------------------------------*/
766   PROCEDURE COPY_TO_EST_HDR_REC_UPD(p_estimate_hdr_rec IN Csd_Repair_Estimate_Pub.estimate_hdr_Rec,
767                                     x_est_pvt_hdr_rec  OUT NOCOPY Csd_Repair_Estimate_Pvt.REPAIR_ESTIMATE_REC) IS
768   BEGIN
769     -- swai: bug 9462789
770     x_est_pvt_hdr_rec.repair_estimate_id := p_estimate_hdr_rec.repair_estimate_id;
771 
772     IF (p_estimate_hdr_rec.not_to_exceed IS NOT NULL) then
773       x_est_pvt_hdr_rec.not_to_exceed := p_estimate_hdr_rec.not_to_exceed;
774     END IF;
775     -- swai: end bug 9462789
776 
777 	--bug#9733109
778     IF (p_estimate_hdr_rec.repair_line_id IS NOT NULL) then
779       x_est_pvt_hdr_rec.repair_line_id := p_estimate_hdr_rec.repair_line_id;
780     END IF;
781 	--bug#9733109
782 
783     IF (p_estimate_hdr_rec.note_id IS NOT NULL) then
784       x_est_pvt_hdr_rec.note_id := p_estimate_hdr_rec.note_id;
785     END IF;
786     IF (p_estimate_hdr_rec.estimate_date IS NOT NULL) then
787       x_est_pvt_hdr_rec.estimate_date := p_estimate_hdr_rec.estimate_date;
788     END IF;
789     IF (p_estimate_hdr_rec.estimate_status IS NOT NULL) then
790       x_est_pvt_hdr_rec.estimate_status := p_estimate_hdr_rec.estimate_status;
791     END IF;
792     IF (p_estimate_hdr_rec.lead_time IS NOT NULL) then
793       x_est_pvt_hdr_rec.lead_time := p_estimate_hdr_rec.lead_time;
794     END IF;
795     IF (p_estimate_hdr_rec.lead_time_uom IS NOT NULL) then
796       x_est_pvt_hdr_rec.lead_time_uom := p_estimate_hdr_rec.lead_time_uom;
797     END IF;
798     IF (p_estimate_hdr_rec.work_summary IS NOT NULL) then
799       x_est_pvt_hdr_rec.work_summary := p_estimate_hdr_rec.work_summary;
800     END IF;
801     IF (p_estimate_hdr_rec.po_number IS NOT NULL) then
802       x_est_pvt_hdr_rec.po_number := p_estimate_hdr_rec.po_number;
803     END IF;
804     IF (p_estimate_hdr_rec.estimate_reason_code IS NOT NULL) then
805       x_est_pvt_hdr_rec.estimate_reason_code := p_estimate_hdr_rec.estimate_reason_code;
806     END IF;
807     IF (p_estimate_hdr_rec.attribute1 IS NOT NULL) then
808       x_est_pvt_hdr_rec.attribute1 := p_estimate_hdr_rec.attribute1;
809     END IF;
810     IF (p_estimate_hdr_rec.attribute2 IS NOT NULL) then
811       x_est_pvt_hdr_rec.attribute2 := p_estimate_hdr_rec.attribute2;
812     END IF;
813     IF (p_estimate_hdr_rec.attribute3 IS NOT NULL) then
814       x_est_pvt_hdr_rec.attribute3 := p_estimate_hdr_rec.attribute3;
815     END IF;
816     IF (p_estimate_hdr_rec.attribute4 IS NOT NULL) then
817       x_est_pvt_hdr_rec.attribute4 := p_estimate_hdr_rec.attribute4;
818     END IF;
819     IF (p_estimate_hdr_rec.attribute5 IS NOT NULL) then
820       x_est_pvt_hdr_rec.attribute5 := p_estimate_hdr_rec.attribute5;
821     END IF;
822     IF (p_estimate_hdr_rec.attribute6 IS NOT NULL) then
823       x_est_pvt_hdr_rec.attribute6 := p_estimate_hdr_rec.attribute6;
824     END IF;
825     IF (p_estimate_hdr_rec.attribute7 IS NOT NULL) then
826       x_est_pvt_hdr_rec.attribute7 := p_estimate_hdr_rec.attribute7;
827     END IF;
828     IF (p_estimate_hdr_rec.attribute8 IS NOT NULL) then
829       x_est_pvt_hdr_rec.attribute8 := p_estimate_hdr_rec.attribute8;
830     END IF;
831     IF (p_estimate_hdr_rec.attribute9 IS NOT NULL) then
832       x_est_pvt_hdr_rec.attribute9 := p_estimate_hdr_rec.attribute9;
833     END IF;
834     IF (p_estimate_hdr_rec.attribute10 IS NOT NULL) then
835       x_est_pvt_hdr_rec.attribute10 := p_estimate_hdr_rec.attribute10;
836     END IF;
837     IF (p_estimate_hdr_rec.attribute11 IS NOT NULL) then
838       x_est_pvt_hdr_rec.attribute11 := p_estimate_hdr_rec.attribute11;
839     END IF;
840     IF (p_estimate_hdr_rec.attribute12 IS NOT NULL) then
841       x_est_pvt_hdr_rec.attribute12 := p_estimate_hdr_rec.attribute12;
842     END IF;
843     IF (p_estimate_hdr_rec.attribute13 IS NOT NULL) then
844       x_est_pvt_hdr_rec.attribute13 := p_estimate_hdr_rec.attribute13;
845     END IF;
846     IF (p_estimate_hdr_rec.attribute14 IS NOT NULL) then
847       x_est_pvt_hdr_rec.attribute14 := p_estimate_hdr_rec.attribute14;
848     END IF;
849     IF (p_estimate_hdr_rec.attribute15 IS NOT NULL) then
850       x_est_pvt_hdr_rec.attribute15 := p_estimate_hdr_rec.attribute15;
851     END IF;
852     IF (p_estimate_hdr_rec.context IS NOT NULL) then
853       x_est_pvt_hdr_rec.context := p_estimate_hdr_rec.context;
854     END IF;
855 
856     x_est_pvt_hdr_rec.object_version_number := p_estimate_hdr_rec.object_version_number;
857 
858   END COPY_TO_EST_HDR_REC_UPD;
859 
860   /*-------------------------------------------------------*/
861   /* procedure name: validate_est_line_rec                  */
862   /* DEscription: Validates estimates line record          */
863   /*                                                       */
864   /*  Change History  : Created 25th June2005 by Vijay     */
865   /*-------------------------------------------------------*/
866 
867   PROCEDURE VALIDATE_EST_LINE_REC(p_estimate_line_rec IN Csd_Repair_Estimate_Pub.estimate_line_Rec,
868                                   p_validation_level                        IN NUMBER) IS
869 
870     l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_EST_LINE_REC';
871 	l_order_number varchar2(30);
872 
873   BEGIN
874     -- Check the required parameters
875     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_line_rec.repair_line_id,
876                                       p_param_name  => 'REPAIR_LINE_ID',
877                                       p_api_name    => l_api_name);
878     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_line_rec.repair_estimate_id,
879                                       p_param_name  => 'REPAIR_ESTIMATE_ID',
880                                       p_api_name    => l_api_name);
881     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_line_rec.inventory_item_id,
882                                       p_param_name  => 'INVENTORY_ITEM_ID',
883                                       p_api_name    => l_api_name);
884     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_line_rec.price_list_id,
885                                       p_param_name  => 'PRICE_LIST_ID',
886                                       p_api_name    => l_api_name);
887     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_line_rec.unit_of_measure_code,
888                                       p_param_name  => 'UNIT_OF_MEASURE_CODE',
889                                       p_api_name    => l_api_name);
890     Csd_Process_Util.Check_Reqd_Param(p_param_value => p_estimate_line_rec.estimate_quantity,
891                                       p_param_name  => 'ESTIMATE_QUANTITY',
892                                       p_api_name    => l_api_name);
893 
894     --------------------------------------------------------------------
895     -- Validate repair line id
896     --------------------------------------------------------------------
897     IF (NOT VALIDATE_REP_LINE_ID(p_estimate_line_rec.repair_line_id)) THEN
898       debug('Invalid repair order line[' ||
899             p_estimate_line_rec.repair_line_id || ']');
900       RAISE Fnd_Api.G_EXC_ERROR;
901     END IF;
902 
903     --------------------------------------------------------------------
904     -- Validate estiamate hdr id repair line id combination
905     --------------------------------------------------------------------
906     IF (NOT VALIDATE_ESTIMATE_ID(p_estimate_line_rec.repair_estimate_id,
907                                  p_estimate_line_rec.repair_line_id)) THEN
908       debug('Invalid estiamte header, rep line[' ||
909             p_estimate_line_rec.repair_line_id || ']estimate[' ||
910             p_estimate_line_rec.repair_estimate_id || ']');
911       RAISE Fnd_Api.G_EXC_ERROR;
912     END IF;
913 
914     --------------------------------------------------------------------
915     -- Validate inventory item id
916     --------------------------------------------------------------------
917     IF (NOT
918         Csd_Process_Util.VALIDATE_INVENTORY_ITEM_ID(p_estimate_line_rec.inventory_item_id)) THEN
919       debug('Invalid Inventory item[' ||
920             p_estimate_line_rec.inventory_item_id || ']');
921       RAISE Fnd_Api.G_EXC_ERROR;
922     END IF;
923 
924     --------------------------------------------------------------------
925     -- Validate  UOM
926     --------------------------------------------------------------------
927 
928     IF (NOT VALIDATE_UOM_CODE(p_estimate_line_rec.unit_of_measure_code,
929                               p_estimate_line_rec.inventory_item_id)) THEN
930       debug('Invalid  uom[' || p_estimate_line_rec.unit_of_measure_code || ']');
931       RAISE Fnd_Api.G_EXC_ERROR;
932     END IF;
933 
934     --------------------------------------------------------------------
935     -- Validate  Price list
936     --------------------------------------------------------------------
937 
938     IF (NOT VALIDATE_PRICE_LIST(p_estimate_line_rec.price_list_id)) THEN
939       debug('Invalid  uom[' || p_estimate_line_rec.price_list_id || ']');
940       RAISE Fnd_Api.G_EXC_ERROR;
941     END IF;
942 
943     --------------------------------------------------------------------
944     -- Validate add to order (order _header id and order_line_Id)
945     --------------------------------------------------------------------
946     IF (p_estimate_line_rec.add_to_order_flag = 'Y') THEN
947       l_order_number := VALIDATE_ORDER(p_estimate_line_rec.order_header_id);
948       IF (l_order_number IS NULL OR
949          l_order_number = Fnd_Api.G_MISS_CHAR) THEN
950         debug('Invalid order header id[' ||
951               p_estimate_line_rec.order_header_id || '] ');
952         RAISE Fnd_Api.G_EXC_ERROR;
953       END IF;
954     END IF;
955 
956     -- Validate override charge flag.
957     IF (p_estimate_line_rec.override_charge_flag = 'Y') THEN
958       IF (NVL(Fnd_Profile.value('CSD_ALLOW_CHARGE_OVERRIDE'), 'N') <> 'Y') THEN
959         Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_OVERRIDE_FLAG');
960         Fnd_Msg_Pub.ADD;
961         RAISE Fnd_Api.G_EXC_ERROR;
962       END IF;
963     END IF;
964 
965   END VALIDATE_EST_LINE_REC;
966 
967 /*------------------------------------------------------------------------*/
968 /* procedure name: DEFAULT_EST_LINE_REC                                    */
969 /* DEscription: DEfault values are set in  estimates line record         */
970 /*                                                                        */
971 /*  Change History  : Created 25th June2005 by Vijay                      */
972 /*------------------------------------------------------------------------*/
973 
974 PROCEDURE DEFAULT_EST_LINE_REC(px_estimate_line_rec IN OUT NOCOPY Csd_Repair_Estimate_Pub.estimate_line_Rec) IS
975   -- cursor to get nocharge flag, txn_type and validate txn_billing_type
976   CURSOR CUR_NO_CHARGE_FLAG(p_txn_billing_Type_id NUMBER) IS
977     SELECT NVL(ctt.no_charge_flag, 'N') no_charge_flag,
978            ctt.transaction_Type_id
979       FROM cs_txn_billing_types ctbt, cs_transaction_types ctt
980      WHERE ctbt.txn_billing_type_id = p_txn_billing_type_id
981        AND ctbt.transaction_type_id = ctt.transaction_type_id;
982   -- Cursor to get the incident id , repair type, business process
983   CURSOR CUR_REPAIR_LINE(p_Repair_line_id NUMBER) IS
984     SELECT A.INCIDENT_ID,
985            A.CONTRACT_LINE_ID,
986            B.BUSINESS_PROCESS_ID,
987            B.REPAIR_TYPE_ID
988       FROM CSD_REPAIRS A, CSD_REPAIR_TYPES_B B
989      WHERE A.REPAIR_LINE_ID = p_repair_line_id
990        AND A.REPAIR_TYPE_ID = B.REPAIR_TYPE_ID;
991 
992   -- Cursor to get the contract_id and contract_number
993   CURSOR CUR_CONTRACT_DETAILS(p_contract_line_id NUMBER) IS
994     SELECT HD.ID CONTRACT_ID, HD.CONTRACT_NUMBER
995       FROM OKC_K_HEADERS_B HD, OKC_K_LINES_B KL
996      WHERE HD.ID = KL.DNZ_CHR_ID
997        AND KL.CLE_ID = p_contract_line_id
998        AND ROWNUM = 1;
999 
1000   -- Cursor to get the billable_flag
1001   CURSOR CUR_BILLING_TYPE(p_item_id NUMBER) IS
1002     SELECT material_billable_flag
1003       FROM mtl_system_items_b
1004      WHERE inventory_item_id = p_item_id
1005        AND organization_id = Cs_Std.GET_ITEM_VALDN_ORGZN_ID;
1006 
1007   -- Cursor to get the item cost for a material item
1008   -- Service validation org is considered here.
1009   CURSOR CUR_MATERIAL_COST(p_item_id NUMBER) IS
1010     SELECT item_cost item_cost
1011       FROM cst_item_costs a, cst_cost_types b
1012      WHERE a.cost_type_id = b.cost_type_id
1013        AND UPPER(b.cost_type) = 'FROZEN'
1014        AND a.inventory_item_id = p_item_id
1015        AND a.organization_id = Cs_Std.GET_ITEM_VALDN_ORGZN_ID;
1016 
1017   -- Cursor to get the txn_billing_Types from the repair type.
1018   CURSOR CUR_TXN_BILLING_TYPE(p_repair_type_id NUMBER, p_billing_category VARCHAR2, p_billing_type VARCHAR2) IS
1019     SELECT txn_billing_type_id
1020       FROM csd_repair_types_sar_vl
1021      WHERE repair_type_id = p_repair_type_id
1022        AND BILLING_CATEGORY = p_billing_Category
1023        AND BILLING_TYPE = p_billing_Type;
1024 
1025  CURSOR CUR_ITEM_INSTANCE(p_item_id NUMBER, p_serial_number NUMBER) IS
1026     SELECT instance_number, instance_id
1027       FROM csi_item_instances
1028      WHERE inventory_item_id = p_item_id
1029        AND serial_number = p_serial_number;
1030 
1031   l_billing_Type     VARCHAR2(1);
1032   l_no_charge_flag   VARCHAR2(1);
1033   l_repair_Type_id   NUMBER;
1034   l_contract_line_id NUMBER;
1035   l_pricing_rec      Csd_Process_Util.PRICING_ATTR_REC;
1036   l_return_status    varchar2(1);
1037   l_msg_Count        NUMBER;
1038   l_msg_data         VARCHAR2(4000);
1039 
1040   --bug#3875036
1041   l_account_id						NUMBER        := NULL;
1042 
1043 
1044 BEGIN
1045   px_estimate_line_rec.source_id            := px_estimate_line_rec.repair_line_id;
1046   px_estimate_line_rec.original_source_id   := px_estimate_line_rec.repair_line_id;
1047   px_estimate_line_rec.source_code          := 'DR';
1048   px_estimate_line_rec.original_source_code := 'DR';
1049 
1050   /* bug#3875036 */
1051   l_account_id := CSD_CHARGE_LINE_UTIL.Get_SR_AccountId(px_estimate_line_rec.repair_line_id);
1052 
1053   debug('Input No charge flag [' || px_estimate_line_rec.no_charge_flag || ']');
1054   l_no_charge_flag                         := 'N';
1055   px_estimate_line_rec.transaction_Type_id := -1;
1056   FOR c1_rec IN CUR_NO_CHARGE_FLAG(px_estimate_line_rec.txn_billing_Type_id) LOOP
1057     l_no_charge_flag                         := c1_rec.no_charge_flag;
1058     px_estimate_line_rec.transaction_Type_id := c1_rec.transaction_Type_id;
1059   END LOOP;
1060   debug('txn_type_id is derived from txn_billing type[' ||
1061         px_estimate_line_rec.transaction_Type_id || ']');
1062   IF (px_estimate_line_rec.transaction_Type_id = -1) THEN
1063     Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_TRANSACTION_TYPE');
1064     Fnd_Message.SET_TOKEN('TXN_BILLING_TYPE_ID',
1065                           px_estimate_line_rec.txn_billing_Type_id);
1066     Fnd_Msg_Pub.ADD;
1067     RAISE Fnd_Api.G_EXC_ERROR;
1068   END IF;
1069 
1070   IF (px_estimate_line_rec.no_charge_flag = 'Y' AND
1071      (px_estimate_line_rec.override_charge_flag IS NULL OR
1072      px_estimate_line_rec.override_charge_flag <> 'Y')) THEN
1073     Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_NOCHARGE_FLAG');
1074     Fnd_Msg_Pub.ADD;
1075     RAISE Fnd_Api.G_EXC_ERROR;
1076   ELSIF (px_estimate_line_rec.no_charge_flag IS NULL OR
1077         px_estimate_line_rec.no_charge_flag <> 'Y') THEN
1078     debug('No charge flag is not Y, deriving from txn_billing_type[' ||
1079           px_estimate_line_rec.txn_billing_Type_id || ']');
1080     px_estimate_line_rec.no_charge_flag := l_no_charge_flag;
1081     debug('No charge flag is derived from txn_billing type[' ||
1082           px_estimate_line_rec.no_charge_flag || ']');
1083 
1084   END IF;
1085 
1086   --------------------------------------------------------------------
1087   --Get the business process and incident id values from the
1088   -- CSD_REPAIRS table. Since the repair line id is validated
1089   -- there is no need to check for rec not found condition.
1090   --------------------------------------------------------------------
1091   px_estimate_line_rec.business_process_id := -1;
1092   px_estimate_line_rec.incident_id         := -1;
1093   FOR c1_rec IN CUR_REPAIR_LINE(px_estimate_line_rec.repair_line_id) LOOP
1094     px_estimate_line_rec.business_process_id := c1_rec.business_process_id;
1095     px_estimate_line_rec.incident_id         := c1_rec.incident_id;
1096     l_repair_type_id                         := c1_rec.repair_type_id;
1097     ---------------------------------------------------------------------
1098     --  Default the repair order contract
1099     ---------------------------------------------------------------------
1100     l_contract_line_id := c1_rec.contract_line_id;
1101     OPEN CUR_CONTRACT_DETAILS(c1_rec.contract_line_id);
1102     FETCH CUR_CONTRACT_DETAILS
1103       INTO px_estimate_line_rec.contract_id, px_estimate_line_rec.contract_number;
1104     CLOSE CUR_CONTRACT_DETAILS;
1105 
1106     debug('business_process_id[' || c1_rec.business_process_id || ']' ||
1107           'incident_id[' || c1_rec.incident_id || ']' || 'contract_id[' ||
1108           px_estimate_line_rec.contract_id || ']' || 'contract_number[' ||
1109           px_estimate_line_rec.contract_number || ']');
1110 
1111   END LOOP;
1112 
1113   --------------------------------------------------------------------
1114   -- Get the operating unit from the incident id.
1115   --------------------------------------------------------------------
1116   px_estimate_line_rec.organization_id := Csd_Process_Util.get_org_id(px_estimate_line_rec.incident_id);
1117   IF (px_estimate_line_rec.organization_id = -1) THEN
1118     debug('incident_id[' || px_estimate_line_rec.incident_id ||
1119           '] is invlaid');
1120     RAISE Fnd_Api.G_EXC_ERROR;
1121   END IF;
1122 
1123   -- Get the billing type from the item.
1124   FOR c1_rec IN CUR_BILLING_TYPE(px_estimate_line_rec.inventory_item_id) LOOP
1125     l_billing_type := c1_rec.material_billable_flag;
1126   END LOOP;
1127 
1128   -------------------------------------------------------------------
1129   -- Validate resource id if the billing_type = 'L' which is
1130   -- labor. Get the cost for the input reosurce id. If the resource
1131   -- id results in no record then it is an error condition.
1132   -------------------------------------------------------------------
1133   IF (l_billing_type = 'L') THEN
1134 
1135     Csd_Cost_Analysis_Pvt.Get_ResItemCost(x_return_status     => l_return_status,
1136                                           x_msg_count         => l_msg_count,
1137                                           x_msg_data          => l_msg_data,
1138                                           p_inventory_item_id => px_estimate_line_rec.inventory_item_id,
1139                                           p_organization_id   => Cs_Std.GET_ITEM_VALDN_ORGZN_ID,
1140 										  p_bom_resource_id   => null,
1141     	  								  p_charge_date       => SYSDATE,
1142                                           p_currency_code      => px_estimate_line_rec.currency_code,
1143                                           p_chg_line_uom_code => px_estimate_line_rec.unit_of_measure_code,
1144                                           x_item_cost         => px_estimate_line_rec.item_cost);
1145 
1146     --  changed the default to null instead of 0.
1147     --  also if the cost is 0 changed it to null
1148     IF (px_estimate_line_rec.item_cost = 0) THEN
1149       px_estimate_line_rec.item_cost := NULL;
1150     END IF;
1151 
1152   ELSE
1153     ---------------------------------------------------------------------
1154     -- Billing type M is material. In the case of material, get the
1155     -- item cost from item costs table.
1156     ---------------------------------------------------------------------
1157     --px_estimate_line_rec.item_cost := 0;
1158     debug('item cost,before =[' || px_estimate_line_rec.item_cost || ']');
1159     FOR c1_rec IN CUR_MATERIAL_COST(px_estimate_line_rec.inventory_item_id) LOOP
1160       px_estimate_line_rec.item_cost := c1_rec.item_cost;
1161     END LOOP;
1162     IF (px_estimate_line_rec.item_cost = 0) THEN
1163       px_estimate_line_rec.item_cost := NULL;
1164     END IF;
1165     debug('item cost, after api call =[' || px_estimate_line_rec.item_cost || ']');
1166 
1167   END IF;
1168 
1169   ---------------------------------------------------------------------
1170   -- Get selling price if it is null
1171   ---------------------------------------------------------------------
1172   IF (px_estimate_line_rec.selling_price IS NULL) THEN
1173     l_pricing_rec := get_pricing_rec(px_estimate_line_rec);
1174     Csd_Process_Util.GET_CHARGE_SELLING_PRICE(p_inventory_item_id    => px_estimate_line_rec.inventory_item_id,
1175 
1176 									p_price_list_header_id => px_estimate_line_rec.price_list_id,
1177                                              p_unit_of_measure_code => px_estimate_line_rec.unit_of_measure_code,
1178                                              p_currency_code        => px_estimate_line_rec.currency_code,
1179                                              p_quantity_required    => px_estimate_line_rec.estimate_quantity,
1180 											 p_account_id			  => l_account_id,  /* bug#3875036 */
1181 								     p_org_id   =>  px_estimate_line_rec.organization_id , -- Added for R12
1182                                              p_pricing_rec          => l_pricing_rec,
1183                                              x_selling_price        => px_estimate_line_rec.selling_price,
1184                                              x_return_status        => l_return_status,
1185 											  x_msg_data             => l_msg_data,
1186 											  x_msg_count            => l_msg_count);
1187 
1188     IF(l_return_status <> Fnd_Api.G_RET_STS_SUCCESS) THEN
1189 		RAISE Fnd_Api.G_EXC_ERROR;
1190     END IF;
1191   END IF;
1192 
1193   IF   (px_estimate_line_rec.override_charge_flag <> 'Y') THEN
1194 	  IF (l_contract_line_id IS NULL) THEN
1195 	   px_estimate_line_rec.after_warranty_cost := px_estimate_line_rec.selling_price * px_estimate_line_rec.estimate_quantity;
1196 	  ELSE
1197 	-----------------------------------------------------------------------
1198 	-- Get the discounted price by applying the contract defaulted from the
1199 	--- repair order
1200 	-----------------------------------------------------------------------
1201 		Csd_Charge_Line_Util.GET_DISCOUNTEDPRICE(p_api_version         => 1.0,
1202                                          p_init_msg_list       => Fnd_Api.G_TRUE,
1203                                          p_contract_line_id    => l_contract_line_id,
1204                                          p_repair_type_id      => l_repair_type_id,
1205                                          p_txn_billing_type_id => px_estimate_line_rec.txn_billing_Type_id,
1206                                          p_coverage_txn_grp_id => px_estimate_line_rec.coverage_txn_group_id,
1207                                          p_extended_price      => px_estimate_line_rec.selling_price *
1208                                                                   px_estimate_line_rec.estimate_quantity,
1209                                          p_no_charge_flag      => px_estimate_line_rec.no_Charge_flag,
1210                                          x_discounted_price    => px_estimate_line_rec.after_warranty_cost,
1211                                          x_return_status       => l_return_status,
1212                                          x_msg_count           => l_msg_count,
1213                                          x_msg_data            => l_msg_data);
1214 
1215 	IF (l_return_status <> Fnd_Api.G_RET_STS_SUCCESS) THEN
1216 		Fnd_Message.set_name('CSD',                                                                                            'CSD_EST_ESTIMATED_CHARGE_ERR');
1217 		Fnd_Message.set_token('CONTRACT_NUMBER',       px_estimate_line_rec.CONTRACT_NUMBER);
1218 		Fnd_Msg_Pub.ADD      ;
1219 		RAISE                 Fnd_Api.G_EXC_ERROR;
1220 	END IF;
1221 	END IF; END IF;
1222 
1223     IF (px_estimate_line_rec.no_Charge_flag = 'Y') THEN
1224        px_estimate_line_rec.after_warranty_cost := 0;
1225     END IF;
1226 
1227 ----------------------------------------------------------------------------------
1228 -- Default the other fields in the estimate_line_rec
1229 ----------------------------------------------------------------------------------
1230 	px_estimate_line_rec.est_line_source_type_code := 'MANUAL';
1231 	px_estimate_line_rec.charge_line_type := 'ESTIMATE';
1232 	px_estimate_line_rec.apply_contract_discount := 'N';
1233 
1234 --------------------------------------------------------------------
1235 -- Validate billing type and derive txn_billing_Type from
1236 -- billing tpye and repair type_id
1237 --------------------------------------------------------------------
1238     IF (NOT VALIDATE_BILLING_TYPE(l_billing_Type)) THEN
1239         debug('Invalid billing_type[' || l_billing_Type || ']');
1240         RAISE Fnd_Api.G_EXC_ERROR;
1241     END IF;
1242     px_estimate_line_rec.txn_billing_type_id := -1;
1243     FOR c1_rec IN CUR_TXN_BILLING_TYPE(l_repair_type_id, px_estimate_line_rec.billing_category, l_billing_type) LOOP
1244         px_estimate_line_rec.txn_billing_type_id := c1_rec.txn_billing_type_id;
1245     END LOOP;
1246     IF (px_estimate_line_rec.txn_billing_type_id = -1) THEN
1247         debug('txn billing_type_id[' || px_estimate_line_rec.txn_billing_type_id || '] is invlaid'); Fnd_Message.SET_NAME('CSD', 'CSD_API_INV_TXN_BILLING_TYPE');
1248         Fnd_Msg_Pub.ADD;
1249         RAISE Fnd_Api.G_EXC_ERROR;
1250     END IF;
1251 
1252     -- Get the reference number from
1253     -- csi table and populate the instance_id/customer_product_id
1254 	if(px_estimate_line_rec.serial_number is not null and
1255 	    px_estimate_line_rec.inventory_item_id is not null) then
1256       FOR c2_rec IN CUR_ITEM_INSTANCE(px_estimate_line_rec.serial_number,
1257                                       px_estimate_line_rec.inventory_item_id) LOOP
1258         debug('instance id from serial number is[' || c2_rec.instance_id || ']');
1259         px_estimate_line_rec.instance_id    := c2_rec.instance_id;
1260         px_estimate_line_rec.customer_product_id := c2_rec.instance_id;
1261       END LOOP;
1262 	End If;
1263 
1264 
1265 END DEFAULT_EST_LINE_REC;
1266 
1267 /*------------------------------------------------------------------------*/
1268 /* procedure name: VALIDATE_DEFAULTED_EST_LINE                            */
1269 /* DEscription: Validate the defaulted  estimates header record           */
1270 /*                                                                        */
1271 /*  Change History  : Created 25th June2005 by Vijay                      */
1272 /*------------------------------------------------------------------------*/
1273 PROCEDURE VALIDATE_DEFAULTED_EST_LINE(p_estimate_line_rec IN Csd_Repair_Estimate_Pub.estimate_line_Rec,
1274                                       p_validation_level  IN NUMBER) IS
1275 
1276   -- cursor to get the item attributes.
1277   -- revision control = 'N' when revision control_Code <>2
1278   -- serial_control = 'Y' when the serial_control_Code <>1 and <>6
1279   -- 1==> not serrialized 6 ==> serialized at sales order issue.
1280   CURSOR CUR_ITEM_ATTRIB(p_item_id NUMBER) IS
1281     SELECT DECODE(revision_qty_Control_code, 2, 'Y', 'N') revision_control,
1282            DECODE(serial_number_control_Code, 1, 'N', '6', 'N', 'Y') serial_control,
1283            comms_nl_trackable_Flag ib_control,
1284            primary_uom_code,
1285            material_billable_flag
1286       FROM mtl_system_items_b
1287      WHERE inventory_item_id = p_item_id
1288        AND organization_id = Cs_Std.GET_ITEM_VALDN_ORGZN_ID;
1289 
1290 
1291   l_revision_control VARCHAR2(1);
1292   l_serial_control   VARCHAR2(1);
1293   l_ib_control       VARCHAR2(1);
1294   l_billing_Type     VARCHAR2(1);
1295   l_uom_code         varchar2(10);
1296 
1297 BEGIN
1298 
1299   --------------------------------------------------------------------
1300   -- Validate incident id status. Ensure that the SR status is not closed.
1301   --------------------------------------------------------------------
1302   IF (NOT VALIDATE_INCIDENT_ID(p_estimate_line_rec.incident_id)) THEN
1303     debug('Invalid incident id[' || p_estimate_line_rec.incident_id || ']');
1304     RAISE Fnd_Api.G_EXC_ERROR;
1305   END IF;
1306 
1307   --------------------------------------------------------------------
1308   -- Get the item  attributes and validate revision, serial number,
1309   -- and instance number and also get the primary uom if the uom
1310   -- in the input is null.
1311   -- this query gets the billing_type from item attributes.
1312   --------------------------------------------------------------------
1313   l_revision_Control := 'N';
1314   l_serial_control   := 'N';
1315   l_ib_control       := 'N';
1316   l_uom_code         := NULL;
1317   FOR c1_rec IN CUR_ITEM_ATTRIB(p_estimate_line_rec.inventory_item_id) LOOP
1318     l_revision_Control := c1_rec.revision_Control;
1319     l_serial_control   := c1_rec.serial_control;
1320     l_ib_control       := c1_rec.ib_control;
1321     l_uom_code         := c1_rec.primary_uom_code;
1322     l_billing_type     := c1_rec.material_billable_flag;
1323   END LOOP;
1324 
1325   debug('item[' || p_estimate_line_rec.inventory_item_id ||
1326         ']revision control[' || l_revision_control || ']' ||
1327         ']serial control[' || l_serial_control || ']');
1328 
1329 		/****
1330   IF (p_estimate_line_rec.unit_of_measure_code IS NULL OR
1331      p_estimate_line_rec.unit_of_measure_code = Fnd_Api.G_MISS_CHAR) THEN
1332     p_estimate_line_rec.unit_of_measure_code := l_uom_Code;
1333   END IF;
1334   ***********/
1335 
1336   debug('serial number[' || p_estimate_line_rec.serial_number || ']');
1337   IF (l_revision_control = 'Y') THEN
1338     IF (p_estimate_line_rec.item_revision IS NOT NULL AND
1339        p_estimate_line_rec.item_revision <> Fnd_Api.G_MISS_CHAR AND
1340        NOT VALIDATE_REVISION(p_estimate_line_rec.item_revision,
1341                               p_estimate_line_rec.inventory_item_id,
1342                               Cs_Std.GET_ITEM_VALDN_ORGZN_ID)) THEN
1343       debug('Invalid revision[' || p_estimate_line_rec.item_revision || ']');
1344       RAISE Fnd_Api.G_EXC_ERROR;
1345     END IF;
1346   END IF;
1347 
1348   IF (l_serial_control = 'Y') THEN
1349     IF (p_estimate_line_rec.serial_number IS NOT NULL AND
1350        p_estimate_line_rec.serial_number <> Fnd_Api.G_MISS_CHAR AND NOT
1351         VALIDATE_SERIAL_NUMBER(p_estimate_line_rec.serial_number,
1352                                                                                              p_estimate_line_rec.inventory_item_id)) THEN
1353       debug('Invalid serial number[' || p_estimate_line_rec.serial_number || ']');
1354       RAISE Fnd_Api.G_EXC_ERROR;
1355     END IF;
1356   END IF;
1357 
1358 END VALIDATE_DEFAULTED_EST_LINE;
1359 
1360 /*------------------------------------------------------------------------*/
1361 /* procedure name: COPY_EST_HDR_REC                            */
1362 /* DEscription: Copy the input estimate record          */
1363 /*                                                                        */
1364 /*  Change History  : Created 25th June2005 by Vijay                      */
1365 /*------------------------------------------------------------------------*/
1366 --PROCEDURE COPY_EST_HDR_REC(
1367 
1368 /*------------------------------------------------------------------------*/
1369 /* procedure name: get_pricing_rec                            */
1370 /* DEscription: Copy the pricing attributes into a separate rec           */
1371 /*                                                                        */
1372 /*  Change History  : Created 25th June2005 by Vijay                      */
1373 /*------------------------------------------------------------------------*/
1374 FUNCTION get_pricing_rec(p_estimate_line_rec IN Csd_Repair_Estimate_Pub.ESTIMATE_LINE_REC)
1375   RETURN Csd_Process_Util.PRICING_ATTR_REC IS
1376   l_pricing_rec Csd_Process_Util.PRICING_ATTR_REC;
1377 BEGIN
1378   l_pricing_rec.pricing_context      := p_estimate_line_rec.pricing_context;
1379   l_pricing_rec.pricing_attribute1   := p_estimate_line_rec.pricing_attribute1;
1380   l_pricing_rec.pricing_attribute2   := p_estimate_line_rec.pricing_attribute2;
1381   l_pricing_rec.pricing_attribute3   := p_estimate_line_rec.pricing_attribute3;
1382   l_pricing_rec.pricing_attribute4   := p_estimate_line_rec.pricing_attribute4;
1383   l_pricing_rec.pricing_attribute5   := p_estimate_line_rec.pricing_attribute5;
1384   l_pricing_rec.pricing_attribute6   := p_estimate_line_rec.pricing_attribute6;
1385   l_pricing_rec.pricing_attribute7   := p_estimate_line_rec.pricing_attribute7;
1386   l_pricing_rec.pricing_attribute8   := p_estimate_line_rec.pricing_attribute8;
1387   l_pricing_rec.pricing_attribute9   := p_estimate_line_rec.pricing_attribute9;
1388   l_pricing_rec.pricing_attribute10  := p_estimate_line_rec.pricing_attribute10;
1389   l_pricing_rec.pricing_attribute11  := p_estimate_line_rec.pricing_attribute11;
1390   l_pricing_rec.pricing_attribute12  := p_estimate_line_rec.pricing_attribute12;
1391   l_pricing_rec.pricing_attribute13  := p_estimate_line_rec.pricing_attribute13;
1392   l_pricing_rec.pricing_attribute14  := p_estimate_line_rec.pricing_attribute14;
1393   l_pricing_rec.pricing_attribute15  := p_estimate_line_rec.pricing_attribute15;
1394   l_pricing_rec.pricing_attribute16  := p_estimate_line_rec.pricing_attribute16;
1395   l_pricing_rec.pricing_attribute17  := p_estimate_line_rec.pricing_attribute17;
1396   l_pricing_rec.pricing_attribute18  := p_estimate_line_rec.pricing_attribute18;
1397   l_pricing_rec.pricing_attribute19  := p_estimate_line_rec.pricing_attribute19;
1398   l_pricing_rec.pricing_attribute20  := p_estimate_line_rec.pricing_attribute20;
1399   l_pricing_rec.pricing_attribute21  := p_estimate_line_rec.pricing_attribute21;
1400   l_pricing_rec.pricing_attribute22  := p_estimate_line_rec.pricing_attribute22;
1401   l_pricing_rec.pricing_attribute23  := p_estimate_line_rec.pricing_attribute23;
1402   l_pricing_rec.pricing_attribute24  := p_estimate_line_rec.pricing_attribute24;
1403   l_pricing_rec.pricing_attribute25  := p_estimate_line_rec.pricing_attribute25;
1404   l_pricing_rec.pricing_attribute26  := p_estimate_line_rec.pricing_attribute26;
1405   l_pricing_rec.pricing_attribute27  := p_estimate_line_rec.pricing_attribute27;
1406   l_pricing_rec.pricing_attribute28  := p_estimate_line_rec.pricing_attribute28;
1407   l_pricing_rec.pricing_attribute29  := p_estimate_line_rec.pricing_attribute29;
1408   l_pricing_rec.pricing_attribute30  := p_estimate_line_rec.pricing_attribute30;
1409   l_pricing_rec.pricing_attribute31  := p_estimate_line_rec.pricing_attribute31;
1410   l_pricing_rec.pricing_attribute32  := p_estimate_line_rec.pricing_attribute32;
1411   l_pricing_rec.pricing_attribute33  := p_estimate_line_rec.pricing_attribute33;
1412   l_pricing_rec.pricing_attribute34  := p_estimate_line_rec.pricing_attribute34;
1413   l_pricing_rec.pricing_attribute35  := p_estimate_line_rec.pricing_attribute35;
1414   l_pricing_rec.pricing_attribute36  := p_estimate_line_rec.pricing_attribute36;
1415   l_pricing_rec.pricing_attribute37  := p_estimate_line_rec.pricing_attribute37;
1416   l_pricing_rec.pricing_attribute38  := p_estimate_line_rec.pricing_attribute38;
1417   l_pricing_rec.pricing_attribute39  := p_estimate_line_rec.pricing_attribute39;
1418   l_pricing_rec.pricing_attribute40  := p_estimate_line_rec.pricing_attribute40;
1419   l_pricing_rec.pricing_attribute41  := p_estimate_line_rec.pricing_attribute41;
1420   l_pricing_rec.pricing_attribute42  := p_estimate_line_rec.pricing_attribute42;
1421   l_pricing_rec.pricing_attribute43  := p_estimate_line_rec.pricing_attribute43;
1422   l_pricing_rec.pricing_attribute44  := p_estimate_line_rec.pricing_attribute44;
1423   l_pricing_rec.pricing_attribute45  := p_estimate_line_rec.pricing_attribute45;
1424   l_pricing_rec.pricing_attribute46  := p_estimate_line_rec.pricing_attribute46;
1425   l_pricing_rec.pricing_attribute47  := p_estimate_line_rec.pricing_attribute47;
1426   l_pricing_rec.pricing_attribute48  := p_estimate_line_rec.pricing_attribute48;
1427   l_pricing_rec.pricing_attribute49  := p_estimate_line_rec.pricing_attribute49;
1428   l_pricing_rec.pricing_attribute50  := p_estimate_line_rec.pricing_attribute50;
1429   l_pricing_rec.pricing_attribute51  := p_estimate_line_rec.pricing_attribute51;
1430   l_pricing_rec.pricing_attribute52  := p_estimate_line_rec.pricing_attribute52;
1431   l_pricing_rec.pricing_attribute53  := p_estimate_line_rec.pricing_attribute53;
1432   l_pricing_rec.pricing_attribute54  := p_estimate_line_rec.pricing_attribute54;
1433   l_pricing_rec.pricing_attribute55  := p_estimate_line_rec.pricing_attribute55;
1434   l_pricing_rec.pricing_attribute56  := p_estimate_line_rec.pricing_attribute56;
1435   l_pricing_rec.pricing_attribute57  := p_estimate_line_rec.pricing_attribute57;
1436   l_pricing_rec.pricing_attribute58  := p_estimate_line_rec.pricing_attribute58;
1437   l_pricing_rec.pricing_attribute59  := p_estimate_line_rec.pricing_attribute59;
1438   l_pricing_rec.pricing_attribute60  := p_estimate_line_rec.pricing_attribute60;
1439   l_pricing_rec.pricing_attribute61  := p_estimate_line_rec.pricing_attribute61;
1440   l_pricing_rec.pricing_attribute62  := p_estimate_line_rec.pricing_attribute62;
1441   l_pricing_rec.pricing_attribute63  := p_estimate_line_rec.pricing_attribute63;
1442   l_pricing_rec.pricing_attribute64  := p_estimate_line_rec.pricing_attribute64;
1443   l_pricing_rec.pricing_attribute65  := p_estimate_line_rec.pricing_attribute65;
1444   l_pricing_rec.pricing_attribute66  := p_estimate_line_rec.pricing_attribute66;
1445   l_pricing_rec.pricing_attribute67  := p_estimate_line_rec.pricing_attribute67;
1446   l_pricing_rec.pricing_attribute68  := p_estimate_line_rec.pricing_attribute68;
1447   l_pricing_rec.pricing_attribute69  := p_estimate_line_rec.pricing_attribute69;
1448   l_pricing_rec.pricing_attribute70  := p_estimate_line_rec.pricing_attribute70;
1449   l_pricing_rec.pricing_attribute71  := p_estimate_line_rec.pricing_attribute71;
1450   l_pricing_rec.pricing_attribute72  := p_estimate_line_rec.pricing_attribute72;
1451   l_pricing_rec.pricing_attribute73  := p_estimate_line_rec.pricing_attribute73;
1452   l_pricing_rec.pricing_attribute74  := p_estimate_line_rec.pricing_attribute74;
1453   l_pricing_rec.pricing_attribute75  := p_estimate_line_rec.pricing_attribute75;
1454   l_pricing_rec.pricing_attribute76  := p_estimate_line_rec.pricing_attribute76;
1455   l_pricing_rec.pricing_attribute77  := p_estimate_line_rec.pricing_attribute77;
1456   l_pricing_rec.pricing_attribute78  := p_estimate_line_rec.pricing_attribute78;
1457   l_pricing_rec.pricing_attribute79  := p_estimate_line_rec.pricing_attribute79;
1458   l_pricing_rec.pricing_attribute80  := p_estimate_line_rec.pricing_attribute80;
1459   l_pricing_rec.pricing_attribute81  := p_estimate_line_rec.pricing_attribute81;
1460   l_pricing_rec.pricing_attribute82  := p_estimate_line_rec.pricing_attribute82;
1461   l_pricing_rec.pricing_attribute83  := p_estimate_line_rec.pricing_attribute83;
1462   l_pricing_rec.pricing_attribute84  := p_estimate_line_rec.pricing_attribute84;
1463   l_pricing_rec.pricing_attribute85  := p_estimate_line_rec.pricing_attribute85;
1464   l_pricing_rec.pricing_attribute86  := p_estimate_line_rec.pricing_attribute86;
1465   l_pricing_rec.pricing_attribute87  := p_estimate_line_rec.pricing_attribute87;
1466   l_pricing_rec.pricing_attribute88  := p_estimate_line_rec.pricing_attribute88;
1467   l_pricing_rec.pricing_attribute89  := p_estimate_line_rec.pricing_attribute89;
1468   l_pricing_rec.pricing_attribute90  := p_estimate_line_rec.pricing_attribute90;
1469   l_pricing_rec.pricing_attribute91  := p_estimate_line_rec.pricing_attribute91;
1470   l_pricing_rec.pricing_attribute92  := p_estimate_line_rec.pricing_attribute92;
1471   l_pricing_rec.pricing_attribute93  := p_estimate_line_rec.pricing_attribute93;
1472   l_pricing_rec.pricing_attribute94  := p_estimate_line_rec.pricing_attribute94;
1473   l_pricing_rec.pricing_attribute95  := p_estimate_line_rec.pricing_attribute95;
1474   l_pricing_rec.pricing_attribute96  := p_estimate_line_rec.pricing_attribute96;
1475   l_pricing_rec.pricing_attribute97  := p_estimate_line_rec.pricing_attribute97;
1476   l_pricing_rec.pricing_attribute98  := p_estimate_line_rec.pricing_attribute98;
1477   l_pricing_rec.pricing_attribute99  := p_estimate_line_rec.pricing_attribute99;
1478   l_pricing_rec.pricing_attribute100 := p_estimate_line_rec.pricing_attribute100;
1479 
1480 END;
1481 
1482 
1483 /*------------------------------------------------------------------------*/
1484 /* procedure name: COPY_TO_EST_PVT_LINE_REC                               */
1485 /* Description: Copy values from CSD_REPAIR_ESTIMATE_PUB.estimate_line_rec*/
1486 /*              to CSD_REPAIR_ESTIMATE_PVT.repair_estimate_line_rec       */
1487 /*                                                                        */
1488 /*  Change History  : Created 05 Dec 2011 by yvchen: bug 12545399         */
1489 /*------------------------------------------------------------------------*/
1490 PROCEDURE COPY_TO_EST_PVT_LINE_REC(p_estimate_line_rec IN Csd_Repair_Estimate_Pub.estimate_line_Rec,
1491                                 x_est_pvt_line_rec  IN OUT NOCOPY Csd_Repair_Estimate_Pvt.REPAIR_ESTIMATE_LINE_REC) IS
1492 BEGIN
1493    IF (p_estimate_line_rec.repair_estimate_line_id IS NOT NULL) then
1494         x_est_pvt_line_rec.repair_estimate_line_id := p_estimate_line_rec.repair_estimate_line_id ;
1495    END IF;
1496 
1497    IF (p_estimate_line_rec.repair_estimate_id IS NOT NULL) then
1498         x_est_pvt_line_rec.repair_estimate_id := p_estimate_line_rec.repair_estimate_id ;
1499    END IF;
1500 
1501    IF (p_estimate_line_rec.repair_line_id IS NOT NULL) then
1502         x_est_pvt_line_rec.repair_line_id := p_estimate_line_rec.repair_line_id ;
1503    END IF;
1504 
1505    IF (p_estimate_line_rec.estimate_detail_id IS NOT NULL) then
1506         x_est_pvt_line_rec.estimate_detail_id := p_estimate_line_rec.estimate_detail_id ;
1507    END IF;
1508 
1509    IF (p_estimate_line_rec.incident_id IS NOT NULL) then
1510         x_est_pvt_line_rec.incident_id := p_estimate_line_rec.incident_id ;
1511    END IF;
1512 
1513    IF (p_estimate_line_rec.transaction_type_id IS NOT NULL) then
1514         x_est_pvt_line_rec.transaction_type_id := p_estimate_line_rec.transaction_type_id ;
1515    END IF;
1516 
1517    IF (p_estimate_line_rec.business_process_id IS NOT NULL) then
1518         x_est_pvt_line_rec.business_process_id := p_estimate_line_rec.business_process_id ;
1519    END IF;
1520 
1521    IF (p_estimate_line_rec.txn_billing_type_id IS NOT NULL) then
1522         x_est_pvt_line_rec.txn_billing_type_id := p_estimate_line_rec.txn_billing_type_id ;
1523    END IF;
1524 
1525    IF (p_estimate_line_rec.original_source_id IS NOT NULL) then
1526         x_est_pvt_line_rec.original_source_id := p_estimate_line_rec.original_source_id ;
1527    END IF;
1528 
1529    IF (p_estimate_line_rec.original_source_code IS NOT NULL) then
1530         x_est_pvt_line_rec.original_source_code := p_estimate_line_rec.original_source_code ;
1531    END IF;
1532 
1533    IF (p_estimate_line_rec.source_id IS NOT NULL) then
1534         x_est_pvt_line_rec.source_id := p_estimate_line_rec.source_id ;
1535    END IF;
1536 
1537    IF (p_estimate_line_rec.source_code IS NOT NULL) then
1538         x_est_pvt_line_rec.source_code := p_estimate_line_rec.source_code ;
1539    END IF;
1540 
1541    IF (p_estimate_line_rec.line_type_id IS NOT NULL) then
1542         x_est_pvt_line_rec.line_type_id := p_estimate_line_rec.line_type_id ;
1543    END IF;
1544 
1545    IF (p_estimate_line_rec.item_cost IS NOT NULL) then
1546         x_est_pvt_line_rec.item_cost := p_estimate_line_rec.item_cost ;
1547    END IF;
1548 
1549    IF (p_estimate_line_rec.resource_id IS NOT NULL) then
1550         x_est_pvt_line_rec.resource_id := p_estimate_line_rec.resource_id ;
1551    END IF;
1552 
1553    IF (p_estimate_line_rec.customer_product_id IS NOT NULL) then
1554         x_est_pvt_line_rec.customer_product_id := p_estimate_line_rec.customer_product_id ;
1555    END IF;
1556 
1557    IF (p_estimate_line_rec.reference_number IS NOT NULL) then
1558         x_est_pvt_line_rec.reference_number := p_estimate_line_rec.reference_number ;
1559    END IF;
1560 
1561    IF (p_estimate_line_rec.item_revision IS NOT NULL) then
1562         x_est_pvt_line_rec.item_revision := p_estimate_line_rec.item_revision ;
1563    END IF;
1564 
1565    IF (p_estimate_line_rec.justification_notes IS NOT NULL) then
1566         x_est_pvt_line_rec.justification_notes := p_estimate_line_rec.justification_notes ;
1567    END IF;
1568 
1569    IF (p_estimate_line_rec.estimate_status IS NOT NULL) then
1570         x_est_pvt_line_rec.estimate_status := p_estimate_line_rec.estimate_status ;
1571    END IF;
1572 
1573    IF (p_estimate_line_rec.order_number IS NOT NULL) then
1574         x_est_pvt_line_rec.order_number := p_estimate_line_rec.order_number ;
1575    END IF;
1576 
1577    IF (p_estimate_line_rec.purchase_order_num IS NOT NULL) then
1578         x_est_pvt_line_rec.purchase_order_num := p_estimate_line_rec.purchase_order_num ;
1579    END IF;
1580 
1581    IF (p_estimate_line_rec.source_number IS NOT NULL) then
1582         x_est_pvt_line_rec.source_number := p_estimate_line_rec.source_number ;
1583    END IF;
1584 
1585    IF (p_estimate_line_rec.status IS NOT NULL) then
1586         x_est_pvt_line_rec.status := p_estimate_line_rec.status ;
1587    END IF;
1588 
1589    IF (p_estimate_line_rec.currency_code IS NOT NULL) then
1590         x_est_pvt_line_rec.currency_code := p_estimate_line_rec.currency_code ;
1591    END IF;
1592 
1593    IF (p_estimate_line_rec.line_category_code IS NOT NULL) then
1594         x_est_pvt_line_rec.line_category_code := p_estimate_line_rec.line_category_code ;
1595    END IF;
1596 
1597    IF (p_estimate_line_rec.unit_of_measure_code IS NOT NULL) then
1598         x_est_pvt_line_rec.unit_of_measure_code := p_estimate_line_rec.unit_of_measure_code ;
1599    END IF;
1600 
1601    IF (p_estimate_line_rec.original_source_number IS NOT NULL) then
1602         x_est_pvt_line_rec.original_source_number := p_estimate_line_rec.original_source_number ;
1603    END IF;
1604 
1605    IF (p_estimate_line_rec.add_to_order_flag IS NOT NULL) then
1606         x_est_pvt_line_rec.add_to_order_flag := p_estimate_line_rec.add_to_order_flag ;
1607    END IF;
1608 
1609    IF (p_estimate_line_rec.order_header_id IS NOT NULL) then
1610         x_est_pvt_line_rec.order_header_id := p_estimate_line_rec.order_header_id ;
1611    END IF;
1612 
1613    IF (p_estimate_line_rec.order_line_id IS NOT NULL) then
1614         x_est_pvt_line_rec.order_line_id := p_estimate_line_rec.order_line_id ;
1615    END IF;
1616 
1617    IF (p_estimate_line_rec.inventory_item_id IS NOT NULL) then
1618         x_est_pvt_line_rec.inventory_item_id := p_estimate_line_rec.inventory_item_id ;
1619    END IF;
1620 
1621    IF (p_estimate_line_rec.after_warranty_cost IS NOT NULL) then
1622         x_est_pvt_line_rec.after_warranty_cost := p_estimate_line_rec.after_warranty_cost ;
1623    END IF;
1624 
1625    IF (p_estimate_line_rec.selling_price IS NOT NULL) then
1626         x_est_pvt_line_rec.selling_price := p_estimate_line_rec.selling_price ;
1627    END IF;
1628 
1629    IF (p_estimate_line_rec.original_system_reference IS NOT NULL) then
1630         x_est_pvt_line_rec.original_system_reference := p_estimate_line_rec.original_system_reference ;
1631    END IF;
1632 
1633    IF (p_estimate_line_rec.estimate_quantity IS NOT NULL) then
1634         x_est_pvt_line_rec.estimate_quantity := p_estimate_line_rec.estimate_quantity ;
1635    END IF;
1636 
1637    IF (p_estimate_line_rec.serial_number IS NOT NULL) then
1638         x_est_pvt_line_rec.serial_number := p_estimate_line_rec.serial_number ;
1639    END IF;
1640 
1641    IF (p_estimate_line_rec.lot_number IS NOT NULL) then
1642         x_est_pvt_line_rec.lot_number := p_estimate_line_rec.lot_number ;
1643    END IF;
1644 
1645    IF (p_estimate_line_rec.instance_id IS NOT NULL) then
1646         x_est_pvt_line_rec.instance_id := p_estimate_line_rec.instance_id ;
1647    END IF;
1648 
1649    IF (p_estimate_line_rec.instance_number IS NOT NULL) then
1650         x_est_pvt_line_rec.instance_number := p_estimate_line_rec.instance_number ;
1651    END IF;
1652 
1653    IF (p_estimate_line_rec.price_list_id IS NOT NULL) then
1654         x_est_pvt_line_rec.price_list_id := p_estimate_line_rec.price_list_id ;
1655    END IF;
1656 
1657    IF (p_estimate_line_rec.contract_id IS NOT NULL) then
1658         x_est_pvt_line_rec.contract_id := p_estimate_line_rec.contract_id ;
1659    END IF;
1660 
1661    IF (p_estimate_line_rec.contract_number IS NOT NULL) then
1662         x_est_pvt_line_rec.contract_number := p_estimate_line_rec.contract_number ;
1663    END IF;
1664 
1665    IF (p_estimate_line_rec.coverage_bill_rate_id IS NOT NULL) then
1666         x_est_pvt_line_rec.coverage_bill_rate_id := p_estimate_line_rec.coverage_bill_rate_id ;
1667    END IF;
1668 
1669    IF (p_estimate_line_rec.sub_inventory IS NOT NULL) then
1670         x_est_pvt_line_rec.sub_inventory := p_estimate_line_rec.sub_inventory ;
1671    END IF;
1672 
1673    IF (p_estimate_line_rec.organization_id IS NOT NULL) then
1674         x_est_pvt_line_rec.organization_id := p_estimate_line_rec.organization_id ;
1675    END IF;
1676 
1677    IF (p_estimate_line_rec.invoice_to_org_id IS NOT NULL) then
1678         x_est_pvt_line_rec.invoice_to_org_id := p_estimate_line_rec.invoice_to_org_id ;
1679    END IF;
1680 
1681    IF (p_estimate_line_rec.ship_to_org_id IS NOT NULL) then
1682         x_est_pvt_line_rec.ship_to_org_id := p_estimate_line_rec.ship_to_org_id ;
1683    END IF;
1684 
1685    IF (p_estimate_line_rec.no_charge_flag IS NOT NULL) then
1686         x_est_pvt_line_rec.no_charge_flag := p_estimate_line_rec.no_charge_flag ;
1687    END IF;
1688 
1689    IF (p_estimate_line_rec.override_charge_flag IS NOT NULL) then
1690         x_est_pvt_line_rec.override_charge_flag := p_estimate_line_rec.override_charge_flag ;
1691    END IF;
1692 
1693    IF (p_estimate_line_rec.interface_to_om_flag IS NOT NULL) then
1694         x_est_pvt_line_rec.interface_to_om_flag := p_estimate_line_rec.interface_to_om_flag ;
1695    END IF;
1696 
1697    IF (p_estimate_line_rec.return_reason IS NOT NULL) then
1698         x_est_pvt_line_rec.return_reason := p_estimate_line_rec.return_reason ;
1699    END IF;
1700 
1701    IF (p_estimate_line_rec.return_by_date IS NOT NULL) then
1702         x_est_pvt_line_rec.return_by_date := p_estimate_line_rec.return_by_date ;
1703    END IF;
1704 
1705    IF (p_estimate_line_rec.last_update_date IS NOT NULL) then
1706         x_est_pvt_line_rec.last_update_date := p_estimate_line_rec.last_update_date ;
1707    END IF;
1708 
1709    IF (p_estimate_line_rec.creation_date IS NOT NULL) then
1710         x_est_pvt_line_rec.creation_date := p_estimate_line_rec.creation_date ;
1711    END IF;
1712 
1713    IF (p_estimate_line_rec.last_updated_by IS NOT NULL) then
1714         x_est_pvt_line_rec.last_updated_by := p_estimate_line_rec.last_updated_by ;
1715    END IF;
1716 
1717    IF (p_estimate_line_rec.created_by IS NOT NULL) then
1718         x_est_pvt_line_rec.created_by := p_estimate_line_rec.created_by ;
1719    END IF;
1720 
1721    IF (p_estimate_line_rec.last_update_login IS NOT NULL) then
1722         x_est_pvt_line_rec.last_update_login := p_estimate_line_rec.last_update_login ;
1723    END IF;
1724 
1725    IF (p_estimate_line_rec.object_version_number IS NOT NULL) then
1726         x_est_pvt_line_rec.object_version_number := p_estimate_line_rec.object_version_number ;
1727    END IF;
1728 
1729    IF (p_estimate_line_rec.security_group_id IS NOT NULL) then
1730         x_est_pvt_line_rec.security_group_id := p_estimate_line_rec.security_group_id ;
1731    END IF;
1732 
1733    IF (p_estimate_line_rec.charge_line_type IS NOT NULL) then
1734         x_est_pvt_line_rec.charge_line_type := p_estimate_line_rec.charge_line_type ;
1735    END IF;
1736 
1737    IF (p_estimate_line_rec.apply_contract_discount IS NOT NULL) then
1738         x_est_pvt_line_rec.apply_contract_discount := p_estimate_line_rec.apply_contract_discount ;
1739    END IF;
1740 
1741    IF (p_estimate_line_rec.coverage_id IS NOT NULL) then
1742         x_est_pvt_line_rec.coverage_id := p_estimate_line_rec.coverage_id ;
1743    END IF;
1744 
1745    IF (p_estimate_line_rec.coverage_txn_group_id IS NOT NULL) then
1746         x_est_pvt_line_rec.coverage_txn_group_id := p_estimate_line_rec.coverage_txn_group_id ;
1747    END IF;
1748 
1749    IF (p_estimate_line_rec.contract_discount_amount IS NOT NULL) then
1750         x_est_pvt_line_rec.contract_discount_amount := p_estimate_line_rec.contract_discount_amount ;
1751    END IF;
1752 
1753    IF (p_estimate_line_rec.EST_LINE_SOURCE_TYPE_CODE IS NOT NULL) then
1754         x_est_pvt_line_rec.EST_LINE_SOURCE_TYPE_CODE := p_estimate_line_rec.EST_LINE_SOURCE_TYPE_CODE ;
1755    END IF;
1756 
1757    IF (p_estimate_line_rec.EST_LINE_SOURCE_ID1 IS NOT NULL) then
1758         x_est_pvt_line_rec.EST_LINE_SOURCE_ID1 := p_estimate_line_rec.EST_LINE_SOURCE_ID1 ;
1759    END IF;
1760 
1761    IF (p_estimate_line_rec.EST_LINE_SOURCE_ID2 IS NOT NULL) then
1762         x_est_pvt_line_rec.EST_LINE_SOURCE_ID2 := p_estimate_line_rec.EST_LINE_SOURCE_ID2 ;
1763    END IF;
1764 
1765    IF (p_estimate_line_rec.RO_SERVICE_CODE_ID IS NOT NULL) then
1766         x_est_pvt_line_rec.RO_SERVICE_CODE_ID := p_estimate_line_rec.RO_SERVICE_CODE_ID ;
1767    END IF;
1768 
1769    IF (p_estimate_line_rec.rate_type_code IS NOT NULL) then
1770         x_est_pvt_line_rec.rate_type_code := p_estimate_line_rec.rate_type_code ;
1771    END IF;
1772 
1773    IF (p_estimate_line_rec.contract_line_id IS NOT NULL) then
1774         x_est_pvt_line_rec.contract_line_id := p_estimate_line_rec.rate_type_code ;
1775    END IF;
1776 
1777    IF (p_estimate_line_rec.context IS NOT NULL) then
1778         x_est_pvt_line_rec.context := p_estimate_line_rec.context ;
1779    END IF;
1780 
1781    IF (p_estimate_line_rec.attribute1 IS NOT NULL) then
1782         x_est_pvt_line_rec.attribute1 := p_estimate_line_rec.attribute1 ;
1783    END IF;
1784 
1785    IF (p_estimate_line_rec.attribute2 IS NOT NULL) then
1786         x_est_pvt_line_rec.attribute2 := p_estimate_line_rec.attribute2 ;
1787    END IF;
1788 
1789    IF (p_estimate_line_rec.attribute3 IS NOT NULL) then
1790         x_est_pvt_line_rec.attribute3 := p_estimate_line_rec.attribute3 ;
1791    END IF;
1792 
1793    IF (p_estimate_line_rec.attribute4 IS NOT NULL) then
1794         x_est_pvt_line_rec.attribute4 := p_estimate_line_rec.attribute4 ;
1795    END IF;
1796 
1797    IF (p_estimate_line_rec.attribute5 IS NOT NULL) then
1798         x_est_pvt_line_rec.attribute5 := p_estimate_line_rec.attribute5 ;
1799    END IF;
1800 
1801    IF (p_estimate_line_rec.attribute6 IS NOT NULL) then
1802         x_est_pvt_line_rec.attribute6 := p_estimate_line_rec.attribute6 ;
1803    END IF;
1804 
1805    IF (p_estimate_line_rec.attribute7 IS NOT NULL) then
1806         x_est_pvt_line_rec.attribute7 := p_estimate_line_rec.attribute7 ;
1807    END IF;
1808 
1809    IF (p_estimate_line_rec.attribute8 IS NOT NULL) then
1810         x_est_pvt_line_rec.attribute8 := p_estimate_line_rec.attribute8 ;
1811    END IF;
1812 
1813    IF (p_estimate_line_rec.attribute9 IS NOT NULL) then
1814         x_est_pvt_line_rec.attribute9 := p_estimate_line_rec.attribute9 ;
1815    END IF;
1816 
1817    IF (p_estimate_line_rec.attribute10 IS NOT NULL) then
1818         x_est_pvt_line_rec.attribute10 := p_estimate_line_rec.attribute10 ;
1819    END IF;
1820 
1821    IF (p_estimate_line_rec.attribute11 IS NOT NULL) then
1822         x_est_pvt_line_rec.attribute11 := p_estimate_line_rec.attribute11 ;
1823    END IF;
1824 
1825    IF (p_estimate_line_rec.attribute12 IS NOT NULL) then
1826         x_est_pvt_line_rec.attribute12 := p_estimate_line_rec.attribute12 ;
1827    END IF;
1828 
1829    IF (p_estimate_line_rec.attribute13 IS NOT NULL) then
1830         x_est_pvt_line_rec.attribute13 := p_estimate_line_rec.attribute13 ;
1831    END IF;
1832 
1833    IF (p_estimate_line_rec.attribute14 IS NOT NULL) then
1834         x_est_pvt_line_rec.attribute14 := p_estimate_line_rec.attribute14 ;
1835    END IF;
1836 
1837    IF (p_estimate_line_rec.attribute15 IS NOT NULL) then
1838         x_est_pvt_line_rec.attribute15 := p_estimate_line_rec.attribute15 ;
1839    END IF;
1840 
1841    IF (p_estimate_line_rec.pricing_context IS NOT NULL) then
1842         x_est_pvt_line_rec.pricing_context := p_estimate_line_rec.pricing_context ;
1843    END IF;
1844 
1845    IF (p_estimate_line_rec.pricing_attribute1 IS NOT NULL) then
1846         x_est_pvt_line_rec.pricing_attribute1 := p_estimate_line_rec.pricing_attribute1 ;
1847    END IF;
1848 
1849    IF (p_estimate_line_rec.pricing_attribute2 IS NOT NULL) then
1850         x_est_pvt_line_rec.pricing_attribute2 := p_estimate_line_rec.pricing_attribute2 ;
1851    END IF;
1852 
1853    IF (p_estimate_line_rec.pricing_attribute3 IS NOT NULL) then
1854         x_est_pvt_line_rec.pricing_attribute3 := p_estimate_line_rec.pricing_attribute3 ;
1855    END IF;
1856 
1857    IF (p_estimate_line_rec.pricing_attribute4 IS NOT NULL) then
1858         x_est_pvt_line_rec.pricing_attribute4 := p_estimate_line_rec.pricing_attribute4 ;
1859    END IF;
1860 
1861    IF (p_estimate_line_rec.pricing_attribute5 IS NOT NULL) then
1862         x_est_pvt_line_rec.pricing_attribute5 := p_estimate_line_rec.pricing_attribute5 ;
1863    END IF;
1864 
1865    IF (p_estimate_line_rec.pricing_attribute6 IS NOT NULL) then
1866         x_est_pvt_line_rec.pricing_attribute6 := p_estimate_line_rec.pricing_attribute6 ;
1867    END IF;
1868 
1869    IF (p_estimate_line_rec.pricing_attribute7 IS NOT NULL) then
1870         x_est_pvt_line_rec.pricing_attribute7 := p_estimate_line_rec.pricing_attribute7 ;
1871    END IF;
1872 
1873    IF (p_estimate_line_rec.pricing_attribute8 IS NOT NULL) then
1874         x_est_pvt_line_rec.pricing_attribute8 := p_estimate_line_rec.pricing_attribute8 ;
1875    END IF;
1876 
1877    IF (p_estimate_line_rec.pricing_attribute9 IS NOT NULL) then
1878         x_est_pvt_line_rec.pricing_attribute9 := p_estimate_line_rec.pricing_attribute9 ;
1879    END IF;
1880 
1881    IF (p_estimate_line_rec.pricing_attribute10 IS NOT NULL) then
1882         x_est_pvt_line_rec.pricing_attribute10 := p_estimate_line_rec.pricing_attribute10 ;
1883    END IF;
1884 
1885    IF (p_estimate_line_rec.pricing_attribute11 IS NOT NULL) then
1886         x_est_pvt_line_rec.pricing_attribute11 := p_estimate_line_rec.pricing_attribute11 ;
1887    END IF;
1888 
1889    IF (p_estimate_line_rec.pricing_attribute12 IS NOT NULL) then
1890         x_est_pvt_line_rec.pricing_attribute12 := p_estimate_line_rec.pricing_attribute12 ;
1891    END IF;
1892 
1893    IF (p_estimate_line_rec.pricing_attribute13 IS NOT NULL) then
1894         x_est_pvt_line_rec.pricing_attribute13 := p_estimate_line_rec.pricing_attribute13 ;
1895    END IF;
1896 
1897    IF (p_estimate_line_rec.pricing_attribute14 IS NOT NULL) then
1898         x_est_pvt_line_rec.pricing_attribute14 := p_estimate_line_rec.pricing_attribute14 ;
1899    END IF;
1900 
1901    IF (p_estimate_line_rec.pricing_attribute15 IS NOT NULL) then
1902         x_est_pvt_line_rec.pricing_attribute15 := p_estimate_line_rec.pricing_attribute15 ;
1903    END IF;
1904 
1905    IF (p_estimate_line_rec.pricing_attribute16 IS NOT NULL) then
1906         x_est_pvt_line_rec.pricing_attribute16 := p_estimate_line_rec.pricing_attribute16 ;
1907    END IF;
1908 
1909    IF (p_estimate_line_rec.pricing_attribute17 IS NOT NULL) then
1910         x_est_pvt_line_rec.pricing_attribute17 := p_estimate_line_rec.pricing_attribute17 ;
1911    END IF;
1912 
1913    IF (p_estimate_line_rec.pricing_attribute18 IS NOT NULL) then
1914         x_est_pvt_line_rec.pricing_attribute18 := p_estimate_line_rec.pricing_attribute18 ;
1915    END IF;
1916 
1917    IF (p_estimate_line_rec.pricing_attribute19 IS NOT NULL) then
1918         x_est_pvt_line_rec.pricing_attribute19 := p_estimate_line_rec.pricing_attribute19 ;
1919    END IF;
1920 
1921    IF (p_estimate_line_rec.pricing_attribute20 IS NOT NULL) then
1922         x_est_pvt_line_rec.pricing_attribute20 := p_estimate_line_rec.pricing_attribute20 ;
1923    END IF;
1924 
1925    IF (p_estimate_line_rec.pricing_attribute21 IS NOT NULL) then
1926         x_est_pvt_line_rec.pricing_attribute21 := p_estimate_line_rec.pricing_attribute21 ;
1927    END IF;
1928 
1929    IF (p_estimate_line_rec.pricing_attribute22 IS NOT NULL) then
1930         x_est_pvt_line_rec.pricing_attribute22 := p_estimate_line_rec.pricing_attribute22 ;
1931    END IF;
1932 
1933    IF (p_estimate_line_rec.pricing_attribute23 IS NOT NULL) then
1934         x_est_pvt_line_rec.pricing_attribute23 := p_estimate_line_rec.pricing_attribute23 ;
1935    END IF;
1936 
1937    IF (p_estimate_line_rec.pricing_attribute24 IS NOT NULL) then
1938         x_est_pvt_line_rec.pricing_attribute24 := p_estimate_line_rec.pricing_attribute24 ;
1939    END IF;
1940 
1941    IF (p_estimate_line_rec.pricing_attribute25 IS NOT NULL) then
1942         x_est_pvt_line_rec.pricing_attribute25 := p_estimate_line_rec.pricing_attribute25 ;
1943    END IF;
1944 
1945    IF (p_estimate_line_rec.pricing_attribute26 IS NOT NULL) then
1946         x_est_pvt_line_rec.pricing_attribute26 := p_estimate_line_rec.pricing_attribute26 ;
1947    END IF;
1948 
1949    IF (p_estimate_line_rec.pricing_attribute27 IS NOT NULL) then
1950         x_est_pvt_line_rec.pricing_attribute27 := p_estimate_line_rec.pricing_attribute27 ;
1951    END IF;
1952 
1953    IF (p_estimate_line_rec.pricing_attribute28 IS NOT NULL) then
1954         x_est_pvt_line_rec.pricing_attribute28 := p_estimate_line_rec.pricing_attribute28 ;
1955    END IF;
1956 
1957    IF (p_estimate_line_rec.pricing_attribute29 IS NOT NULL) then
1958         x_est_pvt_line_rec.pricing_attribute29 := p_estimate_line_rec.pricing_attribute29 ;
1959    END IF;
1960 
1961    IF (p_estimate_line_rec.pricing_attribute30 IS NOT NULL) then
1962         x_est_pvt_line_rec.pricing_attribute30 := p_estimate_line_rec.pricing_attribute30 ;
1963    END IF;
1964 
1965    IF (p_estimate_line_rec.pricing_attribute31 IS NOT NULL) then
1966         x_est_pvt_line_rec.pricing_attribute31 := p_estimate_line_rec.pricing_attribute31 ;
1967    END IF;
1968 
1969    IF (p_estimate_line_rec.pricing_attribute32 IS NOT NULL) then
1970         x_est_pvt_line_rec.pricing_attribute32 := p_estimate_line_rec.pricing_attribute32 ;
1971    END IF;
1972 
1973    IF (p_estimate_line_rec.pricing_attribute33 IS NOT NULL) then
1974         x_est_pvt_line_rec.pricing_attribute33 := p_estimate_line_rec.pricing_attribute33 ;
1975    END IF;
1976 
1977    IF (p_estimate_line_rec.pricing_attribute34 IS NOT NULL) then
1978         x_est_pvt_line_rec.pricing_attribute34 := p_estimate_line_rec.pricing_attribute34 ;
1979    END IF;
1980 
1981    IF (p_estimate_line_rec.pricing_attribute35 IS NOT NULL) then
1982         x_est_pvt_line_rec.pricing_attribute35 := p_estimate_line_rec.pricing_attribute35 ;
1983    END IF;
1984 
1985    IF (p_estimate_line_rec.pricing_attribute36 IS NOT NULL) then
1986         x_est_pvt_line_rec.pricing_attribute36 := p_estimate_line_rec.pricing_attribute36 ;
1987    END IF;
1988 
1989    IF (p_estimate_line_rec.pricing_attribute37 IS NOT NULL) then
1990         x_est_pvt_line_rec.pricing_attribute37 := p_estimate_line_rec.pricing_attribute37 ;
1991    END IF;
1992 
1993    IF (p_estimate_line_rec.pricing_attribute38 IS NOT NULL) then
1994         x_est_pvt_line_rec.pricing_attribute38 := p_estimate_line_rec.pricing_attribute38 ;
1995    END IF;
1996 
1997    IF (p_estimate_line_rec.pricing_attribute39 IS NOT NULL) then
1998         x_est_pvt_line_rec.pricing_attribute39 := p_estimate_line_rec.pricing_attribute39 ;
1999    END IF;
2000 
2001    IF (p_estimate_line_rec.pricing_attribute40 IS NOT NULL) then
2002         x_est_pvt_line_rec.pricing_attribute40 := p_estimate_line_rec.pricing_attribute40 ;
2003    END IF;
2004 
2005    IF (p_estimate_line_rec.pricing_attribute41 IS NOT NULL) then
2006         x_est_pvt_line_rec.pricing_attribute41 := p_estimate_line_rec.pricing_attribute41 ;
2007    END IF;
2008 
2009    IF (p_estimate_line_rec.pricing_attribute42 IS NOT NULL) then
2010         x_est_pvt_line_rec.pricing_attribute42 := p_estimate_line_rec.pricing_attribute42 ;
2011    END IF;
2012 
2013    IF (p_estimate_line_rec.pricing_attribute43 IS NOT NULL) then
2014         x_est_pvt_line_rec.pricing_attribute43 := p_estimate_line_rec.pricing_attribute43 ;
2015    END IF;
2016 
2017    IF (p_estimate_line_rec.pricing_attribute44 IS NOT NULL) then
2018         x_est_pvt_line_rec.pricing_attribute44 := p_estimate_line_rec.pricing_attribute44 ;
2019    END IF;
2020 
2021    IF (p_estimate_line_rec.pricing_attribute45 IS NOT NULL) then
2022         x_est_pvt_line_rec.pricing_attribute45 := p_estimate_line_rec.pricing_attribute45 ;
2023    END IF;
2024 
2025    IF (p_estimate_line_rec.pricing_attribute46 IS NOT NULL) then
2026         x_est_pvt_line_rec.pricing_attribute46 := p_estimate_line_rec.pricing_attribute46 ;
2027    END IF;
2028 
2029    IF (p_estimate_line_rec.pricing_attribute47 IS NOT NULL) then
2030         x_est_pvt_line_rec.pricing_attribute47 := p_estimate_line_rec.pricing_attribute47 ;
2031    END IF;
2032 
2033    IF (p_estimate_line_rec.pricing_attribute48 IS NOT NULL) then
2034         x_est_pvt_line_rec.pricing_attribute48 := p_estimate_line_rec.pricing_attribute48 ;
2035    END IF;
2036 
2037    IF (p_estimate_line_rec.pricing_attribute49 IS NOT NULL) then
2038         x_est_pvt_line_rec.pricing_attribute49 := p_estimate_line_rec.pricing_attribute49 ;
2039    END IF;
2040 
2041    IF (p_estimate_line_rec.pricing_attribute50 IS NOT NULL) then
2042         x_est_pvt_line_rec.pricing_attribute50 := p_estimate_line_rec.pricing_attribute50 ;
2043    END IF;
2044 
2045    IF (p_estimate_line_rec.pricing_attribute51 IS NOT NULL) then
2046         x_est_pvt_line_rec.pricing_attribute51 := p_estimate_line_rec.pricing_attribute51 ;
2047    END IF;
2048 
2049    IF (p_estimate_line_rec.pricing_attribute52 IS NOT NULL) then
2050         x_est_pvt_line_rec.pricing_attribute52 := p_estimate_line_rec.pricing_attribute52 ;
2051    END IF;
2052 
2053    IF (p_estimate_line_rec.pricing_attribute53 IS NOT NULL) then
2054         x_est_pvt_line_rec.pricing_attribute53 := p_estimate_line_rec.pricing_attribute53 ;
2055    END IF;
2056 
2057    IF (p_estimate_line_rec.pricing_attribute54 IS NOT NULL) then
2058         x_est_pvt_line_rec.pricing_attribute54 := p_estimate_line_rec.pricing_attribute54 ;
2059    END IF;
2060 
2061    IF (p_estimate_line_rec.pricing_attribute55 IS NOT NULL) then
2062         x_est_pvt_line_rec.pricing_attribute55 := p_estimate_line_rec.pricing_attribute55 ;
2063    END IF;
2064 
2065    IF (p_estimate_line_rec.pricing_attribute56 IS NOT NULL) then
2066         x_est_pvt_line_rec.pricing_attribute56 := p_estimate_line_rec.pricing_attribute56 ;
2067    END IF;
2068 
2069    IF (p_estimate_line_rec.pricing_attribute57 IS NOT NULL) then
2070         x_est_pvt_line_rec.pricing_attribute57 := p_estimate_line_rec.pricing_attribute57 ;
2071    END IF;
2072 
2073    IF (p_estimate_line_rec.pricing_attribute58 IS NOT NULL) then
2074         x_est_pvt_line_rec.pricing_attribute58 := p_estimate_line_rec.pricing_attribute58 ;
2075    END IF;
2076 
2077    IF (p_estimate_line_rec.pricing_attribute59 IS NOT NULL) then
2078         x_est_pvt_line_rec.pricing_attribute59 := p_estimate_line_rec.pricing_attribute59 ;
2079    END IF;
2080 
2081    IF (p_estimate_line_rec.pricing_attribute60 IS NOT NULL) then
2082         x_est_pvt_line_rec.pricing_attribute60 := p_estimate_line_rec.pricing_attribute60 ;
2083    END IF;
2084 
2085    IF (p_estimate_line_rec.pricing_attribute61 IS NOT NULL) then
2086         x_est_pvt_line_rec.pricing_attribute61 := p_estimate_line_rec.pricing_attribute61 ;
2087    END IF;
2088 
2089    IF (p_estimate_line_rec.pricing_attribute62 IS NOT NULL) then
2090         x_est_pvt_line_rec.pricing_attribute62 := p_estimate_line_rec.pricing_attribute62 ;
2091    END IF;
2092 
2093    IF (p_estimate_line_rec.pricing_attribute63 IS NOT NULL) then
2094         x_est_pvt_line_rec.pricing_attribute63 := p_estimate_line_rec.pricing_attribute63 ;
2095    END IF;
2096 
2097    IF (p_estimate_line_rec.pricing_attribute64 IS NOT NULL) then
2098         x_est_pvt_line_rec.pricing_attribute64 := p_estimate_line_rec.pricing_attribute64 ;
2099    END IF;
2100 
2101    IF (p_estimate_line_rec.pricing_attribute65 IS NOT NULL) then
2102         x_est_pvt_line_rec.pricing_attribute65 := p_estimate_line_rec.pricing_attribute65 ;
2103    END IF;
2104 
2105    IF (p_estimate_line_rec.pricing_attribute66 IS NOT NULL) then
2106         x_est_pvt_line_rec.pricing_attribute66 := p_estimate_line_rec.pricing_attribute66 ;
2107    END IF;
2108 
2109    IF (p_estimate_line_rec.pricing_attribute67 IS NOT NULL) then
2110         x_est_pvt_line_rec.pricing_attribute67 := p_estimate_line_rec.pricing_attribute67 ;
2111    END IF;
2112 
2113    IF (p_estimate_line_rec.pricing_attribute68 IS NOT NULL) then
2114         x_est_pvt_line_rec.pricing_attribute68 := p_estimate_line_rec.pricing_attribute68 ;
2115    END IF;
2116 
2117    IF (p_estimate_line_rec.pricing_attribute69 IS NOT NULL) then
2118         x_est_pvt_line_rec.pricing_attribute69 := p_estimate_line_rec.pricing_attribute69 ;
2119    END IF;
2120 
2121    IF (p_estimate_line_rec.pricing_attribute70 IS NOT NULL) then
2122         x_est_pvt_line_rec.pricing_attribute70 := p_estimate_line_rec.pricing_attribute70 ;
2123    END IF;
2124 
2125    IF (p_estimate_line_rec.pricing_attribute71 IS NOT NULL) then
2126         x_est_pvt_line_rec.pricing_attribute71 := p_estimate_line_rec.pricing_attribute71 ;
2127    END IF;
2128 
2129    IF (p_estimate_line_rec.pricing_attribute72 IS NOT NULL) then
2130         x_est_pvt_line_rec.pricing_attribute72 := p_estimate_line_rec.pricing_attribute72 ;
2131    END IF;
2132 
2133    IF (p_estimate_line_rec.pricing_attribute73 IS NOT NULL) then
2134         x_est_pvt_line_rec.pricing_attribute73 := p_estimate_line_rec.pricing_attribute73 ;
2135    END IF;
2136 
2137    IF (p_estimate_line_rec.pricing_attribute74 IS NOT NULL) then
2138         x_est_pvt_line_rec.pricing_attribute74 := p_estimate_line_rec.pricing_attribute74 ;
2139    END IF;
2140 
2141    IF (p_estimate_line_rec.pricing_attribute75 IS NOT NULL) then
2142         x_est_pvt_line_rec.pricing_attribute75 := p_estimate_line_rec.pricing_attribute75 ;
2143    END IF;
2144 
2145    IF (p_estimate_line_rec.pricing_attribute76 IS NOT NULL) then
2146         x_est_pvt_line_rec.pricing_attribute76 := p_estimate_line_rec.pricing_attribute76 ;
2147    END IF;
2148 
2149    IF (p_estimate_line_rec.pricing_attribute77 IS NOT NULL) then
2150         x_est_pvt_line_rec.pricing_attribute77 := p_estimate_line_rec.pricing_attribute77 ;
2151    END IF;
2152 
2153    IF (p_estimate_line_rec.pricing_attribute78 IS NOT NULL) then
2154         x_est_pvt_line_rec.pricing_attribute78 := p_estimate_line_rec.pricing_attribute78 ;
2155    END IF;
2156 
2157    IF (p_estimate_line_rec.pricing_attribute79 IS NOT NULL) then
2158         x_est_pvt_line_rec.pricing_attribute79 := p_estimate_line_rec.pricing_attribute79 ;
2159    END IF;
2160 
2161    IF (p_estimate_line_rec.pricing_attribute80 IS NOT NULL) then
2162         x_est_pvt_line_rec.pricing_attribute80 := p_estimate_line_rec.pricing_attribute80 ;
2163    END IF;
2164 
2165    IF (p_estimate_line_rec.pricing_attribute81 IS NOT NULL) then
2166         x_est_pvt_line_rec.pricing_attribute81 := p_estimate_line_rec.pricing_attribute81 ;
2167    END IF;
2168 
2169    IF (p_estimate_line_rec.pricing_attribute82 IS NOT NULL) then
2170         x_est_pvt_line_rec.pricing_attribute82 := p_estimate_line_rec.pricing_attribute82 ;
2171    END IF;
2172 
2173    IF (p_estimate_line_rec.pricing_attribute83 IS NOT NULL) then
2174         x_est_pvt_line_rec.pricing_attribute83 := p_estimate_line_rec.pricing_attribute83 ;
2175    END IF;
2176 
2177    IF (p_estimate_line_rec.pricing_attribute84 IS NOT NULL) then
2178         x_est_pvt_line_rec.pricing_attribute84 := p_estimate_line_rec.pricing_attribute84 ;
2179    END IF;
2180 
2181    IF (p_estimate_line_rec.pricing_attribute85 IS NOT NULL) then
2182         x_est_pvt_line_rec.pricing_attribute85 := p_estimate_line_rec.pricing_attribute85 ;
2183    END IF;
2184 
2185    IF (p_estimate_line_rec.pricing_attribute86 IS NOT NULL) then
2186         x_est_pvt_line_rec.pricing_attribute86 := p_estimate_line_rec.pricing_attribute86 ;
2187    END IF;
2188 
2189    IF (p_estimate_line_rec.pricing_attribute87 IS NOT NULL) then
2190         x_est_pvt_line_rec.pricing_attribute87 := p_estimate_line_rec.pricing_attribute87 ;
2191    END IF;
2192 
2193    IF (p_estimate_line_rec.pricing_attribute88 IS NOT NULL) then
2194         x_est_pvt_line_rec.pricing_attribute88 := p_estimate_line_rec.pricing_attribute88 ;
2195    END IF;
2196 
2197    IF (p_estimate_line_rec.pricing_attribute89 IS NOT NULL) then
2198         x_est_pvt_line_rec.pricing_attribute89 := p_estimate_line_rec.pricing_attribute89 ;
2199    END IF;
2200 
2201    IF (p_estimate_line_rec.pricing_attribute90 IS NOT NULL) then
2202         x_est_pvt_line_rec.pricing_attribute90 := p_estimate_line_rec.pricing_attribute90 ;
2203    END IF;
2204 
2205    IF (p_estimate_line_rec.pricing_attribute91 IS NOT NULL) then
2206         x_est_pvt_line_rec.pricing_attribute91 := p_estimate_line_rec.pricing_attribute91 ;
2207    END IF;
2208 
2209    IF (p_estimate_line_rec.pricing_attribute92 IS NOT NULL) then
2210         x_est_pvt_line_rec.pricing_attribute92 := p_estimate_line_rec.pricing_attribute92 ;
2211    END IF;
2212 
2213    IF (p_estimate_line_rec.pricing_attribute93 IS NOT NULL) then
2214         x_est_pvt_line_rec.pricing_attribute93 := p_estimate_line_rec.pricing_attribute93 ;
2215    END IF;
2216 
2217    IF (p_estimate_line_rec.pricing_attribute94 IS NOT NULL) then
2218         x_est_pvt_line_rec.pricing_attribute94 := p_estimate_line_rec.pricing_attribute94 ;
2219    END IF;
2220 
2221    IF (p_estimate_line_rec.pricing_attribute95 IS NOT NULL) then
2222         x_est_pvt_line_rec.pricing_attribute95 := p_estimate_line_rec.pricing_attribute95 ;
2223    END IF;
2224 
2225    IF (p_estimate_line_rec.pricing_attribute96 IS NOT NULL) then
2226         x_est_pvt_line_rec.pricing_attribute96 := p_estimate_line_rec.pricing_attribute96 ;
2227    END IF;
2228 
2229    IF (p_estimate_line_rec.pricing_attribute97 IS NOT NULL) then
2230         x_est_pvt_line_rec.pricing_attribute97 := p_estimate_line_rec.pricing_attribute97 ;
2231    END IF;
2232 
2233    IF (p_estimate_line_rec.pricing_attribute98 IS NOT NULL) then
2234         x_est_pvt_line_rec.pricing_attribute98 := p_estimate_line_rec.pricing_attribute98 ;
2235    END IF;
2236 
2237    IF (p_estimate_line_rec.pricing_attribute99 IS NOT NULL) then
2238         x_est_pvt_line_rec.pricing_attribute99 := p_estimate_line_rec.pricing_attribute99 ;
2239    END IF;
2240 
2241    IF (p_estimate_line_rec.pricing_attribute100 IS NOT NULL) then
2242         x_est_pvt_line_rec.pricing_attribute100 := p_estimate_line_rec.pricing_attribute100 ;
2243    END IF;
2244 
2245 END COPY_TO_EST_PVT_LINE_REC;
2246 
2247 
2248 END Csd_Estimate_Utils_Pvt;