Restore shipment method in sale when removing load orders.
This commit refs #26394
This commit is contained in:
parent
886377b84a
commit
6d4af58090
10
load.py
10
load.py
|
@ -536,6 +536,16 @@ class LoadOrder(metaclass=PoolMeta):
|
|||
order=record.rec_name))
|
||||
super(LoadOrder, cls).draft(records)
|
||||
|
||||
@classmethod
|
||||
def delete(cls, records):
|
||||
Sale = Pool().get('sale.sale')
|
||||
|
||||
sales = [r.sale for r in records if r.sale
|
||||
and not r.sale.is_origin_load]
|
||||
super().delete(records)
|
||||
if sales:
|
||||
Sale.restore_load_shipment_method(sales)
|
||||
|
||||
def _get_inventory_move(self, move):
|
||||
pool = Pool()
|
||||
Move = pool.get('stock.move')
|
||||
|
|
24
sale.py
24
sale.py
|
@ -76,19 +76,24 @@ class Sale(metaclass=PoolMeta):
|
|||
res.extend(super(Sale, cls).copy(clear_methods, default=default))
|
||||
return res
|
||||
|
||||
@property
|
||||
def is_origin_load(self):
|
||||
LoadOrder = Pool().get('carrier.load.order')
|
||||
return bool(self.origin
|
||||
and isinstance(self.origin, LoadOrder))
|
||||
|
||||
@classmethod
|
||||
def cancel(cls, records):
|
||||
for record in records:
|
||||
if (record.loads and record.origin
|
||||
and record.origin.__name__ != 'carrier.load.order'):
|
||||
and not record.is_origin_load):
|
||||
raise UserError(gettext(
|
||||
'carrier_load_ul.msg_sale_sale_cancel_loads',
|
||||
sale=record.rec_name))
|
||||
super(Sale, cls).cancel(records)
|
||||
super().cancel(records)
|
||||
|
||||
def check_method(self):
|
||||
if not self.loads and (not self.origin
|
||||
or self.origin.__name__ != 'carrier.load.order'):
|
||||
if not self.loads and not self.is_origin_load:
|
||||
super(Sale, self).check_method()
|
||||
return
|
||||
if (self.shipment_method == 'invoice'
|
||||
|
@ -101,12 +106,19 @@ class Sale(metaclass=PoolMeta):
|
|||
|
||||
@classmethod
|
||||
def quote(cls, records):
|
||||
cls.restore_load_shipment_method(records)
|
||||
super().quote(records)
|
||||
|
||||
@classmethod
|
||||
def restore_load_shipment_method(cls, records):
|
||||
to_update = []
|
||||
for record in records:
|
||||
if ((record.shipment_method, record.invoice_method) == (
|
||||
'manual', 'shipment') and not record.loads):
|
||||
record.shipment_method = 'order'
|
||||
record.save()
|
||||
super(Sale, cls).quote(records)
|
||||
to_update.append(record)
|
||||
if to_update:
|
||||
cls.save(to_update)
|
||||
|
||||
@classmethod
|
||||
def process(cls, sales):
|
||||
|
|
Loading…
Reference in New Issue