[add] statement cancel line: ask for confirmation if the line is reconciled

This commit is contained in:
Leonardo Pistone
2014-01-27 12:30:24 +01:00
parent 0b6d8c85be
commit 060862248e
7 changed files with 116 additions and 1 deletions

View File

@@ -22,3 +22,4 @@
import statement # noqa
import statement_line # noqa
import wizard # noqa

View File

@@ -43,6 +43,7 @@
'init_xml': [],
'update_xml': [
'statement_view.xml',
'wizard/cancel_line_view.xml',
],
'demo_xml': [],
'test': [

View File

@@ -97,6 +97,28 @@ class StatementLine(orm.Model):
return res
def button_cancel(self, cr, uid, ids, context=None):
"""Check if a line is reconciled, and cancel it. Return action."""
if context is None:
context = {}
for st_line in self.browse(cr, uid, ids, context=context):
for move in st_line.move_ids:
for move_line in move.line_id:
if move_line.reconcile:
# ask confirmation, we have some reconciliation already
return {
'type': 'ir.actions.act_window',
'res_model': 'wizard.cancel.line',
'view_type': 'form',
'view_mode': 'form',
'target': 'new',
'context': context,
}
# no reconciliation to worry about: we cancel our lines directly then
return self.cancel(cr, uid, ids, context=context)
def cancel(self, cr, uid, ids, context=None):
"""Cancel one statement line, return action.

View File

@@ -15,7 +15,7 @@
string="Confirm transaction"
icon="gtk-ok"
type="object"/>
<button name="cancel" states="confirmed"
<button name="button_cancel" states="confirmed"
string="Cancel transaction"
icon="gtk-cancel"
type="object"/>

View File

@@ -0,0 +1,23 @@
# -*- coding: utf-8 -*-
###############################################################################
# #
# Author: Leonardo Pistone
# Copyright 2014 Camptocamp SA
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU Affero General Public License as #
# published by the Free Software Foundation, either version 3 of the #
# License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU Affero General Public License for more details. #
# #
# You should have received a copy of the GNU Affero General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
"""Account Statement Cancel Line."""
import cancel_line # noqa

View File

@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
###############################################################################
# #
# Author: Leonardo Pistone
# Copyright 2014 Camptocamp SA
# #
# This program is free software: you can redistribute it and/or modify #
# it under the terms of the GNU Affero General Public License as #
# published by the Free Software Foundation, either version 3 of the #
# License, or (at your option) any later version. #
# #
# This program is distributed in the hope that it will be useful, #
# but WITHOUT ANY WARRANTY; without even the implied warranty of #
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
# GNU Affero General Public License for more details. #
# #
# You should have received a copy of the GNU Affero General Public License #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
###############################################################################
"""Wizard to Cancel a Statement Line."""
from openerp.osv import orm
class wizard_cancel_line(orm.TransientModel):
"""Wizard to Cancel a Statement Line."""
_name = "wizard.cancel.line"
_description = "Cancel Line"
_columns = {
}
def unreconcile(self, cr, uid, ids, context=None):
"""Proceed and cancel the statement line, return Action.
This will delete the move.line and the reconciliation.
"""
return self.pool['account.bank.statement.line'].cancel(
cr,
uid,
context['active_ids'],
context=context
)

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>
<record id="view_wizard_cancel_line_form" model="ir.ui.view">
<field name="name">view.wizard.cancel.line.form</field>
<field name="model">wizard.cancel.line</field>
<field name="arch" type="xml">
<form string="Reconciled Entries" version="7.0">
<separator string="Unreconciliation"/>
<label string="Some entries are already reconciled. Do you want to unreconcile them and proceed?"/>
<footer>
<button name="unreconcile" string="Unreconcile" type="object" class="oe_highlight"/>
or
<button string="Cancel" class="oe_link" special="cancel"/>
</footer>
</form>
</field>
</record>
</data>
</openerp>