I am curious what the best practice is. For example we have product entity, it has two fields: Price and VAT. What to save in Price value? Base price, and then calculate result price based on base price and VAT code. Or save calculated price and save VAT just for information purposes.
VAT exclusive is the price/figure that excludes VAT. To calculate the price/figure that excludes VAT simply: Divide the figure by 1.2 (1. + UK VAT Percentage)
Consumers usually have to pay VAT and can't generally recover it. If customers are consumers, all prices quoted in ads should include VAT in the stated price. It is not sufficient to state a VAT-exclusive price accompanied by information that VAT is payable.
To find the total cost, add the VAT to the original amount. Divide by 10 – this gives 10% of the amount. Divide by 2 to give 5% of the amount – this is the VAT. To find the total cost, add the VAT to the original amount.
A VAT exclusive price is the price of goods or services before VAT is added. The use of VAT exclusive prices should only be used when the prices are aimed at buyers who can recover any VAT charged, for example 'trade prices' for businesses.
Without VAT, since it can change independently from prices.
Edit: by the way, why are you storing the VAT for each product? Isn't it better to categorize your products (if you have different types of VAT) instead?
Since VAT can change, I recommend storing the base price and the VAT percentage at the time of the sale. Then you can display the calculated price and the VAT percentage depending on what you need to report on.
Aside: The standard rate of VAT in the UK is due to change at the beginning of January 2011 from 17.5% to 20%, any solution should handle this kind of change.
The solution I've used previously is to have the following:
Product:
NetPrice (MONEY, NOT NULL)
VATRateId (INT, NOT NULL, FK -> VATRate.VATRateID)VATRate
VATRateId (INT, PK NOT NULL)
Description (TEXT NOT NULL)VATRateValue
VATRateValueId (INT, PK NOT NULL)
VATRate (MONEY NOT NULL)
EffectiveToDate (DATETIME NULLABLE)
That way I can store that Product X has a net price of 1.00, with a VAT Rate of {1, Standard Rate VAT}, which will apply the following rates { 17.5% until 2010/12/31, 20% thereafter}
The one thing this solution doesn't cater for is you changing the price of the product to ensure that, irrespective of the current VAT rate, the price always remaining at a certain "price-point" such as 4.99. What you could do here, for maxium flexibility (with increased complexity) is move the NetPrice field from the Product
entity to a ProductPrice
entity:
ProductPrice
ProductPriceId (INT, PK NOT NULL)
ProductId (INT, NOT NULL, FK -> Product.ProductId)
Price (MONEY, NOT NULL)
EffectiveToDate (DATETIME NULLABLE)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With