Skip to content

Commit 86cf6b6

Browse files
committed
[FIX] membership_prorate: Prevent error when using prorate with variable period without membership_prorate_variable_period module installed
1 parent 299c370 commit 86cf6b6

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

membership_prorate/models/account_move_line.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ def _prepare_invoice_line_prorate_vals(self, invoice_line):
2626
product = invoice_line.product_id
2727
date_invoice = invoice_line.move_id.invoice_date or fields.Date.today()
2828
date_from, date_to = self._get_membership_interval(product, date_invoice)
29+
if not date_from:
30+
return {
31+
"quantity": 1.0,
32+
"date_from": date_invoice,
33+
}
2934
if date_invoice < date_from:
3035
date_invoice = date_from
3136
if date_invoice > date_to:

membership_prorate/tests/test_membership_prorate.py

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,10 @@
22
# Copyright 2017-19 Tecnativa - David Vidal
33
# License AGPL-3 - See http://www.gnu.org/licenses/agpl-3.0.html
44
from datetime import date
5+
from unittest.mock import patch
56

67
from odoo.tests import Form, common
7-
8+
from odoo.addons.membership_prorate.models.account_move_line import AccountMoveLine
89

910
class TestMembershipProrate(common.SavepointCase):
1011
@classmethod
@@ -86,3 +87,19 @@ def test_create_invoice_membership_product_prorate(self):
8687
)
8788
self.assertAlmostEqual(memb_line.member_price, 0.00, 2)
8889
self.assertEqual(memb_line.date_from, date(2017, 12, 31))
90+
91+
def test_create_invoice_membership_product_prorate_variable_period(self):
92+
"""It is a test for case where membership type is set to variable
93+
on product with membership_prorate_variable_period not installed"""
94+
95+
def _get_membership_interval(self, product, date):
96+
return False, False
97+
98+
with patch.object(
99+
AccountMoveLine,
100+
"_get_membership_interval",
101+
_get_membership_interval,
102+
):
103+
invoice = self.partner.create_membership_invoice(self.product, 1.0)
104+
self.assertEqual(invoice.invoice_line_ids[0].quantity, 1.0)
105+

0 commit comments

Comments
 (0)