Skip to content

Commit e48a3f6

Browse files
committed
Merge commit 'refs/pull/214/head' of https://github.com/oca/vertical-association into merged
2 parents d4b526e + 362ba20 commit e48a3f6

16 files changed

Lines changed: 1149 additions & 0 deletions
Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
=================================
2+
Membership Delegated Partner Line
3+
=================================
4+
5+
..
6+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
7+
!! This file is generated by oca-gen-addon-readme !!
8+
!! changes will be overwritten. !!
9+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
10+
!! source digest: sha256:922c1a32a7f488a16381a4f206b3863d06148d3429a5ab01e10130c16584ad3f
11+
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
12+
13+
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
14+
:target: https://odoo-community.org/page/development-status
15+
:alt: Beta
16+
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
17+
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
18+
:alt: License: AGPL-3
19+
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fvertical--association-lightgray.png?logo=github
20+
:target: https://github.com/OCA/vertical-association/tree/18.0/membership_delegated_partner_line
21+
:alt: OCA/vertical-association
22+
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
23+
:target: https://translation.odoo-community.org/projects/vertical-association-18-0/vertical-association-18-0-membership_delegated_partner_line
24+
:alt: Translate me on Weblate
25+
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
26+
:target: https://runboat.odoo-community.org/builds?repo=OCA/vertical-association&target_branch=18.0
27+
:alt: Try me on Runboat
28+
29+
|badge1| |badge2| |badge3| |badge4| |badge5|
30+
31+
This module allows to delegate a membership line to a partner
32+
independently of the invoicing partner. This is done at the invoice line
33+
level.
34+
35+
It will also update the description on the invoice line to include the
36+
member's name.
37+
38+
If a delegated partner is not provided, the membership will assign to
39+
the invoice partner.
40+
41+
**Table of contents**
42+
43+
.. contents::
44+
:local:
45+
46+
Configuration
47+
=============
48+
49+
This module is incompatible with membership_delegated_partner and any
50+
module that depends on it. Prior to installing this module, if you use
51+
membership_delegated_partner:
52+
53+
1. Prior to uninstalling membership_delegated_partner and installing
54+
this one, run replace_membership_delegated_partner.sql.
55+
2. Uninstall membership_delegated_partner.
56+
3. Install this module.
57+
58+
Usage
59+
=====
60+
61+
1. In an invoice with membership lines, choose a delegated partner for
62+
each line.
63+
2. The membership line will go to the delegated partner.
64+
65+
Bug Tracker
66+
===========
67+
68+
Bugs are tracked on `GitHub Issues <https://github.com/OCA/vertical-association/issues>`_.
69+
In case of trouble, please check there if your issue has already been reported.
70+
If you spotted it first, help us to smash it by providing a detailed and welcomed
71+
`feedback <https://github.com/OCA/vertical-association/issues/new?body=module:%20membership_delegated_partner_line%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
72+
73+
Do not contact contributors directly about support or help with technical issues.
74+
75+
Credits
76+
=======
77+
78+
Authors
79+
-------
80+
81+
* Graeme Gellatly
82+
83+
Contributors
84+
------------
85+
86+
- Graeme Gellatly <graeme@o4sb.com> (https://o4sb.com)
87+
88+
Other credits
89+
-------------
90+
91+
The development of this module was heavily based on
92+
membership_delegated_partner:
93+
94+
Thanks to all the below for their prior work on this module
95+
96+
- `Tecnativa <https://www.tecnativa.com>`__:
97+
98+
- Pedro M. Baeza
99+
- Rafael Blasco
100+
- David Vidal
101+
102+
- `Onestein <https://onestein.eu>`__:
103+
104+
- Andrea Stirpe
105+
106+
Maintainers
107+
-----------
108+
109+
This module is maintained by the OCA.
110+
111+
.. image:: https://odoo-community.org/logo.png
112+
:alt: Odoo Community Association
113+
:target: https://odoo-community.org
114+
115+
OCA, or the Odoo Community Association, is a nonprofit organization whose
116+
mission is to support the collaborative development of Odoo features and
117+
promote its widespread use.
118+
119+
This module is part of the `OCA/vertical-association <https://github.com/OCA/vertical-association/tree/18.0/membership_delegated_partner_line>`_ project on GitHub.
120+
121+
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from . import models
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
# Copyright 2023 Graeme Gellatly
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
{
5+
"name": "Membership Delegated Partner Line",
6+
"summary": """
7+
Adds ability to specify member at invoice line level""",
8+
"version": "18.0.1.0.0",
9+
"license": "AGPL-3",
10+
"author": "Graeme Gellatly,Odoo Community Association (OCA)",
11+
"website": "https://github.com/OCA/vertical-association",
12+
"depends": [
13+
"membership",
14+
],
15+
"data": [
16+
"views/account_move.xml",
17+
],
18+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following modules:
3+
# * membership_delegated_partner_line
4+
#
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Odoo Server 14.0\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"Last-Translator: Automatically generated\n"
10+
"Language-Team: none\n"
11+
"Language: it\n"
12+
"MIME-Version: 1.0\n"
13+
"Content-Type: text/plain; charset=UTF-8\n"
14+
"Content-Transfer-Encoding: \n"
15+
"Plural-Forms: nplurals=2; plural=n != 1;\n"
16+
17+
#. module: membership_delegated_partner_line
18+
#: model:ir.model.fields,help:membership_delegated_partner_line.field_account_move_line__is_membership
19+
msgid "Check if the product is eligible for membership."
20+
msgstr ""
21+
22+
#. module: membership_delegated_partner_line
23+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__delegated_member_id
24+
msgid "Delegated Member"
25+
msgstr ""
26+
27+
#. module: membership_delegated_partner_line
28+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move__display_name
29+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__display_name
30+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line__display_name
31+
msgid "Display Name"
32+
msgstr ""
33+
34+
#. module: membership_delegated_partner_line
35+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move__id
36+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__id
37+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line__id
38+
msgid "ID"
39+
msgstr ""
40+
41+
#. module: membership_delegated_partner_line
42+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_bank_statement_line__is_membership_invoice
43+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move__is_membership_invoice
44+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_payment__is_membership_invoice
45+
msgid "Is Membership Invoice"
46+
msgstr ""
47+
48+
#. module: membership_delegated_partner_line
49+
#: model:ir.model,name:membership_delegated_partner_line.model_account_move
50+
msgid "Journal Entry"
51+
msgstr ""
52+
53+
#. module: membership_delegated_partner_line
54+
#: model:ir.model,name:membership_delegated_partner_line.model_account_move_line
55+
msgid "Journal Item"
56+
msgstr ""
57+
58+
#. module: membership_delegated_partner_line
59+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move____last_update
60+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line____last_update
61+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line____last_update
62+
msgid "Last Modified on"
63+
msgstr ""
64+
65+
#. module: membership_delegated_partner_line
66+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__is_membership
67+
msgid "Membership"
68+
msgstr ""
69+
70+
#. module: membership_delegated_partner_line
71+
#: model:ir.model,name:membership_delegated_partner_line.model_membership_membership_line
72+
msgid "Membership Line"
73+
msgstr ""
74+
75+
#. module: membership_delegated_partner_line
76+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line__partner
77+
msgid "Partner"
78+
msgstr ""
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
# Translation of Odoo Server.
2+
# This file contains the translation of the following modules:
3+
# * membership_delegated_partner_line
4+
#
5+
msgid ""
6+
msgstr ""
7+
"Project-Id-Version: Odoo Server 14.0\n"
8+
"Report-Msgid-Bugs-To: \n"
9+
"Last-Translator: \n"
10+
"Language-Team: \n"
11+
"MIME-Version: 1.0\n"
12+
"Content-Type: text/plain; charset=UTF-8\n"
13+
"Content-Transfer-Encoding: \n"
14+
"Plural-Forms: \n"
15+
16+
#. module: membership_delegated_partner_line
17+
#: model:ir.model.fields,help:membership_delegated_partner_line.field_account_move_line__is_membership
18+
msgid "Check if the product is eligible for membership."
19+
msgstr ""
20+
21+
#. module: membership_delegated_partner_line
22+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__delegated_member_id
23+
msgid "Delegated Member"
24+
msgstr ""
25+
26+
#. module: membership_delegated_partner_line
27+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move__display_name
28+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__display_name
29+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line__display_name
30+
msgid "Display Name"
31+
msgstr ""
32+
33+
#. module: membership_delegated_partner_line
34+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move__id
35+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__id
36+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line__id
37+
msgid "ID"
38+
msgstr ""
39+
40+
#. module: membership_delegated_partner_line
41+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_bank_statement_line__is_membership_invoice
42+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move__is_membership_invoice
43+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_payment__is_membership_invoice
44+
msgid "Is Membership Invoice"
45+
msgstr ""
46+
47+
#. module: membership_delegated_partner_line
48+
#: model:ir.model,name:membership_delegated_partner_line.model_account_move
49+
msgid "Journal Entry"
50+
msgstr ""
51+
52+
#. module: membership_delegated_partner_line
53+
#: model:ir.model,name:membership_delegated_partner_line.model_account_move_line
54+
msgid "Journal Item"
55+
msgstr ""
56+
57+
#. module: membership_delegated_partner_line
58+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move____last_update
59+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line____last_update
60+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line____last_update
61+
msgid "Last Modified on"
62+
msgstr ""
63+
64+
#. module: membership_delegated_partner_line
65+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_account_move_line__is_membership
66+
msgid "Membership"
67+
msgstr ""
68+
69+
#. module: membership_delegated_partner_line
70+
#: model:ir.model,name:membership_delegated_partner_line.model_membership_membership_line
71+
msgid "Membership Line"
72+
msgstr ""
73+
74+
#. module: membership_delegated_partner_line
75+
#: model:ir.model.fields,field_description:membership_delegated_partner_line.field_membership_membership_line__partner
76+
msgid "Partner"
77+
msgstr ""
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
from . import account_move_line
2+
from . import account_move
3+
from . import membership_line
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Copyright 2023 Graeme Gellatly
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from odoo import api, fields, models
5+
6+
7+
class AccountMove(models.Model):
8+
_inherit = "account.move"
9+
10+
is_membership_invoice = fields.Boolean(compute="_compute_is_membership_invoice")
11+
12+
@api.depends("invoice_line_ids", "line_ids", "move_type", "line_ids.product_id")
13+
@api.onchange("invoice_line_ids", "line_ids", "move_type")
14+
def _compute_is_membership_invoice(self):
15+
for rec in self:
16+
is_membership_invoice = False
17+
for line in rec.line_ids:
18+
if line.product_id.membership:
19+
is_membership_invoice = True
20+
break
21+
rec.is_membership_invoice = is_membership_invoice
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
# Copyright 2023 Graeme Gellatly
2+
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
3+
4+
from odoo import api, fields, models
5+
6+
7+
class AccountMoveLine(models.Model):
8+
_inherit = "account.move.line"
9+
10+
delegated_member_id = fields.Many2one(comodel_name="res.partner")
11+
is_membership = fields.Boolean(related="product_id.membership")
12+
13+
def _get_partner_for_membership(self):
14+
"""Auxiliary method for getting the correct membership partner for
15+
certain operations like initial fee check.
16+
"""
17+
self.ensure_one()
18+
return self.delegated_member_id or self.move_id.partner_id
19+
20+
@api.onchange("product_id")
21+
def _onchange_product_id_membership(self):
22+
"""Drop delegated member if not a membership line."""
23+
if not self.product_id.membership:
24+
self.delegated_member_id = False
25+
26+
@api.onchange("delegated_member_id")
27+
def _onchange_delegated_member_id(self):
28+
"""Set description on delegated member change."""
29+
self.name = self._get_computed_name()
30+
31+
def _get_computed_name(self):
32+
name = self.move_id.partner_id.name
33+
if self.delegated_member_id:
34+
name += f" ({self.delegated_member_id.name})"
35+
return name

0 commit comments

Comments
 (0)