[PYTHON] ~update copyright
[burette/etudesetchantiersidf.git] / etudesetchantiersidf.py
index 1f40102..b7962f6 100644 (file)
@@ -3,7 +3,7 @@
 #
 #    etudesetchantiersidf module for OpenERP, Custom module for Étude et
 #    Chantiers île-de-France
-#    Copyright (C) 2014-2015 etudesetchantiersidf
+#    Copyright (C) 2014-2023 etudesetchantiersidf
 #    (<http://etudesetchantiersiledefrance.unarec.org/>)
 #
 #    This file is a part of etudesetchantiersidf
@@ -31,15 +31,15 @@ from openerp.osv import fields
 class Partner(osv.osv):
     '''Partner'''
     _inherit = 'res.partner'
-    '''
-    def _get_invoice_partner(self, cr, uid, ids, context=None):
-        res = super(Partner, self)._get_invoice_partner(cr, uid, ids, context=context)
-        return res
 
     def _get_partner_id(self, cr, uid, ids, context=None):
-        res = super(Partner, self)._get_partner_id(cr, uid, ids, context=context)
-        return res
-    '''
+        return super(Partner, self.pool['res.partner'])._get_partner_id(cr, uid, ids, context=context)
+
+    def _get_invoice_partner(self, cr, uid, ids, context=None):
+        return super(Partner, self.pool['res.partner'])._get_invoice_partner(cr, uid, ids, context=context)
+
+    def _get_order_partner(self, cr, uid, ids, context=None):
+        return super(Partner, self.pool['res.partner'])._get_order_partner(cr, uid, ids, context=context)
 
     def _get_last_mb_product(self, cr, uid, ids, name, args, context=None):
         """Return the last membership product buy by a user"""
@@ -51,29 +51,46 @@ class Partner(osv.osv):
             line_id = member_line_obj.search(cr, uid, [
                 ('partner', '=', partner_id),
                 ('date_cancel', '=', False)
-            ], limit=1, order='date_from', context=context)
+            ], limit=1, order='date_from desc', context=context)
             if line_id:
                 product_id = member_line_obj.read(cr, uid, line_id[0], [name], context=context)[name][0]
                 res[partner.id] = {name: product_id}
+            else:
+                res[partner.id] = {name: None} #Not needed in recent version of OpenERP7 (greater than 2016-01-01)
         return res
 
-
     _columns = {
         'membership_id': fields.function(
             _get_last_mb_product, multi='membership_id',
             string='Last membership product',
             type='many2one',
             obj='product.product',
-            store=True,
+            store = {
+                'account.invoice': (_get_invoice_partner, ['state'], 11),
+                'pos.order': (_get_order_partner, ['state', 'partner_id'], 11),
+                'membership.membership_line': (_get_partner_id, ['state'], 10),
+                'res.partner': (lambda self, cr, uid, ids, c={}: ids, ['free_member'], 10)
+                }
             ),
+        'newsletter': fields.boolean('Want to subsribe to the newsletter?'),
     }
-'''
-store = {
-    'account.invoice': (_get_invoice_partner, ['state'], 10),
-    'membership.membership_line': (_get_partner_id, ['state'], 10, )
+
+    _defaults = {
+        'newsletter': lambda *a: True,
     }
-'''
 
+    def _check_email(self, cr, uid, ids, context=None):
+        #TODO : check condition and return boolean accordingly
+        if context is None:
+            context = {}
+        for partner in self.browse(cr, uid, ids, context=context):
+            if partner.newsletter and not partner.email:
+                return False
+        return True
+
+    _constraints = [
+        (_check_email, 'Error: you can\'t subscribe to the newsletter without email!', ['newsletter']),
+    ]
 Partner()
 
 # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: