mirror of
				https://github.com/inventree/InvenTree.git
				synced 2025-11-03 22:55:43 +00:00 
			
		
		
		
	Currency migrations - stop migrations when defaults change (#4975)
* make currency choices independend * replace hard coded default currency * use function for psql? * use callable default * revert some fields * also migrat all currency codes
This commit is contained in:
		@@ -23,6 +23,11 @@ def currency_code_default():
 | 
			
		||||
    return code
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def all_currency_codes():
 | 
			
		||||
    """Returns a list of all currency codes."""
 | 
			
		||||
    return [(a, CURRENCIES[a].name) for a in CURRENCIES]
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def currency_code_mappings():
 | 
			
		||||
    """Returns the current currency choices."""
 | 
			
		||||
    return [(a, CURRENCIES[a].name) for a in settings.CURRENCIES]
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
from django.db import migrations, connection
 | 
			
		||||
import djmoney.models.fields
 | 
			
		||||
import common.settings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
@@ -14,11 +15,11 @@ class Migration(migrations.Migration):
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='supplierpricebreak',
 | 
			
		||||
            name='price',
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(decimal_places=4, default_currency='USD', help_text='Unit price at specified quantity', max_digits=19, null=True, verbose_name='Price'),
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(decimal_places=4, default_currency=common.settings.currency_code_default(), help_text='Unit price at specified quantity', max_digits=19, null=True, verbose_name='Price'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='supplierpricebreak',
 | 
			
		||||
            name='price_currency',
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=[('AUD', 'Australian Dollar'), ('CAD', 'Canadian Dollar'), ('EUR', 'Euro'), ('NZD', 'New Zealand Dollar'), ('GBP', 'Pound Sterling'), ('USD', 'US Dollar'), ('JPY', 'Yen')], default='USD', editable=False, max_length=3),
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=common.settings.currency_code_mappings(), default=common.settings.currency_code_default(), editable=False, max_length=3),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
from django.db import migrations
 | 
			
		||||
import djmoney.models.fields
 | 
			
		||||
import common.settings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
@@ -14,11 +15,11 @@ class Migration(migrations.Migration):
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='purchaseorderlineitem',
 | 
			
		||||
            name='purchase_price',
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(decimal_places=4, default_currency='USD', help_text='Unit purchase price', max_digits=19, null=True, verbose_name='Purchase Price'),
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(decimal_places=4, default_currency=common.settings.currency_code_default(), help_text='Unit purchase price', max_digits=19, null=True, verbose_name='Purchase Price'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='purchaseorderlineitem',
 | 
			
		||||
            name='purchase_price_currency',
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=[('AUD', 'Australian Dollar'), ('CAD', 'Canadian Dollar'), ('EUR', 'Euro'), ('NZD', 'New Zealand Dollar'), ('GBP', 'Pound Sterling'), ('USD', 'US Dollar'), ('JPY', 'Yen')], default='USD', editable=False, max_length=3),
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=common.settings.currency_code_mappings(), default=common.settings.currency_code_default(), editable=False, max_length=3),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
from django.db import migrations
 | 
			
		||||
import djmoney.models.fields
 | 
			
		||||
import common.settings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
@@ -14,6 +15,6 @@ class Migration(migrations.Migration):
 | 
			
		||||
        migrations.AlterField(
 | 
			
		||||
            model_name='purchaseorderlineitem',
 | 
			
		||||
            name='purchase_price',
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(blank=True, decimal_places=4, default_currency='USD', help_text='Unit purchase price', max_digits=19, null=True, verbose_name='Purchase Price'),
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(blank=True, decimal_places=4, default_currency=common.settings.currency_code_default(), help_text='Unit purchase price', max_digits=19, null=True, verbose_name='Purchase Price'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,7 @@
 | 
			
		||||
# Generated by Django 3.2 on 2021-05-04 19:46
 | 
			
		||||
 | 
			
		||||
from django.db import migrations
 | 
			
		||||
import common.settings
 | 
			
		||||
import djmoney.models.fields
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@@ -14,11 +15,11 @@ class Migration(migrations.Migration):
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='salesorderlineitem',
 | 
			
		||||
            name='sale_price',
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(blank=True, decimal_places=4, default_currency='USD', help_text='Unit sale price', max_digits=19, null=True, verbose_name='Sale Price'),
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(blank=True, decimal_places=4, default_currency=common.settings.currency_code_default(), help_text='Unit sale price', max_digits=19, null=True, verbose_name='Sale Price'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='salesorderlineitem',
 | 
			
		||||
            name='sale_price_currency',
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=[('AUD', 'Australian Dollar'), ('GBP', 'British Pound'), ('CAD', 'Canadian Dollar'), ('EUR', 'Euro'), ('JPY', 'Japanese Yen'), ('NZD', 'New Zealand Dollar'), ('USD', 'US Dollar')], default='USD', editable=False, max_length=3),
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=common.settings.currency_code_mappings(), default=common.settings.currency_code_default(), editable=False, max_length=3),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
from django.db import migrations
 | 
			
		||||
import djmoney.models.fields
 | 
			
		||||
import common.settings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
@@ -14,11 +15,11 @@ class Migration(migrations.Migration):
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='partsellpricebreak',
 | 
			
		||||
            name='price',
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(decimal_places=4, default_currency='USD', help_text='Unit price at specified quantity', max_digits=19, null=True, verbose_name='Price'),
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(decimal_places=4, default_currency=common.settings.currency_code_default(), help_text='Unit price at specified quantity', max_digits=19, null=True, verbose_name='Price'),
 | 
			
		||||
        ),
 | 
			
		||||
        migrations.AddField(
 | 
			
		||||
            model_name='partsellpricebreak',
 | 
			
		||||
            name='price_currency',
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=[('AUD', 'Australian Dollar'), ('CAD', 'Canadian Dollar'), ('EUR', 'Euro'), ('NZD', 'New Zealand Dollar'), ('GBP', 'Pound Sterling'), ('USD', 'US Dollar'), ('JPY', 'Yen')], default='USD', editable=False, max_length=3),
 | 
			
		||||
            field=djmoney.models.fields.CurrencyField(choices=common.settings.currency_code_mappings(), default=common.settings.currency_code_default(), editable=False, max_length=3),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
