Files
odoo-usability/account_usability/models/account_bank_statement.py
2021-11-26 18:57:02 +03:00

100 lines
3.9 KiB
Python

# Copyright 2015-2020 Akretion (http://www.akretion.com)
# @author Alexis de Lattre <alexis.delattre@akretion.com>
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
from odoo import api, fields, models
from odoo.tools.misc import format_date
class AccountBankStatement(models.Model):
_inherit = "account.bank.statement"
start_date = fields.Date(
compute="_compute_dates", string="Start Date", readonly=True, store=True
)
end_date = fields.Date(
compute="_compute_dates", string="End Date", readonly=True, store=True
)
hide_bank_statement_balance = fields.Boolean(
related="journal_id.hide_bank_statement_balance", readonly=True
)
@api.depends("line_ids.date")
def _compute_dates(self):
for st in self:
dates = [line.date for line in st.line_ids]
st.start_date = dates and min(dates) or False
st.end_date = dates and max(dates) or False
def _check_balance_end_real_same_as_computed(self):
for stmt in self:
if stmt.hide_bank_statement_balance:
continue
else:
super(
AccountBankStatement, stmt
)._check_balance_end_real_same_as_computed()
return True
@api.depends("name", "start_date", "end_date")
def name_get(self):
res = []
for statement in self:
name = "%s (%s => %s)" % (
statement.name,
statement.start_date
and format_date(self.env, statement.start_date)
or "",
statement.end_date and format_date(self.env, statement.end_date) or "",
)
res.append((statement.id, name))
return res
class AccountBankStatementLine(models.Model):
_inherit = "account.bank.statement.line"
# Native order is:
# _order = 'statement_id desc, sequence, id desc'
_order = "statement_id desc, date desc, sequence, id desc"
# Disable guessing for reconciliation
# because my experience with several customers shows that it is a problem
# in the following scenario : move line 'x' has been "guessed" by OpenERP
# to be reconciled with a statement line 'Y' at the end of the bank
# statement, but it is a mistake because it should be reconciled with
# statement line 'B' at the beginning of the bank statement
# When the user is on statement line 'B', he tries to select
# move line 'x', but it can't find it... because it is already "reserved"
# by the guess of OpenERP for statement line 'Y' ! To solve this problem,
# the user must go to statement line 'Y' and unselect move line 'x'
# and then come back on statement line 'B' and select move line 'A'...
# but non super-expert users can't do that because it is impossible to
# figure out that the fact that the user can't find move line 'x'
# is caused by this.
# Set search_reconciliation_proposition to False by default
# TODO: re-write in v10
# def get_data_for_reconciliations(
# self, cr, uid, ids, excluded_ids=None,
# search_reconciliation_proposition=False, context=None):
# # Make variable name shorted for PEP8 !
# search_rec_prop = search_reconciliation_proposition
# return super().\
# get_data_for_reconciliations(
# cr, uid, ids, excluded_ids=excluded_ids,
# search_reconciliation_proposition=search_rec_prop,
# context=context)
def show_account_move(self):
self.ensure_one()
action = self.env.ref("account.action_move_line_form").read()[0]
# Note: this action is on account.move, not account.move.line !
action.update(
{
"views": False,
"view_id": False,
"view_mode": "form,tree",
"res_id": self.move_id.id,
}
)
return action