DBA Data[Home] [Help]

PACKAGE BODY: APPS.CS_KB_CTXT_REPO_MAPS_PKG

Source


1 package body CS_KB_CTXT_REPO_MAPS_PKG as
2 /* $Header: cskbcrmb.pls 120.1 2005/08/09 16:18:55 mkettle noship $ */
3 /*=======================================================================+
4  |  Copyright (c) 1997 Oracle Corporation Redwood Shores, California, USA|
5  |                            All rights reserved.                       |
6  +=======================================================================+
7  | FILENAME
8  | DESCRIPTION
9  |   PL/SQL body for package:  CS_KB_CTXT_REPO_MAPS_PKG
10  |
11  |   History:
12  |   04 Apr 05 Matt Kettle   Created
13  |   05 Aug 05 Matt Kettle   Added Load_Seed_Row
14  *=======================================================================*/
15 
16 procedure INSERT_ROW (
17   X_ROWID in out nocopy VARCHAR2,
18   X_MAP_ID in NUMBER,
19   X_REPOSITORY_ID in NUMBER,
20   X_CONTEXT_ID in NUMBER,
21   X_MAPPING_ORDER in NUMBER,
22   X_START_DATE_ACTIVE in DATE,
23   X_END_DATE_ACTIVE in DATE,
24   X_OBJECT_VERSION_NUMBER in NUMBER,
25   X_ATTRIBUTE_CATEGORY in VARCHAR2,
26   X_ATTRIBUTE1 in VARCHAR2,
27   X_ATTRIBUTE2 in VARCHAR2,
28   X_ATTRIBUTE3 in VARCHAR2,
29   X_ATTRIBUTE4 in VARCHAR2,
30   X_ATTRIBUTE5 in VARCHAR2,
31   X_ATTRIBUTE6 in VARCHAR2,
32   X_ATTRIBUTE7 in VARCHAR2,
33   X_ATTRIBUTE8 in VARCHAR2,
34   X_ATTRIBUTE9 in VARCHAR2,
35   X_ATTRIBUTE10 in VARCHAR2,
36   X_ATTRIBUTE11 in VARCHAR2,
37   X_ATTRIBUTE12 in VARCHAR2,
38   X_ATTRIBUTE13 in VARCHAR2,
39   X_ATTRIBUTE14 in VARCHAR2,
40   X_ATTRIBUTE15 in VARCHAR2,
41   X_LABEL in VARCHAR2,
42   X_CREATION_DATE in DATE,
43   X_CREATED_BY in NUMBER,
44   X_LAST_UPDATE_DATE in DATE,
45   X_LAST_UPDATED_BY in NUMBER,
46   X_LAST_UPDATE_LOGIN in NUMBER
47 ) is
48   cursor C is select ROWID from CS_KB_CTXT_REPO_MAPS_B
49     where MAP_ID = X_MAP_ID
50     ;
51 begin
52   insert into CS_KB_CTXT_REPO_MAPS_B (
53     MAP_ID,
54     REPOSITORY_ID,
55     CONTEXT_ID,
56     MAPPING_ORDER,
57     START_DATE_ACTIVE,
58     END_DATE_ACTIVE,
59     OBJECT_VERSION_NUMBER,
60     ATTRIBUTE_CATEGORY,
61     ATTRIBUTE1,
62     ATTRIBUTE2,
63     ATTRIBUTE3,
64     ATTRIBUTE4,
65     ATTRIBUTE5,
66     ATTRIBUTE6,
67     ATTRIBUTE7,
68     ATTRIBUTE8,
69     ATTRIBUTE9,
70     ATTRIBUTE10,
71     ATTRIBUTE11,
72     ATTRIBUTE12,
73     ATTRIBUTE13,
74     ATTRIBUTE14,
75     ATTRIBUTE15,
76     CREATION_DATE,
77     CREATED_BY,
78     LAST_UPDATE_DATE,
79     LAST_UPDATED_BY,
80     LAST_UPDATE_LOGIN
81   ) values (
82     X_MAP_ID,
83     X_REPOSITORY_ID,
84     X_CONTEXT_ID,
85     X_MAPPING_ORDER,
86     X_START_DATE_ACTIVE,
87     X_END_DATE_ACTIVE,
88     X_OBJECT_VERSION_NUMBER,
89     X_ATTRIBUTE_CATEGORY,
90     X_ATTRIBUTE1,
91     X_ATTRIBUTE2,
92     X_ATTRIBUTE3,
93     X_ATTRIBUTE4,
94     X_ATTRIBUTE5,
95     X_ATTRIBUTE6,
96     X_ATTRIBUTE7,
97     X_ATTRIBUTE8,
98     X_ATTRIBUTE9,
99     X_ATTRIBUTE10,
100     X_ATTRIBUTE11,
101     X_ATTRIBUTE12,
102     X_ATTRIBUTE13,
103     X_ATTRIBUTE14,
104     X_ATTRIBUTE15,
105     X_CREATION_DATE,
106     X_CREATED_BY,
107     X_LAST_UPDATE_DATE,
108     X_LAST_UPDATED_BY,
109     X_LAST_UPDATE_LOGIN
110   );
111 
112   insert into CS_KB_CTXT_REPO_MAPS_TL (
113     MAP_ID,
114     LABEL,
115     CREATION_DATE,
116     CREATED_BY,
117     LAST_UPDATE_DATE,
118     LAST_UPDATED_BY,
119     LAST_UPDATE_LOGIN,
120     LANGUAGE,
121     SOURCE_LANG
122   ) select
123     X_MAP_ID,
124     X_LABEL,
125     X_CREATION_DATE,
126     X_CREATED_BY,
127     X_LAST_UPDATE_DATE,
128     X_LAST_UPDATED_BY,
129     X_LAST_UPDATE_LOGIN,
130     L.LANGUAGE_CODE,
131     userenv('LANG')
132   from FND_LANGUAGES L
133   where L.INSTALLED_FLAG in ('I', 'B')
134   and not exists
135     (select NULL
136     from CS_KB_CTXT_REPO_MAPS_TL T
137     where T.MAP_ID = X_MAP_ID
138     and T.LANGUAGE = L.LANGUAGE_CODE);
139 
140   open c;
141   fetch c into X_ROWID;
142   if (c%notfound) then
143     close c;
144     raise no_data_found;
145   end if;
146   close c;
147 
148 end INSERT_ROW;
149 
150 procedure LOCK_ROW (
151   X_MAP_ID in NUMBER,
152   X_REPOSITORY_ID in NUMBER,
153   X_CONTEXT_ID in NUMBER,
154   X_MAPPING_ORDER in NUMBER,
155   X_START_DATE_ACTIVE in DATE,
156   X_END_DATE_ACTIVE in DATE,
157   X_OBJECT_VERSION_NUMBER in NUMBER,
158   X_ATTRIBUTE_CATEGORY in VARCHAR2,
159   X_ATTRIBUTE1 in VARCHAR2,
160   X_ATTRIBUTE2 in VARCHAR2,
161   X_ATTRIBUTE3 in VARCHAR2,
162   X_ATTRIBUTE4 in VARCHAR2,
163   X_ATTRIBUTE5 in VARCHAR2,
164   X_ATTRIBUTE6 in VARCHAR2,
165   X_ATTRIBUTE7 in VARCHAR2,
166   X_ATTRIBUTE8 in VARCHAR2,
167   X_ATTRIBUTE9 in VARCHAR2,
168   X_ATTRIBUTE10 in VARCHAR2,
169   X_ATTRIBUTE11 in VARCHAR2,
170   X_ATTRIBUTE12 in VARCHAR2,
171   X_ATTRIBUTE13 in VARCHAR2,
172   X_ATTRIBUTE14 in VARCHAR2,
173   X_ATTRIBUTE15 in VARCHAR2,
174   X_LABEL in VARCHAR2
175 ) is
176   cursor c is select
177       REPOSITORY_ID,
178       CONTEXT_ID,
179       MAPPING_ORDER,
180       START_DATE_ACTIVE,
181       END_DATE_ACTIVE,
182       OBJECT_VERSION_NUMBER,
183       ATTRIBUTE_CATEGORY,
184       ATTRIBUTE1,
185       ATTRIBUTE2,
186       ATTRIBUTE3,
187       ATTRIBUTE4,
188       ATTRIBUTE5,
189       ATTRIBUTE6,
190       ATTRIBUTE7,
191       ATTRIBUTE8,
192       ATTRIBUTE9,
193       ATTRIBUTE10,
194       ATTRIBUTE11,
195       ATTRIBUTE12,
196       ATTRIBUTE13,
197       ATTRIBUTE14,
198       ATTRIBUTE15
199     from CS_KB_CTXT_REPO_MAPS_B
200     where MAP_ID = X_MAP_ID
201     for update of MAP_ID nowait;
202   recinfo c%rowtype;
203 
204   cursor c1 is select
205       LABEL,
206       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
207     from CS_KB_CTXT_REPO_MAPS_TL
208     where MAP_ID = X_MAP_ID
209     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
210     for update of MAP_ID nowait;
211 begin
212   open c;
213   fetch c into recinfo;
214   if (c%notfound) then
215     close c;
216     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
217     app_exception.raise_exception;
218   end if;
219   close c;
220   if (    (recinfo.REPOSITORY_ID = X_REPOSITORY_ID)
221       AND (recinfo.CONTEXT_ID = X_CONTEXT_ID)
222       AND (recinfo.MAPPING_ORDER = X_MAPPING_ORDER)
223       AND ((recinfo.START_DATE_ACTIVE = X_START_DATE_ACTIVE)
224            OR ((recinfo.START_DATE_ACTIVE is null) AND (X_START_DATE_ACTIVE is null)))
225       AND ((recinfo.END_DATE_ACTIVE = X_END_DATE_ACTIVE)
226            OR ((recinfo.END_DATE_ACTIVE is null) AND (X_END_DATE_ACTIVE is null)))
227       AND ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
228            OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
229       AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
230            OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
231       AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
232            OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
233       AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
234            OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
235       AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
236            OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
237       AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
238            OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
239       AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
240            OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
241       AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
242            OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
243       AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
244            OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
245       AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
246            OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
247       AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
248            OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
249       AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
250            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
251       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
252            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
253       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
254            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
255       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
256            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
257       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
258            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
259       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
260            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
261   ) then
262     null;
263   else
264     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
265     app_exception.raise_exception;
266   end if;
267 
268   for tlinfo in c1 loop
269     if (tlinfo.BASELANG = 'Y') then
270       if (    (tlinfo.LABEL = X_LABEL)
271       ) then
272         null;
273       else
274         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
275         app_exception.raise_exception;
276       end if;
277     end if;
278   end loop;
279   return;
280 end LOCK_ROW;
281 
282 procedure UPDATE_ROW (
283   X_MAP_ID in NUMBER,
284   X_REPOSITORY_ID in NUMBER,
285   X_CONTEXT_ID in NUMBER,
286   X_MAPPING_ORDER in NUMBER,
287   X_START_DATE_ACTIVE in DATE,
288   X_END_DATE_ACTIVE in DATE,
289   X_OBJECT_VERSION_NUMBER in NUMBER,
290   X_ATTRIBUTE_CATEGORY in VARCHAR2,
291   X_ATTRIBUTE1 in VARCHAR2,
292   X_ATTRIBUTE2 in VARCHAR2,
293   X_ATTRIBUTE3 in VARCHAR2,
294   X_ATTRIBUTE4 in VARCHAR2,
295   X_ATTRIBUTE5 in VARCHAR2,
296   X_ATTRIBUTE6 in VARCHAR2,
297   X_ATTRIBUTE7 in VARCHAR2,
298   X_ATTRIBUTE8 in VARCHAR2,
299   X_ATTRIBUTE9 in VARCHAR2,
300   X_ATTRIBUTE10 in VARCHAR2,
301   X_ATTRIBUTE11 in VARCHAR2,
302   X_ATTRIBUTE12 in VARCHAR2,
303   X_ATTRIBUTE13 in VARCHAR2,
304   X_ATTRIBUTE14 in VARCHAR2,
305   X_ATTRIBUTE15 in VARCHAR2,
306   X_LABEL in VARCHAR2,
307   X_LAST_UPDATE_DATE in DATE,
308   X_LAST_UPDATED_BY in NUMBER,
309   X_LAST_UPDATE_LOGIN in NUMBER
310 ) is
311 begin
312   update CS_KB_CTXT_REPO_MAPS_B set
313     REPOSITORY_ID = X_REPOSITORY_ID,
314     CONTEXT_ID = X_CONTEXT_ID,
315     MAPPING_ORDER = X_MAPPING_ORDER,
316     START_DATE_ACTIVE = X_START_DATE_ACTIVE,
317     END_DATE_ACTIVE = X_END_DATE_ACTIVE,
318     OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
319     ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
320     ATTRIBUTE1 = X_ATTRIBUTE1,
321     ATTRIBUTE2 = X_ATTRIBUTE2,
322     ATTRIBUTE3 = X_ATTRIBUTE3,
323     ATTRIBUTE4 = X_ATTRIBUTE4,
324     ATTRIBUTE5 = X_ATTRIBUTE5,
325     ATTRIBUTE6 = X_ATTRIBUTE6,
326     ATTRIBUTE7 = X_ATTRIBUTE7,
327     ATTRIBUTE8 = X_ATTRIBUTE8,
328     ATTRIBUTE9 = X_ATTRIBUTE9,
329     ATTRIBUTE10 = X_ATTRIBUTE10,
330     ATTRIBUTE11 = X_ATTRIBUTE11,
331     ATTRIBUTE12 = X_ATTRIBUTE12,
332     ATTRIBUTE13 = X_ATTRIBUTE13,
333     ATTRIBUTE14 = X_ATTRIBUTE14,
334     ATTRIBUTE15 = X_ATTRIBUTE15,
335     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
336     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
337     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
338   where MAP_ID = X_MAP_ID;
339 
340   if (sql%notfound) then
341     raise no_data_found;
342   end if;
343 
344   update CS_KB_CTXT_REPO_MAPS_TL set
345     LABEL = X_LABEL,
346     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
347     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
348     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
349     SOURCE_LANG = userenv('LANG')
350   where MAP_ID = X_MAP_ID
351   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
352 
353   if (sql%notfound) then
354     raise no_data_found;
355   end if;
356 end UPDATE_ROW;
357 
358 procedure DELETE_ROW (
359   X_MAP_ID in NUMBER
360 ) is
361 begin
362   delete from CS_KB_CTXT_REPO_MAPS_TL
363   where MAP_ID = X_MAP_ID;
364 
365   if (sql%notfound) then
366     raise no_data_found;
367   end if;
368 
369   delete from CS_KB_CTXT_REPO_MAPS_B
370   where MAP_ID = X_MAP_ID;
371 
372   if (sql%notfound) then
373     raise no_data_found;
374   end if;
375 end DELETE_ROW;
376 
377 procedure ADD_LANGUAGE
378 is
379 begin
380   delete from CS_KB_CTXT_REPO_MAPS_TL T
381   where not exists
382     (select NULL
383     from CS_KB_CTXT_REPO_MAPS_B B
384     where B.MAP_ID = T.MAP_ID
385     );
386 
387   update CS_KB_CTXT_REPO_MAPS_TL T set (
388       LABEL
389     ) = (select
390       B.LABEL
391     from CS_KB_CTXT_REPO_MAPS_TL B
392     where B.MAP_ID = T.MAP_ID
393     and B.LANGUAGE = T.SOURCE_LANG)
394   where (
395       T.MAP_ID,
396       T.LANGUAGE
397   ) in (select
398       SUBT.MAP_ID,
399       SUBT.LANGUAGE
400     from CS_KB_CTXT_REPO_MAPS_TL SUBB, CS_KB_CTXT_REPO_MAPS_TL SUBT
401     where SUBB.MAP_ID = SUBT.MAP_ID
402     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
403     and (SUBB.LABEL <> SUBT.LABEL
404   ));
405 
406   insert into CS_KB_CTXT_REPO_MAPS_TL (
407     MAP_ID,
408     LABEL,
409     CREATION_DATE,
410     CREATED_BY,
414     LANGUAGE,
411     LAST_UPDATE_DATE,
412     LAST_UPDATED_BY,
413     LAST_UPDATE_LOGIN,
415     SOURCE_LANG
416   ) select /*+ ORDERED */
417     B.MAP_ID,
418     B.LABEL,
419     B.CREATION_DATE,
420     B.CREATED_BY,
421     B.LAST_UPDATE_DATE,
422     B.LAST_UPDATED_BY,
423     B.LAST_UPDATE_LOGIN,
424     L.LANGUAGE_CODE,
425     B.SOURCE_LANG
426   from CS_KB_CTXT_REPO_MAPS_TL B, FND_LANGUAGES L
427   where L.INSTALLED_FLAG in ('I', 'B')
428   and B.LANGUAGE = userenv('LANG')
429   and not exists
430     (select NULL
431     from CS_KB_CTXT_REPO_MAPS_TL T
432     where T.MAP_ID = B.MAP_ID
433     and T.LANGUAGE = L.LANGUAGE_CODE);
434 end ADD_LANGUAGE;
435 
436 PROCEDURE LOAD_ROW(
437   X_MAP_ID in NUMBER,
438   X_REPOSITORY_ID in NUMBER,
439   X_CONTEXT_ID in NUMBER,
440   X_MAPPING_ORDER in NUMBER,
441   X_START_DATE_ACTIVE in DATE,
442   X_END_DATE_ACTIVE in DATE,
443   X_LABEL in VARCHAR2,
444   X_OWNER in VARCHAR2,
445   X_LAST_UPDATE_DATE in VARCHAR2,
446   X_CUSTOM_MODE in VARCHAR2
447 ) IS
448   f_luby    number;  -- entity owner in file
449   f_ludate  date;    -- entity update date in file
450   db_luby   number;  -- entity owner in db
451   db_ludate date;    -- entity update date in db
452   db_ovn    NUMBER;
453   l_rowid rowid;
454 BEGIN
455 
456     -- Translate a true null value to fnd_api.g_miss_char
457     -- Note table handler apis should be coded to treat
458     -- fnd_api.g_miss_* as true nulls, and not as no-change.
459 	--	if (x_meaning = fnd_load_util.null_value) then
460 	--          l_meaning := fnd_api.g_miss_char;
461 	--        else
462 	--          l_meaning := x_meaning;
463 	--        end if;
464 
465   -- Translate owner to file_last_updated_by
466   f_luby := fnd_load_util.owner_id(X_OWNER);
467 
468   -- Translate char last_update_date to date
469   f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
470   BEGIN
471     SELECT LAST_UPDATED_BY, LAST_UPDATE_DATE, OBJECT_VERSION_NUMBER
472     INTO db_luby, db_ludate, db_ovn
473     FROM CS_KB_CTXT_REPO_MAPS_B
474     WHERE MAP_ID = X_MAP_ID;
475 
476 	-- Test for customization and version
477     IF (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
478                                   db_ludate, X_CUSTOM_MODE)) THEN
479 	  -- Update existing row
480       UPDATE_ROW (
481         X_MAP_ID => X_MAP_ID,
482         X_REPOSITORY_ID => X_REPOSITORY_ID,
483         X_CONTEXT_ID => X_CONTEXT_ID,
484         X_MAPPING_ORDER => X_MAPPING_ORDER,
485         X_START_DATE_ACTIVE => X_START_DATE_ACTIVE,
486         X_END_DATE_ACTIVE => X_END_DATE_ACTIVE,
487         X_OBJECT_VERSION_NUMBER => db_ovn+1,
488         X_ATTRIBUTE_CATEGORY => null,
489         X_ATTRIBUTE1 => null,
490         X_ATTRIBUTE2 => null,
491         X_ATTRIBUTE3 => null,
492         X_ATTRIBUTE4 => null,
493         X_ATTRIBUTE5 => null,
494         X_ATTRIBUTE6 => null,
495         X_ATTRIBUTE7 => null,
496         X_ATTRIBUTE8 => null,
497         X_ATTRIBUTE9 => null,
498         X_ATTRIBUTE10 => null,
499         X_ATTRIBUTE11 => null,
500         X_ATTRIBUTE12 => null,
501         X_ATTRIBUTE13 => null,
502         X_ATTRIBUTE14 => null,
503         X_ATTRIBUTE15 => null,
504         X_LABEL => X_LABEL,
505         X_LAST_UPDATE_DATE  => f_ludate,
506         X_LAST_UPDATED_BY => f_luby,
507         X_LAST_UPDATE_LOGIN  => 0);
508 
509 
510     END IF;
511   EXCEPTION
512     WHEN no_data_found THEN
513       -- Record doesn't exist - insert in all cases
514       INSERT_ROW (
515         X_ROWID => l_rowid,
516         X_MAP_ID => X_MAP_ID,
517         X_REPOSITORY_ID => X_REPOSITORY_ID,
518         X_CONTEXT_ID => X_CONTEXT_ID,
519         X_MAPPING_ORDER => X_MAPPING_ORDER,
520         X_START_DATE_ACTIVE => X_START_DATE_ACTIVE,
521         X_END_DATE_ACTIVE => X_END_DATE_ACTIVE,
522         X_OBJECT_VERSION_NUMBER => 1,
523         X_ATTRIBUTE_CATEGORY => null,
524         X_ATTRIBUTE1 => null,
525         X_ATTRIBUTE2 => null,
526         X_ATTRIBUTE3 => null,
527         X_ATTRIBUTE4 => null,
528         X_ATTRIBUTE5 => null,
529         X_ATTRIBUTE6 => null,
530         X_ATTRIBUTE7 => null,
531         X_ATTRIBUTE8 => null,
532         X_ATTRIBUTE9 => null,
533         X_ATTRIBUTE10 => null,
534         X_ATTRIBUTE11 => null,
535         X_ATTRIBUTE12 => null,
536         X_ATTRIBUTE13 => null,
537         X_ATTRIBUTE14 => null,
538         X_ATTRIBUTE15 => null,
539         X_LABEL => X_LABEL,
540         X_CREATION_DATE => f_ludate,
541         X_CREATED_BY => f_luby,
542         X_LAST_UPDATE_DATE => f_ludate,
543         X_LAST_UPDATED_BY => f_luby,
544         X_LAST_UPDATE_LOGIN => 0);
545 
546   END;
547 
548 END LOAD_ROW;
549 
550 PROCEDURE TRANSLATE_ROW(
551         X_MAP_ID in NUMBER,
552         X_LABEL in VARCHAR2,
553         X_OWNER in VARCHAR2,
554         X_LAST_UPDATE_DATE in VARCHAR2,
555         X_CUSTOM_MODE in VARCHAR2
556 ) is
557         row_id varchar2(64);
558         f_luby    number;  -- entity owner in file
559         f_ludate  date;    -- entity update date in file
560         db_luby   number;  -- entity owner in db
561         db_ludate date;    -- entity update date in db
562 BEGIN
563 
564   -- Translate owner to file_last_updated_by
565   f_luby := fnd_load_util.owner_id(X_OWNER);
566 
567   -- Translate char last_update_date to date
568   f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'YYYY/MM/DD'), sysdate);
569   BEGIN
570     SELECT LAST_UPDATED_BY, LAST_UPDATE_DATE
574     AND LANGUAGE = userenv('LANG');
571     INTO db_luby, db_ludate
572     FROM CS_KB_CTXT_REPO_MAPS_TL
573     WHERE MAP_ID = X_MAP_ID
575 
576 	-- Test for customization and version
577     IF (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
578                                   db_ludate, X_CUSTOM_MODE)) then
579       -- Update translations for this language
580       UPDATE CS_KB_CTXT_REPO_MAPS_TL SET
581         LABEL = decode(x_label,
582 		        fnd_load_util.null_value, null, -- Real null
583 			    null, LABEL,                  -- No change
584 			    x_label),
585         LAST_UPDATE_DATE = f_ludate,
586         LAST_UPDATED_BY = f_luby,
587         LAST_UPDATE_LOGIN = 0,
588         SOURCE_LANG = userenv('LANG')
589       WHERE userenv('LANG') in (LANGUAGE, SOURCE_LANG)
590       AND MAP_ID = X_MAP_ID;
591 
592     END IF;
593 
594   EXCEPTION
595     WHEN no_data_found THEN
596       -- Do not insert missing translations, skip this row
597       null;
598   END;
599 
600 END TRANSLATE_ROW;
601 
602 PROCEDURE LOAD_SEED_ROW(
603   X_UPLOAD_MODE in VARCHAR2,
604   X_MAP_ID in NUMBER,
605   X_REPOSITORY_ID in NUMBER,
606   X_CONTEXT_ID in NUMBER,
607   X_MAPPING_ORDER in NUMBER,
608   X_START_DATE_ACTIVE in DATE,
609   X_END_DATE_ACTIVE in DATE,
610   X_LABEL in VARCHAR2,
611   X_OWNER in VARCHAR2,
612   X_LAST_UPDATE_DATE in VARCHAR2,
613   X_CUSTOM_MODE in VARCHAR2) IS
614 BEGIN
615 
616  if (X_UPLOAD_MODE = 'NLS') then
617    TRANSLATE_ROW(
618         X_MAP_ID,
619         X_LABEL,
620         X_OWNER,
621         X_LAST_UPDATE_DATE,
622         X_CUSTOM_MODE );
623  else
624    LOAD_ROW(
625         X_MAP_ID,
626         X_REPOSITORY_ID,
627         X_CONTEXT_ID,
628         X_MAPPING_ORDER,
629         X_START_DATE_ACTIVE,
630         X_END_DATE_ACTIVE,
631         X_LABEL,
632         X_OWNER,
633         X_LAST_UPDATE_DATE,
634         X_CUSTOM_MODE );
635  end if;
636 
637 END LOAD_SEED_ROW;
638 
639 END CS_KB_CTXT_REPO_MAPS_PKG;