From 50aca4ecfbcd3935d9057bbb56f2869b10e9fb96 Mon Sep 17 00:00:00 2001 From: Sergi Almacellas Abellana Date: Fri, 13 Feb 2015 18:16:42 +0100 Subject: [PATCH] Reverese credit/debit values when cancelling a move issue4538 review11901003 --- __init__.py | 1 + line.py | 23 +++++++++++++++++++++-- 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/__init__.py b/__init__.py index 5490b45901..45c6ce437f 100644 --- a/__init__.py +++ b/__init__.py @@ -12,6 +12,7 @@ def register(): OpenChartAccountStart, AnalyticAccountEntry, Line, + Move, MoveLine, module='analytic_account', type_='model') Pool.register( diff --git a/line.py b/line.py index fd7a428a39..18bc02fc12 100644 --- a/line.py +++ b/line.py @@ -6,9 +6,10 @@ from trytond.wizard import Wizard, StateAction from trytond import backend from trytond.pyson import Eval, PYSONEncoder from trytond.transaction import Transaction -from trytond.pool import Pool +from trytond.pool import Pool, PoolMeta -__all__ = ['Line', 'MoveLine', 'OpenAccount'] +__all__ = ['Line', 'Move', 'MoveLine', 'OpenAccount'] +__metaclass__ = PoolMeta class Line(ModelSQL, ModelView): @@ -131,6 +132,24 @@ class Line(ModelSQL, ModelView): (self.account.rec_name,)) +class Move: + __name__ = 'account.move' + + def cancel(self, default=None): + 'Reverse credit/debit of analytic lines' + pool = Pool() + AnalyticLine = pool.get('analytic_account.line') + cancel_move = super(Move, self).cancel(default) + analytic_lines = [] + for line in cancel_move.lines: + for analytic_line in line.analytic_lines: + analytic_line.debit, analytic_line.credit = ( + analytic_line.credit, analytic_line.debit) + analytic_lines.append(analytic_line) + AnalyticLine.save(analytic_lines) + return cancel_move + + class MoveLine(ModelSQL, ModelView): __name__ = 'account.move.line' analytic_lines = fields.One2Many('analytic_account.line', 'move_line',