From 6c13077d6a93ed98849196a58ee79608d942a188 Mon Sep 17 00:00:00 2001 From: Victor Champonnois Date: Mon, 18 Jul 2022 11:18:03 +0200 Subject: [PATCH 01/32] [REF] split beesdoo_base -> member_card [UPD] Update member_card.pot --- member_card/README.rst | 70 +++ member_card/__init__.py | 2 + member_card/__manifest__.py | 25 ++ member_card/demo/cooperators.xml | 122 ++++++ member_card/i18n/member_card.pot | 138 ++++++ member_card/models/__init__.py | 2 + member_card/models/membercard.py | 28 ++ member_card/models/partner.py | 43 ++ member_card/pre_init_hook.py | 47 ++ member_card/readme/CONTRIBUTORS.rst | 2 + member_card/readme/DESCRIPTION.rst | 11 + member_card/readme/ROADMAP.rst | 12 + member_card/security/groups.xml | 7 + member_card/security/ir.model.access.csv | 2 + member_card/static/description/index.html | 427 +++++++++++++++++++ member_card/views/partner.xml | 67 +++ member_card/wizard/__init__.py | 1 + member_card/wizard/membercard_new_wizard.py | 64 +++ member_card/wizard/membercard_new_wizard.xml | 98 +++++ 19 files changed, 1168 insertions(+) create mode 100644 member_card/README.rst create mode 100644 member_card/__init__.py create mode 100644 member_card/__manifest__.py create mode 100644 member_card/demo/cooperators.xml create mode 100644 member_card/i18n/member_card.pot create mode 100644 member_card/models/__init__.py create mode 100644 member_card/models/membercard.py create mode 100644 member_card/models/partner.py create mode 100644 member_card/pre_init_hook.py create mode 100644 member_card/readme/CONTRIBUTORS.rst create mode 100644 member_card/readme/DESCRIPTION.rst create mode 100644 member_card/readme/ROADMAP.rst create mode 100644 member_card/security/groups.xml create mode 100644 member_card/security/ir.model.access.csv create mode 100644 member_card/static/description/index.html create mode 100644 member_card/views/partner.xml create mode 100644 member_card/wizard/__init__.py create mode 100644 member_card/wizard/membercard_new_wizard.py create mode 100644 member_card/wizard/membercard_new_wizard.xml diff --git a/member_card/README.rst b/member_card/README.rst new file mode 100644 index 000000000..a5b09d701 --- /dev/null +++ b/member_card/README.rst @@ -0,0 +1,70 @@ +=========== +Member Card +=========== + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-coopiteasy%2Fobeesdoo-lightgray.png?logo=github + :target: https://github.com/coopiteasy/obeesdoo/tree/12.0/member_card + :alt: coopiteasy/obeesdoo + +|badge1| |badge2| |badge3| + +Create a member card and link it to a partner + +**Table of contents** + +.. contents:: + :local: + +Known issues / Roadmap +====================== + +**Customer Barcodes** + +- odoo/base adds `barcode` field on `res.partner`. +- member_card also adds `barcode` but defines it as computed and stored. + +On `member_card` install, odoo will compute the values for barcode field and **erase pre-existing values**. +It will also make it impossible to load data on that field. + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Beescoop - Cellule IT +* Coop IT Easy SCRLfs + +Contributors +~~~~~~~~~~~~ + +* Beescoop - Cellule IT +* Coop IT Easy SCRLfs + +Maintainers +~~~~~~~~~~~ + +This module is part of the `coopiteasy/obeesdoo `_ project on GitHub. + +You are welcome to contribute. diff --git a/member_card/__init__.py b/member_card/__init__.py new file mode 100644 index 000000000..9b4296142 --- /dev/null +++ b/member_card/__init__.py @@ -0,0 +1,2 @@ +from . import models +from . import wizard diff --git a/member_card/__manifest__.py b/member_card/__manifest__.py new file mode 100644 index 000000000..499c7ba33 --- /dev/null +++ b/member_card/__manifest__.py @@ -0,0 +1,25 @@ +# Copyright 2017 - 2020 BEES coop SCRLfs +# - Robin Keunen +# - Houssine bakkali +# - Rémy Taymans +# - Elise Dupont +# - Thibault François +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +{ + "name": "Member Card", + "author": "Beescoop - Cellule IT, Coop IT Easy SC", + "summary": "Create a member card and link it to a partner.", + "website": "https://github.com/beescoop/Obeesdoo", + "category": "Sales", + "version": "12.0.1.0.1", + "depends": ["barcodes", "partner_firstname"], + "data": [ + "security/groups.xml", + "security/ir.model.access.csv", + "wizard/membercard_new_wizard.xml", + "views/partner.xml", + ], + "installable": True, + "demo": ["demo/cooperators.xml", "demo/eaters.xml"], + "license": "AGPL-3", +} diff --git a/member_card/demo/cooperators.xml b/member_card/demo/cooperators.xml new file mode 100644 index 000000000..5ea8b1967 --- /dev/null +++ b/member_card/demo/cooperators.xml @@ -0,0 +1,122 @@ + + + + + Fernand Peso + Fernand + Peso + + + fernand_peso@demo.net + Avenue des Bas-de-Callanques, 15 + Etterbeek + 1040 + + + + + Dupont Dupont + + + d_dupont@demo.net + Rue des sables, 20 + Bruxelles + 10000 + + + + + Ronan Le Gall + + + ronan_gall@demo.net + Rue des pecheurs, 23 + Landudec + 29710 + + + + + Elouan Bees + + + elouan_bees@demo.net + Rue Wéry, 15 + Ixelles + 1050 + + + + + Anne de Marchalo + + + anne_marchalo@demo.net + Rue du Wels, 6 + Nantes + 44000 + + + + + Jean Beaumont + + + jean_beaumont@demo.net + Rue de la Jungle, 8 + St-Gilles + 1060 + + + + + 421457731741 + Demo data + + + + + + + 429919251493 + Demo data + + + + + + + 421457731742 + Demo data + + + + + + + 421457731743 + Demo data + + + + + + + 421457731744 + Demo data + + + + + + + 421457731745 + Demo data + + + + + diff --git a/member_card/i18n/member_card.pot b/member_card/i18n/member_card.pot new file mode 100644 index 000000000..ecdcda6b5 --- /dev/null +++ b/member_card/i18n/member_card.pot @@ -0,0 +1,138 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * member_card +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 12.0\n" +"Report-Msgid-Bugs-To: \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: member_card +#: model:ir.model.fields,field_description:member_card.field_res_partner__barcode +#: model:ir.model.fields,field_description:member_card.field_res_users__barcode +msgid "Barcode" +msgstr "" + +#. module: member_card +#: model:res.groups,name:member_card.group_force_barcode +msgid "Bees Card Force Barcode" +msgstr "" + +#. module: member_card +#: model:ir.actions.report,name:member_card.report_beescard_cm +msgid "Beescaard" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.MemberCard Wizard +#: model_terms:ir.ui.view,arch_db:member_card.membercard_set_as_printed_wizard +#: model_terms:ir.ui.view,arch_db:member_card.printing_membercard_request_wizard +msgid "Cancel" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.beesdoo_partner_form_view +msgid "Cards" +msgstr "" + +#. module: member_card +#: model:ir.model,name:member_card.model_res_partner +msgid "Contact" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.MemberCard Wizard +msgid "Create" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.beescard_template_cm +msgid "Embedded Image" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.beescard_template_cm +msgid "En cas de perte,\n" +" prévenez-nous via\n" +" membre@bees-coop.be" +msgstr "" + +#. module: member_card +#: model:ir.model,name:member_card.model_member_card +#: model:ir.model,name:member_card.model_membercard_new_wizard +#: model_terms:ir.ui.view,arch_db:member_card.beesdoo_partner_form_view +msgid "Member Card" +msgstr "" + +#. module: member_card +#: model:ir.model,name:member_card.model_membercard_requestprinting_wizard +msgid "Member Card - Request Print Wizard" +msgstr "" + +#. module: member_card +#: model:ir.model,name:member_card.model_membercard_set_as_printed_wizard +msgid "Member card - Set as printed wizard" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.beesdoo_partner_form_view +msgid "New Card" +msgstr "" + +#. module: member_card +#: model:ir.actions.act_window,name:member_card.action_membercard_wizard +msgid "New Member Card" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.MemberCard Wizard +msgid "Reason" +msgstr "" + +#. module: member_card +#: model:ir.actions.act_window,name:member_card.member_card_action_request_membercard_printing +msgid "Request BEES card printing" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.printing_membercard_request_wizard +msgid "Request Member Card Printing" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.printing_membercard_request_wizard +msgid "Request Printing for" +msgstr "" + +#. module: member_card +#: model:ir.actions.act_window,name:member_card.member_card_action_set_membercard_as_printed +msgid "Set BEES card as printed" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.membercard_set_as_printed_wizard +msgid "Set as Printed" +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.membercard_set_as_printed_wizard +msgid "Set as Printed for" +msgstr "" + +#. module: member_card +#: model:ir.model.fields,help:member_card.field_res_partner__barcode +#: model:ir.model.fields,help:member_card.field_res_users__barcode +msgid "Use a barcode to identify this contact from the Point of Sale." +msgstr "" + +#. module: member_card +#: model_terms:ir.ui.view,arch_db:member_card.beescard_template_cm +msgid "www.bees-coop.be" +msgstr "" + diff --git a/member_card/models/__init__.py b/member_card/models/__init__.py new file mode 100644 index 000000000..007bc83fa --- /dev/null +++ b/member_card/models/__init__.py @@ -0,0 +1,2 @@ +from . import membercard +from . import partner diff --git a/member_card/models/membercard.py b/member_card/models/membercard.py new file mode 100644 index 000000000..a0a86bda8 --- /dev/null +++ b/member_card/models/membercard.py @@ -0,0 +1,28 @@ +import uuid + +from odoo import fields, models + + +class MemberCard(models.Model): + _name = "member.card" + _order = "create_date desc" + _description = "Member Card" + + 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)) + + # todo rename to active + valid = fields.Boolean(default=True, string="Active") + barcode = fields.Char("Barcode", oldname="ean13", default=_compute_bar_code) + partner_id = fields.Many2one("res.partner") + 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/member_card/models/partner.py b/member_card/models/partner.py new file mode 100644 index 000000000..11eb47d01 --- /dev/null +++ b/member_card/models/partner.py @@ -0,0 +1,43 @@ +# Copyright 2020 Coop IT Easy SCRL fs +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). + +from odoo import api, fields, models + + +class Partner(models.Model): + _inherit = "res.partner" + + barcode = fields.Char(compute="_compute_bar_code", string="Barcode", store=True) + member_card_ids = fields.One2many("member.card", "partner_id") + + member_card_to_be_printed = fields.Boolean("Print Member card?") + last_printed = fields.Datetime("Last printed on") + + @api.multi + @api.depends( + "member_card_ids", + ) + def _compute_bar_code(self): + for partner in self: + if partner.member_card_ids: + for c in partner.member_card_ids: + if c.valid: + partner.barcode = c.barcode + + @api.multi + def _deactivate_active_cards(self): + self.ensure_one() + 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) diff --git a/member_card/pre_init_hook.py b/member_card/pre_init_hook.py new file mode 100644 index 000000000..2d7ae03df --- /dev/null +++ b/member_card/pre_init_hook.py @@ -0,0 +1,47 @@ +from openupgradelib import openupgrade + +from odoo import SUPERUSER_ID, api + + +def rename_xml_ids(cr): + renamed_view_xml_ids = ( + ( + "beesdoo_base.beesdoo_partner_form_view", + "member_card.res_partner_view_form", + ), + ( + "beesdoo_base.view_beesdoo_res_partner_filter", + "member_card.res_partner_view_filter", + ), + ( + "beesdoo_base.MemberCard Wizard", + "member_card.membercard_new_wizard_view_form", + ), + ( + "beesdoo_base.printing_membercard_request_wizard", + "member_card.membercard_requestprinting_wizard_view_form", + ), + ( + "beesdoo_base.membercard_set_as_printed_wizard", + "member_card.membercard_set_as_printed_wizard_view_form", + ), + ( + "beesdoo_base.action_membercard_wizard", + "member_card.membercard_wizard_action", + ), + ( + "beesdoo_base.report_beescard_cm", + "member_card.membercard_report_action", + ), + ( + "beesdoo_base.beesdoo_base_action_request_membercard_printing", + "member_card.member_card_requestprinting_wizard_action", + ), + ( + "beesdoo_base.beesdoo_base_action_set_membercard_as_printed", + "member_card.member_card_set_as_printed_wizard_action", + ), + ) + + env = api.Environment(cr, SUPERUSER_ID, {}) + openupgrade.rename_xmlids(env.cr, renamed_view_xml_ids) diff --git a/member_card/readme/CONTRIBUTORS.rst b/member_card/readme/CONTRIBUTORS.rst new file mode 100644 index 000000000..7fd296206 --- /dev/null +++ b/member_card/readme/CONTRIBUTORS.rst @@ -0,0 +1,2 @@ +* Beescoop - Cellule IT +* Coop IT Easy SCRLfs diff --git a/member_card/readme/DESCRIPTION.rst b/member_card/readme/DESCRIPTION.rst new file mode 100644 index 000000000..4d0376c68 --- /dev/null +++ b/member_card/readme/DESCRIPTION.rst @@ -0,0 +1,11 @@ +Create a member card and link it to a partner. + +- each member card has a barcode +- create new cards in the "member card" tab of the partner form +- the partner's card and barcode history is visible in the member card ta +- the barcode of a partner is computed from the last active member card +- a boolean "Print Member card?" allows to filter on partners for which you need to print new cards. + +Careful : this module overrides the barcodes already defined on the partners. + +Note that there is no member card template in this module, cf ROADMAP. diff --git a/member_card/readme/ROADMAP.rst b/member_card/readme/ROADMAP.rst new file mode 100644 index 000000000..b6cf5d403 --- /dev/null +++ b/member_card/readme/ROADMAP.rst @@ -0,0 +1,12 @@ +**Customer Barcodes** + +- odoo/base adds `barcode` field on `res.partner`. +- member_card also adds `barcode` but defines it as computed and stored. + +On `member_card` install, odoo will compute the values for barcode field and **erase pre-existing values**. +It will also make it impossible to load data on that field. + +**Member Card Template** + +Integrate template developped for Polln here : `[ADD] member_card: add member card report +#289 `_ diff --git a/member_card/security/groups.xml b/member_card/security/groups.xml new file mode 100644 index 000000000..0fcd5c7a9 --- /dev/null +++ b/member_card/security/groups.xml @@ -0,0 +1,7 @@ + + + + Member Card Force Barcode + + + diff --git a/member_card/security/ir.model.access.csv b/member_card/security/ir.model.access.csv new file mode 100644 index 000000000..289bb5f9c --- /dev/null +++ b/member_card/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","member_card.model_member_card","","True","False","False","False" diff --git a/member_card/static/description/index.html b/member_card/static/description/index.html new file mode 100644 index 000000000..3eab8396e --- /dev/null +++ b/member_card/static/description/index.html @@ -0,0 +1,427 @@ + + + + + + +Member Card + + + +
+

Member Card

+ + +

Beta License: AGPL-3 coopiteasy/obeesdoo

+

Create a member card and link it to a partner

+

Table of contents

+ +
+

Known issues / Roadmap

+

Customer Barcodes

+
    +
  • odoo/base adds barcode field on res.partner.
  • +
  • beesdoo_base also adds barcode but defines it as computed and stored.
  • +
+

On beesdoo_base install, odoo will compute the values for barcode field and erase pre-existing values. +It will also make it impossible to load data on that field.

+
+
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Beescoop - Cellule IT
  • +
  • Coop IT Easy SCRLfs
  • +
+
+
+

Contributors

+
    +
  • Beescoop - Cellule IT
  • +
  • Coop IT Easy SCRLfs
  • +
+
+
+

Maintainers

+

This module is part of the coopiteasy/obeesdoo project on GitHub.

+

You are welcome to contribute.

+
+
+
+ + diff --git a/member_card/views/partner.xml b/member_card/views/partner.xml new file mode 100644 index 000000000..98e49cf13 --- /dev/null +++ b/member_card/views/partner.xml @@ -0,0 +1,67 @@ + + + + member.card.partner.form.view + res.partner + + + + + + + + + + + + + + + + + + + + + + + + +