Purchase Start End Dates

purchase_start_end_dates
REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/17.0/purchase_start_end_dates
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPurchase
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), elego Software Solutions GmbH
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), elego Software Solutions GmbH
COMMITTERS
COMMITTERSWeblate, micheledic, oca-ci
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:09
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-closing:
    - account_invoice_start_end_dates
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - onboarding
    - product
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
This module adds the fields *Start Date* and *End Date* on purchase order
lines (requied fields when the product has the *Must Have Start and End
Dates* property). You can also define a *Default Start Date* and
*Default End Date* on the purchase order; when set, these dates will be used
by default on new purchase order lines. Upon invoice creation, the values of
the start/end dates of the purchase order line are copied to the start/end
dates of invoice lines.

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
purchase_order_form purchase.order.form.start.end.dates. purchase.order xpath Inherits purchase.purchase_order_form
Models touched (2)

New fields (2)
  • default_end_date Date
  • default_start_date Date
Public methods (2)
  • default_end_date_change(self)
    @api.onchange('default_end_date')
  • default_start_date_change(self)
    @api.onchange('default_start_date')

New fields (4)
  • end_date Date
    readonly=True
  • must_have_dates Boolean
    related='product_id.must_have_dates'
  • number_of_days Integer
    compute='_compute_number_of_days' inverse='_inverse_number_of_days' readonly=False store=True string='Number of Days'
  • start_date Date
    readonly=True
Public methods (3)
  • end_date_change(self)
    @api.onchange('end_date')
  • start_date_change(self)
    @api.onchange('start_date')
  • start_end_dates_product_id_change(self)
    @api.onchange('product_id')
REPOSITORY
REPOSITORYOCA/purchase-workflow
GIT
GIThttps://github.com/OCA/purchase-workflow.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/purchase-workflow/tree/12.0/purchase_start_end_dates
VERSION
VERSION 1.0.0
CATEGORY
CATEGORYPurchase
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), elego Software Solutions GmbH
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), elego Software Solutions GmbH
COMMITTERS
COMMITTERSOCA Transbot, oca-travis, Weblate, OCA-git-bot, chandni299
WEBSITE
WEBSITEhttps://github.com/OCA/purchase-workflow
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:29:23
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/account-closing:
    - account_invoice_start_end_dates
odoo/odoo:
    - purchase
    - account
    - base_setup
    - base
    - web
    - product
    - decimal_precision
    - mail
    - bus
    - web_tour
    - uom
    - analytic
    - portal
    - http_routing
    - digest
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (1)
XML IDNameModelTypeStatus
purchase_order_form purchase.order.form.start.end.dates. purchase.order xpath Inherits purchase.purchase_order_form
Models touched (3)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • default_end_date Date
    string='Default End Date'
  • default_start_date Date
    string='Default Start Date'
Public methods (2)
  • default_end_date_change(self)
    @api.onchange('default_end_date')
  • default_start_date_change(self)
    @api.onchange('default_start_date')

New fields (4)
  • end_date Date
    readonly=True states={'draft': [('readonly', False)]} string='End Date'
  • must_have_dates Boolean
    related='product_id.must_have_dates'
  • number_of_days Integer
    compute='_compute_number_of_days' inverse='_inverse_number_of_days' readonly=False store=True string='Number of Days'
  • start_date Date
    readonly=True states={'draft': [('readonly', False)]} string='Start Date'
Public methods (3)
  • end_date_change(self)
    @api.onchange('end_date')
  • start_date_change(self)
    @api.onchange('start_date')
  • start_end_dates_product_id_change(self)
    @api.onchange('product_id')