Browse Source

Mar 24 : [UPDT] Bug Fixed 'subscription_package'

dependabot/npm_and_yarn/odoo_website_helpdesk/static/src/cdn/minimist-1.2.8
AjmalCybro 2 years ago
parent
commit
dfc296ef3d
  1. 2
      subscription_package/models/recurrence_period.py
  2. 6
      subscription_package/models/res_partner.py
  3. 67
      subscription_package/models/subscription_package.py
  4. 17
      subscription_package/models/subscription_renew.py
  5. 94
      subscription_package/views/subscription_package.xml

2
subscription_package/models/recurrence_period.py

@ -31,7 +31,7 @@ class RecurrencePeriod(models.Model):
name = fields.Char(string="Name") name = fields.Char(string="Name")
duration = fields.Float(string="Duration") duration = fields.Float(string="Duration")
unit = fields.Selection([('hours', 'hours'), unit = fields.Selection([('hours', 'hours'),
('days', 'Report'),('weeks', 'Report'),('months', 'Report'),('years', 'Report')], ('days', 'Days'),('weeks', 'Weeks'),('months', 'Months'),('years', 'Years')],
string= 'Unit' ) string= 'Unit' )

6
subscription_package/models/res_partner.py

@ -32,3 +32,9 @@ class Partner(models.Model):
subscription_product_line_ids = fields.One2many( subscription_product_line_ids = fields.One2many(
'subscription.package.product.line', 'res_partner_id', 'subscription.package.product.line', 'res_partner_id',
ondelete='restrict', string='Products Line') ondelete='restrict', string='Products Line')
def _valid_field_parameter(self, field, name):
if name == 'ondelete':
return True
return super(Partner,
self)._valid_field_parameter(field, name)

67
subscription_package/models/subscription_package.py

