trytondo-sale_line_delete_log/sale.py

67 lines
1.7 KiB
Python

from trytond.pool import PoolMeta, Pool
from trytond.model import fields, ModelSQL, ModelView
from trytond.pyson import Eval
from trytond.transaction import Transaction
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
delete_lines = fields.One2Many(
'sale.line_deleted',
'sale',
"Delete lines",
states={
'readonly': Eval('state') != 'draft'
}
)
class SaleLine(metaclass=PoolMeta):
__name__ = 'sale.line'
@classmethod
def delete(cls, lines):
pool = Pool()
SaleLineDeleted = pool.get('sale.line_deleted')
for line in lines:
SaleLineDeleted.create([{
'sale': line.sale,
'quantity': line.quantity,
'unit': line.unit,
'product': line.product,
'user': Transaction().user
}])
super(SaleLine, cls).delete(lines)
class SaleLineDeleted(ModelSQL, ModelView):
'Register lines deleted in sale'
__name__ = 'sale.line_deleted'
sale = fields.Many2One(
'sale.sale', "Sale", ondelete='CASCADE', required=True
)
quantity = fields.Float(
"Quantity", digits='unit',
# states={
# 'invisible': Eval('type') != 'line',
# 'required': Eval('type') == 'line',
# 'readonly': Eval('sale_state') != 'draft',
# }
)
unit = fields.Many2One('product.uom', 'Unit', ondelete='RESTRICT',)
product = fields.Many2One('product.product', 'Product',
ondelete='RESTRICT',
)
sale_date = fields.Date('Sale Date',)
user = fields.Many2One(
'res.user',
'User'
)