106
White Paper Sub-Ledger Accounting Setups for Intercompany Transaction Flows Author: Wayne Greene Creation Date: Feb 5, 2011 Last Update: July 13, 2012 Contributors And Reviewers: Shixin (Jason) Zhang Rixin Zhu File Ref: document.docx Company Confidential - For internal use only Application Accounting Definition 1110661

White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Embed Size (px)

DESCRIPTION

White Paper Subledger Accounting

Citation preview

Page 1: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

White Paper

Sub-Ledger Accounting Setups for

Intercompany Transaction Flows

Author: Wayne Greene

Creation Date: Feb 5, 2011

Last Update: July 13, 2012

Contributors

And

Reviewers: Shixin (Jason) Zhang

Rixin Zhu

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 119561

Page 2: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 129562

Page 3: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Contents Define

Overview.....................................................................................................4

Internal Drop Ship – without modified SLA..................................................5

Internal Drop Ship – with modified SLA.......................................................6

Application Accounting Definition................................................................7

PL/SQL Functions.........................................................................................8

Sub-Ledger Accounting Setups....................................................................9

Custom Sources........................................................................................10

Assign Custom Sources to Event Class......................................................12

XLA Lookups..............................................................................................13

Accounting Definition Rules......................................................................14

Logical Intercompany Event Class.............................................................15

Logical Intercompany Event Class – Journal Line Definitions.....................16

Sales Order Issue Event Class...................................................................18

Sales Order Issue – Deferred COGS Journal Line Types.............................19

Sales Order Issue – COGS Journal Line Types............................................22

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 139563

Page 4: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Sales Order Issue – Inventory Valuation Journal Line Types......................24

PL/SQL Function - XYZ_SALE_INTERCO_FLAG............................................26

PL/SQL Function - XYZ_COGS_RECOG_INTERCO_FLAG..............................29

PL/SQL Function - XYZ_INTERNAL_DROP_RECEIPT.....................................32

PL/SQL Function - XYZ_INTRNL_DROP_RCPT_MRKP...................................36

PL/SQL Function - XYZ_INTERCO_SEGMENT...............................................39

PL/SQL Function - XYZ_INTRNL_DROP_COGS_AMT.....................................42

PL/SQL Function - XYZ_INTRNL_DROP_INV_AMT........................................46

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 149564

Page 5: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Overview

This white paper describes how to modify sub-ledger accounting (SLA) for intercompany transactions when tracking of a separate intercompany markup dollar amount is required for internal drop ships across international boundaries. This is often a requirement for tax purposes. The current costing system does not provide for a separation of this markup. Having the markup as a separate accounting entry, instead of added into inventory, allows for accurate end of month intercompany eliminations.

An internal drop ship is where an internal legal entity in one country takes a sales order from a customer, but then sources the shipment from an internal warehouse in a different country. This internal warehouse belongs to a different internal legal entity. The warehouse then ships directly to the customer across international boundaries. The country where the shipment comes from must collect taxes on that transaction based on the profit margin. The profit margin must be an unbiased arms-length amount. The markup percent is stored in advanced pricing. The markup amount will appear in the receiving legal entity as part of the Logical Intercompany Shipment Receipt transaction type.

This paper does not address the advanced pricing setup or intercompany transactions flows. These setups are also required. It only addresses the SLA setup. Each setup below has a description column to further explain the usage and outcome of each setting. These settings have been successfully used in a standard costing production environment. They are currently being tested in an average costing environment with production go live scheduled for next year. The SLA settings do not address internal intercompany drop ship RMA. That is an ongoing development.

Sub-ledger Accounting allows customers to modify the accounting entries just before they are transferred to the general ledger.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 159565

Page 6: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 169566

Page 7: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Internal Drop Ship – without modified SLA

The accounting depicted below is the seeded accounting output for an internal drop ship without any SLA changes.

Transaction Type Description Account DR CR

Logical Intercompany Sales Issue Shipper – at shipper standard cost Inventory - Finished Goods 973.58

Logical Intercompany Sales Issue Shipper – at shipper standard cost Cost of sales - Intercompany 973.58

Logical Intercompany Shipment Receipt Receiver – at shipper standard cost plus

973.58 X .27% markup = 262.86 X currency

conversion rate of 1.0079 = 1246.21 Inventory - Finished Goods

1246.21

Logical Intercompany Shipment Receipt Receiver Inventory Accrual - Intercompany 1246.21

Logical Sales Order Issue Receiver – when sell to 3rd party customer Inventory - Finished Goods 1246.21

Logical Sales Order Issue Receiver – when sell to 3rd party customer Inventory - Deferred COGS 1246.21

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 179567

Page 8: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

COGS Recognition COGS recognized when revenue is earned Inventory - Deferred COGS

1246.21

COGS Recognition COGS recognized when revenue is earned Cost of Goods Sold – third party

1246.21

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 189568

Page 9: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Internal Drop Ship – with modified SLA

The accounting depicted below is the accounting output for an internal drop ship after these SLA changes have been made.

Transaction Type Description Account DR CR

Logical Intercompany Sales Issue Shipper – at shipper standard cost Inventory - Finished Goods 973.58

Logical Intercompany Sales Issue Shipper – at shipper standard cost Cost of sales - Intercompany 973.58

Logical Intercompany Shipment Receipt Receiver – 973.58 X currency

onversion rate of 1.0079 = 981.27 Inventory - Finished Goods

981.27

Logical Intercompany Shipment Receipt Receiver – at shipper standard cost plus

973.58 X .27% markup = 262.86 X currency

conversion rate of 1.0079 = 264.94 Intercompany Markup - capitalized

264.94

Logical Intercompany Shipment Receipt Inventory Accrual - Interco 1246.21

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 199569

Page 10: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Logical Sales Order Issue Receiver – when sell to 3rd party customer Inventory - Finished Goods 981.27

Logical Sales Order Issue Receiver – when sell to 3rd party customer Inventory - Deferred COGS 981.27

