[PYTHON] +check if partner mobile number exist when creating or modifying pos order...
authorLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Wed, 27 May 2020 08:39:03 +0000 (10:39 +0200)
committerLudovic CHEVALIER <ludovic.chevalier@heureux-cyclage.org>
Wed, 27 May 2020 08:39:03 +0000 (10:39 +0200)
__init__.py
point_of_sale.py
wizard/__init__.py [new file with mode: 0644]
wizard/pos_receipt.py [new file with mode: 0644]

index f6b0d96..ca6fde1 100644 (file)
@@ -2,3 +2,4 @@
 # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
 
 import point_of_sale
+import wizard
index 426469e..7d1ebff 100644 (file)
@@ -5,10 +5,49 @@
 from openerp.osv import osv
 from openerp.osv import orm
 from openerp.osv import fields
+from openerp.tools.translate import _
+
 
 class pos_order(orm.Model):
     _inherit = 'pos.order'
 
+    def check_partner_mobile(self, cr, uid, partner_id, context=None):
+        """Check if a partner mobile number is defined and display warning
+        message if not."""
+        partner_obj = self.pool.get('res.partner')
+        partner = partner_obj.browse(cr, uid, partner_id, context=context)
+        is_mobile = partner.mobile
+        if not is_mobile:
+            warn_message = """
+                    Mobile is required to print a «Coup de Pouce» receipt.
+                    Add mobile number to this partner: %s.
+                    """.decode('utf-8') % partner.name
+            raise osv.except_osv(
+                _('Warning'),
+                _(warn_message))
+        return True
+
     _columns = {
         'is_cpv': fields.boolean('"Coup de Pouce Velo"?', change_default=True),
     }
+
+
+    def create(self, cr, uid, vals, context=None):
+        if 'partner_id' in vals:
+            partner_id = vals['partner_id']
+            if 'is_cpv' in vals:
+                if vals['is_cpv']:
+                    self.check_partner_mobile(cr, uid, partner_id, context)
+        return super(pos_order, self).create(
+            cr, uid, vals, context=context
+        )
+
+    def write(self, cr, uid, ids, vals, context=None):
+        order = self.browse(cr, uid, ids[0], context=context)
+        partner_id = order.partner_id.id
+        if 'is_cpv' in vals:
+            if vals['is_cpv']:
+                self.check_partner_mobile(cr, uid, partner_id, context)
+        return super(pos_order, self).write(
+            cr, uid, ids, vals, context=context
+        )
diff --git a/wizard/__init__.py b/wizard/__init__.py
new file mode 100644 (file)
index 0000000..630cf01
--- /dev/null
@@ -0,0 +1,4 @@
+# Copyright 2020 L'Heureux Cyclage
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+import pos_receipt
diff --git a/wizard/pos_receipt.py b/wizard/pos_receipt.py
new file mode 100644 (file)
index 0000000..e4bff73
--- /dev/null
@@ -0,0 +1,19 @@
+# Copyright 2020 L'Heureux Cyclage
+# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
+
+from openerp.osv import osv
+from openerp.osv import orm
+from openerp.osv import fields
+
+
+class pos_receipt(orm.Model):
+    _inherit = 'pos.receipt'
+
+    def print_report(self, cr, uid, ids, context=None):
+        """Check if partner mobile number is defined before print receipt."""
+        order_id = context['active_id']
+        order_obj = self.pool.get('pos.order')
+        order = order_obj.browse(cr, uid, order_id, context=context)
+        partner_id = order.partner_id.id
+        order_obj.check_partner_mobile(cr, uid, partner_id, context=None)
+        return super(pos_receipt, self).print_report(cr, uid, ids, context=context)