From ca2db3740e8b8306c0a5567c12b535b3c27396ee Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 9 May 2012 11:35:17 +0200 Subject: [PATCH] [IMP] point_of_sale: Add the EAN13 field on the user with validation bzr revid: stw@openerp.com-20120509093517-24lw0pbiqum0wpw1 --- addons/point_of_sale/__init__.py | 1 + addons/point_of_sale/__openerp__.py | 1 + addons/point_of_sale/res_users.py | 54 +++++++++++++++++++++++++ addons/point_of_sale/res_users_view.xml | 18 +++++++++ 4 files changed, 74 insertions(+) create mode 100644 addons/point_of_sale/res_users.py create mode 100644 addons/point_of_sale/res_users_view.xml diff --git a/addons/point_of_sale/__init__.py b/addons/point_of_sale/__init__.py index 323eb4ccd7f..ec5403212f4 100644 --- a/addons/point_of_sale/__init__.py +++ b/addons/point_of_sale/__init__.py @@ -22,6 +22,7 @@ import point_of_sale import account_bank_statement import product +import res_users import wizard import report diff --git a/addons/point_of_sale/__openerp__.py b/addons/point_of_sale/__openerp__.py index 91f5202536b..088e3ceeb3a 100644 --- a/addons/point_of_sale/__openerp__.py +++ b/addons/point_of_sale/__openerp__.py @@ -67,6 +67,7 @@ Main features : 'account_statement_view.xml', 'account_statement_report.xml', 'product_view.xml', + 'res_users_view.xml', ], 'demo_xml': [ 'point_of_sale_demo.xml', diff --git a/addons/point_of_sale/res_users.py b/addons/point_of_sale/res_users.py new file mode 100644 index 00000000000..e048ad01dac --- /dev/null +++ b/addons/point_of_sale/res_users.py @@ -0,0 +1,54 @@ +#!/usr/bin/env python +from osv import osv, fields +import math + +def is_pair(x): + return not x%2 +# This code is a duplicate of product#check_ean function +def check_ean(eancode): + if not eancode: + return True + if len(eancode) <> 13: + return False + try: + int(eancode) + except: + return False + oddsum=0 + evensum=0 + total=0 + eanvalue=eancode + reversevalue = eanvalue[::-1] + finalean=reversevalue[1:] + + for i in range(len(finalean)): + if is_pair(i): + oddsum += int(finalean[i]) + else: + evensum += int(finalean[i]) + total=(oddsum * 3) + evensum + + check = int(10 - math.ceil(total % 10.0)) %10 + + if check != int(eancode[-1]): + return False + return True + +class res_users(osv.osv): + _inherit = 'res.users' + + _columns = { + 'ean13' : fields.char('EAN13', size=13, help="BarCode"), + } + + def _check_ean(self, cr, uid, ids, context=None): + return all( + check_ean(user.ean13) == True + for user in self.browse(cr, uid, ids, context=context) + ) + + _constraints = [ + (_check_ean, "Error: Invalid ean code", ['ean13'],), + ] + + diff --git a/addons/point_of_sale/res_users_view.xml b/addons/point_of_sale/res_users_view.xml new file mode 100644 index 00000000000..c34b9566406 --- /dev/null +++ b/addons/point_of_sale/res_users_view.xml @@ -0,0 +1,18 @@ + + + + + res.users.form.view + res.users + form + + + + + + + + + + + \ No newline at end of file