Oracle Applications

Oracle for Beginners

Function to fetch Organization Info

Posted by shameemakhtar on June 29, 2010



CREATE OR REPLACE function ztd_get_org_info_fn 
(
    p_org_id in number, 
    p_choice in varchar2
)
return varchar2
is
    p_org_name varchar2(250);
    p_short_code varchar2(10);
begin

    select name
    into p_org_name
    from hr_all_organization_units
    where organization_id = p_org_id;
    
    select organization_code
    into p_short_code
    from mtl_parameters
    where master_organization_id = '968'
    and organization_id = p_org_id;
    
    case 
        when upper(p_choice) not in ('NAME', 'DESC') then
            return 'ORA-user error: Wrong Parameter';
        when p_choice = 'NAME' then
            return p_org_name;
        when p_choice = 'CODE' then
            return p_short_code;
        else 
            return null;
    end case;
    
exception 
when no_data_found then
    return null;
when others then
    return nvl(sqlerrm, null);
end;
/

The above function takes in two parameters, namely organization_id and a parameter for choice. Based on the choice, the function will return either the organization name or the organization short code from two different select statements.

In case no data is found, it will return null, and in case of error, it will return the error message.

Note the following:
a. I am hard-coding the Master Organization Id in this case since I am using writing this script for one of the Operating Units in a multi-Org structure. Since I can have only one Master Organization per Operating Unit, I have hard-coded this value to restrict my Organizations and to keep the code simple.

Tables used:
hr_all_organization_units
mtl_parameters

Use the following to test your function:

select ztd_get_org_info_fn('967', 'CODE')
from dual;

Shameem Bauccha
28 June 2010

Posted in Inventory, Pl/Sql Functions, Procurement / Supply Chain, Scripts, Supply Chain Management, System Administration, System Administrator, Technical | Tagged: , , , , | 1 Comment »

Function to fetch Employee information

Posted by shameemakhtar on June 29, 2010



CREATE OR REPLACE function ztd_get_employee_info_fn 
(
    p_emp_id in varchar2,
    p_choice in varchar2
)
return varchar2
is
    p_emp_num varchar2(250);
    p_emp_name varchar2(250);
    p_emp_email varchar2(250);
begin

    select employee_number, 
           full_name, 
           email_address
    into p_emp_num,
         p_emp_name,
         p_emp_email
    from per_people_f
    where person_id = p_emp_id;
    
    case
        when upper(p_choice) not in ('NUM', 'NAME', 'EMAIL') then
            return 'ORA-user error: Wrong Parameter';
        when upper(p_choice) = 'NUM' then
            return p_emp_num;
        when upper(p_choice) = 'NAME' then
            return p_emp_name;
        when upper(p_choice) = 'EMAIL' then
            return p_emp_email;            
    end case;
    
exception 
when no_data_found then
    return null;
when others then
    return nvl(sqlerrm, null);
end;
/
commit;

The above function takes in two parameters, namely employee_id and a parameter for choice. Based on the choice, the function will return either the employee number, his full name or his email address.

In case no data is found, it will return null, and in case of error, it will return the error message.

Note the following:
a. The additional parameter ‘p_choice’ allows me the flexibility of using the same function to return different columns from the same select statement as required. You could have added more choices to enable you to return other fields. This gives me two advantage: I do not need to build a separate function for each and it simplifies my joins in eventual select statements as I have one table less to join.
b. Instead of making p_choice a number, I have made it a character. You can argue that I could have put remarks besides each number, but as preferred varchar2 as this makes its usage more intuitive.
c. I used the standard function ‘upper’ to further allows for any combination of cases when passing parameter p_choice.
d. Before checking for actual cases, I check whether there is an error in entering parameters
e. In case of no data found, I am returning null instead of the error code. I am returning the error messages in case of other errors. You could have opted otherwise.

I am using this structure and logic to build a series of simple functions that will allow me simplifies my eventual queries in the future.

Table Used:
per_people_f (You can use per_people_x as well).

You can check your function as follows:

select ztd_get_employee_info_fn(4018, 'NUM')
from dual;

Shameem Bauccha
28 June 2010

Posted in Core HR, Human Resource Management, Pl/Sql Functions, Scripts, System Administration, System Administrator, Technical | Tagged: , , | Leave a Comment »

Function to fetch User Details

Posted by shameemakhtar on June 29, 2010


create or replace function ztd_get_user_fn
(
p_user_id in varchar2
)
return varchar2
is
p_user_name varchar2(100);
begin
select user_name
into p_user_name
from fnd_user
where user_id = p_user_id;
return p_user_name;

exception
when others then
return nvl(sqlerrm, null);
end;

commit;

This function will return the username when you pass in the user_id. In case no data is found or any other error is encountered, you will receive the appropriate error code.

Tables used:
fnd_user

You can use the following select statement to test your function:

select ztd_get_user_fn(14061)
from dual;

Shameem Bauccha
28 June 2010

