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')]}"/>
-
+ attrs="{'invisible': ['|',('stage_category','!=', 'progress'),('so_count','>',0)]}"/>
@@ -145,7 +142,7 @@
-
+
+