summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorVir (Open ERP) <vir@tinyerp.com>2010-01-18 18:22:11 +0530
committerVir (Open ERP) <vir@tinyerp.com>2010-01-18 18:22:11 +0530
commite01abccc4c869f697488301ab8aa8ba7180532d1 (patch)
tree6ba2485174e869491a6ea4db66eb5d624a9e7578 /addons
parent120bb1bda71a4f039ecc2a2613828443351659d5 (diff)
[ADD] lunch : Moduled added from trunk extra addons with new menu structure
bzr revid: vir@tinyerp.com-20100118125211-r3nfcsikheh76tkj
Diffstat (limited to 'addons')
-rw-r--r--addons/lunch/__init__.py26
-rw-r--r--addons/lunch/__terp__.py40
-rw-r--r--addons/lunch/i18n/fr_BE.po347
-rw-r--r--addons/lunch/lunch.py191
-rw-r--r--addons/lunch/lunch_demo.xml20
-rw-r--r--addons/lunch/lunch_report.xml13
-rw-r--r--addons/lunch/lunch_view.xml235
-rw-r--r--addons/lunch/lunch_wizard.xml25
-rw-r--r--addons/lunch/report/__init__.py24
-rw-r--r--addons/lunch/report/order.py46
-rw-r--r--addons/lunch/report/order.rml132
-rw-r--r--addons/lunch/security/ir.model.access.csv7
-rw-r--r--addons/lunch/wizard/__init__.py26
-rw-r--r--addons/lunch/wizard/cancel.py53
-rw-r--r--addons/lunch/wizard/confirm.py60
-rw-r--r--addons/lunch/wizard/reset_box.py76
16 files changed, 1321 insertions, 0 deletions
diff --git a/addons/lunch/__init__.py b/addons/lunch/__init__.py
new file mode 100644
index 00000000000..b94760a67fb
--- /dev/null
+++ b/addons/lunch/__init__.py
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import lunch
+import wizard
+import report
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/__terp__.py b/addons/lunch/__terp__.py
new file mode 100644
index 00000000000..bc7dfcbfef7
--- /dev/null
+++ b/addons/lunch/__terp__.py
@@ -0,0 +1,40 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+{
+ "name": "Lunch Module",
+ "author": "Tiny",
+ "version": "0.1",
+ "depends": ["base"],
+ "category" : "Generic Modules/Others",
+ "init_xml": [],
+ "update_xml": [
+ 'security/ir.model.access.csv',
+ 'lunch_wizard.xml',
+ 'lunch_view.xml',
+ 'lunch_report.xml',
+ #'process/lunch_process.xml'
+ ],
+ "demo_xml": ['lunch_demo.xml'],
+ "installable": True,
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/i18n/fr_BE.po b/addons/lunch/i18n/fr_BE.po
new file mode 100644
index 00000000000..03beb8e85a4
--- /dev/null
+++ b/addons/lunch/i18n/fr_BE.po
@@ -0,0 +1,347 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+# * lunch
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.6\n"
+"Report-Msgid-Bugs-To: support@openerp.com\n"
+"POT-Creation-Date: 2009-11-26 04:56:11+0000\n"
+"PO-Revision-Date: 2009-11-26 04:56:11+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: lunch
+#: model:ir.model,name:lunch.model_lunch_category
+#: view:lunch.category:0
+#: field:lunch.product,category_id:0
+msgid "Category"
+msgstr ""
+
+#. module: lunch
+#: wizard_view:lunch.cashbox.clean,init:0
+msgid "Reset cashbox"
+msgstr ""
+
+#. module: lunch
+#: selection:lunch.order,state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: lunch
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: lunch
+#: model:ir.model,name:lunch.model_lunch_cashmove
+msgid "lunch.cashmove"
+msgstr ""
+
+#. module: lunch
+#: wizard_view:lunch.order.cancel,init:0
+msgid "Are you sure you want to cancel this order ?"
+msgstr ""
+
+#. module: lunch
+#: model:ir.module.module,shortdesc:lunch.module_meta_information
+msgid "Lunch Module"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch_cashmove_form
+msgid "Cash Moves"
+msgstr ""
+
+#. module: lunch
+#: rml:lunch.order:0
+msgid "Printed at :"
+msgstr ""
+
+#. module: lunch
+#: model:ir.model,name:lunch.model_lunch_product
+msgid "lunch.product"
+msgstr ""
+
+#. module: lunch
+#: wizard_view:lunch.cashbox.clean,init:0
+msgid "Are you sure you want to reset this cashbox ?"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.order,state:0
+msgid "State"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch_cashbox_form
+#: view:lunch.cashbox:0
+msgid "CashBox"
+msgstr ""
+
+#. module: lunch
+#: selection:lunch.order,state:0
+msgid "Draft"
+msgstr ""
+
+#. module: lunch
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashmove,user_cashmove:0
+#: field:lunch.order,user_id:0
+#: field:report.lunch.amount,user_id:0
+msgid "User Name"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch_report_amount_tree
+#: view:report.lunch.amount:0
+msgid "Box Amount by User"
+msgstr ""
+
+#. module: lunch
+#: view:report.lunch.amount:0
+msgid "Total box"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.act_window,name:lunch.action_lunch_product_form
+#: field:lunch.order,product:0
+msgid "Product"
+msgstr ""
+
+#. module: lunch
+#: rml:lunch.order:0
+#: field:lunch.product,description:0
+msgid "Description"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.order,price:0
+#: field:lunch.product,price:0
+msgid "Price"
+msgstr ""
+
+#. module: lunch
+#: wizard_button:lunch.order.cancel,init,end:0
+msgid "No"
+msgstr ""
+
+#. module: lunch
+#: view:lunch.category:0
+#: rml:lunch.order:0
+#: view:lunch.order:0
+msgid "Order"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashmove,create_date:0
+msgid "Created date"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch
+msgid "Lunch"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.order,descript:0
+msgid "Description Order"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.wizard,name:lunch.lunch_order_confirm
+#: wizard_button:lunch.order.confirm,init,go:0
+msgid "Confirm Order"
+msgstr ""
+
+#. module: lunch
+#: wizard_view:lunch.order.confirm,init:0
+msgid "Orders Confirmation"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashmove,active:0
+#: field:lunch.product,active:0
+msgid "Active"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.act_window,name:lunch.action_lunch_order_day_form
+msgid " Order of the day"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch_category_root
+msgid "Configuration"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.wizard,name:lunch.wizard_id_cancel
+#: wizard_view:lunch.order.cancel,init:0
+msgid "Cancel Order"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.act_window,name:lunch.action_lunch_cashbox_form
+msgid " CashBox "
+msgstr ""
+
+#. module: lunch
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.act_window,name:lunch.action_report_lunch_amount_tree
+msgid "Lunch amount"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashbox,name:0
+#: field:lunch.cashmove,name:0
+#: field:lunch.category,name:0
+#: rml:lunch.order:0
+#: field:lunch.product,name:0
+msgid "Name"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.act_window,name:lunch.action_lunch_category_form
+msgid " Category of product "
+msgstr ""
+
+#. module: lunch
+#: view:lunch.cashmove:0
+msgid "Total amount"
+msgstr ""
+
+#. module: lunch
+#: model:ir.model,name:lunch.model_lunch_cashbox
+msgid "lunch.cashbox"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.order,date:0
+msgid "Date"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashmove,amount:0
+#: field:report.lunch.amount,amount:0
+msgid "Amount"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch_product_form
+#: view:lunch.product:0
+msgid "Products"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch_category_form
+msgid "Category of product"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.report.xml,name:lunch.report_lunch_order
+msgid "Print Order"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_lunch_order_day_form
+msgid "Order of the day"
+msgstr ""
+
+#. module: lunch
+#: model:ir.model,name:lunch.model_report_lunch_amount
+msgid "Amount available by user and box"
+msgstr ""
+
+#. module: lunch
+#: view:lunch.category:0
+msgid "Category related to Products"
+msgstr ""
+
+#. module: lunch
+#: model:ir.model,name:lunch.model_lunch_order
+msgid "lunch.order"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashbox,sum_remain:0
+msgid "Remained Total"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.act_window,name:lunch.action_lunch_order_form
+#: model:ir.ui.menu,name:lunch.menu_lunch_order_form
+msgid "Make order"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.wizard,name:lunch.wizard_clean_cashbox
+msgid "Set CashBox to Zero"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashmove,box:0
+#: field:report.lunch.amount,box:0
+msgid "Box Name"
+msgstr ""
+
+#. module: lunch
+#: field:lunch.cashbox,manager:0
+msgid "Manager"
+msgstr ""
+
+#. module: lunch
+#: rml:lunch.order:0
+msgid "Unit Price"
+msgstr ""
+
+#. module: lunch
+#: wizard_field:lunch.order.confirm,init,confirm_cashbox:0
+msgid "Name of box"
+msgstr ""
+
+#. module: lunch
+#: view:lunch.order:0
+msgid "Total price"
+msgstr ""
+
+#. module: lunch
+#: wizard_button:lunch.cashbox.clean,init,end:0
+#: wizard_button:lunch.order.confirm,init,end:0
+msgid "Cancel"
+msgstr ""
+
+#. module: lunch
+#: wizard_button:lunch.cashbox.clean,init,zero:0
+msgid "Set to Zero"
+msgstr ""
+
+#. module: lunch
+#: wizard_button:lunch.order.cancel,init,cancel:0
+msgid "Yes"
+msgstr ""
+
+#. module: lunch
+#: model:ir.ui.menu,name:lunch.menu_tools
+msgid "Tools"
+msgstr ""
+
+#. module: lunch
+#: model:ir.actions.act_window,name:lunch.action_lunch_cashmove_form
+#: view:lunch.cashmove:0
+#: field:lunch.order,cashmove:0
+msgid "CashMove"
+msgstr ""
+
diff --git a/addons/lunch/lunch.py b/addons/lunch/lunch.py
new file mode 100644
index 00000000000..7eb6d858a3e
--- /dev/null
+++ b/addons/lunch/lunch.py
@@ -0,0 +1,191 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import osv, fields
+import time
+
+class lunch_category(osv.osv):
+ _name = 'lunch.category'
+ _description = "Category"
+
+ _columns = {
+ 'name': fields.char('Name', required=True, size=50),
+ }
+
+ _order = 'name'
+
+lunch_category()
+
+class lunch_product(osv.osv):
+ _name = 'lunch.product'
+
+ def _category_name_get(self, cr, uid, context={}):
+ obj = self.pool.get('lunch.category')
+ cat_ids= obj.search(cr,uid,[])
+ res = obj.read(cr,uid,cat_ids,['name', 'category'])
+ return [(str(r['id']), r['name']) for r in res]+ [('0','')]
+
+ _columns = {
+ 'name': fields.char('Name', size=50, required=True),
+ 'category_id': fields.selection(_category_name_get, 'Category', size=32),
+ 'description': fields.char('Description', size=128, required=False),
+ 'price': fields.float('Price', digits=(16,2)),
+ 'active': fields.boolean('Active'),
+ }
+
+ _defaults = {
+ 'active': lambda *a : True,
+ }
+
+lunch_product()
+
+class lunch_cashbox(osv.osv):
+ _name='lunch.cashbox'
+
+ def amount_available(self, cr, uid, ids, field_name, arg, context):
+ cr.execute("SELECT box,sum(amount) from lunch_cashmove where active = 't' group by box")
+ r = dict(cr.fetchall())
+ for i in ids :
+ r.setdefault(i,0)
+ return r
+
+ _columns={
+ 'manager':fields.many2one('res.users','Manager'),
+ 'name':fields.char('Name',size=30,required=True, unique = True),
+ 'sum_remain': fields.function(amount_available, method=True, string='Remained Total'),
+ }
+
+lunch_cashbox()
+
+
+
+
+class lunch_cashmove(osv.osv):
+ _name= 'lunch.cashmove'
+
+ _columns={
+ 'name': fields.char('Name',size=128),
+ 'user_cashmove': fields.many2one('res.users','User Name', required=True),
+ 'amount': fields.float('Amount', digits=(16,2)),
+ 'box':fields.many2one('lunch.cashbox','Box Name',size=30,required=True),
+ 'active':fields.boolean('Active'),
+ 'create_date': fields.datetime('Created date', readonly=True),
+ }
+
+ _defaults={
+ 'active': lambda *a: True,
+ }
+
+lunch_cashmove()
+
+
+
+class lunch_order(osv.osv):
+ _name='lunch.order'
+ _rec_name= "user_id"
+
+ def _price_get(self, cr, uid, ids, name, args, context=None):
+ res = {}
+ for o in self.browse(cr, uid, ids):
+ res[o.id] = o.product.price
+ return res
+
+ _columns={
+ 'user_id': fields.many2one('res.users','User Name', required=True,
+ readonly=True, states={'draft':[('readonly',False)]}),
+ 'product':fields.many2one('lunch.product','Product', required=True,
+ readonly=True, states={'draft':[('readonly',False)]}, change_default=True),
+ 'date': fields.date('Date',readonly=True,states={'draft':[('readonly',False)]}),
+ 'cashmove':fields.many2one('lunch.cashmove', 'CashMove' , readonly=True ),
+ 'descript':fields.char('Description Order', readonly=True, size=50,
+ states={'draft':[('readonly',False)]}),
+ 'state': fields.selection([('draft','Draft'), ('confirmed','Confirmed'),],
+ 'State', readonly=True, select=True),
+ 'price': fields.function(_price_get, method=True, string="Price"),
+ }
+
+ _defaults={
+ 'user_id': lambda self,cr,uid,context: uid,
+ 'date': lambda self,cr,uid,context: time.strftime('%Y-%m-%d'),
+ 'state': lambda self,cr,uid,context: 'draft',
+ }
+
+ def confirm(self,cr,uid,ids,box,context):
+ cashmove_ref= self.pool.get('lunch.cashmove')
+ for order in self.browse(cr,uid,ids):
+ if order.state == 'confirmed':
+ continue
+ new_id= cashmove_ref.create(cr,uid,{'name': order.product.name+' order',
+ 'amount':-order.product.price,
+ 'user_cashmove':order.user_id.id,
+ 'box':box,
+ 'active':True,
+ })
+ self.write(cr,uid,[order.id],{'cashmove':new_id, 'state':'confirmed'})
+ return {}
+
+ def lunch_order_cancel(self,cr,uid,ids,context):
+ orders= self.browse(cr,uid,ids)
+ for order in orders:
+ if not order.cashmove:
+ continue
+ self.pool.get('lunch.cashmove').unlink(cr, uid, [order.cashmove.id])
+ self.write(cr,uid,ids,{'state':'draft'})
+ return {}
+
+ def onchange_product(self, cr, uid, ids, product):
+ if not product:
+ return {'value': {'price': 0.0}}
+ price = self.pool.get('lunch.product').read(cr, uid, product, ['price'])['price']
+ return {'value': {'price': price}}
+
+lunch_order()
+
+class report_lunch_amount(osv.osv):
+ _name='report.lunch.amount'
+ _description = "Amount available by user and box"
+ _auto = False
+ _rec_name= "user"
+
+ _columns = {
+ 'user_id': fields.many2one('res.users','User Name',readonly=True),
+ 'amount': fields.float('Amount', readonly=True, digits=(16,2)),
+ 'box':fields.many2one('lunch.cashbox','Box Name',size=30,readonly=True),
+ }
+
+ def init(self, cr):
+ cr.execute("""
+ create or replace view report_lunch_amount as (
+ select
+ min(lc.id) as id,
+ lc.user_cashmove as user_id,
+ sum(amount) as amount,
+ lc.box as box
+ from
+ lunch_cashmove lc
+ where
+ active = 't'
+ group by lc.user_cashmove, lc.box
+ )""")
+
+report_lunch_amount()
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/lunch_demo.xml b/addons/lunch/lunch_demo.xml
new file mode 100644
index 00000000000..91be819d430
--- /dev/null
+++ b/addons/lunch/lunch_demo.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0"?>
+<openerp>
+ <data noupdate="1">
+
+ <record model="lunch.category" id="categ_sandwich">
+ <field name="name">Sandwich</field>
+ </record>
+
+ <record model="lunch.product" id="product_club">
+ <field name="name">Club</field>
+ <field name="category_id" eval="str(ref('categ_sandwich'))"/>
+ <field name="price">2.75</field>
+ </record>
+
+ <record model="lunch.cashbox" id="cashbox_cashbox">
+ <field name="name">Cashbox</field>
+ <field name="manager" ref="base.user_admin"/>
+ </record>
+ </data>
+</openerp>
diff --git a/addons/lunch/lunch_report.xml b/addons/lunch/lunch_report.xml
new file mode 100644
index 00000000000..6503c99a6ea
--- /dev/null
+++ b/addons/lunch/lunch_report.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<openerp>
+ <data>
+ <report
+ id="report_lunch_order"
+ string="Print Order"
+ model="lunch.order"
+ name="lunch.order"
+ rml="lunch/report/order.rml"
+ auto="False"
+ />
+ </data>
+</openerp>
diff --git a/addons/lunch/lunch_view.xml b/addons/lunch/lunch_view.xml
new file mode 100644
index 00000000000..a06e0d89b4f
--- /dev/null
+++ b/addons/lunch/lunch_view.xml
@@ -0,0 +1,235 @@
+<?xml version="1.0"?>
+<openerp>
+ <data>
+
+ <menuitem name="Tools" id="menu_tools" icon="STOCK_PREFERENCES"/>
+ <menuitem name="Lunch Order" parent="menu_tools" id="menu_lunch" sequence="1"/>
+ <menuitem name="Reporting" parent="menu_tools" id="menu_lunch_reporting" sequence="4"/>
+ <menuitem name="Lunch Orders" parent="menu_lunch_reporting" id="menu_lunch_reporting_order" sequence="1"/>
+ <menuitem name="Configuration" parent="menu_tools" id="menu_lunch_category_root" sequence="5"/>
+
+ <record model="ir.ui.view" id="view_lunch_order_form">
+ <field name="name">Order</field>
+ <field name="model">lunch.order</field>
+ <field name="arch" type="xml">
+ <form string="Order">
+ <group colspan="2" col="4">
+ <field name="user_id" select="1"/>
+ <field name="date" select="1"/>
+ <field name="product" select="1" on_change="onchange_product(product)"/>
+ <field name="price"/>
+ <field name="descript"/>
+ <field name="cashmove"/>
+ <field name="state" select="2"/>
+ </group>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_lunch_order_tree">
+ <field name="name">Order</field>
+ <field name="model">lunch.order</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Order">
+ <field name="user_id"/>
+ <field name="product"/>
+ <field name="date"/>
+ <field name="cashmove"/>
+ <field name="state"/>
+ <field name="descript"/>
+ <field name="price" sum="Total price"/>
+ </tree>
+ </field>
+ </record>
+
+
+
+ <record model="ir.actions.act_window" id="action_lunch_order_form">
+ <field name="name">Orders</field>
+ <field name="res_model">lunch.order</field>
+ <field name="view_mode">form,tree</field>
+ </record>
+ <menuitem name="Order" parent="menu_lunch" id="menu_lunch_order_form" action="action_lunch_order_form"/>
+
+<!-- <record model="ir.actions.act_window" id="action_lunch_order_day_form">-->
+<!-- <field name="name"> Order of the day</field>-->
+<!-- <field name="res_model">lunch.order</field>-->
+<!-- <field name="domain">[('date','=',time.strftime('%Y-%m-%d'))]</field>-->
+<!---->
+<!-- </record>-->
+<!-- <menuitem name="Order of the day" parent="menu_lunch_order_form" id="menu_lunch_order_day_form" action="action_lunch_order_day_form"/>-->
+
+ <record model="ir.ui.view" id="view_lunch_cashbox_form">
+ <field name="name">CashBox</field>
+ <field name="model">lunch.cashbox</field>
+ <field name="arch" type="xml">
+ <form string="CashBox">
+ <field name="name" select="1"/>
+ <field name="manager" select="1"/>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_lunch_cashbox_tree">
+ <field name="name">CashBox</field>
+ <field name="model">lunch.cashbox</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="CashBox" colors="red:sum_remain&lt;=0">
+ <field name="name" select="1"/>
+ <field name="manager" select="1"/>
+ <field name="sum_remain" select="1"/>
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="action_lunch_cashbox_form">
+ <field name="name"> CashBox </field>
+ <field name="res_model">lunch.cashbox</field>
+ </record>
+ <menuitem name="CashBox" parent="menu_lunch_category_root" id="menu_lunch_cashbox_form" action="action_lunch_cashbox_form"/>
+
+ <record model="ir.ui.view" id="view_lunch_cashmove_form">
+ <field name="name">CashMove</field>
+ <field name="model">lunch.cashmove</field>
+ <field name="arch" type="xml">
+ <form string="CashMove">
+ <field name="name" select="1"/>
+ <field name="user_cashmove" select="1"/>
+ <field name="amount" select="2"/>
+ <field name="box" select="1"/>
+ <field name="create_date" select="1"/>
+ <field name="active" select="1"/>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_lunch_cashmove_tree">
+ <field name="name">CashMove</field>
+ <field name="model">lunch.cashmove</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="CashMove" editable="top">
+ <field name="name" select="1" required="1"/>
+ <field name="user_cashmove" select="1"/>
+ <field name="amount" select="1" sum="Total amount"/>
+ <field name="box" select="1"/>
+ <field name="create_date"/>
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="action_lunch_cashmove_form">
+ <field name="name">CashMove</field>
+ <field name="res_model">lunch.cashmove</field>
+ </record>
+
+ <menuitem name="Cash Moves" parent="menu_lunch" id="menu_lunch_cashmove_form" action="action_lunch_cashmove_form"/>
+
+ <record model="ir.ui.view" id="view_lunch_category_form">
+ <field name="name"> Category of product </field>
+ <field name="model">lunch.category</field>
+ <field name="arch" type="xml">
+ <form string="Category">
+ <separator string="Category related to Products" colspan="4"/>
+ <field name="name" select="1"/>
+ </form>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_lunch_category_tree">
+ <field name="name">Category</field>
+ <field name="model">lunch.category</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Order">
+ <field name="name" select="1"/>
+ </tree>
+ </field>
+ </record>
+
+
+ <record model="ir.actions.act_window" id="action_lunch_category_form">
+ <field name="name"> Category of product </field>
+ <field name="res_model">lunch.category</field>
+ </record>
+
+ <record model="ir.ui.view" id="view_lunch_product_form">
+ <field name="name">Products</field>
+ <field name="type">form</field>
+ <field name="model">lunch.product</field>
+ <field name="arch" type="xml">
+ <form string="Products">
+ <field name="name" select="1"/>
+ <field name="category_id" select="1"/>
+ <field name="description" select="1"/>
+ <field name="price" select="1"/>
+ <field name="active" select="1"/>
+ </form>
+ </field>
+ </record>
+
+
+ <record model="ir.ui.view" id="view_lunch_product_tree">
+ <field name="name">Products</field>
+ <field name="model">lunch.product</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Products">
+ <field name="name" select="1"/>
+ <field name="category_id" select="1"/>
+ <field name="description" select="1"/>
+ <field name="price" select="1"/>
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.actions.act_window" id="action_lunch_product_form">
+ <field name="name">Product</field>
+ <field name="res_model">lunch.product</field>
+ </record>
+
+ <menuitem name="Tools/Lunch/Configuration/Products" id="menu_lunch_product_form" action="action_lunch_product_form" sequence="1"/>
+ <menuitem name="Products" parent="menu_lunch_category_root" id="menu_lunch_product_form" action="action_lunch_product_form" sequence="2"/>
+ <menuitem name="Category of product" parent="menu_lunch_category_root" id="menu_lunch_category_form" action="action_lunch_category_form" sequence="1"/>
+
+
+ <record model="ir.ui.view" id="view_report_lunch_amount_tree">
+ <field name="name">Lunch amount</field>
+ <field name="model">report.lunch.amount</field>
+ <field name="type">tree</field>
+ <field name="arch" type="xml">
+ <tree string="Box Amount by User">
+ <field name="box" select="1"/>
+ <field name="user_id" select="1"/>
+ <field name="amount" select="1" sum="Total box" />
+ </tree>
+ </field>
+ </record>
+
+ <record model="ir.ui.view" id="view_report_lunch_amount_form">
+ <field name="name">Lunch amount</field>
+ <field name="model">report.lunch.amount</field>
+ <field name="type">form</field>
+ <field name="arch" type="xml">
+ <form string="Box Amount by User">
+ <field name="user_id" select="1"/>
+ <field name="box" select="1"/>
+ <field name="amount" select="1"/>
+ </form>
+ </field>
+ </record>
+
+
+ <record model="ir.actions.act_window" id="action_report_lunch_amount_tree">
+ <field name="name">Lunch amount</field>
+ <field name="res_model">report.lunch.amount</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">tree,form</field>
+ </record>
+ <menuitem name="Cash Position by User" parent="menu_lunch_reporting_order" action="action_report_lunch_amount_tree" id="menu_lunch_report_amount_tree"/>
+ </data>
+</openerp>
+
+
diff --git a/addons/lunch/lunch_wizard.xml b/addons/lunch/lunch_wizard.xml
new file mode 100644
index 00000000000..0820ae7d80c
--- /dev/null
+++ b/addons/lunch/lunch_wizard.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" ?>
+<openerp>
+ <data>
+ <wizard
+ string="Confirm Order"
+ model="lunch.order"
+ name="lunch.order.confirm"
+ keyword="client_action_multi"
+ id="lunch_order_confirm"/>
+
+ <wizard
+ string="Cancel Order"
+ model="lunch.order"
+ name="lunch.order.cancel"
+ keyword="client_action_multi"
+ id="wizard_id_cancel"/>
+
+ <wizard
+ string="Set CashBox to Zero"
+ model="lunch.cashbox"
+ name="lunch.cashbox.clean"
+ keyword="client_action_multi"
+ id="wizard_clean_cashbox"/>
+ </data>
+</openerp>
diff --git a/addons/lunch/report/__init__.py b/addons/lunch/report/__init__.py
new file mode 100644
index 00000000000..acf05a0ca2a
--- /dev/null
+++ b/addons/lunch/report/__init__.py
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import order
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/report/order.py b/addons/lunch/report/order.py
new file mode 100644
index 00000000000..abb99ceb380
--- /dev/null
+++ b/addons/lunch/report/order.py
@@ -0,0 +1,46 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import time
+from report import report_sxw
+from osv import osv
+
+
+class order(report_sxw.rml_parse):
+
+ def sum_price(self, orders):
+ res = 0.0
+ for o in orders:
+ res += o.price
+ return res
+
+ def __init__(self, cr, uid, name, context):
+ super(order, self).__init__(cr, uid, name, context)
+
+ self.localcontext.update({
+ 'time': time,
+ 'sum_price': self.sum_price,
+ })
+
+report_sxw.report_sxw('report.lunch.order', 'lunch.order',
+ 'addons/lunch/report/order.rml',parser=order, header=False)
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/report/order.rml b/addons/lunch/report/order.rml
new file mode 100644
index 00000000000..a7bc1b32cdd
--- /dev/null
+++ b/addons/lunch/report/order.rml
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<document filename="test.pdf">
+ <template pageSize="(595.0,842.0)" title="Test" author="Martin Simon" allowSplitting="20">
+ <pageTemplate id="first">
+ <frame id="first" x1="34.0" y1="42.0" width="527" height="758"/>
+ </pageTemplate>
+ </template>
+ <stylesheet>
+ <blockTableStyle id="Standard_Outline">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ </blockTableStyle>
+ <blockTableStyle id="Tableau2">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ <lineStyle kind="GRID" colorName="black"/>
+ <blockBackground colorName="#e6e6e6" start="0,0" stop="0,0"/>
+ <blockBackground colorName="#e6e6e6" start="1,0" stop="1,0"/>
+ <blockBackground colorName="#e6e6e6" start="2,0" stop="2,0"/>
+ <blockBackground colorName="#e6e6e6" start="3,0" stop="3,0"/>
+ </blockTableStyle>
+ <blockTableStyle id="Tableau1">
+ <blockAlignment value="LEFT"/>
+ <blockValign value="TOP"/>
+ <lineStyle kind="GRID" colorName="black"/>
+ </blockTableStyle>
+ <initialize>
+ <paraStyle name="all" alignment="justify"/>
+ </initialize>
+ <paraStyle name="P1" fontName="Times-Roman" fontSize="15.0" leading="19"/>
+ <paraStyle name="P2" fontName="Times-Roman" fontSize="16.0" leading="20"/>
+ <paraStyle name="P3" fontName="Times-Roman"/>
+ <paraStyle name="P4" fontName="Times-Bold" fontSize="8.0" leading="10" alignment="CENTER"/>
+ <paraStyle name="P5" fontName="Times-BoldItalic" fontSize="9.0" leading="11" alignment="LEFT"/>
+ <paraStyle name="P6" fontName="Times-BoldItalic" fontSize="9.0" leading="11"/>
+ <paraStyle name="P7" fontName="Times-Italic" fontSize="9.0" leading="11" alignment="LEFT"/>
+ <paraStyle name="P8" fontName="Times-Roman" fontSize="9.0" leading="11" alignment="LEFT"/>
+ <paraStyle name="P9" fontName="Times-Roman" fontSize="9.0" leading="11"/>
+ <paraStyle name="P10" fontName="Times-Roman" fontSize="9.0" leading="11" alignment="RIGHT"/>
+ <paraStyle name="P11" fontName="Times-Roman" fontSize="9.0" leading="11" alignment="RIGHT"/>
+ <paraStyle name="P12" fontName="Times-BoldItalic" fontSize="6.0" leading="8"/>
+ <paraStyle name="P13" fontName="Times-Italic" fontSize="9.0" leading="11" alignment="LEFT"/>
+ <paraStyle name="P14" fontName="Times-Roman" fontSize="9.0" leading="11" alignment="RIGHT"/>
+ <paraStyle name="Standard" fontName="Times-Roman"/>
+ <paraStyle name="Text body" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="Heading" fontName="Helvetica" fontSize="14.0" leading="17" spaceBefore="12.0" spaceAfter="6.0"/>
+ <paraStyle name="List" fontName="Times-Roman" spaceBefore="0.0" spaceAfter="6.0"/>
+ <paraStyle name="Header" fontName="Times-Roman"/>
+ <paraStyle name="Footer" fontName="Times-Roman"/>
+ <paraStyle name="Table Contents" fontName="Times-Roman"/>
+ <paraStyle name="Table Heading" fontName="Times-Roman" alignment="CENTER"/>
+ <paraStyle name="Caption" fontName="Times-Roman" fontSize="12.0" leading="15" spaceBefore="6.0" spaceAfter="6.0"/>
+ <paraStyle name="Footnote" rightIndent="0.0" leftIndent="14.0" fontName="Times-Roman" fontSize="10.0" leading="13"/>
+ <paraStyle name="Index" fontName="Times-Roman"/>
+ </stylesheet>
+ <story>
+ <para style="P1">
+ <font face="Times-Roman">Printed at : [[time.strftime("%Hh%M")]]</font>
+ </para>
+ <para style="P2">
+ <font color="white"> </font>
+ </para>
+ <para style="P3">
+ <font color="white"> </font>
+ </para>
+ <blockTable colWidths="149.0,135.0,103.0,140.0" repeatRows="1" style="Tableau2">
+ <tr>
+ <td>
+ <para style="P4">Name</para>
+ </td>
+ <td>
+ <para style="P4">Order</para>
+ </td>
+ <td>
+ <para style="P4">Description</para>
+ </td>
+ <td>
+ <para style="P4">Unit Price</para>
+ </td>
+ </tr>
+ </blockTable>
+ <section>
+ <para style="P5">
+ <font color="white"> </font>
+ </para>
+ </section>
+ <blockTable colWidths="148.0,135.0,103.0,140.0" style="Tableau1">
+ <tr>
+ <td>
+ <para style="P7">[[repeatIn(objects, 'o') ]]</para>
+ <para style="P7">[[ o.user_id.name ]]</para>
+ </td>
+ <td>
+ <para style="P8">[[o.product.name ]]</para>
+ </td>
+ <td>
+ <para style="P9">[[ o.descript ]]</para>
+ <para style="P10">
+ <font color="white"> </font>
+ </para>
+ </td>
+ <td>
+ <para style="P14">[['%.2f' % o.price ]]</para>
+ </td>
+ </tr>
+ <tr>
+ <td>
+ <para style="P9">
+ <font color="white"> </font>
+ </para>
+ </td>
+ <td>
+ <para style="P12">
+ <font color="white"> </font>
+ </para>
+ </td>
+ <td>
+ <para style="P9">
+ <font color="white"> </font>
+ </para>
+ </td>
+ <td>
+ <para style="P11">[[ '%.2f' % sum_price(objects) ]]</para>
+ </td>
+ </tr>
+ </blockTable>
+ <para style="P6">
+ <font color="white"> </font>
+ </para>
+ </story>
+</document>
+
diff --git a/addons/lunch/security/ir.model.access.csv b/addons/lunch/security/ir.model.access.csv
new file mode 100644
index 00000000000..43490780c36
--- /dev/null
+++ b/addons/lunch/security/ir.model.access.csv
@@ -0,0 +1,7 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_lunch_category","lunch.category","model_lunch_category",base.group_user,1,1,1,1
+"access_lunch_product","lunch.product","model_lunch_product",base.group_user,1,1,1,1
+"access_lunch_cashbox","lunch.cashbox","model_lunch_cashbox",base.group_user,1,1,1,1
+"access_lunch_cashmove","lunch.cashmove","model_lunch_cashmove",base.group_user,1,1,1,1
+"access_lunch_order","lunch.order","model_lunch_order",base.group_user,1,1,1,1
+"access_report_lunch_amount","report.lunch.amount","model_report_lunch_amount",base.group_user,1,1,1,1 \ No newline at end of file
diff --git a/addons/lunch/wizard/__init__.py b/addons/lunch/wizard/__init__.py
new file mode 100644
index 00000000000..e290a2e933c
--- /dev/null
+++ b/addons/lunch/wizard/__init__.py
@@ -0,0 +1,26 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import confirm
+import cancel
+import reset_box
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/wizard/cancel.py b/addons/lunch/wizard/cancel.py
new file mode 100644
index 00000000000..1acc1535a90
--- /dev/null
+++ b/addons/lunch/wizard/cancel.py
@@ -0,0 +1,53 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import wizard
+import netsvc
+import ir
+import pooler
+
+cancel_form = """<?xml version="1.0"?>
+<form string="Cancel Order">
+ <label string="Are you sure you want to cancel this order ?"/>
+</form>"""
+
+
+cancel_fields = {
+}
+
+def _cancel(self,cr,uid,data,context):
+ return pooler.get_pool(cr.dbname).get('lunch.order').lunch_order_cancel(cr,uid,data['ids'],context)
+
+class order_cancel(wizard.interface):
+ states = {
+ 'init': {
+ 'actions': [],
+ 'result': {'type':'form', 'arch':cancel_form, 'fields':cancel_fields, 'state':[('end','No'),('cancel','Yes')]}
+ },
+ 'cancel': {
+ 'actions': [_cancel],
+ 'result': {'type':'state', 'state':'end'}
+ }
+ }
+order_cancel('lunch.order.cancel')
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/wizard/confirm.py b/addons/lunch/wizard/confirm.py
new file mode 100644
index 00000000000..64891098349
--- /dev/null
+++ b/addons/lunch/wizard/confirm.py
@@ -0,0 +1,60 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import wizard
+import netsvc
+import ir
+import pooler
+
+confirm_order_form = """<?xml version="1.0"?>
+<form title="Confirm">
+ <separator string="Orders Confirmation" colspan="4"/>
+ <field name="confirm_cashbox"/>
+ <newline/>
+</form>
+"""
+
+confirm_order_fields = {
+ 'confirm_cashbox': {'string':'Name of box', 'type':'many2one', 'required':True, 'relation':'lunch.cashbox' },
+}
+
+def _confirm(self,cr,uid,data,context):
+ pool= pooler.get_pool(cr.dbname)
+ order_ref = pool.get('lunch.order')
+ order_ref.confirm(cr,uid,data['ids'],data['form']['confirm_cashbox'],context)
+ return {}
+
+class order_confirm(wizard.interface):
+ states = {
+ 'init': {
+ 'action':[],
+ 'result':{'type' : 'form', 'arch' : confirm_order_form, 'fields' : confirm_order_fields, 'state' : [('end', 'Cancel'),('go', 'Confirm Order') ]},
+ },
+ 'go' : {
+ 'actions' : [_confirm],
+ 'result' : {'type' : 'state', 'state' : 'end'}
+ },
+ }
+order_confirm('lunch.order.confirm')
+
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+
diff --git a/addons/lunch/wizard/reset_box.py b/addons/lunch/wizard/reset_box.py
new file mode 100644
index 00000000000..83999fc3ba0
--- /dev/null
+++ b/addons/lunch/wizard/reset_box.py
@@ -0,0 +1,76 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>).
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU Affero General Public License as
+# published by the Free Software Foundation, either version 3 of the
+# License, or (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU Affero General Public License for more details.
+#
+# You should have received a copy of the GNU Affero General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import wizard
+import netsvc
+import ir
+import pooler
+
+set_to_zero_form = """<?xml version="1.0"?>
+<form string="Reset cashbox">
+ <label string="Are you sure you want to reset this cashbox ?"/>
+</form>"""
+
+
+
+confirm_setting_zero_fields = {}
+
+def _set_to_zero(self,cr,uid,data,context):
+ pool= pooler.get_pool(cr.dbname)
+ cashmove_ref = pool.get('lunch.cashmove')
+ cr.execute("select user_cashmove, box,sum(amount) from lunch_cashmove where active= 't' and box in (%s) group by user_cashmove, box"%','.join(map(str,data['ids'])))
+ res= cr.fetchall()
+ cr.execute("update lunch_cashmove set active = 'f' where active= 't' and box in (%s)"%','.join(map(str,data['ids'])))
+## to_unactive= {}.fromkeys([r[0] for r in cr.fetchall]).keys()
+## print to_unactive
+## cashmove_ref.write(cr,uid,to_unactive,{'active':False})
+##
+ for (user_id,box_id,amount) in res:
+ cashmove_ref.create(cr,uid,{'name': 'Summary for user'+ str(user_id),
+ 'amount': amount,
+ 'user_cashmove': user_id,
+ 'box': box_id,
+ 'active': True,
+ })
+ return {}
+
+
+class cashbox_set_to_zero(wizard.interface):
+
+ states = {
+
+ 'init': {
+ 'action':[],
+ 'result':{'type' : 'form',
+ 'arch' : set_to_zero_form,
+ 'fields' : confirm_setting_zero_fields,
+ 'state' : [('end', 'Cancel'),('zero', 'Set to Zero') ]},
+
+ },
+ 'zero' : {
+ 'actions' : [_set_to_zero],
+ 'result' : {'type' : 'state', 'state' : 'end'}
+ },
+ }
+
+cashbox_set_to_zero('lunch.cashbox.clean')
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+