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 _create_sale_line_deleted_log(cls, line): pool = Pool() SaleLineDeleted = pool.get('sale.line_deleted') SaleLineDeleted.create([{ 'sale': line.sale, 'quantity': line.quantity, 'unit': line.unit, 'product': line.product, 'user': Transaction().user }]) class SaleLineDeleted(ModelSQL, ModelView): 'Register lines deleted in sale' __name__ = 'sale.line_deleted' _state = states = { 'readonly': True } sale = fields.Many2One( 'sale.sale', "Sale", ondelete='CASCADE', required=True, states=_state) quantity = fields.Float( "Quantity", digits='unit', states=_state) unit = fields.Many2One( 'product.uom', 'Unit', ondelete='RESTRICT', states=_state) product = fields.Many2One( 'product.product', 'Product', ondelete='RESTRICT', states=_state) sale_date = fields.Date( 'Sale Date', states=_state ) user = fields.Many2One( 'res.user', 'User', states=_state)