feat: add dlv_account_reconciliation_rest_amount — show rest amount on bank reconciliation screen
This commit is contained in:
@@ -0,0 +1,14 @@
|
||||
# Changelog
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
||||
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
||||
|
||||
## [1.0.0] - 2026-08-10
|
||||
|
||||
### Added
|
||||
- Initial release.
|
||||
- Show the rest (still open) amount in parentheses on the bank
|
||||
reconciliation screen, for both the bank movement line and any partially
|
||||
used added invoice/bill line.
|
||||
@@ -0,0 +1,46 @@
|
||||
# dlv_account_reconciliation_rest_amount
|
||||
|
||||
## Overview
|
||||
|
||||
`dlv_account_reconciliation_rest_amount` extends the standard bank
|
||||
reconciliation screen (Accounting → Reconciliation) so the still-open
|
||||
("rest") amount of a line is shown in parentheses next to its total.
|
||||
|
||||
On the reconciliation screen, when a proposed line (the bank movement itself,
|
||||
or an added invoice/bill) is only partially used to close the statement line,
|
||||
Odoo shows the full amount struck through and the partial amount used above
|
||||
it — but not what remains unmatched on that line. This addon adds that
|
||||
missing number, e.g.:
|
||||
|
||||
```
|
||||
€ 1.899,97
|
||||
€ 4.486,35 (€ 2.586,38)
|
||||
```
|
||||
|
||||
so the user immediately sees that €2.586,38 of that invoice is still
|
||||
outstanding, without having to search for it elsewhere.
|
||||
|
||||
## How it works
|
||||
|
||||
- `static/src/js/reconciliation_rest_amount.js` patches
|
||||
`account.ReconciliationRenderer`'s `ManualLineRenderer.update()`. Before
|
||||
every render, it walks `state.reconciliation_proposition` and, for any line
|
||||
where `partial_amount` differs from `amount`, computes and formats the
|
||||
difference as `line.rest_amount_str`.
|
||||
- `static/src/xml/reconciliation_rest_amount.xml` inherits the shared
|
||||
`reconciliation.line.mv_line.amount` template (from `account_accountant`)
|
||||
via xpath and prints `line.rest_amount_str` between parentheses, right
|
||||
after the existing amount.
|
||||
|
||||
Because both the bank movement (liquidity line) and any added invoice/bill
|
||||
proposition are rendered through the same loop and template, this single
|
||||
patch covers both cases.
|
||||
|
||||
## Dependencies
|
||||
|
||||
- `account_accountant`
|
||||
|
||||
## Installation
|
||||
|
||||
Standard addon install/update. No configuration or data is added; the change
|
||||
is purely visual on the existing reconciliation widget.
|
||||
@@ -0,0 +1,16 @@
|
||||
# Roadmap
|
||||
|
||||
Planned extensions to the reconciliation rest-amount addon. Items are grouped
|
||||
by target release and are subject to change.
|
||||
|
||||
## v1.1 — Suggest matching entries by rest amount
|
||||
|
||||
- When a line's rest amount matches (exactly, or within a small tolerance)
|
||||
another open entry for the same partner, surface it as a suggested match
|
||||
in the "Match with existing entries" tab instead of requiring the user to
|
||||
find it manually.
|
||||
|
||||
## Future — Configurable tolerance / rounding
|
||||
|
||||
- Allow a small configurable rounding tolerance when comparing rest amounts,
|
||||
to account for currency rounding differences.
|
||||
@@ -0,0 +1,29 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
{
|
||||
"name": "Reconciliation Rest Amount",
|
||||
"summary": "Toon het restbedrag tussen haakjes op het afletterscherm "
|
||||
"(bank reconciliatie)",
|
||||
"description": """
|
||||
Voegt het restbedrag (verschil tussen het oorspronkelijke bedrag en het reeds
|
||||
afgeletterde/toegewezen bedrag) tussen haakjes toe aan het bank-afletterscherm,
|
||||
zowel bij de regel van het bankafschrift (liquidity-line) als bij de
|
||||
voorgestelde afletteringsregels (bestaande boekingen) die niet volledig
|
||||
worden ingezet.
|
||||
""",
|
||||
"author": "bv Domus La Vila",
|
||||
"website": "https://domuslavila.eu",
|
||||
"category": "Accounting/Accounting",
|
||||
"version": "16.0.1.0.0",
|
||||
"license": "LGPL-3",
|
||||
"depends": ["account_accountant"],
|
||||
"data": [],
|
||||
"assets": {
|
||||
"web.assets_backend": [
|
||||
"dlv_account_reconciliation_rest_amount/static/src/js/*.js",
|
||||
"dlv_account_reconciliation_rest_amount/static/src/xml/*.xml",
|
||||
],
|
||||
},
|
||||
"installable": True,
|
||||
"application": False,
|
||||
"auto_install": False,
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
odoo.define('dlv_account_reconciliation_rest_amount.reconciliation_renderer', function (require) {
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* Toont het restbedrag (het verschil tussen het volledige bedrag van een
|
||||
* regel en het bedrag dat effectief wordt ingezet om af te letteren) tussen
|
||||
* haakjes op het afletterscherm.
|
||||
*
|
||||
* Dit geldt zowel voor de bankbeweging zelf (de liquidity-line) als voor een
|
||||
* toegevoegde boeking (bv. een aankoopfactuur) waarvan niet het volledige
|
||||
* bedrag wordt gebruikt (line.partial_amount != line.amount).
|
||||
*/
|
||||
|
||||
var ReconciliationRenderer = require('account.ReconciliationRenderer');
|
||||
var field_utils = require('web.field_utils');
|
||||
|
||||
ReconciliationRenderer.ManualLineRenderer.include({
|
||||
|
||||
/**
|
||||
* @override
|
||||
*/
|
||||
update: function (state) {
|
||||
this._computeRestAmounts(state);
|
||||
return this._super.apply(this, arguments);
|
||||
},
|
||||
|
||||
/**
|
||||
* Berekent, voor elke regel in de afletteringsvoorstellen die slechts
|
||||
* gedeeltelijk wordt ingezet, het nog resterende (niet-afgeletterde)
|
||||
* bedrag en formatteert dit als rest_amount_str.
|
||||
*
|
||||
* @private
|
||||
* @param {Object} state
|
||||
*/
|
||||
_computeRestAmounts: function (state) {
|
||||
var format_options = {currency_id: state.st_line.currency_id};
|
||||
_.each(state.reconciliation_proposition, function (line) {
|
||||
if (!line) {
|
||||
return;
|
||||
}
|
||||
var hasPartialAmount = line.partial_amount && Math.abs(line.partial_amount) !== Math.abs(line.amount);
|
||||
if (hasPartialAmount) {
|
||||
var rest = Math.abs(line.amount) - Math.abs(line.partial_amount);
|
||||
line.rest_amount = rest;
|
||||
line.rest_amount_str = field_utils.format.monetary(rest, {}, format_options);
|
||||
} else {
|
||||
delete line.rest_amount;
|
||||
delete line.rest_amount_str;
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
@@ -0,0 +1,18 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<templates xml:space="preserve">
|
||||
|
||||
<!--
|
||||
Voegt het restbedrag (line.rest_amount_str, berekend in
|
||||
reconciliation_rest_amount.js) tussen haakjes toe naast het bedrag
|
||||
van een afletteringsregel. Geldt zowel voor de bankbeweging
|
||||
(liquidity-line) als voor een toegevoegde boeking waarvan niet het
|
||||
volledige bedrag wordt ingezet.
|
||||
|
||||
Origineel template: reconciliation.line.mv_line.amount
|
||||
(enterprise-sys/account_accountant/static/src/xml/account_reconciliation.xml)
|
||||
-->
|
||||
<xpath expr="//t[@t-name='reconciliation.line.mv_line.amount']//span[hasclass('line_amount')][2]" position="after">
|
||||
<span t-if="line.rest_amount_str" class="dlv_rest_amount text-muted" title="Nog te matchen"> (<t t-out="line.rest_amount_str"/>)</span>
|
||||
</xpath>
|
||||
|
||||
</templates>
|
||||
Reference in New Issue
Block a user