1 PACKAGE BODY PO_ASL_UPGRADE_SV3 AS
2 /* $Header: POXA3LUB.pls 115.2 2002/11/27 02:08:51 sbull ship $*/
3
4 /*===========================================================================
5
6 PROCEDURE NAME: get_split_multiplier
7
8 ===========================================================================*/
9
10 PROCEDURE get_split_multiplier(
11 x_autosource_rule_id IN NUMBER,
12 x_split_multiplier IN OUT NOCOPY NUMBER,
13 x_add_percent IN OUT NOCOPY VARCHAR2
14 ) IS
15 x_total_allocation NUMBER;
16 x_progress VARCHAR2(30) := '';
17 BEGIN
18
19 -- Determine total allocation percentage for this autosource rule.
20 -- If total allocation percent is not 0 or 100, we need to scale up
21 -- the percentages to sum up to 100.
22
23 BEGIN
24
25 x_progress := '010';
26 SELECT nvl(sum(split), 0)
27 INTO x_total_allocation
28 FROM PO_AUTOSOURCE_VENDORS
29 WHERE autosource_rule_id = x_autosource_rule_id;
30
31 EXCEPTION
32 WHEN NO_DATA_FOUND THEN
33 x_total_allocation := 0;
34 END;
35
36 IF x_total_allocation NOT IN (0, 100) THEN
37 x_split_multiplier := 100/x_total_allocation;
38
39 -- If still do not add up to 100% after scaling, we
40 -- need to add an extra percent to the split for the
41 -- top ranked vendor.
42
43 x_progress := '020';
44 SELECT sum(round(split*(100/x_total_allocation)))
45 INTO x_total_allocation
46 FROM po_autosource_vendors
47 WHERE autosource_rule_id = x_autosource_rule_id;
48
49 IF x_total_allocation < 100 THEN
50 x_add_percent := 'Y';
51 ELSE
52 x_add_percent := 'N';
53 END IF;
54
55 ELSE
56 x_split_multiplier := 1;
57 END IF;
58
59 EXCEPTION
60 WHEN OTHERS THEN
61 fnd_file.put_line(fnd_file.log, '** Exception in get_split_multiplier');
62 fnd_file.put_line(fnd_file.log, 'x_progress = '||x_progress);
63 PO_MESSAGE_S.SQL_ERROR('GET_SPLIT_MULTIPLIER', x_progress, sqlcode);
64 END;
65
66 END PO_ASL_UPGRADE_SV3;