mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 04:26:44 +00:00
Make "shipment" field required for a SalesOrderAllocation
- Deleting a "Shipment" will delete any "Allocation" objects which reference it - Improve existing data migration for new shipment model
This commit is contained in:
parent
ce5b47460a
commit
d31f2be955
@ -0,0 +1,19 @@
|
||||
# Generated by Django 3.2.5 on 2021-10-25 11:40
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('order', '0055_auto_20211025_0645'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='salesorderallocation',
|
||||
name='shipment',
|
||||
field=models.ForeignKey(help_text='Sales order shipment reference', on_delete=django.db.models.deletion.CASCADE, to='order.salesordershipment', verbose_name='Shipment'),
|
||||
),
|
||||
]
|
@ -1039,7 +1039,6 @@ class SalesOrderAllocation(models.Model):
|
||||
shipment = models.ForeignKey(
|
||||
SalesOrderShipment,
|
||||
on_delete=models.CASCADE,
|
||||
null=True, blank=True,
|
||||
verbose_name=_('Shipment'),
|
||||
help_text=_('Sales order shipment reference'),
|
||||
)
|
||||
|
@ -27,10 +27,12 @@ class TestForwardMigrations(MigratorTestCase):
|
||||
supplier = Company.objects.create(
|
||||
name='Supplier A',
|
||||
description='A great supplier!',
|
||||
is_supplier=True
|
||||
is_supplier=True,
|
||||
is_customer=True,
|
||||
)
|
||||
|
||||
PurchaseOrder = self.old_state.apps.get_model('order', 'purchaseorder')
|
||||
SalesOrder = self.old_state.apps.get_model('order', 'salesorder')
|
||||
|
||||
# Create some orders
|
||||
for ii in range(10):
|
||||
@ -45,19 +47,32 @@ class TestForwardMigrations(MigratorTestCase):
|
||||
with self.assertRaises(AttributeError):
|
||||
print(order.reference_int)
|
||||
|
||||
sales_order = SalesOrder.objects.create(
|
||||
customer=supplier,
|
||||
reference=f"{ii}-xyz",
|
||||
description="A test sales order",
|
||||
)
|
||||
|
||||
# Initially, the 'reference_int' field is unavailable
|
||||
with self.assertRaises(AttributeError):
|
||||
print(sales_order.reference_int)
|
||||
|
||||
def test_ref_field(self):
|
||||
"""
|
||||
Test that the 'reference_int' field has been created and is filled out correctly
|
||||
"""
|
||||
|
||||
PurchaseOrder = self.new_state.apps.get_model('order', 'purchaseorder')
|
||||
SalesOrder = self.new_state.apps.get_model('order', 'salesorder')
|
||||
|
||||
for ii in range(10):
|
||||
|
||||
order = PurchaseOrder.objects.get(reference=f"{ii}-abcde")
|
||||
po = PurchaseOrder.objects.get(reference=f"{ii}-abcde")
|
||||
so = SalesOrder.objects.get(reference=f"{ii}-xyz")
|
||||
|
||||
# The integer reference field must have been correctly updated
|
||||
self.assertEqual(order.reference_int, ii)
|
||||
self.assertEqual(po.reference_int, ii)
|
||||
self.assertEqual(so.reference_int, ii)
|
||||
|
||||
|
||||
class TestShipmentMigration(MigratorTestCase):
|
||||
@ -93,6 +108,10 @@ class TestShipmentMigration(MigratorTestCase):
|
||||
|
||||
order.save()
|
||||
|
||||
# The "shipment" model does not exist yet
|
||||
with self.assertRaises(LookupError):
|
||||
self.old_state.apps.get_model('order', 'salesordershipment')
|
||||
|
||||
def test_shipment_creation(self):
|
||||
"""
|
||||
Check that a SalesOrderShipment has been created
|
||||
|
Loading…
x
Reference in New Issue
Block a user