DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_BILLING_SCHEDULE_PUB

Source


1 PACKAGE BODY PA_BILLING_SCHEDULE_PUB AS
2 /* $Header: PABLINPB.pls 120.3 2005/08/19 16:16:18 mwasowic noship $ */
3 
4    G_PKG_NAME       VARCHAR2(30) := 'PA_BILLING_SCHEDULE_PUB';
5 
6 -- API name                      : Update_Project_Task_Bill_Info
7 -- Type                          : Public procedure
8 -- Pre-reqs                      : None
9 -- Return Value                  : N/A
10 -- Prameters
11 -- p_api_version	       	 IN	 NUMBER     REQUIRED   DEFAULT=1.0
12 -- p_init_msg_list	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
13 -- p_commit	         	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_FALSE
14 -- p_validate_only	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
15 -- p_validation_level	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_VALID_LEVEL_FULL
16 -- p_calling_module	 	 IN 	 VARCHAR2   OPTIONAL   DEFAULT='SELF_SERVICE'
17 -- p_debug_mode	         	 IN	 VARCHAR2   OPTIONAL   DEFAULT='N'
18 -- p_max_msg_count	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
19 -- p_project_id	         	 IN	 NUMBER     REQUIRED
20 -- p_task_id	         	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
21 -- p_lbr_schedule_type	 	 IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
22 -- p_non_lbr_schedule_type	 IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
23 -- p_emp_bill_rate_sch_name	 IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
24 -- p_emp_bill_rate_sch_id 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
25 -- p_job_bill_rate_sch_name	 IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
26 -- p_job_bill_rate_sch_id   	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
27 -- p_lbr_sch_fxd_date	 	 IN	 DATE       OPTIONAL   DEFAULT=FND_API.G_MISS_DATE
28 -- p_lbr_sch_discount	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
29 -- p_rev_schedule	         IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
30 -- p_rev_schedule_id	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
31 -- p_inv_schedule	       	 IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
32 -- p_inv_schedule_id	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
33 -- p_rev_ind_sch_fxd_date	 IN	 DATE       OPTIONAL   DEFAULT=FND_API.G_MISS_DATE
34 -- p_inv_ind_sch_fxd_date 	 IN	 DATE       OPTIONAL   DEFAULT=FND_API.G_MISS_DATE
35 -- p_nlbr_bill_rate_org	 	 IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
36 -- p_nlbr_bill_rate_org_id	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
37 -- p_nlbr_std_bill_rate_sch	 IN	 VARCHAR2   OPTIONAL   DEFAULT=FND_API.G_MISS_CHAR
38 -- p_nlbr_sch_fxd_date	         IN	 DATE       OPTIONAL   DEFAULT=FND_API.G_MISS_DATE
39 -- p_nlbr_sch_discount	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
40 -- p_record_version_number	 IN	 NUMBER     REQUIRED   DEFAULT=1
41 -- x_return_status	         OUT 	 VARCHAR2   REQUIRED
42 -- x_msg_count	                 OUT 	 VARCHAR2   REQUIRED
43 -- x_msg_data	                 OUT 	 VARCHAR2   REQUIRED
44 --
45 --  History
46 --
47 --  21-MAY-01   Majid Ansari             -Created
48 --
49 --
50 
51  PROCEDURE  Update_Project_Task_Bill_Info(
52    p_api_version	       	 IN	 NUMBER     DEFAULT 1.0,
53    p_init_msg_list	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
54    p_commit	         	 IN	 VARCHAR2   DEFAULT FND_API.G_FALSE,
55    p_validate_only	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
56    p_validation_level	         IN	 NUMBER     DEFAULT FND_API.G_VALID_LEVEL_FULL,
57    p_calling_module	 	 IN 	 VARCHAR2   DEFAULT 'SELF_SERVICE',
58    p_debug_mode	                 IN	 VARCHAR2   DEFAULT 'N',
59    p_max_msg_count	 	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
60    p_project_id	                 IN	 NUMBER    ,
61    p_task_id	         	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
62    p_lbr_schedule_type	       IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR,
63    p_non_lbr_schedule_type     IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR,
64    p_emp_bill_rate_sch_name    IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR  ,
65    p_emp_bill_rate_sch_id      IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
66    p_job_bill_rate_sch_name    IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR   ,
67    p_job_bill_rate_sch_id      IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
68    p_lbr_sch_fxd_date	       IN	 DATE       DEFAULT FND_API.G_MISS_DATE,
69    p_lbr_sch_discount	       IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
70    p_rev_schedule	       IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR  ,
71    p_rev_schedule_id	       IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
72    p_inv_schedule	         IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR  ,
73    p_inv_schedule_id	 	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
74    p_rev_ind_sch_fxd_date	 IN	 DATE       DEFAULT FND_API.G_MISS_DATE,
75    p_inv_ind_sch_fxd_date 	 IN	 DATE       DEFAULT FND_API.G_MISS_DATE,
76    p_nlbr_bill_rate_org	 	 IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR  ,
77    p_nlbr_bill_rate_org_id	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
78    p_nlbr_std_bill_rate_sch	 IN	 VARCHAR2   DEFAULT FND_API.G_MISS_CHAR  ,
79    p_nlbr_sch_fxd_date	         IN	 DATE       DEFAULT FND_API.G_MISS_DATE,
80    p_nlbr_sch_discount	 	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
81    p_record_version_number	 IN	 NUMBER     DEFAULT 1,
82    x_return_status	         OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
83    x_msg_count	                 OUT 	 NOCOPY VARCHAR2  , --File.Sql.39 bug 4440895
84    x_msg_data	                 OUT 	 NOCOPY VARCHAR2 --File.Sql.39 bug 4440895
85  )  IS
86 
87             --Derive bill_job_group_id from pa_projects_prm_v using project-task id.
88   CURSOR cur_job_group IS
89          SELECT bill_job_group_id
90            FROM pa_projects_prm_v
91           WHERE project_id = p_project_id;
92           --AND task_id = decode( p_task_id, FND_API.G_MISS_NUM, p_task_id );
93 
94   l_api_name                CONSTANT VARCHAR(30) := 'Update_Project_Task_Bill_Info';
95   l_api_version             CONSTANT NUMBER      := 1.0;
96 
97   l_return_status                    VARCHAR2(1);
98   l_error_msg_code                   VARCHAR2(250);
99   l_msg_data                   VARCHAR2(250);
100   l_dummy_char                       VARCHAR2(1);
101   l_msg_count                        NUMBER;
102   l_data                             VARCHAR2(250);
103   l_msg_index_out                    NUMBER;
104 
105   l_job_group_id                     NUMBER;
106 
107   l_emp_bill_rate_sch_id             NUMBER;
108   l_job_bill_rate_sch_id             NUMBER;
109   l_lbr_sch_fxd_date	             DATE;
110   l_lbr_sch_discount	             NUMBER;
111   l_rev_schedule_id	             NUMBER;
112   l_inv_schedule_id                  NUMBER;
113   l_rev_ind_sch_fxd_date             DATE;
114   l_inv_ind_sch_fxd_date 	       DATE;
115   l_nlbr_bill_rate_org_id	       NUMBER;
116   l_nlbr_std_bill_rate_sch	       VARCHAR2(30);
117   l_nlbr_sch_fxd_date	             DATE;
118   l_nlbr_sch_discount	             NUMBER;
119 
120 BEGIN
121    -- Standard call to check for call compatibility
122 
123    IF (p_debug_mode = 'Y')
124    THEN
125        pa_debug.debug('Update Bill Info PUB : Checking the api version number.');
126    END IF;
127 
128    IF p_commit = FND_API.G_TRUE
129    THEN
130       SAVEPOINT prm_create_project;
131    END IF;
132 
133    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
134                                       p_api_version,
135                                       l_api_name,
136                                       g_pkg_name)
137    THEN
138       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
139    END IF;
140 
141    if (p_debug_mode = 'Y') then
142        pa_debug.debug('Update Bill Info PUB : Initializing message stack.');
143    end if;
144 
145    pa_debug.init_err_stack('PA_BILLING_SCHEDULE_PUB.Update_Project_Task_Bill_Info');
146 
147    if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
148       fnd_msg_pub.initialize;
149    end if;
150 
151    x_return_status := 'S';
152 
153    IF p_validate_only = FND_API.G_TRUE AND p_validation_level > 0
154    THEN
155       IF p_lbr_schedule_type = 'B' AND p_non_lbr_schedule_type= 'B'
156       THEN
157 
158          l_rev_schedule_id := null;
159          l_inv_schedule_id := null;
160          l_rev_ind_sch_fxd_date := null;
161          l_inv_ind_sch_fxd_date := null;
162 
163          l_nlbr_bill_rate_org_id := p_nlbr_bill_rate_org_id;
164          l_nlbr_std_bill_rate_sch := p_nlbr_std_bill_rate_sch;
165          l_nlbr_sch_fxd_date := p_nlbr_sch_fxd_date;
166          l_nlbr_sch_discount := p_nlbr_sch_discount;
167 
168          l_emp_bill_rate_sch_id := p_emp_bill_rate_sch_id;
169          l_lbr_sch_fxd_date := p_lbr_sch_fxd_date;
170          l_lbr_sch_discount := p_lbr_sch_discount;
171          l_job_bill_rate_sch_id := p_job_bill_rate_sch_id;
172 
173          --validating organization
174          IF ( p_nlbr_bill_rate_org_id IS NOT NULL AND p_nlbr_bill_rate_org_id <> FND_API.G_MISS_NUM ) OR
175             ( p_nlbr_bill_rate_org IS NOT NULL AND p_nlbr_bill_rate_org <> FND_API.G_MISS_CHAR )
176          THEN
177             if (p_debug_mode = 'Y') then
178                 pa_debug.debug('Update Billing Info PUB : Checking Carrying out organization');
179             end if;
180             PA_BILLING_SCHEDULE_UTILS.NL_org_sch_Name_To_Id
181                ( p_org_id                  => p_nlbr_bill_rate_org_id
182                 ,p_org_name                => p_nlbr_bill_rate_org
183                 ,p_check_id_flag           => 'A'
184                 ,x_org_id                  => l_nlbr_bill_rate_org_id
185                 ,x_return_status           => l_return_status
186                 ,x_error_msg_code          => l_error_msg_code);
187 
188             IF l_return_status = FND_API.G_RET_STS_ERROR
189             THEN
190                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
191                                     p_msg_name       => l_error_msg_code);
192                x_msg_data := l_error_msg_code;
193                x_return_status := 'E';
194             END IF;
195          END IF;
196 
197          --Validating emp-bill rate schedule id
198          IF ( p_emp_bill_rate_sch_id IS NOT NULL AND p_emp_bill_rate_sch_id <> FND_API.G_MISS_NUM ) OR
199             ( p_emp_bill_rate_sch_name IS NOT NULL AND p_emp_bill_rate_sch_name <> FND_API.G_MISS_CHAR )
200          THEN
201             if (p_debug_mode = 'Y') then
202                 pa_debug.debug('Update Billing Info PUB : Checking Emp bill rate schedule id');
203             end if;
204             PA_BILLING_SCHEDULE_UTILS.Emp_bill_rate_sch_name_To_Id
205                ( p_emp_bill_rate_id        => p_emp_bill_rate_sch_id
206                 ,p_emp_bill_rate_name      => p_emp_bill_rate_sch_name
207                 ,p_check_id_flag           => 'A'
208                 ,x_emp_bill_rate_id        => l_emp_bill_rate_sch_id
209                 ,x_return_status           => l_return_status
210                 ,x_error_msg_code          => l_error_msg_code);
211 
212             IF l_return_status = FND_API.G_RET_STS_ERROR
213             THEN
214                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
215                                     p_msg_name       => l_error_msg_code);
216                x_msg_data := l_error_msg_code;
217                x_return_status := 'E';
218             END IF;
219          END IF;
220 
221 
222          --Validating job-bill rate schedule id
223          IF ( p_job_bill_rate_sch_id IS NOT NULL AND p_job_bill_rate_sch_id <> FND_API.G_MISS_NUM ) OR
224             ( p_job_bill_rate_sch_name IS NOT NULL AND p_job_bill_rate_sch_name <> FND_API.G_MISS_CHAR )
225          THEN
226             if (p_debug_mode = 'Y') then
227                 pa_debug.debug('Update Billing Info PUB : Checking Job bill rate schedule id');
228             end if;
229 
230 /*            --Derive bill_job_group_id from pa_projects_prm_v using project-task id.
231             SELECT bill_job_group_id
232                             INTO l_job_group_id
233               FROM pa_projects_prm_v
234              WHERE project_id = p_project_id;
235                --AND task_id = decode( p_task_id, FND_API.G_MISS_NUM, p_task_id );*/
236 
237              l_job_group_id := PA_BILLING_SCHEDULE_UTILS.Get_Job_Group_Id(
238                                               p_project_id,
239                                               l_return_status );
240 
241             PA_BILLING_SCHEDULE_UTILS.Job_bill_rate_sch_name_To_Id
242                ( p_job_bill_rate_id        => p_job_bill_rate_sch_id
243                 ,p_job_bill_rate_name      => p_job_bill_rate_sch_name
244                 ,p_job_group_id            => l_job_group_id
245                 ,p_check_id_flag           => 'A'
246                 ,x_job_bill_rate_id        => l_job_bill_rate_sch_id
247                 ,x_return_status           => l_return_status
248                 ,x_error_msg_code          => l_error_msg_code);
249 
250             IF l_return_status = FND_API.G_RET_STS_ERROR
251             THEN
252                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
253                                     p_msg_name       => l_error_msg_code);
254                x_msg_data := l_error_msg_code;
255                x_return_status := 'E';
256             END IF;
257          END IF;
258 
259          --Validating Schedule
260          IF ( p_nlbr_std_bill_rate_sch IS NOT NULL AND p_nlbr_std_bill_rate_sch <> FND_API.G_MISS_CHAR )
261          THEN
262             if (p_debug_mode = 'Y') then
263                 pa_debug.debug('Update Billing Info PUB : Checking  schedule ');
264             end if;
265             PA_BILLING_SCHEDULE_UTILS.Nlbr_schedule_name_To_Id
266                ( p_sch_name                => p_nlbr_std_bill_rate_sch
267                 ,p_nlbr_org_id             => l_nlbr_bill_rate_org_id
268                 ,p_check_id_flag           => 'A'
269                 ,x_sch_name                => l_nlbr_std_bill_rate_sch
270                 ,x_return_status           => l_return_status
271                 ,x_error_msg_code          => l_error_msg_code);
272 
273             IF l_return_status = FND_API.G_RET_STS_ERROR
274             THEN
275                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
276                                     p_msg_name       => l_error_msg_code);
277                x_msg_data := l_error_msg_code;
278                x_return_status := 'E';
279             END IF;
280          END IF;
281       ELSIF p_lbr_schedule_type = 'B' AND p_non_lbr_schedule_type= 'I'
282       THEN
283          l_nlbr_bill_rate_org_id := null;
284          l_nlbr_std_bill_rate_sch := null;
285          l_nlbr_sch_fxd_date := null;
286          l_nlbr_sch_discount := null;
287 
288          l_rev_schedule_id := p_rev_schedule_id;
289          l_inv_schedule_id := p_inv_schedule_id;
290          l_rev_ind_sch_fxd_date := p_rev_ind_sch_fxd_date;
291          l_inv_ind_sch_fxd_date := p_inv_ind_sch_fxd_date;
292 
293 
294          l_emp_bill_rate_sch_id := p_emp_bill_rate_sch_id;
295          l_lbr_sch_fxd_date := p_lbr_sch_fxd_date;
296          l_lbr_sch_discount := p_lbr_sch_discount;
297          l_job_bill_rate_sch_id := p_job_bill_rate_sch_id;
298 
299 
300          --Validating emp-bill rate schedule id
301          IF ( p_emp_bill_rate_sch_id IS NOT NULL AND p_emp_bill_rate_sch_id <> FND_API.G_MISS_NUM ) OR
302             ( p_emp_bill_rate_sch_name IS NOT NULL AND p_emp_bill_rate_sch_name <> FND_API.G_MISS_CHAR )
303          THEN
304             if (p_debug_mode = 'Y') then
305                 pa_debug.debug('Update Billing Info PUB : Checking Emp bill rate schedule id');
306             end if;
307             PA_BILLING_SCHEDULE_UTILS.Emp_bill_rate_sch_name_To_Id
308                ( p_emp_bill_rate_id        => p_emp_bill_rate_sch_id
309                 ,p_emp_bill_rate_name      => p_emp_bill_rate_sch_name
310                 ,p_check_id_flag           => 'A'
311                 ,x_emp_bill_rate_id        => l_emp_bill_rate_sch_id
312                 ,x_return_status           => l_return_status
313                 ,x_error_msg_code          => l_error_msg_code);
314 
315             IF l_return_status = FND_API.G_RET_STS_ERROR
316             THEN
317                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
318                                     p_msg_name       => l_error_msg_code);
319                x_msg_data := l_error_msg_code;
320                x_return_status := 'E';
321             END IF;
322          END IF;
323 
324 
325          --Validating job-bill rate schedule id
326          IF ( p_job_bill_rate_sch_id IS NOT NULL AND p_job_bill_rate_sch_id <> FND_API.G_MISS_NUM ) OR
327             ( p_job_bill_rate_sch_name IS NOT NULL AND p_job_bill_rate_sch_name <> FND_API.G_MISS_CHAR )
328          THEN
329             if (p_debug_mode = 'Y') then
330                 pa_debug.debug('Update Billing Info PUB : Checking Job bill rate schedule id');
331             end if;
332 
333              l_job_group_id := PA_BILLING_SCHEDULE_UTILS.Get_Job_Group_Id(
334                                               p_project_id,
335                                               l_return_status );
336 
337             PA_BILLING_SCHEDULE_UTILS.Job_bill_rate_sch_name_To_Id
338                ( p_job_bill_rate_id        => p_job_bill_rate_sch_id
339                 ,p_job_bill_rate_name      => p_job_bill_rate_sch_name
340                 ,p_job_group_id            => l_job_group_id
341                 ,p_check_id_flag           => 'A'
342                 ,x_job_bill_rate_id        => l_job_bill_rate_sch_id
343                 ,x_return_status           => l_return_status
344                 ,x_error_msg_code          => l_error_msg_code);
345 
346             IF l_return_status = FND_API.G_RET_STS_ERROR
347             THEN
348                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
349                                     p_msg_name       => l_error_msg_code);
350                x_msg_data := l_error_msg_code;
351                x_return_status := 'E';
352             END IF;
353          END IF;
354 
355 
356          --Validating rev schedule id
357          IF ( p_rev_schedule_id IS NOT NULL AND p_rev_schedule_id <> FND_API.G_MISS_NUM ) OR
358             ( p_rev_schedule IS NOT NULL AND p_rev_schedule <> FND_API.G_MISS_CHAR )
359          THEN
360             if (p_debug_mode = 'Y') then
361                 pa_debug.debug('Update Billing Info PUB : Checking Revenue schedule');
362             end if;
363             PA_BILLING_SCHEDULE_UTILS.Rev_Sch_Name_To_Id
364                ( p_rev_sch_id              => p_rev_schedule_id
365                 ,p_rev_sch_name            => p_rev_schedule
366                 ,p_check_id_flag           => 'A'
367                 ,x_rev_sch_id              => l_rev_schedule_id
368                 ,x_return_status           => l_return_status
369                 ,x_error_msg_code          => l_error_msg_code);
370 
371             IF l_return_status = FND_API.G_RET_STS_ERROR
372             THEN
373                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
374                                     p_msg_name       => l_error_msg_code);
375                x_msg_data := l_error_msg_code;
376                x_return_status := 'E';
377             END IF;
378          END IF;
379 
380          --Validating Inv schedule id
381          IF ( p_inv_schedule_id IS NOT NULL AND p_inv_schedule_id <> FND_API.G_MISS_NUM ) OR
382             ( p_inv_schedule IS NOT NULL AND p_inv_schedule <> FND_API.G_MISS_CHAR )
383          THEN
384             if (p_debug_mode = 'Y') then
385                 pa_debug.debug('Update Billing Info PUB : Checking Invoice schedule');
386             end if;
387             PA_BILLING_SCHEDULE_UTILS.Inv_Sch_Name_To_Id
388                ( p_inv_sch_id              => p_inv_schedule_id
389                 ,p_inv_sch_name            => p_inv_schedule
390                 ,p_check_id_flag           => 'A'
391                 ,x_inv_sch_id              => l_inv_schedule_id
392                 ,x_return_status           => l_return_status
393                 ,x_error_msg_code          => l_error_msg_code);
394 
395             IF l_return_status = FND_API.G_RET_STS_ERROR
396             THEN
397                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
398                                     p_msg_name       => l_error_msg_code);
399                x_msg_data := l_error_msg_code;
400                x_return_status := 'E';
401             END IF;
402          END IF;
403       ELSIF p_lbr_schedule_type = 'I' AND p_non_lbr_schedule_type= 'B'
404       THEN
405          l_nlbr_bill_rate_org_id := p_nlbr_bill_rate_org_id;
406          l_nlbr_std_bill_rate_sch := p_nlbr_std_bill_rate_sch;
407          l_nlbr_sch_fxd_date := p_nlbr_sch_fxd_date;
408          l_nlbr_sch_discount := p_nlbr_sch_discount;
409 
410          l_rev_schedule_id := p_rev_schedule_id;
411          l_inv_schedule_id := p_inv_schedule_id;
412          l_rev_ind_sch_fxd_date := p_rev_ind_sch_fxd_date;
413          l_inv_ind_sch_fxd_date := p_inv_ind_sch_fxd_date;
414 
415 
416          l_emp_bill_rate_sch_id := null;
417          l_lbr_sch_fxd_date := null;
418          l_lbr_sch_discount := null;
419          l_job_bill_rate_sch_id := null;
420 
421          --Validating rev schedule id
422          IF ( p_rev_schedule_id IS NOT NULL AND p_rev_schedule_id <> FND_API.G_MISS_NUM ) OR
423             ( p_rev_schedule IS NOT NULL AND p_rev_schedule <> FND_API.G_MISS_CHAR )
424          THEN
425             if (p_debug_mode = 'Y') then
426                 pa_debug.debug('Update Billing Info PUB : Checking Revenue schedule');
427             end if;
428             PA_BILLING_SCHEDULE_UTILS.Rev_Sch_Name_To_Id
429                ( p_rev_sch_id              => p_rev_schedule_id
430                 ,p_rev_sch_name            => p_rev_schedule
431                 ,p_check_id_flag           => 'A'
432                 ,x_rev_sch_id              => l_rev_schedule_id
433                 ,x_return_status           => l_return_status
434                 ,x_error_msg_code          => l_error_msg_code);
435 
436             IF l_return_status = FND_API.G_RET_STS_ERROR
437             THEN
438                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
439                                     p_msg_name       => l_error_msg_code);
440                x_msg_data := l_error_msg_code;
441                x_return_status := 'E';
442             END IF;
443          END IF;
444 
445          --Validating Inv schedule id
446          IF ( p_inv_schedule_id IS NOT NULL AND p_inv_schedule_id <> FND_API.G_MISS_NUM ) OR
447             ( p_inv_schedule IS NOT NULL AND p_inv_schedule <> FND_API.G_MISS_CHAR )
448          THEN
449             if (p_debug_mode = 'Y') then
450                 pa_debug.debug('Update Billing Info PUB : Checking Invoice schedule');
451             end if;
452             PA_BILLING_SCHEDULE_UTILS.Inv_Sch_Name_To_Id
453                ( p_inv_sch_id              => p_inv_schedule_id
454                 ,p_inv_sch_name            => p_inv_schedule
455                 ,p_check_id_flag           => 'A'
459 
456                 ,x_inv_sch_id              => l_inv_schedule_id
457                 ,x_return_status           => l_return_status
458                 ,x_error_msg_code          => l_error_msg_code);
460             IF l_return_status = FND_API.G_RET_STS_ERROR
461             THEN
462                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
463                                     p_msg_name       => l_error_msg_code);
464                x_msg_data := l_error_msg_code;
465                x_return_status := 'E';
466             END IF;
467          END IF;
468 
469          --validating organization
470          IF ( p_nlbr_bill_rate_org_id IS NOT NULL AND p_nlbr_bill_rate_org_id <> FND_API.G_MISS_NUM ) OR
471             ( p_nlbr_bill_rate_org IS NOT NULL AND p_nlbr_bill_rate_org <> FND_API.G_MISS_CHAR )
472          THEN
473             if (p_debug_mode = 'Y') then
474                 pa_debug.debug('Update Billing Info PUB : Checking Carrying out organization');
475             end if;
476             PA_BILLING_SCHEDULE_UTILS.NL_org_sch_Name_To_Id
477                ( p_org_id                  => p_nlbr_bill_rate_org_id
478                 ,p_org_name                => p_nlbr_bill_rate_org
479                 ,p_check_id_flag           => 'A'
480                 ,x_org_id                  => l_nlbr_bill_rate_org_id
481                 ,x_return_status           => l_return_status
482                 ,x_error_msg_code          => l_error_msg_code);
483 
484             IF l_return_status = FND_API.G_RET_STS_ERROR
485             THEN
486                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
487                                     p_msg_name       => l_error_msg_code);
488                x_msg_data := l_error_msg_code;
489                x_return_status := 'E';
490             END IF;
491          END IF;
492 
493          --Validating Schedule
494          IF ( p_nlbr_std_bill_rate_sch IS NOT NULL AND p_nlbr_std_bill_rate_sch <> FND_API.G_MISS_CHAR )
495          THEN
496             if (p_debug_mode = 'Y') then
497                 pa_debug.debug('Update Billing Info PUB : Checking  schedule ');
498             end if;
499             PA_BILLING_SCHEDULE_UTILS.Nlbr_schedule_name_To_Id
500                ( p_sch_name                => p_nlbr_std_bill_rate_sch
501                 ,p_nlbr_org_id             => l_nlbr_bill_rate_org_id
502                 ,p_check_id_flag           => 'A'
503                 ,x_sch_name                => l_nlbr_std_bill_rate_sch
504                 ,x_return_status           => l_return_status
505                 ,x_error_msg_code          => l_error_msg_code);
506 
507             IF l_return_status = FND_API.G_RET_STS_ERROR
508             THEN
509                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
510                                     p_msg_name       => l_error_msg_code);
511                x_msg_data := l_error_msg_code;
512                x_return_status := 'E';
513             END IF;
514          END IF;
515       ELSE
516           l_nlbr_bill_rate_org_id := null;
517           l_nlbr_std_bill_rate_sch := null;
518           l_nlbr_sch_fxd_date := null;
519           l_nlbr_sch_discount := null;
520           l_emp_bill_rate_sch_id := null;
521           l_lbr_sch_fxd_date := null;
522           l_lbr_sch_discount := null;
523           l_job_bill_rate_sch_id := null;
524 
525           l_rev_schedule_id := p_rev_schedule_id;
526           l_inv_schedule_id := p_inv_schedule_id;
527           l_rev_ind_sch_fxd_date := p_rev_ind_sch_fxd_date;
528           l_inv_ind_sch_fxd_date := p_inv_ind_sch_fxd_date;
529 
530 
531          --Validating rev schedule id
532          IF ( p_rev_schedule_id IS NOT NULL AND p_rev_schedule_id <> FND_API.G_MISS_NUM ) OR
533             ( p_rev_schedule IS NOT NULL AND p_rev_schedule <> FND_API.G_MISS_CHAR )
534          THEN
535             if (p_debug_mode = 'Y') then
536                 pa_debug.debug('Update Billing Info PUB : Checking Revenue schedule');
537             end if;
538             PA_BILLING_SCHEDULE_UTILS.Rev_Sch_Name_To_Id
539                ( p_rev_sch_id              => p_rev_schedule_id
540                 ,p_rev_sch_name            => p_rev_schedule
541                 ,p_check_id_flag           => 'A'
542                 ,x_rev_sch_id              => l_rev_schedule_id
543                 ,x_return_status           => l_return_status
544                 ,x_error_msg_code          => l_error_msg_code);
545 
546             IF l_return_status = FND_API.G_RET_STS_ERROR
547             THEN
548                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
549                                     p_msg_name       => l_error_msg_code);
550                x_msg_data := l_error_msg_code;
551                x_return_status := 'E';
552             END IF;
553          END IF;
554 
555          --Validating Inv schedule id
556          IF ( p_inv_schedule_id IS NOT NULL AND p_inv_schedule_id <> FND_API.G_MISS_NUM ) OR
557             ( p_inv_schedule IS NOT NULL AND p_inv_schedule <> FND_API.G_MISS_CHAR )
558          THEN
559             if (p_debug_mode = 'Y') then
560                 pa_debug.debug('Update Billing Info PUB : Checking Invoice schedule');
561             end if;
562             PA_BILLING_SCHEDULE_UTILS.Inv_Sch_Name_To_Id
563                ( p_inv_sch_id              => p_inv_schedule_id
564                 ,p_inv_sch_name            => p_inv_schedule
565                 ,p_check_id_flag           => 'A'
566                 ,x_inv_sch_id              => l_inv_schedule_id
567                 ,x_return_status           => l_return_status
568                 ,x_error_msg_code          => l_error_msg_code);
569 
570             IF l_return_status = FND_API.G_RET_STS_ERROR
571             THEN
572                PA_UTILS.ADD_MESSAGE(p_app_short_name => 'PA',
573                                     p_msg_name       => l_error_msg_code);
577          END IF;
574                x_msg_data := l_error_msg_code;
575                x_return_status := 'E';
576             END IF;
578       END IF;
579 
580          if (p_debug_mode = 'Y') then
581             pa_debug.debug('Update Bill Info PUB : checking message count');
582          end if;
583 
584          l_msg_count := FND_MSG_PUB.count_msg;
585          If l_msg_count > 0 THEN
586              x_msg_count := l_msg_count;
587              If l_msg_count = 1 THEN
588                 pa_interface_utils_pub.get_messages
589                    (p_encoded        => FND_API.G_TRUE ,
590                     p_msg_index      => 1,
591                     p_msg_count      => l_msg_count ,
592                     p_msg_data       => l_msg_data,
593                     p_data           => l_data,
594                     p_msg_index_out  => l_msg_index_out );
595                     x_msg_data := l_data;
596             End if;
597             RAISE  FND_API.G_EXC_ERROR;
598          End if;
599 
600          if (p_debug_mode = 'Y') then
601             pa_debug.debug('Update Bill Info PUB : Calling private api Update Bill Info');
602          end if;
603 
604          PA_BILLING_SCHEDULE_PVT.Update_Project_Task_Bill_Info(
605                 p_commit                           => FND_API.G_FALSE,
606                 p_validate_only                    => p_validate_only,
607                 p_validation_level	               => p_validation_level,
608                 p_calling_module	               => p_calling_module,
609                 p_debug_mode	                     => p_debug_mode,
610                 p_max_msg_count                    => p_max_msg_count,
611                 p_project_id                       => p_project_id,
612                 p_task_id                          => p_task_id,
613                 p_lbr_schedule_type	 	         => p_lbr_schedule_type,
614                 p_non_lbr_schedule_type 	         => p_non_lbr_schedule_type,
615                 p_emp_bill_rate_sch_id             => l_emp_bill_rate_sch_id,
616                 p_job_bill_rate_sch_id             => l_job_bill_rate_sch_id,
617                 p_lbr_sch_fxd_date	               => l_lbr_sch_fxd_date,
618                 p_lbr_sch_discount	               => l_lbr_sch_discount,
619                 p_rev_schedule_id	               => l_rev_schedule_id,
620                 p_inv_schedule_id                  => l_inv_schedule_id,
621                 p_rev_ind_sch_fxd_date             => l_rev_ind_sch_fxd_date,
622                 p_inv_ind_sch_fxd_date 	         => l_inv_ind_sch_fxd_date,
623                 p_nlbr_bill_rate_org_id	         => l_nlbr_bill_rate_org_id,
624                 p_nlbr_std_bill_rate_sch	         => l_nlbr_std_bill_rate_sch,
625                 p_nlbr_sch_fxd_date	               => l_nlbr_sch_fxd_date,
626                 p_nlbr_sch_discount	               => l_nlbr_sch_discount,
627                 p_record_version_number	         => p_record_version_number,
628                 x_return_status	               => l_return_status,
629                 x_msg_count	                     => l_msg_count,
630                 x_msg_data	                     => l_msg_data
631             );
632 
633          if (p_debug_mode = 'Y') then
634             pa_debug.debug('Update Bill Info PUB : checking message count');
635          end if;
636 
637          l_msg_count := FND_MSG_PUB.count_msg;
638          If l_msg_count > 0 THEN
639              x_msg_count := l_msg_count;
640              If l_msg_count = 1 THEN
641                 pa_interface_utils_pub.get_messages
642                    (p_encoded        => FND_API.G_TRUE ,
643                     p_msg_index      => 1,
644                     p_msg_count      => l_msg_count ,
645                     p_msg_data       => l_msg_data,
646                     p_data           => l_data,
647                     p_msg_index_out  => l_msg_index_out );
648                     x_msg_data := l_data;
649             End if;
650             RAISE  FND_API.G_EXC_ERROR;
651          End if;
652    END IF;
653    IF FND_API.TO_BOOLEAN(P_COMMIT)
654    THEN
655       COMMIT WORK;
656    END IF;
657  EXCEPTION
658     WHEN FND_API.G_EXC_UNEXPECTED_ERROR  THEN
659        IF p_commit = FND_API.G_TRUE
660        THEN
661           ROLLBACK TO Update_Bill_Info;
662        END IF;
663        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
664        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
665                                p_procedure_name => 'Update_Project_Task_Bill_Info',
666                                p_error_text     => SUBSTRB(SQLERRM,1,240));
667        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
668 
669     WHEN FND_API.G_EXC_ERROR THEN
670        IF p_commit = FND_API.G_TRUE
671        THEN
672           ROLLBACK TO Update_Bill_Info;
673        END IF;
674        x_return_status := 'E';
675 
676      WHEN OTHERS THEN
677        IF p_commit = FND_API.G_TRUE
678        THEN
679           ROLLBACK TO Update_Bill_Info;
680        END IF;
681        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
682        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
683                                p_procedure_name => 'Update_Project_Task_Bill_Info',
684                                p_error_text     => SUBSTRB(SQLERRM,1,240));
685 
686        RAISE;
687 END Update_Project_Task_Bill_Info;
688 
689 
690 -- API name                      : update_billing_schedule_type
691 -- Type                          : Public procedure
692 -- Pre-reqs                      : None
693 -- Return Value                  : N/A
694 -- Prameters
695 -- p_api_version	       	 IN	 NUMBER     REQUIRED   DEFAULT=1.0
696 -- p_init_msg_list	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
700 -- p_calling_module	 	 IN 	 VARCHAR2   OPTIONAL   DEFAULT='SELF_SERVICE'
697 -- p_commit	         	       IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_FALSE
698 -- p_validate_only	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
699 -- p_validation_level	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_VALID_LEVEL_FULL
701 -- p_debug_mode	         	 IN	 VARCHAR2   OPTIONAL   DEFAULT='N'
702 -- p_max_msg_count	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
703 -- p_project_id	         	 IN	 NUMBER     REQUIRED
704 -- p_task_id	         	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
705 -- p_lbr_schedule_type   IN    VARCHAR2       REQUIRED,
706 -- p_non_lbr_schedule_type   IN    VARCHAR2   REQUIRED,
707 -- p_record_version_number	 IN	 NUMBER     REQUIRED   DEFAULT=1
708 -- x_return_status	         OUT 	 VARCHAR2   REQUIRED
709 -- x_msg_count	                 OUT 	 VARCHAR2   REQUIRED
710 -- x_msg_data	                 OUT 	 VARCHAR2   REQUIRED
711 --
712 --  History
713 --
714 --  21-MAY-01   Majid Ansari             -Created
715 --
716 --
717  PROCEDURE  update_billing_schedule_type(
718  p_api_version	                 IN	 NUMBER     DEFAULT 1.0,
719  p_init_msg_list	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
720  p_commit	         	 IN	 VARCHAR2   DEFAULT FND_API.G_FALSE,
721  p_validate_only	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
722  p_validation_level	 IN	 NUMBER     DEFAULT FND_API.G_VALID_LEVEL_FULL,
723  p_calling_module	 	 IN 	 VARCHAR2   DEFAULT 'SELF_SERVICE',
724  p_debug_mode	       IN	 VARCHAR2   DEFAULT 'N',
725  p_max_msg_count	 	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
726  p_project_id	       IN	 NUMBER     ,
727  p_task_id	         	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
728  p_lbr_schedule_type   IN    VARCHAR2,
729  p_non_lbr_schedule_type   IN    VARCHAR2,
730  p_record_version_number         IN	 NUMBER     DEFAULT 1,
731  x_return_status	         OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
732  x_msg_count	                 OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
733  x_msg_data	                 OUT 	 NOCOPY VARCHAR2    --File.Sql.39 bug 4440895
734 )IS
735 
736   l_api_name                CONSTANT VARCHAR(30) := 'update_billing_schedule_type';
737   l_api_version             CONSTANT NUMBER      := 1.0;
738 
739   l_return_status                    VARCHAR2(1);
740   l_error_msg_code                   VARCHAR2(250);
741   l_msg_data                   VARCHAR2(250);
742   l_dummy_char                       VARCHAR2(1);
743   l_msg_count                        NUMBER;
744 
745   l_data                             VARCHAR2(250);
746   l_msg_index_out                    NUMBER;
747   l_task_id                          NUMBER;
748   l_effective_to_date                DATE;
749 BEGIN
750    -- Standard call to check for call compatibility
751 
752    IF (p_debug_mode = 'Y')
753    THEN
754        pa_debug.debug('update_billing_schedule_type PUB : Checking the api version number.');
755    END IF;
756 
757    IF p_commit = FND_API.G_TRUE
758    THEN
759       SAVEPOINT bill_sch_type;
760    END IF;
761 
762    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
763                                       p_api_version,
764                                       l_api_name,
765                                       g_pkg_name)
766    THEN
767       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
768    END IF;
769 
770    if (p_debug_mode = 'Y') then
771        pa_debug.debug('update_billing_schedule_type PUB : Initializing message stack.');
772    end if;
773 
774    pa_debug.init_err_stack('PA_BILLING_SCHEDULE_PUB.UPDATE_LABOR_MULTIPLIER');
775 
776    if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
777       fnd_msg_pub.initialize;
778    end if;
779 
780    x_return_status := 'S';
781 
782     IF p_validate_only = FND_API.G_TRUE AND
783        p_validation_level > 0
784     THEN
785         IF p_task_id = FND_API.G_MISS_NUM
786         THEN
787            l_task_id := null;
788         ELSE
789            l_task_id := p_task_id;
790         END IF;
791 
792         PA_BILLING_SCHEDULE_PVT.update_billing_schedule_type(
793                                         p_commit	        => FND_API.G_FALSE,
794                                         p_validate_only       => p_validate_only,
795                                         p_validation_level	  => p_validation_level,
796                                         p_calling_module	  => p_calling_module,
797                                         p_debug_mode	        => p_debug_mode,
798                                         p_max_msg_count	  => p_max_msg_count,
799                                         p_project_id	        => p_project_id,
800                                         p_task_id	        => l_task_id,
801                                         p_lbr_schedule_type => p_lbr_schedule_type,
802                                         p_non_lbr_schedule_type   => p_non_lbr_schedule_type,
803                                         p_record_version_number   => p_record_version_number,
804                                         x_return_status	  => l_return_status,
805                                         x_msg_count	        => l_msg_count,
806                                         x_msg_data	        => l_msg_data
807                                   );
808     END IF;
809 
810     if (p_debug_mode = 'Y') then
811         pa_debug.debug('update_billing_schedule_type PUB : checking message count');
812     end if;
813     l_msg_count := FND_MSG_PUB.count_msg;
814     If l_msg_count > 0 THEN
815        x_msg_count := l_msg_count;
816        If l_msg_count = 1 THEN
817           pa_interface_utils_pub.get_messages
818               (p_encoded        => FND_API.G_TRUE ,
819                p_msg_index      => 1,
820                p_msg_count      => l_msg_count ,
824                x_msg_data := l_data;
821                p_msg_data       => l_msg_data,
822                p_data           => l_data,
823                p_msg_index_out  => l_msg_index_out );
825        End if;
826        RAISE  FND_API.G_EXC_ERROR;
830    THEN
827     End if;
828 
829    IF FND_API.TO_BOOLEAN(P_COMMIT)
831       COMMIT WORK;
832    END IF;
833 
834 EXCEPTION
835     WHEN FND_API.G_EXC_UNEXPECTED_ERROR  THEN
836        IF p_commit = FND_API.G_TRUE
837        THEN
838           ROLLBACK TO bill_sch_type;
839        END IF;
840        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
841        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
842                                p_procedure_name => 'update_billing_schedule_type',
843                                p_error_text     => SUBSTRB(SQLERRM,1,240));
844        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
845 
846     WHEN FND_API.G_EXC_ERROR THEN
847        IF p_commit = FND_API.G_TRUE
848        THEN
849           ROLLBACK TO bill_sch_type;
850        END IF;
851        x_return_status := 'E';
852 
853      WHEN OTHERS THEN
854        IF p_commit = FND_API.G_TRUE
855        THEN
856           ROLLBACK TO bill_sch_type;
857        END IF;
858        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
859        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
860                                p_procedure_name => 'update_billing_schedule_type',
861                                p_error_text     => SUBSTRB(SQLERRM,1,240));
862        RAISE;
863 
864 END update_billing_schedule_type;
865 
866 
867 
868 -- API name                      : create_labor_multiplier
869 -- Type                          : Public procedure
870 -- Pre-reqs                      : None
871 -- Return Value                  : N/A
872 -- Prameters
873 -- p_api_version	       	 IN	 NUMBER     REQUIRED   DEFAULT=1.0
874 -- p_init_msg_list	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
875 -- p_commit	         	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_FALSE
876 -- p_validate_only	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
877 -- p_validation_level	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_VALID_LEVEL_FULL
878 -- p_calling_module	 	 IN 	 VARCHAR2   OPTIONAL   DEFAULT='SELF_SERVICE'
879 -- p_debug_mode	         	 IN	 VARCHAR2   OPTIONAL   DEFAULT='N'
880 -- p_max_msg_count	         IN	 NUMBER	OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
881 -- p_project_id	         	 IN	 NUMBER     REQUIRED
882 -- p_task_id	         	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
883 -- p_labor_multiplier	         IN	 NUMBER	REQUIRED
884 -- p_effective_from_date	 IN	 DATE	      REQUIRED
885 -- p_effective_to_date	         IN	 DATE	      OPTIONAL   DEFAULT=FND_API.G_MISS_DATE
886 -- x_labor_multiplier_id         OUT   NUMBER   REQUIRED
887 -- x_return_status	         OUT 	 VARCHAR2   REQUIRED
888 -- x_msg_count	                 OUT 	 VARCHAR2   REQUIRED
889 -- x_msg_data	                 OUT 	 VARCHAR2   REQUIRED
890 --
891 --  History
892 --
893 --  21-MAY-01   Majid Ansari             -Created
894 --
895 --
896  PROCEDURE  Create_Labor_Multiplier(
897  p_api_version	       IN	 NUMBER     DEFAULT 1.0,
898  p_init_msg_list	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
899  p_commit	         	 IN	 VARCHAR2   DEFAULT FND_API.G_FALSE,
900  p_validate_only	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
901  p_validation_level	 IN	 NUMBER     DEFAULT FND_API.G_VALID_LEVEL_FULL,
902  p_calling_module	 	 IN 	 VARCHAR2   DEFAULT 'SELF_SERVICE',
903  p_debug_mode	       IN	 VARCHAR2   DEFAULT 'N',
904  p_max_msg_count	 	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
905  p_project_id	       IN	 NUMBER     ,
906  p_task_id	         	 IN    NUMBER     DEFAULT FND_API.G_MISS_NUM,
907  p_labor_multiplier	 IN	 NUMBER	,
911  x_return_status	       OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
908  p_effective_from_date	 IN	 DATE	      ,
909  p_effective_to_date	 IN	 DATE	      DEFAULT FND_API.G_MISS_DATE,
910  x_labor_multiplier_id   OUT   NOCOPY NUMBER, --File.Sql.39 bug 4440895
912  x_msg_count	       OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
913  x_msg_data	             OUT 	 NOCOPY VARCHAR2    --File.Sql.39 bug 4440895
914 ) IS
915 
916   l_api_name                CONSTANT VARCHAR(30) := 'Update_Project_Task_Bill_Info';
917   l_api_version             CONSTANT NUMBER      := 1.0;
918 
919   l_return_status                    VARCHAR2(1);
920   l_error_msg_code                   VARCHAR2(250);
921   l_msg_data                   VARCHAR2(250);
922   l_dummy_char                       VARCHAR2(1);
923   l_msg_count                        NUMBER;
924 
925   l_data                             VARCHAR2(250);
926   l_msg_index_out                    NUMBER;
927 
928   l_task_id                          NUMBER;
929   l_effective_to_date                DATE;
930 
931 BEGIN
932    -- Standard call to check for call compatibility
933 
934    IF (p_debug_mode = 'Y')
935    THEN
936        pa_debug.debug('Update Bill Info PUB : Checking the api version number.');
937    END IF;
938 
939    IF p_commit = FND_API.G_TRUE
940    THEN
941       SAVEPOINT prm_create_project;
942    END IF;
943 
944    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
945                                       p_api_version,
946                                       l_api_name,
947                                       g_pkg_name)
948    THEN
949       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
950    END IF;
951 
952    if (p_debug_mode = 'Y') then
953        pa_debug.debug('Update Bill Info PUB : Initializing message stack.');
954    end if;
955 
956    pa_debug.init_err_stack('PA_BILLING_SCHEDULE_PUB.CREATE_LABOR_MULTIPLIER');
957 
958    if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
959       fnd_msg_pub.initialize;
960    end if;
961 
962    x_return_status := 'S';
963 
964     IF p_validate_only = FND_API.G_TRUE AND
965        p_validation_level > 0
966     THEN
967         IF p_task_id = FND_API.G_MISS_NUM
968         THEN
969            l_task_id := null;
970         ELSE
971            l_task_id := p_task_id;
972         END IF;
973 
974         IF p_effective_to_date = FND_API.G_MISS_DATE
975         THEN
976            l_effective_to_date := null;
977         ELSE
978            l_effective_to_date := p_effective_to_date;
979         END IF;
980 
981         PA_BILLING_SCHEDULE_PVT.Create_Labor_Multiplier(
982                                         p_commit	        => FND_API.G_FALSE,
983                                         p_validate_only       => p_validate_only,
984                                         p_validation_level	  => p_validation_level,
985                                         p_calling_module	  => p_calling_module,
986                                         p_debug_mode	        => p_debug_mode,
990                                         p_labor_multiplier	  => p_labor_multiplier,
987                                         p_max_msg_count	  => p_max_msg_count,
988                                         p_project_id	        => p_project_id,
989                                         p_task_id	        => l_task_id,
991                                         p_effective_from_date => p_effective_from_date,
992                                         p_effective_to_date	  => l_effective_to_date,
993                                         x_labor_multiplier_id => x_labor_multiplier_id,
994                                         x_return_status	  => l_return_status,
995                                         x_msg_count	        => l_msg_count,
996                                         x_msg_data	        => l_msg_data
997                                   );
998     END IF;
999 
1000     if (p_debug_mode = 'Y') then
1001         pa_debug.debug('Update Bill Info PUB : checking message count');
1002     end if;
1003     l_msg_count := FND_MSG_PUB.count_msg;
1004     If l_msg_count > 0 THEN
1005        x_msg_count := l_msg_count;
1006        If l_msg_count = 1 THEN
1007           pa_interface_utils_pub.get_messages
1008               (p_encoded        => FND_API.G_TRUE ,
1009                p_msg_index      => 1,
1010                p_msg_count      => l_msg_count ,
1011                p_msg_data       => l_msg_data,
1012                p_data           => l_data,
1013                p_msg_index_out  => l_msg_index_out );
1014                x_msg_data := l_data;
1015        End if;
1016        RAISE  FND_API.G_EXC_ERROR;
1017     End if;
1018     IF FND_API.TO_BOOLEAN(P_COMMIT)
1019     THEN
1020        COMMIT WORK;
1024        IF p_commit = FND_API.G_TRUE
1021     END IF;
1022 EXCEPTION
1023     WHEN FND_API.G_EXC_UNEXPECTED_ERROR  THEN
1025        THEN
1026           ROLLBACK TO Labor_Multiplier;
1027        END IF;
1028        x_labor_multiplier_id := NULL; -- NOCOPY
1029        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1030        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
1031                                p_procedure_name => 'create_labor_multiplier',
1032                                p_error_text     => SUBSTRB(SQLERRM,1,240));
1033        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1034 
1035     WHEN FND_API.G_EXC_ERROR THEN
1036        x_labor_multiplier_id := NULL; -- NOCOPY
1037        IF p_commit = FND_API.G_TRUE
1038        THEN
1039           ROLLBACK TO Labor_Multiplier;
1040        END IF;
1041        x_return_status := 'E';
1042 
1043      WHEN OTHERS THEN
1044        x_labor_multiplier_id := NULL; -- NOCOPY
1045        IF p_commit = FND_API.G_TRUE
1046        THEN
1047           ROLLBACK TO Labor_Multiplier;
1048        END IF;
1049        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1050        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
1051                                p_procedure_name => 'create_labor_multiplier',
1052                                p_error_text     => SUBSTRB(SQLERRM,1,240));
1053        RAISE;
1054 
1055 END Create_Labor_Multiplier;
1056 
1057 -- API name                      : update_labor_multiplier
1058 -- Type                          : Public procedure
1059 -- Pre-reqs                      : None
1060 -- Return Value                  : N/A
1061 -- Prameters
1062 -- p_api_version	       	 IN	 NUMBER     REQUIRED   DEFAULT=1.0
1063 -- p_init_msg_list	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
1064 -- p_commit	         	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_FALSE
1065 -- p_validate_only	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
1066 -- p_validation_level	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_VALID_LEVEL_FULL
1067 -- p_calling_module	 	 IN 	 VARCHAR2   OPTIONAL   DEFAULT='SELF_SERVICE'
1068 -- p_debug_mode	         	 IN	 VARCHAR2   OPTIONAL   DEFAULT='N'
1069 -- p_max_msg_count	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
1070 -- p_labor_multiplier_id       IN    NUMBER     REQUIRED
1071 -- p_project_id	         	 IN	 NUMBER     REQUIRED
1072 -- p_task_id	         	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
1073 -- p_labor_multiplier	         IN	 NUMBER
1074 -- p_effective_from_date	 IN	 DATE	      REQUIRED
1075 -- p_effective_to_date	         IN	 DATE	      OPTIONAL   DEFAULT=FND_API.G_MISS_DATE
1076 -- p_record_version_number	 IN	 NUMBER     REQUIRED   DEFAULT=1
1077 -- x_return_status	         OUT 	 VARCHAR2   REQUIRED
1078 -- x_msg_count	                 OUT 	 VARCHAR2   REQUIRED
1079 -- x_msg_data	                 OUT 	 VARCHAR2   REQUIRED
1080 --
1081 --  History
1082 --
1083 --  21-MAY-01   Majid Ansari             -Created
1084 --
1085 --
1086  PROCEDURE  Update_Labor_Multiplier(
1087  p_api_version	                 IN	 NUMBER     DEFAULT 1.0,
1088  p_init_msg_list	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
1089  p_commit	         	 IN	 VARCHAR2   DEFAULT FND_API.G_FALSE,
1090  p_validate_only	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
1091  p_validation_level	         IN	 NUMBER     DEFAULT FND_API.G_VALID_LEVEL_FULL,
1092  p_calling_module	 	 IN 	 VARCHAR2   DEFAULT 'SELF_SERVICE',
1093  p_debug_mode	                 IN	 VARCHAR2   DEFAULT 'N',
1094  p_max_msg_count	 	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
1095  p_labor_multiplier_id       IN    NUMBER,
1096  p_project_id	                 IN	 NUMBER     ,
1097  p_task_id	         	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
1098  p_labor_multiplier	         IN	 NUMBER	,
1099  p_effective_from_date	         IN	 DATE	      ,
1100  p_effective_to_date	         IN	 DATE	      DEFAULT FND_API.G_MISS_DATE,
1101  p_record_version_number         IN	 NUMBER     DEFAULT 1,
1102  x_return_status	         OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
1103  x_msg_count	                 OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
1104  x_msg_data	                 OUT 	 NOCOPY VARCHAR2    --File.Sql.39 bug 4440895
1105 )IS
1106 
1107   l_api_name                CONSTANT VARCHAR(30) := 'Update_Project_Task_Bill_Info';
1108   l_api_version             CONSTANT NUMBER      := 1.0;
1109 
1110   l_return_status                    VARCHAR2(1);
1111   l_error_msg_code                   VARCHAR2(250);
1112   l_msg_data                   VARCHAR2(250);
1113   l_dummy_char                       VARCHAR2(1);
1114   l_msg_count                        NUMBER;
1115 
1116   l_data                             VARCHAR2(250);
1117   l_msg_index_out                    NUMBER;
1118   l_task_id                          NUMBER;
1119   l_effective_to_date                DATE;
1120 BEGIN
1121    -- Standard call to check for call compatibility
1122 
1123    IF (p_debug_mode = 'Y')
1124    THEN
1125        pa_debug.debug('Update Bill Info PUB : Checking the api version number.');
1126    END IF;
1127 
1128    IF p_commit = FND_API.G_TRUE
1129    THEN
1133    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
1130       SAVEPOINT prm_create_project;
1131    END IF;
1132 
1134                                       p_api_version,
1135                                       l_api_name,
1136                                       g_pkg_name)
1137    THEN
1138       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1139    END IF;
1140 
1141    if (p_debug_mode = 'Y') then
1142        pa_debug.debug('Update Bill Info PUB : Initializing message stack.');
1143    end if;
1144 
1145    pa_debug.init_err_stack('PA_BILLING_SCHEDULE_PUB.UPDATE_LABOR_MULTIPLIER');
1146 
1147    if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
1148       fnd_msg_pub.initialize;
1149    end if;
1150 
1151    x_return_status := 'S';
1152 
1153     IF p_validate_only = FND_API.G_TRUE AND
1154        p_validation_level > 0
1155     THEN
1156         IF p_task_id = FND_API.G_MISS_NUM
1157         THEN
1158            l_task_id := null;
1159         ELSE
1160            l_task_id := p_task_id;
1161         END IF;
1162 
1163         IF p_effective_to_date = FND_API.G_MISS_DATE
1164         THEN
1165            l_effective_to_date := null;
1166         ELSE
1167            l_effective_to_date := p_effective_to_date;
1168         END IF;
1169 
1170         PA_BILLING_SCHEDULE_PVT.Update_Labor_Multiplier(
1171                                         p_commit	        => FND_API.G_FALSE,
1172                                         p_validate_only       => p_validate_only,
1173                                         p_validation_level	  => p_validation_level,
1174                                         p_calling_module	  => p_calling_module,
1175                                         p_debug_mode	        => p_debug_mode,
1176                                         p_max_msg_count	  => p_max_msg_count,
1177                                         p_labor_multiplier_id => p_labor_multiplier_id,
1178                                         p_project_id	        => p_project_id,
1179                                         p_task_id	        => l_task_id,
1180                                         p_labor_multiplier	  => p_labor_multiplier,
1181                                         p_effective_from_date => p_effective_from_date,
1182                                         p_effective_to_date	  => l_effective_to_date,
1183                                         p_record_version_number   => p_record_version_number,
1184                                         x_return_status	  => l_return_status,
1185                                         x_msg_count	        => l_msg_count,
1186                                         x_msg_data	        => l_msg_data
1187                                   );
1188     END IF;
1189 
1190     if (p_debug_mode = 'Y') then
1191         pa_debug.debug('Update Bill Info PUB : checking message count');
1192     end if;
1193     l_msg_count := FND_MSG_PUB.count_msg;
1194     If l_msg_count > 0 THEN
1195        x_msg_count := l_msg_count;
1196        If l_msg_count = 1 THEN
1197           pa_interface_utils_pub.get_messages
1198               (p_encoded        => FND_API.G_TRUE ,
1199                p_msg_index      => 1,
1200                p_msg_count      => l_msg_count ,
1201                p_msg_data       => l_msg_data,
1202                p_data           => l_data,
1203                p_msg_index_out  => l_msg_index_out );
1204                x_msg_data := l_data;
1205        End if;
1206        RAISE  FND_API.G_EXC_ERROR;
1207     End if;
1208 
1209    IF FND_API.TO_BOOLEAN(P_COMMIT)
1210    THEN
1211       COMMIT WORK;
1212    END IF;
1213 
1214 EXCEPTION
1215     WHEN FND_API.G_EXC_UNEXPECTED_ERROR  THEN
1216        IF p_commit = FND_API.G_TRUE
1217        THEN
1218           ROLLBACK TO Labor_Multiplier;
1219        END IF;
1220        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1221        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
1222                                p_procedure_name => 'update_labor_multiplier',
1223                                p_error_text     => SUBSTRB(SQLERRM,1,240));
1224        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1225 
1226     WHEN FND_API.G_EXC_ERROR THEN
1227        IF p_commit = FND_API.G_TRUE
1228        THEN
1229           ROLLBACK TO Labor_Multiplier;
1230        END IF;
1231        x_return_status := 'E';
1232 
1233      WHEN OTHERS THEN
1234        IF p_commit = FND_API.G_TRUE
1235        THEN
1236           ROLLBACK TO Labor_Multiplier;
1237        END IF;
1238        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1239        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
1240                                p_procedure_name => 'update_labor_multiplier',
1241                                p_error_text     => SUBSTRB(SQLERRM,1,240));
1242        RAISE;
1243 
1244 END Update_Labor_Multiplier;
1245 
1246 -- API name                      : delete_labor_multiplier
1247 -- Type                          : Public procedure
1248 -- Pre-reqs                      : None
1249 -- Return Value                  : N/A
1250 -- Prameters
1251 -- p_api_version	       	 IN	 NUMBER     REQUIRED   DEFAULT=1.0
1252 -- p_init_msg_list	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
1253 -- p_commit	         	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_FALSE
1254 -- p_validate_only	 	 IN	 VARCHAR2   REQUIRED   DEFAULT=FND_API.G_TRUE
1255 -- p_validation_level	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_VALID_LEVEL_FULL
1256 -- p_calling_module	 	 IN 	 VARCHAR2   OPTIONAL   DEFAULT='SELF_SERVICE'
1260 -- p_project_id	         	 IN	 NUMBER     REQUIRED
1257 -- p_debug_mode	         	 IN	 VARCHAR2   OPTIONAL   DEFAULT='N'
1258 -- p_max_msg_count	 	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
1259 -- p_labor_multiplier_id       IN    NUMBER     REQUIRED
1261 -- p_task_id	         	 IN	 NUMBER     OPTIONAL   DEFAULT=FND_API.G_MISS_NUM
1262 -- p_labor_multiplier	         IN	 NUMBER
1263 -- p_effective_from_date	 IN	 DATE	      REQUIRED
1264 -- p_record_version_number	 IN	 NUMBER     REQUIRED   DEFAULT=1
1265 -- x_return_status	         OUT 	 VARCHAR2   REQUIRED
1266 -- x_msg_count	                 OUT 	 VARCHAR2   REQUIRED
1267 -- x_msg_data	                 OUT 	 VARCHAR2   REQUIRED
1268 --
1269 --  History
1270 --
1271 --  21-MAY-01   Majid Ansari             -Created
1272 --
1273 --
1274  PROCEDURE  delete_Labor_Multiplier(
1275  p_api_version	                 IN	 NUMBER     DEFAULT 1.0,
1276  p_init_msg_list	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
1277  p_commit	         	 IN	 VARCHAR2   DEFAULT FND_API.G_FALSE,
1278  p_validate_only	 	 IN	 VARCHAR2   DEFAULT FND_API.G_TRUE,
1279  p_validation_level	         IN	 NUMBER     DEFAULT FND_API.G_VALID_LEVEL_FULL,
1280  p_calling_module	 	 IN 	 VARCHAR2   DEFAULT 'SELF_SERVICE',
1284  p_project_id	                 IN	 NUMBER     ,
1281  p_debug_mode	                 IN	 VARCHAR2   DEFAULT 'N',
1282  p_max_msg_count	 	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
1283  p_labor_multiplier_id       IN    NUMBER,
1285  p_task_id	         	 IN	 NUMBER     DEFAULT FND_API.G_MISS_NUM,
1286  p_labor_multiplier	         IN	 NUMBER	,
1287  p_effective_from_date	         IN	 DATE	      ,
1288  p_record_version_number         IN	 NUMBER     DEFAULT 1,
1289  x_return_status	         OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
1290  x_msg_count	                 OUT 	 NOCOPY VARCHAR2   , --File.Sql.39 bug 4440895
1291  x_msg_data	                 OUT 	 NOCOPY VARCHAR2    --File.Sql.39 bug 4440895
1292 )IS
1293 
1294   l_api_name                CONSTANT VARCHAR(30) := 'delete_labor_multiplier';
1295   l_api_version             CONSTANT NUMBER      := 1.0;
1296 
1297   l_data                             VARCHAR2(250);
1298   l_msg_index_out                    NUMBER;
1299   l_return_status                    VARCHAR2(1);
1300   l_error_msg_code                   VARCHAR2(250);
1301   l_msg_data                   VARCHAR2(250);
1302   l_dummy_char                       VARCHAR2(1);
1303   l_msg_count                        NUMBER;
1304   l_task_id                          NUMBER;
1305 BEGIN
1306    -- Standard call to check for call compatibility
1307 
1308    IF (p_debug_mode = 'Y')
1309    THEN
1310        pa_debug.debug('Update Bill Info PUB : Checking the api version number.');
1311    END IF;
1312 
1313    IF p_commit = FND_API.G_TRUE
1314    THEN
1315       SAVEPOINT prm_create_project;
1316    END IF;
1317 
1318    IF NOT FND_API.COMPATIBLE_API_CALL(l_api_version,
1319                                       p_api_version,
1320                                       l_api_name,
1321                                       g_pkg_name)
1322    THEN
1323       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1324    END IF;
1325 
1326    if (p_debug_mode = 'Y') then
1327        pa_debug.debug('Update Bill Info PUB : Initializing message stack.');
1328    end if;
1329 
1330    pa_debug.init_err_stack('PA_BILLING_SCHEDULE_PUB.DELETE_LABOR_MULTIPLIER');
1331 
1332    if FND_API.to_boolean(nvl(p_init_msg_list, FND_API.G_FALSE)) then
1333       fnd_msg_pub.initialize;
1334    end if;
1335 
1336    x_return_status := 'S';
1337 
1338     IF p_validate_only = FND_API.G_TRUE AND
1339        p_validation_level > 0
1340     THEN
1341         IF p_task_id = FND_API.G_MISS_NUM
1342         THEN
1343            l_task_id := null;
1344         ELSE
1345            l_task_id := p_task_id;
1346         END IF;
1347 
1348         PA_BILLING_SCHEDULE_PVT.Delete_Labor_Multiplier(
1349                                         p_commit	        => FND_API.G_FALSE,
1350                                         p_validate_only       => p_validate_only,
1351                                         p_validation_level	  => p_validation_level,
1352                                         p_calling_module	  => p_calling_module,
1353                                         P_labor_multiplier       => p_labor_multiplier,
1354                                         p_debug_mode	        => p_debug_mode,
1355                                         p_max_msg_count	  => p_max_msg_count,
1356                                         p_labor_multiplier_id => p_labor_multiplier_id,
1357                                         p_project_id	        => p_project_id,
1358                                         p_task_id	        => l_task_id,
1359                                         p_effective_from_date => p_effective_from_date,
1363                                         x_msg_data	        => l_msg_data
1360                                         p_record_version_number => p_record_version_number,
1361                                         x_return_status	  => l_return_status,
1362                                         x_msg_count	        => l_msg_count,
1364                                   );
1365     END IF;
1366 
1367     if (p_debug_mode = 'Y') then
1368         pa_debug.debug('Update Bill Info PUB : checking message count');
1369     end if;
1370     l_msg_count := FND_MSG_PUB.count_msg;
1371     If l_msg_count > 0 THEN
1372        x_msg_count := l_msg_count;
1373        If l_msg_count = 1 THEN
1374           pa_interface_utils_pub.get_messages
1375               (p_encoded        => FND_API.G_TRUE ,
1376                p_msg_index      => 1,
1377                p_msg_count      => l_msg_count ,
1378                p_msg_data       => l_msg_data,
1379                p_data           => l_data,
1380                p_msg_index_out  => l_msg_index_out );
1381                x_msg_data := l_data;
1382        End if;
1383        RAISE  FND_API.G_EXC_ERROR;
1384     End if;
1385 
1386     IF FND_API.TO_BOOLEAN(P_COMMIT)
1387     THEN
1388        COMMIT WORK;
1389     END IF;
1390 
1391 EXCEPTION
1392     WHEN FND_API.G_EXC_UNEXPECTED_ERROR  THEN
1393        IF p_commit = FND_API.G_TRUE
1394        THEN
1395           ROLLBACK TO Labor_Multiplier;
1396        END IF;
1397        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1398        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
1399                                p_procedure_name => 'Delete_labor_multiplier',
1400                                p_error_text     => SUBSTRB(SQLERRM,1,240));
1401        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1402 
1403     WHEN FND_API.G_EXC_ERROR THEN
1404        IF p_commit = FND_API.G_TRUE
1405        THEN
1406           ROLLBACK TO Labor_Multiplier;
1407        END IF;
1408        x_return_status := 'E';
1409 
1410      WHEN OTHERS THEN
1411        IF p_commit = FND_API.G_TRUE
1412        THEN
1413           ROLLBACK TO Labor_Multiplier;
1414        END IF;
1415        x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1416        fnd_msg_pub.add_exc_msg(p_pkg_name       => 'PA_BILLING_SCHEDULE_PUB',
1417                                p_procedure_name => 'delete_labor_multiplier',
1418                                p_error_text     => SUBSTRB(SQLERRM,1,240));
1419        RAISE;
1420 
1421 END Delete_Labor_Multiplier;
1422 
1423 
1424 END PA_BILLING_SCHEDULE_PUB;