diff --git a/subscription_oca/__manifest__.py b/subscription_oca/__manifest__.py
index f34b423f9..a38c5909c 100644
--- a/subscription_oca/__manifest__.py
+++ b/subscription_oca/__manifest__.py
@@ -3,7 +3,7 @@
{
"name": "Subscription management",
"summary": "Generate recurring invoices.",
- "version": "16.0.1.0.0",
+ "version": "16.0.1.0.1",
"development_status": "Beta",
"category": "Subscription Management",
"website": "https://github.com/OCA/contract",
@@ -22,6 +22,7 @@
"data/ir_cron.xml",
"data/sale_subscription_data.xml",
"wizard/close_subscription_wizard.xml",
+ "report/report_invoice.xml",
"security/ir.model.access.csv",
],
"installable": True,
diff --git a/subscription_oca/models/account_move.py b/subscription_oca/models/account_move.py
index 7b3679697..526873990 100644
--- a/subscription_oca/models/account_move.py
+++ b/subscription_oca/models/account_move.py
@@ -10,6 +10,8 @@ class AccountMove(models.Model):
subscription_id = fields.Many2one(
comodel_name="sale.subscription", string="Subscription"
)
+ subscription_start_date = fields.Date(readonly=True)
+ subscription_end_date = fields.Date(readonly=True)
def action_open_subscription(self):
self.ensure_one()
diff --git a/subscription_oca/models/sale_subscription.py b/subscription_oca/models/sale_subscription.py
index 95edbdf81..8bdbcca80 100644
--- a/subscription_oca/models/sale_subscription.py
+++ b/subscription_oca/models/sale_subscription.py
@@ -212,15 +212,17 @@ def _onchange_template_id(self):
else:
self.calculate_recurring_next_date(today)
+ def _calculate_recurring_next_date(self, start_date):
+ self.ensure_one()
+ if not self.template_id:
+ return start_date
+ type_interval = self.template_id.recurring_rule_type
+ interval = int(self.template_id.recurring_interval)
+ return start_date + relativedelta(**{type_interval: interval})
+
def calculate_recurring_next_date(self, start_date):
- if self.account_invoice_ids_count == 0:
- self.recurring_next_date = date.today()
- else:
- type_interval = self.template_id.recurring_rule_type
- interval = int(self.template_id.recurring_interval)
- self.recurring_next_date = start_date + relativedelta(
- **{type_interval: interval}
- )
+ self.ensure_one()
+ self.recurring_next_date = self._calculate_recurring_next_date(start_date)
@api.onchange("partner_id")
def onchange_partner_id(self):
@@ -272,8 +274,21 @@ def _prepare_sale_order(self, line_ids=False):
"order_line": line_ids,
}
+ def _generate_subscription_date_range(self):
+ self.ensure_one()
+ if self.account_invoice_ids_count == 0:
+ start_date = self.date_start
+ end_date = self.recurring_next_date
+ else:
+ start_date = self.recurring_next_date
+ end_date = self._calculate_recurring_next_date(self.recurring_next_date)
+
+ return start_date, end_date
+
def _prepare_account_move(self, line_ids):
self.ensure_one()
+ start_date, end_date = self._generate_subscription_date_range()
+
values = {
"partner_id": self.partner_id.id,
"invoice_date": self.recurring_next_date,
@@ -283,6 +298,8 @@ def _prepare_account_move(self, line_ids):
"partner_bank_id": self.company_id.partner_id.bank_ids[:1].id,
"invoice_line_ids": line_ids,
"subscription_id": self.id,
+ "subscription_start_date": start_date,
+ "subscription_end_date": end_date,
}
if self.journal_id:
values["journal_id"] = self.journal_id.id
diff --git a/subscription_oca/models/sale_subscription_template.py b/subscription_oca/models/sale_subscription_template.py
index df89f401b..6b54c1aff 100644
--- a/subscription_oca/models/sale_subscription_template.py
+++ b/subscription_oca/models/sale_subscription_template.py
@@ -60,6 +60,9 @@ class SaleSubscriptionTemplate(models.Model):
subscription_count = fields.Integer(
compute="_compute_subscription_count", string="subscription_ids"
)
+ show_subscription_range = fields.Boolean(
+ help="Display the subscription range in the invoice",
+ )
def _compute_subscription_count(self):
data = self.env["sale.subscription"].read_group(
diff --git a/subscription_oca/report/report_invoice.xml b/subscription_oca/report/report_invoice.xml
new file mode 100644
index 000000000..14714a2ce
--- /dev/null
+++ b/subscription_oca/report/report_invoice.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
Subscription:
+
+ -
+
+
+
+
+
+
diff --git a/subscription_oca/views/account_move_views.xml b/subscription_oca/views/account_move_views.xml
index c3c6e403e..9a356331e 100644
--- a/subscription_oca/views/account_move_views.xml
+++ b/subscription_oca/views/account_move_views.xml
@@ -1,16 +1,31 @@
-
+
+
account.move
-
+
+ class="oe_stat_button" icon="fa-calendar"
+ string="Subscription"
+ attrs="{'invisible': [('subscription_id', '=', False)]}" />
+
+
+
diff --git a/subscription_oca/views/sale_subscription_template_views.xml b/subscription_oca/views/sale_subscription_template_views.xml
index f6ac959ce..d713c4c4e 100644
--- a/subscription_oca/views/sale_subscription_template_views.xml
+++ b/subscription_oca/views/sale_subscription_template_views.xml
@@ -85,6 +85,7 @@
+