Product Expiry Configurable

product_expiry_configurable
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/16.0/product_expiry_configurable
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA)
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA)
COMMITTERS
COMMITTERSGitHub, Denis Roussel, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:48
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product_expiry
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (2)
XML IDNameModelTypeStatus
product_category_form_view_inherit product.category.form (in product_expiry_configurable) product.category group Inherits product.product_category_form_view
search_product_lot_filter_inherit_product_expiry stock.lot.search.inherit (in product_expiry_configurable) stock.lot xpath Inherits product_expiry.search_product_lot_filter_inherit_product_expiry
Models touched (3)

New fields (5)
  • alert_time Integer
    compute='_compute_date_fields' help='Number of days before an alert should be raised on the lot/serial number.' readonly=False recursive=True store=True string='Product Alert Time'
  • expiration_time Integer
    compute='_compute_date_fields' help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.' readonly=False recursive=True store=True string='Product Expiration Time'
  • removal_time Integer
    compute='_compute_date_fields' help='Number of days before an alert should be raised on the lot/serial number.' readonly=False recursive=True store=True string='Product Removal Time'
  • use_expiration_date Boolean
    compute='_compute_use_expiration_date' readonly=False store=True
  • use_time Integer
    compute='_compute_date_fields' help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.' readonly=False recursive=True store=True string='Product Use Time'
Public methods (0)

No public methods.

New fields (5)
  • alert_time Integer
    compute='_compute_date_fields' readonly=False store=True
  • expiration_time Integer
    compute='_compute_date_fields' readonly=False store=True
  • removal_time Integer
    compute='_compute_date_fields' readonly=False store=True
  • use_expiration_date Boolean
    compute='_compute_use_expiration_date' readonly=False store=True
  • use_time Integer
    compute='_compute_date_fields' readonly=False store=True
Public methods (0)

No public methods.

New fields (3)
  • expiration_date_reminded Boolean
    default=False
  • removal_date_reminded Boolean
    default=False
  • use_date_reminded Boolean
    default=False
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/14.0/product_expiry_configurable
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA)
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA)
COMMITTERS
COMMITTERSEnric Tobella, Weblate, OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:41:01
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product_expiry
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
product_category_form_view_inherit product.category.form (in product_expiry_configurable) product.category group Inherits product.product_category_form_view
search_product_lot_filter_inherit_product_expiry stock.production.lot.search.inherit stock.production.lot xpath Inherits product_expiry.search_product_lot_filter_inherit_product_expiry
view_product_form_expiry product.template.form (in product_expiry_expiration_configurable) product.template label Inherits product_expiry.view_product_form_expiry
Models touched (3)

New fields (15)
  • alert_time Integer
    compute='_compute_date_fields' help='Number of days before an alert should be raised on the lot/serial number.' string='Product Alert Time'
  • compute_dates_from Selection
    compute='_compute_compute_dates_from' help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if expiration_date is selected, the dates will be computed taking as reference the lot's expiration_date." selection=[('current_date', 'Current Date'), ('expiration_date', 'Expiration Time Date')]
  • expiration_time Integer
    compute='_compute_date_fields' help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.' string='Product Expiration Time'
  • parent_alert_time Integer
    compute='_compute_parent_date_fields' help='Number of days before an alert should be raised on the lot/serial number.' string='Parent Product Alert Time'
  • parent_compute_dates_from Selection
    compute='_compute_parent_compute_dates_from' selection=[('current_date', 'Current Date'), ('expiration_date', 'Expiration Time Date')]
  • parent_expiration_time Integer
    compute='_compute_parent_date_fields' help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.' string='Parent Product Expiration Time'
  • parent_removal_time Integer
    compute='_compute_parent_date_fields' help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.' string='Parent Product Removal Time'
  • parent_use_time Integer
    compute='_compute_parent_date_fields' help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.' string='Parent Product Use Time'
  • removal_time Integer
    compute='_compute_date_fields' help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.' string='Product Removal Time'
  • specific_alert_time Integer
    help='Number of days before an alert should be raised on the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Alert Time'
  • specific_compute_dates_from Selection
    help='If not provided, the one defined on the parent is used.' selection=[('current_date', 'Current Date'), ('expiration_date', 'Expiration Time Date')]
  • specific_expiration_time Integer
    help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Expiration Time'
  • specific_removal_time Integer
    help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Removal Time'
  • specific_use_time Integer
    help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Use Time'
  • use_time Integer
    compute='_compute_date_fields' help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.' string='Product Use Time'
Public methods (0)

No public methods.

New fields (15)
  • alert_time Integer
    compute='_compute_date_fields'
  • category_alert_time Integer
    help='Number of days before an alert should be raised on the lot/serial number.' related='categ_id.alert_time' string='Category Product Alert Time'
  • category_compute_dates_from Selection
    help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if expiration_date is selected, the dates will be computed taking as reference the lot's expiration_date." related='categ_id.compute_dates_from' string='Category compute dates from'
  • category_expiration_time Integer
    help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.' related='categ_id.expiration_time' string='Category Product Expiration Time'
  • category_removal_time Integer
    help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.' related='categ_id.removal_time' string='Category Product Removal Time'
  • category_use_time Integer
    help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.' related='categ_id.use_time' string='Category Product Use Time'
  • compute_dates_from Selection
    compute='_compute_compute_dates_from' help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if expiration_time is selected, the dates will be computed taking as reference the lot's expiration_time." selection=[('current_date', 'Current Date'), ('expiration_date', 'Expiration Date')]
  • expiration_time Integer
    compute='_compute_date_fields'
  • removal_time Integer
    compute='_compute_date_fields'
  • specific_alert_time Integer
    help='Number of days before an alert should be raised on the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Alert Time'
  • specific_compute_dates_from Selection
    help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if expiration_time is selected, the dates will be computed taking as reference the lot's expiration_date." selection=[('current_date', 'Current Date'), ('expiration_date', 'Expiration Date')]
  • specific_expiration_time Integer
    help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Expiration Time'
  • specific_removal_time Integer
    help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Removal Time'
  • specific_use_time Integer
    help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Use Time'
  • use_time Integer
    compute='_compute_date_fields'
