Projects APIs - Client Extensions and Open Interfaces
Projects APIs - Client Extensions and Open Interfaces
RAVADA OA Blog
21,395
Saturday, April 25, 2015 OAF Material
OAF Issues
1.PA 11i TRM:
https://docs.oracle.com/cd/A85964_01/acrobat/patrm.pdf OAF Issues And Fixes
OAF Videos
4. SQL script to assist in the identification of Projects
revenue issues OAF Advanced
To provide an SQL script to assist in the identification of Projects (PA) revenue issues. OAF Personlizations
This script could prove very useful for PA revenue problems. It will sum up all the accrued
and unearned revenue, thus providing a figure for the total revenue against a project. OAF
1.OAF Contents
select dr.draft_revenue_Num, sum(dri.amount) amt 26.Calling PLSQL
32.FlexFields in OAF Pages
Debugging Techiques in OAF
from pa_draft_Revenues dr, pa_draft_revenue_items dr
Error Handling and Debugging
INTEGRATE OA FRAMEWORK WITH
where dri.project_id = dr.project_Id WEB SERVIC
Internationalization in OAF
Introduction to OA Framework
and dri.draft_revenue_Num = dr.draft_revenue_Num
OAF Events
OAF Interview Questions
and dr.project_Id = &project_Id OAF Objects Implementation
OAF Performance Tuning
group by dr.draft_revenue_Num; Oracle OAF Blogs
SPEL
To ADF or to OAF?
Oracle Projects (PA) generates draft invoices and uses Oracle Receivables (AR) features to
Oracle Apps Blogs
create invoices and interface the accounting transactions to Oracle General Ledger (GL).
Oracle Apps Blogs
When you interface invoices to Receivables, a Projects process is used to collect all eligible,
released draft invoices in PA and interfaces them to the Receivables interface tables. This
Inventory
process also maintains project balances of Unbilled Receivables and unearned revenue and
creates accounting transactions for these amounts. Oracle Inventory Exam (1)
Oracle Inventory Terminology (1)
Oracle Inventory TRM (1)
Once in the AR interface tables, the draft invoices await further processing by the Oracle
Receivables AutoInvoice process. After the AutoInvoice program is run to create invoices in
SQL Loader
Oracle Receivables, you need to run the tieback process to ensure that your data successfully
SQL Loader logic for Negative Vlues
Projects Technical
loaded into Receivables and that there are no transactions requiring correction. If you have
rejected invoices, you will need to correct and resubmit them. Projects Technical
Standard Oracle Projects reports can be used to track your invoices as you interface data Project Resource Management
between Projects and Receivables. You can also use AutoInvoice output reports to review
Project Management
imported transaction data and transaction data that fails when you run AutoInvoice.
Modification Of Transaction Lines (PA/AR Out of Sync). It is possible to modify or delete
Project Billing
invoice transactions transferred from Projects to Receivables using the Transaction Entry
Billing
Workbench (ARXTWMAI).
Billing Events
Billing Flow
THE MODIFICATION OR DELETION OF INVOICE TRANSACTIONS IN THIS MANNER
IS NOT RECOMMENDED BECAUSE IT COULD CAUSE AR TO BE OUT OF SYNC WITH
Project Costing
PA.
Project Foundation
Refer to the scripts below to verify the information contained in the PA-AR invoice
Foundation Training
interface. Both scripts should normally return the same lines and revenue amounts: Project Foundation
Intercompany Process
l.revenue_amount, l.interface_line_attribute1, h.reason_code, Project Exam
Project Manufacturing
l.interface_line_context Projects
vasu r
WHERE h.customer_trx_id = l.customer_trx_id Follow 1
ORDER BY l.interface_line_attribute6;
..and..
h.transfer_status_code
ORDER BY l.line_num;
Below are Steps that needs to be followed for successfully creating a Projects Invoice and
interfacing it to Oracle Receivables.
1. Creation of Contract Project (Mandatory)
Create a Project of ‘Contract’ Project Type. Only Contract Projects can be associated with a
Customer. Create WBS Structure for the Project. Identify the Project Manager. Assign Team
members if needed.
Tables Involved
Assign a Customer to the Project and the ‘Bill to ‘ Address for the customer, so that the
customer can be billed. Also you can assign Billing and Shipping Contacts for the Customer
in the Customers Options in the Projects Form.
Tables Involved
A Funding Agreement needs to be created for the Customer with the Terms and the
Agreement Amount. This can be done using the Agreements Form.
Here you can specify the ‘Hard Limts’ . If the Hard Limit is set for Revenue, Revenue cannot
be generated past the funded amount for the project. Similarly if the Hard Limit is set for the
invoice, the customer cannot be billed past the funded amount in the agreement for that
project.
Tables Involved
Fund the Project using the Customer agreement created in Step 4. This can be done using
the Fundings Section in the Agreement Form. If a customer agreement already exists for
this customer, you can use the same agreement to fund this project.
Tables Involved
This Step is optional, if the ‘Baseline Funding without Budget‘ option is set at the Project
level. If this option is not set, then an approved revenue budget for the project has to be
created with the funding amount. Baselining this budget, baselines the funding
automatically.
Tables Involved
If ‘Baseline Funding without Budget’ is set then the funding can be baselined without the
Approved Revenue Budget. Oracle Projects creates an internal Approved Revenue Budget
with the budget amount equal to the Funding amount and baselines both the Budget and
Funding.
This step is optional depending on the Distribution Rule for the invoice. If the invoice
distribution rule is WORK, this step is mandatory. The process “PRC: Generate Draft
Revenue for a single Project” is run for the Project. If revenue needs to be generated for
multiple projects, run the “PRC: Generate Draft Revenue for range of Projects” process
giving the Project Number ranges.
Tables Involved
Run the Process “PRC:Generate Draft Invoice for a single Project”, giving the Project
number as parameter. This will generate draft invoices only for that project. If you want to
generate invoices for multiple projects, run “PRC: Generate Draft Invoice for a range of
Projects” giving the Project number ranges.
Tables Involved
The invoices needs to be approved and released in order to interface them to AR. This can
be done in the Invoice Review Form. Alternatively the Automatic Approval and release client
extension can be used to automatically approve and release the invoices. But it all depends
on the business scenario. Generally an invoice accountant will review the invoice, approve
and release it.
The approval workflow can also be customized to have a multi-level approval mechanism.
Run the “PRC: Interface invoices to Receivables” process in order to interface the released
projects invoices to AR. This process will populate the AR interface table. Once this process
is run, in AR, the ” Autoinvoice import”process need to be run so that it will create AR
invoices from the interface records.
Tables Involved
RA_INTERFACE_LINES_ALL
RA_INTERFACE_DISTRIBUTIONS_ALL
Once the Autoinvoice import is successfully run, the “PRC: Tieback Invoices from
Receivables” process is run to update the status of the invoice import in AR to the Projects
Invoices
PA Ù AP INTEGRATION PROCESSES:
Oracle Payables integrates with Oracle Projects in such a way that Payables Invoices are created
based on expense reports entered in Oracle Projects. Oracle Payables can also create pre-payments or
advances in Oracle Payables and apply them to Oracle Projects expense reports. But in order to be
able to apply pre-payments in Oracle Payables, the expense reports must have been already
interfaced or loaded in to Oracle Payables.
We have a web-based Custom Expense application (fully integrated with Oracle Projects) using
which all the employees fill up their expense reports online and assign them to the corresponding
project & task codes along with all the expenditure details. Once the expense reports are verified by
their respective Regional Coordinators, the status of the expense reports are set to ‘VERIFIED’ and
sent to their respective Managers for the approval. After the expense reports are approved by their
respective District Managers, the status of these expense reports are set to ‘APPROVED’.
A Concurrent Program (SQL Script) is set up in Oracle Projects to execute once every week to
transfer the ‘APPROVED’ expense reports from the web interface into the Project Accounting
interface table (Pa_transaction_interface_all). The following vital information is transferred at the
web interface during the expense download: Employee_number, expenditure_item_date,
project_number, task_number, expenditure_type, quantity, transaction_status_code and
expenditure_ending_date.
Note: When populating the Pa_transaction_interface_all table by the import utility, make sure that
the transaction_source column is populated exactly as defined in the Transaction Source window in
Projects which is usually defined during the Implementation. (Setup->Expenditures->Transaction
Sources).
Once the expense information is transferred into the Oracle Projects Interface, the following
concurrent processes are invoked in order to complete the transfer into Oracle Payables in the same
sequential order as shown below (either using Streamline process or invoking them individually)
Transaction Import is an open Interface Process that allows us to validate and load transactions from
external cost collection systems into Oracle Projects. Whenever we import the expense information
from an external system
Oracle Projects records the transaction details and the source of the imported transactions during
transaction import.
Transaction import loads transactions as pre-approved expenditure items and expenditure batches are
created as having a status of ‘RELEASED’. This Import process transfers the data from the project
interface table pa_transaction_interface_all in to the Project accounting
tables pa_expenditure_batches_all, pa_expenditures_all, pa_expenditure_items_all.
Each unique batch name becomes an expenditure batch, and each unique expenditure type class,
employee number, and expenditure ending date combination becomes expenditure with in the
expenditure batch. The ending date of the expenditure batch is set to the maximum ending date of all
the expenditures created within the batch.
PA_TRANSACTION_INTERFACE_ALL
PA_TRANSACTION_SOURC
ES
PA_TRANSACTION_XFACE_CTRL_ALL
PA_EXPENDITURE_GROUPS_ALL PA_EXPENDITURE_ITEMS_ALL
PA_EXPENDITURE_BATCHE
PA_EXPENDITURES_ALL
S
Transaction Import automatically validates the data for compatibility with Oracle Projects by
ensuring that the columns in the interface table reference the appropriate and active values and
columns in Oracle Projects. This validates all the items with in expenditure before it creates
expenditure. If at least one item in expenditure fails the validation, Oracle Projects rejects all the
items in the expenditure. The rejection reason can be obtained from
the transaction_rejection_code in pa_transaction_interface_all.
During validation, Transaction Import Process checks whether the expenditure item falls within the
project dates, the project status allows transactions, transaction controls and extensions allow the type
of charge being made, expenditure items fall with in task dates, the task is a lowest task and is
chargeable, the expenditure type is active and the employee is active.
Transaction Import process generates two reports: An exception report listing all rejected
transactions, and a summary report showing the successfully imported transactions. The exception
report will provide rejection reasons for all rejected items. While only the items that are rejected
appear on the exception report, Transaction
Transaction Import automatically validates the data for compatibility with Oracle Projects by
ensuring that the columns in the interface table reference the appropriate and active values and
columns in Oracle Projects. This validates all the items with in expenditure before it creates
expenditure. If at least one item in expenditure fails the validation, Oracle Projects rejects all the
items in the expenditure. The rejection reason can be obtained from
the transaction_rejection_code in pa_transaction_interface_all.
During validation, Transaction Import Process checks whether the expenditure item falls within the
project dates, the project status allows transactions, transaction controls and extensions allow the type
of charge being made, expenditure items fall with in task dates, the task is a lowest task and is
chargeable, the expenditure type is active and the employee is active.
Transaction Import process generates two reports: An exception report listing all rejected
transactions, and a summary report showing the successfully imported transactions. The
exception report will provide rejection reasons for all rejected items. While only the items that are
rejected appear on the exception report, Transaction import process rejects the entire expenditure and
updates all the items in that expenditure with the status of rejected (sets Transaction_status_code =‘R’
in Pa_transaction_interface_alltable). You must correct the rejected transactions and then re-run the
process.
Note: From version 11 onwards, a new form called review transactions has been added in Oracle Projects.
(Navigation is:Expenditures -> Transaction Import -> Review Transactions). This form is extremely useful
in expediting minor additions to the expenditure batches. This form can also be used to correct rejected
transactions in the interface table using this form.
COMMON EXCEPTIONS ENCOUNTERED DURING THIS PROCESS:
Following are the most common rejections encountered during the Transaction Import Process by
Collective. Each rejection code is described in detail along with the description and solution
Description: This happens when the expenditure Item date is not within the active dates of the
project. Solution: Assign the expenses to a different Project, which was active during the item
date, or Change the project start date to an earlier date.
Description: This happens when the expenditure item date is after the expenditure
ending dates. Solution:Change the expenditure_item_date or the
expenditure_ending_date.
Description: The value for the expenditure ending date is not a valid
week ending date. Solution:Change the expenditure_ending_date to a
valid weekending date.
Solution: Make sure there are no overlaps in the PA_TRANSACTION_CONTROLS table for this
task_id and project_id.
Description: The expenditure item date falls outside the effective dates of the
expenditure type. Solution:Change the expenditure item date, expenditure type,
or expenditure types.
Solution: This was one of the issues with our Import. Even though the assignment information
existed in all the HR tables, the assignment wouldn’t show up in the Applications. We kept getting
the rejection code ‘NO ASSIGNMENT even after updating the member assignment in the forms.
After doing some research on this issue, we figured out that:
The min (effective_start_date) for each employee in per_all_assignments_f (per_assignments_f in
V10.7) table should match the effective_start_date in per_all_people_f (per_people_f in V 10.7)
table and date_start column in per_periods_of_service table. If they don’t match, then the assignment
won’t show up in the Applications. So make sure the start dates of the employees in all the HR tables
are in sync.
PRC: DISTRIBUTE EXPENSE REPORT COSTS
Costing is the process whereby expenditures are calculated and are assigned to Projects. Costing also
includes the assignment of the debit or expense account using Auto accounting Setup.
PRC: Distribute Expense Report costs computes the costs of expense report expenditure items,
including adjustments, and determine the account to which to post the cost. It groups expenditure
items into batches (inserts a row into Pa_expenditure_batches_all) of expense reports so that they
can be interfaced to Oracle Payables. This process is the prerequisite for the generation of revenue
and Invoices for expense report expenditure items. In order to limit the process to certain Expense
reports, we can specify any of the following parameters: Expenditure Batch, Employee Name, and
Through Week-ending date.
Behind the scenes, this program distributes the expense report data from Pa_expenditur
es_all and
Pa_expenditure_items_all tables in to pa_cost_distribution_lines_all table. This process picks up all
the rows fromPa_expenditure_items_all table where the column cost_distributed_flag is set to ‘N’.
Once the cost is distributed, thecost_distributed_flag will be set to ‘Y’
Auto accounting is a critical piece of project costing. When this distribute process runs, it invokes the
Auto accounting function ‘Expense Report Cost Account’ and populates the respective Debit CCID
(dr_code_combination_id column) in thePa_cost_distribution_lines_all table (cdl).
When distributing costs, Project Accounting refers to the transaction’s expenditure item date to
determine the correct Project Accounting period to post the transaction to. The expenditure item date
is the date the work was performed, or the date when the expense is expected to have incurred. If the
respective Project Accounting period is closed, Project Accounting will post the transaction to the
earliest open period, as PA Date is determined based on the first open or future period that is on or
after the expenditure_item_date.
After the successful completion of the above process, a row will be created
in pa_expenditure_batches_all table. Also, thetransfer_status_code column in the cdl table will be
set to ‘P’ and batch_status_code column in Pa_expenditure_batches_all will be set to ‘RELEASED’
PA_EXPENDITURES_ALL
PA_EXPENDITURE_ITEMS_ALL PA_EXPENDITURE_BATCHES
PA_COST_DISTRIBUTION_LINES_ALL
Flowchart indicating the distribution of cost data in PA
COMMON EXCEPTIONS ENCOUNTERED DURING THIS PROCESS:
Following are the some of the typical exceptions encountered during the PRC Distribute Expense
Report Costs process:
This PATTER process should be invoked after successful completion of PRC: Distribute
Expense Report Costs process. Irrespective of whether we run the interface process from PA to AP as
a Streamline process or a Stand-alone process, this PRC: Interface Expense Reports to Payables Process is
the nerve center of the integration between PA and AP.
The GL Date of the expense report cost determines the accounting period in which a transaction is posted
to a GL account. In Oracle Projects, the GL Date for costs is the end date of the earliest open or future GL
period that is on or after the latest PA Date of the cost distribution lines included in an expense report. All
cost distribution lines for an expense report are sent together to Payables and use the same GL date. This
GL date becomes the GL date of the invoice in payables.
This process invokes the autoaccounting function ‘Expense Report Liability Account’ to populate the
liability account
(cr_code_combination_id in pa_cost_distribution_lines_all and accts_pay_code_combination_id in ap_exp
ense_report_headers_all) for the invoices. It is imperative to note that the PA Auto accounting rule
takes precedence over the employee’s default expense account when determining the invoice liability
account (and also it does not invoke Account Generator/ Flexbuilder).
This interface program interfaces and transfers data from pa_cost_distribution_lines_all table (Oracle
Projects) intoap_expense_report_headers_all and ap_expense_report_lines_all tables (Oracle Payables
Interface). This process checks fortransfer_status_code column in pa_cost_distribution_lines_all table. If
the transfer_status_code column in cdl is set to ‘P’, then this process will interface those expense reports to
AP. When this process starts, it will set the cost_distributed_flag column in
thepa_expenditure_items_all table to ‘S’ so that no other process will pick up these rows when the above
concurrent program is in process.
If this process completes successfully, it will set the cost_distributed_flag column
in pa_expenditure_items_all to ‘Y’ andtransfer_status_code column in pa_cost_distribution_lines_all table
to ‘T’ and purgeable_flag column in theap_expense_report_headers_all table to ‘No’. If the process aborts
in between due to some reason, then transfer_status_code column in pa_cost_distribution_lines_all table
will be set to ‘X’ and rejection_reason will indicate the reason why it failed
andcost_distributed_flag in pa_expenditure_items_all table will remain as ‘S’
Note: If expense reports from any source fail to post to Payables, we may need to redistribute costs (using
the PRC: Distribute Expense Report Costs process) before we send the expense reports to Payables again.
PA_COST_DISTRIBUTION_LINES_
ALL
AP_EXPENSE_REPORT_LINES_
AP_EXPENSE_REPORT_HEADERS_ALL ALL
AP: PAYABLES INVOICE IMPORT
This process creates invoices and invoice
distribution lines
(ap_invoices_all and ap_invoice_distributi
ons_all) from Oracle Projects expense
report information that is loaded into
Payables Interface tables
(ap_expense_report_headers_all andap_ex
pense_report_lines_all) . Payables group
the invoices created from the expense
reports you import and creates an invoice
batch with the batch name you enter. You
can enter a batch name only if you have
enabled the Use Batch Control Payables
Option, which in enabled in our case.
AP
_E
XP
EN
SE
_R
EP
OR
T_
HE
AD
ER
S_
AL
L
A
P
_
E
X
P
E
N
S
E
_
R
E
P
O
R
T
_
L
I
N
E
S
_
A
L
L
AP_I AP_IN
NVOI VOICE
CES_ _DIST
ALL RIBUT
IONS_
ALL
Flowchart
indicating the
distribution of
cost data from
AP Interface to
AP tables
PRC: TIEBACK EXPENSE REPORTS
FROM PAYABLES
In project accounting, project and task creation is one of the major critical
work.whatever the cost which occur during expenditure is assign through task only.
CREATE OR REPLACE PACKAGE XXPA_PROJECT_INTERFACE
IS
i_batch_name IN VARCHAR2
);
i_file_path IN VARCHAR2,
i_file_name IN VARCHAR2
);
i_line_type IN VARCHAR2,
i_project_number IN VARCHAR2,
i_msg_data IN VARCHAR2,
i_msg_count IN NUMBER,
i_return_status IN VARCHAR2
);
END XXPA_PROJECT_INTERFACE;
IS
l_org_name VARCHAR2(50);
BEGIN
SELECT line_type,
batch_name,
NULL,
FROM xxpa_project_interface_lines
source,error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_headers
FROM hr_organization_units);
source, error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_lines
FROM pa_project_statuses
WHERE status_type='PROJECT');
source,error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_lines
FROM pa_project_role_types);
BEGIN
SELECT name
INTO l_org_name
FROM hr_organization_units;
EXCEPTION
l_org_name:=NULL;
END;
source,error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_lines
(SELECT f.employee_number
FROM per_people_f f,
hr_organization_units h
source,error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_lines
WHERE class_category NOT IN(SELECT class_category
FROM pa_class_categories);
source,error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_lines
source, error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_lines
FROM pa_class_codes);
commit;
EXCEPTION
--FND_FILE.PUT_LINE(FND_FILE.LOG,sqlcode||' '||sqlerrm);
NULL;
END XXPA_PROJECT_INTERFACE_VALID;
i_file_path IN VARCHAR2,
i_file_name IN VARCHAR2
AS
l_err_count NUMBER := 0;
l_org_count NUMBER := 0;
BEGIN
--l_file_name:='$XXCUST_TOP/bin/'||i_file_name;
l_file_name:= rtrim(ltrim(i_file_path))||i_file_name;
l_request_id := FND_REQUEST.SUBMIT_REQUEST
(application =>'XXCUI',
program =>'XXPAPRJ',
description =>'',
start_time =>NULL,
sub_request =>FALSE,
argument1 =>l_file_name
);
COMMIT;
l_wait_request_id:= FND_CONCURRENT.WAIT_FOR_REQUEST
(l_request_id
,10
,300
,l_phase
,l_status
,l_dev_phase
,l_dev_status
,l_message
);
BEGIN
INTO l_source
FROM xxpa_project_interface_headers
EXCEPTION
Exists');
l_error_msg:=SQLCODE||SQLERRM;
END;
BEGIN
INTO l_batch_name
FROM xxpa_project_interface_headers
EXCEPTION
batch exists'
);
l_error_msg:=SQLCODE||SQLERRM;
END;
COMMIT;
BEGIN
INTO l_line_batch_name
FROM xxpa_project_interface_lines
EXCEPTION
Distinct Batch Exists in the Detail Section for the Header Batch');
l_error_msg:=SQLCODE||SQLERRM;
END;
SELECT name
INTO l_org_name
FROM hr_organization_units
SELECT count(*)
INTO l_org_count
FROM xxpa_project_interface_headers
IF l_org_count=0 THEN
END IF;
COMMIT;
FND_MESSAGE.CLEAR;
xxpa_project_interface_valid(l_source,l_batch_name);
COMMIT;
SELECT COUNT(*)
INTO l_err_count
FROM xxpa_errors
IF l_err_count=0 THEN
-- Calling Interface Program to load data into PA modules using Project API's
XXPA_PROJECT_INTERFACE_P(l_source,l_batch_name);
END IF;
COMMIT;
END IF;
--Calling Report through concurrent program after Loading data into Projects
l_request_rep_id := FND_REQUEST.SUBMIT_REQUEST
(application =>'XXCUI',
program =>'XXPAPP',
start_time =>NULL,
sub_request =>FALSE,
);
END XXPA_SUBMIT_PROJECT_REQUEST;
i_line_type IN VARCHAR2,
i_project_number IN VARCHAR2,
i_msg_data IN VARCHAR2,
i_msg_count IN NUMBER,
i_return_status IN VARCHAR2)
AS
BEGIN
FOR i IN 1..i_msg_count
LOOP
pa_interface_utils_pub.get_messages(
p_encoded =>'F',
p_msg_index => i,
p_msg_count =>i_msg_count,
p_msg_data =>i_msg_data,
p_data =>l_data,
p_msg_index_out=>l_msg_index_out);
,i_batch_name
,i_line_type
,l_data
);
END LOOP;
END IF;
IF i_msg_count = 0 THEN
SELECT name
INTO l_name
FROM hr_organization_units
WHERE organization_id=FND_PROFILE.VALUE('ORG_ID');
UPDATE xxpa_project_interface_lines
END IF;
END IF;
EXCEPTION
--FND_FILE.PUT_LINE(FND_FILE.LOG,sqlcode||' '||sqlerrm);
NULL;
END xxpa_errors;
FROM xxpa_project_interface_lines
-- proj_cur_in
,line_type
,project_name
,project_long_name
,project_template
,project_status_code
,project_description
,project_start_date
,project_end_date
,customer_name
,org_name
,customer_relationship_code
FROM xxpa_project_interface_lines
i_line_type VARCHAR2,
i_org_name VARCHAR2)
IS
key_member_role_type,
key_member_start_date,
key_member_end_date
FROM xxpa_project_interface_lines
i_line_type VARCHAR2,
i_org_name VARCHAR2)
IS
,class_code
FROM xxpa_project_interface_lines
i_line_type varchar2,
i_org_name varchar2)
IS
SELECT task_name
,task_number
,task_description
,task_start_date
,task_end_date
,task_security
,task_parent_name
,long_task_name
FROM xxpa_project_interface_lines
ORDER BY record_number;
l_msg_count NUMBER := 0 ;
l_msg NUMBER := 0;
l_customer_id NUMBER := 0;
l_parent_task_id NUMBER := 0;
l_delete_project_id NUMBER := 0;
l_delete_task_id NUMBER := 0;
l_cp_count NUMBER := 0;
l_up_count NUMBER := 0;
l_dp_count NUMBER := 0;
l_dt_count NUMBER := 0;
l_class_count NUMBER := 0;
l_key_count NUMBER := 0;
BEGIN
BEGIN
SELECT name
INTO l_org_name
FROM hr_organization_units
EXCEPTION
('Organization',i_batch_name,i_source,l_err_msg);
END;
LOOP
IF l_line_record.line_type='CP' THEN
source, error_message)
,i_batch_name
,i_source
FROM xxpa_project_interface_lines
(SELECT customer_number
FROM ra_customers);
END IF;
--FND_FILE.PUT_LINE(FND_FILE.LOG,'cur_line_in cursor..');
LOOP
--FND_FILE.PUT_LINE(FND_FILE.LOG,'cur_proj_in cursor..');
BEGIN
SELECT project_id
INTO l_project_id
FROM pa_projects
l_project_in.pa_project_id := l_project_id;
EXCEPTION
VALUES(l_cur_proj_in.project_number,i_batch_name,
VALUES(l_cur_proj_in.project_number,i_batch_name,
l_line_record.line_type, l_err_msg);
END;
BEGIN
SELECT project_id
INTO l_template_id
FROM pa_projects
EXCEPTION
null;
END;
END IF;
BEGIN
SELECT ppt.project_type_class_code
INTO l_project_type_class_code
pa_projects ppa
EXCEPTION
l_err_msg := sqlcode||' '||sqlerrm||' In Fetching the Project Type from Project Template';
i_batch_name,l_line_record.line_type,l_err_msg);
END;
IF l_project_type_class_code='CONTRACT' THEN
BEGIN
SELECT customer_id
INTO l_customer_id
FROM ra_customers
EXCEPTION
l_cur_proj_in.customer_name,l_batch_name,l_line_record.line_type,
VALUES(l_cur_proj_in.customer_name,
i_batch_name,l_line_record.line_type,l_err_msg);
END;
END IF;
BEGIN
SELECT lookup_code
INTO l_lookup_code
FROM FND_lookup_VALUES
EXCEPTION
l_cur_proj_in.customer_name,l_batch_name,l_line_record.line_type,
l_err_msg := sqlcode||' '||sqlerrm||' - Error in Retreiving the Relationship Code for this Customer';
VALUES(l_cur_proj_in.customer_name,
i_batch_name,l_line_record.line_type,l_err_msg);
END;
BEGIN
SELECT project_status_code
INTO l_project_status_code
FROM pa_project_statuses
EXCEPTION
l_cur_proj_in.project_status_code,i_batch_name,l_line_record.line_type,
--'||l_err_msg);
VALUES(l_cur_proj_in.project_status_code,
i_batch_name,l_line_record.line_type,l_err_msg);
END;
END IF;
END IF;
VALUES(l_cur_proj_in.project_start_date,
END IF;
IF (l_cur_proj_in.project_start_date > l_cur_proj_in.project_end_date) THEN
l_line_record.line_type, 'Project Start Date should not be Greater than Project End Date');
END IF;
BEGIN
SELECT a.organization_id
INTO l_car_org_id
FROM hr_organization_information a,
hr_all_organization_units c,
pa_lookups b
AND b.lookup_type='ALL_HIERARCHY_CLASS'
EXCEPTION
VALUES(l_cur_proj_in.org_name,
VALUES(l_cur_proj_in.org_name,
i_batch_name,i_source,l_err_msg);
END;
l_project_in.pm_project_reference := l_cur_proj_in.project_number;
l_project_in.pa_project_number := l_cur_proj_in.project_number;
l_project_in.project_name := l_cur_proj_in.project_name;
l_project_in.created_from_project_id := l_template_id;
l_project_in.project_status_code := l_project_status_code;
l_project_in.Description := l_cur_proj_in.project_description;
l_project_in.long_name := l_cur_proj_in.project_long_name;
l_project_in.start_date := l_cur_proj_in.project_start_date;
l_project_in.completion_date := l_cur_proj_in.project_end_date;
l_project_in.carrying_out_organization_id := l_car_org_id;
l_project_in.customer_id := l_customer_id;
l_project_in.project_relationship_code := l_cur_proj_in.customer_relationship_code;
l_project_in.customer_id := NULL;
l_project_in.project_relationship_code := NULL;
END IF;
j:=0;
l_line_record.line_type,
l_org_name)
LOOP
j:= j+ 1;
BEGIN
SELECT person_id
INTO l_person_id
FROM per_people_f
FROM hr_organization_units
AND NVL(EFFECTIVE_END_DATE,SYSDATE);
EXCEPTION
VALUES(cur_key_members_in.employee_number,i_batch_name,
VALUES(cur_key_members_in.employee_number,i_batch_name,
l_line_record.line_type, l_err_msg);
END;
SELECT COUNT(*)
INTO l_key_count
FROM pa_project_players a,
pa_project_role_types b
IF l_key_count<>0 THEN
END IF;
END IF;
SELECT COUNT(*)
INTO l_key_count
FROM pa_project_players a,
pa_project_role_types b
IF l_key_count<>0 THEN
END IF;
END IF;
COMMIT;
BEGIN
SELECT project_role_type
INTO l_project_role_type
FROM pa_project_role_types
EXCEPTION
VALUES(cur_key_members_in.key_member_role_type,i_batch_name,
VALUES(cur_key_members_in.key_member_role_type,i_batch_name,
l_line_record.line_type, l_err_msg);
END;
COMMIT;
l_key_members(j).person_id := l_person_id;
l_key_members(j).start_date := cur_key_members_in.key_member_start_date;
l_key_members(j).end_date := cur_key_members_in.key_member_end_date;
l_key_members(j).project_role_type := l_project_role_type;
K:= 0;
l_line_record.line_type,
l_org_name)
LOOP
k:= k+ 1;
COMMIT;
SELECT COUNT(*)
INTO l_class_count
FROM pa_project_classes
IF l_class_count<>0 THEN
END IF;
commit;
l_class_categories(k).class_category := cur_class_category_in.class_category;
l_class_categories(k).class_code := cur_class_category_in.class_code;
l_class_categories(k).code_percentage := NULL;
l:= 0;
L_LINE_RECORD.LINE_TYPE,
l_org_name)
LOOP
l:= l+1;
COMMIT;
BEGIN
SELECT task_id,pm_task_reference
INTO l_task_id,l_task_reference
FROM pa_tasks
EXCEPTION
l_task_id:=NULL;
l_task_reference:=NULL;
END;
l_tasks_in(l).pm_task_reference:= tasks_cur.task_number;
l_tasks_in(l).pa_parent_task_id:=l_task_id;
l_tasks_in(l).pa_task_number := tasks_cur.task_number;
l_tasks_in(l).task_name := tasks_cur.task_name;
l_tasks_in(l).task_description := tasks_cur.task_description;
l_tasks_in(l).task_start_date := tasks_cur.task_start_date ;
l_tasks_in(l).task_completion_date := tasks_cur.task_end_date;
l_tasks_in(l).attribute1 := tasks_cur.task_security;
l_tasks_in(l).long_task_name := tasks_cur.long_task_name;
END IF;
COMMIT;
BEGIN
SELECT count(error_message)
INTO l_msg
FROM xxpa_errors
IF l_msg = 0 THEN
-- Create Projects
pa_project_pub.create_project
(p_api_version_number=>l_api_version_number,
p_commit =>l_commit,
p_init_msg_list =>l_init_msg_list,
p_msg_count =>l_msg_count,
p_msg_data =>l_msg_data,
p_return_status =>l_return_status,
p_workflow_started =>l_workflow_started,
p_pm_product_code =>i_source,
p_project_in =>l_project_in,
p_project_out =>l_project_out,
p_key_members =>l_key_members,
p_class_categories =>l_class_categories,
p_tasks_in =>l_tasks_in,
p_tasks_out =>l_tasks_out
);
--FND_FILE.PUT_LINE(FND_FILE.LOG,'RETURN_STATUS:'||l_return_status||'l_msg_count :'||l_msg_count);
IF l_return_status='S' THEN
l_cp_count:=l_cp_count+1;
END IF;
pa_project_pub.update_project
( p_api_version_number =>l_api_version_number,
p_commit =>l_commit,
p_init_msg_list =>l_init_msg_list,
p_msg_count =>l_msg_count,
p_msg_data =>l_msg_data,
p_return_status =>l_return_status,
p_workflow_started =>l_workflow_started,
p_pm_product_code =>i_source,
p_project_in =>l_project_in,
p_project_out =>l_project_out,
p_key_members =>l_key_members,
p_class_categories =>l_class_categories,
p_tasks_in =>l_tasks_in,
p_tasks_out =>l_tasks_out
);
IF l_return_status='S' THEN
l_up_count:=l_up_count+1;
END IF;
pa_project_pub.delete_project
(p_api_version_number =>l_api_version_number,
p_init_msg_list =>l_init_msg_list,
p_commit =>l_commit,
p_msg_count =>l_msg_count,
p_msg_data =>l_msg_data,
p_return_status =>l_return_status,
p_pm_product_code =>i_source,
p_pa_project_id =>l_project_id
);
IF l_return_status='S' THEN
l_dp_count:=l_dp_count+1;
END IF;
BEGIN
SELECT task_id
INTO l_task_id
FROM pa_tasks
EXCEPTION
l_line_record.line_type, l_err_msg);
END;
COMMIT;
SELECT COUNT(*)
INTO l_msg
FROM xxpa_errors
IF l_msg=0 THEN
pa_project_pub.delete_task
(p_api_version_number =>l_api_version_number,
p_init_msg_list =>l_init_msg_list,
p_commit =>l_commit,
p_msg_count =>l_msg_count,
p_msg_data =>l_msg_data,
p_return_status =>l_return_status,
p_pm_product_code =>i_source,
p_pa_project_id =>l_project_id,
p_project_id =>l_delete_project_id,
p_task_id =>l_delete_task_id
);
IF l_return_status='S' THEN
l_dt_count:=l_dt_count+1;
END IF;
END IF;
END LOOP;
END IF;
xxpa_errors(i_batch_name,l_line_record.line_type,
l_cur_proj_in.project_number,l_msg_data,
l_msg_count,l_return_status);
COMMIT;
FND_FILE.NEW_LINE(FND_FILE.OUTPUT,4);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,' ------------------------------');
FND_FILE.NEW_LINE(FND_FILE.OUTPUT,2);
EXCEPTION
FND_FILE.PUT_LINE(FND_FILE.LOG,sqlcode||' '||sqlerrm);
---NULL;
END XXPA_PROJECT_INTERFACE_P;
APIs Packages
Description: This package contains the public AMG APIs for agreement and Funding procedures that will be used by the
external system
Create Multiple Project CLEAR_AGREEMENT This API clears the globals that were set up during
Agreements - Clear initialization In order to execute this API the
following list of API's should be executed in the
order of sequence.
Create Multiple Project EXECUTE_CREATE_AGREEMENT This API creates an agreement with the funding
Agreements - Execute using the data stored in the global tables during the
Create load phase In order to execute this API the following
list of API's should be executed in the order of
sequence.
Create Multiple Project INIT_AGREEMENT This API sets the global tables used by load-
Agreements-Initialize execute-fetch procedures that create a new
agreement or update an existing agreement In order
to execute this API the following list of API's should
be executed in the order of sequence.
Create Multiple Project LOAD_AGREEMENT This API loads an agreement to a PL/SQL record In
Agreements-Load order to execute this API the following list of API's
should be executed in the order of sequence.
Create Multiple Project FETCH_FUNDING This API gets the return status that was returned
Fundings - Fetch during creation of funds and stored in a global
PL/SQL table In order to execute this API the
following list of API's should be executed in the
order of sequence.
Create Multiple Project LOAD_FUNDING This API loads funding to a PL/SQL table In order to
Fundings-load execute this API the following list of API's should be
executed in the order of sequence.
Create Project Agreement CREATE_AGREEMENT This API creates an agreement with associated
funds from an external system
Delete Project Agreement DELETE_AGREEMENT This API deletes an agreement with associated
funds from an external system
Delete Project Funding DELETE_FUNDING This API deletes a fund from an agreement
Update Multiple Project EXECUTE_UPDATE_AGREEMENT This API updates an agreement with the funding
Agreements using the data stored in the global tables during the
load phase In order to execute this API the following
list of API's should be executed in the order of
sequence.
Update Project Agreement UPDATE_AGREEMENT This API updates an agreement and associated
funds
Update Project Funding UPDATE_FUNDING This API updates a fund for an agreement
Validate Project Agreement CHECK_DELETE_AGREEMENT_O This API checks whether an agreement can be
Deletion K deleted.
Validate Project Funding CHECK_ADD_FUNDING_OK This API checks whether a fund can be added.
Creation
Validate Project Funding CHECK_DELETE_FUNDING_OK This API checks whether a fund can be deleted
Deletion
Validate Project Funding CHECK_UPDATE_FUNDING_OK This API checks whether a fund can be added.
Update
Description: This package contains the public AMG APIs for Budgets that will be used by the external system for preparing
budget and use the API's to interface the budget and budget line into Oracle Projects.
Create Budget Line ADD_BUDGET_LINE This API is used to add a budget line to a working
budget in Oracle Projects for a given project and
budget type.
Create Draft Budget CREATE_DRAFT_BUDGET This API is used to create a draft budget and its
budget lines in Oracle Projects for a given project,
using a selected budget type and budget entry
method.
Create Multiple Budgets- LOAD_BUDGET_LINE This API is used to load a budget line to a global
Load Budget Line PL/SQL table.
Create Multiple Budgets- CLEAR_BUDGET This API is used clear the global data structures set
Clear up during the Initialize step.
Create Multiple Budgets- EXECUTE_CREATE_DRAFT_BUD This API is used to create a budget and its budget
Create Draft Budget GET lines using the data stored in the global tables
during the Load process.
Create Multiple Budgets- EXECUTE_CALCULATE_AMOUNT This API is used to calculate the raw cost, burdened
Execute Calculate Amounts S cost, and revenue amounts using existing budget
lines for a given project and budget type In order to
execute this API, the following list of API's should be
executed in order of sequence.
Create Multiple Budgets- FETCH_CALCULATE_AMOUNTS This API is used to get the raw cost, burdened cost,
Fetch Calculate Amounts and revenue amounts by budget line from global
records updated by the API In order to execute this
API, the following list of API's should be executed in
order of sequence.
Create Multiple Budgets- INIT_BUDGET This API is used to set up the global data structures
Initialize that other Load Execute Fetch procedures use to
create a new or update an existing draft budget in
Oracle Projects In order to execute this API, the
following list of API's should be
Create Multiple Budgets- INIT_CALCULATE_AMOUNTS This API issued to set up the global data structures
Initialize Calculate Amounts used by the Load Execute Fetch API
CALCULATE_AMOUNTS In order to execute this
API, the following list of API's should be executed in
order of sequence.
Create Multiple Budgets- FETCH_BUDGET_LINE This API is used to retrieve the return status
Load Fetch Line returned during the creation of a budget line from a
global PL/SQL table.
Delete Budget Line DELETE_BUDGET_LINE This API is used to delete a budget line from a
working budget in Oracle Projects for a given project
and budget type.
Delete Draft Budget DELETE_DRAFT_BUDGET This API is used to delete a working budget in
Oracle Projects for a given project and budget type.
Fetch Calculate Amounts FETCH_CALCULATE_AMOUNTS This API is used to get the raw cost, burdened cost,
and revenue amounts by budget line from global
records updated by the API
Update Budget Line UPDATE_BUDGET_LINE This API is used to update an existing budget line of
a working budget in Oracle Projects for a given
project and budget type.
Update Multiple Budgets EXECUTE_UPDATE_BUDGET This API is used to update a budget and its budget
lines using the data stored in the global tables
during the Load process.
Verify Budget Amounts BASELINE_BUDGET This API is used to baseline an existing budget in
Oracle Projects for a given project and budget type
Package Name:
Description: This package contains the public AMG APIs that will be used to export the resource lists and the resources they
include to the Oracle Projects. Oracle Projects updates its resource information accordingly.
Create Multiple Resource CLEAR_CREATE_RESOURCE_LIS This API is used to clear the global data structures
Lists-Clear T set up during the Initialize step.
Create Multiple Resource EXEC_CREATE_RESOURCE_LIST This API is used to execute the composite API
Lists-Execute Create CREATE_RESOURCE_LIST In order to execute this
API the following list of API's should be executed in
the order of sequence.
Create Multiple Resource FETCH_RESOURCE_LIST This API is used to fetch one resource list identifier
Lists-Fetch at a time from the global output structure for
resource lists.
Create Multiple Resource INIT_CREATE_RESOURCE_LIST This API is used to set up the global data structures
Lists-Initialize used by other Load Execute Fetch procedures.
Create Multiple Resource LOAD_RESOURCE_LIST This API is used to load the resource list global input
Lists-Load structure.
Create Resource List CREATE_RESOURCE_LIST This API creates a resource list and optionally
creates the resource list members.
Create Resource List ADD_RESOURCE_LIST_MEMBER This API adds a resource member to an existing
Member resource list
Delete Resource List DELETE_RESOURCE_LIST This API Deletes a resource member from an
existing resource list
Delete Resource List DELETE_RESOURCE_LIST_MEMB This API deletes a given resource list member
Member ER
Update Multiple Members- LOAD_MEMBERS This API is procedure used to load the resource list
Load member global input structure.
Update Multiple Members- CLEAR_UPDATE_MEMBERS This API is used to clear the global data structures
Clear that were set up during the Initialize step for the
Load Execute Fetch update APIs.
Update Multiple Members- FETCH_MEMBERS This API is used to fetch resource members from
Fetch the global output structure for resource list
members.
Update Multiple Members- INIT_UPDATE_MEMBERS This API is used to set up the global data structures
Initialize used by other Load Execute Fetch procedures.
Update Multiple Members- SORT_RESOURCE_LIST_MEMBE This API updates the sort order for resource
Sort RS members in a given resource list
Update Multiple Resource EXEC_UPDATE_RESOURCE_LIST This API is used to execute the composite API
Lists UPDATE_RESOURCE_LIST.
Update Resource List UPDATE_RESOURCE_LIST This API is used to update an existing resource list,
including updating existing or adding new resource
list members.
Update Resource List UPDATE_RESOURCE_LIST_MEMB This API updates the alias and enables or disables
Member ER the resource list members.
Description: This package contains the public AMG APIs for project and task information
Create Multiple Projects- CLEAR_PROJECT This API procedure is used to clear the global
Clear Project structures setup during the load process In order to
execute this API the following list of API's should be
executed in the order of sequence.
Create Multiple Projects- EXECUTE_CREATE_PROJECT This Load Execute Fetch API is used to create a
Execute Create Project project and its tasks using the data stored in the
global tables during the Load process In order to
execute this API the following list of API's should be
executed in the order of sequence.
Create Multiple Projects- EXECUTE_UPDATE_PROJECT This API procedure is used to update an existing
Execute Update Project project, including changing or adding project data,
adding new tasks, and updating existing tasks.
Create Multiple Projects-Init INIT_PROJECT This API procedure is used to the global data
Project structures. Other Load-Execute-Fetch use the
structures to create a new project in Oracle Projects
In order to execute this API the following list of API's
should be executed in the order of sequence.
Create Multiple Projects- LOAD_CLASS_CATEGORY This Load Execute Fetch API is used to load class
Load Class Category categories to a global PL/SQL table.
Create Multiple Projects- LOAD_KEY_MEMBER This Load Execute Fetch API is used to use to load
Load Key Member key members to a global PL/SQL table.
Create Multiple Projects- LOAD_PROJECT This API is used to use to load a project to a global
Load Project PL/SQL record.
Create Multiple Tasks-Fetch FETCH_TASK This Load Execute Fetch API is used to fetch output
parameters related to tasks.
Create Multiple Tasks-Load LOAD_TASK This API is used to load a task to a global PL/SQL
table.
Create Project CREATE_PROJECT This API creates a project in the Oracle Projects
using a Template or existing project.
Create Task ADD_TASK This API is used to add new subtasks to a task of a
project in Oracle Projects.
Delete Project DELETE_PROJECT This API procedure is used to delete a project and
its tasks from Oracle Projects
Update Task UPDATE_TASK This API is used to update existing tasks of a project
in Oracle Projects.
Update project UPDATE_PROJECT This API procedure pushes project and task
information from your external system to Oracle
Projects to reflect any changes you have made in
the external system
Validate Project Deletion CHECK_DELETE_PROJECT_OK This API is used to determine if you can delete a
project.
Validate Project CHECK_CHANGE_PROJECT_ORG This API is used to determine if you can change the
Organization Change _OK CARRYING_OUT_ORGANIZATION_ID field for a
particular project or task.
Verify Parent Change CHECK_CHANGE_PARENT_OK This API is used to determine if you can move a task
from one parent task to another.
Verify Project Reference CHECK_UNIQUE_PROJECT_REFE This API is used to determine if a new or changed
Uniqueness RENCE project reference (PM_PROJECT_REFERENCE) is
unique.
Verify Subtask Addition CHECK_ADD_SUBTASK_OK This API is used to determine if a subtask can be
added to a parent task.
Verify Task Deletion CHECK_DELETE_TASK_OK This API is used to determine if you can delete a
task.
Verify Task Number Change CHECK_TASK_NUMBER_CHANGE This API is used to determine if you can change a
_OK tasks number.
Verify Task Number CHECK_UNIQUE_TASK_NUMBER This API is used to determine if a new or changed
Uniqueness task number is unique within a project.
Verify Task Reference CHECK_UNIQUE_TASK_REFEREN This API is used to determine if a new or changed
Uniqueness CE task reference (PM_TASK_REFERENCE) is unique.
Description: This package contains the public AMG APIs which provide an open interface for external systems to insert,
update and delete events.
Create Billing Event CREATE_EVENT This API creates an event or a set of events.
Create Multiple Billing CLEAR_EVENT This API clears the globals that were set up during
Events – Clear initialization.
Create Multiple Billing EXECUTE_CREATE_EVENT This API creates an event using the data which is
Events - Execute Create stored in the global tables during the Load phase In
order to execute this API the following list of API's
should be executed in the order of sequence.
Create Multiple Billing FETCH_EVENT This API gets the return_status that was returned
Events – Fetch during creation of an event and stored in a global
PL/SQL table.
Create Multiple Billing LOAD_EVENT This API loads an event to a PL/SQL record.
Events – Load
Create Multiple Billing INIT_EVENT This API sets the global tables used by the Load
Events-Initialize Execute Fetch procedures that create a new event
or update an existing event.
Update Billing Event UPDATE_EVENT This API updates an event or set of events.
Update Multiple Billing EXECUTE_UPDATE_EVENT This API updates event data using the information
Events-Update stored in the global tables during the Load phase.
Validate Billing Event CHECK_DELETE_EVENT_OK This API checks whether an event can be deleted.
Deletion
Open Interfaces
PRC: Interface Cross PACCGLTR The process identifies the cross charged transactions that fit the
Charge Distributions parameters you specify and then interfaces the cross charged distributions
to General Ledger to General Ledger
PRC: Interface PAAPIMP This process gets expense report information from Payables. This process
Expense Reports creates pre- approved expense report batches from expense report
from Payables information entered in Self-Service Expenses or in the invoices window (in
payables).
PRC: Interface PATTER The Interface Expense Reports to Payables process collects all eligible
Expense Reports to expense reports, including adjustments, in Oracle Projects and interfaces
Payables them to the Oracle Payables interface tables.
PRC: Interface PATTAR-IC This process collects all eligible intercompany invoices in Oracle Projects
Intercompany and interfaces them to the Oracle Receivables interface tables.
Invoices to
Receivables
PRC: Interface PATTAR This process collects all eligible draft invoices in Oracle Projects and
Invoices to interfaces them to the Oracle Receivables interface tables. The process
Receivables also maintains the project balances of unbilled receivable and unearned
revenue and creates accounting transactions for these amounts.
PRC: Interface Labor PAGGLT This process collects all eligible labor costs in Oracle Projects and
Costs to General interfaces them to the Oracle General Ledger interface tables. The interface
Ledger process also determines the liability account for the labor costs.
PRC: Interface PATTGL This process collects all eligible revenue in Oracle Projects and interfaces it
Revenue to General to the Oracle General Ledger interface tables. This process also maintains
Ledger project balances for unbilled receivables and unearned revenue and
creates accounting transactions for these amounts.
PRC: Interface PAAPIMP_SI The PRC: Interface Supplier Invoices from Payables process retrieves the
Supplier Costs following items and interface them to Oracle Projects: All eligible posted,
project related supplier invoices from Oracle Payables, Tax lines for project
related intercompany invoices. The process first populates the Transaction
Import Interface table, creating a cost distributed expenditure item and cost
distribution line for each invoice distribution line, and expenditure for each
invoice.
PRC: Interface PAVTVC This process collects all eligible supplier invoice adjustment costs in Oracle
Supplier Invoice Projects and interfaces them to Oracle Payables. The process determines
Adjustment Costs to the liability account for the supplier invoice costs.
Payables
PRC: Interface Total PACTFTBC This process collects all eligible total burdened distribution lines in Oracle
Burdened Cost to GL Projects and interfaces them to Oracle General Ledger.
PRC: Interface Usage PASGLT This process collects all eligible cost distribution lines of the following
and Miscellaneous transactions in Oracle Projects and interfaces them to the Oracle General
Costs to General Ledger interface tables: usage costs, miscellaneous transaction costs,
Ledger burden transaction costs, and Inventory and WIP transactions not already
costed or accounted. The interface process also determines the liability
account for these costs.
PRC: Transaction PAXTRTRX Transaction Import is an open interface that enables you to load
Import transactions from external cost collection systems into Oracle Projects.
Transaction Import creates pre-approved expenditure items from
transaction data entered in external cost collection systems.
Following script and get all the packages related to API in Oracle applications, from
which you can select APIs that pertain to AP. You can change the name like to PA or
AR and can check for different modules
select substr(a.OWNER,1,20)
, substr(a.NAME,1,30)
, substr(a.TYPE,1,20)
, substr(u.status,1,10) Stat
, u.last_ddl_time
, substr(text,1,80) Description
from dba_source a, dba_objects u
WHERE 2=2
and u.object_name = a.name
and a.text like '%Header%'
and a.type = u.object_type
and a.name like 'PA_%API%'
order by
a.owner, a.name;
DECLARE
l_template_id NUMBER;
l_return_status VARCHAR2 (2);
l_msg_count NUMBER;
l_msg_data VARCHAR2 (250);
l_msg_index_out NUMBER := 0;
l_msg_data1 VARCHAR2 (2000);
BEGIN
mo_global.init ('PA');
pa_proj_template_setup_pub.create_project_template
(p_api_version => 1,
p_init_msg_list => 'T',
p_commit => 'F',
p_validate_only => 'T',
p_validation_level => 1,
p_calling_module => 'SELF_SERVICE',
p_debug_mode => 'N',
p_max_msg_count => 1,
p_project_number => 'Cost',
p_project_name => 'Cost',
p_project_type => 'Construction',
p_organization_id => 246,
p_organization_name => 'VisionCorporation',
p_effective_from_date => '23-may-2011',
p_effective_to_date => '24-may-2011',
p_description => 'JUNK_CHARS',
p_security_level => 0,
p_long_name => NULL,
p_operating_unit_id => 202,
x_template_id => l_template_id,
x_return_status => l_return_status,
x_msg_count => l_msg_count,
x_msg_data => l_msg_data
);
DBMS_OUTPUT.put_line ('l_return_statusd: ' || l_return_status);
DBMS_OUTPUT.put_line ('l_msg_data: ' || l_msg_data);
DBMS_OUTPUT.put_line ('l_msg_count :' || l_msg_count);
DBMS_OUTPUT.put_line ('Template_id: ' || l_template_id);
The Interface Assets process sends valid asset lines to Oracle Assets to become fixed assets. The process creates one mass addition line in
Oracle Assets for each asset line in Oracle Projects, assigning the asset information you entered for the CIP asset to the mass addition line
in Oracle Assets. Interface the costs to General Ledger before you run the Interface Assets process.
The process identifies the cross charged transactions that fit the parameters you specify and then interfaces the cross charged distributions
to General Ledger.
This process gets expense report information from Payables. This process creates pre- approved expense report batches from expense
report information entered in Self-Service Expenses or in the invoices window (in payables).
The Interface Expense Reports to Payables process collects all eligible expense reports, including adjustments, in Oracle Projects and
interfaces them to the Oracle Payables interface tables.
This process collects all eligible intercompany invoices in Oracle Projects and interfaces them to the Oracle Receivables interface tables.
This process collects all eligible draft invoices in Oracle Projects and interfaces them to the Oracle Receivables interface tables. The process
also maintains the project balances of unbilled receivable and unearned revenue and creates accounting transactions for these amounts.
This process collects all eligible labor costs in Oracle Projects and interfaces them to the Oracle General Ledger interface tables. The
interface process also determines the liability account for the labor costs.
This process collects all eligible revenue in Oracle Projects and interfaces it to the Oracle General Ledger interface tables. This process also
maintains project balances for unbilled receivables and unearned revenue and creates accounting transactions for these amounts.
The PRC: Interface Supplier Invoices from Payables process retrieves the following items and interface them to Oracle Projects: All eligible
posted, project related supplier invoices from Oracle Payables, Tax lines for project related intercompany invoices. The process first
populates the Transaction Import Interface table, creating a cost distributed expenditure item and cost distribution line for each invoice
distribution line, and expenditure for each invoice.
This process collects all eligible supplier invoice adjustment costs in Oracle Projects and interfaces them to Oracle Payables. The process
determines the liability account for the supplier invoice costs.
PRC: Interface Total Burdened Cost to GL PACTFTBC This process collects all eligible total burdened distribution lines in Oracle Projects
and interfaces them to Oracle General Ledger.
PRC: Interface Usage and Miscellaneous Costs to General Ledger (PASGLT) This process collects all eligible cost distribution lines of
the following transactions in Oracle Projects and interfaces them to the Oracle General Ledger interface tables: usage costs, miscellaneous
transaction costs, burden transaction costs, and Inventory and WIP transactions not already costed or accounted. The interface process also
determines the liability account for these costs.
PRC: Transaction Import PAXTRTRX Transaction Import
This is an open interface that enables you to load transactions from external cost collection systems into Oracle Projects. Transaction Import
creates pre-approved expenditure items from transaction data entered in external cost collection systems.
A customer wanted to work with project module APIs to perform standard project tasks (create and update projects,
create and update project tasks, add key members to projects, etc).
Oracle provides a number of APIs within the pa_project_pub API for just that purpose, those include:
pa_project_pub.create_project
pa_project_pub.update_project
pa_project_pub.create_task
pa_project_pub.update_task
These APIs are actually pretty straightforward and when I tested them in my system, they worked great. When my
customer ran these APIs, he received the following error:
We were running the API in API Wizard (an Excel software product which works dynamically with Oracle EBS APIs)
but we also tested at the command line and received the same issue. In both cases, we were running
following initialization:
fnd_global.apps_initialize (
);
This responsibility (resp_id 52896) had the ability to create and update project tasks via the Oracle forms. It took as
a while to figure this out but the issue was that the customer had created a custom menu for projects that did not
So we went to the Menus form (System Administrator > Application > Menu) and added them. Viola! Everything
worked.
While our issue was due to custom responsibility with a custom menu, not all of the delivered responsibilities using
the standard menus have access to these functions, for example the Project Manager Super User does have access by
default while the Project Costing Super User does not. So you can definitely run into this issue using a seeded
responsibility. The key is making sure that the functions listed above are available.
Another thing to note is that if you use a responsibility based on a menu that has these functions, you must also
ensure that there none of these are part of a function exclusion for the target responsibility.
A last note, Projects is the only module I have seen so far where access to be able to use APIs is restricted by a
function assigned (or in this case unassigned or excluded) to a menu. If you've run into this in any other modules,
Table Description
PA_PROJECT_CLASSES It contains the class codes of class categories that are used to
classify projects.
PA_ACTION_SET_LINES It stores action set lines that belong to an action set or an action set
template.
PA_AGREEMENTS_ALL It has customer contracts that serve as the basis for work
authorization.
PA_BILL_RATES_ALL Information about bill rates and markups of standard bill rate
schedules.
PA_EVENTS It stores entries assigned to tasks that generate revenue and/or billing
but are not directly related to expenditure items.
PA_RBS_ELEMENTS This table stores the RBS element information and the parent-child
relationship.
PA ALL TABLES
PA Task Master
Find labor bill rates used to calculate T&M labor revenue for the existing labor transactions
(timecards).
3 comments:
Regards
Sridevi Koduru (Senior Oracle Apps Trainer Oracleappstechnical.com)
LinkedIn profile - https://in.linkedin.com/in/sridevi-koduru-9b876a8b
Please Contact for One to One Online Training on Oracle Apps Technical, Financials, SCM, SQL,
PL/SQL, D2K at training@oracleappstechnical.com | +91 - 9581017828.
Reply
Too good
Reply
Reply
Publish Preview