trytondo-sale_line_delete_log/sale.py

53 lines
1.4 KiB
Python

from trytond.pool import PoolMeta, Pool
from trytond.model import fields, ModelSQL, ModelView
from trytond.transaction import Transaction
class Sale(metaclass=PoolMeta):
__name__ = 'sale.sale'
delete_lines = fields.One2Many(
'sale.line_deleted', 'sale', "Delete lines",
states={
'readonly': True
})
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')
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')