Posted in Pl/Sql Functions, Scripts, System Administration, System Administrator, Technical | Tagged: , , , | Leave a Comment »

View for Chart of Accounts KFF

Posted by shameemakhtar on October 19, 2009


The script below allows you creates a view for your chart of accounts.
Modify to suit your requirements. Note that the value set name of each segment is passed as parameter.

CREATE OR REPLACE VIEW ABH_GL_ACC_CONCAT_SEGMENTS
AS
SELECT cc.code_combination_id,
 cc.chart_of_accounts_id,
 cc.detail_posting_allowed_flag post,
 cc.detail_budgeting_allowed_flag budget,
 cc.account_type,
 cc.show_account_type,
 cc.enabled_flag,
 cc.summary_flag,
 --segment: segments used in COA definition
 cc.segment1,
 cc.segment2,
 cc.segment3,
 cc.segment4,
 cc.segment5,
 cc.segment6,
 concat(concat(concat(concat(concat(concat(concat(concat(concat(concat(segment1, '-'), segment2),'-'), segment3), '-'), segment4), '-'), segment5), '-'), segment6) account_comb,
 get_flex_vs_desc('ABH Company', cc.segment1, '') Company,
 get_flex_vs_desc('ABH Cost Center', cc.segment2, '') "Cost Center",
 get_flex_vs_desc('ABH Account', cc.segment3, '') "Account",
 get_flex_vs_desc('ABH Sub Account', cc.segment4, cc.segment3) "Sub Account",
 get_flex_vs_desc('ABH Location', cc.segment5, '') "Location",
 get_flex_vs_desc('ABH Entity-Services', cc.segment6, '') "Entity-Services"
FROM GL_CODE_COMBINATIONS_V cc

Refer to document ‘Fetching Key Flexfield Value Description‘ for get_flex_vs_desc.
Shameem Bauccha

19 October 2009

Posted in General Ledger, Oracle Apps, Scripts, System Administrator, Technical | Tagged: , , , | 3 Comments »

Fetching Flexfield Description

Posted by shameemakhtar on October 19, 2009


CREATE OR REPLACE FUNCTION APPS.GET_FLEX_VS_DESC (P_VALUE_SET_NAME VARCHAR2, P_FLEX_VALUE VARCHAR2, P_PARENT_FLEX_VALUE VARCHAR2)
RETURN VARCHAR2 IS
DESCRIP VARCHAR2(50);
BEGIN
IF P_PARENT_FLEX_VALUE IS NULL
THEN
/*** In case the value set is independent ***/
SELECT DISTINCT DESCRIPTION
INTO DESCRIP
FROM FND_FLEX_VALUES_VL
WHERE FLEX_VALUE_SET_ID =
(
SELECT FLEX_VALUE_SET_ID
FROM FND_FLEX_VALUE_SETS
WHERE FLEX_VALUE_SET_NAME = P_VALUE_SET_NAME
AND FLEX_VALUE = P_FLEX_VALUE
--AND PARENT_FLEX_VALUE_LOW = P_PARENT_FLEX_VALUE
);
ELSE
/*** If the value set is dependent on another value set ***/
SELECT DISTINCT DESCRIPTION
INTO DESCRIP
FROM FND_FLEX_VALUES_VL
WHERE FLEX_VALUE_SET_ID =
(
SELECT FLEX_VALUE_SET_ID
FROM FND_FLEX_VALUE_SETS
WHERE FLEX_VALUE_SET_NAME = P_VALUE_SET_NAME
AND FLEX_VALUE = P_FLEX_VALUE
AND PARENT_FLEX_VALUE_LOW = P_PARENT_FLEX_VALUE
);
END IF;
RETURN NVL(DESCRIP, 'ERROR');
END;
/

Shameem Bauccha

19 October 2009

Posted in Oracle Apps, Scripts, System Administration, System Administrator, Technical | Tagged: , , , | Leave a Comment »

Tax Configuration: Create Tax

Posted by shameemakhtar on October 3, 2009


Platform: R12

Tax Manager –> Tax Configuration –> Taxes

A tax is defined under a tax regime. You need to define a tax regime before you define your tax.

Refer to document ‘Create Tax Regimes’.

Create Tax

Click on ‘Create’.

Main Information

Configure the Tax.

Select the previously defie tax regime code. For your tax to work, define it for party type ‘Operating Unit Owning Tax Content’ in the Configuration Owner.

You may choose to create the new tax from scratch or based on an existing tax (whereby some settings will be defaulted).

If you have localized taxes based on geography, then the need to define your tax zones before.Configure your tax at the appropriate geography type (country, state, city, region etc…). If you are not using tax zones, set your taxes at country level.

You may decide to configure Exchange rate at this level.

You can also set the Reporting Tax Authority and Collecting Tax Authority.

Controls and Defaults

Check the ‘Allow Entry of Manual Tax Lines’ if you intend to allow user to manually input tax lines on invoices. To be able to check that option, you must however check the ‘Allow Overide and Entry of Inclusive Tax Lines’ option also.

