1: PACKAGE BODY CE_CASH_FCST AS
2: /* $Header: cefcshfb.pls 120.22.12000000.2 2007/03/30 15:53:29 kbabu ship $ */
3:
4: --
5: -- Get Header Information
138: ELSE
139: x_exchange_type := p_exchange_type;
140: END IF;
141:
142: cep_standard.debug('>>CE_CASH_FCST.set_parameters');
143: G_rp_forecast_header_id := p_forecast_header_id;
144: G_rp_forecast_runname := p_forecast_runname;
145: G_rp_forecast_start_date := to_date(p_forecast_start_date,'YYYY/MM/DD HH24:MI:SS');
146: G_rp_calendar_name := p_calendar_name ;
167: G_rp_include_sub_account := p_include_sub_account;
168: G_rp_factor := p_factor;
169:
170: IF (p_src_currency IS NULL) THEN
171: CE_CASH_FCST.G_rp_src_curr_type := 'A';
172: END IF;
173: IF(p_sub_request = 'Y' AND p_forecast_id IS NULL)THEN
174: G_parent_process := TRUE;
175: ELSE
175: ELSE
176: G_parent_process := FALSE;
177: END IF;
178:
179: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
180: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
181: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
176: G_parent_process := FALSE;
177: END IF;
178:
179: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
180: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
181: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
177: END IF;
178:
179: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
180: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
181: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
178:
179: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
180: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
181: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
179: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_header_id : '||G_rp_forecast_header_id);
180: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
181: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
180: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_runname : '||G_rp_forecast_runname);
181: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: cep_standard.debug('CE_CASH_FCST.G_rp_src_curr_type : '||G_rp_src_curr_type);
181: cep_standard.debug('CE_CASH_FCST.G_rp_calendar_name : '||G_rp_calendar_name);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: 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_src_currency : '||G_rp_src_currency);
182: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_date : '||G_rp_forecast_start_date);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: 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_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
183: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_start_period : '||G_rp_forecast_start_period);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: 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_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
184: cep_standard.debug('CE_CASH_FCST.G_rp_forecast_currency : '||G_rp_forecast_currency);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: 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_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
185: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_type : '||G_rp_exchange_type);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: 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_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
186: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_date : '||G_rp_exchange_date);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: 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_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
187: cep_standard.debug('CE_CASH_FCST.G_rp_exchange_rate : '||G_rp_exchange_rate);
188: 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_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
195: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
188: 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_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
195: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
196: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
189: cep_standard.debug('CE_CASH_FCST.G_rp_src_currency : '||G_rp_src_currency);
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
195: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
196: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
197:
190: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_from : '||G_rp_rownum_from);
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
195: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
196: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
197:
198: --
191: cep_standard.debug('CE_CASH_FCST.G_rp_rownum_to : '||G_rp_rownum_to);
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
195: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
196: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
197:
198: --
199: -- Set View constants
192: cep_standard.debug('CE_CASH_FCST.G_rp_sub_request : '||G_rp_sub_request);
193: cep_standard.debug('CE_CASH_FCST.G_forecast_id : '||G_forecast_id);
194: cep_standard.debug('CE_CASH_FCST.G_display_debug : '||G_display_debug);
195: cep_standard.debug('CE_CASH_FCST.G_debug_path : '||G_debug_path);
196: cep_standard.debug('CE_CASH_FCST.G_debug_file : '||G_debug_file);
197:
198: --
199: -- Set View constants
200: --
383: CURSOR from_curr(orig_curr VARCHAR2) IS
384: SELECT currency_code
385: FROM fnd_currencies
386: WHERE enabled_flag = 'Y'
387: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
388: AND currency_code <> 'STAT'
389: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
390: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
391: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
385: FROM fnd_currencies
386: WHERE enabled_flag = 'Y'
387: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
388: AND currency_code <> 'STAT'
389: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
390: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
391: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
392:
393: CURSOR bad_curr IS
386: WHERE enabled_flag = 'Y'
387: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
388: AND currency_code <> 'STAT'
389: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
390: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
391: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
392:
393: CURSOR bad_curr IS
394: SELECT currency_code
387: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
388: AND currency_code <> 'STAT'
389: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
390: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) and
391: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
392:
393: CURSOR bad_curr IS
394: SELECT currency_code
395: FROM fnd_currencies
393: CURSOR bad_curr IS
394: SELECT currency_code
395: FROM fnd_currencies
396: WHERE enabled_flag = 'Y'
397: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
398: AND currency_code <> 'STAT'
399: AND ( CE_CASH_FCST.G_rp_exchange_date <
400: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
401: CE_CASH_FCST.G_rp_exchange_date >
395: FROM fnd_currencies
396: WHERE enabled_flag = 'Y'
397: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
398: AND currency_code <> 'STAT'
399: AND ( CE_CASH_FCST.G_rp_exchange_date <
400: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
401: CE_CASH_FCST.G_rp_exchange_date >
402: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
403:
396: WHERE enabled_flag = 'Y'
397: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
398: AND currency_code <> 'STAT'
399: AND ( CE_CASH_FCST.G_rp_exchange_date <
400: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
401: CE_CASH_FCST.G_rp_exchange_date >
402: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
403:
404: CURSOR base_curr IS
397: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
398: AND currency_code <> 'STAT'
399: AND ( CE_CASH_FCST.G_rp_exchange_date <
400: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
401: CE_CASH_FCST.G_rp_exchange_date >
402: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
403:
404: CURSOR base_curr IS
405: SELECT distinct(org.currency_code)
398: AND currency_code <> 'STAT'
399: AND ( CE_CASH_FCST.G_rp_exchange_date <
400: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
401: CE_CASH_FCST.G_rp_exchange_date >
402: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
403:
404: CURSOR base_curr IS
405: SELECT distinct(org.currency_code)
406: FROM ce_forecast_rows r,
405: SELECT distinct(org.currency_code)
406: FROM ce_forecast_rows r,
407: ce_forecast_oe_orgs_v org
408: WHERE r.row_number BETWEEN
409: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
410: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
411: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
412: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
413: AND r.trx_type = 'OEO'
406: FROM ce_forecast_rows r,
407: ce_forecast_oe_orgs_v org
408: WHERE r.row_number BETWEEN
409: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
410: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
411: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
412: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
413: AND r.trx_type = 'OEO'
414: AND org.org_id = NVL(r.org_id, org.org_id);
407: ce_forecast_oe_orgs_v org
408: WHERE r.row_number BETWEEN
409: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
410: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
411: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
412: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
413: AND r.trx_type = 'OEO'
414: AND org.org_id = NVL(r.org_id, org.org_id);
415:
408: WHERE r.row_number BETWEEN
409: NVL(CE_CASH_FCST.G_rp_rownum_from, row_number) and
410: NVL(CE_CASH_FCST.G_rp_rownum_to, row_number)
411: AND r.forecast_header_id = CE_CASH_FCST.G_rp_forecast_header_id
412: AND org.currency_code <> CE_CASH_FCST.G_rp_forecast_currency
413: AND r.trx_type = 'OEO'
414: AND org.org_id = NVL(r.org_id, org.org_id);
415:
416: curr FND_CURRENCIES.currency_code%TYPE;
418: error_msg FND_NEW_MESSAGES.message_text%TYPE;
419: xrate NUMBER;
420: all_exist_flag BOOLEAN := TRUE;
421: BEGIN
422: cep_standard.debug('>>CE_CASH_FCST.populate_base_xrate_table');
423:
424: --
425: -- For each base currencies used by OE rows, determine it's xrate from
426: -- valid currencies to the base currency.
429: LOOP
430: FETCH base_curr INTO to_curr;
431: EXIT WHEN (base_curr%NOTFOUND OR base_curr%NOTFOUND IS NULL);
432:
433: IF( to_curr <> CE_CASH_FCST.G_rp_forecast_currency)THEN
434: OPEN from_curr(to_curr);
435: LOOP
436:
437: FETCH from_curr INTO curr;
437: FETCH from_curr INTO curr;
438: EXIT WHEN (from_curr%NOTFOUND OR from_curr%NOTFOUND IS NULL);
439: BEGIN
440: xrate := GL_CURRENCY_API.get_rate(curr, to_curr,
441: CE_CASH_FCST.G_rp_exchange_date,
442: CE_CASH_FCST.G_rp_exchange_type);
443: insert into CE_CURRENCY_RATES_TEMP
444: (forecast_request_id, currency_code, exchange_rate, to_currency)
445: values (CE_CASH_FCST.G_forecast_id, curr, xrate, to_curr);
438: EXIT WHEN (from_curr%NOTFOUND OR from_curr%NOTFOUND IS NULL);
439: BEGIN
440: xrate := GL_CURRENCY_API.get_rate(curr, to_curr,
441: CE_CASH_FCST.G_rp_exchange_date,
442: CE_CASH_FCST.G_rp_exchange_type);
443: insert into CE_CURRENCY_RATES_TEMP
444: (forecast_request_id, currency_code, exchange_rate, to_currency)
445: values (CE_CASH_FCST.G_forecast_id, curr, xrate, to_curr);
446: cep_standard.debug(' Exchange info - '||curr||'->'||to_curr||' has rate '||to_char(xrate));
441: CE_CASH_FCST.G_rp_exchange_date,
442: CE_CASH_FCST.G_rp_exchange_type);
443: insert into CE_CURRENCY_RATES_TEMP
444: (forecast_request_id, currency_code, exchange_rate, to_currency)
445: values (CE_CASH_FCST.G_forecast_id, curr, xrate, to_curr);
446: cep_standard.debug(' Exchange info - '||curr||'->'||to_curr||' has rate '||to_char(xrate));
447: EXCEPTION
448: WHEN OTHERS THEN
449: -- WHEN NO_RATE THEN
447: EXCEPTION
448: WHEN OTHERS THEN
449: -- WHEN NO_RATE THEN
450: -- bug 1200912
451: IF (curr = CE_CASH_FCST.G_rp_src_currency) THEN
452: all_exist_flag := FALSE;
453: FND_MESSAGE.set_name ('CE','CE_FC_MISSING_EXCHANGE_RATE');
454: FND_MESSAGE.set_token('FROM_CURR', curr);
455: FND_MESSAGE.set_token('TO_CURR',
452: all_exist_flag := FALSE;
453: FND_MESSAGE.set_name ('CE','CE_FC_MISSING_EXCHANGE_RATE');
454: FND_MESSAGE.set_token('FROM_CURR', curr);
455: FND_MESSAGE.set_token('TO_CURR',
456: CE_CASH_FCST.G_rp_forecast_currency);
457: error_msg := FND_MESSAGE.GET;
458: CE_FORECAST_ERRORS_PKG.insert_row(G_forecast_id,
459: G_rp_forecast_header_id, null,'CE_FC_MISSING_RATE', error_msg);
460: END IF;
466: -- Insert constant rate (1) for base_currency to base_currency
467: --
468: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id, currency_code,
469: exchange_rate, to_currency)
470: values (CE_CASH_FCST.G_forecast_id, to_curr, 1, to_curr);
471:
472: OPEN bad_curr;
473: LOOP
474: FETCH bad_curr INTO curr;
487: END IF;
488: END LOOP;
489: CLOSE base_curr;
490:
491: cep_standard.debug('<
493:
494: EXCEPTION
495: WHEN OTHERS THEN
520: CURSOR C IS
521: SELECT currency_code
522: FROM fnd_currencies
523: WHERE enabled_flag = 'Y'
524: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
525: AND currency_code <> 'STAT'
526: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
527: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
528: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
522: FROM fnd_currencies
523: WHERE enabled_flag = 'Y'
524: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
525: AND currency_code <> 'STAT'
526: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
527: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
528: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
529:
530: CURSOR bad_curr IS
523: WHERE enabled_flag = 'Y'
524: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
525: AND currency_code <> 'STAT'
526: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
527: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
528: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
529:
530: CURSOR bad_curr IS
531: SELECT currency_code
524: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
525: AND currency_code <> 'STAT'
526: AND CE_CASH_FCST.G_rp_exchange_date BETWEEN
527: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date)
528: and NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date);
529:
530: CURSOR bad_curr IS
531: SELECT currency_code
532: FROM fnd_currencies
530: CURSOR bad_curr IS
531: SELECT currency_code
532: FROM fnd_currencies
533: WHERE enabled_flag = 'Y'
534: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
535: AND currency_code <> 'STAT'
536: AND ( CE_CASH_FCST.G_rp_exchange_date <
537: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
538: CE_CASH_FCST.G_rp_exchange_date >
532: FROM fnd_currencies
533: WHERE enabled_flag = 'Y'
534: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
535: AND currency_code <> 'STAT'
536: AND ( CE_CASH_FCST.G_rp_exchange_date <
537: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
538: CE_CASH_FCST.G_rp_exchange_date >
539: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
540:
533: WHERE enabled_flag = 'Y'
534: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
535: AND currency_code <> 'STAT'
536: AND ( CE_CASH_FCST.G_rp_exchange_date <
537: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
538: CE_CASH_FCST.G_rp_exchange_date >
539: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
540:
541: curr FND_CURRENCIES.currency_code%TYPE;
534: AND currency_code <> CE_CASH_FCST.G_rp_forecast_currency
535: AND currency_code <> 'STAT'
536: AND ( CE_CASH_FCST.G_rp_exchange_date <
537: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
538: CE_CASH_FCST.G_rp_exchange_date >
539: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
540:
541: curr FND_CURRENCIES.currency_code%TYPE;
542: from_curr FND_CURRENCIES.currency_code%TYPE;
535: AND currency_code <> 'STAT'
536: AND ( CE_CASH_FCST.G_rp_exchange_date <
537: NVL(start_date_active,CE_CASH_FCST.G_rp_exchange_date) OR
538: CE_CASH_FCST.G_rp_exchange_date >
539: NVL(end_date_active,CE_CASH_FCST.G_rp_exchange_date));
540:
541: curr FND_CURRENCIES.currency_code%TYPE;
542: from_curr FND_CURRENCIES.currency_code%TYPE;
543: to_curr FND_CURRENCIES.currency_code%TYPE;
551: from_curr_is_emu VARCHAR2(1);
552: l_currency_type VARCHAR2(5);
553:
554: BEGIN
555: cep_standard.debug('>>CE_CASH_FCST.populate_xrate_table');
556:
557: --
558: -- Insert constant rate (1) for forecast_currency to forecast_currency
559: --
558: -- Insert constant rate (1) for forecast_currency to forecast_currency
559: --
560: insert into CE_CURRENCY_RATES_TEMP
561: (forecast_request_id, currency_code, exchange_rate, to_currency)
562: values (CE_CASH_FCST.G_forecast_id, CE_CASH_FCST.G_rp_forecast_currency, 1,
563: CE_CASH_FCST.G_rp_forecast_currency);
564:
565: IF( G_rp_forecast_currency <> G_rp_src_currency OR
566: G_rp_src_curr_type <> 'E')THEN
559: --
560: insert into CE_CURRENCY_RATES_TEMP
561: (forecast_request_id, currency_code, exchange_rate, to_currency)
562: values (CE_CASH_FCST.G_forecast_id, CE_CASH_FCST.G_rp_forecast_currency, 1,
563: CE_CASH_FCST.G_rp_forecast_currency);
564:
565: IF( G_rp_forecast_currency <> G_rp_src_currency OR
566: G_rp_src_curr_type <> 'E')THEN
567:
567:
568: SELECT DECODE(COUNT(*),0,'N','Y')
569: INTO fcast_curr_is_emu
570: FROM FND_CURRENCIES
571: WHERE currency_code = CE_CASH_FCST.G_rp_forecast_currency AND
572: derive_type = 'EMU';
573:
574: SELECT DECODE(COUNT(*),0,'N','Y')
575: INTO src_curr_is_emu
573:
574: SELECT DECODE(COUNT(*),0,'N','Y')
575: INTO src_curr_is_emu
576: FROM FND_CURRENCIES
577: WHERE currency_code = CE_CASH_FCST.G_rp_src_currency AND
578: derive_type = 'EMU';
579:
580: IF ( (fcast_curr_is_emu = 'Y' OR src_curr_is_emu = 'Y') OR
581: G_rp_src_curr_type = 'A' ) THEN
606:
607: EXIT WHEN (C%NOTFOUND OR C%NOTFOUND IS NULL);
608: BEGIN
609: xrate := GL_CURRENCY_API.get_rate(from_curr, G_rp_forecast_currency,
610: CE_CASH_FCST.G_rp_exchange_date,
611: CE_CASH_FCST.G_rp_exchange_type);
612: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id,
613: currency_code, exchange_rate, to_currency)
614: values (CE_CASH_FCST.G_forecast_id, from_curr, xrate,
607: EXIT WHEN (C%NOTFOUND OR C%NOTFOUND IS NULL);
608: BEGIN
609: xrate := GL_CURRENCY_API.get_rate(from_curr, G_rp_forecast_currency,
610: CE_CASH_FCST.G_rp_exchange_date,
611: CE_CASH_FCST.G_rp_exchange_type);
612: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id,
613: currency_code, exchange_rate, to_currency)
614: values (CE_CASH_FCST.G_forecast_id, from_curr, xrate,
615: G_rp_forecast_currency);
610: CE_CASH_FCST.G_rp_exchange_date,
611: CE_CASH_FCST.G_rp_exchange_type);
612: insert into CE_CURRENCY_RATES_TEMP (forecast_request_id,
613: currency_code, exchange_rate, to_currency)
614: values (CE_CASH_FCST.G_forecast_id, from_curr, xrate,
615: G_rp_forecast_currency);
616: cep_standard.debug(' Exchange info - '||from_curr||' has rate '||to_char(xrate));
617: EXCEPTION
618: WHEN OTHERS THEN
619: -- WHEN NO_RATE THEN
620: skip_err_log := FALSE;
621:
622: -- bug 1200912
623: -- from_curr always <> CE_CASH_FCST.G_rp_src_currency
624: IF (G_rp_src_curr_type <> 'A'
625: AND from_curr <> CE_CASH_FCST.G_rp_src_currency) THEN
626: skip_err_log := TRUE;
627: END IF;
621:
622: -- bug 1200912
623: -- from_curr always <> CE_CASH_FCST.G_rp_src_currency
624: IF (G_rp_src_curr_type <> 'A'
625: AND from_curr <> CE_CASH_FCST.G_rp_src_currency) THEN
626: skip_err_log := TRUE;
627: END IF;
628:
629: to_curr := CE_CASH_FCST.G_rp_forecast_currency;
625: AND from_curr <> CE_CASH_FCST.G_rp_src_currency) THEN
626: skip_err_log := TRUE;
627: END IF;
628:
629: to_curr := CE_CASH_FCST.G_rp_forecast_currency;
630:
631: IF (from_curr_is_emu = 'N' and fcast_curr_is_emu = 'Y') THEN
632: SELECT decode( derive_type,
633: 'EURO', 'EURO',
630:
631: IF (from_curr_is_emu = 'N' and fcast_curr_is_emu = 'Y') THEN
632: SELECT decode( derive_type,
633: 'EURO', 'EURO',
634: 'EMU', decode( sign( trunc(CE_CASH_FCST.G_rp_exchange_date)
635: - trunc(derive_effective)),
636: -1, 'OTHER',
637: 'EMU'),
638: 'OTHER' )
644: END IF;
645: ELSIF (from_curr_is_emu = 'Y' and fcast_curr_is_emu = 'N') 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' )
684: EXIT WHEN (bad_curr%NOTFOUND OR bad_curr%NOTFOUND IS NULL);
685: BEGIN
686: all_exist_flag := FALSE;
687: IF (G_rp_src_curr_type = 'A'
688: OR curr = CE_CASH_FCST.G_rp_src_currency) THEN
689: FND_MESSAGE.set_name ('CE','CE_FC_BAD_CURRENCY');
690: FND_MESSAGE.set_token('BAD_CURR', curr);
691: error_msg := FND_MESSAGE.GET;
692: CE_FORECAST_ERRORS_PKG.insert_row(G_forecast_id,
697: CLOSE bad_curr;
698:
699: END IF;
700:
701: cep_standard.debug('<
703:
704: EXCEPTION
705: WHEN OTHERS THEN
728: PROCEDURE clear_xrate_table IS
729: BEGIN
730: cep_standard.debug('Delete all xrate information');
731: delete from CE_CURRENCY_RATES_TEMP
732: where forecast_request_id = CE_CASH_FCST.G_forecast_id;
733: EXCEPTION
734: WHEN OTHERS THEN
735: cep_standard.debug('EXCEPTION - OTHERS: clear_xrate_table');
736: RAISE;
804: AND (org.org_id = DECODE(G_org_id, -1, org.org_id,-99, org.org_id, G_org_id)
805: or org.org_id IS NULL);
806:
807: BEGIN
808: cep_standard.debug('>>CE_CASH_FCST.valid_calendar_name');
809:
810: IF(G_app_short_name = 'GL')THEN
811: SELECT period_set_name, set_of_books_id, name, currency_code
812: INTO calendar, sob_id, sob_name, G_sob_currency_code
839: END IF;
840: END LOOP;
841: END IF;
842:
843: cep_standard.debug('<
845: EXCEPTION
846: WHEN OTHERS THEN
847: cep_standard.debug('EXCEPTION -OTHERS:valid_calendar_name');
887:
888: return valid_col;
889: EXCEPTION
890: WHEN OTHERS THEN
891: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_col_info');
892: RAISE;
893: END valid_col_info;
894:
895: /* ---------------------------------------------------------------------
914: days_from NUMBER;
915: days_to NUMBER;
916: all_valid BOOLEAN DEFAULT TRUE;
917: BEGIN
918: cep_standard.debug('>>CE_CASH_FCST.valid_col_range');
919:
920: G_min_col := CEFC_VIEW_CONST.get_min_col;
921: G_max_col := CEFC_VIEW_CONST.get_max_col;
922: G_invalid_overdue := FALSE;
947:
948: FETCH cCol INTO cid, col_num, days_from, days_to;
949: END LOOP;
950:
951: cep_standard.debug('<
953:
954: EXCEPTION
955: WHEN OTHERS THEN
953:
954: EXCEPTION
955: WHEN OTHERS THEN
956: IF(cCol%ISOPEN)THEN CLOSE cCol; END IF;
957: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_col_range');
958: RAISE;
959: END valid_col_range;
960:
961:
1041: return valid_row;
1042: EXCEPTION
1043: WHEN OTHERS THEN
1044: IF f_row_cursor%ISOPEN THEN CLOSE f_row_cursor; END IF;
1045: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_row_info');
1046: RAISE;
1047: END valid_row_info;
1048:
1049:
1103: AND forecast_header_id = p_forecast_header_id
1104: AND trx_type <> 'GLC';
1105:
1106: BEGIN
1107: cep_standard.debug('>> CE_CASH_FCST.submit_child_requests ');
1108:
1109: open CRowNumber(G_rp_forecast_header_id,G_rp_rownum_from, G_rp_rownum_to);
1110: LOOP
1111: FETCH CRowNumber INTO G_row_number;
1194: CLOSE CRowNumber;
1195: EXCEPTION
1196: WHEN OTHERS THEN
1197: IF CRowNumber%ISOPEN THEN CLOSE CRowNumber; END IF;
1198: cep_standard.debug('EXCEPTION: CE_CASH_FCST.submit_child_requests');
1199: RAISE;
1200: END submit_child_requests;
1201:
1202: /* ---------------------------------------------------------------------
1315: END IF;
1316:
1317: EXCEPTION
1318: WHEN OTHERS THEN
1319: cep_standard.debug('EXCEPTION: CE_CASH_FCST.create_forecast_header ');
1320: RAISE;
1321: END create_forecast_header;
1322:
1323: /* ---------------------------------------------------------------------
1404:
1405: return valid_pmr;
1406: EXCEPTION
1407: WHEN OTHERS THEN
1408: cep_standard.debug('EXCEPTION: CE_CASH_FCST.valid_forecast_run');
1409: END valid_forecast_run;
1410:
1411: /* ---------------------------------------------------------------------
1412: | PUBLIC PROCEDURE |
1431: req_data VARCHAR2(30);
1432: l_status VARCHAR2(1);
1433: col_setup VARCHAR2(1);
1434: BEGIN
1435: cep_standard.debug('>>CE_CASH_FCST.create_forecast');
1436:
1437: counter := 0;
1438: --
1439: -- Get forecast header info
1481:
1482: --
1483: -- Populate exchange information from GL for forecast currency
1484: --
1485: IF( CE_CASH_FCST.G_rp_exchange_type <> 'User' OR
1486: CE_CASH_FCST.G_rp_exchange_type IS NULL )THEN
1487: IF( NOT populate_xrate_table ) THEN
1488: UPDATE ce_forecasts
1489: SET error_status = 'X'
1482: --
1483: -- Populate exchange information from GL for forecast currency
1484: --
1485: IF( CE_CASH_FCST.G_rp_exchange_type <> 'User' OR
1486: CE_CASH_FCST.G_rp_exchange_type IS NULL )THEN
1487: IF( NOT populate_xrate_table ) THEN
1488: UPDATE ce_forecasts
1489: SET error_status = 'X'
1490: WHERE forecast_id = G_forecast_id;
1498: -- only and not in functional currency.
1499: --
1500:
1501: IF (NOT G_gl_cash_only) THEN
1502: IF( CE_CASH_FCST.G_rp_src_curr_type = 'F' AND
1503: CE_CASH_FCST.G_rp_amount_threshold IS NOT NULL )THEN
1504: IF( NOT populate_base_xrate_table )THEN
1505: UPDATE ce_forecasts
1506: set error_status = 'X'
1499: --
1500:
1501: IF (NOT G_gl_cash_only) THEN
1502: IF( CE_CASH_FCST.G_rp_src_curr_type = 'F' AND
1503: CE_CASH_FCST.G_rp_amount_threshold IS NOT NULL )THEN
1504: IF( NOT populate_base_xrate_table )THEN
1505: UPDATE ce_forecasts
1506: set error_status = 'X'
1507: where forecast_id = G_forecast_id;
1619: EXCEPTION
1620: WHEN OTHERS THEN
1621: IF f_row_cursor%ISOPEN THEN CLOSE f_row_cursor; END IF;
1622: IF f_header_cursor%ISOPEN THEN CLOSE f_header_cursor; END IF;
1623: cep_standard.debug('EXCEPTION: CE_CASH_FCST.cash_forecast');
1624: RAISE;
1625: END create_forecast;
1626:
1627:
1716: If (p_display_debug = 'Y') then
1717: cep_standard.enable_debug(p_debug_path,
1718: p_debug_file);
1719: end if;
1720: cep_standard.debug('>>CE_CASH_FCST.Forecast');
1721:
1722: IF (p_start_project_num IS NULL AND
1723: p_end_project_num IS NULL) THEN
1724: set_parameters( p_forecast_header_id,
1944:
1945:
1946:
1947:
1948: END CE_CASH_FCST;