Sale Loyalty

sale_loyalty
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/19.0/sale_loyalty
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORSOdoo S.A.
MAINTAINERS
MAINTAINERSOdoo S.A.
COMMITTERS
COMMITTERSOdoo Translation Bot, Thibault Delavallée, Laurent Smet, Julien Castiaux, Victor Feyens, Andrea Grazioso (agr-odoo), Tiffany Chang (tic), Gorash, William Braeckman, Demesmaeker, Valentin Chevalier, alsh-odoo, Pedram (PEBR), Mylyna Hy, Victor Piryns (pivi), Levi Siuzdak (sile), Antoine Boonen, Dylan Kiss (dyki), Sarah Bellefroid, Arnaud Sibille, Louis (loti), kcv-odoo, dere-odoo, Ryan Cen, sabr, Antoine Dupuis, Smit Patel, David Van Droogenbroeck (DROD), Pierre Lamotte (pila), jeep-odoo, Shrey Mehta, Krzysztof Magusiak (krma), Mahdi Alijani (malj), nipl-odoo, krip-odoo, shka-odoo, Nisarg (nipl), Lionel Piraux (lipi), Merlin Guillaume, jand-odoo, enricodg, nutav
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:51:46
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - loyalty
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Integrate discount and loyalty programs mechanisms in sales orders.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
loyalty_card_view_form_inherit_sale_loyalty loyalty.card.view.form.inherit.sale.loyalty loyalty.card field Inherits loyalty.loyalty_card_view_form
loyalty_program_view_form_inherit_sale_loyalty loyalty.program.view.form.inherit.sale.loyalty loyalty.program xpath Inherits loyalty.loyalty_program_view_form
res_partner_form res.partner.view.buttons res.partner button Inherits loyalty.res_partner_form
sale_loyalty_coupon_wizard_view_form sale.loyalty.coupon.wizard.view.form sale.loyalty.coupon.wizard form New
sale_loyalty_reward_wizard_view_form sale.loyalty.reward.wizard.view.form sale.loyalty.reward.wizard form New
sale_order_portal_content_inherit Gift Card Products Portal ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_order_portal_loyalty_content sale_order_portal_loyalty_content ir.ui.view qweb New
sale_order_view_form_inherit_sale_loyalty sale.order.view.form.inherit.sale.loyalty sale.order div Inherits sale.view_order_form
sale_purchased_gift_card sale_purchased_gift_card ir.ui.view qweb New
used_gift_card used_gift_card ir.ui.view qweb New
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • order_id Many2one → sale.order
    comodel_name='sale.order' help='The sales order from which coupon is generated' readonly=True string='Order Reference'
  • order_id_partner_id Many2one → res.partner
    comodel_name='res.partner' related='order_id.partner_id' string='Sale Order Customer'
