From c16906fccebe9fa3012e4963b90eb5b6013893a1 Mon Sep 17 00:00:00 2001 From: Ludovic CHEVALIER Date: Sat, 6 Apr 2013 12:47:32 +0200 Subject: [PATCH] -incomplete _check_membership_product method --- pos_membership.py | 78 +++++++++++++++++++---------------------------- 1 file changed, 32 insertions(+), 46 deletions(-) diff --git a/pos_membership.py b/pos_membership.py index 990beb5..3f05a1f 100644 --- a/pos_membership.py +++ b/pos_membership.py @@ -41,7 +41,7 @@ STATE = [ class membership_line(osv.osv): '''Member line''' _inherit = 'membership.membership_line' - + def _get_partners(self, cr, uid, ids, context=None): list_membership_line = [] member_line_obj = self.pool.get('membership.membership_line') @@ -50,7 +50,7 @@ class membership_line(osv.osv): list_membership_line += member_line_obj.search(cr, uid, [('id', 'in', [ l.id for l in partner.member_lines])], context=context) print("DEV: [pos_membership] [membership_line] [_get_partners]: ids=%s res=%s" % (str(ids), str(list_membership_line))) return list_membership_line - + #def _get_membership_lines_from_account_invoice(self, cr, uid, ids, context=None): # list_membership_line = [] # member_line_obj = self.pool.get('membership.membership_line') @@ -77,7 +77,7 @@ class membership_line(osv.osv): res= list_membership_line print("DEV: [pos_membership] [membership_line] [_get_membership_lines_from_pos_order]: res=%s" % str(res)) return res - + def _check_membership_date(self, cr, uid, ids, context=None): """Check if membership product is not in the past @param self: The object pointer @@ -86,7 +86,7 @@ class membership_line(osv.osv): @param ids: List of Membership Line IDs @param context: A standard dictionary for contextual values """ - + cr.execute(''' SELECT MIN(ml.date_to - ai.date_invoice) FROM membership_membership_line ml @@ -114,7 +114,7 @@ class membership_line(osv.osv): if r[0] and r[0] < 0: return False return True - + def _state(self, cr, uid, ids, name, args, context=None): """Compute the state lines @param self: The object pointer @@ -201,21 +201,21 @@ class membership_line(osv.osv): res[line.id] = state print("DEV: [pos_membership] [membership_line] [_state]: return=%s" % (str(res))) return res - + def write(self, cr, uid, ids, vals, context=None): print("DEV: [pos_membership] [membership_line] [write]: ids=%s vals=%s" % (str(ids), str(vals))) member_line_obj = self.pool.get('membership.membership_line') res = super(membership_line, self).write(cr, uid, ids, vals, context=context) print("DEV: [pos_membership] [membership_line] [write]: res=%s" % str(res)) return res - + def create(self, cr, uid, vals, context=None): print("DEV: [pos_membership] [membership_line] [create]: vals=%s" % (str(vals))) member_line_obj = self.pool.get('membership.membership_line') res = super(membership_line, self).create(cr, uid, vals, context=context) print("DEV: [pos_membership] [membership_line] [create]: res=%s" % (str(res))) return res - + _columns = { 'pos_order_line': fields.many2one('pos.order.line', 'POS Order line', readonly=True), 'pos_order_id': fields.related('pos_order_line', 'order_id', type='many2one', relation='pos.order', string='Order', readonly=True), @@ -243,7 +243,7 @@ membership_line() class Partner(osv.osv): '''Partner''' _inherit = 'res.partner' - + def _get_partner_id(self, cr, uid, ids, context=None): member_line_obj = self.pool.get('membership.membership_line') res_obj = self.pool.get('res.partner') @@ -256,7 +256,7 @@ class Partner(osv.osv): ids2 = res_obj.search(cr, uid, [('associate_member', 'in', ids2)], context=context) list_partner += ids2 return list_partner - + def _get_invoice_partner(self, cr, uid, ids, context=None): inv_obj = self.pool.get('account.invoice') res_obj = self.pool.get('res.partner') @@ -269,7 +269,7 @@ class Partner(osv.osv): ids2 = res_obj.search(cr, uid, [('associate_member', 'in', ids2)], context=context) list_partner += ids2 return list_partner - + def _get_order_partner(self, cr, uid, ids, context=None): ord_obj = self.pool.get('pos.order') res_obj = self.pool.get('res.partner') @@ -282,7 +282,7 @@ class Partner(osv.osv): ids2 = res_obj.search(cr, uid, [('associate_member', 'in', ids2)], context=context) list_partner += ids2 return list_partner - + def _membership_state(self, cr, uid, ids, name, args, context=None): """This Function return Membership State For Given Partner. @param self: The object pointer @@ -384,7 +384,7 @@ class Partner(osv.osv): res[id] = res_state[partner_data.associate_member.id] print("DEV: [pos_membership] [Partner] [_membership_state]: res=%s" % (str(res))) return res - + def _membership_date(self, cr, uid, ids, name, args, context=None): """Return date of membership""" name = name[0] @@ -406,31 +406,31 @@ class Partner(osv.osv): if line_id: res[partner.id]['membership_start'] = member_line_obj.read(cr, uid, line_id[0], ['date_from'], context=context)['date_from'] - + if name == 'membership_stop': line_id1 = member_line_obj.search(cr, uid, [('partner', '=', partner_id),('date_cancel','=',False)], limit=1, order='date_to desc', context=context) if line_id1: res[partner.id]['membership_stop'] = member_line_obj.read(cr, uid, line_id1[0], ['date_to'], context=context)['date_to'] - + if name == 'membership_cancel': if partner.membership_state == 'canceled': line_id2 = member_line_obj.search(cr, uid, [('partner', '=', partner.id)], limit=1, order='date_cancel', context=context) if line_id2: res[partner.id]['membership_cancel'] = member_line_obj.read(cr, uid, line_id2[0], ['date_cancel'], context=context)['date_cancel'] return res - + def _get_partners(self, cr, uid, ids, context=None): ids2 = ids while ids2: ids2 = self.search(cr, uid, [('associate_member', 'in', ids2)], context=context) ids += ids2 return ids - + def __get_membership_state(self, *args, **kwargs): return self._membership_state(*args, **kwargs) - + _columns = { 'membership_state': fields.function( __get_membership_state, @@ -481,21 +481,7 @@ Partner() class pos_order(osv.osv): _inherit = 'pos.order' - - def _check_membership_product(self, cr, uid, ids, context=None): - #TODO : check condition and return boolean accordingly - if not context is None: - context = {} - order_line_obj = self.pool.get('pos.order.line') - data_order_line = order_line_obj.browse(cr, uid, ids, context=context) - for data in data_order_line: - print("DEV: [pos_membership] [_check_membership_product] [order_line]: data=%s product=%s" % (str(data.id), str(data.product_id.id))) - return True - - _constraints = [ - (_check_membership_product, 'Error: Invalid Message', ['field_name']), - ] - + # XXX: copied from openerp/addons/point_of_sale/point_of_sale.py def action_invoice(self, cr, uid, ids, context=None): print ("DEV: [pos_membership] [pos_order] [action_invoice]") @@ -504,15 +490,15 @@ class pos_order(osv.osv): inv_line_ref = self.pool.get('account.invoice.line') product_obj = self.pool.get('product.product') inv_ids = [] - + for order in self.pool.get('pos.order').browse(cr, uid, ids, context=context): if order.invoice_id: inv_ids.append(order.invoice_id.id) continue - + if not order.partner_id: raise osv.except_osv(_('Error!'), _('Please provide a partner for the sale.')) - + acc = order.partner_id.property_account_receivable.id # XXX: copied from openerp/addons/point_of_sale/point_of_sale.py to fix account.invoice.line creation inv = { @@ -552,15 +538,15 @@ class pos_order(osv.osv): #inv_line_ref.create(cr, uid, inv_line, context=context) inv['invoice_line'].append((0, 0, inv_line)) inv_id = inv_ref.create(cr, uid, inv, context=context) - + self.write(cr, uid, [order.id], {'invoice_id': inv_id, 'state': 'invoiced'}, context=context) inv_ref.confirm_paid(cr, uid, [inv_id], context=context) inv_ids.append(inv_id) inv_ref.button_reset_taxes(cr, uid, [inv_id], context=context) wf_service.trg_validate(uid, 'pos.order', order.id, 'invoice', cr) - + if not inv_ids: return {} - + mod_obj = self.pool.get('ir.model.data') res = mod_obj.get_object_reference(cr, uid, 'account', 'invoice_form') res_id = res and res[1] or False @@ -576,14 +562,14 @@ class pos_order(osv.osv): 'target': 'current', 'res_id': inv_ids and inv_ids[0] or False, } - + def write(self, cr, uid, ids, vals, context=None): print("DEV: [pos_membership] [pos_order] [write]: ids=%s vals=%s" % (str(ids), str(vals))) pos_order_obj = self.pool.get('pos.order') res = super(pos_order, self).write(cr, uid, ids, vals, context=context) print("DEV: [pos_membership] [pos_order] [write]: res=%s" % str(res)) return res - + def create(self, cr, uid, vals, context=None): print("DEV: [pos_membership] [pos_order] [create]: vals=%s" % (str(vals))) pos_order_obj = self.pool.get('pos.order') @@ -595,7 +581,7 @@ pos_order() class pos_order_line(osv.osv): _inherit = 'pos.order.line' - + def write(self, cr, uid, ids, vals, context=None): print("DEV: [pos_membership] [pos_order_line] [write]: ids=%s vals=%s context=%s" % (str(ids), str(vals), str(context))) member_line_obj = self.pool.get('membership.membership_line') @@ -656,7 +642,7 @@ class pos_order_line(osv.osv): ] , context=context) member_line_obj.unlink(cr, uid, associate_member_line_ids, context=context) - + #Define member ident if it's necessary partners = [line.order_id.partner_id] if line.order_id.partner_id.associate_members: @@ -670,7 +656,7 @@ class pos_order_line(osv.osv): member_line_obj.unlink(cr, uid, ml_ids, context=context) print("DEV: [pos_membership] [pos_order_line] [write]: res=%s" % str(res)) return res - + def unlink(self, cr, uid, ids, context=None): """Remove Membership Line Record for Account Invoice Line """ @@ -679,14 +665,14 @@ class pos_order_line(osv.osv): ml_ids = member_line_obj.search(cr, uid, [('pos_order_line', '=', id)], context=context) member_line_obj.unlink(cr, uid, ml_ids, context=context) return super(pos_order_line, self).unlink(cr, uid, ids, context=context) - + def create(self, cr, uid, vals, context=None): member_line_obj = self.pool.get('membership.membership_line') print("DEV: [pos_membership] [pos_order_line] [create]: vals=%s context=%s" % (str(vals), str(context))) res = super(pos_order_line, self).create(cr, uid, vals, context=context) print ("DEV: [pos_membership] [pos_order_line] [create] [super] : res=%s" % str(res)) line = self.browse(cr, uid, res, context=context) - + ml_ids = member_line_obj.search(cr, uid, [('pos_order_line', '=', line.id)], context=context) if line.product_id and line.product_id.membership and not ml_ids: date_from = line.product_id.membership_date_from -- 2.20.1