Merge PR #1116 into 17.0

Signed-off-by pedrobaeza
This commit is contained in:
OCA-git-bot
2024-09-03 05:53:37 +00:00
42 changed files with 1708 additions and 0 deletions

View File

@@ -0,0 +1,108 @@
=====================
Contract Payment Mode
=====================
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:b51a974c42fe8199d1e370c2a05147ca1e3081a17afae5d375755c0fd95f7a74
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |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-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%2Fcontract-lightgray.png?logo=github
:target: https://github.com/OCA/contract/tree/17.0/contract_payment_mode
:alt: OCA/contract
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/contract-17-0/contract-17-0-contract_payment_mode
: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/contract&target_branch=17.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to set a payment mode on contract for creating the
invoices with this payment mode.
**Table of contents**
.. contents::
:local:
Configuration
=============
Your user should be a Sales Manager or Accountant.
Usage
=====
1. Go to *Invoicing > Customers > Customer Contracts*.
2. Create one.
3. Select a partner to which invoice.
4. If the partner has a payment mode, this payment mode is selected
here.
5. If not, or if you want another payment mode, you can change it in the
corresponding field.
6. Add a product to invoice.
7. If you create an invoice, new invoice will have the selected payment
mode.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/contract/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/contract/issues/new?body=module:%20contract_payment_mode%0Aversion:%2017.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
-------
* Domatix
* Tecnativa
Contributors
------------
- Ángel Moya <angel.moya@domatix.com>
- Antonio Espinosa <antonioea@antiun.com>
- Vicent Cubells <vicent.cubells@tecnativa.com>
- David Vidal <david.vidal@tecnativa.com>
- Carlos Dauden <carlos.dauden@tecnativa.com>
- Guillermo Llinares <guillermo@studio73.es>
- Amamr Officewala <aofficewala@opensourceintegrators.com>
- Carolina Fernandez <carolina.fernandez@tecnativa.com>
- David Jaen david.jaen.revert@gmail.com
- Alberto Martínez <alberto.martinez@sygel.es>
- Harald Panten <harald.panten@sygel.es>
- Valentin Vinagre <valentin.vinagre@sygel.es>
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/contract <https://github.com/OCA/contract/tree/17.0/contract_payment_mode>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

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

View File

@@ -0,0 +1,23 @@
# Copyright 2015 Domatix (<www.domatix.com>)
# Copyright 2016 Antiun Ingenieria S.L. - Antonio Espinosa
# Copyright 2017 Tecnativa - David Vidal
# Copyright 2017 Tecnativa - Carlos Dauden <carlos.dauden@tecnativa.com>
# Copyright 2017-2018 Tecnativa - Vicent Cubells <vicent.cubells@tecnativa.com>
# Copyright (C) 2021 Open Source Integrators
# Copyright 2023 Tecnativa - Carolina Fernandez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
"name": "Contract Payment Mode",
"summary": "Payment mode in contracts and their invoices",
"version": "17.0.1.0.0",
"author": "Domatix, " "Tecnativa, " "Odoo Community Association (OCA)",
"website": "https://github.com/OCA/contract",
"depends": ["contract", "account_payment_partner"],
"category": "Sales Management",
"license": "AGPL-3",
"data": ["views/contract_view.xml"],
"post_init_hook": "post_init_hook",
"installable": True,
"auto_install": True,
}

View File

@@ -0,0 +1,19 @@
# Copyright 2016 Antiun Ingenieria S.L. - Antonio Espinosa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
import logging
_logger = logging.getLogger(__name__)
def post_init_hook(env):
"""Copy payment mode from partner to the new field at contract."""
m_contract = env["contract.contract"]
contracts = m_contract.search([("payment_mode_id", "=", False)])
if contracts:
_logger.info("Setting payment mode: %d contracts" % len(contracts))
for contract in contracts:
payment_mode = contract.partner_id.customer_payment_mode_id
if payment_mode:
contract.payment_mode_id = payment_mode.id
_logger.info("Setting payment mode: Done")

View File

@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2019-10-09 18:37+0000\n"
"Last-Translator: Albert Pons <a.pons@escaner.ad>\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 3.8\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Contracte"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Forma de pagament"
#~ msgid "Analytic Account"
#~ msgstr "Compte analític"

View File

