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,125 @@
=============================
Sale order line price history
=============================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:cd2c7558f4b1caa8df2e05fc30d7045c774f800de6f9256fedea3e1fc9732955
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Fsale--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/sale-workflow/tree/18.0/sale_order_line_price_history
: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-18-0/sale-workflow-18-0-sale_order_line_price_history
: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=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module extends the functionality of Sales to allow you to see the
price history of a product from a sale order line and set one of these
old prices in the sale order line.
**Table of contents**
.. contents::
:local:
Usage
=====
To use this module, you need to:
1. Go to System Parameters and configure the
``sale_order_line_price_history.order_line_limit`` parameter to limit
the number of Sale Order Lines to show on the Wizard.
2. Go to *Sales -> Quotations* and select a Quotation. Default is 20
lines.
3. Click on the new clock button in one of the sale order lines.
4. A pop-up will open and you will see the *price history* for the
product of the sale order line and for the customer of the sale
order.
5. You can select other customer or leave it empty to see the price
history for all customers.
6. You can also set the price of one of the price history lines in the
sale order line. To do that, you have to open the price history line
desired and click the smart button named *Set price*.
Known issues / Roadmap
======================
- A backend tour would be nice to have.
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:%20sale_order_line_price_history%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
- Ernesto Tejeda
- David Vidal
- Carlos Roca
- Serpent Consulting Services Pvt. Ltd. <support@serpentcs.com>
- Dhara Solanki <dhara.solanki@initos.com>
- Ruchir Shukla <ruchir@bizzappdev.com>
- Eduardo de Miguel (`Moduon <https://www.moduon.team/>`__)
- Sodexis Team <dev@sodexis.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.
.. |maintainer-CarlosRoca13| image:: https://github.com/CarlosRoca13.png?size=40px
:target: https://github.com/CarlosRoca13
:alt: CarlosRoca13
.. |maintainer-Shide| image:: https://github.com/Shide.png?size=40px
:target: https://github.com/Shide
:alt: Shide
Current `maintainers <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-CarlosRoca13| |maintainer-Shide|
This module is part of the `OCA/sale-workflow <https://github.com/OCA/sale-workflow/tree/18.0/sale_order_line_price_history>`_ 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
from . import wizards

View File

@@ -0,0 +1,25 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Sale order line price history",
"version": "18.0.1.0.0",
"category": "Sales Management",
"author": "Tecnativa,Odoo Community Association (OCA)",
"website": "https://github.com/OCA/sale-workflow",
"license": "AGPL-3",
"depends": ["sale"],
"development_status": "Production/Stable",
"data": [
"security/ir.model.access.csv",
"wizards/sale_order_line_price_history.xml",
"views/sale_views.xml",
],
"assets": {
"web.assets_backend": [
"sale_order_line_price_history/static/src/js/*.js",
"sale_order_line_price_history/static/src/xml/*.xml",
],
},
"maintainers": ["CarlosRoca13", "Shide"],
"installable": True,
}

View File

@@ -0,0 +1,221 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-07-15 13:43+0000\n"
"Last-Translator: Maria Sparenberg <maria.sparenberg@gmx.net>\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 3.7.1\n"
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr "Schließen"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr "Erstellt von"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr "Erstellt am"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr "Kunde"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr "Anzeigename"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr "Historie"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr "Historienzeilen"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr "ID"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr ""
"Wenn der Haken gesetzt ist, werden auch die Positionen aus Angeboten "
"angezeigt."
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr "Zuletzt aktualisiert von"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr "Zuletzt aktualisiert am"
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr "Auftragsdatum"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr "Auftragsnummer"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr "Preishistorie pro Kunde"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr "Produkt"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr ""
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr "Verkaufshistorie"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr "Auftragszeile"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr "Preishistorie der Auftragszeile"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr "Preishistorienzeile der Auftragszeile"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr "Preis pro ME"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr "Historie der Auftragszeile"
#~ msgid "Last Modified on"
#~ msgstr "Zuletzt geändert am"
#~ msgid "Set price"
#~ msgstr "Preis verwenden"
#~ msgid "Include quotations"
#~ msgstr "Angebote berücksichtigen"
#~ msgid "Ordered Quantity"
#~ msgstr "Auftragsmenge"
#~ msgid "Price history"
#~ msgstr "Preishistorie"
#~ msgid ""
#~ "You can find a customer by its Name, TIN, Email or Internal Reference."
#~ msgstr ""
#~ "Ein Kunde kann anhand seines Namens, seiner Steuer-ID, Emailadresse oder "
#~ "internen Referenz gefunden werden."

View File

