Stock Move Actual Date

stock_move_actual_date
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/18.0/stock_move_actual_date
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYStock
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Quartile
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Quartile
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Aungkokolin1997
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:15
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - onboarding
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds an Actual Date field to the stock picking, stock scrap,
stock move, and stock move line models. This field allows users to
record the actual date on which a stock transfer or stock scrap took
place, in case the transaction in Odoo is processed after the fact.

It also adds an Actual Date field to the Stock Valuation Layer model,
enabling reporting based on this field. This field is computed and
stored according to the following logic:

- If a posted journal entry exists, its date is used.
- If there is no journal entry, the stock move's actual date is used
- Otherwise, convert create_date (datetime) of the stock.valuation.layer
  record to date, with consideration to user's timezone.

It also provides stock quantity history reporting based on the actual date.

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
stock_move_line_view_search stock.move.line.search stock.move.line filter Inherits stock.stock_move_line_view_search
stock_scrap_form_view stock.scrap.form stock.scrap xpath Inherits stock.stock_scrap_form_view
stock_scrap_form_view2 stock.scrap.form2 stock.scrap field Inherits stock.stock_scrap_form_view2
stock_scrap_search_view stock.scrap.search stock.scrap field Inherits stock.stock_scrap_search_view
stock_scrap_tree_view stock.scrap.tree stock.scrap xpath Inherits stock.stock_scrap_tree_view
stock_valuation_layer_form stock.valuation.layer.form stock.valuation.layer xpath Inherits stock_account.stock_valuation_layer_form
stock_valuation_layer_tree stock.valuation.layer.tree stock.valuation.layer xpath Inherits stock_account.stock_valuation_layer_tree
view_move_line_tree stock.move.line.tree stock.move.line xpath Inherits stock.view_move_line_tree
view_move_search stock.move.search stock.move filter Inherits stock.view_move_search
view_move_tree_actual_date_inherit stock.move.tree stock.move xpath Inherits stock.view_move_tree
view_picking_form stock.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search stock.picking.search stock.picking filter Inherits stock.view_picking_internal_search
view_picking_tree stock.picking.tree stock.picking xpath Inherits stock.vpicktree
view_stock_quantity_history Inventory Report at Date stock.quantity.history xpath Inherits stock.view_stock_quantity_history
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • actual_date Date
    copy=False help='If set, the value is propagated to the related journal entries as the date.' tracking=True
  • is_editable_actual_date Boolean
    compute='_compute_is_editable_actual_date' string='Is Editable'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • actual_date Date
    compute='_compute_actual_date' store=True
  • actual_date_source Date
    help='Technical field to store the actual_date of the source document.'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (1)
  • actual_date Date
    related='move_id.actual_date' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • open_at_actual_date(self)
  • open_qty_at_actual_date(self)

New fields (0)

No new fields.

Public methods (1)
  • do_scrap(self)

New fields (1)
  • actual_date Date
    compute='_compute_actual_date' help="The actual date is determined as follows:\n- If a posted journal entry exists, its date is used.\n- If there is no journal entry, the stock move's actual date is used.\n- Otherwise, the record's creation date (timezone-aware) is used." store=True
Public methods (0)

No public methods.

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_move_actual_date
VERSION
VERSION 2.1.0
CATEGORY
CATEGORYStock
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Quartile
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Quartile
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Aungkokolin1997
WEBSITE
WEBSITEhttps://github.com/OCA/stock-logistics-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:51
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - stock_account
    - stock
    - product
    - base
    - mail
    - base_setup
    - web
    - bus
    - web_tour
    - uom
    - barcodes_gs1_nomenclature
    - barcodes
    - digest
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - resource
    - account
    - analytic
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (14)
XML IDNameModelTypeStatus
stock_move_line_view_search stock.move.line.search stock.move.line filter Inherits stock.stock_move_line_view_search
stock_scrap_form_view stock.scrap.form stock.scrap xpath Inherits stock.stock_scrap_form_view
stock_scrap_form_view2 stock.scrap.form2 stock.scrap field Inherits stock.stock_scrap_form_view2
stock_scrap_search_view stock.scrap.search stock.scrap field Inherits stock.stock_scrap_search_view
stock_scrap_tree_view stock.scrap.tree stock.scrap xpath Inherits stock.stock_scrap_tree_view
stock_valuation_layer_form stock.valuation.layer.form stock.valuation.layer xpath Inherits stock_account.stock_valuation_layer_form
stock_valuation_layer_tree stock.valuation.layer.tree stock.valuation.layer xpath Inherits stock_account.stock_valuation_layer_tree
view_move_line_tree stock.move.line.tree stock.move.line xpath Inherits stock.view_move_line_tree
view_move_search stock.move.search stock.move filter Inherits stock.view_move_search
view_move_tree_actual_date_inherit stock.move.tree stock.move xpath Inherits stock.view_move_tree
view_picking_form stock.picking.form stock.picking xpath Inherits stock.view_picking_form
view_picking_internal_search stock.picking.search stock.picking filter Inherits stock.view_picking_internal_search
view_picking_tree stock.picking.tree stock.picking xpath Inherits stock.vpicktree
view_stock_quantity_history Inventory Report at Date stock.quantity.history xpath Inherits stock.view_stock_quantity_history
Models touched (9)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • actual_date Date
    copy=False help='If set, the value is propagated to the related journal entries as the date.' tracking=True
  • is_editable_actual_date Boolean
    compute='_compute_is_editable_actual_date' string='Is Editable'
Public methods (2)
  • create(self, vals_list)
    @api.model_create_multi
  • write(self, vals)

New fields (2)
  • actual_date Date
    compute='_compute_actual_date' store=True
  • actual_date_source Date
    copy=False help='Technical field to store the actual_date of the source document.'
Public methods (1)
  • create(self, vals_list)
    @api.model_create_multi

New fields (1)
  • actual_date Date
    related='move_id.actual_date' store=True
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (2)
  • open_at_actual_date(self)
  • open_qty_at_actual_date(self)

New fields (0)

No new fields.

Public methods (1)
  • do_scrap(self)

New fields (1)
  • actual_date Date
    compute='_compute_actual_date' help="The actual date is determined as follows:\n- If a posted journal entry exists, its date is used.\n- If there is no journal entry, the stock move's actual date is used.\n- Otherwise, the record's creation date (timezone-aware) is used." store=True
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/stock-logistics-workflow
PULL REQUEST
PULL REQUEST[19.0][MIG] stock_move_actual_date: Migration to 19.0 and rename to stock_date_done (#2346)