diff --git a/subscription_package/__manifest__.py b/subscription_package/__manifest__.py
index ac6d79e03..c4576ef64 100644
--- a/subscription_package/__manifest__.py
+++ b/subscription_package/__manifest__.py
@@ -22,7 +22,7 @@
{
'name': 'Subscription Management For Community',
- 'Version': '15.0.1.0.0',
+ 'version': '15.0.1.1.1',
'summary': 'Subscription Package Management Module For Odoo15 Community',
'description': 'Subscription Package Management Module For Odoo15 Community',
'category': 'Sales',
@@ -47,6 +47,7 @@
'views/subscription_renew.xml',
'views/mail_activity_views.xml',
'views/res_partner.xml',
+ 'views/recurrence_views.xml',
'report/subscription_report_view.xml',
],
'images': ['static/description/banner.png'],
diff --git a/subscription_package/models/__init__.py b/subscription_package/models/__init__.py
index eaa606d7f..d51564e79 100644
--- a/subscription_package/models/__init__.py
+++ b/subscription_package/models/__init__.py
@@ -19,7 +19,6 @@
# If not, see .
#
#############################################################################
-
from . import subscription_plan
from . import subscription_stage
from . import subscription_package
@@ -27,3 +26,4 @@ from . import subscription_products
from . import subscription_close
from . import subscription_renew
from . import res_partner
+from . import recurrence_period
diff --git a/subscription_package/models/recurrence_period.py b/subscription_package/models/recurrence_period.py
new file mode 100644
index 000000000..f5d83c85f
--- /dev/null
+++ b/subscription_package/models/recurrence_period.py
@@ -0,0 +1,43 @@
+# -*- coding: utf-8 -*-
+#############################################################################
+#
+# Cybrosys Technologies Pvt. Ltd.
+#
+# Copyright (C) 2022-TODAY Cybrosys Technologies()
+# Author: Cybrosys Techno Solutions()
+#
+# You can modify it under the terms of the GNU LESSER
+# GENERAL PUBLIC LICENSE (LGPL v3), Version 3.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU LESSER GENERAL PUBLIC LICENSE (LGPL v3) for more details.
+#
+# You should have received a copy of the GNU LESSER GENERAL PUBLIC LICENSE
+# (LGPL v3) along with this program.
+# If not, see .
+#
+#############################################################################
+from odoo import models, fields
+
+
+class RecurrencePeriod(models.Model):
+ """This class is used to create new model recurrence period"""
+ _name = "recurrence.period"
+ _description = "Recurrence Period "
+
+ name = fields.Char(string="Name")
+ duration = fields.Float(string="Duration")
+ unit = fields.Selection([('hours', 'hours'),
+ ('days', 'Days'), ('weeks', 'Weeks'),
+ ('months', 'Months'), ('years', 'Years')],
+ string='Unit')
+
+
+class SubPackages(models.Model):
+ """ This function is used to inherit subscription packages"""
+ _inherit = 'subscription.package'
+
+ recurrence_period_id = fields.Many2one("recurrence.period",
+ string="Recurrence Period")
diff --git a/subscription_package/models/subscription_package.py b/subscription_package/models/subscription_package.py
index 17c33f319..935a3986e 100644
--- a/subscription_package/models/subscription_package.py
+++ b/subscription_package/models/subscription_package.py
@@ -49,6 +49,7 @@ class SubscriptionPackageProductLine(models.Model):
related='product_id.uom_id.category_id')
unit_price = fields.Float(string='Unit Price', store=True, readonly=False,
related='product_id.list_price')
+ discount = fields.Float(string="Discount (%)")
currency_id = fields.Many2one('res.currency', string='Currency',
store=True,
related='subscription_id.currency_id')
@@ -60,12 +61,14 @@ class SubscriptionPackageProductLine(models.Model):
store=True,
related='subscription_id.partner_id')
- @api.depends('product_qty', 'unit_price')
+ @api.depends('product_qty', 'unit_price', 'discount')
def _compute_total_amount(self):
""" Calculate subtotal amount of product line """
for rec in self:
if rec.product_id:
rec.total_amount = rec.unit_price * rec.product_qty
+ if rec.discount != 0:
+ rec.total_amount -= rec.total_amount * (rec.discount / 100)
class SubscriptionPackage(models.Model):
@@ -257,25 +260,25 @@ class SubscriptionPackage(models.Model):
"""Button to start subscription package"""
if not self.start_date:
self.start_date = datetime.date.today()
- for rec in self:
- if len(rec.env['subscription.package.stage'].search([('category', '=', 'draft')])) > 1:
- raise UserError(
- _('More than one stage is having category "Draft". '
- 'Please change category of stage to "In Progress", '
- 'only one stage is allowed to have category "Draft"'))
- else:
- rec.write(
- {'stage_id': (rec.env['subscription.package.stage'].search([
- ('category', '=', 'draft')]).id) + 1})
+ for rec in self:
+ if len(rec.env['subscription.package.stage'].search([('category', '=', 'draft')])) > 1:
+ raise UserError(
+ _('More than one stage is having category "Draft". '
+ 'Please change category of stage to "In Progress", '
+ 'only one stage is allowed to have category "Draft"'))
+ else:
+ rec.write(
+ {'stage_id': (rec.env['subscription.package.stage'].search([
+ ('category', '=', 'draft')]).id) + 1})
def button_sale_order(self):
"""Button to create sale order"""
this_products_line = []
for rec in self.product_line_ids:
rec_list = [0, 0, {'product_id': rec.product_id.id,
- 'product_uom_qty': rec.product_qty}]
+ 'product_uom_qty': rec.product_qty,
+ 'discount': rec.discount}]
this_products_line.append(rec_list)
- # for order in self.sale_order:
orders = self.env['sale.order'].search([('subscription_id', '=', self.id), ('invoice_status', '=', 'no')])
if orders:
for order in orders:
@@ -294,7 +297,10 @@ class SubscriptionPackage(models.Model):
'type': 'ir.actions.act_window',
'res_model': 'sale.order',
'domain': [('id', '=', so_id.id)],
- 'view_mode': 'tree,form'
+ 'view_mode': 'tree,form',
+ 'context': {
+ "create": False
+ }
}
@api.model
diff --git a/subscription_package/security/ir.model.access.csv b/subscription_package/security/ir.model.access.csv
index 523bde9ae..5539c213b 100644
--- a/subscription_package/security/ir.model.access.csv
+++ b/subscription_package/security/ir.model.access.csv
@@ -6,3 +6,4 @@ access_subscription_report,subscription.report,model_subscription_report,base.gr
access_subscription_package_product_line,subscription.package.product.line,model_subscription_package_product_line,base.group_user,1,1,1,1
access_subscription_package_stop,subscription.package.stop,model_subscription_package_stop,base.group_user,1,1,1,1
access_subscription_close_wizard,access.subscription.close.wizard,model_subscription_close_wizard,base.group_user,1,1,1,1
+access_recurrence_period,access.recurrence.period,model_recurrence_period,base.group_user,1,1,1,1
diff --git a/subscription_package/views/recurrence_views.xml b/subscription_package/views/recurrence_views.xml
new file mode 100644
index 000000000..11f5c93f2
--- /dev/null
+++ b/subscription_package/views/recurrence_views.xml
@@ -0,0 +1,54 @@
+
+
+
+ recurrence.period.tree
+ recurrence.period
+
+
+
+
+
+
+
+
+
+ recurrence.period.form
+ recurrence.period
+
+
+
+
+
+
+
+
+
+
+ subscription.package.form.inherit
+ subscription.package
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/subscription_package/views/subscription_package.xml b/subscription_package/views/subscription_package.xml
index 0c312719f..c318bbdf7 100644
--- a/subscription_package/views/subscription_package.xml
+++ b/subscription_package/views/subscription_package.xml
@@ -74,7 +74,8 @@
+ type="object" class="btn-primary oe_read_only"
+ attrs="{'invisible': ['|',('stage_category','!=', 'progress'),('so_count','>',0)]}"/>