Skip to content

Commit

Permalink
Merge 1a4801e into a815b70
Browse files Browse the repository at this point in the history
  • Loading branch information
tschanzt committed Jun 18, 2019
2 parents a815b70 + 1a4801e commit f2cc02f
Show file tree
Hide file tree
Showing 14 changed files with 372 additions and 0 deletions.
1 change: 1 addition & 0 deletions l10n_ch_account_reconcile_esr/__init__.py
@@ -0,0 +1 @@
from . import models
24 changes: 24 additions & 0 deletions l10n_ch_account_reconcile_esr/__manifest__.py
@@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# copyright 2019 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
{
'name': 'Switzerland - ESR account reconcile',
'version': '10.0.1.0.0',
'author': "Camptocamp,Odoo Community Association (OCA)",
'website': 'https://github.com/OCA/l10n-switzerland',
'license': 'AGPL-3',
'summary': 'Adds a second automatic reconciliation button,'
' which is based on the esr',
'depends': [
'account',
'base_transaction_id',
],
'data': [
'views/assets.xml',
],
'qweb': [
'static/src/xml/account_reconciliation.xml',
],
'installable': True,
'auto_install': False,
}
43 changes: 43 additions & 0 deletions l10n_ch_account_reconcile_esr/i18n/de.po
@@ -0,0 +1,43 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ch_account_reconcile_esr
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-13 14:39+0000\n"
"PO-Revision-Date: 2019-05-13 16:41+0200\n"
"Last-Translator: Timon Tschanz <timon.tschanz@camptocamp.com>\n"
"Language-Team: German\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: de\n"

#. module: l10n_ch_account_reconcile_esr
#: model:ir.model,name:l10n_ch_account_reconcile_esr.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Kontoauszugzeile"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "ESR reconciliation"
msgstr "ESR Ausgleich"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "Let odoo try to reconcile entries for the user using esr refs"
msgstr "Versucht zeilen basierent auf der ESR nummer auszugleichen"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:12
#, python-format
msgid "display: none;"
msgstr ""
43 changes: 43 additions & 0 deletions l10n_ch_account_reconcile_esr/i18n/fr.po
@@ -0,0 +1,43 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ch_account_reconcile_esr
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-13 14:39+0000\n"
"PO-Revision-Date: 2019-05-13 16:41+0200\n"
"Last-Translator: Timon Tschanz <timon.tschanz@camptocamp.com>\n"
"Language-Team: French\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: fr\n"

#. module: l10n_ch_account_reconcile_esr
#: model:ir.model,name:l10n_ch_account_reconcile_esr.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Ligne de relevé bancaire"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "ESR reconciliation"
msgstr "Lettrage BVR"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "Let odoo try to reconcile entries for the user using esr refs"
msgstr "Laisser Odoo essayer de lettrer les entrées pour l'utilisateur avec les références BVR"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:12
#, python-format
msgid "display: none;"
msgstr "display: none;"
43 changes: 43 additions & 0 deletions l10n_ch_account_reconcile_esr/i18n/it.po
@@ -0,0 +1,43 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ch_account_reconcile_esr
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-13 14:39+0000\n"
"PO-Revision-Date: 2019-05-13 16:41+0200\n"
"Last-Translator: Timon Tschanz <timon.tschanz@camptocamp.com>\n"
"Language-Team: Italian\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"Language: it\n"

#. module: l10n_ch_account_reconcile_esr
#: model:ir.model,name:l10n_ch_account_reconcile_esr.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr "Linea estratto conto"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "ESR reconciliation"
msgstr "Riconciliazione PVR"

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "Let odoo try to reconcile entries for the user using esr refs"
msgstr ""

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:12
#, python-format
msgid "display: none;"
msgstr "display: none;"
@@ -0,0 +1,43 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * l10n_ch_account_reconcile_esr
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 10.0+e\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-05-13 14:39+0000\n"
"PO-Revision-Date: 2019-05-13 14:39+0000\n"
"Last-Translator: <>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"

#. module: l10n_ch_account_reconcile_esr
#: model:ir.model,name:l10n_ch_account_reconcile_esr.model_account_bank_statement_line
msgid "Bank Statement Line"
msgstr ""

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "ESR reconciliation"
msgstr ""

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:9
#, python-format
msgid "Let odoo try to reconcile entries for the user using esr refs"
msgstr ""

#. module: l10n_ch_account_reconcile_esr
#. openerp-web
#: code:addons/l10n_ch_account_reconcile_esr/static/src/xml/account_reconciliation.xml:12
#, python-format
msgid "display: none;"
msgstr ""

1 change: 1 addition & 0 deletions l10n_ch_account_reconcile_esr/models/__init__.py
@@ -0,0 +1 @@
from . import account_bank_statement_line
113 changes: 113 additions & 0 deletions l10n_ch_account_reconcile_esr/models/account_bank_statement_line.py
@@ -0,0 +1,113 @@
# -*- coding: utf-8 -*-
# Copyright 2019 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).

from odoo import models, api
from odoo.exceptions import UserError


class AccountBankStatementLine(models.Model):
_inherit = "account.bank.statement.line"

@api.multi
def auto_reconcile(self):
# If we don't have esr_reconcile we want the default odoo way
if not self.env.context.get('esr_reconcile'):
return super(AccountBankStatementLine, self). auto_reconcile()
# otherwise use esr reconcile
else:
return self.auto_reconcile_esr()

@api.multi
def auto_reconcile_esr(self):
""" Reconcile the Bank statement line and acount move line
based on only the esr
"""
self.ensure_one()
match_recs = self.env['account.move.line']

