Compare commits

...

6 commits

Author SHA1 Message Date
GitHub Copilot
20311740a2 limpieza addon oca 2026-08-07 16:51:42 +02:00
GitHub Copilot
40b9126eee borrado addon OCA 2026-08-07 16:47:22 +02:00
GitHub Copilot
aae6b6096e movidas openspec a /docs 2026-08-07 16:46:33 +02:00
GitHub Copilot
0ef0c9951c limpieza addons OCA 2026-08-07 16:43:27 +02:00
GitHub Copilot
42da5ed3db acción de servidor para crear mandatos bancarios en lote 2026-08-07 16:38:15 +02:00
GitHub Copilot
65818b0155 addons portados en el repo de ecocentral 2026-08-07 16:34:38 +02:00
305 changed files with 2243 additions and 17509 deletions

1
.gitignore vendored
View file

@ -132,3 +132,4 @@ dmypy.json
.pyre/
tmp/
.claude/settings.json

View file

@ -1,7 +1,6 @@
# Kidekoop — Odoo 18.0 Custom Addons
Odoo 18.0 (OCB community) addons repo. Code in **English**, UI in **Basque/Spanish**.
Combines OCB (`ocb/`), inherited OCA addons, and our own custom addons.
Odoo 18.0 (OCB community) addons repo. Code in **English**.
## ⚠️ Critical rules (non-negotiable)
@ -80,7 +79,7 @@ Logistics & accounting:
- Global patterns: `.github/copilot-instructions.md` (extended version of this file).
- Guides: `docs/QWEB_BEST_PRACTICES.md`, `docs/OCA_DOCUMENTATION.md`, `docs/LAZY_LOADING.md`.
- OCA `readme/` structure (DESCRIPTION, INSTALL, CONFIGURE, USAGE, CONTRIBUTORS, CREDITS).
Credits: Criptomart (author) + Elika Bilbo (funder).
Credits: Criptomart (author).
## Commits

View file

@ -0,0 +1,31 @@
# Account Banking Mandate Batch Create
Adds a contextual server action **Create SEPA mandates** to the Contacts
(`res.partner`) list and form views.
## Usage
1. Go to *Contacts* (or *Accounting → Customers*), switch to list view.
2. Filter the partners you want (e.g. your members: `is_client = True`).
3. Select them (tick the header checkbox to select all).
4. *Actions → Create SEPA mandates*.
For each selected partner the action:
- takes the partner's first bank account (`bank_ids[:1]`),
- creates a recurrent SEPA Core mandate (`format=sepa`, `type=recurrent`,
`scheme=CORE`) with today's signature date,
- validates it (state → *valid*).
Partners with no bank account, or that already have a draft/valid mandate,
are skipped. A notification reports created / skipped counts.
> **Legal note:** only create mandates for members who have actually
> authorised the direct debit. Adjust the signature date in
> `data/server_action.xml` if you need the real authorisation date.
## Requirements
Depends on `account_banking_sepa_direct_debit` (OCA `bank-payment`), which
pulls in `account_banking_mandate`, `account_payment_order` and
`account_payment_mode`.

View file

@ -0,0 +1,14 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Account Banking Mandate Batch Create",
"summary": "Adds a contextual action on contacts to create and validate "
"SEPA direct debit mandates in bulk for the selected partners.",
"version": "18.0.1.0.0",
"license": "AGPL-3",
"author": "Criptomart",
"depends": ["account_banking_sepa_direct_debit"],
"data": [
"data/server_action.xml",
],
}

View file

@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="action_create_sepa_mandates" model="ir.actions.server">
<field name="name">Create SEPA mandates</field>
<field name="model_id" ref="base.model_res_partner" />
<field name="binding_model_id" ref="base.model_res_partner" />
<field name="binding_view_types">list,form</field>
<field name="state">code</field>
<field name="code"><![CDATA[
# Bulk-create and validate recurrent SEPA Core mandates for the selected
# partners. Filter the contacts list (e.g. is_client = True), select all,
# then run this action. One mandate per partner; partners that already have
# a draft/valid mandate or no bank account are skipped.
Mandate = env["account.banking.mandate"]
today = datetime.date.today()
created = 0
no_bank = 0
already = 0
for partner in records:
bank = partner.bank_ids[:1]
if not bank:
no_bank += 1
continue
if Mandate.search_count([
("partner_id", "=", partner.id),
("state", "in", ("draft", "valid")),
]):
already += 1
continue
mandate = Mandate.create({
"partner_bank_id": bank.id,
"format": "sepa",
"type": "recurrent",
"scheme": "CORE",
"signature_date": today,
})
mandate.validate()
created += 1
message = (
"SEPA mandates created: %s\n"
"Already had a mandate: %s\n"
"Skipped (no bank account): %s"
) % (created, already, no_bank)
action = {
"type": "ir.actions.client",
"tag": "display_notification",
"params": {
"title": "SEPA mandates",
"message": message,
"type": "success" if created else "warning",
"sticky": False,
},
}
]]></field>
</record>
</odoo>

View file

@ -1,112 +0,0 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
===============================
Account Invoice Triple Discount
===============================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:96fbed1626bb94b34b29d3287cbf750e394cae6f90526ddba1450a75f4c45b49
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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%2Faccount--invoicing-lightgray.png?logo=github
:target: https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_triple_discount
:alt: OCA/account-invoicing
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-account_invoice_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/account-invoicing&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to have three successive discounts on each invoice
line.
**Table of contents**
.. contents::
:local:
Usage
=====
Create a new invoice 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
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-invoicing/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/account-invoicing/issues/new?body=module:%20account_invoice_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
-------
* QubiQ
* Tecnativa
* GRAP
Contributors
------------
- David Vidal <david.vidal@tecnativa.com>
- Pedro M. Baeza <pedro.baeza@tecnativa.com>
- Nikul Chaudhary <nikulchaudhary2112@gmail.com>
- `Aion Tech <https://aiontech.company/>`__:
- Simone Rubino <simone.rubino@aion-tech.it>
- Laurent Mignon <laurent.mignon@acsone.eu>
- Akim Juillerat <akim.juillerat@camptocamp.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/account-invoicing <https://github.com/OCA/account-invoicing/tree/18.0/account_invoice_triple_discount>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

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

View file

@ -1,16 +0,0 @@
# Copyright 2018 QubiQ (http://www.qubiq.es)
# Copyright 2017 Tecnativa - David Vidal
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
{
"name": "Account Invoice Triple Discount",
"version": "18.0.1.0.0",
"category": "Accounting & Finance",
"author": "QubiQ, Tecnativa, GRAP, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/account-invoicing",
"license": "AGPL-3",
"summary": "Manage triple discount on invoice lines",
"depends": ["account"],
"excludes": ["account_invoice_fixed_discount"],
"post_init_hook": "post_init_hook",
"data": ["report/invoice.xml", "views/account_move.xml"],
}

View file

@ -1,27 +0,0 @@
# Copyright 2024-Today - Sylvain Le GAL (GRAP)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import logging
_logger = logging.getLogger(__name__)
def post_init_hook(env):
_logger.info("Initializing column discount1 on table account_move_line")
env.cr.execute("""
UPDATE account_move_line
SET discount1 = discount
WHERE discount != 0
""")
# if discounts are : 10% - 20% - 30% main discount is : 49.6 %
# if discounts are : 05% - 09% - 13% main discount is : 24.7885 %
env.cr.execute("""
UPDATE account_move_line
SET discount = 100 * (
1 - (
(100 - COALESCE(discount1, 0.0)) / 100
* (100 - COALESCE(discount2, 0.0)) / 100
* (100 - COALESCE(discount3, 0.0)) / 100
)
);
""")

View file

