1 PACKAGE BODY CZ_IMP_PS_NODE as
2 /* $Header: czipsnb.pls 120.16.12020000.2 2012/08/17 15:04:42 smanna ship $ */
3
4 CAPTION_RULE_TYPE CONSTANT NUMBER:=700;
5 JAVA_SYS_PROP_RULE_TYPE CONSTANT NUMBER:=501;
6
7 G_CONFIG_ENGINE_TYPE VARCHAR2(10);
8 IMP_CHILD_MULTI_COPIES EXCEPTION; --LA 12548898
9
10 /*--INTL_TEXT IMPORT SECTION START------------------------------------------*/
11 ------------------------------------------------------------------------------
12 PROCEDURE KRS_INTL_TEXT(inRUN_ID IN PLS_INTEGER,
13 COMMIT_SIZE IN PLS_INTEGER,
14 MAX_ERR IN PLS_INTEGER,
15 INSERTS IN OUT NOCOPY PLS_INTEGER,
16 UPDATES IN OUT NOCOPY PLS_INTEGER,
17 FAILED IN OUT NOCOPY PLS_INTEGER,
18 DUPS IN OUT NOCOPY PLS_INTEGER,
19 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
20 inXFR_GROUP IN VARCHAR2
21 ) IS
22 CURSOR c_imp_intl_text IS
23 SELECT DISTINCT orig_sys_ref, fsk_devlproject_1_1
24 FROM CZ_IMP_LOCALIZED_TEXTS
25 WHERE rec_status IS NULL AND Run_ID = inRUN_ID
26 ORDER BY orig_sys_ref;
27
28 /* cursor's data found indicator */
29 x_imp_intl_text_f BOOLEAN:=FALSE;
30 x_imp_localized_text_f BOOLEAN:=FALSE;
31 x_onl_intl_text_f BOOLEAN:=FALSE;
32 x_onl_intl_text_2_f BOOLEAN:=FALSE;
33 x_translated_intl_text_f BOOLEAN:=FALSE;
34 x_intl_text_found BOOLEAN := FALSE;
35 x_text_not_matching BOOLEAN := TRUE;
36 x_error BOOLEAN:=FALSE;
37
38 TYPE tImpIntlTextId IS TABLE OF CZ_IMP_LOCALIZED_TEXTS.INTL_TEXT_ID%TYPE INDEX BY BINARY_INTEGER;
39 TYPE tImpLocalizedStr IS TABLE OF CZ_IMP_LOCALIZED_TEXTS.LOCALIZED_STR%TYPE INDEX BY BINARY_INTEGER;
40 TYPE tImpLanguage IS TABLE OF CZ_IMP_LOCALIZED_TEXTS.LANGUAGE%TYPE INDEX BY BINARY_INTEGER;
41 TYPE tImpSourceLang IS TABLE OF CZ_IMP_LOCALIZED_TEXTS.SOURCE_LANG%TYPE INDEX BY BINARY_INTEGER;
42 TYPE tImpFSKDevlProject IS TABLE OF CZ_IMP_LOCALIZED_TEXTS.FSK_DEVLPROJECT_1_1%TYPE INDEX BY BINARY_INTEGER;
43 TYPE tImpOrigSysRef IS TABLE OF CZ_IMP_LOCALIZED_TEXTS.ORIG_SYS_REF%TYPE INDEX BY BINARY_INTEGER;
44 TYPE tNumber IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
45
46 nImpIntlTextId tImpIntlTextId;
47 sImpLocalizedStr tImpLocalizedStr;
48 sImpLanguage tImpLanguage;
49 sImpSourceLang tImpSourceLang;
50 sImpFSKDevlProject tImpFSKDevlProject;
51 sImpOrigSysRef tImpOrigSysRef;
52
53 nOnlIntlTextId CZ_IMP_LOCALIZED_TEXTS.INTL_TEXT_ID%TYPE;
54 nOnlIntlText CZ_IMP_LOCALIZED_TEXTS.LOCALIZED_STR%TYPE;
55 nImpIntlText CZ_IMP_LOCALIZED_TEXTS.LOCALIZED_STR%TYPE;
56 nImpIntltempText CZ_IMP_LOCALIZED_TEXTS.LOCALIZED_STR%TYPE;
57 nOnlLang CZ_IMP_LOCALIZED_TEXTS.LANGUAGE%TYPE;
58 nImpLang CZ_IMP_LOCALIZED_TEXTS.LANGUAGE%TYPE;
59 nOnlLangItem CZ_IMP_LOCALIZED_TEXTS.LANGUAGE%TYPE;
60 nImpLocStr CZ_IMP_LOCALIZED_TEXTS.LOCALIZED_STR%TYPE;
61 nOnlLanguage CZ_IMP_LOCALIZED_TEXTS.LANGUAGE%TYPE;
62 nOnlSourceLangn CZ_IMP_LOCALIZED_TEXTS.SOURCE_LANG%TYPE;
63 nOnlModelId CZ_IMP_LOCALIZED_TEXTS.MODEL_ID%TYPE;
64 nModelId CZ_IMP_LOCALIZED_TEXTS.MODEL_ID%TYPE;
65 nOnlOrigSysRef CZ_IMP_LOCALIZED_TEXTS.ORIG_SYS_REF%TYPE;
66 l_disposition CZ_IMP_LOCALIZED_TEXTS.DISPOSITION%TYPE;
67 l_disposition2 CZ_IMP_LOCALIZED_TEXTS.DISPOSITION%TYPE;
68
69
70
71
72 /* Internal vars */
73 nCommitCount PLS_INTEGER:=0; /*COMMIT buffer index */
74 nErrorCount PLS_INTEGER:=0; /*Error index */
75 nInsertCount PLS_INTEGER:=0; /*Inserts */
76 nUpdateCount PLS_INTEGER:=0; /*Updates */
77 nNoChangeCount PLS_INTEGER:=0; /*No Change Counter*/
78 nFailed PLS_INTEGER:=0; /*Failed records */
79 nDups PLS_INTEGER:=0; /*Dupl records */
80 nAllocateBlock PLS_INTEGER:=1;
81 nAllocateCounter PLS_INTEGER;
82 nNextValue NUMBER;
83 nNextId NUMBER;
84 nCount NUMBER;
85 l_msg VARCHAR2(2000);
86
87 v_settings_id VARCHAR2(40);
88 v_section_name VARCHAR2(30);
89 var_tl_prop NUMBER;
90 BEGIN
91
92 v_settings_id := 'OracleSequenceIncr';
93 v_section_name := 'SCHEMA';
94
95 BEGIN
96 SELECT VALUE INTO nAllocateBlock FROM CZ_DB_SETTINGS
97 WHERE SETTING_ID=v_settings_id AND SECTION_NAME=v_section_name;
98 EXCEPTION
99 WHEN OTHERS THEN
100 nAllocateBlock:=1;
101 END;
102 nAllocateCounter:=nAllocateBlock-1;
103
104 OPEN c_imp_intl_text;
105
106 LOOP
107
108 FETCH c_imp_intl_text
109 bulk collect
110 into sImpOrigSysRef, sImpFSKDevlProject
111 limit COMMIT_SIZE;
112 EXIT WHEN c_imp_intl_text%NOTFOUND AND sImpOrigSysRef.COUNT = 0;
113
114 FOR I in 1..sImpOrigSysRef.COUNT LOOP
115
116 /* Return if MAX_ERR is reached */
117 IF(FAILED >= MAX_ERR) THEN
118 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.KRS_INTL_TEXT:MAX',11276,inRun_Id);
119 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
120 END IF;
121
122 DECLARE
123
124 -- check online table for this text in this language for this model
125
126 CURSOR c_onl_intl_text IS
127 SELECT ol.intl_text_id,ol.localized_str, ol.model_id, ol.orig_sys_ref,ol.language
128 FROM cz_localized_texts ol, cz_devl_projects od, cz_ps_nodes op,
129 cz_imp_ps_nodes ip, cz_imp_devl_project id
130 WHERE ol.orig_sys_ref = sImpOrigSysRef(i)
131 AND ip.fsk_intltext_1_1 = sImpOrigSysRef(i)
132 AND op.intl_text_id = ol.intl_text_id
133 AND ip.orig_sys_ref = op.orig_sys_ref
134 AND ol.model_id = od.devl_project_id
135 AND id.devl_project_id = od.devl_project_id
136 AND id.orig_sys_ref = sImpFSKDevlProject(i)
137 AND op.devl_project_id = ol.model_id
138 AND ip.fsk_devlproject_5_1 = od.orig_sys_ref
139 AND ol.deleted_flag = '0'
140 AND op.deleted_flag = '0'
141 AND od.deleted_flag = '0'
142 AND ip.run_id = inRUN_ID
143 AND id.run_id = inRUN_ID
144 AND id.rec_status='OK';
145
146 BEGIN
147 OPEN c_onl_intl_text;
148 FETCH c_onl_intl_text INTO nOnlIntlTextId,nOnlIntlText,nOnlModelId,nOnlOrigSysRef,nOnlLang;
149 x_onl_intl_text_f:=c_onl_intl_text%FOUND;
150
151
152 IF ( x_onl_intl_text_f ) THEN -- Logic Changed to compare records in Import and Online tables for Disposition setting
153 WHILE c_onl_intl_text%FOUND --Loop to check all records in the cursor
154 LOOP
155 BEGIN
156 DECLARE
157 CURSOR c_imp_local_str IS
158 SELECT localized_str
159 FROM CZ_IMP_LOCALIZED_TEXTS
160 WHERE Run_ID = inRUN_ID
161 AND fsk_devlproject_1_1=sImpFSKDevlProject(i)
162 AND orig_sys_ref=sImpOrigSysRef(i)
163 AND language = nOnlLang;
164 BEGIN
165 OPEN c_imp_local_str;
166 FETCH c_imp_local_str INTO nImpIntlText;
167 CLOSE c_imp_local_str;
168 EXCEPTION
169 WHEN OTHERS THEN
170 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.KRS_INTL_TEXT.LOCAL_STR',11276,inRun_Id);
171 RAISE;
172 END;
173
174 IF (nImpIntlText = nOnlIntlText) THEN
175 l_disposition:= 'N';
176 nNoChangeCount:=nNoChangeCount+1;
177
178 ELSE
179
180 l_disposition:= 'M';
181 nUpdateCount:=nUpdateCount+1;
182
183 END IF;
184
185 UPDATE cz_imp_localized_texts
186 SET disposition = l_disposition,
187 rec_status = 'PASS',
188 intl_text_id = nOnlIntlTextId,
189 model_id = nOnlModelId
190 WHERE orig_sys_ref = sImpOrigSysRef(i)
191 AND run_id = inRUN_ID
192 AND fsk_devlproject_1_1=sImpFSKDevlProject(i)
193 AND language=nOnlLang;
194
195
196 UPDATE CZ_IMP_PS_NODES
197 SET INTL_TEXT_ID =nOnlIntlTextId
198 WHERE fsk_intltext_1_1 = sImpOrigSysRef(i)
199 AND fsk_devlproject_5_1 = sImpFSKDevlProject(i)
200 AND RUN_ID = inRUN_ID;
201
202 EXCEPTION
203 WHEN NO_DATA_FOUND THEN
204 null;
205 END;
206
207 FETCH c_onl_intl_text INTO nOnlIntlTextId,nOnlIntlText,nOnlModelId,nOnlOrigSysRef,nOnlLang;
208 END LOOP;
209
210 CLOSE c_onl_intl_text;
211 ELSE /* insert */
212
213 BEGIN
214 SELECT devl_project_id INTO nModelId
215 FROM cz_imp_devl_project
216 WHERE orig_sys_ref = sImpFSKDevlProject(i)
217 AND run_id = inRUN_ID
218 AND rec_status = 'OK';
219
220 nAllocateCounter:=nAllocateCounter+1;
221 IF(nAllocateCounter=nAllocateBlock)THEN
222 nAllocateCounter:=0;
223 SELECT CZ_INTL_TEXTS_S.NEXTVAL INTO nNextValue FROM DUAL;
224 END IF;
225 nNextId := nNextValue + nAllocateCounter;
226
227 UPDATE cz_imp_localized_texts
228 SET intl_text_id = nNextId,
229 model_id = nModelId,
230 disposition = 'I',
231 rec_status = 'PASS'
232 WHERE orig_sys_ref = sImpOrigSysRef(i)
233 AND fsk_devlproject_1_1 = sImpFSKDevlProject(i)
234 AND run_id = inRUN_ID;
235
236 UPDATE CZ_IMP_PS_NODES
237 SET INTL_TEXT_ID =nNextId
238 WHERE fsk_intltext_1_1 = sImpOrigSysRef(i)
239 AND fsk_devlproject_5_1 = sImpFSKDevlProject(i)
240 AND RUN_ID = inRUN_ID;
241
242 nInsertCount:=nInsertCount+1;
243
244 EXCEPTION
245 WHEN NO_DATA_FOUND THEN
246 FAILED:=FAILED+1;
247 UPDATE cz_imp_localized_texts
248 SET disposition='R',
249 rec_status='FAIL'
250 WHERE orig_sys_ref = sImpOrigSysRef(i)
251 AND fsk_devlproject_1_1 = sImpFSKDevlProject(i)
252 AND run_id = inRUN_ID;
253 END;
254
255 END IF;
256
257 nCommitCount:=nCommitCount+1;
258 /* COMMIT if the buffer size is reached */
259 IF(nCommitCount>= COMMIT_SIZE) THEN
260 COMMIT;
261 nCommitCount:=0;
262 END IF;
263 END;
264
265 -- Bug8519380 FIx.
266
267 ---Checking first if the TL text property exists in CZ_IMP_ITEM_PROPERTY_VALUES table -- MASCO R12 Bug - 8226777
268 ---conditionalize the cursor only if the the relevent data available in imp_item_property table.
269 -- FSK_LOCALIZEDTEXT_3_1 will be NOT NULL for data type 8 (TL text property)
270
271 BEGIN
272 SELECT COUNT(*) INTO var_tl_prop FROM cz_imp_item_property_value
273 WHERE run_id = inRUN_ID
274 AND FSK_LOCALIZEDTEXT_3_1 IS NOT NULL
275 AND FSK_LOCALIZEDTEXT_3_1=sImpOrigSysRef(i) AND rownum<2;
276
277
278 IF var_tl_prop > 0 THEN
279
280 DECLARE
281
282 -- check online table for this text in this language for this model
283
284 CURSOR c_tl_onl_intl_text IS
285 SELECT ol.intl_text_id,ol.localized_str, ol.orig_sys_ref,ol.language
286 FROM cz_localized_texts ol
287 WHERE ol.orig_sys_ref = sImpOrigSysRef(i)
288 AND EXISTS(SELECT NULL FROM cz_imp_item_property_value
289 WHERE run_id = inRUN_ID
290 AND FSK_LOCALIZEDTEXT_3_1 IS NOT NULL
291 AND FSK_LOCALIZEDTEXT_3_1=ol.ORIG_SYS_REF)
292 AND ol.deleted_flag = '0';
293
294 BEGIN
295 OPEN c_tl_onl_intl_text;
296 FETCH c_tl_onl_intl_text INTO nOnlIntlTextId,nOnlIntlText,nOnlOrigSysRef,nOnlLangItem;
297 x_onl_intl_text_f:=c_tl_onl_intl_text%FOUND;
298 IF ( x_onl_intl_text_f ) THEN -- Need to check for disposition 'N' for Items
299 WHILE c_tl_onl_intl_text%FOUND
300 LOOP
301 BEGIN
302 DECLARE
303 CURSOR c_imp_local_str2 IS
304 SELECT localized_str
305 FROM CZ_IMP_LOCALIZED_TEXTS
306 WHERE Run_ID = inRUN_ID
307 AND orig_sys_ref=sImpOrigSysRef(i)
308 AND language = nOnlLangItem;
309 BEGIN
310 OPEN c_imp_local_str2;
311 FETCH c_imp_local_str2 INTO nImpLocStr;
312 CLOSE c_imp_local_str2;
313 EXCEPTION
314 WHEN OTHERS THEN
315 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.KRS_INTL_TEXT.LOCAL_STR2',11276,inRun_Id);
316 RAISE;
317 END;
318
319 IF (nOnlIntlTextId = nImpLocStr) THEN
320 l_disposition2:= 'N';
321 nNoChangeCount:=nNoChangeCount+1;
322 ELSE
323 l_disposition2:= 'M';
324 nUpdateCount:=nUpdateCount+1;
325 END IF;
326
327 UPDATE cz_imp_localized_texts
328 SET disposition = l_disposition2,
329 rec_status = 'PASS',
330 intl_text_id = nOnlIntlTextId,
331 model_id = 0
332 WHERE orig_sys_ref = sImpOrigSysRef(i)
333 AND run_id = inRUN_ID
334 AND language=nOnlLangItem;
335
336 EXCEPTION
337 WHEN NO_DATA_FOUND THEN
338 null;
339 END;
340
341 FETCH c_tl_onl_intl_text INTO nOnlIntlTextId,nOnlIntlText,nOnlOrigSysRef,nOnlLangItem;
342 END LOOP;
343 CLOSE c_tl_onl_intl_text;
344
345 ELSE /* insert */
346
347 BEGIN --#####
348
349 SELECT COUNT(*) INTO var_tl_prop FROM cz_imp_item_property_value
350 WHERE run_id = inRUN_ID
351 AND FSK_LOCALIZEDTEXT_3_1 IS NOT NULL
352 AND FSK_LOCALIZEDTEXT_3_1=sImpOrigSysRef(i)
353 AND rownum<2;
354
355 IF var_tl_prop > 0 THEN
356
357 nAllocateCounter:=nAllocateCounter+1;
358
359 IF(nAllocateCounter=nAllocateBlock)THEN
360 nAllocateCounter:=0;
361 SELECT CZ_INTL_TEXTS_S.NEXTVAL INTO nNextValue FROM DUAL;
362 END IF;
363 nNextId := nNextValue + nAllocateCounter;
364
365 UPDATE cz_imp_localized_texts
366 SET intl_text_id = nNextId,
370 WHERE orig_sys_ref = sImpOrigSysRef(i)
367 model_id = 0,
368 disposition = 'I',
369 rec_status = 'PASS'
371 AND run_id = inRUN_ID;
372
373 nInsertCount:=nInsertCount+1;
374 END IF;
375
376 EXCEPTION
377 WHEN NO_DATA_FOUND THEN
378 FAILED:=FAILED+1;
379 UPDATE cz_imp_localized_texts
380 SET disposition='R',
381 rec_status='FAIL'
382 WHERE orig_sys_ref = sImpOrigSysRef(i)
383 AND run_id = inRUN_ID;
384 END;
385
386 END IF;
387
388 nCommitCount:=nCommitCount+1;
389 /* COMMIT if the buffer size is reached */
390 IF(nCommitCount>= COMMIT_SIZE) THEN
391 COMMIT;
392 nCommitCount:=0;
393 END IF;
394 END;
395
396 END IF;
397 END;
398
399 END LOOP;
400 sImpOrigSysRef.DELETE;
401 sImpFSKDevlProject.DELETE;
402 sImpLanguage.DELETE;
403 sImpSourceLang.DELETE;
404
405 END LOOP;
406 CLOSE c_imp_intl_text;
407
408 INSERTS:=nInsertCount;
409 UPDATES:=nUpdateCount;
410 DUPS:=nDups;
411 NOCHANGE:=nNoChangeCount;
412
413 EXCEPTION
414 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
415 RAISE;
416 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
417 RAISE;
418 WHEN OTHERS THEN
419 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.KRS_INTL_TEXT',11276,inRun_Id);
420 RAISE;
421 END KRS_INTL_TEXT;
422 ------------------------------------------------------------------------------
423 PROCEDURE CND_INTL_TEXT(inRUN_ID IN PLS_INTEGER,
424 COMMIT_SIZE IN PLS_INTEGER,
425 MAX_ERR IN PLS_INTEGER,
426 FAILED IN OUT NOCOPY PLS_INTEGER
427 ) IS
428 -- passing records of this phase
429 CURSOR l_csr_1 IS
430 SELECT DISTINCT orig_sys_ref FROM cz_imp_localized_texts
431 WHERE rec_status IS NULL AND run_id = inRUN_ID AND orig_sys_ref IS NOT NULL
432 AND fsk_devlproject_1_1 IS NOT NULL AND language IS NOT NULL AND source_lang IS NOT NULL;
433
434 -- failing records of this phase
435 CURSOR l_csr_2 IS
436 SELECT DISTINCT orig_sys_ref FROM cz_imp_localized_texts
437 WHERE rec_status IS NULL AND run_id = inRUN_ID
438 AND (orig_sys_ref IS NULL OR language IS NULL OR source_lang IS NULL);
439 -- APC changes AND (orig_sys_ref IS NULL OR fsk_devlproject_1_1 IS NULL OR language IS NULL OR source_lang IS NULL);
440
441
442 TYPE orig_sys_ref_tbl_type IS TABLE OF cz_imp_localized_texts.orig_sys_ref%TYPE INDEX BY BINARY_INTEGER;
443
444 l_orig_sys_ref_tbl orig_sys_ref_tbl_type;
445 x_error BOOLEAN:=FALSE;
446 l_msg VARCHAR2(2000);
447
448 BEGIN
449 OPEN l_csr_1;
450 LOOP
451 l_orig_sys_ref_tbl.DELETE;
452 FETCH l_csr_1 BULK COLLECT INTO l_orig_sys_ref_tbl
453 LIMIT COMMIT_SIZE;
454 EXIT WHEN l_csr_1%NOTFOUND AND l_orig_sys_ref_tbl.COUNT = 0;
455 IF l_orig_sys_ref_tbl.COUNT > 0 THEN
456 FORALL i IN l_orig_sys_ref_tbl.FIRST..l_orig_sys_ref_tbl.LAST
457 UPDATE cz_imp_localized_texts
458 SET deleted_flag = '0'
459 WHERE orig_sys_ref = l_orig_sys_ref_tbl(i)
460 AND run_id = inRUN_ID
461 AND deleted_flag IS NULL;
462 COMMIT;
463 END IF;
464 END LOOP;
465 CLOSE l_csr_1;
466
467 OPEN l_csr_2;
468 LOOP
469 l_msg := CZ_UTILS.GET_TEXT('CZ_IMP_INTLTXT_REQ_COLS');
470 l_orig_sys_ref_tbl.DELETE;
471 FETCH l_csr_2 BULK COLLECT INTO l_orig_sys_ref_tbl
472 LIMIT COMMIT_SIZE;
473 EXIT WHEN l_csr_2%NOTFOUND AND l_orig_sys_ref_tbl.COUNT = 0;
474 IF l_orig_sys_ref_tbl.COUNT > 0 THEN
475 FORALL i IN l_orig_sys_ref_tbl.FIRST..l_orig_sys_ref_tbl.LAST
476 UPDATE cz_imp_localized_texts
477 SET disposition = 'R',
478 rec_status = 'FAIL',
479 message = l_msg
480 WHERE orig_sys_ref = l_orig_sys_ref_tbl(i) AND run_id = inRUN_ID;
481 COMMIT;
482 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_INTLTXT_FAIL',
483 'COUNT' , SQL%ROWCOUNT);
484 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_INTL_TEXT',11276,inRun_Id);
485 FAILED := FAILED + SQL%ROWCOUNT;
486
487 /* Return if MAX_ERR is reached */
488 IF(FAILED >= MAX_ERR) THEN
489 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,
490 'CZ_IMP_PS_NODE.CND_INTL_TEXT',11276,inRun_Id);
491 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
492 END IF;
493 END IF;
494 END LOOP;
495 CLOSE l_csr_2;
496
497 EXCEPTION
498 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
499 IF l_csr_1%ISOPEN THEN CLOSE l_csr_1; END IF;
500 IF l_csr_2%ISOPEN THEN CLOSE l_csr_2; END IF;
501 RAISE;
502 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
503 IF l_csr_1%ISOPEN THEN CLOSE l_csr_1; END IF;
504 IF l_csr_2%ISOPEN THEN CLOSE l_csr_2; END IF;
505 RAISE;
506 WHEN OTHERS THEN
507 IF l_csr_1%ISOPEN THEN CLOSE l_csr_1; END IF;
508 IF l_csr_2%ISOPEN THEN CLOSE l_csr_2; END IF;
512 ------------------------------------------------------------------------------
509 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.CND_INTL_TEXT',11276,inRun_Id);
510 RAISE;
511 END CND_INTL_TEXT;
513 PROCEDURE MAIN_INTL_TEXT(inRUN_ID IN PLS_INTEGER,
514 COMMIT_SIZE IN PLS_INTEGER,
515 MAX_ERR IN PLS_INTEGER,
516 INSERTS IN OUT NOCOPY PLS_INTEGER,
517 UPDATES IN OUT NOCOPY PLS_INTEGER,
518 FAILED IN OUT NOCOPY PLS_INTEGER,
519 DUPS IN OUT NOCOPY PLS_INTEGER,
520 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
521 inXFR_GROUP IN VARCHAR2
522 ) IS
523 /* Internal vars */
524 nCommitCount PLS_INTEGER:=0; /* COMMIT buffer index */
525 nErrorCount PLS_INTEGER:=0; /* Error index */
526 nXfrInsertCount PLS_INTEGER:=0; /* Inserts */
527 nXfrUpdateCount PLS_INTEGER:=0; /* Updates */
528 nFailed PLS_INTEGER:=0; /* Failed records */
529 nDups PLS_INTEGER:=0; /* Dupl records */
530 nNoChangeCount PLS_INTEGER:=0; /* No Change records */
531 x_error BOOLEAN:=FALSE;
532 dummy CHAR(1);
533
534 st_time number;
535 end_time number;
536 loop_end_time number;
537 insert_end_time number;
538 d_str varchar2(255);
539
540 BEGIN
541
542 BEGIN
543 SELECT 'X' INTO dummy FROM CZ_XFR_RUN_INFOS WHERE RUN_ID=inRUN_ID;
544
545 UPDATE CZ_XFR_RUN_INFOS SET
546 STARTED=SYSDATE,
547 LAST_ACTIVITY=SYSDATE
548 WHERE RUN_ID=inRUN_ID;
549
550 EXCEPTION
551 WHEN NO_DATA_FOUND THEN
552 INSERT INTO CZ_XFR_RUN_INFOS (RUN_ID,STARTED,LAST_ACTIVITY)
553 VALUES(inRUN_ID,SYSDATE,SYSDATE);
554 WHEN OTHERS THEN
555 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.MAIN_INTL_TEXT:RUNID',11276,inRun_Id);
556 RAISE CZ_ADMIN.IMP_UNEXP_SQL_ERROR;
557 END;
558
559 if (CZ_IMP_ALL.get_time) then
560 st_time := dbms_utility.get_time();
561 end if;
562
563 CND_INTL_TEXT(inRun_ID,COMMIT_SIZE,MAX_ERR,FAILED);
564
565 if (CZ_IMP_ALL.get_time) then
566 end_time := dbms_utility.get_time();
567 d_str := inRun_id || ' CND intl text :' || (end_time-st_time)/100.00;
568 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'CND',11299,inRun_Id);
569 end if;
570 KRS_INTL_TEXT(inRUN_ID,COMMIT_SIZE,MAX_ERR,INSERTS,UPDATES,FAILED,DUPS,NOCHANGE,inXFR_GROUP);
571
572 if (CZ_IMP_ALL.get_time) then
573 end_time := dbms_utility.get_time();
574 d_str := inRun_id || ' KRS intl text :' || (end_time-st_time)/100.00;
575 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'KRS',11299,inRun_Id);
576 end if;
577
578 /* Make sure that the error count has not been reached */
579 XFR_INTL_TEXT(inRUN_ID,COMMIT_SIZE,MAX_ERR,nXfrInsertCount,nXfrUpdateCount,FAILED,nNoChangeCount,inXFR_GROUP);
580
581 if (CZ_IMP_ALL.get_time) then
582 end_time := dbms_utility.get_time();
583 d_str := inRun_id || ' XFR intl text :' || (end_time-st_time)/100.00;
584 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'XFR',11299,inRun_Id);
585 end if;
586
587 /* Report Insert Errors */
588 IF(nXfrInsertCount<> INSERTS) THEN
589 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_INSERTERRORS','RESOLVED',to_char(INSERTS),'ACTUAL',to_char(nXfrInsertCount)),1,'CZ_IMP_PS_NODE.MAIN_INTL_TEXT:INSERTS ',11276,inRun_Id);
590 END IF;
591 /* Report Update Errors */
592 IF(nXfrUpdateCount<> UPDATES) THEN
593 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_UPDATEERRORS','RESOLVED',to_char(UPDATES),'ACTUAL',to_char(nXfrUpdateCount)),1,'CZ_IMP_PS_NODE.MAIN_INTL_TEXT:UPDATES ',11276,inRun_Id);
594 END IF;
595 /* Report NoChange Errors */
596 IF(nNoChangeCount<> NOCHANGE) THEN
597 x_error:=CZ_UTILS.LOG_REPORT('No Change count: Key resolution - ' || to_char(NOCHANGE) || ', Actual-' || to_char(nNoChangeCount),1,'CZ_IMP_PS_NODE.MAIN_INTL_TEXT:NOCHANGE ',11276,inRun_Id);
598 END IF;
599
600 /* Return the transferred number of rows and not the number of rows with keys resolved */
601 INSERTS:=nXfrInsertCount;
602 UPDATES:=nXfrUpdateCount;
603
604 CZ_IMP_PS_NODE.RPT_INTL_TEXT(inRUN_ID);
605
606 END MAIN_INTL_TEXT;
607 ------------------------------------------------------------------------------
608
609 PROCEDURE XFR_INTL_TEXT(inRUN_ID IN PLS_INTEGER,
610 COMMIT_SIZE IN PLS_INTEGER,
611 MAX_ERR IN PLS_INTEGER,
612 INSERTS IN OUT NOCOPY PLS_INTEGER,
613 UPDATES IN OUT NOCOPY PLS_INTEGER,
614 FAILED IN OUT NOCOPY PLS_INTEGER,
615 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
616 inXFR_GROUP IN VARCHAR2
617 ) IS
618 CURSOR c_xfr_intl_text IS
619 SELECT intl_text_id, localized_str, language, source_lang, deleted_flag,creation_date
620 last_update_date, created_by, last_updated_by,orig_sys_ref, model_id, disposition,
621 rec_status, ROWID
622 FROM CZ_IMP_LOCALIZED_TEXTS
623 WHERE Run_ID=inRUN_ID AND rec_status = 'PASS';
624
625 x_xfr_intl_text_f BOOLEAN:=FALSE;
626 x_error BOOLEAN:=FALSE;
627 p_xfr_intl_text c_xfr_intl_text%ROWTYPE;
628
629 sIntlTextId CZ_IMP_LOCALIZED_TEXTS.INTL_TEXT_ID%TYPE;
630
631 -- Internal vars --
632 nCommitCount PLS_INTEGER:=0; -- COMMIT buffer index --
636 nNoChangeCount PLS_INTEGER:=0; --NoChange Records
633 nInsertCount PLS_INTEGER:=0; -- Inserts --
634 nUpdateCount PLS_INTEGER:=0; -- Updates --
635 nFailed PLS_INTEGER:=0; -- Failed records --
637
638 l_row_id ROWID;
639
640 NOUPDATE_ORIG_SYS_REF NUMBER;
641 NOUPDATE_LOCALIZED_STR NUMBER;
642 NOUPDATE_LANGUAGE NUMBER;
643 NOUPDATE_SOURCE_LANG NUMBER;
644 NOUPDATE_CREATION_DATE NUMBER;
645 NOUPDATE_LAST_UPDATE_DATE NUMBER;
646 NOUPDATE_CREATED_BY NUMBER;
647 NOUPDATE_LAST_UPDATED_BY NUMBER;
648 NOUPDATE_DELETED_FLAG NUMBER;
649
650 -- Make sure that the DataSet exists
651 BEGIN
652 -- Get the Update Flags for each column
653 NOUPDATE_ORIG_SYS_REF := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','ORIG_SYS_REF',inXFR_GROUP);
654 NOUPDATE_LOCALIZED_STR := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','LOCALIZED_STR',inXFR_GROUP);
655 NOUPDATE_LANGUAGE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','LANGUAGE',inXFR_GROUP);
656 NOUPDATE_SOURCE_LANG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','SOURCE_LANG',inXFR_GROUP);
657 NOUPDATE_CREATION_DATE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','CREATION_DATE',inXFR_GROUP);
658 NOUPDATE_LAST_UPDATE_DATE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','LAST_UPDATE_DATE',inXFR_GROUP);
659 NOUPDATE_CREATED_BY := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','CREATED_BY',inXFR_GROUP);
660 NOUPDATE_LAST_UPDATED_BY := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','LAST_UPDATED_BY',inXFR_GROUP);
661 NOUPDATE_DELETED_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_LOCALIZED_TEXTS','DELETED_FLAG',inXFR_GROUP);
662
663 OPEN c_xfr_intl_text;
664 LOOP
665 IF(nCommitCount>= COMMIT_SIZE) THEN
666 BEGIN
667 COMMIT;
668 nCommitCount:=0;
669 END;
670 ELSE
671 nCOmmitCount:=nCommitCount+1;
672 END IF;
673
674 FETCH c_xfr_intl_text INTO p_xfr_intl_text;
675 x_xfr_intl_text_f:=c_xfr_intl_text%FOUND;
676 EXIT WHEN NOT x_xfr_intl_text_f;
677
678 IF(FAILED >= MAX_ERR) THEN
679 ROLLBACK;
680 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.XFR_INTL_TEXT:MAX',11276,inRun_Id);
681 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
682 END IF;
683
684 IF(p_xfr_intl_text.disposition = 'I') THEN
685 BEGIN
686
687 INSERT INTO cz_localized_texts (intl_text_id, localized_str, language, source_lang, deleted_flag,
688 creation_date, last_update_date, created_by, last_updated_by,orig_sys_ref, model_id)
689 VALUES
690 (p_xfr_intl_text.intl_text_id,
691 p_xfr_intl_text.localized_str,
692 p_xfr_intl_text.language,
693 p_xfr_intl_text.source_lang,
694 p_xfr_intl_text.deleted_flag,
695 sysdate, sysdate, -UID, -UID,p_xfr_intl_text.orig_sys_ref, p_xfr_intl_text.model_id);
696
697 nInsertCount:=nInsertCount+1;
698
699 UPDATE cz_imp_localized_texts
700 SET intl_text_id=p_xfr_intl_text.intl_text_id,
701 REC_STATUS='OK'
702 WHERE ROWID = p_xfr_intl_text.ROWID;
703
704 EXCEPTION
705 WHEN DUP_VAL_ON_INDEX THEN
706 UPDATE cz_imp_localized_texts
707 SET DISPOSITION='R',
708 REC_STATUS='DUPL'
709 WHERE ROWID = p_xfr_intl_text.ROWID;
710 WHEN OTHERS THEN
711 FAILED:=FAILED +1;
712 UPDATE cz_imp_localized_texts
713 SET REC_STATUS='ERR'
714 WHERE ROWID = p_xfr_intl_text.ROWID;
715 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.XFR_INTL_TEXT:INSERT',11276,inRun_Id);
716 END;
717 ELSIF(p_xfr_intl_text.disposition = 'M') THEN
718 BEGIN
719 UPDATE cz_localized_texts SET
720 localized_str=DECODE(NOUPDATE_LOCALIZED_STR,0,p_xfr_intl_text.localized_str,localized_str),
721 deleted_flag=DECODE(NOUPDATE_DELETED_FLAG,0,p_xfr_intl_text.deleted_flag,deleted_flag),
722 source_lang=DECODE(NOUPDATE_SOURCE_LANG,0,p_xfr_intl_text.source_lang,source_lang),
723 LAST_UPDATE_DATE=DECODE(NOUPDATE_LAST_UPDATE_DATE,0,sysdate,LAST_UPDATE_DATE),
724 LAST_UPDATED_BY=DECODE(NOUPDATE_LAST_UPDATED_BY,0,-UID,LAST_UPDATED_BY)
725 WHERE intl_text_id=p_xfr_intl_text.intl_text_id
726 AND model_id = p_xfr_intl_text.model_id
727 AND language = p_xfr_intl_text.language;
728
729 IF(SQL%NOTFOUND) THEN
730 FAILED:=FAILED+1;
731 ELSE
732 nUpdateCount:=nUpdateCount+1;
733 UPDATE cz_imp_localized_texts
734 SET REC_STATUS='OK'
735 WHERE ROWID = p_xfr_intl_text.ROWID;
736 END IF;
737
738 EXCEPTION
739 WHEN OTHERS THEN
740 FAILED:=FAILED +1;
741 UPDATE cz_imp_localized_texts
742 SET REC_STATUS='ERR'
743 WHERE ROWID = p_xfr_intl_text.ROWID;
744 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.XFR_INTL_TEXT:UPDATE',11276,inRun_Id);
745 END;
746
747 ELSIF(p_xfr_intl_text.disposition = 'N') THEN -- Setting record status to ok
748 UPDATE cz_imp_localized_texts
749 SET REC_STATUS='OK'
750 WHERE ROWID = p_xfr_intl_text.ROWID;
751 nNoChangeCount:=nNoChangeCount+1;
752
756 CLOSE c_xfr_intl_text;
753 END IF;
754 END LOOP;
755
757 COMMIT;
758 INSERTS:=nInsertCount;
759 UPDATES:=nUpdateCount;
760 EXCEPTION
761 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
762 RAISE;
763 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
764 RAISE;
765 WHEN OTHERS THEN
766 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.XFR_INTL_TEXT',11276,inRun_Id);
767 RAISE;
768 END XFR_INTL_TEXT;
769
770 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
771 PROCEDURE RPT_INTL_TEXT ( inRUN_ID IN PLS_INTEGER ) AS
772 x_error BOOLEAN:=FALSE;
773
774 v_table_name VARCHAR2(30) := 'CZ_LOCALIZED_TEXTS';
775 v_ok VARCHAR2(4) := 'OK';
776 v_completed VARCHAR2(1) := '1';
777
778 CURSOR c_xfr_run_result IS
779 SELECT DISPOSITION,REC_STATUS,COUNT(*)
780 FROM cz_imp_localized_texts
781 WHERE RUN_ID = inRUN_ID
782 GROUP BY DISPOSITION,REC_STATUS;
783
784 ins_disposition CZ_XFR_RUN_RESULTS.disposition%TYPE;
785 ins_rec_status CZ_XFR_RUN_RESULTS.rec_status%TYPE ;
786 ins_rec_count CZ_XFR_RUN_RESULTS.records%TYPE ;
787
788 BEGIN
789
790 BEGIN
791 DELETE FROM CZ_XFR_RUN_RESULTS WHERE RUN_ID=inRUN_ID AND IMP_TABLE=v_table_name;
792 EXCEPTION
793 WHEN NO_DATA_FOUND THEN NULL;
794 END;
795
796 OPEN c_xfr_run_result;
797 LOOP
798 FETCH c_xfr_run_result INTO ins_disposition,ins_rec_status,ins_rec_count;
799 EXIT WHEN c_xfr_run_result%NOTFOUND;
800 INSERT INTO CZ_XFR_RUN_RESULTS (RUN_ID,IMP_TABLE,DISPOSITION,REC_STATUS,RECORDS)
801 VALUES(inRUN_ID,v_table_name,ins_disposition,ins_rec_status,ins_rec_count);
802 END LOOP;
803 CLOSE c_xfr_run_result;
804 COMMIT;
805
806 DECLARE
807 nErrors PLS_INTEGER;
808 CURSOR c_get_nErrors IS
809 SELECT SUM(NVL(RECORDS,0)) FROM CZ_XFR_RUN_RESULTS
810 WHERE REC_STATUS<>v_ok AND RUN_ID=inRUN_ID
811 AND IMP_TABLE=v_table_name;
812 BEGIN
813 OPEN c_get_nErrors;
814 FETCH c_get_nErrors INTO nErrors;
815 CLOSE c_get_nErrors;
816 UPDATE CZ_XFR_RUN_INFOS
817 SET TOTAL_ERRORS=NVL(TOTAL_ERRORS,0)+NVL(nErrors,0),
818 COMPLETED=v_completed
819 WHERE RUN_ID=inRUN_ID;
820 COMMIT;
821 EXCEPTION
822 WHEN OTHERS THEN
823 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.RPT_INTL_TEXT',11276,inRun_Id);
824 END;
825 EXCEPTION
826 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
827 RAISE;
828 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
829 RAISE;
830 WHEN OTHERS THEN
831 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.RPT_INTL_TEXT',11276,inRun_Id);
832 RAISE;
833 END;
834 /*--INTL_TEXT IMPORT SECTION END--------------------------------------------*/
835
836 /*--DEVL_PROJECT IMPORT SECTION START---------------------------------------*/
837 ------------------------------------------------------------------------------
838 PROCEDURE KRS_DEVL_PROJECT(inRUN_ID IN PLS_INTEGER,
839 COMMIT_SIZE IN PLS_INTEGER,
840 MAX_ERR IN PLS_INTEGER,
841 INSERTS IN OUT NOCOPY PLS_INTEGER,
842 UPDATES IN OUT NOCOPY PLS_INTEGER,
843 FAILED IN OUT NOCOPY PLS_INTEGER,
844 DUPS IN OUT NOCOPY PLS_INTEGER,
845 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
846 inXFR_GROUP IN VARCHAR2,
847 inCONFIG_ENGINE_TYPE IN VARCHAR2
848 ) IS
849 CURSOR c_imp_devl_project IS
850 SELECT plan_level,orig_sys_ref,name,fsk_intltext_1_1,organization_id,top_item_id,explosion_type,model_id,model_type,
851 devl_project_id,intl_text_id,product_key,config_engine_type,desc_text,ROWID
852 FROM CZ_IMP_DEVL_PROJECT
853 WHERE rec_status IS NULL
854 AND Run_ID = inRUN_ID
855 ORDER BY model_id,plan_level,ORIG_SYS_REF,NAME,ROWID;
856
857 /* cursor's data found indicator */
858 x_imp_devl_project_f BOOLEAN:=FALSE;
859 x_onl_devl_project_f BOOLEAN:=FALSE;
860 x_onl_intl_text_f BOOLEAN:=FALSE;
861 x_onl_root_f BOOLEAN:=FALSE;
862 x_onl_child_f BOOLEAN:=FALSE;
863 x_error BOOLEAN:=FALSE;
864
865 sOrigSysRef CZ_IMP_DEVL_PROJECT.ORIG_SYS_REF%TYPE;
866 sName CZ_IMP_DEVL_PROJECT.NAME%TYPE;
867 onlName CZ_IMP_DEVL_PROJECT.NAME%TYPE;
868 sFskIntlText11 CZ_IMP_DEVL_PROJECT.FSK_INTLTEXT_1_1%TYPE;
869 nPlanLevel CZ_IMP_DEVL_PROJECT.PLAN_LEVEL%TYPE;
870 sImpDevlProjId CZ_IMP_DEVL_PROJECT.DEVL_PROJECT_ID%TYPE;
871 sImpIntlTextId CZ_IMP_DEVL_PROJECT.INTL_TEXT_ID%TYPE;
872 nImpIntlTextId CZ_IMP_DEVL_PROJECT.INTL_TEXT_ID%TYPE;
873 sImpDescText CZ_IMP_DEVL_PROJECT.NAME%TYPE;
874 sOnlDescText CZ_IMP_DEVL_PROJECT.NAME%TYPE;
875 nImpModelType CZ_IMP_DEVL_PROJECT.MODEL_TYPE%TYPE;
876 nOnlDevlProjectId CZ_IMP_DEVL_PROJECT.DEVL_PROJECT_ID%TYPE;
877 nImpName CZ_IMP_DEVL_PROJECT.NAME%TYPE;
878 REFRESH_MODEL_ID CZ_IMP_DEVL_PROJECT.DEVL_PROJECT_ID%TYPE;
882 sRecStatus CZ_IMP_DEVL_PROJECT.REC_STATUS%TYPE;
879 nPersistentProjectId CZ_IMP_DEVL_PROJECT.PERSISTENT_PROJECT_ID%TYPE;
880 nOnlIntlTextId CZ_IMP_DEVL_PROJECT.INTL_TEXT_ID%TYPE;
881 sConfigEngType CZ_IMP_DEVL_PROJECT.CONFIG_ENGINE_TYPE%TYPE;
883 sDisposition CZ_IMP_DEVL_PROJECT.DISPOSITION%TYPE;
884 cDeletedFlag CZ_DEVL_PROJECTS.DELETED_FLAG%TYPE;
885 nImpProdKey CZ_DEVL_PROJECTS.PRODUCT_KEY%TYPE;
886 sImpProdKey CZ_DEVL_PROJECTS.PRODUCT_KEY%TYPE;
887 nOrgId CZ_IMP_DEVL_PROJECT.ORGANIZATION_ID%TYPE;
888 nTopId CZ_IMP_DEVL_PROJECT.TOP_ITEM_ID%TYPE;
889 sExplType CZ_IMP_DEVL_PROJECT.EXPLOSION_TYPE%TYPE;
890 nModelId CZ_DEVL_PROJECTS.DEVL_PROJECT_ID%TYPE;
891 sModelId CZ_DEVL_PROJECTS.DEVL_PROJECT_ID%TYPE;
892 nExplId NUMBER;
893 COPY_CHILD_MODELS CZ_XFR_PROJECT_BILLS.COPY_ADDL_CHILD_MODELS%TYPE;
894 nModelType CZ_IMP_DEVL_PROJECT.MODEL_TYPE%TYPE;
895 sModelType CZ_IMP_DEVL_PROJECT.MODEL_TYPE%TYPE;
896
897 /* Internal vars */
898 nCommitCount PLS_INTEGER:=0; /*COMMIT buffer index */
899 nErrorCount PLS_INTEGER:=0; /*Error index */
900 nInsertCount PLS_INTEGER:=0; /*Inserts */
901 nUpdateCount PLS_INTEGER:=0; /*Updates */
902 nFailed PLS_INTEGER:=0; /*Failed records */
903 nNoChangeCount PLS_INTEGER:=0; /*No Change Records*/
904 nDups PLS_INTEGER:=0; /*Dupl records */
905 nAllocateBlock PLS_INTEGER:=1;
906 nAllocateCounter PLS_INTEGER;
907 dispositionflag PLS_INTEGER:=0;/*DISPOSITION FLAG */
908 nNextValue NUMBER;
909 nDummy NUMBER;
910 nInstances NUMBER;
911
912 TYPE tLastFSK1 IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
913 TYPE tLastModel IS TABLE OF NUMBER INDEX BY BINARY_INTEGER;
914 sLastFSK1 tLastFSK1;
915 sLastModel tLastModel;
916
917 thisRowId ROWID;
918 l_err_msg VARCHAR2(255);
919
920 v_settings_id VARCHAR2(40);
921 v_section_name VARCHAR2(30);
922
923 --LA 9595142 Create dynamic cursor
924 TYPE modelCurType IS REF CURSOR;
925 c_onl_devl_project modelCurType;
926 nCurStmt VARCHAR2(400);
927 disableMultipleCopyImport PLS_INTEGER;
928
929 --LA 12548898
930 v_engine_cnt NUMBER;
931 xERROR BOOLEAN :=FALSE;
932 BEGIN
933
934 v_settings_id := 'OracleSequenceIncr';
935 v_section_name := 'SCHEMA';
936
937 BEGIN
938 SELECT VALUE INTO nAllocateBlock FROM CZ_DB_SETTINGS
939 WHERE SETTING_ID=v_settings_id AND SECTION_NAME=v_section_name;
940 EXCEPTION
941 WHEN OTHERS THEN
942 nAllocateBlock:=1;
943 END;
944 nAllocateCounter:=nAllocateBlock-1;
945
946 --LA 9595142 : Read settings that disables refresh of multiple copies of the model
947 v_settings_id := 'DISABLEMULTIPLECOPYIMPORT';
948 v_section_name := 'IMPORT';
949
950 BEGIN
951 SELECT decode(upper(VALUE),'TRUE',1,'FALSE',0,'T',1,'F',0,'1',1,'0',0,'YES',1,'NO',0,'Y',1,'N',0,0)
952 INTO disableMultipleCopyImport FROM CZ_DB_SETTINGS
953 WHERE upper(SETTING_ID)=v_settings_id AND SECTION_NAME=v_section_name;
954 EXCEPTION
955 WHEN OTHERS THEN
956 disableMultipleCopyImport := 0;
957 END;
958
959 OPEN c_imp_devl_project;
960
961 LOOP
962 /* COMMIT if the buffer size is reached */
963 IF(nCommitCount>= COMMIT_SIZE) THEN
964 BEGIN
965 COMMIT;
966 nCommitCount:=0;
967 END;
968 ELSE
969 nCommitCount:=nCommitCount+1;
970 END IF;
971
972 sOrigSysRef:=NULL; sFskIntlText11:=NULL;
973 FETCH c_imp_devl_project INTO nPlanLevel,sOrigSysRef,sName,sFskIntlText11,
974 nOrgId,nTopId,sExplType,REFRESH_MODEL_ID,nModelType,sImpDevlProjId,sImpIntlTextId,sImpProdKey,sConfigEngType,sImpDescText,thisRowId;
975
976
977
978 sLastFSK1(sLastFSK1.COUNT + 1) := sOrigSysRef;
979 sLastModel(sLastModel.COUNT + 1) := REFRESH_MODEL_ID;
980
981 x_imp_devl_project_f:=c_imp_devl_project%FOUND;
982 EXIT WHEN NOT x_imp_devl_project_f;
983
984 /*Get the COPY_CHILD_MODELS value*/
985
986 BEGIN
987
988 SELECT NVL(copy_addl_child_models,'0') INTO COPY_CHILD_MODELS
989 FROM cz_xfr_project_bills
990 WHERE model_ps_node_id = REFRESH_MODEL_ID;
991
992 EXCEPTION
993 WHEN OTHERS THEN
994 COPY_CHILD_MODELS := '0';
995 END;
996
997 /* Check the online database */
998 --DECLARE
999 --CURSOR c_onl_devl_project IS
1000 -- SELECT devl_project_id FROM cz_devl_projects
1001 -- WHERE ORIG_SYS_REF=sOrigSysRef
1002 -- AND DEVL_PROJECT_ID=PERSISTENT_PROJECT_ID
1003 -- AND DELETED_FLAG='0';
1004
1005 BEGIN
1006
1007 nOnlDevlProjectId := NULL;
1008
1009 --LA 9595142 Made the cursor dynamic to use import enabled flag when required
1010 IF (disableMultipleCopyImport = 1) THEN
1011 nCurStmt := 'SELECT devl_project_id, persistent_project_id,intl_text_id,name,model_type,product_key,desc_text FROM cz_devl_projects ' --VR Added extra columns to check for update status
1015 || ' AND NVL(config_engine_type,''L'') = :2' ; --LA 12548898 Engine Sync
1012 || ' WHERE ORIG_SYS_REF= :1 '
1013 || ' AND DELETED_FLAG= ''0'' '
1014 || ' AND IMPORT_ENABLED = ''1'' '
1016
1017 OPEN c_onl_devl_project FOR nCurStmt USING sOrigSysRef, inCONFIG_ENGINE_TYPE;
1018
1019 FETCH c_onl_devl_project INTO nOnlDevlProjectId, nPersistentProjectId,nImpIntlTextId,nImpName,nImpModelType,nImpProdKey,sOnlDescText;
1020 ELSE
1021
1022 -- LA 12548898 If given BOM with both engine type exists then stop import
1023 -- process and force to enable DISABLEMULTIPLECOPYIMPORT settings
1024 SELECT COUNT(DISTINCT(config_engine_type)) INTO v_engine_cnt
1025 FROM cz_devl_projects WHERE ORIG_SYS_REF=sOrigSysRef
1026 AND deleted_flag = '0' ;
1027
1028 IF v_engine_cnt > 1 THEN
1029 l_err_msg := 'For ORIG_SYS_REF = ' || sOrigSysRef
1030 || ', multiple copies of the model with different engine type exists in the repository.'
1031 || ' Please set DisableMultipleCopyImport setting to Yes/True and enable appropriate model/s for the Import.';
1032
1033 xERROR:=cz_utils.log_report(l_err_msg,1,'CZ_IMP_PS_NODE.KRS_DEVL_PROJECT',11276,inRUN_ID);
1034
1035 RAISE IMP_CHILD_MULTI_COPIES ;
1036 END IF;
1037
1038 nCurStmt := 'SELECT devl_project_id,intl_text_id,name,model_type,product_key,desc_text FROM cz_devl_projects '
1039 || ' WHERE ORIG_SYS_REF= :1 '
1040 || ' AND DELETED_FLAG= ''0'' '
1041 || ' AND DEVL_PROJECT_ID=PERSISTENT_PROJECT_ID '
1042 || ' AND NVL(config_engine_type,''L'') = :2' ; --LA 12548898 Engine Sync
1043
1044 OPEN c_onl_devl_project FOR nCurStmt USING sOrigSysRef, inCONFIG_ENGINE_TYPE;
1045 FETCH c_onl_devl_project INTO nOnlDevlProjectId,nImpIntlTextId,nImpName,nImpModelType,nImpProdKey,sOnlDescText;
1046 nPersistentProjectId := nOnlDevlProjectId;
1047 END IF;
1048
1049 --OPEN c_onl_devl_project;
1050 x_onl_devl_project_f:=c_onl_devl_project%FOUND;
1051 CLOSE c_onl_devl_project;
1052
1053 IF(REFRESH_MODEL_ID IS NULL OR REFRESH_MODEL_ID < 0)THEN
1054 IF(nPlanLevel = 0 OR COPY_CHILD_MODELS = '1')THEN
1055 x_onl_devl_project_f := FALSE;
1056 END IF;
1057 ELSE
1058 DECLARE
1059 CURSOR c_onl_model_root IS
1060 SELECT NULL FROM cz_devl_projects
1061 WHERE devl_project_id = REFRESH_MODEL_ID
1062 AND deleted_flag = '0';
1063 CURSOR c_onl_model_id IS
1064 SELECT d.devl_project_id, e.model_ref_expl_id FROM cz_devl_projects d, cz_model_ref_expls e
1065 WHERE d.deleted_flag = '0'
1066 AND e.deleted_flag = '0'
1067 AND d.orig_sys_ref = sOrigSysRef
1068 AND e.model_id = REFRESH_MODEL_ID
1069 AND d.devl_project_id = e.component_id;
1070 BEGIN
1071 IF(nPlanLevel = 0)THEN
1072 x_onl_root_f := FALSE;
1073 OPEN c_onl_model_root;
1074 FETCH c_onl_model_root INTO nModelId;
1075 x_onl_root_f := c_onl_model_root%FOUND;
1076 CLOSE c_onl_model_root;
1077 x_onl_devl_project_f := x_onl_root_f;
1078 nOnlDevlProjectId := REFRESH_MODEL_ID;
1079 ELSE
1080 IF(NOT x_onl_root_f)THEN
1081 x_onl_devl_project_f := FALSE;
1082 ELSE
1083 IF(COPY_CHILD_MODELS = '1')THEN
1084 x_onl_devl_project_f := FALSE;
1085 ELSE
1086 nModelId := NULL; nExplId := NULL;
1087 OPEN c_onl_model_id;
1088 FETCH c_onl_model_id INTO nModelId, nExplId;
1089 x_onl_child_f := c_onl_model_id%FOUND;
1090 CLOSE c_onl_model_id;
1091
1092 IF(x_onl_child_f)THEN
1093 nOnlDevlProjectId := nModelId;
1094 x_onl_devl_project_f := TRUE;
1095 END IF;
1096 END IF;
1097 END IF;
1098 END IF;
1099 END;
1100 END IF;
1101 END;
1102
1103 IF(NOT x_onl_devl_project_f)THEN
1104 DECLARE
1105 CURSOR c_check IS
1106 SELECT null FROM cz_rp_entries rp, cz_devl_projects dv
1107 WHERE rp.deleted_flag = '0'
1108 AND rp.object_type = 'PRJ'
1109 AND rp.name = sName
1110 AND dv.deleted_flag = '0'
1111 AND dv.orig_sys_ref = sOrigSysRef
1112 AND rp.object_id = dv.devl_project_id;
1113 BEGIN
1114
1115 OPEN c_check;
1116 FETCH c_check INTO nDummy;
1117 IF(c_check%FOUND)THEN
1118
1119 BEGIN
1120 SELECT MAX(cz_utils.conv_num(SUBSTR(rp.name, 7, INSTR(rp.name, ')') - 7))) INTO nDummy
1121 FROM cz_rp_entries rp, cz_devl_projects dv
1122 WHERE rp.deleted_flag = '0'
1123 AND rp.object_type = 'PRJ'
1124 AND rp.name like 'Copy (%) of ' || sName
1125 AND dv.deleted_flag = '0'
1126 AND dv.orig_sys_ref = sOrigSysRef
1127 AND rp.object_id = dv.devl_project_id;
1128
1129 IF(nDummy IS NULL)THEN nDummy := 0; END IF;
1130 sName := 'Copy (' || TO_CHAR(nDummy + 1) || ') of ' || sName;
1131
1132 EXCEPTION
1136 END IF;
1133 WHEN OTHERS THEN
1134 NULL;
1135 END;
1137 CLOSE c_check;
1138 END;
1139
1140 ELSE
1141
1142 BEGIN
1143 SELECT name, model_type INTO onlName, sModelType
1144 FROM cz_devl_projects WHERE devl_project_id = nOnlDevlProjectId;
1145
1146 IF(SUBSTR(onlName,1,6) = 'Copy (')THEN
1147 sName := SUBSTR(onlName,1,INSTR(onlName,') of')+4) || sName;
1148 END IF;
1149
1150 EXCEPTION
1151 WHEN OTHERS THEN
1152 NULL;
1153 END;
1154 END IF;
1155
1156 sRecStatus := NULL;
1157 IF(sOrigSysRef IS NULL)THEN
1158 sRecStatus:='N7';
1159 sDisposition:='R';
1160 ELSE
1161 IF(sLastFSK1.COUNT > 1)THEN
1162 FOR i IN 1..sLastFSK1.COUNT - 1 LOOP
1163 IF(sLastFSK1(i) = sOrigSysRef AND sLastModel(i) = REFRESH_MODEL_ID)THEN
1164 /* This is a duplicate record */
1165 sRecStatus:='DUPL';
1166 sDisposition:='R';
1167 nDups:=nDups+1;
1168 EXIT;
1169 END IF;
1170 END LOOP;
1171 END IF;
1172 END IF;
1173 IF(sRecStatus IS NULL)THEN /* Assigns Disposition 'N' or 'M' */
1174 sRecStatus:='PASS';
1175 IF(x_onl_devl_project_f )THEN
1176
1177
1178 IF ((nvl(nImpIntlTextId,0)=nvl(sImpIntlTextId,0))AND(nImpModelType=nModelType) AND (nImpProdKey=sImpProdKey) AND (inCONFIG_ENGINE_TYPE=sConfigEngType) AND (sImpDescText=sOnlDescText))
1179 THEN dispositionflag:=1;
1180 END IF;
1181
1182 IF (dispositionflag=1) THEN
1183 sDisposition:='N';
1184 nNoChangeCount:=nNoChangeCount+1;
1185 ELSE
1186 sDisposition:='M';
1187 nUpdateCount:=nUpdateCount+1;
1188
1189 --If the configuration model type is changed from the 'Container Model', log a warning.
1190
1191 IF(sModelType = 'N' AND nModelType <> 'N')THEN
1192
1193 --'The Configuration Model Type for ''%MODELNAME'' has changed from ''Container'' to ''Standard''.'
1194 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_CONTAINER_REFRESH', 'MODELNAME', sName), 1, 'CZ_IMP_PS_NODE.KRS_DEVL_PROJECT ', 11276,inRun_Id);
1195 cz_imp_all.setReturnCode(cz_imp_all.CONCURRENT_WARNING, CZ_UTILS.GET_TEXT('CZ_IMP_CONTAINER_REFRESH', 'MODELNAME', sName));
1196 END IF;
1197
1198 -- Don't update model_type if it is 'P'
1199
1200 IF (sModelType = 'P' AND nModelType NOT IN ('P', 'N')) THEN
1201
1202 CZ_REFS.SolutionBasedModelCheck(nOnlDevlProjectId, nInstances);
1203
1204 if (nInstances > 0) then
1205 begin
1206 sModeltype := 'P';
1207 /*If the model has multiple instances, then do not refresh this or its parent model */
1208 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_CANNOT_REFRESH_PTO', 'MODELNAME', sName), 1, 'CZ_IMP_PS_NODE.KRS_DEVL_PROJECT ', 11276,inRun_Id);
1209 sRecStatus := 'N8';
1210 sDisposition := 'R';
1211 end;
1212 else sModelType := nModelType; end if;
1213 END IF;
1214 END IF; /*N/M*/
1215 ELSE
1216 /* Insert */
1217 sDisposition:='I';
1218 nInsertCount:=nInsertCount+1;
1219 nAllocateCounter:=nAllocateCounter+1;
1220 IF(nAllocateCounter=nAllocateBlock)THEN
1221 nAllocateCounter:=0;
1222 SELECT CZ_PS_NODES_S.NEXTVAL INTO nNextValue FROM DUAL;
1223 END IF;
1224 nOnlDevlProjectId:=nNextValue+nAllocateCounter;
1225 END IF;
1226 END IF;
1227
1228
1229 UPDATE CZ_IMP_DEVL_PROJECT SET
1230 DEVL_PROJECT_ID=DECODE(sDisposition,'R',DEVL_PROJECT_ID,nOnlDevlProjectId),
1231 PERSISTENT_PROJECT_ID=DECODE(sDisposition,'I',NVL(nPersistentProjectId,nOnlDevlProjectId),PERSISTENT_PROJECT_ID),
1232 INTL_TEXT_ID=DECODE(sDisposition,'R',INTL_TEXT_ID,nOnlIntlTextId),
1233 NAME=DECODE(sDisposition,'R',NAME,sName),
1234 DISPOSITION=sDisposition,
1235 REC_STATUS=sRecStatus,
1236 MODEL_TYPE = DECODE(sDisposition,'M',DECODE(sModelType,'P',DECODE(nModelType,'N',nModelType,sModelType),nModelType),nModelType)
1237 WHERE ROWID = thisRowId;
1238
1239 /* If PTO is being changed to an ATO model, reject import of the model's parents and children */
1240 IF(nPlanLevel > 0 AND sDisposition = 'R' AND sRecStatus = 'N8')THEN
1241
1242 UPDATE CZ_IMP_DEVL_PROJECT SET
1243 DISPOSITION=sDisposition,
1244 REC_STATUS=sRecStatus
1245 WHERE MODEL_ID = REFRESH_MODEL_ID;
1246
1247 l_err_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PTOTOATO_DISALLOWED','MODELID', REFRESH_MODEL_ID);
1248 x_error:=CZ_UTILS.LOG_REPORT(l_err_msg,1,'KRS_DEVL_PROJECT:TYPE',11276,inRun_Id);
1249 FAILED:=FAILED+1;
1250 END IF;
1251
1252 IF(sDisposition<>'R')THEN
1253
1254 UPDATE CZ_IMP_PS_NODES SET
1255 DEVL_PROJECT_ID=nOnlDevlProjectId
1256 WHERE fsk_devlproject_5_1 = sOrigSysRef
1257 AND RUN_ID=inRUN_ID;
1258
1259 END IF;
1260
1261 /* Return if MAX_ERR is reached */
1262 IF(FAILED >= MAX_ERR) THEN
1263 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.KRS_DEVL_PROJECT:MAX',11276,inRun_Id);
1264 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
1265 END IF;
1266 sDisposition:=NULL; sRecStatus:=NULL;dispositionflag:=0;
1267
1268
1269 END LOOP;
1270 /* No more data */
1271
1275 INSERTS:=nInsertCount;
1272 CLOSE c_imp_devl_project;
1273 COMMIT;
1274
1276 UPDATES:=nUpdateCount;
1277 DUPS:=nDups;
1278 NOCHANGE:=nNoChangeCount;
1279
1280
1281 EXCEPTION
1282 WHEN IMP_CHILD_MULTI_COPIES THEN
1283 RAISE;
1284 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
1285 RAISE;
1286 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
1287 RAISE;
1288 WHEN OTHERS THEN
1289 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.KRS_DEVL_PROJECT',11276,inRun_Id);
1290 RAISE;
1291 END KRS_DEVL_PROJECT;
1292 ------------------------------------------------------------------------------
1293 PROCEDURE CND_DEVL_PROJECT(inRUN_ID IN PLS_INTEGER,
1294 COMMIT_SIZE IN PLS_INTEGER,
1295 MAX_ERR IN PLS_INTEGER,
1296 FAILED IN OUT NOCOPY PLS_INTEGER
1297 ) IS
1298
1299 CURSOR c_imp_devl_project IS
1300 SELECT DELETED_FLAG, bom_caption_rule_id, nonbom_caption_rule_id,
1301 orig_sys_ref, name, model_id, model_type, seeded_flag, ROWID FROM CZ_IMP_DEVL_PROJECT
1302 WHERE REC_STATUS IS NULL AND RUN_ID = inRUN_ID;
1303 /* Internal vars */
1304 nCommitCount PLS_INTEGER:=0; /*COMMIT buffer index */
1305 nErrorCount PLS_INTEGER:=0; /*Error index */
1306 nFailed PLS_INTEGER:=0; /*Failed records */
1307 nDups PLS_INTEGER:=0; /*Duplicate records */
1308 x_error BOOLEAN:=FALSE;
1309
1310 /*Cursor Var for Import */
1311 p_imp_devl_project c_imp_devl_project%ROWTYPE;
1312 x_imp_devl_project_f BOOLEAN:=FALSE;
1313 l_msg VARCHAR2(2000);
1314 l_nbr NUMBER;
1315 l_disposition cz_imp_devl_project.disposition%TYPE;
1316 l_rec_status cz_imp_devl_project.rec_status%TYPE;
1317
1318 FUNCTION is_rule_id_valid(p_id NUMBER, p_type NUMBER, p_orig_sys_ref IN VARCHAR2) RETURN BOOLEAN
1319 IS
1320 l_nbr number;
1321 BEGIN
1322 BEGIN
1323 SELECT 1 INTO l_nbr
1324 FROM cz_rules a
1325 WHERE rule_id = p_id
1326 AND rule_type = p_type
1327 AND deleted_flag = '0'
1328 AND (devl_project_id = 0
1329 OR
1330 (devl_project_id <> 0 AND EXISTS
1331 (SELECT 1 FROM cz_devl_projects
1332 WHERE deleted_flag = '0'
1333 AND devl_project_id = a.devl_project_id
1334 AND orig_sys_ref = p_orig_sys_ref)))
1335 AND ROWNUM < 2;
1336
1337 EXCEPTION
1338 WHEN NO_DATA_FOUND THEN
1339 RETURN FALSE;
1340 END;
1341 RETURN TRUE;
1342 END is_rule_id_valid;
1343
1344 BEGIN
1345 OPEN c_imp_devl_project;
1346 LOOP
1347
1348 l_rec_status := NULL;
1349 l_disposition := NULL;
1350
1351 FETCH c_imp_devl_project INTO p_imp_devl_project;
1352 x_imp_devl_project_f:=c_imp_devl_project%FOUND;
1353
1354 EXIT WHEN NOT x_imp_devl_project_f;
1355
1356 IF(FAILED >= MAX_ERR) THEN
1357 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.CND_DEVL_PROJECT:MAX',11276,inRun_Id);
1358 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
1359 END IF;
1360 -- only seeded models from contracts can be imported
1361 IF (p_imp_devl_project.seeded_flag = '1' AND NOT gContractsModel) THEN
1362 l_rec_status := 'FAIL';
1363 l_disposition := 'R';
1364 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PRJ_SEEDED_FLG',
1365 'MODELNAME', p_imp_devl_project.name,
1366 'MODLELOSR', p_imp_devl_project.orig_sys_ref
1367 );
1368 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_DEVL_PROJECT',11276,inRun_Id);
1369 END IF;
1370 -- validate only for generic import, for BOM we populate during extraction so no need for validation
1371 IF (p_imp_devl_project.bom_caption_rule_id IS NOT NULL AND p_imp_devl_project.model_type NOT IN ('A', 'P', 'N')) THEN
1372 IF NOT (is_rule_id_valid(p_imp_devl_project.bom_caption_rule_id,
1373 CAPTION_RULE_TYPE,
1374 p_imp_devl_project.orig_sys_ref)
1375 OR
1376 is_rule_id_valid(p_imp_devl_project.bom_caption_rule_id,
1377 JAVA_SYS_PROP_RULE_TYPE,
1378 p_imp_devl_project.orig_sys_ref)
1379 ) THEN
1380 l_rec_status := 'FAIL';
1381 l_disposition := 'R';
1382 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PRJ_BOM_CPTN_RULE',
1383 'MODELNAME', p_imp_devl_project.name,
1384 'MODLELOSR', p_imp_devl_project.orig_sys_ref
1385 );
1386 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_DEVL_PROJECT',11276,inRun_Id);
1387 END IF;
1388 END IF;
1389 -- validate only for generic import, for BOM we populate during extraction so no need for validation
1390 IF (p_imp_devl_project.nonbom_caption_rule_id IS NOT NULL AND p_imp_devl_project.model_type NOT IN ('A', 'P', 'N')) THEN
1391 IF NOT (is_rule_id_valid(p_imp_devl_project.nonbom_caption_rule_id,
1392 CAPTION_RULE_TYPE,
1393 p_imp_devl_project.orig_sys_ref)
1394 OR
1395 is_rule_id_valid(p_imp_devl_project.nonbom_caption_rule_id,
1396 JAVA_SYS_PROP_RULE_TYPE,
1397 p_imp_devl_project.orig_sys_ref)
1401 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PRJ_NONBOM_CPTN_RULE',
1398 ) THEN
1399 l_rec_status := 'FAIL';
1400 l_disposition := 'R';
1402 'MODELNAME', p_imp_devl_project.name,
1403 'MODLELOSR', p_imp_devl_project.orig_sys_ref
1404 );
1405 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_DEVL_PROJECT',11276,inRun_Id);
1406 END IF;
1407 END IF;
1408
1409 UPDATE CZ_IMP_DEVL_PROJECT SET
1410 DELETED_FLAG=DECODE(DELETED_FLAG,NULL,'0',DELETED_FLAG),
1411 SEEDED_FLAG=DECODE(SEEDED_FLAG,NULL,'0',SEEDED_FLAG),
1412 DISPOSITION=l_disposition,
1413 REC_STATUS=l_rec_status
1414 WHERE ROWID = p_imp_devl_project.ROWID;
1415
1416 nCommitCount:=nCommitCount+1;
1417 /* COMMIT if the buffer size is reached */
1418 IF(nCommitCount>= COMMIT_SIZE) THEN
1419 COMMIT;
1420 nCommitCount:=0;
1421 END IF;
1422
1423 END LOOP;
1424 CLOSE c_imp_devl_project;
1425
1426 EXCEPTION
1427 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
1428 RAISE;
1429 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
1430 RAISE;
1431 WHEN OTHERS THEN
1432 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.CND_DEVL_PROJECT',11276,inRun_Id);
1433 RAISE;
1434 END CND_DEVL_PROJECT;
1435 ------------------------------------------------------------------------------
1436 PROCEDURE MAIN_DEVL_PROJECT(inRUN_ID IN PLS_INTEGER,
1437 COMMIT_SIZE IN PLS_INTEGER,
1438 MAX_ERR IN PLS_INTEGER,
1439 INSERTS IN OUT NOCOPY PLS_INTEGER,
1440 UPDATES IN OUT NOCOPY PLS_INTEGER,
1441 FAILED IN OUT NOCOPY PLS_INTEGER,
1442 DUPS IN OUT NOCOPY PLS_INTEGER,
1443 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
1444 inXFR_GROUP IN VARCHAR2,
1445 p_rp_folder_id IN NUMBER,
1446 inCONFIG_ENGINE_TYPE IN VARCHAR2
1447 ) IS
1448
1449 /* Internal vars */
1450 nCommitCount PLS_INTEGER:=0; /* COMMIT buffer index */
1451 nErrorCount PLS_INTEGER:=0; /* Error index */
1452 nXfrInsertCount PLS_INTEGER:=0; /* Inserts */
1453 nXfrUpdateCount PLS_INTEGER:=0; /* Updates */
1454 nFailed PLS_INTEGER:=0; /* Failed records */
1455 nNoChangeCount PLS_INTEGER:=0; /* NoChange records */
1456 nDups PLS_INTEGER:=0; /* Dupl records */
1457 x_error BOOLEAN:=FALSE;
1458 dummy CHAR(1);
1459
1460 st_time number;
1461 end_time number;
1462 loop_end_time number;
1463 insert_end_time number;
1464 d_str varchar2(255);
1465
1466 BEGIN
1467
1468 BEGIN
1469 SELECT 'X' INTO dummy FROM CZ_XFR_RUN_INFOS WHERE RUN_ID=inRUN_ID;
1470
1471 UPDATE CZ_XFR_RUN_INFOS SET
1472 STARTED=SYSDATE,
1473 LAST_ACTIVITY=SYSDATE
1474 WHERE RUN_ID=inRUN_ID;
1475
1476 EXCEPTION
1477 WHEN NO_DATA_FOUND THEN
1478 INSERT INTO CZ_XFR_RUN_INFOS (RUN_ID,STARTED,LAST_ACTIVITY)
1479 VALUES(inRUN_ID,SYSDATE,SYSDATE);
1480 END;
1481
1482 if (CZ_IMP_ALL.get_time) then
1483 st_time := dbms_utility.get_time();
1484 end if;
1485
1486 CND_DEVL_PROJECT(inRun_ID,COMMIT_SIZE,MAX_ERR,FAILED);
1487
1488 if (CZ_IMP_ALL.get_time) then
1489 end_time := dbms_utility.get_time();
1490 d_str := inRun_id || ' CND projects :' || (end_time-st_time)/100.00;
1491 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'CND',11299,inRun_Id);
1492 end if;
1493
1494 if (CZ_IMP_ALL.get_time) then
1495 st_time := dbms_utility.get_time();
1496 end if;
1497
1498 KRS_DEVL_PROJECT(inRUN_ID,COMMIT_SIZE,MAX_ERR,INSERTS,UPDATES,FAILED,DUPS,NOCHANGE,inXFR_GROUP,inCONFIG_ENGINE_TYPE);
1499
1500 if (CZ_IMP_ALL.get_time) then
1501 end_time := dbms_utility.get_time();
1502 d_str := inRun_id || ' KRS projects :' || (end_time-st_time)/100.00;
1503 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'KRS',11299,inRun_Id);
1504 end if;
1505
1506 if (CZ_IMP_ALL.get_time) then
1507 st_time := dbms_utility.get_time();
1508 end if;
1509 XFR_DEVL_PROJECT(inRUN_ID,COMMIT_SIZE,MAX_ERR,nXfrInsertCount,
1510 nXfrUpdateCount,FAILED,nNoChangeCount,inXFR_GROUP, p_rp_folder_id);
1511 if (CZ_IMP_ALL.get_time) then
1512 end_time := dbms_utility.get_time();
1513 d_str := inRun_id || ' XFR projects :' || (end_time-st_time)/100.00;
1514 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'XFR',11299,inRun_Id);
1515 end if;
1516
1517 /* Report Insert Errors */
1518 IF(nXfrInsertCount<> INSERTS) THEN
1519 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_INSERTERRORS','RESOLVED',to_char(INSERTS),'ACTUAL',to_char(nXfrInsertCount)),1,'CZ_IMP_PS_NODE.MAIN_DEVL_PROJECT:INSERTS ',11276,inRun_Id);
1520 END IF;
1521 /* Report Update Errors */
1522 IF(nXfrUpdateCount<> UPDATES) THEN
1523 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_UPDATEERRORS','RESOLVED',to_char(UPDATES),'ACTUAL',to_char(nXfrUpdateCount)),1,'CZ_IMP_PS_NODE.MAIN_DEVL_PROJECT:UPDATES ',11276,inRun_Id);
1524 END IF;
1525 /* Report NoChange Errors */
1526 IF(nNoChangeCount<> NOCHANGE) THEN
1527 x_error:=CZ_UTILS.LOG_REPORT('No Change count: Key resolution - ' || to_char(NOCHANGE) || ', Actual-' || to_char(nNoChangeCount),1,'CZ_IMP_PS_NODE.MAIN_DEVL_PROJECT:NOCHANGE ',11276,inRun_Id);
1531 INSERTS:=nXfrInsertCount;
1528 END IF;
1529
1530 /* Return the transferred number of rows and not the number of rows with keys resolved */
1532 UPDATES:=nXfrUpdateCount;
1533
1534 CZ_IMP_PS_NODE.RPT_DEVL_PROJECT(inRUN_ID);
1535
1536 EXCEPTION
1537 WHEN IMP_CHILD_MULTI_COPIES THEN
1538 RAISE;
1539 END MAIN_DEVL_PROJECT;
1540 ------------------------------------------------------------------------------
1541 PROCEDURE XFR_DEVL_PROJECT(inRUN_ID IN PLS_INTEGER,
1542 COMMIT_SIZE IN PLS_INTEGER,
1543 MAX_ERR IN PLS_INTEGER,
1544 INSERTS IN OUT NOCOPY PLS_INTEGER,
1545 UPDATES IN OUT NOCOPY PLS_INTEGER,
1546 FAILED IN OUT NOCOPY PLS_INTEGER,
1547 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
1548 inXFR_GROUP IN VARCHAR2,
1549 p_rp_folder_id IN NUMBER
1550 ) IS
1551
1552 CURSOR c_xfr_devl_project IS
1553 SELECT * FROM CZ_IMP_DEVL_PROJECT
1554 WHERE Run_ID=inRUN_ID AND rec_status='PASS'
1555 ORDER BY model_id, plan_level;
1556
1557 x_xfr_devl_project_f BOOLEAN:=FALSE;
1558 x_error BOOLEAN:=FALSE;
1559 p_xfr_devl_project c_xfr_devl_project%ROWTYPE;
1560
1561 copy_child_models cz_xfr_project_bills.copy_addl_child_models%TYPE;
1562 server_id cz_xfr_project_bills.source_server%TYPE;
1563
1564 dbModelType cz_devl_projects.model_type%TYPE;
1565
1566 -- Internal vars --
1567 nCommitCount PLS_INTEGER:=0; -- COMMIT buffer index --
1568 nInsertCount PLS_INTEGER:=0; -- Inserts --
1569 nUpdateCount PLS_INTEGER:=0; -- Updates --
1570 nFailed PLS_INTEGER:=0; -- Failed records --
1571 nNoChangeCount PLS_INTEGER:=0; -- No Change records
1572
1573 NOUPDATE_NAME NUMBER;
1574 NOUPDATE_VERSION NUMBER;
1575 NOUPDATE_INTL_TEXT_ID NUMBER;
1576 NOUPDATE_CREATION_DATE NUMBER;
1577 NOUPDATE_LAST_UPDATE_DATE NUMBER;
1578 NOUPDATE_CREATED_BY NUMBER;
1579 NOUPDATE_LAST_UPDATED_BY NUMBER;
1580 NOUPDATE_DELETED_FLAG NUMBER;
1581 NOUPDATE_ORIG_SYS_REF NUMBER;
1582 NOUPDATE_DESC_TEXT NUMBER;
1583 NOUPDATE_MODEL_TYPE NUMBER;
1584 NOUPDATE_PRODUCT_KEY NUMBER;
1585 NOUPDATE_ORGANIZATION_ID NUMBER;
1586 NOUPDATE_INVENTORY_ITEM_ID NUMBER;
1587 NOUPDATE_BOM_CPTN_RULE_ID NUMBER;
1588 NOUPDATE_NONBOM_CPTN_RULE_ID NUMBER;
1589 NOUPDATE_BOM_CPTN_TEXT_ID NUMBER;
1590 NOUPDATE_NONBOM_CPTN_TEXT_ID NUMBER;
1591
1592 BEGIN
1593
1594 -- Get the Update Flags for each column
1595 NOUPDATE_NAME := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','NAME',inXFR_GROUP);
1596 NOUPDATE_VERSION := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','VERSION',inXFR_GROUP);
1597 NOUPDATE_INTL_TEXT_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','INTL_TEXT_ID',inXFR_GROUP);
1598 NOUPDATE_CREATION_DATE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','CREATION_DATE',inXFR_GROUP);
1599 NOUPDATE_LAST_UPDATE_DATE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','LAST_UPDATE_DATE',inXFR_GROUP);
1600 NOUPDATE_CREATED_BY := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','CREATED_BY',inXFR_GROUP);
1601 NOUPDATE_LAST_UPDATED_BY := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','LAST_UPDATED_BY',inXFR_GROUP);
1602 NOUPDATE_DELETED_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','DELETED_FLAG',inXFR_GROUP);
1603 NOUPDATE_ORIG_SYS_REF := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','ORIG_SYS_REF',inXFR_GROUP);
1604 NOUPDATE_DESC_TEXT := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','DESC_TEXT',inXFR_GROUP);
1605 NOUPDATE_MODEL_TYPE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','MODEL_TYPE',inXFR_GROUP);
1606 NOUPDATE_INVENTORY_ITEM_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','INVENTORY_ITEM_ID',inXFR_GROUP);
1607 NOUPDATE_ORGANIZATION_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','ORGANIZATION_ID',inXFR_GROUP);
1608 NOUPDATE_PRODUCT_KEY := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','PRODUCT_KEY',inXFR_GROUP);
1609 NOUPDATE_BOM_CPTN_RULE_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','BOM_CAPTION_RULE_ID',inXFR_GROUP);
1610 NOUPDATE_NONBOM_CPTN_RULE_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','NONBOM_CAPTION_RULE_ID',inXFR_GROUP);
1611 NOUPDATE_BOM_CPTN_TEXT_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','BOM_CAPTION_TEXT_ID',inXFR_GROUP);
1612 NOUPDATE_NONBOM_CPTN_TEXT_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_DEVL_PROJECTS','NONBOM_CAPTION_TEXT_ID',inXFR_GROUP);
1613
1614 OPEN c_xfr_devl_project;
1615 LOOP
1616 IF(nCommitCount>= COMMIT_SIZE) THEN
1617 BEGIN
1618 COMMIT;
1619 nCommitCount:=0;
1620 END;
1621 ELSE
1622 nCOmmitCount:=nCommitCount+1;
1623 END IF;
1624
1625 FETCH c_xfr_devl_project INTO p_xfr_devl_project;
1626 x_xfr_devl_project_f:=c_xfr_devl_project%FOUND;
1627 EXIT WHEN NOT x_xfr_devl_project_f;
1628
1629 IF(FAILED >= MAX_ERR) THEN
1630 ROLLBACK;
1631 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.XFR_DEVL_PROJECT:MAX',11276,inRun_Id);
1632 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
1633 END IF;
1634
1635 --
1636 -- check corectness of CZ_IMP_DEVL_PROJECT.config_engine_type
1637 --
1638 IF inXFR_GROUP='GENERIC' THEN
1639 G_CONFIG_ENGINE_TYPE := p_xfr_devl_project.config_engine_type;
1640 IF p_xfr_devl_project.config_engine_type NOT IN('F', 'L') THEN
1641 ROLLBACK;
1642 UPDATE cz_imp_devl_project
1643 SET REC_STATUS='ERR'
1647 x_error:=CZ_UTILS.LOG_REPORT('Incorrect value of config_engine_type="'||p_xfr_devl_project.config_engine_type||'"',1,'CZ_IMP_PS_NODE.XFR_DEVL_PROJECT:INSERT',11276,inRun_Id);
1644 WHERE DEVL_PROJECT_ID=p_xfr_devl_project.DEVL_PROJECT_ID AND RUN_ID=inRUN_ID
1645 AND DISPOSITION=p_xfr_devl_project.disposition;
1646
1648 COMMIT;
1649
1650 RAISE CZ_ADMIN.IMP_UNEXP_SQL_ERROR;
1651
1652 END IF;
1653
1654 END IF;
1655 -- Setting Record status to 'OK' for records with 'N'
1656
1657
1658 IF (p_xfr_devl_project.disposition = 'N') THEN
1659
1660 UPDATE cz_imp_devl_project
1661 SET REC_STATUS='OK'
1662 WHERE DEVL_PROJECT_ID=p_xfr_devl_project.DEVL_PROJECT_ID
1663 AND RUN_ID=inRUN_ID
1664 AND DISPOSITION='N';
1665
1666 UPDATE CZ_XFR_PROJECT_BILLS
1667 SET LAST_IMPORT_RUN_ID=inRUN_ID,
1668 LAST_IMPORT_DATE=SYSDATE
1669 WHERE ORGANIZATION_ID=p_xfr_devl_project.ORGANIZATION_ID AND
1670 TOP_ITEM_ID=p_xfr_devl_project.TOP_ITEM_ID AND
1671 EXPLOSION_TYPE=p_xfr_devl_project.EXPLOSION_TYPE AND
1672 MODEL_PS_NODE_ID = p_xfr_devl_project.devl_project_id
1673 RETURNING copy_addl_child_models, source_server INTO copy_child_models, server_id;
1674
1675 nNoChangeCount:=nNoChangeCount+1;
1676 END IF ;
1677 IF(p_xfr_devl_project.disposition = 'I') THEN
1678 BEGIN
1679
1680 --LA 9595142 Add while creating a model
1681 INSERT INTO cz_devl_projects (devl_project_id, intl_text_id,
1682 name, version, deleted_flag, orig_sys_ref, desc_text,
1683 creation_date, last_update_date, created_by, last_updated_by,
1684 persistent_project_id, model_type, organization_id, inventory_item_id, product_key,
1685 bom_caption_rule_id, nonbom_caption_rule_id, config_engine_type, import_enabled)
1686 VALUES
1687 (p_xfr_devl_project.devl_project_id,
1688 p_xfr_devl_project.intl_text_id,
1689 p_xfr_devl_project.name,
1690 p_xfr_devl_project.version,
1691 p_xfr_devl_project.deleted_flag,
1692 p_xfr_devl_project.orig_sys_ref,
1693 p_xfr_devl_project.desc_text,
1694 sysdate, sysdate, -UID, -UID, p_xfr_devl_project.persistent_project_id,
1695 p_xfr_devl_project.model_type, p_xfr_devl_project.organization_id,
1696 p_xfr_devl_project.inventory_item_id, p_xfr_devl_project.product_key,
1697 p_xfr_devl_project.bom_caption_rule_id, p_xfr_devl_project.nonbom_caption_rule_id, p_xfr_devl_project.config_engine_type, '1');
1698
1699 nInsertCount:=nInsertCount+1;
1700
1701 UPDATE cz_imp_devl_project
1702 SET REC_STATUS='OK'
1703 WHERE DEVL_PROJECT_ID=p_xfr_devl_project.DEVL_PROJECT_ID AND RUN_ID=inRUN_ID
1704 AND DISPOSITION='I';
1705
1706 INSERT INTO CZ_RULE_FOLDERS
1707 (RULE_FOLDER_ID,NAME,TREE_SEQ,DEVL_PROJECT_ID,CREATED_BY,LAST_UPDATED_BY,
1708 CREATION_DATE,LAST_UPDATE_DATE,DELETED_FLAG)
1709 SELECT CZ_RULE_FOLDERS_S.NEXTVAL,p_xfr_devl_project.name||' Rules',0,
1710 p_xfr_devl_project.devl_project_id,UID,UID,sysdate,sysdate,'0'
1711 FROM DUAL WHERE NOT EXISTS
1712 (SELECT 1 FROM CZ_RULE_FOLDERS WHERE
1713 DEVL_PROJECT_ID=p_xfr_devl_project.devl_project_id AND
1714 PARENT_RULE_FOLDER_ID IS NULL AND NAME=p_xfr_devl_project.name||' Rules'
1715 AND deleted_flag = '0');
1716
1717 INSERT INTO CZ_RP_ENTRIES
1718 (OBJECT_TYPE,OBJECT_ID,ENCLOSING_FOLDER,NAME,DESCRIPTION,DELETED_FLAG,SEEDED_FLAG)
1719 SELECT 'PRJ',p_xfr_devl_project.devl_project_id,p_rp_folder_id,
1720 p_xfr_devl_project.name,p_xfr_devl_project.desc_text,'0',p_xfr_devl_project.seeded_flag
1721 FROM DUAL WHERE NOT EXISTS
1722 (SELECT 1 FROM CZ_RP_ENTRIES WHERE deleted_flag = '0' AND (
1723 (OBJECT_TYPE='PRJ' AND OBJECT_ID=p_xfr_devl_project.devl_project_id) OR
1724 (ENCLOSING_FOLDER=p_rp_folder_id AND NAME=p_xfr_devl_project.name)));
1725
1726
1727 IF(p_xfr_devl_project.plan_level = 0)THEN
1728 UPDATE CZ_XFR_PROJECT_BILLS SET
1729 MODEL_PS_NODE_ID=p_xfr_devl_project.devl_project_id,
1730 DESCRIPTION=p_xfr_devl_project.desc_text,
1731 COMPONENT_ITEM_ID=p_xfr_devl_project.top_item_id,
1732 LAST_IMPORT_RUN_ID=inRUN_ID,
1733 LAST_IMPORT_DATE=SYSDATE
1734 WHERE ORGANIZATION_ID=p_xfr_devl_project.ORGANIZATION_ID AND
1735 TOP_ITEM_ID=p_xfr_devl_project.TOP_ITEM_ID AND
1736 EXPLOSION_TYPE=p_xfr_devl_project.EXPLOSION_TYPE AND
1737 MODEL_PS_NODE_ID = p_xfr_devl_project.model_id
1738 RETURNING copy_addl_child_models,source_server INTO copy_child_models, server_id;
1739
1740 ELSE
1741 INSERT INTO cz_xfr_project_bills
1742 (model_ps_node_id, description, component_item_id, last_import_run_id,
1743 last_import_date, organization_id, top_item_id, explosion_type,
1744 copy_addl_child_models, source_server, deleted_flag)
1745 SELECT p_xfr_devl_project.devl_project_id, p_xfr_devl_project.desc_text,
1746 p_xfr_devl_project.top_item_id, inRUN_ID, SYSDATE,
1747 NVL(p_xfr_devl_project.ORGANIZATION_ID, 0), NVL(p_xfr_devl_project.TOP_ITEM_ID, 0),
1748 NVL(p_xfr_devl_project.EXPLOSION_TYPE, 'GENERIC'), '0', NVL(server_id, 0), '0'
1749 FROM DUAL WHERE NOT EXISTS
1750 (SELECT NULL FROM cz_xfr_project_bills
1751 WHERE model_ps_node_id = p_xfr_devl_project.devl_project_id
1755 EXCEPTION
1752 AND deleted_flag = '0');
1753 END IF;
1754
1756 WHEN OTHERS THEN
1757 FAILED:=FAILED +1;
1758 UPDATE cz_imp_devl_project SET REC_STATUS='ERR'
1759 WHERE DEVL_PROJECT_ID=p_xfr_devl_project.DEVL_PROJECT_ID AND RUN_ID=inRUN_ID
1760 AND DISPOSITION='I';
1761 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.XFR_DEVL_PROJECT:INSERT',11276,inRun_Id);
1762 END;
1763
1764 ELSIF(p_xfr_devl_project.disposition = 'M') THEN
1765 BEGIN
1766
1767 UPDATE cz_devl_projects SET
1768 intl_text_id=DECODE(NOUPDATE_INTL_TEXT_ID,0,p_xfr_devl_project.intl_text_id,intl_text_id),
1769 name=DECODE(NOUPDATE_NAME,0,p_xfr_devl_project.name,name),
1770 version=DECODE(NOUPDATE_VERSION,0,p_xfr_devl_project.version,version),
1771 deleted_flag=DECODE(NOUPDATE_DELETED_FLAG,0,p_xfr_devl_project.deleted_flag,deleted_flag),
1772 orig_sys_ref=DECODE(NOUPDATE_DELETED_FLAG,0,p_xfr_devl_project.orig_sys_ref,orig_sys_ref),
1773 desc_text=DECODE(NOUPDATE_DESC_TEXT,0,p_xfr_devl_project.desc_text,desc_text),
1774 LAST_UPDATE_DATE=DECODE(NOUPDATE_LAST_UPDATE_DATE,0,sysdate,LAST_UPDATE_DATE),
1775 LAST_UPDATED_BY=DECODE(NOUPDATE_LAST_UPDATED_BY,0,-UID,LAST_UPDATED_BY),
1776 MODEL_TYPE = DECODE(NOUPDATE_MODEL_TYPE,0,p_xfr_devl_project.model_type),
1777 organization_id=DECODE(NOUPDATE_ORGANIZATION_ID,0,p_xfr_devl_project.organization_id,organization_id),
1778 inventory_item_id=DECODE(NOUPDATE_INVENTORY_ITEM_ID,0,p_xfr_devl_project.inventory_item_id,inventory_item_id),
1779 product_key= DECODE(NOUPDATE_PRODUCT_KEY,0,p_xfr_devl_project.product_key,product_key),
1780 bom_caption_rule_id= DECODE(NOUPDATE_BOM_CPTN_RULE_ID,0,p_xfr_devl_project.bom_caption_rule_id,bom_caption_rule_id),
1781 nonbom_caption_rule_id= DECODE(NOUPDATE_NONBOM_CPTN_RULE_ID,0,p_xfr_devl_project.nonbom_caption_rule_id,nonbom_caption_rule_id)
1782 WHERE devl_project_id=p_xfr_devl_project.devl_project_id;
1783
1784 IF(SQL%NOTFOUND) THEN
1785 FAILED:=FAILED+1;
1786 ELSE
1787 nUpdateCount:=nUpdateCount+1;
1788 UPDATE cz_imp_devl_project
1789 SET REC_STATUS='OK'
1790 WHERE DEVL_PROJECT_ID=p_xfr_devl_project.DEVL_PROJECT_ID AND RUN_ID=inRUN_ID
1791 AND DISPOSITION='M';
1792 END IF;
1793
1794 UPDATE CZ_RP_ENTRIES SET
1795 NAME = DECODE(NOUPDATE_NAME,0,p_xfr_devl_project.name,name),
1796 DESCRIPTION = DECODE(NOUPDATE_DESC_TEXT,0,p_xfr_devl_project.desc_text,description),
1797 DELETED_FLAG = '0',
1798 SEEDED_FLAG = p_xfr_devl_project.seeded_flag
1799 WHERE OBJECT_TYPE='PRJ' AND OBJECT_ID=p_xfr_devl_project.devl_project_id
1800 AND NOT EXISTS
1801 (SELECT 1 FROM CZ_RP_ENTRIES
1802 WHERE ENCLOSING_FOLDER=0
1803 AND NAME=p_xfr_devl_project.name
1804 AND deleted_flag = '0');
1805 -- dbms_output.put_line ('Updating .. M : ' || p_xfr_devl_project.devl_project_id);
1806
1807 UPDATE CZ_XFR_PROJECT_BILLS SET
1808 DESCRIPTION=DECODE(NOUPDATE_DESC_TEXT,0,p_xfr_devl_project.desc_text,description),
1809 COMPONENT_ITEM_ID=p_xfr_devl_project.top_item_id,
1810 LAST_IMPORT_RUN_ID=inRUN_ID,
1811 LAST_IMPORT_DATE=SYSDATE,
1812 deleted_flag = '0'
1813 WHERE ORGANIZATION_ID=p_xfr_devl_project.ORGANIZATION_ID AND
1814 TOP_ITEM_ID=p_xfr_devl_project.TOP_ITEM_ID AND
1815 EXPLOSION_TYPE=p_xfr_devl_project.EXPLOSION_TYPE AND
1816 MODEL_PS_NODE_ID = p_xfr_devl_project.devl_project_id
1817 RETURNING copy_addl_child_models, source_server INTO copy_child_models, server_id;
1818
1819 --This was necessary because cz_refs won't update explosions when creating new copies of
1820 --child models. However, this brings in problems when refreshing BOM models with
1821 --eventually created rules. As the functionality of creating new copies of child models
1822 --is frozen, we can go without this thus not having problems refreshing with rules.
1823
1824 --DELETE FROM cz_model_ref_expls WHERE model_id = p_xfr_devl_project.devl_project_id
1825 --AND parent_expl_node_id IS NOT NULL;
1826
1827 EXCEPTION
1828 WHEN OTHERS THEN
1829 FAILED:=FAILED +1;
1830
1831 UPDATE cz_imp_devl_project SET REC_STATUS='ERR'
1832 WHERE DEVL_PROJECT_ID=p_xfr_devl_project.DEVL_PROJECT_ID AND RUN_ID=inRUN_ID
1833 AND DISPOSITION='M';
1834 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.XFR_DEVL_PROJECT:UPDATE',11276,inRun_Id);
1835 END ;
1836 END IF;
1837 END LOOP;
1838
1839 CLOSE c_xfr_devl_project;
1840 COMMIT;
1841 INSERTS:=nInsertCount;
1842 UPDATES:=nUpdateCount;
1843 NOCHANGE:=nNoChangeCount;--VR
1844 EXCEPTION
1845 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
1846 RAISE;
1847 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
1848 RAISE;
1849 WHEN OTHERS THEN
1850 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.XFR_DEVL_PROJECT',11276,inRun_Id);
1851 RAISE;
1852 END XFR_DEVL_PROJECT;
1853
1854 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
1855 PROCEDURE RPT_DEVL_PROJECT ( inRUN_ID IN PLS_INTEGER ) AS
1856 x_error BOOLEAN:=FALSE;
1857
1858 v_table_name VARCHAR2(30) := 'CZ_DEVL_PROJECTS';
1859 v_ok VARCHAR2(4) := 'OK';
1860 v_completed VARCHAR2(1) := '1';
1861
1862 CURSOR c_xfr_run_result IS
1863 SELECT DISPOSITION,REC_STATUS,COUNT(*)
1864 FROM cz_imp_devl_project
1868 ins_disposition CZ_XFR_RUN_RESULTS.disposition%TYPE;
1865 WHERE RUN_ID = inRUN_ID
1866 GROUP BY DISPOSITION,REC_STATUS;
1867
1869 ins_rec_status CZ_XFR_RUN_RESULTS.rec_status%TYPE ;
1870 ins_rec_count CZ_XFR_RUN_RESULTS.records%TYPE ;
1871
1872 BEGIN
1873 BEGIN
1874 DELETE FROM CZ_XFR_RUN_RESULTS WHERE RUN_ID=inRUN_ID AND IMP_TABLE=v_table_name;
1875 EXCEPTION
1876 WHEN NO_DATA_FOUND THEN NULL;
1877 END;
1878
1879 OPEN c_xfr_run_result;
1880 LOOP
1881 FETCH c_xfr_run_result INTO ins_disposition,ins_rec_status,ins_rec_count;
1882 EXIT WHEN c_xfr_run_result%NOTFOUND;
1883
1884 INSERT INTO CZ_XFR_RUN_RESULTS (RUN_ID,IMP_TABLE,DISPOSITION,REC_STATUS,RECORDS)
1885 VALUES(inRUN_ID,v_table_name,ins_disposition,ins_rec_status,ins_rec_count);
1886 END LOOP;
1887 CLOSE c_xfr_run_result;
1888 COMMIT;
1889
1890 DECLARE
1891 nErrors PLS_INTEGER;
1892 CURSOR c_get_nErrors IS
1893 SELECT SUM(NVL(RECORDS,0)) FROM CZ_XFR_RUN_RESULTS
1894 WHERE REC_STATUS<>v_ok AND RUN_ID=inRUN_ID
1895 AND IMP_TABLE=v_table_name;
1896 BEGIN
1897 OPEN c_get_nErrors;
1898 FETCH c_get_nErrors INTO nErrors;
1899 CLOSE c_get_nErrors;
1900 UPDATE CZ_XFR_RUN_INFOS
1901 SET TOTAL_ERRORS=NVL(TOTAL_ERRORS,0)+NVL(nErrors,0),
1902 COMPLETED=v_completed
1903 WHERE RUN_ID=inRUN_ID;
1904 COMMIT;
1905 EXCEPTION
1906 WHEN OTHERS THEN
1907 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.RPT_DEVL_PROJECT',11276,inRun_Id);
1908 END;
1909 EXCEPTION
1910 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
1911 RAISE;
1912 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
1913 RAISE;
1914 WHEN OTHERS THEN
1915 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.RPT_DEVL_PROJECT',11276,inRun_Id);
1916 RAISE;
1917 END;
1918 /*--DEVL_PROJECT IMPORT SECTION END-----------------------------------------*/
1919
1920 /*--PS_NODE IMPORT SECTION START--------------------------------------------*/
1921 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
1922 PROCEDURE KRS_PS_NODE (inRUN_ID IN PLS_INTEGER,
1923 COMMIT_SIZE IN PLS_INTEGER,
1924 MAX_ERR IN PLS_INTEGER,
1925 INSERTS IN OUT NOCOPY PLS_INTEGER,
1926 UPDATES IN OUT NOCOPY PLS_INTEGER,
1927 FAILED IN OUT NOCOPY PLS_INTEGER,
1928 DUPS IN OUT NOCOPY PLS_INTEGER,
1929 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
1930 inXFR_GROUP IN VARCHAR2
1931 ) IS
1932
1933 TYPE tStringArray IS TABLE OF VARCHAR2(2000) INDEX BY BINARY_INTEGER;
1934
1935 CURSOR c_imp_psnode (x_usesurr_psnode PLS_INTEGER,
1936 x_usesurr_intltext PLS_INTEGER,
1937 x_usesurr_itemmaster PLS_INTEGER,
1938 x_usesurr_devlproject PLS_INTEGER)
1939 IS
1940 SELECT PLAN_LEVEL,ORIG_SYS_REF,USER_STR03,DEVL_PROJECT_ID,PS_NODE_TYPE,NAME,
1941 FSK_INTLTEXT_1_1,FSK_INTLTEXT_1_EXT,
1942 FSK_ITEMMASTER_2_1,FSK_ITEMMASTER_2_EXT,
1943 FSK_PSNODE_3_1,FSK_PSNODE_3_EXT,
1944 FSK_PSNODE_4_1,FSK_PSNODE_4_EXT,
1945 FSK_DEVLPROJECT_5_1,FSK_DEVLPROJECT_5_EXT,
1946 fsk_psnode_6_1, COMPONENT_SEQUENCE_PATH, ROWID, MINIMUM, MAXIMUM,
1947 nvl(SRC_APPLICATION_ID, cnDefSrcAppId),
1948 nvl(FSK_ITEMMASTER_2_2, cnDefSrcAppId),INTL_TEXT_ID,ITEM_ID,
1949 INITIAL_VALUE,PARENT_ID,PRODUCT_FLAG,REFERENCE_ID,SYSTEM_NODE_FLAG,
1950 TREE_SEQ,BOM_TREATMENT,COMPONENT_SEQUENCE_ID,BOM_REQUIRED,
1951 SO_ITEM_TYPE_CODE,MINIMUM_SELECTED,MAXIMUM_SELECTED,EFFECTIVE_FROM,EFFECTIVE_UNTIL,
1952 DECIMAL_QTY_FLAG,PRIMARY_UOM_CODE,BOM_SORT_ORDER,IB_TRACKABLE,
1953 INITIAL_NUM_VALUE,SHIPPABLE_ITEM_FLAG,INVENTORY_TRANSACTABLE_FLAG,
1954 SERIALIZABLE_ITEM_FLAG
1955 FROM CZ_IMP_PS_NODES WHERE REC_STATUS IS NULL AND RUN_ID = inRUN_ID
1956 ORDER BY PLAN_LEVEL,
1957 DECODE(x_usesurr_psnode,0,ORIG_SYS_REF,1,USER_STR03),
1958 DECODE(x_usesurr_intltext,0,FSK_INTLTEXT_1_1,1,FSK_INTLTEXT_1_EXT),
1959 DECODE(x_usesurr_itemmaster,0,FSK_ITEMMASTER_2_1,1,FSK_ITEMMASTER_2_EXT),
1960 DECODE(x_usesurr_psnode,0,FSK_PSNODE_3_1,1,FSK_PSNODE_3_EXT),
1961 DECODE(x_usesurr_devlproject,0,FSK_DEVLPROJECT_5_1,1,FSK_DEVLPROJECT_5_EXT),
1962 ROWID;
1963
1964 /* cursor's data found indicator */
1965 x_imp_psnode_psnodeid_f BOOLEAN:=FALSE;
1966 x_onl_intltext_intltextid_f BOOLEAN:=FALSE;
1967 X_ONL_ITEMMASTER_ITEMID_F BOOLEAN:=FALSE;
1968 x_onl_psnode_parentid_f BOOLEAN:=FALSE;
1969 x_onl_psnode_psnodeid_f BOOLEAN:=FALSE;
1970 x_onl_devlprj_devlprjid_f BOOLEAN:=FALSE;
1971 x_onl_reference_f BOOLEAN:=FALSE;
1972 x_error BOOLEAN:=FALSE;
1973 x_project_f BOOLEAN:=FALSE;
1974 sImpOrigsysref CZ_IMP_PS_NODES.ORIG_SYS_REF%TYPE;
1975 sImpUserstr03 CZ_IMP_PS_NODES.USER_STR03%TYPE;
1976 nOnlPsnodeId CZ_IMP_PS_NODES.PS_NODE_ID%TYPE;
1977 nImpParentId CZ_IMP_PS_NODES.PARENT_ID%TYPE;
1978 nOnlOrigSysRef CZ_IMP_PS_NODES.ORIG_SYS_REF%TYPE;
1979 nImpIntlTextId CZ_IMP_PS_NODES.INTL_TEXT_ID%TYPE;
1983 nImpItemId CZ_IMP_PS_NODES.ITEM_ID%TYPE;
1980 nOnlParentId CZ_IMP_PS_NODES.PARENT_ID%TYPE;
1981 nImpPlanLevel CZ_IMP_PS_NODES.PLAN_LEVEL%TYPE;
1982 nOnlItemId CZ_IMP_PS_NODES.ITEM_ID%TYPE;
1984 nOnlMax CZ_IMP_PS_NODES.MAXIMUM%TYPE;
1985 nOnlMin CZ_IMP_PS_NODES.MINIMUM%TYPE;
1986 nOnlTreeSeq CZ_IMP_PS_NODES.TREE_SEQ%TYPE;
1987 nImpTreeSequence CZ_IMP_PS_NODES.TREE_SEQ%TYPE;
1988 nOnlName CZ_IMP_PS_NODES.NAME%TYPE;
1989 nImpName CZ_IMP_PS_NODES.NAME%TYPE;
1990 nReferredItemId CZ_IMP_PS_NODES.ITEM_ID%TYPE;
1991 nOnlInitialValue CZ_IMP_PS_NODES.INITIAL_VALUE%TYPE;
1992 nImpInitialValue CZ_IMP_PS_NODES.INITIAL_VALUE%TYPE;
1993 nOnlInitialNumValue CZ_IMP_PS_NODES.initial_num_value%TYPE;
1994 nImpInitialNumValue CZ_IMP_PS_NODES.initial_num_value%TYPE;
1995 nOnlPsNodeType CZ_IMP_PS_NODES.PS_NODE_TYPE%TYPE;
1996 nOnlProductFlag CZ_IMP_PS_NODES.PRODUCT_FLAG%TYPE;
1997 nImpProductFlag CZ_IMP_PS_NODES.PRODUCT_FLAG%TYPE;
1998 nOnlReferenceId CZ_IMP_PS_NODES.REFERENCE_ID%TYPE;
1999 nImpReferenceId CZ_IMP_PS_NODES.REFERENCE_ID%TYPE;
2000 nOnlSystemNodeFlag CZ_IMP_PS_NODES.SYSTEM_NODE_FLAG%TYPE;
2001 nImpSystemNodeFlag CZ_IMP_PS_NODES.SYSTEM_NODE_FLAG%TYPE;
2002 nOnlBomTreatment CZ_IMP_PS_NODES.BOM_TREATMENT%TYPE;
2003 nImpBomTreatment CZ_IMP_PS_NODES.BOM_TREATMENT%TYPE;
2004 nOnlEffFrom CZ_IMP_PS_NODES.EFFECTIVE_FROM%TYPE;
2005 nImpEffFrom CZ_IMP_PS_NODES.EFFECTIVE_FROM%TYPE;
2006 nOnlEffUntil CZ_PS_NODES.EFFECTIVE_UNTIL%type;
2007 nImpEffUntil CZ_IMP_PS_NODES.EFFECTIVE_UNTIL%type;
2008 nEffUntilCap CZ_IMP_PS_NODES.EFFECTIVE_UNTIL%type;
2009 nOnlSoItemTypeCode CZ_IMP_PS_NODES.SO_ITEM_TYPE_CODE%TYPE;
2010 nImpSoItemTypeCode CZ_IMP_PS_NODES.SO_ITEM_TYPE_CODE%TYPE;
2011
2012 nOnlMinSel CZ_IMP_PS_NODES.MINIMUM_SELECTED%TYPE;
2013 nImpMinSel CZ_IMP_PS_NODES.MINIMUM_SELECTED%TYPE;
2014 nOnlMaxSel CZ_IMP_PS_NODES.MAXIMUM_SELECTED%TYPE;
2015 nImpMaxSel CZ_IMP_PS_NODES.MAXIMUM_SELECTED%TYPE;
2016
2017 nOnlBomReqFlag CZ_IMP_PS_NODES.BOM_REQUIRED%TYPE;
2018 nImpBomReqFlag CZ_IMP_PS_NODES.BOM_REQUIRED%TYPE;
2019 nOnlCompSeqId CZ_IMP_PS_NODES.COMPONENT_SEQUENCE_ID%TYPE;
2020 nImpCompSeqId CZ_IMP_PS_NODES.COMPONENT_SEQUENCE_ID%TYPE;
2021 nOnlDecQtyFlag CZ_IMP_PS_NODES.DECIMAL_QTY_FLAG%TYPE;
2022 nImpDecQtyFlag CZ_IMP_PS_NODES.DECIMAL_QTY_FLAG%TYPE;
2023 nOnlPriUOMCode CZ_IMP_PS_NODES.PRIMARY_UOM_CODE%TYPE;
2024 nImpPriUOMCode CZ_IMP_PS_NODES.PRIMARY_UOM_CODE%TYPE;
2025 nOnlBOMSortOrder CZ_IMP_PS_NODES.BOM_SORT_ORDER%TYPE;
2026 nImpBOMSortOrder CZ_IMP_PS_NODES.BOM_SORT_ORDER%TYPE;
2027 nOnlCompSeqPath CZ_IMP_PS_NODES.COMPONENT_SEQUENCE_PATH%TYPE;
2028 nOnlIBTrack CZ_IMP_PS_NODES.IB_TRACKABLE%TYPE;
2029 nImpIBTrack CZ_IMP_PS_NODES.IB_TRACKABLE%TYPE;
2030 nOnlSrcAppId CZ_IMP_PS_NODES.SRC_APPLICATION_ID%TYPE;
2031 nOnlShipItemFlag CZ_IMP_PS_NODES.SHIPPABLE_ITEM_FLAG%TYPE;
2032 nImpShipItemFlag CZ_IMP_PS_NODES.SHIPPABLE_ITEM_FLAG%TYPE;
2033 nOnlInvTransFlag CZ_IMP_PS_NODES.INVENTORY_TRANSACTABLE_FLAG%TYPE;
2034 nImpInvTransFlag CZ_IMP_PS_NODES.INVENTORY_TRANSACTABLE_FLAG%TYPE;
2035 nOnlSerItemFlag CZ_IMP_PS_NODES.SERIALIZABLE_ITEM_FLAG%TYPE;
2036 nImpSerItemFlag CZ_IMP_PS_NODES.SERIALIZABLE_ITEM_FLAG%TYPE;
2037 nOnlIntlTextId CZ_IMP_PS_NODES.INTL_TEXT_ID%TYPE;
2038 nOnlDevlProjectId CZ_IMP_PS_NODES.DEVL_PROJECT_ID%TYPE;
2039 nOnlReference CZ_IMP_PS_NODES.PS_NODE_ID%TYPE;
2040 localName CZ_IMP_PS_NODES.NAME%TYPE;
2041 nImpTreeSeq CZ_IMP_PS_NODES.COMPONENT_SEQUENCE_PATH%TYPE;
2042 sFSKINTLTEXT11 CZ_IMP_PS_NODES.FSK_INTLTEXT_1_1%TYPE;
2043 sFSKINTLTEXT1EXT CZ_IMP_PS_NODES.FSK_INTLTEXT_1_EXT%TYPE;
2044 sFSKITEMMASTER21 CZ_IMP_PS_NODES.FSK_ITEMMASTER_2_1%TYPE;
2045 sFSKITEMMASTER2EXT CZ_IMP_PS_NODES.FSK_ITEMMASTER_2_EXT%TYPE;
2046 nFSKITEMMASTER22 CZ_IMP_PS_NODES.FSK_ITEMMASTER_2_2%TYPE;
2047 nImpSrcApplicationId CZ_IMP_PS_NODES.SRC_APPLICATION_ID%TYPE;
2048 sFSKPSNODE31 CZ_IMP_PS_NODES.FSK_PSNODE_3_1%TYPE;
2049 sFSKPSNODE3EXT CZ_IMP_PS_NODES.FSK_PSNODE_3_EXT%TYPE;
2050 sFSKPSNODE41 CZ_IMP_PS_NODES.FSK_PSNODE_4_1%TYPE;
2051 sFSKPSNODE4EXT CZ_IMP_PS_NODES.FSK_PSNODE_4_EXT%TYPE;
2052 sFSKDEVLPROJECT51 CZ_IMP_PS_NODES.FSK_DEVLPROJECT_5_1%TYPE;
2053 sFSKDEVLPROJECT5EXT CZ_IMP_PS_NODES.FSK_DEVLPROJECT_5_EXT%TYPE;
2054 sFSKREFERENCE CZ_IMP_PS_NODES.fsk_psnode_6_1%TYPE;
2055 sLastFSK CZ_IMP_PS_NODES.NAME%TYPE;
2059 sRecStatus CZ_IMP_PS_NODES.REC_STATUS%TYPE;
2056 sThisFSK CZ_IMP_PS_NODES.NAME%TYPE;
2057 nLastTreeSeq CZ_IMP_PS_NODES.COMPONENT_SEQUENCE_PATH%TYPE;
2058 nThisTreeSeq CZ_IMP_PS_NODES.COMPONENT_SEQUENCE_PATH%TYPE;
2060 sDisposition CZ_IMP_PS_NODES.DISPOSITION%TYPE;
2061
2062 sOnlItemRefPartNbr CZ_IMP_PS_NODES.NAME%TYPE;
2063 nDevlProjectId CZ_IMP_PS_NODES.DEVL_PROJECT_ID%TYPE;
2064 nPsNodeType CZ_IMP_PS_NODES.PS_NODE_TYPE%TYPE;
2065 sPsNodeName CZ_DB_SETTINGS.VALUE%TYPE;
2066 cDeletedFlag CZ_DEVL_PROJECTS.DELETED_FLAG%TYPE;
2067 cDummyDeletedFlag CZ_DEVL_PROJECTS.DELETED_FLAG%TYPE;
2068 --LA
2069 tmpOrigSysRef CZ_IMP_PS_NODES.ORIG_SYS_REF%TYPE;
2070 tmpName CZ_IMP_PS_NODES.NAME%TYPE;
2071 tmpReferenceId CZ_IMP_PS_NODES.REFERENCE_ID%TYPE;
2072
2073 nOnlDevlProjectId2 CZ_IMP_PS_NODES.DEVL_PROJECT_ID%TYPE;
2074
2075
2076 sMinimum CZ_IMP_PS_NODES.MINIMUM%TYPE;
2077 sMaximum CZ_IMP_PS_NODES.MAXIMUM%TYPE;
2078 impMinimum CZ_IMP_PS_NODES.MINIMUM%TYPE;
2079 impMaximum CZ_IMP_PS_NODES.MAXIMUM%TYPE;
2080 nModelType CZ_DEVL_PROJECTS.MODEL_TYPE%TYPE;
2081 ibTrackable cz_imp_ps_nodes.ib_trackable%TYPE;
2082
2083 /* Internal vars */
2084 nCommitCount PLS_INTEGER:=0; /*COMMIT buffer index */
2085 nErrorCount PLS_INTEGER:=0; /*Error index */
2086 nInsertCount PLS_INTEGER:=0; /*Inserts */
2087 nUpdateCount PLS_INTEGER:=0; /*Updates */
2088 nFailed PLS_INTEGER:=0; /*Failed records */
2089 nDups PLS_INTEGER:=0; /*Dupl records */
2090 nNoChangeCount PLS_INTEGER:=0;
2091 dispositionflag PLS_INTEGER:=0; /*Disposition Counter*/
2092 x_usesurr_psnode PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_PS_NODES',inXFR_GROUP);
2093 x_usesurr_intltext PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_INTL_TEXTS',inXFR_GROUP);
2094 x_usesurr_itemmaster PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_ITEM_MASTERS',inXFR_GROUP);
2095 x_usesurr_devlproject PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_DEVL_PROJECTS',inXFR_GROUP);
2096 nAllocateBlock PLS_INTEGER:=1;
2097 nAllocateCounter PLS_INTEGER;
2098 nNextValue NUMBER;
2099 nNextId NUMBER;
2100 NamePrefix VARCHAR2(8);
2101 p_out_err INTEGER;
2102 thisRowId ROWID;
2103
2104 nDebug PLS_INTEGER := 1000;
2105 nCounter PLS_INTEGER;
2106
2107 tabName tStringArray;
2108 tabParentRef tStringArray;
2109
2110
2111 nOnlMaxtreeSeq_forParent CZ_PS_NODES.TREE_SEQ%TYPE;
2112 nNextTreeSeq number;
2113 nSameParentTreeSeq number;
2114 thisParentId number;
2115
2116 v_settings_id VARCHAR2(40);
2117 v_section_name VARCHAR2(30);
2118 BEGIN
2119
2120 nDebug := 1001;
2121
2122 v_settings_id := 'OracleSequenceIncr';
2123 v_section_name := 'SCHEMA';
2124
2125 BEGIN
2126 SELECT VALUE INTO nAllocateBlock FROM CZ_DB_SETTINGS
2127 WHERE SETTING_ID=v_settings_id AND SECTION_NAME=v_section_name;
2128 EXCEPTION
2129 WHEN OTHERS THEN
2130 nAllocateBlock:=1;
2131 END;
2132
2133 v_settings_id := 'PsNodeName';
2134 v_section_name := 'ORAAPPS_INTEGRATE';
2135
2136 BEGIN
2137 SELECT VALUE INTO sPsNodeName FROM CZ_DB_SETTINGS
2138 WHERE SETTING_ID=v_settings_id AND SECTION_NAME=v_section_name;
2139 EXCEPTION
2140 WHEN OTHERS THEN
2141 NULL;
2142 END;
2143 nAllocateCounter:=nAllocateBlock-1;
2144
2145 -- bug 13910985 : Since timestamp for effective_until changes during every bom explosion
2146 -- taking a dummy date from 25 years now in order to verify whether
2147 -- there is change to effective_until column
2148 BEGIN
2149 -- 25 years from current date
2150 SELECT ADD_MONTHS(sysdate,300) INTO nEffUntilCap FROM DUAL;
2151 EXCEPTION
2152 WHEN OTHERS THEN
2153 NULL;
2154 END;
2155
2156 nDebug := 1002;
2157
2158 OPEN c_imp_psnode(x_usesurr_psnode,x_usesurr_intltext,x_usesurr_itemmaster,x_usesurr_devlproject);
2159
2160 nDebug := 1003;
2161
2162 LOOP
2163 nDebug := 1004;
2164 /* COMMIT if the buffer size is reached */
2165 IF (nCommitCount>= COMMIT_SIZE) THEN
2166 BEGIN
2167 COMMIT;
2168 nCommitCount:=0;
2169 END;
2170 ELSE
2171 nCOmmitCount:=nCommitCount+1;
2172 END IF;
2173 nDebug := 1005;
2174 nImpPlanLevel:=NULL; sImpUserstr03:=NULL; sImpOrigsysref:=NULL;
2175 nDevlProjectId:=NULL; sFSKINTLTEXT11:=NULL; sFSKINTLTEXT1EXT:=NULL;
2176 sFSKITEMMASTER21:=NULL; sFSKITEMMASTER2EXT:=NULL;
2177 sFSKPSNODE31:=NULL; sFSKPSNODE3EXT:=NULL; localName := NULL;
2178 sFSKPSNODE41:=NULL; sFSKPSNODE4EXT:=NULL; nPsNodeType := NULL;
2179 sFSKDEVLPROJECT51:=NULL; sFSKDEVLPROJECT5EXT:=NULL; sFSKREFERENCE := NULL;
2180 nImpTreeSeq := NULL;nImpSrcApplicationId:=NULL; nFSKITEMMASTER22:=NULL;
2181
2182 dispositionflag:=0;
2183 FETCH c_imp_psnode INTO
2187 sFSKDEVLPROJECT51,sFSKDEVLPROJECT5EXT,sFSKREFERENCE,nImpTreeSeq, thisRowId,
2184 nImpPlanLevel,sImpOrigsysref,sImpUserstr03,nDevlProjectId, nPsNodeType, nImpName,
2185 sFSKINTLTEXT11,sFSKINTLTEXT1EXT,sFSKITEMMASTER21,sFSKITEMMASTER2EXT,
2186 sFSKPSNODE31,sFSKPSNODE3EXT,sFSKPSNODE41,sFSKPSNODE4EXT,
2188 impMinimum, impMaximum, nImpSrcApplicationId, nFSKITEMMASTER22,nImpIntlTextId,
2189 nImpItemId,nImpInitialValue,nImpParentId,nImpProductFlag,nImpReferenceId,nImpSystemNodeFlag,
2190 nImpTreeSequence,nImpBomTreatment,nImpCompSeqId,nImpBomReqFlag,nImpSoItemTypeCode,nImpMinSel,
2191 nImpMaxSel,nImpEffFrom,nImpEffUntil,nImpDecQtyFlag,nImpPriUOMCode,nImpBOMSortOrder,
2192 nImpIBTrack,nImpInitialNumValue,nImpShipItemFlag,nImpInvTransFlag,
2193 nImpSerItemFlag;
2194 IF(x_usesurr_psnode=1) THEN
2195 sThisFSK:=sImpUserStr03;
2196 ELSE
2197 sThisFSK:=sImpOrigsysref;
2198 END IF;
2199 nThisTreeSeq := nImpTreeSeq;
2200 nDebug := 1006;
2201 x_imp_psnode_psnodeid_f:=c_imp_psnode%FOUND;
2202 EXIT WHEN NOT x_imp_psnode_psnodeid_f;
2203
2204 /* Check that the Online data exists for the 2 FSK */
2205 DECLARE
2206 CURSOR c_onl_itemmaster IS
2207 SELECT ITEM_ID,REF_PART_NBR FROM CZ_ITEM_MASTERS
2208 WHERE ORIG_SYS_REF=sFSKITEMMASTER21 AND deleted_flag = '0'
2209 AND SRC_APPLICATION_ID=nFSKITEMMASTER22;
2210 CURSOR c_onl_itemmaster_usesurr IS
2211 SELECT ITEM_ID,REF_PART_NBR FROM CZ_ITEM_MASTERS
2212 WHERE ORIG_SYS_REF=sFSKITEMMASTER2EXT AND deleted_flag = '0'
2213 AND SRC_APPLICATION_ID=nFSKITEMMASTER22;
2214 BEGIN
2215 nDebug := 1009;
2216 nonlitemid:=NULL; sOnlItemRefPartNbr:=NULL;
2217 IF( x_usesurr_itemmaster = 0 ) THEN
2218 OPEN c_onl_itemmaster;
2219 FETCH c_onl_itemmaster INTO nonlitemid,sOnlItemRefPartNbr;
2220 x_onl_itemmaster_itemid_f:=c_onl_itemmaster%FOUND;
2221 CLOSE c_onl_itemmaster;
2222 ELSE
2223 OPEN c_onl_itemmaster_usesurr;
2224 FETCH c_onl_itemmaster_usesurr INTO nonlitemid,sOnlItemRefPartNbr;
2225 x_onl_itemmaster_itemid_f:=c_onl_itemmaster_usesurr%FOUND;
2226 CLOSE c_onl_itemmaster_usesurr;
2227 END IF;
2228 nDebug := 1010;
2229 END;
2230
2231 /* Check that the Online data exists for the 3 FSK */
2232 DECLARE
2233 CURSOR c_onl_psnode_parentid IS
2234 SELECT PS_NODE_ID, PLAN_LEVEL FROM CZ_IMP_PS_NODES WHERE ORIG_SYS_REF=DECODE(x_usesurr_psnode, 0, sFSKPSNODE31, 1, sFSKPSNODE3EXT)
2235 AND DEVL_PROJECT_ID=nDevlProjectId AND RUN_ID=inRUN_ID
2236 AND ps_node_id IS NOT NULL
2237 AND src_application_id = nImpSrcApplicationId
2238 AND NVL(COMPONENT_SEQUENCE_PATH, -1) = NVL(SUBSTR(nImpTreeSeq, 1, INSTR(nImpTreeSeq, '-', -1, 1) - 1), -1);
2239 BEGIN
2240 nDebug := 1011;
2241 OPEN c_onl_psnode_parentid;
2242 nImpparentid:=NULL;
2243 FETCH c_onl_psnode_parentid INTO nImpparentid, nImpPlanLevel;
2244 x_onl_psnode_parentid_f:=c_onl_psnode_parentid%FOUND;
2245 CLOSE c_onl_psnode_parentid;
2246 nDebug := 1012;
2247 END;
2248
2249 /* Check the PSNODE Data from Online Dbase */
2250 DECLARE
2251 CURSOR c_onl_psnode IS
2252 SELECT PS_NODE_ID,DEVL_PROJECT_ID,INTL_TEXT_ID,ITEM_ID,NAME,
2253 ORIG_SYS_REF,INITIAL_VALUE,PARENT_ID,MINIMUM,MAXIMUM,PS_NODE_TYPE,PRODUCT_FLAG,REFERENCE_ID,
2254 SYSTEM_NODE_FLAG,TREE_SEQ,BOM_TREATMENT,COMPONENT_SEQUENCE_ID,BOM_REQUIRED_FLAG,SO_ITEM_TYPE_CODE,MINIMUM_SELECTED,
2255 MAXIMUM_SELECTED,EFFECTIVE_FROM,EFFECTIVE_UNTIL,DECIMAL_QTY_FLAG,COMPONENT_SEQUENCE_PATH,PRIMARY_UOM_CODE,BOM_SORT_ORDER,
2256 IB_TRACKABLE,INITIAL_NUM_VALUE,SRC_APPLICATION_ID,SHIPPABLE_ITEM_FLAG,INVENTORY_TRANSACTABLE_FLAG,SERIALIZABLE_ITEM_FLAG
2257 FROM CZ_PS_NODES
2258 WHERE ORIG_SYS_REF=DECODE(x_usesurr_psnode,0, sImpOrigsysref, 1, sImpUserstr03)
2259 AND DEVL_PROJECT_ID = nDevlProjectId
2260 AND NVL(COMPONENT_SEQUENCE_PATH, -1) = NVL(nImpTreeSeq, -1)
2261 AND deleted_flag = '0'
2262 AND src_application_id = nImpSrcApplicationId;
2263 BEGIN
2264 nDebug := 1013;
2265 OPEN c_onl_psnode;
2266 nOnlPsnodeId:=NULL;
2267 FETCH c_onl_psnode INTO nOnlPsnodeId,nOnlDevlProjectId,nOnlIntlTextId,
2268 nOnlItemId,nOnlName,nOnlOrigSysRef,nOnlInitialValue,
2269 nOnlParentId,nOnlMin,nOnlMax,nOnlPsNodeType,nOnlProductFlag,
2270 nOnlReferenceId,nOnlSystemNodeFlag,nOnlTreeSeq,nOnlBomTreatment,nOnlCompSeqId,nOnlBomReqFlag,
2271 nOnlSoItemTypeCode, nOnlMinSel,nOnlMaxSel,nOnlEffFrom,nOnlEffUntil,nOnlDecQtyFlag,nOnlCompSeqPath,nOnlPriUOMCode,
2272 nOnlBOMSortOrder,nOnlIBTrack,nOnlInitialNumValue,nOnlSrcAppId,nOnlShipItemFlag,nOnlInvTransFlag,
2273 nOnlSerItemFlag;
2274
2275
2276
2277 x_onl_psnode_psnodeId_f:=c_onl_psnode%FOUND;
2278 CLOSE c_onl_psnode;
2279 nDebug := 1014;
2280 END;
2281
2282 IF(nPsNodeType = cnReference)THEN
2283 DECLARE
2284 CURSOR c_onl_reference IS
2285 SELECT PS_NODE_ID, devl_project_id, item_id, ib_trackable FROM CZ_IMP_PS_NODES
2286 WHERE ORIG_SYS_REF = sFSKREFERENCE
2287 AND RUN_ID=inRun_ID
2288 AND ps_node_id IS NOT NULL;
2289 CURSOR c_model_type IS
2290 SELECT model_type FROM cz_imp_devl_project
2291 WHERE devl_project_id = nDevlProjectId
2292 AND RUN_ID=inRun_ID;
2293 CURSOR c_onl_name IS
2294 SELECT name FROM cz_imp_devl_project
2295 WHERE devl_project_id = nOnlDevlProjectId
2299 WHERE item_id = nReferredItemId;
2296 AND RUN_ID=inRun_ID;
2297 CURSOR c_onl_refpartnbr IS
2298 SELECT ref_part_nbr FROM cz_item_masters
2300 CURSOR c_reference IS
2301 SELECT p.PS_NODE_ID, p.devl_project_id, p.item_id FROM CZ_PS_NODES p, CZ_DEVL_PROJECTS d
2302 WHERE p.ORIG_SYS_REF = sFSKREFERENCE
2303 AND p.ps_node_id = p.persistent_node_id
2304 AND p.deleted_flag = '0'
2305 AND p.ps_node_id = d.devl_project_id
2306 AND d.deleted_flag = '0';
2307
2308 BEGIN
2309 nDebug := 1015;
2310 OPEN c_onl_reference;
2311 nOnlReference := NULL;
2312 FETCH c_onl_reference INTO nOnlReference, nOnlDevlProjectId2, nReferredItemId, ibTrackable;
2313 x_onl_reference_f := c_onl_reference%FOUND;
2314 CLOSE c_onl_reference;
2315 nDebug := 1016;
2316 IF(x_onl_reference_f)THEN
2317
2318 OPEN c_model_type;
2319 FETCH c_model_type INTO nModelType;
2320 CLOSE c_model_type;
2321
2322 IF(sPsNodeName = 'DESCRIPTION')THEN
2323 OPEN c_onl_name;
2324 FETCH c_onl_name INTO localName;
2325 CLOSE c_onl_name;
2326 ELSE
2327 OPEN c_onl_refpartnbr;
2328 FETCH c_onl_refpartnbr INTO localName;
2329 CLOSE c_onl_refpartnbr;
2330 END IF;
2331
2332 tabName(tabName.COUNT + 1) := localName;
2333 tabParentRef(tabParentRef.COUNT + 1) := sFSKPSNODE31;
2334
2335 nCounter := 0;
2336
2337 FOR i IN 1..tabName.COUNT LOOP
2338 IF(tabName(i) = localName AND tabParentRef(i) = sFSKPSNODE31)THEN
2339 nCounter := nCounter + 1;
2340 END IF;
2341 END LOOP;
2342
2343 IF(nCounter > 1)THEN
2344 localName := localName || ' (' || TO_CHAR(nCounter) || ')';
2345 END IF;
2346
2347 -- Stellar bug
2348 ELSE
2349 -- get reference_id, name into localName
2350 -- nOnlReference := cz_imp_single.childModelExists(inRun_Id,inOrgId,inTopId,inExplType);
2351
2352 OPEN c_reference;
2353 nOnlReference := NULL;
2354 FETCH c_reference INTO nOnlReference, nOnlDevlProjectId2, nReferredItemId;
2355 x_onl_reference_f := c_reference%FOUND;
2356 CLOSE c_reference;
2357
2358 tabName(tabName.COUNT + 1) := localName;
2359 tabParentRef(tabParentRef.COUNT + 1) := sFSKPSNODE31;
2360
2361 nCounter := 0;
2362
2363 FOR i IN 1..tabName.COUNT LOOP
2364 IF(tabName(i) = localName AND tabParentRef(i) = sFSKPSNODE31)THEN
2365 nCounter := nCounter + 1;
2366 END IF;
2367 END LOOP;
2368
2369 IF(nCounter > 1)THEN
2370 localName := localName || ' (' || TO_CHAR(nCounter) || ')';
2371 END IF;
2372 -- Stellar bug end
2373 END IF;
2374 END;
2375 ELSE
2376 x_onl_reference_f := TRUE;
2377 END IF;
2378
2379 nDebug := 1017;
2380
2381 IF((NOT x_onl_reference_f OR (nPsNodeType = cnReference AND sFSKREFERENCE IS NULL)) OR
2382 (NOT x_onl_itemmaster_itemid_f AND ((x_usesurr_itemmaster=0 AND sFSKITEMMASTER21 IS NOT NULL) OR
2383 (x_usesurr_itemmaster=1 AND sFSKITEMMASTER2EXT IS NOT NULL))
2384 AND nImpPlanLevel>1) OR
2385 (NOT x_onl_psnode_parentid_f AND nImpPlanLevel<>0) OR
2386 (x_usesurr_psnode=1 AND sImpUserstr03 IS NULL) OR
2387 (x_usesurr_psnode=0 AND sImpOrigsysref IS NULL) OR
2388 nDevlProjectId IS NULL
2389 /*OR (NOT x_onl_devlprj_devlprjid_f) OR
2390 (x_usesurr_devlproject=0 AND sFSKDEVLPROJECT51 IS NULL) OR
2391 (x_usesurr_devlproject=1 AND sFSKDEVLPROJECT5EXT IS NULL)*/) THEN
2392 BEGIN
2393 FAILED:=FAILED+1;
2394 IF(x_usesurr_psnode=1 AND sImpUserstr03 IS NULL) THEN
2395 sRecStatus:='N35';
2396 ELSIF(x_usesurr_psnode=0 AND sImpOrigsysref IS NULL ) THEN
2397 sRecStatus:='N9';
2398 ELSIF(nDevlProjectId IS NULL) THEN
2399 sRecStatus:='N3';
2400 ELSIF(NOT x_onl_itemmaster_itemid_f AND x_usesurr_itemmaster=1 AND sFSKITEMMASTER2EXT IS NOT NULL) THEN
2401 sRecStatus:='F47';
2402 ELSIF(NOT x_onl_itemmaster_itemid_f AND x_usesurr_itemmaster=0 AND sFSKITEMMASTER21 IS NOT NULL) THEN
2403 sRecStatus:='F46';
2404 ELSIF(NOT x_onl_psnode_parentid_f AND nImpPlanLevel<>0 AND x_usesurr_psnode=1 AND sFSKPSNODE3EXT IS NULL) THEN
2405 sRecStatus:='N49';
2406 ELSIF(NOT x_onl_psnode_parentid_f AND nImpPlanLevel<>0 AND x_usesurr_psnode=1) THEN
2407 sRecStatus:='F49';
2408 ELSIF(NOT x_onl_psnode_parentid_f AND nImpPlanLevel<>0 AND x_usesurr_psnode=0 AND sFSKPSNODE31 IS NULL) THEN
2409 sRecStatus:='N48';
2410 ELSIF(NOT x_onl_psnode_parentid_f AND nImpPlanLevel<>0 AND x_usesurr_psnode=0) THEN
2411 sRecStatus:='F48';
2412 ELSIF(NOT x_onl_reference_f AND sFSKREFERENCE IS NULL)THEN
2416 ELSE
2413 sRecStatus:='N52';
2414 ELSIF(NOT x_onl_reference_f AND sFSKREFERENCE IS NOT NULL)THEN
2415 sRecStatus:='F52';
2417 sRecStatus:='XXX';
2418 END IF;
2419 sDisposition:='R';
2420 END;
2421 ELSE
2422 nDebug := 1018;
2423 /* Insert or update */
2424 BEGIN
2425 IF((sLastFSK IS NOT NULL AND sLastFSK=sThisFSK) AND
2426 ((nLastTreeSeq IS NULL AND nPsNodeType = bomModel) OR
2427 (nLastTreeSeq IS NOT NULL AND nLastTreeSeq = nThisTreeSeq))) THEN
2428 /* This is a duplicate record */
2429 sRecStatus:='DUPL';
2430 sDisposition:='R';
2431 nDups:=nDups+1;
2432 ELSE
2433 nDebug := 1019;
2434 BEGIN
2435 sRecStatus:='PASS';
2436
2437 NamePrefix := NULL;
2438
2439
2440 --LA Get exact values that will be xferred from Import to Online table for comparison
2441 SELECT
2442 DECODE(x_usesurr_psnode,1,DECODE(sDISPOSITION,NULL,sImpUserStr03,sImpOrigsysref), sImpOrigsysref),
2443 DECODE(inXFR_GROUP,'GENERIC',nImpName,
2444 NamePrefix || DECODE(nPsNodeType,cnReference,DECODE(localName,NULL,nImpName,localName),
2445 DECODE(sOnlItemRefPartNbr,NULL,nImpName,
2446 DECODE(sPsNodeName,'DESCRIPTION',nImpName,sOnlItemRefPartNbr)))),
2447 DECODE(nPsNodeType,cnReference,nOnlReference,nImpReferenceId)
2448 INTO tmpOrigSysRef, tmpName, tmpReferenceId
2449 FROM DUAL;
2450
2451
2452
2453 dispositionflag:=1;
2454
2455 IF ((nOnlDevlProjectId <> nDevlProjectId) OR (nOnlName <> tmpName) OR (nOnlOrigSysRef <> tmpOrigsysref) OR (nvl(nOnlInitialValue,0) <> nvl(nImpInitialValue,0))
2456 OR (nvl(nOnlMin,0) <> nvl(impMinimum,0)) OR (nvl(nOnlMax,0) <> nvl(impMaximum,0)) OR (nOnlPsNodeType <> nPsNodeType) OR (nOnlProductFlag <> nImpProductFlag)
2457 OR (nvl(nOnlReferenceId,0) <> nvl(tmpReferenceId,0)) OR (nOnlSystemNodeFlag <> nImpSystemNodeFlag) OR (nvl(nOnlBomTreatment,0) <> nvl(nImpBomTreatment,0))
2458 OR (nvl(nOnlCompSeqId,0) <> nvl(nImpCompSeqId,0)) OR (nvl(nOnlBomReqFlag,0) <> nvl(nImpBomReqFlag,0)) OR (nvl(nOnlSoItemTypeCode,0) <> nvl(nImpSoItemTypeCode,0))
2459 OR ( nvl(nOnlMinSel,0) <> nvl(nImpMinSel,0)) OR (nvl(nOnlMaxSel,0) <> nvl(nImpMaxSel,0)) OR (nvl(nOnlEffFrom,sysdate) <> nvl(nImpEffFrom,sysdate))
2460 OR ((nImpEffUntil < nEffUntilCap OR nOnlEffUntil < nEffUntilCap) AND nvl(nOnlEffUntil,sysdate) <> nvl(nImpEffUntil,sysdate))
2461 OR (nOnlDecQtyFlag <> nImpDecQtyFlag) OR (nvl(nOnlCompSeqPath,0) <> nvl(nImpTreeSeq,0)) OR (nOnlPriUOMCode <> nImpPriUOMCode) OR (nOnlBOMSortOrder <> nImpBOMSortOrder)
2462 OR (nOnlIBTrack <> nImpIBTrack) OR (nOnlInitialNumValue <> nImpInitialNumValue) OR (nOnlSrcAppId <> nImpSrcApplicationId) OR (nOnlShipItemFlag <> nImpShipItemFlag)
2463 OR (nOnlInvTransFlag <> nImpInvTransFlag) OR (nOnlSerItemFlag <> nImpSerItemFlag)) THEN
2464 dispositionflag:=0;
2465
2466 END IF ;
2467 IF(x_onl_psnode_psnodeid_f AND dispositionflag=1)THEN
2468 sDisposition:='N';
2469 nNoChangeCount:=nNoChangeCount+1;
2470
2471
2472 ELSIF(x_onl_psnode_psnodeid_f AND dispositionflag=0 ) THEN
2473
2474 nDebug := 1020;
2475 sDisposition:='M';
2476 nUpdateCount:=nUpdateCount+1;
2477
2478 /* We cannot recreate references because we currently have no mechanism
2479 to update model_ref_expl_id of rules' participants
2480
2481 IF(nPsNodeType = cnReference)THEN
2482
2483 UPDATE cz_ps_nodes SET deleted_flag='1' WHERE ps_node_id = nOnlPsnodeId;
2484 cz_refs.delete_Node(nOnlPsnodeId, cnReference, p_out_err, '1');
2485 sDisposition:='I';
2486 nInsertCount:=nInsertCount+1;
2487 nAllocateCounter:=nAllocateCounter+1;
2488 IF(nAllocateCounter=nAllocateBlock)THEN
2489 nAllocateCounter:=0;
2490 SELECT CZ_PS_NODES_S.NEXTVAL INTO nNextValue FROM DUAL;
2491 END IF;
2492 nNextId := nNextValue+nAllocateCounter;
2493 nDebug := 1021;
2494
2495 */
2496
2497
2498
2499
2500 ELSE
2501 /*Insert */
2502 nDebug := 1022;
2503 sDisposition:='I';
2504 nInsertCount:=nInsertCount+1;
2505
2506
2507 IF(nPsNodeType NOT IN (cnModel, bomModel) AND
2508 (nPsNodeType NOT IN (cnProduct, cnComponent) OR nImpParentId IS NOT NULL))THEN
2509
2510 nAllocateCounter:=nAllocateCounter+1;
2511 IF(nAllocateCounter=nAllocateBlock)THEN
2512 nAllocateCounter:=0;
2513 SELECT CZ_PS_NODES_S.NEXTVAL INTO nNextValue FROM DUAL;
2514 END IF;
2515 nNextId := nNextValue+nAllocateCounter;
2516 nDebug := 1023;
2517 ELSE
2518
2519 nNextId := nDevlProjectId;
2520 END IF;
2521 END IF;
2522 END;
2523 END IF;
2524 END;
2525 END IF;
2526 nDebug := 1024;
2527
2528 -- If the reference model is trackable and if its immediate parent BOM
2529 -- is a Container model, set its min/max or 0/N on insert. Don't update on refresh.
2530
2531 IF(nPsNodeType = cnReference AND ibTrackable = '1' AND nModelType = 'N')THEN
2532
2533 IF(sDisposition = 'M' or sDisposition = 'N')THEN
2534 SELECT nvl(MINIMUM,0), nvl(MAXIMUM,-1) INTO sMinimum, sMaximum
2535 FROM CZ_PS_NODES
2536 WHERE PS_NODE_ID = nOnlPsnodeId
2537 AND DELETED_FLAG = '0';
2538 ELSE
2542 END IF;
2539 sMinimum := 0;
2540 sMaximum := -1;
2541 END IF;
2543
2544 -- Don't update min/max for references in a model (PTO)
2545 -- For an existing reference, get min/max values from cz_ps_nodes
2546
2547 DECLARE
2548 CURSOR c_node IS
2549 SELECT model_type
2550 FROM CZ_DEVL_PROJECTS
2551 WHERE DEVL_PROJECT_ID IN (SELECT PARENT_ID FROM CZ_PS_NODES
2552 WHERE PS_NODE_ID = nOnlPsnodeId
2553 AND DELETED_FLAG = '0')
2554 AND DELETED_FLAG = '0';
2555 BEGIN
2556 x_project_f:=false;
2557 IF (nPsNodeType = cnReference) THEN
2558
2559 IF(sDisposition = 'M' OR sDisposition = 'N')THEN
2560 BEGIN
2561 OPEN c_node;
2562 FETCH c_node INTO nModelType;
2563 x_project_f:=c_node%FOUND;
2564 CLOSE c_node;
2565 END;
2566 END IF;
2567
2568 --Bug #2804225. Decided to make import never restore the number of instances,
2569 --therefore removing all the conditions on model_type. nModelType can be equal
2570 --to 'C' for generic import and in this case we want to use the values from
2571 --the import table.
2572
2573 IF (x_project_f AND (nModelType <> 'C')) THEN
2574 SELECT nvl(MINIMUM,1), nvl(MAXIMUM,1) INTO sMinimum, sMaximum
2575 FROM CZ_PS_NODES
2576 WHERE PS_NODE_ID = nOnlPsnodeId
2577 AND DELETED_FLAG = '0';
2578 ELSE
2579 sMinimum := impMinimum;
2580 sMaximum := impMaximum;
2581 END IF;
2582 END IF;
2583 EXCEPTION
2584 WHEN OTHERS THEN null;
2585 END;
2586
2587 /* This Code is added to Preserve the user modified tree_seq in a mixed tree bug # 3495030*/
2588 nOnlMaxtreeSeq_forParent := NULL;
2589 nNextTreeSeq := NULL;
2590 IF (sDisposition = 'I' ) THEN
2591 IF (nvl(thisParentid,0) <> nImpparentid ) THEN
2592 BEGIN
2593 thisParentid := nImpparentid ;
2594
2595 select max(tree_seq) into nOnlMaxtreeSeq_forParent
2596 from cz_ps_nodes
2597 where parent_id = nImpparentid
2598 and deleted_flag = '0';
2599
2600 nNextTreeSeq := nOnlMaxtreeSeq_forParent + 1;
2601 nSameParentTreeSeq := nNextTreeSeq;
2602
2603 EXCEPTION
2604 WHEN OTHERS THEN null;
2605
2606
2607 END;
2608 ELSE
2609 nNextTreeSeq := nSameParentTreeSeq +1;
2610 END IF;
2611 END IF;
2612
2613 /* End Fix for bug # 3495030 */
2614
2615 UPDATE CZ_IMP_PS_NODES SET
2616 ORIG_SYS_REF=DECODE(x_usesurr_psnode,1,DECODE(sDISPOSITION,NULL,sImpUserStr03,ORIG_SYS_REF), ORIG_SYS_REF),
2617 PS_NODE_ID=DECODE(sDISPOSITION,'R',PS_NODE_ID,'I',
2618 DECODE(PS_NODE_TYPE,bomModel,DEVL_PROJECT_ID,cnModel,DEVL_PROJECT_ID,nNextId),nOnlPsnodeId),
2619 ITEM_ID=DECODE(sDISPOSITION,'R',ITEM_ID,nonlitemid),
2620 NAME=DECODE(inXFR_GROUP,'GENERIC',NAME,
2621 NamePrefix || DECODE(sDISPOSITION,'R',NAME,
2622 DECODE(nPsNodeType,cnReference,DECODE(localName,NULL,NAME,localName),
2623 DECODE(sOnlItemRefPartNbr,NULL,NAME,
2624 DECODE(sPsNodeName,'DESCRIPTION',NAME,sOnlItemRefPartNbr))))),
2625 PARENT_ID=DECODE(sDISPOSITION,'R',PARENT_ID,nImpparentid),
2626 REFERENCE_ID=DECODE(sDISPOSITION,'R',REFERENCE_ID,DECODE(PS_NODE_TYPE,cnReference,nOnlReference,REFERENCE_ID)),
2627 MINIMUM = DECODE(nPsNodeType,cnReference,sMinimum, MINIMUM),
2628 MAXIMUM = DECODE(nPsNodeType,cnReference,sMaximum, MAXIMUM),
2629 --------------------bug3495030
2630 TREE_SEQ = DECODE(sDISPOSITION,'I',nvl(nNextTreeSeq,TREE_SEQ),TREE_SEQ),
2631 DISPOSITION=sDisposition,
2632 REC_STATUS=sRecStatus
2633 WHERE ROWID = thisRowId;
2634
2635 nDebug := 1025;
2636 IF(x_usesurr_psnode=1) THEN
2637 sLastFSK:=sImpUserStr03;
2638 ELSE
2639 sLastFSK:=sImpOrigsysref;
2640 END IF;
2641 nLastTreeSeq := nThisTreeSeq;
2642 nDebug := 1026;
2643 /* Return if MAX_ERR is reached */
2644 IF (FAILED >= MAX_ERR) THEN
2645 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.KRS_PS_NODE',11276,inRun_Id);
2646 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
2647 END IF;
2648 sDisposition:=NULL; sRecStatus:=NULL;
2649
2650 END LOOP;
2651 /* No more data */
2652
2653 CLOSE c_imp_psnode;
2654 COMMIT;
2655 nDebug := 1027;
2656 INSERTS:=nInsertCount;
2657 UPDATES:=nUpdateCount;
2658 DUPS:=nDups;
2659 NOCHANGE:=nNoChangeCount;
2660
2661 EXCEPTION
2662 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
2663 RAISE;
2664 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
2665 RAISE;
2666 WHEN OTHERS THEN
2667 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.KRS_PS_NODE',nDebug,inRun_ID);
2668 RAISE;
2669 END KRS_PS_NODE;
2670
2671 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
2672
2673 PROCEDURE CND_PS_NODE(inRUN_ID IN PLS_INTEGER,
2677 ) IS
2674 COMMIT_SIZE IN PLS_INTEGER,
2675 MAX_ERR IN PLS_INTEGER,
2676 FAILED IN OUT NOCOPY PLS_INTEGER
2678
2679 CURSOR c_imp_psnode IS
2680 SELECT DELETED_FLAG, SYSTEM_NODE_FLAG, SRC_APPLICATION_ID, ORIG_SYS_REF,
2681 PS_NODE_TYPE, MINIMUM, MAXIMUM, INSTANTIABLE_FLAG, NAME, FSK_DEVLPROJECT_5_1,
2682 FSK_PSNODE_3_1, FSK_PSNODE_3_EXT, REFERENCE_ID, INITIAL_NUM_VALUE, DECIMAL_QTY_FLAG,
2683 MINIMUM_SELECTED, MAXIMUM_SELECTED, UI_OMIT, DISPLAY_IN_SUMMARY_FLAG, ROWID
2684 FROM CZ_IMP_PS_NODES
2685 WHERE REC_STATUS IS NULL AND RUN_ID = inRUN_ID;
2686 /* Internal vars */
2687 nCommitCount PLS_INTEGER:=0; /*COMMIT buffer index */
2688 nErrorCount PLS_INTEGER:=0; /*Error index */
2689 nFailed PLS_INTEGER:=0; /*Failed records */
2690 nDups PLS_INTEGER:=0; /*Dupl records */
2691 x_error BOOLEAN:=FALSE;
2692
2693
2694 /*Cursor Var for Import */
2695 p_imp_psnode c_imp_psnode%ROWTYPE;
2696 x_imp_psnode_f BOOLEAN:=FALSE;
2697 l_disposition cz_imp_ps_nodes.disposition%TYPE;
2698 l_rec_status cz_imp_ps_nodes.rec_status%TYPE;
2699
2700 sInstantiableFlag cz_ps_nodes.instantiable_flag%type;
2701 l_msg VARCHAR2(255);
2702 l_model_name cz_devl_projects.name%type;
2703 l_debug NUMBER;
2704 l_minimum cz_imp_ps_nodes.minimum%TYPE;
2705 l_maximum cz_imp_ps_nodes.maximum%TYPE;
2706 l_minimum_selected cz_imp_ps_nodes.minimum_selected%TYPE;
2707 l_maximum_selected cz_imp_ps_nodes.maximum_selected%TYPE;
2708
2709 BEGIN
2710
2711 --
2712 -- All dups are rejected because we don't know which to accept, GENERIC IMPORT ONLY
2713 --
2714
2715 UPDATE cz_imp_ps_nodes a
2716 SET disposition = 'R', rec_status = 'DUP'
2717 WHERE run_id = inRun_ID
2718 AND rec_status IS NULL
2719 AND EXISTS (SELECT count(*), orig_sys_ref,fsk_devlproject_5_1,src_application_id
2720 FROM cz_imp_ps_nodes
2721 WHERE run_id = a.run_id
2722 AND rec_status IS NULL
2723 AND orig_sys_ref = a.orig_sys_ref
2724 AND fsk_devlproject_5_1 = a.fsk_devlproject_5_1
2725 AND src_application_id = a.src_application_id
2726 AND src_application_id <> 702
2727 GROUP BY orig_sys_ref, fsk_devlproject_5_1, src_application_id
2728 HAVING count(*) > 1);
2729
2730 IF (SQL%ROWCOUNT > 0 ) THEN
2731 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_DUPS', 'PSNODES', SQL%ROWCOUNT);
2732 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2733 END IF;
2734
2735 OPEN c_imp_psnode;
2736 LOOP
2737 FETCH c_imp_psnode INTO p_imp_psnode;
2738 x_imp_psnode_f:=c_imp_psnode%FOUND;
2739
2740 EXIT WHEN NOT x_imp_psnode_f;
2741
2742 IF(FAILED >= MAX_ERR) THEN
2743 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2744 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
2745 END IF;
2746
2747 l_disposition := NULL;
2748 l_rec_status := NULL;
2749 l_minimum_selected := p_imp_psnode.minimum_selected;
2750 l_maximum_selected := p_imp_psnode.maximum_selected;
2751
2752 -- validate min and max for root nodes
2753 IF (p_imp_psnode.FSK_PSNODE_3_1 IS NULL AND p_imp_psnode.FSK_PSNODE_3_EXT IS NULL
2754 AND p_imp_psnode.PS_NODE_TYPE <> bomModel) THEN
2755 IF (p_imp_psnode.MINIMUM IS NOT NULL AND p_imp_psnode.MINIMUM <> 1) OR
2756 (p_imp_psnode.MAXIMUM IS NOT NULL AND p_imp_psnode.MAXIMUM <> 1) THEN
2757
2758 l_disposition:='R';
2759
2760 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_ROOT_MINMAX',
2761 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2762 'OSR', p_imp_psnode.ORIG_SYS_REF
2763 );
2764 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2765 END IF;
2766 IF p_imp_psnode.minimum IS NULL THEN
2767 l_minimum:=1;
2768 ELSE
2769 l_minimum:=p_imp_psnode.minimum;
2770 END IF;
2771 IF p_imp_psnode.maximum IS NULL THEN
2772 l_maximum:=1;
2773 ELSE
2774 l_maximum:=p_imp_psnode.maximum;
2775 END IF;
2776
2777 -- ui_omit flag cannot be '1' for root nodes
2778
2779 IF p_imp_psnode.ui_omit = '1' THEN
2780
2781 l_disposition:='R';
2782
2783 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_ROOT_UI_OMIT',
2784 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2785 'OSR', p_imp_psnode.ORIG_SYS_REF
2786 );
2787 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2788 END IF;
2789
2793 END IF;
2790 ELSE
2791 l_minimum:=p_imp_psnode.minimum;
2792 l_maximum:=p_imp_psnode.maximum;
2794
2795 -- validate min/max and initial values for BOM standard items and BOM option calsses,
2796 -- and convert to integers if decimal
2797
2798 IF (p_imp_psnode.PS_NODE_TYPE IN (bomStandard, bomOptionClass)) THEN
2799 IF (p_imp_psnode.DECIMAL_QTY_FLAG = '0') THEN
2800 l_minimum := CEIL(p_imp_psnode.minimum);
2801 IF (p_imp_psnode.maximum <> -1) THEN
2802 l_maximum := FLOOR(p_imp_psnode.maximum);
2803 ELSE
2804 l_maximum := p_imp_psnode.maximum;
2805 END IF;
2806
2807 IF (p_imp_psnode.initial_num_value IS NOT NULL AND
2808 MOD(p_imp_psnode.initial_num_value,FLOOR(p_imp_psnode.initial_num_value)) <> 0) THEN
2809 l_disposition := 'R';
2810 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_INV_INIT_VALUE',
2811 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2812 'OSR', p_imp_psnode.ORIG_SYS_REF
2813 );
2814 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2815 END IF;
2816
2817 IF (l_minimum > l_maximum AND l_maximum <> -1) THEN
2818 l_disposition := 'R';
2819 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_INV_MINMAX',
2820 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2821 'OSR', p_imp_psnode.ORIG_SYS_REF
2822 );
2823 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2824 END IF;
2825 END IF;
2826 END IF;
2827
2828 -- validate min/max and initial values for references,
2829 -- and convert to integers if decimal
2830
2831 IF (p_imp_psnode.PS_NODE_TYPE = cnReference) THEN
2832 IF (p_imp_psnode.DECIMAL_QTY_FLAG = '0') THEN
2833 l_minimum_selected := CEIL(p_imp_psnode.minimum_selected);
2834 IF (p_imp_psnode.maximum_selected <> -1) THEN
2835 l_maximum_selected := FLOOR(p_imp_psnode.maximum_selected);
2836 ELSE
2837 l_maximum_selected := p_imp_psnode.maximum_selected;
2838 END IF;
2839
2840 IF (p_imp_psnode.initial_num_value IS NOT NULL AND
2841 MOD(p_imp_psnode.initial_num_value,FLOOR(p_imp_psnode.initial_num_value)) <> 0) THEN
2842 l_disposition := 'R';
2843 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_INV_INIT_VALUE',
2844 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2845 'OSR', p_imp_psnode.ORIG_SYS_REF
2846 );
2847 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2848 END IF;
2849
2850 IF (l_minimum_selected > l_maximum_selected AND l_maximum_selected <> -1) THEN
2851 l_disposition := 'R';
2852 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_INV_MINMAX',
2853 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2854 'OSR', p_imp_psnode.ORIG_SYS_REF
2855 );
2856 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2857 END IF;
2858 END IF;
2859 END IF;
2860
2861 IF p_imp_psnode.PS_NODE_TYPE NOT IN (cnComponent,cnFeature,cnOption,cnReference,cnConnector,
2862 cnTotal,cnResource,bomModel,bomOptionClass,bomStandard) THEN
2863 l_disposition := 'R';
2864
2865 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_TYPE_INVALID',
2866 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2867 'OSR', p_imp_psnode.ORIG_SYS_REF
2868 );
2869 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2870 END IF;
2871
2872 IF(p_imp_psnode.NAME IS NULL) THEN
2873
2874 l_disposition:='R';
2875
2876 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_NAME_IS_NULL',
2877 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2878 'OSR', p_imp_psnode.ORIG_SYS_REF
2879 );
2880 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2881 END IF;
2882
2883 IF(p_imp_psnode.PS_NODE_TYPE NOT IN (cnReference,cnConnector) AND
2884 p_imp_psnode.REFERENCE_ID IS NOT NULL) THEN
2885
2886 l_disposition := 'R';
2887
2888 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_REFID_NULL',
2889 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2890 'OSR', p_imp_psnode.ORIG_SYS_REF
2891 );
2895 IF(p_imp_psnode.INSTANTIABLE_FLAG IS NULL) THEN
2892 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2893 END IF;
2894
2896 sInstantiableFlag := NULL;
2897 IF(p_imp_psnode.PS_NODE_TYPE = bomModel)THEN
2898 sInstantiableFlag := '2';
2899 ELSIF(p_imp_psnode.PS_NODE_TYPE IN (cnReference, cnComponent, cnProduct)) THEN
2900 IF(p_imp_psnode.MINIMUM = 1 AND p_imp_psnode.MAXIMUM = 1)THEN
2901 sInstantiableFlag := '2';
2902 ELSIF(p_imp_psnode.MINIMUM = 0 AND p_imp_psnode.MAXIMUM = 1)THEN
2903 sInstantiableFlag := '1';
2904 ELSE
2905 sInstantiableFlag := '4';
2906 END IF;
2907 END IF;
2908 ELSE
2909 IF(p_imp_psnode.PS_NODE_TYPE IN (cnReference, cnComponent, cnProduct)) THEN
2910 IF (p_imp_psnode.MINIMUM = 1 AND p_imp_psnode.MAXIMUM = 1 AND p_imp_psnode.INSTANTIABLE_FLAG <> '2') THEN
2911 l_disposition := 'R';
2912 ELSIF(p_imp_psnode.MINIMUM = 0 AND p_imp_psnode.MAXIMUM = 1 AND p_imp_psnode.INSTANTIABLE_FLAG <> '1') THEN
2913 l_disposition := 'R';
2914 END IF;
2915 ELSIF(p_imp_psnode.PS_NODE_TYPE = bomModel AND p_imp_psnode.INSTANTIABLE_FLAG <> '2') THEN
2916 l_disposition := 'R';
2917 END IF;
2918
2919 IF (l_disposition = 'R') THEN
2920 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_INSTFLAG',
2921 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2922 'OSR', p_imp_psnode.ORIG_SYS_REF
2923 );
2924 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2925 END IF;
2926 END IF;
2927
2928 IF (p_imp_psnode.DISPLAY_IN_SUMMARY_FLAG NOT IN (NULL,'1')) THEN
2929 l_disposition := 'R';
2930 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_PSNODE_SUMRY_FLAG',
2931 'MODELNAME', p_imp_psnode.FSK_DEVLPROJECT_5_1,
2932 'OSR', p_imp_psnode.ORIG_SYS_REF
2933 );
2934 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2935 END IF;
2936
2937 IF l_disposition='R' THEN
2938 FAILED:=FAILED+1;
2939 l_rec_status:='FAIL';
2940 END IF;
2941
2942 UPDATE cz_imp_ps_nodes SET
2943 deleted_flag=DECODE(deleted_flag,NULL,'0',deleted_flag),
2944 system_node_flag=DECODE(system_node_flag,NULL,'0',SYSTEM_NODE_FLAG),
2945 instantiable_flag=DECODE(instantiable_flag,NULL,sInstantiableFlag,instantiable_flag),
2946 src_application_id=DECODE(src_application_id,NULL,cnDefSrcAppId,src_application_id),
2947 minimum=l_minimum,
2948 maximum=l_maximum,
2949 minimum_selected=l_minimum_selected,
2950 maximum_selected=l_maximum_selected,
2951 disposition=l_disposition,
2952 rec_status=l_rec_status
2953 WHERE ROWID = p_imp_psnode.ROWID;
2954 nCOmmitCount:=nCommitCount+1;
2955 /* COMMIT if the buffer size is reached */
2956 IF (nCommitCount>= COMMIT_SIZE) THEN
2957 COMMIT;
2958 nCommitCount:=0;
2959 END IF;
2960
2961
2962 END LOOP;
2963 CLOSE c_imp_psnode;
2964
2965 EXCEPTION
2966 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
2967 RAISE;
2968 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
2969 RAISE;
2970 WHEN OTHERS THEN
2971 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.CND_PS_NODE',11276,inRun_Id);
2972 RAISE;
2973 END CND_PS_NODE ;
2974
2975 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
2976 PROCEDURE MAIN_PS_NODE (inRUN_ID IN PLS_INTEGER,
2977 COMMIT_SIZE IN PLS_INTEGER,
2978 MAX_ERR IN PLS_INTEGER,
2979 INSERTS IN OUT NOCOPY PLS_INTEGER,
2980 UPDATES IN OUT NOCOPY PLS_INTEGER,
2981 FAILED IN OUT NOCOPY PLS_INTEGER,
2982 DUPS IN OUT NOCOPY PLS_INTEGER,
2983 NOCHANGE IN OUT NOCOPY PLS_INTEGER,
2984 inXFR_GROUP IN VARCHAR2
2985 ) IS
2986
2987 /* Internal vars */
2988 nCommitCount PLS_INTEGER:=0; /*COMMIT buffer index */
2989 nErrorCount PLS_INTEGER:=0; /*Error index */
2990 nXfrInsertCount PLS_INTEGER:=0; /*Inserts */
2991 nXfrUpdateCount PLS_INTEGER:=0; /*Updates */
2992 nFailed PLS_INTEGER:=0; /*Failed records */
2993 nDups PLS_INTEGER:=0; /*Dupl records */
2994 nNoChangeCount PLS_INTEGER:=0; /*No Change records */
2995 x_error BOOLEAN:=FALSE;
2996 dummy CHAR(1);
2997
2998 st_time number;
2999 end_time number;
3000 loop_end_time number;
3001 insert_end_time number;
3002 d_str varchar2(255);
3003
3004 -- bug 9496782
3005 genStatisticsCz PLS_INTEGER;
3006 v_settings_id VARCHAR2(40);
3007 v_section_name VARCHAR2(30);
3008
3009 BEGIN
3010
3011 BEGIN
3012 SELECT 'X' INTO dummy FROM CZ_XFR_RUN_INFOS WHERE RUN_ID=inRUN_ID;
3016 LAST_ACTIVITY=SYSDATE
3013
3014 UPDATE CZ_XFR_RUN_INFOS SET
3015 STARTED=SYSDATE,
3017 WHERE RUN_ID=inRUN_ID;
3018
3019 EXCEPTION
3020 WHEN NO_DATA_FOUND THEN
3021 INSERT INTO CZ_XFR_RUN_INFOS (RUN_ID,STARTED,LAST_ACTIVITY)
3022 VALUES(inRUN_ID,SYSDATE,SYSDATE);
3023 WHEN OTHERS THEN
3024 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.MAIN_PS_NODE',11276,inRun_Id);
3025 RAISE CZ_ADMIN.IMP_UNEXP_SQL_ERROR;
3026 END;
3027
3028 if (CZ_IMP_ALL.get_time) then
3029 st_time := dbms_utility.get_time();
3030 end if;
3031
3032 CND_PS_NODE (inRun_ID,COMMIT_SIZE,MAX_ERR,FAILED);
3033
3034 if (CZ_IMP_ALL.get_time) then
3035 end_time := dbms_utility.get_time();
3036 d_str := inRun_id || ' CND ps :' || (end_time-st_time)/100.00;
3037 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'CND',11299,inRun_Id);
3038 end if;
3039
3040 KRS_PS_NODE (inRUN_ID,COMMIT_SIZE,MAX_ERR,INSERTS,UPDATES,FAILED,DUPS,NOCHANGE,inXFR_GROUP);
3041
3042 if (CZ_IMP_ALL.get_time) then
3043 end_time := dbms_utility.get_time();
3044 d_str := inRun_id || ' KRS ps :' || (end_time-st_time)/100.00;
3045 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'KRS',11299,inRun_Id);
3046 end if;
3047
3048 --bug 9496782 Added this section for gather stats
3049
3050 --Depending on db setting, generate the statistics here for the tables used in the queries bellow.
3051
3052 v_settings_id := 'GENSTATISTICSCZ';
3053 v_section_name := 'IMPORT';
3054
3055 BEGIN
3056 SELECT decode(upper(VALUE),'TRUE','1','FALSE','0','T','1','F','0','1','1','0','0','YES','1','NO','0','Y','1','N','0','0')
3057 INTO genStatisticsCz FROM CZ_DB_SETTINGS
3058 WHERE upper(SETTING_ID)=v_settings_id AND SECTION_NAME=v_section_name;
3059 EXCEPTION
3060 WHEN OTHERS THEN
3061 genStatisticsCz := 0;
3062 END;
3063
3064 IF(genStatisticsCz = 1)THEN
3065 x_error:=cz_utils.log_report('Gather Stats : Start' ,1,'CZ_IMP_PS_NODE.XFR',11299,inRun_Id);
3066 fnd_stats.gather_table_stats('CZ', 'CZ_IMP_PS_NODES');
3067 fnd_stats.gather_table_stats('CZ', 'CZ_IMP_DEVL_PROJECT');
3068 fnd_stats.gather_table_stats('CZ', 'CZ_PS_NODES');
3069 x_error:=cz_utils.log_report('Gather Stats : End' ,1,'CZ_IMP_PS_NODE.XFR',11299,inRun_Id);
3070
3071 if (CZ_IMP_ALL.get_time) then
3072 end_time := dbms_utility.get_time();
3073 d_str := inRun_id || ' XFR gather_stats :' || (end_time-st_time)/100.00;
3074 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'XFR',11299,inRun_Id);
3075 end if;
3076 END IF;
3077
3078 XFR_PS_NODE (inRUN_ID,COMMIT_SIZE,MAX_ERR,nXfrInsertCount,nXfrUpdateCount,FAILED,nNoChangeCount,inXFR_GROUP);
3079
3080 if (CZ_IMP_ALL.get_time) then
3081 end_time := dbms_utility.get_time();
3082 d_str := inRun_id || ' XFR ps :' || (end_time-st_time)/100.00;
3083 x_ERROR:=CZ_UTILS.LOG_REPORT(d_str,1,'XFR',11299,inRun_Id);
3084 end if;
3085
3086 /* Report Insert Errors */
3087 IF (nXfrInsertCount<> INSERTS) THEN
3088 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_INSERTERRORS','RESOLVED',to_char(INSERTS),'ACTUAL',to_char(nXfrInsertCount)),1,'IMP_IM_PS_NODE.MAIN_PS_NODE',11276,inRun_Id);
3089 END IF;
3090
3091 /* Report Update Errors */
3092 IF (nXfrUpdateCount<> UPDATES) THEN
3093 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_UPDATEERRORS','RESOLVED',to_char(UPDATES),'ACTUAL',to_char(nXfrUpdateCount)),1,'IMP_IM_PS_NODE.MAIN_PS_NODE',11276,inRun_Id);
3094 END IF;
3095 /* Report NoChange Errors */
3096 IF(nNoChangeCount<> NOCHANGE) THEN
3097 x_error:=CZ_UTILS.LOG_REPORT('No Change count: Key resolution - ' || to_char(NOCHANGE) || ', Actual-' || to_char(nNoChangeCount),1,'IMP_IM_PS_NODE.MAIN_PS_NODE ',11276,inRun_Id);
3098 END IF;
3099
3100 /* Return the transferred number of rows and not the number of rows with keys resolved*/
3101 INSERTS:=nXfrInsertCount;
3102 UPDATES:=nXfrUpdateCount;
3103 NOCHANGE:=nNoChangeCount;
3104
3105 CZ_IMP_PS_NODE.RPT_PS_NODE(inRUN_ID);
3106
3107 END MAIN_PS_NODE ;
3108
3109 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
3110
3111 PROCEDURE XFR_PS_NODE (inRUN_ID IN PLS_INTEGER,
3112 COMMIT_SIZE IN PLS_INTEGER,
3113 MAX_ERR IN PLS_INTEGER,
3114 INSERTS IN OUT NOCOPY PLS_INTEGER,
3115 UPDATES IN OUT NOCOPY PLS_INTEGER,
3116 FAILED IN OUT NOCOPY PLS_INTEGER,
3117 NOCHANGE IN OUT NOCOPY PLS_INTEGER,--VR
3118 inXFR_GROUP IN VARCHAR2
3119 ) IS
3120
3121 TYPE tPsNodeId IS TABLE OF cz_imp_ps_nodes.ps_node_id%TYPE INDEX BY BINARY_INTEGER;
3122 TYPE tDevlProjectId IS TABLE OF cz_imp_ps_nodes.devl_project_id%TYPE INDEX BY BINARY_INTEGER;
3123 TYPE tFromPopulatorId IS TABLE OF cz_imp_ps_nodes.from_populator_id%TYPE INDEX BY BINARY_INTEGER;
3124 TYPE tPropertyBackptr IS TABLE OF cz_imp_ps_nodes.property_backptr%TYPE INDEX BY BINARY_INTEGER;
3125 TYPE tItemTypeBackptr IS TABLE OF cz_imp_ps_nodes.item_type_backptr%TYPE INDEX BY BINARY_INTEGER;
3126 TYPE tIntlTextId IS TABLE OF cz_imp_ps_nodes.intl_text_id%TYPE INDEX BY BINARY_INTEGER;
3127 TYPE tSubConsId IS TABLE OF cz_imp_ps_nodes.sub_cons_id%TYPE INDEX BY BINARY_INTEGER;
3128 TYPE tItemId IS TABLE OF cz_imp_ps_nodes.item_id%TYPE INDEX BY BINARY_INTEGER;
3132 TYPE tInitialNumValue IS TABLE OF cz_imp_ps_nodes.initial_num_value%TYPE INDEX BY BINARY_INTEGER;
3129 TYPE tName IS TABLE OF cz_imp_ps_nodes.name%TYPE INDEX BY BINARY_INTEGER;
3130 TYPE tResourceFlag IS TABLE OF cz_imp_ps_nodes.resource_flag%TYPE INDEX BY BINARY_INTEGER;
3131 TYPE tInitialValue IS TABLE OF cz_imp_ps_nodes.initial_value%TYPE INDEX BY BINARY_INTEGER;
3133 TYPE tParentId IS TABLE OF cz_imp_ps_nodes.parent_id%TYPE INDEX BY BINARY_INTEGER;
3134 TYPE tMinimum IS TABLE OF cz_imp_ps_nodes.minimum%TYPE INDEX BY BINARY_INTEGER;
3135 TYPE tMaximum IS TABLE OF cz_imp_ps_nodes.maximum%TYPE INDEX BY BINARY_INTEGER;
3136 TYPE tPsNodeType IS TABLE OF cz_imp_ps_nodes.ps_node_type%TYPE INDEX BY BINARY_INTEGER;
3137 TYPE tFeatureType IS TABLE OF cz_imp_ps_nodes.feature_type%TYPE INDEX BY BINARY_INTEGER;
3138 TYPE tProductFlag IS TABLE OF cz_imp_ps_nodes.product_flag%TYPE INDEX BY BINARY_INTEGER;
3139 TYPE tReferenceId IS TABLE OF cz_imp_ps_nodes.reference_id%TYPE INDEX BY BINARY_INTEGER;
3140 TYPE tMultiConfigFlag IS TABLE OF cz_imp_ps_nodes.multi_config_flag%TYPE INDEX BY BINARY_INTEGER;
3141 TYPE tOrderSeqFlag IS TABLE OF cz_imp_ps_nodes.order_seq_flag%TYPE INDEX BY BINARY_INTEGER;
3142 TYPE tSystemNodeFlag IS TABLE OF cz_imp_ps_nodes.system_node_flag%TYPE INDEX BY BINARY_INTEGER;
3143 TYPE tTreeSeq IS TABLE OF cz_imp_ps_nodes.tree_seq%TYPE INDEX BY BINARY_INTEGER;
3144 TYPE tCountedOptionsFlag IS TABLE OF cz_imp_ps_nodes.counted_options_flag%TYPE INDEX BY BINARY_INTEGER;
3145 TYPE tUiOmit IS TABLE OF cz_imp_ps_nodes.ui_omit%TYPE INDEX BY BINARY_INTEGER;
3146 TYPE tUiSection IS TABLE OF cz_imp_ps_nodes.ui_section%TYPE INDEX BY BINARY_INTEGER;
3147 TYPE tBomTreatment IS TABLE OF cz_imp_ps_nodes.bom_treatment%TYPE INDEX BY BINARY_INTEGER;
3148 TYPE tOrigSysRef IS TABLE OF cz_imp_ps_nodes.orig_sys_ref%TYPE INDEX BY BINARY_INTEGER;
3149 TYPE tCheckoutUser IS TABLE OF cz_imp_ps_nodes.checkout_user%TYPE INDEX BY BINARY_INTEGER;
3150 TYPE tDisposition IS TABLE OF cz_imp_ps_nodes.disposition%TYPE INDEX BY BINARY_INTEGER;
3151 TYPE tRecStatus IS TABLE OF cz_imp_ps_nodes.rec_status%TYPE INDEX BY BINARY_INTEGER;
3152 TYPE tDeletedFlag IS TABLE OF cz_imp_ps_nodes.deleted_flag%TYPE INDEX BY BINARY_INTEGER;
3153 TYPE tEffectiveFrom IS TABLE OF cz_imp_ps_nodes.effective_from%TYPE INDEX BY BINARY_INTEGER;
3154 TYPE tEffectiveUntil IS TABLE OF cz_imp_ps_nodes.effective_until%TYPE INDEX BY BINARY_INTEGER;
3155 TYPE tEffectiveUsageMask IS TABLE OF cz_imp_ps_nodes.EFFECTIVE_USAGE_MASK%TYPE INDEX BY BINARY_INTEGER;
3156 TYPE tUserStr01 IS TABLE OF cz_imp_ps_nodes.USER_STR01%TYPE INDEX BY BINARY_INTEGER;
3157 TYPE tUserStr02 IS TABLE OF cz_imp_ps_nodes.USER_STR02%TYPE INDEX BY BINARY_INTEGER;
3158 TYPE tUserStr03 IS TABLE OF cz_imp_ps_nodes.USER_STR03%TYPE INDEX BY BINARY_INTEGER;
3159 TYPE tUserStr04 IS TABLE OF cz_imp_ps_nodes.USER_STR04%TYPE INDEX BY BINARY_INTEGER;
3160 TYPE tUserNum01 IS TABLE OF cz_imp_ps_nodes.USER_NUM01%TYPE INDEX BY BINARY_INTEGER;
3161 TYPE tUserNum02 IS TABLE OF cz_imp_ps_nodes.USER_NUM02%TYPE INDEX BY BINARY_INTEGER;
3162 TYPE tUserNum03 IS TABLE OF cz_imp_ps_nodes.USER_NUM03%TYPE INDEX BY BINARY_INTEGER;
3163 TYPE tUserNum04 IS TABLE OF cz_imp_ps_nodes.USER_NUM04%TYPE INDEX BY BINARY_INTEGER;
3164 TYPE tCreationDate IS TABLE OF cz_imp_ps_nodes.CREATION_DATE%TYPE INDEX BY BINARY_INTEGER;
3165 TYPE tLastUpdateDate IS TABLE OF cz_imp_ps_nodes.LAST_UPDATE_DATE%TYPE INDEX BY BINARY_INTEGER;
3166 TYPE tCreatedBy IS TABLE OF cz_imp_ps_nodes.CREATED_BY%TYPE INDEX BY BINARY_INTEGER;
3167 TYPE tLastUpdatedBy IS TABLE OF cz_imp_ps_nodes.LAST_UPDATED_BY%TYPE INDEX BY BINARY_INTEGER;
3168 TYPE tSecurityMask IS TABLE OF cz_imp_ps_nodes.SECURITY_MASK%TYPE INDEX BY BINARY_INTEGER;
3169 TYPE tPlanLevel IS TABLE OF cz_imp_ps_nodes.PLAN_LEVEL%TYPE INDEX BY BINARY_INTEGER;
3170 TYPE tSoItemTypeCode IS TABLE OF cz_imp_ps_nodes.SO_ITEM_TYPE_CODE%TYPE INDEX BY BINARY_INTEGER;
3171 TYPE tMinimumSelected IS TABLE OF cz_imp_ps_nodes.MINIMUM_SELECTED%TYPE INDEX BY BINARY_INTEGER;
3172 TYPE tMaximumSelected IS TABLE OF cz_imp_ps_nodes.MAXIMUM_SELECTED%TYPE INDEX BY BINARY_INTEGER;
3173 TYPE tBomRequired IS TABLE OF cz_imp_ps_nodes.BOM_REQUIRED%TYPE INDEX BY BINARY_INTEGER;
3174 TYPE tComponentSequenceId IS TABLE OF cz_imp_ps_nodes.COMPONENT_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
3175 TYPE tOrganizationId IS TABLE OF cz_imp_ps_nodes.ORGANIZATION_ID%TYPE INDEX BY BINARY_INTEGER;
3176 TYPE tTopItemId IS TABLE OF cz_imp_ps_nodes.TOP_ITEM_ID%TYPE INDEX BY BINARY_INTEGER;
3177 TYPE tExplosionType IS TABLE OF cz_imp_ps_nodes.EXPLOSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
3178 TYPE tDecimalQtyFlag IS TABLE OF cz_imp_ps_nodes.DECIMAL_QTY_FLAG%TYPE INDEX BY BINARY_INTEGER;
3179 TYPE tInstantiableFlag IS TABLE OF cz_imp_ps_nodes.INSTANTIABLE_FLAG%TYPE INDEX BY BINARY_INTEGER;
3180 TYPE tQuoteableFlag IS TABLE OF cz_imp_ps_nodes.QUOTEABLE_FLAG%TYPE INDEX BY BINARY_INTEGER;
3181 TYPE tPrimaryUomCode IS TABLE OF cz_imp_ps_nodes.PRIMARY_UOM_CODE%TYPE INDEX BY BINARY_INTEGER;
3182 TYPE tBomSortOrder IS TABLE OF cz_imp_ps_nodes.BOM_SORT_ORDER%TYPE INDEX BY BINARY_INTEGER;
3183 TYPE tComponentSequencePath IS TABLE OF cz_imp_ps_nodes.COMPONENT_SEQUENCE_PATH%TYPE INDEX BY BINARY_INTEGER;
3184 TYPE tIbTrackable IS TABLE OF cz_imp_ps_nodes.IB_TRACKABLE%TYPE INDEX BY BINARY_INTEGER;
3185 TYPE tSrcApplicationId IS TABLE OF cz_imp_ps_nodes.SRC_APPLICATION_ID%TYPE INDEX BY BINARY_INTEGER;
3186 TYPE tChar_tbl IS TABLE OF VARCHAR2(1) INDEX BY BINARY_INTEGER;
3187 TYPE tModelType IS TABLE OF cz_imp_devl_project.MODEL_TYPE%TYPE INDEX BY BINARY_INTEGER;
3188 TYPE tDisplayInSummaryFlag IS TABLE OF cz_imp_ps_nodes.DISPLAY_IN_SUMMARY_FLAG%TYPE INDEX BY BINARY_INTEGER;
3189 TYPE tIBLinkItemFlag IS TABLE OF cz_imp_ps_nodes.IB_LINK_ITEM_FLAG%TYPE INDEX BY BINARY_INTEGER;
3190
3191 TYPE tPSShippableItemFlag IS TABLE OF cz_imp_ps_nodes.shippable_item_flag%TYPE INDEX BY BINARY_INTEGER;
3195
3192 TYPE tInventoryTransactableFlag IS TABLE OF cz_imp_ps_nodes.inventory_transactable_flag%TYPE INDEX BY BINARY_INTEGER;
3193 TYPE tAssembleToOrderFlag IS TABLE OF cz_imp_ps_nodes.assemble_to_order_flag%TYPE INDEX BY BINARY_INTEGER;
3194 TYPE tSerializableItemFlag IS TABLE OF cz_imp_ps_nodes.serializable_item_flag%TYPE INDEX BY BINARY_INTEGER;
3196 iPsNodeId tPsNodeId;
3197 iDevlProjectId tDevlProjectId;
3198 iFromPopulatorId tFromPopulatorId;
3199 iPropertyBackptr tPropertyBackptr;
3200 iItemTypeBackptr tItemTypeBackptr;
3201 iIntlTextid tIntlTextId;
3202 iSubConsid tSubConsId;
3203 iItemId tItemId;
3204 iName tName;
3205 iresourceFlag tResourceFlag;
3206 iInitialValue tInitialValue;
3207 iInitialNumValue tInitialNumValue;
3208 iParentId tParentId;
3209 iMinimum tMinimum;
3210 iMaximum tMaximum;
3211 iPsNodeType tPsNodeType;
3212 iFeatureType tFeatureType;
3213 iProductFlag tProductFlag;
3214 iReferenceId tReferenceId;
3215 iMultiConfigflag tmultiConfigFlag;
3216 iOrderSeqFlag tOrderSeqFlag;
3217 iSystemNodeFlag tSystemNodeFlag;
3218 iTreeSeq tTreeSeq;
3219 iCountedOptionsFlag tCountedOptionsFlag;
3220 iUiOmit tUiOmit;
3221 iUiSection tUiSection;
3222 iBomTreatment tBomTreatment;
3223 iOrigSysRef tOrigSysRef;
3224 iCheckoutUser tCheckoutUser;
3225 iDisposition tDisposition;
3226 iDeletedFlag tDeletedFlag;
3227 iEffectivefrom tEffectiveFrom;
3228 iEffectiveUntil tEffectiveUntil;
3229 iEffectiveUsageMask tEffectiveUsageMask;
3230 iUserStr01 tUserStr01;
3231 iUserStr02 tUserStr03;
3232 iUserStr03 tUserStr03;
3233 iUserStr04 tUserStr04;
3234 iUserNum01 tUserNum01;
3235 iUserNum02 tUserNum02;
3236 iUserNum03 tUserNum03;
3237 iUserNum04 tUserNum04;
3238 iCreationDate tCreationDate;
3239 iLastUpdateDate tLastUpdateDate;
3240 iCreatedBy tCreatedBy;
3241 iLastUpdatedBy tLastUpdatedBy;
3242 iSecurityMask tSecurityMask;
3243 iPlanLevel tPlanLevel;
3244 iSoItemTypeCode tSoItemTypeCode;
3245 iMinimumSelected tMinimumSelected;
3246 iMaximumSelected tMaximumSelected;
3247 iBomRequired tBomRequired;
3248 iComponentSequenceId tComponentSequenceId;
3249 iOrganizationid torganizationId;
3250 iTopItemId tTopItemId;
3251 iexplosionType tExplosionType;
3252 iDecimalQtyFlag tDecimalQtyFlag;
3253 iInstantiableFlag tinstantiableFlag;
3254 iQuoteableFlag tQuoteableFlag;
3255 iPrimaryUomCode tPrimaryUomCode;
3256 iBomSortorder tBomSortOrder;
3257 iComponentSequencePath tComponentSequencePath;
3258 iIbTrackable tIbTrackable;
3259 iSrcApplicationid tSrcApplicationId;
3260 iDisplayInSummaryFlag tDisplayInSummaryFlag;
3261 iIBLinkItemFlag tIBLinkItemFlag;
3262
3263 iShippableItemFlag tPSShippableItemFlag;
3264 iInventoryTransactableFlag tInventoryTransactableFlag;
3265 iAssembleToOrder tAssembleToOrderFlag;
3266 iSerializableItemFlag tSerializableItemFlag;
3267
3268 -- PS nodes that are references, connectors or componentns, NOT ROOTS
3269 CURSOR l_model_refs_csr IS
3270 SELECT plan_level, ps_node_id, devl_project_id, reference_id,
3271 minimum, maximum, ps_node_type, parent_id, disposition
3272 FROM cz_imp_ps_nodes
3273 WHERE ps_node_type IN (cnReference,cnConnector,cnComponent)
3274 AND deleted_flag='0' AND rec_status='OK' AND run_id=inRun_ID
3275 ORDER BY plan_level, devl_project_id, reference_id;
3276
3277 -- root nodes containing NO refs but ARE referenced, order by reference_id
3278 CURSOR C1 IS
3279 SELECT REFS.plan_level, ROOTS.devl_project_id, ROOTS.ps_node_id, ROOTS.disposition, REFS.devl_project_id AS REFERRING_MODEL_ID,
3280 ROOTS.ps_node_type, ROOTS.minimum, ROOTS.maximum, ROOTS.rec_status, ROOTS.name, d.model_type
3281 FROM cz_imp_ps_nodes ROOTS, cz_imp_ps_nodes REFS,cz_imp_devl_project d
3282 WHERE (ROOTS.ps_node_id = ROOTS.devl_project_id OR (ROOTS.parent_id IS NULL AND ROOTS.plan_level=0))
3283 AND ROOTS.devl_project_id=REFS.reference_id
3284 AND NOT EXISTS (SELECT 1 FROM cz_imp_ps_nodes
3285 WHERE run_id=inRUN_ID
3286 AND rec_status='PASS'
3287 AND devl_project_id=ROOTS.devl_project_id
3288 AND ps_node_type IN (cnReference,cnConnector))
3289 AND ROOTS.run_id = inRUN_ID
3290 AND ROOTS.rec_status='PASS'
3291 AND ROOTS.devl_project_id = d.devl_project_id
3292 AND d.rec_status = 'OK'
3293 AND d.run_id = inRun_ID
3294 AND REFS.run_id = inRUN_ID
3295 AND REFS.rec_status = 'PASS'
3296 ORDER BY ROOTS.devl_project_id;
3297
3298 -- root nodes that ARE referenced by other models AND have references to others
3299 CURSOR C2 IS
3300 SELECT REFS.plan_level, ROOTS.devl_project_id, ROOTS.ps_node_id, ROOTS.disposition,
3301 REFS.devl_project_id AS REFERRING_MODEL_ID, ROOTS.ps_node_type,
3302 ROOTS.minimum, ROOTS.maximum, ROOTS.rec_status, ROOTS.name, d.model_type
3303 FROM cz_imp_ps_nodes ROOTS, cz_imp_ps_nodes REFS, cz_imp_devl_project d
3304 WHERE (ROOTS.ps_node_id = ROOTS.devl_project_id OR (ROOTS.parent_id IS NULL AND ROOTS.plan_level=0))
3305 AND ROOTS.ps_node_id = REFS.reference_id
3306 AND REFS.ps_node_type IN (cnReference,cnConnector)
3307 AND EXISTS (SELECT 1 FROM cz_imp_ps_nodes
3308 WHERE run_id=inRUN_ID
3309 AND rec_status='PASS'
3310 AND devl_project_id=ROOTS.devl_project_id
3311 AND ps_node_type IN (cnReference,cnConnector))
3312 AND ROOTS.run_id=inRUN_ID
3313 AND ROOTS.rec_status='PASS'
3314 AND REFS.rec_status='PASS'
3315 AND REFS.run_id=inRUN_ID
3316 AND ROOTS.devl_project_id = d.devl_project_id
3317 AND d.run_id=inRUN_ID
3318 AND d.rec_status='OK'
3319 ORDER BY ROOTS.devl_project_id;
3320
3321 -- root nodes that are NOT referenced but DO contain references to other models
3322 CURSOR C3 IS
3326 WHERE (ROOTS.ps_node_id = ROOTS.devl_project_id OR (ROOTS.parent_id IS NULL AND ROOTS.plan_level=0))
3323 SELECT ROOTS.plan_level, ROOTS.devl_project_id, ROOTS.ps_node_id, ROOTS.disposition,
3324 REFS.reference_id, ROOTS.ps_node_type, ROOTS.minimum, ROOTS.maximum, ROOTS.rec_status, d.model_type
3325 FROM cz_imp_ps_nodes ROOTS, cz_imp_ps_nodes REFS, cz_imp_devl_project d
3327 AND ROOTS.ps_node_id = REFS.devl_project_id
3328 AND REFS.ps_node_type IN (cnReference,cnConnector)
3329 AND ROOTS.run_id=inRUN_ID
3330 AND ROOTS.rec_status='PASS'
3331 AND ROOTS.devl_project_id = d.devl_project_id
3332 AND d.run_id=inRUN_ID
3333 AND d.rec_status='OK'
3334 AND REFS.rec_status='PASS'
3335 AND REFS.run_id=inRUN_ID
3336 AND NOT EXISTS (SELECT 1 FROM cz_imp_ps_nodes
3337 WHERE run_id=inRUN_ID
3338 AND rec_status='PASS'
3339 AND reference_id=ROOTS.devl_project_id
3340 AND ps_node_type IN (cnReference,cnConnector))
3341 ORDER BY ROOTS.devl_project_id;
3342
3343 -- Remaining models if any (NOT referenced AND with NO references)
3344 CURSOR C4 IS
3345 SELECT p.plan_level, p.devl_project_id, p.ps_node_id, p.disposition,
3346 p.ps_node_type, p.minimum, p.maximum, p.rec_status, d.model_type
3347 FROM cz_imp_ps_nodes p, cz_imp_devl_project d
3348 WHERE p.run_id=inRUN_ID
3349 AND p.rec_status='PASS'
3350 AND (p.ps_node_id = p.devl_project_id OR (p.parent_id IS NULL AND p.plan_level=0))
3351 AND p.devl_project_id=d.devl_project_id
3352 AND d.run_id=inRUN_ID
3353 AND d.rec_status='OK';
3354
3355 /* used to load l_model_csr */
3356 l_PsNodeId tPsNodeId;
3357 l_DevlProjectId tDevlProjectId;
3358 l_PsNodeType tPsNodeType;
3359 l_PlanLevel tPlanLevel;
3360 l_referenceId tDevlProjectId;
3361 l_parentId tParentId;
3362 l_Minimum tMinimum;
3363 l_Maximum tMaximum;
3364 l_dis tDisposition;
3365 l_this_model_id number;
3366
3367 l_c1_prj_id_tbl tDevlProjectId;
3368 l_c1_node_id_tbl tPsNodeId;
3369 l_c1_plan_level_tbl tPlanLevel;
3370 l_c1_dis_tbl tDisposition;
3371 l_c1_ref_model_id_tbl tDevlProjectId;
3372 l_c1_max_tbl tMaximum;
3373 l_c1_min_tbl tMinimum;
3374 l_c1_nodetype_tbl tPsNodeType;
3375 l_c1_rec_status_tbl tRecStatus;
3376 l_c1_name_tbl tName;
3377 l_c1_model_type tModelType;
3378
3379 l_c2_prj_id_tbl tDevlProjectId;
3380 l_c2_node_id_tbl tPsNodeId;
3381 l_c2_plan_level_tbl tPlanLevel;
3382 l_c2_dis_tbl tDisposition;
3383 l_c2_ref_model_id_tbl tDevlProjectId;
3384 l_c2_max_tbl tMaximum;
3385 l_c2_min_tbl tMinimum;
3386 l_c2_nodetype_tbl tPsNodeType;
3387 l_c2_rec_status_tbl tRecStatus;
3388 l_c2_name_tbl tName;
3389 l_c2_model_type tModelType;
3390
3391 l_c3_prj_id_tbl tDevlProjectId;
3392 l_c3_node_id_tbl tPsNodeId;
3393 l_c3_plan_level_tbl tPlanLevel;
3394 l_c3_dis_tbl tDisposition;
3395 l_c3_ref_id_tbl tDevlProjectId;
3396 l_c3_max_tbl tMaximum;
3397 l_c3_min_tbl tMinimum;
3398 l_c3_nodetype_tbl tPsNodeType;
3399 l_c3_rec_status_tbl tRecStatus;
3400 l_c3_model_type tModelType;
3401
3402 l_c4_prj_id_tbl tDevlProjectId;
3403 l_c4_node_id_tbl tPsNodeId;
3404 l_c4_plan_level_tbl tPlanLevel;
3405 l_c4_dis_tbl tDisposition;
3406 l_c4_ref_id_tbl tDevlProjectId;
3407 l_c4_max_tbl tMaximum;
3408 l_c4_min_tbl tMinimum;
3409 l_c4_nodetype_tbl tPsNodeType;
3410 l_c4_rec_status_tbl tRecStatus;
3411 l_c4_model_type tModelType;
3412
3413 l_root_node_id_tbl tPsNodeId;
3414 l_root_dis_tbl tDisposition;
3415 l_ref_node_id_tbl tPsNodeId;
3416 l_ref_model_id_tbl tDevlProjectId;
3417 l_ref_plan_level_tbl tPlanLevel;
3418 l_ref_dis_tbl tDisposition;
3419 l_ref_model_id_tbl tDevlProjectId;
3420
3421 -- parametic cursor: model_id and disposition
3422 CURSOR c_xfr_psnode (inModelId NUMBER, inDisposition VARCHAR2)IS
3423 SELECT PS_NODE_ID,DEVL_PROJECT_ID,FROM_POPULATOR_ID,PROPERTY_BACKPTR,
3424 ITEM_TYPE_BACKPTR,INTL_TEXT_ID,SUB_CONS_ID,ITEM_ID,NAME,RESOURCE_FLAG,
3425 INITIAL_VALUE,initial_num_value, PARENT_ID,MINIMUM,MAXIMUM,PS_NODE_TYPE,FEATURE_TYPE,
3426 PRODUCT_FLAG,REFERENCE_ID,MULTI_CONFIG_FLAG,ORDER_SEQ_FLAG,SYSTEM_NODE_FLAG,TREE_SEQ,
3427 COUNTED_OPTIONS_FLAG,UI_OMIT,UI_SECTION,BOM_TREATMENT,ORIG_SYS_REF,CHECKOUT_USER,
3428 DISPOSITION,DELETED_FLAG,EFFECTIVE_FROM,EFFECTIVE_UNTIL,EFFECTIVE_USAGE_MASK,USER_STR01,USER_STR02,USER_STR03,
3429 USER_STR04,USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04,CREATION_DATE,LAST_UPDATE_DATE,
3430 CREATED_BY,LAST_UPDATED_BY,SECURITY_MASK, PLAN_LEVEL, SO_ITEM_TYPE_CODE,
3431 MINIMUM_SELECTED,MAXIMUM_SELECTED,BOM_REQUIRED,COMPONENT_SEQUENCE_ID,
3432 ORGANIZATION_ID,TOP_ITEM_ID,EXPLOSION_TYPE,DECIMAL_QTY_FLAG,INSTANTIABLE_FLAG,
3433 QUOTEABLE_FLAG,PRIMARY_UOM_CODE,BOM_SORT_ORDER,COMPONENT_SEQUENCE_PATH,IB_TRACKABLE, SRC_APPLICATION_ID,DISPLAY_IN_SUMMARY_FLAG,
3434 IB_LINK_ITEM_FLAG,
3435 SHIPPABLE_ITEM_FLAG,
3436 INVENTORY_TRANSACTABLE_FLAG,
3437 ASSEMBLE_TO_ORDER_FLAG,
3438 SERIALIZABLE_ITEM_FLAG
3439 FROM CZ_IMP_PS_NODES
3440 WHERE CZ_IMP_PS_NODES.RUN_ID = inRUN_ID AND REC_STATUS='PASS'
3441 AND devl_project_id=inModelId AND disposition=inDisposition
3442 ORDER BY PLAN_LEVEL,USER_NUM04 DESC;
3443
3444 x_xfr_psnode_f BOOLEAN:=FALSE;
3445 x_error BOOLEAN:=FALSE;
3446
3447 p_xfr_psnode c_xfr_psnode%ROWTYPE;
3448
3449 /* Internal vars */
3450 nCommitCount PLS_INTEGER:=0; /*COMMIT buffer index */
3451 nInsertCount PLS_INTEGER:=0; /*Inserts */
3452 nUpdateCount PLS_INTEGER:=0; /*Updates */
3453 nFailed PLS_INTEGER:=0; /*Failed records */
3454 nNoChangeCount PLS_INTEGER:=0; /*NoChange records */
3455 p_out_err INTEGER;
3456 p_out_virtual_flag INTEGER;
3457 p_parent_id cz_ps_nodes.parent_id%TYPE;
3458
3462 NOUPDATE_PROPERTY_BACKPTR NUMBER;
3459 NOUPDATE_PS_NODE_ID NUMBER;
3460 NOUPDATE_DEVL_PROJECT_ID NUMBER;
3461 NOUPDATE_FROM_POPULATOR_ID NUMBER;
3463 NOUPDATE_ITEM_TYPE_BACKPTR NUMBER;
3464 NOUPDATE_INTL_TEXT_ID NUMBER;
3465 NOUPDATE_SUB_CONS_ID NUMBER;
3466 NOUPDATE_ITEM_ID NUMBER;
3467 NOUPDATE_NAME NUMBER;
3468 NOUPDATE_RESOURCE_FLAG NUMBER;
3469 NOUPDATE_INITIAL_VALUE NUMBER;
3470 NOUPDATE_INITIAL_NUM_VALUE NUMBER;
3471 NOUPDATE_PARENT_ID NUMBER;
3472 NOUPDATE_MINIMUM NUMBER;
3473 NOUPDATE_MAXIMUM NUMBER;
3474 NOUPDATE_PS_NODE_TYPE NUMBER;
3475 NOUPDATE_FEATURE_TYPE NUMBER;
3476 NOUPDATE_PRODUCT_FLAG NUMBER;
3477 NOUPDATE_REFERENCE_ID NUMBER;
3478 NOUPDATE_MULTI_CONFIG_FLAG NUMBER;
3479 NOUPDATE_ORDER_SEQ_FLAG NUMBER;
3480 NOUPDATE_SYSTEM_NODE_FLAG NUMBER;
3481 NOUPDATE_TREE_SEQ NUMBER;
3482 NOUPDATE_COUNTED_OPTIONS_FLAG NUMBER;
3483 NOUPDATE_UI_OMIT NUMBER;
3484 NOUPDATE_UI_SECTION NUMBER;
3485 NOUPDATE_BOM_TREATMENT NUMBER;
3486 NOUPDATE_ORIG_SYS_REF NUMBER;
3487 NOUPDATE_CHECKOUT_USER NUMBER;
3488 NOUPDATE_DELETED_FLAG NUMBER;
3489 NOUPDATE_EFF_FROM NUMBER;
3490 NOUPDATE_EFF_TO NUMBER;
3491 NOUPDATE_EFF_MASK NUMBER;
3492 NOUPDATE_USER_STR01 NUMBER;
3493 NOUPDATE_USER_STR02 NUMBER;
3494 NOUPDATE_USER_STR03 NUMBER;
3495 NOUPDATE_USER_STR04 NUMBER;
3496 NOUPDATE_USER_NUM01 NUMBER;
3497 NOUPDATE_USER_NUM02 NUMBER;
3498 NOUPDATE_USER_NUM03 NUMBER;
3499 NOUPDATE_USER_NUM04 NUMBER;
3500 NOUPDATE_CREATION_DATE NUMBER;
3501 NOUPDATE_LAST_UPDATE_DATE NUMBER;
3502 NOUPDATE_CREATED_BY NUMBER;
3503 NOUPDATE_LAST_UPDATED_BY NUMBER;
3504 NOUPDATE_SECURITY_MASK NUMBER;
3505 NOUPDATE_SO_ITEM_TYPE_CODE NUMBER;
3506 NOUPDATE_MINIMUM_SELECTED NUMBER;
3507 NOUPDATE_MAXIMUM_SELECTED NUMBER;
3508 NOUPDATE_BOM_REQUIRED NUMBER;
3509 NOUPDATE_COMPONENT_SEQUENCE_ID NUMBER;
3510 NOUPDATE_DECIMAL_QTY_FLAG NUMBER;
3511 NOUPDATE_QUOTEABLE_FLAG NUMBER;
3512 NOUPDATE_PRIMARY_UOM_CODE NUMBER;
3513 NOUPDATE_BOM_SORT_ORDER NUMBER;
3514 NOUPDATE_SEQUENCE_PATH NUMBER;
3515 NOUPDATE_IB_TRACKABLE NUMBER;
3516 NOUPDATE_DSPLY_SMRY_FLG NUMBER;
3517 NOUPDATE_IBLINKITEM_FLG NUMBER;
3518 NOUPDATE_INSTANTIABLE_FLAG NUMBER;
3519
3520 -- TSO changes --
3521 NOUPDATE_SHIPPABLE_ITEM_FLAG NUMBER;
3522 NOUPDATE_INV_TXN_FLAG NUMBER;
3523 NOUPDATE_ASM_TO_ORDER_FLAG NUMBER;
3524 NOUPDATE_SERIAL_ITEM_FLAG NUMBER;
3525
3526
3527 sVirtualFlag cz_ps_nodes.virtual_flag%type := '1';
3528 l_last_model_id cz_ps_nodes.devl_project_id%type := 0;
3529 l_msg VARCHAR2(2000);
3530 l_model_name cz_devl_projects.name%type;
3531 l_disposition cz_imp_ps_nodes.disposition%type;
3532 i integer;
3533 j integer;
3534 l_debug number:=0;
3535 l_retcode number;
3536 -- Private prcedure that inserts all PS nodes for the model passed in, it bulk fetches and
3537 -- tries to bulk insert, if bulk insert fails, then it inserts row by row
3538 -- it rollbacks if root node fails to insert other wise it logs rows failed to insert
3539 -- and continues untill all ps nodes are inserted
3540
3541 -- Returns 0 if the model ps nodes prcessed successfully (the root ps node is inserted successfully)
3542 -- Returns 1 if error: when root node fails to insert
3543
3544 PROCEDURE insert_ps_nodes(p_model_id IN NUMBER, x_retcode OUT NOCOPY NUMBER)
3545 IS
3546 BEGIN
3547 nCommitCount:=0;
3548 x_retcode := 0;
3549
3550 IF c_xfr_psnode%ISOPEN THEN
3551 CLOSE c_xfr_psnode;
3552 END IF;
3553
3554 OPEN c_xfr_psnode (p_model_id, 'I');
3555
3556 <<OUTER_LOOP>>
3557 LOOP -- bulk fetch for insert
3558
3559 iPSNODEID.DELETE; iDEVLPROJECTID.DELETE; iFROMPOPULATORID.DELETE; iPROPERTYBACKPTR.DELETE;
3560 iITEMTYPEBACKPTR.DELETE; iINTLTEXTID.DELETE; iSUBCONSID.DELETE; iITEMID.DELETE; iNAME.DELETE; iRESOURCEFLAG.DELETE;
3561 iINITIALVALUE.DELETE; iInitialnumvalue.DELETE; iPARENTID.DELETE; iMINIMUM.DELETE; iMAXIMUM.DELETE; iPSNODETYPE.DELETE;
3562 iFEATURETYPE.DELETE; iPRODUCTFLAG.DELETE; iREFERENCEID.DELETE; iMULTICONFIGFLAG.DELETE; iORDERSEQFLAG.DELETE;
3563 iSYSTEMNODEFLAG.DELETE; iTREESEQ.DELETE; iCOUNTEDOPTIONSFLAG.DELETE; iUIOMIT.DELETE; iUISECTION.DELETE; iBOMTREATMENT.DELETE;
3564 iORIGSYSREF.DELETE; iCHECKOUTUSER.DELETE; iDISPOSITION.DELETE; iDELETEDFLAG.DELETE; iEFFECTIVEFROM.DELETE;
3565 iEFFECTIVEUNTIL.DELETE; iEFFECTIVEUSAGEMASK.DELETE; iUSERSTR01.DELETE; iUSERSTR02.DELETE;
3566 iUSERSTR03.DELETE; iUSERSTR04.DELETE; iUSERNUM01.DELETE; iUSERNUM02.DELETE; iUSERNUM03.DELETE; iUSERNUM04.DELETE;
3567 iCREATIONDATE.DELETE; iLASTUPDATEDATE.DELETE; iCREATEDBY.DELETE; iLASTUPDATEDBY.DELETE; iSECURITYMASK.DELETE;
3568 iPLANLEVEL.DELETE; iSOITEMTYPECODE.DELETE; iMINIMUMSELECTED.DELETE; iMAXIMUMSELECTED.DELETE; iBOMREQUIRED.DELETE;
3569 iCOMPONENTSEQUENCEID.DELETE; iORGANIZATIONID.DELETE; iTOPITEMID.DELETE; iEXPLOSIONTYPE.DELETE; iDECIMALQTYFLAG.DELETE;
3570 iINSTANTIABLEFLAG.DELETE; iQUOTEABLEFLAG.DELETE; iPRIMARYUOMCODE.DELETE; iBOMSORTORDER.DELETE;
3571 iCOMPONENTSEQUENCEPATH.DELETE;iIBTRACKABLE.DELETE;iSRCAPPLICATIONID.DELETE;iDisplayInSummaryFlag.DELETE;iIBLinkItemFlag.DELETE;
3572
3573 iShippableItemFlag.DELETE;
3574 iInventoryTransactableFlag.DELETE;
3575 iAssembleToOrder.DELETE;
3576 iSerializableItemFlag.DELETE;
3577
3581 iINITIALVALUE,iINITIALNUMVALUE,iPARENTID,iMINIMUM,iMAXIMUM,iPSNODETYPE,iFEATURETYPE,
3578 FETCH c_xfr_psnode BULK COLLECT INTO
3579 iPSNODEID,iDEVLPROJECTID,iFROMPOPULATORID,iPROPERTYBACKPTR,
3580 iITEMTYPEBACKPTR,iINTLTEXTID,iSUBCONSID,iITEMID,iNAME,iRESOURCEFLAG,
3582 iPRODUCTFLAG,iREFERENCEID,iMULTICONFIGFLAG,iORDERSEQFLAG,iSYSTEMNODEFLAG,iTREESEQ,
3583 iCOUNTEDOPTIONSFLAG,iUIOMIT,iUISECTION,iBOMTREATMENT,iORIGSYSREF,iCHECKOUTUSER,
3584 iDISPOSITION,iDELETEDFLAG,iEFFECTIVEFROM,iEFFECTIVEUNTIL,iEFFECTIVEUSAGEMASK,iUSERSTR01,iUSERSTR02,iUSERSTR03,
3585 iUSERSTR04,iUSERNUM01,iUSERNUM02,iUSERNUM03,iUSERNUM04,iCREATIONDATE,iLASTUPDATEDATE,
3586 iCREATEDBY,iLASTUPDATEDBY,iSECURITYMASK, iPLANLEVEL, iSOITEMTYPECODE,
3587 iMINIMUMSELECTED,iMAXIMUMSELECTED,iBOMREQUIRED,iCOMPONENTSEQUENCEID,
3588 iORGANIZATIONID,iTOPITEMID,iEXPLOSIONTYPE,iDECIMALQTYFLAG,iINSTANTIABLEFLAG,
3589 iQUOTEABLEFLAG,iPRIMARYUOMCODE,iBOMSORTORDER,iCOMPONENTSEQUENCEPATH,iIBTRACKABLE,iSRCAPPLICATIONID,iDisplayInSummaryFlag,
3590 iIBLinkItemFlag,
3591 iShippableItemFlag,
3592 iInventoryTransactableFlag,
3593 iAssembleToOrder,
3594 iSerializableItemFlag
3595 LIMIT COMMIT_SIZE;
3596
3597 EXIT WHEN (c_xfr_psnode%NOTFOUND AND iPSNODEID.COUNT=0);
3598
3599 IF iPsNodeId.COUNT > 0 THEN
3600 --
3601 -- changes for Solver
3602 -- raise an exception if maximum value is not specified in case of Generic Import plus FCE, CZ_BOM_DEFAULT_QTY_DOMN='N'
3603 --
3604 IF G_CONFIG_ENGINE_TYPE='F' AND FND_PROFILE.VALUE('CZ_BOM_DEFAULT_QTY_DOMN')='N' AND
3605 inXFR_GROUP='GENERIC' THEN
3606 FOR j IN iPsNodeID.FIRST..iPsNodeId.LAST
3607 LOOP
3608 IF (iPSNODETYPE(j)=263 AND (iMAXIMUMSELECTED(j) IS NULL OR iMAXIMUMSELECTED(j) IN(0,-1))) OR
3609 (iPSNODETYPE(j)<>263 AND (iMAXIMUM(j) IS NULL OR iMAXIMUM(j) IN(0,-1))) THEN
3610 ROLLBACK;
3611 x_error:=CZ_UTILS.LOG_REPORT('Fatal Error : CZ_IMP_PS_NODES.MAXIMUM should be specified in Generic Import',1,'CZ_IMP_PS_NODE.XFR_PS_NODE',11276,inRun_Id);
3612 UPDATE CZ_IMP_PS_NODES
3613 SET REC_STATUS='ERR'
3614 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
3615 AND DISPOSITION='I';
3616 COMMIT;
3617 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
3618 END IF;
3619 END LOOP;
3620 END IF;
3621
3622 BEGIN -- bulk insert
3623 FORALL j IN iPsNodeID.FIRST..iPsNodeId.LAST
3624 INSERT INTO CZ_PS_NODES (PS_NODE_ID,
3625 DEVL_PROJECT_ID,
3626 FROM_POPULATOR_ID,
3627 PROPERTY_BACKPTR,
3628 ITEM_TYPE_BACKPTR,
3629 INTL_TEXT_ID,
3630 SUB_CONS_ID,
3631 ITEM_ID,
3632 NAME,
3633 RESOURCE_FLAG,
3634 INITIAL_VALUE,
3635 initial_num_value,
3636 PARENT_ID,
3637 MINIMUM,
3638 MAXIMUM,
3639 PS_NODE_TYPE,
3640 FEATURE_TYPE,
3641 PRODUCT_FLAG,
3642 REFERENCE_ID,
3643 MULTI_CONFIG_FLAG,
3644 ORDER_SEQ_FLAG,
3645 SYSTEM_NODE_FLAG,
3646 TREE_SEQ,
3647 COUNTED_OPTIONS_FLAG,
3648 UI_OMIT,UI_SECTION,
3649 BOM_TREATMENT,
3650 ORIG_SYS_REF,
3651 CHECKOUT_USER,
3652 USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04,USER_STR01,USER_STR02,USER_STR03,USER_STR04,
3653 CREATION_DATE,
3654 LAST_UPDATE_DATE,
3655 DELETED_FLAG,
3656 EFFECTIVE_FROM,
3657 EFFECTIVE_UNTIL,
3658 CREATED_BY,
3659 LAST_UPDATED_BY,
3660 SECURITY_MASK,
3661 --EFFECTIVE_USAGE_MASK,
3662 SO_ITEM_TYPE_CODE,
3663 MINIMUM_SELECTED,
3664 MAXIMUM_SELECTED,
3665 BOM_REQUIRED_FLAG,
3666 COMPONENT_SEQUENCE_ID,
3667 DECIMAL_QTY_FLAG,
3668 QUOTEABLE_FLAG,
3669 PRIMARY_UOM_CODE,
3670 BOM_SORT_ORDER,
3671 COMPONENT_SEQUENCE_PATH,
3672 IB_TRACKABLE,
3673 SRC_APPLICATION_ID,
3674 VIRTUAL_FLAG,
3678 SHIPPABLE_ITEM_FLAG,
3675 INSTANTIABLE_FLAG,
3676 DISPLAY_IN_SUMMARY_FLAG,
3677 IB_LINK_ITEM_FLAG,
3679 INVENTORY_TRANSACTABLE_FLAG,
3680 ASSEMBLE_TO_ORDER_FLAG,
3681 SERIALIZABLE_ITEM_FLAG)
3682 VALUES
3683 ( iPSNODEID(j),
3684 iDEVLPROJECTID(j),
3685 iFROMPOPULATORID(j), iPROPERTYBACKPTR(j),
3686 iITEMTYPEBACKPTR(j), iINTLTEXTID(j),
3687 iSUBCONSID(j), iITEMID(j),
3688 iNAME(j),iRESOURCEFLAG(j),
3689 iINITIALVALUE(j), iINITIALNUMVALUE(j),
3690 iPARENTID(j),
3691 iMINIMUM(j), iMAXIMUM(j),
3692 iPSNODETYPE(j), iFEATURETYPE(j),
3693 iPRODUCTFLAG(j),iREFERENCEID(j),iMULTICONFIGFLAG(j),iORDERSEQFLAG(j),
3694 iSYSTEMNODEFLAG(j),iTREESEQ(j), iCOUNTEDOPTIONSFLAG(j), iUIOMIT(j),
3695 iUISECTION(j), iBOMTREATMENT(j),
3696 iORIGSYSREF(j), iCHECKOUTUSER (j),iUSERNUM01(j),iUSERNUM02(j),
3697 iUSERNUM03(j), iUSERNUM04(j),
3698 iUSERSTR01(j), iUSERSTR02(j), iUSERSTR03(j), iUSERSTR04(j),
3699 SYSDATE, SYSDATE,
3700 iDELETEDFLAG(j),
3701 iEFFECTIVEFROM (j), iEFFECTIVEUNTIL (j),
3702 -UID, -UID, NULL,
3703 -- iEFFECTIVEUSAGEMASK(j),
3704 iSOITEMTYPECODE(j),
3705 iMINIMUMSELECTED(j),
3706 iMAXIMUMSELECTED(j),
3707 iBOMREQUIRED(j),
3708 iCOMPONENTSEQUENCEID(j),
3709 iDECIMALQTYFLAG(j),
3710 iQUOTEABLEFLAG(j),
3711 iPRIMARYUOMCODE(j),
3712 iBOMSORTORDER(j),
3713 iCOMPONENTSEQUENCEPATH(j),
3714 iIBTRACKABLE(j),
3715 iSRCAPPLICATIONID(j),
3716 sVirtualFlag,
3717 iINSTANTIABLEFLAG(j),
3718 iDisplayInSummaryFlag(j),
3719 iIBLinkItemFlag(j),
3720 iShippableItemFlag(j),
3721 iInventoryTransactableFlag(j),
3722 iAssembleToOrder(j),
3723 iSerializableItemFlag(j));
3724
3725 nInsertCount:= nInsertCount + SQL%ROWCOUNT;
3726 nCommitCount:= nCommitCount + SQL%ROWCOUNT;
3727
3728 BEGIN
3729 FORALL j IN iPsNodeID.FIRST..iPsNodeId.LAST
3730 UPDATE CZ_IMP_PS_NODES
3731 SET REC_STATUS='OK'
3732 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
3733 AND DISPOSITION='I';
3734
3735 /* COMMIT if the buffer size is reached */
3736 IF(nCommitCount>= COMMIT_SIZE) THEN
3737 COMMIT;
3738 nCommitCount:=0;
3739 END IF;
3740
3741 EXCEPTION
3742 WHEN OTHERS THEN
3743 l_debug:=0861;
3744 ROLLBACK; -- need to insert row by row to log errors
3745 l_msg:=p_model_id||':'||SQLERRM;
3746 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE('||l_debug||')',11276,inRun_Id);
3747 RAISE;
3748 END;
3749
3750 EXCEPTION -- bulk insert
3751 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
3752 RAISE;
3753 WHEN OTHERS THEN
3754
3755 l_debug:=0862;
3756 l_msg:=p_model_id||':'||SQLERRM;
3757 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE('||l_debug||')',11276,inRun_Id);
3758 --
3759 -- changes for Solver
3760 -- raise an exception if maximum value is not specified in case of Generic Import plus FCE, CZ_BOM_DEFAULT_QTY_DOMN='N'
3761 --
3762 IF G_CONFIG_ENGINE_TYPE='F' AND FND_PROFILE.VALUE('CZ_BOM_DEFAULT_QTY_DOMN')='N' AND
3763 inXFR_GROUP='GENERIC' THEN
3764 FOR j IN iPsNodeID.FIRST..iPsNodeId.LAST
3765 LOOP
3766 IF (iPSNODETYPE(j)=263 AND (iMAXIMUMSELECTED(j) IS NULL OR iMAXIMUMSELECTED(j) IN(0,-1))) OR
3767 (iPSNODETYPE(j)<>263 AND (iMAXIMUM(j) IS NULL OR iMAXIMUM(j) IN(0,-1))) THEN
3768
3772 SET REC_STATUS='ERR'
3769 ROLLBACK;
3770 x_error:=CZ_UTILS.LOG_REPORT('Fatal Error : CZ_IMP_PS_NODES.MAXIMUM should be specified in Generic Import',1,'CZ_IMP_PS_NODE.XFR_PS_NODE',11276,inRun_Id);
3771 UPDATE CZ_IMP_PS_NODES
3773 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
3774 AND DISPOSITION='I';
3775 COMMIT;
3776 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
3777 END IF;
3778 END LOOP;
3779 END IF;
3780
3781 FOR j IN iPsNodeID.FIRST..iPsNodeId.LAST LOOP -- singe row loop
3782
3783 IF(FAILED >= MAX_ERR) THEN
3784 ROLLBACK;
3785 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.XFR_PS_NODE',11276,inRun_Id);
3786 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
3787 END IF;
3788
3789 BEGIN -- single row insert
3790 INSERT INTO CZ_PS_NODES (PS_NODE_ID,
3791 DEVL_PROJECT_ID,
3792 FROM_POPULATOR_ID,
3793 PROPERTY_BACKPTR,
3794 ITEM_TYPE_BACKPTR,
3795 INTL_TEXT_ID,
3796 SUB_CONS_ID,
3797 ITEM_ID,
3798 NAME,
3799 RESOURCE_FLAG,
3800 INITIAL_VALUE,
3801 initial_num_value,
3802 PARENT_ID,
3803 MINIMUM,
3804 MAXIMUM,
3805 PS_NODE_TYPE,
3806 FEATURE_TYPE,
3807 PRODUCT_FLAG,
3808 REFERENCE_ID,
3809 MULTI_CONFIG_FLAG,
3810 ORDER_SEQ_FLAG,
3811 SYSTEM_NODE_FLAG,
3812 TREE_SEQ,
3813 COUNTED_OPTIONS_FLAG,
3814 UI_OMIT,UI_SECTION,
3815 BOM_TREATMENT,
3816 ORIG_SYS_REF,
3817 CHECKOUT_USER,
3818 USER_NUM01,USER_NUM02,USER_NUM03,USER_NUM04,USER_STR01,USER_STR02,USER_STR03,USER_STR04,
3819 CREATION_DATE,
3820 LAST_UPDATE_DATE,
3821 DELETED_FLAG,
3822 EFFECTIVE_FROM,
3823 EFFECTIVE_UNTIL,
3824 CREATED_BY,
3825 LAST_UPDATED_BY,
3826 SECURITY_MASK,
3827 --EFFECTIVE_USAGE_MASK,
3828 SO_ITEM_TYPE_CODE,
3829 MINIMUM_SELECTED,
3830 MAXIMUM_SELECTED,
3831 BOM_REQUIRED_FLAG,
3832 COMPONENT_SEQUENCE_ID,
3833 DECIMAL_QTY_FLAG,
3834 QUOTEABLE_FLAG,
3835 PRIMARY_UOM_CODE,
3836 BOM_SORT_ORDER,
3837 COMPONENT_SEQUENCE_PATH,
3838 IB_TRACKABLE,
3839 SRC_APPLICATION_ID,
3840 VIRTUAL_FLAG,
3841 INSTANTIABLE_FLAG,
3842 DISPLAY_IN_SUMMARY_FLAG,
3843 IB_LINK_ITEM_FLAG,
3844 SHIPPABLE_ITEM_FLAG,
3845 INVENTORY_TRANSACTABLE_FLAG,
3846 ASSEMBLE_TO_ORDER_FLAG,
3847 SERIALIZABLE_ITEM_FLAG)
3848 VALUES
3849 ( iPSNODEID(j),
3850 iDEVLPROJECTID(j),
3851 iFROMPOPULATORID(j), iPROPERTYBACKPTR(j),
3852 iITEMTYPEBACKPTR(j), iINTLTEXTID(j),
3853 iSUBCONSID(j), iITEMID(j),
3854 iNAME(j),iRESOURCEFLAG(j),
3855 iINITIALVALUE(j), iINITIALNUMVALUE(j),
3856 iPARENTID(j),
3857 iMINIMUM(j), iMAXIMUM(j),
3858 iPSNODETYPE(j), iFEATURETYPE(j),
3859 iPRODUCTFLAG(j),iREFERENCEID(j),iMULTICONFIGFLAG(j),iORDERSEQFLAG(j),
3860 iSYSTEMNODEFLAG(j),iTREESEQ(j), iCOUNTEDOPTIONSFLAG(j), iUIOMIT(j),
3861 iUISECTION(j), iBOMTREATMENT(j),
3865 SYSDATE, SYSDATE,
3862 iORIGSYSREF(j), iCHECKOUTUSER (j),iUSERNUM01(j),iUSERNUM02(j),
3863 iUSERNUM03(j), iUSERNUM04(j),
3864 iUSERSTR01(j), iUSERSTR02(j), iUSERSTR03(j), iUSERSTR04(j),
3866 iDELETEDFLAG(j),
3867 iEFFECTIVEFROM (j), iEFFECTIVEUNTIL (j),
3868 -UID, -UID, NULL,
3869 -- iEFFECTIVEUSAGEMASK(j),
3870 iSOITEMTYPECODE(j),
3871 iMINIMUMSELECTED(j),
3872 iMAXIMUMSELECTED(j),
3873 iBOMREQUIRED(j),
3874 iCOMPONENTSEQUENCEID(j),
3875 iDECIMALQTYFLAG(j),
3876 iQUOTEABLEFLAG(j),
3877 iPRIMARYUOMCODE(j),
3878 iBOMSORTORDER(j),
3879 iCOMPONENTSEQUENCEPATH(j),
3880 iIBTRACKABLE(j),
3881 iSRCAPPLICATIONID(j),
3882 sVirtualFlag,
3883 iINSTANTIABLEFLAG(j),
3884 iDisplayInSummaryFlag(j),
3885 iIBLinkItemFlag(j),
3886 iShippableItemFlag(j),
3887 iInventoryTransactableFlag(j),
3888 iAssembleToOrder(j),
3889 iSerializableItemFlag(j));
3890
3891
3892 nInsertCount:=nInsertCount+1;
3893
3894 UPDATE CZ_IMP_PS_NODES
3895 SET REC_STATUS='OK'
3896 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
3897 AND DISPOSITION='I';
3898
3899 nCommitCount:=nCommitCount+1;
3900 /* COMMIT if the buffer size is reached */
3901 IF(nCommitCount>= COMMIT_SIZE) THEN
3902 COMMIT;
3903 nCommitCount:=0;
3904 END IF;
3905
3906
3907 EXCEPTION -- single row insert
3908 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
3909 RAISE;
3910 WHEN OTHERS THEN
3911 IF(iPSNODEID(j) = iDEVLPROJECTID(j))THEN
3912 x_retcode := 1;
3913
3914 -- get model name for message log
3915 SELECT name INTO l_model_name
3916 FROM cz_imp_devl_project
3917 WHERE devl_project_id=p_model_id
3918 AND deleted_flag='0'
3919 AND run_id=inRun_ID
3920 AND rec_status='OK'
3921 AND rownum <2;
3922
3923 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_XFR_ROOT_NODE_I',
3924 'MODELNAME', l_model_name,
3925 'NODENAME', iName(j),
3926 'NODEID', iPsNodeId(j),
3927 'ERRORTEXT', SQLERRM);
3928
3929 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
3930 COMMIT;
3931
3932 EXIT OUTER_LOOP;
3933 ELSE
3934 -- not a root node, so import continues
3935 FAILED:=FAILED +1;
3936 UPDATE CZ_IMP_PS_NODES
3937 SET REC_STATUS='ERR'
3938 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
3939 AND DISPOSITION='I';
3940
3941 -- get model name
3942 SELECT name INTO l_model_name
3943 FROM cz_imp_devl_project
3944 WHERE devl_project_id=p_model_id
3945 AND deleted_flag='0'
3946 AND run_id=inRun_ID
3947 AND rec_status='OK'
3948 AND rownum <2;
3949
3950 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_XFR_NODE_I',
3951 'MODELNAME', l_model_name,
3952 'NODENAME', iName(j),
3953 'NODEID', iPsNodeId(j),
3954 'ERRORTEXT', SQLERRM);
3955 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
3956 END IF;
3957
3958 END; --single row insert
3959 END lOOP; -- single row for loop
3960 END; -- bulk insert
3961 END IF; -- if count > 0
3962 END LOOP; -- bulk fetch for insert
3963 IF c_xfr_psnode%ISOPEN THEN
3964 CLOSE c_xfr_psnode;
3965 END IF;
3966
3967 END insert_ps_nodes;
3968
3972
3969 -- Private prcedure that update all PS nodes for the model passed in, it bulk fetches and
3970 -- tries to bulk update, if bulk insert fails, then it updates row by row
3971 -- and logs rows failed to update and continues untill all ps nodes are processed
3973 -- returns nothing
3974
3975 PROCEDURE update_ps_nodes(p_model_id IN NUMBER)
3976 IS
3977 BEGIN
3978
3979
3980 IF c_xfr_psnode%ISOPEN THEN
3981 CLOSE c_xfr_psnode;
3982 END IF;
3983
3984 OPEN c_xfr_psnode (p_model_id, 'M');
3985
3986 LOOP -- bulk fetch for update
3987
3988 iPSNODEID.DELETE; iDEVLPROJECTID.DELETE; iFROMPOPULATORID.DELETE; iPROPERTYBACKPTR.DELETE;
3989 iITEMTYPEBACKPTR.DELETE; iINTLTEXTID.DELETE; iSUBCONSID.DELETE; iITEMID.DELETE; iNAME.DELETE; iRESOURCEFLAG.DELETE;
3990 iINITIALVALUE.DELETE; iInitialnumvalue.DELETE; iPARENTID.DELETE; iMINIMUM.DELETE; iMAXIMUM.DELETE; iPSNODETYPE.DELETE;
3991 iFEATURETYPE.DELETE; iPRODUCTFLAG.DELETE; iREFERENCEID.DELETE; iMULTICONFIGFLAG.DELETE; iORDERSEQFLAG.DELETE;
3992 iSYSTEMNODEFLAG.DELETE; iTREESEQ.DELETE; iCOUNTEDOPTIONSFLAG.DELETE; iUIOMIT.DELETE; iUISECTION.DELETE; iBOMTREATMENT.DELETE;
3993 iORIGSYSREF.DELETE; iCHECKOUTUSER.DELETE; iDISPOSITION.DELETE; iDELETEDFLAG.DELETE; iEFFECTIVEFROM.DELETE;
3994 iEFFECTIVEUNTIL.DELETE; iEFFECTIVEUSAGEMASK.DELETE; iUSERSTR01.DELETE; iUSERSTR02.DELETE;
3995 iUSERSTR03.DELETE; iUSERSTR04.DELETE; iUSERNUM01.DELETE; iUSERNUM02.DELETE; iUSERNUM03.DELETE; iUSERNUM04.DELETE;
3996 iCREATIONDATE.DELETE; iLASTUPDATEDATE.DELETE; iCREATEDBY.DELETE; iLASTUPDATEDBY.DELETE; iSECURITYMASK.DELETE;
3997 iPLANLEVEL.DELETE; iSOITEMTYPECODE.DELETE; iMINIMUMSELECTED.DELETE; iMAXIMUMSELECTED.DELETE; iBOMREQUIRED.DELETE;
3998 iCOMPONENTSEQUENCEID.DELETE; iORGANIZATIONID.DELETE; iTOPITEMID.DELETE; iEXPLOSIONTYPE.DELETE; iDECIMALQTYFLAG.DELETE;
3999 iINSTANTIABLEFLAG.DELETE; iQUOTEABLEFLAG.DELETE; iPRIMARYUOMCODE.DELETE; iBOMSORTORDER.DELETE;
4000 iCOMPONENTSEQUENCEPATH.DELETE;iIBTRACKABLE.DELETE;iSRCAPPLICATIONID.DELETE;iDisplayInSummaryFlag.DELETE;iIBLinkItemFlag.DELETE;
4001
4002 iShippableItemFlag.DELETE;
4003 iInventoryTransactableFlag.DELETE;
4004 iAssembleToOrder.DELETE;
4005 iSerializableItemFlag.DELETE;
4006
4007 FETCH c_xfr_psnode BULK COLLECT INTO
4008 iPSNODEID,iDEVLPROJECTID,iFROMPOPULATORID,iPROPERTYBACKPTR,
4009 iITEMTYPEBACKPTR,iINTLTEXTID,iSUBCONSID,iITEMID,iNAME,iRESOURCEFLAG,
4010 iINITIALVALUE,iInitialnumvalue,iPARENTID,iMINIMUM,iMAXIMUM,iPSNODETYPE,iFEATURETYPE,
4011 iPRODUCTFLAG,iREFERENCEID,iMULTICONFIGFLAG,iORDERSEQFLAG,iSYSTEMNODEFLAG,iTREESEQ,
4012 iCOUNTEDOPTIONSFLAG,iUIOMIT,iUISECTION,iBOMTREATMENT,iORIGSYSREF,iCHECKOUTUSER,
4013 iDISPOSITION,iDELETEDFLAG,iEFFECTIVEFROM,iEFFECTIVEUNTIL,iEFFECTIVEUSAGEMASK,iUSERSTR01,iUSERSTR02,iUSERSTR03,
4014 iUSERSTR04,iUSERNUM01,iUSERNUM02,iUSERNUM03,iUSERNUM04,iCREATIONDATE,iLASTUPDATEDATE,
4015 iCREATEDBY,iLASTUPDATEDBY,iSECURITYMASK, iPLANLEVEL, iSOITEMTYPECODE,
4016 iMINIMUMSELECTED,iMAXIMUMSELECTED,iBOMREQUIRED,iCOMPONENTSEQUENCEID,
4017 iORGANIZATIONID,iTOPITEMID,iEXPLOSIONTYPE,iDECIMALQTYFLAG,iINSTANTIABLEFLAG,
4018 iQUOTEABLEFLAG,iPRIMARYUOMCODE,iBOMSORTORDER,iCOMPONENTSEQUENCEPATH,iIBTRACKABLE,iSRCAPPLICATIONID,iDisplayInSummaryFlag,
4019 iIBLinkItemFlag,
4020 iShippableItemFlag,
4021 iInventoryTransactableFlag,
4022 iAssembleToOrder,
4023 iSerializableItemFlag
4024 LIMIT COMMIT_SIZE;
4025 EXIT WHEN (c_xfr_psnode%NOTFOUND AND iPSNODEID.COUNT=0);
4026
4027 IF iPsNodeId.COUNT > 0 THEN
4028 --
4029 -- changes for Solver
4030 -- raise an exception if maximum value is not specified in case of Generic Import plus FCE, CZ_BOM_DEFAULT_QTY_DOMN='N'
4031 --
4032 IF G_CONFIG_ENGINE_TYPE='F' AND FND_PROFILE.VALUE('CZ_BOM_DEFAULT_QTY_DOMN')='N' AND
4033 inXFR_GROUP='GENERIC' THEN
4034 FOR j IN iPsNodeID.FIRST..iPsNodeId.LAST
4035 LOOP
4036 IF (iPSNODETYPE(j)=263 AND (iMAXIMUMSELECTED(j) IS NULL OR iMAXIMUMSELECTED(j) IN(0,-1))) OR
4037 (iPSNODETYPE(j)<>263 AND (iMAXIMUM(j) IS NULL OR iMAXIMUM(j) IN(0,-1))) THEN
4038 ROLLBACK;
4039 x_error:=CZ_UTILS.LOG_REPORT('Fatal Error : CZ_IMP_PS_NODES.MAXIMUM should be specified in Generic Import',1,'CZ_IMP_PS_NODE.XFR_PS_NODE',11276,inRun_Id);
4040 UPDATE CZ_IMP_PS_NODES
4041 SET REC_STATUS='ERR'
4042 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
4043 AND DISPOSITION='M';
4044 COMMIT;
4045 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
4046 END IF;
4047 END LOOP;
4048 END IF;
4049
4050 BEGIN -- bulk update
4051 FORALL j IN iPsNodeID.FIRST..iPsNodeId.LAST
4052 UPDATE CZ_PS_NODES SET
4053 DEVL_PROJECT_ID= DECODE(NOUPDATE_DEVL_PROJECT_ID,0,iDEVLPROJECTID(j),DEVL_PROJECT_ID),
4054 FROM_POPULATOR_ID= DECODE(NOUPDATE_FROM_POPULATOR_ID,0,iFROMPOPULATORID(j),FROM_POPULATOR_ID),
4055 PROPERTY_BACKPTR= DECODE(NOUPDATE_PROPERTY_BACKPTR,0,iPROPERTYBACKPTR(j),PROPERTY_BACKPTR),
4056 ITEM_TYPE_BACKPTR= DECODE(NOUPDATE_ITEM_TYPE_BACKPTR,0,iITEMTYPEBACKPTR(j),ITEM_TYPE_BACKPTR),
4057 INTL_TEXT_ID= DECODE(NOUPDATE_INTL_TEXT_ID,0,iINTLTEXTID(j),INTL_TEXT_ID),
4058 SUB_CONS_ID= DECODE(NOUPDATE_SUB_CONS_ID,0,iSUBCONSID(j),SUB_CONS_ID),
4059 ITEM_ID= DECODE(NOUPDATE_ITEM_ID,0,iITEMID(j),ITEM_ID),
4060 NAME= DECODE(NOUPDATE_NAME,0,iNAME(j),NAME),
4061 RESOURCE_FLAG= DECODE(NOUPDATE_RESOURCE_FLAG,0,iRESOURCEFLAG(j),RESOURCE_FLAG),
4062 INITIAL_VALUE= DECODE(NOUPDATE_INITIAL_VALUE,0,iINITIALVALUE(j),INITIAL_VALUE),
4063 initial_num_value= DECODE(NOUPDATE_initial_num_value,0,iINITIALNUMVALUE(j),initial_num_value),
4064 PARENT_ID=DECODE(NOUPDATE_PARENT_ID,0,DECODE(iPLANLEVEL(j),0,PARENT_ID,iPARENTID(j)),PARENT_ID),
4068 FEATURE_TYPE= DECODE(NOUPDATE_FEATURE_TYPE,0,iFEATURETYPE(j),FEATURE_TYPE),
4065 MINIMUM= DECODE(NOUPDATE_MINIMUM,0,iMINIMUM(j),MINIMUM),
4066 MAXIMUM= DECODE(NOUPDATE_MAXIMUM,0,iMAXIMUM(j),MAXIMUM),
4067 PS_NODE_TYPE= DECODE(NOUPDATE_PS_NODE_TYPE,0,iPSNODETYPE(j),PS_NODE_TYPE),
4069 PRODUCT_FLAG= DECODE(NOUPDATE_PRODUCT_FLAG,0,iPRODUCTFLAG(j),PRODUCT_FLAG),
4070 REFERENCE_ID= DECODE(NOUPDATE_REFERENCE_ID,0,iREFERENCEID(j),REFERENCE_ID),
4071 MULTI_CONFIG_FLAG= DECODE(NOUPDATE_MULTI_CONFIG_FLAG,0,iMULTICONFIGFLAG(j),MULTI_CONFIG_FLAG),
4072 ORDER_SEQ_FLAG= DECODE(NOUPDATE_ORDER_SEQ_FLAG,0,iORDERSEQFLAG(j),ORDER_SEQ_FLAG),
4073 SYSTEM_NODE_FLAG= DECODE(NOUPDATE_SYSTEM_NODE_FLAG,0,iSYSTEMNODEFLAG(j),SYSTEM_NODE_FLAG),
4074 TREE_SEQ= DECODE(NOUPDATE_TREE_SEQ,0,iTREESEQ(j),TREE_SEQ),
4075 COUNTED_OPTIONS_FLAG= DECODE(NOUPDATE_COUNTED_OPTIONS_FLAG,0,iCOUNTEDOPTIONSFLAG(j),COUNTED_OPTIONS_FLAG),
4076 UI_OMIT= DECODE(NOUPDATE_UI_OMIT,0,iUIOMIT(j),UI_OMIT),
4077 UI_SECTION= DECODE(NOUPDATE_UI_SECTION,0,iUISECTION(j),UI_SECTION),
4078 BOM_TREATMENT= DECODE(NOUPDATE_BOM_TREATMENT,0,iBOMTREATMENT(j),BOM_TREATMENT),
4079 ORIG_SYS_REF= DECODE(NOUPDATE_ORIG_SYS_REF,0,iORIGSYSREF(j),ORIG_SYS_REF),
4080 CHECKOUT_USER= DECODE(NOUPDATE_CHECKOUT_USER,0,iCHECKOUTUSER(j),CHECKOUT_USER),
4081 DELETED_FLAG= DECODE(NOUPDATE_DELETED_FLAG,0,iDELETEDFLAG(j),DELETED_FLAG),
4082 USER_NUM01= DECODE(NOUPDATE_USER_NUM01,0,iUSERNUM01(j),USER_NUM01),
4083 USER_NUM02= DECODE(NOUPDATE_USER_NUM02,0,iUSERNUM02(j),USER_NUM02),
4084 USER_NUM03= DECODE(NOUPDATE_USER_NUM03,0,iUSERNUM03(j),USER_NUM03),
4085 USER_NUM04= DECODE(NOUPDATE_USER_NUM04,0,iUSERNUM04(j),USER_NUM04),
4086 USER_STR01= DECODE(NOUPDATE_USER_STR01,0,iUSERSTR01(j),USER_STR01),
4087 USER_STR02= DECODE(NOUPDATE_USER_STR02,0,iUSERSTR02(j),USER_STR02),
4088 USER_STR03= DECODE(NOUPDATE_USER_STR03,0,iUSERSTR03(j),USER_STR03),
4089 USER_STR04= DECODE(NOUPDATE_USER_STR04,0,iUSERSTR04(j),USER_STR04),
4090 --CREATION_DATE= DECODE(NOUPDATE_CREATION_DATE,0,SYSDATE,CREATION_DATE),
4091 LAST_UPDATE_DATE= DECODE(NOUPDATE_LAST_UPDATE_DATE,0,SYSDATE,LAST_UPDATE_DATE),
4092 EFFECTIVE_FROM= DECODE(NOUPDATE_EFF_FROM,0,iEFFECTIVEFROM(j),EFFECTIVE_FROM),
4093 EFFECTIVE_UNTIL= DECODE(NOUPDATE_EFF_TO,0,iEFFECTIVEUNTIL(j),EFFECTIVE_UNTIL),
4094 --CREATED_BY= DECODE(NOUPDATE_CREATED_BY,0,-UID,CREATED_BY),
4095 LAST_UPDATED_BY= DECODE(NOUPDATE_LAST_UPDATED_BY,0,-UID,LAST_UPDATED_BY),
4096 SECURITY_MASK= DECODE(NOUPDATE_SECURITY_MASK,0,NULL,SECURITY_MASK),
4097 --EFFECTIVE_USAGE_MASK= DECODE(NOUPDATE_EFF_MASK,0,iEFFECTIVEUSAGEMASK(j),EFFECTIVE_USAGE_MASK),
4098 SO_ITEM_TYPE_CODE= DECODE(NOUPDATE_SO_ITEM_TYPE_CODE,0,iSOITEMTYPECODE(j),SO_ITEM_TYPE_CODE),
4099 MINIMUM_SELECTED= DECODE(NOUPDATE_MINIMUM_SELECTED,0,iMINIMUMSELECTED(j),MINIMUM_SELECTED),
4100 MAXIMUM_SELECTED= DECODE(NOUPDATE_MAXIMUM_SELECTED,0,iMAXIMUMSELECTED(j),MAXIMUM_SELECTED),
4101 BOM_REQUIRED_FLAG= DECODE(NOUPDATE_BOM_REQUIRED,0,iBOMREQUIRED(j),BOM_REQUIRED_FLAG),
4102 COMPONENT_SEQUENCE_ID= DECODE(NOUPDATE_COMPONENT_SEQUENCE_ID,0,iCOMPONENTSEQUENCEID(j),COMPONENT_SEQUENCE_ID),
4103 DECIMAL_QTY_FLAG= DECODE(NOUPDATE_DECIMAL_QTY_FLAG,0,iDECIMALQTYFLAG(j),DECIMAL_QTY_FLAG),
4104 QUOTEABLE_FLAG= DECODE(NOUPDATE_QUOTEABLE_FLAG,0,iQUOTEABLEFLAG(j),QUOTEABLE_FLAG),
4105 PRIMARY_UOM_CODE= DECODE(NOUPDATE_PRIMARY_UOM_CODE,0,iPRIMARYUOMCODE(j),PRIMARY_UOM_CODE),
4106 BOM_SORT_ORDER= DECODE(NOUPDATE_BOM_SORT_ORDER,0,iBOMSORTORDER(j),BOM_SORT_ORDER),
4107 COMPONENT_SEQUENCE_PATH=DECODE(NOUPDATE_SEQUENCE_PATH,0,iCOMPONENTSEQUENCEPATH(j),COMPONENT_SEQUENCE_PATH),
4108 IB_TRACKABLE= DECODE(NOUPDATE_IB_TRACKABLE,0,iIBTRACKABLE(j),IB_TRACKABLE),
4109 SRC_APPLICATION_ID= iSRCAPPLICATIONID(j),
4110 DISPLAY_IN_SUMMARY_FLAG=DECODE(NOUPDATE_DSPLY_SMRY_FLG,0,iDisplayInSummaryFlag(j),DISPLAY_IN_SUMMARY_FLAG),
4111 IB_LINK_ITEM_FLAG=DECODE(NOUPDATE_IBLINKITEM_FLG,0,iIBLinkItemFlag(j),IB_LINK_ITEM_FLAG),
4112 INSTANTIABLE_FLAG=DECODE(NOUPDATE_INSTANTIABLE_FLAG,0,iINSTANTIABLEFLAG(j),INSTANTIABLE_FLAG),
4113 SHIPPABLE_ITEM_FLAG = DECODE(NOUPDATE_SHIPPABLE_ITEM_FLAG,0,iShippableItemFlag(j), SHIPPABLE_ITEM_FLAG),
4114 INVENTORY_TRANSACTABLE_FLAG = DECODE(NOUPDATE_INV_TXN_FLAG, 0, iInventoryTransactableFlag(j), INVENTORY_TRANSACTABLE_FLAG),
4115 ASSEMBLE_TO_ORDER_FLAG = DECODE(NOUPDATE_ASM_TO_ORDER_FLAG, 0, iAssembleToOrder(j), ASSEMBLE_TO_ORDER_FLAG),
4116 SERIALIZABLE_ITEM_FLAG = DECODE(NOUPDATE_SERIAL_ITEM_FLAG, 0, iSerializableItemFlag(j), SERIALIZABLE_ITEM_FLAG)
4117 WHERE PS_NODE_ID=iPSNODEID(j);
4118
4119 nUpdateCount:= nUpdateCount + SQL%ROWCOUNT;
4120 nCommitCount:= nCommitCount + SQL%ROWCOUNT;
4121
4122 BEGIN -- bulk update
4123 FORALL j IN iPsNodeID.FIRST..iPsNodeId.LAST
4124 UPDATE CZ_IMP_PS_NODES
4125 SET REC_STATUS='OK'
4126 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
4127 AND DISPOSITION='M';
4128
4129 /* COMMIT if the buffer size is reached */
4130 IF(nCommitCount>= COMMIT_SIZE) THEN
4131 COMMIT;
4132 nCommitCount:=0;
4133 END IF;
4134
4135 EXCEPTION
4136 WHEN OTHERS THEN
4137 l_debug:=0871;
4138 ROLLBACK; -- need to insert row by row to log error messages
4139 l_msg:=p_model_id||':'||SQLERRM;
4140 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE('||l_debug||')',11276,inRun_Id);
4141 RAISE;
4142 END;
4143
4144 EXCEPTION -- bulk update
4145 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
4146 RAISE;
4147 WHEN OTHERS THEN
4148 l_debug:=0872;
4149 l_msg:=p_model_id||':'||SQLERRM;
4150 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE('||l_debug||')',11276,inRun_Id);
4151 --
4155 IF G_CONFIG_ENGINE_TYPE='F' AND FND_PROFILE.VALUE('CZ_BOM_DEFAULT_QTY_DOMN')='N' AND
4152 -- changes for Solver
4153 -- raise an exception if maximum value is not specified in case of Generic Import plus FCE, CZ_BOM_DEFAULT_QTY_DOMN='N'
4154 --
4156 inXFR_GROUP='GENERIC' THEN
4157 FOR j IN iPsNodeID.FIRST..iPsNodeId.LAST
4158 LOOP
4159 IF (iPSNODETYPE(j)=263 AND (iMAXIMUMSELECTED(j) IS NULL OR iMAXIMUMSELECTED(j) IN(0,-1))) OR
4160 (iPSNODETYPE(j)<>263 AND (iMAXIMUM(j) IS NULL OR iMAXIMUM(j) IN(0,-1))) THEN
4161 ROLLBACK;
4162 x_error:=CZ_UTILS.LOG_REPORT('Fatal Error : CZ_IMP_PS_NODES.MAXIMUM should be specified in Generic Import',1,'CZ_IMP_PS_NODE.XFR_PS_NODE',11276,inRun_Id);
4163 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
4164 END IF;
4165 END LOOP;
4166 END IF;
4167
4168 FOR j IN iPsNodeID.FIRST..iPsNodeId.LAST LOOP -- single row loop
4169
4170 IF (FAILED >= MAX_ERR) THEN
4171 ROLLBACK;
4172 x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_PS_NODE.XFR_PS_NODE',11276,inRun_Id);
4173 RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
4174 END IF;
4175
4176
4177 BEGIN -- single row update
4178 UPDATE CZ_PS_NODES SET
4179 DEVL_PROJECT_ID= DECODE(NOUPDATE_DEVL_PROJECT_ID,0,iDEVLPROJECTID(j),DEVL_PROJECT_ID),
4180 FROM_POPULATOR_ID= DECODE(NOUPDATE_FROM_POPULATOR_ID,0,iFROMPOPULATORID(j),FROM_POPULATOR_ID),
4181 PROPERTY_BACKPTR= DECODE(NOUPDATE_PROPERTY_BACKPTR,0,iPROPERTYBACKPTR(j),PROPERTY_BACKPTR),
4182 ITEM_TYPE_BACKPTR= DECODE(NOUPDATE_ITEM_TYPE_BACKPTR,0,iITEMTYPEBACKPTR(j),ITEM_TYPE_BACKPTR),
4183 INTL_TEXT_ID= DECODE(NOUPDATE_INTL_TEXT_ID,0,iINTLTEXTID(j),INTL_TEXT_ID),
4184 SUB_CONS_ID= DECODE(NOUPDATE_SUB_CONS_ID,0,iSUBCONSID(j),SUB_CONS_ID),
4185 ITEM_ID= DECODE(NOUPDATE_ITEM_ID,0,iITEMID(j),ITEM_ID),
4186 NAME= DECODE(NOUPDATE_NAME,0,iNAME(j),NAME),
4187 RESOURCE_FLAG= DECODE(NOUPDATE_RESOURCE_FLAG,0,iRESOURCEFLAG(j),RESOURCE_FLAG),
4188 INITIAL_VALUE= DECODE(NOUPDATE_INITIAL_VALUE,0,iINITIALVALUE(j),INITIAL_VALUE),
4189 initial_num_value= DECODE(NOUPDATE_initial_num_value,0,iINITIALNUMVALUE(j),initial_num_value),
4190 PARENT_ID=DECODE(NOUPDATE_PARENT_ID,0,DECODE(iPLANLEVEL(j),0,PARENT_ID,iPARENTID(j)),PARENT_ID),
4191 MINIMUM= DECODE(NOUPDATE_MINIMUM,0,iMINIMUM(j),MINIMUM),
4192 MAXIMUM= DECODE(NOUPDATE_MAXIMUM,0,iMAXIMUM(j),MAXIMUM),
4193 PS_NODE_TYPE= DECODE(NOUPDATE_PS_NODE_TYPE,0,iPSNODETYPE(j),PS_NODE_TYPE),
4194 FEATURE_TYPE= DECODE(NOUPDATE_FEATURE_TYPE,0,iFEATURETYPE(j),FEATURE_TYPE),
4195 PRODUCT_FLAG= DECODE(NOUPDATE_PRODUCT_FLAG,0,iPRODUCTFLAG(j),PRODUCT_FLAG),
4196 REFERENCE_ID= DECODE(NOUPDATE_REFERENCE_ID,0,iREFERENCEID(j),REFERENCE_ID),
4197 MULTI_CONFIG_FLAG= DECODE(NOUPDATE_MULTI_CONFIG_FLAG,0,iMULTICONFIGFLAG(j),MULTI_CONFIG_FLAG),
4198 ORDER_SEQ_FLAG= DECODE(NOUPDATE_ORDER_SEQ_FLAG,0,iORDERSEQFLAG(j),ORDER_SEQ_FLAG),
4199 SYSTEM_NODE_FLAG= DECODE(NOUPDATE_SYSTEM_NODE_FLAG,0,iSYSTEMNODEFLAG(j),SYSTEM_NODE_FLAG),
4200 TREE_SEQ= DECODE(NOUPDATE_TREE_SEQ,0,iTREESEQ(j),TREE_SEQ),
4201 COUNTED_OPTIONS_FLAG= DECODE(NOUPDATE_COUNTED_OPTIONS_FLAG,0,iCOUNTEDOPTIONSFLAG(j),COUNTED_OPTIONS_FLAG),
4202 UI_OMIT= DECODE(NOUPDATE_UI_OMIT,0,iUIOMIT(j),UI_OMIT),
4203 UI_SECTION= DECODE(NOUPDATE_UI_SECTION,0,iUISECTION(j),UI_SECTION),
4204 BOM_TREATMENT= DECODE(NOUPDATE_BOM_TREATMENT,0,iBOMTREATMENT(j),BOM_TREATMENT),
4205 ORIG_SYS_REF= DECODE(NOUPDATE_ORIG_SYS_REF,0,iORIGSYSREF(j),ORIG_SYS_REF),
4206 CHECKOUT_USER= DECODE(NOUPDATE_CHECKOUT_USER,0,iCHECKOUTUSER(j),CHECKOUT_USER),
4207 DELETED_FLAG= DECODE(NOUPDATE_DELETED_FLAG,0,iDELETEDFLAG(j),DELETED_FLAG),
4208 USER_NUM01= DECODE(NOUPDATE_USER_NUM01,0,iUSERNUM01(j),USER_NUM01),
4209 USER_NUM02= DECODE(NOUPDATE_USER_NUM02,0,iUSERNUM02(j),USER_NUM02),
4210 USER_NUM03= DECODE(NOUPDATE_USER_NUM03,0,iUSERNUM03(j),USER_NUM03),
4211 USER_NUM04= DECODE(NOUPDATE_USER_NUM04,0,iUSERNUM04(j),USER_NUM04),
4212 USER_STR01= DECODE(NOUPDATE_USER_STR01,0,iUSERSTR01(j),USER_STR01),
4213 USER_STR02= DECODE(NOUPDATE_USER_STR02,0,iUSERSTR02(j),USER_STR02),
4214 USER_STR03= DECODE(NOUPDATE_USER_STR03,0,iUSERSTR03(j),USER_STR03),
4215 USER_STR04= DECODE(NOUPDATE_USER_STR04,0,iUSERSTR04(j),USER_STR04),
4216 --CREATION_DATE= DECODE(NOUPDATE_CREATION_DATE,0,SYSDATE,CREATION_DATE),
4217 LAST_UPDATE_DATE= DECODE(NOUPDATE_LAST_UPDATE_DATE,0,SYSDATE,LAST_UPDATE_DATE),
4218 EFFECTIVE_FROM= DECODE(NOUPDATE_EFF_FROM,0,iEFFECTIVEFROM(j),EFFECTIVE_FROM),
4219 EFFECTIVE_UNTIL= DECODE(NOUPDATE_EFF_TO,0,iEFFECTIVEUNTIL(j),EFFECTIVE_UNTIL),
4220 --CREATED_BY= DECODE(NOUPDATE_CREATED_BY,0,-UID,CREATED_BY),
4221 LAST_UPDATED_BY= DECODE(NOUPDATE_LAST_UPDATED_BY,0,-UID,LAST_UPDATED_BY),
4222 SECURITY_MASK= DECODE(NOUPDATE_SECURITY_MASK,0,NULL,SECURITY_MASK),
4223 --EFFECTIVE_USAGE_MASK= DECODE(NOUPDATE_EFF_MASK,0,iEFFECTIVEUSAGEMASK(j),EFFECTIVE_USAGE_MASK),
4224 SO_ITEM_TYPE_CODE= DECODE(NOUPDATE_SO_ITEM_TYPE_CODE,0,iSOITEMTYPECODE(j),SO_ITEM_TYPE_CODE),
4225 MINIMUM_SELECTED= DECODE(NOUPDATE_MINIMUM_SELECTED,0,iMINIMUMSELECTED(j),MINIMUM_SELECTED),
4226 MAXIMUM_SELECTED= DECODE(NOUPDATE_MAXIMUM_SELECTED,0,iMAXIMUMSELECTED(j),MAXIMUM_SELECTED),
4227 BOM_REQUIRED_FLAG= DECODE(NOUPDATE_BOM_REQUIRED,0,iBOMREQUIRED(j),BOM_REQUIRED_FLAG),
4228 COMPONENT_SEQUENCE_ID= DECODE(NOUPDATE_COMPONENT_SEQUENCE_ID,0,iCOMPONENTSEQUENCEID(j),COMPONENT_SEQUENCE_ID),
4229 DECIMAL_QTY_FLAG= DECODE(NOUPDATE_DECIMAL_QTY_FLAG,0,iDECIMALQTYFLAG(j),DECIMAL_QTY_FLAG),
4230 QUOTEABLE_FLAG= DECODE(NOUPDATE_QUOTEABLE_FLAG,0,iQUOTEABLEFLAG(j),QUOTEABLE_FLAG),
4231 PRIMARY_UOM_CODE= DECODE(NOUPDATE_PRIMARY_UOM_CODE,0,iPRIMARYUOMCODE(j),PRIMARY_UOM_CODE),
4232 BOM_SORT_ORDER= DECODE(NOUPDATE_BOM_SORT_ORDER,0,iBOMSORTORDER(j),BOM_SORT_ORDER),
4236 DISPLAY_IN_SUMMARY_FLAG=DECODE(NOUPDATE_DSPLY_SMRY_FLG,0,iDisplayInSummaryFlag(j),DISPLAY_IN_SUMMARY_FLAG),
4233 COMPONENT_SEQUENCE_PATH=DECODE(NOUPDATE_SEQUENCE_PATH,0,iCOMPONENTSEQUENCEPATH(j),COMPONENT_SEQUENCE_PATH),
4234 IB_TRACKABLE= DECODE(NOUPDATE_IB_TRACKABLE,0,iIBTRACKABLE(j),IB_TRACKABLE),
4235 SRC_APPLICATION_ID= iSRCAPPLICATIONID(j),
4237 IB_LINK_ITEM_FLAG=DECODE(NOUPDATE_IBLINKITEM_FLG,0,iIBLinkItemFlag(j),IB_LINK_ITEM_FLAG),
4238 INSTANTIABLE_FLAG=DECODE(NOUPDATE_INSTANTIABLE_FLAG,0,iINSTANTIABLEFLAG(j),INSTANTIABLE_FLAG),
4239 SHIPPABLE_ITEM_FLAG = DECODE(NOUPDATE_SHIPPABLE_ITEM_FLAG,0,iShippableItemFlag(j), SHIPPABLE_ITEM_FLAG),
4240 INVENTORY_TRANSACTABLE_FLAG = DECODE(NOUPDATE_INV_TXN_FLAG, 0, iInventoryTransactableFlag(j), INVENTORY_TRANSACTABLE_FLAG),
4241 ASSEMBLE_TO_ORDER_FLAG = DECODE(NOUPDATE_ASM_TO_ORDER_FLAG, 0, iAssembleToOrder(j), ASSEMBLE_TO_ORDER_FLAG),
4242 SERIALIZABLE_ITEM_FLAG = DECODE(NOUPDATE_SERIAL_ITEM_FLAG, 0, iSerializableItemFlag(j), SERIALIZABLE_ITEM_FLAG)
4243 WHERE PS_NODE_ID=iPSNODEID(j);
4244
4245 nUpdateCount:= nUpdateCount + 1;
4246
4247 UPDATE CZ_IMP_PS_NODES -- single row update
4248 SET REC_STATUS='OK'
4249 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
4250 AND DISPOSITION='M';
4251
4252 nCommitCount:=nCommitCount+1;
4253 /* COMMIT if the buffer size is reached */
4254 IF(nCommitCount>= COMMIT_SIZE) THEN
4255 COMMIT;
4256 nCommitCount:=0;
4257 END IF;
4258
4259 EXCEPTION -- single row update
4260 WHEN OTHERS THEN
4261 FAILED:=FAILED +1;
4262 UPDATE CZ_IMP_PS_NODES
4263 SET REC_STATUS='ERR'
4264 WHERE PS_NODE_ID=iPSNODEID(j) AND RUN_ID=inRUN_ID
4265 AND DISPOSITION='M';
4266
4267 -- get model name
4268 SELECT name INTO l_model_name
4269 FROM cz_imp_devl_project
4270 WHERE devl_project_id=p_model_id
4271 AND deleted_flag='0'
4272 AND run_id=inRun_ID
4273 AND rec_status='OK'
4274 AND rownum <2;
4275
4276 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_XFR_NODE_M',
4277 'MODELNAME', l_model_name,
4278 'NODENAME', iName(j),
4279 'NODEID', iPsNodeId(j),
4280 'ERRORTEXT', SQLERRM);
4281 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4282 END; -- single row update
4283 END LOOP; -- single row loop
4284 END; -- bulk update
4285 END IF; -- IF count > 0
4286 END LOOP; -- bulk fetch for update
4287
4288 UPDATE CZ_IMP_PS_NODES
4289 SET REC_STATUS='OK'
4290 WHERE DISPOSITION='N' and run_id = inRUN_ID
4291 AND devl_project_id = p_model_id;
4292 nNoChangeCount:=nNoChangeCount+(sql%rowcount);
4293
4294 IF c_xfr_psnode%ISOPEN THEN
4295 CLOSE c_xfr_psnode;
4296 END IF;
4297
4298 END update_ps_nodes;
4299
4300
4301 -- private procdure to delete PS nodes that are no longer present in the cz_imp_ps_nodes of this run id
4302 -- deletes the nodes logically and calls the cz_refs.delete_node logically to delete the expls
4303 -- for refs, connectors and non-virtual components
4304
4305 PROCEDURE delete_ps_nodes(p_model_id IN NUMBER, x_retcode OUT NOCOPY NUMBER)
4306 IS
4307 l_ps_node_id tPsNodeId;
4308 l_ps_node_type tPsNodeType;
4309
4310 CURSOR C1 IS
4311 SELECT ps_node_id, ps_node_type
4312 FROM cz_ps_nodes a
4313 WHERE deleted_flag = '0'
4314 AND devl_project_id = p_model_id
4315 AND ps_node_type IN (cnReference, cnConnector, cnComponent)
4316 AND NOT EXISTS (SELECT NULL FROM cz_imp_ps_nodes
4317 WHERE orig_sys_ref = a.orig_sys_ref
4318 AND devl_project_id = p_model_id
4319 AND src_application_id = a.src_application_id
4320 AND run_id=inRun_Id);
4321 BEGIN
4322 x_retcode := 0;
4323 OPEN C1;
4324 FETCH C1 BULK COLLECT INTO l_ps_node_id,l_ps_node_type;
4325 CLOSE C1;
4326
4327 UPDATE cz_ps_nodes a
4328 SET deleted_flag = '1'
4329 WHERE devl_project_id = p_model_id
4330 AND NOT EXISTS (SELECT NULL FROM cz_imp_ps_nodes
4331 WHERE orig_sys_ref = a.orig_sys_ref
4332 AND devl_project_id = p_model_id
4333 AND src_application_id = a.src_application_id
4334 AND run_id=inRun_Id);
4335
4336 IF (l_ps_node_id.COUNT > 0) THEN
4337 FOR i IN l_ps_node_id.FIRST..l_ps_node_id.LAST LOOP
4338 cz_refs.delete_Node(l_ps_node_id(i),l_ps_node_type(i), p_out_err, '1');
4339 IF (p_out_err > 0) THEN
4340 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_CZREFS_DELNODE',
4341 'MODELID', p_model_id,
4342 'NODEID', l_ps_node_id(i),
4343 'RUNID', p_out_err);
4344 x_error:=CZ_UTILS.LOG_REPORT(l_msg ,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4345 x_retcode := 1;
4346 END IF;
4347 END LOOP;
4348 END IF;
4349 END delete_ps_nodes;
4350
4351 BEGIN
4352 -- Get the Update Flags for each column
4353 NOUPDATE_PS_NODE_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','PS_NODE_ID',inXFR_GROUP);
4357 NOUPDATE_ITEM_TYPE_BACKPTR := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','ITEM_TYPE_BACKPTR',inXFR_GROUP);
4354 NOUPDATE_DEVL_PROJECT_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','DEVL_PROJECT_ID',inXFR_GROUP);
4355 NOUPDATE_FROM_POPULATOR_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','FROM_POPULATOR_ID',inXFR_GROUP);
4356 NOUPDATE_PROPERTY_BACKPTR := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','PROPERTY_BACKPTR',inXFR_GROUP);
4358 NOUPDATE_INTL_TEXT_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','INTL_TEXT_ID',inXFR_GROUP);
4359 NOUPDATE_SUB_CONS_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','SUB_CONS_ID',inXFR_GROUP);
4360 NOUPDATE_ITEM_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','ITEM_ID',inXFR_GROUP);
4361 NOUPDATE_NAME := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','NAME',inXFR_GROUP);
4362 NOUPDATE_RESOURCE_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','RESOURCE_FLAG',inXFR_GROUP);
4363 NOUPDATE_INITIAL_VALUE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','INITIAL_VALUE',inXFR_GROUP);
4364 NOUPDATE_initial_num_value := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','initial_num_value',inXFR_GROUP);
4365 NOUPDATE_PARENT_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','PARENT_ID',inXFR_GROUP);
4366 NOUPDATE_MINIMUM := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','MINIMUM',inXFR_GROUP);
4367 NOUPDATE_MAXIMUM := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','MAXIMUM',inXFR_GROUP);
4368 NOUPDATE_PS_NODE_TYPE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','PS_NODE_TYPE',inXFR_GROUP);
4369 NOUPDATE_FEATURE_TYPE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','FEATURE_TYPE',inXFR_GROUP);
4370 NOUPDATE_PRODUCT_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','PRODUCT_FLAG',inXFR_GROUP);
4371 NOUPDATE_REFERENCE_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','REFERENCE_ID',inXFR_GROUP);
4372 NOUPDATE_MULTI_CONFIG_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','MULTI_CONFIG_FLAG',inXFR_GROUP);
4373 NOUPDATE_ORDER_SEQ_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','ORDER_SEQ_FLAG',inXFR_GROUP);
4374 NOUPDATE_SYSTEM_NODE_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','SYSTEM_NODE_FLAG',inXFR_GROUP);
4375 NOUPDATE_TREE_SEQ := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','TREE_SEQ',inXFR_GROUP);
4376 NOUPDATE_COUNTED_OPTIONS_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','COUNTED_OPTIONS_FLAG',inXFR_GROUP);
4377 NOUPDATE_UI_OMIT := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','UI_OMIT',inXFR_GROUP);
4378 NOUPDATE_UI_SECTION := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','UI_SECTION',inXFR_GROUP);
4379 NOUPDATE_BOM_TREATMENT := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','BOM_TREATMENT',inXFR_GROUP);
4380 NOUPDATE_ORIG_SYS_REF := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','ORIG_SYS_REF',inXFR_GROUP);
4381 NOUPDATE_CHECKOUT_USER := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','CHECKOUT_USER',inXFR_GROUP);
4382 NOUPDATE_DELETED_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','DELETED_FLAG',inXFR_GROUP);
4383 NOUPDATE_EFF_FROM := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','EFFECTIVE_FROM',inXFR_GROUP);
4384 NOUPDATE_EFF_TO := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','EFFECTIVE_UNTIL',inXFR_GROUP);
4385 NOUPDATE_EFF_MASK := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','EFFECTIVE_USAGE_MASK',inXFR_GROUP);
4386 NOUPDATE_USER_STR01 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_STR01',inXFR_GROUP);
4387 NOUPDATE_USER_STR02 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_STR02',inXFR_GROUP);
4388 NOUPDATE_USER_STR03 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_STR03',inXFR_GROUP);
4389 NOUPDATE_USER_STR04 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_STR04',inXFR_GROUP);
4390 NOUPDATE_USER_NUM01 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_NUM01',inXFR_GROUP);
4391 NOUPDATE_USER_NUM02 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_NUM02',inXFR_GROUP);
4392 NOUPDATE_USER_NUM03 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_NUM03',inXFR_GROUP);
4393 NOUPDATE_USER_NUM04 := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','USER_NUM04',inXFR_GROUP);
4394 NOUPDATE_CREATION_DATE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','CREATION_DATE',inXFR_GROUP);
4395 NOUPDATE_LAST_UPDATE_DATE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','LAST_UPDATE_DATE',inXFR_GROUP);
4396 NOUPDATE_CREATED_BY := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','CREATED_BY',inXFR_GROUP);
4397 NOUPDATE_LAST_UPDATED_BY := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','LAST_UPDATED_BY',inXFR_GROUP);
4398 NOUPDATE_SECURITY_MASK := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','SECURITY_MASK',inXFR_GROUP);
4399 NOUPDATE_SO_ITEM_TYPE_CODE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','SO_ITEM_TYPE_CODE',inXFR_GROUP);
4400 NOUPDATE_MINIMUM_SELECTED := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','MINIMUM_SELECTED',inXFR_GROUP);
4401 NOUPDATE_MAXIMUM_SELECTED := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','MAXIMUM_SELECTED',inXFR_GROUP);
4402 NOUPDATE_BOM_REQUIRED := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','BOM_REQUIRED_FLAG',inXFR_GROUP);
4403 NOUPDATE_COMPONENT_SEQUENCE_ID := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','COMPONENT_SEQUENCE_ID',inXFR_GROUP);
4404 NOUPDATE_DECIMAL_QTY_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','DECIMAL_QTY_FLAG',inXFR_GROUP);
4405 NOUPDATE_QUOTEABLE_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','QUOTEABLE_FLAG',inXFR_GROUP);
4406 NOUPDATE_PRIMARY_UOM_CODE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','PRIMARY_UOM_CODE',inXFR_GROUP);
4407 NOUPDATE_BOM_SORT_ORDER := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','BOM_SORT_ORDER',inXFR_GROUP);
4408 NOUPDATE_SEQUENCE_PATH := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','COMPONENT_SEQUENCE_PATH',inXFR_GROUP);
4409 NOUPDATE_IB_TRACKABLE := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','IB_TRACKABLE',inXFR_GROUP);
4410 NOUPDATE_DSPLY_SMRY_FLG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','DISPLAY_IN_SUMMARY_FLAG',inXFR_GROUP);
4411 NOUPDATE_IBLINKITEM_FLG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','IB_LINK_ITEM_FLAG',inXFR_GROUP);
4412 NOUPDATE_INSTANTIABLE_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','INSTANTIABLE_FLAG',inXFR_GROUP);
4413
4417
4414 --Updates of instantiable_flag are always prohibited for BOM import.
4415
4416 IF(inXFR_GROUP = 'IMPORT')THEN NOUPDATE_INSTANTIABLE_FLAG := 1; END IF;
4418 NOUPDATE_SHIPPABLE_ITEM_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','SHIPPABLE_ITEM_FLAG',inXFR_GROUP);
4419 NOUPDATE_INV_TXN_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','INVENTORY_TRANSACTABLE_FLAG',inXFR_GROUP);
4420 NOUPDATE_ASM_TO_ORDER_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','ASSEMBLE_TO_ORDER_FLAG ',inXFR_GROUP);
4421 NOUPDATE_SERIAL_ITEM_FLAG := CZ_UTILS.GET_NOUPDATE_FLAG('CZ_PS_NODES','SERIALIZABLE_ITEM_FLAG',inXFR_GROUP);
4422
4423 OPEN C1;
4424 FETCH C1 BULK COLLECT INTO
4425 l_c1_plan_level_tbl,l_c1_prj_id_tbl,l_c1_node_id_tbl, l_c1_dis_tbl,l_c1_ref_model_id_tbl,
4426 l_c1_nodetype_tbl,l_c1_min_tbl,l_c1_max_tbl,l_c1_rec_status_tbl,l_c1_name_tbl,l_c1_model_type;
4427 CLOSE C1;
4428
4429 OPEN C2;
4430 FETCH C2 BULK COLLECT INTO
4431 l_c2_plan_level_tbl,l_c2_prj_id_tbl,l_c2_node_id_tbl,l_c2_dis_tbl,l_c2_ref_model_id_tbl,
4432 l_c2_nodetype_tbl,l_c2_min_tbl,l_c2_max_tbl,l_c2_rec_status_tbl,l_c2_name_tbl,l_c2_model_type;
4433 CLOSE C2;
4434
4435 OPEN C3;
4436 FETCH c3 BULK COLLECT INTO
4437 l_c3_plan_level_tbl,l_c3_prj_id_tbl,l_c3_node_id_tbl,l_c3_dis_tbl,l_c3_ref_id_tbl,
4438 l_c3_nodetype_tbl,l_c3_min_tbl,l_c3_max_tbl,l_c3_rec_status_tbl,l_c3_model_type;
4439 CLOSE C3;
4440
4441 -- Bugfix 9446997
4442 -- Requirement to reset an array (of reference models) before making check_node call
4443 -- which will drive update_node_depth call
4444 cz_refs.reset_model_array;
4445
4446
4447 IF (l_c1_prj_id_tbl.COUNT = 0) THEN
4448 GOTO PROCESS_C2;
4449 END IF;
4450 -- processing C1: models referenced but have no refs
4451
4452 -- if a new model fails to insert, it is marked 'ERR' and
4453 -- any referencing models in C2 and C3 will be marked 'SKP'
4454
4455 FOR i IN l_c1_prj_id_tbl.FIRST..l_c1_prj_id_tbl.LAST LOOP
4456
4457 l_retcode := 0;
4458 p_out_err := 0;
4459
4460 -- process any ps nodes with disposition of insert
4461
4462 IF l_c1_prj_id_tbl(i) <> l_last_model_id THEN
4463 insert_ps_nodes(l_c1_prj_id_tbl(i), l_retcode);
4464 END IF;
4465
4466 IF l_retcode = 1 THEN
4467
4468 l_c1_rec_status_tbl(i):='ERR';
4469
4470 -- also set rec_status for for any references this model in C2 and C3
4471
4472 IF l_c2_prj_id_tbl.COUNT > 0 THEN
4473 -- also set rec_status for for any nodes referencing this model
4474 FOR j IN l_c2_prj_id_tbl.FIRST..l_c2_prj_id_tbl.LAST LOOP
4475 IF l_c2_prj_id_tbl(j) = l_c1_ref_model_id_tbl(i) THEN
4476 l_c2_rec_status_tbl(j):='SKP';
4477 END IF;
4478 END LOOP;
4479 END IF;
4480
4481 IF l_c3_prj_id_tbl.COUNT > 0 THEN
4482 FOR j IN l_c3_prj_id_tbl.FIRST..l_c3_prj_id_tbl.LAST LOOP
4483 IF l_c3_prj_id_tbl(j)=l_c1_ref_model_id_tbl(i) THEN
4484 l_c3_rec_status_tbl(j):='SKP';
4485 END IF;
4486 END LOOP;
4487 END IF;
4488
4489 ELSE
4490
4491 -- process any ps nodes with disposition of update for this model
4492
4493 IF l_c1_prj_id_tbl(i) <> l_last_model_id THEN
4494
4495 update_ps_nodes(l_c1_prj_id_tbl(i));
4496
4497 -- call cz_refs.check_node for ROOT only, for now
4498
4499 IF l_c1_prj_id_tbl(i)=l_c1_node_id_tbl(i) THEN
4500
4501 cz_refs.check_Node(l_c1_prj_id_tbl(i),
4502 l_c1_node_id_tbl(i),
4503 l_c1_max_tbl(i),
4504 l_c1_min_tbl(i),
4505 NULL,
4506 p_out_err,
4507 p_out_virtual_flag,
4508 '0',
4509 null,
4510 l_c1_nodetype_tbl(i),
4511 NULL, '1');
4512 END IF;
4513
4514 IF (p_out_err > 0) THEN
4515
4516 l_c1_rec_status_tbl(i):='ERR';
4517
4518 IF l_c2_prj_id_tbl.COUNT > 0 THEN
4519 -- also set rec_status for for any nodes referencing this model
4520 FOR j IN l_c2_prj_id_tbl.FIRST..l_c2_prj_id_tbl.LAST LOOP
4521 IF l_c2_prj_id_tbl(j)=l_c1_ref_model_id_tbl(i) THEN
4522 l_c2_rec_status_tbl(j):='SKP';
4523 END IF;
4524 END LOOP;
4525 END IF;
4526
4527 IF l_c3_ref_id_tbl.COUNT > 0 THEN
4528 FOR j IN l_c3_prj_id_tbl.FIRST..l_c3_prj_id_tbl.LAST LOOP
4529 IF l_c3_prj_id_tbl(j)=l_c1_ref_model_id_tbl(i) THEN
4530 l_c3_rec_status_tbl(j):='SKP';
4531 END IF;
4532 END LOOP;
4533 END IF;
4534
4535 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_ROOT_CHECKNODE',
4536 'MODELID', l_c1_prj_id_tbl(i),
4537 'PSNODEID', l_c1_node_id_tbl(i),
4538 'REFID', NULL);
4539 x_error:=CZ_UTILS.LOG_REPORT(l_msg ,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4540
4541 ELSE
4542 -- Nodes not in this run id are assumed deleted - non-BOM models only
4543 IF l_c1_model_type(i) NOT IN ('A','P','N') THEN
4547 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_RB_DELNODE', 'MODELID', l_c1_prj_id_tbl(i));
4544 l_retcode := 0;
4545 delete_ps_nodes(l_c1_prj_id_tbl(i),l_retcode);
4546 IF (l_retcode = 1) THEN
4548 x_error:=CZ_UTILS.LOG_REPORT(l_msg ,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4549 l_c1_rec_status_tbl(i):='ERR';
4550 ROLLBACK;
4551 END IF;
4552 END IF;
4553 IF (l_retcode = 0) THEN
4554 l_c1_rec_status_tbl(i):='OK';
4555 COMMIT;
4556 -- get model name
4557 SELECT name INTO l_model_name
4558 FROM cz_imp_devl_project
4559 WHERE devl_project_id=l_c1_prj_id_tbl(i)
4560 AND deleted_flag='0'
4561 AND run_id=inRun_ID
4562 AND rec_status='OK'
4563 AND rownum <2;
4564
4565 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_MODEL_IMPORTED',
4566 'MODELNAME', l_model_name,
4567 'MODELID', l_c1_prj_id_tbl(i));
4568 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4569 END IF;
4570 END IF; -- if p_out_err
4571 END IF; -- last
4572 END IF; -- if retcode
4573
4574 l_last_model_id := l_c1_prj_id_tbl(i);
4575
4576 END LOOP; -- c1 models
4577
4578 <<PROCESS_C2>>
4579
4580 -- process C2
4581
4582 -- before processing PS nodes, check the status of each model in C2 and if not to be processed (SKP or ERR)
4583 -- then mark the models referencing it in both C2 and C3 to SKP
4584
4585 IF (l_c2_prj_id_tbl.COUNT = 0) THEN
4586 GOTO PROCESS_C3;
4587 END IF;
4588
4589 FOR i IN l_c2_prj_id_tbl.FIRST..l_c2_prj_id_tbl.LAST LOOP
4590
4591 l_retcode := 0;
4592 p_out_err := 0;
4593
4594 IF l_c2_rec_status_tbl(i) IN ('ERR','SKP') THEN
4595
4596 FOR j IN l_c2_prj_id_tbl.FIRST..l_c2_prj_id_tbl.LAST LOOP
4597 IF l_c2_prj_id_tbl(j)=l_c2_ref_model_id_tbl(i) THEN
4598 l_c2_rec_status_tbl(j):= 'SKP';
4599 END IF;
4600 END LOOP;
4601
4602 IF l_c3_prj_id_tbl.COUNT > 0 THEN
4603 FOR j IN l_c3_prj_id_tbl.FIRST..l_c3_prj_id_tbl.LAST LOOP
4604 IF l_c3_prj_id_tbl(j)=l_c2_ref_model_id_tbl(i) THEN
4605 l_c3_rec_status_tbl(j):='SKP';
4606 END IF;
4607 END LOOP;
4608 END IF;
4609
4610 ELSE
4611
4612 -- to be processed, so process the insert it not already done so
4613
4614 IF l_c2_prj_id_tbl(i) <> l_last_model_id THEN
4615 l_retcode:=0;
4616 insert_ps_nodes(l_c2_prj_id_tbl(i), l_retcode);
4617 END IF;
4618
4619 -- if this C2 model errored out then update status of this model to 'ERR' and search
4620 -- for any references to this model in C2 and C3 and set the status of those to 'SKP'
4621
4622 IF l_retcode = 1 THEN
4623
4624 l_c2_rec_status_tbl(i):='ERR';
4625
4626 FOR j IN l_c2_prj_id_tbl.FIRST..l_c2_prj_id_tbl.LAST LOOP
4627 IF l_c2_prj_id_tbl(j)=l_c2_prj_id_tbl(i) THEN
4628 l_c2_rec_status_tbl(j):='ERR';
4629 END IF;
4630 END LOOP;
4631
4632 IF l_c3_prj_id_tbl.COUNT > 0 THEN
4633 FOR j IN l_c3_ref_id_tbl.FIRST..l_c3_ref_id_tbl.LAST LOOP
4634 IF l_c3_ref_id_tbl(j)=l_c2_prj_id_tbl(i) THEN
4635 l_c3_rec_status_tbl(j):='SKP';
4636 END IF;
4637 END LOOP;
4638 END IF;
4639
4640 ELSE
4641
4642 -- process the PS nodes with disposition of update, if already not done so
4643
4644 IF l_c2_prj_id_tbl(i) <> l_last_model_id THEN
4645
4646 update_ps_nodes(l_c2_prj_id_tbl(i));
4647
4648 -- call check_node for ROOT node only
4649
4650 IF l_c2_prj_id_tbl(i)=l_c2_node_id_tbl(i) THEN
4651
4652 cz_refs.check_Node(l_c2_prj_id_tbl(i),
4653 l_c2_node_id_tbl(i),
4654 l_c2_max_tbl(i),
4655 l_c2_min_tbl(i),
4656 NULL,
4657 p_out_err,
4658 p_out_virtual_flag,
4659 '0',
4660 null,
4661 l_c2_nodetype_tbl(i),
4662 NULL, '1');
4663 END IF;
4664
4665 IF (p_out_err > 0) THEN
4666
4667 l_c2_rec_status_tbl(i):='ERR';
4668
4669 FOR j IN l_c2_prj_id_tbl.FIRST..l_c2_prj_id_tbl.LAST LOOP
4670 IF l_c2_prj_id_tbl(j)=l_c2_prj_id_tbl(i) THEN
4671 l_c2_rec_status_tbl(j):='ERR';
4672 END IF;
4673 END LOOP;
4674
4675 IF l_c3_prj_id_tbl.COUNT > 0 THEN
4676 FOR j IN l_c3_ref_id_tbl.FIRST..l_c3_ref_id_tbl.LAST LOOP
4677 IF l_c3_ref_id_tbl(j)=l_c2_prj_id_tbl(i) THEN
4678 l_c3_rec_status_tbl(j):='SKP';
4679 END IF;
4680 END LOOP;
4681 END IF;
4682
4686 'REFID', NULL);
4683 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_ROOT_CHECKNODE',
4684 'MODELID', l_c2_prj_id_tbl(i),
4685 'PSNODEID', l_c2_node_id_tbl(i),
4687 x_error:=CZ_UTILS.LOG_REPORT(l_msg ,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4688 ELSE
4689 -- Nodes not in this run id are assumed deleted - non-BOM models only
4690 IF l_c2_model_type(i) NOT IN ('A','P','N') THEN
4691 l_retcode := 0;
4692 delete_ps_nodes(l_c2_prj_id_tbl(i),l_retcode);
4693 IF (l_retcode = 1) THEN
4694 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_RB_DELNODE', 'MODELID', l_c2_prj_id_tbl(i));
4695 x_error:=CZ_UTILS.LOG_REPORT(l_msg ,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4696 l_c2_rec_status_tbl(i):='ERR';
4697 ROLLBACK;
4698 END IF;
4699 END IF;
4700 IF (l_retcode = 0) THEN
4701 l_c2_rec_status_tbl(i):='OK';
4702 COMMIT;
4703 SELECT name INTO l_model_name
4704 FROM cz_imp_devl_project
4705 WHERE devl_project_id=l_c2_prj_id_tbl(i)
4706 AND deleted_flag='0'
4707 AND run_id=inRun_ID
4708 AND rec_status='OK'
4709 AND rownum <2;
4710 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_MODEL_IMPORTED',
4711 'MODELNAME', l_model_name,
4712 'MODELID', l_c2_prj_id_tbl(i));
4713 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4714 END IF;
4715 END IF; -- if p_out_err
4716 END IF; -- last
4717 END IF; -- if retcode
4718
4719 END IF; -- if rec status
4720
4721 l_last_model_id := l_c2_prj_id_tbl(i);
4722
4723 END LOOP; -- c2 models
4724
4725 <<PROCESS_C3>>
4726
4727 IF (l_c3_prj_id_tbl.COUNT = 0) THEN
4728 GOTO UPDATE_IMP_TABLE;
4729 END IF;
4730
4731 -- Process C3 models
4732
4733 -- The models here are not referenced, the PS nodes will be processed, and if root node fails to insert
4734 -- the model will be set to 'ERR'
4735 -- But before processing the PS nodes, chekc the status of each model here and if it is 'SKP' then
4736 -- do not process
4737
4738 FOR i IN l_c3_prj_id_tbl.FIRST..l_c3_prj_id_tbl.LAST LOOP
4739
4740 l_retcode := 0;
4741 p_out_err := 0;
4742
4743 -- porcess if not 'ERR' or 'SKP'
4744
4745 IF l_c3_rec_status_tbl(i) NOT IN ('ERR','SKP') THEN
4746
4747 -- process PS nodes with disposition of insert if haven't already done so
4748 IF l_c3_prj_id_tbl(i) <> l_last_model_id THEN
4749 insert_ps_nodes(l_c3_prj_id_tbl(i), l_retcode);
4750 END IF;
4751
4752 IF l_retcode = 1 THEN
4753 l_c3_rec_status_tbl(i):='ERR';
4754 ELSE
4755
4756 IF l_c3_prj_id_tbl(i) <> l_last_model_id THEN
4757
4758 -- process PS nodes with disposition of update if haven't already done so
4759
4760 update_ps_nodes(l_c3_prj_id_tbl(i));
4761
4762 -- call check_node for ROOT only, for now
4763 IF l_c3_prj_id_tbl(i)=l_c3_node_id_tbl(i) THEN
4764
4765 cz_refs.check_Node(l_c3_prj_id_tbl(i),
4766 l_c3_node_id_tbl(i),
4767 l_c3_max_tbl(i),
4768 l_c3_min_tbl(i),
4769 NULL,
4770 p_out_err,
4771 p_out_virtual_flag,
4772 '0',
4773 null,
4774 l_c3_nodetype_tbl(i),
4775 NULL, '1');
4776 END IF;
4777
4778 IF (p_out_err > 0) THEN
4779
4780 l_c3_rec_status_tbl(i):='ERR';
4781 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_ROOT_CHECKNODE',
4782 'MODELID', l_c3_prj_id_tbl(i),
4783 'PSNODEID', l_c3_node_id_tbl(i),
4784 'REFID', NULL);
4785 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4786
4787 ELSE
4788 -- Nodes not in this run id are assumed deleted - non-BOM models only
4789 IF l_c3_model_type(i) NOT IN ('A','P','N') THEN
4790 l_retcode := 0;
4791 delete_ps_nodes(l_c3_prj_id_tbl(i),l_retcode);
4792 IF (l_retcode = 1) THEN
4793 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_RB_DELNODE', 'MODELID', l_c3_prj_id_tbl(i));
4794 x_error:=CZ_UTILS.LOG_REPORT(l_msg ,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4795 l_c3_rec_status_tbl(i):='ERR';
4796 ROLLBACK;
4797 END IF;
4798 END IF;
4799 IF (l_retcode = 0) THEN
4800 l_c3_rec_status_tbl(i):='OK';
4801 COMMIT;
4802 SELECT name INTO l_model_name
4803 FROM cz_imp_devl_project
4804 WHERE devl_project_id=l_c3_prj_id_tbl(i)
4805 AND deleted_flag='0'
4806 AND run_id=inRun_ID
4810 'MODELNAME', l_model_name,
4807 AND rec_status='OK'
4808 AND rownum <2;
4809 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_MODEL_IMPORTED',
4811 'MODELID', l_c3_prj_id_tbl(i));
4812 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4813 END IF;
4814 END IF; -- if p_out_err
4815 END IF; -- last
4816 END IF; -- if retcode
4817 END IF; -- if rec status
4818
4819 l_last_model_id := l_c3_prj_id_tbl(i);
4820
4821 END LOOP; -- c3 models
4822
4823 <<UPDATE_IMP_TABLE>>
4824
4825 -- Now update the imp tables for failed models of C1
4826
4827 IF l_c1_prj_id_tbl.COUNT > 0 THEN
4828 FOR i IN l_c1_prj_id_tbl.FIRST..l_c1_prj_id_tbl.LAST LOOP
4829 IF l_c1_rec_status_tbl(i)='ERR' THEN
4830
4831 UPDATE CZ_IMP_PS_NODES
4832 SET REC_STATUS='ERR'
4833 WHERE DEVL_PROJECT_ID=l_c1_prj_id_tbl(i)
4834 AND RUN_ID=inRUN_ID;
4835
4836 UPDATE CZ_IMP_DEVL_PROJECT
4837 SET REC_STATUS='ERR'
4838 WHERE DEVL_PROJECT_ID=l_c1_prj_id_tbl(i)
4839 AND RUN_ID=inRUN_ID
4840 AND DISPOSITION=l_c1_dis_tbl(i);
4841
4842 -- delete if failed model was a new model
4843
4844 IF l_c1_dis_tbl(i) = 'I' THEN
4845 DELETE FROM cz_devl_projects
4846 WHERE devl_project_id = l_c1_prj_id_tbl(i);
4847 DELETE FROM cz_rp_entries
4848 WHERE object_id = l_c1_prj_id_tbl(i)
4849 AND object_type = 'PRJ';
4850 END IF;
4851 END IF;
4852 END LOOP;
4853 END IF;
4854
4855 -- Now update the imp tables for failed or skipped models of C2
4856
4857 IF l_c2_prj_id_tbl.COUNT > 0 THEN
4858 FOR i IN l_c2_prj_id_tbl.FIRST..l_c2_prj_id_tbl.LAST LOOP
4859 IF l_c2_rec_status_tbl(i) IN ('SKP','ERR') THEN
4860
4861 UPDATE CZ_IMP_PS_NODES
4862 SET REC_STATUS=DECODE(l_c2_rec_status_tbl(i),'SKP','PASS',l_c2_rec_status_tbl(i))
4863 WHERE DEVL_PROJECT_ID=l_c2_prj_id_tbl(i)
4864 AND RUN_ID=inRUN_ID;
4865
4866 UPDATE CZ_IMP_DEVL_PROJECT
4867 SET REC_STATUS=DECODE(l_c2_rec_status_tbl(i),'SKP','PASS',l_c2_rec_status_tbl(i))
4868 WHERE DEVL_PROJECT_ID=l_c2_prj_id_tbl(i)
4869 AND RUN_ID=inRUN_ID
4870 AND DISPOSITION=l_c2_dis_tbl(i);
4871
4872 -- delete if failed model was a new model
4873
4874 IF l_c2_dis_tbl(i) = 'I' THEN
4875 DELETE FROM cz_devl_projects
4876 WHERE devl_project_id = l_c2_prj_id_tbl(i);
4877 DELETE FROM cz_rp_entries
4878 WHERE object_id = l_c2_prj_id_tbl(i)
4879 AND object_type = 'PRJ';
4880 END IF;
4881 END IF;
4882 END LOOP;
4883 END IF;
4884
4885 -- Now update the imp tables for failed or skipped models of C3
4886
4887 IF l_c3_prj_id_tbl.COUNT > 0 THEN
4888 FOR i IN l_c3_prj_id_tbl.FIRST..l_c3_prj_id_tbl.LAST LOOP
4889 IF l_c3_rec_status_tbl(i) IN ('SKP','ERR') THEN
4890
4891 UPDATE CZ_IMP_PS_NODES
4892 SET REC_STATUS=DECODE(l_c3_rec_status_tbl(i),'SKP','PASS',l_c3_rec_status_tbl(i))
4893 WHERE DEVL_PROJECT_ID=l_c3_prj_id_tbl(i)
4894 AND RUN_ID=inRUN_ID;
4895
4896 UPDATE CZ_IMP_DEVL_PROJECT
4897 SET REC_STATUS=DECODE(l_C3_rec_status_tbl(i),'SKP','PASS',l_c3_rec_status_tbl(i))
4898 WHERE DEVL_PROJECT_ID=l_c3_prj_id_tbl(i)
4899 AND RUN_ID=inRUN_ID
4900 AND DISPOSITION=l_c3_dis_tbl(i);
4901
4902 -- delete if failed model was a new model
4903
4904 IF l_c3_dis_tbl(i) = 'I' THEN
4905 DELETE FROM cz_devl_projects
4906 WHERE devl_project_id = l_c3_prj_id_tbl(i);
4907 DELETE FROM cz_rp_entries
4908 WHERE object_id = l_c3_prj_id_tbl(i)
4909 AND object_type = 'PRJ';
4910 END IF;
4911 END IF;
4912 END LOOP;
4913 END IF;
4914
4915 -- Process C4 models - models with no refs and not referenced
4916
4917 OPEN C4;
4918 FETCH C4 BULK COLLECT INTO
4919 l_c4_plan_level_tbl,l_c4_prj_id_tbl,l_c4_node_id_tbl,l_c4_dis_tbl,
4920 l_c4_nodetype_tbl,l_c4_min_tbl,l_c4_max_tbl,l_c4_rec_status_tbl,l_c4_model_type;
4921 CLOSE C4;
4922
4923 IF (l_c4_prj_id_tbl.COUNT = 0) THEN
4924 GOTO PROCESS_REFS;
4925 END IF;
4926
4927 FOR i IN l_c4_prj_id_tbl.FIRST..l_c4_prj_id_tbl.LAST LOOP
4928
4929 l_retcode := 0;
4930 p_out_err := 0;
4931
4932 -- process PS nodes with disposition of insert
4933
4934 insert_ps_nodes(l_c4_prj_id_tbl(i), l_retcode);
4935
4936 IF l_retcode = 1 THEN
4937 l_c4_rec_status_tbl(i):='ERR';
4938 ELSE
4939
4940 -- process PS nodes with disposition of update
4941 update_ps_nodes(l_c4_prj_id_tbl(i));
4942
4943 -- call check node for ROOT node for now
4944 IF l_c4_prj_id_tbl(i)=l_c4_node_id_tbl(i) THEN
4945
4946 cz_refs.check_Node(l_c4_prj_id_tbl(i),
4947 l_c4_node_id_tbl(i),
4948 l_c4_max_tbl(i),
4949 l_c4_min_tbl(i),
4953 '0',
4950 NULL,
4951 p_out_err,
4952 p_out_virtual_flag,
4954 null,
4955 l_c4_nodetype_tbl(i),
4956 NULL, '1');
4957 END IF;
4958
4959 IF (p_out_err > 0) THEN
4960
4961 l_c4_rec_status_tbl(i):='ERR';
4962 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_ROOT_CHECKNODE',
4963 'MODELID', l_c4_prj_id_tbl(i),
4964 'PSNODEID', l_c4_node_id_tbl(i),
4965 'REFID', NULL);
4966 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4967 ELSE
4968 -- Nodes not in this run id are assumed deleted - non-BOM models only
4969 IF l_c4_model_type(i) NOT IN ('A','P','N') THEN
4970 l_retcode := 0;
4971 delete_ps_nodes(l_c4_prj_id_tbl(i),l_retcode);
4972 IF (l_retcode = 1) THEN
4973 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_RB_DELNODE', 'MODELID', l_c4_prj_id_tbl(i));
4974 x_error:=CZ_UTILS.LOG_REPORT(l_msg ,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4975 l_c4_rec_status_tbl(i):='ERR';
4976 ROLLBACK;
4977 END IF;
4978 END IF;
4979 IF (l_retcode = 0) THEN
4980 l_c4_rec_status_tbl(i):='OK';
4981 COMMIT;
4982 SELECT name INTO l_model_name
4983 FROM cz_imp_devl_project
4984 WHERE devl_project_id=l_c4_prj_id_tbl(i)
4985 AND deleted_flag='0'
4986 AND run_id=inRun_ID
4987 AND rec_status='OK'
4988 AND rownum <2;
4989 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_MODEL_IMPORTED',
4990 'MODELNAME', l_model_name,
4991 'MODELID', l_c4_prj_id_tbl(i));
4992 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
4993 END IF;
4994 END IF; -- p_out_err
4995 END IF; -- if retcode ..
4996 END LOOP; -- c4 models
4997
4998 -- Now update the imp tables for failed models of C4
4999
5000 IF l_c4_prj_id_tbl.COUNT > 0 THEN
5001 FOR i IN l_c4_prj_id_tbl.FIRST..l_c4_prj_id_tbl.LAST LOOP
5002 IF l_c4_rec_status_tbl(i)='ERR' THEN
5003
5004 UPDATE CZ_IMP_PS_NODES
5005 SET REC_STATUS='ERR'
5006 WHERE DEVL_PROJECT_ID=l_c4_prj_id_tbl(i)
5007 AND RUN_ID=inRUN_ID;
5008
5009 UPDATE CZ_IMP_DEVL_PROJECT
5010 SET REC_STATUS='PASS'
5011 WHERE DEVL_PROJECT_ID=l_c4_prj_id_tbl(i)
5012 AND RUN_ID=inRUN_ID
5013 AND DISPOSITION=l_c4_dis_tbl(i);
5014
5015 -- delete if failed model was a new model
5016
5017 IF l_c4_dis_tbl(i) = 'I' THEN
5018 DELETE FROM cz_devl_projects
5019 WHERE devl_project_id = l_c4_prj_id_tbl(i);
5020 DELETE FROM cz_rp_entries
5021 WHERE object_id = l_c4_prj_id_tbl(i)
5022 AND object_type = 'PRJ';
5023 END IF;
5024 END IF;
5025 END LOOP;
5026 END IF;
5027
5028 <<PROCESS_REFS>>
5029 ---------------------------------------------------------------------------------------------------------------
5030 -- DONE transferring PS nodes for all models in this run id -- call check nodes for refs and components only
5031 ---------------------------------------------------------------------------------------------------------------
5032 OPEN l_model_refs_csr;
5033 FETCH l_model_refs_csr BULK COLLECT INTO
5034 l_PlanLevel,l_PsNodeId,l_DevlProjectId,l_ReferenceId,
5035 l_minimum,l_maximum,l_PsNodeType,l_ParentId,l_dis;
5036 CLOSE l_model_refs_csr;
5037
5038 IF l_PsNodeId.COUNT > 0 THEN
5039
5040 FOR i IN l_PsNodeId.FIRST..l_PsNodeId.LAST LOOP
5041
5042 p_out_err := 0;
5043
5044 cz_refs.check_Node(l_PsNodeId(i),
5045 l_DevlProjectId(i),
5046 l_Maximum(i),
5047 l_Minimum(i),
5048 l_ReferenceId(i),
5049 p_out_err,
5050 p_out_virtual_flag,
5051 '0',
5052 null,
5053 l_PsNodeType(i),
5054 NULL, '1');
5055
5056 IF (p_out_err > 0) THEN
5057 FAILED:=FAILED +1;
5058 UPDATE CZ_IMP_PS_NODES
5059 SET REC_STATUS='ERR'
5060 WHERE PS_NODE_ID=l_PsNodeId(i)
5061 AND RUN_ID=inRUN_ID
5062 AND DISPOSITION=l_dis(i);
5063
5064 SELECT name INTO l_model_name
5065 FROM cz_imp_devl_project
5066 WHERE devl_project_id=l_DevlProjectId(i)
5067 AND deleted_flag='0'
5068 AND run_id=inRun_ID
5069 AND rec_status='OK'
5070 AND rownum <2;
5071 l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_CHECKNODE',
5072 'MODELID', l_DevlProjectId(i),
5073 'PSNODEID', l_PsNodeId(i),
5077 END LOOP;
5074 'REFID', l_ReferenceId(i));
5075 x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
5076 END IF;
5078 END IF;
5079
5080
5081 -- Bugfix 9446997
5082 -- Call update_node_depth explicitly due to it's removal from check_node procedure
5083 cz_refs.update_node_depth(NULL) ;
5084
5085 --Fix for the bug #3040079. We need to call a new cz_refs procedure for every model we inserted.
5086 FOR c_model IN (SELECT devl_project_id FROM cz_imp_devl_project
5087 WHERE run_id = inRUN_ID
5088 AND rec_status = 'OK')LOOP
5089 cz_refs.populate_component_id(c_model.devl_project_id);
5090 END LOOP;
5091
5092 COMMIT;
5093 INSERTS:=nInsertCount;
5094 UPDATES:=nUpdateCount;
5095 NOCHANGE:=nNoChangeCount;
5096 EXCEPTION
5097 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
5098 IF c_xfr_psnode%ISOPEN THEN close c_xfr_psnode; END IF;
5099 RAISE;
5100 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
5101 RAISE;
5102 WHEN OTHERS THEN
5103 IF c_xfr_psnode%ISOPEN THEN close c_xfr_psnode; END IF;
5104 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'IMP_IM_XFR.XFR_PS_NODE',11276,inRun_Id);
5105 END XFR_PS_NODE;
5106
5107 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
5108 PROCEDURE RPT_PS_NODE ( inRUN_ID IN PLS_INTEGER ) AS
5109 x_error BOOLEAN:=FALSE;
5110
5111 v_table_name VARCHAR2(30) := 'CZ_PS_NODES';
5112 v_ok VARCHAR2(4) := 'OK';
5113 v_completed VARCHAR2(1) := '1';
5114
5115 BEGIN
5116 BEGIN
5117 DELETE FROM CZ_XFR_RUN_RESULTS WHERE RUN_ID=inRUN_ID AND IMP_TABLE=v_table_name;
5118
5119 EXCEPTION
5120 WHEN NO_DATA_FOUND THEN NULL;
5121 END;
5122
5123 DECLARE
5124 CURSOR c_xfr_run_result IS
5125 SELECT DISPOSITION,REC_STATUS,COUNT(*)
5126 FROM CZ_IMP_PS_NODES
5127 WHERE RUN_ID = inRUN_ID
5128 GROUP BY DISPOSITION,REC_STATUS;
5129
5130 ins_disposition CZ_XFR_RUN_RESULTS.disposition%TYPE;
5131 ins_rec_status CZ_XFR_RUN_RESULTS.rec_status%TYPE ;
5132 ins_rec_count CZ_XFR_RUN_RESULTS.records%TYPE ;
5133
5134 BEGIN
5135
5136 OPEN c_xfr_run_result;
5137 LOOP
5138 FETCH c_xfr_run_result INTO ins_disposition,ins_rec_status,ins_rec_count;
5139 EXIT WHEN c_xfr_run_result%NOTFOUND;
5140
5141 INSERT INTO CZ_XFR_RUN_RESULTS (RUN_ID,IMP_TABLE,DISPOSITION,REC_STATUS,RECORDS)
5142 VALUES(inRUN_ID,v_table_name,ins_disposition,ins_rec_status,ins_rec_count);
5143
5144 END LOOP;
5145 CLOSE c_xfr_run_result;
5146 COMMIT;
5147
5148 EXCEPTION
5149 WHEN OTHERS THEN
5150 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.RPT_PS_NODE',11276,inRun_Id);
5151 END;
5152
5153 DECLARE
5154 nErrors PLS_INTEGER;
5155 CURSOR c_get_nErrors IS
5156 SELECT SUM(NVL(RECORDS,0)) FROM CZ_XFR_RUN_RESULTS
5157 WHERE REC_STATUS<>v_ok AND RUN_ID=inRUN_ID
5158 AND IMP_TABLE=v_table_name;
5159 BEGIN
5160 OPEN c_get_nErrors;
5161 FETCH c_get_nErrors INTO nErrors;
5162 CLOSE c_get_nErrors;
5163 UPDATE CZ_XFR_RUN_INFOS
5164 SET TOTAL_ERRORS=NVL(TOTAL_ERRORS,0)+NVL(nErrors,0),
5165 COMPLETED=v_completed
5166 WHERE RUN_ID=inRUN_ID;
5167 COMMIT;
5168 EXCEPTION
5169 WHEN OTHERS THEN
5170 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.RPT_PS_NODE',11276,inRun_Id);
5171 END;
5172 EXCEPTION
5173 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
5174 RAISE;
5175 WHEN CZ_ADMIN.IMP_UNEXP_SQL_ERROR THEN
5176 RAISE;
5177 WHEN OTHERS THEN
5178 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_PS_NODE.RPT_PS_NODE',11276,inRun_Id);
5179 END;
5180 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
5181
5182 /*--PS_NODE IMPORT SECTION END----------------------------------------------*/
5183 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
5184 END CZ_IMP_PS_NODE;