Sunday, May 27, 2018

Oracle Retail Trade Management (RTM)

Retail Trade Management Overview
=============================
  • It Is An Import Management System design to Integrate International Trade               transactions.
  • It is used to manage import process.
  • Any Additional cost other than supplier cost will be maintained in the RTM.
The following is a list of functionality that is part of the Oracle Retail Trade Management (RTM) product.
  1. Freight Type Maintenance*
  2. Freight Size Maintenance*
  3. SCAC Maintenance (Standard Carrier Alpha Codes)*
  4. Partner Maintenance (Banks, Freight Forwarders, Manufacturers, Import Authorities, Brokers, Agents, Factories) - Expense Profiles
  5. Supplier Maintenance– Import Attributes*– Expense Profiles– Documents
  6. Country Maintenance– Tariff Treatments*– Expense Profiles– Documents
  7. Outside Location Maintenance Clearing Zones* Lading Ports Discharge Ports
  8. Document Maintenance (Required Documents, Bank, Sender, and Additional Instructions)
  9. Cost Component Maintenance (Expenses, Assessments*)
  10. CVB Maintenance
  11. HTS Maintenance*– HTS Headings* Documents*– HTS Heading Restraints*– Quota Categories*– Tariff Treatments*– Fees and Taxes*– OGAs (Other Government Agencies) *– HTS Reference*– HTS CVD (Countervailing Duty) and AD (Anti-Dumping) *
  12. Item Maintenance– Import Attributes*– Eligible Tariff Treatments*–HTS/Assessments*– Documents– Item Supplier – Expenses– Item Supplier Origin Country – Expenses
  13. Purchase Order Maintenance– Import Attributes– Letter of Credit*– Order Item - HTS/Assessments*– Order Item Location - Expenses– Documents
  14. Letter of Credit*
  15. Transportation*
  16. Obligations*
  17. Customs Entry*
  18. Actual Landed Cost (ALC)* Estimates versus Actuals Comparison* Actuals Finalization*

Note : * denotes RTM core functionality

Simplified RTM - Merchandising

==========================

Below is a list of functionality that is available when running Simplified RTM which is part of the Merchandising Standard Edition.
  1. Partner Maintenance (Banks, Freight Forwarders, Manufacturers, Import Authorities, Brokers, Agents, Factories) 
  2. Expense Profiles
  3. Supplier Maintenance- Import Attributes* Expense Profiles Documents
  4. Country Maintenance- Tariff Treatments* Expense Profiles Documents
  5. Outside Location Maintenance Clearing Zones* Lading Ports-Discharge Ports
  6. Document Maintenance (Required Documents, Bank, Sender, and Additional Instructions)
  7. Cost Component Maintenance (Expenses, Assessments*)
  8. CVB Maintenance
  9. HTS Maintenance - * HTS Headings*o Documents -* HTS Heading Restraints* Quota Categories* Tariff Treatments* Fees and Taxes* OGAs (Other Government Agencies) * HTS Reference* HTS CVD (Countervailing Duty) and AD (Anti-Dumping) *
  10. Item Maintenance Import Attributes* Eligible Tariff Treatments* Documents HTS/Assessments* Item Supplier – Expenses Item Supplier Origin Country - Expenses
  11. Purchase Order Maintenance Letter of Credit* - This dialog is available with Std. Edition, but it is not required when an Order’s Payment Method is ‘Letter of Credit’ Order Item - HTS/Assessments* Order Item Location - Expenses Documents
  12. Letter of Credit* - This dialog is available with Std. Edition, but it is not required when an Order’s Payment Method is ‘Letter of Credit’
Note : * denotes RTM core functionality

RTM Product/Solution Summary
==========================




High Level RTM Flow 
===================



Foundation data setup for RTM includes:

1. HTS codes fileUpload

  • HTS (Harmonized Tariff schedule)details can be manually created or uploaded through a flat file        which is in Oracle retail file format.
  • If HTS codes already exists for item then upon uploading HTS details, HTS details gets updated at      item and Order levels.
  • The HTS mass update report displays the updated HTS details after HTS upload process.

How do we get the HTS codes file /tapes to upload?


Customs department of each import country will release HTS codes/Tapes every year with updated duty rates. These files can be upload into the system.


2. ELC cost components which affects the cost.

ELC cost components include Expenses, Assessments.
  • Expenses are broken down to “Country level” and “Zone level”. 
           • Country level expenses incurred when moving goods from a country of sourcing to the discharge port in the country of import.
           • Zone level expenses incurred when moving goods from a discharge port in the country of import to a final destination (Warehouse).

  • Assessments specifically refer to taxes, fees, or duties which are paid to the government. The tax, fee, and duty assessments roll up to become a landed cost component.


3. CVB Maintenance - used for complex calculations.

Computation Value Bases describe how expenses and assessments are combined to provide a base for the calculation. Basically CVB’s are used for complex calculations.

4. Expense profiles 

• Supplier and partner expense profiles are broken down to “Country” and “Zone”. Country level supplier and partner profiles are for expenses incurred when moving goods from a country of sourcing to the discharge port in the country of import. Zone level profiles are for expenses incurred when moving goods from a discharge port in the country of import to a final destination cost zone (Warehouse or Store).
• A mass maintenance capability exists to change the rate on a cost component in the ELC Cost Component Maintenance, Expense Profiles, and Item Expense dialogs and have it automatically update expense profiles, item expenses, and purchase order/item expenses where applicable on a designated date.
• This is extremely useful for freight rates which change with a fair amount of frequency. Assessment rates are driven by the HTS rate values. When a new file is uploaded items and PO/items can be updated


5. Documents 
  • Documents can added at different levels I.e. supplier / partner / country / item /PO.
  • IF the documents are added at higher level they will be updated to the lower levels.

6. Outside Locations

Outside locations are the location that are located outside the system where inventory will not be tracked. They are used in expenses profiles and updates the expenses based on lading and discharge ports.

7. Freight type /size

Freight type and freight size information basically used in transportation. This details will help Salam in to know which merchandise is coming in which freight and what type of freight it is.

These are Freight types:

• 20’ foot container.
• 40’ foot container, etc.

Below are the freight types that can be noted on the Bill of Lading:

• CFS/CFS: Container Freight Station to Container Freight Station
• A type of steamship line service in which cargo is transported between container freight stations, where containers may be stuffed, stripped, or consolidated. Usually for less than container load shipments.
• CY/CY: Container Yard to Container Yard
• A type of steamship line service in which freight is transported from origin container yard to destination container yard.
• LCL: Less than Container Load
• Usually LCL cargo is consolidated with other small lots for shipment by container.
• LTL: Less than Truckload
• Similar, used more in domestic freight movement.

8. Standard Carrier Alpha Codes (SCAC) Maintenance

A unique code used to identify transportation companies. It is typically two to four alphabetic letters long. Developed by the National Motor Freight Traffic Association in the1960s to help the transportation industry computerize data and records. The container can have a different SCAC code than the vessel. In RTM the container SCAC is entered in the Transportation Maintenance – Freight window.

Example: 

FDEG FEDEX GROUND
FDEN FEDEX (AIR)
FEXF FedEx Freight
FXFE FedEx LTL Freight East
FXFW FedEx LTL Freight West (formerly VIKN - Viking)
FXNL FedEx Freight National (formerly Watkins)

How SCAC codes are useful?
This is another level of tracking the goods during the transportation, SCAC code information could be useful to identify the containers of a particular freight forwarder.

ItemMaintenance
==============
1. Documents
• Documents can be added at items level which will updated on to the PO.