COGS Recognition COGS recognized when revenue is earned Inventory - Deferred COGS

981.27

COGS Recognition COGS recognized when revenue is earned Cost of Goods Sold – third party

981.27

As can be seen from the example above, the shipping cost is multiplied by a markup of 27%. 973.58 X .27 = 262.86

Then a currency conversion rate of 1.0079 from shipping to receiving company is used to calculate the receiving markup entry. 262.86 X 1.0079 = 264.94

The inventory entry uses the shipping cost multiplied by the currency conversion rate. 973.58 X 1.0079 = 981.27

The receiving standard cost is not used because inventory does not physically enter the receiving warehouse.

The receipt is virtual and used only to calculate third party COGS to be used to calculate profit from revenue on the customer facing transaction.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11095610

Page 11: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11195611

Page 12: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Application Accounting Definition

Use this next form to create a new Application Accounting Definition.

Cost Manager – SLA -> SLA -> Accounting Setup > Accounting Methods Builder -> Methods and Definitions -> Application Accounting Definitions

First find the old “COST MANAGEMENT” definition. Then use the copy button and modify as listed below.

Definition

Code

Definition

NameDescription

Chart of Accounts Transaction

Chart of Accounts Accounting

XYZ Cost Manager

XYZ Cost Manager

XYZ custom Cost Management

XYZ Corp Accounting Flexfield

XYZ Corp Accounting Flexfield

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11295612

Page 13: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

This step may have already been done by another track up until the last step:

Use this next form to tie the newly created Application Accounting Definition to Cost Management.

Cost Manager – SLA -> SLA -> Accounting Setup > Accounting Methods Builder -> Methods and Definitions -> Subledger Accounting Methods

First find the old Oracle “STANDARD_ACCRUAL” definition.

Then use the copy button and modify as listed below.

Method Code = XYZ_STANDARD_ACCRUAL

Method Name = XYZ STANDARD ACCRUAL

Description = XYZ STANDARD ACCRUAL

Chart of Accounts Transaction = XYZ_CORP_ACCOUNTING_FLEXFIELD

Chart of Accounts Accounting = XYZ_CORP_ACCOUNTING_FLEXFIELD

Now modify a single row:

Application = Cost Management

Name = XYZ Cost Management

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11395613

Page 14: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Functions

PL/SQl functions defined for internal drop ship transactions.

Compile the following PL/SQL functions:

XYZ_SALE_INTERCO_FLAG_V1.txt

XYZ_COGS_RECOG_INTERCO_FLAG_V1.txt

XYZ_INTERNAL_DROP_RECEIPT_V1.txt

XYZ_INTRNL_DROP_RCPT_MRKP_V1.txt

XYZ_INTERCO_SEGMENT_V1.txt

XYZ_INTRNL_DROP_COGS_AMT

XYZ_INTRNL_DROP_INV_AMT

Also, be sure to run the grant and synonym scripts.

Also, be sure to run the create index script for queries.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11495614

Page 15: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

The actual code for these functions is listed at the end of the paper.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11595615

Page 16: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Sub-Ledger Accounting Setups

The SLA seeded definitions may need to be loaded using the concurrent program “Import Application Accounting Definition”.

Context=default

Source File=/pbtlyi/applmgr/1200/bom/12.0.0/patch/115/import/US/cstxlaaad.ldt

Merge Analysis=No

Import Option = Merge

Validate=Yes

To verify the load:

1. Event Model Form2. Entity = “Material Account Events”3. Event Class Code = “LOG_INTERCOMPANY”4. Event Type Codes should be listed

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11695616

Page 17: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Custom Sources

Now create custom sources using the following form:

Cost Manager – SLA -> SLA -> Accounting Setup > Accounting Methods Builder -> Sources -> Custom Sources

Description Custom

Source

Code

Custom

Source

Name

PL/SQL

Function

Name

Data

Type

Segment Accounting

Flexfield

Parameter Parameter

USED IN SALES ISSUE EVENT

Returns “Y” if transaction is internal drop ship XYZ_SALE_INTERCO_FLAG

XYZ_SALE_INTERCO_FLAG

XYZ_SALE_INTERCO_FLAG

Alphanumeric

No Inventory Item in Costing

TRANSACTION_ID in Costing

For internal drop ship returns the intercompany segment

XYZ INTERCO SEGMENT

XYZ INTERCO SEGMENT

XYZ_INTERCO_SEGMENT

Alphanumeric

Intercompany Segment

Yes Inventory Item in Costing

TRANSACTION_ID in Costing

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11795617

Page 18: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Description Custom

Source

Code

Custom

Source

Name

PL/SQL

Function

Name

Data

Type

Segment Accounting

Flexfield

Parameter Parameter

Only called by COGS recognition. Returns “Y” if transaction is a COGS recognition on an internal drop ship

XYZ_COGS_RECOG_INTERCO_FLAG

XYZ_COGS_RECOG_INTERCO_FLAG

XYZ_COGS_RECOG_INTERCO_FLAG

Alphanumeric

No Inventory Item in Costing

TRANSACTION_ID in Costing

Internal drop COGS amt downstream after markup removed

XYZ INTRNL DROP COGS AMT

XYZ INTRNL DROP COGS AMT

XYZ_INTRNL_DROP_ COGS_AMT

Numeric

No Inventory Item in Costing

TRANSACTION_ID in Costing

Internal drop INV amt downstream after markup removed

XYZ INTRNL DROP INV AMT

XYZ INTRNL DROP INV AMT

XYZ_INTRNL_DROP_ INV_AMT

Numeric

No Inventory Item in Costing

TRANSACTION_ID in Costing

USED IN INTERCOMPANY EVENT

Internal drop inventory receipt amount XYZ_INTERNAL_DROP_RECEIPT

XYZ_INTERNAL_DROP_RECEIPT

XYZ_INTERNAL_DROP_RECEIPT

Numeric

No Inventory Item in Costing

TRANSACTION_ID in Costing

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11895618

Page 19: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Description Custom

