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
97 changes: 97 additions & 0 deletions sale_order_invoice_date/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association

=======================
Sale Order Invoice Date
=======================

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

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

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

Display the invoice date on Sales Order analysis reports.

The invoice date is considered to be the latest invoice date linked to
fully invoiced sales.

**Table of contents**

.. contents::
:local:

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

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

* Camptocamp

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

- `Camptocamp <https://www.camptocamp.com>`__

- Iván Todorovich <ivan.todorovich@camptocamp.com>

- `ArcheTI <https://www.archeti.com>`__

- Alexei Rivera <arivera@archeti.com> (Migration to 19.0)

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-ivantodorovich| image:: https://github.com/ivantodorovich.png?size=40px
:target: https://github.com/ivantodorovich
:alt: ivantodorovich

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

|maintainer-ivantodorovich|

This module is part of the `OCA/sale-reporting <https://github.com/OCA/sale-reporting/tree/19.0/sale_order_invoice_date>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
3 changes: 3 additions & 0 deletions sale_order_invoice_date/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import models
from . import reports
from .hooks import pre_init_hook
17 changes: 17 additions & 0 deletions sale_order_invoice_date/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
# @author Iván Todorovich <ivan.todorovich@camptocamp.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

{
"name": "Sale Order Invoice Date",
"summary": "Display the invoice date on Sales Order analysis reports",
"version": "19.0.1.0.0",
"author": "Camptocamp, Odoo Community Association (OCA)",
"maintainers": ["ivantodorovich"],
"website": "https://github.com/OCA/sale-reporting",
"license": "AGPL-3",
"category": "Sales",
"depends": ["sale"],
"data": ["reports/sale_report.xml"],
"pre_init_hook": "pre_init_hook",
}
48 changes: 48 additions & 0 deletions sale_order_invoice_date/hooks.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# Copyright 2022 Camptocamp SA (https://www.camptocamp.com).
# @author Iván Todorovich <ivan.todorovich@camptocamp.com>
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).

import logging

from odoo.tools.sql import column_exists, create_column

_logger = logging.getLogger(__name__)


def pre_init_hook(env):
if not column_exists(env.cr, "sale_order_line", "invoice_date"):
create_column(env.cr, "sale_order_line", "invoice_date", "date")
if not column_exists(env.cr, "sale_order", "invoice_date"):
create_column(env.cr, "sale_order", "invoice_date", "date")
_logger.info("Initializing computed values for sale_order_line.invoice_date")
env.cr.execute(
"""
WITH sol AS (
SELECT sol.id AS id, max(move.invoice_date) AS invoice_date
FROM sale_order_line_invoice_rel rel
INNER JOIN sale_order_line sol ON rel.order_line_id = sol.id
INNER JOIN account_move_line aml ON rel.invoice_line_id = aml.id
INNER JOIN account_move move ON aml.move_id = move.id
WHERE sol.invoice_status = 'invoiced'
GROUP BY sol.id
)
UPDATE sale_order_line
SET invoice_date = sol.invoice_date
FROM sol WHERE sale_order_line.id = sol.id
"""
)
_logger.info("Initializing computed values for sale_order.invoice_date")
env.cr.execute(
"""
WITH so AS (
SELECT so.id AS id, max(sol.invoice_date) AS invoice_date
FROM sale_order_line sol
INNER JOIN sale_order so ON sol.order_id = so.id
WHERE so.invoice_status = 'invoiced' AND sol.invoice_date IS NOT NULL
GROUP BY so.id
)
UPDATE sale_order
SET invoice_date = so.invoice_date
FROM so WHERE sale_order.id = so.id
"""
)
61 changes: 61 additions & 0 deletions sale_order_invoice_date/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoice_date
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-04-24 22:36+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: none\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__display_name
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__display_name
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__display_name
msgid "Display Name"
msgstr "Mostrar Nombre"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__id
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__id
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__id
msgid "ID"
msgstr "ID"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__invoice_date
#: model_terms:ir.ui.view,arch_db:sale_order_invoice_date.view_order_product_search
msgid "Invoice Date"
msgstr "Fecha Factura"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order____last_update
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line____last_update
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report____last_update
msgid "Last Modified on"
msgstr "Última Modificación el"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_report
msgid "Sales Analysis Report"
msgstr "Informe Analítico de Ventas"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_order
msgid "Sales Order"
msgstr "Orden de venta"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línea de Orden de Ventas"
61 changes: 61 additions & 0 deletions sale_order_invoice_date/i18n/fr.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoice_date
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2022-06-09 19:45+0000\n"
"PO-Revision-Date: 2022-06-09 19:45+0000\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__display_name
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__display_name
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__display_name
msgid "Display Name"
msgstr "Nom affiché"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__id
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__id
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__id
msgid "ID"
msgstr ""

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__invoice_date
#: model_terms:ir.ui.view,arch_db:sale_order_invoice_date.view_order_product_search
msgid "Invoice Date"
msgstr "Date de facturation"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order____last_update
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line____last_update
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report____last_update
msgid "Last Modified on"
msgstr "Dernière modification le"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_report
msgid "Sales Analysis Report"
msgstr "Rapport d'analyse des ventes"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_order
msgid "Sales Order"
msgstr "Bon de commande"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_order_line
msgid "Sales Order Line"
msgstr "Ligne de bons de commande"
61 changes: 61 additions & 0 deletions sale_order_invoice_date/i18n/it.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoice_date
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-10 11:06+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: none\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.6.2\n"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__display_name
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__display_name
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__display_name
msgid "Display Name"
msgstr "Nome visualizzato"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__id
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__id
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__id
msgid "ID"
msgstr "ID"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order__invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line__invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report__invoice_date
#: model_terms:ir.ui.view,arch_db:sale_order_invoice_date.view_order_product_search
msgid "Invoice Date"
msgstr "Data fattura"

#. module: sale_order_invoice_date
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order____last_update
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_order_line____last_update
#: model:ir.model.fields,field_description:sale_order_invoice_date.field_sale_report____last_update
msgid "Last Modified on"
msgstr "Ultima modifica il"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_report
msgid "Sales Analysis Report"
msgstr "Resoconto analisi vendite"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_order
msgid "Sales Order"
msgstr "Ordine di vendita"

#. module: sale_order_invoice_date
#: model:ir.model,name:sale_order_invoice_date.model_sale_order_line
msgid "Sales Order Line"
msgstr "Riga ordine di vendita"
Loading
Loading