[Home] [Help]
PACKAGE BODY: APPS.IGW_PROP_RATES_PVT
Source
1 PACKAGE BODY IGW_PROP_RATES_PVT AS
2 -- $Header: igwvprtb.pls 115.5 2002/11/15 00:44:31 ashkumar ship $
3
4 procedure PROCESS_PROP_RATES
5 (p_init_msg_list IN VARCHAR2 := FND_API.G_TRUE
6 ,p_commit IN VARCHAR2 := FND_API.G_FALSE
7 ,p_validate_only IN VARCHAR2 := FND_API.G_TRUE
8 ,p_proposal_id NUMBER
9 ,p_version_id NUMBER
10 ,p_rate_class_id NUMBER
11 ,p_rate_type_id NUMBER
12 ,p_fiscal_year NUMBER
13 ,p_location_code VARCHAR2
14 ,p_activity_type_code VARCHAR2
15 ,p_start_date DATE
16 ,p_applicable_rate NUMBER
17 ,p_institute_rate NUMBER
18 ,p_rowid IN OUT NOCOPY ROWID
19 ,p_record_version_number NUMBER
20 ,x_return_status OUT NOCOPY VARCHAR2
21 ,x_msg_count OUT NOCOPY NUMBER
22 ,x_msg_data OUT NOCOPY VARCHAR2) IS
23
24 cursor c_rates is
25 select rowid
26 from igw_prop_rates
27 where proposal_id = p_proposal_id
28 and version_id = p_version_id
29 and rate_class_id = p_rate_class_id
30 and rate_type_id = p_rate_type_id
31 and location_code = p_location_code
32 and activity_type_code = p_activity_type_code
33 and fiscal_year = p_fiscal_year;
34
35 l_api_name VARCHAR2(30) := 'PROCESS_PROP_RATES';
36 l_return_status VARCHAR2(1);
37 l_msg_count NUMBER;
38 l_data VARCHAR2(250);
39 l_msg_index_out NUMBER;
40
41 BEGIN
42 IF p_commit = FND_API.G_TRUE THEN
43 SAVEPOINT process_prop_rates;
44 END IF;
45
46 if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
47 fnd_msg_pub.initialize;
48 end if;
49
50 x_return_status := 'S';
51 if (NOT FND_API.TO_BOOLEAN (p_validate_only)) then
52 open c_rates;
53 fetch c_rates into p_rowid;
54 if (c_rates%notfound) then
55 igw_prop_rates_tbh.insert_row(
56 p_proposal_id => p_proposal_id
57 ,p_version_id => p_version_id
58 ,p_rate_class_id => p_rate_class_id
59 ,p_rate_type_id => p_rate_type_id
60 ,p_fiscal_year => to_char(p_fiscal_year)
61 ,p_location_code => p_location_code
62 ,p_activity_type_code => p_activity_type_code
63 ,p_start_date => p_start_date
64 ,p_applicable_rate => p_applicable_rate
65 ,p_institute_rate => p_institute_rate
66 ,x_rowid => p_rowid
67 ,x_return_status => l_return_status);
68
69 x_return_status := l_return_status;
70 else
71 igw_prop_rates_tbh.update_row(
72 p_proposal_id => p_proposal_id
73 ,p_version_id => p_version_id
74 ,p_rate_class_id => p_rate_class_id
75 ,p_rate_type_id => p_rate_type_id
76 ,p_fiscal_year => to_char(p_fiscal_year)
77 ,p_location_code => p_location_code
78 ,p_activity_type_code => p_activity_type_code
79 ,p_start_date => p_start_date
80 ,p_applicable_rate => p_applicable_rate
81 ,p_institute_rate => p_institute_rate
82 ,p_rowid => p_rowid
83 ,p_record_version_number =>p_record_version_number
84 ,x_return_status => l_return_status);
85 end if;
86 close c_rates;
87
88 IGW_BUDGET_OPERATIONS.recalculate_budget (
89 p_proposal_id => p_proposal_id
90 ,p_version_id => p_version_id
91 ,x_return_status => l_return_status
92 ,x_msg_data => x_msg_data
93 ,x_msg_count => x_msg_count);
94
95 x_return_status := l_return_status;
96 end if; -- p_validate_only = 'Y'
97
98 l_msg_count := FND_MSG_PUB.count_msg;
99 If l_msg_count > 0 THEN
100 x_msg_count := l_msg_count;
101 If l_msg_count = 1 THEN
102 fnd_msg_pub.get
103 (p_encoded => FND_API.G_TRUE ,
104 p_msg_index => 1,
105 p_data => l_data,
106 p_msg_index_out => l_msg_index_out );
107
108 x_msg_data := l_data;
109 End if;
110 RAISE FND_API.G_EXC_ERROR;
111 End if;
112
113 x_return_status := FND_API.G_RET_STS_SUCCESS;
114
115 EXCEPTION WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
116 IF p_commit = FND_API.G_TRUE THEN
117 ROLLBACK TO process_prop_rates;
118 END IF;
119 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
120 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
121 p_procedure_name => l_api_name,
122 p_error_text => SUBSTRB(SQLERRM,1,240));
123 fnd_msg_pub.count_and_get(p_count => x_msg_count
124 ,p_data => x_msg_data);
125 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
126
127 WHEN FND_API.G_EXC_ERROR THEN
128 IF p_commit = FND_API.G_TRUE THEN
129 ROLLBACK TO process_prop_rates;
130 END IF;
131 x_return_status := 'E';
132
133 WHEN OTHERS THEN
134 IF p_commit = FND_API.G_TRUE THEN
135 ROLLBACK TO process_prop_rates;
136 END IF;
137 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
138 fnd_msg_pub.add_exc_msg(p_pkg_name => G_package_name,
139 p_procedure_name => l_api_name,
140 p_error_text => SUBSTRB(SQLERRM,1,240));
141 fnd_msg_pub.count_and_get(p_count => x_msg_count
142 ,p_data => x_msg_data);
143 RAISE;
144
145
146 END; --Process prop rates
147
148
149 END;