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