2. HTS/Assessments
•Initially HTS codes need to be attached manually for each item, during HTS upload HTS detail will be updated for all the item/HTS combination.

3. Eligible Tariff treatments
• Tariff treatments completely depends on the agreements between the countries.

• Example: The import duty between GCC countries would be zero like free trade, another example if any client importing the goods from India, based on the agreements between India and Qatar tariff treatments would differ.

4. Item supplier Expenses
• Expenses can be added at item level and gets updated onto the PO. Expenses added at this level are called Zone level expenses .expenses which are incurred from discharge port to cost zone locations are called zone level expenses.

5. Item supplier origin country –expenses
• Expenses can be added at item level and gets updated onto the PO. Expenses added at this level are called country level expenses .expenses which are incurred from lading port to discharge port are called country level expenses.
PO Maintenance
==============

1. Order item- HTS /Assessments.
• As soon as item added to PO, HTS /assessments details gets updated on to the PO.

2. Order item Location – expenses
• Expenses on the order can be added using partner’s/lading /discharge port combinations or if items already have expenses then expenses will be updated automatically.



Transportation
=============

• Transportation details can be upload through a flat file.
• Transportation information is used to track the items during transportation at many levels  
• Example: BOL number, Lot no, Seal ID, SCAC codes, freight size, freight type and Packing list information.
• Finalizing the transportation will create a customs entry records automatically.


Customs entry
============

• Client can maintain customs entry information for all import countries in custom entry module. This module also records the different types import duties paid to the government.
• When the transportation records are finalized, a Customs Entry is automatically created using information from the transportation record. This process ensures consistent and accurate data.
• Custom entry charges can be changed in custom entry module which would affect the weighted average cost of an item.
• Once the Customs Entry is completed, Salam studios & stores can choose to allocate the duty and assessment to Actual Landed Cost (ALC). 
• When the Customs Entry is Confirmed status, a non-merchandise invoice will be created automatically in Oracle Retail Invoice Matching.


Obligation
==========

• Obligations are invoices typically provided by partners (e.g. Freight forwarder, agents, etc.) and/or suppliers that capture the actual expenses incurred to bring the item from origin country to final destination (Warehouse). 
• Since Estimated Landed Cost (ELC) is only an estimate of the expenses incurred, the actual expenses (actual landed cost-ALC) can be captured to ensure that any variance between ELC and ALC is recorded and (optionally) allocated to the item’s costs.
• Negative obligation can also be added only if there is user error during entering the value.
• If the actual expenses are not equal to estimated expenses a cost adjustment will be generated for ELC / ALC difference and posted to stock ledger
• Approved and allocated obligations in Oracle Retail Trade Management will generate non-merchandise invoices in Oracle Retail Invoice Matching. 
• The actual obligation costs can be allocated to item/loc through the ALC module. 
ALC Finalization
• Actual landed Cost (ALC) is the sum of all actual expenses and assessments involved in bringing an item on a particular purchase order from the origin country to the final destination. 
• The incurred expenses are received in the form of Obligations provided by partners or suppliers. Incurred duties, in the form of assessments, are received and recorded through Customs Entry. ALC amounts can be viewed at the PO, PO/Item, shipment or entry level.
• Client can easily view the variance between the Estimated Landed cost (ELC) and ALC. 
• After analysis, Salam studios & stores have the option to finalize the actual landed costs. ALC finalization will update the stock ledger and WAC appropriately based on the actual cost instead of the estimated cost if inventory exists for the item/location. 
• If inventory does not exist for the item/location a cost variance record will be written to update the GL but not the stock ledger.





Wednesday, May 23, 2018

Technical Interview Question

SQL/PLSQL Questions 
===================

1) What is the use of 'Group By' & 'Having' clause & in your project where you used.
2) What is the use of cursor & types of cursor.
3) What are analytical functions in PLSQL.
4) What are bind variables in PLSQL.
5) What are different types of Triggers.
6) What is the difference between Function & Procedure.


Unix Questions
=============

1) How can you look the content of the file without opening it.
2) What is the difference between touch & cat command.
3) Difference between move & copy command.
4) How to delete a folder with multiple files.
5) If you want to move a set of files from one server to another server. How would you achieve it.


Proc Programs & Shell Scripting
==========================

1) have you complied proc programs.
2) How you have done retofiting for any proc programs.
3) Once you open a proc how it look like & what you will check first in proc program.



MOM modules Interview Questions

Question for 3 -  5 years of Experience
===============================


1) Where you will get the references of 454 calendar.
2) Once calendar is setup, where we can check start & end dates.
3) have you worked End of Month process.
4) Explain stock ledger process.
5) Role of Trandata_A & Trandata_B table in RMS.
6) What kind of data salmnth job holds & on what parameters data will rolled up.
7) What kind of Transactional data picked by salmnth job.
8) Did you involved in performing cyclic count for any client.
9) How Inventory valuation performed in MOM modules.
10) What kind of regular issues you faced at client location while processing sales in ReSA & Further in retail system.
11) Why Missing_tran_big_gap issue was coming while uploading sales from their Legacy system at go-live phase.
12) What do you mean by Post-Void in ReSA & explain...?
13) How sales get processed further from ReSA, how you did for Other modules.
14) Did you found any change is Sales process V15 & other version like V14 & V14.1.
15) Use of SVC table for sales processing.
16) ITEM_LOC ranging issue while processing sales to RMS from Legacy staging area.
17) Have to come across error like 'No Retail Item' while processing POSU files, If yes please explain ...?
18) Have you involved in creating & compiling Jobs.
19) If any multi-threaded job failed then, How you will fix the issue & re-run the job.
20) What is the role of Commit_Max_Counter in batch execution.
21) Have you worked on Replenishment for any client & How Min-Max method will work.
22) What is Lead time & pickup Lead time.

Tuesday, May 22, 2018

VAT Process in RMS

VAT (value-added tax)
=================
In some countries VAT also known as a goods and services tax (GST). It is a type of tax that is assessed incrementally, based on the increase in value of a product or service at each stage of production or distribution. VAT essentially compensates for the shared services and infrastructure provided in a certain locality by a state and funded by its taxpayers that were utilized in the elaboration of that product or service.

VAT is usually implemented as a destination-based tax, where the tax rate is based on the location of the consumer and applied to the sales price. Confusingly, the terms VAT, GST, consumption tax and sales tax are sometimes used interchangeably.

Overview : 

The amount of VAT is decided by the state as percentage of the end-market price. As its name suggests, value-added tax is designed to tax only the value added by a business on top of the services and goods it can purchase from the market.

To understand what this means, consider a production process (e.g., take-away coffee starting from coffee beans) where products get successively more valuable at each stage of the process. When an end-consumer makes a purchase, they are not only paying for the VAT for the product at hand (e.g., a cup of coffee), but in effect, the VAT for the entire production process (e.g., the purchase of the coffee beans, their transportation, processing, cultivation, etc.), since VAT is always included in the prices.

The value-added effect is achieved by prohibiting end-consumers from recovering VAT on purchases, but permitting businesses to do so. The VAT collected by the state is computed as the difference between the VAT of sales earnings and the VAT of those goods and services upon which the product depends. The difference is the tax due to the value added by the business. In this way, the total tax levied at each stage in the economic chain of supply is a constant fraction.


VAT in Oracle Retail (RMS)
----------------------------------------

At a system level, the tax calculations in RMS are governed by the system option called Default Tax Type. The tax type options are:

1) SALES - which is used for US only implementations and results in no tax calculations within RMS.
2) GTAX - which is used for Brazil implementations and assumes the taxes are calculated by an external tax engine via Oracle Retail Fiscal Management (RFM).
3) SVAT - which is used for all other implementations of RMS in which one or more locations for the retailer are subject to value added tax (VAT).

