Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[14.0] fix payment mode filter and selection #123

Merged
merged 5 commits into from
Feb 27, 2024
Merged
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
1 change: 1 addition & 0 deletions donation/models/account_bank_statement.py
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ def create_donations(self):
("company_id", "=", self.company_id.id),
("payment_type", "=", "inbound"),
("fixed_journal_id", "=", self.journal_id.id),
("payment_method_code", "in", ("manual", "sepa_credit_transfer")),
],
limit=1,
)
Expand Down
2 changes: 1 addition & 1 deletion donation/report/donation_report_view.xml
Original file line number Diff line number Diff line change
Expand Up @@ -96,7 +96,7 @@
<field name="name">donation.report.tree</field>
<field name="model">donation.report</field>
<field name="arch" type="xml">
<tree string="Donations">
<tree>
<field name="partner_id" />
<field name="donation_date" />
<field name="country_id" />
Expand Down
4 changes: 2 additions & 2 deletions donation/views/donation.xml
Original file line number Diff line number Diff line change
Expand Up @@ -147,7 +147,7 @@
<field name="name">donation.tree</field>
<field name="model">donation.donation</field>
<field name="arch" type="xml">
<tree string="Donation">
<tree>
<header>
<button
name="%(donation_validate_action)d"
Expand Down Expand Up @@ -301,7 +301,7 @@
<field name="name">donation.line.tree</field>
<field name="model">donation.line</field>
<field name="arch" type="xml">
<tree string="Donation Line" editable="bottom">
<tree editable="bottom">
<field name="sequence" widget="handle" />
<field
name="donation_id"
Expand Down
2 changes: 1 addition & 1 deletion donation/views/donation_campaign.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@
<field name="name">donation.campaign.tree</field>
<field name="model">donation.campaign</field>
<field name="arch" type="xml">
<tree string="Donation Campaigns">
<tree>
<field name="sequence" widget="handle" />
<field name="code" optional="show" />
<field name="name" />
Expand Down
2 changes: 1 addition & 1 deletion donation/views/donation_thanks_template.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@
<record id="donation_thanks_template_tree" model="ir.ui.view">
<field name="model">donation.thanks.template</field>
<field name="arch" type="xml">
<tree string="Donation Thanks Templates">
<tree>
<field name="sequence" widget="handle" />
<field name="name" />
<field
Expand Down
2 changes: 1 addition & 1 deletion donation_base/views/donation_tax_receipt.xml
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
<field name="name">donation.tax.receipt.tree</field>
<field name="model">donation.tax.receipt</field>
<field name="arch" type="xml">
<tree string="Donation Tax Receipt">
<tree>
<field name="number" />
<field name="partner_id" />
<field name="date" />
Expand Down
50 changes: 22 additions & 28 deletions donation_direct_debit/models/donation.py
Original file line number Diff line number Diff line change
Expand Up @@ -78,47 +78,41 @@ def validate(self):
an existing draft Direct Debit pay order"""
res = super().validate()
apoo = self.env["account.payment.order"].sudo()
aplo = self.env["account.payment.line"].sudo()
for donation in self:
if (
donation.payment_mode_id
and donation.payment_mode_id.payment_type == "inbound"
and donation.payment_mode_id.payment_order_ok
and donation.payment_mode_id.payment_method_code == "sepa_direct_debit"
and donation.move_id
):
payorders = apoo.search(
[
("state", "=", "draft"),
("company_id", "=", donation.company_id.id),
("payment_mode_id", "=", donation.payment_mode_id.id),
]
)
msg = False
if payorders:
payorder = payorders[0]
else:
payorder_vals = donation._prepare_payment_order()
payorder = apoo.create(payorder_vals)
msg = _(
"A new draft direct debit order "
"<a href=# data-oe-model=account.payment.order "
"data-oe-id=%d>%s</a> has been automatically created"
) % (payorder.id, payorder.name)
# add payment line
match_account_id = (
donation.payment_mode_id.fixed_journal_id.donation_debit_order_account_id.id
)
for mline in donation.move_id.line_ids:
if mline.account_id.id == match_account_id:
mline.sudo().create_payment_line_from_move_line(payorder)
payorder = apoo.search(
[
("state", "=", "draft"),
("company_id", "=", donation.company_id.id),
("payment_mode_id", "=", donation.payment_mode_id.id),
],
limit=1,
)
if not payorder:
payorder_vals = donation._prepare_payment_order()
payorder = apoo.create(payorder_vals)
payline_vals = mline._prepare_payment_line_vals(payorder)
payline = aplo.create(payline_vals)
msg = _(
"A new payment line %s has been automatically added "
"to the draft direct debit order "
"<a href=# data-oe-model=account.payment.order "
"data-oe-id=%d>%s</a>."
) % (payline.name, payorder.id, payorder.name)
donation.message_post(body=msg)
break
if not msg:
msg = _(
"A new payment line has been automatically added "
"to the existing draft direct debit order "
"<a href=# data-oe-model=account.payment.order "
"data-oe-id=%d>%s</a>."
) % (payorder.id, payorder.name)
donation.message_post(body=msg)
return res

def done2cancel(self):
Expand Down
9 changes: 9 additions & 0 deletions donation_direct_debit/tests/test_direct_debit.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,19 @@ def test_direct_debit(self):
dd_payment_mode = self.env.ref(
"account_banking_sepa_direct_debit.payment_mode_inbound_sepa_dd1"
)
trf_acc = self.env["account.account"].create(
{
"code": "TESTDD9",
"name": "Donation by debit debit trf account",
"reconcile": True,
"user_type_id": self.env.ref("account.data_account_type_receivable").id,
}
)
bank_journal = self.env["account.journal"].create(
{
"type": "bank",
"name": "Bank account test",
"donation_debit_order_account_id": trf_acc.id,
}
)
dd_payment_mode.write(
Expand Down
Loading