Initial commit: Odoo 18.0-20251222 extra-addons
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled

This commit is contained in:
tocmo0nlord
2026-03-13 20:43:25 +00:00
parent 36e847a7df
commit adbe430761
9472 changed files with 1265727 additions and 0 deletions

View File

@@ -0,0 +1,142 @@
=======================================
Sales order invoicing grouping criteria
=======================================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a139a1803c5c39e555c6280ab94d1e625660faea9438a0ceecd36b56c756836c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Production%2FStable-green.png
:target: https://odoo-community.org/page/development-status
:alt: Production/Stable
.. |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%2Faccount--invoicing-lightgray.png?logo=github
:target: https://github.com/OCA/account-invoicing/tree/18.0/sale_order_invoicing_grouping_criteria
:alt: OCA/account-invoicing
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-sale_order_invoicing_grouping_criteria
: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/account-invoicing&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to use custom criteria for grouping sales orders to
be invoiced.
Default criteria for grouping (invoicing partner, company and used
currency) will be always applied, as if not respected, there will be
business inconsistencies, but you can add more fields to split the
invoicing according them.
**Table of contents**
.. contents::
:local:
Configuration
=============
For creating new grouping criteria:
1. Go to *Invoicing > Configuration > Management > Invoicing Grouping
Criteria*.
2. Create or modify existing criteria, selecting fields belonging to
"Sales Order" header model for grouping according them.
3. Invoicing address and currency will always be applied with the
selected ones.
For setting a different grouping criteria for a specific customer:
1. Go to *Invoicing > Customer > Customers*.
2. Open the desired customer.
3. Go to *Invoicing* page.
4. Set on "Sales Invoicing Grouping Criteria" the desired grouping
criteria.
For setting a different default grouping criteria than the standard for
the whole company:
1. Go to *Invoicing > Configuration> Settings*.
2. Locate inside "Sales Order Invoicing" section, the field "Default
Grouping Criteria".
3. Introduce there the grouping criteria to be applied by default. If
empty, the general default of invoicing address + currency + company
will be applied.
Usage
=====
1. Go to *Sales > To Invoice > Orders to Invoice*.
2. Select sales orders whose invoicing you want to do.
3. Click on *Action > Invoice Order*.
4. Click on "Create and View Invoices" button.
5. On that moment, the grouping criteria will be applied, and you will
see different invoices if the criteria doesn't match for them.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-invoicing/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/account-invoicing/issues/new?body=module:%20sale_order_invoicing_grouping_criteria%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
-------
* Tecnativa
Contributors
------------
- `Tecnativa <https://www.tecnativa.com>`__:
- Pedro M. Baeza
- Carlos Lopez
- `Sygel <https://www.sygel.es/>`__:
- Valentin Vinagre valentin.vinagre@sygel.es
- Roger Sans roger.sans@sygel.es
- `Dynapps <https://www.dynapps.eu/>`__:
- Bert Van Groenendael bert.vangroenendael@dynapps.eu
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-pedrobaeza| image:: https://github.com/pedrobaeza.png?size=40px
:target: https://github.com/pedrobaeza
:alt: pedrobaeza
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-pedrobaeza|
This module is part of the `OCA/account-invoicing <https://github.com/OCA/account-invoicing/tree/18.0/sale_order_invoicing_grouping_criteria>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import models

View File

@@ -0,0 +1,21 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Sales order invoicing grouping criteria",
"version": "18.0.1.0.0",
"category": "Sales Management",
"license": "AGPL-3",
"author": "Tecnativa, " "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-invoicing",
"depends": ["sale_management"],
"data": [
"security/ir.model.access.csv",
"views/res_config_settings_views.xml",
"views/res_partner_views.xml",
"views/sale_invoicing_grouping_criteria_views.xml",
],
"installable": True,
"development_status": "Production/Stable",
"maintainers": ["pedrobaeza"],
}

View File

@@ -0,0 +1,135 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoicing_grouping_criteria
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 14.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-06-23 14:10+0000\n"
"Last-Translator: eccit-quim <quim@eccit.com>\n"
"Language-Team: none\n"
"Language: ca\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_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_company
msgid "Companies"
msgstr "Companyies"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_config_settings
msgid "Config Settings"
msgstr "Paràmetres de configuració"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_partner
msgid "Contact"
msgstr "Contacte"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_uid
msgid "Created by"
msgstr "Creat per"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_date
msgid "Created on"
msgstr "Creat el"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_company__default_sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_config_settings__res_default_sale_invoicing_grouping_criteria_id
msgid "Default Sales Invoicing Grouping Criteria"
msgstr "Criteri d'agrupació per defecte de factures de venda"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__display_name
msgid "Display Name"
msgstr "Nom a mostrar"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid ""
"Fields used for grouping sales orders when invoicing. Invoicing address, "
"company and currency will always be applied."
msgstr ""
"Camps usats per agrupar comandes de venda a la facturació. Adreça de "
"facturació, companyia i divisa, s'aplicaran sempre."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid "Grouping Fields"
msgstr "Camps d'agrupació"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__id
msgid "ID"
msgstr "ID"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
msgid "If empty, company default (if any) or default will be applied."
msgstr ""
"Si és buit, s'aplicarà el valor per defecte de la companyia (si n'hi ha) o "
"el valor per defecte general."
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "If empty, invoicing address, company and currency will be applied."
msgstr "Si és buit, s'aplicaran adreça de facturació, companyia i divisa."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.ui.menu,name:sale_order_invoicing_grouping_criteria.menu_sale_invoice_grouping_criteria
msgid "Invoicing Grouping Criteria"
msgstr "Criteri d'agrupació de facturació"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_uid
msgid "Last Updated by"
msgstr "Darrera actualització per"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_date
msgid "Last Updated on"
msgstr "Darrera actualització el"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__name
msgid "Name"
msgstr "Nom"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sale Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.actions.act_window,name:sale_order_invoicing_grouping_criteria.action_sale_invoice_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sales Invoicing Grouping Criteria"
msgstr "Criteri d'agrupació de facturació de vendes"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_order
msgid "Sales Order"
msgstr "Comanda de venda"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "Sales Order Invoicing"
msgstr "Facturació de comandes de venda"
#~ msgid "Default Grouping Criteria"
#~ msgstr "Criteri d'agrupació per defecte"
#~ msgid "Last Modified on"
#~ msgstr "Darrera modificació el"

View File

@@ -0,0 +1,137 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoicing_grouping_criteria
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2023-10-11 09:15+0000\n"
"Last-Translator: David Brühlmeier <david@bruehlmeier.com>\n"
"Language-Team: none\n"
"Language: de\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_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_company
msgid "Companies"
msgstr "Unternehmen"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_config_settings
msgid "Config Settings"
msgstr "Konfigurationseinstellungen"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_partner
msgid "Contact"
msgstr "Kontakt"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_uid
msgid "Created by"
msgstr "Erstellt von"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_date
msgid "Created on"
msgstr "Erstellt am"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_company__default_sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_config_settings__res_default_sale_invoicing_grouping_criteria_id
msgid "Default Sales Invoicing Grouping Criteria"
msgstr "Standard-Gruppierungsmerkmal für Verkaufsaufträge"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid ""
"Fields used for grouping sales orders when invoicing. Invoicing address, "
"company and currency will always be applied."
msgstr ""
"Felder, die für die Gruppierung von Verkaufsaufträgen bei der "
"Rechnungsstellung verwendet werden. Rechnungsadresse, Unternehmen und "
"Währung werden immer verwendet."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid "Grouping Fields"
msgstr "Felder für die Gruppierung"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__id
msgid "ID"
msgstr "ID"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
msgid "If empty, company default (if any) or default will be applied."
msgstr ""
"Wenn leer, wird der Unternehmensstandard (falls vorhanden) oder der "
"Standardwert angewendet."
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "If empty, invoicing address, company and currency will be applied."
msgstr ""
"Wenn leer, werden Rechnungsadresse, Unternehmen und Währung übernommen."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.ui.menu,name:sale_order_invoicing_grouping_criteria.menu_sale_invoice_grouping_criteria
msgid "Invoicing Grouping Criteria"
msgstr "Gruppierungsmerkmale für die Rechnungsstellung"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert von"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__name
msgid "Name"
msgstr "Name"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sale Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.actions.act_window,name:sale_order_invoicing_grouping_criteria.action_sale_invoice_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sales Invoicing Grouping Criteria"
msgstr "Gruppierung von Verkaufsaufträgen"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_order
msgid "Sales Order"
msgstr "Verkaufsauftrag"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "Sales Order Invoicing"
msgstr "Rechnungsstellung von Verkaufsaufträgen"
#~ msgid "Default Grouping Criteria"
#~ msgstr "Standard-Gruppierungsmerkmal"
#~ msgid "Last Modified on"
#~ msgstr "Zuletzt geändert am"

View File

@@ -0,0 +1,138 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoicing_grouping_criteria
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 11.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-03-05 09:09+0000\n"
"PO-Revision-Date: 2020-03-05 10:10+0100\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: \n"
"X-Generator: Poedit 2.0.6\n"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_company
msgid "Companies"
msgstr "Compañías"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_config_settings
msgid "Config Settings"
msgstr "Ajustes de configuración"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_partner
msgid "Contact"
msgstr "Contacto"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_date
msgid "Created on"
msgstr "Creado el"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_company__default_sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_config_settings__res_default_sale_invoicing_grouping_criteria_id
msgid "Default Sales Invoicing Grouping Criteria"
msgstr "Criterio de agrupación de facturación de ventas por defecto"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid ""
"Fields used for grouping sales orders when invoicing. Invoicing address, "
"company and currency will always be applied."
msgstr ""
"Campos usados para agrupar los pedidos de venta cuando se facturan. La "
"dirección de facturación, la compañía y la moneda se aplicarán siempre."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid "Grouping Fields"
msgstr "Campos de agrupación"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__id
msgid "ID"
msgstr "ID"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
msgid "If empty, company default (if any) or default will be applied."
msgstr ""
"Si está vacío, el valor por defecto de la compañía (si está establecido) o "
"el de por defecto general serán aplicados."
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "If empty, invoicing address, company and currency will be applied."
msgstr ""
"Si está vacío, la dirección de facturacíón, la compañía y la moneda serán "
"aplicados."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.ui.menu,name:sale_order_invoicing_grouping_criteria.menu_sale_invoice_grouping_criteria
msgid "Invoicing Grouping Criteria"
msgstr "Criterio de agrupación de facturación"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_uid
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_date
msgid "Last Updated on"
msgstr "Última actualización el"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__name
msgid "Name"
msgstr "Nombre"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sale Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.actions.act_window,name:sale_order_invoicing_grouping_criteria.action_sale_invoice_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sales Invoicing Grouping Criteria"
msgstr "Criterio de agrupación de facturación de ventas"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_order
msgid "Sales Order"
msgstr "Pedido de venta"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "Sales Order Invoicing"
msgstr "Facturación de pedidos de venta"
#~ msgid "Default Grouping Criteria"
#~ msgstr "Criterio de agrupación por defecto"
#~ msgid "Last Modified on"
#~ msgstr "Última modificación el"

View File

@@ -0,0 +1,136 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoicing_grouping_criteria
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-07-05 14:05+0000\n"
"Last-Translator: ClementChaumienneC2C <clement.chaumienne@camptocamp.com>\n"
"Language-Team: none\n"
"Language: fr\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.3.2\n"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_company
msgid "Companies"
msgstr "Sociétés"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_config_settings
msgid "Config Settings"
msgstr "Paramètres"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_partner
msgid "Contact"
msgstr "Contact"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_uid
msgid "Created by"
msgstr "Crée par"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_date
msgid "Created on"
msgstr "Crée le"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_company__default_sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_config_settings__res_default_sale_invoicing_grouping_criteria_id
msgid "Default Sales Invoicing Grouping Criteria"
msgstr "Critère de groupement factures vente par défaut"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__display_name
msgid "Display Name"
msgstr "Nom"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid ""
"Fields used for grouping sales orders when invoicing. Invoicing address, "
"company and currency will always be applied."
msgstr ""
"Champ utilisé pour grouper les commandes de ventes lors de la facturation. "
"Par défaut, l'adresse de facturation, la société, et la devise seront "
"toujours appliqués."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid "Grouping Fields"
msgstr "Champs de Groupement"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__id
msgid "ID"
msgstr "ID"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
msgid "If empty, company default (if any) or default will be applied."
msgstr "Si vide, le paramètre société par défaut (si existant) sera appliqués."
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "If empty, invoicing address, company and currency will be applied."
msgstr ""
"Si vide, l'adresse de facturation, la société, et la devise seront appliqués "
"comme critères de groupement."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.ui.menu,name:sale_order_invoicing_grouping_criteria.menu_sale_invoice_grouping_criteria
msgid "Invoicing Grouping Criteria"
msgstr "Critère de groupement de facturation"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_uid
msgid "Last Updated by"
msgstr "Dernière modification par"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_date
msgid "Last Updated on"
msgstr "Dernière modification le"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__name
msgid "Name"
msgstr "Nom"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sale Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.actions.act_window,name:sale_order_invoicing_grouping_criteria.action_sale_invoice_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sales Invoicing Grouping Criteria"
msgstr "Groupement de Facture de Vente"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_order
msgid "Sales Order"
msgstr "Commande de Vente"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "Sales Order Invoicing"
msgstr "Facturation Commandes de Vente"
#~ msgid "Default Grouping Criteria"
#~ msgstr "Critère de Groupement par Défaut"
#~ msgid "Last Modified on"
#~ msgstr "Dernière modification le"

View File

@@ -0,0 +1,138 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoicing_grouping_criteria
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-02-25 15: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_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_company
msgid "Companies"
msgstr "Aziende"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_config_settings
msgid "Config Settings"
msgstr "Impostazioni configurazione"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_partner
msgid "Contact"
msgstr "Contatto"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_date
msgid "Created on"
msgstr "Creato il"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_company__default_sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_config_settings__res_default_sale_invoicing_grouping_criteria_id
msgid "Default Sales Invoicing Grouping Criteria"
msgstr "Critero di raggruppamento della fatturazione di vendita predefinito"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid ""
"Fields used for grouping sales orders when invoicing. Invoicing address, "
"company and currency will always be applied."
msgstr ""
"Campi utilizzati per raggruppare ordini di vendita al momento della "
"fatturazione. Verranno sempre applicati indirizzo di fatturazione, società e "
"valuta."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid "Grouping Fields"
msgstr "Campi raggruppamento"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__id
msgid "ID"
msgstr "ID"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
msgid "If empty, company default (if any) or default will be applied."
msgstr ""
"Se vuoto, verrà applicato il valore predefinito dell'azienda (se presente) o "
"il valore predefinito."
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "If empty, invoicing address, company and currency will be applied."
msgstr ""
"Se vuoto, verranno applicati l'indirizzo di fatturazione, l'azienda e la "
"valuta."
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.ui.menu,name:sale_order_invoicing_grouping_criteria.menu_sale_invoice_grouping_criteria
msgid "Invoicing Grouping Criteria"
msgstr "Criteri di raggruppamento di fatturazione"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__name
msgid "Name"
msgstr "Nome"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sale Invoicing Grouping Criteria"
msgstr "Criterio raggruppamento fattura vendita"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.actions.act_window,name:sale_order_invoicing_grouping_criteria.action_sale_invoice_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sales Invoicing Grouping Criteria"
msgstr "Criteri di raggruppamento della fatturazione"
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_order
msgid "Sales Order"
msgstr "Ordine di vendita"
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "Sales Order Invoicing"
msgstr "Fatturazione degli ordini di vendita"
#~ msgid "Default Grouping Criteria"
#~ msgstr "Criteri di raggruppamento predefiniti"
#~ msgid "Last Modified on"
#~ msgstr "Ultima modifica il"

View File

@@ -0,0 +1,122 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_invoicing_grouping_criteria
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \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: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_company
msgid "Companies"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_config_settings
msgid "Config Settings"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_res_partner
msgid "Contact"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_uid
msgid "Created by"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__create_date
msgid "Created on"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_company__default_sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_config_settings__res_default_sale_invoicing_grouping_criteria_id
msgid "Default Sales Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__display_name
msgid "Display Name"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid ""
"Fields used for grouping sales orders when invoicing. Invoicing address, "
"company and currency will always be applied."
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__field_ids
msgid "Grouping Fields"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__id
msgid "ID"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,help:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
msgid "If empty, company default (if any) or default will be applied."
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "If empty, invoicing address, company and currency will be applied."
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.ui.menu,name:sale_order_invoicing_grouping_criteria.menu_sale_invoice_grouping_criteria
msgid "Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_uid
msgid "Last Updated by"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__write_date
msgid "Last Updated on"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_sale_invoicing_grouping_criteria__name
msgid "Name"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sale Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.actions.act_window,name:sale_order_invoicing_grouping_criteria.action_sale_invoice_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_invoicing_grouping_criteria
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_partner__sale_invoicing_grouping_criteria_id
#: model:ir.model.fields,field_description:sale_order_invoicing_grouping_criteria.field_res_users__sale_invoicing_grouping_criteria_id
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.view_partner_property_form
msgid "Sales Invoicing Grouping Criteria"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model:ir.model,name:sale_order_invoicing_grouping_criteria.model_sale_order
msgid "Sales Order"
msgstr ""
#. module: sale_order_invoicing_grouping_criteria
#: model_terms:ir.ui.view,arch_db:sale_order_invoicing_grouping_criteria.res_config_settings_view_form
msgid "Sales Order Invoicing"
msgstr ""

View File

@@ -0,0 +1,7 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import res_company
from . import res_config_settings
from . import res_partner
from . import sale_invoicing_grouping_criteria
from . import sale_order

View File

@@ -0,0 +1,13 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResCompany(models.Model):
_inherit = "res.company"
default_sale_invoicing_grouping_criteria_id = fields.Many2one(
string="Default Sales Invoicing Grouping Criteria",
comodel_name="sale.invoicing.grouping.criteria",
)

View File

@@ -0,0 +1,12 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class ResConfigSettings(models.TransientModel):
_inherit = "res.config.settings"
res_default_sale_invoicing_grouping_criteria_id = fields.Many2one(
related="company_id.default_sale_invoicing_grouping_criteria_id", readonly=False
)

View File

@@ -0,0 +1,21 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# 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"
sale_invoicing_grouping_criteria_id = fields.Many2one(
string="Sales Invoicing Grouping Criteria",
comodel_name="sale.invoicing.grouping.criteria",
help="If empty, company default (if any) or default will be applied.",
)
@api.model
def _commercial_fields(self):
"""Add this field to commercial fields, as it should be propagated
to children.
"""
return super()._commercial_fields() + ["sale_invoicing_grouping_criteria_id"]

View File

@@ -0,0 +1,18 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class SaleInvoicingGroupingCriteria(models.Model):
_name = "sale.invoicing.grouping.criteria"
_description = "Sales Invoicing Grouping Criteria"
name = fields.Char()
field_ids = fields.Many2many(
string="Grouping Fields",
comodel_name="ir.model.fields",
domain="[('model', '=', 'sale.order')]",
help="Fields used for grouping sales orders when invoicing. "
"Invoicing address, company and currency will always be applied.",
)

View File

@@ -0,0 +1,51 @@
# Copyright 2019-2020 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class SaleOrder(models.Model):
_inherit = "sale.order"
def _get_grouping_partner(self):
"""
Get the partner who contains the grouping criteria.
On sale.order, the default should be the invoice address.
If not set, use the partner_id.
:return: res.partner recordset
"""
self.ensure_one()
return self.partner_invoice_id or self.partner_id
def _get_sale_invoicing_group_key(self):
"""Prepare extended grouping criteria for sales orders."""
self.ensure_one()
group_key = [
self.company_id.id,
self.partner_invoice_id.id,
self.currency_id.id,
]
partner = self._get_grouping_partner()
criteria = (
partner.sale_invoicing_grouping_criteria_id
or self.company_id.default_sale_invoicing_grouping_criteria_id
)
for field in criteria.field_ids.sudo():
group_key.append(self[field.name])
return tuple(group_key)
def _create_invoices(self, grouped=False, final=False, date=None):
"""Slice the batch according grouping criteria."""
order_groups = {}
for order in self:
group_key = order._get_sale_invoicing_group_key()
if group_key not in order_groups:
order_groups[group_key] = order
else:
order_groups[group_key] += order
moves = self.env["account.move"]
for group in order_groups.values():
moves += super(SaleOrder, group)._create_invoices(
grouped=grouped, final=final, date=date
)
return moves

View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,26 @@
For creating new grouping criteria:
1. Go to *Invoicing \> Configuration \> Management \> Invoicing
Grouping Criteria*.
2. Create or modify existing criteria, selecting fields belonging to
"Sales Order" header model for grouping according them.
3. Invoicing address and currency will always be applied with the
selected ones.
For setting a different grouping criteria for a specific customer:
1. Go to *Invoicing \> Customer \> Customers*.
2. Open the desired customer.
3. Go to *Invoicing* page.
4. Set on "Sales Invoicing Grouping Criteria" the desired grouping
criteria.
For setting a different default grouping criteria than the standard for
the whole company:
1. Go to *Invoicing \> Configuration\> Settings*.
2. Locate inside "Sales Order Invoicing" section, the field "Default
Grouping Criteria".
3. Introduce there the grouping criteria to be applied by default. If
empty, the general default of invoicing address + currency + company
will be applied.

View File

@@ -0,0 +1,13 @@
- [Tecnativa](https://www.tecnativa.com):
- Pedro M. Baeza
- Carlos Lopez
- [Sygel](https://www.sygel.es/):
- Valentin Vinagre <valentin.vinagre@sygel.es>
- Roger Sans <roger.sans@sygel.es>
- [Dynapps](https://www.dynapps.eu/):
- Bert Van Groenendael <bert.vangroenendael@dynapps.eu>

View File

@@ -0,0 +1,7 @@
This module allows to use custom criteria for grouping sales orders to
be invoiced.
Default criteria for grouping (invoicing partner, company and used
currency) will be always applied, as if not respected, there will be
business inconsistencies, but you can add more fields to split the
invoicing according them.

View File

@@ -0,0 +1,6 @@
1. Go to *Sales \> To Invoice \> Orders to Invoice*.
2. Select sales orders whose invoicing you want to do.
3. Click on *Action \> Invoice Order*.
4. Click on "Create and View Invoices" button.
5. On that moment, the grouping criteria will be applied, and you will
see different invoices if the criteria doesn't match for them.

View File

@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_invoicing_grouping_criteria_user,access_sale_invoicing_grouping_criteria user,model_sale_invoicing_grouping_criteria,account.group_account_invoice,1,0,0,0
access_sale_invoicing_grouping_criteria_manager,access_sale_invoicing_grouping_criteria manager,model_sale_invoicing_grouping_criteria,account.group_account_manager,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sale_invoicing_grouping_criteria_user access_sale_invoicing_grouping_criteria user model_sale_invoicing_grouping_criteria account.group_account_invoice 1 0 0 0
3 access_sale_invoicing_grouping_criteria_manager access_sale_invoicing_grouping_criteria manager model_sale_invoicing_grouping_criteria account.group_account_manager 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,486 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Sales order invoicing grouping criteria</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="sales-order-invoicing-grouping-criteria">
<h1 class="title">Sales order invoicing grouping criteria</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:a139a1803c5c39e555c6280ab94d1e625660faea9438a0ceecd36b56c756836c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Production/Stable" src="https://img.shields.io/badge/maturity-Production%2FStable-green.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/account-invoicing/tree/18.0/sale_order_invoicing_grouping_criteria"><img alt="OCA/account-invoicing" src="https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-sale_order_invoicing_grouping_criteria"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/account-invoicing&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to use custom criteria for grouping sales orders to
be invoiced.</p>
<p>Default criteria for grouping (invoicing partner, company and used
currency) will be always applied, as if not respected, there will be
business inconsistencies, but you can add more fields to split the
invoicing according them.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<p>For creating new grouping criteria:</p>
<ol class="arabic simple">
<li>Go to <em>Invoicing &gt; Configuration &gt; Management &gt; Invoicing Grouping
Criteria</em>.</li>
<li>Create or modify existing criteria, selecting fields belonging to
“Sales Order” header model for grouping according them.</li>
<li>Invoicing address and currency will always be applied with the
selected ones.</li>
</ol>
<p>For setting a different grouping criteria for a specific customer:</p>
<ol class="arabic simple">
<li>Go to <em>Invoicing &gt; Customer &gt; Customers</em>.</li>
<li>Open the desired customer.</li>
<li>Go to <em>Invoicing</em> page.</li>
<li>Set on “Sales Invoicing Grouping Criteria” the desired grouping
criteria.</li>
</ol>
<p>For setting a different default grouping criteria than the standard for
the whole company:</p>
<ol class="arabic simple">
<li>Go to <em>Invoicing &gt; Configuration&gt; Settings</em>.</li>
<li>Locate inside “Sales Order Invoicing” section, the field “Default
Grouping Criteria”.</li>
<li>Introduce there the grouping criteria to be applied by default. If
empty, the general default of invoicing address + currency + company
will be applied.</li>
</ol>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<ol class="arabic simple">
<li>Go to <em>Sales &gt; To Invoice &gt; Orders to Invoice</em>.</li>
<li>Select sales orders whose invoicing you want to do.</li>
<li>Click on <em>Action &gt; Invoice Order</em>.</li>
<li>Click on “Create and View Invoices” button.</li>
<li>On that moment, the grouping criteria will be applied, and you will
see different invoices if the criteria doesnt match for them.</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/account-invoicing/issues">GitHub Issues</a>.
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
<a class="reference external" href="https://github.com/OCA/account-invoicing/issues/new?body=module:%20sale_order_invoicing_grouping_criteria%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-5">Authors</a></h2>
<ul class="simple">
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<ul class="simple">
<li><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:<ul>
<li>Pedro M. Baeza</li>
<li>Carlos Lopez</li>
</ul>
</li>
<li><a class="reference external" href="https://www.sygel.es/">Sygel</a>:<ul>
<li>Valentin Vinagre <a class="reference external" href="mailto:valentin.vinagre&#64;sygel.es">valentin.vinagre&#64;sygel.es</a></li>
<li>Roger Sans <a class="reference external" href="mailto:roger.sans&#64;sygel.es">roger.sans&#64;sygel.es</a></li>
</ul>
</li>
<li><a class="reference external" href="https://www.dynapps.eu/">Dynapps</a>:<ul>
<li>Bert Van Groenendael <a class="reference external" href="mailto:bert.vangroenendael&#64;dynapps.eu">bert.vangroenendael&#64;dynapps.eu</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>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.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/pedrobaeza"><img alt="pedrobaeza" src="https://github.com/pedrobaeza.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/account-invoicing/tree/18.0/sale_order_invoicing_grouping_criteria">OCA/account-invoicing</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,3 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_sale_order_invoicing_group_criteria

View File

@@ -0,0 +1,115 @@
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests import TransactionCase
class TestSaleOrderInvoicingGroupingCriteria(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.env = cls.env(
context=dict(
cls.env.context,
mail_create_nolog=True,
mail_create_nosubscribe=True,
mail_notrack=True,
no_reset_password=True,
tracking_disable=True,
)
)
cls.env = cls.env(context=dict(cls.env.context, tracking_disable=True))
cls.partner = cls.env["res.partner"].create({"name": "Test partner"})
cls.partner2 = cls.env["res.partner"].create({"name": "Other partner"})
cls.product = cls.env["product.product"].create(
{"name": "Test product", "type": "service", "invoice_policy": "order"}
)
cls.GroupingCriteria = cls.env["sale.invoicing.grouping.criteria"]
cls.grouping_criteria = cls.GroupingCriteria.create(
{
"name": "Delivery Address",
"field_ids": [
(4, cls.env.ref("sale.field_sale_order__partner_shipping_id").id)
],
}
)
cls.order = cls.env["sale.order"].create(
{
"partner_id": cls.partner.id,
"partner_shipping_id": cls.partner.id,
"partner_invoice_id": cls.partner.id,
"pricelist_id": cls.partner.property_product_pricelist.id,
"order_line": [
(
0,
0,
{
"name": cls.product.name,
"product_id": cls.product.id,
"price_unit": 20,
"product_uom_qty": 1,
"product_uom": cls.product.uom_id.id,
},
)
],
}
)
cls.order.action_confirm()
cls.order2 = cls.order.copy()
cls.order2.action_confirm()
def test_invoicing_same_data(self):
invoice_ids = (self.order + self.order2)._create_invoices()
self.assertEqual(len(invoice_ids), 1)
self.assertEqual(self.order.invoice_ids, self.order2.invoice_ids)
def test_invoicing_grouping_default(self):
self.order2.partner_invoice_id = self.partner2.id
invoice_ids = (self.order + self.order2)._create_invoices()
self.assertEqual(len(invoice_ids), 2)
self.assertNotEqual(self.order.invoice_ids, self.order2.invoice_ids)
def test_invoicing_grouping_company_criteria(self):
self.order2.partner_shipping_id = self.partner2.id
self.order.company_id.default_sale_invoicing_grouping_criteria_id = (
self.grouping_criteria.id
)
invoice_ids = (self.order + self.order2)._create_invoices()
self.assertEqual(len(invoice_ids), 2)
self.assertNotEqual(self.order.invoice_ids, self.order2.invoice_ids)
def test_invoicing_grouping_partner_criteria(self):
self.order2.partner_shipping_id = self.partner2.id
self.partner.sale_invoicing_grouping_criteria_id = self.grouping_criteria.id
invoice_ids = (self.order + self.order2)._create_invoices()
self.assertEqual(len(invoice_ids), 2)
self.assertNotEqual(self.order.invoice_ids, self.order2.invoice_ids)
def test_invoicing_grouping_partner_criteria_as_demo(self):
self.order2.partner_shipping_id = self.partner2.id
self.partner.sale_invoicing_grouping_criteria_id = self.grouping_criteria.id
user_demo = self.env.ref("base.user_demo")
user_demo.groups_id = [
(4, self.env.ref("sales_team.group_sale_salesman_all_leads").id)
]
invoice_ids = (self.order + self.order2).with_user(user_demo)._create_invoices()
self.assertEqual(len(invoice_ids), 2)
self.assertNotEqual(self.order.invoice_ids, self.order2.invoice_ids)
def test_invoicing_grouping_specific_order_field(self):
"""Regression test for checking values in order, not in invoices vals."""
self.partner.sale_invoicing_grouping_criteria_id = self.grouping_criteria.id
self.grouping_criteria["field_ids"] = [
(4, self.env.ref("sale.field_sale_order__id").id)
]
invoices = (self.order + self.order2)._create_invoices()
self.assertEqual(len(invoices), 2)
def test_commercial_field(self):
self.partner.sale_invoicing_grouping_criteria_id = self.grouping_criteria.id
children = self.env["res.partner"].create(
{"name": "Test children", "parent_id": self.partner.id}
)
self.assertEqual(
children.sale_invoicing_grouping_criteria_id, self.grouping_criteria
)

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="res_config_settings_view_form" model="ir.ui.view">
<field name="inherit_id" ref="account.res_config_settings_view_form" />
<field name="model">res.config.settings</field>
<field name="arch" type="xml">
<block id="invoicing_settings" position="after">
<block title="Sales Order Invoicing" id="sale_order_invoicing_settings">
<setting
help="If empty, invoicing address, company and currency will be applied."
>
<field name="res_default_sale_invoicing_grouping_criteria_id" />
</setting>
</block>
</block>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_partner_property_form" model="ir.ui.view">
<field name="model">res.partner</field>
<field name="inherit_id" ref="account.view_partner_property_form" />
<field name="arch" type="xml">
<group name="banks" position="after">
<group name="sale_invoicing" string="Sale Invoicing Grouping Criteria">
<field
name="sale_invoicing_grouping_criteria_id"
string="Sales Invoicing Grouping Criteria"
/>
</group>
</group>
</field>
</record>
</odoo>

View File

@@ -0,0 +1,50 @@
<?xml version="1.0" encoding="UTF-8" ?>
<!-- Copyright 2019 Tecnativa - Pedro M. Baeza
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_sale_invoice_grouping_criteria_form" model="ir.ui.view">
<field name="model">sale.invoicing.grouping.criteria</field>
<field name="arch" type="xml">
<form>
<sheet>
<h1>
<field name="name" />
</h1>
<group>
<field name="field_ids" widget="many2many_tags" />
</group>
</sheet>
</form>
</field>
</record>
<record id="view_sale_invoice_grouping_criteria_tree" model="ir.ui.view">
<field name="model">sale.invoicing.grouping.criteria</field>
<field name="arch" type="xml">
<list>
<field name="name" />
<field name="field_ids" widget="many2many_tags" />
</list>
</field>
</record>
<record id="view_sale_invoice_grouping_criteria_search" model="ir.ui.view">
<field name="model">sale.invoicing.grouping.criteria</field>
<field name="arch" type="xml">
<search>
<field name="name" />
</search>
</field>
</record>
<record model="ir.actions.act_window" id="action_sale_invoice_grouping_criteria">
<field name="name">Sales Invoicing Grouping Criteria</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">sale.invoicing.grouping.criteria</field>
<field name="view_mode">list,form</field>
</record>
<menuitem
id="menu_sale_invoice_grouping_criteria"
action="action_sale_invoice_grouping_criteria"
name="Invoicing Grouping Criteria"
parent="account.account_management_menu"
sequence="100"
/>
</odoo>