Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
100 changes: 100 additions & 0 deletions account_payment_term_partner_paydays/README.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
===================================
Payment Term - Partner Payment Days
===================================

..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:117c24bfceb4532d84c40254649a45acdc39bd64dd8684feadd25f86fe8d5781
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

.. |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%2Faccount--payment-lightgray.png?logo=github
:target: https://github.com/OCA/account-payment/tree/18.0/account_payment_term_partner_paydays
:alt: OCA/account-payment
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/account-payment-18-0/account-payment-18-0-account_payment_term_partner_paydays
: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-payment&target_branch=18.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|

This module allows to define payment days for partners. These payment
days are later taken into account to compute the due date of an invoice.

The partner payment days will overwrite any payment day configured in
the payment term lines.

**Table of contents**

.. contents::
:local:

Usage
=====

Go to **Invoicing > Customers > Customers** and edit any customer by
setting its payment days.

Go to **Invoicing > Customers > Invoices** and create a new invoice.

Select any payment term and set a date in the invoice.

You must see the due date based on this payment term, taking into
account the partner payment days.

**Example:**

Payment term of 60 days. Partner payment days 1, 15.

If the invoice date is the 5th of may, the due date will be the 15th of
july.

Bug Tracker
===========

Bugs are tracked on `GitHub Issues <https://github.com/OCA/account-payment/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-payment/issues/new?body=module:%20account_payment_term_partner_paydays%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
-------

* ForgeFlow

Contributors
------------

- Marina Alapont <[email protected]>

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-payment <https://github.com/OCA/account-payment/tree/18.0/account_payment_term_partner_paydays>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
1 change: 1 addition & 0 deletions account_payment_term_partner_paydays/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import models
18 changes: 18 additions & 0 deletions account_payment_term_partner_paydays/__manifest__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

{
"name": "Payment Term - Partner Payment Days",
"version": "18.0.1.0.0",
"category": "Accounting & Finance",
"summary": "Allows to define payment days for partners.",
"author": "ForgeFlow, Odoo Community Association (OCA)",
"maintainer": "OCA",
"website": "https://github.com/OCA/account-payment",
"license": "AGPL-3",
"depends": ["account_payment_term_extension"],
"data": [
"views/res_partner_views.xml",
],
"installable": True,
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_payment_term_partner_paydays
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-04 09:32+0000\n"
"PO-Revision-Date: 2025-11-04 09:32+0000\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_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_res_partner
msgid "Contact"
msgstr ""

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_partner__customer_payment_days
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_users__customer_payment_days
msgid "Customer Payment day(s)"
msgstr ""

#. module: account_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_account_move
msgid "Journal Entry"
msgstr ""

#. module: account_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_account_payment_term
msgid "Payment Terms"
msgstr ""

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_partner__customer_payment_days
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_users__customer_payment_days
msgid ""
"The day or days when the partner does the payments. To be used for computing"
" the invoices due date. Separate each payment day with dashes (-), commas "
"(,) or spaces ( )."
msgstr ""

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_partner__supplier_payment_days
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_users__supplier_payment_days
msgid ""
"The day or days when you do the payments to this partner. To be used for "
"computing the bill due date. Separate each payment day with dashes (-), "
"commas (,) or spaces ( )."
msgstr ""

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_partner__supplier_payment_days
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_users__supplier_payment_days
msgid "Vendor Payment day(s)"
msgstr ""
67 changes: 67 additions & 0 deletions account_payment_term_partner_paydays/i18n/ca_ES.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_payment_term_partner_paydays
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-04 09:35+0000\n"
"PO-Revision-Date: 2025-11-04 09:35+0000\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_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_res_partner
msgid "Contact"
msgstr "Contacte"

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_partner__customer_payment_days
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_users__customer_payment_days
msgid "Customer Payment day(s)"
msgstr "Dies de pagament de client"

#. module: account_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_account_move
msgid "Journal Entry"
msgstr "Assentament comptable"

#. module: account_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_account_payment_term
msgid "Payment Terms"
msgstr "Terminis de pagament"

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_partner__customer_payment_days
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_users__customer_payment_days
msgid ""
"The day or days when the partner does the payments. To be used for computing"
" the invoices due date. Separate each payment day with dashes (-), commas "
"(,) or spaces ( )."
msgstr ""
"El dia o dies en què el client fa els pagaments. S’utilitza per calcular la "
"data de venciment de les factures. Separa cada dia de pagament amb guions "
"(-), comes (,) o espais ( )."

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_partner__supplier_payment_days
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_users__supplier_payment_days
msgid ""
"The day or days when you do the payments to this partner. To be used for "
"computing the bill due date. Separate each payment day with dashes (-), "
"commas (,) or spaces ( )."
msgstr ""
"El dia o dies en què fas els pagaments a aquest proveïdor. S’utilitza per "
"calcular la data de venciment de les factures. Separa cada dia de pagament "
"amb guions (-comes (,) o espais ( )."

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_partner__supplier_payment_days
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_users__supplier_payment_days
msgid "Vendor Payment day(s)"
msgstr "Dies de pagament de proveïdor"
67 changes: 67 additions & 0 deletions account_payment_term_partner_paydays/i18n/es.po
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * account_payment_term_partner_paydays
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2025-11-04 09:33+0000\n"
"PO-Revision-Date: 2025-11-04 09:33+0000\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_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_res_partner
msgid "Contact"
msgstr "Contacto"

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_partner__customer_payment_days
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_users__customer_payment_days
msgid "Customer Payment day(s)"
msgstr "Día(s) de pago de cliente"

#. module: account_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_account_move
msgid "Journal Entry"
msgstr "Asiento contable"

#. module: account_payment_term_partner_paydays
#: model:ir.model,name:account_payment_term_partner_paydays.model_account_payment_term
msgid "Payment Terms"
msgstr "Condiciones de pago"

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_partner__customer_payment_days
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_users__customer_payment_days
msgid ""
"The day or days when the partner does the payments. To be used for computing"
" the invoices due date. Separate each payment day with dashes (-), commas "
"(,) or spaces ( )."
msgstr ""
"El día o los dias en que el cliente realiza los pagos. Se utiliza para "
"calcular la fecha de vencimiento de las facturas. Separa cada dia de pago "
"con guiones (-), comas (,) o espacios ( )."

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_partner__supplier_payment_days
#: model:ir.model.fields,help:account_payment_term_partner_paydays.field_res_users__supplier_payment_days
msgid ""
"The day or days when you do the payments to this partner. To be used for "
"computing the bill due date. Separate each payment day with dashes (-), "
"commas (,) or spaces ( )."
msgstr ""
"El día o los dias en que realizas los pagos a este proveedor. Se utiliza "
"para calcular la fecha de vencimiento de las facturas. Separa cada dia de "
"pago con guiones (-), comas (,) o espacios ( )."

#. module: account_payment_term_partner_paydays
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_partner__supplier_payment_days
#: model:ir.model.fields,field_description:account_payment_term_partner_paydays.field_res_users__supplier_payment_days
msgid "Vendor Payment day(s)"
msgstr "Día(s) de pago de proveedor"
3 changes: 3 additions & 0 deletions account_payment_term_partner_paydays/models/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
from . import account_payment_term
from . import account_move
from . import res_partner
28 changes: 28 additions & 0 deletions account_payment_term_partner_paydays/models/account_move.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import api, models


class AccountMove(models.Model):
_inherit = "account.move"

@api.depends(
"invoice_payment_term_id",
"invoice_date",
"currency_id",
"amount_total_in_currency_signed",
"invoice_date_due",
"partner_id",
)
def _compute_needed_terms(self):
"""Add the invoice type and the partner to the context to later use it in
the payment terms compute"""
for move in self:
ctx = self.env.context.copy()
if move.partner_id and move.is_invoice(True):
ctx.update(
{"partner_id": move.partner_id.id, "invoice_type": move.move_type}
)
super(AccountMove, move.with_context(**ctx))._compute_needed_terms()
return True
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Copyright 2025 ForgeFlow S.L. (https://www.forgeflow.com)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).


from odoo import models


class AccountPaymentTerm(models.Model):
_inherit = "account.payment.term"

def apply_payment_days(self, line, date):
"""Calculate the new date taking into account the partner payment days"""
partner_id = self.env.context.get("partner_id")
if partner_id:
partner = self.env["res.partner"].browse(partner_id)
payment_days = partner._get_payment_days()
if payment_days:
decoded_payment_days = line._decode_payment_days(payment_days)
return self._get_payment_days_due_date(date, decoded_payment_days)
return super().apply_payment_days(line, date)
Loading
Loading