Price logic
Atomia Billing assumes that the reseller has prices configured if either the CanDefineOwnPrices or CanDefineOwnProducts are set to true. If both properties are set to false the prices will be fetched from the resellers parent instead.
The Item.Prices[] / Item.ResellerPrices[] are only used when an item doesn’t have the Recurring flag set to true. If the flag is set to true prices will be searched for in Item.RenewalPeriods[].Prices[] / Item.RenewalPeriods[].ResellerPrices[].
The ResellerPrices[] collections are used to calculate Reseller Commission.
There are basically four different scenarios where prices will be fetched differently, they will be described in short below.
- A) Customer receives invoice directly and reseller has own prices. – This scenario is pretty straight forward, the only thing to remember is that Billing assumes that all items, that this reseller will sell, have prices set.
- B) Reseller receives the invoice and the reseller has own prices. – Same logic as above, only difference is that if the flag UseCommissionAsDiscount is set, prices will be discounted for the amount of reseller commission.
- C) Customer receives the invoice but the reseller doesn’t have own prices. – When the reseller doesn’t have own prices, the reseller parent’s prices are used.
- D) Reseller receives the invoice and the reseller doesn’t have own prices. – This is a same as B, the only difference is that reseller parent’s prices are used (since reseller doesn’t have own prices).