Till R11 Cost of goods sold has been recognized as soon as the Order line has shipped, as shown in below steps
After ship confirm, user run the interface trip stop (ITS).ITS in turns run the OM Interface and Inventory Interface.
Inventory Interface calls Inventory transaction manager which in turns call COGS WF.
But as per new practices COGS should be recognized along with the revenue.
In R12 used need to define deferred cogs account. These deferred cogs account can be defined at each inventory org level.
In R12, the Cost of Goods Sold is automatically deferred when the item is shipped. This deferral happens when the Shipping module interfaces a Sales Order Issue transaction to the Inventory module. After you have recognized revenue in the Receivables module, you can perform step 2 and recognize Cost of Goods Sold.
You will need to run three programs: Record Order Management Transactions, Collect Revenue Recognition Information, and Generate COGS Recognition Events. These programs will calculate the percent of COGS to recognize based on the percent of revenue that was recognized. The Generate COGS Recognition Events program will create a new transaction record in the Inventory module for accounting. Once you have these three programs you are ready to perform the last step and create accounting.
In R12, all journal entries are created by using Subledger Accounting programs. The transactions in the Inventory module are accounted for in the Cost Management module, you can create journal entries by using the “Create Accounting – Cost Management” program
During shipping process Inventory tables will hold the deferred COGS accounts. Only after invoicing has done in AR, AR will notify the Costing and Costing in turns call the COGS account generator to get the cogs account .In that way COGS and revenue will be recognized in the same period.