Implementation of Prices and Taxes in Shuup¶
This document describes deeper details about price and tax implementation in Shuup from a developer’s point of view. To understand the basics, please read Prices and Taxes in Shuup first.
Types Used for Prices and Taxes¶
Used to represent money amounts (that are not prices). It is basically a
Decimalnumber with a currency.
An interface for accessing the price information of a product, order line, basket line, or whatever. See Accessing Prices of Product or Line.
A class for describing an item’s price information.
An interface for querying prices of products.
A container for variables that affect pricing. Pricing modules may subclass this.
An interface for objects that can be converted to a pricing context. Instances of
HttpRequestsatisfy this interface.
An interface for describing a calculated tax of a line in order or basket. Has a reference to the line and to the applied tax and the calculated amount of tax. One line could have several taxes applied, each is presented with a separate
A container for a calculated tax of a
BasketLine). Implements the
A Django model for persistently storing the calculated tax of an
OrderLine. Implements the
A Django model for a tax with name, code, and percentage rate or fixed amount. Fixed amounts are not yet supported.
Fix this when fixed amounts are supported.
A Django model for a tax class. Taxable items (e.g. products, methods or lines) are grouped to tax classes to make it possible to have different taxation rules for different groups of items.
A Django model for grouping customers to make it possible to have different taxation rules for different groups of customers. Shuup assigns separate
CustomerTaxGroup`s for a `~shuup.core.models.PersonContactand a
An interface for calculating the taxes of an
TaxableItem. The Shuup Base distribution ships a concrete implementation of a
DefaultTaxModule. It is a based on a table of tax rules (saved with
TaxRulemodel). See The Default Tax Module. Used
TaxModulecan be changed with
A type to represent the return value of tax calculation. Contains a pair of prices,
TaxlessPrice, of which one is the original price before the calculation and the other is the calculated price. Also contains a list of the applied taxes.
TaxedPriceis the return type of
get_taxed_price_formethod in the
A container for variables that affect taxing, such as customer tax group, customer tax number, location (country, postal code, etc.). Used in the
TaxModuleinterface. Note: This is not usually subclassed.