@ -1,101 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
msgid "Discount (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_account_move_line_discount1_limit
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_triple_discount_mixin_discount1_limit
msgid "Discount 1 must be lower than 100%."
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_account_move_line_discount2_limit
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_triple_discount_mixin_discount2_limit
msgid "Discount 2 must be lower than 100%."
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_account_move_line_discount3_limit
#: model:ir.model.constraint,message:account_invoice_triple_discount.constraint_triple_discount_mixin_discount3_limit
msgid "Discount 3 must be lower than 100%."
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_triple_discount_mixin__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_triple_discount_mixin
msgid "Triple discount mixin"
msgstr ""

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Arabic (https://www.transifex.com/oca/teams/23907/ar/)\n"
"Language: ar\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 "
"&& n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "فاتورة"
#~ msgid "Invoice Line"
#~ msgstr "خط الفاتورة"

View file

@ -1,78 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Bulgarian (https://www.transifex.com/oca/teams/23907/bg/)\n"
"Language: bg\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Фактура"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Bosnian (https://www.transifex.com/oca/teams/23907/bs/)\n"
"Language: bs\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Faktura"
#~ msgid "Invoice Line"
#~ msgstr "Stavka fakture"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2022-08-09 10:06+0000\n"
"Last-Translator: jabelchi <jabelchi@gmail.com>\n"
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.3.2\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Desc.2%"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Desc.3%"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Descompte 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Descompte 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Línia factura"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Czech (https://www.transifex.com/oca/teams/23907/cs/)\n"
"Language: cs\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>=2 && n<=4) ? 1 : 2;\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Faktura"
#~ msgid "Invoice Line"
#~ msgstr "Řádek faktury"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2018-10-11 11:45+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>\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"
"X-Generator: Weblate 3.1.1\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "2. Rabatt (%)"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "3. Rabatt (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "2. Rabatt (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "3. Rabatt (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Rechnung"
#~ msgid "Invoice Line"
#~ msgstr "Rechnungsposition"

View file

@ -1,79 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/"
"el_GR/)\n"
"Language: el_GR\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Τιμολόγιο"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: English (United Kingdom) (https://www.transifex.com/oca/"
"teams/23907/en_GB/)\n"
"Language: en_GB\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Invoice"
#~ msgid "Invoice Line"
#~ msgstr "Invoice Line"

View file

@ -1,85 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2026-02-03 07:04+0000\n"
"Last-Translator: Enric Tobella <etobella@creublanca.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 5.15.2\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr "<span>Desc.1 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr "<span>Desc. 2 (%)</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr "<span>Desc.3 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Desc.2%"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Desc.3%"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Descuento 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Descuento 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr "Artículo diario"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Journal Entry"
#~ msgstr "Entrada Diaria"
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Línea de factura"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Spanish (Costa Rica) (https://www.transifex.com/oca/"
"teams/23907/es_CR/)\n"
"Language: es_CR\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Línea de factura"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Spanish (Ecuador) (https://www.transifex.com/oca/teams/23907/"
"es_EC/)\n"
"Language: es_EC\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Detalle de Factura"

View file

@ -1,79 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_triple_discount
#
# Translators:
# Fernando Lara <gennesis45@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: Fernando Lara <gennesis45@gmail.com>, 2017\n"
"Language-Team: Spanish (Spain) (https://www.transifex.com/oca/teams/23907/"
"es_ES/)\n"
"Language: es_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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Línea de factura"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Estonian (https://www.transifex.com/oca/teams/23907/et/)\n"
"Language: et\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Arve"
#~ msgid "Invoice Line"
#~ msgstr "Arve rida"

View file

@ -1,78 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Lasku"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Quentin THEURET <odoo@kerpeo.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: Quentin THEURET <odoo@kerpeo.com>, 2017\n"
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Remise 2 (%)"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Remise 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Remise 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Remise 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Facture"
#~ msgid "Invoice Line"
#~ msgstr "Ligne de facture"

View file

@ -1,79 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: French (Canada) (https://www.transifex.com/oca/teams/23907/"
"fr_CA/)\n"
"Language: fr_CA\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Facture"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: French (Switzerland) (https://www.transifex.com/oca/"
"teams/23907/fr_CH/)\n"
"Language: fr_CH\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Facture"
#~ msgid "Invoice Line"
#~ msgstr "Ligne de facture"

View file

@ -1,78 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Galician (https://www.transifex.com/oca/teams/23907/gl/)\n"
"Language: gl\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"

View file

@ -1,87 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Bole <bole@dajmi5.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-03 01:14+0000\n"
"PO-Revision-Date: 2023-04-03 13:23+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>\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"
"X-Generator: Weblate 4.14.1\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr "<span>Pop.2 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr "<span>Pop.3 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Popust 2 (%)"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Popust 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Popust 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Popust 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr "Stavka dnevnika"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Journal Entry"
#~ msgstr "Temeljnica"
#~ msgid "Invoice"
#~ msgstr "Račun"
#~ msgid "Invoice Line"
#~ msgstr "Stavka računa"

View file

@ -1,84 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-11 23:30+0000\n"
"PO-Revision-Date: 2017-08-11 23:30+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2017\n"
"Language-Team: Croatian (Croatia) (https://www.transifex.com/oca/teams/23907/"
"hr_HR/)\n"
"Language: hr_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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Popust 2 (%)"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Popust 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Popust 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Popust 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Račun"
#~ msgid "Invoice Line"
#~ msgstr "Stavka računa"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Hungarian (https://www.transifex.com/oca/teams/23907/hu/)\n"
"Language: hu\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Számla"
#~ msgid "Invoice Line"
#~ msgstr "Számlasor"

View file

@ -1,78 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Indonesian (https://www.transifex.com/oca/teams/23907/id/)\n"
"Language: id\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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Faktur"

View file

@ -1,85 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2025-02-25 15:06+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 5.6.2\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr "<span>Sconto 1 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr "<span>Sconto 2 (%)</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr "<span>Sconto 3 (%)</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr "Sconto 1%"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Sconto 2 (%)"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Sconto 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr "Sconto 1%"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Sconto 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Sconto 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr "Movimento contabile"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr "Sconto totale"
#~ msgid "Journal Entry"
#~ msgstr "Registrazione contabile"
#~ msgid "Invoice"
#~ msgstr "Fattura"
#~ msgid "Invoice Line"
#~ msgstr "Righe Fattura"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Japanese (https://www.transifex.com/oca/teams/23907/ja/)\n"
"Language: ja\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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "請求書"
#~ msgid "Invoice Line"
#~ msgstr "請求行"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Lithuanian (https://www.transifex.com/oca/teams/23907/lt/)\n"
"Language: lt\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%100<10 || n%100>=20) ? 1 : 2);\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Sąskaita faktūra"
#~ msgid "Invoice Line"
#~ msgstr "Sąskaitos faktūros eilutė"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Macedonian (https://www.transifex.com/oca/teams/23907/mk/)\n"
"Language: mk\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Фактура"
#~ msgid "Invoice Line"
#~ msgstr "Ставка од фактура"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Mongolian (https://www.transifex.com/oca/teams/23907/mn/)\n"
"Language: mn\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Нэхэмжлэл"
#~ msgid "Invoice Line"
#~ msgstr "Нэхэмжлэлийн мөр"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/oca/teams/23907/"
"nb/)\n"
"Language: nb\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Faktura"
#~ msgid "Invoice Line"
#~ msgstr "Fakturalinje"

View file

@ -1,79 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Norwegian Bokmål (Norway) (https://www.transifex.com/oca/"
"teams/23907/nb_NO/)\n"
"Language: nb_NO\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Innmelding"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Dutch (https://www.transifex.com/oca/teams/23907/nl/)\n"
"Language: 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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factuur"
#~ msgid "Invoice Line"
#~ msgstr "Factuurregel"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Dutch (Belgium) (https://www.transifex.com/oca/teams/23907/"
"nl_BE/)\n"
"Language: nl_BE\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factuur"
#~ msgid "Invoice Line"
#~ msgstr "Factuurlijn"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factuur"
#~ msgid "Invoice Line"
#~ msgstr "Factuurregel"

View file

@ -1,80 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Polish (https://www.transifex.com/oca/teams/23907/pl/)\n"
"Language: pl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && "
"(n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && "
"n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Faktura"

View file

@ -1,81 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Fatura"
#~ msgid "Invoice Line"
#~ msgstr "Linha de fatura"

View file

@ -1,86 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2023-07-01 22:12+0000\n"
"Last-Translator: Adriano Prado <adrianojprado@gmail.com>\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr "<span>Disco.2 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr "<span>Disco.3 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Desconto 2 (%)"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Desconto 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Desconto 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Desconto 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr "Item Diário"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Journal Entry"
#~ msgstr "Entrada Diário"
#~ msgid "Invoice"
#~ msgstr "Fatura"
#~ msgid "Invoice Line"
#~ msgstr "Linha da Fatura"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Fatura"
#~ msgid "Invoice Line"
#~ msgstr "Linha da Fatura"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Factura"
#~ msgid "Invoice Line"
#~ msgstr "Linie factura"

View file

@ -1,84 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# nek, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-03-17 01:09+0000\n"
"PO-Revision-Date: 2018-03-17 01:09+0000\n"
"Last-Translator: nek, 2018\n"
"Language-Team: Russian (https://www.transifex.com/oca/teams/23907/ru/)\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || "
"(n%100>=11 && n%100<=14)? 2 : 3);\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Скидка 2 (%)"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Скидка 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Скидка 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Скидка 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Счет"
#~ msgid "Invoice Line"
#~ msgstr "Позиция счета"

View file

@ -1,79 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Slovak (Slovakia) (https://www.transifex.com/oca/teams/23907/"
"sk_SK/)\n"
"Language: sk_SK\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>=2 && n<=4) ? 1 : 2;\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Faktúra"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Račun"
#~ msgid "Invoice Line"
#~ msgstr "Postavka računa"

View file

@ -1,85 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2024-06-18 16:38+0000\n"
"Last-Translator: jakobkrabbe <jakob@syscare.se>\n"
"Language-Team: Swedish (https://www.transifex.com/oca/teams/23907/sv/)\n"
"Language: sv\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: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr "<span>Disc.2 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr "<span>Disc.3 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "Skiva.2%"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "Skiva.3%"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "Rabatt 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "Rabatt 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr "Verifikat"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Journal Entry"
#~ msgstr "Verifikat"
#~ msgid "Invoice"
#~ msgstr "Faktura"
#~ msgid "Invoice Line"
#~ msgstr "Fakturarad"

View file

@ -1,78 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Thai (https://www.transifex.com/oca/teams/23907/th/)\n"
"Language: th\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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "ใบแจ้งหนี้"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2025-09-04 11:42+0000\n"
"Last-Translator: Tamer Sezgin <tamer.sezgin@gmail.com>\n"
"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Weblate 5.10.4\n"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr "<span>İnd.1 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr "<span>İnd.2 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr "<span>İnd.3 %</span>"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr "İnd.1%"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr "İnd.2%"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr "İnd.3%"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr "İndirim 1 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr "İndirim 2 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr "İndirim 3 (%)"
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr "Yevmiye Kalemi"
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr "Toplam indirim"
#~ msgid "Invoice"
#~ msgstr "Fatura"
#~ msgid "Invoice Line"
#~ msgstr "Fatura kalemi"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Turkish (Turkey) (https://www.transifex.com/oca/teams/23907/"
"tr_TR/)\n"
"Language: tr_TR\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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "Fatura"
#~ msgid "Invoice Line"
#~ msgstr "Fatura hizası"

View file

@ -1,83 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_triple_discount
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# 三 张 <731414193@qq.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: 三 张 <731414193@qq.com>, 2017\n"
"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/"
"zh_CN/)\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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "发票"
#~ msgid "Invoice Line"
#~ msgstr "发票明细"

View file

@ -1,82 +0,0 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_invoice_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-08-09 02:45+0000\n"
"PO-Revision-Date: 2017-08-09 02:45+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2017\n"
"Language-Team: Chinese (Taiwan) (https://www.transifex.com/oca/teams/23907/"
"zh_TW/)\n"
"Language: zh_TW\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"
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.1 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.2 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.report_invoice_document
msgid "<span>Disc.3 %</span>"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.1%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.2%"
msgstr ""
#. module: account_invoice_triple_discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Disc.3%"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount1
msgid "Discount 1 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount2
msgid "Discount 2 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount3
msgid "Discount 3 (%)"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model,name:account_invoice_triple_discount.model_account_move_line
msgid "Journal Item"
msgstr ""
#. module: account_invoice_triple_discount
#: model:ir.model.fields,field_description:account_invoice_triple_discount.field_account_move_line__discount
#: model_terms:ir.ui.view,arch_db:account_invoice_triple_discount.invoice_triple_discount_form_view
msgid "Total discount"
msgstr ""
#~ msgid "Invoice"
#~ msgstr "發票"
#~ msgid "Invoice Line"
#~ msgstr "發票明細"

View file

@ -1,2 +0,0 @@
from . import triple_discount_mixin
from . import account_move_line

View file

@ -1,10 +0,0 @@
# Copyright 2020 ACSONE SA/NV
# Copyright 2023 Simone Rubino - Aion Tech
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import models
class AccountMoveLine(models.Model):
_name = "account.move.line"
_inherit = ["account.move.line", "triple.discount.mixin"]

View file

@ -1,93 +0,0 @@
# Copyright 2019 Tecnativa - David Vidal
# Copyright 2019 Tecnativa - Pedro M. Baeza
# Copyright 2020 ACSONE SA/NV
# Copyright 2023 Simone Rubino - Aion Tech
# 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 = "triple.discount.mixin"
_description = "Triple discount mixin"
# core discount field is now a computed field
# based on the 3 discounts defined below.
# the digits limitation is removed, to make
# the computation of the subtotal exact.
# For exemple, if discounts are 05%, 09% and 13%
# the main discount is 24.7885 % (and not 24.79)
discount = fields.Float(
string="Total discount",
compute="_compute_discount",
store=True,
readonly=True,
digits=None,
)
discount1 = fields.Float(string="Discount 1 (%)", digits="Discount")
discount2 = fields.Float(string="Discount 2 (%)", digits="Discount")
discount3 = fields.Float(string="Discount 3 (%)", digits="Discount")
_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 line in self:
line.discount = line._get_aggregated_multiple_discounts(
[line[x] for x in line._get_multiple_discount_field_names()]
)
def _get_aggregated_multiple_discounts(self, discounts):
"""
Returns the aggregate discount corresponding to any number of discounts.
For exemple, if discounts is [11.0, 22.0, 33.0]
It will return 46.5114
"""
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
@api.model
def _get_multiple_discount_field_names(self):
return ["discount1", "discount2", "discount3"]
@api.model_create_multi
def create(self, vals_list):
for vals in vals_list:
if vals.get("discount") and not any(
vals.get(field) for field in self._get_multiple_discount_field_names()
):
vals["discount1"] = vals.pop("discount")
return super().create(vals_list)
def write(self, vals):
discount_fields = self._get_multiple_discount_field_names()
if "discount" in vals:
vals["discount1"] = vals.pop("discount")
vals.update({field: 0 for field in discount_fields[1:]})
return super().write(vals)

View file

@ -1,7 +0,0 @@
- David Vidal \<<david.vidal@tecnativa.com>\>
- Pedro M. Baeza \<<pedro.baeza@tecnativa.com>\>
- Nikul Chaudhary \<<nikulchaudhary2112@gmail.com>\>
- [Aion Tech](https://aiontech.company/):
- Simone Rubino \<<simone.rubino@aion-tech.it>\>
- Laurent Mignon \<<laurent.mignon@acsone.eu>\>
- Akim Juillerat \<<akim.juillerat@camptocamp.com>\>

View file

@ -1,2 +0,0 @@
This module allows to have three successive discounts on each invoice
line.

View file

@ -1,17 +0,0 @@
Create a new invoice 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

View file

@ -1,61 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<template
id="report_invoice_document"
inherit_id="account.report_invoice_document"
priority="100"
>
<xpath expr="//t[@t-set='display_discount']" position="attributes">
<attribute name="t-value">False</attribute>
</xpath>
<xpath expr="//t[@t-set='display_discount']" position="after">
<t
t-set="discount_class"
t-value="'text-end %s' % ('d-none d-md-table-cell' if report_type == 'html' else '')"
/>
</xpath>
<xpath expr="//th[@name='th_discount']" position="attributes">
<attribute name="style">visibility: hidden;</attribute>
</xpath>
<xpath expr="//th[@name='th_discount']" position="after">
<th
name="th_discount1"
t-if="display_discount"
t-att-class="discount_class"
>
<span>Disc.1 %</span>
</th>
<th
name="th_discount2"
t-if="display_discount"
t-att-class="discount_class"
>
<span>Disc.2 %</span>
</th>
<th
name="th_discount3"
t-if="display_discount"
t-att-class="discount_class"
>
<span>Disc.3 %</span>
</th>
</xpath>
<xpath
expr="//td[span[@t-field='line.discount']]"
position="attributes"
>
<attribute name="style">visibility: hidden;</attribute>
</xpath>
<xpath expr="//td[span[@t-field='line.discount']]" position="after">
<td t-if="display_discount" t-att-class="discount_class">
<span class="text-nowrap" t-field="line.discount1" />
</td>
<td t-if="display_discount" t-att-class="discount_class">
<span class="text-nowrap" t-field="line.discount2" />
</td>
<td t-if="display_discount" t-att-class="discount_class">
<span class="text-nowrap" t-field="line.discount3" />
</td>
</xpath>
</template>
</odoo>

View file

@ -1,464 +0,0 @@
<!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="account-invoice-triple-discount">
<h1>Account Invoice Triple Discount</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:96fbed1626bb94b34b29d3287cbf750e394cae6f90526ddba1450a75f4c45b49
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/account-invoicing/tree/18.0/account_invoice_triple_discount"><img alt="OCA/account-invoicing" src="https://img.shields.io/badge/github-OCA%2Faccount--invoicing-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/account-invoicing-18-0/account-invoicing-18-0-account_invoice_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/account-invoicing&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module allows to have three successive discounts on each invoice
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 invoice 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>
</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/account-invoicing/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/account-invoicing/issues/new?body=module:%20account_invoice_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>QubiQ</li>
<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 class="simple">
<li>David Vidal &lt;<a class="reference external" href="mailto:david.vidal&#64;tecnativa.com">david.vidal&#64;tecnativa.com</a>&gt;</li>
<li>Pedro M. Baeza &lt;<a class="reference external" href="mailto:pedro.baeza&#64;tecnativa.com">pedro.baeza&#64;tecnativa.com</a>&gt;</li>
<li>Nikul Chaudhary &lt;<a class="reference external" href="mailto:nikulchaudhary2112&#64;gmail.com">nikulchaudhary2112&#64;gmail.com</a>&gt;</li>
<li><a class="reference external" href="https://aiontech.company/">Aion Tech</a>:<ul>
<li>Simone Rubino &lt;<a class="reference external" href="mailto:simone.rubino&#64;aion-tech.it">simone.rubino&#64;aion-tech.it</a>&gt;</li>
</ul>
</li>
<li>Laurent Mignon &lt;<a class="reference external" href="mailto:laurent.mignon&#64;acsone.eu">laurent.mignon&#64;acsone.eu</a>&gt;</li>
<li>Akim Juillerat &lt;<a class="reference external" href="mailto:akim.juillerat&#64;camptocamp.com">akim.juillerat&#64;camptocamp.com</a>&gt;</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/account-invoicing/tree/18.0/account_invoice_triple_discount">OCA/account-invoicing</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</div>
</body>
</html>

View file

@ -1,244 +0,0 @@
# Copyright 2017 Tecnativa - David Vidal
# Copyright 2023 Simone Rubino - Aion Tech
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests import Form
from odoo.addons.base.tests.common import BaseCommon
class TestInvoiceTripleDiscount(BaseCommon):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.Account = cls.env["account.account"]
cls.AccountMove = cls.env["account.move"]
cls.AccountMoveLine = cls.env["account.move.line"]
cls.AccountTax = cls.env["account.tax"]
cls.Partner = cls.env["res.partner"]
cls.Journal = cls.env["account.journal"]
cls.tax = cls.AccountTax.create(
{
"name": "TAX 15%",
"amount_type": "percent",
"type_tax_use": "purchase",
"amount": 15.0,
"country_id": cls.env.ref("base.us").id,
}
)
cls.account = cls.Account.create(
{
"name": "Test account",
"code": "TEST",
"account_type": "asset_receivable",
"reconcile": True,
}
)
cls.sale_journal = cls.Journal.search([("type", "=", "sale")], limit=1)
def create_simple_invoice(self, amount):
invoice_form = Form(
self.AccountMove.with_context(
default_move_type="out_invoice",
default_journal_id=self.sale_journal.id,
)
)
invoice_form.partner_id = self.partner
with invoice_form.invoice_line_ids.new() as line_form:
line_form.name = "Line 1"
line_form.quantity = 1
line_form.price_unit = amount
line_form.tax_ids.clear()
line_form.tax_ids.add(self.tax)
invoice = invoice_form.save()
return invoice
def test_01_discounts(self):
"""Tests multiple discounts in line with taxes"""
invoice = self.create_simple_invoice(200)
invoice_form = Form(invoice)
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount1 = 50.0
invoice_form.save()
invoice_line = invoice.invoice_line_ids[0]
# Adds a first discount
self.assertEqual(invoice.amount_total, 115.0)
# Adds a second discount over the price calculated before
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount2 = 40.0
invoice_form.save()
self.assertEqual(invoice.amount_total, 69.0)
# Adds a third discount over the price calculated before
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount3 = 50.0
invoice_form.save()
self.assertEqual(invoice.amount_total, 34.5)
# Deletes first discount
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount1 = 0
invoice_form.save()
self.assertEqual(invoice.amount_total, 69)
# Charge 5% over price:
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount1 = -5
invoice_form.save()
self.assertEqual(invoice.amount_total, 72.45)
self.assertEqual(invoice_line.price_unit, 200)
def test_02_discounts_multiple_lines(self):
invoice = self.create_simple_invoice(200)
invoice_form = Form(invoice)
with invoice_form.invoice_line_ids.new() as line_form:
line_form.name = "Line 2"
line_form.quantity = 1
line_form.price_unit = 500
line_form.tax_ids.clear()
invoice_form.save()
invoice_line2 = invoice.invoice_line_ids[1]
self.assertEqual(invoice_line2.price_subtotal, 500.0)
with invoice_form.invoice_line_ids.edit(1) as line_form:
line_form.discount3 = 50.0
invoice_form.save()
self.assertEqual(invoice.amount_total, 480.0)
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount1 = 50.0
invoice_form.save()
self.assertEqual(invoice.amount_total, 365.0)
def test_03_discounts_decimals_price(self):
"""
Tests discount with decimals price
causing a round up after discount
"""
invoice = self.create_simple_invoice(0)
invoice_form = Form(invoice)
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.name = "Line Decimals"
line_form.quantity = 9950
line_form.price_unit = 0.14
line_form.tax_ids.clear()
invoice_form.save()
invoice_line1 = invoice.invoice_line_ids[0]
self.assertEqual(invoice_line1.price_subtotal, 1393.0)
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount1 = 15.0
invoice_form.save()
self.assertEqual(invoice_line1.price_subtotal, 1184.05)
def test_04_discounts_decimals_tax(self):
"""
Tests amount tax with discount
"""
invoice = self.create_simple_invoice(0)
invoice_form = Form(invoice)
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.name = "Line Decimals"
line_form.quantity = 9950
line_form.price_unit = 0.14
line_form.discount1 = 0
line_form.discount2 = 0
invoice_form.save()
self.assertEqual(invoice.amount_tax, 208.95)
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.discount1 = 15.0
invoice_form.save()
def test_06_round_discount(self):
"""Discount value is rounded correctly"""
invoice = self.create_simple_invoice(0)
invoice_line = invoice.invoice_line_ids[0]
invoice_line.discount1 = 100
self.assertEqual(invoice_line.discount1, 100)
self.assertEqual(invoice_line.discount, 100)
def test_07_round_tax_discount(self):
"""Discount value is rounded correctly when taxes change"""
invoice = self.create_simple_invoice(0)
invoice_line = invoice.invoice_line_ids[0]
invoice_line.discount1 = 100
invoice_line.tax_ids = False
self.assertEqual(invoice_line.discount1, 100)
self.assertEqual(invoice_line.discount, 100)
def test_09_create_with_main_discount(self):
"""
Tests if creating a invoice line with main discount field
set correctly discount1, discount2 and discount3
"""
invoice = self.create_simple_invoice(0)
invoice_line2 = self.AccountMoveLine.create(
{
"move_id": invoice.id,
"name": "Line With Main Discount",
"quantity": 1,
"price_unit": 1000,
"discount": 10,
"tax_ids": [],
}
)
# 1000 * 0.9
self.assertEqual(invoice_line2.price_subtotal, 900.0)
self.assertEqual(invoice_line2.discount1, 10.0)
self.assertEqual(invoice_line2.discount2, 0.0)
self.assertEqual(invoice_line2.discount3, 0.0)
def test_10_create_invoice_with_discounts(self):
invoice = self.env["account.move"].create(
{
"partner_id": self.partner.id,
"move_type": "out_invoice",
"invoice_line_ids": [
(
0,
0,
{
"name": "Line 1",
"quantity": 1,
"price_unit": 100,
"discount1": 30,
"discount2": 20,
"discount3": 10,
},
)
],
}
)
invoice_line1 = invoice.invoice_line_ids[0]
self.assertEqual(invoice_line1.discount1, 30.0)
self.assertEqual(invoice_line1.discount2, 20.0)
self.assertEqual(invoice_line1.discount3, 10.0)
def test_tax_compute_with_lock_date(self):
# Check that the tax computation works even if the lock date is set
invoice = self.create_simple_invoice(0)
invoice_form = Form(invoice)
with invoice_form.invoice_line_ids.edit(0) as line_form:
line_form.name = "Line Decimals"
line_form.quantity = 9950
line_form.price_unit = 0.14
line_form.discount1 = 10
line_form.discount2 = 20
invoice_form.save()
invoice.action_post()
self.env.user.company_id.fiscalyear_lock_date = "2000-01-01"

View file

@ -1,39 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record id="invoice_triple_discount_form_view" model="ir.ui.view">
<field name="name">account.invoice.triple.discount.form</field>
<field name="model">account.move</field>
<field name="inherit_id" ref="account.view_move_form" />
<field name="arch" type="xml">
<xpath
expr="//field[@name='invoice_line_ids']//list//field[@name='discount']"
position="attributes"
>
<attribute name="optional">hide</attribute>
<attribute name="string">Total discount</attribute>
</xpath>
<xpath
expr="//field[@name='invoice_line_ids']//list//field[@name='discount']"
position="after"
>
<field name="discount1" optional="show" string="Disc.1%" />
<field name="discount2" optional="show" string="Disc.2%" />
<field name="discount3" optional="show" string="Disc.3%" />
</xpath>
<xpath
expr="//field[@name='invoice_line_ids']//form//field[@name='discount']"
position="attributes"
>
<attribute name="string">Total discount</attribute>
</xpath>
<xpath
expr="//field[@name='invoice_line_ids']//form//field[@name='discount']"
position="after"
>
<field name="discount1" string="Disc.1%" />
<field name="discount2" string="Disc.2%" />
<field name="discount3" string="Disc.3%" />
</xpath>
</field>
</record>
</odoo>

View file

@ -0,0 +1,2 @@
schema: spec-driven
created: 2026-07-15

View file

@ -0,0 +1,112 @@
## Context
`website_sale_aplicoop` expone el portal de compra colaborativa (Eskaera) a usuarios de portal, y
la API externa de Odoo (XML-RPC/JSON-RPC) es accesible aunque el puerto de la BD esté firewallado.
La recon del código confirmó cinco hallazgos (H1H5) y varios puntos de config de infra. Producción
corre tras nginx/traefik con TLS; el `docker-compose.yml` del repo es lab/dev y no refleja prod.
Los controladores de eskaera ya usan `sudo()` para sus escrituras y ya disponen de gatekeepers de
pertenencia (`_validate_user_group_access`, `_get_consumer_group_for_user` en
`controllers/website_sale_validators.py`); el problema es que las ACL/record rules son demasiado
permisivas y que algunos endpoints no invocan esos gatekeepers.
## Goals / Non-Goals
**Goals:**
- Cerrar H1H5 con mínimo cambio de comportamiento observable para el usuario legítimo, respaldado
por tests que impidan regresión.
- Entregar un proceso de auditoría repetible (checklist, runbook, scripts, findings register).
- Documentar y aplicar hardening de infra (odoo.conf, proxy, fail2ban, secretos/BD).
**Non-Goals:**
- No se corrigen hallazgos nuevos de la auditoría activa en este change (se registran).
- No se toca `ocb/` ni addons OCA originales.
- No se rediseña la UX del portal; los cambios de endpoint son de transporte/seguridad.
## Decisions
**D1 — ACL de `group.order`/`group.order.slot` (H1): reemplazar la fila de `group_id` vacío por
ACLs explícitas de mínimo privilegio.** La fila vacía concede write+create a todos. Se sustituye
por: lectura interna (`base.group_user`, `1,0,0,0`, que empareja con la record rule interna ya
existente), lectura de portal explícita donde haga falta, y escritura solo para
`group_group_order_manager`. Alternativa descartada: añadir record rules que bloqueen write/create a
portal — más frágil que quitar el permiso en la ACL, porque una ACL permisiva sin regla restrictiva
ya abre el acceso. Verificar si el portal lee `group.order.slot` por ACL o por `sudo()` en el
controlador; si es por `sudo()`, no añadir ACL de portal para el slot.
**D2 — `product.supplierinfo` (H2): acotar el acceso, no eliminarlo.** El portal SÍ usa
`supplierinfo`: la web pinta el **origen** del producto y el **proveedor principal** a partir de él
(vía `product.seller_ids`), además de que el pricing se computa server-side en
`controllers/website_sale_pricing.py` vía `sudo()`. Por tanto no se puede quitar la ACL de portal
sin romper ese render. Dos opciones, en orden de preferencia:
- **(preferida) Preparar origen + proveedor principal en el controlador** vía `sudo()` y pasarlos ya
resueltos a la plantilla (alineado con la regla del repo "sin lógica en QWeb"). Entonces el portal
deja de necesitar ACL directa sobre `product.supplierinfo` → se elimina la ACL de portal (fila 6) y
la record rule `rule_product_supplierinfo_portal_read`. Es lo más seguro: no expone ningún coste.
- **(fallback) Acotar la record rule** para que el portal solo lea `supplierinfo` de los productos de
los grupos a los que pertenece, sustituyendo `domain=[(1,'=',1)]` por un dominio filtrado, y sin
exponer campos de coste/precio (restringir con `groups=` en el campo o exponer campo derivado).
El punto clave: hay que verificar en las plantillas/controladores qué campos de `supplierinfo` se
leen realmente (origen, nombre del proveedor) antes de elegir; el objetivo es no exponer
`price`/coste de todos los proveedores a cualquier usuario de portal.
**D3 — CSRF (H3): convertir a `type="json"`.** Los endpoints de estado (`save-order`, `confirm`,
`clear-cart`, `save-cart`) pasan de `type="http"` + `csrf=False` a `type="json"`. Un `type="json"`
exige `Content-Type: application/json`, que un formulario HTML cross-site no puede fijar, de modo
que neutraliza el CSRF por formulario sin gestionar tokens manualmente. Plantilla de referencia:
`confirm_order_from_portal` (ya `type="json"`). Implica ajustar el JS (solo transporte: fetch con
envelope JSON-RPC y lectura de `result`) y el Python (devolver `dict` en vez de `Response`).
Alternativa descartada: mantener `type="http"` y validar token CSRF — más código y más fácil de
olvidar en endpoints futuros.
**D4 — Autorización horizontal (H4): invocar los gatekeepers existentes.** En cada endpoint que hace
`group.order.sudo().browse(order_id)` y solo comprueba `exists()`/`state`, añadir la comprobación de
pertenencia tras ese check. Usar `_get_consumer_group_for_user` (devuelve `False`) en los que deban
retornar vacío/redirect silencioso (`load_eskaera_page`, `load_products_ajax`) y
`_validate_user_group_access` (lanza) en los que deban fallar duro. Mantener el bypass para usuarios
internos (`current_user.share == False`) igual que `eskaera_shop`.
**D5 — Plantilla (H5): salida JSON segura.** Sustituir `t-raw` en `<script>` de
`load_from_history_templates.xml` por `<script type="application/json">` leído por el JS, evitando
inyección raw en contexto de script.
**D6 — Proceso de auditoría: docs + scripts parametrizados.** Checklist, runbook y findings register
en `docs/`; scripts en `scripts/security/` que toman URL y credenciales por parámetro/env (sin
secretos versionados) y son no destructivos. El harness de fuerza bruta y el fuzzing corren contra
staging o en ventana, nunca contra cuentas reales.
**D7 — Hardening de infra: requisitos documentados + cambio versionable puntual.** La config de
`odoo.conf`, nginx/traefik y fail2ban vive en el servidor (no versionable aquí); se documenta como
requisitos verificables en el checklist. El único cambio versionable de este bloque es añadir
`groups_id` a la server action de mandatos SEPA en `account_banking_mandate_batch`.
## Risks / Trade-offs
- [Convertir endpoints a `type="json"` rompe el carrito/checkout] → Tests de endpoint + verificación
end-to-end del flujo de portal antes de mergear; cambios de JS limitados a transporte.
- [Recortar `supplierinfo` rompe la visualización de precios] → Confirmar que el pricing se computa
vía `sudo()`; test que verifica que el shop sigue mostrando precios.
- [Endurecer ACL bloquea a un usuario interno legítimo que dependía del permiso global] → La record
rule interna de lectura ya existe; el test cubre lectura interna y escritura de manager.
- [Auditoría activa afecta a producción] → Snapshot previo, staging preferente, ventana de
mantenimiento, cuentas de test dedicadas, monitorización en vivo.
- [`proxy_mode=True` mal configurado falsea la IP de origen] → Verificar cabeceras `X-Forwarded-For`
en nginx y comprobar en la Fase 1 que fail2ban ve la IP real de Kali.
## Migration Plan
1. Rama aparte para los fixes de código; la auditoría activa se ejecuta contra staging.
2. Aplicar D1D5 en `website_sale_aplicoop` + tests; bump de `__manifest__.py`.
3. Actualizar el addon: `docker-compose run odoo odoo -d odoo --stop-after-init -u website_sale_aplicoop`.
Rollback: revertir la rama y re-actualizar el addon (las ACL/record rules se recargan al -u).
4. Aplicar D7 (config de servidor) en ventana; rollback = restaurar los ficheros de config previos y
recargar servicios.
## Open Questions
- ¿El portal lee `group.order.slot` y `product.supplierinfo` directamente en algún punto, o todo va
por `sudo()`? Resolver leyendo los controladores antes de eliminar ACLs (afecta a D1/D2).
- ¿Se usa traefik o nginx en prod? Ajusta la sintaxis de rate-limit/cabeceras del runbook (no el
requisito).
- ¿Externalizar secretos a `.env`/secrets del orquestador en este change o en uno posterior de infra?

View file

@ -0,0 +1,106 @@
# Proposal — Auditoría de seguridad y hardening (Odoo 18.0)
## Why
Detectamos ataques automatizados cada vez más sofisticados que la heurística de fail2ban no frena,
y somos responsables de la seguridad de nuestra infra y la de nuestros clientes. Necesitamos (a) un
proceso de auditoría **reproducible** tipo "checklist de prevuelo" para verificar la resiliencia
ante fuerza bruta, acceso indebido a datos vía API y vectores inadvertidos; y (b) corregir cinco
hallazgos ya confirmados leyendo el propio código de `website_sale_aplicoop`.
## Objetivo
Dejar la infra Odoo con una postura de seguridad auditable y repetible, y cerrar los hallazgos
H1H5 con tests que impidan su regresión.
## Alcance
- **Solo nuestra infra** (autorización directa, sin terceros). Producción está tras nginx/traefik
con TLS.
- Auditoría **activa autorizada** (fuerza bruta controlada contra cuenta de test y fuzzing de
endpoints) desde la máquina Kali de la red y desde `localhost` vía SSH, preferentemente contra un
clon de staging o en ventana de mantenimiento con snapshot previo.
- Remediación de los hallazgos confirmados en `website_sale_aplicoop` (+ `groups_id` en la server
action de mandatos SEPA de `account_banking_mandate_batch`).
## No-objetivos
- No se audita ni escanea infra de terceros ni hosting ajeno.
- No se corrige aquí ningún hallazgo **nuevo** que surja durante la auditoría activa: se registra en
el findings register y se aborda en un change posterior (salvo severidad crítica, que se escalará).
- No se modifica `ocb/` ni los addons OCA originales.
## What Changes
- **Proceso de auditoría**: se añaden entregables de documentación (`docs/SECURITY_AUDIT_CHECKLIST.md`,
`docs/SECURITY_AUDIT_RUNBOOK.md`, `docs/SECURITY_FINDINGS.md`) y scripts no destructivos en
`scripts/security/` (probe de ACL vía API, probe de IDOR, harness de fuerza bruta, PoC de CSRF,
recon web) parametrizados con cuentas de test.
- **Fix H1 (Alta)** — ACL con `group_id` vacío que concede write+create global sobre `group.order` y
`group.order.slot`: se reemplaza por ACLs de mínimo privilegio (lectura interna/portal explícitas;
escritura solo manager). Los writes de los controladores usan `sudo()` y no dependen de estas ACLs.
- **Fix H2 (Alta)** — record rule de `product.supplierinfo` con `domain=[(1,'=',1)]` que expone todos
los precios de proveedor al portal. El portal usa `supplierinfo` para pintar el **origen** del
producto y el **proveedor principal** en la web, así que no se elimina sin más: o se preparan esos
valores server-side (vía `sudo()` en el controlador, según la regla "sin lógica en QWeb") o se acota
el dominio a los productos accesibles por el usuario, sin exponer campos de coste/precio.
- **Fix H3 (Media)** — endpoints de cambio de estado con `csrf=False`: se convierten a `type="json"`
(bloquea el POST de formulario cross-site), tomando como plantilla `confirm_order_from_portal`.
- **Fix H4 (Media)** — endpoints de lectura/ajax que solo comprueban `exists()`+`state`: se añade
comprobación de pertenencia al grupo reutilizando `_validate_user_group_access` /
`_get_consumer_group_for_user`.
- **Fix H5 (Baja)**`t-raw` inyectado en `<script>`: se sustituye por un patrón de salida seguro.
- **Hardening de config**: `admin_passwd`, `list_db=False`, `proxy_mode=True`, password de BD fuerte,
rate-limit/cabeceras en nginx, jails de fail2ban (web + API). Documentado como requisitos; los
cambios de infra no versionable se ejecutan en el servidor, los versionables (`groups_id` en la
server action) en el repo.
## Capabilities
### New Capabilities
- `eskaera-access-control`: cómo `website_sale_aplicoop` restringe acceso a datos y acciones —
ACL de mínimo privilegio, alcance de `product.supplierinfo`, autorización por pertenencia al grupo
de consumo en todos los endpoints, protección CSRF en endpoints de estado, y escapado de salida en
plantillas. Cubre H1H5.
- `security-audit-process`: proceso repetible de auditoría — reglas de compromiso/autorización,
checklist de prevuelo, runbook de auditoría activa, scripts de prueba y registro de hallazgos.
- `infra-hardening`: requisitos de endurecimiento de producción — `odoo.conf`, reverse proxy
(nginx/traefik) con TLS/rate-limit/cabeceras, fail2ban (web + API), y gestión de secretos/BD.
### Modified Capabilities
- (ninguna — no existen specs previas en `openspec/specs/`)
## Impact
- **Addons afectados**: `website_sale_aplicoop` (security CSV + record rules, controladores,
plantilla, tests, bump de `__manifest__.py`); `account_banking_mandate_batch` (`groups_id` en la
server action).
- **Addons NO afectados**: `ocb/`, los addons OCA originales, y el resto de custom (solo se auditan;
cualquier hallazgo se registra, no se modifica en este change).
- **Nuevas rutas en el repo**: `docs/SECURITY_*`, `scripts/security/`.
- **Impacto UI/website/QWeb**: al convertir endpoints a `type="json"` hay que ajustar el transporte
en el JS de `website_sale_aplicoop` (solo transporte, sin lógica). La plantilla
`load_from_history_templates.xml` cambia su forma de inyectar JSON. Sin cambios visibles de UX.
- **Infra (no versionable)**: `odoo.conf`, config de nginx/traefik y fail2ban en el servidor de prod.
## Riesgos
- La auditoría activa (fuerza bruta/fuzzing) puede degradar o afectar a producción: mitigado con
clon de staging o ventana de mantenimiento, snapshot previo y cuentas de test dedicadas (nunca
contra cuentas reales, por riesgo de lockout/DoS de usuarios legítimos).
- Convertir endpoints a `type="json"` cambia el contrato de request/response: riesgo de regresión en
el carrito/checkout del portal; mitigado con tests y verificación end-to-end.
- Recortar el acceso a `product.supplierinfo` podría romper la visualización de precios si algún
punto del portal dependía de la ACL abierta: verificar que el pricing se computa vía `sudo()`.
## Criterios de aceptación
- Los probes `odoo_acl_probe.py` e `idor_probe.py` deniegan tras los fixes lo que permitían antes
(write/create de `group.order`, lectura de `supplierinfo` ajeno, datos de grupos ajenos).
- El PoC de CSRF funciona antes del fix y falla después.
- El harness de fuerza bruta acaba con la IP de Kali baneada por fail2ban en `/web/login` y en la
ruta API.
- Tests de `website_sale_aplicoop` en verde:
`docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u website_sale_aplicoop`.
- El checklist de prevuelo cubre los tres frentes + infra, con criterio pass/fail por ítem, y el
findings register queda con H1H5 en estado resuelto/verificado.

View file

@ -0,0 +1,87 @@
## ADDED Requirements
### Requirement: Least-privilege ACLs for group order models
`group.order` and `group.order.slot` SHALL NOT grant write, create or unlink to portal, public
or unassigned internal users. Write/create/unlink SHALL be limited to the group-order manager
group (`website_sale_aplicoop.group_group_order_manager`) and ERP admins. Read MAY be granted to
internal users and portal users through explicit, group-scoped ACLs (no empty `group_id` rows).
Controller mutations continue to run via `sudo()` and MUST NOT depend on broad ACLs.
#### Scenario: Portal user cannot mutate group orders
- **WHEN** a portal user calls the external API to `create`, `write` or `unlink` on `group.order`
or `group.order.slot`
- **THEN** the operation is denied with an `AccessError`
#### Scenario: Manager retains full access
- **WHEN** a user in `group_group_order_manager` creates or edits a `group.order` of their company
- **THEN** the operation succeeds
#### Scenario: Controllers still operate
- **WHEN** an authenticated portal member confirms a cart through the eskaera controller (which
uses `sudo()`)
- **THEN** the underlying `sale.order`/`group.order` writes succeed despite the tighter ACLs
### Requirement: Supplier cost not broadly exposed to portal
Portal users SHALL NOT read `product.supplierinfo` cost/price rows for products or vendors
unrelated to them. The unrestricted record rule (`domain=[(1,'=',1)]`) granting portal read on
`product.supplierinfo` SHALL NOT exist. The product **origin** and **main seller** shown in the
eskaera shop — currently painted from `supplierinfo` — MUST keep working, either by preparing those
values server-side (via `sudo()` in the controller, per the repo's "no logic in QWeb" rule) or via
a record rule scoped to the products the user can access, exposing no supplier cost/price fields.
#### Scenario: Portal user cannot list unrelated supplier cost
- **WHEN** a portal user calls `search_read` on `product.supplierinfo` via the external API
- **THEN** the result does not include supplier cost/price rows of products/vendors unrelated to
the user
#### Scenario: Origin and main seller still render
- **WHEN** a portal member opens the eskaera shop
- **THEN** each product's origin and main seller display correctly, without exposing supplier
cost/price across all vendors
### Requirement: CSRF protection on state-changing eskaera endpoints
State-changing eskaera endpoints SHALL be protected against cross-site request forgery. The
endpoints `/eskaera/save-order`, `/eskaera/confirm`, `/eskaera/clear-cart` and `/eskaera/save-cart`
(which create, confirm, merge or cancel `sale.order` records) SHALL NOT be `type="http"` with
`csrf=False`; they SHALL be `type="json"` (or otherwise validate a CSRF token) so that a cross-site
HTML form POST cannot trigger them.
#### Scenario: Cross-site form POST is rejected
- **WHEN** a logged-in user's browser is induced to submit a cross-site form POST to
`/eskaera/clear-cart` or `/eskaera/confirm`
- **THEN** the request is rejected and no order is cancelled/confirmed
#### Scenario: Legitimate same-origin call works
- **WHEN** the eskaera frontend submits the JSON-RPC request from the same origin
- **THEN** the order is created/confirmed as before
### Requirement: Consumer-group membership enforced on group-order endpoints
Every eskaera endpoint that resolves a `group.order` from a request id SHALL verify that the
requesting user belongs to a consumer group of that order before returning data. This applies to
`load_eskaera_page`, `load_products_ajax`, `add_to_eskaera_cart`, `eskaera_checkout` and
`check_group_order_status`, reusing `_validate_user_group_access` / `_get_consumer_group_for_user`.
Internal users MAY be exempt (matching `eskaera_shop`).
#### Scenario: Non-member gets no cross-group data
- **WHEN** a portal user who is not a member of a group order requests
`/eskaera/<order_id>/load-products-ajax` for that order
- **THEN** the endpoint returns empty/redirect and discloses no catalog or pricing of that order
#### Scenario: Member accesses own group order
- **WHEN** a portal member of the order's consumer group requests the same endpoint
- **THEN** the products and pricing are returned normally
### Requirement: Safe template output in inline scripts
QWeb templates SHALL NOT inject data into inline `<script>` blocks via `t-raw`. JSON payloads for
the client SHALL be emitted through a safe pattern (e.g. `<script type="application/json">` read by
the JS layer).
#### Scenario: Rendered history payload is not raw-injected
- **WHEN** the load-from-history template renders its JSON payload
- **THEN** the payload is emitted through a safe (escaped/typed) mechanism, not `t-raw` inside a
`<script>` tag

View file

@ -0,0 +1,61 @@
## ADDED Requirements
### Requirement: Hardened Odoo configuration
Production `odoo.conf` SHALL set a strong `admin_passwd` (not the default `admin`), `list_db =
False`, a `dbfilter` scoping databases per host, `proxy_mode = True`, `workers > 0`, request/time
limits, `without_demo = True`, and a strong database password (not the literal `odoo`). The
database manager SHALL NOT be reachable publicly.
#### Scenario: Database manager not exposed
- **WHEN** an anonymous client requests `/web/database/manager` on production
- **THEN** it is not served (blocked at the proxy and/or `list_db=False`)
#### Scenario: Real client IP reaches Odoo logs
- **WHEN** a login fails behind the reverse proxy
- **THEN** with `proxy_mode=True` the Odoo log records the real client IP (from `X-Forwarded-For`),
not the proxy IP
### Requirement: Reverse proxy enforces TLS, rate limiting and security headers
The nginx/traefik layer SHALL terminate TLS with strong protocols/ciphers, apply `limit_req` to
`/web/login`, `/web/session/authenticate`, `/jsonrpc` and `/xmlrpc`, and set security headers
(HSTS, X-Frame-Options/CSP, X-Content-Type-Options, Referrer-Policy). The `session_id` cookie
SHALL be `Secure`, `HttpOnly` and `SameSite`.
#### Scenario: Login rate limited
- **WHEN** a client exceeds the configured request rate on `/web/login`
- **THEN** the proxy returns 429 and further attempts are throttled
#### Scenario: Security headers present
- **WHEN** a response is returned from production
- **THEN** it includes HSTS, anti-clickjacking and content-type-options headers, and the session
cookie carries Secure/HttpOnly/SameSite
### Requirement: Brute-force sources banned on web and API
fail2ban SHALL ban source IPs that exceed a failed-authentication threshold, covering both the web
login route and the API authentication routes (`/web/session/authenticate`, `/xmlrpc/2/common`),
using the real client IP.
#### Scenario: Repeated web login failures banned
- **WHEN** a source exceeds the failed-login threshold on `/web/login`
- **THEN** fail2ban bans that IP for the configured duration
#### Scenario: API auth brute force banned
- **WHEN** a source brute-forces `/web/session/authenticate` or `/xmlrpc/2/common`
- **THEN** the same fail2ban jail bans it (attacks via API do not bypass protection)
### Requirement: Secrets and database access hardened
Database and master secrets SHALL be strong and SHALL NOT be committed in plaintext in versioned
files. The PostgreSQL port SHALL NOT be reachable from outside the host/network (firewalled), and
the database user SHALL have least privilege.
#### Scenario: DB port not externally reachable
- **WHEN** an external client attempts to connect to PostgreSQL (5432) on production
- **THEN** the connection is refused/filtered by the firewall
#### Scenario: No plaintext secrets in repo
- **WHEN** the repository is inspected
- **THEN** production database/master passwords are not present in plaintext in versioned files

View file

@ -0,0 +1,54 @@
## ADDED Requirements
### Requirement: Authorization precedes active testing
Active security testing (brute force, fuzzing) SHALL NOT begin until a written authorization
recording scope, source IPs, time window and emergency contact exists, a tested backup/snapshot is
taken, and dedicated test accounts are provisioned. Active tests SHALL run against a staging clone
or within a maintenance window, and SHALL NOT target real user accounts.
#### Scenario: Test blocked without authorization
- **WHEN** an operator attempts an active test without the recorded authorization and snapshot
- **THEN** the runbook procedure halts at the pre-flight gate and the test does not run
#### Scenario: Test uses dedicated accounts on staging
- **WHEN** a brute-force test runs
- **THEN** it targets a dedicated test account on staging (or in a maintenance window), never a
real user
### Requirement: Pre-flight security checklist
The repo SHALL ship a pre-flight checklist (`docs/SECURITY_AUDIT_CHECKLIST.md`) covering the three
fronts — brute force, API/data access, inadvertent vectors — plus infrastructure. Each item SHALL
have an explicit pass/fail criterion.
#### Scenario: Checklist covers all fronts with criteria
- **WHEN** an operator opens the checklist
- **THEN** it contains markable items for each of the three fronts and infra, each with a defined
pass/fail criterion
### Requirement: Non-destructive audit scripts
The repo SHALL provide audit scripts under `scripts/security/` (ACL probe, IDOR probe, brute-force
harness, CSRF PoC, web recon) that are non-destructive and parameterized with test-account
credentials rather than hard-coded production secrets.
#### Scenario: ACL probe reports access matrix
- **WHEN** the ACL probe runs with a portal test account
- **THEN** it reports, per model, whether read/write/create/unlink is allowed or denied, without
modifying production data
#### Scenario: Scripts take credentials as parameters
- **WHEN** a script is invoked
- **THEN** target URL and credentials are supplied as parameters/env, with no secrets committed to
the repo
### Requirement: Findings register tracks resolution
Findings SHALL be recorded in `docs/SECURITY_FINDINGS.md` with severity, evidence and status, and
each SHALL be tracked until resolved and verified.
#### Scenario: Confirmed findings tracked to closure
- **WHEN** the audit completes
- **THEN** the register lists H1H5 (and any new findings) with severity and a status of
resolved/verified or an owner and plan

View file

@ -0,0 +1,63 @@
## 1. Pre-flight y preparación (reglas de compromiso)
- [ ] 1.1 Redactar y firmar la autorización (alcance, IPs origen Kali+localhost, ventana, contacto) y guardarla como cabecera de `docs/SECURITY_FINDINGS.md`.
- [ ] 1.2 Tomar snapshot/backup de BD y volumen; probar la restauración. Preparar clon de staging.
- [ ] 1.3 Crear cuentas de test dedicadas (`sec_test_portal`, `sec_test_user`, opcional manager); anotar grupos y partners.
- [ ] 1.4 Confirmar topología de prod vía SSH (`ss -tlnp`, `ps aux | grep odoo`, config nginx/traefik, `odoo.conf`, fail2ban, firewall, versión exacta de Odoo).
## 2. Entregables de documentación (`docs/`)
- [ ] 2.1 Crear `docs/SECURITY_AUDIT_CHECKLIST.md`: checklist de prevuelo con ítems markables por los 3 frentes + infra, cada uno con criterio pass/fail.
- [ ] 2.2 Crear `docs/SECURITY_AUDIT_RUNBOOK.md`: comandos paso a paso de la auditoría activa (nmap, hydra/patator, testssl.sh, nikto, ffuf, invocación de scripts) con las salvaguardas de la sección 1.
- [ ] 2.3 Crear `docs/SECURITY_FINDINGS.md`: registro con severidad/evidencia/estado, sembrado con H1H5 + hallazgos de infra.
## 3. Scripts de auditoría (`scripts/security/`, no destructivos, credenciales por parámetro/env)
- [ ] 3.1 `odoo_acl_probe.py`: autentica como portal/usuario de test vía API externa y prueba matriz read/write/create/unlink sobre `group.order`, `group.order.slot`, `product.supplierinfo`, `res.partner`, `res.users`, `account.move`, `sale.order` (de otro partner), `ir.config_parameter`, `ir.attachment`, `account.banking.mandate`, `res.partner.bank`.
- [ ] 3.2 `idor_probe.py`: como portal de test, itera `order_id`/`group_order_id` en `load_eskaera_page`, `load_products_ajax`, `add_to_eskaera_cart`, `eskaera_checkout`, `check_group_order_status` y detecta fuga de catálogo/precios de grupos ajenos; incluir IDOR vertical sobre `/my/orders/<id>` y `/my/events/<id>`.
- [ ] 3.3 `bruteforce_test.sh`: hydra/patator controlado contra cuenta de test en `/web/login` y contra la ruta API (`/web/session/authenticate`, `/xmlrpc/2/common`); verifica baneo de la IP de Kali por fail2ban.
- [ ] 3.4 `csrf_poc.html`: formulario cross-site que fuerza `POST /eskaera/clear-cart` y `/eskaera/confirm` desde sesión logueada (para demostrar H3 antes del fix).
- [ ] 3.5 `web_recon.sh`: nmap + testssl.sh + nikto + ffuf sobre rutas Odoo conocidas (`/web/database/manager`, `/web/database/selector`, `?debug=1`, `/web/webclient/version_info`, `.git/`) y chequeo de cabeceras/cookies.
## 4. Ejecución de la auditoría activa (registrar todo en el findings register)
- [ ] 4.1 Frente 1 (fuerza bruta): ejecutar 3.3; medir umbral/tiempo de baneo web y API; revisar política de contraseñas (`auth_password_policy`), 2FA (`auth_totp`), `auth_signup` no invitado, gestor de BD.
- [ ] 4.2 Frente 2 (acceso a datos vía API): ejecutar 3.1 y 3.2 (baseline pre-fix); documentar accesos indebidos (valida H1, H2, H4).
- [ ] 4.3 Frente 3 (vectores inadvertidos): ejecutar 3.4 (valida H3), 3.5 (TLS, cabeceras, superficie web, versión/CVEs) y revisar `t-raw`/XSS (valida H5).
## 5. Fixes de código — `website_sale_aplicoop`
- [ ] 5.1 (H1) En `security/ir.model.access.csv`: sustituir la fila `access_group_order_base` (grupo vacío) por lectura interna `base.group_user` `1,0,0,0`; idem `access_group_order_slot_base`; mantener filas de manager para escritura; añadir ACL de portal de solo lectura para el slot solo si el controlador lo lee sin `sudo()`.
- [ ] 5.2 (H2) Identificar en plantillas/controladores qué campos de `product.supplierinfo` lee el portal (origen del producto, proveedor principal vía `product.seller_ids`) y confirmar que el pricing va por `sudo()` en `controllers/website_sale_pricing.py`.
- [ ] 5.3 (H2, preferido) Preparar origen + proveedor principal en el controlador vía `sudo()` y pasarlos resueltos a la plantilla (sin lógica en QWeb); luego eliminar la ACL de portal de `product.supplierinfo` (fila 6 del CSV) y la record rule `rule_product_supplierinfo_portal_read`.
- [ ] 5.4 (H2, fallback si el render no se puede mover al controlador) Sustituir `domain=[(1,'=',1)]` de `rule_product_supplierinfo_portal_read` por un dominio acotado a los productos de los grupos del usuario, sin exponer campos de coste/precio.
- [ ] 5.5 (H3) En `controllers/website_sale.py`: convertir `save-order`, `confirm`, `clear-cart`, `save-cart` de `type="http"`+`csrf=False` a `type="json"` (plantilla: `confirm_order_from_portal`); devolver `dict`.
- [ ] 5.6 (H3) Ajustar el JS de `static/src/js/` (solo transporte: fetch con envelope JSON-RPC y lectura de `result`), sin lógica de negocio en JS.
- [ ] 5.7 (H4) En `controllers/website_sale.py`: añadir comprobación de pertenencia tras `exists()`/`state` en `load_eskaera_page`, `load_products_ajax`, `add_to_eskaera_cart`, `eskaera_checkout`, `check_group_order_status`, reutilizando `_get_consumer_group_for_user` (retorno vacío/redirect) o `_validate_user_group_access` (fallo duro); mantener bypass de usuario interno (`share == False`).
- [ ] 5.8 (H5) En `views/load_from_history_templates.xml`: sustituir `t-raw` en `<script>` por `<script type="application/json">` leído por el JS.
- [ ] 5.9 Bump de versión en `website_sale_aplicoop/__manifest__.py` (`18.0.X.Y.Z`).
## 6. Fix versionable de infra — `account_banking_mandate_batch`
- [ ] 6.1 Añadir `groups_id` a la server action de mandatos SEPA en `account_banking_mandate_batch/data/server_action.xml` para restringir quién puede lanzarla.
## 7. Tests (extender los existentes de `website_sale_aplicoop/tests/`)
- [ ] 7.1 `test_record_rules.py` / `test_multi_company.py`: aserciones de que el portal NO puede write/create `group.order` ni `group.order.slot` (H1) ni leer `product.supplierinfo` ajeno (H2).
- [ ] 7.2 `test_group_order_status_endpoint.py`: un portal fuera del grupo NO obtiene datos de los endpoints de lectura/ajax (H4); un miembro sí.
- [ ] 7.3 Test de que los endpoints de estado convertidos a `type="json"` funcionan same-origin y que el flujo de checkout/carrito sigue operando (H3).
## 8. Hardening de infra (servidor de prod; no versionable — verificar contra el checklist)
- [ ] 8.1 `odoo.conf`: `admin_passwd` fuerte, `list_db=False`, `dbfilter` por host, `proxy_mode=True`, `workers>0`, `limit_*`, `without_demo=True`, `db_password` fuerte; log parseable por fail2ban.
- [ ] 8.2 nginx/traefik: `limit_req` en `/web/login`, `/web/session/authenticate`, `/jsonrpc`, `/xmlrpc`; bloquear/restringir `/web/database/*`; HSTS + cabeceras; TLS fuerte; cookie `session_id` Secure/HttpOnly/SameSite; upgrade de `/websocket`.
- [ ] 8.3 fail2ban: jails para login web y API (IP real vía `proxy_mode`), jail de 429 de nginx y `recidive`; verificar baneo con 3.3.
- [ ] 8.4 BD/secretos: confirmar 5432 no expuesto por firewall; usuario de BD con mínimos privilegios; externalizar secretos fuera de ficheros versionados.
## 9. Verificación y calidad
- [ ] 9.1 Re-ejecutar 3.1/3.2 (deben denegar lo que antes permitían) y 3.4 (debe fallar tras el fix); actualizar el findings register a resuelto/verificado.
- [ ] 9.2 Tests del addon: `docker-compose run odoo odoo -d odoo --test-enable --stop-after-init -u website_sale_aplicoop` (usar `run`, no `exec`).
- [ ] 9.3 Verificación end-to-end del portal (carrito, save-order, confirm, clear-cart, checkout) tras la conversión a `type="json"`.
- [ ] 9.4 Calidad: `make format` / `make lint` (black línea 88 + isort + flake8 + pylint-odoo); sin `_()` en definiciones de campo; `pre-commit run --all-files`.
- [ ] 9.5 Cerrar cada ítem del checklist de prevuelo con evidencia.

View file

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

View file

@ -0,0 +1,22 @@
# Copyright 2026 Ecocentral, Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Partner CCPAE",
"summary": "Añade los datos del registro de operador CCPAE a los contactos.",
"version": "18.0.1.0.0",
"development_status": "Beta",
"author": "Criptomart",
"website": "https://github.com/Ecocentral/ecocentral",
"category": "Localization/Europe",
"license": "AGPL-3",
# `mail` es imprescindible: los dos campos son `tracking=True` y eso
# necesita `mail.thread` sobre `res.partner`. No hay modelos nuevos, así
# que tampoco hay `security/`.
"depends": [
"base",
"mail",
],
"data": [
"views/res_partner_views.xml",
],
}

View file

@ -0,0 +1,49 @@
# Copyright 2026 Ecocentral, Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
"""Renombrar l'xml_id de la vista heretada del formulari de contacte.
A la 17.0 la vista es deia `l10n_es_partner_ccpae.view_partner_form`, un nom
que xoca visualment amb `base.view_partner_form` i que no segueix la convenció
del repo (`<model>_view_form_<mòdul>`). A la 18.0 passa a dir-se
`res_partner_view_form_ccpae`.
Sense aquest script l'actualització continuaria funcionant —Odoo crearia una
vista nova i esborraria l'antiga a `_process_end`— però pel mig hi hauria dues
vistes heretades equivalents injectant la mateixa pàgina al formulari, i es
perdrien les personalitzacions que algú hagués fet sobre el registre existent.
Renombrant a `ir_model_data` es reaprofita la mateixa `ir.ui.view`.
"""
import logging
_logger = logging.getLogger(__name__)
RENAMED_XMLIDS = [
# (model, nom antic, nom nou)
("ir.ui.view", "view_partner_form", "res_partner_view_form_ccpae"),
]
def migrate(cr, version):
if not version:
return
for model, old_name, new_name in RENAMED_XMLIDS:
cr.execute(
"""
UPDATE ir_model_data
SET name = %s
WHERE module = 'l10n_es_partner_ccpae'
AND name = %s
AND model = %s
AND NOT EXISTS (
SELECT 1 FROM ir_model_data
WHERE module = 'l10n_es_partner_ccpae'
AND name = %s
)
""",
(new_name, old_name, model, new_name),
)
if cr.rowcount:
_logger.info(
"l10n_es_partner_ccpae: xml_id %s renombrat a %s", old_name, new_name
)

View file

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

View file

@ -0,0 +1,26 @@
# Copyright 2026 Ecocentral, Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import fields
from odoo import models
# Organismo de control por defecto: el código CCPAE de Ecocentral. Los
# proveedores certificados por otro consejo regulador lo sobreescriben a mano.
DEFAULT_CCPAE_ORGANISMO = "ES-ECO-019-CT"
class ResPartner(models.Model):
_inherit = "res.partner"
ccpae_operador = fields.Char(
string="Nº de Operador",
tracking=True,
help="Número de operador en el registro del consejo regulador de "
"producción agraria ecológica.",
)
ccpae_organismo = fields.Char(
string="Organismo regulador",
default=DEFAULT_CCPAE_ORGANISMO,
tracking=True,
help="Código del organismo de control que certifica al operador.",
)

View file

@ -0,0 +1,13 @@
Añade a los contactos de tipo empresa los datos del registro de operador del
consejo regulador de producción agraria ecológica (CCPAE):
* **Nº de Operador**: el número con el que el proveedor está inscrito en el
registro.
* **Organismo regulador**: el código del organismo de control que lo certifica,
por defecto ``ES-ECO-019-CT`` (CCPAE).
Ambos campos tienen seguimiento en el chatter, de forma que cualquier cambio en
la certificación de un proveedor queda registrado.
A pesar del nombre, el módulo **no** depende de ``l10n_es_partner`` de OCA: solo
necesita ``base`` y ``mail``.

View file

@ -0,0 +1,8 @@
#. Abre un contacto de tipo *Empresa* (los campos están ocultos en los
contactos de tipo persona).
#. Ve a la pestaña **CCPAE**.
#. Rellena el *Nº de Operador*. El *Organismo regulador* viene precargado con
``ES-ECO-019-CT``; cámbialo si el proveedor está certificado por otro
consejo regulador.
Los cambios en ambos campos quedan registrados en el chatter del contacto.

View file

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

View file

@ -0,0 +1,67 @@
# Copyright 2026 Ecocentral, Criptomart
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo.tests.common import TransactionCase
from odoo.tests.common import tagged
from odoo.addons.l10n_es_partner_ccpae.models.res_partner import DEFAULT_CCPAE_ORGANISMO
@tagged("post_install", "-at_install")
class TestResPartnerCcpae(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.partner = cls.env["res.partner"].create(
{
"name": "Productor Ecològic Test",
"is_company": True,
}
)
# `create` crida `_track_discard()`, que apunta `None` com a valors
# inicials del registre per no traçar la pròpia creació. Mentre aquest
# `None` hi sigui, cap `write` posterior deixa rastre. Buidant el
# precommit aquí es descarta i els tests ja poden traçar.
cls._flush_tracking(cls.env)
@staticmethod
def _flush_tracking(env):
env.flush_all()
env.cr.precommit.run()
def _tracked_fields(self):
"""Camps amb rastre al xatter del contacte, després d'un `write`.
`mail.thread.write()` no crea el `mail.message` de seguiment al moment:
el deixa encuat com a callback de precommit (és el que desencalla
`MailCommon.flush_tracking` del core). I un cop creat cal invalidar el
contacte, perquè `message_ids` ja s'havia llegit i el one2many es queda
amb el valor antic a la memòria cau.
"""
self._flush_tracking(self.env)
self.partner.invalidate_recordset()
return self.partner.message_ids.tracking_value_ids.mapped("field_id.name")
def test_organismo_default(self):
"""Un contacte nou porta el codi del CCPAE per defecte."""
self.assertEqual(self.partner.ccpae_organismo, DEFAULT_CCPAE_ORGANISMO)
self.assertFalse(self.partner.ccpae_operador)
def test_campos_con_seguimiento(self):
"""Escriure als camps CCPAE deixa rastre al xatter."""
self.partner.write({"ccpae_operador": "CT-12345"})
self.assertIn(
"ccpae_operador",
self._tracked_fields(),
"El canvi de ccpae_operador ha de quedar registrat al xatter",
)
self.partner.write({"ccpae_organismo": "ES-ECO-020-CT"})
self.assertIn("ccpae_organismo", self._tracked_fields())
def test_vista_heredada_valida(self):
"""La vista heretada s'ancora bé al formulari de `base` de la 18.0."""
view = self.env.ref("l10n_es_partner_ccpae.res_partner_view_form_ccpae")
arch = self.env["res.partner"].get_view(view.id, "form")["arch"]
self.assertIn("ccpae_operador", arch)
self.assertIn("ccpae_organismo", arch)

View file

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8" ?>
<!--
Copyright 2026 Ecocentral, Criptomart
License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
-->
<odoo>
<record id="res_partner_view_form_ccpae" model="ir.ui.view">
<field name="name">res.partner.form.ccpae</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form" />
<field name="arch" type="xml">
<xpath expr="//page[@name='sales_purchases']" position="after">
<page name="ccpae" string="CCPAE" invisible="not is_company">
<group name="ccpae_group">
<field name="ccpae_operador" />
<field name="ccpae_organismo" />
</group>
</page>
</xpath>
</field>
</record>
</odoo>

1
ocb

@ -1 +0,0 @@
Subproject commit 6fb141fc7547f9de55c9ac702515f1e3a27406d0

View file

@ -0,0 +1,97 @@
===========================
Point of Sale - Full Refund
===========================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:cc92aeed4d5986a6c3a0e7860d32d67c2aceec105975c3a9ffca2caab7ae128f
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png
:target: https://odoo-community.org/page/development-status
:alt: Alpha
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github
:target: https://github.com/OCA/pos/tree/18.0/pos_full_refund
:alt: OCA/pos
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/pos-18-0/pos-18-0-pos_full_refund
: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/pos&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module adds a **Do Full Refund** button to the ticket screen of the
Point of Sale. It marks every line of the selected order for refund with
its full remaining quantity — that is, the ordered quantity minus whatever
has already been refunded — and then runs the standard refund flow, so the
cashier does not have to set the quantity line by line.
.. IMPORTANT::
This is an alpha version, the data model and design can change at any time without warning.
Only for development or testing purpose, do not use in production.
`More details on development status <https://odoo-community.org/page/development-status>`_
**Table of contents**
.. contents::
:local:
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/pos/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/pos/issues/new?body=module:%20pos_full_refund%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
-------
* Innovyou
Contributors
------------
- [Innovyou] (https://www.innovyou.it):
- Lorenzo Carta
- Lorenzo Battistini
- Valerio Paretta
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
.. |maintainer-LorenzoC0| image:: https://github.com/LorenzoC0.png?size=40px
:target: https://github.com/LorenzoC0
:alt: LorenzoC0
Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:
|maintainer-LorenzoC0|
This module is part of the `OCA/pos <https://github.com/OCA/pos/tree/18.0/pos_full_refund>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View file

@ -1,4 +1 @@
# Copyright 2016 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from . import test_sale

View file

@ -0,0 +1,21 @@
{
"name": "Point of Sale - Full Refund",
"summary": "Refund every line of a ticket in one click",
"author": "Innovyou, Odoo Community Association (OCA)",
"website": "https://github.com/OCA/pos",
"development_status": "Alpha",
"category": "Point of sale",
"maintainers": ["LorenzoC0"],
"version": "18.0.1.0.0",
"license": "AGPL-3",
"depends": ["point_of_sale"],
"assets": {
"point_of_sale._assets_pos": [
"pos_full_refund/static/src/js/pos_full_refund.esm.js",
"pos_full_refund/static/src/xml/pos_full_refund.xml",
],
"web.assets_tests": [
"pos_full_refund/static/tests/tours/pos_full_refund_tour.esm.js",
],
},
}

View file

@ -0,0 +1,6 @@
- [Innovyou] (https://www.innovyou.it):
- Lorenzo Carta
- Lorenzo Battistini
- Valerio Paretta
- [Criptomart](https://criptomart.net):
- Migration to 18.0

View file

@ -0,0 +1,5 @@
This module adds a **Do Full Refund** button to the ticket screen of the Point
of Sale. It marks every line of the selected order for refund with its full
remaining quantity — that is, the ordered quantity minus whatever has already
been refunded — and then runs the standard refund flow, so the cashier does not
have to set the quantity line by line.

View file

@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>Product Get Price Helper</title>
<title>Point of Sale - Full Refund</title>
<style type="text/css">
/*
@ -360,27 +360,27 @@ ul.auto-toc {
</style>
</head>
<body>
<div class="document" id="product-get-price-helper">
<h1 class="title">Product Get Price Helper</h1>
<div class="document" id="point-of-sale">
<h1 class="title">Point of Sale - Full Refund</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:5fb33150c2c1ee21fd7bc337113f150dccba97ee06c9dfd5a01d2f17ce567509
!! source digest: sha256:cc92aeed4d5986a6c3a0e7860d32d67c2aceec105975c3a9ffca2caab7ae128f
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/product-attribute/tree/18.0/product_get_price_helper"><img alt="OCA/product-attribute" src="https://img.shields.io/badge/github-OCA%2Fproduct--attribute-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/product-attribute-18-0/product-attribute-18-0-product_get_price_helper"><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/product-attribute&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>Adds a helper function _get_price() on product.product to compute the
product price based on pricelist, fiscal position, company and date.</p>
<p>The method returns a dict such as:</p>
<pre class="code python literal-block">
<span class="p">{</span><span class="w">
</span> <span class="s2">&quot;value&quot;</span><span class="p">:</span> <span class="mf">600.0</span><span class="p">,</span><span class="w">
</span> <span class="s2">&quot;tax_included&quot;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span><span class="w">
</span> <span class="s2">&quot;discount&quot;</span><span class="p">:</span> <span class="mf">20.0</span><span class="p">,</span><span class="w">
</span> <span class="s2">&quot;original_value&quot;</span><span class="p">:</span> <span class="mf">750.0</span><span class="p">,</span><span class="w">
</span><span class="p">}</span>
</pre>
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Alpha" src="https://img.shields.io/badge/maturity-Alpha-red.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/licence-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/pos/tree/18.0/pos_full_refund"><img alt="OCA/pos" src="https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/pos-18-0/pos-18-0-pos_full_refund"><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/pos&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 adds a <strong>Do Full Refund</strong> button to the ticket screen of the
Point of Sale. It marks every line of the selected order for refund with
its full remaining quantity — that is, the ordered quantity minus whatever
has already been refunded — and then runs the standard refund flow, so the
cashier does not have to set the quantity line by line.</p>
<div class="admonition important">
<p class="first admonition-title">Important</p>
<p class="last">This is an alpha version, the data model and design can change at any time without warning.
Only for development or testing purpose, do not use in production.
<a class="reference external" href="https://odoo-community.org/page/development-status">More details on development status</a></p>
</div>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
@ -395,10 +395,10 @@ product price based on pricelist, fiscal position, company and date.</p>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-1">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/product-attribute/issues">GitHub Issues</a>.
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/pos/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/product-attribute/issues/new?body=module:%20product_get_price_helper%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/pos/issues/new?body=module:%20pos_full_refund%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">
@ -406,15 +406,18 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-3">Authors</a></h2>
<ul class="simple">
<li>ACSONE SA/NV</li>
<li>Innovyou</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-4">Contributors</a></h2>
<ul class="simple">
<li>Sébastien BEAU &lt;<a class="reference external" href="mailto:sebastien.beau&#64;akretion.com">sebastien.beau&#64;akretion.com</a>&gt;</li>
<li>Simone Orsi &lt;<a class="reference external" href="mailto:simahawk&#64;gmail.com">simahawk&#64;gmail.com</a>&gt;</li>
<li>Quentin Groulard &lt;<a class="reference external" href="mailto:quentin.groulard&#64;acsone.eu">quentin.groulard&#64;acsone.eu</a>&gt;</li>
<li>[Innovyou] (<a class="reference external" href="https://www.innovyou.it">https://www.innovyou.it</a>):<ul>
<li>Lorenzo Carta</li>
<li>Lorenzo Battistini</li>
<li>Valerio Paretta</li>
</ul>
</li>
</ul>
</div>
<div class="section" id="maintainers">
@ -426,7 +429,9 @@ If you spotted it first, help us to smash it by providing a detailed and welcome
<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/product-attribute/tree/18.0/product_get_price_helper">OCA/product-attribute</a> project on GitHub.</p>
<p>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/LorenzoC0"><img alt="LorenzoC0" src="https://github.com/LorenzoC0.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/pos/tree/18.0/pos_full_refund">OCA/pos</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>

View file

@ -0,0 +1,34 @@
import { TicketScreen } from "@point_of_sale/app/screens/ticket_screen/ticket_screen";
import { patch } from "@web/core/utils/patch";
patch(TicketScreen.prototype, {
/**
* Mark every refundable line of the selected order for a full refund and
* trigger the standard refund flow.
*
* `onDoRefund` is what the "Refund" action of the ticket screen calls: it
* builds the negative lines, links the combo children, carries over the
* fiscal position and the partner, and switches to the destination order.
*/
async onDoFullRefund() {
const order = this.getSelectedOrder();
if (!order) {
return;
}
for (const line of order.lines) {
const toRefundDetails = line
.getAllLinesInCombo()
.map((comboLine) => this.getToRefundDetail(comboLine));
for (const toRefundDetail of toRefundDetails) {
// Per line, and net of what was already refunded: the same
// guard the core applies in `_onUpdateSelectedOrderline`.
const refundableQty =
toRefundDetail.line.qty - toRefundDetail.line.refunded_qty;
if (refundableQty > 0) {
toRefundDetail.qty = refundableQty;
}
}
}
await this.onDoRefund();
},
});

View file

@ -0,0 +1,21 @@
<?xml version="1.0" encoding="UTF-8" ?>
<templates id="template" xml:space="preserve">
<t
t-name="pos_full_refund.TicketScreen"
t-inherit="point_of_sale.TicketScreen"
t-inherit-mode="extension"
>
<xpath expr="//InvoiceButton" position="before">
<button
id="set_full_refund_button"
class="control-button btn btn-light btn-lg lh-lg flex-grow-1 flex-shrink-1"
t-on-click="() => this.onDoFullRefund()"
>
<i class="fa fa-cart-arrow-down me-1" />
Do Full Refund
</button>
</xpath>
</t>
</templates>

View file

@ -0,0 +1,40 @@
import * as Chrome from "@point_of_sale/../tests/tours/utils/chrome_util";
import * as Dialog from "@point_of_sale/../tests/tours/utils/dialog_util";
import * as Order from "@point_of_sale/../tests/tours/utils/generic_components/order_widget_util";
import * as PaymentScreen from "@point_of_sale/../tests/tours/utils/payment_screen_util";
import * as ProductScreen from "@point_of_sale/../tests/tours/utils/product_screen_util";
import * as ReceiptScreen from "@point_of_sale/../tests/tours/utils/receipt_screen_util";
import * as TicketScreen from "@point_of_sale/../tests/tours/utils/ticket_screen_util";
import { inLeftSide } from "@point_of_sale/../tests/tours/utils/common";
import { registry } from "@web/core/registry";
/**
* Sell two lines, pay, then refund the whole ticket with a single click on the
* button this module adds. The destination order must end up with every line
* negated at its full quantity, without touching the numpad.
*/
registry.category("web_tour.tours").add("pos_full_refund_tour", {
steps: () =>
[
Chrome.startPoS(),
Dialog.confirm("Open Register"),
ProductScreen.addOrderline("Desk Pad", "2", "3"),
ProductScreen.addOrderline("Letter Tray", "3", "2"),
ProductScreen.clickPayButton(),
PaymentScreen.clickPaymentMethod("Bank"),
PaymentScreen.clickValidate(),
ReceiptScreen.isShown(),
ReceiptScreen.clickNextOrder(),
ProductScreen.clickRefund(),
TicketScreen.selectOrder("-0001"),
TicketScreen.clickControlButton("Do Full Refund"),
{ ...ProductScreen.back(), isActive: ["mobile"] },
ProductScreen.isShown(),
inLeftSide([
...Order.hasLine("Desk Pad", "-2"),
...Order.hasLine("Letter Tray", "-3"),
]),
].flat(),
});

View file

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

View file

@ -0,0 +1,20 @@
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo.tests import tagged
from odoo.addons.point_of_sale.tests.test_frontend import TestPointOfSaleHttpCommon
@tagged("post_install", "-at_install")
class TestPosFullRefund(TestPointOfSaleHttpCommon):
"""Browser run of the "Do Full Refund" button.
The whole module is client side, so nothing short of a tour proves the
button works: a broken handler installs cleanly and just does nothing.
Needs a browser the dev image ships one and exposes it through
CHROME_BIN (see dev/README.md).
"""
def test_full_refund_tour(self):
self.main_pos_config.with_user(self.pos_user).open_ui()
self.start_pos_tour("pos_full_refund_tour")

View file

@ -0,0 +1,88 @@
======================
Point of Sale Re-order
======================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:4b4023ec8132da5e584b16a1c41656c5d4b8b3074ee7762ddb79902bd30b595c
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-LGPL--3-blue.png
:target: http://www.gnu.org/licenses/lgpl-3.0-standalone.html
:alt: License: LGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fpos-lightgray.png?logo=github
:target: https://github.com/OCA/pos/tree/18.0/pos_order_reorder
:alt: OCA/pos
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/pos-18-0/pos-18-0-pos_order_reorder
: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/pos&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
| This module allows you to re-order a paid order on a new order:
| |image|
.. |image| image:: https://raw.githubusercontent.com/OCA/pos/18.0/pos_order_reorder/static/img/reorder_button.png
**Table of contents**
.. contents::
:local:
Configuration
=============
Select PoS > Configuration > Settings > enable flag "Allow Reorder"
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/pos/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/pos/issues/new?body=module:%20pos_order_reorder%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
-------
* Cetmix
Contributors
------------
- Cetmix <https://cetmix.com/>
- Dinar Gabbasov
- `Heliconia Solutions Pvt. Ltd. <https://www.heliconia.io>`__
- Bhavesh Heliconia
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/pos <https://github.com/OCA/pos/tree/18.0/pos_order_reorder>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

Some files were not shown because too many files have changed in this diff Show more