Browse Source

May 24 : [UPDT] Updated 'subscription_package'

pull/257/head
AjmalCybro 2 years ago
parent
commit
a8154db763
  1. 2
      subscription_package/__manifest__.py
  2. 2
      subscription_package/models/__init__.py
  3. 10
      subscription_package/models/recurrence_period.py
  4. 62
      subscription_package/models/subscription_package.py
  5. 2
      subscription_package/models/subscription_products.py
  6. BIN
      subscription_package/static/description/assets/screenshots/SUB13.png
  7. BIN
      subscription_package/static/description/assets/screenshots/SUB15.png
  8. BIN
      subscription_package/static/description/assets/screenshots/hero.gif
  9. 8
      subscription_package/static/description/index.html
  10. 8
      subscription_package/views/subscription_package.xml

2
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',

2
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

10
subscription_package/models/recurrence_period.py

@ -19,7 +19,6 @@
# If not, see <http://www.gnu.org/licenses/>.
#
#############################################################################
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")

62
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

2
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)

BIN
subscription_package/static/description/assets/screenshots/SUB13.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 161 KiB

BIN
subscription_package/static/description/assets/screenshots/SUB15.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

BIN
subscription_package/static/description/assets/screenshots/hero.gif

Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

After

Width:  |  Height:  |  Size: 308 KiB

8
subscription_package/static/description/index.html

@ -296,6 +296,14 @@
<img src="assets/screenshots/SUB11.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;">
Discount in Subscriptions
</h3>
<img src="assets/screenshots/SUB15.png" class="img-thumbnail">
</div>
<div style="display: block; margin: 30px auto;">
<h3 style="font-family: 'Montserrat', sans-serif; font-size: 18px; font-weight: bold;"> Create Subscription
Package with Sale Order

8
subscription_package/views/subscription_package.xml

@ -80,10 +80,7 @@
attrs="{'invisible': [('stage_category','!=', 'draft')]}"/>
<button name="button_sale_order" string="Create Sale Order"
type="object" class="btn-primary"
attrs="{'invisible': [('stage_category','!=', 'progress')]}"/>
<button name="button_payment" string="Invoice" type="object"
class="btn-primary"
attrs="{'invisible': [('stage_category','!=', 'progress')]}"/>
attrs="{'invisible': ['|',('stage_category','!=', 'progress'),('so_count','>',0)]}"/>
<button name="button_close" string="Close Subscription"
type="object" class="btn-primary"
attrs="{'invisible': [('stage_category', '!=', 'progress')]}"/>
@ -145,7 +142,7 @@
</group>
<group>
<field name="plan_id" attrs="{'required': True}"/>
<field name="to_renew"/>
<field name="to_renew" invisible="1"/>
<field name="reference_code"/>
<field name="analytic_account_id"/>
<field name="tag_ids" widget="many2many_tags"
@ -168,6 +165,7 @@
<field name="product_uom_id" required="1"/>
<field name="currency_id" invisible="1"/>
<field name="unit_price" required="1"/>
<field name="discount" required="1"/>
<field name="total_amount" readonly="1"/>
</tree>
</field>

Loading…
Cancel
Save