diff --git a/subscription_package/__manifest__.py b/subscription_package/__manifest__.py index 4696d986a..b5af61bd9 100644 --- a/subscription_package/__manifest__.py +++ b/subscription_package/__manifest__.py @@ -22,7 +22,7 @@ { 'name': 'Subscription Management For Community Odoo 16', - 'Version': '16.0.1.0.0', + 'Version': '16.0.1.1.1', 'summary': 'Subscription Package Management Module For Odoo16 Community', 'description': 'Subscription Package Management Module For Odoo16 Community', 'category': 'Sales', diff --git a/subscription_package/models/__init__.py b/subscription_package/models/__init__.py index 6e40351b4..2653b9c2d 100644 --- a/subscription_package/models/__init__.py +++ b/subscription_package/models/__init__.py @@ -27,5 +27,5 @@ from . import subscription_products from . import subscription_close from . import subscription_renew from . import res_partner -from.import recurrence_period +from . import recurrence_period from . import sale_order diff --git a/subscription_package/models/recurrence_period.py b/subscription_package/models/recurrence_period.py index fe3e18530..f5d83c85f 100644 --- a/subscription_package/models/recurrence_period.py +++ b/subscription_package/models/recurrence_period.py @@ -19,7 +19,6 @@ # If not, see . # ############################################################################# - from odoo import models, fields @@ -31,13 +30,14 @@ class RecurrencePeriod(models.Model): 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' ) - + ('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") + 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 8968f7471..2793526d0 100644 --- a/subscription_package/models/subscription_package.py +++ b/subscription_package/models/subscription_package.py @@ -46,10 +46,12 @@ class SubscriptionPackageProductLine(models.Model): product_uom_id = fields.Many2one('uom.uom', string='UoM', store=True, related='product_id.uom_id', ondelete='restrict') - uom_catg_id = fields.Many2one('uom.category', string='UoM Category', store=True, + uom_catg_id = fields.Many2one('uom.category', string='UoM Category', + store=True, 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') @@ -61,12 +63,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) def _valid_field_parameter(self, field, name): if name == 'ondelete': @@ -186,11 +190,9 @@ class SubscriptionPackage(models.Model): rec.current_stage = rec.env['subscription.package.stage'].search( [('id', '=', rec.stage_id.id)]).category - @api.depends('start_date') + @api.constrains('start_date') def _compute_next_invoice_date(self): - pending_subscriptions = self.env['subscription.package'].search( - [('stage_category', '=', 'progress')]) - for sub in pending_subscriptions: + for sub in self.env['subscription.package'].search([]): if sub.start_date: sub.next_invoice_date = sub.start_date + relativedelta( days=sub.plan_id.renewal_time) @@ -234,46 +236,6 @@ class SubscriptionPackage(models.Model): 'target': 'new' } - def button_payment(self): - """ Button to create invoice for subscription package""" - this_products_line = [] - for rec in self.product_line_ids: - rec_list = [0, 0, {'product_id': rec.product_id.id, - 'quantity': rec.product_qty}] - this_products_line.append(rec_list) - invoices = self.env['account.move'].search( - [('subscription_id', '=', self.id), ('state', '=', 'draft')]) - orders = self.env['sale.order'].search( - [('subscription_id', '=', self.id), ('invoice_status', '=', 'no')]) - if invoices: - for invoice in invoices: - invoice.action_post() - if orders and invoices: - for order in orders: - order.action_confirm() - for invoice in invoices: - invoice.action_post() - out_invoice = self.env['account.move'].create( - { - 'move_type': 'out_invoice', - 'date': fields.Date.today(), - 'invoice_date': fields.Date.today(), - 'partner_id': self.partner_invoice_id.id, - 'currency_id': self.partner_invoice_id.currency_id.id, - 'invoice_line_ids': this_products_line - }) - self.env['account.move'].payment_id = out_invoice.id - if self.stage_category == 'progress': - values = {'start_date': datetime.datetime.today()} - self.write(values) - return { - 'name': 'Subscription Payment', - 'type': 'ir.actions.act_window', - 'res_model': 'account.move', - 'view_mode': 'form', - 'res_id': out_invoice.id - } - def button_start_date(self): """Button to start subscription package""" @@ -297,7 +259,8 @@ class SubscriptionPackage(models.Model): 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) orders = self.env['sale.order'].search( [('id', '=', self.sale_order_count), @@ -320,7 +283,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_create_multi diff --git a/subscription_package/models/subscription_products.py b/subscription_package/models/subscription_products.py index de2ccbb2d..7e3a53f57 100644 --- a/subscription_package/models/subscription_products.py +++ b/subscription_package/models/subscription_products.py @@ -39,7 +39,7 @@ class AccountMove(models.Model): [('name', '=', rec.get('invoice_origin'))]) if so_id.is_subscription is True: new_vals_list = [{'is_subscription': True, - 'subscription_id': so_id.subscription_id}] + 'subscription_id': so_id.subscription_id.id}] vals_list[0].update(new_vals_list[0]) return super().create(vals_list) diff --git a/subscription_package/static/description/assets/screenshots/SUB13.png b/subscription_package/static/description/assets/screenshots/SUB13.png index 75e51478a..88fb09987 100644 Binary files a/subscription_package/static/description/assets/screenshots/SUB13.png and b/subscription_package/static/description/assets/screenshots/SUB13.png differ diff --git a/subscription_package/static/description/assets/screenshots/SUB15.png b/subscription_package/static/description/assets/screenshots/SUB15.png new file mode 100644 index 000000000..51337e259 Binary files /dev/null and b/subscription_package/static/description/assets/screenshots/SUB15.png differ diff --git a/subscription_package/static/description/assets/screenshots/hero.gif b/subscription_package/static/description/assets/screenshots/hero.gif index c601b65c1..73f075812 100644 Binary files a/subscription_package/static/description/assets/screenshots/hero.gif and b/subscription_package/static/description/assets/screenshots/hero.gif differ diff --git a/subscription_package/static/description/index.html b/subscription_package/static/description/index.html index 6e3a8bf1c..ab48b0019 100644 --- a/subscription_package/static/description/index.html +++ b/subscription_package/static/description/index.html @@ -296,6 +296,14 @@ +
+

+ Discount in Subscriptions +

+ + +
+

Create Subscription Package with Sale Order diff --git a/subscription_package/views/subscription_package.xml b/subscription_package/views/subscription_package.xml index 0d3bb07d1..85e734d73 100644 --- a/subscription_package/views/subscription_package.xml +++ b/subscription_package/views/subscription_package.xml @@ -80,10 +80,7 @@ attrs="{'invisible': [('stage_category','!=', 'draft')]}"/>