DBA Data[Home] [Help]

PACKAGE BODY: APPS.PSB_WS_LINE_YEAR_I_PVT

Source


1 PACKAGE BODY PSB_WS_LINE_YEAR_I_PVT AS
2 /* $Header: PSBWLYIB.pls 120.3 2005/09/23 08:28:08 shtripat ship $ */
3 
4   G_PKG_NAME CONSTANT VARCHAR2(30):= 'PSB_WS_LINE_YEAR_I_PVT';
5 
6 
7 /*=======================================================================+
8  |                       PROCEDURE Insert_Row                            |
9  +=======================================================================*/
10 
11 -- Bug#4571412.
12 -- Added p_year_name_C1..12 parameters to
13 -- pass Budget Year name to Create_Notes API.
14 
15 PROCEDURE Insert_Row
16 (
17   p_api_version                 IN      NUMBER,
18   p_init_msg_list               IN      VARCHAR2 := FND_API.G_FALSE,
19   p_commit                      IN      VARCHAR2 := FND_API.G_FALSE,
20   p_validation_level            IN      NUMBER   := FND_API.G_VALID_LEVEL_FULL,
21   p_return_status              OUT  NOCOPY      VARCHAR2,
22   p_msg_count                  OUT  NOCOPY      NUMBER,
23   p_msg_data                   OUT  NOCOPY      VARCHAR2,
24   --
25   p_worksheet_id                IN      NUMBER,
26   p_position_line_id            IN      NUMBER,
27   p_element_set_id              IN      NUMBER,
28   p_salary_account_line         IN      VARCHAR2,
29   p_budget_group_id             IN      NUMBER,
30   p_service_package_id          IN      NUMBER,
31   p_flex_code                   IN      NUMBER,
32   p_concatenated_segments       IN      VARCHAR2,
33   p_currency_code               IN      VARCHAR2,
34   --
35   p_note                        IN      VARCHAR2,
36   p_column_count                IN      NUMBER,
37   --
38   p_year_id_C1                  IN      NUMBER,
39   p_year_name_C1                IN      VARCHAR2,
40   p_ytd_amount_C1               IN      NUMBER,
41   p_year_id_C2                  IN      NUMBER,
42   p_year_name_C2                IN      VARCHAR2,
43   p_ytd_amount_C2               IN      NUMBER,
44   p_year_id_C3                  IN      NUMBER,
45   p_year_name_C3                IN      VARCHAR2,
46   p_ytd_amount_C3               IN      NUMBER,
47   p_year_id_C4                  IN      NUMBER,
48   p_year_name_C4                IN      VARCHAR2,
49   p_ytd_amount_C4               IN      NUMBER,
50   p_year_id_C5                  IN      NUMBER,
51   p_year_name_C5                IN      VARCHAR2,
52   p_ytd_amount_C5               IN      NUMBER,
53   p_year_id_C6                  IN      NUMBER,
54   p_year_name_C6                IN      VARCHAR2,
55   p_ytd_amount_C6               IN      NUMBER,
56   p_year_id_C7                  IN      NUMBER,
57   p_year_name_C7                IN      VARCHAR2,
58   p_ytd_amount_C7               IN      NUMBER,
59   p_year_id_C8                  IN      NUMBER,
60   p_year_name_C8                IN      VARCHAR2,
61   p_ytd_amount_C8               IN      NUMBER,
62   p_year_id_C9                  IN      NUMBER,
63   p_year_name_C9                IN      VARCHAR2,
64   p_ytd_amount_C9               IN      NUMBER,
65   p_year_id_C10                 IN      NUMBER,
66   p_year_name_C10               IN      VARCHAR2,
67   p_ytd_amount_C10              IN      NUMBER,
68   p_year_id_C11                 IN      NUMBER,
69   p_year_name_C11               IN      VARCHAR2,
70   p_ytd_amount_C11              IN      NUMBER,
71   p_year_id_C12                 IN      NUMBER,
72   p_year_name_C12               IN      VARCHAR2,
73   p_ytd_amount_C12              IN      NUMBER
74 )
75 IS
76   --
77   l_api_name            CONSTANT VARCHAR2(30)   := 'Insert_Row';
78   l_api_version         CONSTANT NUMBER         :=  1.0;
79   --
80   l_return_status VARCHAR2(1);
81   --
82   l_period_amount       PSB_WS_ACCT1.g_prdamt_tbl_type;
83   l_index               BINARY_INTEGER;
84   --
85   l_budget_year_id      NUMBER;
86   l_ytd_amount          NUMBER;
87   l_account_line_id     NUMBER;
88   l_create_zero_bal     VARCHAR2(10);
89 
90   l_budget_year_name    VARCHAR2(100);
91 
92 BEGIN
93   --
94   SAVEPOINT Insert_Row_Pvt ;
95   --
96   IF NOT FND_API.Compatible_API_Call ( l_api_version,
97 				       p_api_version,
98 				       l_api_name,
99 				       G_PKG_NAME )
100   THEN
101     RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
102   END IF;
103 
104   --
105 
106   IF FND_API.to_Boolean ( p_init_msg_list ) THEN
107     FND_MSG_PUB.initialize ;
108   END IF;
109   --
110   p_return_status := FND_API.G_RET_STS_SUCCESS ;
111 
112 
113 
114   -- Initialize the table
115   FOR l_index in 1..PSB_WS_ACCT1.G_MAX_NUM_AMOUNTS LOOP
116      l_period_amount(l_index) := NULL;
117   END LOOP;
118 
119   --
120   -- process only for displayed columns
121 
122   -- Bug#4571412.
123   -- Get budget year name.
124   FOR i in 1..p_column_count LOOP
125 
126     IF i = 1 THEN
127       l_budget_year_id   :=   p_year_id_C1;
128       l_budget_year_name := p_year_name_C1;
129       l_ytd_amount       :=   p_ytd_amount_C1;
130     ELSIF i =2 THEN
131       l_budget_year_id   :=   p_year_id_C2;
132       l_budget_year_name := p_year_name_C2;
133       l_ytd_amount       :=   p_ytd_amount_C2;
134     ELSIF i =3 THEN
135       l_budget_year_id   :=   p_year_id_C3;
136       l_budget_year_name := p_year_name_C3;
137       l_ytd_amount       :=   p_ytd_amount_C3;
138     ELSIF i =4 THEN
139       l_budget_year_id   :=   p_year_id_C4;
140       l_budget_year_name := p_year_name_C4;
141       l_ytd_amount       :=   p_ytd_amount_C4;
142     ELSIF i =5 THEN
143       l_budget_year_id   :=   p_year_id_C5;
144       l_budget_year_name := p_year_name_C5;
145       l_ytd_amount       :=   p_ytd_amount_C5;
146     ELSIF i =6 THEN
147       l_budget_year_id   :=   p_year_id_C6;
148       l_budget_year_name := p_year_name_C6;
149       l_ytd_amount       :=   p_ytd_amount_C6;
150     ELSIF i =7 THEN
151       l_budget_year_id   :=   p_year_id_C7;
152       l_budget_year_name := p_year_name_C7;
153       l_ytd_amount       :=   p_ytd_amount_C7;
154     ELSIF i =8 THEN
155       l_budget_year_id   :=   p_year_id_C8;
156       l_budget_year_name := p_year_name_C8;
157       l_ytd_amount       :=   p_ytd_amount_C8;
158     ELSIF i =9 THEN
159       l_budget_year_id   :=   p_year_id_C9;
160       l_budget_year_name := p_year_name_C9;
161       l_ytd_amount       :=   p_ytd_amount_C9;
162     ELSIF i =10 THEN
163       l_budget_year_id   :=   p_year_id_C10;
164       l_budget_year_name := p_year_name_C10;
165       l_ytd_amount       :=   p_ytd_amount_C10;
166     ELSIF i =11 THEN
167       l_budget_year_id   :=   p_year_id_C11;
168       l_budget_year_name := p_year_name_C11;
169       l_ytd_amount       :=   p_ytd_amount_C11;
170     ELSIF i =12 THEN
171       l_budget_year_id   :=   p_year_id_C12;
172       l_budget_year_name := p_year_name_C12;
173       l_ytd_amount       :=   p_ytd_amount_C12;
174     END IF;
175 
176 
177     -- amount types can be B-Budget, A-Actuals, E- Estimate, F -FTE
178     -- Create new rows only for current and proposed years
179     -- and only when amount type is not FTE
180 
181     /* Bug 3246927 Start */
182 
183         IF i = p_column_count THEN
184 		l_ytd_amount := NVL(l_ytd_amount,0);
185     	END IF;
186 
187     IF (l_ytd_amount IS NOT NULL) then
188     -- IF (nvl(l_ytd_amount,0) <> 0) then
189 
190     /* Bug 3246927 End */
191 
192       IF  p_position_line_id IS NULL THEN
193 
194 	PSB_WS_ACCT_PVT.Create_Account_Dist
195 	(
196 	  p_api_version                 => 1.0,
197 	  p_init_msg_list               => FND_API.G_FALSE,
198 	  p_commit                      => FND_API.G_FALSE,
199 	  p_validation_level            => FND_API.G_VALID_LEVEL_FULL,
200 	  p_return_status               => l_return_status,
201 	  p_msg_count                   => p_msg_count,
202 	  p_msg_data                    => p_msg_data,
203 	  --
204 	  p_account_line_id             => l_account_line_id,
205 	  p_worksheet_id                => p_worksheet_id,
206 	  p_map_accounts                => TRUE,
207 	  p_budget_year_id              => l_budget_year_id,
208 	  p_budget_group_id             => p_budget_group_id,
209 	  p_flex_code                   => p_flex_code,
210 	  p_concatenated_segments       => p_concatenated_segments,
211 	  p_currency_code               => p_currency_code,
212 	  p_balance_type                => 'E',  -- Always Estimate
213 	  p_ytd_amount                  => l_ytd_amount,
214 	  p_distribute_flag             => FND_API.G_TRUE,
215 	  p_period_amount               => l_period_amount,
216 	  p_service_package_id          => p_service_package_id
217 	);
218 
219 /* Bug No 1584464 Start */
220 ---- Create Note Id and Inserts a record in PSB_WS_ACCOUNT_LINE_NOTES table
221 
222 	if p_note is not null then
223           -- Bug#4571412
224           -- Adding parameters to the call to make it sync
225           -- with it's definiiton.
226 	  PSB_WS_ACCT1.Create_Note
227 	  (p_return_status         => l_return_status,
228 	   p_account_line_id       => l_account_line_id,
229 	   p_note                  => p_note,
230            p_chart_of_accounts_id  => NULL,
231            p_budget_year           => l_budget_year_name,
232            p_cc_id                 => NULL,
233            p_concatenated_segments => p_concatenated_segments
234           );
235 	end if;
236 
237 ----
238 /* Bug No 1584464 End */
239 
240       ELSE
241 	PSB_WS_ACCT_PVT.Create_Account_Dist
242 	(
243 	  p_api_version                 => 1.0,
244 	  p_init_msg_list               => FND_API.G_FALSE,
245 	  p_commit                      => FND_API.G_FALSE,
246 	  p_validation_level            => FND_API.G_VALID_LEVEL_FULL,
247 	  p_return_status               => l_return_status,
248 	  p_msg_count                   => p_msg_count,
249 	  p_msg_data                    => p_msg_data,
250 	  --
251 	  p_account_line_id             => l_account_line_id,
252 	  p_worksheet_id                => p_worksheet_id,
253 	  p_map_accounts                => TRUE,
254 	  p_budget_year_id              => l_budget_year_id,
255 	  p_budget_group_id             => p_budget_group_id,
256 	  p_flex_code                   => p_flex_code,
257 	  p_concatenated_segments       => p_concatenated_segments,
258 	  p_currency_code               => p_currency_code,
259 	  p_balance_type                => 'E',  -- Always Estimate
260 	  p_ytd_amount                  => l_ytd_amount,
261 	  p_distribute_flag             => FND_API.G_TRUE,
262 	  p_period_amount               => l_period_amount,
263 	  p_position_line_id          => p_position_line_id,
264 	  p_element_set_id            => p_element_set_id,
265 	  p_salary_account_line         => p_salary_account_line,
266 	  p_service_package_id          => p_service_package_id
267 	);
268       END IF;
269       --
270       IF    l_return_status = FND_API.G_RET_STS_ERROR THEN
271 	fnd_message.set_name('PSB', 'WS_CREATE_DIST_FAILED_EXC');
272 	RAISE FND_API.G_EXC_ERROR ;
273       ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
274 	fnd_message.set_name('PSB', 'WS_CREATE_DIST_FAILED_UNEXC');
275 	RAISE FND_API.G_EXC_UNEXPECTED_ERROR ;
276       END IF;
277 
278 
279     END IF;
280 
281 
282 
283   END LOOP;
284   --
285   IF FND_API.To_Boolean ( p_commit ) THEN
286     COMMIT WORK;
287   END iF;
288   --
289   FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
290 			      p_data  => p_msg_data );
291   --
292 EXCEPTION
293   --
294   WHEN FND_API.G_EXC_ERROR THEN
295     --
296     ROLLBACK TO Insert_Row_Pvt ;
297     p_return_status := FND_API.G_RET_STS_ERROR;
298     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
299 				p_data  => p_msg_data );
300   --
301   WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
302     --
303     ROLLBACK TO Insert_Row_Pvt ;
304     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
305     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
306 				p_data  => p_msg_data );
307   --
308   WHEN OTHERS THEN
309     --
310     ROLLBACK TO Insert_Row_Pvt ;
311     p_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
312     --
313     IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
314       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME,
315 				l_api_name);
316     END if;
317     --
318     FND_MSG_PUB.Count_And_Get ( p_count => p_msg_count,
319 				p_data  => p_msg_data );
320      --
321 END Insert_Row;
322 /*-------------------------------------------------------------------------*/
323 
324 END PSB_WS_LINE_YEAR_I_PVT;