DBA Data[Home] [Help]

PACKAGE BODY: APPS.BOM_OPEN_INTERFACE_UTL

Source


1 PACKAGE BODY Bom_Open_Interface_Utl AS
2 /* $Header: BOMUBOIB.pls 120.14 2007/05/24 09:50:20 dikrishn ship $ */
3 /***************************************************************************
4 --
5 --  Copyright (c) 1996 Oracle Corporation, Redwood Shores, CA, USA
6 --  All rights reserved.
7 --
8 --  FILENAME
9 --
10 --      BOMUBOIB.pls
11 --
12 --  DESCRIPTION
13 --
14 --      Body of package Bom_Open_Interface_Utl
15 --
16 --  NOTES
17 --
18 --  HISTORY
19 --
20 --  22-NOV-02   Vani Hymavathi    Initial Creation
21 --  01-JUN-05   Bhavnesh Patel    Added Batch Id
22 ***************************************************************************/
23 /*--------------------------Process_Header_Info------------------------------
24 
25 NAME
26    Process_Header_Info
27 DESCRIPTION
28     Populate the user-friendly columns to bill record in the interface table
29 REQUIRES
30 
31 MODIFIES
32     BOM_BILL_OF_MTLS_INTERFACE
33     MTL_INTERFACE_ERRORS
34 RETURNS
35     0 if successful
36     SQLCODE if unsuccessful
37 NOTES
38 -----------------------------------------------------------------------------*/
39 
40 FUNCTION Process_Header_Info (
41     org_id            NUMBER,
42     all_org             NUMBER ,
43     user_id             NUMBER,
44     login_id            NUMBER,
45     prog_appid          NUMBER,
46     prog_id             NUMBER,
47     req_id              NUMBER,
48     err_text    IN OUT NOCOPY  VARCHAR2,
49     p_batch_id  IN  NUMBER
50 )
51     return INTEGER
52 IS
53  stmt_num            NUMBER := 0;
54 l_sysdate        DATE  :=  SYSDATE;
55 msg_name1 varchar2(30);
56 msg_name2 varchar2(30);
57 msg_text1 varchar2(2000);
58 msg_text2 varchar2(2000);
59 
60 BEGIN
61 
62  stmt_num := 1;
63 /* Resolve the Bill sequence ids for updates and deletes */
64 
65    UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
66        SET(assembly_item_id, organization_id, alternate_bom_designator)
67       = (SELECT assembly_item_id, organization_id , alternate_bom_designator
68            FROM bom_structures_b BBM1
69            WHERE BBM1.bill_sequence_id = BBMI.bill_sequence_id)
70        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
71          AND upper(transaction_type) in (G_Delete, G_Update)
72          AND bill_sequence_id is not null
73          AND
74           (
75               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
76           OR  ( p_batch_id = BBMI.batch_id )
77           )
78          AND exists (SELECT 'x'
79        FROM bom_structures_b BBM2
80        WHERE BBM2.bill_sequence_id = BBMI.bill_sequence_id);
81 
82 
83 
84  stmt_num := 2;
85 
86 /* Update Organization Code using Organization_id
87 this also needed if Organization_id is given and code is not given*/
88 
89    UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
90        SET organization_code = (SELECT organization_code
91                                 FROM MTL_PARAMETERS MP1
92                                 WHERE mp1.organization_id = BBMI.organization_id)
93        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
94          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
95          AND organization_id is not null
96          AND
97           (
98               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
99           OR  ( p_batch_id = BBMI.batch_id )
100           )
101          AND exists (SELECT 'x'
102                      FROM MTL_PARAMETERS MP2
103                      WHERE mp2.organization_id = BBMI.organization_id);
104 
105 
106 
107  stmt_num := 3;
108  /* Update Organization_ids if organization code is given org id is null.
109   Orgnaization_id information is needed in the next steps */
110 
111       UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
112          SET organization_id = (SELECT organization_id
113                                   FROM MTL_PARAMETERS mp1
114                              WHERE mp1.organization_code = BBMI.organization_code)
115        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
116          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
117          AND organization_id is null
118          AND organization_code is not null
119          AND
120           (
121               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
122           OR  ( p_batch_id = BBMI.batch_id )
123           );
124 
125   stmt_num := 3.1;
126     /* Update Assembly Item name */
127     UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
128     SET  item_number   = (SELECT concatenated_segments
129                           FROM MTL_SYSTEM_ITEMS_KFV mvl1
130                           WHERE mvl1.inventory_item_id = BBMI.assembly_item_id
131                           and mvl1.organization_id = BBMI.organization_id)
132     WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
133     AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
134     AND assembly_item_id is not null
135     AND organization_id is not null
136     AND
137     (
138     ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
139     OR  ( p_batch_id = BBMI.batch_id )
140     )
141     AND exists (SELECT 'x'
142                 FROM MTL_SYSTEM_ITEMS MKFV
143                 WHERE MKFV.inventory_item_id = BBMI.assembly_item_id
144                 AND MKFV.organization_id = BBMI.organization_id);
145 
146   stmt_num := 4;
147 
148     /* Update Assembly Item Id*/
149     UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
150     SET assembly_item_id = (SELECT inventory_item_id
151                             FROM MTL_SYSTEM_ITEMS_KFV mvl1
152                             WHERE mvl1.concatenated_segments = BBMI.item_number
153                             AND  mvl1.organization_id = BBMI.organization_id)
154     WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
155     AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
156     AND item_number is not null
157     AND organization_id is not null
158     AND assembly_item_id is null
159     AND
160     (
161          ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
162       OR ( p_batch_id = BBMI.batch_id )
163      );
164 
165    stmt_num := 5;
166    /*  Assign transaction ids */
167 
168        UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
169          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
170              transaction_type = upper(transaction_type)
171        WHERE transaction_id is null
172          AND upper(transaction_type) in (G_Create, G_Update, G_Delete,'NO_OP')
173          AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
174          AND
175           (
176               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
177           OR  ( p_batch_id = BBMI.batch_id )
178           )
179          AND (all_org = 1
180              OR
181             (all_org = 2 AND organization_id = org_id));
182 
183 
184 
185 stmt_num := 6;
186 /* Assign Common Item id and Common Organization id if common_bill_sequence_id is given
187 and a bill exists with that bill_sequence_id */
188 
189   UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
190        SET(common_assembly_item_id, common_organization_id)
191        = (SELECT assembly_item_id, organization_id
192            FROM bom_structures_b BBM1
193            WHERE BBM1.bill_sequence_id = BBMI.common_bill_sequence_id)
194        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
195          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
196          AND common_bill_sequence_id is not null
197          AND
198           (
199               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
200           OR  ( p_batch_id = BBMI.batch_id )
201           )
202          AND exists (SELECT 'x'
203        FROM bom_structures_b BBM2
204        WHERE BBM2.bill_sequence_id = BBMI.common_bill_sequence_id);
205 
206 
207 
208 stmt_num :=7;
209 /* Assign common_organization_code if common_organization_id is populated */
210 
211     UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
212        SET common_org_code = (SELECT organization_code
213                                  FROM MTL_PARAMETERS mp1
214                WHERE mp1.organization_id = BBMI.common_organization_id)
215        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
216          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
217          AND common_organization_id is not null
218          AND
219           (
220               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
221           OR  ( p_batch_id = BBMI.batch_id )
222           )
223          AND exists (SELECT 'x'
224                       FROM MTL_PARAMETERS mp2
225                       WHERE mp2.organization_id = BBMI.common_organization_id);
226 
227 
228 
229  stmt_num :=8 ;
230  /* Update Organization_ids if organization_code is given org id is null.
231   Orgnaization_id information is needed in the next steps */
232 
233       UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
234        SET common_organization_id = (SELECT organization_id
235                                        FROM MTL_PARAMETERS MP1
236                                        WHERE mp1.organization_code = BBMI.common_org_code)
237        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
238        AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
239        AND common_organization_id is null
240        AND common_org_code is not null
241        AND
242         (
243             ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
244         OR  ( p_batch_id = BBMI.batch_id )
245         );
246 
247   stmt_num := 9;
248 /* Update Assembly Item name */
249 
250        UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
251        SET common_item_number   = (SELECT concatenated_segments
252                                    FROM MTL_SYSTEM_ITEMS_KFV mvl1
253                                    WHERE mvl1.inventory_item_id = BBMI.common_assembly_item_id
254                                    AND mvl1.organization_id = BBMI.common_organization_id)
255        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
256          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,G_NoOp)
257          AND common_assembly_item_id is not null
258          AND common_organization_id is not null
259          AND
260           (
261               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
262           OR  ( p_batch_id = BBMI.batch_id )
263           )
264          AND exists (SELECT 'x'
265                      FROM MTL_SYSTEM_ITEMS mvl2
266                      WHERE mvl2.inventory_item_id = BBMI.common_assembly_item_id
267                      AND mvl2.organization_id = BBMI.common_organization_id);
268 
269 /* Update the delete_group_name from bom_interface_delete_groups */
270    stmt_num := 9.5;
271    UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
272        SET (DELETE_GROUP_NAME, DG_DESCRIPTION)
273                            = (SELECT DELETE_GROUP_NAME, DESCRIPTION
274                              FROM bom_interface_delete_groups
275                              Where upper(entity_name) = 'BOM_BILL_OF_MTLS_INTERFACE'
276                              And rownum = 1)
277        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
278          AND upper(transaction_type) in (G_Delete)
279          AND organization_id is not null
280          AND delete_group_name is null
281          AND
282           (
283               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
284           OR  ( p_batch_id = BBMI.batch_id )
285           )
286          AND exists (SELECT 'x'
287                      FROM bom_interface_delete_groups
288                      Where upper(entity_name) = 'BOM_BILL_OF_MTLS_INTERFACE'
289                      );
290 
291   stmt_num := 9.6;
292 /* Update Bill Sequence Id when there are IDs available */
293 
294    UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
295        SET bill_sequence_id  = (SELECT bill_sequence_id
296                                 FROM bom_structures_b bom
297                                 WHERE bom.assembly_item_id = BBMI.assembly_item_id
298                                 AND   bom.organization_id = BBMI.organization_id
299                                 AND   NVL(bom.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BBMI.alternate_bom_designator,FND_API.G_MISS_CHAR))
300        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
301          AND upper(transaction_type) in (G_Delete, G_Update)
302          AND assembly_item_id is not null
303          AND organization_id is not null
304          AND
305           (
306               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
307           OR  ( p_batch_id = BBMI.batch_id )
308           )
309          AND exists (SELECT 1
310                        FROM bom_structures_b bom1
311                       WHERE bom1.assembly_item_id = BBMI.assembly_item_id
312                       AND   bom1.organization_id = BBMI.organization_id
313                       AND   NVL(bom1.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BBMI.alternate_bom_designator,FND_API.G_MISS_CHAR));
314 
318    stmt_num := 9.7;
315   /* Commented for Performance Fix . We will have the ids before reaching this point
316      So we dont need to resolve bill_seq_id using UUs
317 
319    UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
320        SET bill_sequence_id  = (SELECT bill_sequence_id
321                              FROM  bom_bill_of_materials bom, mtl_system_items_vl mvll
322                              WHERE mvll.concatenated_segments = BBMI.item_number
323                              AND   mvll.organization_id = BBMI.organization_id
324                              AND   bom.assembly_item_id = mvll.inventory_item_id
325                              AND   bom.organization_id = mvll.organization_id
326                              AND   NVL(bom.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BBMI.alternate_bom_designator,FND_API.G_MISS_CHAR))
327        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
328          AND upper(transaction_type) in (G_Delete, G_Update)
329          AND item_number is not null
330          AND organization_id is not null
331          AND bill_sequence_id is null
332          AND
333           (
334               ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
335           OR  ( p_batch_id = BBMI.batch_id )
336           );
337      */
338 
339 
340   stmt_num := 9.8;
341 /* Update structure type name to the internal name from the display name  */
342   UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
343      SET structure_type_name = (SELECT structure_type_name
344                                 FROM  BOM_STRUCTURE_TYPES_VL bstv
345                                 WHERE decode(BBMI.structure_type_name, null, to_char(bstv.structure_type_id), bstv.display_name)
346                                  = decode(BBMI.structure_type_name, null, to_char(BBMI.structure_type_id), BBMI.structure_type_name))
347      WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
348        AND (structure_type_name is not null OR structure_type_id is not null)
349        AND upper(transaction_type) in (G_Create,G_Update,G_NoOp)
350        AND
351         (
352             ( (p_batch_id IS NULL) AND (BBMI.batch_id IS NULL) )
353         OR  ( p_batch_id = BBMI.batch_id )
354         )
355        AND exists (SELECT null
356                    FROM  BOM_STRUCTURE_TYPES_VL bstv
357                    WHERE decode(BBMI.structure_type_name, null, to_char(bstv.structure_type_id), bstv.display_name) =
358                      decode(BBMI.structure_type_name, null, to_char(BBMI.structure_type_id), BBMI.structure_type_name));
359 
360    stmt_num := 10;
361 /*  Load rows from bill interface into revisions interface*/
362 
363                  INSERT into mtl_item_revisions_interface
364                      (ITEM_NUMBER,
365                       ORGANIZATION_CODE,
366                       REVISION,
367                       EFFECTIVITY_DATE,
368                       IMPLEMENTATION_DATE,
369                       PROCESS_FLAG,
370                       TRANSACTION_TYPE,
371                       LAST_UPDATE_DATE,
372                       LAST_UPDATED_BY,
373                       CREATION_DATE,
374                       CREATED_BY,
375                       LAST_UPDATE_LOGIN,
376                       REQUEST_ID,
377                       PROGRAM_APPLICATION_ID,
378                       PROGRAM_ID,
379                       PROGRAM_UPDATE_DATE,
380                       SET_PROCESS_ID)
381                     select
382                       item_number,
383                        Organization_Code,
384                        REVISION,
385                        sysdate,
386                        sysdate,
387                        1,
388                        G_Create,
389                        NVL(LAST_UPDATE_DATE, SYSDATE),
390                        NVL(LAST_UPDATED_BY, user_id),
391                        NVL(CREATION_DATE,SYSDATE),
392                        NVL(CREATED_BY, user_id),
393                        NVL(LAST_UPDATE_LOGIN, user_id),
394                        NVL(REQUEST_ID, req_id),
395                        NVL(PROGRAM_APPLICATION_ID, prog_appid),
396                        NVL(PROGRAM_ID, prog_id),
397                        NVL(PROGRAM_UPDATE_DATE, sysdate),
398                        NVL(BATCH_ID,0) -- Replace NULL batch id with 0 - table level default value for set_process_id
399                      FROM BOM_BILL_OF_MTLS_INTERFACE
400                      WHERE process_flag = 1
401                      AND transaction_type = G_Create
402                      AND (all_org = 1
403                           OR
404                           (all_org = 2 AND organization_id = org_id))
405                      AND revision is not null
406                      AND
407                       (
408                           ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
409                       OR  ( p_batch_id = batch_id )
410                       );
411 
412 COMMIT;
413    stmt_num := 11;
414 
415 /* Update the interface records with process_flag 3 and insert into
416 MTL_INTERFACE_ERRORS if Item number or Organization_code  is missing*/
417 
418  l_sysdate        :=  SYSDATE;
419  msg_name1   := 'BOM_ORG_ID_MISSING';
420  msg_name2   := 'BOM_ASSY_ITEM_MISSING';
421  FND_MESSAGE.SET_NAME('BOM', 'BOM_ORG_ID_MISSING');
422  msg_text1   := FND_MESSAGE.GET;
423  FND_MESSAGE.SET_NAME('BOM', 'BOM_ASSY_ITEM_MISSING');
424  msg_text2   := FND_MESSAGE.GET;
425 
426    INSERT INTO MTL_INTERFACE_ERRORS
430   ORGANIZATION_ID,
427    (
428   TRANSACTION_ID,
429   UNIQUE_ID,
431   COLUMN_NAME,
432   TABLE_NAME,
433   MESSAGE_NAME,
434   ERROR_MESSAGE,
435   LAST_UPDATE_DATE,
436   LAST_UPDATED_BY,
437   CREATION_DATE,
438   CREATED_BY,
439   LAST_UPDATE_LOGIN,
440   REQUEST_ID,
441   PROGRAM_APPLICATION_ID,
442   PROGRAM_ID,
443   PROGRAM_UPDATE_DATE
444    )
445   Select
446   BBMI.transaction_id,
447   MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
448   Null,
449   null,
450   'BOM_BILL_OF_MTLS_INTERFACE',
451   decode ( BBMI.Organization_code, null, msg_name1,msg_name2),
452   decode ( BBMI.Organization_code, null, msg_text1,msg_text2),
453         NVL(LAST_UPDATE_DATE, SYSDATE),
454         NVL(LAST_UPDATED_BY, user_id),
455         NVL(CREATION_DATE,SYSDATE),
456         NVL(CREATED_BY, user_id),
457         NVL(LAST_UPDATE_LOGIN, user_id),
458          req_id,
459         NVL(PROGRAM_APPLICATION_ID, prog_appid),
460         NVL(PROGRAM_ID, prog_id),
461         NVL(PROGRAM_UPDATE_DATE, sysdate)
462 
463     from BOM_BILL_OF_MTLS_INTERFACE BBMI
464    where (organization_code is null or item_number is null)
465   and transaction_id is not null
466   and process_flag =1
467   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
468   and
469    (
470        ( (p_batch_id is null) and (bbmi.batch_id is null) )
471    or  ( p_batch_id = bbmi.batch_id )
472    );
473 
474 
475   Update BOM_BILL_OF_MTLS_INTERFACE BBMI
476   set process_flag = 3
477   where (item_number is null or Organization_code is null)
478   and transaction_id is not null
479   and process_flag =1
480   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
481   and
482    (
483        ( (p_batch_id is null) and (BBMI.batch_id is null) )
484    or  ( p_batch_id = BBMI.batch_id )
485    ) ;
486 
487 Commit;
488 
489 return(0);
490 
491 
492 EXCEPTION
493    WHEN others THEN
494       err_text := 'Bom_Open_Interface_Utl(Process_Header_Info-'||stmt_num||') '||substrb(SQLERRM,1,1000);
495       RETURN(SQLCODE);
496 
497 END;
498 
499 
500 /*--------------------------Process_Comps_Info------------------------------
501 
502 NAME
503    Process_Comps_Info
504 DESCRIPTION
505     Populate the user-friendly columns to Component records in the interface table
506 REQUIRES
507 
508 MODIFIES
509     BOM_INVENTORY_COMPS_INTERFACE
510     MTL_INTERFACE_ERRORS
511 RETURNS
512     0 if successful
513     SQLCODE if unsuccessful
514 NOTES
515 -----------------------------------------------------------------------------*/
516 
517 FUNCTION Process_Comps_Info (
518     org_id            NUMBER,
519     all_org             NUMBER ,
520     user_id             NUMBER,
521     login_id            NUMBER,
522     prog_appid          NUMBER,
523     prog_id             NUMBER,
524     req_id              NUMBER,
525     err_text    IN OUT NOCOPY  VARCHAR2,
526     p_batch_id  IN  NUMBER
527 )
528     return INTEGER
529 IS
530  stmt_num            NUMBER := 0;
531 l_sysdate        DATE  :=  SYSDATE;
532 msg_name1 varchar2(30);
533 msg_name2 varchar2(30);
534 msg_text1 varchar2(2000);
535 msg_text2 varchar2(2000);
536 
537 BEGIN
538 
539  stmt_num := 1;
540 /* Resolve the Component_sequence_ids for updates and deletes */
541 
542    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
543        SET(bill_sequence_id,  component_item_id, effectivity_date,
544          operation_seq_num,  from_end_item_unit_number)
545        = (SELECT bill_sequence_id,  component_item_id,
546     effectivity_date, operation_seq_num,  from_end_item_unit_number
547            FROM bom_components_b BIC1
548            WHERE BIC1.component_sequence_id = BICI.component_sequence_id )
549        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
550          AND upper(transaction_type) in (G_Delete, G_Update)
551          AND component_sequence_id is not null
552          AND
553           (
554               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
555           OR  ( p_batch_id = BICI.batch_id )
556           )
557          AND exists (SELECT 'x'
558            FROM bom_components_b BIC2
559            WHERE BIC2.component_sequence_id = BICI.component_sequence_id );
560 
561 
562 stmt_num := 2;
563 /* Resolve the Bill sequence ids for updates and deletes */
564 
565    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
566        SET(assembly_item_id, organization_id, alternate_bom_designator)
567        = (SELECT assembly_item_id, organization_id , alternate_bom_designator
568            FROM bom_structures_b BBM1
569            WHERE BBM1.bill_sequence_id = BICI.bill_sequence_id)
570        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
571          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
572          AND bill_sequence_id is not null
573          AND
574           (
575               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
576           OR  ( p_batch_id = BICI.batch_id )
577           )
578          AND exists (SELECT 'x'
579        FROM bom_structures_b BBM2
580        WHERE BBM2.bill_sequence_id =BICI.bill_sequence_id);
584 /* Update Organization Code using Organization_id
581 
582 
583  stmt_num := 3;
585 this also needed if Organization_id is given and code is not given*/
586 
587    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
588    SET organization_code = (SELECT organization_code
589                             FROM MTL_PARAMETERS mp1
590                             WHERE mp1.organization_id = BICI.organization_id)
591    WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
592    AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
593    AND organization_id is not null
594    AND
595     (
596         ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
597     OR  ( p_batch_id = BICI.batch_id )
598     )
599    AND exists (SELECT 'x'
600                FROM MTL_PARAMETERS mp2
601                WHERE mp2.organization_id = BICI.organization_id);
602 
603 
604 
605  stmt_num := 4;
606  /* Update Organization_ids if organization_code is given org id is null.
607   Orgnaization_id information is needed in the next steps */
608 
609       UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
610       SET organization_id = (SELECT organization_id
611                              FROM MTL_PARAMETERS mp1
612                              WHERE mp1.organization_code = BICI.organization_code)
613       WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
614       AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
615       AND organization_id is null
616       AND organization_code is not null
617       AND
618        (
619            ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
620        OR  ( p_batch_id = BICI.batch_id )
621        );
622 
623 
624 
625   stmt_num := 5;
626 /* Update Assembly Item name */
627 
628    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
629        SET  assembly_item_number  = (SELECT concatenated_segments
630                                      FROM MTL_SYSTEM_ITEMS_KFV mvl1
631                                      WHERE mvl1.inventory_item_id = BICI.assembly_item_id
632                                      AND mvl1.organization_id = BICI.organization_id)
633        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
634          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
635          AND assembly_item_id is not null
636          AND organization_id is not null
637          AND
638           (
639               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
640           OR  ( p_batch_id = BICI.batch_id )
641           )
642           AND exists (SELECT 'x'
643                       FROM mtl_system_items mvl12
644                       WHERE mvl12.inventory_item_id = BICI.assembly_item_id
645                       AND mvl12.organization_id = BICI.organization_id);
646 
647    stmt_num := 5.1;
648    /* Update the Assembly Item Id */
649 
650        UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
651        SET  assembly_item_id  = (SELECT inventory_item_id
652                                  FROM MTL_SYSTEM_ITEMS_KFV mvl1
653                                  WHERE mvl1.concatenated_segments = BICI.assembly_item_number
654                                  AND mvl1.organization_id = BICI.organization_id)
655        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
656          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
657          AND assembly_item_number is not null
658          AND organization_id is not null
659          AND assembly_item_id is null
660          AND
661           (
662               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
663           OR  ( p_batch_id = BICI.batch_id )
664           );
665 
666 
667   stmt_num := 6;
668   /* Update Component Item name */
669 
670    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
671        SET  component_item_number   = (SELECT CONCATENATED_SEGMENTS
672                                        FROM MTL_SYSTEM_ITEMS_KFV mvl1
673                                        WHERE mvl1.inventory_item_id = BICI.component_item_id
674                                        AND mvl1.organization_id = BICI.organization_id)
675        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
676          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
677          AND COMPONENT_ITEM_ID is not null
678          AND organization_id is not null
679          AND
680           (
681               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
682           OR  ( p_batch_id = BICI.batch_id )
683           )
684           AND exists (SELECT 'x'
685                       FROM mtl_system_items mvl12
686                       WHERE mvl12.inventory_item_id = BICI.component_item_id
687                       AND mvl12.organization_id = BICI.organization_id);
688 
689   stmt_num := 6.1;
690 /* Update the component_item_id */
691    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
692        SET component_item_id  = (SELECT inventory_item_id
693                                  FROM  mtl_system_items_kfv mvll
694                                  WHERE mvll.concatenated_segments = BICI.component_item_number
695                                  AND   mvll.organization_id = BICI.organization_id)
696        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
697          AND upper(transaction_type) in (G_Delete, G_Update)
701          AND
698          AND component_item_number is not null
699          AND organization_id is not null
700          AND component_item_id IS null
702           (
703               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
704           OR  ( p_batch_id = BICI.batch_id )
705           );
706 
707 
708    stmt_num := 7;
709    /*  Assign transaction ids */
710 
711        UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
712          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
713              transaction_type = upper(transaction_type)
714        WHERE transaction_id is null
715          AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
716          AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
717          AND (all_org = 1
718              OR
719             (all_org = 2 AND organization_id = org_id))
720          AND
721           (
722               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
723           OR  ( p_batch_id = BICI.batch_id )
724           );
725 
726 
727 stmt_num := 8;
728 /* Update Supply_locator_name */
729 
730  UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
731        SET  location_name  = (SELECT concatenated_segments
732                              FROM MTL_ITEM_LOCATIONS_KFV MIL1
733                              WHERE MIL1.inventory_location_id = BICI.supply_locator_id
734            and MIL1.organization_id = BICI.organization_id)
735        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
736          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
737          AND supply_locator_id is not null
738          AND organization_id is not null
739          AND
740           (
741               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
742           OR  ( p_batch_id = BICI.batch_id )
743           )
744          AND exists (SELECT 'x'
745                        FROM MTL_ITEM_LOCATIONS mil2
746                        WHERE mil2.INVENTORY_LOCATION_ID = BICI.supply_locator_id
747       and mil2.organization_id = BICI.organization_id);
748 
749 stmt_num := 8.5;
750 /* Update the delete_group_name from bom_interface_delete_groups */
751    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
752        SET (DELETE_GROUP_NAME, DG_DESCRIPTION)
753                            = (SELECT DELETE_GROUP_NAME, DESCRIPTION
754                              FROM bom_interface_delete_groups
755                              Where upper(entity_name) = 'BOM_INVENTORY_COMPS_INTERFACE'
756                              And rownum = 1)
757        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
758          AND upper(transaction_type) in (G_Delete)
759          AND organization_id is not null
760          AND delete_group_name is null
761          AND
762           (
763               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
764           OR  ( p_batch_id = BICI.batch_id )
765           )
766          AND exists (SELECT 'x'
767                      FROM bom_interface_delete_groups
768                      Where upper(entity_name) = 'BOM_INVENTORY_COMPS_INTERFACE'
769                      );
770 
771 
772 stmt_num := 8.6;
773 /* Update the bill_sequence_id */
774    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
775        SET bill_sequence_id  =  (SELECT bill_sequence_id
776                                  FROM  bom_structures_b bom
777                                  WHERE bom.assembly_item_id = BICI.assembly_item_id
778                                  AND   bom.organization_id = BICI.organization_id
779                                  AND   NVL(bom.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BICI.alternate_bom_designator,FND_API.G_MISS_CHAR))
780        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
781          AND upper(transaction_type) in (G_Delete, G_Update)
782          AND assembly_item_id is not null
783          AND organization_id is not null
784          AND
785           (
786               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
787           OR  ( p_batch_id = BICI.batch_id )
788           )
789          AND exists (SELECT 'x'
790                      FROM bom_structures_b bsb
791                      WHERE bsb.assembly_item_id = BICI.assembly_item_id
792                      AND bsb.organization_id = BICI.organization_id
793                      AND NVL(BSB.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BICI.alternate_bom_designator,FND_API.G_MISS_CHAR)
794                      );
795 
796 
797 
798 stmt_num := 8.8;
799 /* Update the component_sequence_id */
800    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
801        SET COMPONENT_SEQUENCE_ID
802                            = (SELECT COMPONENT_SEQUENCE_ID
803                              FROM bom_components_b BIC
804                              Where BIC.bill_sequence_id = BICI.bill_Sequence_id
805                              And BIC.component_item_id = BICI.component_item_id
806                              AND BIC.operation_seq_num = BICI.operation_seq_num
807                              AND BIC.effectivity_date = BICI.effectivity_date)
808        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
809          AND upper(transaction_type) in (G_Update, G_Delete)
810          AND COMPONENT_SEQUENCE_ID is null
811          AND bill_sequence_id is not null
812          AND component_item_id is not null
813          AND
814           (
818 
815               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
816           OR  ( p_batch_id = BICI.batch_id )
817           );
819 stmt_num := 8.9;
820 /* Defaulting the effectivity_date to sysdate if the transaction_type is create
821    and effectivity date is null */
822    UPDATE BOM_INVENTORY_COMPS_INTERFACE
823        SET EFFECTIVITY_DATE = SYSDATE
824        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
825          AND upper(Transaction_Type) = G_Create
826          AND Effectivity_Date IS NULL
827          AND
828           (
829               ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
830           OR  ( p_batch_id = batch_id )
831           );
832 
833    stmt_num := 9;
834  /* INSERTS ONLY - Load rows from component interface into sub comp interface*/
835    INSERT into bom_sub_comps_interface (
836         SUBSTITUTE_COMPONENT_ID,
837         SUBSTITUTE_COMP_NUMBER,
838         ORGANIZATION_ID,
839         LAST_UPDATE_DATE,
840         LAST_UPDATED_BY,
841         CREATION_DATE,
842         CREATED_BY,
843         LAST_UPDATE_LOGIN,
844         REQUEST_ID,
845         PROGRAM_APPLICATION_ID,
846         PROGRAM_ID,
847         PROGRAM_UPDATE_DATE,
848         COMPONENT_SEQUENCE_ID,
849         PROCESS_FLAG,
850         TRANSACTION_TYPE,
851         SUBSTITUTE_ITEM_QUANTITY,
852   BILL_SEQUENCE_ID,
853         ASSEMBLY_ITEM_ID,
854         ALTERNATE_BOM_DESIGNATOR,
855         COMPONENT_ITEM_ID,
856         OPERATION_SEQ_NUM,
857         EFFECTIVITY_DATE,
858         ORGANIZATION_CODE,
859         COMPONENT_ITEM_NUMBER,
860         ASSEMBLY_ITEM_NUMBER,
861         FROM_END_ITEM_UNIT_NUMBER,
862         BATCH_ID)
863       SELECT
864              SUBSTITUTE_COMP_ID,
865              SUBSTITUTE_COMP_NUMBER,
866              ORGANIZATION_ID,
867              NVL(LAST_UPDATE_DATE, SYSDATE),
868              NVL(LAST_UPDATED_BY, user_id),
869              NVL(CREATION_DATE,SYSDATE),
870              NVL(CREATED_BY, user_id),
871              NVL(LAST_UPDATE_LOGIN, user_id),
872              NVL(REQUEST_ID, req_id),
873              NVL(PROGRAM_APPLICATION_ID, prog_appid),
874              NVL(PROGRAM_ID, prog_id),
875              NVL(PROGRAM_UPDATE_DATE, sysdate),
876              COMPONENT_SEQUENCE_ID,
877              1,
878              G_Create,
879              COMPONENT_QUANTITY,
880         BILL_SEQUENCE_ID,
881              ASSEMBLY_ITEM_ID,
882              ALTERNATE_BOM_DESIGNATOR,
883              COMPONENT_ITEM_ID,
884              OPERATION_SEQ_NUM,
885              EFFECTIVITY_DATE,
886              ORGANIZATION_CODE,
887              COMPONENT_ITEM_NUMBER,
888              ASSEMBLY_ITEM_NUMBER,
889              FROM_END_ITEM_UNIT_NUMBER,
890              BATCH_ID
891         FROM bom_inventory_comps_interface
892        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
893          AND transaction_type = G_Create
894          AND (all_org = 1
895              OR
896             (all_org = 2 AND organization_id = org_id))
897          AND (substitute_comp_id is not null
898               OR
899               substitute_comp_number is not null)
900          AND
901           (
902               ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
903           OR  ( p_batch_id = batch_id )
904           );
905 
906 
907    stmt_num := 10;
908 
909 /* INSERTS ONLY - Load rows from component interface into ref desgs interface*/
910 
911    INSERT INTO bom_ref_desgs_interface (
912         COMPONENT_REFERENCE_DESIGNATOR,
913         LAST_UPDATE_DATE,
914         LAST_UPDATED_BY,
915         CREATION_DATE,
916         CREATED_BY,
917         LAST_UPDATE_LOGIN,
918         REQUEST_ID,
919         PROGRAM_APPLICATION_ID,
920         PROGRAM_ID,
921         PROGRAM_UPDATE_DATE,
922         COMPONENT_SEQUENCE_ID,
923         TRANSACTION_TYPE,
924         PROCESS_FLAG,
925   BILL_SEQUENCE_ID,
926         ASSEMBLY_ITEM_ID,
927         ALTERNATE_BOM_DESIGNATOR,
928         ORGANIZATION_ID,
929         COMPONENT_ITEM_ID,
930         ASSEMBLY_ITEM_NUMBER,
931         COMPONENT_ITEM_NUMBER,
932         ORGANIZATION_CODE,
933         EFFECTIVITY_DATE,
934         OPERATION_SEQ_NUM,
935         FROM_END_ITEM_UNIT_NUMBER,
936         BATCH_ID)
937    SELECT
938         REFERENCE_DESIGNATOR,
939         NVL(LAST_UPDATE_DATE, SYSDATE),
940         NVL(LAST_UPDATED_BY, user_id),
941         NVL(CREATION_DATE,SYSDATE),
942         NVL(CREATED_BY, user_id),
943         NVL(LAST_UPDATE_LOGIN, user_id),
944         NVL(REQUEST_ID, req_id),
945         NVL(PROGRAM_APPLICATION_ID, prog_appid),
946         NVL(PROGRAM_ID, prog_id),
947         NVL(PROGRAM_UPDATE_DATE, sysdate),
948         COMPONENT_SEQUENCE_ID,
949         G_Create,
950         1,
951   BILL_SEQUENCE_ID,
952         ASSEMBLY_ITEM_ID,
953         ALTERNATE_BOM_DESIGNATOR,
954         ORGANIZATION_ID,
955         COMPONENT_ITEM_ID,
956         ASSEMBLY_ITEM_NUMBER,
957         COMPONENT_ITEM_NUMBER,
958         ORGANIZATION_CODE,
959         EFFECTIVITY_DATE,
960         OPERATION_SEQ_NUM,
961         FROM_END_ITEM_UNIT_NUMBER,
962         BATCH_ID
963     FROM bom_inventory_comps_interface
967           OR
964    WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
965      AND transaction_type = G_Create
966      AND (all_org = 1
968           (all_org = 2 AND organization_id = org_id))
969      AND reference_designator is not null
970      AND
971       (
972           ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
973       OR  ( p_batch_id = batch_id )
974       );
975  COMMIT;
976 
977    stmt_num := 11;
978 
979 /* Update the interface records with process_flag 3 and insert into
980 mtl_interface_errors if Item_number or Organization_code  is missing*/
981 
982  l_sysdate        :=  SYSDATE;
983  msg_name1   := 'BOM_ORG_ID_MISSING';
984  msg_name2   := 'BOM_ASSY_ITEM_MISSING';
985  FND_MESSAGE.SET_NAME('BOM', 'BOM_ORG_ID_MISSING');
986  msg_text1   := FND_MESSAGE.GET;
987  FND_MESSAGE.SET_NAME('BOM', 'BOM_ASSY_ITEM_MISSING');
988  msg_text2   := FND_MESSAGE.GET;
989    INSERT INTO mtl_interface_errors
990    (
991   TRANSACTION_ID,
992   UNIQUE_ID,
993   ORGANIZATION_ID,
994   COLUMN_NAME,
995   TABLE_NAME,
996   MESSAGE_NAME,
997   ERROR_MESSAGE,
998   LAST_UPDATE_DATE,
999   LAST_UPDATED_BY,
1000   CREATION_DATE,
1001   CREATED_BY,
1002   LAST_UPDATE_LOGIN,
1003   REQUEST_ID,
1004   PROGRAM_APPLICATION_ID,
1005   PROGRAM_ID,
1006   PROGRAM_UPDATE_DATE
1007    )
1008   Select
1009   BICI.transaction_id,
1010   MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1011   Null,
1012   null,
1013   'BOM_INVENTORY_COMPS_INTERFACE',
1014   decode ( BICI.Organization_code, null, msg_name1,msg_name2),
1015   decode ( BICI.Organization_code, null, msg_text1,msg_text2),
1016         NVL(LAST_UPDATE_DATE, SYSDATE),
1017         NVL(LAST_UPDATED_BY, user_id),
1018         NVL(CREATION_DATE,SYSDATE),
1019         NVL(CREATED_BY, user_id),
1020         NVL(LAST_UPDATE_LOGIN, user_id),
1021         NVL(REQUEST_ID, req_id),
1022         NVL(PROGRAM_APPLICATION_ID, prog_appid),
1023         NVL(PROGRAM_ID, prog_id),
1024         NVL(PROGRAM_UPDATE_DATE, sysdate)
1025 
1026    from BOM_INVENTORY_COMPS_INTERFACE BICI
1027    where (organization_code is null or ASSEMBLY_ITEM_NUMBER is null)
1028   and transaction_id is not null
1029   and process_flag =1
1030   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1031   AND
1032    (
1033        ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
1034    OR  ( p_batch_id = BICI.batch_id )
1035    );
1036 
1037 
1038 
1039   Update BOM_INVENTORY_COMPS_INTERFACE
1040   set process_flag = 3
1041   where (ASSEMBLY_ITEM_NUMBER is null or Organization_code is null)
1042   and transaction_id is not null
1043   and process_flag =1
1044   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1045   AND
1046    (
1047        ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
1048    OR  ( p_batch_id = batch_id )
1049    );
1050 Commit;
1051 
1052 return (0);
1053 
1054 
1055 EXCEPTION
1056    WHEN others THEN
1057       err_text := 'Bom_Open_Interface_Utl(Process_component_Info-'||stmt_num||') '||substrb(SQLERRM,1,1000);
1058       RETURN(SQLCODE);
1059 END;
1060 
1061 
1062 /*--------------------------Process_Ref_Degs_Info------------------------------
1063 
1064 NAME
1065    Process_Ref_Degs_Info
1066 DESCRIPTION
1067    Populate the user-friendly columns to Reference Designator records
1068    in the interface table
1069 REQUIRES
1070 
1071 MODIFIES
1072     BOM_REF_DESGS_INTERFACE
1073     MTL_INTERFACE_ERRORS
1074 RETURNS
1075     0 if successful
1076     SQLCODE if unsuccessful
1077 NOTES
1078 -----------------------------------------------------------------------------*/
1079 FUNCTION Process_Ref_Degs_Info  (
1080     org_id            NUMBER,
1081     all_org             NUMBER ,
1082     user_id             NUMBER,
1083     login_id            NUMBER,
1084     prog_appid          NUMBER,
1085     prog_id             NUMBER,
1086     req_id              NUMBER,
1087     err_text    IN OUT NOCOPY  VARCHAR2,
1088     p_batch_id  IN  NUMBER
1089 )
1090     return INTEGER
1091 IS
1092   stmt_num            NUMBER := 0;
1093 l_sysdate        DATE  :=  SYSDATE;
1094 msg_name1 varchar2(30);
1095 msg_name2 varchar2(30);
1096 msg_text1 varchar2(2000);
1097 msg_text2 varchar2(2000);
1098 
1099 BEGIN
1100 
1101  stmt_num := 1;
1102 /* Resolve the Component_sequence_id for all the records */
1103 
1104    UPDATE BOM_REF_DESGS_INTERFACE BRDI
1105        SET(bill_sequence_id,  component_item_id, effectivity_date,
1106          operation_seq_num,  from_end_item_unit_number)
1107        = (SELECT bill_sequence_id,  component_item_id,
1108     effectivity_date, operation_seq_num,  from_end_item_unit_number
1109            FROM bom_components_b BIC1
1110            WHERE BIC1.component_sequence_id = BRDI.component_sequence_id )
1111        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1112          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
1113          AND COMPONENT_SEQUENCE_ID is not null
1114          AND
1115           (
1116               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1117           OR  ( p_batch_id = BRDI.batch_id )
1118           )
1122 
1119          AND exists (SELECT 'x'
1120            FROM bom_components_b BIC2
1121            WHERE BIC2.COMPONENT_SEQUENCE_ID = BRDI.COMPONENT_SEQUENCE_ID );
1123 
1124 stmt_num := 2;
1125 /* Resolve the Bill sequence ids for updates and deletes */
1126 
1127    UPDATE BOM_REF_DESGS_INTERFACE BRDI
1128        SET(assembly_item_id, organization_id, ALTERNATE_BOM_DESIGNATOR)
1129        = (SELECT assembly_item_id, organization_id , alternate_bom_designator
1130            FROM bom_structures_b BBM1
1131            WHERE BBM1.bill_sequence_id = BRDI.bill_sequence_id)
1132        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1133          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
1134          AND bill_sequence_id is not null
1135          AND
1136           (
1137               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1138           OR  ( p_batch_id = BRDI.batch_id )
1139           )
1140          AND exists (SELECT 'x'
1141        FROM bom_structures_b BBM2
1142        WHERE BBM2.bill_sequence_id = BRDI.bill_sequence_id);
1143 
1144 
1145  stmt_num := 3;
1146 /* Update Organization Code using Organization_id
1147 this also needed if Organization_id is given and code is not given*/
1148 
1149    UPDATE BOM_REF_DESGS_INTERFACE BRDI
1150        SET organization_code = (SELECT organization_code
1151                                 FROM MTL_PARAMETERS mp1
1152                                 WHERE mp1.organization_id = BRDI.organization_id)
1153        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1154          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1155          AND organization_id is not null
1156          AND
1157           (
1158               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1159           OR  ( p_batch_id = BRDI.batch_id )
1160           )
1161          AND exists (SELECT 'x'
1162                        FROM MTL_PARAMETERS mp2
1163                       WHERE mp2.organization_id = BRDI.organization_id);
1164 
1165 
1166 
1167  stmt_num := 4;
1168  /* Update Organization_ids if organization_code is given org id is null.
1169   Orgnaization_id information is needed in the next steps */
1170 
1171       UPDATE BOM_REF_DESGS_INTERFACE BRDI
1172          SET organization_id = (SELECT organization_id
1173                                 FROM MTL_PARAMETERS mp1
1174                                 WHERE mp1.organization_code = BRDI.organization_code)
1175        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1176          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1177          AND organization_id is null
1178          AND organization_code is not null
1179          AND
1180           (
1181               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1182           OR  ( p_batch_id = BRDI.batch_id )
1183           );
1184 
1185 
1186 
1187   stmt_num := 5;
1188 /* Update Assembly Item name */
1189 
1190    UPDATE BOM_REF_DESGS_INTERFACE BRDI
1191        SET  ASSEMBLY_ITEM_NUMBER  = (SELECT CONCATENATED_SEGMENTS
1192                                      FROM MTL_SYSTEM_ITEMS_KFV mvl1
1193                                      WHERE mvl1.inventory_item_id = BRDI.assembly_item_id
1194                                      and mvl1.organization_id = BRDI.organization_id)
1195        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1196          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1197          AND assembly_item_id is not null
1198          AND organization_id is not null
1199          AND
1200           (
1201               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1202           OR  ( p_batch_id = BRDI.batch_id )
1203           )
1204           AND exists (select 'x'
1205                       FROM mtl_system_items MKFV
1206                       WHERE MKFV.inventory_item_id = BRDI.assembly_item_id
1207                       AND MKFV.organization_id = BRDI.organization_id );
1208 
1209 
1210   stmt_num := 6;
1211 /* Update Component Item name */
1212 
1213    UPDATE BOM_REF_DESGS_INTERFACE BRDI
1214        SET  COMPONENT_ITEM_NUMBER   = (SELECT CONCATENATED_SEGMENTS
1215                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
1216                              WHERE mvl1.inventory_item_id = BRDI.component_item_id
1217                              AND mvl1.organization_id = BRDI.organization_id)
1218        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1219          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1220          AND COMPONENT_ITEM_ID is not null
1221          AND organization_id is not null
1222          AND
1223           (
1224               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1225           OR  ( p_batch_id = BRDI.batch_id )
1226           )
1227          AND exists (SELECT 'x'
1228                      FROM mtl_system_items MKFV
1229                      WHERE MKFV.inventory_item_id = BRDI.component_item_id
1230                      AND MKFV.organization_id = BRDI.organization_id);
1231 
1232 
1233    stmt_num := 7;
1234    /*  Assign transaction ids */
1235 
1236        UPDATE BOM_REF_DESGS_INTERFACE BRDI
1237          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1241          AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1238              transaction_type = upper(transaction_type)
1239        WHERE transaction_id is null
1240          AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
1242          AND (all_org = 1
1243              OR
1244             (all_org = 2 AND organization_id = org_id))
1245          AND
1246           (
1247               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1248           OR  ( p_batch_id = BRDI.batch_id )
1249           );
1250 
1251   COMMIT;
1252 
1253    stmt_num := 8;
1254 /* Update the interface records with process_flag 3 and insert into
1255 mtl_interface_errors if Item_number or Organization_code  is missing*/
1256 
1257  l_sysdate        :=  SYSDATE;
1258  msg_name1   := 'BOM_ORG_ID_MISSING';
1259  msg_name2   := 'BOM_ASSY_ITEM_MISSING';
1260  FND_MESSAGE.SET_NAME('BOM', 'BOM_ORG_ID_MISSING');
1261  msg_text1   := FND_MESSAGE.GET;
1262  FND_MESSAGE.SET_NAME('BOM', 'BOM_ASSY_ITEM_MISSING');
1263  msg_text2   := FND_MESSAGE.GET;
1264    INSERT INTO mtl_interface_errors
1265    (
1266   TRANSACTION_ID,
1267   UNIQUE_ID,
1268   ORGANIZATION_ID,
1269   COLUMN_NAME,
1270   TABLE_NAME,
1271   MESSAGE_NAME,
1272   ERROR_MESSAGE,
1273   LAST_UPDATE_DATE,
1274   LAST_UPDATED_BY,
1275   CREATION_DATE,
1276   CREATED_BY,
1277   LAST_UPDATE_LOGIN,
1278   REQUEST_ID,
1279   PROGRAM_APPLICATION_ID,
1280   PROGRAM_ID,
1281   PROGRAM_UPDATE_DATE
1282    )
1283   Select
1284   BRDI.transaction_id,
1285   MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1286   Null,
1287   null,
1288   'BOM_REF_DESGS_INTERFACE',
1289   decode ( BRDI.Organization_code, null, msg_name1,msg_name2),
1290   decode ( BRDI.Organization_code, null, msg_text1,msg_text2),
1291         NVL(LAST_UPDATE_DATE, SYSDATE),
1292         NVL(LAST_UPDATED_BY, user_id),
1293         NVL(CREATION_DATE,SYSDATE),
1294         NVL(CREATED_BY, user_id),
1295         NVL(LAST_UPDATE_LOGIN, user_id),
1296         NVL(REQUEST_ID, req_id),
1297         NVL(PROGRAM_APPLICATION_ID, prog_appid),
1298         NVL(PROGRAM_ID, prog_id),
1299         NVL(PROGRAM_UPDATE_DATE, sysdate)
1300     from BOM_REF_DESGS_INTERFACE BRDI
1301    where (organization_code is null or ASSEMBLY_ITEM_NUMBER is null)
1302   and transaction_id is not null
1303   and process_flag =1
1304   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1305   AND
1306    (
1307        ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
1308    OR  ( p_batch_id = BRDI.batch_id )
1309    );
1310 
1311   Update BOM_REF_DESGS_INTERFACE
1312   set process_flag = 3
1313   where (ASSEMBLY_ITEM_NUMBER is null or Organization_code is null)
1314   and transaction_id is not null
1315   and process_flag =1
1316   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1317   AND
1318    (
1319        ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
1320    OR  ( p_batch_id = batch_id )
1321    );
1322 Commit;
1323 
1324 return(0);
1325 
1326 EXCEPTION
1327    WHEN others THEN
1328       err_text := 'Bom_Open_Interface_Utl(Process_ref_desgs_Info-'||stmt_num||') '||substrb(SQLERRM,1,1000);
1329       RETURN(SQLCODE);
1330 END;
1331 
1332 /*--------------------------Process_Sub_Comps_Info------------------------------
1333 
1334 NAME
1335   Process_Sub_Comps_Info
1336 DESCRIPTION
1337    Populate the user-friendly columns to Substitute Component records
1338    in the interface table
1339 REQUIRES
1340 
1341 MODIFIES
1342     BOM_SUB_COMPS_INTERFACE
1343     MTL_INTERFACE_ERRORS
1344 RETURNS
1345     0 if successful
1346     SQLCODE if unsuccessful
1347 NOTES
1348 -----------------------------------------------------------------------------*/
1349 FUNCTION Process_Sub_Comps_Info  (
1350     org_id            NUMBER,
1351     all_org             NUMBER ,
1352     user_id             NUMBER,
1353     login_id            NUMBER,
1354     prog_appid          NUMBER,
1355     prog_id             NUMBER,
1356     req_id              NUMBER,
1357     err_text    IN OUT NOCOPY  VARCHAR2,
1358     p_batch_id  IN  NUMBER
1359 )
1360     return INTEGER
1361 IS
1362  stmt_num            NUMBER := 0;
1363 l_sysdate        DATE  :=  SYSDATE;
1364 msg_name1 varchar2(30);
1365 msg_name2 varchar2(30);
1366 msg_text1 varchar2(2000);
1367 msg_text2 varchar2(2000);
1368 
1369 BEGIN
1370 
1371  stmt_num := 1;
1372 /* Resolve the Component_sequence_id for all the records */
1373 
1374    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1375        SET(bill_sequence_id,  component_item_id, effectivity_date,
1376          operation_seq_num,  from_end_item_unit_number)
1377        = (select bill_sequence_id,  component_item_id,
1378     EFFECTIVITY_DATE, OPERATION_SEQ_NUM,  FROM_END_ITEM_UNIT_NUMBER
1379            FROM bom_components_b BIC1
1380            WHERE BIC1.COMPONENT_SEQUENCE_ID = BSCI.component_sequence_id )
1381        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1382          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
1383          AND COMPONENT_SEQUENCE_ID is not null
1384          AND
1385           (
1389          AND exists (SELECT 'x'
1386               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1387           OR  ( p_batch_id = BSCI.batch_id )
1388           )
1390            FROM bom_components_b BIC2
1391            WHERE BIC2.COMPONENT_SEQUENCE_ID = BSCI.COMPONENT_SEQUENCE_ID );
1392 
1393 
1394 stmt_num := 2;
1395 /* Resolve the Bill sequence ids for updates and deletes */
1396 
1397    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1398        SET(assembly_item_id, organization_id, alternate_bom_designator)
1399        = (SELECT assembly_item_id, organization_id , alternate_bom_designator
1400            FROM bom_structures_b BBM1
1401            WHERE BBM1.bill_sequence_id = BSCI.bill_sequence_id)
1402        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1403          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
1404          AND bill_sequence_id is not null
1405          AND
1406           (
1407               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1408           OR  ( p_batch_id = BSCI.batch_id )
1409           )
1410          AND exists (SELECT 'x'
1411        FROM bom_structures_b BBM2
1412        WHERE BBM2.bill_sequence_id = BSCI.bill_sequence_id);
1413 
1414 
1415  stmt_num := 3;
1416 /* Update Organization Code using Organization_id
1417 this also needed if Organization_id is given and code is not given*/
1418 
1419    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1420        SET organization_code = (SELECT organization_code
1421                                   FROM MTL_PARAMETERS mp1
1422                              WHERE mp1.organization_id = BSCI.organization_id)
1423        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1424          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1425          AND organization_id is not null
1426          AND
1427           (
1428               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1429           OR  ( p_batch_id = BSCI.batch_id )
1430           )
1431          AND exists (SELECT 'x'
1432                        FROM MTL_PARAMETERS mp2
1433                       WHERE mp2.organization_id = BSCI.organization_id);
1434 
1435 
1436 
1437  stmt_num := 4;
1438  /* Update Organization_ids if organization_code is given org id is null.
1439   Orgnaization_id information is needed in the next steps */
1440 
1441       UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1442          SET organization_id = (SELECT organization_id
1443                                 FROM MTL_PARAMETERS mp1
1444                                 WHERE mp1.organization_code = BSCI.organization_code)
1445        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1446          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1447          AND organization_id is null
1448          AND organization_code is not null
1449          AND
1450           (
1451               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1452           OR  ( p_batch_id = BSCI.batch_id )
1453           );
1454 
1455 
1456 
1457   stmt_num := 5;
1458 /* Update Assembly Item name */
1459 
1460    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1461        SET  ASSEMBLY_ITEM_NUMBER  = (SELECT CONCATENATED_SEGMENTS
1462                                      FROM MTL_SYSTEM_ITEMS_KFV mvl1
1463                                      WHERE mvl1.inventory_item_id = BSCI.assembly_item_id
1464                                      AND mvl1.organization_id = BSCI.organization_id)
1465          WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1466          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1467          AND assembly_item_id is not null
1468          AND organization_id is not null
1469          AND
1470           (
1471               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1472           OR  ( p_batch_id = BSCI.batch_id )
1473           )
1474           AND exists (SELECT 'x'
1475                       FROM mtl_system_items MKFV
1476                       WHERE MKFV.inventory_item_id = BSCI.assembly_item_id
1477                       AND MKFV.organization_id = BSCI.organization_id);
1478 
1479 
1480   stmt_num := 6;
1481 /* Update Component Item name */
1482 
1483    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1484        SET  COMPONENT_ITEM_NUMBER   = (SELECT CONCATENATED_SEGMENTS
1485                                        FROM MTL_SYSTEM_ITEMS_KFV mvl1
1486                                        WHERE mvl1.inventory_item_id = BSCI.component_item_id
1487                                        AND mvl1.organization_id = BSCI.organization_id)
1488        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1489          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1490          AND COMPONENT_ITEM_ID is not null
1491          AND organization_id is not null
1492          AND
1493           (
1494               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1495           OR  ( p_batch_id = BSCI.batch_id )
1496           )
1497           AND exists (SELECT 'x'
1498                       FROM mtl_system_items MKFV
1499                       WHERE MKFV.inventory_item_id = BSCI.component_item_id
1500                       AND MKFV.organization_id = BSCI.organization_id);
1501 
1502 
1503  stmt_num := 7;
1504 /* Update Substitute Component name if Id is given */
1505 
1506    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1510                              and mvl1.organization_id = BSCI.organization_id)
1507        SET  SUBSTITUTE_COMP_NUMBER = (SELECT CONCATENATED_SEGMENTS
1508                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
1509                              WHERE mvl1.inventory_item_id = BSCI.SUBSTITUTE_COMPONENT_ID
1511        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1512          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1513          AND SUBSTITUTE_COMPONENT_ID is not null
1514          AND organization_id is not null
1515          AND
1516           (
1517               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1518           OR  ( p_batch_id = BSCI.batch_id )
1519           )
1520           AND exists (SELECT 'x'
1521                       FROM mtl_system_items MKFV
1522                       WHERE MKFV.inventory_item_id = BSCI.substitute_component_id
1523                       AND MKFV.organization_id = BSCI.organization_id);
1524 
1525 
1526 
1527  stmt_num := 8;
1528 /* Update new Substitute Component name if Id is given */
1529 
1530    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1531        SET  NEW_SUB_COMP_NUMBER = (SELECT CONCATENATED_SEGMENTS
1532                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
1533                              WHERE mvl1.inventory_item_id = BSCI.NEW_SUB_COMP_ID
1534                              and mvl1.organization_id = BSCI.organization_id)
1535        WHERE  (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1536          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1537          AND NEW_SUB_COMP_ID is not null
1538          AND organization_id is not null
1539          AND
1540           (
1541               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1542           OR  ( p_batch_id = BSCI.batch_id )
1543           )
1544           AND exists (SELECT 'x'
1545                       FROM mtl_system_items MKFV
1546                       WHERE MKFV.inventory_item_id = BSCI.new_sub_comp_id
1547                       AND MKFV.organization_id = BSCI.organization_id);
1548 
1549    stmt_num := 9;
1550    /*  Assign transaction ids */
1551 
1552        UPDATE BOM_SUB_COMPS_INTERFACE BSCI
1553          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1554              transaction_type = upper(transaction_type)
1555        WHERE transaction_id is null
1556          AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
1557          AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1558          AND (all_org = 1
1559              OR
1560             (all_org = 2 AND organization_id = org_id))
1561          AND
1562           (
1563               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1564           OR  ( p_batch_id = BSCI.batch_id )
1565           );
1566 
1567   COMMIT;
1568    stmt_num := 10;
1569 /* Update the interface records with process_flag 3 and insert into
1570 mtl_interface_errors if Item_number or Organization_code  is missing*/
1571 
1572  l_sysdate        :=  SYSDATE;
1573  msg_name1   := 'BOM_ORG_ID_MISSING';
1574  msg_name2   := 'BOM_ASSY_ITEM_MISSING';
1575  FND_MESSAGE.SET_NAME('BOM', 'BOM_ORG_ID_MISSING');
1576  msg_text1   := FND_MESSAGE.GET;
1577  FND_MESSAGE.SET_NAME('BOM', 'BOM_ASSY_ITEM_MISSING');
1578  msg_text2   := FND_MESSAGE.GET;
1579    INSERT INTO mtl_interface_errors
1580    (
1581   TRANSACTION_ID,
1582   UNIQUE_ID,
1583   ORGANIZATION_ID,
1584   COLUMN_NAME,
1585   TABLE_NAME,
1586   MESSAGE_NAME,
1587   ERROR_MESSAGE,
1588   LAST_UPDATE_DATE,
1589   LAST_UPDATED_BY,
1590   CREATION_DATE,
1591   CREATED_BY,
1592   LAST_UPDATE_LOGIN,
1593   REQUEST_ID,
1594   PROGRAM_APPLICATION_ID,
1595   PROGRAM_ID,
1596   PROGRAM_UPDATE_DATE
1597    )
1598   Select
1599   BSCI.transaction_id,
1600   MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1601   Null,
1602   null,
1603   'BOM_INVENTORY_COMPS_INTERFACE',
1604   decode ( BSCI.Organization_code, null, msg_name1,msg_name2),
1605   decode ( BSCI.Organization_code, null, msg_text1,msg_text2),
1606         NVL(LAST_UPDATE_DATE, SYSDATE),
1607         NVL(LAST_UPDATED_BY, user_id),
1608         NVL(CREATION_DATE,SYSDATE),
1609         NVL(CREATED_BY, user_id),
1610         NVL(LAST_UPDATE_LOGIN, user_id),
1611         NVL(REQUEST_ID, req_id),
1612         NVL(PROGRAM_APPLICATION_ID, prog_appid),
1613         NVL(PROGRAM_ID, prog_id),
1614         NVL(PROGRAM_UPDATE_DATE, sysdate)
1615 
1616     from BOM_SUB_COMPS_INTERFACE BSCI
1617    where (organization_code is null or ASSEMBLY_ITEM_NUMBER is null)
1618   and transaction_id is not null
1619   and process_flag =1
1620   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1621   AND
1622    (
1623        ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
1624    OR  ( p_batch_id = BSCI.batch_id )
1625    );
1626 
1627   Update BOM_SUB_COMPS_INTERFACE
1628   set process_flag = 3
1629   where (ASSEMBLY_ITEM_NUMBER is null or Organization_code is null)
1630   and transaction_id is not null
1631   and process_flag =1
1632   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1633   AND
1634    (
1635        ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
1636    OR  ( p_batch_id = batch_id )
1637    );
1638 Commit;
1642 EXCEPTION
1639 
1640 return(0);
1641 
1643    WHEN others THEN
1644       err_text := 'Bom_Open_Interface_Utl(Process_sub_comps_Info-'||stmt_num||') '||substrb(SQLERRM,1,1000);
1645       RETURN(SQLCODE);
1646 END;
1647 
1648 /*--------------------------Process_Comp_Ops_Info------------------------------
1649 
1650 NAME
1651   Process_Comp_Ops_Info
1652 DESCRIPTION
1653    Populate the user-friendly columns to Component Operations records
1654    in the interface table
1655 REQUIRES
1656 
1657 MODIFIES
1658     BOM_COMPONENT_OPS_INTERFACE
1659     MTL_INTERFACE_ERRORS
1660 RETURNS
1661     0 if successful
1662     SQLCODE if unsuccessful
1663 NOTES
1664 -----------------------------------------------------------------------------*/
1665 
1666 FUNCTION Process_Comp_Ops_Info  (
1667     org_id            NUMBER,
1668     all_org             NUMBER ,
1669     user_id             NUMBER,
1670     login_id            NUMBER,
1671     prog_appid          NUMBER,
1672     prog_id             NUMBER,
1673     req_id              NUMBER,
1674     err_text    IN OUT NOCOPY  VARCHAR2,
1675     p_batch_id  IN  NUMBER
1676    )
1677     return INTEGER
1678 IS
1679  stmt_num            NUMBER := 0;
1680 l_sysdate        DATE  :=  SYSDATE;
1681 msg_name1 varchar2(30);
1682 msg_name2 varchar2(30);
1683 msg_text1 varchar2(2000);
1684 msg_text2 varchar2(2000);
1685 
1686 BEGIN
1687 
1688  stmt_num := 1;
1689 /* Resolve the Component_sequence_id for all the records */
1690 
1691    UPDATE BOM_COMPONENT_OPS_INTERFACE BCOI
1692        SET(bill_sequence_id,  component_item_id, effectivity_date,
1693          operation_seq_num,  from_end_item_unit_number)
1694        = (SELECT bill_sequence_id,  component_item_id,
1695     effectivity_date, operation_seq_num,  from_end_item_unit_number
1696            FROM bom_components_b BIC1
1697            WHERE BIC1.component_sequence_id = BCOI.component_sequence_id )
1698        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1699          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
1700          AND COMPONENT_SEQUENCE_ID is not null
1701          AND
1702           (
1703               ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1704           OR  ( p_batch_id = BCOI.batch_id )
1705           )
1706          AND exists (SELECT 'x'
1707            FROM BOM_INVENTORY_COMPONENTS BIC2
1708            WHERE BIC2.COMPONENT_SEQUENCE_ID = BCOI.COMPONENT_SEQUENCE_ID );
1709 
1710 
1711 stmt_num := 2;
1712 /* Resolve the Bill sequence ids for updates and deletes */
1713 
1714    UPDATE BOM_COMPONENT_OPS_INTERFACE BCOI
1715        SET(assembly_item_id, organization_id, alternate_bom_designator)
1716        = (SELECT assembly_item_id, organization_id , alternate_bom_designator
1717            FROM bom_structures_b BBM1
1718            WHERE BBM1.bill_sequence_id = BCOI.bill_sequence_id)
1719        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1720          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
1721          AND bill_sequence_id is not null
1722          AND
1723           (
1724               ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1725           OR  ( p_batch_id = BCOI.batch_id )
1726           )
1727          AND exists (SELECT 'x'
1728        FROM bom_structures_b BBM2
1729        WHERE BBM2.bill_sequence_id = BCOI.bill_sequence_id);
1730 
1731 
1732  stmt_num := 3;
1733 /* Update Organization Code using Organization_id
1734 this also needed if orgnaization_id is given and code is not given*/
1735 
1736    UPDATE BOM_COMPONENT_OPS_INTERFACE BCOI
1737        SET organization_code = (SELECT organization_code
1738                                   FROM MTL_PARAMETERS mp1
1739                              WHERE mp1.organization_id = BCOI.organization_id)
1740        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1741          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1742          AND organization_id is not null
1743          AND
1744           (
1745               ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1746           OR  ( p_batch_id = BCOI.batch_id )
1747           )
1748          AND exists (SELECT 'x'
1749                        FROM MTL_PARAMETERS mp2
1750                       WHERE mp2.organization_id = BCOI.organization_id);
1751 
1752 
1753 
1754  stmt_num := 4;
1755  /* Update Organization_ids if organization_code is given org id is null.
1756   Orgnaization_id information is needed in the next steps */
1757 
1758       UPDATE BOM_COMPONENT_OPS_INTERFACE BCOI
1759          SET organization_id = (SELECT organization_id
1760                                 FROM MTL_PARAMETERS mp1
1761                                 WHERE mp1.organization_code = BCOI.organization_code)
1762        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1763          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1764          AND organization_id is null
1765          AND organization_code is not null
1766          AND
1767           (
1768               ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1769           OR  ( p_batch_id = BCOI.batch_id )
1770           );
1771 
1772 
1773 
1774   stmt_num := 5;
1775 /* Update Assembly Item name */
1776 
1780                              WHERE mvl1.inventory_item_id = BCOI.assembly_item_id
1777    UPDATE BOM_COMPONENT_OPS_INTERFACE BCOI
1778        SET  ASSEMBLY_ITEM_NUMBER  = (SELECT CONCATENATED_SEGMENTS
1779                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
1781            and mvl1.organization_id = BCOI.organization_id)
1782        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1783          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1784          AND assembly_item_id is not null
1785          AND organization_id is not null
1786          AND
1787           (
1788               ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1789           OR  ( p_batch_id = BCOI.batch_id )
1790           )
1791           AND exists (SELECT 'x'
1792                       FROM mtl_system_items MKFV
1793                       WHERE MKFV.inventory_item_id = BCOI.assembly_item_id
1794                       AND MKFV.organization_id = BCOI.organization_id);
1795 
1796 
1797   stmt_num := 6;
1798 /* Update Component Item name */
1799 
1800    UPDATE BOM_COMPONENT_OPS_INTERFACE BCOI
1801        SET  COMPONENT_ITEM_NUMBER   = (SELECT CONCATENATED_SEGMENTS
1802                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
1803                              WHERE mvl1.inventory_item_id = BCOI.component_item_id
1804            and mvl1.organization_id = BCOI.organization_id)
1805        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1806          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1807          AND COMPONENT_ITEM_ID is not null
1808          AND organization_id is not null
1809          AND
1810           (
1811               ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1812           OR  ( p_batch_id = BCOI.batch_id )
1813           )
1814           AND exists (SELECT 'x'
1815                       FROM mtl_system_items MKFV
1816                       WHERE MKFV.inventory_item_id = BCOI.component_item_id
1817                       AND MKFV.organization_id = BCOI.organization_id);
1818 
1819 
1820    stmt_num := 8;
1821    /*  Assign transaction ids */
1822 
1823        UPDATE BOM_COMPONENT_OPS_INTERFACE BCOI
1824          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1825              transaction_type = upper(transaction_type)
1826        WHERE transaction_id is null
1827          AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
1828          AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
1829          AND (all_org = 1
1830              OR
1831             (all_org = 2 AND organization_id = org_id))
1832          AND
1833           (
1834               ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1835           OR  ( p_batch_id = BCOI.batch_id )
1836           );
1837 
1838   COMMIT;
1839 
1840    stmt_num := 9;
1841 /* Update the interface records with process_flag 3 and insert into
1842 mtl_interface_errors if Item_number or Organization_code  is missing*/
1843 
1844  l_sysdate        :=  SYSDATE;
1845  msg_name1   := 'BOM_ORG_ID_MISSING';
1846  msg_name2   := 'BOM_ASSY_ITEM_MISSING';
1847  FND_MESSAGE.SET_NAME('BOM', 'BOM_ORG_ID_MISSING');
1848  msg_text1   := FND_MESSAGE.GET;
1849  FND_MESSAGE.SET_NAME('BOM', 'BOM_ASSY_ITEM_MISSING');
1850  msg_text2   := FND_MESSAGE.GET;
1851    INSERT INTO mtl_interface_errors
1852    (
1853   TRANSACTION_ID,
1854   UNIQUE_ID,
1855   ORGANIZATION_ID,
1856   COLUMN_NAME,
1857   TABLE_NAME,
1858   MESSAGE_NAME,
1859   ERROR_MESSAGE,
1860   LAST_UPDATE_DATE,
1861   LAST_UPDATED_BY,
1862   CREATION_DATE,
1863   CREATED_BY,
1864   LAST_UPDATE_LOGIN,
1865   REQUEST_ID,
1866   PROGRAM_APPLICATION_ID,
1867   PROGRAM_ID,
1868   PROGRAM_UPDATE_DATE
1869    )
1870   Select
1871   BCOI.transaction_id,
1872   MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
1873   Null,
1874   null,
1875   'BOM_COMPONENT_OPS_INTERFACE',
1876   decode ( BCOI.Organization_code, null, msg_name1,msg_name2),
1877   decode ( BCOI.Organization_code, null, msg_text1,msg_text2),
1878         NVL(LAST_UPDATE_DATE, SYSDATE),
1879         NVL(LAST_UPDATED_BY, user_id),
1880         NVL(CREATION_DATE,SYSDATE),
1881         NVL(CREATED_BY, user_id),
1882         NVL(LAST_UPDATE_LOGIN, user_id),
1883         req_id,
1884   NVL(PROGRAM_APPLICATION_ID, prog_appid),
1885   NVL(PROGRAM_ID, prog_id),
1886   NVL(PROGRAM_UPDATE_DATE, sysdate)
1887     from BOM_COMPONENT_OPS_INTERFACE BCOI
1888    where (organization_code is null or ASSEMBLY_ITEM_NUMBER is null)
1889   and transaction_id is not null
1890   and process_flag =1
1891   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1892   AND
1893    (
1894        ( (p_batch_id IS NULL) AND (BCOI.batch_id IS NULL) )
1895    OR  ( p_batch_id = BCOI.batch_id )
1896    );
1897 
1898   Update BOM_COMPONENT_OPS_INTERFACE
1899   set process_flag = 3
1900   where (ASSEMBLY_ITEM_NUMBER is null or Organization_code is null)
1901   and transaction_id is not null
1902   and process_flag =1
1903   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
1904   AND
1905    (
1906        ( (p_batch_id IS NULL) AND (batch_id IS NULL) )
1907    OR  ( p_batch_id = batch_id )
1908    );
1909 Commit;
1910 
1911 return(0);
1912 
1913 EXCEPTION
1917 END;
1914    WHEN others THEN
1915       err_text := 'Bom_Open_Interface_Utl(Process_comp_ops_Info-'||stmt_num||') '||substrb(SQLERRM,1,1000);
1916       RETURN(SQLCODE);
1918 
1919 FUNCTION Process_Revision_Info (
1920     org_id            NUMBER,
1921     all_org             NUMBER ,
1922     user_id             NUMBER,
1923     login_id            NUMBER,
1924     prog_appid          NUMBER,
1925     prog_id             NUMBER,
1926     req_id              NUMBER,
1927     err_text    IN OUT NOCOPY  VARCHAR2,
1928     p_set_process_id  IN  NUMBER
1929 )return integer is
1930  stmt_num            NUMBER := 0;
1931 l_sysdate        DATE  :=  SYSDATE;
1932 msg_name1 varchar2(30);
1933 msg_name2 varchar2(30);
1934 msg_text1 varchar2(2000);
1935 msg_text2 varchar2(2000);
1936 l_set_process_id NUMBER := 0;
1937 begin
1938   --if set_process_id is null then set it to 0 which is table level default value
1939   IF ( p_set_process_id IS NULL ) THEN
1940     l_set_process_id := 0;
1941   ELSE
1942     l_set_process_id := p_set_process_id;
1943   END IF;
1944 
1945   stmt_num := 1;
1946 
1947 /* Update Organization Code using Organization_id
1948 this also needed if Organization_id is given and code is not given*/
1949 
1950    UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI
1951        SET organization_code = (SELECT organization_code
1952                                   FROM MTL_PARAMETERS MP1
1953                              WHERE mp1.organization_id = MIRI.organization_id)
1954        WHERE process_flag = 1
1955          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1956          AND organization_id is not null
1957          AND MIRI.set_process_id = l_set_process_id
1958          AND exists (SELECT 'x'
1959                        FROM MTL_PARAMETERS MP2
1960                       WHERE mp2.organization_id = MIRI.organization_id);
1961 
1962 
1963 
1964  stmt_num := 2;
1965  /* Update Organization_ids if organization code is given org id is null.
1966   Orgnaization_id information is needed in the next steps */
1967 
1968       UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI
1969          SET organization_id = (SELECT organization_id
1970                                   FROM MTL_PARAMETERS mp1
1971                              WHERE mp1.organization_code = MIRI.organization_code)
1972        WHERE process_flag = 1
1973          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1974          AND organization_id is null
1975          AND organization_code is not null
1976          AND MIRI.set_process_id = l_set_process_id;
1977 
1978 
1979 
1980   stmt_num := 3;
1981 /* Update Assembly Item name */
1982 
1983    UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI
1984        SET  item_number   = (SELECT concatenated_segments
1985                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
1986                              WHERE mvl1.inventory_item_id = MIRI.inventory_item_id
1987            and mvl1.organization_id = MIRI.organization_id)
1988        WHERE process_flag = 1
1989          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
1990          AND inventory_item_id is not null
1991          AND organization_id is not null
1992          AND MIRI.set_process_id = l_set_process_id
1993          AND exists (SELECT 'x'
1994                        FROM mtl_system_items mvl2
1995                       WHERE mvl2.inventory_item_id = MIRI.inventory_item_id
1996           and mvl2.organization_id = MIRI.organization_id);
1997 
1998 
1999 
2000    stmt_num := 5;
2001    /*  Assign transaction ids */
2002 
2003        UPDATE MTL_ITEM_REVISIONS_INTERFACE MIRI
2004          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
2005              transaction_type = upper(transaction_type)
2006        WHERE transaction_id is null
2007          AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
2008          AND process_flag = 1
2009          AND (all_org = 1
2010              OR
2011           (all_org = 2 AND organization_id = org_id))
2012          AND MIRI.set_process_id = l_set_process_id;
2013 
2014 COMMIT;
2015    stmt_num := 6;
2016 
2017 /* Update the interface records with process_flag 3 and insert into
2018 MTL_INTERFACE_ERRORS if Item number or Organization_code  is missing*/
2019 
2020  l_sysdate        :=  SYSDATE;
2021  msg_name1   := 'BOM_ORG_ID_MISSING';
2022  msg_name2   := 'BOM_ASSY_ITEM_MISSING';
2023  FND_MESSAGE.SET_NAME('BOM', 'BOM_ORG_ID_MISSING');
2024  msg_text1   := FND_MESSAGE.GET;
2025  FND_MESSAGE.SET_NAME('BOM', 'BOM_ASSY_ITEM_MISSING');
2026  msg_text2   := FND_MESSAGE.GET;
2027 
2028    INSERT INTO MTL_INTERFACE_ERRORS
2029    (
2030   TRANSACTION_ID,
2031   UNIQUE_ID,
2032   ORGANIZATION_ID,
2033   COLUMN_NAME,
2034   TABLE_NAME,
2035   MESSAGE_NAME,
2036   ERROR_MESSAGE,
2037   LAST_UPDATE_DATE,
2038   LAST_UPDATED_BY,
2039   CREATION_DATE,
2040   CREATED_BY,
2041   LAST_UPDATE_LOGIN,
2042   REQUEST_ID,
2043   PROGRAM_APPLICATION_ID,
2044   PROGRAM_ID,
2045   PROGRAM_UPDATE_DATE
2046    )
2047   Select
2048   MIRI.transaction_id,
2049   MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
2050   Null,
2051   null,
2052   'MTL_ITEM_REVISIONS_INTERFACE',
2053   decode ( MIRI.Organization_code, null, msg_name1,msg_name2),
2054   decode ( MIRI.Organization_code, null, msg_text1,msg_text2),
2058         NVL(CREATED_BY, user_id),
2055         NVL(LAST_UPDATE_DATE, SYSDATE),
2056         NVL(LAST_UPDATED_BY, user_id),
2057         NVL(CREATION_DATE,SYSDATE),
2059         NVL(LAST_UPDATE_LOGIN, user_id),
2060          req_id,
2061         NVL(PROGRAM_APPLICATION_ID, prog_appid),
2062         NVL(PROGRAM_ID, prog_id),
2063         NVL(PROGRAM_UPDATE_DATE, sysdate)
2064     from MTL_ITEM_REVISIONS_INTERFACE MIRI
2065    where (organization_code is null or item_number is null)
2066   and transaction_id is not null
2067   and process_flag =1
2068   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
2069   and MIRI.set_process_id = l_set_process_id;
2070 
2071 
2072   Update  MTL_ITEM_REVISIONS_INTERFACE MIRI
2073   set process_flag = 3
2074   where (item_number is null or Organization_code is null)
2075   and transaction_id is not null
2076   and process_flag =1
2077   and (all_org = 1 OR (all_org = 2 AND organization_id = org_id))
2078   and MIRI.set_process_id = l_set_process_id;
2079 
2080 Commit;
2081 
2082 return(0);
2083 
2084 
2085 EXCEPTION
2086    WHEN others THEN
2087       err_text := 'Bom_Open_Interface_Utl(Process_Revision_Info-'||stmt_num||') '||substrb(SQLERRM,1,1000);
2088       RETURN(SQLCODE);
2089 
2090 end;
2091 
2092 /*--------------------------Process_All_Entities------------------------------
2093 
2094 NAME
2095    Process_All_Entities
2096 DESCRIPTION
2097     Process all the entities - Bill, Components, Substitute Components,
2098                                Reference Designators and Component Operations
2099     It will process all the entities with null batch id.
2100 RETURNS
2101     0 if successful
2102     SQLCODE if unsuccessful
2103 NOTES
2104 -----------------------------------------------------------------------------*/
2105 FUNCTION Process_All_Entities (
2106     org_id            NUMBER,
2107     all_org             NUMBER ,
2108     user_id             NUMBER,
2109     login_id            NUMBER,
2110     prog_appid          NUMBER,
2111     prog_id             NUMBER,
2112     req_id              NUMBER,
2113     err_text    IN OUT NOCOPY  VARCHAR2
2114 )
2115     return INTEGER
2116 IS
2117   l_return_status INTEGER := 0;
2118 BEGIN
2119 
2120   --call the process_all_entities with null batch id.
2121   l_return_status := Process_All_Entities (
2122                         org_id => org_id,
2123                         all_org => all_org,
2124                         user_id => user_id,
2125                         login_id => login_id,
2126                         prog_appid => prog_appid,
2127                         prog_id => prog_id,
2128                         req_id => req_id,
2129                         err_text => err_text,
2130                         p_batch_id  => NULL
2131                       );
2132 
2133   RETURN l_return_status;
2134 END;
2135 
2136 /*--------------------------Process_All_Entities------------------------------
2137 
2138 NAME
2139    Process_All_Entities
2140 DESCRIPTION
2141     Process all the entities - Bill, Components, Substitute Components,
2142                                Reference Designators and Component Operations
2143     It will process all the entities for given batch id .
2144 RETURNS
2145     0 if successful
2146     SQLCODE if unsuccessful
2147 NOTES
2148 -----------------------------------------------------------------------------*/
2149 FUNCTION Process_All_Entities (
2150     org_id            NUMBER,
2151     all_org             NUMBER ,
2152     user_id             NUMBER,
2153     login_id            NUMBER,
2154     prog_appid          NUMBER,
2155     prog_id             NUMBER,
2156     req_id              NUMBER,
2157     err_text    IN OUT NOCOPY  VARCHAR2,
2158     p_batch_id  IN  NUMBER
2159 )
2160     return INTEGER
2161 IS
2162   l_return_status INTEGER := 0;
2163 BEGIN
2164   l_return_status := Process_Header_Info
2165                      (org_id,
2166                       all_org,
2167                       user_id,
2168                       login_id,
2169                       prog_appid,
2170                       prog_id,
2171                       req_id,
2172                       err_text,
2173                       p_batch_id);
2174    IF l_return_status <> 0 THEN
2175       RETURN l_return_status;
2176    END IF;
2177 
2178    /* Set PK3_value if the value for revision exists */
2179    UPDATE BOM_BILL_OF_MTLS_INTERFACE BBMI
2180        SET pk3_value  = (SELECT mrb.revision_id
2181                              FROM  mtl_item_revisions_b mrb
2182                              WHERE mrb.inventory_item_id = BBMI.Assembly_item_id
2183                              AND   mrb.organization_id = BBMI.organization_id
2184                              AND   mrb.revision = BBMI.REVISION)
2185        WHERE process_flag = 1
2186          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2187          AND Assembly_item_id is not null
2188          AND Revision is not null
2189          AND organization_id is not null
2190          AND exists (SELECT 1
2191                       FROM  mtl_item_revisions_b mrb
2192                       WHERE mrb.inventory_item_id = BBMI.Assembly_item_id
2193                       AND   mrb.organization_id = BBMI.organization_id
2197    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI SET transaction_type = G_Update
2194                       AND   mrb.revision = BBMI.Revision);
2195 
2196    /* If SYNC rows has valid ComponentSequenceId then update the transaction type to UPDATE */
2198        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2199          AND UPPER(transaction_type) = 'SYNC'
2200          AND component_sequence_id IS NOT NULL
2201          AND
2202           (
2203               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2204           OR  ( p_batch_id = BICI.batch_id )
2205           )
2206          AND EXISTS (SELECT 'x'
2207            FROM BOM_INVENTORY_COMPONENTS BIC2
2208            WHERE BIC2.component_sequence_id = BICI.component_sequence_id );
2209 
2210    /* If SYNC rows don't have ComponentSequenceId value then update the transaction type to CREATE */
2211    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI SET transaction_type = G_Create
2212        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2213          AND UPPER(transaction_type) = 'SYNC'
2214          AND component_sequence_id IS NULL
2215          AND
2216           (
2217               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2218           OR  ( p_batch_id = BICI.batch_id )
2219           );
2220 
2221  /* Update Organization_ids if organization_code is given org id is null.
2222   Orgnaization_id information is needed in the next steps */
2223 
2224       UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2225          SET organization_id = (SELECT organization_id
2226                                 FROM MTL_PARAMETERS mp1
2227                                 WHERE mp1.organization_code = BICI.organization_code)
2228        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2229          AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
2230          AND organization_code is not null
2231          AND
2232           (
2233               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2234           OR  ( p_batch_id = BICI.batch_id )
2235           )
2236          AND exists (SELECT 'x'
2237                        FROM MTL_PARAMETERS mp2
2238                       WHERE mp2.organization_code = BICI.organization_code);
2239 
2240  /* Update the Assembly_item_number */
2241     UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2242        SET assembly_item_number  = (SELECT concatenated_segments
2243                              FROM  mtl_system_items_kfv MKFV
2244                              WHERE MKFV.inventory_item_id = BICI.Assembly_item_id
2245                              AND   MKFV.organization_id = BICI.organization_id)
2246        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2247          AND upper(transaction_type) in (G_Delete, G_Update, G_Create,G_NoOp)
2248          AND Assembly_item_id is not null
2249          AND organization_id is not null
2250          AND
2251           (
2252               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2253           OR  ( p_batch_id = BICI.batch_id )
2254           )
2255           AND exists (SELECT 'x'
2256                       FROM  mtl_system_items MKFV2
2257                       WHERE MKFV2.inventory_item_id = BICI.Assembly_item_id
2258                       AND   MKFV2.organization_id = BICI.organization_id);
2259 
2260 
2261 
2262  /* Update the Assembly_item_id */
2263    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2264        SET Assembly_item_id  = (SELECT inventory_item_id
2265                              FROM  mtl_system_items_kfv mvll
2266                              WHERE mvll.concatenated_segments = BICI.Assembly_item_number
2267                              AND   mvll.organization_id = BICI.organization_id)
2268        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2269          AND upper(transaction_type) in (G_Delete, G_Update, G_Create,G_NoOp)
2270          AND Assembly_item_number is not null
2271          AND organization_id is not null
2272          AND assembly_item_id is NULL
2273          AND
2274           (
2275               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2276           OR  ( p_batch_id = BICI.batch_id )
2277           );
2278 
2279 /* Update component_item_number */
2280      UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2281        SET component_item_number  = (SELECT concatenated_segments
2282                              FROM  mtl_system_items_kfv mvll
2283                              WHERE mvll.inventory_item_id = BICI.Component_item_id
2284                              AND   mvll.organization_id = BICI.organization_id)
2285        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2286          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2287          AND Component_item_id is not null
2288          AND Organization_id is not null
2289          AND
2290           (
2291               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2292           OR  ( p_batch_id = BICI.batch_id )
2293           )
2294           AND exists (SELECT 'x'
2295                       FROM mtl_system_items MKFV
2296                       WHERE MKFV.inventory_item_id = BICI.Component_item_id
2297                       AND   MKFV.organization_id = BICI.organization_id);
2298 
2299    /* Update the component_item_id */
2300    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2304                                  AND   mvll.organization_id = BICI.organization_id)
2301        SET component_item_id  = (SELECT inventory_item_id
2302                                  FROM  mtl_system_items_kfv mvll
2303                                  WHERE mvll.concatenated_segments = BICI.Component_item_number
2305        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2306          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2307          AND Component_item_number is not null
2308          AND Organization_id is not null
2309          AND Component_item_id is null
2310          AND
2311           (
2312               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2313           OR  ( p_batch_id = BICI.batch_id )
2314           );
2315 
2316 /* Update the bill_sequence_id */
2317    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2318        SET bill_sequence_id  = (SELECT bill_sequence_id
2319                              FROM  bom_structures_b bom
2320                              WHERE bom.assembly_item_id = BICI.assembly_item_id
2321                              AND   bom.organization_id = BICI.organization_id
2322                              AND   NVL(bom.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BICI.alternate_bom_designator,FND_API.G_MISS_CHAR))
2323        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2324          AND upper(transaction_type) in (G_Delete, G_Update)
2325          AND assembly_item_number is not null
2326          AND organization_id is not null
2327          AND
2328           (
2329               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2330           OR  ( p_batch_id = BICI.batch_id )
2331           )
2332           AND exists (SELECT 'x'
2333                       FROM bom_structures_b bom2
2334                       WHERE bom2.assembly_item_id = BICI.assembly_item_id
2335                       AND   bom2.organization_id = BICI.organization_id
2336                       AND   NVL(bom2.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BICI.alternate_bom_designator,FND_API.G_MISS_CHAR));
2337 
2338     /*
2339 
2340    l_return_status := Process_Comps_Info
2341                      (org_id,
2342                       all_org,
2343                       user_id,
2344                       login_id,
2345                       prog_appid,
2346                       prog_id,
2347                       req_id,
2348                       err_text,
2349                       p_batch_id);
2350    IF l_return_status <> 0 THEN
2351       RETURN l_return_status;
2352    END IF;
2353 */
2354 /* Resolve the Component_sequence_ids for updates and deletes */
2355 
2356    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2357        SET(component_item_id, effectivity_date,
2358          operation_seq_num,  from_end_item_unit_number)
2359        = (SELECT component_item_id,
2360     effectivity_date, operation_seq_num,  from_end_item_unit_number
2361            FROM BOM_INVENTORY_COMPONENTS BIC1
2362            WHERE BIC1.component_sequence_id = BICI.component_sequence_id )
2363        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2364          AND UPPER(transaction_type) IN (G_Delete, G_Update)
2365          AND component_sequence_id IS NOT NULL
2366          AND
2367           (
2368               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2369           OR  ( p_batch_id = BICI.batch_id )
2370           )
2371          AND EXISTS (SELECT 'x'
2372            FROM BOM_INVENTORY_COMPONENTS BIC2
2373            WHERE BIC2.component_sequence_id = BICI.component_sequence_id );
2374 
2375 
2376 /* Update the component_sequence_id */
2377    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2378        SET COMPONENT_SEQUENCE_ID
2379                            = (SELECT COMPONENT_SEQUENCE_ID
2380                              FROM BOM_INVENTORY_COMPONENTS BIC
2381                              WHERE BIC.bill_sequence_id = BICI.bill_Sequence_id
2382                              AND BIC.component_item_id = BICI.component_item_id
2383                              AND BIC.operation_seq_num = BICI.operation_seq_num
2384                              AND BIC.effectivity_date = BICI.effectivity_date)
2385        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2386          AND UPPER(transaction_type) IN (G_Update, G_Delete)
2387          AND COMPONENT_SEQUENCE_ID IS NULL
2388          AND bill_sequence_id IS NOT NULL
2389          AND component_item_id IS NOT NULL
2390          AND
2391           (
2392               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2393           OR  ( p_batch_id = BICI.batch_id )
2394           )
2395          AND EXISTS (SELECT 'x'
2396                      FROM BOM_INVENTORY_COMPONENTS BIC
2397                      WHERE BIC.bill_sequence_id = BICI.bill_Sequence_id
2398                      AND BIC.component_item_id = BICI.component_item_id
2399                      AND BIC.operation_seq_num = BICI.operation_seq_num
2400                      AND BIC.effectivity_date = BICI.effectivity_date);
2401 
2402 
2403 
2404    /* Update the From_end_item_id */
2405    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2406        SET From_End_Item_id = (SELECT inventory_item_id
2407                              FROM  mtl_system_items_kfv mvll
2408                              WHERE mvll.concatenated_segments = BICI.From_End_Item
2409                              AND   mvll.organization_id = BICI.organization_id)
2413          AND organization_id is not null
2410        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2411          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2412          AND From_End_Item is not null
2414          AND
2415           (
2416               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2417           OR  ( p_batch_id = BICI.batch_id )
2418           )
2419           AND exists (SELECT 'x'
2420                       FROM  mtl_system_items_kfv mvll2
2421                       WHERE mvll2.concatenated_segments = BICI.From_End_Item
2422                       AND   mvll2.organization_id = BICI.organization_id);
2423 
2424    /* Update the From_end_item_rev_id */
2425    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2426        SET From_end_item_rev_id  = (SELECT mrb.revision_id
2427                              FROM  mtl_item_revisions_b mrb
2428                              WHERE mrb.inventory_item_id = BICI.From_End_Item_id
2429                              AND   mrb.organization_id = BICI.organization_id
2430                              AND   mrb.revision = BICI.From_end_item_rev_code)
2431        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2432          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2433          AND From_End_Item is not null
2434          AND From_end_item_rev_code is not null
2435          AND organization_id is not null
2436          AND
2437           (
2438               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2439           OR  ( p_batch_id = BICI.batch_id )
2440           )
2441          AND exists (SELECT 1
2442                       FROM  mtl_item_revisions_b mrb
2443                       WHERE mrb.inventory_item_id = BICI.From_End_Item_id
2444                       AND   mrb.organization_id = BICI.organization_id
2445                       AND   mrb.revision = BICI.From_end_item_rev_code);
2446 
2447    /* Update the To_end_item_rev_id */
2448    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2449        SET To_end_item_rev_id  = (SELECT mrb.revision_id
2450                              FROM  mtl_item_revisions_b mrb
2451                              WHERE mrb.inventory_item_id = BICI.From_End_Item_id
2452                              AND   mrb.organization_id = BICI.organization_id
2453                              AND   mrb.revision = BICI.To_end_item_rev_code)
2454        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2455          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2456          AND From_End_Item is not null
2457          AND To_end_item_rev_code is not null
2458          AND organization_id is not null
2459          AND
2460           (
2461               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2462           OR  ( p_batch_id = BICI.batch_id )
2463           )
2464          AND exists (SELECT 1
2465                       FROM  mtl_item_revisions_b mrb
2466                       WHERE mrb.inventory_item_id = BICI.From_End_Item_id
2467                       AND   mrb.organization_id = BICI.organization_id
2468                       AND   mrb.revision = BICI.To_end_item_rev_code);
2469 
2470    /* Update the component_revision_id */
2471    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2472        SET Component_revision_id  = (SELECT mrb.revision_id
2473                              FROM  mtl_item_revisions_b mrb
2474                              WHERE mrb.inventory_item_id = BICI.component_item_id
2475                              AND   mrb.organization_id = BICI.organization_id
2476                              AND   mrb.revision = BICI.Component_revision_code)
2477        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2478          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2479          AND component_item_id is not null
2480          AND Component_revision_code is not null
2481          AND organization_id is not null
2482          AND
2483           (
2484               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2485           OR  ( p_batch_id = BICI.batch_id )
2486           )
2487          AND exists (SELECT 1
2488                       FROM  mtl_item_revisions_b mrb
2489                       WHERE mrb.inventory_item_id = BICI.component_item_id
2490                       AND   mrb.organization_id = BICI.organization_id
2491                       AND   mrb.revision = BICI.Component_revision_code);
2492 
2493    /* Update the assembly items pk3 value */
2494    UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2495        SET Parent_Revision_Id  = (SELECT mrb.revision_id
2496                              FROM  mtl_item_revisions_b mrb
2497                              WHERE mrb.inventory_item_id = BICI.Assembly_item_id
2498                              AND   mrb.organization_id = BICI.organization_id
2499                              AND   mrb.revision = BICI.Parent_revision_code)
2500        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2501          AND UPPER(transaction_type) in (G_Delete, G_Update, G_Create)
2502          AND Assembly_item_id is not null
2503          AND Parent_revision_code is not null
2504          AND organization_id is not null
2505          AND
2506           (
2507               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2508           OR  ( p_batch_id = BICI.batch_id )
2509           );
2510 
2511 
2512   /* Update Supply_locator_name */
2513 
2514   UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2515        SET  supply_locator_id  = (SELECT inventory_location_id
2519       WHERE process_flag = 1
2516                             FROM MTL_ITEM_LOCATIONS_KFV MIL1
2517                             WHERE MIL1.concatenated_segments = BICI.location_name
2518                             AND MIL1.organization_id = BICI.organization_id)
2520         AND upper(transaction_type) in (G_Create, G_Delete, G_Update)
2521         AND location_name is not null
2522         AND organization_id is not null
2523          AND
2524           (
2525               ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2526           OR  ( p_batch_id = BICI.batch_id )
2527           )
2528           AND exists (SELECT 'x'
2529                      FROM MTL_ITEM_LOCATIONS_KFV mil2
2530                      WHERE mil2.concatenated_segments = BICI.location_name
2531                      AND mil2.organization_id = BICI.organization_id);
2532 
2533   UPDATE BOM_INVENTORY_COMPS_INTERFACE BICI
2534   SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
2535       transaction_type = upper(transaction_type)
2536   WHERE transaction_id is null
2537   AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
2538   AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2539   AND
2540    (
2541        ( (p_batch_id IS NULL) AND (BICI.batch_id IS NULL) )
2542    OR  ( p_batch_id = BICI.batch_id )
2543    );
2544 
2545 
2546 
2547    -- Reference Designator Changes for PLM Import--
2548    /*
2549    l_return_status := Process_Ref_Degs_Info
2550                      (org_id,
2551                       all_org,
2552                       user_id,
2553                       login_id,
2554                       prog_appid,
2555                       prog_id,
2556                       req_id,
2557                       err_text,
2558                       p_batch_id);
2559    IF l_return_status <> 0 THEN
2560       RETURN l_return_status;
2561    END IF;
2562    */
2563 
2564       UPDATE BOM_REF_DESGS_INTERFACE BRDI
2565        SET(bill_sequence_id,  component_item_id, effectivity_date,
2566          operation_seq_num,  from_end_item_unit_number)
2567        = (SELECT bill_sequence_id,  component_item_id,
2568     effectivity_date, operation_seq_num,  from_end_item_unit_number
2569            FROM BOM_INVENTORY_COMPONENTS BIC1
2570            WHERE BIC1.component_sequence_id = BRDI.component_sequence_id )
2571        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2572          AND COMPONENT_SEQUENCE_ID is not null
2573          AND
2574           (
2575               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2576           OR  ( p_batch_id = BRDI.batch_id )
2577           )
2578          AND exists (SELECT 'x'
2579            FROM BOM_INVENTORY_COMPONENTS BIC2
2580            WHERE BIC2.COMPONENT_SEQUENCE_ID = BRDI.COMPONENT_SEQUENCE_ID );
2581 
2582 
2583 /* Resolve the Bill sequence ids for updates and deletes */
2584 
2585    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2586        SET(assembly_item_id, organization_id, ALTERNATE_BOM_DESIGNATOR)
2587        = (SELECT assembly_item_id, organization_id , alternate_bom_designator
2588            FROM BOM_BILL_OF_MATERIALS BBM1
2589            WHERE BBM1.bill_sequence_id = BRDI.bill_sequence_id)
2590        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2591          AND bill_sequence_id is not null
2592          AND
2593           (
2594               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2595           OR  ( p_batch_id = BRDI.batch_id )
2596           )
2597          AND exists (SELECT 'x'
2598        FROM BOM_BILL_OF_MATERIALS BBM2
2599        WHERE BBM2.bill_sequence_id = BRDI.bill_sequence_id);
2600 
2601 
2602 /* Update Organization Code using Organization_id
2603 this also needed if Organization_id is given and code is not given*/
2604 
2605    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2606        SET organization_code = (SELECT organization_code
2607                                   FROM MTL_PARAMETERS mp1
2608                              WHERE mp1.organization_id = BRDI.organization_id)
2609        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2610          AND organization_id is not null
2611          AND
2612           (
2613               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2614           OR  ( p_batch_id = BRDI.batch_id )
2615           )
2616          AND exists (SELECT 'x'
2617                        FROM MTL_PARAMETERS mp2
2618                       WHERE mp2.organization_id = BRDI.organization_id);
2619 
2620 
2621 
2622  /* Update Organization_ids if organization_code is given org id is null.
2623   Orgnaization_id information is needed in the next steps */
2624 
2625       UPDATE BOM_REF_DESGS_INTERFACE BRDI
2626          SET organization_id = (SELECT organization_id
2627                                 FROM MTL_PARAMETERS mp1
2628                                 WHERE mp1.organization_code = BRDI.organization_code)
2629        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2630          AND organization_id is null
2631          AND organization_code is not null
2632          AND
2633           (
2634               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2635           OR  ( p_batch_id = BRDI.batch_id )
2636           );
2637 
2638 
2639 
2640 /* Update Assembly Item name */
2641 
2645                                      WHERE mvl1.inventory_item_id = BRDI.assembly_item_id
2642    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2643        SET  ASSEMBLY_ITEM_NUMBER  = (SELECT CONCATENATED_SEGMENTS
2644                                      FROM MTL_SYSTEM_ITEMS_KFV mvl1
2646                                      AND mvl1.organization_id = BRDI.organization_id)
2647        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2648          AND assembly_item_id is not null
2649          AND organization_id is not null
2650          AND
2651           (
2652               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2653           OR  ( p_batch_id = BRDI.batch_id )
2654           )
2655           AND exists (SELECT 'x'
2656                       FROM mtl_system_items mvl12
2657                       WHERE mvl12.inventory_item_id = BRDI.assembly_item_id
2658                       AND mvl12.organization_id = BRDI.organization_id);
2659 
2660    /* Update the Assembly_item_id */
2661    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2662        SET Assembly_item_id  = (SELECT inventory_item_id
2663                              FROM  mtl_system_items_kfv mvll
2664                              WHERE mvll.concatenated_segments = BRDI.Assembly_item_number
2665                              AND   mvll.organization_id = BRDI.organization_id)
2666        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2667          AND Assembly_item_number is not null
2668          AND organization_id is not null
2669          AND Assembly_item_id is null
2670          AND
2671           (
2672               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2673           OR  ( p_batch_id = BRDI.batch_id )
2674           );
2675 
2676 /* Update Component Item name */
2677    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2678        SET  COMPONENT_ITEM_NUMBER   = (SELECT CONCATENATED_SEGMENTS
2679                                        FROM MTL_SYSTEM_ITEMS_KFV mvl1
2680                                        WHERE mvl1.inventory_item_id = BRDI.component_item_id
2681                                        AND mvl1.organization_id = BRDI.organization_id)
2682        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2683          AND COMPONENT_ITEM_ID is not null
2684          AND organization_id is not null
2685          AND
2686           (
2687               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2688           OR  ( p_batch_id = BRDI.batch_id )
2689           )
2690           AND exists (SELECT 'x'
2691                       FROM mtl_system_items mvl12
2692                       WHERE mvl12.inventory_item_id = BRDI.component_item_id
2693                       AND mvl12.organization_id = BRDI.organization_id);
2694 
2695 
2696    /* Update the Component_item_id */
2697    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2698        SET Component_item_id  = (SELECT inventory_item_id
2699                                  FROM  mtl_system_items_kfv mvll
2700                                  WHERE mvll.concatenated_segments = BRDI.Component_item_number
2701                                  AND   mvll.organization_id = BRDI.organization_id)
2702        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2703          AND Component_item_number is not null
2704          AND organization_id is not null
2705          AND component_item_id is null
2706          AND
2707           (
2708               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2709           OR  ( p_batch_id = BRDI.batch_id )
2710           );
2711 
2712    /* Set the Bill Seqeunce Ids */
2713    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2714        SET bill_sequence_id  = (SELECT bill_sequence_id
2715                              FROM  bom_structures_b bom
2716                              WHERE bom.assembly_item_id = BRDI.assembly_item_id
2717                              AND   bom.organization_id = BRDI.organization_id
2718                              AND   NVL(bom.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BRDI.alternate_bom_designator,FND_API.G_MISS_CHAR))
2719        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2720          AND upper(transaction_type) in (G_Delete, G_Update, 'SYNC', G_Create)
2721          AND assembly_item_id is not null
2722          AND organization_id is not null
2723          AND bill_sequence_id is null
2724          AND
2725           (
2726               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2727           OR  ( p_batch_id = BRDI.batch_id )
2728           );
2729 
2730    /* Update the component_sequence_id */
2731    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2732        SET COMPONENT_SEQUENCE_ID
2733                            = (SELECT COMPONENT_SEQUENCE_ID
2734                              FROM bom_components_b BIC
2735                              WHERE BIC.bill_sequence_id = BRDI.bill_Sequence_id
2736                              AND BIC.component_item_id = BRDI.component_item_id
2737                              AND BIC.operation_seq_num = BRDI.operation_seq_num
2738                              AND BIC.effectivity_date = BRDI.effectivity_date)
2739        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2740          AND UPPER(transaction_type) IN (G_Update, G_Delete, 'SYNC', G_Create)
2741          AND COMPONENT_SEQUENCE_ID IS NULL
2742          AND bill_sequence_id IS NOT NULL
2743          AND component_item_id IS NOT NULL
2744          AND
2745           (
2749 
2746               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2747           OR  ( p_batch_id = BRDI.batch_id )
2748           );
2750 
2751    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2752        SET Assembly_Item_Revision_Id  = (SELECT mrb.revision_id
2753                              FROM  mtl_item_revisions_b mrb
2754                              WHERE mrb.inventory_item_id = BRDI.Assembly_item_id
2755                              AND   mrb.organization_id = BRDI.organization_id
2756                              AND   mrb.revision = BRDI.Assembly_Item_Revision_Code)
2757        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2758          AND UPPER(transaction_type) IN (G_Update, G_Delete, 'SYNC', G_Create)
2759          AND Assembly_item_id IS NOT NULL
2760          AND Assembly_Item_Revision_Code IS NOT NULL
2761          AND Organization_Id IS NOT NULL
2762          AND
2763           (
2764               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2765           OR  ( p_batch_id = BRDI.batch_id )
2766           );
2767 
2768     /*Update the transaction_types */
2769    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2770        SET Transaction_Type = G_Update
2771        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2772          AND transaction_type = 'SYNC'
2773          AND COMPONENT_SEQUENCE_ID is not null
2774          AND
2775           (
2776               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2777           OR  ( p_batch_id = BRDI.batch_id )
2778           )
2779          AND exists (SELECT 'x'
2780            FROM BOM_REFERENCE_DESIGNATORS BRDI2
2781            WHERE BRDI2.COMPONENT_SEQUENCE_ID = BRDI.COMPONENT_SEQUENCE_ID
2782            AND BRDI2.COMPONENT_REFERENCE_DESIGNATOR = BRDI.COMPONENT_REFERENCE_DESIGNATOR
2783            AND NVL(BRDI2.ACD_TYPE, 1) = NVL(BRDI.ACD_TYPE, 1) );
2784 
2785     /*Update the transaction_types */
2786    UPDATE BOM_REF_DESGS_INTERFACE BRDI
2787        SET Transaction_Type = G_Create
2788        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2789          AND transaction_type = 'SYNC'
2790          AND
2791           (
2792               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2793           OR  ( p_batch_id = BRDI.batch_id )
2794           );
2795 
2796    /*  Assign transaction ids */
2797 
2798        UPDATE BOM_REF_DESGS_INTERFACE BRDI
2799          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
2800              transaction_type = upper(transaction_type)
2801        WHERE transaction_id is null
2802          AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
2803          AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2804          AND (all_org = 1
2805              OR
2806             (all_org = 2 AND organization_id = org_id))
2807          AND
2808           (
2809               ( (p_batch_id IS NULL) AND (BRDI.batch_id IS NULL) )
2810           OR  ( p_batch_id = BRDI.batch_id )
2811           );
2812 
2813 
2814    /*l_return_status := Process_Sub_Comps_Info
2815                      (org_id,
2816                       all_org,
2817                       user_id,
2818                       login_id,
2819                       prog_appid,
2820                       prog_id,
2821                       req_id,
2822                       err_text,
2823                       p_batch_id);
2824    IF l_return_status <> 0 THEN
2825       RETURN l_return_status;
2826    END IF;
2827    */
2828 
2829      UPDATE BOM_SUB_COMPS_INTERFACE BSCI
2830        SET(bill_sequence_id,  component_item_id, effectivity_date,
2831          operation_seq_num,  from_end_item_unit_number)
2832        = (select bill_sequence_id,  component_item_id,
2833     EFFECTIVITY_DATE, OPERATION_SEQ_NUM,  FROM_END_ITEM_UNIT_NUMBER
2834            FROM BOM_INVENTORY_COMPONENTS BIC1
2835            WHERE BIC1.COMPONENT_SEQUENCE_ID = BSCI.component_sequence_id )
2836        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2837          AND upper(transaction_type) in (G_Delete, G_Update, G_Create)
2838          AND COMPONENT_SEQUENCE_ID is not null
2839          AND
2840           (
2841               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2842           OR  ( p_batch_id = BSCI.batch_id )
2843           )
2844          AND exists (SELECT 'x'
2845            FROM BOM_INVENTORY_COMPONENTS BIC2
2846            WHERE BIC2.COMPONENT_SEQUENCE_ID = BSCI.COMPONENT_SEQUENCE_ID );
2847 
2848 
2849 /* Resolve the Bill sequence ids for updates and deletes */
2850 
2851    UPDATE bom_sub_comps_interface BSCI
2852        SET(assembly_item_id, organization_id, ALTERNATE_BOM_DESIGNATOR)
2853        = (SELECT assembly_item_id, organization_id , alternate_bom_designator
2854            FROM BOM_BILL_OF_MATERIALS BBM1
2855            WHERE BBM1.bill_sequence_id = BSCI.bill_sequence_id)
2856        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2857          AND bill_sequence_id is not null
2858          AND
2859           (
2860               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2861           OR  ( p_batch_id = BSCI.batch_id )
2862           )
2863          AND exists (SELECT 'x'
2864        FROM BOM_BILL_OF_MATERIALS BBM2
2865        WHERE BBM2.bill_sequence_id = BSCI.bill_sequence_id);
2866 
2867 
2868 /* Update Organization Code using Organization_id
2869 this also needed if Organization_id is given and code is not given*/
2870 
2874                                 WHERE mp1.organization_id = BSCI.organization_id)
2871    UPDATE bom_sub_comps_interface BSCI
2872        SET organization_code = (SELECT organization_code
2873                                 FROM MTL_PARAMETERS mp1
2875        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2876          AND organization_id is not null
2877          AND
2878           (
2879               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2880           OR  ( p_batch_id = BSCI.batch_id )
2881           )
2882          AND exists (SELECT 'x'
2883                        FROM MTL_PARAMETERS mp2
2884                       WHERE mp2.organization_id = BSCI.organization_id);
2885 
2886 
2887 
2888  /* Update Organization_ids if organization_code is given org id is null.
2889   Orgnaization_id information is needed in the next steps */
2890 
2891       UPDATE bom_sub_comps_interface BSCI
2892          SET organization_id = (SELECT organization_id
2893                                 FROM MTL_PARAMETERS mp1
2894                                 WHERE mp1.organization_code = BSCI.organization_code)
2895        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2896          AND organization_id is null
2897          AND organization_code is not null
2898          AND
2899           (
2900               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2901           OR  ( p_batch_id = BSCI.batch_id )
2902           );
2903 
2904 
2905 
2906 /* Update Assembly Item name */
2907 
2908    UPDATE bom_sub_comps_interface BSCI
2909        SET  ASSEMBLY_ITEM_NUMBER  = (SELECT CONCATENATED_SEGMENTS
2910                                      FROM MTL_SYSTEM_ITEMS_KFV mvl1
2911                                      WHERE mvl1.inventory_item_id = BSCI.assembly_item_id
2912                                      AND mvl1.organization_id = BSCI.organization_id)
2913        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2914          AND assembly_item_id is not null
2915          AND organization_id is not null
2916          AND
2917           (
2918               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2919           OR  ( p_batch_id = BSCI.batch_id )
2920           )
2921           AND exists (SELECT 'x'
2922                       FROM mtl_system_items mvl12
2923                       WHERE mvl12.inventory_item_id = BSCI.assembly_item_id
2924                       AND mvl12.organization_id = BSCI.organization_id);
2925 
2926    /* Update the Assembly_item_id */
2927    UPDATE bom_sub_comps_interface BSCI
2928        SET Assembly_item_id  = (SELECT inventory_item_id
2929                                 FROM  mtl_system_items_kfv mvll
2930                                 WHERE mvll.concatenated_segments = BSCI.Assembly_item_number
2931                                 AND   mvll.organization_id = BSCI.organization_id)
2932        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2933          AND Assembly_item_number is not null
2934          AND organization_id is not null
2935          AND assembly_item_id is null
2936          AND
2937           (
2938               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2939           OR  ( p_batch_id = BSCI.batch_id )
2940           );
2941 
2942 /* Update Component Item name */
2943    UPDATE bom_sub_comps_interface BSCI
2944        SET  COMPONENT_ITEM_NUMBER   = (SELECT CONCATENATED_SEGMENTS
2945                                        FROM MTL_SYSTEM_ITEMS_KFV mvl1
2946                                        WHERE mvl1.inventory_item_id = BSCI.component_item_id
2947                                        AND mvl1.organization_id = BSCI.organization_id)
2948        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2949          AND COMPONENT_ITEM_ID is not null
2950          AND organization_id is not null
2951          AND
2952           (
2953               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2954           OR  ( p_batch_id = BSCI.batch_id )
2955           )
2956           AND exists (SELECT 'x'
2957                       FROM mtl_system_items mvl12
2958                       WHERE mvl12.inventory_item_id = BSCI.component_item_id
2959                       AND mvl12.organization_id = BSCI.organization_id);
2960 
2961 
2962    /* Update the Component_item_id */
2963    UPDATE bom_sub_comps_interface BSCI
2964        SET Component_item_id  = (SELECT inventory_item_id
2965                                  FROM  mtl_system_items_kfv mvll
2966                                  WHERE mvll.concatenated_segments = BSCI.Component_item_number
2967                                  AND   mvll.organization_id = BSCI.organization_id)
2968        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2969          AND Component_item_number is not null
2970          AND organization_id is not null
2971          AND component_item_id is null
2972          AND
2973           (
2974               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2975           OR  ( p_batch_id = BSCI.batch_id )
2976           );
2977 
2978    /* Set the Bill Seqeunce Ids */
2979    UPDATE bom_sub_comps_interface BSCI
2980        SET bill_sequence_id  = (SELECT bill_sequence_id
2981                              FROM  bom_bill_of_materials bom
2982                              WHERE bom.assembly_item_id = BSCI.assembly_item_id
2983                              AND   bom.organization_id = BSCI.organization_id
2984                              AND   NVL(bom.alternate_bom_designator,FND_API.G_MISS_CHAR) = NVL(BSCI.alternate_bom_designator,FND_API.G_MISS_CHAR))
2985        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
2986          AND upper(transaction_type) in (G_Delete, G_Update, 'SYNC', G_Create)
2987          AND assembly_item_id is not null
2988          AND organization_id is not null
2989          AND bill_sequence_id is null
2990          AND
2991           (
2992               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
2993           OR  ( p_batch_id = BSCI.batch_id )
2994           );
2995 
2996    /* Update the component_sequence_id */
2997    UPDATE BOM_SUB_COMPS_INTERFACE BSCI
2998        SET COMPONENT_SEQUENCE_ID
2999                            = (SELECT COMPONENT_SEQUENCE_ID
3000                              FROM BOM_INVENTORY_COMPONENTS BIC
3001                              WHERE BIC.bill_sequence_id = BSCI.bill_Sequence_id
3002                              AND BIC.component_item_id = BSCI.component_item_id
3003                              AND BIC.operation_seq_num = BSCI.operation_seq_num
3004                              AND BIC.effectivity_date = BSCI.effectivity_date)
3005        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
3006          AND UPPER(transaction_type) IN (G_Update, G_Delete, 'SYNC', G_Create)
3007          AND COMPONENT_SEQUENCE_ID IS NULL
3008          AND bill_sequence_id IS NOT NULL
3009          AND component_item_id IS NOT NULL
3010          AND
3011           (
3012               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
3013           OR  ( p_batch_id = BSCI.batch_id )
3014           );
3015 
3016 
3017        UPDATE BOM_SUB_COMPS_INTERFACE BSCI
3018        SET  SUBSTITUTE_COMP_NUMBER = (SELECT concatenated_segments
3019                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
3020                              WHERE mvl1.inventory_item_id = BSCI.SUBSTITUTE_COMPONENT_ID
3021                              and mvl1.organization_id = BSCI.organization_id)
3022         WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
3023          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,'SYNC')
3024          AND SUBSTITUTE_COMPONENT_ID is not null
3025          AND organization_id is not null
3026          AND
3027           (
3028               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
3029           OR  ( p_batch_id = BSCI.batch_id )
3030           )
3031           AND exists (SELECT 'x'
3032                       FROM mtl_system_items mvl12
3033                       WHERE mvl12.inventory_item_id = BSCI.SUBSTITUTE_COMPONENT_ID
3034                       AND mvl12.organization_id = BSCI.organization_id);
3035 
3036 --Update Sub Comp Number If id is given
3037 
3038        UPDATE BOM_SUB_COMPS_INTERFACE BSCI
3039        SET  SUBSTITUTE_COMPONENT_ID = (SELECT inventory_item_id
3040                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
3041                              WHERE mvl1.concatenated_segments = BSCI.SUBSTITUTE_COMP_NUMBER
3042                              and mvl1.organization_id = BSCI.organization_id)
3043        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
3044          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,'SYNC')
3045          AND substitute_comp_number is not null
3046          AND organization_id is not null
3047          AND substitute_component_id is null
3048          AND
3049           (
3050               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
3051           OR  ( p_batch_id = BSCI.batch_id )
3052           );
3053 
3054 --Update New Sub Comp Number
3055 
3056        UPDATE BOM_SUB_COMPS_INTERFACE BSCI
3057        SET  NEW_SUB_COMP_NUMBER = (SELECT CONCATENATED_SEGMENTS
3058                              FROM MTL_SYSTEM_ITEMS_KFV mvl1
3059                              WHERE mvl1.inventory_item_id = BSCI.NEW_SUB_COMP_ID
3060                              and mvl1.organization_id = BSCI.organization_id)
3061        WHERE  (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
3062          AND upper(transaction_type) in (G_Create, G_Delete, G_Update,'SYNC')
3063          AND NEW_SUB_COMP_ID is not null
3064          AND organization_id is not null
3065          AND
3066           (
3067               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
3068           OR  ( p_batch_id = BSCI.batch_id )
3069           )
3070           AND exists (SELECT 'x'
3071                       FROM mtl_system_items mvl12
3072                       WHERE mvl12.inventory_item_id = BSCI.NEW_SUB_COMP_ID
3073                       and mvl12.organization_id = BSCI.organization_id);
3074 
3075 
3076 
3077 
3078     /*Update the transaction_types */
3079    UPDATE bom_sub_comps_interface BSCI
3080        SET Transaction_Type = G_Update
3081        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
3082          AND transaction_type = 'SYNC'
3083          AND COMPONENT_SEQUENCE_ID is not null
3084          AND
3085           (
3086               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
3087           OR  ( p_batch_id = BSCI.batch_id )
3088           )
3089          AND exists (SELECT 'x'
3090            FROM BOM_SUBSTITUTE_COMPONENTS BSCI2
3091            WHERE BSCI2.COMPONENT_SEQUENCE_ID = BSCI.COMPONENT_SEQUENCE_ID
3092            AND NVL(BSCI2.ACD_TYPE, 1) = NVL(BSCI.ACD_TYPE, 1) );
3093 
3094     /*Update the transaction_types */
3095    UPDATE bom_sub_comps_interface BSCI
3096        SET Transaction_Type = G_Create
3097        WHERE (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
3098          AND transaction_type = 'SYNC'
3099          AND
3100           (
3101               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
3102           OR  ( p_batch_id = BSCI.batch_id )
3103           );
3104 
3105    /*  Assign transaction ids */
3106 
3107        UPDATE bom_sub_comps_interface BSCI
3108          SET transaction_id = MTL_SYSTEM_ITEMS_INTERFACE_S.nextval,
3109              transaction_type = upper(transaction_type)
3110        WHERE transaction_id is null
3111          AND upper(transaction_type) in (G_Create, G_Update, G_Delete)
3112          AND (process_flag = 1 or process_flag = 5) --CM Changes for Structure Import
3113          AND (all_org = 1
3114              OR
3115             (all_org = 2 AND organization_id = org_id))
3116          AND
3117           (
3118               ( (p_batch_id IS NULL) AND (BSCI.batch_id IS NULL) )
3119           OR  ( p_batch_id = BSCI.batch_id )
3120           );
3121 
3122 
3123 
3124    l_return_status := Process_Comp_Ops_Info
3125                      (org_id,
3126                       all_org,
3127                       user_id,
3128                       login_id,
3129                       prog_appid,
3130                       prog_id,
3131                       req_id,
3132                       err_text,
3133                       p_batch_id);
3134    IF l_return_status <> 0 THEN
3135       RETURN l_return_status;
3136    END IF;
3137 
3138    RETURN l_return_status;
3139 END;
3140 
3141 end Bom_Open_Interface_Utl;