2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-21 06:16:29 +00:00

Remove common_currency model entirely

- A lot of views / pages / etc needed to be updated too
- Now uses django-money fields entirely
- Create a manual rate exchange backend (needs more work!)
This commit is contained in:
Oliver Walters
2020-11-11 00:21:06 +11:00
parent 1fc2ef5f18
commit 4dff18e4a6
33 changed files with 194 additions and 422 deletions

View File

@ -279,7 +279,7 @@ class PartSellPriceBreakAdmin(admin.ModelAdmin):
class Meta:
model = PartSellPriceBreak
list_display = ('part', 'quantity', 'cost', 'currency')
list_display = ('part', 'quantity', 'price',)
admin.site.register(Part, PartAdmin)

View File

@ -19,8 +19,6 @@ from .models import PartParameterTemplate, PartParameter
from .models import PartTestTemplate
from .models import PartSellPriceBreak
from common.models import Currency
class PartModelChoiceField(forms.ModelChoiceField):
""" Extending string representation of Part instance with available stock """
@ -298,13 +296,10 @@ class PartPriceForm(forms.Form):
help_text=_('Input quantity for price calculation')
)
currency = forms.ModelChoiceField(queryset=Currency.objects.all(), label='Currency', help_text=_('Select currency for price calculation'))
class Meta:
model = Part
fields = [
'quantity',
'currency',
]
@ -315,13 +310,10 @@ class EditPartSalePriceBreakForm(HelperForm):
quantity = RoundingDecimalFormField(max_digits=10, decimal_places=5)
cost = RoundingDecimalFormField(max_digits=10, decimal_places=5)
class Meta:
model = PartSellPriceBreak
fields = [
'part',
'quantity',
'cost',
'currency',
'price',
]

View File

@ -0,0 +1,17 @@
# Generated by Django 3.0.7 on 2020-11-10 11:40
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('part', '0056_auto_20201110_1125'),
]
operations = [
migrations.RemoveField(
model_name='partsellpricebreak',
name='currency',
),
]

View File

@ -0,0 +1,17 @@
# Generated by Django 3.0.7 on 2020-11-10 11:42
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('part', '0057_remove_partsellpricebreak_currency'),
]
operations = [
migrations.RemoveField(
model_name='partsellpricebreak',
name='cost',
),
]

View File

@ -84,13 +84,9 @@ class PartSalePriceSerializer(InvenTreeModelSerializer):
Serializer for sale prices for Part model.
"""
symbol = serializers.CharField(read_only=True)
suffix = serializers.CharField(read_only=True)
quantity = serializers.FloatField()
cost = serializers.FloatField()
price = serializers.CharField()
class Meta:
model = PartSellPriceBreak
@ -98,10 +94,7 @@ class PartSalePriceSerializer(InvenTreeModelSerializer):
'pk',
'part',
'quantity',
'cost',
'currency',
'symbol',
'suffix',
'price',
]

View File

@ -10,7 +10,9 @@
<hr>
<div id='price-break-toolbar' class='btn-group'>
<button class='btn btn-primary' id='new-price-break' type='button'>{% trans "Add Price Break" %}</button>
<button class='btn btn-primary' id='new-price-break' type='button'>
<span class='fas fa-plus-circle'></span> {% trans "Add Price Break" %}
</button>
</div>
<table class='table table-striped table-condensed' id='price-break-table' data-toolbar='#price-break-toolbar'>
@ -81,18 +83,11 @@ $('#price-break-table').inventreeTable({
sortable: true,
},
{
field: 'cost',
field: 'price',
title: '{% trans "Price" %}',
sortable: true,
formatter: function(value, row, index) {
var html = '';
html += row.symbol || '';
html += value;
if (row.suffix) {
html += ' ' + row.suffix || '';
}
var html = value;
html += `<div class='btn-group float-right' role='group'>`

View File

@ -16,6 +16,8 @@ from django.forms.models import model_to_dict
from django.forms import HiddenInput, CheckboxInput
from django.conf import settings
from moneyed import CURRENCIES
import os
from rapidfuzz import fuzz
@ -28,7 +30,7 @@ from .models import match_part_names
from .models import PartTestTemplate
from .models import PartSellPriceBreak
from common.models import Currency, InvenTreeSetting
from common.models import InvenTreeSetting
from company.models import SupplierPart
from . import forms as part_forms
@ -1860,19 +1862,12 @@ class PartPricing(AjaxView):
if quantity < 1:
quantity = 1
if currency is None:
# No currency selected? Try to select a default one
try:
currency = Currency.objects.get(base=1)
except Currency.DoesNotExist:
currency = None
# TODO - Capacity for price comparison in different currencies
currency = None
# Currency scaler
scaler = Decimal(1.0)
if currency is not None:
scaler = Decimal(currency.value)
part = self.get_part()
ctx = {
@ -1942,13 +1937,8 @@ class PartPricing(AjaxView):
except ValueError:
quantity = 1
try:
currency_id = int(self.request.POST.get('currency', None))
if currency_id:
currency = Currency.objects.get(pk=currency_id)
except (ValueError, Currency.DoesNotExist):
currency = None
# TODO - How to handle pricing in different currencies?
currency = None
# Always mark the form as 'invalid' (the user may wish to keep getting pricing data)
data = {
@ -2393,12 +2383,11 @@ class PartSalePriceBreakCreate(AjaxCreateView):
initials['part'] = self.get_part()
# Pre-select the default currency
try:
base = Currency.objects.get(base=True)
initials['currency'] = base
except Currency.DoesNotExist:
pass
default_currency = InvenTreeSetting.get_setting('INVENTREE_DEFAULT_CURRENCY')
currency = CURRENCIES.get(default_currency, None)
if currency is not None:
initials['price'] = [1.0, currency]
return initials