DBA Data[Home] [Help]

PACKAGE BODY: APPS.PA_FORECAST_DTLS_PKG

Source


1 PACKAGE BODY PA_FORECAST_DTLS_PKG as
2 --/* $Header: PARFFIDB.pls 120.1 2005/08/19 16:51:13 mwasowic noship $ */
3 
4   l_empty_tab_record  EXCEPTION;  --  Variable to raise the exception if  the passing table of records is empty
5 
6 -- This procedure will insert the record in pa_forecast_items  table
7 -- Input parameters
8 -- Parameters                   Type           Required  Description
9 -- P_Forecast_Dtls_Tab   FIDtlTabTyp      YES       It contains the forecast items record for details
10 --
11 
12 PROCEDURE insert_rows ( p_forecast_dtls_tab                   IN  PA_FORECAST_GLOB.FIDtlTabTyp,
13                         x_return_status                       OUT  NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
14                         x_msg_count                           OUT  NOCOPY NUMBER, --File.Sql.39 bug 4440895
15                         x_msg_data                            OUT  NOCOPY VARCHAR2 ) --File.Sql.39 bug 4440895
16 IS
17 
18  l_forecast_item_id                 PA_PLSQL_DATATYPES.IdTabTyp;
19  l_amount_type_id                   PA_PLSQL_DATATYPES.IdTabTyp;
20  l_line_num                         PA_PLSQL_DATATYPES.NumTabTyp;
21  l_resource_type_code               PA_PLSQL_DATATYPES.Char30TabTyp;
22  l_person_billable_flag             PA_PLSQL_DATATYPES.Char1TabTyp;
23  l_item_date                        PA_PLSQL_DATATYPES.DateTabTyp;
24  l_item_uom                         PA_PLSQL_DATATYPES.Char30TabTyp;
25  l_item_quantity                    PA_PLSQL_DATATYPES.NumTabTyp;
26  l_expenditure_org_id               PA_PLSQL_DATATYPES.IdTabTyp;
27  l_project_org_id                   PA_PLSQL_DATATYPES.IdTabTyp;
28  l_PJI_SUMMARIZED_FLAG              PA_PLSQL_DATATYPES.Char1TabTyp;
29  l_CAPACITY_QUANTITY              PA_PLSQL_DATATYPES.NumTabTyp;
30  l_OVERCOMMITMENT_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
31  l_OVERPROVISIONAL_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
32  l_OVER_PROV_CONF_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
33  l_CONFIRMED_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
34  l_PROVISIONAL_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
35  l_JOB_ID              PA_PLSQL_DATATYPES.NumTabTyp;
36  l_PROJECT_ID              PA_PLSQL_DATATYPES.NumTabTyp;
37  l_RESOURCE_ID              PA_PLSQL_DATATYPES.NumTabTyp;
38  l_EXPENDITURE_ORGANIZATION_ID              PA_PLSQL_DATATYPES.NumTabTyp;
39  l_pvdr_acct_curr_code              PA_PLSQL_DATATYPES.Char30TabTyp;
40  l_pvdr_acct_amount                 PA_PLSQL_DATATYPES.NumTabTyp;
41  l_rcvr_acct_curr_code              PA_PLSQL_DATATYPES.Char30TabTyp;
42  l_rcvr_acct_amount                 PA_PLSQL_DATATYPES.NumTabTyp;
43  l_proj_currency_code               PA_PLSQL_DATATYPES.Char30TabTyp;
44  l_proj_amount                      PA_PLSQL_DATATYPES.NumTabTyp;
45  l_denom_currency_code              PA_PLSQL_DATATYPES.Char30TabTyp;
46  l_denom_amount                     PA_PLSQL_DATATYPES.NumTabTyp;
47  l_tp_amount_type                   PA_PLSQL_DATATYPES.Char30TabTyp;
48  l_billable_flag                    PA_PLSQL_DATATYPES.Char1TabTyp;
49  l_forecast_summarized_code         PA_PLSQL_DATATYPES.Char30TabTyp;
50  l_util_summarized_code             PA_PLSQL_DATATYPES.Char30TabTyp;
51  l_work_type_id                     PA_PLSQL_DATATYPES.IdTabTyp;
52  l_resource_util_category_id        PA_PLSQL_DATATYPES.IdTabTyp;
53  l_org_util_category_id             PA_PLSQL_DATATYPES.IdTabTyp;
54  l_resource_util_weighted           PA_PLSQL_DATATYPES.NumTabTyp;
55  l_org_util_weighted                PA_PLSQL_DATATYPES.NumTabTyp;
56  l_provisional_flag                 PA_PLSQL_DATATYPES.Char1TabTyp;
57  l_reversed_flag                    PA_PLSQL_DATATYPES.Char1TabTyp;
58  l_net_zero_flag                    PA_PLSQL_DATATYPES.Char1TabTyp;
59  l_reduce_capacity_flag             PA_PLSQL_DATATYPES.Char1TabTyp;
60  l_line_num_reversed                PA_PLSQL_DATATYPES.NumTabTyp;
61 
62 
63 BEGIN
64 PA_DEBUG.Init_err_stack( 'PA_FORECAST_DTLS_PKG.Insert_Rows');
65 x_return_status := FND_API.G_RET_STS_SUCCESS;
66 
67 /* Checking for the empty table of record */
68   IF (p_forecast_dtls_tab.count = 0 ) THEN
69     PA_FORECAST_ITEMS_UTILS.log_message('count 0 ... before return ... ');
70     RAISE l_empty_tab_record;
71   END IF;
72 
73   PA_FORECAST_ITEMS_UTILS.log_message('start of the forecast inser row .... ');
74 
75 FOR l_J IN p_forecast_dtls_tab.FIRST..p_forecast_dtls_tab.LAST LOOP
76         l_forecast_item_id(l_j)                 := p_forecast_dtls_tab(l_j).forecast_item_id;
77         l_amount_type_id(l_j)                   := p_forecast_dtls_tab(l_j).amount_type_id;
78         l_line_num(l_j)                         := p_forecast_dtls_tab(l_j).line_num;
79         l_resource_type_code(l_j)               := p_forecast_dtls_tab(l_j).resource_type_code;
80         l_person_billable_flag(l_j)             := p_forecast_dtls_tab(l_j).person_billable_flag;
81         l_item_uom(l_j)                         := p_forecast_dtls_tab(l_j).item_uom;
82         l_item_date(l_j)                        := p_forecast_dtls_tab(l_j).item_date;
83         l_item_quantity(l_j)                    := p_forecast_dtls_tab(l_j).item_quantity;
84         l_expenditure_org_id(l_j)               := p_forecast_dtls_tab(l_j).expenditure_org_id;
85         l_project_org_id(l_j)                   := p_forecast_dtls_tab(l_j).project_org_id;
86         l_PJI_SUMMARIZED_FLAG(l_j)              := p_forecast_dtls_tab(l_j).PJI_SUMMARIZED_FLAG;
87         l_CAPACITY_QUANTITY(l_j)              := p_forecast_dtls_tab(l_j).CAPACITY_QUANTITY;
88         l_OVERCOMMITMENT_QTY(l_j)              := p_forecast_dtls_tab(l_j).OVERCOMMITMENT_QTY;
89         l_OVERPROVISIONAL_QTY(l_j)              := p_forecast_dtls_tab(l_j).OVERPROVISIONAL_QTY;
90         l_OVER_PROV_CONF_QTY(l_j)              := p_forecast_dtls_tab(l_j).OVER_PROV_CONF_QTY;
91         l_CONFIRMED_QTY(l_j)              := p_forecast_dtls_tab(l_j).CONFIRMED_QTY;
92         l_PROVISIONAL_QTY(l_j)              := p_forecast_dtls_tab(l_j).PROVISIONAL_QTY;
93         l_JOB_ID(l_j)              := p_forecast_dtls_tab(l_j).JOB_ID;
94         l_PROJECT_ID(l_j)              := p_forecast_dtls_tab(l_j).PROJECT_ID;
95         l_RESOURCE_ID(l_j)              := p_forecast_dtls_tab(l_j).RESOURCE_ID;
96         l_EXPENDITURE_ORGANIZATION_ID(l_j)              := p_forecast_dtls_tab(l_j).EXPENDITURE_ORGANIZATION_ID;
97         l_pvdr_acct_curr_code(l_j)              := p_forecast_dtls_tab(l_j).pvdr_acct_curr_code;
98         l_pvdr_acct_amount(l_j)                 := p_forecast_dtls_tab(l_j).pvdr_acct_amount;
99         l_rcvr_acct_curr_code(l_j)              := p_forecast_dtls_tab(l_j).rcvr_acct_curr_code;
100         l_rcvr_acct_amount(l_j)                 := p_forecast_dtls_tab(l_j).rcvr_acct_amount;
101         l_proj_currency_code(l_j)               := p_forecast_dtls_tab(l_j).proj_currency_code;
102         l_proj_amount(l_j)                      := p_forecast_dtls_tab(l_j).proj_amount;
103         l_denom_currency_code(l_j)              := p_forecast_dtls_tab(l_j).denom_currency_code;
104         l_denom_amount(l_j)                     := p_forecast_dtls_tab(l_j).denom_amount;
105         l_tp_amount_type(l_j)                   := p_forecast_dtls_tab(l_j).tp_amount_type;
106         l_billable_flag(l_j)                    := p_forecast_dtls_tab(l_j).billable_flag;
107         l_forecast_summarized_code(l_j)         := p_forecast_dtls_tab(l_j).forecast_summarized_code;
108         l_util_summarized_code(l_j)             := p_forecast_dtls_tab(l_j).util_summarized_code;
109         l_work_type_id(l_j)                     := p_forecast_dtls_tab(l_j).work_type_id;
110         l_resource_util_category_id(l_j)        := p_forecast_dtls_tab(l_j).resource_util_category_id;
111         l_org_util_category_id(l_j)             := p_forecast_dtls_tab(l_j).org_util_category_id;
112         l_resource_util_weighted(l_j)           := p_forecast_dtls_tab(l_j).resource_util_weighted;
113         l_org_util_weighted(l_j)                := p_forecast_dtls_tab(l_j).org_util_weighted;
114         l_provisional_flag(l_j)                 := p_forecast_dtls_tab(l_j).provisional_flag;
115         l_reversed_flag(l_j)                    := p_forecast_dtls_tab(l_j).reversed_flag;
116         l_net_zero_flag(l_j)                    := p_forecast_dtls_tab(l_j).net_zero_flag;
117         l_reduce_capacity_flag(l_j)             := p_forecast_dtls_tab(l_j).reduce_capacity_flag;
118         l_line_num_reversed(l_j)                := p_forecast_dtls_tab(l_j).line_num_reversed;
119 
120 END LOOP;
121 
122 FORALL l_J IN p_forecast_dtls_tab.FIRST..p_forecast_dtls_tab.LAST
123  INSERT INTO PA_FORECAST_ITEM_DETAILS
124       (
125         forecast_item_id                    ,
126         amount_type_id                      ,
127         line_num                            ,
128         resource_type_code                  ,
129         person_billable_flag                ,
130         item_uom                            ,
131         item_date                           ,
132         item_quantity                       ,
133         expenditure_org_id                  ,
134         project_org_id                      ,
135         PJI_SUMMARIZED_FLAG                 ,
136         CAPACITY_QUANTITY                 ,
137         OVERCOMMITMENT_QTY                 ,
138         OVERPROVISIONAL_QTY                 ,
139         OVER_PROV_CONF_QTY                 ,
140         CONFIRMED_QTY                 ,
141         PROVISIONAL_QTY                 ,
142         JOB_ID                 ,
143         PROJECT_ID                 ,
144         RESOURCE_ID                 ,
145         EXPENDITURE_ORGANIZATION_ID                 ,
146         pvdr_acct_curr_code                 ,
147         pvdr_acct_amount                    ,
148         rcvr_acct_curr_code                 ,
149         rcvr_acct_amount                    ,
150         proj_currency_code                  ,
151         proj_amount                         ,
152         denom_currency_code                 ,
153         denom_amount                        ,
154         tp_amount_type                      ,
155         billable_flag                       ,
156         forecast_summarized_code            ,
157         util_summarized_code                ,
158         work_type_id                        ,
159         resource_util_category_id           ,
160         org_util_category_id                ,
161         resource_util_weighted              ,
162         org_util_weighted                   ,
163         provisional_flag                    ,
164         reversed_flag                       ,
165         net_zero_flag                       ,
166         reduce_capacity_flag                ,
167         line_num_reversed                   ,
168         creation_date                       ,
169         created_by                          ,
170         last_update_date                    ,
171         last_updated_by                     ,
172         last_update_login                   ,
173         request_id                          ,
174         program_application_id              ,
175         program_id                          ,
176         program_update_date              )
177 -- Start Bug 2592045: Need to select expenditure_organization_id from pa_forecast_items table
178 select
179 -- End Bug 2592045
180         l_forecast_item_id(l_j)                 ,
181         l_amount_type_id(l_j)                   ,
182         l_line_num(l_j)                         ,
183         l_resource_type_code(l_j)               ,
184         l_person_billable_flag(l_j)             ,
185         l_item_uom(l_j)                         ,
186         l_item_date(l_j)                        ,
187         l_item_quantity(l_j)                    ,
188         l_expenditure_org_id(l_j)               ,
189         l_project_org_id(l_j)                   ,
190         l_PJI_SUMMARIZED_FLAG(l_j)        ,
191         l_CAPACITY_QUANTITY(l_j)        ,
192         l_OVERCOMMITMENT_QTY(l_j)        ,
193         l_OVERPROVISIONAL_QTY(l_j)        ,
194         l_OVER_PROV_CONF_QTY(l_j)        ,
195         l_CONFIRMED_QTY(l_j)        ,
196         l_PROVISIONAL_QTY(l_j)        ,
197         l_JOB_ID(l_j)        ,
198         l_PROJECT_ID(l_j)        ,
199         l_RESOURCE_ID(l_j)        ,
200 -- Start Bug 2592045: Need to select expenditure_organization_id from pa_forecast_items table
201         expenditure_organization_id,
202         --l_EXPENDITURE_ORGANIZATION_ID(l_j)        ,
203  -- End Bug 2592045
204         l_pvdr_acct_curr_code(l_j)              ,
205         l_pvdr_acct_amount(l_j)                 ,
206         l_rcvr_acct_curr_code(l_j)              ,
207         l_rcvr_acct_amount(l_j)                 ,
208         l_proj_currency_code(l_j)               ,
209         l_proj_amount(l_j)                      ,
210         l_denom_currency_code(l_j)              ,
211         l_denom_amount(l_j)                     ,
212         l_tp_amount_type(l_j)                   ,
213         l_billable_flag(l_j)                    ,
214         l_forecast_summarized_code(l_j)         ,
215         l_util_summarized_code(l_j)             ,
216         l_work_type_id(l_j)                     ,
217         l_resource_util_category_id(l_j)        ,
218         l_org_util_category_id(l_j)             ,
219         l_resource_util_weighted(l_j)           ,
220         l_org_util_weighted(l_j)                ,
221         l_provisional_flag(l_j)                 ,
222         l_reversed_flag(l_j)                    ,
223         l_net_zero_flag(l_j)                    ,
224         l_reduce_capacity_flag(l_j)             ,
225         l_line_num_reversed(l_j)                ,
226         sysdate                                 ,
227         fnd_global.user_id                      ,
228         sysdate                                 ,
229         fnd_global.user_id                      ,
230         fnd_global.login_id                     ,
231         fnd_global.conc_request_id()            ,
232         fnd_global.prog_appl_id   ()            ,
233         fnd_global.conc_program_id()            ,
234         trunc(sysdate)
235 -- Start Bug 2592045: Finish select statement.
236     from pa_forecast_items fi
237     where fi.forecast_item_id = l_forecast_item_id(l_j);
238 -- End Bug 2592045
239 
240 PA_FORECAST_ITEMS_UTILS.log_message('start of the forecast inser row .... ');
241 PA_DEBUG.Reset_Err_Stack;
242 EXCEPTION
243  WHEN l_empty_tab_record THEN
244   NULL;
245  WHEN OTHERS THEN
246   x_msg_count := 1;
247   x_msg_data  := SQLERRM;
248   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
249   FND_MSG_PUB.add_exc_msg
250        (p_pkg_name   => 'PA_FORECAST_DTLS_PKG.Insert_Rows',
251         p_procedure_name => PA_DEBUG.G_Err_Stack);
252 
253   RAISE;
254 
255  PA_FORECAST_ITEMS_UTILS.log_message('ERROR ....'||sqlerrm);
256 END insert_rows;
257 
258 -- This procedure will update  the record in pa_forecast_items table
259 -- Input parameters
260 -- Parameters                Type                Required  Description
261 -- P_Forecast_Dtls_Tab       FIHDRTABTYP         YES       It contains the forecast items record for details
262 --
263 PROCEDURE update_rows ( p_forecast_dtls_tab                   IN  PA_FORECAST_GLOB.FIDtlTabTyp,
264                         x_return_status                       OUT  NOCOPY VARCHAR2, --File.Sql.39 bug 4440895
265                         x_msg_count                           OUT  NOCOPY NUMBER, --File.Sql.39 bug 4440895
266                         x_msg_data                            OUT  NOCOPY VARCHAR2 ) --File.Sql.39 bug 4440895
267 
268 IS
269  l_forecast_item_id                 PA_PLSQL_DATATYPES.IdTabTyp;
270  l_amount_type_id                   PA_PLSQL_DATATYPES.IdTabTyp;
271  l_line_num                         PA_PLSQL_DATATYPES.NumTabTyp;
272  l_resource_type_code               PA_PLSQL_DATATYPES.Char30TabTyp;
273  l_person_billable_flag             PA_PLSQL_DATATYPES.Char1TabTyp;
274  l_item_uom                         PA_PLSQL_DATATYPES.Char30TabTyp;
275  l_item_date                        PA_PLSQL_DATATYPES.DateTabTyp;
276  l_item_quantity                    PA_PLSQL_DATATYPES.NumTabTyp;
277  l_expenditure_org_id               PA_PLSQL_DATATYPES.IdTabTyp;
278  l_project_org_id                   PA_PLSQL_DATATYPES.IdTabTyp;
279  l_PJI_SUMMARIZED_FLAG              PA_PLSQL_DATATYPES.Char1TabTyp;
280  l_CAPACITY_QUANTITY              PA_PLSQL_DATATYPES.NumTabTyp;
281  l_OVERCOMMITMENT_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
282  l_OVERPROVISIONAL_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
283  l_OVER_PROV_CONF_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
284  l_CONFIRMED_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
285  l_PROVISIONAL_QTY              PA_PLSQL_DATATYPES.NumTabTyp;
286  l_JOB_ID              PA_PLSQL_DATATYPES.NumTabTyp;
287  l_PROJECT_ID              PA_PLSQL_DATATYPES.NumTabTyp;
288  l_RESOURCE_ID              PA_PLSQL_DATATYPES.NumTabTyp;
289  l_EXPENDITURE_ORGANIZATION_ID              PA_PLSQL_DATATYPES.NumTabTyp;
290  l_pvdr_acct_curr_code              PA_PLSQL_DATATYPES.Char30TabTyp;
291  l_pvdr_acct_amount                 PA_PLSQL_DATATYPES.NumTabTyp;
292  l_rcvr_acct_curr_code              PA_PLSQL_DATATYPES.Char30TabTyp;
293  l_rcvr_acct_amount                 PA_PLSQL_DATATYPES.NumTabTyp;
294  l_proj_currency_code               PA_PLSQL_DATATYPES.Char30TabTyp;
295  l_proj_amount                      PA_PLSQL_DATATYPES.NumTabTyp;
296  l_denom_currency_code              PA_PLSQL_DATATYPES.Char30TabTyp;
297  l_denom_amount                     PA_PLSQL_DATATYPES.NumTabTyp;
298  l_tp_amount_type                   PA_PLSQL_DATATYPES.Char30TabTyp;
299  l_billable_flag                    PA_PLSQL_DATATYPES.Char1TabTyp;
300  l_forecast_summarized_code         PA_PLSQL_DATATYPES.Char30TabTyp;
301  l_util_summarized_code             PA_PLSQL_DATATYPES.Char30TabTyp;
302  l_work_type_id                     PA_PLSQL_DATATYPES.IdTabTyp;
303  l_resource_util_category_id        PA_PLSQL_DATATYPES.IdTabTyp;
304  l_org_util_category_id             PA_PLSQL_DATATYPES.IdTabTyp;
305  l_resource_util_weighted           PA_PLSQL_DATATYPES.NumTabTyp;
306  l_org_util_weighted                PA_PLSQL_DATATYPES.NumTabTyp;
307  l_provisional_flag                 PA_PLSQL_DATATYPES.Char1TabTyp;
308  l_reversed_flag                    PA_PLSQL_DATATYPES.Char1TabTyp;
309  l_net_zero_flag                    PA_PLSQL_DATATYPES.Char1TabTyp;
310  l_reduce_capacity_flag             PA_PLSQL_DATATYPES.Char1TabTyp;
311  l_line_num_reversed                PA_PLSQL_DATATYPES.NumTabTyp;
312 
313 
314 BEGIN
315 
316 PA_DEBUG.Init_err_stack( 'PA_FORECAST_DTLS_PKG.Update_Rows');
317 x_return_status := FND_API.G_RET_STS_SUCCESS;
318 
319 /* Checking for the empty table of record */
320   IF (p_forecast_dtls_tab.count = 0 ) THEN
321     PA_FORECAST_ITEMS_UTILS.log_message('count 0 ... before return ... ');
322     RAISE l_empty_tab_record;
323   END IF;
324 
325   PA_FORECAST_ITEMS_UTILS.log_message('start of the forecast inser row .... ');
326 
327 FOR l_j IN p_forecast_dtls_tab.FIRST..p_forecast_dtls_tab.LAST LOOP
328         l_forecast_item_id(l_j)                 := p_forecast_dtls_tab(l_j).forecast_item_id;
329         l_amount_type_id(l_j)                   := p_forecast_dtls_tab(l_j).amount_type_id;
330         l_line_num(l_j)                         := p_forecast_dtls_tab(l_j).line_num;
331         l_resource_type_code(l_j)               := p_forecast_dtls_tab(l_j).resource_type_code;
332         l_person_billable_flag(l_j)             := p_forecast_dtls_tab(l_j).person_billable_flag;
333         l_item_uom(l_j)                         := p_forecast_dtls_tab(l_j).item_uom;
334         l_item_date(l_j)                        := p_forecast_dtls_tab(l_j).item_date;
335         l_item_quantity(l_j)                    := p_forecast_dtls_tab(l_j).item_quantity;
336         l_expenditure_org_id(l_j)               := p_forecast_dtls_tab(l_j).expenditure_org_id;
337         l_project_org_id(l_j)                   := p_forecast_dtls_tab(l_j).project_org_id;
338         l_PJI_SUMMARIZED_FLAG(l_j)              := p_forecast_dtls_tab(l_j).PJI_SUMMARIZED_FLAG;
339         l_CAPACITY_QUANTITY(l_j)              := p_forecast_dtls_tab(l_j).CAPACITY_QUANTITY;
340         l_OVERCOMMITMENT_QTY(l_j)              := p_forecast_dtls_tab(l_j).OVERCOMMITMENT_QTY;
341         l_OVERPROVISIONAL_QTY(l_j)              := p_forecast_dtls_tab(l_j).OVERPROVISIONAL_QTY;
342         l_OVER_PROV_CONF_QTY(l_j)              := p_forecast_dtls_tab(l_j).OVER_PROV_CONF_QTY;
343         l_CONFIRMED_QTY(l_j)              := p_forecast_dtls_tab(l_j).CONFIRMED_QTY;
344         l_PROVISIONAL_QTY(l_j)              := p_forecast_dtls_tab(l_j).PROVISIONAL_QTY;
345         l_JOB_ID(l_j)              := p_forecast_dtls_tab(l_j).JOB_ID;
346         l_PROJECT_ID(l_j)              := p_forecast_dtls_tab(l_j).PROJECT_ID;
347         l_RESOURCE_ID(l_j)              := p_forecast_dtls_tab(l_j).RESOURCE_ID;
348         l_EXPENDITURE_ORGANIZATION_ID(l_j)              := p_forecast_dtls_tab(l_j).EXPENDITURE_ORGANIZATION_ID;
349         l_pvdr_acct_curr_code(l_j)              := p_forecast_dtls_tab(l_j).pvdr_acct_curr_code;
350         l_pvdr_acct_amount(l_j)                 := p_forecast_dtls_tab(l_j).pvdr_acct_amount;
351         l_rcvr_acct_curr_code(l_j)              := p_forecast_dtls_tab(l_j).rcvr_acct_curr_code;
352         l_rcvr_acct_amount(l_j)                 := p_forecast_dtls_tab(l_j).rcvr_acct_amount;
353         l_proj_currency_code(l_j)               := p_forecast_dtls_tab(l_j).proj_currency_code;
354         l_proj_amount(l_j)                      := p_forecast_dtls_tab(l_j).proj_amount;
355         l_denom_currency_code(l_j)              := p_forecast_dtls_tab(l_j).denom_currency_code;
356         l_denom_amount(l_j)                     := p_forecast_dtls_tab(l_j).denom_amount;
357         l_tp_amount_type(l_j)                   := p_forecast_dtls_tab(l_j).tp_amount_type;
358         l_billable_flag(l_j)                    := p_forecast_dtls_tab(l_j).billable_flag;
359         l_forecast_summarized_code(l_j)         := p_forecast_dtls_tab(l_j).forecast_summarized_code;
360         l_util_summarized_code(l_j)             := p_forecast_dtls_tab(l_j).util_summarized_code;
361         l_work_type_id(l_j)                     := p_forecast_dtls_tab(l_j).work_type_id;
362         l_resource_util_category_id(l_j)        := p_forecast_dtls_tab(l_j).resource_util_category_id;
363         l_org_util_category_id(l_j)             := p_forecast_dtls_tab(l_j).org_util_category_id;
364         l_resource_util_weighted(l_j)           := p_forecast_dtls_tab(l_j).resource_util_weighted;
365         l_org_util_weighted(l_j)                := p_forecast_dtls_tab(l_j).org_util_weighted;
366         l_provisional_flag(l_j)                 := p_forecast_dtls_tab(l_j).provisional_flag;
367         l_reversed_flag(l_j)                    := p_forecast_dtls_tab(l_j).reversed_flag;
368         l_net_zero_flag(l_j)                    := p_forecast_dtls_tab(l_j).net_zero_flag;
369         l_reduce_capacity_flag(l_j)             := p_forecast_dtls_tab(l_j).reduce_capacity_flag;
370         l_line_num_reversed(l_j)                := p_forecast_dtls_tab(l_j).line_num_reversed;
371 
372 END LOOP;
373 
374 FORALL l_J IN p_forecast_dtls_tab.FIRST..p_forecast_dtls_tab.LAST
375  UPDATE PA_FORECAST_ITEM_DETAILS
376  SET
377         forecast_item_id                 = l_forecast_item_id(l_j)        ,
378         amount_type_id                   = l_amount_type_id(l_j)          ,
379         line_num                         = l_line_num(l_j)                ,
380         resource_type_code               = l_resource_type_code(l_j)      ,
381         person_billable_flag             = l_person_billable_flag(l_j)    ,
382         item_uom                         = l_item_uom(l_j)                ,
383         item_date                        = l_item_date(l_j)               ,
384         item_quantity                    = l_item_quantity(l_j)           ,
385         expenditure_org_id               = l_expenditure_org_id(l_j)      ,
386         project_org_id                   = l_project_org_id(l_j)          ,
387         PJI_SUMMARIZED_FLAG              = l_PJI_SUMMARIZED_FLAG(l_j)     ,
388         CAPACITY_QUANTITY              = l_CAPACITY_QUANTITY(l_j)     ,
389         OVERCOMMITMENT_QTY              = l_OVERCOMMITMENT_QTY(l_j)     ,
390         OVERPROVISIONAL_QTY              = l_OVERPROVISIONAL_QTY(l_j)     ,
391         OVER_PROV_CONF_QTY              = l_OVER_PROV_CONF_QTY(l_j)     ,
392         CONFIRMED_QTY              = l_CONFIRMED_QTY(l_j)     ,
393         PROVISIONAL_QTY              = l_PROVISIONAL_QTY(l_j)     ,
394         JOB_ID              = l_JOB_ID(l_j)     ,
395         PROJECT_ID              = l_PROJECT_ID(l_j)     ,
396         RESOURCE_ID              = l_RESOURCE_ID(l_j)     ,
397 -- Start Bug 2592045
398         --EXPENDITURE_ORGANIZATION_ID              = l_EXPENDITURE_ORGANIZATION_ID(l_j)     ,
399         EXPENDITURE_ORGANIZATION_ID              =
400            (select expenditure_organization_id from pa_forecast_items fi
401             where fi.forecast_item_id = l_forecast_item_id(l_j)),
402  -- End Bug 2592045
403         pvdr_acct_curr_code              = l_pvdr_acct_curr_code(l_j)     ,
404         pvdr_acct_amount                 = l_pvdr_acct_amount(l_j)        ,
405         rcvr_acct_curr_code              = l_rcvr_acct_curr_code(l_j)     ,
406         rcvr_acct_amount                 = l_rcvr_acct_amount(l_j)        ,
407         proj_currency_code               = l_proj_currency_code(l_j)      ,
408         proj_amount                      = l_proj_amount(l_j)             ,
409         denom_currency_code              = l_denom_currency_code(l_j)     ,
410         denom_amount                     = l_denom_amount(l_j)            ,
411         tp_amount_type                   = l_tp_amount_type(l_j)          ,
412         billable_flag                    = l_billable_flag(l_j)           ,
413         forecast_summarized_code         = l_forecast_summarized_code(l_j),
414         util_summarized_code             = l_util_summarized_code(l_j)    ,
415         work_type_id                     = l_work_type_id(l_j)            ,
416         resource_util_category_id        = l_resource_util_category_id(l_j),
417         org_util_category_id             = l_org_util_category_id(l_j)     ,
418         resource_util_weighted           = l_resource_util_weighted(l_j)   ,
419         org_util_weighted                = l_org_util_weighted(l_j)        ,
420         provisional_flag                 = l_provisional_flag(l_j)        ,
421         reversed_flag                    = l_reversed_flag(l_j)           ,
422         reduce_capacity_flag             = l_reduce_capacity_flag(l_j)    ,
423         net_zero_flag                    = l_net_zero_flag(l_j)           ,
424         line_num_reversed                = l_line_num_reversed(l_j)       ,
425         last_update_date                 = sysdate 			,
426         last_updated_by                  = fnd_global.user_id		,
427         last_update_login                = fnd_global.login_id
428  WHERE  forecast_item_id                 = l_forecast_item_id(l_j)
429  AND    line_num                         = l_line_num(l_j);
430 
431  PA_FORECAST_ITEMS_UTILS.log_message('end of update row .... ');
432 PA_DEBUG.Reset_Err_Stack;
433 EXCEPTION
434  WHEN l_empty_tab_record THEN
435   NULL;
436  WHEN OTHERS THEN
437   x_msg_count := 1;
438   x_msg_data  := SQLERRM;
439   x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
440   FND_MSG_PUB.add_exc_msg
441        (p_pkg_name   => 'PA_FORECAST_DTLS_PKG.Update_Rows',
442         p_procedure_name => PA_DEBUG.G_Err_Stack);
443   RAISE;
444 
445  PA_FORECAST_ITEMS_UTILS.log_message('ERROR in update row '||sqlerrm);
446 END update_rows;
447 
448 END PA_FORECAST_DTLS_PKG;