Source

Code

Custom

Source

Name

PL/SQL

Function

Name

Data

Type

Segment Accounting

Flexfield

Parameter Parameter

Internal drop receipt markup XYZ_INTRNL_DROP_RCPT_MRKP

XYZ_INTRNL_DROP_RCPT_MRKP

XYZ_INTRNL_DROP_RCPT_MRKP

Numeric

No Inventory Item in Costing

TRANSACTION_ID in Costing

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 11995619

Page 20: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Assign Custom Sources to Event Class

Use this next form to assign the custom sources to the “Logical Intercompany” event class.

Cost Manager – SLA -> SLA -> Accounting Setup > Accounting Methods Builder -> Sources -> Accounting Attribute Assignments

Query the event class “Logical Intercompany”.

Create a new row for each entry in the table below.

This will allow the source to be chosen while inside the line type form.

Accounting

Attribute

Source

Accounted

Amount

XYZ_INTERNAL_DROP_RECEIPT

Entered

Amount

XYZ_INTRNL_DROP_RCPT_MRKP

Accounted

Amount

XYZ_INTRNL_DROP_RCPT_MRKP

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12095620

Page 21: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Accounting

Attribute

Source

Use this next form to assign the custom sources to the “Sales Order Issue” event class.

Cost Manager – SLA -> SLA -> Accounting Setup > Accounting Methods Builder -> Sources -> Accounting Attribute Assignments

Query the event class “Sales Order Issue”.

Create a new row for each entry in the table below.

This will allow the source to be chosen while inside the line type form.

Accounting

Attribute

Source

Accounted

Amount

XYZ INTRNL DROP COGS AMT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12195621

Page 22: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Accounting

Attribute

Source

Accounted

Amount

XYZ INTRNL DROP INV AMT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12295622

Page 23: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

XLA Lookups

Use this next form to create a new XLA Lookup.

Application Developer -> Application -> Lookups -> XLA Lookups

Query type of “XLA_ACCOUNTING_CLASS”

This lookup will appear on the SLA accounting form for each IC markup accounting line..

Code Meaning Description

IC_Markup

Inter-company Markup

Inter-company Markup

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12395623

Page 24: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Accounting Definition Rules

Use this next form to create an accounting derivation rule for markup account.

Cost Manager – SLA -> SLA -> Accounting Setup > Accounting Methods Builder -> Journal Entry Setups -> Account Derivation Rules

Choose to create new rules as listed below:

Description Rule

Code

Rule

Name

Chart of

Accounts

Transaction

Chart of

Accounts

Accounting

Output

Type

Segment

Name

Priority

Value

Type

Value Condition

Inter-company Markup Account. XYZ INTERCO MARKUP

XYZ INTERCO MARKUP

XYZ_CORP_ACCOUNTING_FLEXFIELD

XYZ_CORP_ACCOUNTING_FLEXFIELD

Segment

Account 10 Constant

122500

XYZ INTERCO SEGMENT used for intercompany eliminations.

XYZ INTERCO SEGMENT

XYZ INTERCO SEGMENT

XYZ_CORP_ACCOUNTING_FLEXFIELD

XYZ_CORP_ACCOUNTING_FLEXFIELD

Segment

Intercompany

10 Source XYZ INTERCO SEGMENT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12495624

Page 25: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Logical Intercompany Event Class

Go back to the Application Accounting Definition form.

Cost Manager – SLA -> SLA -> Accounting Setup > Accounting Methods Builder -> Methods and Definitions -> Application Accounting Definitions

Query the event class of “Logical Intercompany”.

Then, click on the “Journal Line Definition” button.

Click the “Copy Definition” button.

Definition Code = XYZ_LOGIC_INTERCO

Definition Name = XYZ Logical Intercompany

Description = XYZ Logical Intercompany

Chart of Accounts Transaction = XYZ_CORP_ACCOUNTING_FLEXFIELD

Chart of Accounts Accounting = XYZ_CORP_ACCOUNTING_FLEXFIELD

After the new Journal Line Definition has been created, go back to the Application Accounting Definition form.

Query the event class of “Logical Intercompany”.

Delete the old journal line definition that is attached at the bottom of the form and add the new one that was just created.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12595625

Page 26: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Logical Intercompany Event Class – Journal Line Definitions

Once you have defined the new Journal Line Definition, then execute the following steps:

Select the journal line type of “Inventory Valuation”.

Disable this type.

Click the line type button.

Click the “Copy” button.

Create new line types as described above by using the data below.

Repeat once for each row in the table below:

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12695626

Page 27: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

Sales Issue at std cost.

( WHEN YOU COPY THE LINE TYPE, MAKE SURE IT DOES NOT CHANGE THE EVENT CLASS. )

Logical Intercompany

XYZ INTRNL DROP ISSUE

XYZ INTRNL DROP ISSUE

XYZ_CORP_ACCOUNTING_FLEXFIELD

Inventory Valuation

Inventory Valuation

Accounting Line Type =1 AND

Accounting Event Type Code = 'LOG_IC_SALES_ISSUE'

Accounted Amount

=

Accounted Amount

Inv receipt markup –

executes with the XYZ INTRNL DROP RCPT INV

Logical Intercompany

XYZ_INTRNL_DROP_MRKP

XYZ_INTRNL_DROP_MRKP

XYZ_CORP_ACCOUNTING_FLEXFIELD

Inventory Valuation

Inventory Valuation

Accounting Line Type =1 AND

Accounting Event Type Name =

LOG_IC_SHIPMENT_RCPT

Accounted Amount

=

XYZ_INTRNL_DROP_RCPT_MRKP

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12795627

Page 28: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

Be sure to enter ADR of XYZ INTERCO SEGMENT for the above type on the intercompany segment

And

XYZ INTERCO MARKUP on the account segment

Inv receipt without markup

This includes the PPV amount

Executes with XYZ_INTRNL_DROP_MRKP

Logical Intercompany

XYZ INTRNL DROP RCPT INV

