Stock Lot Auto Remove

stock_lot_remove
REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
GIT
GIThttps://github.com/OCA/stock-logistics-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/stock-logistics-workflow/tree/16.0/stock_lot_remove
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYUncategorized
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), ACSONE SA/NV, BCIM
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), ACSONE SA/NV, BCIM
COMMITTERS
COMMITTERSLaurent Mignon (ACSONE), OCA-git-bot, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:12:03
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - product_expiry
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This addon allows to automatically remove stock quants with a past removal date, regardless of whether they are reserved or not. 

On each warehouse, you can enable the automatic removal of lots with a past removal date.

Every day, for each warehouse where the automatic removal is enabled, a cron job will launch the process to remove past removal date quants.

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
stock_lot_removal_wizard_form_view stock.lot.removal.wizard form New
stock_picking_type_form_view stock.picking.type field Inherits stock.view_picking_type_form
stock_warehouse_form_view stock.warehouse group Inherits stock.view_warehouse
Models touched (3)

New fields (3)
  • description Html
    compute='_compute_description' help='This wizard will generate removal moves for the quants of the lots to remove from the selected warehouse to the designated destination location'
  • removal_date Date
    default=fields.Date.context_today help='Lots with removal date before this date will be moved.' required=True string='Expiration Date'
  • warehouse_id Many2one → stock.warehouse
    default=<expr> required=True string='Warehouse' args: 'stock.warehouse'
Public methods (3)
  • action_run(self)
    Main entry point to find expired lots and create a transfer picking. This method will: 1. Find expired quants based on the removal date. 2. Unreserve moves that are linked to these quants. 3. Create a transfer picking to move these quants to the destination location. 4. Reassign the moves that were unreserved. return: The created picking record.
  • button_action_run(self)
    Run the wizard and return the action to view the created picking.
  • get_transfer_picking_vals(self, quants, moves_unreserved)
    Get the values to create a transfer picking for a quant.

New fields (1)
  • disable_unassign_lots_to_remove Boolean
    help='If checked, the unassignment of lots to remove will be disabled for this picking type. This is useful for picking types that should not allow unassigning lots, such as those used for expired lot removal.' string='Disable Unassign Lots to Remove'
Public methods (0)

No public methods.

New fields (3)
  • lot_remove_enabled Boolean
    help='If checked, a move will be planned reserving the expired lot.' string='Enable Expired Lot Removal'
  • lot_remove_orig_location_ids Many2many → stock.location
    comodel_name='stock.location' compute='_compute_lot_remove_orig_location_ids' help='Locations from which expired lots will be moved.' readonly=False store=True string='Expired Lot Origin Locations'
  • lot_remove_picking_type_id Many2one → stock.picking.type
    comodel_name='stock.picking.type' help='Picking type used for moving expired lots.' string='Expired Lot Move Picking Type'
Public methods (0)

No public methods.