Skip to content

Commit

Permalink
[IMP] account_banking_ach_discount: added test
Browse files Browse the repository at this point in the history
  • Loading branch information
JasminSForgeFlow committed Jul 2, 2024
1 parent daf4f02 commit c10b3a3
Show file tree
Hide file tree
Showing 4 changed files with 200 additions and 13 deletions.
13 changes: 8 additions & 5 deletions account_banking_ach_discount/README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,13 +17,13 @@ Discount on ACH batch payments
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fl10n--usa-lightgray.png?logo=github
:target: https://github.com/OCA/l10n-usa/tree/14.0/account_banking_ach_discount
:target: https://github.com/OCA/l10n-usa/tree/16.0/account_banking_ach_discount
:alt: OCA/l10n-usa
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/l10n-usa-14-0/l10n-usa-14-0-account_banking_ach_discount
:target: https://translation.odoo-community.org/projects/l10n-usa-16-0/l10n-usa-16-0-account_banking_ach_discount
: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/l10n-usa&target_branch=14.0
:target: https://runboat.odoo-community.org/builds?repo=OCA/l10n-usa&target_branch=16.0
:alt: Try me on Runboat

|badge1| |badge2| |badge3| |badge4| |badge5|
Expand Down Expand Up @@ -87,7 +87,7 @@ Bug Tracker
Bugs are tracked on `GitHub Issues <https://github.com/OCA/l10n-usa/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/l10n-usa/issues/new?body=module:%20account_banking_ach_discount%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
`feedback <https://github.com/OCA/l10n-usa/issues/new?body=module:%20account_banking_ach_discount%0Aversion:%2016.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.

Expand All @@ -107,6 +107,9 @@ Contributors
* Bhavesh Odedra <bodedra@opensourceintegrators.com>
* Maxime Chambreuil <mchambreuil@opensourceintegrators.com>

* ForgeFlow <https://www.forgeflow.com>
* Jasmin Solanki <jasmin.solanki@forgeflow.com>

Maintainers
~~~~~~~~~~~

Expand All @@ -128,6 +131,6 @@ Current `maintainer <https://odoo-community.org/page/maintainer-role>`__:

|maintainer-bodedra|

This module is part of the `OCA/l10n-usa <https://github.com/OCA/l10n-usa/tree/14.0/account_banking_ach_discount>`_ project on GitHub.
This module is part of the `OCA/l10n-usa <https://github.com/OCA/l10n-usa/tree/16.0/account_banking_ach_discount>`_ project on GitHub.

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.
20 changes: 12 additions & 8 deletions account_banking_ach_discount/static/description/index.html
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<!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>
Expand All @@ -9,10 +8,11 @@

/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 8954 2022-01-20 10:10:25Z milde $
: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.
Expand Down Expand Up @@ -275,7 +275,7 @@
margin-left: 2em ;
margin-right: 2em }

pre.code .ln { color: grey; } /* line numbers */
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 }
Expand All @@ -301,7 +301,7 @@
span.pre {
white-space: pre }