XYZ INTRNL DROP RCPT INV

XYZ_CORP_ACCOUNTING_FLEXFIELD

Inventory Valuation

Inventory Valuation

Accounting Line Type =1 AND

Accounting Event Type Name = LOG_IC_SHIPMENT_RCPT

Accounted Amount

=

XYZ INTERNAL DROP RECEIPT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12895628

Page 29: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

On new line types, always turn on debit and switch debit/credit. This means positive will be debit and negative will be credit.

In the Logical Intercompany event class, on the journal line types of XYZ_INTERCO_MARKUP and Intercompany Accrual enter the following:

1. Segment = Intercompany, Rule Name = XYZ INTERCO SEGMENT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 12995629

Page 30: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Sales Order Issue Event Class

Go back to the Application Accounting Definitions form.

Query the event class of “Sales Order Issue”.

Then, click on the “Journal Line Definition” button.

Click the “Copy Definition” button.

Definition Code = XYZ SALES ORDER ISSUE

Definition Name = XYZ Sales Order Issue

Description = XYZ Sales Order Issue

Chart of Accounts Transaction = XYZ_CORP_ACCOUNTING_FLEXFIELD

Chart of Accounts Accounting = XYZ_CORP_ACCOUNTING_FLEXFIELD

After the new Journal Line Definition has been created, go back to the Application Accounting Definition form.

Query the event class of “Sales Order Issue”.

Delete the old journal line definition that is attached at the bottom of the form and add the new one that was just created.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13095630

Page 31: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13195631

Page 32: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Sales Order Issue – Deferred COGS Journal Line Types

Since third party sales and logical sales issue share the same journal line types, if you modify one, you must redefine them all.

Select the journal line type of “Deferred COGS”.

Disable this type.

Click the line type button.

Click the “Copy” button.

Create new line types as described above by using the data below.

Repeat once for each row in the table below:

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13295632

Page 33: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

THIRD PARTY AND EXTERNAL DROP COGS RECOG FOR DEFERRED

Sales Order Issue

XYZ COGS RECOG 3RD DEFERRED

XYZ COGS RECOG 3RD DEFERRED

XYZ_CORP_ACCOUNTING_FLEXFIELD

Deferred Cost of Goods Sold

Deferred Cost of Goods Sold

Debit Accounting Line Type =36

AND

Accounting Event Type Name = 'COGS Recognition'

AND

XYZ COGS RECOG INTERCO FLAG = 'N'

Accounted Amount

=

Accounted Amount

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13395633

Page 34: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

CUSTOMER FACING INTERNAL DROP COGS RECOG FOR DEFERRED COGS

CREDIT – THIS IS BECAUSE THE CUSTOM SOURCE ALWAYS RETURNS A POSITIVE AMOUNT AND IS ALSO USED FOR THE COGS ENTRY, BUT THIS ENTRY NEEDS TO BE CREDITED

Sales Order Issue

XYZ COGS RECOG DEFERRED

XYZ COGS RECOG DEFERRED

XYZ_CORP_ACCOUNTING_FLEXFIELD

Deferred Cost of Goods Sold

Deferred Cost of Goods Sold

Accounting Line Type =36

AND

Accounting Event Type Name = 'COGS Recognition'

AND

XYZ COGS RECOG INTERCO FLAG = 'Y'

XYZ INTRNL DROP COGS AMT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13495634

Page 35: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

XYZ COGS RMA DEFERRED

Sales Order Issue

XYZ COGS RMA DEFERRED

XYZ COGS RMA DEFERRED

XYZ_CORP_ACCOUNTING_FLEXFIELD

Deferred Cost of Goods Sold

Deferred Cost of Goods Sold

Debit Accounting Line Type =36

AND

Accounting Event Type Name = 'RMA Receipt'

AND

XYZ COGS RECOG INTERCO FLAG = 'N'

Accounted Amount

=

Accounted

Amount

THIRD PARTY SHIP AND EXTERNAL DROP SHIP DCOGS

Sales Order Issue

XYZ DEFERRED COGS

XYZ DEFERRED COGS

XYZ_CORP_ACCOUNTING_FLEXFIELD

Deferred Cost of Goods Sold

Deferred Cost of Goods Sold

Debit Accounting Line Type =36 AND Accounting Event Type Name = 'Sales Order Issue' AND XYZ_SALE_INTERCO_FLAG = 'N'

Accounted Amount

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13595635

Page 36: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

customer facing logical sales issue deferred COGS

DEBIT

Sales Order Issue

XYZ LOGICAL DEFERRED COGS

XYZ LOGICAL DEFERRED COGS

XYZ_CORP_ACCOUNTING_FLEXFIELD

Deferred Cost of Goods Sold

Deferred Cost of Goods Sold

Accounting Line Type =36

AND

Accounting Event Type Name = 'Logical Sales Order Issue'

AND

XYZ SALE INTERCO FLAG = 'Y'

Accounted Amount

=

XYZ_INTRNL_DROP_INV_AMT

On new line types, always turn on debit and switch debit/credit. This means positive will be debit and negative will be credit.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13695636

Page 37: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Sales Order Issue – COGS Journal Line Types

Select the journal line type of “Cost of Goods Sold”.

Disable this type.

Click the line type button.

Click the “Copy” button.

Create new line types as described above by using the data below.

Repeat once for each row in the table below:

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13795637

Page 38: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

CUSTOMER FACING INTERNAL DROP COGS RECOG FOR DEFERRED COGS

Sales Order Issue

XYZ COGS RECOG INTERCO

XYZ COGS RECOG INTERCO

XYZ_CORP_ACCOUNTING_FLEXFIELD

Cost of Goods Sold

Cost of Goods Sold

Debit Accounting Line Type =35

AND

Accounting Event Type Name = 'COGS Recognition'

AND

XYZ COGS RECOG INTERCO FLAG = 'Y'

XYZ INTRNL DROP COGS AMT

THIRD PARTY AND EXTERNAL DROP COG RECOG COGS AMT