Public methods (0)

No public methods.

New fields (3)
  • expiration_date_reminded Boolean
    default=False
  • removal_date_reminded Boolean
    default=False
  • use_date_reminded Boolean
    default=False
Public methods (1)
  • create(self, vals)
    @api.model
REPOSITORY
REPOSITORYOCA/product-attribute
GIT
GIThttps://github.com/OCA/product-attribute.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/product-attribute/tree/13.0/product_expiry_configurable
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA)
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA)
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Alba Riera
WEBSITE
WEBSITEhttps://github.com/OCA/product-attribute
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:34:14
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - product_expiry
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
product_category_form_view_inherit product.category.form (in product_expiry_configurable) product.category group Inherits product.product_category_form_view
search_product_lot_filter_inherit_product_expiry stock.production.lot.search.inherit stock.production.lot xpath Inherits product_expiry.search_product_lot_filter_inherit_product_expiry
view_product_form_expiry product.template.form (in product_expiry_life_configurable) product.template label Inherits product_expiry.view_product_form_expiry
Models touched (3)

New fields (15)
  • alert_time Integer
    compute='_compute_date_fields' help='Number of days before an alert should be raised on the lot/serial number.' string='Product Alert Time'
  • compute_dates_from Selection
    compute='_compute_compute_dates_from' help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if life_date is selected, the dates will be computed taking as reference the lot's life_date." selection=[('current_date', 'Current Date'), ('life_date', 'Life Time Date')]
  • life_time Integer
    compute='_compute_date_fields' help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.' string='Product Life Time'
  • parent_alert_time Integer
    compute='_compute_parent_date_fields' help='Number of days before an alert should be raised on the lot/serial number.' string='Parent Product Alert Time'
  • parent_compute_dates_from Selection
    compute='_compute_parent_compute_dates_from' selection=[('current_date', 'Current Date'), ('life_date', 'Life Time Date')]
  • parent_life_time Integer
    compute='_compute_parent_date_fields' help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.' string='Parent Product Life Time'
  • parent_removal_time Integer
    compute='_compute_parent_date_fields' help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.' string='Parent Product Removal Time'
  • parent_use_time Integer
    compute='_compute_parent_date_fields' help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.' string='Parent Product Use Time'
  • removal_time Integer
    compute='_compute_date_fields' help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.' string='Product Removal Time'
  • specific_alert_time Integer
    help='Number of days before an alert should be raised on the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Alert Time'
  • specific_compute_dates_from Selection
    help='If not provided, the one defined on the parent is used.' selection=[('current_date', 'Current Date'), ('life_date', 'Life Time Date')]
  • specific_life_time Integer
    help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Life Time'
  • specific_removal_time Integer
    help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Removal Time'
  • specific_use_time Integer
    help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number. If not provided, the one defined on the parent is used.' string='Specific Product Use Time'
  • use_time Integer
    compute='_compute_date_fields' help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.' string='Product Use Time'
Public methods (0)

No public methods.

New fields (15)
  • alert_time Integer
    compute='_compute_date_fields'
  • category_alert_time Integer
    help='Number of days before an alert should be raised on the lot/serial number.' related='categ_id.alert_time' string='Category Product Alert Time'
  • category_compute_dates_from Selection
    help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if life_date is selected, the dates will be computed taking as reference the lot's life_date." related='categ_id.compute_dates_from' selection=[('current_date', 'Current Date'), ('life_date', 'Life Date')] string='Category Compute Dates From'
  • category_life_time Integer
    help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.' related='categ_id.life_time' string='Category Product Life Time'
  • category_removal_time Integer
    help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.' related='categ_id.removal_time' string='Category Product Removal Time'
  • category_use_time Integer
    help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.' related='categ_id.use_time' string='Category Product Use Time'
  • compute_dates_from Selection
    compute='_compute_compute_dates_from' help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if life_date is selected, the dates will be computed taking as reference the lot's life_date." selection=[('current_date', 'Current Date'), ('life_date', 'Life Date')]
  • life_time Integer
    compute='_compute_date_fields'
  • removal_time Integer
    compute='_compute_date_fields'
  • specific_alert_time Integer
    help='Number of days before an alert should be raised on the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Alert Time'
  • specific_compute_dates_from Selection
    help="If current_date is selected, the dates will be computed taking as reference the current date when the lot is created.Whereas if life_date is selected, the dates will be computed taking as reference the lot's life_date." selection=[('current_date', 'Current Date'), ('life_date', 'Life Date')]
  • specific_life_time Integer
    help='Number of days before the goods may become dangerous and must not be consumed. It will be computed on the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Life Time'
  • specific_removal_time Integer
    help='Number of days before the goods should be removed from the stock. It will be computed on the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Removal Time'
  • specific_use_time Integer
    help='Number of days before the goods starts deteriorating, without being dangerous yet. It will be computed using the lot/serial number.If not provided, the one defined on the category is used.' string='Specific Product Use Time'
  • use_time Integer
    compute='_compute_date_fields'
Public methods (0)

No public methods.

New fields (3)
  • life_date_reminded Boolean
    default=False
  • removal_date_reminded Boolean
    default=False
  • use_date_reminded Boolean
    default=False
Public methods (1)
  • create(self, vals)
    @api.model