DBA Data[Home] [Help]
Skip to content

PACKAGE BODY: APPS.CZ_IMP_IM_KRS

Source


1 PACKAGE BODY CZ_IMP_IM_KRS AS
2 /*	$Header: cziimkrb.pls 120.6.12020000.2 2012/08/17 14:54:13 smanna ship $		  */
3 
4 
5 PROCEDURE KRS_ITEM_MASTER(inRUN_ID 	  IN 	PLS_INTEGER,
6                           COMMIT_SIZE IN  PLS_INTEGER,
7 				  MAX_ERR	  IN 	PLS_INTEGER,
8 				  INSERTS	    OUT NOCOPY PLS_INTEGER,
9 				  UPDATES	  OUT NOCOPY PLS_INTEGER,
10 				  FAILED	  IN  OUT NOCOPY PLS_INTEGER,
11 				  DUPS	    OUT NOCOPY PLS_INTEGER,
12 				  NOCHANGE  IN  OUT NOCOPY PLS_INTEGER,
13                                   inXFR_GROUP       IN    VARCHAR2
14 				 ) IS
15 BEGIN
16   DECLARE
17     CURSOR c_imp_itemmaster(x_usesurr_itemtype pls_integer) IS
18      SELECT ORIG_SYS_REF, SRC_APPLICATION_ID, SRC_TYPE_CODE, ITEM_ID,ITEM_TYPE_ID,DESC_TEXT,REF_PART_NBR,QUOTEABLE_FLAG,PRIMARY_UOM_CODE,
19      LEAD_TIME,ITEM_STATUS,DELETED_FLAG,DECIMAL_QTY_FLAG,
20      DECODE(x_usesurr_itemtype,0,FSK_ITEMTYPE_1_1,1,FSK_ITEMTYPE_1_EXT), ROWID
21      FROM CZ_IMP_ITEM_MASTER
22      WHERE REC_STATUS IS NULL AND RUN_ID=inRUN_ID
23      ORDER BY 1,2,ROWID;
24 
25     v_settings_id      VARCHAR2(40);
26     v_section_name     VARCHAR2(30);
27 
28     CURSOR C_ITEM_TYPE_ID IS
29      SELECT VALUE FROM CZ_DB_SETTINGS
30      WHERE SECTION_NAME=v_section_name
31        AND SETTING_ID=v_settings_id;
32 
33     CURSOR C_ITEM_TYPE(nItemTypeId PLS_INTEGER) IS
34      SELECT 'F' FROM CZ_ITEM_TYPES
35      WHERE ITEM_TYPE_ID=nItemTypeId;
36 
37   /* cursor's data found indicator */
38   x_imp_itemmaster_itemid_f		BOOLEAN:=FALSE;
39   x_onl_itemtype_itemtypeid_f		BOOLEAN:=FALSE;
40   x_onl_itemmaster_itemid_f		BOOLEAN:=FALSE;
41   x_onl_default_itemtypeid_f        BOOLEAN:=FALSE;
42   x_error					BOOLEAN:=FALSE;
43   sDfltItemTypeId                   CZ_DB_SETTINGS.VALUE%TYPE;
44   nOnlItemId                        CZ_IMP_ITEM_MASTER.ITEM_ID%TYPE;
45   nOnlItemTypeId                    CZ_IMP_ITEM_MASTER.ITEM_TYPE_ID%TYPE;
46   nDfltItemTypeId                   CZ_IMP_ITEM_MASTER.ITEM_TYPE_ID%TYPE;
47   sImpOrigSysRef                    CZ_IMP_ITEM_MASTER.ORIG_SYS_REF%TYPE;
48   sFSKITEMTYPE                      CZ_IMP_ITEM_MASTER.FSK_ITEMTYPE_1_1%TYPE;
49   sLastFSK                          CZ_IMP_ITEM_MASTER.REF_PART_NBR%TYPE;
50   sThisFSK                          CZ_IMP_ITEM_MASTER.REF_PART_NBR%TYPE;
51   sRecStatus                        CZ_IMP_ITEM_MASTER.REC_STATUS%TYPE;
52   sDisposition                      CZ_IMP_ITEM_MASTER.DISPOSITION%TYPE;
53   nImpSrcApplicationId              CZ_IMP_ITEM_MASTER.SRC_APPLICATION_ID%TYPE;
54   nImpItemId                        CZ_IMP_ITEM_MASTER.ITEM_ID%TYPE;
55   nImpItemTypeId                    CZ_IMP_ITEM_MASTER.ITEM_TYPE_ID%TYPE;
56   nOnlItemTypeIdIB                  CZ_IMP_ITEM_MASTER.ITEM_TYPE_ID%TYPE;
57   nImpDescText                      CZ_IMP_ITEM_MASTER.DESC_TEXT%TYPE;
58   nOnlDescText                      CZ_IMP_ITEM_MASTER.DESC_TEXT%TYPE;
59   nImpRefPartNbr                    CZ_IMP_ITEM_MASTER.REF_PART_NBR%TYPE;
60   nOnlRefPartNbr                    CZ_IMP_ITEM_MASTER.REF_PART_NBR%TYPE;
61   nImpQuoFlag                       CZ_IMP_ITEM_MASTER.QUOTEABLE_FLAG%TYPE;
62   nOnlQuoFlag                       CZ_IMP_ITEM_MASTER.QUOTEABLE_FLAG%TYPE;
63   nImpPriUOMCode                    CZ_IMP_ITEM_MASTER.PRIMARY_UOM_CODE%TYPE;
64   nOnlPriUOMCode                    CZ_IMP_ITEM_MASTER.PRIMARY_UOM_CODE%TYPE;
65   nImpLeadTime                      CZ_IMP_ITEM_MASTER.LEAD_TIME%TYPE;
66   nOnlLeadTime                      CZ_IMP_ITEM_MASTER.LEAD_TIME%TYPE;
67   nImpItemStatus                    CZ_IMP_ITEM_MASTER.ITEM_STATUS%TYPE;
68   nOnlItemStatus                    CZ_IMP_ITEM_MASTER.ITEM_STATUS%TYPE;
69   nImpDeletedFlag                   CZ_IMP_ITEM_MASTER.DELETED_FLAG%TYPE;
70   nOnlDeletedFlag                   CZ_IMP_ITEM_MASTER.DELETED_FLAG%TYPE;
71   nImpDecQtyFlag                    CZ_IMP_ITEM_MASTER.DECIMAL_QTY_FLAG%TYPE;
72   nonlDecQtyFlag                    CZ_IMP_ITEM_MASTER.DECIMAL_QTY_FLAG%TYPE;
73 
74 
75 
76 
77   nImpSrcTypeCode                   CZ_IMP_ITEM_MASTER.SRC_TYPE_CODE%TYPE;
78 
79   p_onl_itemtype_itemtypeid		CHAR(1);
80   /* Internal vars */
81   nCommitCount				PLS_INTEGER:=0;	/*COMMIT buffer index */
82   nErrorCount				PLS_INTEGER:=0;	/*Error index */
83   nInsertCount				PLS_INTEGER:=0;	/*Inserts */
84   nUpdateCount				PLS_INTEGER:=0;	/*Updates */
85   nDups					PLS_INTEGER:=0;	/*Dupl records */
86   nNoChangeCount                        PLS_INTEGER:=0;	/*Nochange in Record*/
87   x_usesurr_itemtype			PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_ITEM_TYPES',inXFR_GROUP);
88   nAllocateBlock                        PLS_INTEGER:=1;
89   dispositionflag                       PLS_INTEGER:=0;
90   nAllocateCounter                      PLS_INTEGER;
91   nNextValue                            NUMBER;
92   thisRowId                             ROWID;
93 
94   BEGIN
95 
96     v_settings_id := 'OracleSequenceIncr';
97     v_section_name := 'SCHEMA';
98 
99     BEGIN
100      SELECT VALUE INTO nAllocateBlock FROM CZ_DB_SETTINGS
101      WHERE SETTING_ID=v_settings_id AND SECTION_NAME=v_section_name;
102     EXCEPTION
103       WHEN OTHERS THEN
104         nAllocateBlock:=1;
105     END;
106     nAllocateCounter:=nAllocateBlock-1;
107 
108     v_settings_id := 'IMPORT_ITEM_TYPE';
109     v_section_name := 'ORAAPPS_INTEGRATE';
110 
111     OPEN C_ITEM_TYPE_ID;
112     FETCH C_ITEM_TYPE_ID INTO sDfltItemTypeId;
113     IF(C_ITEM_TYPE_ID%NOTFOUND)THEN
114      nOnlItemTypeId:=0;
115     ELSIF CZ_UTILS.ISNUM(sDfltItemTypeId)=TRUE THEN
116      nOnlItemTypeId:=TO_NUMBER(sDfltItemTypeId);
117     ELSE
118      nOnlItemTypeId:=0;
119     END IF;
120     CLOSE C_ITEM_TYPE_ID;
121 
122     nDfltItemTypeId := nOnlItemTypeId;
123 
124     OPEN C_ITEM_TYPE(nOnlItemTypeId);
125     FETCH C_ITEM_TYPE INTO p_onl_itemtype_itemtypeid;
126     x_onl_default_itemtypeid_f:=C_ITEM_TYPE%FOUND;
127     CLOSE C_ITEM_TYPE;
128 
129     OPEN c_imp_itemmaster(x_usesurr_itemtype) ;
130 	LOOP
131 	/* COMMIT if the buffer size is reached */
132 	 IF(nCommitCount>= COMMIT_SIZE) THEN
133 	  BEGIN
134 		COMMIT;
135 		nCommitCount:=0;
136 	  END;
137 	 ELSE
138 		nCOmmitCount:=nCommitCount+1;
139 	 END IF;
140 
141 	sImpOrigSysRef:=NULL; sfskitemtype:=NULL;
142 	FETCH c_imp_itemmaster  INTO sImpOrigSysRef,
143         nImpSrcApplicationId, nImpSrcTypeCode,nImpItemId,nImpItemTypeId,  nImpDescText,  nImpRefPartNbr,  nImpQuoFlag,  nImpPriUOMCode,  nImpLeadTime,  nImpItemStatus,  nImpDeletedFlag,  nImpDecQtyFlag,sfskitemtype,thisRowId;
144 
145 		sThisFSK:=sImpOrigSysRef;
146 	x_imp_itemmaster_itemid_f:=c_imp_itemmaster%FOUND;
147 	EXIT WHEN NOT x_imp_itemmaster_itemid_f;
148 
149 	/* Check The Item Data from Online Dbase */
150 	DECLARE
151 	  CURSOR c_onl_itemmaster IS
152 	   SELECT ITEM_ID,ITEM_TYPE_ID,DESC_TEXT,REF_PART_NBR,QUOTEABLE_FLAG,PRIMARY_UOM_CODE,LEAD_TIME,ITEM_STATUS,DELETED_FLAG,DECIMAL_QTY_FLAG FROM CZ_ITEM_MASTERS
153          WHERE ORIG_SYS_REF=sImpOrigSysRef
154          AND SRC_APPLICATION_ID=nImpSrcApplicationId;
155 
156 	BEGIN
157 	 OPEN  c_onl_itemmaster;
158 	 nOnlItemId:=NULL;
159 	 FETCH c_onl_itemmaster INTO  nOnlItemId,nOnlItemTypeIdIB,  nOnlDescText,  nOnlRefPartNbr,  nOnlQuoFlag,  nOnlPriUOMCode,  nOnlLeadTime,  nOnlItemStatus,  nOnlDeletedFlag,  nOnlDecQtyFlag;
160 	 x_onl_itemmaster_itemid_f:=c_onl_itemmaster%FOUND;
161 	 CLOSE c_onl_itemmaster;
162 	END;
163 
164 	/* Make sure that Item_Type_Id exists for this item in ITEM_TYPE table */
165 	/* The following if is necessary because DECODE does not take BOOLEAN vars */
166 	DECLARE
167   	 CURSOR c_onl_itemtype_itemtypeid IS
168 	  SELECT ITEM_TYPE_ID FROM CZ_ITEM_TYPES WHERE ORIG_SYS_REF=sFSKITEMTYPE;
169 	BEGIN
170 	 nOnlItemTypeId := nDfltItemTypeId;
171        IF(sFSKITEMTYPE IS NOT NULL)THEN
172   	  OPEN c_onl_itemtype_itemtypeid;
173 	  FETCH c_onl_itemtype_itemtypeid INTO nOnlItemTypeId;
174 	  x_onl_itemtype_itemtypeid_f:=c_onl_itemtype_itemtypeid%FOUND;
175 	  CLOSE c_onl_itemtype_itemtypeid;
176        END IF;
177        IF(NOT x_onl_itemtype_itemtypeid_f)THEN
178         x_onl_itemtype_itemtypeid_f:=x_onl_default_itemtypeid_f;
179        END IF;
180 	END;
181 
182   	IF(NOT x_onl_itemtype_itemtypeid_f OR (sImpOrigSysRef IS NULL)) THEN
183   	 BEGIN
184 	  /* The record has Item ID but no Item_type_id */
185 	  FAILED:=FAILED+1;
186 	  /* Found ITEM_ID, mark record as Modify and insert the item_id */
187 	  IF(sImpOrigSysRef IS NULL)THEN
188 	   sRecStatus:='N9';
189 	  ELSIF(NOT x_onl_itemtype_itemtypeid_f AND x_usesurr_itemtype=1)THEN
190 	   sRecStatus:='F28';
191 	  ELSIF(NOT x_onl_itemtype_itemtypeid_f AND x_usesurr_itemtype=0)THEN
192 	   sRecStatus:='F27';
193 	  END IF;
194 	  sDisposition:='R';
195 	 END;
196 
197 	ELSE
198 				/* ItemTypeID exists, so insert or update */
199 				BEGIN
200 					IF(sLastFSK IS NOT NULL AND sLastFSK=sThisFSK) THEN
201 						/* This is a duplicate record */
202 						sRecStatus:='DUPL';
203 						sDisposition:='R';
204 						nDups:=nDups+1;
205 					ELSE
206 
207 						BEGIN
208 
209 
210                                                         sRecStatus:='PASS';
211 							        IF( x_onl_itemmaster_itemid_f )THEN
212 
213 								    IF((nImpDescText=nOnlDescText)  AND  (nImpRefPartNbr=nOnlRefPartNbr) AND  (nImpQuoFlag=nOnlQuoFlag)
214 								    AND (nImpPriUOMCode=nOnlPriUOMCode) AND (nvl(nImpLeadTime,0)=nvl( nOnlLeadTime,0))
215 								    AND (nvl(nImpItemStatus,0)=nvl(nOnlItemStatus,0)) AND (nImpDeletedFlag=nOnlDeletedFlag)
216 							            AND (nImpDecQtyFlag=nOnlDecQtyFlag) AND (nOnlItemTypeIdIB=nOnlItemTypeId))THEN -- VR Comparing columns for setting disposition correctly
217 						                    dispositionflag:=1;
218 						                    END IF;
219 								      IF (dispositionflag=1) THEN
220 								         sDisposition:='N';
221 								         nNoChangeCount:=nNoChangeCount+1;
222 
223                                                                       ELSE
224 								         /* Update so save also the Product_line_id */
225 								         sDisposition:='M';
226 								         nUpdateCount:=nUpdateCount+1;
227                                                                       END IF;
228 							        ELSE
229 								/*Insert */
230 								sDisposition:='I';
231 								nInsertCount:=nInsertCount+1;
232                                                                 nAllocateCounter:=nAllocateCounter+1;
233                                                                  IF(nAllocateCounter=nAllocateBlock)THEN
234                                                                  nAllocateCounter:=0;
235                                                                  SELECT CZ_ITEM_MASTERS_S.NEXTVAL INTO nNextValue FROM DUAL;
236                                                                  END IF;
237 
238 								END IF;
239 						END;
240 					END IF;
241 				END;
242 	    END IF;
243 
244             UPDATE CZ_IMP_ITEM_MASTER
245             SET ITEM_ID=DECODE(sDISPOSITION,'R',ITEM_ID,'I',nNextValue+nAllocateCounter, nOnlItemId),
246 	    ITEM_TYPE_ID=DECODE(sDISPOSITION,'R',ITEM_TYPE_ID,nOnlItemTypeId),
247 	    DISPOSITION=sDisposition,
248 	    REC_STATUS=sRecStatus
249             WHERE ROWID = thisRowId;
250 	    sLastFSK:=sImpOrigSysRef;
251 
252 
253 
254             /* Return if MAX_ERR is reached */
255 	    IF (FAILED >= MAX_ERR) THEN
256               x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_IM_KRS.KRS_ITEM_MASTER:MAX',11276,inRun_Id);
257               RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
258 	    END IF;
259 
260 	    sDisposition:=NULL; sRecStatus:=NULL;dispositionflag:=0;
261 	END LOOP;
262 
263 	/* No more data in ITEM_MASTER */
264 	CLOSE c_imp_itemmaster;
265 	COMMIT;
266 	INSERTS:=nInsertCount;
267 	UPDATES:=nUpdateCount;
268 	DUPS:=nDups;
269 	NOCHANGE:=nNoChangeCount;
270 
271 	EXCEPTION
272                 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
273                  RAISE;
274 		WHEN OTHERS THEN
275 		x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_IM_KRS.KRS_ITEM_MASTER',11276,inRun_ID);
276 	END;
277 END KRS_ITEM_MASTER;
278 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
279 PROCEDURE KRS_ITEM_PROPERTY_VALUE (	inRUN_ID 		IN 	PLS_INTEGER,
280 					COMMIT_SIZE			IN	PLS_INTEGER,
281 					MAX_ERR			IN 	PLS_INTEGER,
282 					INSERTS			  OUT NOCOPY PLS_INTEGER,
283 					UPDATES			  OUT NOCOPY PLS_INTEGER,
284 					FAILED			IN OUT NOCOPY PLS_INTEGER,
285                                         DUPS				  OUT NOCOPY PLS_INTEGER,
286                                         NOCHANGE IN OUT NOCOPY PLS_INTEGER,
287                           inXFR_GROUP       IN    VARCHAR2
288 					) IS
289 
290 TYPE tFskItemMaster21 IS TABLE OF cz_imp_item_property_value.fsk_itemmaster_2_1%TYPE INDEX BY BINARY_INTEGER;
291 TYPE tFskItemMaster2Ext IS TABLE OF cz_imp_item_property_value.fsk_itemmaster_2_EXT%TYPE INDEX BY BINARY_INTEGER;
292 TYPE tFskProperty11 IS TABLE OF cz_imp_item_property_value.fsk_property_1_1%TYPE INDEX BY BINARY_INTEGER;
293 TYPE tFskProperty1Ext IS TABLE OF cz_imp_item_property_value.fsk_property_1_EXT%TYPE INDEX BY BINARY_INTEGER;
294 TYPE tOrigSysRef IS TABLE OF cz_imp_item_property_value.orig_sys_ref%TYPE INDEX BY BINARY_INTEGER;
295 TYPE tItemId IS TABLE OF cz_imp_item_property_value.item_id%TYPE INDEX BY BINARY_INTEGER;
296 TYPE tPropertyId IS TABLE OF cz_imp_item_property_value.property_id%TYPE INDEX BY BINARY_INTEGER;
297 
298 iFskItemMaster21 tFskItemMaster21;
299 iFskItemMaster2Ext tFskItemMaster2Ext;
300 iFskProperty11  tFskProperty11;
304 iPropertyId tPropertyId;
301 iFskProperty1Ext tFskProperty1Ext;
302 iOrigSysRef tOrigSysRef;
303 iItemId tItemId;
305 
306 
307 x_usesurr_itempropertyvalue  PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_ITEM_PROPERTY_VALUES',inXFR_GROUP);
308 x_usesurr_property           PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_PROPERTIES',inXFR_GROUP);
309 x_usesurr_itemmaster         PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_ITEM_MASTERS',inXFR_GROUP);
310 
311 -- passing records
312 CURSOR C1 (x_usersurr_itemmaster PLS_INTEGER, x_usesurr_property PLS_INTEGER) IS
313 SELECT a.fsk_itemmaster_2_1,a.fsk_itemmaster_2_ext, a.fsk_property_1_1, a.fsk_property_1_ext,
314        b.item_id, c.property_id, a.orig_sys_ref
315   FROM cz_imp_item_property_value a, cz_item_masters b, cz_properties c
316  WHERE b.orig_sys_ref=DECODE(x_usesurr_itemmaster,1,a.fsk_itemmaster_2_ext,a.fsk_itemmaster_2_1)
317    AND c.orig_sys_ref=DECODE(x_usesurr_property,1,a.fsk_property_1_ext,a.fsk_property_1_1)
318    AND b.deleted_flag = '0'
319    AND c.deleted_flag = '0'
320    AND a.rec_status IS NULL
321    AND a.run_id=inRUN_ID;
322 
323 
324 -- invalid fsk_property
325 CURSOR C2 (x_usersurr_itemmaster PLS_INTEGER, x_usesurr_property PLS_INTEGER) IS
326 SELECT a.fsk_itemmaster_2_1,a.fsk_itemmaster_2_ext, a.fsk_property_1_1, a.fsk_property_1_ext,
327        a.orig_sys_ref, b.item_id
328 FROM cz_imp_item_property_value a, cz_item_masters b
329 WHERE b.orig_sys_ref=DECODE(x_usesurr_itemmaster,1,a.fsk_itemmaster_2_ext,a.fsk_itemmaster_2_1)
330 AND b.deleted_flag = '0'
331 AND NOT EXISTS (SELECT NULL FROM cz_properties
332                 WHERE orig_sys_ref = DECODE(x_usesurr_property,1,a.fsk_property_1_ext,a.fsk_property_1_1)
333                 AND deleted_flag = '0')
334 AND a.rec_status IS NULL
335 AND a.run_id=inRUN_ID;
336 
337 -- invalid fsk_itemmaster
338 CURSOR C3 (x_usersurr_itemmaster PLS_INTEGER, x_usesurr_property PLS_INTEGER) IS
339 SELECT a.fsk_itemmaster_2_1,a.fsk_itemmaster_2_ext, a.fsk_property_1_1, a.fsk_property_1_ext,
340        a.orig_sys_ref, b.property_id
341 FROM cz_imp_item_property_value a, cz_properties b
342 WHERE b.orig_sys_ref=DECODE(x_usesurr_property,1,a.fsk_property_1_ext,a.fsk_property_1_1)
343 AND b.deleted_flag = '0'
344 AND NOT EXISTS (SELECT NULL FROM cz_item_masters
345                 WHERE orig_sys_ref = DECODE(x_usesurr_itemmaster,1,a.fsk_itemmaster_2_ext,a.fsk_itemmaster_2_1)
346                 AND deleted_flag = '0')
347 AND a.rec_status IS NULL
348 AND a.run_id=inRUN_ID;
349 
350 -- invalid fsk_property and fsk_itemmaster
351 CURSOR C4 (x_usersurr_itemmaster PLS_INTEGER, x_usesurr_property PLS_INTEGER) IS
352 SELECT a.fsk_itemmaster_2_1,a.fsk_itemmaster_2_ext, a.fsk_property_1_1, a.fsk_property_1_ext, a.orig_sys_ref
353 FROM cz_imp_item_property_value a
354 WHERE NOT EXISTS (SELECT NULL FROM cz_item_masters
355                   WHERE orig_sys_ref = DECODE(x_usesurr_itemmaster,1,a.fsk_itemmaster_2_ext,a.fsk_itemmaster_2_1)
356                   AND deleted_flag = '0')
357 AND NOT EXISTS (SELECT NULL FROM cz_properties
358                 WHERE orig_sys_ref = DECODE(x_usesurr_property,1,a.fsk_property_1_ext,a.fsk_property_1_1)
359                 AND deleted_flag = '0')
360 AND a.rec_status IS NULL
361 AND a.run_id=inRUN_ID;
362 
363 -- invalid fsk_localizedtext_3_1
364 CURSOR C5(x_usesurr_itempropertyvalue PLS_INTEGER) IS
365 SELECT orig_sys_ref FROM cz_imp_item_property_value a
366  WHERE run_id=inRUN_ID AND EXISTS(SELECT NULL FROM cz_imp_property
367                WHERE run_id=inRUN_ID AND property_id=a.property_id AND
368                      data_type=8 AND deleted_flag='0')
369        AND NOT EXISTS (SELECT NULL FROM cz_imp_localized_texts
370                       WHERE run_id=inRUN_ID AND orig_sys_ref = DECODE(x_usesurr_itempropertyvalue,0,a.FSK_LOCALIZEDTEXT_3_1,a.FSK_LOCALIZEDTEXT_3_EXT)
371                             AND deleted_flag='0');
372 
373 nCommitCount		PLS_INTEGER:=0;			/*COMMIT buffer index */
374 nErrorCount		PLS_INTEGER:=0;			/*Error index */
375 nInsertCount		PLS_INTEGER:=0;			/*Inserts */
376 nUpdateCount		PLS_INTEGER:=0;			/*Updates */
377 nNoChangeCount          PLS_INTEGER:=0;	                /*NoChangeCount */
378 nDups			PLS_INTEGER:=0;			/*Duplicate records */
379 
380 x_error			     BOOLEAN:=FALSE;
381 l_msg                        VARCHAR2(2000);
382 
383 BEGIN
384 
385      OPEN C1(x_usesurr_itemmaster, x_usesurr_property);
386      LOOP
387        iFskItemMaster21.delete; iFskItemMaster2Ext.delete; iFskProperty11.delete; iFskProperty1Ext.delete;
388        iOrigSysRef.delete; iItemId.delete; iPropertyId.delete;
389        FETCH C1 BULK COLLECT INTO iFskItemMaster21,iFskItemMaster2Ext,iFskProperty11,iFskProperty1Ext,
390        iItemId, iPropertyId, iOrigSysRef
391        LIMIT COMMIT_SIZE;
392        EXIT WHEN C1%NOTFOUND AND iOrigSysRef.COUNT = 0;
393 
394        IF iOrigSysRef.COUNT > 0 THEN
395 
396          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST
397            UPDATE cz_imp_item_property_value a
398               SET item_id=iItemId(i),
399                   property_id=iPropertyId(i),
400                   disposition='M',
401                   rec_status='PASS'
402             WHERE run_id=inRUN_ID
403               AND orig_sys_ref=iOrigSysRef(i)
404               AND EXISTS (SELECT NULL FROM cz_item_property_values
405                           WHERE orig_sys_ref = a.orig_sys_ref);
406 
407             UPDATES := UPDATES + SQL%ROWCOUNT;
408             COMMIT;
409 
410 --------------------- New code ------------------------------------
411 
412          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST
413            UPDATE cz_imp_item_property_value a
414               SET property_num_value=(SELECT DISTINCT intl_text_id FROM cz_imp_localized_texts
415                                        WHERE run_id=inRUN_ID AND orig_sys_ref = a.FSK_LOCALIZEDTEXT_3_1
416                                              AND deleted_flag='0'),
420               AND orig_sys_ref=iOrigSysRef(i)
417                   disposition='M',
418                   rec_status='PASS'
419             WHERE run_id=inRUN_ID
421               AND EXISTS(SELECT NULL FROM cz_imp_property
422                          WHERE run_id=inRUN_ID AND property_id=iPropertyId(i) AND
423                                data_type=8 AND deleted_flag='0')
424               AND EXISTS (SELECT NULL FROM cz_imp_localized_texts
425                           WHERE run_id=inRUN_ID AND orig_sys_ref = a.FSK_LOCALIZEDTEXT_3_1
426                           AND deleted_flag='0');
427 
428           COMMIT;
429 
430          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST/*VIGRAMAK EDIT */
431            UPDATE cz_imp_item_property_value a
432               SET disposition='N',
433                  rec_status='PASS' /*VIGRAMAK EDIT*/
434             WHERE run_id=inRUN_ID
435 	      AND disposition = 'M'
436               AND orig_sys_ref=iOrigSysRef(i)
437               AND EXISTS (SELECT NULL FROM cz_item_property_values
438        			          WHERE orig_sys_ref = a.orig_sys_ref
439 						  AND property_id= iPropertyId(i)
440 						  AND nvl(property_num_value,0) = nvl(a.property_num_value,0)
441 						  AND nvl(property_value,' ')=nvl(a.property_value,' '));
442 
443               NOCHANGE := NOCHANGE + SQL%ROWCOUNT;
444           COMMIT;
445 
446 --------------------- End of new code ------------------------------
447 
448          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST
449            UPDATE cz_imp_item_property_value a
450               SET item_id=iItemId(i),
451                   property_id=iPropertyId(i),
452                   disposition='I',
453                   rec_status='PASS'
454             WHERE run_id=inRUN_ID
455               AND orig_sys_ref=iOrigSysRef(i)
456               AND NOT EXISTS (SELECT NULL FROM cz_item_property_values
457                               WHERE orig_sys_ref = a.orig_sys_ref);
458 
459            INSERTS := INSERTS + SQL%ROWCOUNT;
460            COMMIT;
461        END IF;
462      END LOOP;
463      CLOSE C1;
464 
465      OPEN C2(x_usesurr_itemmaster, x_usesurr_property);
466      LOOP
467        iFskItemMaster21.delete; iFskItemMaster2Ext.delete; iFskProperty11.delete; iFskProperty1Ext.delete;
468        iOrigSysRef.delete; iItemId.delete; iPropertyId.delete;
469        FETCH C2 BULK COLLECT INTO iFskItemMaster21,iFskItemMaster2Ext,iFskProperty11,iFskProperty1Ext,iOrigSysRef,iItemId
470        LIMIT COMMIT_SIZE;
471        EXIT WHEN C2%NOTFOUND AND iOrigSysRef.COUNT = 0;
472 
473        IF iOrigSysRef.COUNT > 0 THEN
474 
475          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST
476            UPDATE cz_imp_item_property_value
477               SET item_id=iItemId(i),
478                   disposition='R',
479                   rec_status='I0P1'
480             WHERE run_id=inRUN_ID
481               AND orig_sys_ref=iOrigSysRef(i);
482 
483            FAILED := FAILED + SQL%ROWCOUNT;
484            COMMIT;
485        END IF;
486      END LOOP;
487      CLOSE C2;
488 
489      OPEN C3(x_usesurr_itemmaster, x_usesurr_property);
490      LOOP
491        iFskItemMaster21.delete; iFskItemMaster2Ext.delete; iFskProperty11.delete; iFskProperty1Ext.delete;
492        iOrigSysRef.delete; iItemId.delete; iPropertyId.delete;
493        FETCH C3 BULK COLLECT INTO iFskItemMaster21,iFskItemMaster2Ext,iFskProperty11,iFskProperty1Ext,iOrigSysRef,iPropertyId
494        LIMIT COMMIT_SIZE;
495        EXIT WHEN C3%NOTFOUND AND iOrigSysRef.COUNT = 0;
496        IF iOrigSysRef.COUNT > 0 THEN
497 
498          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST
499            UPDATE cz_imp_item_property_value
500               SET property_id=iPropertyId(i),
501                   disposition='R',
502                   rec_status='I1P0'
503             WHERE run_id=inRUN_ID
504               AND orig_sys_ref=iOrigSysRef(i);
505 
506            FAILED := FAILED + SQL%ROWCOUNT;
507            COMMIT;
508        END IF;
509      END LOOP;
510      CLOSE C3;
511 
512      OPEN C4(x_usesurr_itemmaster, x_usesurr_property);
513      LOOP
514        iFskItemMaster21.delete; iFskItemMaster2Ext.delete; iFskProperty11.delete; iFskProperty1Ext.delete;
515        iOrigSysRef.delete; iItemId.delete; iPropertyId.delete;
516        FETCH C4 BULK COLLECT INTO iFskItemMaster21,iFskItemMaster2Ext,iFskProperty11,iFskProperty1Ext,iOrigSysRef
517        LIMIT COMMIT_SIZE;
518        EXIT WHEN C4%NOTFOUND AND iOrigSysRef.COUNT = 0;
519        IF iOrigSysRef.COUNT > 0 THEN
520 
521          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST
522            UPDATE cz_imp_item_property_value
523               SET disposition='R',
524                   rec_status='I1P1'
525             WHERE run_id=inRUN_ID
526               AND orig_sys_ref=iOrigSysRef(i);
527 
528            FAILED := FAILED + SQL%ROWCOUNT;
529            COMMIT;
530        END IF;
531      END LOOP;
532      CLOSE C4;
533 
534      OPEN C5(x_usesurr_itempropertyvalue);
535      LOOP
536        iOrigSysRef.delete;
537        FETCH C5 BULK COLLECT INTO iOrigSysRef
538        LIMIT COMMIT_SIZE;
539        EXIT WHEN C5%NOTFOUND AND iOrigSysRef.COUNT = 0;
540        IF iOrigSysRef.COUNT > 0 THEN
541 
542          FORALL i IN iOrigSysRef.FIRST..iOrigSysRef.LAST
543            UPDATE cz_imp_item_property_value
544               SET disposition='R',
545                   rec_status='I1P2'
546             WHERE run_id=inRUN_ID
547               AND orig_sys_ref=iOrigSysRef(i);
548 
549            FAILED := FAILED + SQL%ROWCOUNT;
550            COMMIT;
551        END IF;
552      END LOOP;
553      CLOSE C5;
554 
555 
559         SET deleted_flag = '1'
556      /* Check if any properties have been deleted in APPS */
557 
558      UPDATE cz_item_property_values iv
560       WHERE deleted_flag = '0'
561         AND NOT EXISTS
562            (SELECT NULL FROM cz_imp_item_property_value
563              WHERE run_id = inRUN_ID AND deleted_flag = '0'
564                AND item_id = iv.item_id
565                AND property_id = iv.property_id)
566         AND EXISTS
567            (SELECT NULL FROM cz_imp_item_master
568              WHERE item_id = iv.item_id
569                AND run_id = inRUN_ID)
570         AND EXISTS
571            (SELECT NULL FROM cz_properties
572              WHERE orig_sys_ref IS NOT NULL
573                AND deleted_flag = '0'
574                AND property_id = iv.property_id);
575     COMMIT;
576 EXCEPTION
577   WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
578     RAISE;
579   WHEN OTHERS THEN
580     l_msg:=CZ_UTILS.GET_TEXT('CZ_IMP_OPERATION_FAILED','ERRORTEXT',SQLERRM);
581     x_error:=CZ_UTILS.LOG_REPORT(l_msg,1,'CZ_IMP_IM_KRS.KRS_ITEM_PROPERTY_VALUE',11276,inRun_ID);
582     RAISE CZ_ADMIN.IMP_UNEXP_SQL_ERROR;
583 END KRS_ITEM_PROPERTY_VALUE ;
584 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
585 PROCEDURE KRS_ITEM_TYPE (	inRUN_ID 		IN 	PLS_INTEGER,
586 					COMMIT_SIZE		IN	PLS_INTEGER,
587 					MAX_ERR		IN 	PLS_INTEGER,
588 					INSERTS		   OUT NOCOPY PLS_INTEGER,
589 					UPDATES		   OUT NOCOPY PLS_INTEGER,
590 					FAILED		IN OUT NOCOPY PLS_INTEGER,
591 					DUPS		   OUT NOCOPY PLS_INTEGER,
592 					NOCHANGE IN OUT NOCOPY PLS_INTEGER,
593                           inXFR_GROUP       IN    VARCHAR2
594 					) IS
595 BEGIN
596 	DECLARE
597 	        CURSOR c_imp_itemtype IS
598                SELECT ORIG_SYS_REF, ITEM_TYPE_ID,DESC_TEXT,NAME,DELETED_FLAG,SRC_APPLICATION_ID,ROWID FROM CZ_IMP_ITEM_TYPE
599                WHERE REC_STATUS IS NULL AND RUN_ID = inRUN_ID
600                ORDER BY 1,ROWID;
601  		/* cursor's data found indicators */
602                 sImpName                        CZ_IMP_ITEM_TYPE.NAME%TYPE;
603                 nItemTypeId                     CZ_IMP_ITEM_TYPE.ITEM_TYPE_ID%TYPE;
604                 sLastFSK                        CZ_IMP_ITEM_TYPE.NAME%TYPE;
605                 sThisFSK                        CZ_IMP_ITEM_TYPE.NAME%TYPE;
606                 sRecStatus                      CZ_IMP_ITEM_TYPE.REC_STATUS%TYPE;
607                 sDisposition                    CZ_IMP_ITEM_TYPE.DISPOSITION%TYPE;
608                 nImpItemType                    CZ_IMP_ITEM_TYPE.ITEM_TYPE_ID%TYPE;
609                 nImpDescText                    CZ_IMP_ITEM_TYPE.DESC_TEXT%TYPE;
610                 nImpModelName                   CZ_IMP_ITEM_TYPE.NAME%TYPE;
611                 nImpDeletedFlag	                CZ_IMP_ITEM_TYPE.DELETED_FLAG%TYPE;
612                 nImpSrcAppId                    CZ_IMP_ITEM_TYPE.SRC_APPLICATION_ID%TYPE;
613                 nOnlItemType                    CZ_IMP_ITEM_TYPE.ITEM_TYPE_ID%TYPE;
614                 nOnlDescText                    CZ_IMP_ITEM_TYPE.DESC_TEXT%TYPE;
615                 nOnlModelName                   CZ_IMP_ITEM_TYPE.NAME%TYPE;
616                 nOnlDeletedFlag                 CZ_IMP_ITEM_TYPE.DELETED_FLAG%TYPE;
617                 nOnlSrcAppId                    CZ_IMP_ITEM_TYPE.SRC_APPLICATION_ID%TYPE;
618                 nOnlName                        CZ_IMP_ITEM_TYPE.NAME%TYPE;
619 
620 		/* Column Vars */
621 		x_imp_itemtype_f					BOOLEAN:=FALSE;
622 		x_onl_itemtype_itemtypeid_f				BOOLEAN:=FALSE;
623 		x_error							BOOLEAN:=FALSE;
624 		/* Internal vars */
625 		nCommitCount		PLS_INTEGER:=0;			/*COMMIT buffer index */
626 		nErrorCount		PLS_INTEGER:=0;			/*Error index */
627 		nInsertCount		PLS_INTEGER:=0;			/*Inserts */
628 		nUpdateCount		PLS_INTEGER:=0;			/*Updates */
629 		nNoChangeCount          PLS_INTEGER:=0;			/*No Change Counter */
630 		nDups	                PLS_INTEGER:=0;			/*Duplicate records */
631 
632      nAllocateBlock              PLS_INTEGER:=1;
633     dispositionflag              PLS_INTEGER:=0;
634      nAllocateCounter            PLS_INTEGER;
635      nNextValue                  NUMBER;
636 
637      thisRowId                         ROWID;
638 
639      v_settings_id      VARCHAR2(40);
640      v_section_name     VARCHAR2(30);
641 
642    BEGIN
643 
644     v_settings_id := 'OracleSequenceIncr';
645     v_section_name := 'SCHEMA';
646 
647     BEGIN
648      SELECT VALUE INTO nAllocateBlock FROM CZ_DB_SETTINGS
649      WHERE SETTING_ID=v_settings_id AND SECTION_NAME=v_section_name;
650     EXCEPTION
651       WHEN OTHERS THEN
652         nAllocateBlock:=1;
653     END;
654     nAllocateCounter:=nAllocateBlock-1;
655 
656 		/* This type casting is necessary to use decode stmt */
657 		OPEN c_imp_itemtype;
658 		LOOP
659 			/* COMMIT if the buffer size is reached */
660 			IF (nCommitCount>= COMMIT_SIZE) THEN
661 				BEGIN
662 					COMMIT;
663 					nCommitCount:=0;
664 				END;
665 			ELSE
666 				nCOmmitCount:=nCommitCount+1;
667 			END IF;
668 
669 			sImpName:=NULL;
670 			FETCH c_imp_itemtype INTO sImpName,nImpItemType,nImpDescText,nImpModelName,nImpDeletedFlag,nImpSrcAppId,thisRowId;
671 			sThisFSK:=sImpName;
672 			x_imp_itemtype_f:=c_imp_itemtype%FOUND;
673 			EXIT WHEN NOT x_imp_itemtype_f;
674 
675 			/* Check if this is an insert or update */
676 			DECLARE
677 				CURSOR c_onl_itemtype_itemtypeid  IS
678 				SELECT ITEM_TYPE_ID,DESC_TEXT,NAME,DELETED_FLAG,SRC_APPLICATION_ID,ORIG_SYS_REF
679 				FROM CZ_ITEM_TYPES
680 				WHERE ORIG_SYS_REF=sImpName;
681 			BEGIN
682 				OPEN c_onl_itemtype_itemtypeid ;
683 				nItemTypeId:=NULL;
684 				FETCH c_onl_itemtype_itemtypeid INTO nItemTypeId,nOnlDescText,nOnlModelName,nOnlDeletedFlag,nOnlSrcAppId,nOnlName;
688 			/* All foreign keys are resolved */
685 				x_onl_itemtype_itemtypeid_f:=c_onl_itemtype_itemtypeid%FOUND;
686 				CLOSE c_onl_itemtype_itemtypeid;
687 			END;
689 			IF(sImpName IS NULL ) THEN
690 				BEGIN
691 					/* The record has Item ID but no Item_type_id */
692 					FAILED:=FAILED+1;
693 				 	/* Found ITEM_ID, mark record as Modify and insert the item_id */
694 					sRecStatus:='N14';
695 					sDisposition:='R';
696 				END;
697 			ELSIF(sLastFSK IS NOT NULL AND sLastFSK=sThisFSK) THEN
698 				/* This is a duplicate record */
699 				sRecStatus:='DUPL';
700 				sDisposition:='R';
701 				nDups:=nDups+1;
702 			ELSE
703 				BEGIN
704 
705 				        sRecStatus:='PASS';
706 					IF( x_onl_itemtype_itemtypeid_f)THEN
707 
708 						IF((nItemTypeId=nvl(nImpItemType,nItemTypeId)) AND (nOnlDescText=nImpDescText) AND (nOnlModelName=nImpModelName)
709 						AND (nOnlDeletedFlag=nImpDeletedFlag) AND (nOnlSrcAppId=nImpSrcAppId) AND (nOnlName=sImpName)) THEN
710 						dispositionflag:=1;
711 
712 						END IF;
713 
714 						    IF (dispositionflag=1) THEN
715 
716 						       sDisposition:='N';
717 						       nNoChangeCount:=nNoChangeCount+1;
718                                                     ELSE
719 						/* Update so save also the Product_line_id */
720 						       sDisposition:='M';
721 						       nUpdateCount:=nUpdateCount+1;
722                                                     END IF;
723 					ELSE
724 						/*Insert */
725 						sDisposition:='I';
726 						nInsertCount:=nInsertCount+1;
727                                                 nAllocateCounter:=nAllocateCounter+1;
728 
729 						IF(nAllocateCounter=nAllocateBlock)THEN
730                                                 nAllocateCounter:=0;
731                                                 SELECT CZ_ITEM_TYPES_S.NEXTVAL INTO nNextValue FROM DUAL;
732                                                 END IF;
733 	                                END IF;
734 	                       END;
735                         END IF;
736 
737             UPDATE CZ_IMP_ITEM_TYPE SET
738             ITEM_TYPE_ID=DECODE(sDISPOSITION,'R',ITEM_TYPE_ID,'I',nNextValue+nAllocateCounter, nItemTypeId ),
739             DISPOSITION=sDisposition, REC_STATUS=sRecStatus
740             WHERE ROWID = thisRowId;
741  	    sLastFSK:=sImpName;
742 
743 
744 
745             IF (FAILED >= MAX_ERR) THEN
746               x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_IM_KRS.KRS_ITEM_TYPE:MAX',11276,inRun_Id);
747               RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
748             END IF;
749 			sDisposition:=NULL; sRecStatus:=NULL;dispositionflag:=0;
750 		END LOOP;
751 		CLOSE c_imp_itemtype;
752 		COMMIT;
753 		INSERTS:=nInsertCount;
754 		UPDATES:=nUpdateCount;
755 		NOCHANGE:=nNoChangeCount;
756 		DUPS:=nDups;
757 	EXCEPTION
758                 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
759                  RAISE;
760 		WHEN OTHERS THEN
761 			x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_IM_KRS.KRS_ITEM_TYPE',11276,inRun_ID);
762 	END;
763 END KRS_ITEM_TYPE;
764 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
765 PROCEDURE KRS_ITEM_TYPE_PROPERTY (	inRUN_ID 		IN 	PLS_INTEGER,
766 					COMMIT_SIZE		IN	PLS_INTEGER,
767 					MAX_ERR		IN 	PLS_INTEGER,
768 					INSERTS		   OUT NOCOPY PLS_INTEGER,
769 					UPDATES		   OUT NOCOPY PLS_INTEGER,
770 					FAILED		IN OUT NOCOPY PLS_INTEGER,
771 					DUPS		   OUT NOCOPY PLS_INTEGER,
772                           inXFR_GROUP       IN    VARCHAR2
773 					) IS
774 BEGIN
775 	DECLARE
776 		CURSOR c_imp_itemtypeprop(x_usesurr_itemtype	PLS_INTEGER,
777                                       x_usesurr_property    PLS_INTEGER) IS
778 SELECT DECODE(x_usesurr_itemtype,0,FSK_ITEMTYPE_1_1,1,FSK_ITEMTYPE_1_EXT),
779 DECODE(x_usesurr_property,0,FSK_PROPERTY_2_1,1,FSK_PROPERTY_2_EXT), ROWID
780 FROM CZ_IMP_ITEM_TYPE_PROPERTY  WHERE REC_STATUS IS NULL  AND RUN_ID = inRUN_ID  ORDER BY 1, 2,ROWID;
781  		/* cursor's data found indicators */
782                 nOnlItemTypeId                  CZ_IMP_ITEM_TYPE_PROPERTY.ITEM_TYPE_ID%TYPE;
783                 nOnlPropertyId                  CZ_IMP_ITEM_TYPE_PROPERTY.PROPERTY_ID%TYPE;
784                 sFSKITEMTYPE                    CZ_IMP_ITEM_TYPE_PROPERTY.FSK_ITEMTYPE_1_1%TYPE;
785                 sFSKPROPERTY                    CZ_IMP_ITEM_TYPE_PROPERTY.FSK_PROPERTY_2_1%TYPE;
786                 sLastFSK1                       CZ_IMP_ITEM_TYPE_PROPERTY.FSK_ITEMTYPE_1_1%TYPE;
787                 sThisFSK1                       CZ_IMP_ITEM_TYPE_PROPERTY.FSK_ITEMTYPE_1_1%TYPE;
788                 sLastFSK2                       CZ_IMP_ITEM_TYPE_PROPERTY.FSK_PROPERTY_2_1%TYPE;
789                 sThisFSK2                       CZ_IMP_ITEM_TYPE_PROPERTY.FSK_PROPERTY_2_1%TYPE;
790                 sRecStatus                      CZ_IMP_ITEM_TYPE_PROPERTY.REC_STATUS%TYPE;
791                 sDisposition                    CZ_IMP_ITEM_TYPE_PROPERTY.DISPOSITION%TYPE;
792 		/* Column Vars */
793 		x_imp_itemtypeprop_f					BOOLEAN:=FALSE;
794 		x_onl_itemtypeprop_f					BOOLEAN:=FALSE;
795 		x_onl_itemtype_itemtypeid_f				BOOLEAN:=FALSE;
796 		x_onl_property_propertyid_f				BOOLEAN:=FALSE;
797 		x_error							BOOLEAN:=FALSE;
798 		p_onl_itemtype_itemtypeid					CHAR(1):='';
799 		p_onl_property_propertyid					CHAR(1):='';
800 		p_onl_itemtypeprop						CHAR(1):='';
801 		/* Internal vars */
802 		nCommitCount		PLS_INTEGER:=0;			/*COMMIT buffer index */
803 		nErrorCount			PLS_INTEGER:=0;			/*Error index */
804 		nInsertCount		PLS_INTEGER:=0;			/*Inserts */
805 		nUpdateCount		PLS_INTEGER:=0;			/*Updates */
806 		nDups				PLS_INTEGER:=0;			/*Duplicate records */
807 		x_usesurr_itemtypeprop			PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_ITEM_TYPE_PROPERTIES',inXFR_GROUP);
811 		x_usesurr_property			PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_PROPERTIES',inXFR_GROUP);
808 												    			/*Use surrogates */
809 		x_usesurr_itemtype			PLS_INTEGER:=CZ_UTILS.GET_PK_USEEXPANSION_FLAG('CZ_ITEM_TYPES',inXFR_GROUP);
810 												    			/*Use surrogates */
812 												    			/*Use surrogates */
813    thisRowId    ROWID;
814    BEGIN
815 
816 		OPEN c_imp_itemtypeprop(x_usesurr_itemtypeprop,x_usesurr_property) ;
817 
818 		LOOP
819 			/* COMMIT if the buffer size is reached */
820 			IF (nCommitCount>= COMMIT_SIZE) THEN
821 				BEGIN
822 					COMMIT;
823 					nCommitCount:=0;
824 				END;
825 			ELSE
826 				nCOmmitCount:=nCommitCount+1;
827 			END IF;
828 			sFSKITEMTYPE:=NULL; sFSKITEMTYPE:=NULL ;
829 			FETCH c_imp_itemtypeprop INTO sFSKITEMTYPE,sFSKPROPERTY,thisRowId ;
830 			sThisFSK1:=sFSKITEMTYPE;
831 			sThisFSK2:=sFSKPROPERTY;
832 
833 			x_imp_itemtypeprop_f:=c_imp_itemtypeprop%FOUND;
834 			EXIT WHEN NOT x_imp_itemtypeprop_f;
835 			DECLARE
836 				CURSOR c_onl_itemtype_itemtypeid IS
837 					SELECT ITEM_TYPE_ID FROM CZ_ITEM_TYPES WHERE ORIG_SYS_REF=sFSKITEMTYPE;
838 			BEGIN
839 				OPEN  c_onl_itemtype_itemtypeid;
840 				nOnlItemTypeId:=NULL;
841 				FETCH	c_onl_itemtype_itemtypeid INTO nOnlItemTypeId;
842 				x_onl_itemtype_itemtypeid_f:=c_onl_itemtype_itemtypeid%FOUND;
843 				CLOSE c_onl_itemtype_itemtypeid;
844 			END;
845 			DECLARE
846 				CURSOR c_onl_property_propertyid IS
847 					SELECT PROPERTY_ID FROM CZ_PROPERTIES WHERE ORIG_SYS_REF=sFSKPROPERTY;
848 			BEGIN
849 				OPEN c_onl_property_propertyid;
850 				nOnlPropertyId:=NULL;
851 				FETCH	c_onl_property_propertyid INTO nOnlPropertyId;
852 				x_onl_property_propertyid_f:=c_onl_property_propertyid%FOUND;
853 				CLOSE c_onl_property_propertyid;
854 			END;
855 			/* Check if this is an insert or update */
856 			DECLARE
857 				CURSOR c_onl_itemtypeprop  IS
858 					SELECT 'X' FROM CZ_ITEM_TYPE_PROPERTIES
859 					WHERE ITEM_TYPE_ID=nOnlItemTypeId AND PROPERTY_ID=nOnlPropertyId;
860 			BEGIN
861 				OPEN c_onl_itemtypeprop ;
862 				FETCH c_onl_itemtypeprop INTO p_onl_itemtypeprop;
863 				x_onl_itemtypeprop_f:=c_onl_itemtypeprop%FOUND;
864 				CLOSE c_onl_itemtypeprop;
865 			END;
866 			IF(NOT x_onl_itemtype_itemtypeid_f OR NOT x_onl_property_propertyid_f) THEN
867 				BEGIN
868 					/* The record has Item ID but no Item_type_id */
869 					FAILED:=FAILED+1;
870 					IF(NOT x_onl_itemtype_itemtypeid_f AND x_usesurr_itemtype=1 AND sFSKITEMTYPE IS NULL) THEN
871 							sRecStatus:='N23';
872 					ELSIF(NOT x_onl_itemtype_itemtypeid_f AND x_usesurr_itemtype=1) THEN
873 							sRecStatus:='F23';
874 				      ELSIF(NOT x_onl_itemtype_itemtypeid_f  AND x_usesurr_itemtype=0 AND sFSKITEMTYPE IS NULL) THEN
875 							sRecStatus:='N22';
876 				      ELSIF(NOT x_onl_itemtype_itemtypeid_f  AND x_usesurr_itemtype=0) THEN
877 							sRecStatus:='F22';
878 					ELSIF(NOT x_onl_property_propertyid_f AND x_usesurr_property=1 AND sFSKPROPERTY IS NULL) THEN
879 							sRecStatus:='N25';
880 					ELSIF(NOT x_onl_property_propertyid_f AND x_usesurr_property=1) THEN
881 							sRecStatus:='F25';
882 					ELSIF(NOT x_onl_property_propertyid_f AND x_usesurr_property=0
883                               AND sFSKPROPERTY IS NULL) THEN
884 							sRecStatus:='N24';
885 					ELSIF(NOT x_onl_property_propertyid_f AND x_usesurr_property=0) THEN
886 							sRecStatus:='F24';
887 					END IF;
888 					sDisposition:='R';
889 				END;
890 			ELSE
891 				/* ItemTypeID exists, so insert or update */
892 				BEGIN
893 					IF(sLastFSK1 IS NOT NULL AND sLastFSK1=sThisFSK1 AND
894 					   sLastFSK2 IS NOT NULL AND sLastFSK2=sThisFSK2) THEN
895 						/* This is a duplicate record */
896 						sRecStatus:='DUPL';
897 						sDisposition:='R';
898 						nDups:=nDups+1;
899 					ELSE
900 						BEGIN
901                                                         sRecStatus:='PASS';
902 							IF( x_onl_itemtypeprop_f)THEN
903 								/* Update so save also the Product_line_id */
904 								sDisposition:='M';
905 								nUpdateCount:=nUpdateCount+1;
906 							ELSE
907 								/*Insert */
908 								sDisposition:='I';
909 								nInsertCount:=nInsertCount+1;
910 							END IF;
911 						END;
912 					END IF;
913 				END;
914 			END IF;
915                   UPDATE CZ_IMP_ITEM_TYPE_PROPERTY SET
916                     ITEM_TYPE_ID=DECODE(sDISPOSITION,'R',ITEM_TYPE_ID,nOnlItemTypeId),
917                     PROPERTY_ID=DECODE(sDISPOSITION,'R',PROPERTY_ID,nOnlPropertyId ),
918                     DISPOSITION=sDisposition, REC_STATUS=sRecStatus
919                   WHERE ROWID = thisRowId;
920 			sLastFSK1:=sFSKITEMTYPE;
921 			sLastFSK2:=sFSKPROPERTY;
922 
923 			/* Return if MAX_ERR is reached */
924      IF (FAILED >= MAX_ERR) THEN
925        x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_IM_KRS.KRS_ITEM_TYPE_PROPERTY:MAX',11276,inRun_Id);
926        RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
927      END IF;
928          sDisposition:=NULL; sRecStatus:=NULL;
929 	END LOOP;
930 	CLOSE c_imp_itemtypeprop;
931 	/* Check if item type's property that's already been imported to CZ
932 	   has been deleted in APPS */
933 		BEGIN
934 			UPDATE CZ_ITEM_TYPE_PROPERTIES
935 			SET DELETED_FLAG = '1'
936 			WHERE ITEM_TYPE_ID IN (SELECT ITEM_TYPE_ID FROM CZ_IMP_ITEM_TYPE
937 						     	WHERE RUN_ID = inRUN_ID
938 							AND DELETED_FLAG = '0')
939 			AND PROPERTY_ID NOT IN (SELECT PROPERTY_ID FROM CZ_IMP_ITEM_TYPE_PROPERTY
940 						     	WHERE RUN_ID = inRUN_ID
941 							AND ITEM_TYPE_ID = CZ_ITEM_TYPE_PROPERTIES.ITEM_TYPE_ID
942 							AND DELETED_FLAG = '0')
943 			AND PROPERTY_ID IN (SELECT PROPERTY_ID FROM CZ_PROPERTIES
944 							WHERE ORIG_SYS_REF IS NOT NULL
948 
945 							AND DELETED_FLAG = '0')
946                         AND ORIG_SYS_REF IS NOT NULL
947 			AND DELETED_FLAG = '0';
949                         UPDATE CZ_ITEM_PROPERTY_VALUES
950                         SET DELETED_FLAG = '1'
951                         WHERE ITEM_ID IN (SELECT IM.ITEM_ID
952                                           FROM CZ_ITEM_MASTERS IM, CZ_ITEM_TYPES IT,CZ_ITEM_TYPE_PROPERTIES ITP
953                                           WHERE IM.ITEM_TYPE_ID = IT.ITEM_TYPE_ID
954                                           AND IT.ITEM_TYPE_ID = ITP.ITEM_TYPE_ID
955                                           AND ITP.DELETED_FLAG = '1'
956                                           AND CZ_ITEM_PROPERTY_VALUES.PROPERTY_ID = ITP.PROPERTY_ID);
957 
958 
959 
960 		END;
961 		COMMIT;
962 		INSERTS:=nInsertCount;
963 		UPDATES:=nUpdateCount;
964 		DUPS:=nDups;
965 	EXCEPTION
966                 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
967                  RAISE;
968 		WHEN OTHERS THEN
969 		x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_IM_KRS.KRS_ITEM_TYPE_PROPERTY',11276,inRun_ID);
970 	END;
971 END KRS_ITEM_TYPE_PROPERTY ;
972 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
973 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
974 PROCEDURE KRS_PROPERTY (	inRUN_ID 		IN 	PLS_INTEGER,
975 					COMMIT_SIZE	IN	PLS_INTEGER,
976 					MAX_ERR		IN 	PLS_INTEGER,
977 					INSERTS		   OUT NOCOPY PLS_INTEGER,
978 					UPDATES		   OUT NOCOPY PLS_INTEGER,
979 					FAILED		IN OUT NOCOPY PLS_INTEGER,
980 					DUPS		   OUT NOCOPY PLS_INTEGER,
981 					NOCHANGE       OUT NOCOPY PLS_INTEGER,
982                                         inXFR_GROUP       IN    VARCHAR2
983 					) IS
984 BEGIN
985 	DECLARE
986 		CURSOR c_imp_property IS
987               SELECT ORIG_SYS_REF,PROPERTY_ID,PROPERTY_UNIT,DESC_TEXT,NAME,DATA_TYPE,DEF_VALUE,DELETED_FLAG,DEF_NUM_VALUE,ROWID FROM CZ_IMP_PROPERTY
988 
989               WHERE REC_STATUS IS NULL AND RUN_ID = inRUN_ID
990               ORDER BY 1,ROWID;
991  		/* cursor's data found indicator*/
992                 sImpName                                CZ_IMP_PROPERTY.NAME%TYPE;
993                 nPropertyId                             CZ_IMP_PROPERTY.PROPERTY_ID%TYPE;
994 		        nPropertyName                             CZ_IMP_PROPERTY.NAME%TYPE;
995                 sLastFSK                                CZ_IMP_PROPERTY.NAME%TYPE;
996                 sThisFSK                                CZ_IMP_PROPERTY.NAME%TYPE;
997                 sRecStatus                              CZ_IMP_PROPERTY.REC_STATUS%TYPE;
998                 sDisposition                            CZ_IMP_PROPERTY.DISPOSITION%TYPE;
999                 nImpPropertyId                          CZ_IMP_PROPERTY.PROPERTY_ID%TYPE;
1000                 nImpPropUnit                            CZ_IMP_PROPERTY.PROPERTY_UNIT%TYPE;
1001                 nImpDescText                            CZ_IMP_PROPERTY.DESC_TEXT%TYPE;
1002                 nImpName                                CZ_IMP_PROPERTY.NAME%TYPE;
1003                 nImpDataType                            CZ_IMP_PROPERTY.DATA_TYPE%TYPE;
1004                 nImpDefValue                            CZ_IMP_PROPERTY.DEF_VALUE%TYPE;
1005                 nImpDeletedFlag                         CZ_IMP_PROPERTY.DELETED_FLAG%TYPE;
1006                 nImpDefNumValue                         CZ_IMP_PROPERTY.DEF_NUM_VALUE%TYPE;
1007                 nOnlPropUnit                            CZ_IMP_PROPERTY.PROPERTY_UNIT%TYPE;
1008                 nOnlDescText                            CZ_IMP_PROPERTY.DESC_TEXT%TYPE;
1009                 nOnlName                                CZ_IMP_PROPERTY.NAME%TYPE;
1010                 nOnlDefValue                            CZ_IMP_PROPERTY.DEF_VALUE%TYPE;
1011                 nOnlDeletedFlag                         CZ_IMP_PROPERTY.DELETED_FLAG%TYPE;
1012                 nOnlDefNumValue                         CZ_IMP_PROPERTY.DEF_NUM_VALUE%TYPE;
1013                 nOnlOrigSysRef                          CZ_IMP_PROPERTY.NAME%TYPE;
1014 
1015 
1016 		/* Column Vars */
1017 		x_imp_property_f                                BOOLEAN:=FALSE;
1018 		x_onl_property_propertyid_f			BOOLEAN:=FALSE;
1019 		x_onl_property_propertyname_f			BOOLEAN:=FALSE;
1020 		x_error						BOOLEAN:=FALSE;
1021 		/* Internal vars */
1022 		nCommitCount		        PLS_INTEGER:=0;			/*COMMIT buffer index */
1023 		nErrorCount			PLS_INTEGER:=0;			/*Error index */
1024 		nInsertCount                    PLS_INTEGER:=0;			/*Inserts */
1025 		nUpdateCount                    PLS_INTEGER:=0;			/*Updates */
1026 		nDups                           PLS_INTEGER:=0;			/*Duplicate records */
1027 		nNoChangeCount                  PLS_INTEGER:=0;			/*NOCHANGE Records */
1028 
1029      nAllocateBlock              PLS_INTEGER:=1;
1030      nAllocateCounter            PLS_INTEGER;
1031      nNextValue                  NUMBER;
1032      dispositionflag             PLS_INTEGER:=0;
1033 
1034      thisRowId                   ROWID;
1035 
1036      v_settings_id      VARCHAR2(40);
1037      v_section_name     VARCHAR2(30);
1038 
1039      l_data_type        CZ_PROPERTIES.DATA_TYPE%TYPE;
1040 
1041    BEGIN
1042 
1043     v_settings_id := 'OracleSequenceIncr';
1044     v_section_name := 'SCHEMA';
1045 
1046     BEGIN
1047      SELECT VALUE INTO nAllocateBlock FROM CZ_DB_SETTINGS
1048      WHERE SETTING_ID=v_settings_id AND SECTION_NAME=v_section_name;
1049     EXCEPTION
1050       WHEN OTHERS THEN
1051         nAllocateBlock:=1;
1052     END;
1053     nAllocateCounter:=nAllocateBlock-1;
1054 
1055 		/* This type casting is necessary to use decode stmt */
1056 		OPEN c_imp_property;
1057 		LOOP
1058 			/* COMMIT if the buffer size is reached */
1059 			IF (nCommitCount>= COMMIT_SIZE) THEN
1060 				BEGIN
1061 					COMMIT;
1062 					nCommitCount:=0;
1063 				END;
1064 			ELSE
1065 				nCOmmitCount:=nCommitCount+1;
1066 			END IF;
1067 			sImpName:=NULL;
1068 			FETCH c_imp_property INTO sImpName, nImpPropertyId,nImpPropUnit,nImpDescText,nImpName,nImpDataType,nImpDefValue,nImpDeletedFlag,nImpDefNumValue,thisRowId;
1069 			sThisFSK:=sImpName;
1070 			x_imp_property_f:=c_imp_property%FOUND;
1071 			EXIT WHEN NOT x_imp_property_f;
1072 			/* Check if this is an insert or update */
1073 			DECLARE
1074 				CURSOR c_onl_property_propertyid IS
1075 					SELECT PROPERTY_ID, data_type,PROPERTY_UNIT,DESC_TEXT,NAME,DEF_VALUE,DELETED_FLAG,ORIG_SYS_REF,DEF_NUM_VALUE FROM CZ_PROPERTIES WHERE ORIG_SYS_REF=sImpName;
1076 			BEGIN
1077 				OPEN c_onl_property_propertyid ;
1078 				nPropertyId:=NULL;
1079                                 l_data_type := NULL;
1080 				FETCH c_onl_property_propertyid INTO nPropertyId, l_data_type,nOnlPropUnit,nOnlDescText,nOnlName,nOnlDefValue,nOnlDeletedFlag,nOnlOrigSysRef,nOnlDefNumValue;
1081 				x_onl_property_propertyid_f:=c_onl_property_propertyid%FOUND;
1082 				CLOSE c_onl_property_propertyid;
1083 			END;
1084 			/* All foreign keys are resolved */
1085 			IF(sImpName IS NULL ) THEN
1086 				BEGIN
1087 					/* The record has Item ID but no Item_type_id */
1088 					FAILED:=FAILED+1;
1089 				 	/* Found ITEM_ID, mark record as Modify and insert the item_id */
1090 					sRecStatus:='N17';
1091 					sDisposition:='R';
1092 				END;
1093 			ELSIF(sLastFSK IS NOT NULL AND sLastFSK=sThisFSK) THEN
1094 				/* This is a duplicate record */
1095 				sRecStatus:='DUPL';
1096 				sDisposition:='R';
1097 				nDups:=nDups+1;
1098 			ELSE
1099 				BEGIN
1100 
1101                                 sRecStatus:='PASS';
1102 
1103 
1104 				    IF( x_onl_property_propertyid_f)THEN
1105 
1106 					  IF((sImpName=nOnlOrigSysRef) AND (nvl(nImpPropUnit,0)=nvl(nOnlPropUnit,0))
1107 					  AND (nOnlDeletedFlag=nImpDeletedFlag) AND (nImpDescText=nOnlDescText) AND (nOnlName=nImpName)AND (nImpDataType=l_data_type)
1108 					  AND (nvl(nImpDefValue,0)=nvl(nOnlDefValue,0)) AND (nvl(nImpDefNumValue,0)=nvl(nOnlDefNumValue,0)))THEN
1109 
1110 					  dispositionflag:=1;
1111 				          END IF;
1112 
1113 						IF (dispositionflag=1) THEN
1114 
1115 						sDisposition:='N';
1116 						nNoChangeCount:=nNoChangeCount+1;
1117 
1118 						ELSE
1119 
1120 						sDisposition:='M';
1121 						nUpdateCount:=nUpdateCount+1;
1122 
1123 						END IF;
1124 				    ELSE
1125 
1126 						BEGIN
1127 						DECLARE
1128 							CURSOR c_onl_property_propertyname IS
1129 								SELECT NAME FROM CZ_PROPERTIES WHERE NAME=sImpName AND ORIG_SYS_REF IS NULL AND DELETED_FLAG=0;
1130 								BEGIN
1131 								OPEN c_onl_property_propertyname;
1132 								FETCH c_onl_property_propertyname INTO nPropertyName;
1133 								x_onl_property_propertyname_f:=c_onl_property_propertyname%FOUND;
1134 								CLOSE c_onl_property_propertyname;
1135 								END;
1136 								IF( x_onl_property_propertyname_f)THEN
1137 									sRecStatus:='DUPL';
1138 									sDisposition:='R';
1139 									nDups:=nDups+1;
1140 									x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_PROPERTY_EXISTS','NAME',nPropertyName),1,'CZ_IMP_IM_KRS.KRS_PROPERTY',11276,inRun_Id);
1141 									CZ_IMP_ALL.setReturnCode(cz_imp_all.CONCURRENT_WARNING,CZ_UTILS.GET_TEXT('CZ_IMP_PROPERTY_EXISTS','NAME',nPropertyName));
1142 								ELSE
1143 						                /*Insert */
1144 						                sDisposition:='I';
1145 						                nInsertCount:=nInsertCount+1;
1146                                                                 nAllocateCounter:=nAllocateCounter+1;
1147                                                                      IF(nAllocateCounter=nAllocateBlock)THEN
1148                                                                      nAllocateCounter:=0;
1149                                                                      SELECT CZ_PROPERTIES_S.NEXTVAL INTO nNextValue FROM DUAL;
1150                                                                      END IF;
1151 							        END IF;
1152 						END;
1153                                     END IF;
1154                                END;
1155                         END IF;
1156          UPDATE CZ_IMP_PROPERTY SET
1157          PROPERTY_ID=DECODE(sDISPOSITION,'R',PROPERTY_ID,'I',nNextValue+nAllocateCounter,nPropertyId),
1158          --
1159          --Bug #5162016 - use an existing but never before used field to store the on-line property data type.
1160          --For new properties this field will stay null.
1161          --
1162          REC_NBR = l_data_type,
1163          DISPOSITION=sDisposition,
1164 	 REC_STATUS=sRecStatus
1165          WHERE ROWID = thisRowId;
1166          sLastFSK:=sImpName;
1167          sDisposition:=NULL; sRecStatus:=NULL;dispositionflag:=0;
1168 
1169 
1170 
1171 	 IF (FAILED >= MAX_ERR) THEN
1172            x_error:=CZ_UTILS.LOG_REPORT(CZ_UTILS.GET_TEXT('CZ_IMP_MAXERR_REACHED'),1,'CZ_IMP_IM_KRS.KRS_PROPERTY:MAX',11276,inRun_Id);
1173            RAISE CZ_ADMIN.IMP_MAXERR_REACHED;
1174            COMMIT;
1175          END IF;
1176 	END LOOP;
1177 	CLOSE c_imp_property;
1178 	COMMIT;
1179 	INSERTS:=nInsertCount;
1180 	UPDATES:=nUpdateCount;
1181 	DUPS:=nDups;
1182 	NOCHANGE:=nNoChangeCount;
1183 	EXCEPTION
1184                 WHEN CZ_ADMIN.IMP_MAXERR_REACHED THEN
1185 x_error:=CZ_UTILS.LOG_REPORT('raised max_err',1,'CZ_IMP_IM_KRS.KRS_PROPERTY:MAX',11276,inRun_Id);
1186                  RAISE;
1187 		WHEN OTHERS THEN
1188  		 x_error:=CZ_UTILS.LOG_REPORT(SQLERRM,1,'CZ_IMP_IM_KRS.KRS_PROPERTY',11276,inRun_ID);
1189 	END;
1190 END KRS_PROPERTY ;
1191 /*<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<0>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>*/
1192 END CZ_IMP_IM_KRS;