Banking
Load your bank transactions into ERPNext and reconcile them with your vouchers.
Install / Use
/learn @alyf-de/BankingREADME
Documentation
Check out the Banking Wiki for a step-by-step guide on how to use the app.
Country and Bank Coverage
<img src="ready_for_ebics.jpg" height="70px">We use the EBICS protocol which is widely supported by banks in the following countries:
- 🇦🇹 Austria
- 🇫🇷 France
- 🇩🇪 Germany
- 🇨🇭 Switzerland
Installation
Install via Frappe Cloud or on your local bench:
bench get-app https://github.com/alyf-de/banking.git
bench --site <sitename> install-app banking
[!TIP] You don't need to be concerned about testing this app, since it supports clean uninstallation.
Customize
Ask the user for extra values before reconciling:
frappe.ui.form.on("Bank Reconciliation Tool Beta", {
before_reconcile: function (frm, transaction, selected_vouchers) {
return new Promise((resolve, reject) => {
frappe.prompt([
{
label: __("My Fieldname"),
fieldname: "my_fieldname",
fieldtype: "Data",
},
], (values) => {
// {my_fieldname: "My Value"}
resolve(values);
});
});
},
});
Use the extra values in the get_payment_entries hook:
from banking.overrides.bank_transaction import CustomBankTransaction
def get_payment_entries(
bt: CustomBankTransaction,
vouchers: list,
reconcile_multi_party: bool = False,
extra_params: dict | None = None,
*args,
**kwargs,
):
"""Reconcile vouchers with the Bank Transaction.
Accepts a bank transaction and a list of (unpaid) vouchers to reconcile.
Returns a list of (paid) vouchers to add to the bank transaction.
"""
assert extra_params["my_fieldname"] == "My Value"
return [
{
"payment_doctype": "Journal Entry",
"payment_name": "JE-123",
"amount": 100,
},
{
"payment_doctype": "Payment Entry",
"payment_name": "PE-123",
"amount": 100,
},
]
In case you automatically create Journal Entries for Bank Transactions (e.g. to Cash In Transit), you can prevent them from showing up in Bank Reconciliation Tool Beta by using the Bank Transaction's ID (name) as the Journal Entry's Reference Number (cheque_no).
SEPA Payment Order
DocTypes that map to SEPA Payment Order can provide a method get_sepa_payment_amount via controller or doc_events hook. This is called when the execution date is changed. The parameters are the reference row name and execution date. It should return the amount of the payment. The main use case for this is early payment discounts.
Contribute
Translations
In general, translations are managed using PO files in the banking/locale/ directory. PO files exclude strings that are already translated in Frappe or ERPNext.
To update translation files, run the following commands:
# ERPNext v15 does not come with a pot file, but we need it to exclude existing translations.
bench generate-pot-file --app erpnext
# Generate POT file for Banking
bench generate-pot-file --app banking
# Update PO files from POT files
bench update-po-files --app banking
