Sales account, vat and relation with product
A note on how accounts and vat are set on outgoing invoices created using Go
Sales accounts set on the product will determine where (ie which account) the salesline will be posted and how vat will be handled, when the product is set on an order/invoice draft line.
The account will govern which vat code will be used, when the invoice draft is sent and the saleslines posted in the process. The usual setup of Go is to use dedicated accounts for each type of sale, at least dedicated per vat code.
The point is that neither account or vat is handled explicitly on outgoing invoice drafts - they are set via the product used on the line.
A general note on the sales accounts
The SalesAccount property is where the account used for regular sales can be defined for that product. The typical usecase is to set this to an account with vat, for instance an account with vat code 3,25% vat.
The AlternativeSalesAccount property is where the account used for alternative sale situations can be used. The typical usecase for this is to set this to an account that have a vat code for vat free sale.
Another case and an example of the use for theese two account settings, can be a restaurant having in-house vat sale an take-away vat sale:
Set the sales account to an account with regular 25% vat (in-house dining)
Set the alternative sales account to an account with reduced 15% vat (take-away)
On the orderline/draftsalesline, the boolean property StandardSalesAccount governs which of the sales account will be used for the product set on the line. The property is represented by a checkbox in the GUI, for users in Go to swithc between the accounts.
The hierarky of sales accounts
Go have a built in hierarchy for how the accounts are set on products
Accounts set explicit on the product will be used on orderlines including this product. If not set explicit (ie the properties are returned as null), point 2 is checked
If accounts are set explicit on the product group level and the product is connected to a product group, the accounts on the product group level will be used. If not set on the product group, point 3 will be checked
Accounts set in the general/global invoice settings in Go will be used
If not set either place (ie sales account settings are missing entirely in Go), an error message will be provided when saledraft lines are created.
Step 1
Sales Account on Product level
Step 2
Sales Account on Product Group level
Step 3
Sales Account on Invoice Settings
The implications for a party integration the transferring of orders workflow:
Products, product groups, and accounts with different vat situations can be governed and synchronized quite detailed, depending on the customers need for information in Go.
However, if the usecase allows for it, the following approach will be easier to integrate:
The customer/client define and create a limited set of products in Go. The idea is to have one "dummy" product for each relevant combo of salesaccount and vat that the client/customer will have use of.
The set of products are mapped to the product list in the external system (mapped by the integration/mapping table in external system)
The integation transfer the mapped product when creating outgoing invoice drafts in Go, and the integration party need not cocern itself with sync of products, salesaccount and vat settings.*
*Some adjustments may be needed to have logic in place to trigger the use of alternative sales accounts, typically for vat free cases. One solution might be to trigger the vat free setting on the Custome object, which will enforce the use of alternative sales accounts. Another approach can be to have the customer/client create separate "dummy" products for this sale, and using only the sales account setting on all the products created.