Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
109 changes: 109 additions & 0 deletions purchase_order_etd_eta/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
======================
Purchase Order ETD/ETA
======================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:38890cab558012aca5ba0396b59d0116ea743611b7c0bcb74fdda76da3465194
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/purchase-workflow/tree/18.0/purchase_order_etd_eta
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_order_etd_eta
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

The module adds ETD, ETA, and Shipping Schedule Note fields to purchase
orders and displays them in the purchase order and RFQ reports.

**Table of contents**

.. contents::
:local:

Use Cases / Context
===================

Some companies need to store ETD and ETA information on Purchase Orders
for communication with suppliers and for printing on reports.

These values are informational and may include simple instructions such
as "ASAP" or "TBD".

Configuration
=============

To hide the Expected Arrival in purchase reports when ETA is set:

1. Go to Purchase ‣ Configuration ‣ Settings.
2. Enable *Hide Expected Arrival in Purchase Order Reports*. When
enabled, the Expected Arrival date will not be displayed in purchase
order reports if ETA is set.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/purchase-workflow/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/purchase-workflow/issues/new?body=module:%20purchase_order_etd_eta%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.

Do not contact contributors directly about support or help with technical issues.

Credits
=======

Authors
-------

* Quartile

Contributors
------------

- `Quartile <https://www.quartile.co>`__:

- Aung Ko Ko Lin

Maintainers
-----------

This module is maintained by the OCA.

.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org

OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.

.. |maintainer-yostashiro| image:: https://github.com/yostashiro.png?size=40px
:target: https://github.com/yostashiro
:alt: yostashiro
.. |maintainer-aungkokolin1997| image:: https://github.com/aungkokolin1997.png?size=40px
:target: https://github.com/aungkokolin1997
:alt: aungkokolin1997

Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-yostashiro| |maintainer-aungkokolin1997|

