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 + +
+ + + + + + + +
+
+
+ + + Recurrence Period + recurrence.period + list,form + + + + + + 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 @@