FIX when executing the sale refund action

#036486
This commit is contained in:
Raimon Esteve 2019-01-18 10:05:18 +01:00
parent 827e719c59
commit 4cf5eb5036
3 changed files with 26 additions and 41 deletions

View File

@ -14,6 +14,3 @@ def register():
invoice.InvoiceLine,
sale.SaleLine,
module='sale_kit', type_='model')
Pool.register(
sale.ReturnSale,
module='sale_kit', type_='wizard')

36
sale.py
View File

@ -7,7 +7,7 @@ from trytond.pool import Pool, PoolMeta
from trytond.pyson import Equal, Eval
from trytond.transaction import Transaction
__all__ = ['SaleLine', 'ReturnSale']
__all__ = ['SaleLine']
class SaleLine:
@ -200,28 +200,9 @@ class SaleLine:
def copy(cls, lines, default=None):
if default is None:
default = {}
default.setdefault('kit_child_lines', [])
new_lines, no_kit_lines = [], []
copied_parents = set()
with Transaction().set_context(explode_kit=False):
for line in lines:
if line.kit_child_lines:
if line.kit_parent_line not in copied_parents:
new_line, = super(SaleLine, cls).copy([line], default)
new_lines.append(new_line)
copied_parents.add(line.id)
new_default = default.copy()
new_default['kit_parent_line'] = new_line.id
super(SaleLine, cls).copy(line.kit_child_lines,
default=new_default)
elif (line.kit_parent_line and
line.kit_parent_line.id in copied_parents):
# Already copied by kit_child_lines
continue
else:
no_kit_lines.append(line)
new_lines += super(SaleLine, cls).copy(no_kit_lines,
default=default)
default['kit_child_lines'] = []
lines = [x for x in lines if not x.kit_parent_line]
new_lines = super(SaleLine, cls).copy(lines, default=default)
return new_lines
def get_invoice_line(self):
@ -229,12 +210,3 @@ class SaleLine:
for line in lines:
line.sequence = self.sequence
return lines
class ReturnSale:
__metaclass__ = PoolMeta
__name__ = 'sale.return_sale'
def do_return_(self, action):
with Transaction().set_context(explode_kit=False):
return super(ReturnSale, self).do_return_(action)

View File

@ -27,12 +27,6 @@ Create company::
>>> _ = create_company()
>>> company = get_company()
Reload the context::
>>> User = Model.get('res.user')
>>> Group = Model.get('res.group')
>>> config._context = User.get_preferences(True, config.context)
Create fiscal year::
>>> fiscalyear = set_fiscalyear_invoice_sequences(
@ -173,6 +167,7 @@ Sale products::
>>> sale_line.product = product
>>> sale_line.quantity = 2.0
>>> sale.save()
>>> sale.click('quote')
>>> len(sale.lines) == 4
True
>>> line1, line2, line3, line4 = sale.lines
@ -184,3 +179,24 @@ Sale products::
1
>>> line4.kit_depth
1
Return a sale::
>>> return_sale = Wizard('sale.return_sale', [sale])
>>> return_sale.execute('return_')
>>> returned_sale, = Sale.find([
... ('state', '=', 'draft'),
... ])
>>> len(returned_sale.lines) == 4
True
>>> line1, line2, line3, line4 = returned_sale.lines
>>> line1.product.kit == True
True
>>> line1.unit_price == Decimal('10.0000')
True
>>> line2.unit_price == Decimal('0.0')
True
>>> line3.unit_price == Decimal('0.0')
True
>>> line4.unit_price == Decimal('0.0')
True