@@ -0,0 +1,24 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 16.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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2019-10-29 21:33+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.8\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Vertrag"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Zahlweise"
#~ msgid "Analytic Account"
#~ msgstr "Kostenstelle"

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: contract (15.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2015-11-07 12:33+0000\n"
"Last-Translator: <>\n"
"Language-Team: Greek (Greece) (http://www.transifex.com/oca/OCA-contract-8-0/"
"language/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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Αναλυτικός Λογαριασμός"

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2023-10-10 22:58+0000\n"
"Last-Translator: Ivorra78 <informatica@totmaterial.es>\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 4.17\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Contrato"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Modo de pago"
#~ msgid "Analytic Account"
#~ msgstr "Cuenta analítica"

View File

@@ -0,0 +1,27 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"PO-Revision-Date: 2022-09-05 07:07+0000\n"
"Last-Translator: Ignacio Buioli <ibuioli@gmail.com>\n"
"Language-Team: none\n"
"Language: es_AR\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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Contrato"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Método de Pago"

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: contract (15.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2015-11-07 12:33+0000\n"
"Last-Translator: <>\n"
"Language-Team: Spanish (Mexico) (http://www.transifex.com/oca/OCA-"
"contract-8-0/language/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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Cuenta analítica"

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-04-01 02:46+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Maksutapa"
#~ msgid "Analytic Account"
#~ msgstr "Analyyttinen tili"

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-04-01 02:46+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Mode de paiement"
#~ msgid "Analytic Account"
#~ msgstr "Compte analytique"

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# César Castro Cruz <ulmroan@gmail.com>, 2017
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-04-01 02:46+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Modo de pagamento"
#~ msgid "Analytic Account"
#~ msgstr "Conta analítica"

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# Ashish Deshmukh <ashish.p.deshmukh@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-08-17 01:05+0000\n"
"Last-Translator: Ashish Deshmukh <ashish.p.deshmukh@gmail.com>, 2017\n"
"Language-Team: Hindi (India) (https://www.transifex.com/oca/teams/23907/"
"hi_IN/)\n"
"Language: hi_IN\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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "भुगतान का प्रकार"
#~ msgid "Analytic Account"
#~ msgstr "विश्लेषणात्मक खाता"

View File

@@ -0,0 +1,35 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Bole <bole@dajmi5.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2024-06-17 14:34+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.17\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Ugovor"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Način plaćanja"
#~ msgid "Analytic Account"
#~ msgstr "Analitički konto"

View File

@@ -0,0 +1,35 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Bole <bole@dajmi5.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-06-17 01:39+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Način plaćanja"
#~ msgid "Analytic Account"
#~ msgstr "Konto analitike"

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-04-01 02:46+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Analitikus gyűjtőkód könyvelés"

View File

@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# Nicola Malcontenti <nicola.malcontenti@gmail.com>, 2017
# Stefano <stefano.sforzi@agilebg.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2024-07-18 09:58+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Contratto"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Modo di pagamento"
#~ msgid "Analytic Account"
#~ msgstr "Conto Analitico"

View File

@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Erwin van der Ploeg <erwin@odooexperts.nl>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2024-04-02 16:36+0000\n"
"Last-Translator: Thijs van Oers <thijsvanoers@yahoo.com>\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"
"X-Generator: Weblate 4.17\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Contract"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Betaalmode"
#~ msgid "Analytic Account"
#~ msgstr "Kostenplaats"

View File

@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
# Pedro Castro Silva <pedrocs@sossia.pt>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2020-02-17 19:13+0000\n"
"Last-Translator: Pedro Castro Silva <pedrocs@exo.pt>\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"
"X-Generator: Weblate 3.10\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Contrato"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Modo de Pagamento"
#~ msgid "Analytic Account"
#~ msgstr "Conta Analítica"

View File

@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2019-10-10 20:36+0000\n"
"Last-Translator: Eder Brito <britoederr@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 3.8\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "Contrato"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Modo de pagamento"
#~ msgid "Analytic Account"
#~ msgstr "Conta Analítica"

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# Daniel Reis <dreis.pt@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-04-01 02:46+0000\n"
"Last-Translator: Daniel Reis <dreis.pt@gmail.com>, 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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Conta Analítica"

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-04-01 02:46+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Cont analitic"

View File

@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# nek, 2018
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2018-03-17 03:26+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Аналитический счет"

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: contract (15.0)\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2015-11-07 12:33+0000\n"
"Last-Translator: <>\n"
"Language-Team: Slovak (Slovakia) (http://www.transifex.com/oca/OCA-"
"contract-8-0/language/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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Analytický účet"

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-04-01 02:46+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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "Način plačila"
#~ msgid "Analytic Account"
#~ msgstr "Analitični konto"

View File

@@ -0,0 +1,32 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# Ediz Duman <neps1192@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-06-13 02:40+0000\n"
"Last-Translator: Ediz Duman <neps1192@gmail.com>, 2017\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"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Analitik Hesap"

View File

@@ -0,0 +1,33 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# Ediz Duman <neps1192@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2017-06-13 02:40+0000\n"
"Last-Translator: Ediz Duman <neps1192@gmail.com>, 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: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr ""
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr ""
#~ msgid "Analytic Account"
#~ msgstr "Analitik Hesap"

View File

@@ -0,0 +1,34 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * contract_payment_mode
#
# Translators:
# ITGeeker <alanljj@qq.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 15.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-29 10:30+0000\n"
"PO-Revision-Date: 2019-10-16 18:31+0000\n"
"Last-Translator: 黎伟杰 <674416404@qq.com>\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"
"X-Generator: Weblate 3.8\n"
#. module: contract_payment_mode
#: model:ir.model,name:contract_payment_mode.model_contract_contract
msgid "Contract"
msgstr "合同"
#. module: contract_payment_mode
#: model:ir.model.fields,field_description:contract_payment_mode.field_contract_contract__payment_mode_id
msgid "Payment Mode"
msgstr "支付方式"
#~ msgid "Analytic Account"
#~ msgstr "核算科目"

View File

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

View File

@@ -0,0 +1,32 @@
from odoo import api, fields, models
class ContractContract(models.Model):
_inherit = "contract.contract"
payment_mode_id = fields.Many2one(
comodel_name="account.payment.mode",
string="Payment Mode",
domain=[("payment_type", "=", "inbound")],
index=True,
compute="_compute_payment_mode_id",
store=True,
readonly=False,
)
@api.depends("partner_id", "contract_type")
def _compute_payment_mode_id(self):
for rec in self:
partner = rec.with_company(rec.company_id).partner_id
if rec.contract_type == "purchase":
rec.payment_mode_id = partner.supplier_payment_mode_id.id
else:
rec.payment_mode_id = partner.customer_payment_mode_id.id
def _prepare_invoice(self, date_invoice, journal=None):
invoice_vals = super()._prepare_invoice(
date_invoice=date_invoice, journal=journal
)
if self.payment_mode_id:
invoice_vals["payment_mode_id"] = self.payment_mode_id.id
return invoice_vals

View File

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

View File

@@ -0,0 +1 @@
Your user should be a Sales Manager or Accountant.

View File

@@ -0,0 +1,12 @@
- Ángel Moya \<<angel.moya@domatix.com>\>
- Antonio Espinosa \<<antonioea@antiun.com>\>
- Vicent Cubells \<<vicent.cubells@tecnativa.com>\>
- David Vidal \<<david.vidal@tecnativa.com>\>
- Carlos Dauden \<<carlos.dauden@tecnativa.com>\>
- Guillermo Llinares \<<guillermo@studio73.es>\>
- Amamr Officewala \<<aofficewala@opensourceintegrators.com>\>
- Carolina Fernandez \<<carolina.fernandez@tecnativa.com>\>
- David Jaen <david.jaen.revert@gmail.com>
- Alberto Martínez \<<alberto.martinez@sygel.es>\>
- Harald Panten \<<harald.panten@sygel.es>\>
- Valentin Vinagre \<<valentin.vinagre@sygel.es>\>

View File

@@ -0,0 +1,2 @@
This module allows to set a payment mode on contract for creating the
invoices with this payment mode.

View File

@@ -0,0 +1,10 @@
1. Go to *Invoicing \> Customers \> Customer Contracts*.
2. Create one.
3. Select a partner to which invoice.
4. If the partner has a payment mode, this payment mode is selected
here.
5. If not, or if you want another payment mode, you can change it in
the corresponding field.
6. Add a product to invoice.
7. If you create an invoice, new invoice will have the selected payment
mode.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,457 @@
<!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>Contract Payment Mode</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="contract-payment-mode">
<h1 class="title">Contract Payment Mode</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:b51a974c42fe8199d1e370c2a05147ca1e3081a17afae5d375755c0fd95f7a74
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/contract/tree/17.0/contract_payment_mode"><img alt="OCA/contract" src="https://img.shields.io/badge/github-OCA%2Fcontract-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/contract-17-0/contract-17-0-contract_payment_mode"><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/contract&amp;target_branch=17.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 set a payment mode on contract for creating the
invoices with this payment mode.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#usage" id="toc-entry-2">Usage</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-3">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-4">Credits</a><ul>
<li><a class="reference internal" href="#authors" id="toc-entry-5">Authors</a></li>
<li><a class="reference internal" href="#contributors" id="toc-entry-6">Contributors</a></li>
<li><a class="reference internal" href="#maintainers" id="toc-entry-7">Maintainers</a></li>
</ul>
</li>
</ul>
</div>
<div class="section" id="configuration">
<h1><a class="toc-backref" href="#toc-entry-1">Configuration</a></h1>
<p>Your user should be a Sales Manager or Accountant.</p>
</div>
<div class="section" id="usage">
<h1><a class="toc-backref" href="#toc-entry-2">Usage</a></h1>
<ol class="arabic simple">
<li>Go to <em>Invoicing &gt; Customers &gt; Customer Contracts</em>.</li>
<li>Create one.</li>
<li>Select a partner to which invoice.</li>
<li>If the partner has a payment mode, this payment mode is selected
here.</li>
<li>If not, or if you want another payment mode, you can change it in the
corresponding field.</li>
<li>Add a product to invoice.</li>
<li>If you create an invoice, new invoice will have the selected payment
mode.</li>
</ol>
</div>
<div class="section" id="bug-tracker">
<h1><a class="toc-backref" href="#toc-entry-3">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/contract/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/contract/issues/new?body=module:%20contract_payment_mode%0Aversion:%2017.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h1><a class="toc-backref" href="#toc-entry-4">Credits</a></h1>
<div class="section" id="authors">
<h2><a class="toc-backref" href="#toc-entry-5">Authors</a></h2>
<ul class="simple">
<li>Domatix</li>
<li>Tecnativa</li>
</ul>
</div>
<div class="section" id="contributors">
<h2><a class="toc-backref" href="#toc-entry-6">Contributors</a></h2>
<ul class="simple">
<li>Ángel Moya &lt;<a class="reference external" href="mailto:angel.moya&#64;domatix.com">angel.moya&#64;domatix.com</a>&gt;</li>
<li>Antonio Espinosa &lt;<a class="reference external" href="mailto:antonioea&#64;antiun.com">antonioea&#64;antiun.com</a>&gt;</li>
<li>Vicent Cubells &lt;<a class="reference external" href="mailto:vicent.cubells&#64;tecnativa.com">vicent.cubells&#64;tecnativa.com</a>&gt;</li>
<li>David Vidal &lt;<a class="reference external" href="mailto:david.vidal&#64;tecnativa.com">david.vidal&#64;tecnativa.com</a>&gt;</li>
<li>Carlos Dauden &lt;<a class="reference external" href="mailto:carlos.dauden&#64;tecnativa.com">carlos.dauden&#64;tecnativa.com</a>&gt;</li>
<li>Guillermo Llinares &lt;<a class="reference external" href="mailto:guillermo&#64;studio73.es">guillermo&#64;studio73.es</a>&gt;</li>
<li>Amamr Officewala &lt;<a class="reference external" href="mailto:aofficewala&#64;opensourceintegrators.com">aofficewala&#64;opensourceintegrators.com</a>&gt;</li>
<li>Carolina Fernandez &lt;<a class="reference external" href="mailto:carolina.fernandez&#64;tecnativa.com">carolina.fernandez&#64;tecnativa.com</a>&gt;</li>
<li>David Jaen <a class="reference external" href="mailto:david.jaen.revert&#64;gmail.com">david.jaen.revert&#64;gmail.com</a></li>
<li>Alberto Martínez &lt;<a class="reference external" href="mailto:alberto.martinez&#64;sygel.es">alberto.martinez&#64;sygel.es</a>&gt;</li>
<li>Harald Panten &lt;<a class="reference external" href="mailto:harald.panten&#64;sygel.es">harald.panten&#64;sygel.es</a>&gt;</li>
<li>Valentin Vinagre &lt;<a class="reference external" href="mailto:valentin.vinagre&#64;sygel.es">valentin.vinagre&#64;sygel.es</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-7">Maintainers</a></h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/contract/tree/17.0/contract_payment_mode">OCA/contract</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,4 @@
# Copyright 2016 Antiun Ingenieria S.L. - Antonio Espinosa
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from . import test_contract_payment

View File

@@ -0,0 +1,131 @@
# Copyright 2015 Antiun Ingenieria S.L. - Antonio Espinosa
# Copyright 2017 Tecnativa - Vicent Cubells
# Copyright 2017 Tecnativa - David Vidal
# Copyright 2023 Tecnativa - Carolina Fernandez
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from unittest.mock import patch
from odoo.tests import common, tagged
from odoo.addons.account.models.account_payment_method import AccountPaymentMethod
from ..hooks import post_init_hook
@tagged("post_install", "-at_install")
class TestContractPaymentInit(common.TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
Method_get_payment_method_information = (
AccountPaymentMethod._get_payment_method_information
)
def _get_payment_method_information(self):
res = Method_get_payment_method_information(self)
res["Test"] = {"mode": "multi", "domain": [("type", "=", "bank")]}
return res
with patch.object(
AccountPaymentMethod,
"_get_payment_method_information",
_get_payment_method_information,
):
cls.payment_method = cls.env["account.payment.method"].create(
{
"name": "Test Payment Method",
"code": "Test",
"payment_type": "inbound",
}
)
cls.payment_mode = cls.env["account.payment.mode"].create(
{
"name": "Test payment mode",
"active": True,
"payment_method_id": cls.payment_method.id,
"bank_account_link": "variable",
}
)
cls.partner = cls.env["res.partner"].create(
{
"name": "Test contract partner",
"customer_payment_mode_id": cls.payment_mode,
}
)
cls.product = cls.env["product.product"].create(
{
"name": "Custom Service",
"type": "service",
"uom_id": cls.env.ref("uom.product_uom_hour").id,
"uom_po_id": cls.env.ref("uom.product_uom_hour").id,
"sale_ok": True,
}
)
cls.contract = cls.env["contract.contract"].create(
{"name": "Maintenance of Servers", "partner_id": cls.partner.id}
)
company = cls.env.ref("base.main_company")
cls.journal = cls.env["account.journal"].create(
{
"name": "Sale Journal - Test",
"code": "HRTSJ",
"type": "sale",
"company_id": company.id,
}
)
def test_post_init_hook(self):
contract = self.env["contract.contract"].create(
{
"name": "Test contract",
"partner_id": self.partner.id,
"payment_mode_id": self.payment_mode.id,
}
)
self.assertEqual(contract.payment_mode_id, self.payment_mode)
contract.payment_mode_id = False
self.assertEqual(contract.payment_mode_id.id, False)
post_init_hook(self.env)
self.assertEqual(contract.payment_mode_id, self.payment_mode)
def test_contract_and_invoices(self):
self.contract.write({"partner_id": self.partner.id})
self.assertEqual(
self.contract.payment_mode_id,
self.contract.partner_id.customer_payment_mode_id,
)
self.contract.write(
{
"line_recurrence": True,
"contract_type": "sale",
"recurring_interval": 1,
"recurring_rule_type": "monthly",
"date_start": "2018-01-15",
"contract_line_ids": [
(
0,
0,
{
"product_id": self.product.id,
"name": "Database Administration 25",
"quantity": 2.0,
"uom_id": self.product.uom_id.id,
"price_unit": 200.0,
},
)
],
}
)
self.contract.recurring_create_invoice()
new_invoice = self.contract._get_related_invoices()
self.assertTrue(new_invoice)
self.assertEqual(new_invoice.partner_id, self.contract.partner_id)
self.assertEqual(new_invoice.payment_mode_id, self.contract.payment_mode_id)
self.assertEqual(len(new_invoice.ids), 1)
self.contract.recurring_create_invoice()
self.assertEqual(self.contract.payment_mode_id, new_invoice.payment_mode_id)

View File

@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<!--FORM view-->
<record id="contract_contract_form_view" model="ir.ui.view">
<field name="name">contract.contract form view (in contract_payment_mode)
</field>
<field name="model">contract.contract</field>
<field name="inherit_id" ref="contract.contract_contract_form_view" />
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="payment_mode_id" />
</field>
</field>
</record>
<!--TREE view-->
<record id="contract_contract_tree_view" model="ir.ui.view">
<field name="name">contract.contract tree view (in contract_payment_mode)
</field>
<field name="model">contract.contract</field>
<field name="inherit_id" ref="contract.contract_contract_tree_view" />
<field name="arch" type="xml">
<field name="partner_id" position="after">
<field name="payment_mode_id" />
</field>
</field>
</record>
<!--FORM view-->
<record id="contract_contract_search_view" model="ir.ui.view">
<field name="name">contract.contract search view (in contract_payment_mode)
</field>
<field name="model">contract.contract</field>
<field name="inherit_id" ref="contract.contract_contract_search_view" />
<field name="arch" type="xml">
<field name="name" position="after">
<field name="payment_mode_id" />
</field>
</field>
</record>
<!--Supplier FORM view-->
<record id="contract_contract_supplier_form_view" model="ir.ui.view">
<field
name="name"
>contract.contract supplier form view (in contract_payment_mode)
</field>
<field name="model">contract.contract</field>
<field name="priority">18</field>
<field name="inherit_id" ref="contract.contract_contract_supplier_form_view" />
<field name="arch" type="xml">
<field name="payment_mode_id" position="attributes">
<attribute name="domain">[('payment_type', '=', 'outbound')]</attribute>
</field>
</field>
</record>
</odoo>