-
-
Notifications
You must be signed in to change notification settings - Fork 55
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[IMP] account_banking_ach_discount: added test
- Loading branch information
1 parent
daf4f02
commit c10b3a3
Showing
4 changed files
with
200 additions
and
13 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -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| | ||
|
@@ -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. | ||
|
||
|
@@ -107,6 +107,9 @@ Contributors | |
* Bhavesh Odedra <[email protected]> | ||
* Maxime Chambreuil <[email protected]> | ||
|
||
* ForgeFlow <https://www.forgeflow.com> | ||
* Jasmin Solanki <[email protected]> | ||
|
||
Maintainers | ||
~~~~~~~~~~~ | ||
|
||
|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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> | ||
|
@@ -9,10 +8,11 @@ | |
|
||
/* | ||
:Author: David Goodger ([email protected]) | ||
: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. | ||
|
@@ -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 } | ||
|
@@ -301,7 +301,7 @@ | |
span.pre { | ||
white-space: pre } | ||
|
||
span.problematic { | ||
span.problematic, pre.problematic { | ||
color: red } | ||
|
||
span.section-subtitle { | ||
|
@@ -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&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&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"> | ||
|
@@ -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"> | ||
|
@@ -469,18 +469,22 @@ <h2><a class="toc-backref" href="#toc-entry-11">Contributors</a></h2> | |
<li>Maxime Chambreuil <<a class="reference external" href="mailto:mchambreuil@opensourceintegrators.com">mchambreuil@opensourceintegrators.com</a>></li> | ||
</ul> | ||
</li> | ||
<li>ForgeFlow <<a class="reference external" href="https://www.forgeflow.com">https://www.forgeflow.com</a>> | ||
* Jasmin Solanki <<a class="reference external" href="mailto:jasmin.solanki@forgeflow.com">jasmin.solanki@forgeflow.com</a>></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> | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
from . import test_account_banking_ach_discount |
179 changes: 179 additions & 0 deletions
179
account_banking_ach_discount/tests/test_account_banking_ach_discount.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |