10 Commits

10 changed files with 149 additions and 4 deletions

View File

@@ -1,5 +1,5 @@
from trytond.pool import Pool
from . import product, sale
from . import product, sale, production, invoice
__all__ = ['register']
@@ -7,8 +7,10 @@ __all__ = ['register']
def register():
Pool.register(
product.Product,
invoice.InvoiceLine,
sale.Sale,
sale.Line,
production.Production,
module='sale_fast_food', type_='model')
Pool.register(
module='sale_fast_food', type_='wizard')

16
invoice.py Normal file
View File

@@ -0,0 +1,16 @@
from trytond.pool import Pool, PoolMeta
from trytond.model import ModelView, fields
from trytond.exceptions import UserError
from trytond.pyson import Eval
class InvoiceLine(metaclass=PoolMeta):
__name__ = 'account.invoice.line'
@classmethod
def __setup__(cls):
super(InvoiceLine, cls).__setup__()
cls.product.states['required'] = (Eval('type') == 'line')
cls.unit_price.domain = []

View File

@@ -6,6 +6,10 @@ msgctxt "field:product.template,pizza:"
msgid "Pizza"
msgstr "Pizza"
msgctxt "field:product.template,pizza:"
msgctxt "field:product.template,pizza_topping:"
msgid "Topping Pizza"
msgstr "Adiciónes"
msgctxt "field:product.template,boms:"
msgid "Boms"
msgstr "Lista de Materiales"

View File

@@ -1,5 +1,6 @@
from trytond.pool import Pool, PoolMeta
from trytond.model import fields
from trytond.pyson import Eval, Bool
class Product(metaclass=PoolMeta):
@@ -7,4 +8,6 @@ class Product(metaclass=PoolMeta):
__name__ = 'product.template'
pizza = fields.Boolean("Pizza")
Pizza_topping = fields.Boolean("Topping Pizza")
pizza_topping = fields.Boolean("Topping Pizza")
boms = fields.Many2One('production.bom', "Boms",
states={'required': Eval('producible', True)})

62
production.py Normal file
View File

@@ -0,0 +1,62 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from decimal import Decimal
from trytond.pool import Pool, PoolMeta
from trytond.model import fields
from trytond.modules.product import price_digits, round_price
from trytond.exceptions import UserError
BOM_CHANGES = ['bom', 'product', 'quantity', 'uom', 'warehouse', 'location',
'company', 'inputs', 'outputs']
class Production(metaclass=PoolMeta):
"Production"
__name__ = 'production'
@fields.depends(*BOM_CHANGES)
def explode_bom(self):
pool = Pool()
Uom = pool.get('product.uom')
if not (self.bom and self.product and self.uom):
return
factor = self.bom.compute_factor(self.product, self.quantity or 0,
self.uom)
inputs = []
for input_ in self.bom.inputs:
if input_.product.producible:
for input_ in input_.product.template.boms.inputs:
quantity = input_.compute_quantity(factor)
move = self._explode_move_values(
self.picking_location, self.location, self.company,
input_, quantity)
if move:
inputs.append(move)
quantity = Uom.compute_qty(input_.uom, quantity,
input_.product.default_uom, round=False)
else:
quantity = input_.compute_quantity(factor)
move = self._explode_move_values(
self.picking_location, self.location, self.company,
input_, quantity)
if move:
inputs.append(move)
quantity = Uom.compute_qty(input_.uom, quantity,
input_.product.default_uom, round=False)
self.inputs = inputs
outputs = []
for output in self.bom.outputs:
quantity = output.compute_quantity(factor)
move = self._explode_move_values(
self.location, self.output_location, self.company, output,
quantity)
if move:
move.unit_price = Decimal(0)
outputs.append(move)
self.outputs = outputs

34
sale.py
View File

@@ -1,7 +1,10 @@
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"
@@ -14,6 +17,8 @@ class Sale(metaclass=PoolMeta):
super(Sale, cls).__setup__()
cls._buttons.update({
'add_pizza': {},
'kitchen': {},
'bar': {}
})
@classmethod
@@ -23,10 +28,32 @@ class Sale(metaclass=PoolMeta):
@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
#@ModelView.button_action('sale_fast_food.report_customer_order')
def kitchen(cls, records):
pool = Pool()
Report = pool.get('sale.customer_order', type='report')
context = Transaction().context
#customer_order = Report.execute(records, context)
data = {"content": "Esto es una pruebas"}
url = "http://localhost:5000/print_ticket"
response = requests.post(url, json=json.dumps(data), headers={'Content-Type': 'application/json'})
#response = requests.post(url, json={"content": customer_order[1]})
raise UserError(str(response))
if response.status_code == 200:
message = response.Text
raise UserError(str(message))
class Line(metaclass=PoolMeta):
"Sale Line Fast Food"
@@ -44,3 +71,10 @@ class Line(metaclass=PoolMeta):
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

View File

@@ -22,4 +22,20 @@
<field name="string">Add Pizza</field>
<field name="model" search="[('model', '=', 'sale.sale')]"/>
</record>
<record model="ir.model.button" id="sale_customer_order_button">
<field name="name">kitchen</field>
<field name="string">Kitchen</field>
<field name="model" search="[('model', '=', 'sale.sale')]"/>
</record>
<record model="ir.action.report" id="report_customer_order">
<field name="name">Customer Order</field>
<field name="model">sale.sale</field>
<field name="report_name">sale.customer_order</field>
<field name="report">sale_fast_food/report/customer_order.fodt</field>
</record>
<record model="ir.action.keyword" id="report_customer_order_keyword">
<field name="keyword">form_print</field>
<field name="model">sale.sale,-1</field>
<field name="action" ref="report_customer_order"/>
</record>
</tryton>

View File

@@ -4,6 +4,9 @@ depends:
ir
product
sale
sale_supply_production
production
account_invoice
xml:
product.xml
sale.xml

View File

@@ -7,5 +7,8 @@
<field name="pizza"/>
<label name="pizza_topping"/>
<field name="pizza_topping"/>
<newline/>
<label name="boms"/>
<field name="boms" xexpand="1"/>
</xpath>
</data>

View File

@@ -3,8 +3,10 @@
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//field[@name='reference']" position="after">
<newline/>
<label name="pizza_number"/>
<field name="pizza_number"/>
<button name="add_pizza"/>
<button name="kitchen"/>
</xpath>
</data>