[PYTHON][VIEW] +bikecoop start and stop dates
authorLudovic CHEVALIER <ludovic@beurresarrasin.net>
Fri, 21 Oct 2022 15:36:27 +0000 (17:36 +0200)
committerLudovic CHEVALIER <ludovic@beurresarrasin.net>
Fri, 21 Oct 2022 15:36:27 +0000 (17:36 +0200)
lhc.py
view/membership.xml

diff --git a/lhc.py b/lhc.py
index b1fca6a..aefa162 100644 (file)
--- a/lhc.py
+++ b/lhc.py
@@ -26,6 +26,7 @@ from openerp.osv import orm
 from openerp.osv import fields
 from openerp.tools.translate import _
 import openerp.addons.decimal_precision as dp
+import datetime
 
 
 class res_partner(orm.Model):
@@ -41,6 +42,33 @@ class res_partner(orm.Model):
                 res[obj.id] = ''
         return res
 
+    def _bikecoop_activity_dates_check(self, cr, uid, ids, context=None):
+        #TODO : check condition and return boolean accordingly
+        currentDateTime = datetime.datetime.now()
+        date = currentDateTime.date()
+        year = date.strftime("%Y")
+
+        min_date = 1950
+        max_date = int(year)
+
+        for partner in self.browse(cr, uid, ids, context=context):
+            if partner.bikecoop_activity_start == 0 and partner.bikecoop_activity_stop == 0:
+                return True
+            if partner.bikecoop_activity_start < 0 or partner.bikecoop_activity_stop < 0:
+                return False
+            if partner.bikecoop_activity_start == 0 and partner.bikecoop_activity_stop > 0:
+                return False
+            if partner.bikecoop_activity_stop > max_date or partner.bikecoop_activity_stop < min_date:
+                if partner.bikecoop_activity_stop != 0:
+                    return False
+            if partner.bikecoop_activity_start > max_date or partner.bikecoop_activity_start < min_date:
+                if partner.bikecoop_activity_start != 0:
+                    return False
+            if partner.bikecoop_activity_stop < partner.bikecoop_activity_start:
+                if partner.bikecoop_activity_stop != 0:
+                    return False
+            return True
+
     _columns = {
         'usual_contact': fields.boolean(
             'Usual contact',
@@ -65,6 +93,8 @@ class res_partner(orm.Model):
             size=240,
             help="""One more email. Warning: there are no email notification
             with this email. Only the main email can receive notifications."""),
+        'bikecoop_activity_start': fields.integer('Bikecoop activity start year'),
+        'bikecoop_activity_stop': fields.integer('Bikecoop activity end year'),
     }
 
     _defaults = {
@@ -72,6 +102,11 @@ class res_partner(orm.Model):
     }
 
 
+    _constraints = [
+        (_bikecoop_activity_dates_check, 'Error: Bikecoop activity dates are inconsistent!', ['Bikecoop activity dates']),
+    ]
+
+
 class product_template(orm.Model):
     _inherit = 'product.template'
 
index cac246c..a5078d0 100644 (file)
@@ -11,6 +11,8 @@
                 </xpath>
                 <xpath expr="//page[@string='Membership']/group/group/div" position="after">
                     <field name="kit_sent" attrs="{'invisible': [('membership_state','not in', ('old', 'waiting', 'invoiced', 'free', 'paid'))]}"/>
+                    <field name="bikecoop_activity_start" attrs="{'invisible': [('is_company','=', False)]}" />
+                    <field name="bikecoop_activity_stop" attrs="{'invisible': [('is_company','=', False)]}"/>
                 </xpath>
             </field>
         </record>