@ -46,7 +46,7 @@ class SubscriptionPackageProductLine(models.Model):
product_uom_id = fields.Many2one('uom.uom', string='UoM', store=True, product_uom_id = fields.Many2one('uom.uom', string='UoM', store=True,
related='product_id.uom_id', related='product_id.uom_id',
ondelete='restrict') ondelete='restrict')
uom_catg_id = fields.Many2one('uom.category', string='UoM', store=True, uom_catg_id = fields.Many2one('uom.category', string='UoM Category', store=True,
related='product_id.uom_id.category_id') related='product_id.uom_id.category_id')
unit_price = fields.Float(string='Unit Price', store=True, readonly=False, unit_price = fields.Float(string='Unit Price', store=True, readonly=False,
related='product_id.list_price') related='product_id.list_price')
@ -57,7 +57,7 @@ class SubscriptionPackageProductLine(models.Model):
compute='_compute_total_amount') compute='_compute_total_amount')
sequence = fields.Integer('Sequence', help="Determine the display order", sequence = fields.Integer('Sequence', help="Determine the display order",
index=True) index=True)
res_partner_id = fields.Many2one('res.partner', string='Currency', res_partner_id = fields.Many2one('res.partner', string='Partner',
store=True, store=True,
related='subscription_id.partner_id') related='subscription_id.partner_id')
@ -68,6 +68,12 @@ class SubscriptionPackageProductLine(models.Model):
if rec.product_id: if rec.product_id:
rec.total_amount = rec.unit_price * rec.product_qty rec.total_amount = rec.unit_price * rec.product_qty
def _valid_field_parameter(self, field, name):
if name == 'ondelete':
return True
return super(SubscriptionPackageProductLine,
self)._valid_field_parameter(field, name)
class SubscriptionPackage(models.Model): class SubscriptionPackage(models.Model):
"""Subscription Package Model""" """Subscription Package Model"""
@ -145,6 +151,12 @@ class SubscriptionPackage(models.Model):
compute='_compute_total_recurring_price', compute='_compute_total_recurring_price',
store=True) store=True)
def _valid_field_parameter(self, field, name):
if name == 'ondelete':
return True
return super(SubscriptionPackage,
self)._valid_field_parameter(field, name)
""" Calculate Invoice count based on subscription package """ """ Calculate Invoice count based on subscription package """
@api.depends('invoice_count') @api.depends('invoice_count')
@ -264,24 +276,23 @@ class SubscriptionPackage(models.Model):
def button_start_date(self): def button_start_date(self):
"""Button to start subscription package""" """Button to start subscription package"""
if not self.start_date: if not self.start_date:
self.start_date = datetime.date.today() self.start_date = datetime.date.today()
for rec in self: for rec in self:
if len(rec.env['subscription.package.stage'].search( if len(rec.env['subscription.package.stage'].search(
[('category', '=', 'draft')])) > 1: [('category', '=', 'draft')])) > 1:
raise UserError( raise UserError(
_('More than one stage is having category "Draft". ' _('More than one stage is having category "Draft". '
'Please change category of stage to "In Progress", ' 'Please change category of stage to "In Progress", '
'only one stage is allowed to have category "Draft"')) 'only one stage is allowed to have category "Draft"'))
else: else:
rec.write( rec.write(
{'stage_id': (rec.env[ {'stage_id': (rec.env[
'subscription.package.stage'].search( 'subscription.package.stage'].search([
[ ('category', '=', 'draft')]).id) + 1})
('category', '=', 'draft')]).id) + 1})
def button_sale_order(self): def button_sale_order(self):
"""Button to create sale order""" """Button to create sale order"""
this_products_line = [] this_products_line = []
for rec in self.product_line_ids: for rec in self.product_line_ids:
@ -312,17 +323,18 @@ class SubscriptionPackage(models.Model):
'view_mode': 'tree,form' 'view_mode': 'tree,form'
} }
@api.model @api.model_create_multi
def create(self, vals): def create(self, vals_list):
"""It displays subscription product in partner and generate sequence""" """It displays subscription product in partner and generate sequence"""
partner = self.env['res.partner'].search( for vals in vals_list:
[('id', '=', vals.get('partner_id'))]) partner = self.env['res.partner'].search(
partner.active_subscription = True [('id', '=', vals.get('partner_id'))])
if vals.get('reference_code', 'New') is False: partner.active_subscription = True
vals['reference_code'] = self.env['ir.sequence'].next_by_code( if vals.get('reference_code', 'New') is False:
'sequence.reference.code') or 'New' vals['reference_code'] = self.env['ir.sequence'].next_by_code(
create_id = super().create(vals) 'sequence.reference.code') or 'New'
return create_id create_id = super().create(vals)
return create_id
@api.depends('reference_code') @api.depends('reference_code')
def _compute_name(self): def _compute_name(self):
@ -356,7 +368,8 @@ class SubscriptionPackage(models.Model):
days=pending_subscription.plan_id.days_to_end) days=pending_subscription.plan_id.days_to_end)
difference = (pending_subscription.close_date - difference = (pending_subscription.close_date -
pending_subscription.start_date).days / 10 pending_subscription.start_date).days / 10
renew_date = pending_subscription.close_date - relativedelta(days=difference) renew_date = pending_subscription.close_date - relativedelta(
days=difference)
if today_date == renew_date: if today_date == renew_date:
pending_subscription.to_renew = True pending_subscription.to_renew = True
self.env.ref( self.env.ref(

17
subscription_package/models/subscription_renew.py

@ -34,15 +34,16 @@ class SaleOrder(models.Model):
sub_reference = fields.Char(string="Sub Reference Code", store=True, sub_reference = fields.Char(string="Sub Reference Code", store=True,
compute="_compute_reference_code") compute="_compute_reference_code")
@api.model @api.model_create_multi
def create(self, vals): def create(self, vals_list):
""" It displays subscription in sale order """ """ It displays subscription in sale order """
if vals.get('is_subscription'): for vals in vals_list:
vals.update({ if vals.get('is_subscription'):
'is_subscription': True, vals.update({
'subscription_id': vals.get('subscription_id'), 'is_subscription': True,
}) 'subscription_id': vals.get('subscription_id'),
return super().create(vals) })
return super().create(vals)
@api.depends('subscription_id') @api.depends('subscription_id')
def _compute_reference_code(self): def _compute_reference_code(self):

94
subscription_package/views/subscription_package.xml

@ -10,7 +10,8 @@
</record> </record>
</data> </data>
<record id="subscription_action_subscriptions" model="ir.actions.act_window"> <record id="subscription_action_subscriptions"
model="ir.actions.act_window">
<field name="name">Subscriptions</field> <field name="name">Subscriptions</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">subscription.package</field> <field name="res_model">subscription.package</field>
@ -22,7 +23,8 @@
</field> </field>
</record> </record>
<record id="subscription_action_subscriptions_customers" model="ir.actions.act_window"> <record id="subscription_action_subscriptions_customers"
model="ir.actions.act_window">
<field name="name">Subscriptions Customers</field> <field name="name">Subscriptions Customers</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">res.partner</field> <field name="res_model">res.partner</field>
@ -35,7 +37,8 @@
</field> </field>
</record> </record>
<record id="subscription_action_subscriptions_to_renew" model="ir.actions.act_window"> <record id="subscription_action_subscriptions_to_renew"
model="ir.actions.act_window">
<field name="name">Subscriptions to Renew</field> <field name="name">Subscriptions to Renew</field>
<field name="type">ir.actions.act_window</field> <field name="type">ir.actions.act_window</field>
<field name="res_model">subscription.package</field> <field name="res_model">subscription.package</field>
@ -65,30 +68,38 @@
<record id="subscription_package_form" model="ir.ui.view"> <record id="subscription_package_form" model="ir.ui.view">
<field name="name">subscription.package.form</field> <field name="name">subscription.package.form</field>
<field name="model">subscription.package</field> <field name="model">subscription.package</field>
<field name="groups_id" eval="[(4, ref('subscription_package.group_subscription_user'))]"/> <field name="groups_id"
eval="[(4, ref('subscription_package.group_subscription_user'))]"/>
<field name="arch" type="xml"> <field name="arch" type="xml">
<form> <form>
<header> <header>
<field name="current_stage" invisible="1"/> <field name="current_stage" invisible="1"/>
<field name="is_closed" invisible="1"/> <field name="is_closed" invisible="1"/>
<button name="button_start_date" string="START" <button name="button_start_date" string="START"
type="object" class="btn-primary oe_read_only" attrs="{'invisible': [('stage_category','!=', 'draft')]}"/> type="object" class="btn-primary"
attrs="{'invisible': [('stage_category','!=', 'draft')]}"/>
<button name="button_sale_order" string="Create Sale Order" <button name="button_sale_order" string="Create Sale Order"
type="object" class="btn-primary oe_read_only" attrs="{'invisible': [('so_count','>',0)]}"/> type="object" class="btn-primary"
<button name="button_payment" string="Invoice" attrs="{'invisible': [('stage_category','!=', 'progress')]}"/>
type="object" class="btn-primary oe_read_only" <button name="button_payment" string="Invoice" type="object"
attrs="{'invisible': [('so_count', '=', 0)]}" class="btn-primary"
invisible="1"/> attrs="{'invisible': [('stage_category','!=', 'progress')]}"/>
<button name="button_close" string="Close Subscription" <button name="button_close" string="Close Subscription"
type="object" class="btn-primary oe_read_only" type="object" class="btn-primary"
attrs="{'invisible': [('stage_category', 'in', ['draft', 'closed'])]}"/> attrs="{'invisible': [('stage_category', '!=', 'progress')]}"/>
<button name="action_renew" string="Renew" type="object" class="btn-primary oe_read_only" attrs="{'invisible': [('so_count', '=', 0)]}"/> <button name="action_renew" string="Renew" type="object"
<field name="stage_id" widget="statusbar" options="{'clickable' :0}"/> class="btn-primary oe_read_only"
attrs="{'invisible': [('so_count', '=', 0)]}"/>
<field name="stage_id" widget="statusbar"
options="{'clickable' :0}"/>
</header> </header>
<sheet> <sheet>
<div class="oe_button_box" name="button_box"> <div class="oe_button_box" name="button_box">
<button name="button_sale_count" type="object" class="oe_stat_button" <button name="button_sale_count" type="object"
icon="fa-credit-card" attrs="{'invisible': [('so_count', '=', 0)]}"> class="oe_stat_button"
icon="fa-credit-card"
attrs="{'invisible': [('so_count', '=', 0)]}">
<div class="o_field_widget o_stat_info"> <div class="o_field_widget o_stat_info">
<span class="o_stat_value"> <span class="o_stat_value">
<field name="so_count"/> <field name="so_count"/>
@ -98,8 +109,10 @@
</span> </span>
</div> </div>
</button> </button>
<button name="button_invoice_count" type="object" class="oe_stat_button" <button name="button_invoice_count" type="object"
icon="fa-book" attrs="{'invisible': [('invoice_count','&lt;=',0)]}"> class="oe_stat_button"
icon="fa-book"
attrs="{'invisible': [('invoice_count','&lt;=',0)]}">
<div class="o_field_widget o_stat_info"> <div class="o_field_widget o_stat_info">
<span class="o_stat_value"> <span class="o_stat_value">
<field name="invoice_count"/> <field name="invoice_count"/>
@ -123,7 +136,8 @@
</div> </div>
<group> <group>
<group> <group>
<field name="partner_id" attrs="{'required': True}"/> <field name="partner_id"
attrs="{'required': True}"/>
<field name="partner_invoice_id"/> <field name="partner_invoice_id"/>
<field name="partner_shipping_id"/> <field name="partner_shipping_id"/>
<field name="start_date"/> <field name="start_date"/>
@ -143,7 +157,8 @@
</group> </group>
</group> </group>
<notebook> <notebook>
<page string="Subscriptions" name="subscription_products_line"> <page string="Subscriptions"
name="subscription_products_line">
<field name="product_line_ids"> <field name="product_line_ids">
<tree string="Product lines" editable="bottom"> <tree string="Product lines" editable="bottom">
<field name="sequence" widget="handle"/> <field name="sequence" widget="handle"/>
@ -156,14 +171,18 @@
<field name="total_amount" readonly="1"/> <field name="total_amount" readonly="1"/>
</tree> </tree>
</field> </field>
<group name="note_group" col="6" class="mt-2 mt-md-0"> <group name="note_group" col="6"
<group class="oe_subtotal_footer oe_right" colspan="2" name="recurring_total"> class="mt-2 mt-md-0">
<group class="oe_subtotal_footer oe_right"
colspan="2" name="recurring_total">
<field name="total_recurring_price"/> <field name="total_recurring_price"/>
</group> </group>
</group> </group>
</page> </page>
<page string="Terms and Conditions" name="terms_and_conditions"> <page string="Terms and Conditions"
<field name="description" placeholder="Terms and Conditions."/> name="terms_and_conditions">
<field name="description"
placeholder="Terms and Conditions."/>
</page> </page>
<page string="Other Info" name="other_info"> <page string="Other Info" name="other_info">
<group> <group>
@ -191,7 +210,8 @@
<field name="name">subscription.package.kanban</field> <field name="name">subscription.package.kanban</field>
<field name="model">subscription.package</field> <field name="model">subscription.package</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<kanban default_group_by="stage_id" quick_create="false" class="o_kanban_mobile" sample="1"> <kanban default_group_by="stage_id" quick_create="false"
class="o_kanban_mobile" sample="1">
<field name="stage_id"/> <field name="stage_id"/>
<field name="user_id"/> <field name="user_id"/>
<field name="to_renew"/> <field name="to_renew"/>
@ -216,10 +236,12 @@
</div> </div>
<div class="o_kanban_record_bottom"> <div class="o_kanban_record_bottom">
<div class="oe_kanban_bottom_left"> <div class="oe_kanban_bottom_left">
<field name="activity_ids" widget="kanban_activity"/> <field name="activity_ids"
widget="kanban_activity"/>
</div> </div>
<div class="oe_kanban_bottom_right"> <div class="oe_kanban_bottom_right">
<field name="user_id" widget="many2one_avatar_user"/> <field name="user_id"
widget="many2one_avatar_user"/>
</div> </div>
</div> </div>
</div> </div>
@ -231,15 +253,15 @@
</field> </field>
</record> </record>
<record id="subscription_package_pivot" model="ir.ui.view"> <record id="subscription_package_pivot" model="ir.ui.view">
<field name="name">subscription.package.pivot</field> <field name="name">subscription.package.pivot</field>
<field name="model">subscription.package</field> <field name="model">subscription.package</field>
<field name="arch" type="xml"> <field name="arch" type="xml">
<pivot string="Pivot View"> <pivot string="Pivot View">
<field name="name" type="row"/> <field name="name" type="row"/>
</pivot> </pivot>
</field> </field>
</record> </record>
<menuitem id="subscription_menu_root" <menuitem id="subscription_menu_root"
name="Subscription" name="Subscription"

Loading…
Cancel
Save