build: configurar herramientas de verificación OCA

- Instalar pre-commit con 25 hooks configurados
- Configurar black 26.1.0 para formateo de código Python
- Configurar isort 7.0.0 para ordenación de imports
- Configurar flake8 7.3.0 con flake8-bugbear
- Configurar pylint 3.1.1 con pylint-odoo 9.1.2
- Añadir autoflake y pyupgrade para mejoras automáticas
- Configurar prettier para formateo de XML/JSON/YAML
- Crear .editorconfig para consistencia de editor
- Crear Makefile con comandos útiles
- Crear check_addon.sh para verificación rápida de addons
- Actualizar configuración de VS Code con extensiones recomendadas
- Añadir documentación completa de uso
- Aplicar formateo automático a archivos existentes
- Deshabilitar setuptools-odoo (no soporta Odoo 18.0 aún)
- Deshabilitar fix-encoding-pragma (obsoleto, usar pyupgrade)
This commit is contained in:
snt 2026-02-11 16:09:41 +01:00
parent 5b9c6e3211
commit fe137dc265
224 changed files with 18376 additions and 0 deletions

View file

@ -0,0 +1,119 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
==============================
Purchase Order Triple Discount
==============================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:fb4779564a8b987350b0ed4d4e6d8035eddc9a8fd341f3e32703640e8e8bd359
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github
:target: https://github.com/OCA/purchase-workflow/tree/18.0/purchase_triple_discount
:alt: OCA/purchase-workflow
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_triple_discount
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/purchase-workflow&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to have three successive discounts on every purchase
order line.
**Table of contents**
.. contents::
:local:
Usage
=====
Create a new purchase order and add discounts in any of the three
discount fields given. They go in order of precedence so discount 2 will
be calculated over discount 1 and discount 3 over the result of discount
2. For example, let's divide by two on every discount:
Unit price: 600.00 ->
- Disc. 1 = 50% -> Amount = 300.00
- Disc. 2 = 50% -> Amount = 150.00
- Disc. 3 = 50% -> Amount = 75.00
You can also use negative values to charge instead of discount:
Unit price: 600.00 ->
- Disc. 1 = 50% -> Amount = 300.00
- Disc. 2 = -5% -> Amount = 315.00
- When the purchase order is validated, the discounts will be added to
the corresponding vendor pricelist.
- Vendor pricelists can be edited as well with their corresponding new
second and third discounts.
- A default second or third discount can be set in every vendor *Sale &
Purchases* tab.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/purchase-workflow/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/purchase-workflow/issues/new?body=module:%20purchase_triple_discount%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
* GRAP
Contributors
------------
- `Tecnativa <https://www.tecnativa.com>`__:
- David Vidal
- Pedro M. Baeza
- Sylvain LE GAL (https://twitter.com/legalsylvain)
- `ForgeFlow S.L. <https://www.forgeflow.com>`__:
- Christopher Ormaza <chris.ormaza@forgeflow.com>
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/purchase-workflow <https://github.com/OCA/purchase-workflow/tree/18.0/purchase_triple_discount>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -0,0 +1,2 @@
from . import models
from .hooks import post_init_hook

View file

@ -0,0 +1,22 @@
# Copyright 2017 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Purchase Order Triple Discount",
"version": "18.0.1.0.0",
"category": "Purchase Management",
"author": "Tecnativa," "GRAP," "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/purchase-workflow",
"license": "AGPL-3",
"summary": "Manage triple discount on purchase order lines",
"depends": [
"purchase",
"account_invoice_triple_discount",
],
"data": [
"views/product_supplierinfo_view.xml",
"views/purchase_view.xml",
"views/res_partner_view.xml",
],
"post_init_hook": "post_init_hook",
"installable": True,
}

View file

@ -0,0 +1,24 @@
def post_init_hook(env):
env.cr.execute("""
UPDATE purchase_order_line upd
SET discount1=pol.discount
FROM (SELECT *
FROM purchase_order_line
WHERE discount IS NOT NULL
AND discount1 IS NULL
AND discount2 IS NULL
AND discount3 IS NULL) as pol
WHERE upd.id = pol.id
""")
env.cr.execute("""
UPDATE product_supplierinfo upd
SET discount1=psi.discount
FROM (SELECT *
FROM product_supplierinfo
WHERE discount IS NOT NULL
AND discount1 IS NULL
AND discount2 IS NULL
AND discount3 IS NULL) as psi
WHERE upd.id = psi.id
""")