For SVAT implementations, retailers can additionally configure the tax processing in RMS by VAT region as follows:

i) Simple - VAT Regions defined as having a tax calc type of 'Simple' will have VAT computation based on the existing logic in TAX_SQL that uses rates defined for items to compute VAT on the transaction.

ii) Exempt - VAT Regions defined having a tax calc type of Exempt will not support VAT computation for transactions occurring in this region. For example, this is what would be used for US locations in an implementation that also contains locations for which VAT is applicable.

iii) Custom Tax - VAT Regions having a tax calc type of Custom will use Custom Taxation Rules that need to be defined by the retailer. The configuration required to implement this functionality is described in this section.


Note: If only one entity or location is passed into the tax function as described in the diagram above, then the tax calculation function behavior will be based on the tax calculation type of that entity or location. If the transaction involves two entities or locations (e.g. transfers), the tax calculation support will be based on the below matrix.

Role of VAT in RMS Application
-----------------------------------------------------


To setup the Vat in RMS, first the VAT Indicator needs to be enabled as a part of initial setup of RMS.


Next, to check, go to Control>System>System Variable>Localization. Here the user will be able to see the VAT being enabled
.


Next, to see the VAT Codes, go to Control>Setup>VAT Code Maintainance. Here there will be a list of Codes.



The rates for each code will be shown, when user clicks on Rates at each Code.


Next to see the VAT regions that are setup, go to Control>Setup>VAT region maintenance 




To view the VAT Regions defined, Double click on VAT Region maintenance which has list of VAT Regions, with the VAT Code Type as defined earlier.

Defining of the VAT can be done either at Department or at the Class Level.

RMS by default is setup to define the VAT at department level. However if the VAT needs to be defined at Class Level, go to Control>System>System Parameter> Localization, and click on the “Class Level Tax” check box.





Setting up VAT at Department Level:


To setup the VAT at the Department Level, go to Action>Merchandise Hierarchy and select the Department.



Select a Specific Department and click on Options and Select VAT Maintenance to view the VAT regions assigned to the Department.
The list of all VAT Regions will be shown here, with the Rate% for each region.




Setting up the VAT Region for Store:


Go to Action>Organization Hierarchy>Stores. VAT Region will be mentioned here.



Setting up the VAT Region for Warehouse:


Go to Action>Organization Hierarchy>Warehouse. VAT Region will be mentioned here.


Setting up the VAT Region for Supplier Site:


Go to Control>Supplier. VAT Region will be mentioned here.




VAT availability at Item Level:







VAT Effect in Purchase Orders:


Once the VAT is enabled and defined in Department and defined in the Items, Purchase orders can be created for the same.



Total order Cost: 1000(1 EA)
Total Order Retail (Excl. VAT): 2000 (50% markup on cost using Cost Method of Accounting)
Total VAT: 400(20% of 2000 = VAT)
Total Order Retail (Incl. VAT) : 2400 (2000 + 400)

At this point, Data with Tran Code 87 will be updated in Tran_Data and further be send to GL.

This transaction code is used for recording Input VAT amount for purchases (tran code –20),RUA and RCA transactions (tran code – 20U and 20C), consignment sales (tran code– 20) and return to vendor (tran code – 24) transactions.

This record captures the units in the transaction and VAT amount at cost. For purchases,RUAs, RCAs and consignment sales, VAT amount is a positive value and is calculated as(Cost * VAT rate/100). For return to vendor transactions, the VAT amount is a negativeValue and calculated as ((cost – restocking fee) * VAT rate/100). The VAT rate is retrieved From VAT_ITEM table. Additionally, the Order Number or RTV Order Number areRecorded in the first reference field.

The ‘VAT in Cost’ transactions captured in RMS are rolled up to the subclass/day,Subclass/week and subclass/month levels for a location and posted to G/L. They are not included in inventory calculations.

Whenever a Sale is performed, data with VAT is updated in Tran_Data with Tran Code 88 and sent to GL.

This transaction code is used for recording Output VAT amount for regular sales transactions (tran code – 1 and 3), sales return (tran code – 4), franchise sales (tran code –82) and franchise returns (tran code – 83).
This record captures the units in the transaction and VAT amount at retail. For sales transactions VAT amount will be positive value and for return transactions, VAT amount will be negative value. VAT rate is retrieved from VAT_ITEM table. Additionally, for franchise transactions, the associated transfer number is captured in the first reference column.

The ‘VAT Out Retail’ transactions captured in RMS are rolled up to the subclass/day, subclass/week and subclass/month levels for a location and posted to G/L. They are not included in inventory calculations.



Automation tool & Batches

Question for 3 -  5 years of Experience
============================

1) How restart & recovery can be handled for multi-threaded jobs.
2) Where the user specifies the number of threads for a particular job.
3) What is Oracle Wallet & how we can enable Oracle Wallet.
4) How to deploy the Automic Oracle Retail Template.
5) What recommended directories are to be setup for Automic Oracle Retail Template.
6) What is the role of Automic Rapid Automation (RA) Oracle Retail Agent & Automic Operating System Agent.
7) RA Oracle Retail agent is deployed in which components.
8) In implementation where & how FTP, or manage file transfer objects are used by client.
9) How do you get the notification of failed jobs & how do you fix it.
10) What kind of issues you come across while configuring retail jobs in Automation.
11) What do you mean by Test-run, Control-run and Dry-run.

Retail Batches & Scheduler Overview

"Hi Viewers ......This post consist of Retail Batches & Scheduler Overview"

Oracle Retail System Integration

"Viewers.....This post consisting of Integration concepts between Oracle Retail Applications "

Oracle Retail Applications Overview

"Viewers ...This post consisting of explanation on Oracle Retail Applications "

Interview Questions

Generic Questions (Non-Subjective)
============================

1) Please tell me your retail domain experience & total relevant experience as of now.
2) Do you have any offer in your hand as of now ...?
3) If you have offer in your hand then why are you looking for another offer or opportunity.
4) Why you want to re-locate...?
5) Whats your current package (ctc) & how much you are expecting from us.
6) Reason of leaving your current organisation.
7) Do you have any non-IT experience.
8) Do you have any gap between you last education & first job. If any please give reason.
9) Currently associated with which Organisation & where it is located.
10) What is your role & responsibility in current organisation.
11) How do you get to know about our company.
12) Is their any particular reason you have applied to our organisation.
13) Are you in notice period currently...?
14) If you have offer from other companies, How much they are paying you...?


Sunday, May 20, 2018

Thursday, May 17, 2018

Retail Business Processes

" Hello Viewers ..... Here we will be covering Retail Business Processes in detail "

Oracle Retail Merchandising System (RMS)

Hello Viewers

This post gives an overview of the information maintained by RMS and RMS integration with other applications.

Seed Data
--------------
RMS contains data that must be populated at the time of installation. Either the data is required by the application, or the data is static and can be loaded for any client. The code tables CODE_HEAD and CODE_DETAIL are examples of tables with system-required values that must be loaded at the time of installation. Additional codes can be added as needed to these tables after installation, by either using the online form or additional client scripts. Customization of the seed data is based on the client's requirements.

Additionally, some configuration tables must be populated for the application to open and function correctly, even though the configuration values can be modified later. These configurations are maintained in System Options set of tables, and are required for initial setup that can be updated prior to the implementation, to reflect final configuration.

Foundation Data
-----------------------
Foundation data is the base for all future information on which RMS builds. This information needs to be present before you begin using the system. The majority of foundation data can be set up online; more commonly, a client performs a data conversion process to import this information from legacy systems.

