67: l_bl_cmt_raw_diff NUMBER:= 0;
68: l_bl_cmt_burden_diff NUMBER:= 0;
69: l_bl_cmt_quantity_diff NUMBER:= 0;
70:
71: l_txn_cost_rate_override PA_BUDGET_LINES.TXN_COST_RATE_OVERRIDE%TYPE;
72: l_burden_cost_rate_override PA_BUDGET_LINES.BURDEN_COST_RATE_OVERRIDE%TYPE;
73: l_proj_cost_exchange_rate PA_BUDGET_LINES.PROJECT_COST_EXCHANGE_RATE%TYPE;
74: l_projfunc_cost_exchange_rate PA_BUDGET_LINES.PROJFUNC_COST_EXCHANGE_RATE%TYPE;
75:
68: l_bl_cmt_burden_diff NUMBER:= 0;
69: l_bl_cmt_quantity_diff NUMBER:= 0;
70:
71: l_txn_cost_rate_override PA_BUDGET_LINES.TXN_COST_RATE_OVERRIDE%TYPE;
72: l_burden_cost_rate_override PA_BUDGET_LINES.BURDEN_COST_RATE_OVERRIDE%TYPE;
73: l_proj_cost_exchange_rate PA_BUDGET_LINES.PROJECT_COST_EXCHANGE_RATE%TYPE;
74: l_projfunc_cost_exchange_rate PA_BUDGET_LINES.PROJFUNC_COST_EXCHANGE_RATE%TYPE;
75:
76: l_appl_id NUMBER;
69: l_bl_cmt_quantity_diff NUMBER:= 0;
70:
71: l_txn_cost_rate_override PA_BUDGET_LINES.TXN_COST_RATE_OVERRIDE%TYPE;
72: l_burden_cost_rate_override PA_BUDGET_LINES.BURDEN_COST_RATE_OVERRIDE%TYPE;
73: l_proj_cost_exchange_rate PA_BUDGET_LINES.PROJECT_COST_EXCHANGE_RATE%TYPE;
74: l_projfunc_cost_exchange_rate PA_BUDGET_LINES.PROJFUNC_COST_EXCHANGE_RATE%TYPE;
75:
76: l_appl_id NUMBER;
77: l_cnt NUMBER;
70:
71: l_txn_cost_rate_override PA_BUDGET_LINES.TXN_COST_RATE_OVERRIDE%TYPE;
72: l_burden_cost_rate_override PA_BUDGET_LINES.BURDEN_COST_RATE_OVERRIDE%TYPE;
73: l_proj_cost_exchange_rate PA_BUDGET_LINES.PROJECT_COST_EXCHANGE_RATE%TYPE;
74: l_projfunc_cost_exchange_rate PA_BUDGET_LINES.PROJFUNC_COST_EXCHANGE_RATE%TYPE;
75:
76: l_appl_id NUMBER;
77: l_cnt NUMBER;
78:
201: l_cal_base_raw_cost_tab PA_PLSQL_DATATYPES.NumTabTyp;
202: l_cal_base_brdn_cost_tab PA_PLSQL_DATATYPES.NumTabTyp;
203:
204: -- budget line amounts for update records
205: l_bl_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
206: l_bl_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
207: l_bl_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
208: l_bl_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
202: l_cal_base_brdn_cost_tab PA_PLSQL_DATATYPES.NumTabTyp;
203:
204: -- budget line amounts for update records
205: l_bl_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
206: l_bl_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
207: l_bl_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
208: l_bl_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
203:
204: -- budget line amounts for update records
205: l_bl_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
206: l_bl_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
207: l_bl_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
208: l_bl_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
204: -- budget line amounts for update records
205: l_bl_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
206: l_bl_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
207: l_bl_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
208: l_bl_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
212:
205: l_bl_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
206: l_bl_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
207: l_bl_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
208: l_bl_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
212:
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
206: l_bl_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
207: l_bl_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
208: l_bl_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
212:
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
207: l_bl_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
208: l_bl_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
212:
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
215: l_bl_txn_init_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
209: l_bl_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
212:
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
215: l_bl_txn_init_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
216: l_bl_project_init_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
217: l_bl_pfc_init_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
210: l_bl_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
212:
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
215: l_bl_txn_init_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
216: l_bl_project_init_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
217: l_bl_pfc_init_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
218: l_bl_pfc_init_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
211: l_bl_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
212:
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
215: l_bl_txn_init_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
216: l_bl_project_init_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
217: l_bl_pfc_init_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
218: l_bl_pfc_init_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
219:
212:
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
215: l_bl_txn_init_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
216: l_bl_project_init_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
217: l_bl_pfc_init_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
218: l_bl_pfc_init_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
219:
220: -- update amounts (existing budget line amounts + commitments)
213: l_bl_init_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
215: l_bl_txn_init_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
216: l_bl_project_init_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
217: l_bl_pfc_init_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
218: l_bl_pfc_init_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
219:
220: -- update amounts (existing budget line amounts + commitments)
221: l_upd_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
214: l_bl_txn_init_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
215: l_bl_txn_init_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
216: l_bl_project_init_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
217: l_bl_pfc_init_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
218: l_bl_pfc_init_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
219:
220: -- update amounts (existing budget line amounts + commitments)
221: l_upd_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
222: l_upd_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
217: l_bl_pfc_init_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
218: l_bl_pfc_init_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
219:
220: -- update amounts (existing budget line amounts + commitments)
221: l_upd_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
222: l_upd_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
223: l_upd_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
224: l_upd_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
218: l_bl_pfc_init_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
219:
220: -- update amounts (existing budget line amounts + commitments)
221: l_upd_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
222: l_upd_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
223: l_upd_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
224: l_upd_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
226: l_upd_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
219:
220: -- update amounts (existing budget line amounts + commitments)
221: l_upd_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
222: l_upd_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
223: l_upd_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
224: l_upd_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
226: l_upd_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
227: l_upd_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
220: -- update amounts (existing budget line amounts + commitments)
221: l_upd_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
222: l_upd_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
223: l_upd_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
224: l_upd_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
226: l_upd_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
227: l_upd_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
228:
221: l_upd_quantity PA_BUDGET_LINES.QUANTITY%TYPE;
222: l_upd_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
223: l_upd_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
224: l_upd_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
226: l_upd_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
227: l_upd_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
228:
229: l_budget_line_id PA_BUDGET_LINES.BUDGET_LINE_ID%TYPE;
222: l_upd_txn_raw_cost PA_BUDGET_LINES.TXN_RAW_COST%TYPE;
223: l_upd_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
224: l_upd_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
226: l_upd_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
227: l_upd_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
228:
229: l_budget_line_id PA_BUDGET_LINES.BUDGET_LINE_ID%TYPE;
230: -- stores ids of existing budget lines that need to be deleted
223: l_upd_txn_burdened_cost PA_BUDGET_LINES.TXN_BURDENED_COST%TYPE;
224: l_upd_project_raw_cost PA_BUDGET_LINES.PROJECT_RAW_COST%TYPE;
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
226: l_upd_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
227: l_upd_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
228:
229: l_budget_line_id PA_BUDGET_LINES.BUDGET_LINE_ID%TYPE;
230: -- stores ids of existing budget lines that need to be deleted
231: -- before Calculate API is called so that a difference is detected.
225: l_upd_project_burdened_cost PA_BUDGET_LINES.PROJECT_BURDENED_COST%TYPE;
226: l_upd_pfc_raw_cost PA_BUDGET_LINES.RAW_COST%TYPE;
227: l_upd_pfc_burdened_cost PA_BUDGET_LINES.BURDENED_COST%TYPE;
228:
229: l_budget_line_id PA_BUDGET_LINES.BUDGET_LINE_ID%TYPE;
230: -- stores ids of existing budget lines that need to be deleted
231: -- before Calculate API is called so that a difference is detected.
232: l_budget_line_id_tab PA_PLSQL_DATATYPES.IdTabTyp;
233:
246: -- Added l_bl_id_counter to track unique budget_line_id values for
247: -- the PA_FP_ROLLUP_TMP table. Initialize it to the MAX budget_line_id
248: -- value in the temp table to pick up where the Staffing Plan API left
249: -- off, and increment by 1 prior to each Insert to the temp table.
250: -- Note: these are not valid budget_line_id values in pa_budget_lines.
251: -- Rather, we are using the column to index records for processing of
252: -- cost-based revenue amounts, since an Index exists for the column.
253: l_bl_id_counter NUMBER;
254:
256: l_billable_flag VARCHAR2(1);
257:
258: -- Bug 4549862: Whenever Commitments map to a resource having rejection
259: -- code data (either in PA_FP_ROLLUP_TMP when the source is Staffing Plan,
260: -- or in PA_BUDGET_LINES for other cases), a generic error message will be
261: -- added once to the error stack. For each such commitment, the relevant
262: -- rejection code values should be added to the error stack. After all
263: -- Commitments have been processed, an error should be raised. This flag
264: -- tracks if at least 1 commitment maps to a resource having rejection
768:
769: -- Bug 4549862: Now that we have the commitment period start date
770: -- for timephased versions, get budget line rejection codes.
771: --
772: -- When l_cost_based_all_from_sp_flag = 'N', check PA_BUDGET_LINES
773: -- for rejection codes. When l_cost_based_all_from_sp_flag = 'Y',
774: -- check PA_FP_ROLLUP_TMP for rejection codes instead.
775: -- We are only interested in checking the raw cost, burden cost,
776: -- pc/pfc currency conversion rejection codes.
788: l_cost_rej_code_tab,
789: l_burden_rej_code_tab,
790: l_pc_cur_conv_rej_code_tab,
791: l_pfc_cur_conv_rej_code_tab
792: FROM pa_budget_lines
793: WHERE resource_assignment_id = l_res_asg_id(i)
794: AND txn_currency_code = l_currency_code(i)
795: AND start_date = l_bl_start_date
796: AND ( cost_rejection_code is not null OR
808: l_cost_rej_code_tab,
809: l_burden_rej_code_tab,
810: l_pc_cur_conv_rej_code_tab,
811: l_pfc_cur_conv_rej_code_tab
812: FROM pa_budget_lines
813: WHERE resource_assignment_id = l_res_asg_id(i)
814: AND txn_currency_code = l_currency_code(i)
815: AND ( cost_rejection_code is not null OR
816: burden_rejection_code is not null OR
982: -- Bug 4549862: For the Cost-based All version from Staffing Plan
983: -- flow, we do not need to check if a budget line exists for the
984: -- current commitment being processed, since we will be inserting
985: -- the commitment data into the PA_FP_ROLLUP_TMP table instead of
986: -- pa_budget_lines for further processing. At the same time, we
987: -- still want the l_budget_lines_exist flag initialized as 'N' so
988: -- that logic for updating dates for None time phased versions is
989: -- still executed properly.
990:
1009: l_bl_project_raw_cost,
1010: l_bl_project_burdened_cost,
1011: l_bl_pfc_raw_cost,
1012: l_bl_pfc_burdened_cost
1013: FROM PA_BUDGET_LINES BL
1014: WHERE BL.RESOURCE_ASSIGNMENT_ID = l_res_asg_id(i)
1015: AND BL.TXN_CURRENCY_CODE = l_currency_code(i)
1016: AND BL.START_DATE = l_bl_start_date;
1017: ELSIF p_fp_cols_rec.x_time_phased_code = 'N' THEN
1047: l_bl_txn_init_burdened_cost,
1048: l_bl_project_init_raw_cost,
1049: l_bl_pfc_init_raw_cost,
1050: l_bl_pfc_init_burdened_cost
1051: FROM PA_BUDGET_LINES BL
1052: WHERE BL.RESOURCE_ASSIGNMENT_ID = l_res_asg_id(i)
1053: AND BL.TXN_CURRENCY_CODE = l_currency_code(i);
1054: ELSE
1055: SELECT BUDGET_LINE_ID,
1071: l_bl_project_raw_cost,
1072: l_bl_project_burdened_cost,
1073: l_bl_pfc_raw_cost,
1074: l_bl_pfc_burdened_cost
1075: FROM PA_BUDGET_LINES BL
1076: WHERE BL.RESOURCE_ASSIGNMENT_ID = l_res_asg_id(i)
1077: AND BL.TXN_CURRENCY_CODE = l_currency_code(i);
1078: END IF; -- Forecast plan check
1079: END IF; -- time phase check
1089: END IF; -- l_cost_based_all_from_sp_flag check
1090:
1091:
1092: -- We have delayed processing on l_bl_start_date and l_bl_end_date for
1093: -- the None time phase case to avoid an extra query to pa_budget_lines.
1094: IF ( P_FP_COLS_REC.X_TIME_PHASED_CODE = 'N' )
1095: THEN
1096: -- Since start_date and end_date are both non-null columns in
1097: -- pa_budget_lines, checking l_bl_start_date is sufficient.
1093: -- the None time phase case to avoid an extra query to pa_budget_lines.
1094: IF ( P_FP_COLS_REC.X_TIME_PHASED_CODE = 'N' )
1095: THEN
1096: -- Since start_date and end_date are both non-null columns in
1097: -- pa_budget_lines, checking l_bl_start_date is sufficient.
1098: IF l_bl_start_date IS NOT NULL THEN
1099: IF l_reference_start_date < l_bl_start_date THEN
1100: l_bl_start_date := l_reference_start_date;
1101: END IF;
1110:
1111:
1112: -- Bug 4549862: For the Cost-based All version from Staffing Plan
1113: -- flow, Insert commitment data into the PA_FP_ROLLUP_TMP table
1114: -- instead of pa_budget_lines for further processing by the Cost-
1115: -- based Revenue Generation API, which will propagate the data to
1116: -- the budget lines. For all other flows, proceed with existing
1117: -- logic for Insert/Update to the budget lines.
1118:
1217: l_proj_cost_exchange_rate := l_proj_raw_cost_sum(i) / l_raw_cost_sum(i);
1218: l_projfunc_cost_exchange_rate := l_projfunc_raw_cost_sum(i) / l_raw_cost_sum(i);
1219: END IF;
1220:
1221: INSERT INTO PA_BUDGET_LINES(RESOURCE_ASSIGNMENT_ID,
1222: START_DATE,
1223: END_DATE,
1224: PERIOD_NAME,
1225: TXN_CURRENCY_CODE,
1257: l_proj_burdened_cost_sum(i),
1258: l_projfunc_raw_cost_sum(i),
1259: l_projfunc_burdened_cost_sum(i),
1260: l_quantity_sum_tab(i),
1261: pa_budget_lines_s.nextval,
1262: p_budget_version_id,
1263: p_FP_COLS_REC.X_PROJECT_CURRENCY_CODE,
1264: p_FP_COLS_REC.X_PROJFUNC_CURRENCY_CODE,
1265: l_sysdate,
1295: | of Revenue amounts. This requires that we have budget lines populated.|
1296: | Therefore, still do the Update. |
1297: +====================================================================================*/
1298:
1299: ---if the record does exist then update the record in the pa_budget_lines table
1300: IF l_calc_api_required_flag = 'Y' AND
1301: p_fp_cols_rec.x_time_phased_code IN ('P','G') THEN
1302: -- These budget lines will be deleted before calling Calculate
1303: bl_index := bl_index + 1;
1370: dbms_output.put_line('Start_date: '||l_bl_start_date);*/
1371:
1372:
1373: IF p_fp_cols_rec.x_time_phased_code IN ('P','G') THEN
1374: UPDATE PA_BUDGET_LINES
1375: SET LAST_UPDATE_DATE = l_sysdate
1376: , LAST_UPDATED_BY = l_last_updated_by
1377: , LAST_UPDATE_LOGIN = l_last_update_login
1378: -- , START_DATE = l_bl_start_date
1391: , project_cost_exchange_rate = l_proj_cost_exchange_rate
1392: , projfunc_cost_exchange_rate = l_projfunc_cost_exchange_rate
1393: WHERE BUDGET_LINE_ID = l_budget_line_id;
1394: ELSIF p_fp_cols_rec.x_time_phased_code = 'N' THEN
1395: UPDATE PA_BUDGET_LINES
1396: SET LAST_UPDATE_DATE = l_sysdate
1397: , LAST_UPDATED_BY = l_last_updated_by
1398: , LAST_UPDATE_LOGIN = l_last_update_login
1399: , START_DATE = l_bl_start_date
1887: -- Since the source context is Budget Line, before calling the Calculate
1888: -- API, we need to delete existing budget lines for which we need to
1889: -- populate Commitment amounts.
1890: FORALL i IN 1.. l_budget_line_id_tab.count
1891: DELETE FROM PA_BUDGET_LINES
1892: WHERE budget_line_id = l_budget_line_id_tab(i);
1893:
1894: -- Bug 4582616 Step 4: Delete Raw Cost and Burdened Cost Rates from
1895: -- the PA_FP_GEN_RATE_TMP table since we only want the Calculate API