from trytond.pool import Pool, PoolMeta from trytond.model import ModelView, fields from trytond.exceptions import UserError class Sale(metaclass=PoolMeta): "Sale Fast Food" __name__ = 'sale.sale' pizza_number = fields.Integer("Number pizza") @classmethod def __setup__(cls): super(Sale, cls).__setup__() cls._buttons.update({ 'add_pizza': {}, }) @classmethod def default_pizza_number(cls): return 0 @classmethod @ModelView.button def add_pizza(cls, records): pool = Pool() saleLine = pool.get('sale.line') for record in records: #raise UserError(str(record.lines)) record.pizza_number +=1 record.lines += (saleLine(type="title", description="Pizza Combinada"),) record.save() class Line(metaclass=PoolMeta): "Sale Line Fast Food" __name__ = 'sale.line' pizza = fields.Integer("Pizza") @fields.depends('product', 'unit', 'sale', '_parent_sale.party', '_parent_sale.invoice_party', '_parent_sale.pizza_number', methods=['compute_taxes', 'compute_unit_price', 'on_change_with_amount']) def on_change_product(self): super(Line, self).on_change_product() if self.product.pizza: self.pizza = self.sale.pizza_number def get_production(self): "Return production for the sale line" Production = super(Line, self).get_production() #Production.bom = self.product.template.boms.id return Production