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', # 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' )