import InvenTree.fields
 | 
			
		||||
import django.core.validators
 | 
			
		||||
import common.settings
 | 
			
		||||
from django.db import migrations, models
 | 
			
		||||
import django.db.models.deletion
 | 
			
		||||
import djmoney.models.fields
 | 
			
		||||
@@ -19,8 +20,8 @@ class Migration(migrations.Migration):
 | 
			
		||||
            fields=[
 | 
			
		||||
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 | 
			
		||||
                ('quantity', InvenTree.fields.RoundingDecimalField(decimal_places=5, default=1, help_text='Price break quantity', max_digits=15, validators=[django.core.validators.MinValueValidator(1)], verbose_name='Quantity')),
 | 
			
		||||
                ('price_currency', djmoney.models.fields.CurrencyField(choices=[('AUD', 'Australian Dollar'), ('CAD', 'Canadian Dollar'), ('EUR', 'Euro'), ('NZD', 'New Zealand Dollar'), ('GBP', 'Pound Sterling'), ('USD', 'US Dollar'), ('JPY', 'Yen')], default='USD', editable=False, max_length=3)),
 | 
			
		||||
                ('price', djmoney.models.fields.MoneyField(decimal_places=4, default_currency='USD', help_text='Unit price at specified quantity', max_digits=19, null=True, verbose_name='Price')),
 | 
			
		||||
                ('price_currency', djmoney.models.fields.CurrencyField(choices=common.settings.currency_code_mappings(), default=common.settings.currency_code_default(), editable=False, max_length=3)),
 | 
			
		||||
                ('price', djmoney.models.fields.MoneyField(decimal_places=4, default_currency=common.settings.currency_code_default(), help_text='Unit price at specified quantity', max_digits=19, null=True, verbose_name='Price')),
 | 
			
		||||
                ('part', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='internalpricebreaks', to='part.part', verbose_name='Part')),
 | 
			
		||||
            ],
 | 
			
		||||
            options={
 | 
			
		||||
 
 | 
			
		||||
@@ -35,7 +35,7 @@ class Migration(migrations.Migration):
 | 
			
		||||
            name='PartPricing',
 | 
			
		||||
            fields=[
 | 
			
		||||
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
 | 
			
		||||
                ('currency', models.CharField(choices=[('AUD', 'Australian Dollar'), ('CAD', 'Canadian Dollar'), ('CNY', 'Chinese Yuan'), ('EUR', 'Euro'), ('GBP', 'British Pound'), ('JPY', 'Japanese Yen'), ('NZD', 'New Zealand Dollar'), ('USD', 'US Dollar')], default=common.settings.currency_code_default, help_text='Currency used to cache pricing calculations', max_length=10, verbose_name='Currency')),
 | 
			
		||||
                ('currency', models.CharField(choices=common.settings.currency_code_mappings(), default=common.settings.currency_code_default, help_text='Currency used to cache pricing calculations', max_length=10, verbose_name='Currency')),
 | 
			
		||||
                ('updated', models.DateTimeField(auto_now=True, help_text='Timestamp of last pricing update', verbose_name='Updated')),
 | 
			
		||||
                ('scheduled_for_update', models.BooleanField(default=False)),
 | 
			
		||||
                ('bom_cost_min_currency', djmoney.models.fields.CurrencyField(choices=[], default='', editable=False, max_length=3)),
 | 
			
		||||
 
 | 
			
		||||
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							@@ -2,6 +2,7 @@
 | 
			
		||||
 | 
			
		||||
from django.db import migrations
 | 
			
		||||
import djmoney.models.fields
 | 
			
		||||
import common.settings
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class Migration(migrations.Migration):
 | 
			
		||||
@@ -14,6 +15,6 @@ class Migration(migrations.Migration):
 | 
			
		||||
        migrations.AlterField(
 | 
			
		||||
            model_name='stockitem',
 | 
			
		||||
            name='purchase_price',
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(blank=True, decimal_places=4, default_currency='USD', help_text='Single unit purchase price at time of purchase', max_digits=19, null=True, verbose_name='Purchase Price'),
 | 
			
		||||
            field=djmoney.models.fields.MoneyField(blank=True, decimal_places=4, default_currency=common.settings.currency_code_default(), help_text='Single unit purchase price at time of purchase', max_digits=19, null=True, verbose_name='Purchase Price'),
 | 
			
		||||
        ),
 | 
			
		||||
    ]
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user