diff --git a/beesdoo_base/__init__.py b/beesdoo_base/__init__.py index 4001611..c9a8b24 100644 --- a/beesdoo_base/__init__.py +++ b/beesdoo_base/__init__.py @@ -1,3 +1,4 @@ # -*- coding: utf-8 -*- import models +import wizard import tools \ No newline at end of file diff --git a/beesdoo_base/__openerp__.py b/beesdoo_base/__openerp__.py index 9fd373a..a452a53 100644 --- a/beesdoo_base/__openerp__.py +++ b/beesdoo_base/__openerp__.py @@ -20,5 +20,6 @@ 'data': [ 'security/ir.model.access.csv', 'views/partner.xml', + 'wizard/views/new_member_card.xml', ], } diff --git a/beesdoo_base/models/__init__.py b/beesdoo_base/models/__init__.py index 751e194..f95b336 100644 --- a/beesdoo_base/models/__init__.py +++ b/beesdoo_base/models/__init__.py @@ -1 +1 @@ -import partner \ No newline at end of file +import partner, membercard \ No newline at end of file diff --git a/beesdoo_base/models/membercard.py b/beesdoo_base/models/membercard.py new file mode 100644 index 0000000..0bbd5ae --- /dev/null +++ b/beesdoo_base/models/membercard.py @@ -0,0 +1,24 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, api +import uuid + +class MemberCard(models.Model): + + def _get_current_user(self): + return self.env.uid + + def _compute_bar_code(self): + rule = self.env['barcode.rule'].search([('name', '=', 'Customer Barcodes')])[0] + size = 13 - len(rule.pattern) + ean = rule.pattern + str(uuid.uuid4().fields[-1])[:size] + return ean[0:12] + str(self.env['barcode.nomenclature'].ean_checksum(ean)) + + _name = 'member.card' + _order = 'create_date desc' + + valid = fields.Boolean(default=True, string="Active") + barcode = fields.Char("Barcode", oldname='ean13', default=_compute_bar_code) + partner_id = fields.Many2one('res.partner') #, default=_get_current_client) + responsible_id = fields.Many2one('res.users', default=_get_current_user, string="Responsible") + end_date = fields.Date(readonly=True, string="Expiration Date") + comment = fields.Char("Reason", required=True) diff --git a/beesdoo_base/models/partner.py b/beesdoo_base/models/partner.py index 79393fd..2af5823 100644 --- a/beesdoo_base/models/partner.py +++ b/beesdoo_base/models/partner.py @@ -9,14 +9,10 @@ class Partner(models.Model): first_name = fields.Char('First Name') last_name = fields.Char('Last Name', required=True) - eater = fields.Selection([('eater', 'Eater'), ('worker_eater', 'Worker and Eater')], string="Eater/Worker") - child_eater_ids = fields.One2many("res.partner", "parent_eater_id", domain=[('customer', '=', True), ('eater', '=', 'eater')]) - parent_eater_id = fields.Many2one("res.partner", string="Parent Worker", readonly=True) - barcode = fields.Char(compute="_get_bar_code", string='Bar Code', store=True) parent_barcode = fields.Char(compute="_get_bar_code", string='Parent Bar Code', store=True) member_card_ids = fields.One2many('member.card', 'partner_id') @@ -31,7 +27,9 @@ class Partner(models.Model): if self.eater == 'eater': self.parent_barcode = self.parent_eater_id.barcode elif self.member_card_ids: - self.barcode = self.member_card_ids[0].barcode + for c in self.member_card_ids: + if c.valid: + self.barcode = c.barcode @api.one @api.constrains('child_eater_ids', 'parent_eater_id') @@ -50,18 +48,13 @@ class Partner(models.Model): command[0] = 3 return super(Partner, self).write(values) -class MemberCard(models.Model): - - def _get_current_user(self): - return self.env.user + @api.one + def _deactivate_active_cards(self): + for card in self.member_card_ids.filtered('valid'): + card.valid = False + card.end_date = fields.Date.today() - _name = 'member.card' - _order = 'activation_date desc' + @api.multi + def _new_card(self, reason, user_id): + self.env['member.card'].create({'partner_id' : self.id,'responsible_id' : user_id, 'comment' : reason}) - active = fields.Boolean(default=True) - barcode = fields.Char('Barcode', oldname='ean13') - partner_id = fields.Many2one('res.partner') - responsible_id = fields.Many2one('res.users', default=_get_current_user) - activation_date = fields.Date(default=fields.Date.today, readonly=True) - end_date = fields.Date() - comment = fields.Char("Reason") diff --git a/beesdoo_base/views/partner.xml b/beesdoo_base/views/partner.xml index ff211a2..37ceed8 100644 --- a/beesdoo_base/views/partner.xml +++ b/beesdoo_base/views/partner.xml @@ -1,18 +1,27 @@ + + New Member Card + membercard.new.wizard + form + new + beesdoo.partner.form.view res.partner - - + + - - + + - + @@ -24,12 +33,17 @@ - + + + +