Sales Order Issue

XYZ COGS RECOG SO

XYZ COGS RECOG SO

XYZ_CORP_ACCOUNTING_FLEXFIELD

Cost of Goods Sold

Cost of Goods Sold

Debit Accounting Line Type =35

AND

Accounting Event Type Name = 'COGS Recognition'

AND

XYZ COGS RECOG INTERCO FLAG = 'N'

Accounted Amount

=

Accounted

Amount

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13895638

Page 39: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

XYZ COGS RMA Sales Order Issue

XYZ COGS RMA

XYZ COGS RMA

XYZ_CORP_ACCOUNTING_FLEXFIELD

Cost of Goods Sold

Cost of Goods Sold

Debit Accounting Line Type =35

AND

Accounting Event Type Name = 'RMA Receipt'

AND

XYZ COGS RECOG INTERCO FLAG = 'N'

Accounted Amount

=

Accounted

Amount

On new line types, always turn on debit and switch debit/credit. This means positive will be debit and negative will be credit.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 13995639

Page 40: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

Sales Order Issue – Inventory Valuation Journal Line Types

Once you have defined the new Journal Line Definition, then execute the following steps:

Select the journal line type of “Inventory Valuation”.

Disable this type.

Click the line type button.

Click the “Copy” button.

Create new line types as described above by using the data below.

Repeat once for each row in the table below:

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14095640

Page 41: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

internal drop ship

customer facing logical sales issue inv valuation

Sales Order Issue

XYZ INT DROP INV VALUATION

XYZ INT DROP INV VALUATION

XYZ_CORP_ACCOUNTING_FLEXFIELD

Inventory Valuation

Inventory Valuation

CREDIT – BECAUSE THE CUSTOM SOURCE RETURNS A POSITIVE AND IS ALSO USED FOR THE DEFERRED COGS SIDE OF THE LOGICAL SALES ISSUE BUT HERE WE NEED A CREDIT SINCE SHIPPING OUT INVENTORY

Accounting Line Type =1 AND

Accounting Event Type Name = 'Logical Sales Order Issue'

AND

XYZ SALE INTERCO FLAG = 'Y'

Accounted Amount

=

XYZ_INTRNL_DROP_INV_AMT

RMA Sales Order Issue

XYZ RMA INV VALUATION

XYZ RMA INV VALUATION

XYZ_CORP_ACCOUNTING_FLEXFIELD

Inventory Valuation

Inventory Valuation

Debit Accounting Line Type =1 AND

Accounting Event Type Name = 'RMA Receipt' AND

XYZ SALE INTERCO FLAG = 'N'

Accounted Amount

=

Accounted Amount

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14195641

Page 42: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

DescriptionEvent Class

Line

Type

Code

NameTransaction

Chart of

Accounts

Accounting

Class

Rounding

Class

Debit

/

Credit

Condition Accounting

Attribute

Assignments:

Source for Accounted Amount

3rd party and external drop so inv valuation

Sales Order Issue

XYZ SO INV VALUATION

XYZ SO INV VALUATION

XYZ_CORP_ACCOUNTING_FLEXFIELD

Inventory Valuation

Inventory Valuation

Debit Accounting Line Type =1 AND

Accounting Event Type Name = 'Sales Order Issue'

AND

XYZ SALE INTERCO FLAG = 'N'

Accounted Amount

=

Accounted Amount

On new line types, always turn on debit and switch debit/credit. This means positive will be debit and negative will be credit.

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14295642

Page 43: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14395643

Page 44: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Function - XYZ_SALE_INTERCO_FLAG

CREATE OR REPLACE

FUNCTION XYZ_SALE_INTERCO_FLAG

(

p_Inventory_Item IN NUMBER

, p_transaction_id IN NUMBER

)

RETURN VARCHAR2

IS

-- **** RETURN Y ON SALES ISSUE TRANSACTIONS IF IT IS INTERCOMPANY

xyz_sale_interco_flag VARCHAR2(1);

BEGIN

xyz_sale_interco_flag:='N';

SELECT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14495644

Page 45: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

/*+ ORDERED */

'Y'

INTO

xyz_sale_interco_flag

FROM

mtl_material_transactions mmt

, mtl_material_transactions mmt2

, mtl_transaction_types ttype2

WHERE

/*+ ORDERED_PREDICATES */

mmt.transaction_id = p_transaction_id -- **** FROM THE PARENT TRANSACTION OF SALES ISSUE

AND

mmt2.parent_transaction_id = mmt.parent_transaction_id

AND

ttype2.transaction_type_id = mmt2.transaction_type_id

AND

-- **** THIS INSURES WE ARE DEALING WITH ONE OF THE LOGICAL INTERCOMPANY TRANSACTIONS

ttype2.transaction_type_name = 'Logical Intercompany Shipment Receipt'

;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14595645

Page 46: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- ************************************

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' SALES ISSUE INTERCO FLAG FUNCTION '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' SALES ISSUE INTERCO FLAG: ' || xyz_sale_interco_flag

);

-- ************************************

RETURN xyz_sale_interco_flag;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14695646

Page 47: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- ************************************

EXCEPTION

WHEN NO_DATA_FOUND THEN

xyz_sale_interco_flag:='N';

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' SALES ISSUE INTERCO FLAG FUNCTION - NO DATA'

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' SALES ISSUE INTERCO FLAG: ' || xyz_sale_interco_flag

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14795647

Page 48: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

);

RETURN xyz_sale_interco_flag;

WHEN OTHERS THEN

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR: ' || SUBSTR(SQLERRM,1,80)

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' SALES ISSUE INTERCO FLAG FUNCTION '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR ITEM ID: ' || p_inventory_item

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14895648

Page 49: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

);

xyz_sale_interco_flag:='N';

RETURN xyz_sale_interco_flag;

END;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 14995649

Page 50: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15095650

Page 51: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Function - XYZ_COGS_RECOG_INTERCO_FLAG

CREATE OR REPLACE

