66 lines
1.6 KiB
Python
66 lines
1.6 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',
|
|
# 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'
|
|
)
|