In our scenario we will not allow user to manually create tax lines nor will we allow them to override calculated tax lines.

Tax Account Controls

Tax Exeptions/Exemptions Control

Tax Recovery Controls

If you are defining recoverable taxes, then you need to check the ‘Allow Tax Recovery’ option. Along with rate for tax, you will also need to define tax recovery rate.

In our scenario, taxes are not recoverable. However we have defined them as recoverable and set the recovery rate as 0.

Defaults

Tax Reporting Codes

In some countries, you may have specific tax recording requirements. Configure this section if that is the case.

Posted in E-Business Tax, Financials, Oracle Apps | Tagged: , , , , | 1 Comment »

Tax Configuration: Complete First Party Legal Entity Party Tax Profile

Posted by shameemakhtar on October 3, 2009


Platform: R12

Tax Manager –> Parties –> Party Tax Profiles

On the Tax Manager Homepage, click on the ‘Go to Task’ icon.

Search First Party Legal Entity - Tax Profile

Search First Party Legal Entity - Tax Profile

Ensure Party Types is ‘First Party Legal Entity’. Type in the Party Name and click on ‘Go’.

Party Tax Profiles

Party Tax Profiles

Click on ‘Update Tax Profile’.

Update Party Tax Profile - Main

Update Party Tax Profile

Configure the four sections as appropriate:

–          Main:

Party Tax Profile - Main

Party Tax Profile - Main

–          Classifications

Party Tax Profile - Classifications

Party Tax Profile - Classifications

–          Tax Reporting Codes

Party Tax Profile - Tax Reporting Codes

Party Tax Profile - Tax Reporting Codes

–          Configuration Options

Party Tax Profile - Configuration Option

Party Tax Profile - Configuration Option

You can see that the Tax Regime is already associated with the First Party Legal Entity.

Shameem Bauccha

1 July 2009

Posted in E-Business Tax, Financials, Oracle Apps | Tagged: , , , , , , , , , | 4 Comments »

Tax Configuration: Create Tax Regimes

Posted by shameemakhtar on October 3, 2009


Platform: R12

Create Tax Regimes
Tax Manager –> Tax Configuration –> Tax Regimes

TaxRegimes

TaxRegimes

Click on ‘Create’.

Tax Regime - Main Details

Tax Regime - Main Details

Expand the ‘Controls and Defaults’ Region and Configure.

Tax Regime Controls and Defaults

Tax Regime Controls and Defaults

Note that unless you have set the Legal Authority as Reporting Tax Authority or Collecting Tax Authority while creating the Party Tax Profile for the Legal Authority, the Legal Authority will not be available in the drop down list.
See Document ’E-Business Tax Configuration – Tax Authority Party Tax Profile’
Expand the ‘Compounding Level Controls’ region and Configure.

Tax Regime Compounding Level Controls

Tax Regime Compounding Level Controls

When you are done, click on ‘Continue’.

Create Tax Regime - Configuration Option

Create Tax Regime - Configuration Option

Add your First Party Legal Entity. Choose your ‘Configuration for Taxes and Rules’. If you are not using Common Configuration, specify your ‘Configuration for Product Exceptions’. Specify an effective date. US localizations require Service Subscriptions. Click on ‘Service Subscriptions’ to add Service Provider.

Service Subscriptions

Service Subscriptions

When you are done, click on ‘Finish’.

Tax Regime Creation Confirmation

Tax Regime Creation Confirmation

You will get a confirmation that the tax regime was created successfully.
You can search and see that the Regime has been created.

Search Tax Regime

Search Tax Regime

Shameem Bauccha

1 July 2009

Posted in E-Business Tax, Financials, Oracle Apps | Tagged: , , , , , , , , , , , | 7 Comments »

Query to determine approval path for PO documents

Posted by Ajmal Budulla on August 2, 2009


Platform: Oracle R 11.5.10

This query can be used to determine which approval path a Requisition or a Purchase Order has taken:

— For Requisition
select pos.name
from po_requisition_headers_all rh, wf_item_attribute_values av, per_position_structures pos
where av.item_type = rh.wf_item_type
and av.item_key = rh.wf_item_key
and av.name = ‘APPROVAL_PATH_ID’
and to_number(av.NUMBER_VALUE) = pos.position_structure_id
and rh.segment1 = ‘&1’ ;
–and rh.org_id = 172;   — You can use your org_id if necessary

— For Purchase Order
select pos.name
from po_headers_all poh, wf_item_attribute_values av, per_position_structures pos
where av.item_type = poh.wf_item_type
and av.item_key = poh.wf_item_key
and av.name = ‘APPROVAL_PATH_ID’
and to_number(av.NUMBER_VALUE) = pos.position_structure_id
and poh.org_id = 103
and poh.po_header_id = 1324;  —You need to retrieve your PO_HEADER_ID


Posted in Scripts, Technical | Tagged: , , , , , , | 4 Comments »