from trytond.pool import Pool, PoolMeta from trytond.model import ModelView, fields from trytond.transaction import Transaction from trytond.exceptions import UserError import requests import json 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': {}, 'kitchen': {}, 'bar': {} }) @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: record.pizza_number +=1 record.lines += (saleLine(type="title", description="Pizza Combinada"),) record.save() @classmethod @ModelView.button def kitchen(cls, records): pool = Pool() Report = pool.get('sale.customer_order', type='report') context = Transaction().context customer_order = Report.execute(records, context) content = {'content': customer_order[1].decode('utf-8')} headers = {"accept": 'application/json', 'Content-Type': 'application/json'} url = "http://localhost:5000/print_ticket" response = requests.post(url, data=json.dumps(content), headers=headers) return response.status_code 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