Foundation data consists of three types of information:

1) Organizational hierarchy
2) Merchandise hierarchy
3) Supplier and partner management

Organizational Hierarchy
----------------------------------
The organizational hierarchy allows you to create maximum of six levels of hierarchy relationships to support the operational structure of your company.

In a Retail store, the customer walks through the store and buys, retails procure goods from suppliers and the retailer acts as a customer. In a Franchise store, the retailer supplies goods to the franchise customers, the retailer acts as a supplier and tracks the sales.

You can create a preferred organizational structure to support consolidated reporting at various levels of the company. You can also assign responsibility for any level of the hierarchy to one or more people to satisfy internal reporting requirements.

The organizational hierarchy also supports two types of stores to satisfy the franchise requirements:

1) Franchise : The Franchise stores are used to support franchise business models. Other applications, such as RPM and RWMS, view franchise stores as they would view any other store in RMS, however, RMS performs special processing based on the store types.

2) Company : A company store act as retail store in RMS.


Merchandise Hierarchy
--------------------------------
The merchandise hierarchy allows you to create maximum of six levels of hierarchy relationships to support the product management structure of your company. You can assign a buyer and merchandiser at the division, group, and department levels of the merchandise hierarchy. You can also link a lower level to the next higher level. For example, you must indicate to which group a department belongs, or to which division a group belongs.

Supplier and Partner Management
-----------------------------------------------
A supplier supplies the merchandise and a partner is involved in other financial taxation that results in an invoice. Supplier and partner management provides functionality to create and store valid merchandise suppliers and partners. You can maintain a variety of information about suppliers such as financial arrangements, inventory management parameters, types of EDI transactions, and invoice matching attributes. Suppliers are typically created in a financial system and interfaced into RMS; supplier enrichment can be maintained in RMS.

The supplier structure can be extended to supplier-parent and supplier-site relationships, to accommodate financial systems that support this configuration. A supplier site is a location from which the supplier ships merchandise.

Item Maintenance
-------------------------
RMS is responsible for the creation and maintenance of all items. RMS uses a flexible data hierarchy for an item, with levels that allow you to model items in a desired way. The hierarchy consists up to three levels, highest (level 1) to lowest (level 3). Within the defined levels for an item family, one level is denoted as the transaction level. This is the level at which all inventory and sales transaction takes place. This model gives retailers a flexibility to create families of items that share common characteristics.

RMS creates several types of items, such as regular items, deposit items, packs, concession items, consignment items, and transformable items.

Through item maintenance, RMS also maintains the relationships of items with other entities such as suppliers, locations, and attributes.

Purchasing
----------------
The Purchase Order module allows you to create and maintain purchase orders in a variety of ways. It provides commitments to vendors for products in specific amounts for specified locations. Purchase orders are created manually or automatically through replenishment or from an external system. They can be created against entered contracts and deals, or directly through direct store delivery or Vendor Managed Inventory (VMI). RMS also provides the ability to maintain the items, locations, and quantities ordered for Purchase Orders.

Contracts
--------------
The contract dialog gives you the ability to create, maintain, submit, and approve contracts. A contract is a legally binding agreement with a supplier to supply items at a negotiated cost.

In RMS, the contracting functions fit closely with the replenishment and ordering functions. The main functions of the Contracts window are to book manufacturing time, track supplier availability and commitments, and match them with business requirements. The main business benefit of contracting is to achieve supplier involvement during the planning phase of a retailer's business.

Deals
---------
Deals management allows you to create and maintain deals with partners or suppliers. Deal partners can be suppliers, distributors, and manufacturers. Within a deal, clients create deal components, specify the items for each deal component, and define thresholds.

Components are deals or parts of deals that a retailer receives from a supplier. There can be multiple components in a single deal. You must define thresholds to define the quantity or amount that must be purchased or sold to receive the deal. RMS components include off-invoice deals, rebates, vendor-funded promotions, vendor-funded markdowns, and fixed deals.

You also define the items and locations for which the deal can be applied. You can choose to include or exclude locations as necessary.

You also define the Proof Of Performance (POP) terms for a deal. POP terms are defined by the deal vendor that offers the deal. For deals, POP terms are defined at the deal, deal/component, or deal/component/item-location combination. For fixed deals, POP terms are defined at the deal level.

The deal pass-through functionality allows a percentage of a deals discount to be passed from a warehouse to a franchise store. This functionality applies to franchise stores.

For clients that choose to use supplier sites with RMS, deals are managed at the supplier parent level.

Cost Management
-------------------------
For cost changes, the Cost Management dialog gives you the ability to:

i) Accept cost changes received through EDI (flat files)
ii) Create/Edit/View a cost change

A cost change is an adjustment to the supplier cost of an item, either up or down. Before you create a cost change, you must create a list of user-defined cost change reasons and then apply a reason to each cost change. This is useful in reporting.

The initial cost of an item is established at item setup. The cost of the item is adjusted in the item record until the status of the item is Approved. After the item is approved, any cost changes needs to be handled through the cost change dialog.

When a cost change is submitted through EDI, the EDI cost change is reviewed and released to create a cost change document. The cost change document is then viewed and submitted for approval.

When a cost change document is created online, you enter the cost change, an event description, an effective date, and a reason code, and then submit the cost change for approval.

After a cost change is approved, the item/supplier cost record is updated. Any outstanding purchase order line items with no received units are recalculated, if recalculation is indicated on the cost change.

Additionally, you use the Cost Management dialog to create cost zone groups for zone-type expenses for item estimated landed cost. Zone-type expenses are incurred when imported goods are moved from the discharge port to the purchase order receiving location. Because the expenses can vary depending on the distance between the discharge port and the receiving location, cost zones can be configured to appropriately reflect the expenses. The locations (stores and physical warehouses) must be grouped to reflect the expense variances for moving the goods. Normally a zone strategy is used for these cost zone groups, but it is possible that every location within the company has different expenses to move the goods from the discharge port. If that is the case, a store strategy would be used. If every location within the company has the same transportation costs from the discharge port, a corporate strategy is adequate (but not when multiple currencies are being used). After these cost zone groups are defined, they are added to new items as they are created, in anticipation of the expense profiles that are needed for the items.

Multiple Sets of Books
------------------------------
Support for multiple sets of books provides better integration with financials systems that supports Multiple Sets of Books within a single installation. Multiple Sets of Books option is enabled by default in RMS and the client will need to set up additional location-specific foundation data, including:

i) Organizational Units upon Set of books IDs
ii) Transfer Entities upon Set of books IDs

Inventory Control
-------------------------
Inventory functionality in RMS is the core of the application. Inventory is tracked perpetually and financially in RMS. The following describes perpetual inventory tracking. For information on financial inventory tracking, see Stock Ledger.

RMS achieves inventory control through functions that include transfers, Return to Vendor (RTV), Inventory Adjustments, Sales Upload, Purchase Order Receipts (shipments), Stock Counts, Allocations, Franchise Orders and Returns, and Customer Orders.

Transfers
--------------
Transfers in RMS provide an organized framework for monitoring the movement of stock. RMS creates and maintains transfers; however, you can also interface transfer information into RMS from other systems.

RMS supports a number of different types of transfers such as intercompany transfers, book transfers, Purchase Order-linked transfers, externally generated transfers, customer orders and franchise order. Transfer functions also support the movement of one or more items between two internal RMS locations, and multi-leg transfers in which the intermediate location is considered a finisher location. Finishers are locations where work is performed on merchandise, such as dying fabric and attaching labels.

Mass Return Transfers are used to reallocate merchandise to locations or to return merchandise to the supplier.

