2
0
mirror of https://github.com/inventree/InvenTree.git synced 2025-06-17 20:45:44 +00:00

[BUG] Deleting a Customer Breaks Associated Sales Orders

Add special protected deleted company
Fixes #2788
This commit is contained in:
Matthias
2022-03-30 01:29:36 +02:00
parent c082cec3ee
commit aa30e62ad8
4 changed files with 63 additions and 3 deletions

View File

@ -0,0 +1,25 @@
# Generated by Django 3.2.12 on 2022-03-29 22:46
from django.db import migrations, models
import order.models
class Migration(migrations.Migration):
dependencies = [
('company', '0043_company_is_deleted'),
('order', '0063_alter_purchaseorderlineitem_unique_together'),
]
operations = [
migrations.AlterField(
model_name='purchaseorder',
name='supplier',
field=models.ForeignKey(help_text='Company from which the items are being ordered', limit_choices_to={'is_supplier': True}, on_delete=models.SET(order.models.get_deleted_company), related_name='purchase_orders', to='company.company', verbose_name='Supplier'),
),
migrations.AlterField(
model_name='salesorder',
name='customer',
field=models.ForeignKey(help_text='Company to which the items are being sold', limit_choices_to={'is_customer': True}, null=True, on_delete=models.SET(order.models.get_deleted_company), related_name='sales_orders', to='company.company', verbose_name='Customer'),
),
]

View File

@ -92,6 +92,9 @@ def get_next_so_number():
return reference
def get_deleted_company():
return Company.objects.get_or_create(name='deleted', email='deleted',is_deleted=True)[0]
class Order(ReferenceIndexingMixin):
""" Abstract model for an order.
@ -219,7 +222,7 @@ class PurchaseOrder(Order):
help_text=_('Purchase order status'))
supplier = models.ForeignKey(
Company, on_delete=models.CASCADE,
Company, on_delete=models.SET(get_deleted_company),
limit_choices_to={
'is_supplier': True,
},
@ -567,7 +570,7 @@ class SalesOrder(Order):
customer = models.ForeignKey(
Company,
on_delete=models.SET_NULL,
on_delete=models.SET(get_deleted_company),
null=True,
limit_choices_to={'is_customer': True},
related_name='sales_orders',