Skip to content
Open
Show file tree
Hide file tree
Changes from all 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
1 change: 1 addition & 0 deletions partner_last_sale_info/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# Partner Last Sale Info
95 changes: 95 additions & 0 deletions partner_last_sale_info/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
======================
Partner Last Sale Info
======================

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

.. |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%2Fsale--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/sale-workflow/tree/17.0/partner_last_sale_info
:alt: OCA/sale-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/sale-workflow-17-0/sale-workflow-17-0-partner_last_sale_info
: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/sale-workflow&target_branch=17.0
:alt: Try me on Runboat

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

This module adds last sale order information on partner forms.

- **Last Sale Order Date**: Shows the date of the most recent sale
order for each customer
- **Last Sale Order Reference**: Direct link to the most recent sale
order

These fields are automatically computed and updated when sale orders are
created or modified.

**Table of contents**

.. contents::
:local:

Usage
=====

Once installed, the customer/partner form will display the sale order
date and reference in the partner information section.

The fields will automatically update when new confirmed sale orders are
created for the customer.

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

Bugs are tracked on `GitHub Issues <https://github.com/OCA/sale-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/sale-workflow/issues/new?body=module:%20partner_last_sale_info%0Aversion:%2017.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
-------

* Open Source Integrators

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

- Open Source Integrators https://opensourceintegrators.com

- Daniel Reis dreis@opensourceintegrators.com

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.

This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/17.0/partner_last_sale_info>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
5 changes: 5 additions & 0 deletions partner_last_sale_info/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Copyright 2026 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from .hooks import pre_init_hook
from . import models
20 changes: 20 additions & 0 deletions partner_last_sale_info/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2026 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Partner Last Sale Info",
"summary": """
Adds last sale order information on partner forms""",
"version": "17.0.1.0.0",
"license": "AGPL-3",
"category": "Sales",
"author": "Open Source Integrators,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/sale-workflow",
"depends": ["sale"],
"data": [
"views/res_partner.xml",
],
# Uncomment in large databases to skip automatically populating the data
# "pre_init_hook": "pre_init_hook",
"installable": True,
}
13 changes: 13 additions & 0 deletions partner_last_sale_info/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# Copyright 2026 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).


def pre_init_hook(env):
"""Create columns with empty values before module installation."""
env.cr.execute(
"""
ALTER TABLE res_partner
ADD COLUMN IF NOT EXISTS last_sale_order_date TIMESTAMP,
ADD COLUMN IF NOT EXISTS last_sale_order_id INTEGER;
"""
)
51 changes: 51 additions & 0 deletions partner_last_sale_info/i18n/fr.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_last_sale_info
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-02-25 19:23+0000\n"
"PO-Revision-Date: 2026-02-25 19:23+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"
"Language: fr\n"

#. module: partner_last_sale_info
#: model:ir.model,name:partner_last_sale_info.model_res_partner
msgid "Contact"
msgstr "Contact"

#. module: partner_last_sale_info
#: model:ir.model.fields,help:partner_last_sale_info.field_res_partner__last_sale_order_date
#: model:ir.model.fields,help:partner_last_sale_info.field_res_users__last_sale_order_date
msgid "Date of the last sale order for this customer"
msgstr "Date de la dernière commande de vente pour ce client"

#. module: partner_last_sale_info
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_partner__last_sale_order_id
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_users__last_sale_order_id
msgid "Last Sale Order"
msgstr "Dernière commande de vente"

#. module: partner_last_sale_info
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_partner__last_sale_order_date
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_users__last_sale_order_date
msgid "Last Sale Order Date"
msgstr "Date de la dernière commande de vente"

#. module: partner_last_sale_info
#: model:ir.model.fields,help:partner_last_sale_info.field_res_partner__last_sale_order_id
#: model:ir.model.fields,help:partner_last_sale_info.field_res_users__last_sale_order_id
msgid "Last sale order for this customer"
msgstr "Dernière commande de vente pour ce client"

#. module: partner_last_sale_info
#: model_terms:ir.ui.view,arch_db:partner_last_sale_info.view_partner_form_last_sale_order
msgid "Sales Info"
msgstr "Informations de vente"
50 changes: 50 additions & 0 deletions partner_last_sale_info/i18n/partner_last_sale_info.pot
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * partner_last_sale_info
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 17.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2026-02-25 19:23+0000\n"
"PO-Revision-Date: 2026-02-25 19:23+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: partner_last_sale_info
#: model:ir.model,name:partner_last_sale_info.model_res_partner
msgid "Contact"
msgstr ""

#. module: partner_last_sale_info
#: model:ir.model.fields,help:partner_last_sale_info.field_res_partner__last_sale_order_date
#: model:ir.model.fields,help:partner_last_sale_info.field_res_users__last_sale_order_date
msgid "Date of the last sale order for this customer"
msgstr ""

#. module: partner_last_sale_info
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_partner__last_sale_order_id
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_users__last_sale_order_id
msgid "Last Sale Order"
msgstr ""

#. module: partner_last_sale_info
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_partner__last_sale_order_date
#: model:ir.model.fields,field_description:partner_last_sale_info.field_res_users__last_sale_order_date
msgid "Last Sale Order Date"
msgstr ""

#. module: partner_last_sale_info
#: model:ir.model.fields,help:partner_last_sale_info.field_res_partner__last_sale_order_id
#: model:ir.model.fields,help:partner_last_sale_info.field_res_users__last_sale_order_id
msgid "Last sale order for this customer"
msgstr ""

#. module: partner_last_sale_info
#: model_terms:ir.ui.view,arch_db:partner_last_sale_info.view_partner_form_last_sale_order
msgid "Sales Info"
msgstr ""
4 changes: 4 additions & 0 deletions partner_last_sale_info/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Copyright 2026 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from . import res_partner
35 changes: 35 additions & 0 deletions partner_last_sale_info/models/res_partner.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Copyright 2026 Open Source Integrators
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import api, fields, models


class ResPartner(models.Model):
_inherit = "res.partner"

last_sale_order_date = fields.Datetime(
compute="_compute_last_sale_order_date",
store=True,
readonly=False, # Allows data imports
help="Date of the last sale order for this customer",
)
last_sale_order_id = fields.Many2one(
"sale.order",
compute="_compute_last_sale_order_date",
store=True,
readonly=False,
help="Last sale order for this customer",
)

@api.depends("sale_order_ids")
def _compute_last_sale_order_date(self):
for partner in self:
last_order = self.env["sale.order"].search(
[("partner_id", "=", partner.id), ("state", "=", "sale")],
order="date_order desc",
limit=1,
)
if last_order:
partner.last_sale_order_date = last_order.date_order
partner.last_sale_order_id = last_order
# Do not reset any imported data when a quotation is created
3 changes: 3 additions & 0 deletions partner_last_sale_info/pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"
3 changes: 3 additions & 0 deletions partner_last_sale_info/readme/CONTRIBUTORS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@

- Open Source Integrators <https://opensourceintegrators.com>
- Daniel Reis <dreis@opensourceintegrators.com>
6 changes: 6 additions & 0 deletions partner_last_sale_info/readme/DESCRIPTION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
This module adds last sale order information on partner forms.

- **Last Sale Order Date**: Shows the date of the most recent sale order for each customer
- **Last Sale Order Reference**: Direct link to the most recent sale order

These fields are automatically computed and updated when sale orders are created or modified.
3 changes: 3 additions & 0 deletions partner_last_sale_info/readme/USAGE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Once installed, the customer/partner form will display the sale order date and reference in the partner information section.

The fields will automatically update when new confirmed sale orders are created for the customer.
Loading
Loading