Public methods (1)
  • action_archive(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • order_count Integer
    compute='_compute_order_count'
  • sale_ok Boolean
    default=True string='Sales'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • unlink(self)

New fields (2)
  • coupon_code Char
    required=True
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
Public methods (1)
  • action_apply(self)

New fields (6)
  • multi_product_reward Boolean
    related='selected_reward_id.multi_product'
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
  • reward_ids Many2many → loyalty.reward
    compute='_compute_claimable_reward_ids' args: 'loyalty.reward'
  • reward_product_ids Many2many
    related='selected_reward_id.reward_product_ids'
  • selected_product_id Many2one → product.product
    compute='_compute_selected_product_id' domain="[('id', 'in', reward_product_ids)]" readonly=False store=True args: 'product.product'
  • selected_reward_id Many2one → loyalty.reward
    domain="[('id', 'in', reward_ids)]" args: 'loyalty.reward'
Public methods (2)
  • action_apply(self)
  • action_cancel(self)

New fields (6)
  • applied_coupon_ids Many2many → loyalty.card
    comodel_name='loyalty.card' copy=False string='Manually Applied Coupons'
  • code_enabled_rule_ids Many2many → loyalty.rule
    comodel_name='loyalty.rule' copy=False string='Manually Triggered Rules'
  • coupon_point_ids One2many → sale.order.coupon.points
    comodel_name='sale.order.coupon.points' copy=False inverse_name='order_id'
  • gift_card_count Integer
    compute='_compute_gift_card_count'
  • loyalty_data Json
    compute='_compute_loyalty_data'
  • reward_amount Float
    compute='_compute_reward_total'
Public methods (4)
  • action_confirm(self)
    Override to validate and update coupon rewards. If called with one SO, checks if there exists rewards that are available but not claimed, and if so returns a notification action. :raises ValidationError: A coupon gave a negative amount of points. :return: True or a notification action :rtype: bool | dict
  • action_open_reward_wizard(self)
  • action_view_gift_cards(self)
  • copy(self, default=None)

New fields (3)
  • coupon_id Many2one → loyalty.card
    comodel_name='loyalty.card' ondelete='cascade' required=True
  • order_id Many2one → sale.order
    comodel_name='sale.order' index=True ondelete='cascade' required=True
  • points Float
    required=True
Public methods (0)

No public methods.

New fields (5)
  • coupon_id Many2one → loyalty.card
    comodel_name='loyalty.card' ondelete='restrict' readonly=True
  • is_reward_line Boolean
    compute='_compute_is_reward_line' string='Is a program reward line'
  • points_cost Float
    help='How much point this reward costs on the loyalty card.'
  • reward_id Many2one → loyalty.reward
    comodel_name='loyalty.reward' ondelete='restrict' readonly=True
  • reward_identifier_code Char
    help='Technical field used to link multiple reward lines from the same reward together.'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/18.0/sale_loyalty
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Yannick Tivisse, Odoo Online, Laurent Smet, Victor Feyens, Andrea Grazioso (agr-odoo), Anh Thao Pham (pta), Tiffany Chang (tic), Gorash, William Braeckman, hungbui, Ruben Gomes, Demesmaeker, Valentin Chevalier, Vincent Larcin, alsh-odoo, Mylyna Hy, Pieter Claeys (clpi), Levi Siuzdak (sile), Antoine Boonen, Dylan Kiss (dyki), Anita (anko), Xavier Bol (xbo), Sarah Bellefroid, Mahdi Cheikh Rouhou (macr), Andrzej(pian), Youssef Bashandy, Ethan Vincent, Louis (loti), vava-odoo, kcv-odoo, mega, dere-odoo, Lina (liew), Louis (wil), Ryan Cen, sabr, Manushi Shah, Antoine Dupuis, Juan Carlos B, David Van Droogenbroeck (DROD), Pierre Lamotte (pila), jeep-odoo, Shrey Mehta, Mahdi Alijani (malj), nipl-odoo, krip-odoo, Laurent Smet (LAS), shka-odoo, Merlin Guillaume, jand-odoo, enricodg
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:25:59
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - loyalty
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Integrate discount and loyalty programs mechanisms in sales orders.

Code Analysis

Views touched (10)
XML IDNameModelTypeStatus
loyalty_card_view_form_inherit_sale_loyalty loyalty.card.view.form.inherit.sale.loyalty loyalty.card field Inherits loyalty.loyalty_card_view_form
loyalty_program_view_form_inherit_sale_loyalty loyalty.program.view.form.inherit.sale.loyalty loyalty.program xpath Inherits loyalty.loyalty_program_view_form
res_partner_form res.partner.view.buttons res.partner button Inherits loyalty.res_partner_form
sale_loyalty_coupon_wizard_view_form sale.loyalty.coupon.wizard.view.form sale.loyalty.coupon.wizard form New
sale_loyalty_reward_wizard_view_form sale.loyalty.reward.wizard.view.form sale.loyalty.reward.wizard form New
sale_order_portal_content_inherit Gift Card Products Portal ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_order_portal_loyalty_content sale_order_portal_loyalty_content ir.ui.view qweb New
sale_order_view_form_inherit_sale_loyalty sale.order.view.form.inherit.sale.loyalty sale.order button Inherits sale.view_order_form
sale_purchased_gift_card sale_purchased_gift_card ir.ui.view qweb New
used_gift_card used_gift_card ir.ui.view qweb New
Models touched (10)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (1)
  • order_id Many2one → sale.order
    comodel_name='sale.order' help='The sales order from which coupon is generated' readonly=True string='Order Reference'
Public methods (1)
  • action_archive(self)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • order_count Integer
    compute='_compute_order_count'
  • sale_ok Boolean
    default=True string='Sales'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • unlink(self)

New fields (2)
  • coupon_code Char
    required=True
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
Public methods (1)
  • action_apply(self)

New fields (6)
  • multi_product_reward Boolean
    related='selected_reward_id.multi_product'
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
  • reward_ids Many2many → loyalty.reward
    compute='_compute_claimable_reward_ids' args: 'loyalty.reward'
  • reward_product_ids Many2many
    related='selected_reward_id.reward_product_ids'
  • selected_product_id Many2one → product.product
    compute='_compute_selected_product_id' domain="[('id', 'in', reward_product_ids)]" readonly=False store=True args: 'product.product'
  • selected_reward_id Many2one → loyalty.reward
    domain="[('id', 'in', reward_ids)]" args: 'loyalty.reward'
Public methods (2)
  • action_apply(self)
  • action_cancel(self)

New fields (5)
  • applied_coupon_ids Many2many → loyalty.card
    comodel_name='loyalty.card' copy=False string='Manually Applied Coupons'
  • code_enabled_rule_ids Many2many → loyalty.rule
    comodel_name='loyalty.rule' copy=False string='Manually Triggered Rules'
  • coupon_point_ids One2many → sale.order.coupon.points
    comodel_name='sale.order.coupon.points' copy=False inverse_name='order_id'
  • loyalty_data Json
    compute='_compute_loyalty_data'
  • reward_amount Float
    compute='_compute_reward_total'
Public methods (3)
  • action_confirm(self)
  • action_open_reward_wizard(self)
  • copy(self, default=None)

New fields (3)
  • coupon_id Many2one → loyalty.card
    comodel_name='loyalty.card' ondelete='cascade' required=True
  • order_id Many2one → sale.order
    comodel_name='sale.order' ondelete='cascade' required=True
  • points Float
    required=True
Public methods (0)

No public methods.

New fields (5)
  • coupon_id Many2one → loyalty.card
    comodel_name='loyalty.card' ondelete='restrict' readonly=True
  • is_reward_line Boolean
    compute='_compute_is_reward_line' string='Is a program reward line'
  • points_cost Float
    help='How much point this reward costs on the loyalty card.'
  • reward_id Many2one → loyalty.reward
    comodel_name='loyalty.reward' ondelete='restrict' readonly=True
  • reward_identifier_code Char
    help='Technical field used to link multiple reward lines from the same reward together.'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/17.0/sale_loyalty
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSOdoo Translation Bot, Martin Trigaux, Alexandre Fayolle, Yannick Tivisse, Odoo Online, Victor Feyens, Andrea Grazioso (agr-odoo), Joseph Caburnay, Anh Thao Pham (pta), Nasreddin Boulif (bon), Tiffany Chang (tic), Rémy Voet (ryv), Gorash, Pierre Paridans, William Braeckman, hungbui, Walid HANNICHE (waha), Demesmaeker, niyasraphy, David Monnom (moda), Thomas Lefebvre (thle), alsh-odoo, Merel Geens (mege), Mylyna Hy, Levi Siuzdak (sile), Antoine Boonen, Dylan Kiss (dyki), Valeriya(vchu), Anita (anko), Xavier Bol (xbo), Sarah Bellefroid, Mahdi Cheikh Rouhou (macr), Andrzej(pian), Youssef Bashandy, Ethan Vincent, Louis (loti), vava-odoo, Julien Carion (juca), kcv-odoo, mega, dere-odoo, Louis (wil), Ryan Cen, sabr, Juan Carlos B, David Van Droogenbroeck (DROD), Pierre Lamotte (pila), Mahdi Alijani (malj), nipl-odoo
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 01:02:10
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - onboarding
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - loyalty
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Integrate discount and loyalty programs mechanisms in sales orders.

Code Analysis

Views touched (9)
XML IDNameModelTypeStatus
loyalty_card_view_form_inherit_sale_loyalty loyalty.card.view.form.inherit.sale.loyalty loyalty.card field Inherits loyalty.loyalty_card_view_form
loyalty_program_view_form_inherit_sale_loyalty loyalty.program.view.form.inherit.sale.loyalty loyalty.program xpath Inherits loyalty.loyalty_program_view_form
res_partner_form res.partner.view.buttons res.partner button Inherits loyalty.res_partner_form
sale_loyalty_coupon_wizard_view_form sale.loyalty.coupon.wizard.view.form sale.loyalty.coupon.wizard form New
sale_loyalty_reward_wizard_view_form sale.loyalty.reward.wizard.view.form sale.loyalty.reward.wizard form New
sale_order_portal_content_inherit Gift Card Products Portal ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_order_view_form_inherit_sale_loyalty sale.order.view.form.inherit.sale.loyalty sale.order button Inherits sale.view_order_form
sale_purchased_gift_card sale_purchased_gift_card ir.ui.view qweb New
used_gift_card used_gift_card ir.ui.view qweb New
Models touched (8)

New fields (1)
  • order_id Many2one → sale.order
    comodel_name='sale.order' help='The sales order from which coupon is generated' readonly=True string='Order Reference'
Public methods (0)

No public methods.

New fields (2)
  • order_count Integer
    compute='_compute_order_count'
  • sale_ok Boolean
    default=True string='Sales'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • unlink(self)

New fields (2)
  • coupon_code Char
    required=True
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
Public methods (1)
  • action_apply(self)

New fields (6)
  • multi_product_reward Boolean
    related='selected_reward_id.multi_product'
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
  • reward_ids Many2many → loyalty.reward
    compute='_compute_claimable_reward_ids' args: 'loyalty.reward'
  • reward_product_ids Many2many
    related='selected_reward_id.reward_product_ids'
  • selected_product_id Many2one → product.product
    compute='_compute_selected_product_id' domain="[('id', 'in', reward_product_ids)]" readonly=False store=True args: 'product.product'
  • selected_reward_id Many2one → loyalty.reward
    domain="[('id', 'in', reward_ids)]" args: 'loyalty.reward'
Public methods (1)
  • action_apply(self)

New fields (4)
  • applied_coupon_ids Many2many → loyalty.card
    comodel_name='loyalty.card' copy=False string='Manually Applied Coupons'
  • code_enabled_rule_ids Many2many → loyalty.rule
    comodel_name='loyalty.rule' copy=False string='Manually Triggered Rules'
  • coupon_point_ids One2many → sale.order.coupon.points
    comodel_name='sale.order.coupon.points' copy=False inverse_name='order_id'
  • reward_amount Float
    compute='_compute_reward_total'
Public methods (3)
  • action_confirm(self)
  • action_open_reward_wizard(self)
  • copy(self, default=None)
    @api.returns('self', <expr>)

New fields (3)
  • coupon_id Many2one → loyalty.card
    comodel_name='loyalty.card' ondelete='cascade' required=True
  • order_id Many2one → sale.order
    comodel_name='sale.order' ondelete='cascade' required=True
  • points Float
    required=True
Public methods (0)

No public methods.

New fields (5)
  • coupon_id Many2one → loyalty.card
    comodel_name='loyalty.card' ondelete='restrict' readonly=True
  • is_reward_line Boolean
    compute='_compute_is_reward_line' string='Is a program reward line'
  • points_cost Float
    help='How much point this reward costs on the loyalty card.'
  • reward_id Many2one → loyalty.reward
    comodel_name='loyalty.reward' ondelete='restrict' readonly=True
  • reward_identifier_code Char
    help='Technical field used to link multiple reward lines from the same reward together.'
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)
REPOSITORY
REPOSITORYodoo/odoo
GIT
GIThttps://github.com/odoo/odoo.git
GIT FOLDER
GIT FOLDERhttps://github.com/odoo/odoo/tree/16.0/sale_loyalty
VERSION
VERSION 1.0
CATEGORY
CATEGORYSales/Sales
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLEYes
AUTHORS
AUTHORS
MAINTAINERS
MAINTAINERS
COMMITTERS
COMMITTERSRaphael Collet, Odoo Translation Bot, Martin Trigaux, Alexis de Lattre, Alexandre Fayolle, Barad Mahendra, Yannick Tivisse, Pierre Masereel, Romeo Fragomeli, Victor Feyens, Andrea Grazioso (agr-odoo), Joseph Caburnay, Nasreddin Boulif (bon), William Braeckman, hungbui, Walid HANNICHE (waha), Demesmaeker, niyasraphy, David Monnom (moda), Thomas Lefebvre (thle), Merel Geens (mege), Mylyna Hy, Levi Siuzdak (sile), Antoine Boonen, Anita (anko), Xavier Bol (xbo), Sarah Bellefroid, “moda”, Mahdi Cheikh Rouhou (macr), Andrzej(pian), Youssef Bashandy, Ethan Vincent, Louis (loti), vava-odoo, kcv-odoo, mega, dere-odoo, William Braeckman (wbr), Juan Carlos B, Pierre Lamotte (pila)
WEBSITE
WEBSITE
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:40:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - sale
    - sales_team
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - account_payment
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
    - payment
    - utm
    - loyalty
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Integrate discount and loyalty programs mechanisms in sales orders.