@@ -0,0 +1,207 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-01-18 12:02+0000\n"
"PO-Revision-Date: 2024-02-12 22:34+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\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: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr "Cerrar"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr "Creado por"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr "Creado en"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
"Fecha de creación de las órdenes giradas/enviadas,\n"
"Fecha de confirmación de las órdenes confirmadas."
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr "Cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr "(%) Descuento"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr "Nombre mostrado"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr "Historial de precios"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr "Líneas de historial de precios"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr "ID"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr "Incluir presupuestos"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr "Incluir entidad comercial"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr ""
"Incluir entidad comercial y sus contactos en el cálculo del historial de "
"ventas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr "Incluir líneas de presupuestos en el historial de ventas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr "Última actualización de"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr "Última actualización en"
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr ""
"¡No se ha encontrado la línea de pedido de venta histórica para esta acción!"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr "Fecha de pedido"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr "Referencia del pedido"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr "Historial de precios"
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr "Historial de precios por cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr "Producto"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr "Cantidad"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr ""
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr "Historial de ventas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr "Línea de pedido de venta"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr "Historial de precios"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr "Línea de historial de precios"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr "Línea de pedido de ventas"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr "Establecer Precio Histórico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr "Estado"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr "Precio Unitario"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr "Línea de orden de venta del historial"
#~ msgid "Last Modified on"
#~ msgstr "Última modificación en"

View File

@@ -0,0 +1,207 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2025-03-03 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.10.2\n"
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr "Chiudi"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr "Creato da"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr "Creato il"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
"Data di creazione degli ordini in bozza/spediti,\n"
"data di conferma degli ordini confermati."
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr "Cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr "Sconto (%)"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr "Nome visualizzato"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr "Cronologia"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr "Righe storico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr "ID"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr "Includi preventivi"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr "Includi entità commerciale"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr ""
"Includi entità commerciali e i suoi contatti nello storico delle vendite"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr "Includi righe preventivi nello storico delle vendite"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr "Ultimo aggiornamento di"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr "Ultimo aggiornamento il"
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr "Non è presente uno storico riga ordine di vendita per questa azione!"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr "Data ordine"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr "Riferimento ordine"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr "Storico prezzo"
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr "Storico prezzo per cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr "Prodotto"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr "Quantità"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr "Riga ordine di vendita"
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr "Storico vendite"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr "Riga ordine di vendita"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr "Storico prezzo riga ordine di vendita"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr "Riga storico prezzo riga ordine di vendita"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr "Riga ordine di vendita"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr "Imposta prezzo storico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr "Stato"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr "Prezzo unitario"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr "Storico riga ordine di vendita"
#~ msgid "Last Modified on"
#~ msgstr "Ultima modifica il"
#~ msgid "Set price"
#~ msgstr "Impostare prezzo"

View File

@@ -0,0 +1,218 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2020-09-15 21:00+0000\n"
"Last-Translator: Pedro Castro Silva <pedrocs@exo.pt>\n"
"Language-Team: none\n"
"Language: pt\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 3.10\n"
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr "Fechar"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr "Criado em"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr "Cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr "Desconto (%)"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr "Nome"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr "Histórico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr "Linhas do Histórico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr "ID"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr "Incluir entidade comercial"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr "Incluir entidade comercial e os seus contactos no histórico de vendas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr "Incluir linhas de orçamentos no histórico de vendas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr "Atualizado pela última vez por"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr "Atualizado pela última vez em"
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr "Data da Encomenda"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr "Refª da Encomenda"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr "Histórico de preço por cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr "Produto"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr ""
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr "Histórico de vendas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr "Linha de encomenda de venda"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr "Histórico de preço de linha de encomendas de venda"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr "Linha de histórico de preço de linha de encomenda de venda"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr "Preço Unitário"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr "linha de encomenda de venda do histórico"
#~ msgid "Last Modified on"
#~ msgstr "Modificado a última vez por"
#~ msgid "Set price"
#~ msgstr "Definir preço"
#~ msgid "Include quotations"
#~ msgstr "Incluir orçamentos"
#~ msgid "Ordered Quantity"
#~ msgstr "Quantidade da Encomenda"
#~ msgid "Price history"
#~ msgstr "Histórico de Preço"
#~ msgid ""
#~ "You can find a customer by its Name, TIN, Email or Internal Reference."
#~ msgstr ""
#~ "Pode encontrar um cliente pelo seu Nome, NIF, E-mail ou Refª Interna."

View File

