odoo/addons/sandwich/sandwich.py

99 lines
3.1 KiB
Python

import time
from osv import osv, fields
import pooler
#
# Type of type of products (food, drink, lsd, other...)
#
class sandwich_product_type(osv.osv):
_name = 'sandwich.product.type'
_columns = {
'name': fields.char('Name of the type', size=20, required=True),
'description': fields.char('Type\'s description', size=255),
}
sandwich_product_type()
#
# Type Of Sandwich
#
class sandwich_product(osv.osv):
_name = 'sandwich.product'
_columns = {
'name': fields.char('Product name', size=50, required=True),
'price': fields.float('Product price'),
'product_type_id': fields.many2one('sandwich.product.type','Type of product'),
}
sandwich_product()
#
# Sandwich command
#
class sandwich_order(osv.osv):
_name = 'sandwich.order'
_columns = {
'name': fields.char('Name', size=50, required=True),
'date': fields.date('Order date'),
'order_lines': fields.one2many('sandwich.order.line','order_id','Order lines'),
'note': fields.text('Notes'),
'partner': fields.many2one('res.partner','Partner', required=True),
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d'),
}
sandwich_order()
#
# Sandwich lines of command
#
class sandwich_order_line(osv.osv):
_name = 'sandwich.order.line'
_columns = {
'name': fields.char('Description', size=50, required=True),
'product_id': fields.many2one('sandwich.product', 'Product'),
'user_id': fields.many2one('res.users', 'User id', required=True),
'quantity': fields.integer('Quantity', required=True),
'order_id': fields.many2one('sandwich.order', 'Order'),
'date': fields.date('Date'),
'product_type_id':fields.many2one('sandwich.product.type','Product type',change_default=True),
}
_defaults = {
'date': lambda *a: time.strftime('%Y-%m-%d'),
'user_id': lambda self, cr, uid, c: uid,
'quantity': lambda *a: 1
}
def onchange_user_id(self, cr, uid, id, user_id, product_type_id, context={}, *args):
# print id, user_id, product_type_id, context
if (not user_id) or (not product_type_id):
return {}
cr.execute('SELECT product_id,name,quantity FROM sandwich_order_line WHERE user_id=%d AND product_type_id=%d ORDER BY date DESC LIMIT 1', (user_id, product_type_id))
res = cr.dictfetchone()
if res:
return {'value': res}
# else
return {'value': {'product_id': False, 'name': '', 'quantity': 1}}
def onchange_product_type_id(self, cr, uid, id, user_id, product_type_id, context={}):
if (not product_type_id) or (not user_id):
return {}
cr.execute('SELECT product_id,name,quantity FROM sandwich_order_line WHERE user_id=%d AND product_type_id=%d ORDER BY date DESC LIMIT 1', (user_id, product_type_id))
res = cr.dictfetchone()
if res:
return {'value': res}
# else
return {'value': {'product_id': False, 'name': '', 'quantity': 1}}
def onchange_product_id(self, cr, uid, id, product_id, context={}):
if not product_id:
return {}
res = pooler.get_pool(cr.dbname).get('sandwich.product').read(cr, uid, [ product_id ], ['name','product_type_id'])
return {'value': res}
#return {'value': {'name': name or product_id.name, 'product_type_id': product_id.product_type_id}}
sandwich_order_line()