diff --git a/addons/point_of_sale/__terp__.py b/addons/point_of_sale/__terp__.py
index a3c227b623d..e9e20d1c6d2 100644
--- a/addons/point_of_sale/__terp__.py
+++ b/addons/point_of_sale/__terp__.py
@@ -45,6 +45,7 @@ Main features :
'pos_wizard.xml',
'wizard/pos_add_product.xml',
'wizard/pos_confirm.xml',
+ 'wizard/pos_discount.xml',
'pos_view.xml',
'pos_sequence.xml',
'posrule_data.xml',
diff --git a/addons/point_of_sale/pos_view.xml b/addons/point_of_sale/pos_view.xml
index baaac139ce4..99da6da80fc 100644
--- a/addons/point_of_sale/pos_view.xml
+++ b/addons/point_of_sale/pos_view.xml
@@ -43,7 +43,7 @@
-
+
diff --git a/addons/point_of_sale/pos_wizard.xml b/addons/point_of_sale/pos_wizard.xml
index 36613ddce36..f9396499b0c 100644
--- a/addons/point_of_sale/pos_wizard.xml
+++ b/addons/point_of_sale/pos_wizard.xml
@@ -30,9 +30,9 @@
-
+
diff --git a/addons/point_of_sale/wizard/__init__.py b/addons/point_of_sale/wizard/__init__.py
index b94ba0a0d0e..c98cd507417 100644
--- a/addons/point_of_sale/wizard/__init__.py
+++ b/addons/point_of_sale/wizard/__init__.py
@@ -23,7 +23,6 @@
import wizard_pos_payment
import wizard_default_journal
import wizard_refund_order
-import wizard_discount
import wizard_get_sale
import wizard_scan_product
import wizard_receipt
@@ -39,5 +38,6 @@ import wizard_open_statement
import wizard_all_closed_cashbox_of_the_day
import pos_add_product
import pos_confirm
+import pos_discount
# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/point_of_sale/wizard/pos_confirm.xml b/addons/point_of_sale/wizard/pos_confirm.xml
new file mode 100644
index 00000000000..2be29ee97c7
--- /dev/null
+++ b/addons/point_of_sale/wizard/pos_confirm.xml
@@ -0,0 +1,42 @@
+
+
+
+
+
+
+ Open Statements
+ pos.confirm
+ form
+
+
+
+
+
+
+ Open Statements
+ ir.actions.act_window
+ pos.confirm
+ form
+ form
+ new
+ {'record_id' : active_id}
+
+
+
+
+ Open Statements
+ client_action_multi
+
+ action
+ pos.order
+
+
+
+
\ No newline at end of file
diff --git a/addons/point_of_sale/wizard/pos_discount.py b/addons/point_of_sale/wizard/pos_discount.py
new file mode 100644
index 00000000000..a6b537193d7
--- /dev/null
+++ b/addons/point_of_sale/wizard/pos_discount.py
@@ -0,0 +1,104 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+# OpenERP, Open Source Management Solution
+# Copyright (C) 2004-2010 Tiny SPRL ().
+#
+# 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 .
+#
+##############################################################################
+
+import netsvc
+from osv import osv,fields
+from tools.translate import _
+
+class pos_discount(osv.osv_memory):
+ _name = 'pos.discount'
+ _description = 'Add Discount'
+
+ _columns = {
+ 'discount': fields.float('Discount ', required=True),
+ 'discount_notes': fields.char('Discount Notes',size= 128, required=True),
+ }
+ _defaults = {
+ 'discount': lambda *a: 5,
+ }
+
+ def apply_discount(self, cr, uid, ids, context):
+ """
+ @summary: To give the discount of product and check the .
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param context: A standard dictionary
+ @return : nothing
+ """
+ this = self.browse(cr, uid, ids[0], context=context)
+ record_id = context and context.get('record_id',False)
+ if isinstance(record_id, (int, long)):
+ record_id=[record_id]
+
+ order_ref = self.pool.get('pos.order')
+ order_line_ref =self.pool.get('pos.order.line')
+
+ for order in order_ref.browse(cr, uid, record_id, context=context):
+ for line in order.lines :
+ company_discount = order.company_id.company_discount
+ applied_discount =this.discount
+
+ if applied_discount == 0.00:
+ notice = 'No Discount'
+ elif company_discount >= applied_discount:
+ notice = 'Minimum Discount'
+ else:
+ notice = this.discount_notes
+
+ if self.check_discount(cr, uid, record_id,this.discount,context) == 'apply_discount':
+ order_line_ref.write(cr, uid, [line.id],
+ {'discount': this.discount,
+ 'price_ded':line.price_unit*line.qty*(this.discount or 0)*0.01 or 0.0,
+ 'notice':notice
+ },
+ context=context,)
+ else :
+ order_line_ref.write(cr, uid, [line.id],
+ {'discount': this.discount,
+ 'notice': notice,
+ 'price_ded':line.price_unit*line.qty*(this.discount or 0)*0.01 or 0.0
+ },
+ context=context,)
+ return {}
+
+ def check_discount(self, cr, uid, record_id,discount, context):
+ """
+ @summary: Check the discount of define by company .
+ @param self: The object pointer.
+ @param cr: A database cursor
+ @param uid: ID of the user currently logged in
+ @param record_id:Current Order id
+ @param discount:Select Discount
+ @param context: A standard dictionary
+ @return : retrun to apply and used the company discount base on condition
+ """
+ order_ref = self.pool.get('pos.order')
+ for order in order_ref.browse(cr, uid, record_id, context=context):
+ company_disc = order.company_id.company_discount
+ for line in order.lines :
+ prod_disc = discount
+ if prod_disc <= company_disc :
+ return 'apply_discount'
+ else :
+ return 'disc_discount'
+pos_discount()
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
diff --git a/addons/point_of_sale/wizard/pos_discount.xml b/addons/point_of_sale/wizard/pos_discount.xml
new file mode 100644
index 00000000000..a0e658b8c9c
--- /dev/null
+++ b/addons/point_of_sale/wizard/pos_discount.xml
@@ -0,0 +1,35 @@
+
+
+
+
+
+
+ Apply Discount
+ pos.discount
+ form
+
+
+
+
+
+
+ Apply Discount
+ ir.actions.act_window
+ pos.discount
+ form
+ form
+ new
+ {'record_id' : active_id}
+
+
+
+
\ No newline at end of file
diff --git a/addons/point_of_sale/wizard/wizard_discount.py b/addons/point_of_sale/wizard/wizard_discount.py
deleted file mode 100644
index 035c387793c..00000000000
--- a/addons/point_of_sale/wizard/wizard_discount.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# -*- encoding: utf-8 -*-
-##############################################################################
-#
-# OpenERP, Open Source Management Solution
-# Copyright (C) 2004-2009 Tiny SPRL (). All Rights Reserved
-# $Id$
-#
-# This program is free software: you can redistribute it and/or modify
-# it under the terms of the GNU 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 General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see .
-#
-##############################################################################
-
-import pooler
-import wizard
-
-_form = """
-
-"""
-disc_form = """
-
-
-"""
-
-
-_fields = {
- 'discount': {
- 'string': 'Discount percentage',
- 'type': 'float',
- 'required': True,
- 'default': lambda *args: 5
- },
-}
-
-disc_fields = {
- 'note': {
- 'string': 'Discount Notes',
- 'type': 'char',
- 'size': 128,
- 'required': True
- },
-}
-
-class discount_wizard(wizard.interface):
-
- def apply_discount(self, cr, uid, data, context):
- pool = pooler.get_pool(cr.dbname)
- order_ref = pool.get('pos.order')
- order_line_ref = pool.get('pos.order.line')
- for order in order_ref.browse(cr, uid, data['ids'], context=context):
- for line in order.lines :
- company_discount = order.company_id.company_discount
- applied_discount =data['form']['discount']
- if applied_discount == 0.00:
- notice = 'No Discount'
- elif company_discount >= applied_discount:
- notice = 'Minimum Discount'
- else:
- notice = data['form']['note']
- if self.check_discount(cr, uid, data, context) == 'apply_discount':
- order_line_ref.write(cr, uid, [line.id],
- {'discount': data['form']['discount'],
- 'price_ded':line.price_unit*line.qty*(data['form']['discount'] or 0)*0.01 or 0.0,
- 'notice':notice
- },
- context=context,)
- else :
- order_line_ref.write(cr, uid, [line.id],
- {'discount': data['form']['discount'],
- 'notice': notice,
- 'price_ded':line.price_unit*line.qty*(data['form']['discount'] or 0)*0.01 or 0.0
- },
- context=context,)
- return {}
-
- def check_discount(self, cr, uid, data, context):
- pool = pooler.get_pool(cr.dbname)
- order_ref = pool.get('pos.order')
- for order in order_ref.browse(cr, uid, data['ids'], context=context):
- company_disc = order.company_id.company_discount
- for line in order.lines :
- prod_disc = data['form']['discount']
- if prod_disc <= company_disc :
- return 'apply_discount'
- else :
- return 'disc_discount'
-
- states = {
- 'init': {
- 'actions': [],
- 'result': {
- 'type': 'form',
- 'arch': _form,
- 'fields': _fields,
- 'state': (('end', 'Cancel'),
- ('check_disc', 'Apply Discount', 'gtk-ok', True)
- )
- }
- },
-
- 'check_disc': {
- 'actions': [],
- 'result': {'type':'choice','next_state':check_discount}
- },
-
- 'disc_discount': {
- 'actions': [],
- 'result': {
- 'type': 'form',
- 'arch': disc_form,
- 'fields':disc_fields,
- 'state': (('end', 'Cancel'),
- ('apply_discount', 'Apply Discount', 'gtk-ok', True)
- )
- }
- },
- 'apply_discount': {
- 'actions': [],
- 'result': {
- 'type': 'action',
- 'action': apply_discount,
- 'state': "end",
- }
- },
- }
-
-discount_wizard('pos.discount')
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-