View file

@ -0,0 +1,104 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\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"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Bestellposition"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Bestellposition"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""

View file

@ -0,0 +1,106 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2023-07-17 20:10+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr "<strong>Descuento. 2 (%)</strong>"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr "<strong>Descuento. 3 (%)</strong>"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr "Contacto"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr "Descuento por defecto al proveedor 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr "Descuento por defecto al proveedor 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "Descuento. 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "Descuento. 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr "Descuento 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr "El descuento 2 debe ser inferior al 100%."
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr "Descuento 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr "El descuento 3 debe ser inferior al 100%."
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Línea orden de compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
msgid "Purchase Report"
msgstr "Informe de compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr "Lista de precios para proveedores"
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
"Este valor se utilizará como valor por defecto, para cada nueva línea de "
"información del proveedor que dependa de ese proveedor."

View file

@ -0,0 +1,105 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Spanish (Mexico) (https://www.transifex.com/oca/teams/23907/"
"es_MX/)\n"
"Language: es_MX\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: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Línea de orden de compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Línea de orden de compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""

View file

@ -0,0 +1,108 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# Henry Garcia <henry@yaroslab.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: Henry Garcia <henry@yaroslab.com>, 2017\n"
"Language-Team: Spanish (Peru) (https://www.transifex.com/oca/teams/23907/"
"es_PE/)\n"
"Language: es_PE\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: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linea de orden de compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Linea de orden de compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"

View file

@ -0,0 +1,104 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Finnish (https://www.transifex.com/oca/teams/23907/fi/)\n"
"Language: fi\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: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Ostotilausrivi"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Ostotilausrivi"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""

View file

@ -0,0 +1,108 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-08 08:11+0000\n"
"PO-Revision-Date: 2019-08-08 08:11+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr "Remise par défaut n°2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr "Remise par défaut n°3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "Rem. 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "Rem. 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr "Remise 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr "La remise 2 doit être inférieure à 100%."
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr "Remise 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr "La remise 3 doit être inférieure à 100%."
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Ligne de commande d'achat"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Commande fournisseur"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr "Liste de prix du fournisseur"
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Facture"
#~ msgid "Stock Rule"
#~ msgstr "Règle de stock minimum"

View file

@ -0,0 +1,110 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-03-03 03:48+0000\n"
"PO-Revision-Date: 2018-03-03 03:48+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2017\n"
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "Pop. 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "Pop. 3(%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
#, fuzzy
msgid "Discount 2 (%)"
msgstr "Pop. 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr "Popust 2 mora biti manje od 100%."
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
#, fuzzy
msgid "Discount 3 (%)"
msgstr "Pop. 3(%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr "Popust 3 mora biti manje od 100%."
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Stavka naloga za nabavu"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Stavka naloga za nabavu"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Račun"

View file

@ -0,0 +1,112 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2023-12-20 18:34+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\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 4.17\n"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr "<strong>Sc. 2 (%)</strong>"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr "<strong>Sc. 3 (%)</strong>"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr "Contatto"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr "Sconto Fornitore Predefinito 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr "Sconto Fornitore Predefinito 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "Sconto 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "Sconto 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr "Sconto 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr "Sconto 2 deve essere inferiore di 100%."
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr "Sconto 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr "Sconto 3 deve essere inferiore di 100%."
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Riga ordine di acquisto"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
msgid "Purchase Report"
msgstr "Resoconto di acquisto"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr "Listino Fornitore"
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
"Questo valore verrà usato come predefinito per ogni nuova riga d'ordine di "
"acquisto che dipende da questo fornitore."
#~ msgid "Invoice"
#~ msgstr "Fattura"
#~ msgid "Stock Rule"
#~ msgstr "Regola Stock"

View file

@ -0,0 +1,108 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# Peter Hageman <hageman.p@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: Peter Hageman <hageman.p@gmail.com>, 2017\n"
"Language-Team: Dutch (Netherlands) (https://www.transifex.com/oca/"
"teams/23907/nl_NL/)\n"
"Language: nl_NL\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: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Inkooporderregel"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Inkooporderregel"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factuur"

View file

@ -0,0 +1,111 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2024-05-29 18:36+0000\n"
"Last-Translator: Rodrigo Macedo <sottomaiormacedotec@users.noreply."
"translation.odoo-community.org>\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/"
"23907/pt_BR/)\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: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr "<strong>Desc. 2 (%)</strong>"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr "<strong>Desc. 3 (%)</strong>"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr "Contato"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr "Desconto padrão do fornecedor 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr "Desconto padrão do fornecedor 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "Desc. 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "Desc. 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr "Desconto 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr "O desconto 2 deve ser inferior a 100%."
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr "Desconto 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr "O desconto 3 deve ser inferior a 100%."
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linha da Ordem de Compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
msgid "Purchase Report"
msgstr "Relatório de Compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr "Lista de preços do fornecedor"
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
"Este valor será usado como padrão, para cada nova linha de informações do "
"fornecedor dependendo desse fornecedor."
#~ msgid "Invoice"
#~ msgstr "Fatura"

View file

@ -0,0 +1,105 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Portuguese (Portugal) (https://www.transifex.com/oca/"
"teams/23907/pt_PT/)\n"
"Language: pt_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"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linha de Encomenda de Compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Linha de Encomenda de Compra"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""

View file

@ -0,0 +1,122 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
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: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount1
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount1
msgid "Default Supplier Discount 1 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount1
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount1
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_triple_discount_mixin__discount1
msgid "Disc. 1 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_triple_discount_mixin__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_triple_discount_mixin__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_triple_discount_mixin__discount
msgid "Discount"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount
msgid "Discount (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_product_supplierinfo_discount1_limit
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount1_limit
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_triple_discount_mixin_discount1_limit
msgid "Discount 1 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_product_supplierinfo_discount2_limit
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_triple_discount_mixin_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_product_supplierinfo_discount3_limit
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_triple_discount_mixin_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order
msgid "Purchase Order"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_triple_discount_mixin
msgid "Purchase Triple Discount Mixin"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount1
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount1
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""

View file

@ -0,0 +1,105 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2017-11-24 07:53+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Romanian (https://www.transifex.com/oca/teams/23907/ro/)\n"
"Language: ro\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?"
"2:1));\n"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Linie comandă achiziție"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
#, fuzzy
msgid "Purchase Report"
msgstr "Linie comandă achiziție"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""

View file

@ -0,0 +1,113 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-11-24 07:53+0000\n"
"PO-Revision-Date: 2021-02-24 11:45+0000\n"
"Last-Translator: Matjaz Mozetic <matjaz@luxim.si>\n"
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n"
"%100==4 ? 2 : 3;\n"
"X-Generator: Weblate 4.3.2\n"
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr "Stik"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr "Privzeti popust dobavitelja 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr "Privzeti popust dobavitelja 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "Pop. 2(%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "Pop. 3(%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr "Popust 2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr "Popust 2 ne sme presegati 100%."
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr "Popust 3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr "Popust 3 ne sme presegati 100%."
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "Postavka nabavnega naloga"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
msgid "Purchase Report"
msgstr "Poročilo o nabavi"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr "Cenik dobavitelja"
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr ""
"Ta vrednost se bo uporabljala kot privzeta za vsako novo postavko "
"\"supplierinfo\" vezano na tega dobavitelja."
#~ msgid "Invoice"
#~ msgstr "Račun"
#~ msgid "Stock Rule"
#~ msgstr "Pravilo zaloge"

View file

@ -0,0 +1,107 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * purchase_triple_discount
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 12.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2019-09-02 14:40+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: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 2 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model_terms:ir.ui.view,arch_db:purchase_triple_discount.report_purchaseorder_document_triple_discount
msgid "<strong>Disc. 3 (%)</strong>"
msgstr ""
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_res_partner
msgid "Contact"
msgstr "联系人"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
msgid "Default Supplier Discount 2 (%)"
msgstr "默认供应商折扣2 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid "Default Supplier Discount 3 (%)"
msgstr "默认供应商折扣3(%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount2
msgid "Disc. 2 (%)"
msgstr "折扣2(%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_order_line__discount3
msgid "Disc. 3 (%)"
msgstr "折扣3 (%)"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount2
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount2
msgid "Discount 2 (%)"
msgstr "折扣2(%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr "折扣2必须低于100。"
#. module: purchase_triple_discount
#: model:ir.model.fields,field_description:purchase_triple_discount.field_product_supplierinfo__discount3
#: model:ir.model.fields,field_description:purchase_triple_discount.field_purchase_report__discount3
msgid "Discount 3 (%)"
msgstr "折扣3(%)"
#. module: purchase_triple_discount
#: model:ir.model.constraint,message:purchase_triple_discount.constraint_purchase_order_line_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr "折扣3必须低于100。"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_order_line
msgid "Purchase Order Line"
msgstr "采购订单行"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_purchase_report
msgid "Purchase Report"
msgstr "采购报告"
#. module: purchase_triple_discount
#: model:ir.model,name:purchase_triple_discount.model_product_supplierinfo
msgid "Supplier Pricelist"
msgstr "供应商价格表"
#. module: purchase_triple_discount
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_partner__default_supplierinfo_discount3
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount2
#: model:ir.model.fields,help:purchase_triple_discount.field_res_users__default_supplierinfo_discount3
msgid ""
"This value will be used as the default one, for each new supplierinfo line "
"depending on that supplier."
msgstr "根据供应商的不同,此值将用作每个新供应商信息行的默认值。"
#~ msgid "Invoice"
#~ msgstr "发票"
#~ msgid "Stock Rule"
#~ msgstr "库存规则"

View file

@ -0,0 +1,5 @@
from . import purchase_triple_discount_mixin
from . import product_supplierinfo
from . import purchase_order_line
from . import purchase_order
from . import res_partner

View file

@ -0,0 +1,35 @@
# Copyright 2019 Tecnativa - David Vidal
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api
from odoo import models
class ProductSupplierInfo(models.Model):
_name = "product.supplierinfo"
_inherit = ["purchase.triple.discount.mixin", "product.supplierinfo"]
@api.onchange("partner_id")
def _onchange_partner_id(self):
self.update(
{
field: self.partner_id[f"default_supplierinfo_{field}"]
for field in self._get_multiple_discount_field_names()
}
)
def default_get(self, fields_list):
res = super().default_get(fields_list)
res.update(
{
field: self.partner_id[f"default_supplierinfo_{field}"]
for field in self._get_multiple_discount_field_names()
}
)
return res
@api.model
def _get_po_to_supplierinfo_synced_fields(self):
res = super()._get_po_to_supplierinfo_synced_fields()
res += self._get_multiple_discount_field_names()
return res

View file

@ -0,0 +1,18 @@
# Copyright 2017-19 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class PurchaseOrder(models.Model):
_inherit = "purchase.order"
def _prepare_supplier_info(self, partner, line, price, currency):
res = super()._prepare_supplier_info(partner, line, price, currency)
res.update(
{
fname: line[fname]
for fname in line._get_multiple_discount_field_names()
}
)
return res

View file

@ -0,0 +1,77 @@
# Copyright 2017-19 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api
from odoo import fields
from odoo import models
class PurchaseOrderLine(models.Model):
_name = "purchase.order.line"
_inherit = ["purchase.triple.discount.mixin", "purchase.order.line"]
@api.depends("product_qty", "product_uom", "company_id")
def _compute_price_unit_and_date_planned_and_name(self):
res = super()._compute_price_unit_and_date_planned_and_name()
self._compute_discounts()
return res
def _compute_discounts(self):
for line in self:
if not line.company_id or not line.product_id or line.invoice_lines:
continue
params = {"order_id": line.order_id}
seller = line.product_id._select_seller(
partner_id=line.partner_id,
quantity=line.product_qty,
date=line.order_id.date_order
and line.order_id.date_order.date()
or fields.Date.context_today(line),
uom_id=line.product_uom,
params=params,
)
if not seller:
continue
line.update(
{
fname: seller[fname] or 0.0
for fname in self._get_multiple_discount_field_names()
}
)
def _prepare_account_move_line(self, move=False):
self.ensure_one()
res = super()._prepare_account_move_line(move)
res.update(
{
fname: self[fname]
for fname in self._get_multiple_discount_field_names()
}
)
return res
@api.model
def _prepare_purchase_order_line(
self, product_id, product_qty, product_uom, company_id, supplier, po
):
res = super()._prepare_purchase_order_line(
product_id, product_qty, product_uom, company_id, supplier, po
)
today = fields.Date.today()
partner = supplier.partner_id
uom_po_qty = product_uom._compute_quantity(
product_qty, product_id.uom_po_id, rounding_method="HALF-UP"
)
seller = product_id.with_company(company_id)._select_seller(
partner_id=partner,
quantity=uom_po_qty,
date=po.date_order and max(po.date_order.date(), today) or today,
uom_id=product_id.uom_po_id,
)
res.update(
{
fname: seller[fname] or 0.0
for fname in self._get_multiple_discount_field_names()
}
)
return res

View file

@ -0,0 +1,82 @@
# Copyright 2017-19 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import functools
from odoo import api
from odoo import fields
from odoo import models
class TripleDiscountMixin(models.AbstractModel):
_name = "purchase.triple.discount.mixin"
_description = "Purchase Triple Discount Mixin"
discount = fields.Float(
compute="_compute_discount",
store=True,
)
discount1 = fields.Float(
string="Disc. 1 (%)",
digits="Discount",
readonly=False,
)
discount2 = fields.Float(
string="Disc. 2 (%)",
digits="Discount",
readonly=False,
)
discount3 = fields.Float(
string="Disc. 3 (%)",
digits="Discount",
readonly=False,
)
_sql_constraints = [
(
"discount1_limit",
"CHECK (discount1 <= 100.0)",
"Discount 1 must be lower than 100%.",
),
(
"discount2_limit",
"CHECK (discount2 <= 100.0)",
"Discount 2 must be lower than 100%.",
),
(
"discount3_limit",
"CHECK (discount3 <= 100.0)",
"Discount 3 must be lower than 100%.",
),
]
@api.depends(lambda self: self._get_multiple_discount_field_names())
def _compute_discount(self):
for record in self:
record.discount = record._get_aggregated_discount_from_values(
{
fname: record[fname]
for fname in record._get_multiple_discount_field_names()
}
)
def _get_aggregated_discount_from_values(self, values):
discount_fnames = self._get_multiple_discount_field_names()
discounts = []
for discount_fname in discount_fnames:
discounts.append(values.get(discount_fname) or 0.0)
return self._get_aggregated_multiple_discounts(discounts)
@staticmethod
def _get_multiple_discount_field_names():
return ["discount1", "discount2", "discount3"]
@staticmethod
def _get_aggregated_multiple_discounts(discounts):
discount_values = []
for discount in discounts:
discount_values.append(1 - (discount or 0.0) / 100.0)
aggregated_discount = (
1 - functools.reduce((lambda x, y: x * y), discount_values)
) * 100
return aggregated_discount

View file

@ -0,0 +1,28 @@
# Copyright 2019 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import fields
from odoo import models
class ResPartner(models.Model):
_inherit = "res.partner"
default_supplierinfo_discount1 = fields.Float(
string="Default Supplier Discount 1 (%)",
digits="Discount",
help="This value will be used as the default one, for each new "
"supplierinfo line depending on that supplier.",
)
default_supplierinfo_discount2 = fields.Float(
string="Default Supplier Discount 2 (%)",
digits="Discount",
help="This value will be used as the default one, for each new "
"supplierinfo line depending on that supplier.",
)
default_supplierinfo_discount3 = fields.Float(
string="Default Supplier Discount 3 (%)",
digits="Discount",
help="This value will be used as the default one, for each new "
"supplierinfo line depending on that supplier.",
)

View file

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

View file

@ -0,0 +1,9 @@
- [Tecnativa](https://www.tecnativa.com):
> - David Vidal
> - Pedro M. Baeza
- Sylvain LE GAL (<https://twitter.com/legalsylvain>)
- [ForgeFlow S.L.](https://www.forgeflow.com):
- Christopher Ormaza \<<chris.ormaza@forgeflow.com>\>

View file

@ -0,0 +1,2 @@
This module allows to have three successive discounts on every purchase
order line.

View file

@ -0,0 +1,24 @@
Create a new purchase order and add discounts in any of the three
discount fields given. They go in order of precedence so discount 2 will
be calculated over discount 1 and discount 3 over the result of discount
2. For example, let's divide by two on every discount:
Unit price: 600.00 -\>
> - Disc. 1 = 50% -\> Amount = 300.00
> - Disc. 2 = 50% -\> Amount = 150.00
> - Disc. 3 = 50% -\> Amount = 75.00
You can also use negative values to charge instead of discount:
Unit price: 600.00 -\>
> - Disc. 1 = 50% -\> Amount = 300.00
> - Disc. 2 = -5% -\> Amount = 315.00
- When the purchase order is validated, the discounts will be added to
the corresponding vendor pricelist.
- Vendor pricelists can be edited as well with their corresponding new
second and third discounts.
- A default second or third discount can be set in every vendor *Sale &
Purchases* tab.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View file

@ -0,0 +1,477 @@
<!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>README.rst</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">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="purchase-order-triple-discount">
<h1>Purchase Order Triple Discount</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:fb4779564a8b987350b0ed4d4e6d8035eddc9a8fd341f3e32703640e8e8bd359
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.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/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/purchase-workflow/tree/18.0/purchase_triple_discount"><img alt="OCA/purchase-workflow" src="https://img.shields.io/badge/github-OCA%2Fpurchase--workflow-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/purchase-workflow-18-0/purchase-workflow-18-0-purchase_triple_discount"><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/purchase-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 allows to have three successive discounts on every purchase
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="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-4">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-5">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-6">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="usage">
<h2><a class="toc-backref" href="#toc-entry-1">Usage</a></h2>
<p>Create a new purchase order and add discounts in any of the three
discount fields given. They go in order of precedence so discount 2 will
be calculated over discount 1 and discount 3 over the result of discount
2. For example, lets divide by two on every discount:</p>
<p>Unit price: 600.00 -&gt;</p>
<blockquote>
<ul class="simple">
<li>Disc. 1 = 50% -&gt; Amount = 300.00</li>
<li>Disc. 2 = 50% -&gt; Amount = 150.00</li>
<li>Disc. 3 = 50% -&gt; Amount = 75.00</li>
</ul>
</blockquote>
<p>You can also use negative values to charge instead of discount:</p>
<p>Unit price: 600.00 -&gt;</p>
<blockquote>
<ul class="simple">
<li>Disc. 1 = 50% -&gt; Amount = 300.00</li>
<li>Disc. 2 = -5% -&gt; Amount = 315.00</li>
</ul>
</blockquote>
<ul class="simple">
<li>When the purchase order is validated, the discounts will be added to
the corresponding vendor pricelist.</li>
<li>Vendor pricelists can be edited as well with their corresponding new
second and third discounts.</li>
<li>A default second or third discount can be set in every vendor <em>Sale &amp;
Purchases</em> tab.</li>
</ul>
</div>
<div class="section" id="bug-tracker">
<h2><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h2>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/purchase-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/purchase-workflow/issues/new?body=module:%20purchase_triple_discount%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">
<h2><a class="toc-backref" href="#toc-entry-3">Credits</a></h2>
<div class="section" id="authors">
<h3><a class="toc-backref" href="#toc-entry-4">Authors</a></h3>
<ul class="simple">
<li>Tecnativa</li>
<li>GRAP</li>
</ul>
</div>
<div class="section" id="contributors">
<h3><a class="toc-backref" href="#toc-entry-5">Contributors</a></h3>
<ul>
<li><p class="first"><a class="reference external" href="https://www.tecnativa.com">Tecnativa</a>:</p>
<blockquote>
<ul class="simple">
<li>David Vidal</li>
<li>Pedro M. Baeza</li>
</ul>
</blockquote>
</li>
<li><p class="first">Sylvain LE GAL (<a class="reference external" href="https://twitter.com/legalsylvain">https://twitter.com/legalsylvain</a>)</p>
</li>
<li><p class="first"><a class="reference external" href="https://www.forgeflow.com">ForgeFlow S.L.</a>:</p>
<ul class="simple">
<li>Christopher Ormaza &lt;<a class="reference external" href="mailto:chris.ormaza&#64;forgeflow.com">chris.ormaza&#64;forgeflow.com</a>&gt;</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
<h3><a class="toc-backref" href="#toc-entry-6">Maintainers</a></h3>
<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>This module is part of the <a class="reference external" href="https://github.com/OCA/purchase-workflow/tree/18.0/purchase_triple_discount">OCA/purchase-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>
</div>
</body>
</html>

View file

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

View file

@ -0,0 +1,227 @@
# Copyright 2017-19 Tecnativa - David Vidal
# Copyright 2019 Tecnativa - Pedro M. Baeza
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests import Form
from odoo.tests import common
class TestPurchaseOrder(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.supplierinfo_obj = cls.env["product.supplierinfo"]
cls.account_move_model = cls.env["account.move"]
cls.partner = cls.env["res.partner"].create(
{
"name": "Mr. Odoo",
}
)
cls.partner2 = cls.env["res.partner"].create(
{
"name": "Mrs. Odoo",
}
)
cls.product1 = cls.env["product.product"].create(
{
"name": "Test Product 1",
"purchase_method": "purchase",
}
)
cls.product2 = cls.env["product.product"].create(
{
"name": "Test Product 2",
"purchase_method": "purchase",
}
)
cls.supplierinfo = cls.supplierinfo_obj.create(
{
"min_qty": 0.0,
"partner_id": cls.partner2.id,
"product_tmpl_id": cls.product1.product_tmpl_id.id,
"price": 100,
"discount1": 10,
"discount2": 20,
"discount3": 30,
}
)
cls.supplierinfo2 = cls.supplierinfo_obj.create(
{
"min_qty": 10.0,
"partner_id": cls.partner2.id,
"product_tmpl_id": cls.product1.product_tmpl_id.id,
"price": 100,
"discount3": 50,
}
)
cls.tax = cls.env["account.tax"].create(
{
"name": "TAX 15%",
"amount_type": "percent",
"type_tax_use": "purchase",
"amount": 15.0,
}
)
cls.order = cls.env["purchase.order"].create(
{
"partner_id": cls.partner.id,
}
)
cls.order2 = cls.env["purchase.order"].create(
{
"partner_id": cls.partner2.id,
}
)
po_line = cls.env["purchase.order.line"]
cls.po_line1 = po_line.create(
{
"order_id": cls.order.id,
"product_id": cls.product1.id,
"date_planned": "2018-01-19 00:00:00",
"name": "Line 1",
"product_qty": 1.0,
"product_uom": cls.product1.uom_id.id,
"taxes_id": [(6, 0, [cls.tax.id])],
"price_unit": 600.0,
}
)
cls.po_line2 = po_line.create(
{
"order_id": cls.order.id,
"product_id": cls.product2.id,
"date_planned": "2018-01-19 00:00:00",
"name": "Line 2",
"product_qty": 10.0,
"product_uom": cls.product2.uom_id.id,
"taxes_id": [(6, 0, [cls.tax.id])],
"price_unit": 60.0,
}
)
cls.po_line3 = po_line.create(
{
"order_id": cls.order2.id,
"product_id": cls.product1.id,
"date_planned": "2020-01-01 00:00:00",
"name": "Line 1",
"product_qty": 1.0,
"product_uom": cls.product1.uom_id.id,
"taxes_id": [(6, 0, [cls.tax.id])],
"price_unit": 600.0,
}
)
def test_01_purchase_order_classic_discount(self):
"""Tests with single discount"""
self.po_line1.discount1 = 50.0
self.po_line2.discount1 = 75.0
self.assertEqual(self.po_line1.price_subtotal, 300.0)
self.assertEqual(self.po_line2.price_subtotal, 150.0)
self.assertEqual(self.order.amount_untaxed, 450.0)
self.assertEqual(self.order.amount_tax, 67.5)
# Mix taxed and untaxed:
self.po_line1.taxes_id = False
self.assertEqual(self.order.amount_tax, 22.5)
def test_02_purchase_order_simple_triple_discount(self):
"""Tests on a single line"""
self.po_line2.unlink()
# Divide by two on every discount:
self.po_line1.discount1 = 50.0
self.po_line1.discount2 = 50.0
self.po_line1.discount3 = 50.0
self.assertEqual(self.po_line1.price_subtotal, 75.0)
self.assertEqual(self.order.amount_untaxed, 75.0)
self.assertEqual(self.order.amount_tax, 11.25)
# Unset first discount:
self.po_line1.discount1 = 0.0
self.assertEqual(self.po_line1.price_subtotal, 150.0)
self.assertEqual(self.order.amount_untaxed, 150.0)
self.assertEqual(self.order.amount_tax, 22.5)
# Set a charge instead:
self.po_line1.discount2 = -50.0
self.assertEqual(self.po_line1.price_subtotal, 450.0)
self.assertEqual(self.order.amount_untaxed, 450.0)
self.assertEqual(self.order.amount_tax, 67.5)
def test_03_purchase_order_complex_triple_discount(self):
"""Tests on multiple lines"""
self.po_line1.discount1 = 50.0
self.po_line1.discount2 = 50.0
self.po_line1.discount3 = 50.0
self.assertEqual(self.po_line1.price_subtotal, 75.0)
self.assertEqual(self.order.amount_untaxed, 675.0)
self.assertEqual(self.order.amount_tax, 101.25)
self.po_line2.discount3 = 50.0
self.assertEqual(self.po_line2.price_subtotal, 300.0)
self.assertEqual(self.order.amount_untaxed, 375.0)
self.assertEqual(self.order.amount_tax, 56.25)
def test_04_purchase_order_triple_discount_invoicing(self):
"""When a confirmed order is invoiced, the resultant invoice
should inherit the discounts"""
self.po_line1.discount1 = 50.0
self.po_line1.discount2 = 50.0
self.po_line1.discount3 = 50.0
self.po_line2.discount3 = 50.0
self.order.button_confirm()
invoice_form = Form(
self.account_move_model.with_context(default_move_type="in_invoice")
)
invoice_form.partner_id = self.order.partner_id
self.invoice = invoice_form.save()
self.invoice.purchase_id = self.order.id
self.invoice._onchange_purchase_auto_complete()
self.assertEqual(
self.po_line1.discount1, self.invoice.invoice_line_ids[0].discount1
)
self.assertEqual(
self.po_line1.discount2, self.invoice.invoice_line_ids[0].discount2
)
self.assertEqual(
self.po_line1.discount3, self.invoice.invoice_line_ids[0].discount3
)
self.assertEqual(
self.po_line2.discount3, self.invoice.invoice_line_ids[1].discount3
)
self.assertEqual(self.order.amount_total, self.invoice.amount_total)
def test_05_purchase_order_default_discounts(self):
with Form(self.order2).order_line.edit(0) as line:
line.product_qty = 1.0
self.assertEqual(line.discount1, 10)
self.assertEqual(line.discount2, 20)
self.assertEqual(line.discount3, 30)
line.product_qty = 10
self.assertFalse(line.discount1)
self.assertFalse(line.discount2)
self.assertEqual(line.discount3, 50)
def test_06_supplierinfo_from_purchaseorder(self):
self.order2.order_line.create(
{
"order_id": self.order2.id,
"product_id": self.product2.id,
"date_planned": "2020-01-01 00:00:00",
"name": "Line 2",
"product_qty": 1.0,
"product_uom": self.product2.uom_id.id,
"taxes_id": [(6, 0, [self.tax.id])],
"price_unit": 999.0,
"discount1": 11.11,
"discount2": 22.22,
"discount3": 33.33,
}
)
self.order2.button_confirm()
seller = self.supplierinfo_obj.search(
[
("partner_id", "=", self.partner2.id),
("product_tmpl_id", "=", self.product2.product_tmpl_id.id),
]
)
self.assertTrue(seller)
self.assertEqual(seller.discount1, 11.11)
self.assertEqual(seller.discount2, 22.22)
self.assertEqual(seller.discount3, 33.33)

View file

@ -0,0 +1,31 @@
<odoo>
<record model="ir.ui.view" id="product_supplierinfo_form_view">
<field name="model">product.supplierinfo</field>
<field name="inherit_id" ref="product.product_supplierinfo_form_view" />
<field name="arch" type="xml">
<field name="discount" position="attributes">
<attribute name="invisible">1</attribute>
</field>
<field name="discount" position="after">
<field name="discount1" />
<field name="discount2" />
<field name="discount3" />
</field>
</field>
</record>
<record model="ir.ui.view" id="product_supplierinfo_tree_view">
<field name="model">product.supplierinfo</field>
<field name="inherit_id" ref="product.product_supplierinfo_tree_view" />
<field name="arch" type="xml">
<field name="discount" position="attributes">
<attribute name="column_invisible">1</attribute>
</field>
<field name="discount" position="after">
<field name="discount1" optional="hide" />
<field name="discount2" optional="hide" />
<field name="discount3" optional="hide" />
</field>
</field>
</record>
</odoo>

View file

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="purchase_order_triple_discount_form_view" model="ir.ui.view">
<field name="name">purchase.order.triple.discount.form</field>
<field name="model">purchase.order</field>
<field name="inherit_id" ref="purchase.purchase_order_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='order_line']//list//field[@name='discount']"
position="attributes"
>
<attribute name="column_invisible">1</attribute>
</xpath>
<xpath
expr="//field[@name='order_line']//list//field[@name='discount']"
position="after"
>
<field name="discount1" optional="show" />
<field name="discount2" optional="show" />
<field name="discount3" optional="show" />
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,25 @@
<odoo>
<record
model="ir.ui.view"
id="view_partner_property_form_inherit_triple_discount"
>
<field name="model">res.partner</field>
<field name="inherit_id" ref="purchase.view_partner_property_form" />
<field name="arch" type="xml">
<field name="buyer_id" position="after">
<field
name="default_supplierinfo_discount1"
invisible="not is_company or parent_id"
/>
<field
name="default_supplierinfo_discount2"
invisible="not is_company or parent_id"
/>
<field
name="default_supplierinfo_discount3"
invisible="not is_company or parent_id"
/>
</field>
</field>
</record>
</odoo>