Code Analysis

Views touched (8)
XML IDNameModelTypeStatus
loyalty_card_view_form_inherit_sale_loyalty loyalty.card.view.form.inherit.sale.loyalty loyalty.card xpath Inherits loyalty.loyalty_card_view_form
loyalty_program_view_form_inherit_sale_loyalty loyalty.program.view.form.inherit.sale.loyalty loyalty.program xpath Inherits loyalty.loyalty_program_view_form
sale_loyalty.used_gift_card sale_loyalty.used_gift_card ir.ui.view qweb New
sale_loyalty_coupon_wizard_view_form sale.loyalty.coupon.wizard.view.form sale.loyalty.coupon.wizard form New
sale_loyalty_reward_wizard_view_form sale.loyalty.reward.wizard.view.form sale.loyalty.reward.wizard form New
sale_order_portal_content_inherit Gift Card Products Portal ir.ui.view qweb Inherits sale.sale_order_portal_content
sale_order_view_form_inherit_sale_loyalty sale.order.view.form.inherit.sale.loyalty sale.order xpath Inherits sale.view_order_form
sale_purchased_gift_card sale_purchased_gift_card ir.ui.view qweb New
Models touched (8)

New fields (1)
  • order_id Many2one → sale.order
    help='The sales order from which coupon is generated' readonly=True args: 'sale.order', 'Order Reference'
