[MIG] account_bank_statement_clearing_account Migrate to 13.0

This commit is contained in:
Ronald Portier
2021-02-17 16:35:49 +01:00
committed by Ronald Portier (Therp BV)
parent fc8b6db62d
commit 9e2a82cca0
6 changed files with 557 additions and 41 deletions

View File

@@ -1,35 +1,110 @@
**This file is going to be generated by oca-gen-addon-readme.**
=============================================
Reconcile entries from pseudo bank statements
=============================================
*Manual changes will be overwritten.*
.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Please provide content in the ``readme`` directory:
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github
:target: https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_clearing_account
:alt: OCA/bank-statement-import
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/bank-statement-import-13-0/bank-statement-import-13-0-account_bank_statement_clearing_account
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runbot-Try%20me-875A7B.png
:target: https://runbot.odoo-community.org/runbot/174/13.0
:alt: Try me on Runbot
* **DESCRIPTION.rst** (required)
* INSTALL.rst (optional)
* CONFIGURE.rst (optional)
* **USAGE.rst** (optional, highly recommended)
* DEVELOP.rst (optional)
* ROADMAP.rst (optional)
* HISTORY.rst (optional, recommended)
* **CONTRIBUTORS.rst** (optional, highly recommended)
* CREDITS.rst (optional)
|badge1| |badge2| |badge3| |badge4| |badge5|
Content of this README will also be drawn from the addon manifest,
from keys such as name, authors, maintainers, development_status,
and license.
This is a technical modules that you can use to improve the processing of
statement files from payment providers. These statements usually consist
of lines that to be reconciled by customer debts, offset by lines that are
to be reconciled by the imbursements from the payment provider, corrected
for customer credits and the costs of the payment provider. Typically, the
balance of such a statement is zero. Effectively, the counterpart of each
statement line is made on a clearing account and you should keep track of
the balance of the clearing account to see if the payment provider still owes
you money. You can keep track of the account by reconciling each entry on it.
A good, one sentence summary in the manifest is also highly recommended.
That is where this module comes in. When importing such a statement, this
module reconciles all the counterparts on the clearing account with one
another. Reconciliation is executed when validating the statement. When
reopening the statement, the reconcilation is undone.
Known issues
============
This module does not come with its own tests because it depends on a
statement filter being installed. Instead, it is tested in
`account_bank_statement_import_adyen`
Automatic changelog generation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
**Table of contents**
`HISTORY.rst` can be auto generated using `towncrier <https://pypi.org/project/towncrier>`_.
.. contents::
:local:
Just put towncrier compatible changelog fragments into `readme/newsfragments`
and the changelog file will be automatically generated and updated when a new fragment is added.
Configuration
=============
Please refer to `towncrier` documentation to know more.
In order to enable the reconcilation of the counterparts of zero-balance
statement files from payment providers, you need to make sure that the journal
that is used for these statements have the same default debit account as their
default credit account, and this account is configured for reconciliation.
NOTE: the changelog will be automatically generated when using `/ocabot merge $option`.
If you need to run it manually, refer to `OCA/maintainer-tools README <https://github.com/OCA/maintainer-tools>`_.
Usage
=====
After installing this module, any statement where the sum of all debit and
credit lines match, and where the default journal account is reconcilable, will
reconcile all posted moved when the statement is confirmed.
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/bank-statement-import/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us smashing it by providing a detailed and welcomed
`feedback <https://github.com/OCA/bank-statement-import/issues/new?body=module:%20account_bank_statement_clearing_account%0Aversion:%2013.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.
Credits
=======
Authors
~~~~~~~
* Opener B.V.
* Vanmoof BV
Contributors
~~~~~~~~~~~~
* Stefan Rijnhart <stefan@opener.amsterdam> (https://opener.amsterdam)
* Martin Pishpecki <pishpecki@gmail.com> (https://www.vanmoof.com)
* Ronald Portier <ronald@therp.nl> (https://therp.nl)
Maintainers
~~~~~~~~~~~
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
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.
This module is part of the `OCA/bank-statement-import <https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_clearing_account>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

View File

@@ -1,13 +1,13 @@
# © 2017 Opener BV (<https://opener.amsterdam>)
# © 2020 Vanmoof BV (<https://www.vanmoof.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
# Copyright 2017 Opener BV (<https://opener.amsterdam>)
# Copyright 2020 Vanmoof BV (<https://www.vanmoof.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
{
"name": "Reconcile entries from pseudo bank statements",
"version": "12.0.1.0.0",
"version": "13.0.1.0.0",
"author": "Opener B.V., Vanmoof BV, Odoo Community Association (OCA)",
"category": "Banking addons",
"website": "https://opener.am",
"website": "https://github.com/oca/bank-statement-import",
"license": "AGPL-3",
"depends": ["account_cancel",],
"depends": ["account"],
"installable": True,
}

View File