This module is part of the `OCA/purchase-workflow <https://github.com/OCA/purchase-workflow/tree/18.0/purchase_order_etd_eta>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions purchase_order_etd_eta/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
20 changes: 20 additions & 0 deletions purchase_order_etd_eta/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2026 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Purchase Order ETD/ETA",
"summary": "Add Estimated Time of Departure/Arrival fields to Purchase Orders",
"version": "18.0.1.0.0",
"category": "Purchases",
"website": "https://github.com/OCA/purchase-workflow",
"author": "Quartile, Odoo Community Association (OCA)",
"license": "AGPL-3",
"depends": ["purchase"],
"data": [
"report/purchase_order_templates.xml",
"report/purchase_quotation_templates.xml",
"views/purchase_order_views.xml",
"views/res_config_settings_views.xml",
],
"maintainers": ["yostashiro", "aungkokolin1997"],
"installable": True,
}
101 changes: 101 additions & 0 deletions purchase_order_etd_eta/i18n/ja.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_order_etd_eta
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-02-11 13:50+0000\n"
"PO-Revision-Date: 2026-02-11 13:50+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: purchase_order_etd_eta
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.purchase_etd_eta_info
msgid "<strong>ETA:</strong>"
msgstr "<strong>ETA:</strong>"

#. module: purchase_order_etd_eta
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.purchase_etd_eta_info
msgid "<strong>ETD:</strong>"
msgstr "<strong>ETD:</strong>"

#. module: purchase_order_etd_eta
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.purchase_etd_eta_info
msgid "<strong>Shipping Schedule Note:</strong>"
msgstr "<strong>出荷スケジュール備考:</strong>"

#. module: purchase_order_etd_eta
#: model:ir.model.fields,help:purchase_order_etd_eta.field_purchase_order__shipping_schedule_note
msgid ""
"Additional shipping schedule instructions or clarifications. Use this field "
"when ETD or ETA cannot be expressed as a specific date (for example: ASAP, "
"TBD, etc.)."
msgstr "出荷スケジュールに関する補足情報や説明。ETDやETAを特定の日付で表せない場合に使用します(例: ASAP、TBDなど)。"

#. module: purchase_order_etd_eta
#: model:ir.model,name:purchase_order_etd_eta.model_res_company
msgid "Companies"
msgstr "会社"

#. module: purchase_order_etd_eta
#: model:ir.model,name:purchase_order_etd_eta.model_res_config_settings
msgid "Config Settings"
msgstr "コンフィグ設定"

#. module: purchase_order_etd_eta
#: model:ir.model.fields,field_description:purchase_order_etd_eta.field_purchase_order__date_eta
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.purchase_order_view_search
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.view_purchase_order_filter
msgid "ETA"
msgstr "ETA"

#. module: purchase_order_etd_eta
#: model:ir.model.fields,field_description:purchase_order_etd_eta.field_purchase_order__date_etd
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.purchase_order_view_search
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.view_purchase_order_filter
msgid "ETD"
msgstr "ETD"

#. module: purchase_order_etd_eta
#: model:ir.model.fields,help:purchase_order_etd_eta.field_purchase_order__date_eta
msgid "Estimated Time of Arrival"
msgstr "到着予定日"

#. module: purchase_order_etd_eta
#: model:ir.model.fields,help:purchase_order_etd_eta.field_purchase_order__date_etd
msgid "Estimated Time of Departure"
msgstr "出発予定日"

#. module: purchase_order_etd_eta
#: model:ir.model.fields,field_description:purchase_order_etd_eta.field_res_company__hide_expected_arrival_when_eta
#: model:ir.model.fields,field_description:purchase_order_etd_eta.field_res_config_settings__hide_expected_arrival_when_eta
msgid "Hide Expected Arrival When Eta"
msgstr "ETA設定時に入荷予定日を非表示"

#. module: purchase_order_etd_eta
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.res_config_settings_view_form
msgid "Hide Expected Arrival in Purchase Orders Reports"
msgstr "購買オーダレポートで入荷予定日を非表示"

#. module: purchase_order_etd_eta
#: model_terms:ir.ui.view,arch_db:purchase_order_etd_eta.res_config_settings_view_form
msgid ""
"Hide the expected arrival date in purchase orders reports when the ETA is "
"set."
msgstr "ETAが設定されている場合、購買オーダレポートの入荷予定日を非表示にします。"

#. module: purchase_order_etd_eta
#: model:ir.model,name:purchase_order_etd_eta.model_purchase_order
msgid "Purchase Order"
msgstr "購買オーダ"

#. module: purchase_order_etd_eta
#: model:ir.model.fields,field_description:purchase_order_etd_eta.field_purchase_order__shipping_schedule_note
msgid "Shipping Schedule Note"
msgstr "出荷スケジュール備考"
3 changes: 3 additions & 0 deletions purchase_order_etd_eta/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import purchase_order
from . import res_company
from . import res_config_settings
24 changes: 24 additions & 0 deletions purchase_order_etd_eta/models/purchase_order.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Copyright 2026 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class PurchaseOrder(models.Model):
_inherit = "purchase.order"

date_etd = fields.Date(string="ETD", help="Estimated Time of Departure")
date_eta = fields.Date(string="ETA", help="Estimated Time of Arrival")
shipping_schedule_note = fields.Char(
help="Additional shipping schedule instructions or clarifications. "
"Use this field when ETD or ETA cannot be expressed as a specific date "
"(for example: ASAP, TBD, etc.).",
)

def display_expected_arrival(self):
self.ensure_one()
if (
self.company_id.hide_expected_arrival_when_eta and self.date_eta
) or not self.date_planned:
return False
return True
10 changes: 10 additions & 0 deletions purchase_order_etd_eta/models/res_company.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# Copyright 2026 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class ResCompany(models.Model):
_inherit = "res.company"

hide_expected_arrival_when_eta = fields.Boolean()
13 changes: 13 additions & 0 deletions purchase_order_etd_eta/models/res_config_settings.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2026 Quartile (https://www.quartile.co)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

from odoo import fields, models


class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"

hide_expected_arrival_when_eta = fields.Boolean(
related="company_id.hide_expected_arrival_when_eta",
readonly=False,
)
3 changes: 3 additions & 0 deletions purchase_order_etd_eta/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
6 changes: 6 additions & 0 deletions purchase_order_etd_eta/readme/CONFIGURE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
To hide the Expected Arrival in purchase reports when ETA is set:

1. Go to Purchase ‣ Configuration ‣ Settings.
2. Enable *Hide Expected Arrival in Purchase Order Reports*.
When enabled, the Expected Arrival date will not be displayed in purchase
order reports if ETA is set.
5 changes: 5 additions & 0 deletions purchase_order_etd_eta/readme/CONTEXT.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
Some companies need to store ETD and ETA information on Purchase Orders for
communication with suppliers and for printing on reports.

These values are informational and may include simple instructions such as
"ASAP" or "TBD".
2 changes: 2 additions & 0 deletions purchase_order_etd_eta/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- [Quartile](https://www.quartile.co):
- Aung Ko Ko Lin
2 changes: 2 additions & 0 deletions purchase_order_etd_eta/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
The module adds ETD, ETA, and Shipping Schedule Note fields to purchase orders
and displays them in the purchase order and RFQ reports.
30 changes: 30 additions & 0 deletions purchase_order_etd_eta/report/purchase_order_templates.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template id="purchase_etd_eta_info">
<div id="etd_eta_info" class="row mb-4">
<div t-if="o.date_etd" class="col-2">
<strong>ETD:</strong>
<p t-field="o.date_etd" class="m-0" />
</div>
<div t-if="o.date_eta" class="col-2">
<strong>ETA:</strong>
<p t-field="o.date_eta" class="m-0" />
</div>
<div t-if="o.shipping_schedule_note" class="col-6">
<strong>Shipping Schedule Note:</strong>
<p t-field="o.shipping_schedule_note" class="m-0" />
</div>
</div>
</template>
<template
id="report_purchaseorder_document"
inherit_id="purchase.report_purchaseorder_document"
>
<xpath expr="//div[@t-if='o.date_planned']" position="attributes">
<attribute name="t-if">o.display_expected_arrival()</attribute>
</xpath>
<xpath expr="//div[@id='informations']" position="after">
<t t-call="purchase_order_etd_eta.purchase_etd_eta_info" />
</xpath>
</template>
</odoo>
11 changes: 11 additions & 0 deletions purchase_order_etd_eta/report/purchase_quotation_templates.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="report_purchasequotation_document"
inherit_id="purchase.report_purchasequotation_document"
>
<xpath expr="//t[@t-set='layout_document_title']" position="after">
<t t-call="purchase_order_etd_eta.purchase_etd_eta_info" />
</xpath>
</template>
</odoo>
Loading