|
|
|
@ -2,7 +2,8 @@
|
|
|
|
|
# @author: Alexis de Lattre <alexis.delattre@akretion.com>
|
|
|
|
|
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
|
|
|
|
|
|
|
|
|
|
from odoo import fields, models
|
|
|
|
|
from odoo import _, api, fields, models
|
|
|
|
|
from odoo.exceptions import ValidationError
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class AccountJournal(models.Model):
|
|
|
|
@ -16,8 +17,65 @@ class AccountJournal(models.Model):
|
|
|
|
|
domain="[('reconcile', '=', True), ('deprecated', '=', False), "
|
|
|
|
|
"('company_id', '=', company_id), "
|
|
|
|
|
"('id', 'not in', (default_account_id, suspense_account_id, "
|
|
|
|
|
"payment_credit_account_id, payment_debit_account_id))]",
|
|
|
|
|
"payment_credit_account_id, payment_debit_account_id, "
|
|
|
|
|
"donation_debit_order_account_id))]",
|
|
|
|
|
string="Donation by Credit Transfer Account",
|
|
|
|
|
help="Transfer account for donations received by credit transfer. "
|
|
|
|
|
"Leave empty if you don't receive donations on this bank account.",
|
|
|
|
|
)
|
|
|
|
|
donation_debit_order_account_id = fields.Many2one(
|
|
|
|
|
"account.account",
|
|
|
|
|
check_company=True,
|
|
|
|
|
copy=False,
|
|
|
|
|
ondelete="restrict",
|
|
|
|
|
domain="[('reconcile', '=', True), ('deprecated', '=', False), "
|
|
|
|
|
"('company_id', '=', company_id), "
|
|
|
|
|
"('user_type_id.type', '=', 'receivable'), "
|
|
|
|
|
"('id', 'not in', (default_account_id, suspense_account_id, "
|
|
|
|
|
"payment_credit_account_id, payment_debit_account_id, donation_account_id))]",
|
|
|
|
|
string="Donation by Debit Order Account",
|
|
|
|
|
help="Transfer account for donations by debit order. "
|
|
|
|
|
"Leave empty if you don't handle donations by debit order on this bank account."
|
|
|
|
|
"This account must be a receivable account, otherwise the debit order will not work.",
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
@api.constrains("donation_account_id", "donation_debit_order_account_id")
|
|
|
|
|
def _check_donation_accounts(self):
|
|
|
|
|
for journal in self:
|
|
|
|
|
if (
|
|
|
|
|
journal.donation_account_id
|
|
|
|
|
and not journal.donation_account_id.reconcile
|
|
|
|
|
):
|
|
|
|
|
raise ValidationError(
|
|
|
|
|
_(
|
|
|
|
|
"The Donation by Credit Transfer Account of journal "
|
|
|
|
|
"'%(journal)s' must be reconciliable, but the account "
|
|
|
|
|
"'%(account)s' is not reconciliable.",
|
|
|
|
|
journal=journal.display_name,
|
|
|
|
|
account=journal.donation_account_id.display_name,
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
ddo_account = journal.donation_debit_order_account_id
|
|
|
|
|
if ddo_account:
|
|
|
|
|
if not ddo_account.reconcile:
|
|
|
|
|
raise ValidationError(
|
|
|
|
|
_(
|
|
|
|
|
"The Donation by Debit Order Account of journal "
|
|
|
|
|
"'%(journal)s' must be reconciliable, but the account "
|
|
|
|
|
"'%(account)s' is not reconciliable.",
|
|
|
|
|
journal=journal.display_name,
|
|
|
|
|
account=ddo_account.display_name,
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|
if ddo_account.user_type_id.type != "receivable":
|
|
|
|
|
raise ValidationError(
|
|
|
|
|
_(
|
|
|
|
|
"The Donation by Debit Order Account of journal "
|
|
|
|
|
"'%(journal)s' must be a receivable account, "
|
|
|
|
|
"but the account '%(account)s' is configured with "
|
|
|
|
|
"type '%(account_type)s'.",
|
|
|
|
|
journal=journal.display_name,
|
|
|
|
|
account=ddo_account.display_name,
|
|
|
|
|
account_type=ddo_account.user_type_id.display_name,
|
|
|
|
|
)
|
|
|
|
|
)
|
|
|
|
|