mirror of
https://github.com/NaN-tic/trytond-sale_product_package.git
synced 2023-12-14 03:03:09 +01:00
parent
f45a146fb8
commit
f7e1ae83ff
|
@ -14,4 +14,5 @@ def register():
|
|||
Pool.register(
|
||||
sale.HandleShipmentException,
|
||||
sale.HandleInvoiceException,
|
||||
sale.ReturnSale,
|
||||
module='sale_product_package', type_='wizard')
|
||||
|
|
21
sale.py
21
sale.py
|
@ -8,7 +8,7 @@ from trytond.i18n import gettext
|
|||
from trytond.exceptions import UserError
|
||||
|
||||
__all__ = ['Sale', 'SaleLine',
|
||||
'HandleShipmentException', 'HandleInvoiceException']
|
||||
'HandleShipmentException', 'HandleInvoiceException', 'ReturnSale']
|
||||
|
||||
|
||||
class Sale(metaclass=PoolMeta):
|
||||
|
@ -142,3 +142,22 @@ class HandleInvoiceException(metaclass=PoolMeta):
|
|||
def transition_handle(self):
|
||||
with Transaction().set_context(validate_package=False):
|
||||
return super(HandleInvoiceException, self).transition_handle()
|
||||
|
||||
|
||||
class ReturnSale(metaclass=PoolMeta):
|
||||
__name__ = 'sale.return_sale'
|
||||
|
||||
def do_return_(self, action):
|
||||
action, data = super().do_return_(action)
|
||||
|
||||
if data.get('res_id'):
|
||||
sales = self.model.browse(data['res_id'])
|
||||
|
||||
for sale in sales:
|
||||
for line in sale.lines:
|
||||
if line.type == 'line' and line.package_quantity:
|
||||
line.package_quantity *= -1
|
||||
sale.lines = sale.lines # Force saving
|
||||
self.model.save(sales)
|
||||
|
||||
return action, data
|
||||
|
|
|
@ -140,4 +140,24 @@ Sale products with package::
|
|||
>>> line.quantity = 12
|
||||
>>> line.package_quantity
|
||||
2
|
||||
>>> line = sale.lines.new()
|
||||
>>> line.type = 'comment'
|
||||
>>> line.description = 'Test comment'
|
||||
>>> sale.save()
|
||||
>>> sale.click('quote')
|
||||
>>> sale.click('confirm')
|
||||
>>> sale.state
|
||||
'processing'
|
||||
|
||||
Return sale::
|
||||
|
||||
|
||||
>>> return_sale = Wizard('sale.return_sale', [sale])
|
||||
>>> return_sale.execute('return_')
|
||||
>>> returned_sale, = Sale.find([
|
||||
... ('state', '=', 'draft'),
|
||||
... ])
|
||||
>>> returned_sale.origin == sale
|
||||
True
|
||||
>>> sorted([(x.quantity or 0, x.package_quantity or 0) for x in returned_sale.lines])
|
||||
[(-12.0, -2), (0, 0)]
|
||||
|
|
Loading…
Reference in a new issue