@@ -0,0 +1,207 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2024-05-22 00:02+0000\n"
"Last-Translator: Rodrigo Macedo <sottomaiormacedotec@users.noreply."
"translation.odoo-community.org>\n"
"Language-Team: none\n"
"Language: pt_BR\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_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr "Fechar"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr "Criado por"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr "Criado em"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
"Data de criação dos rascunhos/pedidos enviados,\n"
"Data de confirmação dos pedidos confirmados."
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr "Cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr "Desconto(%)"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr "Nome Exibição"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr "Histórico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr "Linhas Histórico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr "ID"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr "Incluir Cotações"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr "Incluir Parceiro Comercial"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr "Incluir parceiro comercial e seus contatos no histórico de vendas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr "Incluir linhas de cotações no histórico de vendas"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr "Última Atualização por"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr "Última Atualização em"
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr "Não foi encontrada linha histórica de pedido de venda para esta ação!"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr "Data Pedido"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr "Referência do Pedido"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr "Histórico de Preços"
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr "Histórico de preços por cliente"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr "Produto"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr "Quantidade"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr ""
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr "Histórico de Preços"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr "Item Pedido de venda"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr "Histórico de preços do item do pedido de venda"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr "Linha de histórico de preços do item do pedido de venda"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr "Item do Pedido de Venda"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr "Definir preço histórico"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr "Estado"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr "Preço Unitário"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr "histórico do item do pedido de venda"
#~ msgid "Last Modified on"
#~ msgstr "Última Modificação em"
#~ msgid "Set price"
#~ msgstr "Definir preço"

View File

@@ -0,0 +1,195 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
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_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr ""
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr ""

View File

@@ -0,0 +1,196 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
"Language: tr\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"
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr ""
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr ""

View File

@@ -0,0 +1,217 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * sale_order_line_price_history
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-09-01 11:23+0000\n"
"Last-Translator: 黎伟杰 <674416404@qq.com>\n"
"Language-Team: none\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
"X-Generator: Weblate 3.8\n"
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Close"
msgstr "关闭"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_uid
msgid "Created by"
msgstr "创建者"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__create_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__create_date
msgid "Created on"
msgstr "创建时间"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid ""
"Creation date of draft/sent orders,\n"
"Confirmation date of confirmed orders."
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line__order_partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__partner_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__partner_id
msgid "Customer"
msgstr "客户"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__discount
msgid "Discount (%)"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__display_name
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__display_name
msgid "Display Name"
msgstr "显示名称"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_id
msgid "History"
msgstr "历史"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__line_ids
msgid "History lines"
msgstr "历史行"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__id
msgid "ID"
msgstr "ID"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include Quotations"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity"
msgstr "包括商业实体"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_commercial_partner
msgid "Include commercial entity and its contacts in the sale history"
msgstr "在销售历史中包括商业实体及其联系人"
#. module: sale_order_line_price_history
#: model:ir.model.fields,help:sale_order_line_price_history.field_sale_order_line_price_history__include_quotations
msgid "Include quotations lines in the sale history"
msgstr "在销售历史记录中包含报价单行"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_uid
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_uid
msgid "Last Updated by"
msgstr "最后更新者"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__write_date
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__write_date
msgid "Last Updated on"
msgstr "上次更新日期"
#. module: sale_order_line_price_history
#. odoo-python
#: code:addons/sale_order_line_price_history/wizards/sale_order_line_price_history.py:0
msgid "Not found historical sale order line for this action!"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_date_order
msgid "Order Date"
msgstr "单据日期"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_id
msgid "Order Reference"
msgstr "订单参考"
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/sale_line_price_history_widget.xml:0
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.view_order_form
msgid "Price History"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.actions.act_window,name:sale_order_line_price_history.sale_order_line_price_history_action
msgid "Price history per customer"
msgstr "每位客户的价格历史"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__product_id
msgid "Product"
msgstr "产品"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__product_uom_qty
msgid "Quantity"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__sale_order_line_id
msgid "Sale Order Line"
msgstr ""
#. module: sale_order_line_price_history
#: model_terms:ir.ui.view,arch_db:sale_order_line_price_history.sale_order_line_price_history_view_form
msgid "Sale history"
msgstr "销售历史"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history__sale_order_line_id
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__target_sale_order_line_id
msgid "Sale order line"
msgstr "销售订单行"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history
msgid "Sale order line price history"
msgstr "销售订单行价格历史记录"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line_price_history_line
msgid "Sale order line price history line"
msgstr "销售订单行价格历史记录行"
#. module: sale_order_line_price_history
#: model:ir.model,name:sale_order_line_price_history.model_sale_order_line
msgid "Sales Order Line"
msgstr ""
#. module: sale_order_line_price_history
#. odoo-javascript
#: code:addons/sale_order_line_price_history/static/src/xml/set_price_to_line_widget.xml:0
msgid "Set Historic Price"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__order_state
msgid "Status"
msgstr ""
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__price_unit
msgid "Unit Price"
msgstr "单价"
#. module: sale_order_line_price_history
#: model:ir.model.fields,field_description:sale_order_line_price_history.field_sale_order_line_price_history_line__history_sale_order_line_id
msgid "history sale order line"
msgstr "历史销售订单行"
#~ msgid "Last Modified on"
#~ msgstr "最后修改时间"
#~ msgid "Set price"
#~ msgstr "设定价格"
#~ msgid "Include quotations"
#~ msgstr "包括报价单"
#~ msgid "Ordered Quantity"
#~ msgstr "订购数量"
#~ msgid "Price history"
#~ msgstr "价格历史"
#~ msgid ""
#~ "You can find a customer by its Name, TIN, Email or Internal Reference."
#~ msgstr "您可以通过名称TINEmail 或内部参考找到客户。"