FUNCTION XYZ_COGS_RECOG_INTERCO_FLAG

(

p_Inventory_Item IN NUMBER

, p_transaction_id IN NUMBER

)

RETURN VARCHAR2

IS

-- **** RETURNS Y IF COGS RECOG IS ON INTERCOMPANY

xyz_cogs_recog_interco_flag VARCHAR2(1);

BEGIN

xyz_cogs_recog_interco_flag:='N';

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15195651

Page 52: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

SELECT

/*+ ORDERED */

'Y'

INTO

xyz_cogs_recog_interco_flag

FROM

mtl_material_transactions mmt

WHERE

/*+ ORDERED_PREDICATES */

mmt.transaction_id = p_transaction_id -- **** COGS RECOG TRANSACTION

AND

-- **** THIS WILL PULL IN THE SOURCE TRANS OF COGS RECOG

EXISTS

(

SELECT

/*+ ORDERED */

mmt2.transaction_id

FROM

mtl_material_transactions mmt2

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15295652

Page 53: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

, inv.mtl_transaction_types ttype

WHERE

/*+ ORDERED_PREDICATES */

mmt2.transaction_source_id = mmt.transaction_source_id

AND

-- **** THERE COULD BE MULTIPLE ITEMS WITH DIFFERENT SOURCES

mmt2.inventory_item_id = mmt.inventory_item_id

AND

ttype.transaction_type_id = mmt2.transaction_type_id

AND

-- **** THIS INSURES WE ARE DEALING WITH AN INTERNAL DROP SHIP

ttype.transaction_type_name = 'Logical Intercompany Shipment Receipt'

)

;

-- ************************************

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' COGS RECOG INTERCO FLAG FUNCTION '

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15395653

Page 54: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' COGS RECOG INTERCO FLAG: ' || xyz_cogs_recog_interco_flag

);

-- ************************************

RETURN xyz_cogs_recog_interco_flag;

-- ************************************

EXCEPTION

WHEN NO_DATA_FOUND THEN

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15495654

Page 55: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

xyz_cogs_recog_interco_flag:='N';

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' COGS RECOG INTERCO FLAG FUNCTION - NO DATA'

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' COGS RECOG INTERCO FLAG: ' || xyz_cogs_recog_interco_flag

);

RETURN xyz_cogs_recog_interco_flag;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15595655

Page 56: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

WHEN OTHERS THEN

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR: ' || SUBSTR(SQLERRM,1,80)

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' COGS RECOG INTERCO FLAG FUNCTION '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR ITEM ID: ' || p_inventory_item

);

xyz_cogs_recog_interco_flag:='N';

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15695656

Page 57: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

RETURN xyz_cogs_recog_interco_flag;

END;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15795657

Page 58: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Function - XYZ_INTERNAL_DROP_RECEIPT

CREATE OR REPLACE

FUNCTION XYZ_INTERNAL_DROP_RECEIPT -- **** INTERNAL DROP SHIP LOGICAL RECEIPT

(

p_inventory_Item IN NUMBER

, p_transaction_id IN NUMBER

)

RETURN NUMBER

IS

xyz_no_markup_inv_cost NUMBER;

BEGIN

xyz_no_markup_inv_cost := 0;

SELECT

/*+ ORDERED */

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15895658

Page 59: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

ROUND (

(

( mmt3.intercompany_cost

-

( mmt3.intercompany_cost - ( rates.conversion_rate * mmt1.actual_cost ) )

)

* mmt3.transaction_quantity

)

, 2

) extend_inv

INTO

xyz_no_markup_inv_cost

FROM

mtl_material_transactions mmt

, mtl_material_transactions mmt1

, mtl_transaction_types ttype1

, mtl_material_transactions mmt2

, mtl_transaction_types ttype2

, mtl_material_transactions mmt3

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 15995659

Page 60: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

, mtl_transaction_types ttype3

, gl_daily_rates rates

WHERE

/*+ ORDERED_PREDICATES */

mmt.transaction_id = p_transaction_id

-- *********************************************

AND

mmt1.parent_transaction_id = mmt.parent_transaction_id

AND

ttype1.transaction_type_id = mmt1.transaction_type_id

AND

ttype1.transaction_type_name = 'Sales order issue'

-- *********************************************

AND

mmt2.parent_transaction_id = mmt.parent_transaction_id

AND

ttype2.transaction_type_id = mmt2.transaction_type_id

AND

ttype2.transaction_type_name = 'Logical Intercompany Sales Issue'

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16095660

Page 61: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- ***************************************************

AND

mmt3.parent_transaction_id = mmt.parent_transaction_id

AND

ttype3.transaction_type_id = mmt3.transaction_type_id

AND

ttype3.transaction_type_name = 'Logical Intercompany Shipment Receipt'

-- *********************************************

-- **** WE NEED TO CONVERT THE SHIP AMT TO THE RECEIPT CURRENCY

AND

rates.from_currency = mmt2.currency_code

AND

rates.to_currency = mmt3.currency_code

AND

rates.conversion_date = TRUNC (mmt.transaction_date)

AND

--rates.conversion_type = '1001' -- **** get from profile???

rates.conversion_type = 'Corporate' -- **** get from profile???

;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16195661

Page 62: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- ************************************

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTERNAL_DROP_RECEIPT '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' xyz_no_markup_inv_cost: ' || xyz_no_markup_inv_cost

);

-- ************************************

RETURN xyz_no_markup_inv_cost;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16295662

Page 63: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- ************************************

EXCEPTION

WHEN OTHERS THEN

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR: ' || SUBSTR(SQLERRM,1,80)

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTERNAL_DROP_RECEIPT '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR ITEM ID: ' || p_inventory_item

);

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16395663

Page 64: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

xyz_no_markup_inv_cost := 0;

RETURN xyz_no_markup_inv_cost;

END;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16495664

Page 65: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16595665

Page 66: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16695666

Page 67: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Function - XYZ_INTRNL_DROP_RCPT_MRKP