# customized: dropped unneeded params
params = {
'company_id': self.env.user.company_id.id,
'account_payable_receivable': (
self.journal_id.default_credit_account_id.id,
self.journal_id.default_debit_account_id.id
),
'partner_id': self.partner_id.id,
'ref': self.name,
'amount': self.amount
}
# Try to get ESR match
if self.name:
sql_query = self._get_common_sql_query_ignore_partner() + \
" AND aml.transaction_ref = %(ref)s" \
" AND aml.transaction_ref is not null" \
" AND aml.amount_residual = %(amount)s ORDER BY" \
" date_maturity asc, aml.id asc"
self.env.cr.execute(sql_query, params)
match_recs = self.env.cr.dictfetchall()
if len(match_recs) > 1:
return False
# Customizations done. odoo code from here on.
if not match_recs:
return False

match_recs = self.env['account.move.line'].browse(
[aml.get('id') for aml in match_recs]
)
# Now reconcile
counterpart_aml_dicts = []
payment_aml_rec = self.env['account.move.line']
for aml in match_recs:
if aml.account_id.internal_type == 'liquidity':
payment_aml_rec = (payment_aml_rec | aml)
else:
amount = self.amount
counterpart_aml_dicts.append({
'name': aml.name if aml.name != '/' else aml.move_id.name,
'debit': amount < 0 and -amount or 0,
'credit': amount > 0 and amount or 0,
'move_line': aml
})

try:
with self._cr.savepoint():
counterpart = self.process_reconciliation(
counterpart_aml_dicts=counterpart_aml_dicts,
payment_aml_rec=payment_aml_rec
)
return counterpart
except UserError:
# A configuration / business logic error that makes it impossible
# to auto-reconcile should not be raised
# since automatic reconciliation is just an amenity and the user
# will get the same exception when manually
# reconciling. Other types of exception are (hopefully)
# programmation errors and should cause a stacktrace.
self.invalidate_cache()
self.env['account.move'].invalidate_cache()
self.env['account.move.line'].invalidate_cache()
return False

def _get_common_sql_query_ignore_partner(self):
""" Selects the account move lines based on account type and company.
Basequery, returns all lines matching filter clause needs to be added.
"""
acc_type = "acc.internal_type IN ('payable', 'receivable')" if (
self.partner_id or False
) else "acc.reconcile = true"
account_clause = ''
if self.journal_id.default_credit_account_id and \
self.journal_id.default_debit_account_id:
account_clause = "(aml.statement_id IS NULL AND aml.account_id IN \
%(account_payable_receivable)s AND aml.payment_id IS NOT NULL) OR"
query = """
SELECT aml.id
FROM account_move_line aml
JOIN account_account acc ON acc.id = aml.account_id
WHERE aml.company_id = %(company_id)s
AND ({0} ( {1} AND aml.reconciled = false))
"""
return query.format(account_clause, acc_type)
1 change: 1 addition & 0 deletions l10n_ch_account_reconcile_esr/readme/CONTRIBUTORS.rst
@@ -0,0 +1 @@
Timon Tschanz <timon.tschanz@camptocamp.com>
2 changes: 2 additions & 0 deletions l10n_ch_account_reconcile_esr/readme/DESCRIPTION.rst
@@ -0,0 +1,2 @@
This addon adds a new auto reconciliation button, which reconciles statement lines
only based on the ESR and hides the original one. This should allow for more acurate matching, though we probably match a bit less.
3 changes: 3 additions & 0 deletions l10n_ch_account_reconcile_esr/readme/USAGE.rst
@@ -0,0 +1,3 @@
To use this module following steps are required:
1. Go to the Bank Statement reconciliation view
2. Press the "Automatic ESR reconciliation" button
@@ -0,0 +1,32 @@
odoo.define('specific_account.esr_reconciliation', function (require) {
"use strict";

var AccountReconciliation = require('account.reconciliation');
var core = require('web.core');


// Add a second button to reconcilation widget which only reconciles based on esr.
AccountReconciliation.bankStatementReconciliation.include({
start: function() {
var self = this;
return $.when(this._super()).then(function(){
self.$el.find('.js_esr_reconciliation').click(function() {
self.model_bank_statement_line
.call("reconciliation_widget_auto_reconcile",
[self.lines || undefined, self.num_already_reconciled_lines],
{'context': {'esr_reconcile': true}}
)
.then(function(data){
self.serverPreprocessResultHandler(data);
})
.then(function(){
self.$('.js_esr_reconciliation').hide();
return self.display_reconciliation_propositions();
});

});

});
},
});
});
@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>

<templates xml:space="preserve">

<!-- abstract or shared templates -->

<t t-extend="bank_statement_reconciliation">
<t t-jquery="button.js_automatic_reconciliation" t-operation="after">
<button class="btn btn-default js_esr_reconciliation pull-right" title="Let odoo try to reconcile entries for the user using esr refs">ESR reconciliation</button>
</t>
<t t-jquery="button.js_automatic_reconciliation" t-operation="attributes">
<attribute name="style">display: none;</attribute>
</t>
</t>
</templates>
8 changes: 8 additions & 0 deletions l10n_ch_account_reconcile_esr/views/assets.xml
@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<template id="assets_backend" name="account assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/l10n_ch_account_reconcile_esr/static/src/js/account_reconciliation.js"></script>
</xpath>
</template>
</odoo>

0 comments on commit f2cc02f

Please sign in to comment.