DBA Data[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;