Returns to Vendor
-------------------------
Return to Vendor (RTV) transactions are used to send merchandise back to a vendor. The RTV transaction in RMS allows one or more items to be returned to a single vendor. For each transaction, the items, quantities, and costs are specified. Upon shipment out of a location, inventory is removed from the stock on hand.

RTVs are created manually in RMS or imported from an external system. RMS also provides the ability to maintain RTVs. Shipped RTVs create a debit memo or credit note request (based on supplier configuration) in the invoice matching staging table in RMS, for export to Oracle Retail Invoice Matching.

Inventory Adjustments
-------------------------------
Inventory adjustments are used to increase or decrease inventory to account for events that occur outside the normal course of business (for example, receipts, sales, stock counts). Inventory adjustments are created in RMS or imported from an external system (store or warehouse application). RMS supports two types of inventory adjustments; stock on hand or unavailable inventory. Inventory adjustments can also be created by locations for multiple items, by item for multiple locations, or through a product transformation for a specific location.


Note: The following Inventory Adjustment Reason Codes are required by RMS and cannot be deleted unless the noted functionality is not utilized:

Reason Code 1 - Used for wastage adjustments
Reason Code 2 - Used for adjustments against processed stock counts
Reason Code 13 - Used for inventory adjustment for unavailable receipts
Reason Code 190 - Used for inventory adjustments related to 'destroy on receipt' situations for Wholesale and Franchise
Reason Code 191- Used for Customer Returns without inventory

Additionally, reason codes must be synchronized between SIM and WMS, or any other system communicating inventory adjustments to RMS.

Purchase Order Receipts 
----------------------------------
Purchase order receipts (Shipments) record the increment to on-hand when goods are received from a supplier. Weighted average cost (WAC) is recalculated at time of receipt using the PO landed cost. Transaction audit records are created for financial audit, and the receiver is made available for invoice matching.

Stock Counts
------------------
Stock counts are the processes by which inventory is counted in the store and compared against the system inventory level for discrepancies. RMS supports two types of stock counts:

Unit stock counts : These adjust the on hand quantities for the item-locations affected and create an inventory adjustment transaction for the stock ledger.

Unit and value stock counts : These adjust the on hand quantities for the item-locations affected and adjust the stock ledger to the results of the stock count.

Replenishment
---------------------
Automated replenishment constantly monitors inventory conditions. Based on inventory conditions, purchase orders or transfers are created to fulfill consumer demand.

Automated replenishment parameters are set up at the supplier, supplier/department, and supplier/location or supplier/department/location level. These parameters include:

1) Review cycle and order control
2) Due order processing
3) Investment buy attributes
4) Scaling constraints
5) Rounding attributes
6) Supplier minimums
7) Truck splitting constraints

Items can be set up for automated replenishment through the Item Maintenance dialog, either individually or through item lists.

Automated replenishment also supports different methods to determining whether purchase orders are created and quantities ordered. These replenishment methods are applied at the item/location.

1) Constant is a stock-oriented method in which the item is replenished when the inventory level falls below a specified level.

2) Min/Max is a stock-oriented method in which the item is replenished up to the maximum when the inventory level falls below a specified minimum stock level.

3) Floating Point is a stock-oriented method in which the item is replenished when the inventory level falls below a dynamic system-calculated maximum stock level.

4) Time Supply is a stock-oriented method in which replenishment is based on the number of days of supply for the item a retailer wants in inventory. The Time Supply method requires a forecasting system.

5) Time Supply Seasonal is the same as Time Supply, but it takes seasonality and terminal stock into account. The Time Supply Seasonal method requires a forecasting system.

6) Time Supply Issues is used only by warehouses, this is the same as Time Supply, but it uses warehouse issues forecast rather than store sales forecast. The Time Supply Issues method requires a forecasting system.

7) Dynamic is a method that controls inventory using dynamic calculations of order point and order quantities based on a number of factors, including forecast sales over order lead time, review lead time, inventory selling days, lost sales factor, and safety stock. The Dynamic method requires a forecasting system.

8) Dynamic Seasonal is the same as Dynamic, but it takes seasonality and terminal stock into account. The Dynamic Seasonal method requires a forecasting system.

9) Dynamic Issues is used by warehouses only, this is the same as Dynamic, but it uses warehouse issues forecast rather than store sales forecast. The Dynamic Issues method requires a forecasting system.

10) Store Orders is a method that allows replenishment to look at the store order need quantity when determining the recommended order quantity.

Franchise Management
-------------------------------
The Franchise Management allows the retailer to manage their franchise business in the following scenarios:

Retailer owns and manages the inventory for a franchise location.

In this case, the franchise customer (location) needs to be set up as stockholding stores in RMS, with a store type as Franchise. A stockholding franchise store functions similar to a company store with locations of inventory transactions such as Replenishment, Allocation, Stock Counts and Inventory Adjustments being allowed for such stores in RMS and the pricing being carried out in RPM. The main differences in these stores are, the way in which the orders are captured and accounted financially.

Retailer does not own or manage inventory for a franchise location.

Here the retailer does not manage the inventory for a franchise location or wherein the wholesale operations constitute a small fraction of the retailers business and thus does not warrant a separate Order Management System.

In both these scenarios, non-stockholding stores must be setup in RMS to represent these franchise (or wholesale) customers.

Franchise Pricing :
Franchise pricing determines the price that is charged on a franchise partners for an item. Pricing for these stores is maintained in the future cost table. The pricing for franchise locations are determined by setting up cost templates in RMS and associating these templates with an item or a franchise location. Franchise pricing includes any landed costs and applicable deals through deal pass-through to the final pricing.

The user has an option to override the future cost franchise price and instead define a fixed price to be charged for an item for manually or through the batch upload orders.

Franchise Ordering :
Franchise store can source the merchandise from company locations (Warehouse or Store) or from a supplier. The franchise order can be initiated manually using the franchise order form or by an batch upload process using flat file received from an external application. The franchise order created using the flat file also creates a purchase order for supplier sourced and transfers for company location sourced orders.

In addition, franchise order gets initiated in response to any inventory transaction process where the receiving location is a franchise store and the sending location is a company location or supplier. Some of these inventory transactions are Replenishment Requests, Allocation, Store Orders, Items requests; AIP generated Purchase Orders or Transfers, and externally generated transfers.

Franchise Returns :
Franchise stores returns the items back to the company location (warehouse or store). Item return from a franchise store directly to the supplier is not allowed. The franchise returns can either be a physical return to the company location or can be a book return. Book Return is possible when the item is destroyed at the site, in such scenario the inventory is not physically returned but can be financially accounted.

The franchise return can be initiated manually using the franchise return form or by batch upload process using flat file received from an external application. Franchise returns results in creating a transfer to track the inventory movement.

In addition, franchise returns gets created in response to any inventory transaction where the sending location is a franchise store and receiving location is a company location. Some of these processes are AIP or externally generated transfers.

Stock Ledger
------------------
The stock ledger in RMS records the financial results of the merchandising processes such as buying, selling, price changes, and transfers. All of these transactions are recorded in the RMS stock ledger and rolled up to the subclass/location level for days, weeks, and months, depending on calendar settings. The aggregate levels in the stock ledger are used to measure inventory amounts and merchandise profitability. The stock ledger is mainly used for reporting purposes; however, there is some online visibility as well.

The stock ledger supports multiple currencies. All transaction-level information is stored in the local currency of the store or warehouse where the transaction occurred. As transaction-level information is rolled up to the aggregated levels in the stock ledger, records are kept in local currency and converted to primary currency. This allows corporate reporting to be performed in the primary currency of the company, while still providing visibility by location to the profitability in the local currency.

