DBA Data[Home] [Help]

PACKAGE BODY: APPS.PO_LINE_TYPES_PKG

Source


1 package body PO_LINE_TYPES_PKG as
2 /* $Header: POXTILTB.pls 115.8 2004/03/23 22:04:12 dreddy ship $ */
3 X_progress varchar2(10) := '001';
4 procedure INSERT_ROW (
5   X_ROWID in out NOCOPY VARCHAR2,
6   X_LINE_TYPE_ID in out NOCOPY NUMBER,
7   X_ATTRIBUTE3 in VARCHAR2,
8   X_ATTRIBUTE4 in VARCHAR2,
9   X_ATTRIBUTE5 in VARCHAR2,
10   X_ATTRIBUTE6 in VARCHAR2,
11   X_ATTRIBUTE7 in VARCHAR2,
12   X_ATTRIBUTE8 in VARCHAR2,
13   X_ATTRIBUTE9 in VARCHAR2,
14   X_ATTRIBUTE10 in VARCHAR2,
15   X_ATTRIBUTE11 in VARCHAR2,
16   X_ATTRIBUTE12 in VARCHAR2,
17   X_ATTRIBUTE13 in VARCHAR2,
18   X_ATTRIBUTE14 in VARCHAR2,
19   X_ATTRIBUTE15 in VARCHAR2,
20   X_OUTSIDE_OPERATION_FLAG in VARCHAR2,
21   X_REQUEST_ID in NUMBER,
22   X_RECEIVE_CLOSE_TOLERANCE in NUMBER,
23   X_ORDER_TYPE_LOOKUP_CODE in VARCHAR2,
24   X_PURCHASE_BASIS IN PO_LINE_TYPES_B.purchase_basis%TYPE,  -- <SERVICES FPJ>
25   X_MATCHING_BASIS IN PO_LINE_TYPES_B.matching_basis%TYPE,  -- <SERVICES FPJ>
26   X_CATEGORY_ID in NUMBER,
27   X_UNIT_OF_MEASURE in VARCHAR2,
28   X_UNIT_PRICE in NUMBER,
29   X_RECEIVING_FLAG in VARCHAR2,
30   X_INACTIVE_DATE in DATE,
31   X_ATTRIBUTE_CATEGORY in VARCHAR2,
32   X_ATTRIBUTE1 in VARCHAR2,
33   X_ATTRIBUTE2 in VARCHAR2,
34   X_LINE_TYPE in VARCHAR2,
35   X_DESCRIPTION in VARCHAR2,
36   X_CREATION_DATE in DATE,
37   X_CREATED_BY in NUMBER,
38   X_LAST_UPDATE_DATE in DATE,
39   X_LAST_UPDATED_BY in NUMBER,
40   X_LAST_UPDATE_LOGIN in NUMBER
41 ) is
42   cursor C is select ROWID from PO_LINE_TYPES_B
43     where LINE_TYPE_ID = X_LINE_TYPE_ID ;
44 
45    CURSOR C2 IS SELECT po_line_types_s.nextval FROM sys.dual;
46 
47 begin
48 
49       BEGIN
50 	if (X_Line_Type_Id is NULL) then
51            OPEN C2;
52            FETCH C2 INTO X_Line_Type_ID;
53            CLOSE C2;
54         end if;
55       end;
56   begin
57   insert into PO_LINE_TYPES_B (
58     ATTRIBUTE3,
59     ATTRIBUTE4,
60     ATTRIBUTE5,
61     ATTRIBUTE6,
62     ATTRIBUTE7,
63     ATTRIBUTE8,
64     ATTRIBUTE9,
65     ATTRIBUTE10,
66     ATTRIBUTE11,
67     ATTRIBUTE12,
68     ATTRIBUTE13,
69     ATTRIBUTE14,
70     ATTRIBUTE15,
71     OUTSIDE_OPERATION_FLAG,
72     REQUEST_ID,
73     RECEIVE_CLOSE_TOLERANCE,
74     LINE_TYPE_ID,
75     ORDER_TYPE_LOOKUP_CODE,
76     PURCHASE_BASIS,                   -- <SERVICES FPJ>
77     MATCHING_BASIS,                   -- <SERVICES FPJ>
78     CATEGORY_ID,
79     UNIT_OF_MEASURE,
80     UNIT_PRICE,
81     RECEIVING_FLAG,
82     INACTIVE_DATE,
83     ATTRIBUTE_CATEGORY,
84     ATTRIBUTE1,
85     ATTRIBUTE2,
86     CREATION_DATE,
87     CREATED_BY,
88     LAST_UPDATE_DATE,
89     LAST_UPDATED_BY,
90     LAST_UPDATE_LOGIN
91   ) values (
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_OUTSIDE_OPERATION_FLAG,
106     X_REQUEST_ID,
107     X_RECEIVE_CLOSE_TOLERANCE,
108     X_LINE_TYPE_ID,
109     X_ORDER_TYPE_LOOKUP_CODE,
110     X_PURCHASE_BASIS,                 -- <SERVICES FPJ>
111     X_MATCHING_BASIS,                 -- <SERVICES FPJ>
112     X_CATEGORY_ID,
113     X_UNIT_OF_MEASURE,
114     X_UNIT_PRICE,
115     X_RECEIVING_FLAG,
116     X_INACTIVE_DATE,
117     X_ATTRIBUTE_CATEGORY,
118     X_ATTRIBUTE1,
119     X_ATTRIBUTE2,
120     X_CREATION_DATE,
121     X_CREATED_BY,
122     X_LAST_UPDATE_DATE,
123     X_LAST_UPDATED_BY,
124     X_LAST_UPDATE_LOGIN
125   );
126 
127   exception
128    WHEN OTHERS THEN
129       po_message_s.sql_error('val_destination_info', x_progress, sqlcode);
130    RAISE;
131   end;
132 
133   begin
134 
135  x_progress := '002';
136   insert into PO_LINE_TYPES_TL (
137     LAST_UPDATE_LOGIN,
138     CREATION_DATE,
139     LINE_TYPE_ID,
140     DESCRIPTION,
141     LINE_TYPE,
142     LAST_UPDATE_DATE,
143     LAST_UPDATED_BY,
144     CREATED_BY,
145     LANGUAGE,
146     SOURCE_LANG
147   ) select
148     X_LAST_UPDATE_LOGIN,
149     X_CREATION_DATE,
150     X_LINE_TYPE_ID,
151     X_DESCRIPTION,
152     X_LINE_TYPE,
153     X_LAST_UPDATE_DATE,
154     X_LAST_UPDATED_BY,
155     X_CREATED_BY,
156     L.LANGUAGE_CODE,
157     userenv('LANG')
158   from FND_LANGUAGES L
159   where L.INSTALLED_FLAG in ('I', 'B')
160   and not exists
161     (select NULL
162     from PO_LINE_TYPES_TL T
163     where T.LINE_TYPE_ID = X_LINE_TYPE_ID
164     and T.LANGUAGE = L.LANGUAGE_CODE);
165 
166   open c;
167   fetch c into X_ROWID;
168   if (c%notfound) then
169     close c;
170     raise no_data_found;
171   end if;
172   close c;
173 
174   exception
175 
176    WHEN OTHERS THEN
177       po_message_s.sql_error('val_destination_info', x_progress, sqlcode);
178    RAISE;
179 
180   end;
181 
182 end INSERT_ROW;
183 
184 procedure LOCK_ROW (
185   X_LINE_TYPE_ID in NUMBER,
186   X_ATTRIBUTE3 in VARCHAR2,
187   X_ATTRIBUTE4 in VARCHAR2,
188   X_ATTRIBUTE5 in VARCHAR2,
189   X_ATTRIBUTE6 in VARCHAR2,
190   X_ATTRIBUTE7 in VARCHAR2,
191   X_ATTRIBUTE8 in VARCHAR2,
192   X_ATTRIBUTE9 in VARCHAR2,
193   X_ATTRIBUTE10 in VARCHAR2,
194   X_ATTRIBUTE11 in VARCHAR2,
195   X_ATTRIBUTE12 in VARCHAR2,
196   X_ATTRIBUTE13 in VARCHAR2,
197   X_ATTRIBUTE14 in VARCHAR2,
198   X_ATTRIBUTE15 in VARCHAR2,
199   X_OUTSIDE_OPERATION_FLAG in VARCHAR2,
200   X_REQUEST_ID in NUMBER,
201   X_RECEIVE_CLOSE_TOLERANCE in NUMBER,
202   X_ORDER_TYPE_LOOKUP_CODE in VARCHAR2,
203   X_PURCHASE_BASIS IN PO_LINE_TYPES_B.purchase_basis%TYPE,  -- <SERVICES FPJ>
204   X_MATCHING_BASIS IN PO_LINE_TYPES_B.matching_basis%TYPE,  -- <SERVICES FPJ>
205   X_CATEGORY_ID in NUMBER,
206   X_UNIT_OF_MEASURE in VARCHAR2,
207   X_UNIT_PRICE in NUMBER,
208   X_RECEIVING_FLAG in VARCHAR2,
209   X_INACTIVE_DATE in DATE,
210   X_ATTRIBUTE_CATEGORY in VARCHAR2,
211   X_ATTRIBUTE1 in VARCHAR2,
212   X_ATTRIBUTE2 in VARCHAR2,
213   X_LINE_TYPE in VARCHAR2,
214   X_DESCRIPTION in VARCHAR2
215 ) is
216   cursor c is select
217       ATTRIBUTE3,
218       ATTRIBUTE4,
219       ATTRIBUTE5,
220       ATTRIBUTE6,
221       ATTRIBUTE7,
222       ATTRIBUTE8,
223       ATTRIBUTE9,
224       ATTRIBUTE10,
225       ATTRIBUTE11,
226       ATTRIBUTE12,
227       ATTRIBUTE13,
228       ATTRIBUTE14,
229       ATTRIBUTE15,
230       OUTSIDE_OPERATION_FLAG,
231       REQUEST_ID,
232       RECEIVE_CLOSE_TOLERANCE,
233       ORDER_TYPE_LOOKUP_CODE,
234       PURCHASE_BASIS,              -- <SERVICES FPJ>
235       MATCHING_BASIS,              -- <SERVICES FPJ>
236       CATEGORY_ID,
237       UNIT_OF_MEASURE,
238       UNIT_PRICE,
239       RECEIVING_FLAG,
240       INACTIVE_DATE,
241       ATTRIBUTE_CATEGORY,
242       ATTRIBUTE1,
243       ATTRIBUTE2
244     from PO_LINE_TYPES_B
245     where LINE_TYPE_ID = X_LINE_TYPE_ID
246     for update of LINE_TYPE_ID nowait;
247   recinfo c%rowtype;
248 
249   cursor c1 is select
250       LINE_TYPE,
251       DESCRIPTION,
252       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
253     from PO_LINE_TYPES_TL
254     where LINE_TYPE_ID = X_LINE_TYPE_ID
255     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
256     for update of LINE_TYPE_ID nowait;
257 begin
258   open c;
259   fetch c into recinfo;
260   if (c%notfound) then
261     close c;
262     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
263     app_exception.raise_exception;
264   end if;
265   close c;
266   if (    ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
267            OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
268       AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
269            OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
270       AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
271            OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
272       AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
273            OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
274       AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
275            OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
276       AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
277            OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
278       AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
279            OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
280       AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
281            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
282       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
283            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
284       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
285            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
286       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
287            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
288       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
289            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
290       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
291            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
292       AND ((recinfo.OUTSIDE_OPERATION_FLAG = X_OUTSIDE_OPERATION_FLAG)
293            OR ((recinfo.OUTSIDE_OPERATION_FLAG is null) AND (X_OUTSIDE_OPERATION_FLAG is null)))
294       AND ((recinfo.REQUEST_ID = X_REQUEST_ID)
295            OR ((recinfo.REQUEST_ID is null) AND (X_REQUEST_ID is null)))
296       AND ((recinfo.RECEIVE_CLOSE_TOLERANCE = X_RECEIVE_CLOSE_TOLERANCE)
297            OR ((recinfo.RECEIVE_CLOSE_TOLERANCE is null) AND (X_RECEIVE_CLOSE_TOLERANCE is null)))
298       AND (recinfo.ORDER_TYPE_LOOKUP_CODE = X_ORDER_TYPE_LOOKUP_CODE)
299       AND (recinfo.PURCHASE_BASIS = X_PURCHASE_BASIS)     -- <SERVICES FPJ>
300       AND (recinfo.MATCHING_BASIS = X_MATCHING_BASIS)     -- <SERVICES FPJ>
301       AND ((recinfo.CATEGORY_ID = X_CATEGORY_ID)
302            OR ((recinfo.CATEGORY_ID is null) AND (X_CATEGORY_ID is null)))
303       AND ((recinfo.UNIT_OF_MEASURE = X_UNIT_OF_MEASURE)
304            OR ((recinfo.UNIT_OF_MEASURE is null) AND (X_UNIT_OF_MEASURE is null)))
305       AND ((recinfo.UNIT_PRICE = X_UNIT_PRICE)
306            OR ((recinfo.UNIT_PRICE is null) AND (X_UNIT_PRICE is null)))
307       AND ((recinfo.RECEIVING_FLAG = X_RECEIVING_FLAG)
308            OR ((recinfo.RECEIVING_FLAG is null) AND (X_RECEIVING_FLAG is null)))
309       AND ((recinfo.INACTIVE_DATE = X_INACTIVE_DATE)
310            OR ((recinfo.INACTIVE_DATE is null) AND (X_INACTIVE_DATE is null)))
311       AND ((recinfo.ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY)
312            OR ((recinfo.ATTRIBUTE_CATEGORY is null) AND (X_ATTRIBUTE_CATEGORY is null)))
313       AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
314            OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
315       AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
316            OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
317   ) then
318     null;
319   else
320     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
321     app_exception.raise_exception;
322   end if;
323 
324   for tlinfo in c1 loop
325     if (tlinfo.BASELANG = 'Y') then
326       if (    (tlinfo.LINE_TYPE = X_LINE_TYPE)
327           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
328                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
329       ) then
330         null;
331       else
332         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
333         app_exception.raise_exception;
334       end if;
335     end if;
336   end loop;
337   return;
338 end LOCK_ROW;
339 
340 procedure UPDATE_ROW (
341   X_LINE_TYPE_ID in NUMBER,
342   X_ATTRIBUTE3 in VARCHAR2,
343   X_ATTRIBUTE4 in VARCHAR2,
344   X_ATTRIBUTE5 in VARCHAR2,
345   X_ATTRIBUTE6 in VARCHAR2,
346   X_ATTRIBUTE7 in VARCHAR2,
347   X_ATTRIBUTE8 in VARCHAR2,
348   X_ATTRIBUTE9 in VARCHAR2,
349   X_ATTRIBUTE10 in VARCHAR2,
350   X_ATTRIBUTE11 in VARCHAR2,
351   X_ATTRIBUTE12 in VARCHAR2,
352   X_ATTRIBUTE13 in VARCHAR2,
353   X_ATTRIBUTE14 in VARCHAR2,
354   X_ATTRIBUTE15 in VARCHAR2,
355   X_OUTSIDE_OPERATION_FLAG in VARCHAR2,
356   X_REQUEST_ID in NUMBER,
357   X_RECEIVE_CLOSE_TOLERANCE in NUMBER,
358   X_ORDER_TYPE_LOOKUP_CODE in VARCHAR2,
359   X_PURCHASE_BASIS IN PO_LINE_TYPES_B.purchase_basis%TYPE,  -- <SERVICES FPJ>
360   X_MATCHING_BASIS IN PO_LINE_TYPES_B.matching_basis%TYPE,  -- <SERVICES FPJ>
361   X_CATEGORY_ID in NUMBER,
362   X_UNIT_OF_MEASURE in VARCHAR2,
363   X_UNIT_PRICE in NUMBER,
364   X_RECEIVING_FLAG in VARCHAR2,
365   X_INACTIVE_DATE in DATE,
366   X_ATTRIBUTE_CATEGORY in VARCHAR2,
367   X_ATTRIBUTE1 in VARCHAR2,
368   X_ATTRIBUTE2 in VARCHAR2,
369   X_LINE_TYPE in VARCHAR2,
370   X_DESCRIPTION in VARCHAR2,
371   X_LAST_UPDATE_DATE in DATE,
372   X_LAST_UPDATED_BY in NUMBER,
373   X_LAST_UPDATE_LOGIN in NUMBER
374 ) is
375 begin
376   update PO_LINE_TYPES_B set
377     ATTRIBUTE3 = X_ATTRIBUTE3,
378     ATTRIBUTE4 = X_ATTRIBUTE4,
379     ATTRIBUTE5 = X_ATTRIBUTE5,
380     ATTRIBUTE6 = X_ATTRIBUTE6,
384     ATTRIBUTE10 = X_ATTRIBUTE10,
381     ATTRIBUTE7 = X_ATTRIBUTE7,
382     ATTRIBUTE8 = X_ATTRIBUTE8,
383     ATTRIBUTE9 = X_ATTRIBUTE9,
385     ATTRIBUTE11 = X_ATTRIBUTE11,
386     ATTRIBUTE12 = X_ATTRIBUTE12,
387     ATTRIBUTE13 = X_ATTRIBUTE13,
388     ATTRIBUTE14 = X_ATTRIBUTE14,
389     ATTRIBUTE15 = X_ATTRIBUTE15,
390     OUTSIDE_OPERATION_FLAG = X_OUTSIDE_OPERATION_FLAG,
391     REQUEST_ID = X_REQUEST_ID,
392     RECEIVE_CLOSE_TOLERANCE = X_RECEIVE_CLOSE_TOLERANCE,
393     ORDER_TYPE_LOOKUP_CODE = X_ORDER_TYPE_LOOKUP_CODE,
394     PURCHASE_BASIS = X_PURCHASE_BASIS,                -- <SERVICES FPJ>
395     MATCHING_BASIS = X_MATCHING_BASIS,                -- <SERVICES FPJ>
396     CATEGORY_ID = X_CATEGORY_ID,
397     UNIT_OF_MEASURE = X_UNIT_OF_MEASURE,
398     UNIT_PRICE = X_UNIT_PRICE,
399     RECEIVING_FLAG = X_RECEIVING_FLAG,
400     INACTIVE_DATE = X_INACTIVE_DATE,
401     ATTRIBUTE_CATEGORY = X_ATTRIBUTE_CATEGORY,
402     ATTRIBUTE1 = X_ATTRIBUTE1,
403     ATTRIBUTE2 = X_ATTRIBUTE2,
404     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
405     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
406     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
407   where LINE_TYPE_ID = X_LINE_TYPE_ID;
408 
409   if (sql%notfound) then
410     raise no_data_found;
411   end if;
412 
413   update PO_LINE_TYPES_TL set
414     LINE_TYPE = X_LINE_TYPE,
415     DESCRIPTION = X_DESCRIPTION,
416     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
417     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
418     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
419     SOURCE_LANG = userenv('LANG')
420   where LINE_TYPE_ID = X_LINE_TYPE_ID
421   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
422 
423   if (sql%notfound) then
424     raise no_data_found;
425   end if;
426 end UPDATE_ROW;
427 
428 procedure DELETE_ROW (
429   X_LINE_TYPE_ID in NUMBER
430 ) is
431 begin
432   delete from PO_LINE_TYPES_TL
433   where LINE_TYPE_ID = X_LINE_TYPE_ID;
434 
435   if (sql%notfound) then
436     raise no_data_found;
437   end if;
438 
439   delete from PO_LINE_TYPES_B
440   where LINE_TYPE_ID = X_LINE_TYPE_ID;
441 
442   if (sql%notfound) then
443     raise no_data_found;
444   end if;
445 end DELETE_ROW;
446 
447 procedure ADD_LANGUAGE
448 is
449 begin
450   delete from PO_LINE_TYPES_TL T
451   where not exists
452     (select NULL
453     from PO_LINE_TYPES_B B
454     where B.LINE_TYPE_ID = T.LINE_TYPE_ID
455     );
456 
457   update PO_LINE_TYPES_TL T set (
458       LINE_TYPE,
459       DESCRIPTION
460     ) = (select
461       B.LINE_TYPE,
462       B.DESCRIPTION
463     from PO_LINE_TYPES_TL B
464     where B.LINE_TYPE_ID = T.LINE_TYPE_ID
465     and B.LANGUAGE = T.SOURCE_LANG)
466   where (
467       T.LINE_TYPE_ID,
468       T.LANGUAGE
469   ) in (select
470       SUBT.LINE_TYPE_ID,
471       SUBT.LANGUAGE
472     from PO_LINE_TYPES_TL SUBB, PO_LINE_TYPES_TL SUBT
473     where SUBB.LINE_TYPE_ID = SUBT.LINE_TYPE_ID
474     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
475     and (SUBB.LINE_TYPE <> SUBT.LINE_TYPE
476       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
477       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
478       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
479   ));
480 
481   insert into PO_LINE_TYPES_TL (
482     LAST_UPDATE_LOGIN,
483     CREATION_DATE,
484     LINE_TYPE_ID,
485     DESCRIPTION,
486     LINE_TYPE,
487     LAST_UPDATE_DATE,
488     LAST_UPDATED_BY,
489     CREATED_BY,
490     LANGUAGE,
491     SOURCE_LANG
492   ) select
493     B.LAST_UPDATE_LOGIN,
494     B.CREATION_DATE,
495     B.LINE_TYPE_ID,
496     B.DESCRIPTION,
497     B.LINE_TYPE,
498     B.LAST_UPDATE_DATE,
499     B.LAST_UPDATED_BY,
500     B.CREATED_BY,
501     L.LANGUAGE_CODE,
502     B.SOURCE_LANG
503   from PO_LINE_TYPES_TL B, FND_LANGUAGES L
504   where L.INSTALLED_FLAG in ('I', 'B')
505   and B.LANGUAGE = userenv('LANG')
506   and not exists
507     (select NULL
508     from PO_LINE_TYPES_TL T
509     where T.LINE_TYPE_ID = B.LINE_TYPE_ID
510     and T.LANGUAGE = L.LANGUAGE_CODE);
511 end ADD_LANGUAGE;
512 
513 procedure TRANSLATE_ROW (X_LINE_TYPE_ID in NUMBER,
514                          X_LINE_TYPE    in VARCHAR2,
515                          X_DESCRIPTION  in VARCHAR2,
516                          X_OWNER        in VARCHAR2,
517                          X_LAST_UPDATE_DATE in VARCHAR2,
518                          X_CUSTOM_MODE  in VARCHAR2) IS
519 
520 f_luby    number;  -- entity owner in file
521 f_ludate  date;    -- entity update date in file
522 db_luby   number;  -- entity owner in db
523 db_ludate date;    -- entity update date in db
524 
525 begin
526 
527   f_luby := fnd_load_util.owner_id(X_OWNER);
528   f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'DD/MM/YYYY'), sysdate);
529 
530   select LAST_UPDATED_BY, LAST_UPDATE_DATE
531   into  db_luby, db_ludate
532   from PO_LINE_TYPES_TL
533   where line_type_id = X_LINE_TYPE_ID
534   and  language = userenv('LANG') ;
535 
536   if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
537                                 db_ludate, X_CUSTOM_MODE)) then
538 
539     update PO_LINE_TYPES_TL set
540       line_type = X_LINE_TYPE,
541       description = X_DESCRIPTION,
542       last_update_date  = f_ludate ,
543       last_updated_by   = f_luby,
544       last_update_login = 0,
545       source_lang       = userenv('LANG')
546     where line_type_id = X_LINE_TYPE_ID
547     and  userenv('LANG') in (language, source_lang);
548 
549   end if;
550 
551 exception
552  when no_data_found then
553     -- Do not insert missing translations, skip this row
554     null;
555 end TRANSLATE_ROW;
556 
557 procedure LOAD_ROW
558 (   X_LINE_TYPE_ID in out NOCOPY NUMBER,
559     X_ATTRIBUTE_CATEGORY in VARCHAR2,
560     X_ATTRIBUTE1 in VARCHAR2,
561     X_ATTRIBUTE2 in VARCHAR2,
562     X_ATTRIBUTE3 in VARCHAR2,
563     X_ATTRIBUTE4 in VARCHAR2,
564     X_ATTRIBUTE5 in VARCHAR2,
565     X_ATTRIBUTE6 in VARCHAR2,
566     X_ATTRIBUTE7 in VARCHAR2,
567     X_ATTRIBUTE8 in VARCHAR2,
568     X_ATTRIBUTE9 in VARCHAR2,
569     X_ATTRIBUTE10 in VARCHAR2,
570     X_ATTRIBUTE11 in VARCHAR2,
571     X_ATTRIBUTE12 in VARCHAR2,
572     X_ATTRIBUTE13 in VARCHAR2,
573     X_ATTRIBUTE14 in VARCHAR2,
574     X_ATTRIBUTE15 in VARCHAR2,
575     X_OUTSIDE_OPERATION_FLAG in VARCHAR2,
576     X_REQUEST_ID in NUMBER,
577     X_RECEIVE_CLOSE_TOLERANCE in NUMBER,
578     X_ORDER_TYPE_LOOKUP_CODE in VARCHAR2,
579     X_PURCHASE_BASIS IN PO_LINE_TYPES_B.purchase_basis%TYPE,  -- <SERVICES FPJ>
580     X_MATCHING_BASIS IN PO_LINE_TYPES_B.matching_basis%TYPE,  -- <SERVICES FPJ>
584     X_RECEIVING_FLAG in VARCHAR2,
581     X_CATEGORY_CODE in VARCHAR2,
582     X_UNIT_OF_MEASURE in VARCHAR2,
583     X_UNIT_PRICE in NUMBER,
585     X_INACTIVE_DATE in DATE,
586     X_LINE_TYPE in VARCHAR2,
587     X_DESCRIPTION in VARCHAR2,
588     X_OWNER in VARCHAR2,
589     X_LAST_UPDATE_DATE in VARCHAR2,
590     X_CUSTOM_MODE in VARCHAR2
591 ) IS
592 
593 l_row_id	varchar2(64);
594 l_category_id number;
595 f_luby    number;  -- entity owner in file
596 f_ludate  date;    -- entity update date in file
597 db_luby   number;  -- entity owner in db
598 db_ludate date;    -- entity update date in db
599 
600 begin
601 
602    if x_category_code is not null then
603       begin
604 
605        SELECT mck.category_id
606        into   l_category_id
607        FROM mtl_categories_kfv mck,
608             mtl_category_sets mcs,
609             mtl_default_category_sets mdcs
610        WHERE
611            mck.structure_id = mcs.structure_id
612            AND mcs.category_set_id = mdcs.category_set_id
613            AND mdcs.functional_area_id = 2
614            AND concatenated_segments = x_category_code ;
615       exception
616          when others then null;
617       end;
618 
619    end if;
620 
621   f_luby := fnd_load_util.owner_id(X_OWNER);
622   f_ludate := nvl(to_date(X_LAST_UPDATE_DATE, 'DD/MM/YYYY'), sysdate);
623 
624   select LAST_UPDATED_BY, LAST_UPDATE_DATE
625   into  db_luby, db_ludate
626   from PO_LINE_TYPES_VL
627   where line_type_id = X_LINE_TYPE_ID;
628 
629     if (fnd_load_util.upload_test(f_luby, f_ludate, db_luby,
630                                   db_ludate, X_CUSTOM_MODE)) then
631 
632      UPDATE_ROW (X_LINE_TYPE_ID ,
633                  X_ATTRIBUTE3 ,
634                  X_ATTRIBUTE4 ,
635                  X_ATTRIBUTE5 ,
636                  X_ATTRIBUTE6 ,
637                  X_ATTRIBUTE7 ,
638                  X_ATTRIBUTE8 ,
639                  X_ATTRIBUTE9 ,
640                  X_ATTRIBUTE10 ,
641                  X_ATTRIBUTE11 ,
642                  X_ATTRIBUTE12 ,
643                  X_ATTRIBUTE13 ,
644                  X_ATTRIBUTE14 ,
645                  X_ATTRIBUTE15 ,
646                  X_OUTSIDE_OPERATION_FLAG ,
647                  X_REQUEST_ID ,
648                  X_RECEIVE_CLOSE_TOLERANCE ,
649                  X_ORDER_TYPE_LOOKUP_CODE ,
650                  X_PURCHASE_BASIS ,       -- <SERVICES FPJ>
651                  X_MATCHING_BASIS ,       -- <SERVICES FPJ>
652                  L_CATEGORY_ID ,
653                  X_UNIT_OF_MEASURE ,
654                  X_UNIT_PRICE ,
655                  X_RECEIVING_FLAG ,
656                  X_INACTIVE_DATE ,
657                  X_ATTRIBUTE_CATEGORY ,
658                  X_ATTRIBUTE1 ,
659                  X_ATTRIBUTE2 ,
660                  X_LINE_TYPE ,
661                  X_DESCRIPTION ,
662                  f_ludate ,
663                  f_luby ,
664                  0);
665 
666      end if;
667 
668   exception
669      when NO_DATA_FOUND then
670          INSERT_ROW (l_row_id ,
671                      X_LINE_TYPE_ID ,
672                      X_ATTRIBUTE3 ,
673                      X_ATTRIBUTE4 ,
674                      X_ATTRIBUTE5 ,
675                      X_ATTRIBUTE6 ,
676                      X_ATTRIBUTE7 ,
677                      X_ATTRIBUTE8 ,
678                      X_ATTRIBUTE9 ,
679                      X_ATTRIBUTE10 ,
680                      X_ATTRIBUTE11 ,
681                      X_ATTRIBUTE12 ,
682                      X_ATTRIBUTE13 ,
683                      X_ATTRIBUTE14 ,
684                      X_ATTRIBUTE15 ,
685                      X_OUTSIDE_OPERATION_FLAG ,
686                      X_REQUEST_ID ,
687                      X_RECEIVE_CLOSE_TOLERANCE ,
688                      X_ORDER_TYPE_LOOKUP_CODE ,
689                      X_PURCHASE_BASIS ,       -- <SERVICES FPJ>
690                      X_MATCHING_BASIS ,       -- <SERVICES FPJ>
691                      L_CATEGORY_ID ,
692                      X_UNIT_OF_MEASURE ,
693                      X_UNIT_PRICE ,
694                      X_RECEIVING_FLAG ,
695                      X_INACTIVE_DATE ,
696                      X_ATTRIBUTE_CATEGORY ,
697                      X_ATTRIBUTE1 ,
698                      X_ATTRIBUTE2 ,
699                      X_LINE_TYPE ,
700                      X_DESCRIPTION ,
701                      f_ludate ,
702                      f_luby ,
703                      f_ludate ,
704                      f_luby ,
705                      0 );
706 
707 end LOAD_ROW;
708 
709 end PO_LINE_TYPES_PKG;