span.problematic {
span.problematic, pre.problematic {
color: red }

span.section-subtitle {
Expand Down Expand Up @@ -369,7 +369,7 @@ <h1 class="title">Discount on ACH batch payments</h1>
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:49de557183014de2a8dba5fce829d24e0fd04061b538c048a3553c6f835b02b9
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<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/l10n-usa/tree/14.0/account_banking_ach_discount"><img alt="OCA/l10n-usa" src="https://img.shields.io/badge/github-OCA%2Fl10n--usa-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/l10n-usa-14-0/l10n-usa-14-0-account_banking_ach_discount"><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/l10n-usa&amp;target_branch=14.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<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/l10n-usa/tree/16.0/account_banking_ach_discount"><img alt="OCA/l10n-usa" src="https://img.shields.io/badge/github-OCA%2Fl10n--usa-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/l10n-usa-16-0/l10n-usa-16-0-account_banking_ach_discount"><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/l10n-usa&amp;target_branch=16.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<p>This module will add support for discount in ACH and batch ACH workflow.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
Expand Down Expand Up @@ -450,7 +450,7 @@ <h1><a class="toc-backref" href="#toc-entry-8">Bug Tracker</a></h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/l10n-usa/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/l10n-usa/issues/new?body=module:%20account_banking_ach_discount%0Aversion:%2014.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<a class="reference external" href="https://github.com/OCA/l10n-usa/issues/new?body=module:%20account_banking_ach_discount%0Aversion:%2016.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">
Expand All @@ -469,18 +469,22 @@ <h2><a class="toc-backref" href="#toc-entry-11">Contributors</a></h2>
<li>Maxime Chambreuil &lt;<a class="reference external" href="mailto:mchambreuil&#64;opensourceintegrators.com">mchambreuil&#64;opensourceintegrators.com</a>&gt;</li>
</ul>
</li>
<li>ForgeFlow &lt;<a class="reference external" href="https://www.forgeflow.com">https://www.forgeflow.com</a>&gt;
* Jasmin Solanki &lt;<a class="reference external" href="mailto:jasmin.solanki&#64;forgeflow.com">jasmin.solanki&#64;forgeflow.com</a>&gt;</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2><a class="toc-backref" href="#toc-entry-12">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>
<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>Current <a class="reference external" href="https://odoo-community.org/page/maintainer-role">maintainer</a>:</p>
<p><a class="reference external image-reference" href="https://github.com/bodedra"><img alt="bodedra" src="https://github.com/bodedra.png?size=40px" /></a></p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/l10n-usa/tree/14.0/account_banking_ach_discount">OCA/l10n-usa</a> project on GitHub.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/l10n-usa/tree/16.0/account_banking_ach_discount">OCA/l10n-usa</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>
Expand Down
1 change: 1 addition & 0 deletions account_banking_ach_discount/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
from . import test_account_banking_ach_discount
Original file line number Diff line number Diff line change
@@ -0,0 +1,179 @@
# Copyright (C) 2024, ForgeFlow S.A.
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html)

from datetime import datetime, timedelta

from odoo.tests.common import Form, TransactionCase


class TestPayment(TransactionCase):
@classmethod
def setUpClass(cls):
super().setUpClass()
cls.payment_method_model = cls.env["account.payment.method"]
cls.payment_term_model = cls.env["account.payment.term"]
cls.account_invoice_model = cls.env["account.move"]
cls.account_model = cls.env["account.account"]
Journal = cls.env["account.journal"]

cls.journal_sale = Journal.search([("type", "=", "sale")], limit=1)
cls.income_account = cls.account_model.search(
[
(
"account_type",
"=",
"income_other",
)
],
limit=1,
)
cls.partner = cls.env["res.partner"].create({"name": "Partner 1"})
cls.company = cls.env.ref("base.main_company")
cls.company.partner_id = cls.partner.id
cls.company.legal_id_number = "12-3456789"
cls.payment_method_line = cls.env["account.payment.method.line"].search(
[("code", "=", "ACH-In")], limit=1
)
cls.ach_payment_method_01 = cls.payment_method_model.search(
[("code", "=", "ACH-In")], limit=1
)
cls.acme_bank = cls.env["res.bank"].create(
{
"name": "ACME Bank",
"bic": "GEBABEBB03B",
"city": "Charleroi",
"routing_number": "021000021",
"country": cls.env.ref("base.be").id,
}
)
bank_account = cls.env["res.partner.bank"].create(
{
"acc_number": "0023032234211123",
"partner_id": cls.partner.id,
"bank_id": cls.acme_bank.id,
"company_id": cls.company.id,
}
)
cls.mandate = cls.env["account.banking.mandate"].create(
{
"partner_bank_id": bank_account.id,
"signature_date": "2024-01-01",
"company_id": cls.company.id,
"delay_days": 1,
}
)
cls.mandate.validate()
cls.journal_c1 = cls.env["account.journal"].create(
{
"name": "Journal 1",
"code": "J1",
"type": "bank",
"company_id": cls.company.id,
"bank_account_id": bank_account.id,
}
)
cls.inbound_mode = cls.env.ref("account_payment_mode.payment_mode_inbound_dd1")
cls.journal = cls.env["account.journal"].search(
[("type", "=", "bank"), ("company_id", "=", cls.env.user.company_id.id)],
limit=1,
)
cls.payment_mode_c1 = cls.env["account.payment.mode"].create(
{
"name": "ACH Direct Debit",
"bank_account_link": "variable",
"payment_method_id": cls.ach_payment_method_01.id,
"company_id": cls.company.id,
"fixed_journal_id": cls.journal_c1.id,
"variable_journal_ids": [(6, 0, [cls.journal_c1.id])],
}
)

# Create account for invoice discount
cls.account_discount = cls.account_model.create(
dict(
code="custaccdiscount",
name="Discount Expenses",
account_type="expense",
reconcile=True,
)
)

# Create Payment term
cls.payment_term = cls.payment_term_model.create(
dict(
name="5%10 NET30",
is_discount=True,
note="5% discount if payment done within 10 days, otherwise net",
line_ids=[
(
0,
0,
{
"value": "balance",
"discount_percentage": 5.0,
"discount_days": 10,
"discount_expense_account_id": cls.account_discount.id,
"days": 30,
},
)
],
)
)

def test_account_payment_order_ach_discount(self):

# Create customer invoice
self.customer_invoice = self.account_invoice_model.create(
dict(
name="Test Customer Invoice",
move_type="out_invoice",
invoice_date=datetime.today() - timedelta(days=1),
invoice_payment_term_id=self.payment_term.id,
journal_id=self.journal_sale.id,
partner_id=self.partner.id,
)
)
# Prepare invoice line values
self.customer_invoice.write(
{
"invoice_line_ids": [
(
0,
0,
{
"product_id": self.env.ref("product.product_product_5").id,
"quantity": 10.0,
"account_id": self.income_account.id,
"name": "product test 5",
"price_unit": 100.00,
},
)
]
}
)
# Validate customer invoice
self.customer_invoice.action_post()

with Form(
self.env["account.payment.register"].with_context(
active_ids=self.customer_invoice.ids,
batch=True,
active_model="account.move",
)
) as register_wizard_form:
register_wizard_form.payment_method_line_id = self.payment_method_line
register_wizard = register_wizard_form.save()
# check 5% discount applied on payment
self.assertEqual(
register_wizard.payment_difference,
self.customer_invoice.amount_total * 0.05,
)
payment_order_dict = register_wizard.make_payments()
payment_order = self.env["account.payment.order"].browse(
payment_order_dict["res_id"]
)
payment_order.journal_id = self.journal_c1.id
payment_order.draft2open()
payment_order.payment_line_ids.payment_ids.mandate_id = self.mandate
payment_order.generate_payment_file()
payment_order.generated2uploaded()

0 comments on commit c10b3a3

Please sign in to comment.