191: to_class varchar2(10);
192:
193: x_progress varchar2(3) := NULL;
194:
195: cursor standard_conversions is
196: select t.conversion_rate std_to_rate,
197: t.uom_class std_to_class,
198: f.conversion_rate std_from_rate,
199: f.uom_class std_from_class
207: and nvl(f.disable_date, trunc(sysdate) + 1) > trunc(sysdate)
208: order by t.inventory_item_id desc,
209: f.inventory_item_id desc;
210:
211: std_rec standard_conversions%rowtype;
212:
213: /* Bug# 1834317 - Added the condition where inventory_item_id in
214: (item_id, 0) */
215:
265: **
266: ** 1. The conversion always starts from the conversion defined, if exists,
267: ** for an specified item.
268: ** 2. If the conversion id not defined for that specific item, then the
269: ** standard conversion, which is defined for all items, is used.
270: ** 3. When the conversion involves two different classes, then
271: ** interclass conversion is activated.
272: */
273:
292: * END IF;
293: */
294:
295: /*
296: ** Get item specific or standard conversions
297: */
298: x_progress := '020';
299:
300: open standard_conversions;
296: ** Get item specific or standard conversions
297: */
298: x_progress := '020';
299:
300: open standard_conversions;
301:
302: std_index := 0;
303:
304: loop
304: loop
305:
306: x_progress := '030';
307:
308: fetch standard_conversions into std_rec;
309: exit when standard_conversions%notfound;
310:
311: std_index := std_index + 1;
312:
305:
306: x_progress := '030';
307:
308: fetch standard_conversions into std_rec;
309: exit when standard_conversions%notfound;
310:
311: std_index := std_index + 1;
312:
313: from_rate_tab(std_index) := std_rec.std_from_rate;
316: to_class_tab(std_index) := std_rec.std_to_class;
317:
318: end loop;
319:
320: close standard_conversions;
321:
322: /*
323: **
324: */
329: /*
330: ** No conversions defined
331: */
332:
333: msgbuf := msgbuf||'Invalid standard conversion : ';
334: msgbuf := msgbuf||'From unit: '||from_unit||' ';
335: msgbuf := msgbuf||'To unit: '||to_unit||' ';
336: raise invalid_conversion;
337:
478:
479:
480: /*
481: ** conversion rates are defaulted to '1' at the start of the procedure
482: ** so seperate calculations are not required for standard/interclass
483: ** conversions
484: */
485: x_progress := '090';
486:
663: from_class varchar2(10);
664: to_class varchar2(10);
665:
666:
667: cursor standard_conversions is
668: select t.conversion_rate std_to_rate,
669: t.uom_class std_to_class,
670: f.conversion_rate std_from_rate,
671: f.uom_class std_from_class
679: and nvl(f.disable_date, trunc(sysdate) + 1) > trunc(sysdate)
680: order by t.inventory_item_id desc,
681: f.inventory_item_id desc;
682:
683: std_rec standard_conversions%rowtype;
684:
685:
686: cursor interclass_conversions is
687: select decode(to_uom_class, to_class, 1, 2) to_flag,
729: **
730: ** 1. The conversion always starts from the conversion defined, if exists,
731: ** for an specified item.
732: ** 2. If the conversion id not defined for that specific item, then the
733: ** standard conversion, which is defined for all items, is used.
734: ** 3. When the conversion involves two different classes, then
735: ** interclass conversion is activated.
736: */
737:
749: end if;
750:
751:
752: /*
753: ** Get item specific or standard conversions
754: */
755:
756: open standard_conversions;
757:
752: /*
753: ** Get item specific or standard conversions
754: */
755:
756: open standard_conversions;
757:
758: std_index := 0;
759:
760: loop
758: std_index := 0;
759:
760: loop
761:
762: fetch standard_conversions into std_rec;
763: exit when standard_conversions%notfound;
764:
765: std_index := std_index + 1;
766:
759:
760: loop
761:
762: fetch standard_conversions into std_rec;
763: exit when standard_conversions%notfound;
764:
765: std_index := std_index + 1;
766:
767: from_rate_tab(std_index) := std_rec.std_from_rate;
770: to_class_tab(std_index) := std_rec.std_to_class;
771:
772: end loop;
773:
774: close standard_conversions;
775:
776: /*
777: **
778: */
782: /*
783: ** No conversions defined
784: */
785:
786: msgbuf := msgbuf||'Invalid standard conversion : ';
787: msgbuf := msgbuf||'From unit: '||from_unit||' ';
788: msgbuf := msgbuf||'To unit: '||to_unit||' ';
789: return -999 ;
790:
885:
886:
887: /*
888: ** conversion rates are defaulted to '1' at the start of the procedure
889: ** so seperate calculations are not required for standard/interclass
890: ** conversions
891: */
892:
893: uom_rate := (from_rate * interclass_rate) / to_rate;