The stock ledger supports both the retail and cost methods of accounting. The cost method can use standard cost or average cost, depending on how the system is configured. The stock ledger supports both the retail (4-5-4) and the normal (Gregorian) calendar. If the retail calendar is used, data is maintained by the 4-5-4 month and the week. If the normal calendar is used, data is maintained only by the Gregorian month. Data can also be maintained daily using the retail (4-5-4) or normal (Gregorian) calendar.

RMS supports multiple sets of books. Clients that use multiple sets of books assign RMS locations to a particular set of books defined in an external financial system. Changes to the stock ledger affect the set of books with which a particular transaction is associated.

Investment Buy
----------------------
Investment buy facilitates the process of purchasing inventory in excess of the replenishment recommendation in order to take advantage of a supplier deal or to leverage inventory against a cost increase. The inventory is stored at the warehouse or in outside storage to be used for future issues to the stores. The recommended quantity to investment buy, that is, to order, is calculated based on the following:

1) Amount of the deal or cost increase
2) Upcoming deals for the product
3) Cost of money
4) Cost of storage

Forecasted demand for the product, using warehouse issue values calculated by Oracle Retail Demand Forecasting

Target return on investment (ROI)

The rationale is to purchase as much product as profitable at the lower cost and to retain this profit rather than passing the discount on to customers and stores. The determination of how much product is profitable to purchase is based on the cost savings of the product versus the costs to purchase, store and handle the additional inventory.

- Investment buy eligibility and order control are set at one of these four levels:
- Supplier
- Supplier-department
- Supplier-location (warehouse locations only)
- Supplier-department-location

Warehouses must be enabled for both replenishment and investment buy on RMS WH (warehouse) table.

The investment buy opportunity calculation takes place nightly during the batch run, after the replenishment need determination, but before the replenishment order build. The investment buy module IBCALC.PC attempts to purchase additional inventory beyond the replenishment recommendation in order to achieve future cost savings. Two distinct events provide the incentive to purchase investment buy quantities:

1) A current supplier deal ends within the look-ahead period.
2) A future cost increase becomes active within the look-ahead period.

The calculation determines the future cost for a given item-supplier-country-location for physical warehouse locations only.

If the order control for a particular line item is buyer worksheet, it might be modified in the buyer worksheet dialog, and can be added to either new or existing purchase orders.

RMS Integration with Other Applications
--------------------------------------------------------
RMS provides essential information to all of the Oracle Retail Merchandising Operations Management applications (ReSA, RTM, RPM, ReIM, Allocation), and interacts with all of them. RMS exists on the same database schema as all of the other applications, which provides flexibility in how information is shared between RMS and the other Oracle Retail Merchandising Operations applications.

Information is shared with other Oracle Retail Merchandising Operations Management applications through direct reads from Oracle Retail Merchandising Operations Management application tables, calls to Oracle Retail Merchandising Operations Management application packages, batch processes, and the Oracle Retail Integration Bus (RIB) if the client is using this option.

The following diagram illustrates the RMS location in the merchandising footprint.



RMS and RTM
---------------------
Oracle Retail Trade Management (RTM) and RMS share the same database instance. When RTM is enabled in an RMS instance, certain import-specific data maintenance is required for country, supplier, partners and items. These are directly updated into the RMS database and subsequently used in RTM.

RMS and ReSA
----------------------
Oracle Retail Sales Audit (ReSA) and RMS share the same database. ReSA shares some of its master data with RMS. Foundation data such as stores a company/location close dates, location traits, bank setup and tender types are maintained in RMS and used in ReSA.

Sales Upload Process
Current reference data is retrieved from RMS into ReSA by the batch program SAGETREF. The data is extracted into multiple data files. The data in the files is used by the batch program SAIMPTLOG as reference data for doing validation checks on the POS/OMS transaction data during the data upload to ReSA. Having the reference in data file formats increases the performance of the SAIMPTLOG process. SAGETREF generates the following reference files:

- Items
- Wastage
- Sub-transaction level items
- Primary variant relationships
- Variable weight PLU
- Store business day Code types
- Error codes
- Store POS
- Tender type
- Merchant code types
- Partner vendors
- Supplier vendors
- Employee IDs
- Banner IDs

Along with the reference files, the following files are generated:

- Promotions File - This file contains RPM promotions.
- Currency File - This file contains valid currency codes in RMS.
- Warehouse File - This file contains valid physical warehouses from RMS.
- Inventory Status File - This file contains valid inventory status values from RMS.

All clean and audited sales and returns data is extracted from ReSA into a POSU file by the batch program SAEXPRMS. All sale and return transactions that do not have RMS errors are extracted into the file. The sales audit system options parameter work unit controls the export of data into files in case of the presence of RMS errors in the POS/OMS transaction data. The shell scripts UPLOADSALES.KSH and SALESPROCESS.KSH will load the data from the POSU file into the RMS tables.

RMS and RPM
---------------------
RPM exists on the same database schema as RMS which allows information to be shared between applications through direct database reads, package calls, and batch processes. RPM uses APIs to facilitate the exchange of information with RMS.

RPM provides the following to RMS:

Regular Price Event Approval/Modification/Deletion-Regular price event creation, modification, or deletion triggers a call to an RMS API to generate (or remove if deleting) the ticket request information.

Price Event Execution- For regular, promotional, or clearance price events that end or are set to go into effect, the PriceEventExecutionBatch owns the process. When the pricing event has been processed by the batch program it updates item/location pricing in RMS by interfacing with the RMSSUB_PRICECHANGE API in RMS.

Initial Pricing-Initial pricing for items in RMS is dependent upon the primary zone group for the item defined in RPM and characteristics of that zone group. These characteristics include markup percent, markup percent type, and pricing guides. RPM provides this information to RMS through an API (MERCH_RETAIL_API_SQL).

Deal Creation- For Price Changes and Clearances, RPM creates new details under existing deals. Promotions can create new deals in addition to creating details under existing deals. When this occurs RPM uses an RMS API (PM_DEALS_API_SQL) to create the deal in RMS.

RMS provides the following to RPM:

Foundation Data is essential to RPM functionality. To successfully set up price changes RPM requires RMS merchandise hierarchy, organizational hierarchy, and suppliers. RPM is able to access this information through the RMS database.

Item-Price changes created in RPM ultimately relate to an item/location within RMS. RPM must know all eligible items currently in the merchandising system, the locations at which they are eligible (item/location relationships) in any status and the suppliers associated with the items. RPM can access this information through the RMS database.

Competitive Pricing Information-RPM has the ability to create price changes based off competitive activity in the marketplace. RPM is able to access this information through the RMS database.

Deals can be associated with price changes in RPM (including vendor funded promotions). In order to associate a price change to an existing deal RPM needs visibility to the deals currently available in the RMS system. RPM is able to access this information through the RMS database.

Event Notification -To ensure appropriate processing, RPM must be notified of certain events:

Store/Warehouse Creation-A zone structure must be added to RPM when new stores and warehouses are created in RMS. To do this RMS provides RPM with the store and/or virtual warehouse being added, its pricing location, and its currency (to ensure it is the same as the zone it is being added to). A store/virtual warehouse creation event in RMS triggers an API call to RPM to perform the necessary processing.

Item/Location Creation-When new item/location relationships are established, RPM must verify that no future retail records currently exist, create an initial future retail record (for sellable items), and determine if there are existing price changes that would affect the item resulting in a future retail record for the price change as well. An item/location creation event in RMS triggers data to be staged in RPM so that it is picked up for the batch processing.