View File

@@ -0,0 +1 @@
from . import sale_order_line

View File

@@ -0,0 +1,11 @@
# Copyright 2021 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields, models
class SaleOrderLine(models.Model):
_inherit = "sale.order.line"
# In core this a related field. We need to trigger its value on view, so we can
# have it even when we're in a NewId
order_partner_id = fields.Many2one(depends=["product_id"])

View File

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

View File

@@ -0,0 +1,10 @@
- [Tecnativa](https://www.tecnativa.com):
- Pedro M. Baeza
- Ernesto Tejeda
- David Vidal
- Carlos Roca
- Serpent Consulting Services Pvt. Ltd. \<<support@serpentcs.com>\>
- Dhara Solanki \<<dhara.solanki@initos.com>\>
- Ruchir Shukla \<<ruchir@bizzappdev.com>\>
- Eduardo de Miguel ([Moduon](https://www.moduon.team/))
- Sodexis Team \<<dev@sodexis.com>\>

View File

@@ -0,0 +1,3 @@
This module extends the functionality of Sales to allow you to see the
price history of a product from a sale order line and set one of these
old prices in the sale order line.

View File

@@ -0,0 +1 @@
- A backend tour would be nice to have.

View File

@@ -0,0 +1,16 @@
To use this module, you need to:
1. Go to System Parameters and configure the
`sale_order_line_price_history.order_line_limit` parameter to limit
the number of Sale Order Lines to show on the Wizard.
2. Go to *Sales -\> Quotations* and select a Quotation. Default is 20
lines.
3. Click on the new clock button in one of the sale order lines.
4. A pop-up will open and you will see the *price history* for the
product of the sale order line and for the customer of the sale
order.
5. You can select other customer or leave it empty to see the price
history for all customers.
6. You can also set the price of one of the price history lines in the
sale order line. To do that, you have to open the price history line
desired and click the smart button named *Set price*.

View File

@@ -0,0 +1,3 @@
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_sale_order_line_price_history,sale_order_line_price_history,model_sale_order_line_price_history,sales_team.group_sale_salesman,1,1,1,1
access_sale_order_line_price_history_line,sale_order_line_price_history_line,model_sale_order_line_price_history_line,sales_team.group_sale_salesman,1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_sale_order_line_price_history sale_order_line_price_history model_sale_order_line_price_history sales_team.group_sale_salesman 1 1 1 1
3 access_sale_order_line_price_history_line sale_order_line_price_history_line model_sale_order_line_price_history_line sales_team.group_sale_salesman 1 1 1 1

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -0,0 +1,466 @@
<!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>Sale order line price history</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="sale-order-line-price-history">
<h1 class="title">Sale order line price history</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:cd2c7558f4b1caa8df2e05fc30d7045c774f800de6f9256fedea3e1fc9732955
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/sale-workflow/tree/18.0/sale_order_line_price_history"><img alt="OCA/sale-workflow" src="https://img.shields.io/badge/github-OCA%2Fsale--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/sale-workflow-18-0/sale-workflow-18-0-sale_order_line_price_history"><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/sale-workflow&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 extends the functionality of Sales to allow you to see the
price history of a product from a sale order line and set one of these
old prices in the sale order line.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#usage" id="toc-entry-1">Usage</a></li>
<li><a class="reference internal" href="#known-issues-roadmap" id="toc-entry-2">Known issues / Roadmap</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="usage">
<h1><a class="toc-backref" href="#toc-entry-1">Usage</a></h1>
<p>To use this module, you need to:</p>
<ol class="arabic simple">
<li>Go to System Parameters and configure the
<tt class="docutils literal">sale_order_line_price_history.order_line_limit</tt> parameter to limit
the number of Sale Order Lines to show on the Wizard.</li>
<li>Go to <em>Sales -&gt; Quotations</em> and select a Quotation. Default is 20
lines.</li>
<li>Click on the new clock button in one of the sale order lines.</li>
<li>A pop-up will open and you will see the <em>price history</em> for the
product of the sale order line and for the customer of the sale
order.</li>
<li>You can select other customer or leave it empty to see the price
history for all customers.</li>
<li>You can also set the price of one of the price history lines in the
sale order line. To do that, you have to open the price history line
desired and click the smart button named <em>Set price</em>.</li>
</ol>
</div>
<div class="section" id="known-issues-roadmap">
<h1><a class="toc-backref" href="#toc-entry-2">Known issues / Roadmap</a></h1>
<ul class="simple">
<li>A backend tour would be nice to have.</li>
</ul>
</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/sale-workflow/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/sale-workflow/issues/new?body=module:%20sale_order_line_price_history%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>Ernesto Tejeda</li>
<li>David Vidal</li>
<li>Carlos Roca</li>
</ul>
</li>
<li>Serpent Consulting Services Pvt. Ltd. &lt;<a class="reference external" href="mailto:support&#64;serpentcs.com">support&#64;serpentcs.com</a>&gt;</li>
<li>Dhara Solanki &lt;<a class="reference external" href="mailto:dhara.solanki&#64;initos.com">dhara.solanki&#64;initos.com</a>&gt;</li>
<li>Ruchir Shukla &lt;<a class="reference external" href="mailto:ruchir&#64;bizzappdev.com">ruchir&#64;bizzappdev.com</a>&gt;</li>
<li>Eduardo de Miguel (<a class="reference external" href="https://www.moduon.team/">Moduon</a>)</li>
<li>Sodexis Team &lt;<a class="reference external" href="mailto:dev&#64;sodexis.com">dev&#64;sodexis.com</a>&gt;</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">maintainers</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/CarlosRoca13"><img alt="CarlosRoca13" src="https://github.com/CarlosRoca13.png?size=40px" /></a> <a class="reference external image-reference" href="https://github.com/Shide"><img alt="Shide" src="https://github.com/Shide.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/sale-workflow/tree/18.0/sale_order_line_price_history">OCA/sale-workflow</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,41 @@
import {Component} from "@odoo/owl";
import {registry} from "@web/core/registry";
import {standardWidgetProps} from "@web/views/widgets/standard_widget_props";
import {useService} from "@web/core/utils/hooks";
export class PriceHistoryWidget extends Component {
setup() {
super.setup();
this.actionService = useService("action");
}
viewPriceHistory() {
this.actionService.doAction(
"sale_order_line_price_history.sale_order_line_price_history_action",
{
additionalContext: {
default_product_id: this.props.record.data.product_id[0],
default_partner_id: this.props.record.data.order_partner_id[0],
default_active_id: this.props.value,
default_sale_order_line_id: this.props.value,
},
onClose: (value) => {
if (value && "price_unit" in value) {
this.props.record.update(value);
}
},
}
);
}
}
PriceHistoryWidget.template = "sale_order_line_price_history.price_history_widget";
PriceHistoryWidget.props = {
...standardWidgetProps,
// Onchange decorator returns an undefined value for the id instead of false
value: {optional: true},
};
registry
.category("view_widgets")
.add("sale_line_price_history_widget", {component: PriceHistoryWidget});

View File

@@ -0,0 +1,35 @@
import {Component} from "@odoo/owl";
import {registry} from "@web/core/registry";
import {standardFieldProps} from "@web/views/fields/standard_field_props";
import {useService} from "@web/core/utils/hooks";
export class SetPriceToLineWidget extends Component {
setup() {
super.setup();
this.actionService = useService("action");
}
setPriceHistory() {
const infos = {
price_unit: this.props.record.data.price_unit,
};
if (this.props.record.data.discount !== undefined) {
// Need to check if discount is availabe to avoid errors
// if trying to define the value undefined
infos.discount = this.props.record.data.discount;
}
this.actionService.doAction({
type: "ir.actions.act_window_close",
infos,
});
}
}
SetPriceToLineWidget.template =
"sale_order_line_price_history.price_to_line_history_widget";
SetPriceToLineWidget.props = standardFieldProps;
// Add the field to the correct category
registry
.category("fields")
.add("set_price_to_line_widget", {component: SetPriceToLineWidget});

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2021 Tecnativa - David Vidal
Copyright 2024 Moduon Team S.L. <info@moduon.team>
License AGLP-3.0 or later (https://www.gnu.org/licenses/agpl.html). -->
<templates xml:space="preserve">
<t t-name="sale_order_line_price_history.price_history_widget">
<a
t-if="props.record.data.qty_invoiced === 0"
tabindex="0"
t-on-click="viewPriceHistory"
class="fa fa-history"
title="Price History"
/>
</t>
</templates>

View File

@@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2023 Tecnativa - Carlos Roca
Copyright 2024 Moduon Team S.L. <info@moduon.team>
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html). -->
<templates xml:space="preserve">
<t t-name="sale_order_line_price_history.price_to_line_history_widget">
<div>
<a
tabindex="0"
t-on-click="setPriceHistory"
class="fa fa-check p-1"
title="Set Historic Price"
/>
</div>
</t>
</templates>

View File

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

View File

@@ -0,0 +1,158 @@
# Copyright 2018 Tecnativa - Ernesto Tejeda
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests.common import TransactionCase
class TestSaleOrderLinePriceHistory(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.partner_1 = cls.env.ref("base.res_partner_1")
cls.partner_2 = cls.env.ref("base.res_partner_2")
cls.product = cls.env.ref("product.product_order_01")
cls.sale_order_1 = cls.env["sale.order"].create(
{"partner_id": cls.partner_1.id}
)
# Two sale orders confirmed and with different partners
cls.sale_order_line_1 = cls.env["sale.order.line"].create(
{
"order_id": cls.sale_order_1.id,
"name": cls.product.name,
"product_id": cls.product.id,
"product_uom_qty": 2,
"product_uom": cls.product.uom_id.id,
"price_unit": 10,
"discount": 5,
}
)
cls.sale_order_1.action_confirm()
cls.sale_order_2 = cls.env["sale.order"].create(
{"partner_id": cls.partner_2.id}
)
cls.sale_order_line_2 = cls.env["sale.order.line"].create(
{
"order_id": cls.sale_order_2.id,
"name": cls.product.name,
"product_id": cls.product.id,
"product_uom_qty": 2,
"product_uom": cls.product.uom_id.id,
"price_unit": 20,
}
)
cls.sale_order_2.action_confirm()
# Another sale orders with the same partner of cls.sale_order_2
cls.sale_order_3 = cls.env["sale.order"].create(
{"partner_id": cls.partner_2.id}
)
cls.sale_order_line_3 = cls.env["sale.order.line"].create(
{
"order_id": cls.sale_order_3.id,
"name": cls.product.name,
"product_id": cls.product.id,
"product_uom_qty": 2,
"product_uom": cls.product.uom_id.id,
"price_unit": 30,
}
)
def launch_wizard(self, active_id):
wizard_obj = self.env["sale.order.line.price.history"]
wizard = wizard_obj.with_context(active_id=active_id).create({})
wizard._onchange_partner_id()
return wizard
def test_onchange_partner_id(self):
# Create a wizard from self.sale_order_line_3. Only one history line
# should be shown and should be associated with self.sale_order_line_2
wizard = self.launch_wizard(self.sale_order_line_3.id)
self.assertEqual(len(wizard.line_ids), 1)
self.assertEqual(wizard.line_ids.sale_order_line_id, self.sale_order_line_2)
self.assertEqual(wizard.line_ids.price_unit, 20)
# Set partner to False. Two history lines should be shown and
# they should be associated with self.sale_order_line_1
# and self.sale_order_line_2
wizard.partner_id = False
wizard._onchange_partner_id()
self.assertEqual(len(wizard.line_ids), 2)
self.assertEqual(
set(wizard.line_ids.mapped("sale_order_line_id.price_unit")),
set(list([10.0, 20.0])),
)
def test_onchange_partner_id_include_quotations(self):
# Another sale orders with the same partner of cls.sale_order_2
# and cls.sale_order_3
self.sale_order_4 = self.env["sale.order"].create(
{"partner_id": self.partner_2.id}
)
self.sale_order_line_4 = self.env["sale.order.line"].create(
{
"order_id": self.sale_order_4.id,
"name": self.product.name,
"product_id": self.product.id,
"product_uom_qty": 2,
"product_uom": self.product.uom_id.id,
"price_unit": 40,
}
)
# Create a wizard from self.sale_order_line_4. Only one history line
# should be shown and should be associated with self.sale_order_line_2
wizard = self.launch_wizard(self.sale_order_line_4.id)
self.assertEqual(len(wizard.line_ids), 1)
self.assertEqual(wizard.line_ids.sale_order_line_id, self.sale_order_line_2)
# If include_quotations is checked two history lines should be shown
# and they should be associated with self.sale_order_line_2
# and self.sale_order_line_3
wizard.include_quotations = True
wizard._onchange_partner_id()
self.assertEqual(len(wizard.line_ids), 2)
self.assertEqual(
wizard.line_ids.mapped("sale_order_line_id"),
self.sale_order_line_2 | self.sale_order_line_3,
)
def test_onchange_partner_id_include_commercial_partner(self):
# Another sale orders with a partner child of cls.sale_order_2
self.sale_order_4 = self.env["sale.order"].create(
{"partner_id": self.ref("base.res_partner_address_31")}
)
self.sale_order_line_4 = self.env["sale.order.line"].create(
{
"order_id": self.sale_order_4.id,
"name": self.product.name,
"product_id": self.product.id,
"product_uom_qty": 2,
"product_uom": self.product.uom_id.id,
"price_unit": 40,
}
)
# Create a wizard from self.sale_order_line_4. As
# include_commercial_partner si checked by default, one history line
# should be shown and associated with self.sale_order_line_2
wizard = self.launch_wizard(active_id=self.sale_order_line_4.id)
self.assertEqual(len(wizard.line_ids), 1)
self.assertEqual(wizard.line_ids.sale_order_line_id, self.sale_order_line_2)
# Uncheck include_commercial_partner and Empty sale history
# should be shown.
wizard.include_commercial_partner = False
wizard._onchange_partner_id()
self.assertFalse(wizard.line_ids)
def test_action_set_price(self):
# Create a wizard from self.sale_order_line_3.
wizard = self.launch_wizard(active_id=self.sale_order_line_3.id)
self.assertEqual(self.sale_order_line_3.price_unit, 30)
# Set price of the history line shown.
wizard.line_ids.action_set_price()
self.assertEqual(self.sale_order_line_3.price_unit, 20)
self.assertEqual(self.sale_order_line_3.discount, 0)
# Create a wizard from self.sale_order_line_3 again.
wizard = self.launch_wizard(active_id=self.sale_order_line_3.id)
wizard.partner_id = False
wizard._onchange_partner_id()
# Find the history line with price_unit == 10 and set this price
history_line = wizard.line_ids.filtered(lambda r: r.price_unit == 10)
history_line.action_set_price()
self.assertEqual(self.sale_order_line_3.price_unit, 10)
self.assertEqual(self.sale_order_line_3.discount, 5)

View File

@@ -0,0 +1,41 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Ernesto Tejeda
Copyright 2024 Moduon Team S.L. <info@moduon.team>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="view_order_form" model="ir.ui.view">
<field name="name">sale.order.line.price.history.form</field>
<field name="model">sale.order</field>
<field name="inherit_id" ref="sale.view_order_form" />
<field name="priority">999</field>
<field name="arch" type="xml">
<xpath
expr="//field[@name='order_line']/list/field[@name='price_unit']"
position="after"
>
<field name="order_partner_id" column_invisible="1" />
<widget
name="sale_line_price_history_widget"
string=" "
context="{'active_id': id, 'active_ids': [id]}"
help="Price History"
width="20"
/>
</xpath>
<xpath
expr="//field[@name='order_line']/kanban//field[@name='price_unit']/.."
position="inside"
>
<field name="order_partner_id" invisible="1" />
<widget
name="sale_line_price_history_widget"
string=" "
context="{'active_id': id, 'active_ids': [id]}"
help="Price History"
class="float-start"
style="min-width: 1.5rem;"
/>
</xpath>
</field>
</record>
</odoo>

View File

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

View File

@@ -0,0 +1,156 @@
# Copyright 2019 Tecnativa - Ernesto Tejeda
# Copyright 2024 Moduon Team S.L. <info@moduon.team>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import _, api, fields, models
from odoo.exceptions import ValidationError
class SaleOrderLinePriceHistory(models.TransientModel):
_name = "sale.order.line.price.history"
_description = "Sale order line price history"
@api.model
def _default_partner_id(self):
line_id = self.env.context.get("active_id")
return self.env["sale.order.line"].browse(line_id).order_partner_id.id
@api.model
def _default_product_id(self):
line_id = self.env.context.get("active_id")
return self.env["sale.order.line"].browse(line_id).product_id.id
sale_order_line_id = fields.Many2one(
comodel_name="sale.order.line",
string="Sale order line",
default=lambda self: self.env.context.get("active_id"),
)
product_id = fields.Many2one(
comodel_name="product.product",
string="Product",
default=_default_product_id,
)
partner_id = fields.Many2one(
comodel_name="res.partner",
string="Customer",
default=_default_partner_id,
)
line_ids = fields.One2many(
comodel_name="sale.order.line.price.history.line",
inverse_name="history_id",
string="History lines",
readonly=True,
)
include_quotations = fields.Boolean(
help="Include quotations lines in the sale history",
)
include_commercial_partner = fields.Boolean(
string="Include commercial entity",
default=True,
help="Include commercial entity and its contacts in the sale history",
)
@api.onchange("partner_id", "include_quotations", "include_commercial_partner")
def _onchange_partner_id(self):
self.line_ids = False
states = ["sale", "done"]
if self.include_quotations:
states += ["draft", "sent"]
domain = [
("product_id", "=", self.product_id.id),
("state", "in", states),
]
if self.partner_id:
if self.include_commercial_partner:
domain += [
(
"order_partner_id",
"child_of",
self.partner_id.commercial_partner_id.ids,
)
]
else:
domain += [("order_partner_id", "child_of", self.partner_id.ids)]
vals = []
sol_limit = (
self.env["ir.config_parameter"]
.sudo()
.get_param("sale_order_line_price_history.order_line_limit", default="20")
)
order_lines = self.env["sale.order.line"].search(domain, limit=int(sol_limit))
order_lines -= self.sale_order_line_id
for order_line in order_lines:
vals.append(
(
0,
False,
{
"sale_order_line_id": order_line.id,
"history_sale_order_line_id": self.sale_order_line_id.id,
"history_id": self.id,
},
)
)
self.line_ids = vals
class SaleOrderLinePriceHistoryline(models.TransientModel):
_name = "sale.order.line.price.history.line"
_description = "Sale order line price history line"
_order = "sale_order_date_order desc"
history_id = fields.Many2one(
comodel_name="sale.order.line.price.history",
string="History",
)
target_sale_order_line_id = fields.Many2one(
comodel_name="sale.order.line",
related="history_id.sale_order_line_id",
)
history_sale_order_line_id = fields.Many2one(
comodel_name="sale.order.line",
string="history sale order line",
)
sale_order_line_id = fields.Many2one(
comodel_name="sale.order.line",
)
order_id = fields.Many2one(
related="sale_order_line_id.order_id",
)
order_state = fields.Selection(
related="order_id.state",
)
partner_id = fields.Many2one(
related="sale_order_line_id.order_partner_id",
)
sale_order_date_order = fields.Datetime(
related="sale_order_line_id.order_id.date_order",
)
product_uom_qty = fields.Float(
related="sale_order_line_id.product_uom_qty",
)
price_unit = fields.Float(
related="sale_order_line_id.price_unit",
)
discount = fields.Float(
related="sale_order_line_id.discount",
)
def _prepare_set_price_history_vals(self):
"""Hook method to prepare the values to update the
sales order line in context.
This method is invoke by action_set_price method in this model.
"""
self.ensure_one()
return {"price_unit": self.price_unit, "discount": self.discount}
def action_set_price(self):
if self.history_sale_order_line_id and self.sale_order_line_id:
self.history_sale_order_line_id.write(
self._prepare_set_price_history_vals()
)
else:
raise ValidationError(
_("Not found historical sale order line for this action!")
)

View File

@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8" ?>
<!-- Copyright 2019 Tecnativa - Ernesto Tejeda
Copyright 2024 Moduon Team S.L. <info@moduon.team>
License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). -->
<odoo>
<record id="sale_order_line_price_history_view_form" model="ir.ui.view">
<field name="name">sale.order.line.price.history.view.form</field>
<field name="model">sale.order.line.price.history</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="partner_id" />
<field name="product_id" readonly="1" />
<field name="include_commercial_partner" />
<field name="include_quotations" />
<field name="sale_order_line_id" invisible="1" />
</group>
<group string="Sale history">
<field name="line_ids" nolabel="1" readonly="1" colspan="2">
<form>
<header>
<field name="order_state" widget="statusbar" />
</header>
<sheet>
<group>
<field
name="sale_order_line_id"
invisible="1"
/>
<field
name="history_sale_order_line_id"
invisible="1"
/>
<field name="order_id" />
<field name="partner_id" />
<field name="sale_order_date_order" />
<field name="product_uom_qty" />
<field name="price_unit" />
<label
for="discount"
groups="sale.group_discount_per_so_line"
/>
<div
name="discount"
groups="sale.group_discount_per_so_line"
>
<field
name="discount"
class="oe_inline"
/> %%
</div>
</group>
</sheet>
<footer />
</form>
<list decoration-info="order_state in ('draft', 'sent')">
<field name="order_id" />
<field name="order_state" column_invisible="1" />
<field
name="partner_id"
column_invisible="parent.partner_id"
/>
<field name="sale_order_date_order" />
<field name="product_uom_qty" />
<field name="price_unit" />
<field
name="discount"
groups="sale.group_discount_per_so_line"
/>
<field
name="target_sale_order_line_id"
string=" "
widget="set_price_to_line_widget"
help="Price History"
/>
</list>
</field>
</group>
</sheet>
<footer>
<button special="cancel" string="Close" />
</footer>
</form>
</field>
</record>
<record id="sale_order_line_price_history_action" model="ir.actions.act_window">
<field name="name">Price history per customer</field>
<field name="res_model">sale.order.line.price.history</field>
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
</odoo>