CREATE OR REPLACE

FUNCTION XYZ_INTRNL_DROP_RCPT_MRKP -- **** INTERNAL DROP SHIP LOGICAL RECEIPT MARKUP

(

p_inventory_Item IN NUMBER

, p_transaction_id IN NUMBER

)

RETURN NUMBER

IS

xyz_markup_inv_cost NUMBER;

BEGIN

xyz_markup_inv_cost := 0;

SELECT

/*+ ORDERED */

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16795667

Page 68: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

ROUND (

( mmt2.actual_cost * mmt2.transaction_quantity )

, 2

)

-

---- **** MUST ROUND SEPERATELY FROM SUBTRACT SO ENTRIES BALANCE WITHOUT ROUNDING ERROR

ROUND (

(

( mmt3.actual_cost *

( mmt2.actual_cost / mmt2.intercompany_cost )

)

* mmt2.transaction_quantity

)

, 2

) markup

INTO

xyz_markup_inv_cost

FROM

mtl_material_transactions mmt

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16895668

Page 69: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

, mtl_material_transactions mmt2

, inv.mtl_transaction_types ttype

, mtl_material_transactions mmt3

, inv.mtl_transaction_types ttype2

WHERE

/*+ ORDERED_PREDICATES */

mmt.transaction_id = p_transaction_id

AND

mmt2.parent_transaction_id = mmt.parent_transaction_id

AND

ttype.transaction_type_id(+) = mmt2.transaction_type_id

AND

ttype.transaction_type_name = 'Logical Intercompany Shipment Receipt'

AND

mmt3.parent_transaction_id = mmt.parent_transaction_id

AND

ttype2.transaction_type_id(+) = mmt3.transaction_type_id

AND

ttype2.transaction_type_name = 'Sales order issue'

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 16995669

Page 70: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

;

-- ************************************

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTRNL_DROP_RCPT MARKUP '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' xyz_markup_inv_cost: ' || xyz_markup_inv_cost

);

-- ************************************

RETURN xyz_markup_inv_cost;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17095670

Page 71: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- ************************************

EXCEPTION

WHEN OTHERS THEN

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR: ' || SUBSTR(SQLERRM,1,80)

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTRNL_DROP_RCPT MARKUP '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR ITEM ID: ' || p_inventory_item

);

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17195671

Page 72: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

xyz_markup_inv_cost := 0;

RETURN xyz_markup_inv_cost;

END;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17295672

Page 73: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17395673

Page 74: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Function - XYZ_INTERCO_SEGMENT

CREATE OR REPLACE

FUNCTION XYZ_INTERCO_SEGMENT

(

p_inventory_Item IN NUMBER

, p_transaction_id IN NUMBER

)

RETURN VARCHAR2

IS

xyz_interco_segment VARCHAR2(3);

BEGIN

xyz_interco_segment:='000';

SELECT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17495674

Page 75: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

/*+ ORDERED */

comb.segment1

INTO

xyz_interco_segment

FROM

mtl_material_transactions mmt

, mtl_transaction_types ttype

, mtl_material_transactions mmt2

, mtl_transaction_types ttype2

, gl_code_combinations comb

WHERE

/*+ ORDERED_PREDICATES */

-- **** INTERNAL DROP SHIP INTERCOMPANY TRANS

mmt.transaction_id = p_transaction_id

AND

ttype.transaction_type_id = mmt.transaction_type_id

AND

ttype.transaction_type_name = 'Logical Intercompany Shipment Receipt'

AND

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17595675

Page 76: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

mmt2.parent_transaction_id = mmt.parent_transaction_id

AND

ttype2.transaction_type_id = mmt2.transaction_type_id

AND

-- ****

ttype2.transaction_type_name = 'Logical Intercompany Sales Issue'

AND

comb.code_combination_id = mmt2.distribution_account_id;

-- ************************************

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' INTERCO SEGMENT FUNCTION '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_Item

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17695676

Page 77: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' INTERCO SEGMENT: ' || xyz_interco_segment

);

-- ************************************

RETURN xyz_interco_segment;

-- ************************************

EXCEPTION

WHEN OTHERS THEN

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR: ' || SUBSTR(SQLERRM,1,80)

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' INTERCO SEGMENT FUNCTION '

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17795677

Page 78: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR ITEM ID: ' || p_inventory_Item

);

xyz_interco_segment:='000';

RETURN xyz_interco_segment;

END;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17895678

Page 79: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 17995679

Page 80: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18095680

Page 81: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Function - XYZ_INTRNL_DROP_COGS_AMT

CREATE OR REPLACE

FUNCTION XYZ_INTRNL_DROP_COGS_AMT -- **** INV RCPT NO MARKUP ON INTERNAL DROP SHIP

(

p_inventory_Item IN NUMBER

, p_transaction_id IN NUMBER

)

RETURN NUMBER

IS

xyz_no_markup_inv_cost NUMBER;

BEGIN

-- **** THIS IS USED BY INTERNAL DROP SHIPS TO ADJUST THE

-- **** CUSTOMER FACING SIDE OF THE TRANSACTION

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18195681

Page 82: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

xyz_no_markup_inv_cost := 0;

SELECT

/*+ ORDERED */

ROUND (

(

( mmt3.intercompany_cost

-

( mmt3.intercompany_cost - ( rates.conversion_rate * mmt1.actual_cost ) )

)

* mmt3.transaction_quantity

)

, 2

) extend_inv

INTO

xyz_no_markup_inv_cost

FROM

mtl_material_transactions mmt

, mtl_material_transactions mmt1

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18295682

Page 83: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

, mtl_transaction_types ttype1

, mtl_material_transactions mmt2

, mtl_transaction_types ttype2

, mtl_material_transactions mmt3

, mtl_transaction_types ttype3

, gl_daily_rates rates

WHERE

/*+ ORDERED_PREDICATES */

mmt.transaction_id = p_transaction_id -- **** COGS RECOG

AND

-- **** THIS WILL PULL IN THE SOURCE TRANS OF COGS RECOG