Item Modification is used to notify RPM when an item is reclassified. The details of the reclassification are written to an item modification table in RPM for the next batch processing run. An item modification creation event in RMS triggers an API call to RPM to perform the necessary processing.

Department Creation is used to notify RPM when new departments are created in RMS. RPM creates aggregation-level information for the new department using predefined system defaults. A department creation event in RMS triggers an API call to RPM to perform the necessary processing.

RMS and Allocation
----------------------------
RMS provides the following to Allocation:

Foundation Data is essential to all areas of Allocation including valid locations to allocate to and from, location groupings, and valid merchandise hierarchies to allocate within.

Item-Allocations are generated at the item location level so it is necessary that the Allocation application understand what items and item/locations are eligible in the system.

Purchase Order-One of the sources from which a user can allocate. Allocation relies on RMS to provide Purchase Order information.

Transfer-One of the sources from which a user can allocate. Allocation relies on RMS to provide Transfer information.

Bill Of Lading (BOL)-One of the sources from which a user can allocate. Allocation relies on RMS to provide BOL information.

Advance Shipment Notices (ASN)-One of the sources from which a user can allocate. Allocation relies on RMS to provide ASN information.

Inventory-In order to determine the correct need at an item location level before performing an allocation the application needs visibility to the current on hand inventory at each location being allocated to. Allocation relies on RMS to provide inventory information at the item/location level.

Sales Information-Allocation can use historical sales, forecast sales, and plan sales in order to determine the need at an item/location level for an allocation. Allocation interfaces this information in from external planning system to an Allocation table.

Allocation provides the following to RMS/RTM/ReSA:

Allocations- When the allocations is moved to Approved or Reserved status, the Allocation is written to RMS tables to give visibility to the allocation results.

Purchase Orders created by What-If process in Allocation-If this option is enabled in Allocation the client can create a simulated allocation based on current need and then automatically create a purchase order from that Allocation in RMS to fulfill that need. Allocation uses an RMS API to build the purchase order in RMS.

RMS and Invoice Matching
------------------------------------
RMS provides the following to Invoice Matching:

Foundation Data is essential to all parts of invoice matching including valid locations for Invoices to be implemented at, valid suppliers to receive invoices from, and supplier addresses to send credits and debits based on invoice matching results.

Item is essential to the invoice matching process as item information ensures that invoices being received are valid for the business. For example an item received on an invoice is carried by the client, is supplied by the supplier who sent the invoice, and is carried in the locations for which the item was received.

Purchase Orders are used by Invoice Matching to facilitate the invoice matching process which is performed at the purchase order location level.

Shipments-Shipment information is used by Invoice Matching to determine if a PO has been received yet which affects the matching algorithm used by the AutoMatch batch program in Invoice Matching.

Deals and Rebate-Invoice Matching creates credit memos, debit memos, and credit requests based on deal and rebate information in RMS for processing by the financial (AP) system. This is performed by the ComplexDealUpload and FixedDealUpload batch processes that read from RMS staging tables.

Invoice Matching provides the following to RMS:

Invoice Matching results for shipments-Shipment records are updated with the invoice matching results from the invoice match process (this involves updating the match status and quantity matched of the shipments in question). The matching process is handled by the AutoMatch batch process in Invoice Match which attempts to match all invoices in ready-to-match, unresolved, or multi-unresolved status.

Receiver Cost Adjustments-An API is executed when invoice matching discrepancies are resolved through a receiver cost adjustment. The API updates the purchase order, shipment, and potentially the item cost in RMS, depending on the reason code action used.

Receiver Unit Adjustments-An API is executed when invoice matching discrepancies are resolved through a Receiver Unit Adjustment. The API updates the purchase order and shipment in RMS to complete the transaction.

Closing unmatched shipments-Invoice matching closes the invoice matching status for shipments in RMS after a set period of time (defined by the client in system options). This updates the invoice matching status of the shipment on the shipment table in RMS. This process is managed by the ReceiptWriteOff batch program.

RMS and ARI
---------------------
ARI is a monitoring system that interacts with any applications database (including RMS). It stores the RMS database structure as metadata information, monitors the event defined by a client and notifies the client when the event occurs.

RMS and Xcenter/Xstore
----------------------------------
RMS provides the following to Xcenter/Xstore:

Foundation Data - This data is essential to the Xcenter/Xstore suite functionality. This includes the following:

1) Full organizational hierarchy to support functionality such as rolling out new keyboard configurations by region, etc.
2) Stores including their addresses
3) Full merchandise hierarchy to support Xcenter/Xstore reporting functionalities
4) Differentiators and differentiator groups to support functionality such as looking up a sku by style/color.
5) Item - Item information is generated at both the corporate and location level specific files and are sent to the Xcenter/Xstore application. Item information being sent includes the Item header, Item/Location, VAT Item, and Related Item information.

Note: The Oracle Retail Merchandising System interfaces can integrate with other third party Point of Sale applications.


Implementation Rules for Custom APIs
--------------------------------------------------------
Because different retailers have different rules that they want to apply for their business in order to meet their own specific business processes, RMS supports the ability for retailers to configure custom rules for certain areas of RMS by providing an API that can be used to call a PL/SQL function. This process allows for configuration without modification to base code, which might impact the ability to apply patches or upgrade. Currently, this is supported for Item and Purchase Order approval, as well as for VAT calculations when RMS is configured to run in a simple VAT configuration. Some examples of how this could be used include:

Ensuring all transaction level items are not approved before reference item has been created for the item.

Preventing purchase orders from being approved if a factory has not yet been associated with the order.

Using alternative rates for calculating tax for certain items based on custom flex attributes (CFAS), when running RMS in a simple VAT configuration.

For items and purchase orders, a configurable API function is used. The package function is supplied by the retailer and contains the additional validations that should be performed for items or POs. The name of the function is entered into a configuration table, which allows it to be called by RMS base code. For VAT this works a bit differently, but conceptually supports the same concepts - allowing retailers to configure a process in RMS without modifying base code. The approaches for both are described in the sections below, along with the general guidelines that retailers and integrators should follow.

Item and Purchase Order Approval
------------------------------------------------
In order to configure RMS to use this functionality, records must be added to the CUSTOM_PKG_CONFIG table. This table holds the schema and package/function names defined by a retailer to be called for a particular entity. Each custom function that should be called from base RMS should have an entry in this table. The key fields in this table are:

CUSTOM_PKG_CONFIG table (columns & description)
--------------------------------------------------------------------------------

SCHEMA_NAME : The schema where the custom package function is compiled.
PACKAGE_NAME : This should be the name of the retailer's custom package, if applicable. This should be left blank if the custom code is a function without a package.
FUNCTION_NAME : The name of the retailer's custom function or package function within the package noted above. Only PL/SQL functions are allowed as custom code in this table, either standalone PL/SQL functions or as part of a package. Procedures are not allowed because RMS expects a return value to determine if the execution was successful or not.
FUNCTION_KEY : This value determines which part of RMS the function will be called from. Valid values are:
ITEM_APPROVE_UI : This will be executed for item approval whether items are created in RMS screens or any method of Item Induction (Xitem API, Bulk Upload, manual)
ORDER_APPROVE_RPL : This will be executed when by replenishment processes when approving orders
ORDER_APPROVE_UI : This will be executed when approving orders in the RMS screen
ORDER_APPROVE_POI : This will be executed when orders are approved as part of the Store Orders API or in any method of PO Induction (Xorder, Bulk Upload, manual)

Note: In custom order approval, if the retailer wishes to use the same package function for replenishment, UI, Store Orders or PO Induction, three records would need to be inserted into CUSTOM_PKG_CONFIG. The schema name, package name, and function name should be same for each of the three records each of which will bear a different function key value.

