1: PACKAGE BODY CE_CASH_FCST AS
2: /* $Header: cefcshfb.pls 120.23.12020000.2 2012/07/04 06:17:31 vnetan ship $ */
3:
4: --
5: -- Get Header Information
119: scenario can occur due to the inability of flex fields to handle
120: conditional value sets the way CE needs it and will result in erroneous
121: forecast amounts. */
122:
123: cep_standard.debug('>>CE_CASH_FCST.set_parameters'); -- 14164001: Added debug
124: IF (p_src_curr_type = 'E')
125: THEN
126: GL_CURRENCY_API.get_relation(
127: p_forecast_currency,
173: G_rp_factor := p_factor;
174:
175: IF (p_src_currency IS NULL)
176: THEN
177: CE_CASH_FCST.G_rp_src_curr_type := 'A';
178: END IF;
179:
180: IF(p_sub_request = 'Y' AND p_forecast_id IS NULL)
181: THEN
183: ELSE
184: G_parent_process := FALSE;
185: END IF;
186:
187: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
188: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
189: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: G_parent_process := FALSE;
185: END IF;
186:
187: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
188: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
189: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: END IF;
186:
187: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
188: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
189: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186:
187: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
188: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
189: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
188: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
189: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
189: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
189: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
202: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
195: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
202: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
203: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
196: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
202: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
203: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
204: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
197: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
202: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
203: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
204: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
205:
198: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
202: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
203: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
204: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
205:
206: --
199: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
202: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
203: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
204: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
205:
206: --
207: -- Set View constants
200: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
201: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
202: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
203: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
204: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
205:
206: --
207: -- Set View constants
208: -- 14164001: Added named parameters
214: pn_start_date => G_rp_forecast_start_date,
215: pn_min_col => NULL,
216: pn_max_col => NULL);
217:
218: cep_standard.debug('<
220: END set_parameters;
221:
222:
397: CURSOR from_curr(orig_curr VARCHAR2) IS
398: SELECT currency_code
399: FROM fnd_currencies
400: WHERE enabled_flag = 'Y'
401: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
402: AND currency_code <> 'STAT'
403: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
404: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
405: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
399: FROM fnd_currencies
400: WHERE enabled_flag = 'Y'
401: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
402: AND currency_code <> 'STAT'
403: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
404: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
405: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
406:
407: CURSOR bad_curr IS
400: WHERE enabled_flag = 'Y'
401: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
402: AND currency_code <> 'STAT'
403: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
404: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
405: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
406:
407: CURSOR bad_curr IS
408: SELECT currency_code
401: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
402: AND currency_code <> 'STAT'
403: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
404: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
405: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
406:
407: CURSOR bad_curr IS
408: SELECT currency_code
409: FROM fnd_currencies
407: CURSOR bad_curr IS
408: SELECT currency_code
409: FROM fnd_currencies
410: WHERE enabled_flag = 'Y'
411: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
412: AND currency_code <> 'STAT'
413: AND ( CE_CASH_FCST.G_rp_exchange_date <
414: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
415: CE_CASH_FCST.G_rp_exchange_date >
409: FROM fnd_currencies
410: WHERE enabled_flag = 'Y'
411: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
412: AND currency_code <> 'STAT'
413: AND ( CE_CASH_FCST.G_rp_exchange_date <
414: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
415: CE_CASH_FCST.G_rp_exchange_date >
416: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
417:
410: WHERE enabled_flag = 'Y'
411: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
412: AND currency_code <> 'STAT'
413: AND ( CE_CASH_FCST.G_rp_exchange_date <
414: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
415: CE_CASH_FCST.G_rp_exchange_date >
416: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
417:
418: CURSOR base_curr IS
411: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
412: AND currency_code <> 'STAT'
413: AND ( CE_CASH_FCST.G_rp_exchange_date <
414: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
415: CE_CASH_FCST.G_rp_exchange_date >
416: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
417:
418: CURSOR base_curr IS
419: SELECT distinct(org.currency_code)
412: AND currency_code <> 'STAT'
413: AND ( CE_CASH_FCST.G_rp_exchange_date <
414: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
415: CE_CASH_FCST.G_rp_exchange_date >
416: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
417:
418: CURSOR base_curr IS
419: SELECT distinct(org.currency_code)
420: FROM ce_forecast_rows r,
419: SELECT distinct(org.currency_code)
420: FROM ce_forecast_rows r,
421: ce_forecast_oe_orgs_v org
422: WHERE r.row_number BETWEEN
423: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
424: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
425: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
426: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
427: AND r.trx_type = 'OEO'
420: FROM ce_forecast_rows r,
421: ce_forecast_oe_orgs_v org
422: WHERE r.row_number BETWEEN
423: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
424: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
425: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
426: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
427: AND r.trx_type = 'OEO'
428: AND org.org_id = NVL(r.org_id, org.org_id);
421: ce_forecast_oe_orgs_v org
422: WHERE r.row_number BETWEEN
423: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
424: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
425: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
426: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
427: AND r.trx_type = 'OEO'
428: AND org.org_id = NVL(r.org_id, org.org_id);
429:
422: WHERE r.row_number BETWEEN
423: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
424: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
425: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
426: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
427: AND r.trx_type = 'OEO'
428: AND org.org_id = NVL(r.org_id, org.org_id);
429:
430: curr FND_CURRENCIES.currency_code%TYPE;
432: error_msg FND_NEW_MESSAGES.message_text%TYPE;
433: xrate NUMBER;
434: all_exist_flag BOOLEAN := TRUE;
435: BEGIN
436: cep_standard.debug('>>CE_CASH_FCST.populate_base_xrate_table');
437:
438: --
439: -- For each base currencies used by OE rows, determine it's xrate from
440: -- valid currencies to the base currency.
443: LOOP
444: FETCH base_curr INTO to_curr;
445: EXIT WHEN (base_curr%NOTFOUND OR base_curr%NOTFOUND IS NULL);
446:
447: IF( to_curr <> CE_CASH_FCST.G_rp_forecast_currency)THEN
448: OPEN from_curr(to_curr);
449: LOOP
450:
451: FETCH from_curr INTO curr;
451: FETCH from_curr INTO curr;
452: EXIT WHEN (from_curr%NOTFOUND OR from_curr%NOTFOUND IS NULL);
453: BEGIN
454: xrate := GL_CURRENCY_API.get_rate(curr, to_curr,
455: CE_CASH_FCST.G_rp_exchange_date,
456: CE_CASH_FCST.G_rp_exchange_type);
457: insert into CE_CURRENCY_RATES_TEMP
458: (forecast_request_id, currency_code, exchange_rate, to_currency)
459: values (CE_CASH_FCST.G_forecast_id, curr, xrate, to_curr);
452: EXIT WHEN (from_curr%NOTFOUND OR from_curr%NOTFOUND IS NULL);
453: BEGIN
454: xrate := GL_CURRENCY_API.get_rate(curr, to_curr,
455: CE_CASH_FCST.G_rp_exchange_date,
456: CE_CASH_FCST.G_rp_exchange_type);
457: insert into CE_CURRENCY_RATES_TEMP
458: (forecast_request_id, currency_code, exchange_rate, to_currency)
459: values (CE_CASH_FCST.G_forecast_id, curr, xrate, to_curr);
460: cep_standard.debug(' Exchange info - '||curr||'->'||to_curr||' has rate '||to_char(xrate));
455: CE_CASH_FCST.G_rp_exchange_date,
456: CE_CASH_FCST.G_rp_exchange_type);
457: insert into CE_CURRENCY_RATES_TEMP
458: (forecast_request_id, currency_code, exchange_rate, to_currency)
459: values (CE_CASH_FCST.G_forecast_id, curr, xrate, to_curr);
460: cep_standard.debug(' Exchange info - '||curr||'->'||to_curr||' has rate '||to_char(xrate));
461: EXCEPTION
462: WHEN OTHERS THEN
463: -- WHEN NO_RATE THEN
461: EXCEPTION
462: WHEN OTHERS THEN
463: -- WHEN NO_RATE THEN
464: -- bug 1200912
465: IF (curr = CE_CASH_FCST.G_rp_src_currency) THEN
466: all_exist_flag := FALSE;
467: FND_MESSAGE.set_name ('CE','CE_FC_MISSING_EXCHANGE_RATE');
468: FND_MESSAGE.set_token('FROM_CURR', curr);
469: FND_MESSAGE.set_token('TO_CURR',
466: all_exist_flag := FALSE;
467: FND_MESSAGE.set_name ('CE','CE_FC_MISSING_EXCHANGE_RATE');
468: FND_MESSAGE.set_token('FROM_CURR', curr);
469: FND_MESSAGE.set_token('TO_CURR',
470: CE_CASH_FCST.G_rp_forecast_currency);
471: error_msg := FND_MESSAGE.GET;
472: CE_FORECAST_ERRORS_PKG.insert_row(G_forecast_id,
473: G_rp_forecast_header_id, null,'CE_FC_MISSING_RATE', error_msg);
474: END IF;
480: -- Insert constant rate (1) for base_currency to base_currency
481: --
482: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id, currency_code,
483: exchange_rate, to_currency)
484: values (CE_CASH_FCST.G_forecast_id, to_curr, 1, to_curr);
485:
486: OPEN bad_curr;
487: LOOP
488: FETCH bad_curr INTO curr;
501: END IF;
502: END LOOP;
503: CLOSE base_curr;
504:
505: cep_standard.debug('<
507:
508: EXCEPTION
509: WHEN OTHERS THEN
534: CURSOR C IS
535: SELECT currency_code
536: FROM fnd_currencies
537: WHERE enabled_flag = 'Y'
538: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
539: AND currency_code <> 'STAT'
540: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
541: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
542: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
536: FROM fnd_currencies
537: WHERE enabled_flag = 'Y'
538: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
539: AND currency_code <> 'STAT'
540: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
541: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
542: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
543:
544: CURSOR bad_curr IS
537: WHERE enabled_flag = 'Y'
538: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
539: AND currency_code <> 'STAT'
540: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
541: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
542: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
543:
544: CURSOR bad_curr IS
545: SELECT currency_code
538: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
539: AND currency_code <> 'STAT'
540: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
541: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
542: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
543:
544: CURSOR bad_curr IS
545: SELECT currency_code
546: FROM fnd_currencies
544: CURSOR bad_curr IS
545: SELECT currency_code
546: FROM fnd_currencies
547: WHERE enabled_flag = 'Y'
548: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
549: AND currency_code <> 'STAT'
550: AND ( CE_CASH_FCST.G_rp_exchange_date <
551: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
552: CE_CASH_FCST.G_rp_exchange_date >
546: FROM fnd_currencies
547: WHERE enabled_flag = 'Y'
548: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
549: AND currency_code <> 'STAT'
550: AND ( CE_CASH_FCST.G_rp_exchange_date <
551: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
552: CE_CASH_FCST.G_rp_exchange_date >
553: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
554:
547: WHERE enabled_flag = 'Y'
548: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
549: AND currency_code <> 'STAT'
550: AND ( CE_CASH_FCST.G_rp_exchange_date <
551: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
552: CE_CASH_FCST.G_rp_exchange_date >
553: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
554:
555: curr FND_CURRENCIES.currency_code%TYPE;
548: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
549: AND currency_code <> 'STAT'
550: AND ( CE_CASH_FCST.G_rp_exchange_date <
551: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
552: CE_CASH_FCST.G_rp_exchange_date >
553: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
554:
555: curr FND_CURRENCIES.currency_code%TYPE;
556: from_curr FND_CURRENCIES.currency_code%TYPE;
549: AND currency_code <> 'STAT'
550: AND ( CE_CASH_FCST.G_rp_exchange_date <
551: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
552: CE_CASH_FCST.G_rp_exchange_date >
553: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
554:
555: curr FND_CURRENCIES.currency_code%TYPE;
556: from_curr FND_CURRENCIES.currency_code%TYPE;
557: to_curr FND_CURRENCIES.currency_code%TYPE;
565: from_curr_is_emu VARCHAR2(1);
566: l_currency_type VARCHAR2(5);
567:
568: BEGIN
569: cep_standard.debug('>>CE_CASH_FCST.populate_xrate_table');
570:
571: --
572: -- Insert constant rate (1) for forecast_currency to forecast_currency
573: --
572: -- Insert constant rate (1) for forecast_currency to forecast_currency
573: --
574: insert into CE_CURRENCY_RATES_TEMP
575: (forecast_request_id, currency_code, exchange_rate, to_currency)
576: values (CE_CASH_FCST.G_forecast_id, CE_CASH_FCST.G_rp_forecast_currency, 1,
577: CE_CASH_FCST.G_rp_forecast_currency);
578:
579: IF( G_rp_forecast_currency <> G_rp_src_currency OR
580: G_rp_src_curr_type <> 'E')THEN
573: --
574: insert into CE_CURRENCY_RATES_TEMP
575: (forecast_request_id, currency_code, exchange_rate, to_currency)
576: values (CE_CASH_FCST.G_forecast_id, CE_CASH_FCST.G_rp_forecast_currency, 1,
577: CE_CASH_FCST.G_rp_forecast_currency);
578:
579: IF( G_rp_forecast_currency <> G_rp_src_currency OR
580: G_rp_src_curr_type <> 'E')THEN
581:
581:
582: SELECT DECODE(COUNT(*),0,'N','Y')
583: INTO fcast_curr_is_emu
584: FROM FND_CURRENCIES
585: WHERE currency_code = CE_CASH_FCST.G_rp_forecast_currency AND
586: derive_type = 'EMU';
587:
588: SELECT DECODE(COUNT(*),0,'N','Y')
589: INTO src_curr_is_emu
587:
588: SELECT DECODE(COUNT(*),0,'N','Y')
589: INTO src_curr_is_emu
590: FROM FND_CURRENCIES
591: WHERE currency_code = CE_CASH_FCST.G_rp_src_currency AND
592: derive_type = 'EMU';
593:
594: IF ( (fcast_curr_is_emu = 'Y' OR src_curr_is_emu = 'Y') OR
595: G_rp_src_curr_type = 'A' ) THEN
620:
621: EXIT WHEN (C%NOTFOUND OR C%NOTFOUND IS NULL);
622: BEGIN
623: xrate := GL_CURRENCY_API.get_rate(from_curr, G_rp_forecast_currency,
624: CE_CASH_FCST.G_rp_exchange_date,
625: CE_CASH_FCST.G_rp_exchange_type);
626: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id,
627: currency_code, exchange_rate, to_currency)
628: values (CE_CASH_FCST.G_forecast_id, from_curr, xrate,
621: EXIT WHEN (C%NOTFOUND OR C%NOTFOUND IS NULL);
622: BEGIN
623: xrate := GL_CURRENCY_API.get_rate(from_curr, G_rp_forecast_currency,
624: CE_CASH_FCST.G_rp_exchange_date,
625: CE_CASH_FCST.G_rp_exchange_type);
626: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id,
627: currency_code, exchange_rate, to_currency)
628: values (CE_CASH_FCST.G_forecast_id, from_curr, xrate,
629: G_rp_forecast_currency);
624: CE_CASH_FCST.G_rp_exchange_date,
625: CE_CASH_FCST.G_rp_exchange_type);
626: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id,
627: currency_code, exchange_rate, to_currency)
628: values (CE_CASH_FCST.G_forecast_id, from_curr, xrate,
629: G_rp_forecast_currency);
630: cep_standard.debug(' Exchange info - '||from_curr||' has rate '||to_char(xrate));
631: EXCEPTION
632: WHEN OTHERS THEN
633: -- WHEN NO_RATE THEN
634: skip_err_log := FALSE;
635:
636: -- bug 1200912
637: -- from_curr always <> CE_CASH_FCST.G_rp_src_currency
638: IF (G_rp_src_curr_type <> 'A'
639: AND from_curr <> CE_CASH_FCST.G_rp_src_currency) THEN
640: skip_err_log := TRUE;
641: END IF;
635:
636: -- bug 1200912
637: -- from_curr always <> CE_CASH_FCST.G_rp_src_currency
638: IF (G_rp_src_curr_type <> 'A'
639: AND from_curr <> CE_CASH_FCST.G_rp_src_currency) THEN
640: skip_err_log := TRUE;
641: END IF;
642:
643: to_curr := CE_CASH_FCST.G_rp_forecast_currency;
639: AND from_curr <> CE_CASH_FCST.G_rp_src_currency) THEN
640: skip_err_log := TRUE;
641: END IF;
642:
643: to_curr := CE_CASH_FCST.G_rp_forecast_currency;
644:
645: IF (from_curr_is_emu = 'N' and fcast_curr_is_emu = 'Y') THEN
646: SELECT decode( derive_type,
647: 'EURO', 'EURO',
644:
645: IF (from_curr_is_emu = 'N' and fcast_curr_is_emu = 'Y') THEN
646: SELECT decode( derive_type,
647: 'EURO', 'EURO',
648: 'EMU', decode( sign( trunc(CE_CASH_FCST.G_rp_exchange_date)
649: - trunc(derive_effective)),
650: -1, 'OTHER',
651: 'EMU'),
652: 'OTHER' )
658: END IF;
659: ELSIF (from_curr_is_emu = 'Y' and fcast_curr_is_emu = 'N') THEN
660: SELECT decode( derive_type,
661: 'EURO', 'EURO',
662: 'EMU', decode( sign( trunc(CE_CASH_FCST.G_rp_exchange_date)
663: - trunc(derive_effective)),
664: -1, 'OTHER',
665: 'EMU'),
666: 'OTHER' )
698: EXIT WHEN (bad_curr%NOTFOUND OR bad_curr%NOTFOUND IS NULL);
699: BEGIN
700: all_exist_flag := FALSE;
701: IF (G_rp_src_curr_type = 'A'
702: OR curr = CE_CASH_FCST.G_rp_src_currency) THEN
703: FND_MESSAGE.set_name ('CE','CE_FC_BAD_CURRENCY');
704: FND_MESSAGE.set_token('BAD_CURR', curr);
705: error_msg := FND_MESSAGE.GET;
706: CE_FORECAST_ERRORS_PKG.insert_row(G_forecast_id,
711: CLOSE bad_curr;
712:
713: END IF;
714:
715: cep_standard.debug('<
717:
718: EXCEPTION
719: WHEN OTHERS THEN
742: PROCEDURE clear_xrate_table IS
743: BEGIN
744: cep_standard.debug('Delete all xrate information');
745: delete from CE_CURRENCY_RATES_TEMP
746: where forecast_request_id = CE_CASH_FCST.G_forecast_id;
747: EXCEPTION
748: WHEN OTHERS THEN
749: cep_standard.debug('EXCEPTION - OTHERS: clear_xrate_table');
750: RAISE;
818: AND (org.org_id = DECODE(G_org_id, -1, org.org_id,-99, org.org_id, G_org_id)
819: or org.org_id IS NULL);
820:
821: BEGIN
822: cep_standard.debug('>>CE_CASH_FCST.valid_calendar_name');
823:
824: IF(G_app_short_name = 'GL')THEN
825: SELECT period_set_name, set_of_books_id, name, currency_code
826: INTO calendar, sob_id, sob_name, G_sob_currency_code
853: END IF;
854: END LOOP;
855: END IF;
856:
857: cep_standard.debug('<
859: EXCEPTION
860: WHEN OTHERS THEN
861: cep_standard.debug('EXCEPTION -OTHERS:valid_calendar_name');
901:
902: return valid_col;
903: EXCEPTION
904: WHEN OTHERS THEN
905: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_col_info');
906: RAISE;
907: END valid_col_info;
908:
909: /* ---------------------------------------------------------------------
928: days_from NUMBER;
929: days_to NUMBER;
930: all_valid BOOLEAN DEFAULT TRUE;
931: BEGIN
932: cep_standard.debug('>>CE_CASH_FCST.valid_col_range');
933:
934: G_min_col := CEFC_VIEW_CONST.get_min_col;
935: G_max_col := CEFC_VIEW_CONST.get_max_col;
936: G_invalid_overdue := FALSE;
961:
962: FETCH cCol INTO cid, col_num, days_from, days_to;
963: END LOOP;
964:
965: cep_standard.debug('<
967:
968: EXCEPTION
969: WHEN OTHERS THEN
967:
968: EXCEPTION
969: WHEN OTHERS THEN
970: IF(cCol%ISOPEN)THEN CLOSE cCol; END IF;
971: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_col_range');
972: RAISE;
973: END valid_col_range;
974:
975:
1055: return valid_row;
1056: EXCEPTION
1057: WHEN OTHERS THEN
1058: IF f_row_cursor%ISOPEN THEN CLOSE f_row_cursor; END IF;
1059: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_row_info');
1060: RAISE;
1061: END valid_row_info;
1062:
1063:
1117: AND forecast_header_id = p_forecast_header_id
1118: AND trx_type <> 'GLC';
1119:
1120: BEGIN
1121: cep_standard.debug('>> CE_CASH_FCST.submit_child_requests ');
1122:
1123: open CRowNumber(G_rp_forecast_header_id,G_rp_rownum_from, G_rp_rownum_to);
1124: LOOP
1125: FETCH CRowNumber INTO G_row_number;
1208: CLOSE CRowNumber;
1209: EXCEPTION
1210: WHEN OTHERS THEN
1211: IF CRowNumber%ISOPEN THEN CLOSE CRowNumber; END IF;
1212: cep_standard.debug('EXCEPTION: CE_CASH_FCST.submit_child_requests');
1213: RAISE;
1214: END submit_child_requests;
1215:
1216: /* ---------------------------------------------------------------------
1329: END IF;
1330:
1331: EXCEPTION
1332: WHEN OTHERS THEN
1333: cep_standard.debug('EXCEPTION: CE_CASH_FCST.create_forecast_header ');
1334: RAISE;
1335: END create_forecast_header;
1336:
1337: /* ---------------------------------------------------------------------
1418:
1419: return valid_pmr;
1420: EXCEPTION
1421: WHEN OTHERS THEN
1422: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_forecast_run');
1423: END valid_forecast_run;
1424:
1425: /* ---------------------------------------------------------------------
1426: | PUBLIC PROCEDURE |
1448: req_data VARCHAR2(30);
1449: l_status VARCHAR2(1);
1450: col_setup VARCHAR2(1);
1451: BEGIN
1452: cep_standard.debug('>>CE_CASH_FCST.create_forecast');
1453:
1454: counter := 0;
1455: --
1456: -- Get forecast header info
1509: RETURN;
1510: END IF;
1511:
1512: -- Populate exchange information from GL for forecast currency
1513: IF ( CE_CASH_FCST.G_rp_exchange_type <> 'User'
1514: OR CE_CASH_FCST.G_rp_exchange_type IS NULL )
1515: THEN
1516: IF( NOT populate_xrate_table )
1517: THEN
1510: END IF;
1511:
1512: -- Populate exchange information from GL for forecast currency
1513: IF ( CE_CASH_FCST.G_rp_exchange_type <> 'User'
1514: OR CE_CASH_FCST.G_rp_exchange_type IS NULL )
1515: THEN
1516: IF( NOT populate_xrate_table )
1517: THEN
1518: UPDATE ce_forecasts
1527: -- only and not in functional currency.
1528:
1529: IF (NOT G_gl_cash_only)
1530: THEN
1531: IF( CE_CASH_FCST.G_rp_src_curr_type = 'F' AND
1532: CE_CASH_FCST.G_rp_amount_threshold IS NOT NULL )
1533: THEN
1534: IF( NOT populate_base_xrate_table )
1535: THEN
1528:
1529: IF (NOT G_gl_cash_only)
1530: THEN
1531: IF( CE_CASH_FCST.G_rp_src_curr_type = 'F' AND
1532: CE_CASH_FCST.G_rp_amount_threshold IS NOT NULL )
1533: THEN
1534: IF( NOT populate_base_xrate_table )
1535: THEN
1536: UPDATE ce_forecasts
1717: IF f_header_cursor%ISOPEN THEN
1718: CLOSE f_header_cursor;
1719: END IF;
1720:
1721: cep_standard.debug('EXCEPTION: CE_CASH_FCST.cash_forecast');
1722: RAISE;
1723: END create_forecast;
1724:
1725:
1792:
1793: error_msg FND_NEW_MESSAGES.message_text%TYPE;
1794: p_amount_threshold NUMBER;
1795: BEGIN
1796: cep_standard.debug('>>CE_CASH_FCST.Forecast (with p_dummy)'); -- 14164001: Added
1797:
1798: -- populate ce_security_profiles_gt table with ce_security_profiles_v
1799: CEP_STANDARD.init_security; --for bug 5702438
1800:
1827: -- Bug 14164001: Obsoleted
1828: -- IF (p_display_debug = 'Y') THEN
1829: -- cep_standard.enable_debug(p_debug_path, p_debug_file);
1830: -- END IF;
1831: -- cep_standard.debug('>>CE_CASH_FCST.Forecast');
1832:
1833: IF (p_start_project_num IS NULL AND p_end_project_num IS NULL)
1834: THEN
1835: set_parameters(
1895: -- IF (p_display_debug = 'Y') THEN
1896: -- cep_standard.disable_debug(p_display_debug);
1897: -- END IF;
1898: END IF;
1899: cep_standard.debug('<
1901: END Forecast;
1902:
1903: /* ---------------------------------------------------------------------
1969: error_msg FND_NEW_MESSAGES.message_text%TYPE;
1970: p_amount_threshold NUMBER;
1971:
1972: BEGIN
1973: cep_standard.debug('>>CE_CASH_FCST.Forecast (without p_dummy)');
1974: -- populate ce_security_profiles_gt table with ce_security_profiles_v
1975: CEP_STANDARD.init_security;
1976:
1977: -- bug 4345353 convert amount threshold from canonical to number
2072: -- Bug 14164001: Obsoleted
2073: -- IF (p_display_debug = 'Y') THEN
2074: -- cep_standard.disable_debug(p_display_debug);
2075: -- END IF;
2076: cep_standard.debug('<
2078: END Forecast;
2079:
2080: END CE_CASH_FCST;
2076: cep_standard.debug('<
2078: END Forecast;
2079:
2080: END CE_CASH_FCST;