Defining a Sales Tax Location
Flexfield Structure
Define Value Sets
You can use existing value sets if the value sets for your new structure have the same parent as an existing value set. For example, if your new structure is County.City, you can use the seeded AR_LOC_CITY value set for your 'City' segment, as this has 'County' as its parent. However, you must create a new value set for the county segment, as the seeded 'County' value set has a parent and your new value set does not.
Use the Define Value Set window to define new value sets. Query one of the default value sets provided by Receivables and copy all of the values except for the Name, Description and WHERE/ORDER BY values. Enter a name and description that reflects the kind of value set you are defining. For example, if you are defining a value set for the parent 'County' segment, you might call it 'AR_LOC_COUNTY_NO_PARENT'.
If you are defining a value set for the parent segment of your Sales Tax Location Flexfield structure, you must enter the following SQL clause in the WHERE/ORDER BY field:
where AR_LOCATION_VALUES.location_segment_qualifier||'' =
'<segment_name>'
If you are defining the value set for the segments other than the parent segment, you must enter the following SQL clause in the WHERE/ORDER BY field:
where AR_LOCATION_VALUES.location_segment_qualifier||'' =
'<segment_name>'
AND AR_LOCATION_VALUES.parent_segment_id = nvl(:$PARENT_VALUE_SET$,
AR_LOCATION_VALUES.parent_segment_id)
Define a New Sales Tax Location Flexfield Structure
After you define your value sets, you need to define your Sales Tax Location Flexfield structure in the Key Flexfield Segments window. Query 'Sales Tax Location Flexfield' in the Flexfield Title field; Receivables will return all the seeded Sales Tax Location Flexfield structures in the Structures region. To enter your new Sales Tax Location Flexfield structure, choose New Record from the Edit menu. Be sure to use a unique name for your new structure.
When you define each segment of your Sales Tax Location Flexfield structure, make sure you define them in the order of their dependencies. For example, if you are defining a new two segment structure using county and city, and county is your parent segment, define county as your first segment and city as your second segment. When you assign columns to each segment, make sure you assign them in ascending order, starting with LOCATION_ID_SEGMENT_1. In the example above you would assign LOCATION_ID_SEGMENT_1 to your first segment (County) and LOCATION_ID_SEGMENT_2 (City) to your second segment.
Use this window to also assign your new value sets and flexfield qualifiers to each segment. You should only enable one 'Location' qualifier for each segment. In the example above you would enable the County qualifier for the County segment and the City qualifier for the City segment. You must also enable your Tax Account and Exempt Level qualifiers as described above, then freeze your new structure.
Define Your Descriptive Flexfield Contexts
After defining your new Sales Tax Location Flexfield structure, you must define contexts for the following descriptive flexfields in the Descriptive Flexfield Segments window.
- Sales Tax Rate Assignment Flexfield: This flexfield displays in the Tax field of the Review Sales Tax Rates window.
- Item Exception Rate Assignment Flexfield: This flexfield displays in the Tax Rate Description field of the Item Tax Rate Exceptions window.
- Item Exception Rate Location Flexfield: This flexfield displays in the Location Description field of the Item Tax Rate Exceptions window.
- Exempt Regions Flexfield: This flexfield displays in the Location field of the Tax Exemptions window.
- Override Sales Tax Rates Flexfield: This field appears in the Rates region of the Tax Locations and Rates window.
Query each flexfield by entering the flexfield name in the Title field of the Descriptive Flexfield zone and 'Receivables' in the Application field. Receivables displays the seeded context values (one for each seeded Sales Tax Location Flexfield structure) in the Context Field Values region. Select New Record from the Edit menu to create a row where you can enter your new context field value. The value that you enter in the Name field must be set to the ID of your new Sales Tax Location Flexfield structure. Use the following SQL script to determine the ID:
$ sqlplus <AOL username>/<AOL password>
SQL> select id_flex_structure_name, id_flex_num from fnd_id_flex_structures where id_flex_code = 'RLOC';
After entering the Flexfield structure ID in the Name field and a description in the Description field, enter the segments and associated value sets for this Descriptive Flexfield. Define the same number of segments for each of the descriptive flexfields as you defined for your Sales Tax Location Flexfield structure. The only exception to this rule is the Override Sales Tax Rates flexfield. As the override only applies to segments above the City segment, this structure should only include the segments that you defined above the City segment for which you want to allow overrides. For example, if your Sales Tax Location Flexfield has County.City as the structure, the Override Sales Tax Rates Flexfield should have just one segment relating to County for its structure.
Attention: If you wish to use the override feature, you must include City in your Sales Tax Location Flexfield structure.
Hence, using our County.City example, you would create your new descriptive flexfields as follows:
Sales Tax Rate Assignment Flexfield
Column: LOCATION1_RATE
Value Set: AR_SALES_TAX_RATES
Column: LOCATION2_RATE
Value Set: AR_SALES_TAX_RATES
Item Exception Rate Assignment Flexfield
Column: LOCATION1_RATE
Value Set: AR_SALES_TAX_RATES
Column: LOCATION2_RATE
Value Set: AR_SALES_TAX_RATES
Item Exception Rate Location Flexfield
Column: LOCATION_ID_SEGMENT_1
Value Set: AR_LOC_COUNTY_NO_PARENT
Column: LOCATION_ID_SEGMENT_2
Value Set: AR_LOC_CITY
Exempt Regions Flexfield
Column: LOCATION_ID_SEGMENT_1
Value Set: AR_LOC_COUNTY_NO_PARENT
Column: LOCATION_ID_SEGMENT_2
Value Set: AR_LOC_CITY
Override Sales Tax Rates Flexfield
Column: OVERRIDE_RATE1
Value Set: AR_SALES_TAX_RATES
Note: AR_LOC_COUNTY_NO_PARENT has been used in this example, as this is the name given to the new value set in our previous example.
Be sure to freeze all five descriptive flexfield definitions when they are complete.
Specify Your Location Flexfield Structure System Option
After defining your new Sales Tax Location Flexfield structure, value sets, and your descriptive flexfield contexts, you must choose your Sales Tax Location Flexfield structure in the Location Flexfield Structure field of the System Options window. Upon saving this change, Receivables submits three concurrent programs. These concurrent programs create PL*SQL packages to interface between the tax windows and tax tables. Use the View Requests window to verify that these three concurrent requests have completed without error. The following is an example of the comments that should be displayed at the end of the log files:
No errors
APP-43157 Expansion completed without any errors
Concurrent process completed successfully
Attention: You cannot update your Sales Tax Location Flexfield structure once you have entered customer addresses or transactions.
If Your Concurrent Programs Fail
If your concurrent programs fail, check the following:
- The segments in your Sales Tax Location Flexfield and the Descriptive Flexfields are enabled.
- Your Sales Tax Location Flexfield and the five Descriptive Flexfields are frozen.
- The flexfield qualifier enabled for each location is correct. For example, if the segment is County, the County flexfield qualifier must be enabled.
- The Tax Account qualifier is assigned to one, and only one, segment of your Sales Tax Location Flexfield structure.
- The Exempt Level qualifier is assigned to one, and only one, segment of your Sales Tax Location Flexfield structure.
- The column that you assign to the first Sales Tax Location Flexfield segment is LOCATION_ID_SEGMENT_1 and the second segment is assigned to LOCATION_ID_SEGMENT_2 and so on.
- The SQL clause for the WHERE/ORDER BY field is correct for each value set. The SQL clause for the value set assigned to your parent segment is different from the SQL clause assigned to the value set for your non-parent segments. The parent segment is the first segment of your Sales Tax Location Flexfield structure.
- The Descriptive Flexfield context field value names are set to the ID of your Sales Tax Location Flexfield structure, the Descriptive Flexfield segments refer to the correct value set and the structure of the Descriptive Flexfields correctly maps to the Sales Tax Location Flexfield structure.
- Your system has free disk space.
See Also
Setting Up Tax
Calculating Tax
Customizing Your Sales Tax Location Flexfield Structure