@@ -1,13 +1,12 @@
# © 2017 Opener BV (<https://opener.amsterdam>)
# © 2020 Vanmoof BV (<https://www.vanmoof.com>)
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import api, models
# Copyright 2017 Opener BV (<https://opener.amsterdam>)
# Copyright 2020 Vanmoof BV (<https://www.vanmoof.com>)
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
from odoo import models
class BankStatement(models.Model):
_inherit = "account.bank.statement"
@api.multi
def get_reconcile_clearing_account_lines(self):
""" If this statement qualifies for clearing account reconciliation,
return the relevant lines to (un)reconcile. This is the case if the
@@ -45,7 +44,6 @@ class BankStatement(models.Model):
return False
return move_lines
@api.multi
def reconcile_clearing_account(self):
""" If applicable, reconcile the clearing account lines in case
all lines are still unreconciled. """
@@ -58,7 +56,6 @@ class BankStatement(models.Model):
lines.reconcile()
return True
@api.multi
def unreconcile_clearing_account(self):
""" If applicable, unreconcile the clearing account lines
if still fully reconciled with each other. """
@@ -72,16 +69,14 @@ class BankStatement(models.Model):
return True
return False
@api.multi
def button_draft(self):
def button_reopen(self):
""" When setting the statement back to draft, unreconcile the
reconciliation on the clearing account """
res = super(BankStatement, self).button_draft()
res = super(BankStatement, self).button_reopen()
for statement in self:
statement.unreconcile_clearing_account()
return res
@api.multi
def button_confirm_bank(self):
""" When confirming the statement, trigger the reconciliation of
the lines on the clearing account (if applicable) """

View File

@@ -1,2 +1,3 @@
* Stefan Rijnhart <stefan@opener.amsterdam> (https://opener.amsterdam)
* Martin Pishpecki <pishpecki@gmail.com> (https://www.vanmoof.com)
* Ronald Portier <ronald@therp.nl> (https://therp.nl)

View File

@@ -0,0 +1,3 @@
After installing this module, any statement where the sum of all debit and
credit lines match, and where the default journal account is reconcilable, will
reconcile all posted moved when the statement is confirmed.

View File

@@ -0,0 +1,442 @@
<?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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils 0.15.1: http://docutils.sourceforge.net/" />
<title>Reconcile entries from pseudo bank statements</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: grey; } /* 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 }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document" id="reconcile-entries-from-pseudo-bank-statements">
<h1 class="title">Reconcile entries from pseudo bank statements</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external" 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" 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" href="https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_clearing_account"><img alt="OCA/bank-statement-import" src="https://img.shields.io/badge/github-OCA%2Fbank--statement--import-lightgray.png?logo=github" /></a> <a class="reference external" href="https://translation.odoo-community.org/projects/bank-statement-import-13-0/bank-statement-import-13-0-account_bank_statement_clearing_account"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external" href="https://runbot.odoo-community.org/runbot/174/13.0"><img alt="Try me on Runbot" src="https://img.shields.io/badge/runbot-Try%20me-875A7B.png" /></a></p>
<p>This is a technical modules that you can use to improve the processing of
statement files from payment providers. These statements usually consist
of lines that to be reconciled by customer debts, offset by lines that are
to be reconciled by the imbursements from the payment provider, corrected
for customer credits and the costs of the payment provider. Typically, the
balance of such a statement is zero. Effectively, the counterpart of each
statement line is made on a clearing account and you should keep track of
the balance of the clearing account to see if the payment provider still owes
you money. You can keep track of the account by reconciling each entry on it.</p>
<p>That is where this module comes in. When importing such a statement, this
module reconciles all the counterparts on the clearing account with one
another. Reconciliation is executed when validating the statement. When
reopening the statement, the reconcilation is undone.</p>
<div class="section" id="known-issues">
<h1>Known issues</h1>
<p>This module does not come with its own tests because it depends on a
statement filter being installed. Instead, it is tested in
<cite>account_bank_statement_import_adyen</cite></p>
<p><strong>Table of contents</strong></p>
</div>
<div class="section" id="configuration">
<h1>Configuration</h1>
<p>In order to enable the reconcilation of the counterparts of zero-balance
statement files from payment providers, you need to make sure that the journal
that is used for these statements have the same default debit account as their
default credit account, and this account is configured for reconciliation.</p>
</div>
<div class="section" id="usage">
<h1>Usage</h1>
<p>After installing this module, any statement where the sum of all debit and
credit lines match, and where the default journal account is reconcilable, will
reconcile all posted moved when the statement is confirmed.</p>
</div>
<div class="section" id="bug-tracker">
<h1>Bug Tracker</h1>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/bank-statement-import/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 smashing it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/bank-statement-import/issues/new?body=module:%20account_bank_statement_clearing_account%0Aversion:%2013.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">
<h1>Credits</h1>
<div class="section" id="authors">
<h2>Authors</h2>
<ul class="simple">
<li>Opener B.V.</li>
<li>Vanmoof BV</li>
</ul>
</div>
<div class="section" id="contributors">
<h2>Contributors</h2>
<ul class="simple">
<li>Stefan Rijnhart &lt;<a class="reference external" href="mailto:stefan&#64;opener.amsterdam">stefan&#64;opener.amsterdam</a>&gt; (<a class="reference external" href="https://opener.amsterdam">https://opener.amsterdam</a>)</li>
<li>Martin Pishpecki &lt;<a class="reference external" href="mailto:pishpecki&#64;gmail.com">pishpecki&#64;gmail.com</a>&gt; (<a class="reference external" href="https://www.vanmoof.com">https://www.vanmoof.com</a>)</li>
<li>Ronald Portier &lt;<a class="reference external" href="mailto:ronald&#64;therp.nl">ronald&#64;therp.nl</a>&gt; (<a class="reference external" href="https://therp.nl">https://therp.nl</a>)</li>
</ul>
</div>
<div class="section" id="maintainers">
<h2>Maintainers</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>
<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>This module is part of the <a class="reference external" href="https://github.com/OCA/bank-statement-import/tree/13.0/account_bank_statement_clearing_account">OCA/bank-statement-import</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>
</div>
</body>
</html>