mirror of
https://github.com/inventree/InvenTree.git
synced 2026-04-16 08:18:53 +00:00
[Pricing] Add option to convert received items currency (#8970)
* Add new global setting * Convert to base currency on receipt * Fix total price rendering in PO table * Fix for tasks.py * Update .gitignore - Ignore auto-generated files * Update docs Improved documentation for pricing/currency support * Updates * Fix caching for default currency - Now managed better by session caching * Add unit test for new feature * Playwright test fixes * Validate copying of media files * Validate media files * Adjust playwright setup * Allow multiple attempts to fetch release information * Tweak unit tests * Revert changes to .gitignore file - Just trying stuff at this point * Add debug msg * Try hard-coded paths * Remove debug prints * Abs path for database * More debug * Fix typos * Revert change to db name * Remove debug statements (again) * Cleanup playwright tests * More test tweaks --------- Co-authored-by: Matthias Mair <code@mjmair.com>
This commit is contained in:
@@ -2,23 +2,10 @@
|
||||
title: Pricing
|
||||
---
|
||||
|
||||
## Pricing
|
||||
## Part Pricing
|
||||
|
||||
Pricing is an inherently complex topic, often subject to the particular requirements of the user. InvenTree attempts to provide a comprehensive pricing architecture which is useful without being proscriptive.
|
||||
|
||||
!!! warning "Raw Data Only"
|
||||
InvenTree stores raw pricing data, as provided by the user. Any calculations or decisions based on this data must take into consideration the context in which the data are entered.
|
||||
|
||||
### Terminology
|
||||
|
||||
Throughout this documentation (and within InvenTree) the concepts of *cost* and *price* are separated as follows:
|
||||
|
||||
| Term | Description |
|
||||
| --- | --- |
|
||||
| Price | The theoretical amount of money required to pay for something. |
|
||||
| Cost | The actual amount of money paid. |
|
||||
|
||||
### Pricing Sources
|
||||
!!! info "Pricing Support"
|
||||
Refer to the [Pricing Support](../concepts/pricing.md) documentation for more information on pricing support in InvenTree.
|
||||
|
||||
Pricing information can be determined from multiple sources:
|
||||
|
||||
@@ -42,26 +29,6 @@ Additionally, the following information is stored for each part, in relation to
|
||||
| Sale Price | How much a salable item is sold for (with price-breaks) | [Part](../part/part.md) |
|
||||
| Sale Cost | How much an item was sold for | [Sales Order](../order/sales_order.md) |
|
||||
|
||||
### Currency Support
|
||||
|
||||
InvenTree supports pricing data in multiple currencies, allowing integration with suppliers and customers using different currency systems.
|
||||
|
||||
Supported currencies can be configured in the [InvenTree settings](../settings/currency.md).
|
||||
|
||||
!!! info "Currency Support"
|
||||
InvenTree provides multi-currency pricing support via the [django-money](https://django-money.readthedocs.io/en/latest/) library.
|
||||
|
||||
#### Default Currency
|
||||
|
||||
Many of the pricing operations are performed in reference to a *Default Currency* (which can be selected for the particular InvenTree installation).
|
||||
|
||||
#### Conversion Rates
|
||||
|
||||
To facilitate conversion between different currencies, exchange rate data is provided via the [exchangerate.host](https://exchangerate.host/#/) API. Currency exchange rates are updated once per day.
|
||||
|
||||
!!! tip "Custom Exchange Rates"
|
||||
Custom exchange rates or databases can be used if desired.
|
||||
|
||||
## Pricing Tab
|
||||
|
||||
The pricing tab for a given Part provides all available pricing information for that part. It shows all price ranges and provides tools to calculate them.
|
||||
@@ -81,7 +48,7 @@ At the top of the pricing tab, an *Overview* section shows a synopsis of the ava
|
||||
|
||||
This overview tab provides information on the *range* of pricing data available within each category. If pricing data is not available for a given category, it is marked as *No data*.
|
||||
|
||||
Each price range is calculated in the [Default Currency](#default-currency), independent of the currency in which the original pricing information is stored. This is necessary for operations such as data sorting, price comparison, etc. Note that while the *overview* information is calculated in a single currency, the original pricing information is still available in the original currency.
|
||||
Each price range is calculated in the [Default Currency](../concepts/pricing.md#default-currency), independent of the currency in which the original pricing information is stored. This is necessary for operations such as data sorting, price comparison, etc. Note that while the *overview* information is calculated in a single currency, the original pricing information is still available in the original currency.
|
||||
|
||||
Price range data is [cached in the database](#price-data-caching) when underlying pricing information changes.
|
||||
|
||||
@@ -167,7 +134,7 @@ Pricing calculations (and conversions) can be expensive to perform. This can mak
|
||||
|
||||
For this reason, all information displayed in the [pricing overview](#pricing-overview) section is pre-calculated and *cached* in the database. This ensures that when it needs to be retrieved (e.g. viewing pricing for an entire BOM) it can be accessed immediately.
|
||||
|
||||
Pricing data is cached in the [default currency](#default-currency), which ensures that pricing can be compared across multiple parts in a consistent format.
|
||||
Pricing data is cached in the [default currency](../concepts/pricing.md/#default-currency), which ensures that pricing can be compared across multiple parts in a consistent format.
|
||||
|
||||
#### Data Updates
|
||||
|
||||
|
||||
Reference in New Issue
Block a user