mmt1.transaction_source_id = mmt.transaction_source_id

AND

-- **** THERE COULD BE MULTIPLE ITEMS PER ORDER

mmt1.inventory_item_id = mmt.inventory_item_id

AND

ttype1.transaction_type_id = mmt1.transaction_type_id

AND

ttype1.transaction_type_name = 'Sales order issue'

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18395683

Page 84: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- *********************************************

AND

mmt2.parent_transaction_id = mmt1.parent_transaction_id

AND

ttype2.transaction_type_id = mmt2.transaction_type_id

AND

ttype2.transaction_type_name = 'Logical Intercompany Sales Issue'

-- ***************************************************

AND

mmt3.parent_transaction_id = mmt1.parent_transaction_id

AND

ttype3.transaction_type_id = mmt3.transaction_type_id

AND

ttype3.transaction_type_name = 'Logical Intercompany Shipment Receipt'

-- *********************************************

-- **** WE NEED TO CONVERT THE SHIP AMT TO THE RECEIPT CURRENCY

AND

rates.from_currency = mmt2.currency_code

AND

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18495684

Page 85: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

rates.to_currency = mmt3.currency_code

AND

rates.conversion_date = TRUNC (mmt.transaction_date)

AND

--rates.conversion_type = '1001' -- **** get from profile???

rates.conversion_type = 'Corporate' -- **** get from profile???

;

-- ************************************

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTRNL_DROP_COGS_AMT '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

);

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18595685

Page 86: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

FND_FILE.PUT_LINE( FND_FILE.LOG,

' xyz_no_markup_inv_cost: ' || xyz_no_markup_inv_cost

);

-- ************************************

RETURN xyz_no_markup_inv_cost;

-- ************************************

EXCEPTION

WHEN OTHERS THEN

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR: ' || SUBSTR(SQLERRM,1,80)

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTRNL_DROP_COGS_AMT '

);

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18695686

Page 87: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR ITEM ID: ' || p_inventory_item

);

xyz_no_markup_inv_cost := 0;

RETURN xyz_no_markup_inv_cost;

END;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18795687

Page 88: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18895688

Page 89: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 18995689

Page 90: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

PL/SQL Function - XYZ_INTRNL_DROP_INV_AMT

CREATE OR REPLACE

FUNCTION XYZ_INTRNL_DROP_INV_AMT -- **** INV RCPT NO MARKUP ON INTERNAL DROP SHIP

(

p_inventory_Item IN NUMBER

, p_transaction_id IN NUMBER

)

RETURN NUMBER

IS

xyz_no_markup_inv_cost NUMBER;

BEGIN

-- **** THIS IS USED BY INTERNAL DROP SHIPS TO ADJUST THE

-- **** CUSTOMER FACING SIDE OF THE TRANSACTION

xyz_no_markup_inv_cost := 0;

SELECT

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 19095690

Page 91: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

/*+ ORDERED */

ROUND (

(

( mmt3.intercompany_cost

-

( mmt3.intercompany_cost - ( rates.conversion_rate * mmt1.actual_cost ) )

)

* mmt3.transaction_quantity

)

, 2

) extend_inv

INTO

xyz_no_markup_inv_cost

FROM

mtl_material_transactions mmt

, mtl_material_transactions mmt1

, mtl_transaction_types ttype1

, mtl_material_transactions mmt2

, mtl_transaction_types ttype2

, mtl_material_transactions mmt3

, mtl_transaction_types ttype3

, gl_daily_rates rates

WHERE

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 19195691

Page 92: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

/*+ ORDERED_PREDICATES */

mmt.transaction_id = p_transaction_id

-- *********************************************

AND

mmt1.parent_transaction_id = mmt.parent_transaction_id

AND

ttype1.transaction_type_id = mmt1.transaction_type_id

AND

ttype1.transaction_type_name = 'Sales order issue'

-- *********************************************

AND

mmt2.parent_transaction_id = mmt.parent_transaction_id

AND

ttype2.transaction_type_id = mmt2.transaction_type_id

AND

ttype2.transaction_type_name = 'Logical Intercompany Sales Issue'

-- ***************************************************

AND

mmt3.parent_transaction_id = mmt.parent_transaction_id

AND

ttype3.transaction_type_id = mmt3.transaction_type_id

AND

ttype3.transaction_type_name = 'Logical Intercompany Shipment Receipt'

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 19295692

Page 93: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

-- *********************************************

-- **** WE NEED TO CONVERT THE SHIP AMT TO THE RECEIPT CURRENCY

AND

rates.from_currency = mmt2.currency_code

AND

rates.to_currency = mmt3.currency_code

AND

rates.conversion_date = TRUNC (mmt.transaction_date)

AND

--rates.conversion_type = '1001' -- **** get from profile???

rates.conversion_type = 'Corporate' -- **** get from profile???

;

-- ************************************

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTRNL_DROP_INV_AMT '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' TRANSACTION ID: ' || p_transaction_id

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ITEM ID: ' || p_inventory_item

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 19395693

Page 94: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' xyz_no_markup_inv_cost: ' || xyz_no_markup_inv_cost

);

-- ************************************

RETURN xyz_no_markup_inv_cost;

-- ************************************

EXCEPTION

WHEN OTHERS THEN

FND_FILE.NEW_LINE( FND_FILE.LOG, 1 );

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR: ' || SUBSTR(SQLERRM,1,80)

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' XYZ_INTRNL_DROP_INV_AMT '

);

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR TRANSACTION ID: ' || p_transaction_id

);

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 19495694

Page 95: White Paper Subledger Accounting for Intercompany Transaction Flows V5.6

FND_FILE.PUT_LINE( FND_FILE.LOG,

' ERROR ITEM ID: ' || p_inventory_item

);

xyz_no_markup_inv_cost := 0;

RETURN xyz_no_markup_inv_cost;

END;

File Ref: document.docx

Company Confidential - For internal use only

Application Accounting Definition 19595695