CALL_SEQ_NO : This indicates the sequence of the custom code to be executed. This must be set to 1. The calling function would need to be customized when using more than one package function for a particular function key. If retailers have more than one function that needs to be called it is recommended that these be called in the correct sequence from the package function indicated in this table.


Custom Function Definition
-------------------------------------
The custom function (CALL_CUSTOM_SQL.EXEC_FUNCTION) is called in the RMS code as described above. This package determines which custom code is to be executed by querying the CUSTOM_PKG_CONFIG table based on the function key and the call sequence number passed in. After the custom code schema, package, and function names are retrieved, it calls the custom code via Dynamic SQL and passes the input payload. The inputs required for the custom functions should be as follows:

Custom Function Inputs
---------------------------------
_________________________________________________________________________________________________________________________________
             Input                      Input/ Output                                Type                                                           Comments
_________________________________________________________________________________________________________________________________
1) O_ERROR_MESSAGE :                In/Out                    RTK_ERRORS.RTK_TEXT          Errors returned from the function must exist on the RTK_ERRORS table in RMS to ensure that messages are properly displayed in standard RMS error handling.
2) O_ORD_APPRERR_EXIST :        In/Out                                BOOLEAN                           This is only used for PO approval package functions. It works with the error message parameter and in the case of any custom validation failures, the parameter should be set to TRUE and the error message parameter should be populated accordingly.
3) IO_CUSTOM_OBJ_REC :             In/Out                         CUSTOM_OBJ_REC                This is PL/SQL TYPE object which has placeholders for base RMS to pass the input parameters to the custom code. The calling function will pass the following to this object:
                          - Function key
                          - Call sequence number
                          - Entity ID (e.g. item or order number)
___________________________________________________________________________________________________________________________________


Consider the following notes:
--------------------------------------
1) The custom function return type must be BOOLEAN. No other data type is allowed.
2) In case of fatal errors, the custom function should return FALSE along with an appropriate error message in the output variable.
3) Errors for item approval should be coded to write to the item approval errors (ITEM_APPROVAL_ERROR) table, similar to base approval rule violations. This will ensure that the approval rules are applied seamlessly for the end user. The custom package should return FALSE to the calling function only if exceptions occur. If there are no exceptions, but only item approval errors, the package should return TRUE.
4) When using the Order Subscription API (Xorder) or the Store Order Subscription API, the errors will be propagated to the calling function. Approval errors encountered during other methods of PO induction (e.g. spreadsheet upload or bulk upload) are logged in an error table, together with the other order creation validation issues.
5) For PO approval, the custom package should return TRUE to the calling function when only validation errors are encountered and the O_ORD_APPRERR_EXIST parameter should be set to TRUE.

An example package specification for items is as follows:
CREATE OR REPLACE PACKAGE MY_OWN_ITEM_APPROVAL AS
-------------------------------------------------------------------------------
-- This function checks whether items that are to be approved have comments
FUNCTION CHECK_COMMENTS (O_error_message     IN OUT   RTK_ERRORS.RTK_TEXT%TYPE,
                         IO_custom_obj_rec   IN OUT   CUSTOM_OBJ_REC)
RETURN BOOLEAN;
-------------------------------------------------------------------------------
END MY_OWN_ITEM_APPROVAL;
An example package specification for POs is as follows:

CREATE OR REPLACE PACKAGE MY_OWN_APPROVAL_RULES AS
-------------------------------------------------------------------------------
-- This function checks whether orders exist.
FUNCTION CHECK_PRESENCE (O_error_message   IN OUT RTK_ERRORS.RTK_TEXT%TYPE,
                         O_apprerr_exist   IN OUT BOOLEAN,
                         IO_custom_obj_rec IN OUT CUSTOM_OBJ_REC)
RETURN BOOLEAN;
-------------------------------------------------------------------------------
END MY_OWN_APPROVAL_RULES;


Custom Tax Configuration in RMS
-------------------------------------------------
The configurations set at both the system level and the VAT region level determines how RMS calculates tax for various transactions. The following diagram describes this process:



At a system level, the tax calculations in RMS are governed by the system option called Default Tax Type. The tax type options are:

1) SALES - which is used for US only implementations and results in no tax calculations within RMS.
2) GTAX - which is used for Brazil implementations and assumes the taxes are calculated by an external tax engine via Oracle Retail Fiscal Management (RFM).
3) SVAT - which is used for all other implementations of RMS in which one or more locations for the retailer are subject to value added tax (VAT).

For SVAT implementations, retailers can additionally configure the tax processing in RMS by VAT region as follows:

i) Simple - VAT Regions defined as having a tax calc type of 'Simple' will have VAT computation based on the existing logic in TAX_SQL that uses rates defined for items to compute VAT on the transaction.

ii) Exempt - VAT Regions defined having a tax calc type of Exempt will not support VAT computation for transactions occurring in this region. For example, this is what would be used for US locations in an implementation that also contains locations for which VAT is applicable.

iii) Custom Tax - VAT Regions having a tax calc type of Custom will use Custom Taxation Rules that need to be defined by the retailer. The configuration required to implement this functionality is described in this section.


Note: If only one entity or location is passed into the tax function as described in the diagram above, then the tax calculation function behavior will be based on the tax calculation type of that entity or location. If the transaction involves two entities or locations (e.g. transfers), the tax calculation support will be based on the below matrix.

Custom Calculation Matrix
-------------------------------------
________________________________________________________________________________________________________________________________
Location A* Location B*                  Tax Calculation Support
________________________________________________________________________________________________________________________________
Simple                        Simple                       If Entities A and B lie in the same VAT Region, base simple VAT rules used. If different regions, VAT calculated as zero.
Simple                        Exempt                      VAT calculated as zero
Simple                        Custom                      Custom function executed
Exempt                       Simple                       VAT calculated as zero
Exempt                       Exempt                      No VAT calculation performed
Exempt                       Custom                      Custom function executed
Custom                       Simple                       Custom function executed
Custom                       Exempt                      Custom function executed
Custom                       Custom                      Custom function executed
_________________________________________________________________________________________________________________________________

* Location could refer to a store or warehouse, or to a supplier, partner or other entity.

Note: For VAT regions flagged as custom, VAT codes and rates are expected to be set up, even though the VAT code may not solely determine the tax behavior in all cases.

Defining Custom Taxation Rules
--------------------------------------------
The CUSTOM_TAX_SQL package has been created for defining custom rules. This package contains the below functions:

i) CALC_CTAX_COST_TAX - which is used for cost-based VAT calculations
ii) CALC_CTAX_RETAIL_TAX - which is used for retail-based VAT calculations
iii) ADD_CTAX_RETAIL_TAX - which is used for mark-up calculations

The input and output parameters of these functions are same as those passed to the base tax function.
Inputs:

1) Item
2) From Location
3) To Location
4) Tax Type – Cost, Retail, or Both
5) Transaction ID (e.g. PO number)

Outputs:

1) Tax Code
2) Tax Rate
3) Tax Amount
4) Tax Exempt flag (Y or N)
5) Error Message

However, the function body for each of these functions will not contain any logic for identification of the applicable tax rates or computation of the tax amount. The logic to achieve this will need to be added by the retailer as part of implementation. The logic written within these functions is not limited to using just the parameters passed as part of the call and can fetch additional data points required to calculate taxes, as needed. Any failures in VAT calculation logic in any of these functions should be configured to return an output error message. This error message must be added to the RTK_ERRORS table or an existing error message from that table could also be used.