Skip to Content

Contributors

usage bank-payment

Hi,

Having an invoice
with payment mode/method "[sepa_direct_debit] SEPA Direct Debit for customers (inbound)" 

with payment condition to pay in 3 times:
1# mensualités de 30,00 € le 14/02/2025
2# mensualités de 30,00 € le 15/02/2025
3# mensualités de 40,00 € le 16/02/2025

How may I automatically add the due amount to a mandate? Based on the above example, I would like to have a payment with amount 30,00 added on Feb 14th mandate and another 30,00 on another mandate with date Feb 15 etc.

Maybe account_payment_order module can partially help. Any existing module could further help ?
Thank you.





 --
Yves Goldberg
--


by Yves Goldberg - 11:31 - 14 Feb 2025

Follow-Ups

  • Re: usage bank-payment
    Hi Daniel,
    That case works fine with account_payment_order. It seems Odoo's SDD doesn't support due date while payment_order use another banking standard that does. so when adding an invoice to the order, all installments are added with their respective due date and the bank handle it from there.
    The other option I was exploring was to manage the due date locally and only add the payment that are due to the Odoo vanilla SDD, but I think it is less efficient.
    Thanks

     --
    Yves Goldberg 
    --

    ----- Original message -----
    Subject: Re: usage bank-payment
    Date: Monday, June 23, 2025 13:51

    Hello Yves,

    I implemented this for a customer in v17.
    It would be nice having it as an OCA feature.

    Here is the code used to implement it:

    from odoo import _, models
    from odoo.exceptions import UserError
    class AccountPaymentRegister(models.TransientModel):
        _inherit = "account.payment.register"
        def _create_payments(self):
            # If there are multiple lines for the same move, we only use the first one
            # Example: 50% on Jun30 and 50% on Jul15,
            # the first payment should select the first 50% amount, and not the full amount
            # NOTE: only for SDD, should be extended to other payment methods? configurable?
            sdd_method = self.env.ref("account_sepa_direct_debit.payment_method_sdd")
            if self.payment_method_line_id.payment_method_id == sdd_method:
                original_method = self.payment_method_line_id
                # A SDD batch should be able to include multiple due dates
                # previous to the requested payment date
                dt = self.payment_date
                self.line_ids = self.line_ids.filtered(lambda x: x.date_maturity <= dt)
                if not self.line_ids:
                    raise UserError(_("No invoice matches the SDD payment date selected."))
                # For some reason, the payment method is reset at this point :-P
                self.payment_method_line_id = original_method
            return super()._create_payments()


    On 14/02/2025 10:32, Yves Goldberg wrote:
    Hi,

    Having an invoice
    with payment mode/method "[sepa_direct_debit] SEPA Direct Debit for customers (inbound)" 

    with payment condition to pay in 3 times:
    1# mensualités de 30,00 € le 14/02/2025
    2# mensualités de 30,00 € le 15/02/2025
    3# mensualités de 40,00 € le 16/02/2025

    How may I automatically add the due amount to a mandate? Based on the above example, I would like to have a payment with amount 30,00 added on Feb 14th mandate and another 30,00 on another mandate with date Feb 15 etc.

    Maybe account_payment_order module can partially help. Any existing module could further help ?

    Thank you.





     --
    Yves Goldberg
    --


    --
    DANIEL REIS
    MANAGING PARTNER

    >> Schedule time on my calendar.
    M: +351 919 991 307
    A: Avenida da República 3000, Estoril Office Center, 2649-517 Cascais

    [Logo OpenSourceIntegrators.com]

    _______________________________________________
    Post to: mailto:contributors@odoo-community.org



    by Yves Goldberg - 09:41 - 8 Jul 2025
  • Re: usage bank-payment
    Hello Yves,

    I implemented this for a customer in v17.
    It would be nice having it as an OCA feature.

    Here is the code used to implement it:

    from odoo import _, models
    from odoo.exceptions import UserError
    class AccountPaymentRegister(models.TransientModel):
        _inherit = "account.payment.register"
        def _create_payments(self):
            # If there are multiple lines for the same move, we only use the first one
            # Example: 50% on Jun30 and 50% on Jul15,
            # the first payment should select the first 50% amount, and not the full amount
            # NOTE: only for SDD, should be extended to other payment methods? configurable?
            sdd_method = self.env.ref("account_sepa_direct_debit.payment_method_sdd")
            if self.payment_method_line_id.payment_method_id == sdd_method:
                original_method = self.payment_method_line_id
                # A SDD batch should be able to include multiple due dates
                # previous to the requested payment date
                dt = self.payment_date
                self.line_ids = self.line_ids.filtered(lambda x: x.date_maturity <= dt)
                if not self.line_ids:
                    raise UserError(_("No invoice matches the SDD payment date selected."))
                # For some reason, the payment method is reset at this point :-P
                self.payment_method_line_id = original_method
            return super()._create_payments()


    On 14/02/2025 10:32, Yves Goldberg wrote:
    Hi,

    Having an invoice
    with payment mode/method "[sepa_direct_debit] SEPA Direct Debit for customers (inbound)" 

    with payment condition to pay in 3 times:
    1# mensualités de 30,00 € le 14/02/2025
    2# mensualités de 30,00 € le 15/02/2025
    3# mensualités de 40,00 € le 16/02/2025

    How may I automatically add the due amount to a mandate? Based on the above example, I would like to have a payment with amount 30,00 added on Feb 14th mandate and another 30,00 on another mandate with date Feb 15 etc.

    Maybe account_payment_order module can partially help. Any existing module could further help ?
    Thank you.





     --
    Yves Goldberg
    --


    --
    DANIEL REIS
    MANAGING PARTNER

    >> Schedule time on my calendar.
    M: +351 919 991 307
    E: dreis@OpenSourceIntegrators.com
    A: Avenida da República 3000, Estoril Office Center, 2649-517 Cascais

    [Logo OpenSourceIntegrators.com]


    by Daniel Reis - 12:50 - 23 Jun 2025