Public methods (0)

No public methods.

New fields (2)
  • order_count Integer
    compute='_compute_order_count'
  • sale_ok Boolean
    default=True args: 'Sales'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • unlink(self)

New fields (2)
  • coupon_code Char
    required=True
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
Public methods (1)
  • action_apply(self)

New fields (6)
  • multi_product_reward Boolean
    related='selected_reward_id.multi_product'
  • order_id Many2one → sale.order
    default=<expr> required=True args: 'sale.order'
  • reward_ids Many2many → loyalty.reward
    compute='_compute_claimable_reward_ids' args: 'loyalty.reward'
  • reward_product_ids Many2many
    related='selected_reward_id.reward_product_ids'
  • selected_product_id Many2one → product.product
    compute='_compute_selected_product_id' domain="[('id', 'in', reward_product_ids)]" readonly=False store=True args: 'product.product'
  • selected_reward_id Many2one → loyalty.reward
    domain="[('id', 'in', reward_ids)]" args: 'loyalty.reward'
Public methods (1)
  • action_apply(self)

New fields (4)
  • applied_coupon_ids Many2many → loyalty.card
    copy=False string='Manually Applied Coupons' args: 'loyalty.card'
  • code_enabled_rule_ids Many2many → loyalty.rule
    copy=False string='Manually Triggered Rules' args: 'loyalty.rule'
  • coupon_point_ids One2many → sale.order.coupon.points
    copy=False args: 'sale.order.coupon.points', 'order_id'
  • reward_amount Float
    compute='_compute_reward_total'
Public methods (3)
  • action_confirm(self)
  • action_open_reward_wizard(self)
  • copy(self, default=None)
    @api.returns('self', <expr>)

New fields (3)
  • coupon_id Many2one → loyalty.card
    ondelete='cascade' required=True args: 'loyalty.card'
  • order_id Many2one → sale.order
    ondelete='cascade' required=True args: 'sale.order'
  • points Float
    required=True
Public methods (0)

No public methods.

New fields (5)
  • coupon_id Many2one → loyalty.card
    ondelete='restrict' readonly=True args: 'loyalty.card'
  • is_reward_line Boolean
    compute='_compute_is_reward_line' args: 'Is a program reward line'
  • points_cost Float
    help='How much point this reward cost on the loyalty card.'
  • reward_id Many2one → loyalty.reward
    ondelete='restrict' readonly=True args: 'loyalty.reward'
  • reward_identifier_code Char
    help='\n Technical field used to link multiple reward lines from the same reward together.\n '
Public methods (3)
  • create(self, vals_list)
    @api.model_create_multi
  • unlink(self)
  • write(self, vals)