diff --git a/beesdoo_base/__init__.py b/beesdoo_base/__init__.py new file mode 100644 index 0000000..eca5f1d --- /dev/null +++ b/beesdoo_base/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- +import models +import wizard +import controllers \ No newline at end of file diff --git a/beesdoo_base/__openerp__.py b/beesdoo_base/__openerp__.py new file mode 100644 index 0000000..8753643 --- /dev/null +++ b/beesdoo_base/__openerp__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +{ + 'name': "Beescoop Base Module", + + 'summary': """ + Module that customize the base module and contains some python tools + """, + + 'description': """ + """, + + 'author': "Beescoop - Cellule IT", + 'website': "https://github.com/beescoop/Obeesdoo", + + 'category': 'Project Management', + 'version': '9.0.1.0.1', + + 'depends': ['point_of_sale', 'purchase', 'report', 'portal', 'partner_firstname'], + + 'data': [ + 'security/groups.xml', + 'security/ir.model.access.csv', + 'views/partner.xml', + 'wizard/views/member_card.xml', + 'wizard/views/partner.xml', + 'data/default_contact.xml', + 'report/beescard.xml', + ], +} diff --git a/beesdoo_base/controllers/__init__.py b/beesdoo_base/controllers/__init__.py new file mode 100644 index 0000000..097e4d2 --- /dev/null +++ b/beesdoo_base/controllers/__init__.py @@ -0,0 +1 @@ +import report \ No newline at end of file diff --git a/beesdoo_base/controllers/report.py b/beesdoo_base/controllers/report.py new file mode 100644 index 0000000..b8d441f --- /dev/null +++ b/beesdoo_base/controllers/report.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# Part of Odoo. See LICENSE file for full copyright and licensing details. + +from openerp.addons.web.http import Controller, route, request +from openerp.addons.web.controllers.main import _serialize_exception, content_disposition +from openerp.tools import html_escape + +import json +import time +from werkzeug import url_decode +from werkzeug.test import Client +from werkzeug.wrappers import BaseResponse +from werkzeug.datastructures import Headers + +from openerp.addons.report.controllers.main import ReportController +from openerp.tools.safe_eval import safe_eval + + +class ReportCustom(ReportController): + + @route(['/report/download'], type='http', auth="user") + def report_download(self, data, token): + """This function is used by 'qwebactionmanager.js' in order to trigger the download of + a pdf/controller report. + + :param data: a javascript array JSON.stringified containg report internal url ([0]) and + type [1] + :returns: Response with a filetoken cookie and an attachment header + """ + requestcontent = json.loads(data) + url, type = requestcontent[0], requestcontent[1] + try: + if type == 'qweb-pdf': + reportname = url.split('/report/pdf/')[1].split('?')[0] + + docids = None + if '/' in reportname: + reportname, docids = reportname.split('/') + + if docids: + # Generic report: + response = self.report_routes(reportname, docids=docids, converter='pdf') + else: + # Particular report: + data = url_decode(url.split('?')[1]).items() # decoding the args represented in JSON + response = self.report_routes(reportname, converter='pdf', **dict(data)) + + cr, uid = request.cr, request.uid + report = request.registry['report']._get_report_from_name(cr, uid, reportname) + filename = "%s.%s" % (report.name, "pdf") + if docids: + ids = [int(x) for x in docids.split(",")] + obj = request.env[report.model].browse(ids) + if report.attachment and not len(obj) > 1: + filename = safe_eval(report.attachment, {'object': obj, 'time': time}) + response.headers.add('Content-Disposition', content_disposition(filename)) + response.set_cookie('fileToken', token) + return response + elif type =='controller': + reqheaders = Headers(request.httprequest.headers) + response = Client(request.httprequest.app, BaseResponse).get(url, headers=reqheaders, follow_redirects=True) + response.set_cookie('fileToken', token) + return response + else: + return + except Exception, e: + se = _serialize_exception(e) + error = { + 'code': 200, + 'message': "Odoo Server Error", + 'data': se + } + return request.make_response(html_escape(json.dumps(error))) diff --git a/beesdoo_base/data/default_contact.xml b/beesdoo_base/data/default_contact.xml new file mode 100644 index 0000000..2c7abdc --- /dev/null +++ b/beesdoo_base/data/default_contact.xml @@ -0,0 +1,10 @@ + + + + + commande@bees-coop.be + commande@bees-coop.be + True + + + \ No newline at end of file diff --git a/beesdoo_base/i18n/fr_BE.po b/beesdoo_base/i18n/fr_BE.po new file mode 100644 index 0000000..abde719 --- /dev/null +++ b/beesdoo_base/i18n/fr_BE.po @@ -0,0 +1,321 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * beesdoo_base +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 9.0c\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-13 15:16+0000\n" +"PO-Revision-Date: 2016-11-13 15:16+0000\n" +"Last-Translator: <>\n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_valid +msgid "Active" +msgstr "Actif" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_barcode +msgid "Barcode" +msgstr "Code Barre" + +#. module: beesdoo_base +#: model:res.groups,name:beesdoo_base.group_force_barcode +msgid "Bees Card Force Barcode" +msgstr "Bees Card Force Barcode" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.Eater Wizard +#: model:ir.ui.view,arch_db:beesdoo_base.MemberCard Wizard +#: model:ir.ui.view,arch_db:beesdoo_base.membercard_set_as_printed_wizard +#: model:ir.ui.view,arch_db:beesdoo_base.printing_membercard_request_wizard +msgid "Cancel" +msgstr "Annuler" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "Cards" +msgstr "Cards" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_child_eater_ids +msgid "Child eater ids" +msgstr "Child eater ids" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.Eater Wizard +#: model:ir.ui.view,arch_db:beesdoo_base.MemberCard Wizard +msgid "Create" +msgstr "Créer" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.Eater Wizard +msgid "Create a new eater" +msgstr "Create a new eater" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_create_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_create_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_create_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard_create_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard_create_uid +msgid "Created by" +msgstr "Créé par" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_create_date +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_create_date +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_create_date +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard_create_date +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard_create_date +msgid "Created on" +msgstr "Créé le" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_display_name +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_display_name +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_display_name +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard_display_name +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard_display_name +msgid "Display Name" +msgstr "Nom affiché" + +#. module: beesdoo_base +#: selection:res.partner,eater:0 +msgid "Eater" +msgstr "Eater" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_eater +msgid "Eater/Worker" +msgstr "Eater/Worker" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "Eaters" +msgstr "Eaters" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_email +msgid "Email" +msgstr "Courriel" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_end_date +msgid "Expiration Date" +msgstr "Date d'expiration" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_first_name +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_first_name +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "First Name" +msgstr "Prénom" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_force_barcode +msgid "Force Barcode" +msgstr "Force Barcode" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_id +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_id +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_id +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard_id +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard_id +msgid "ID" +msgstr "ID" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard___last_update +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card___last_update +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard___last_update +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard___last_update +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard___last_update +msgid "Last Modified on" +msgstr "Dernière modification le" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_last_name +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_last_name +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "Last Name" +msgstr "Nom" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_write_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_write_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_write_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard_write_uid +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard_write_uid +msgid "Last Updated by" +msgstr "Mis à jour par" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_write_date +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_write_date +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_write_date +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard_write_date +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard_write_date +msgid "Last Updated on" +msgstr "Mis à jour le" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_last_printed +msgid "Last printed on" +msgstr "Last printed on" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "Member Card" +msgstr "Member Card" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_member_card_ids +msgid "Member card ids" +msgstr "Member card ids" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "New Card" +msgstr "New Card" + +#. module: beesdoo_base +#: model:ir.actions.act_window,name:beesdoo_base.action_eater_wizard +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "New Eater" +msgstr "New Eater" + +#. module: beesdoo_base +#: model:ir.actions.act_window,name:beesdoo_base.action_membercard_wizard +msgid "New Member Card" +msgstr "New Member Card" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_parent_barcode +msgid "Parent Barcode" +msgstr "Parent Barcode" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_parent_eater_id +msgid "Parent Worker" +msgstr "Parent Worker" + +#. module: beesdoo_base +#: model:ir.model,name:beesdoo_base.model_res_partner +msgid "Partner" +msgstr "Partenaire" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_eater_new_wizard_partner_id +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_partner_id +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_partner_id +msgid "Partner id" +msgstr "Partner id" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_requestprinting_wizard_partner_ids +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_set_as_printed_wizard_partner_ids +msgid "Partner ids" +msgstr "Partner ids" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_res_partner_member_card_to_be_printed +msgid "Print BEES card?" +msgstr "Print BEES card?" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.beesdoo_partner_form_view +msgid "Printing" +msgstr "Printing" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_comment +#: model:ir.model.fields,field_description:beesdoo_base.field_membercard_new_wizard_new_comment +#: model:ir.ui.view,arch_db:beesdoo_base.MemberCard Wizard +msgid "Reason" +msgstr "Motif" + +#. module: beesdoo_base +#: model:ir.actions.act_window,name:beesdoo_base.beesdoo_base_action_request_membercard_printing +msgid "Request BEES card printing" +msgstr "Request BEES card printing" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.printing_membercard_request_wizard +msgid "Request Beescard Printing" +msgstr "Request Beescard Printing" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.printing_membercard_request_wizard +msgid "Request Printing for" +msgstr "Request Printing for" + +#. module: beesdoo_base +#: model:ir.model.fields,field_description:beesdoo_base.field_member_card_responsible_id +msgid "Responsible" +msgstr "Responsable" + +#. module: beesdoo_base +#: model:ir.actions.act_window,name:beesdoo_base.beesdoo_base_action_set_membercard_as_printed +msgid "Set BEES card as printed" +msgstr "Set BEES card as printed" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.membercard_set_as_printed_wizard +msgid "Set as Printed" +msgstr "Set as Printed" + +#. module: beesdoo_base +#: model:ir.ui.view,arch_db:beesdoo_base.membercard_set_as_printed_wizard +msgid "Set as Printed for" +msgstr "Set as Printed for" + +#. module: beesdoo_base +#: selection:res.partner,eater:0 +msgid "Worker and Eater" +msgstr "Worker and Eater" + +#. module: beesdoo_base +#: code:addons/beesdoo_base/models/partner.py:42 +#, python-format +msgid "You can only set two additional eaters per worker" +msgstr "You can only set two additional eaters per worker" + +#. module: beesdoo_base +#: code:addons/beesdoo_base/models/partner.py:47 +#, python-format +msgid "You try to assign a eater to a worker but this easer is alread assign to %s please remove it before" +msgstr "You try to assign a eater to a worker but this easer is alread assign to %s please remove it before" + +#. module: beesdoo_base +#: model:ir.model,name:beesdoo_base.model_eater_new_wizard +msgid "eater.new.wizard" +msgstr "eater.new.wizard" + +#. module: beesdoo_base +#: model:ir.model,name:beesdoo_base.model_member_card +msgid "member.card" +msgstr "member.card" + +#. module: beesdoo_base +#: model:ir.model,name:beesdoo_base.model_membercard_new_wizard +msgid "membercard.new.wizard" +msgstr "membercard.new.wizard" + +#. module: beesdoo_base +#: model:ir.model,name:beesdoo_base.model_membercard_requestprinting_wizard +msgid "membercard.requestprinting.wizard" +msgstr "membercard.requestprinting.wizard" + +#. module: beesdoo_base +#: model:ir.model,name:beesdoo_base.model_membercard_set_as_printed_wizard +msgid "membercard.set_as_printed.wizard" +msgstr "membercard.set_as_printed.wizard" + diff --git a/beesdoo_base/models/__init__.py b/beesdoo_base/models/__init__.py new file mode 100644 index 0000000..f95b336 --- /dev/null +++ b/beesdoo_base/models/__init__.py @@ -0,0 +1 @@ +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 new file mode 100644 index 0000000..7c048bf --- /dev/null +++ b/beesdoo_base/models/partner.py @@ -0,0 +1,91 @@ +# -*- coding: utf-8 -*- +from openerp import models, fields, api, _ +from openerp.exceptions import ValidationError + +class Partner(models.Model): + + _inherit = 'res.partner' + + 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='Barcode', store=True) + parent_barcode = fields.Char(compute="_get_bar_code", string='Parent Barcode', store=True) + member_card_ids = fields.One2many('member.card', 'partner_id') + country_id = fields.Many2one(required=True, default=lambda self: self.env.ref('base.be')) + + member_card_to_be_printed = fields.Boolean('Print BEES card?') + last_printed = fields.Datetime('Last printed on') + cooperator_type = fields.Selection([('share_a', 'Share A'), ('share_b', 'Share B'), ('share_c', 'Share C')], store=True, compute=None) + + + @api.one + @api.depends('parent_eater_id', 'parent_eater_id.barcode', 'eater', 'member_card_ids') + def _get_bar_code(self): + if self.eater == 'eater': + self.parent_barcode = self.parent_eater_id.barcode + elif self.member_card_ids: + for c in self.member_card_ids: + if c.valid: + self.barcode = c.barcode + + @api.one + @api.constrains('child_eater_ids', 'parent_eater_id') + def _check_number_of_eaters(self): + """The owner of an A share can have a maximum of two eaters but + the owner of a B share can have a maximum of three eaters. + """ + # Get the default_code of the share for the current eater and his parent + share_type_code = self.cooperator_type + parent_share_type_code = self.parent_eater_id.cooperator_type + # Raise exception + if share_type_code == 'share_b' or parent_share_type_code == 'share_b': + if len(self.child_eater_ids) > 3 or len(self.parent_eater_id.child_eater_ids) > 3: + raise ValidationError(_('You can only set three additional eaters per worker')) + else: + if len(self.child_eater_ids) > 2 or len(self.parent_eater_id.child_eater_ids) > 2: + raise ValidationError(_('You can only set two additional eaters per worker')) + + + @api.multi + def write(self, values): + if values.get('parent_eater_id') and self.parent_eater_id: + raise ValidationError(_('You try to assign a eater to a worker but this easer is alread assign to %s please remove it before') % self.parent_eater_id.name) + # replace many2many command when writing on child_eater_ids to just remove the link + if 'child_eater_ids' in values: + for command in values['child_eater_ids']: + if command[0] == 2: + command[0] = 3 + return super(Partner, self).write(values) + + @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() + + @api.multi + def _new_card(self, reason, user_id, barcode=False): + card_data = { + 'partner_id' : self.id, + 'responsible_id' : user_id, + 'comment' : reason, + } + if barcode: + card_data['barcode'] = barcode + self.env['member.card'].create(card_data) + + @api.multi + def _new_eater(self, surname, name, email): + partner_data = { + + 'lastname' : name, + 'firstname' : surname, + 'is_customer' : True, + 'eater' : 'eater', + 'parent_eater_id' : self.id, + 'email' : email, + 'country_id' : self.country_id.id + } + return self.env['res.partner'].create(partner_data) diff --git a/beesdoo_base/report/beescard.xml b/beesdoo_base/report/beescard.xml new file mode 100644 index 0000000..34be32d --- /dev/null +++ b/beesdoo_base/report/beescard.xml @@ -0,0 +1,177 @@ + + + + + + + + + diff --git a/beesdoo_base/security/groups.xml b/beesdoo_base/security/groups.xml new file mode 100644 index 0000000..964655e --- /dev/null +++ b/beesdoo_base/security/groups.xml @@ -0,0 +1,6 @@ + + + + Bees Card Force Barcode + + \ No newline at end of file diff --git a/beesdoo_base/security/ir.model.access.csv b/beesdoo_base/security/ir.model.access.csv new file mode 100644 index 0000000..a97f8e8 --- /dev/null +++ b/beesdoo_base/security/ir.model.access.csv @@ -0,0 +1,2 @@ +"id","name","model_id/id","group_id/id","perm_read","perm_write","perm_create","perm_unlink" +"member_card_read_all","member card read all","beesdoo_base.model_member_card","","True","False","False","False" diff --git a/beesdoo_base/static/font/Roboto-Bold.ttf b/beesdoo_base/static/font/Roboto-Bold.ttf new file mode 100644 index 0000000..91ec212 Binary files /dev/null and b/beesdoo_base/static/font/Roboto-Bold.ttf differ diff --git a/beesdoo_base/static/font/Roboto-Regular.ttf b/beesdoo_base/static/font/Roboto-Regular.ttf new file mode 100644 index 0000000..7d9a6c4 Binary files /dev/null and b/beesdoo_base/static/font/Roboto-Regular.ttf differ diff --git a/beesdoo_base/static/src/img/blueline.png b/beesdoo_base/static/src/img/blueline.png new file mode 100644 index 0000000..199970a Binary files /dev/null and b/beesdoo_base/static/src/img/blueline.png differ diff --git a/beesdoo_base/static/src/img/logo.png b/beesdoo_base/static/src/img/logo.png new file mode 100644 index 0000000..0f17fc0 Binary files /dev/null and b/beesdoo_base/static/src/img/logo.png differ diff --git a/beesdoo_base/static/src/img/redline.png b/beesdoo_base/static/src/img/redline.png new file mode 100644 index 0000000..64e2423 Binary files /dev/null and b/beesdoo_base/static/src/img/redline.png differ diff --git a/beesdoo_base/views/partner.xml b/beesdoo_base/views/partner.xml new file mode 100644 index 0000000..a903ff7 --- /dev/null +++ b/beesdoo_base/views/partner.xml @@ -0,0 +1,120 @@ + + + + New Member Card + membercard.new.wizard + form + new + + + + New Eater + eater.new.wizard + form + new + + + + beesdoo.partner.form.view + res.partner + + + + + + + + + + + {'invisible': + [('cooperator_type', '=', 'share_a')]} + + + + + + + + + + + + + + + + + +