From 006e46a0aa147a7b82b0ef583c1df93b6da213bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Wed, 3 Feb 2016 21:23:34 +0100 Subject: [PATCH] Merge Third Party Balance into Aged Balance Also add date to Aged Balance and add lines without maturity in last term. But also add a date on Reconciliation as the highest date of the reconciled lines. issue5270 review20681002 --- CHANGELOG | 4 + __init__.py | 3 - account.py | 157 +++++-------------- account.xml | 19 --- aged_balance.odt | Bin 25925 -> 13291 bytes move.py | 31 +++- third_party_balance.odt | Bin 28537 -> 0 bytes view/open_aged_balance_start_form.xml | 2 + view/open_third_party_balance_start_form.xml | 12 -- 9 files changed, 73 insertions(+), 155 deletions(-) delete mode 100644 third_party_balance.odt delete mode 100644 view/open_third_party_balance_start_form.xml diff --git a/CHANGELOG b/CHANGELOG index a17a344068..30c0802ec9 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,7 @@ +* Merge Third Party Balance into Aged Balance +* Add date to Aged Balance +* Add date on Reconciliation + Version 3.8.0 - 2015-11-02 * Bug fixes (see mercurial logs for details) * Make Chart of Account not translatable diff --git a/__init__.py b/__init__.py index 8a718fc64c..2a77933b59 100644 --- a/__init__.py +++ b/__init__.py @@ -33,7 +33,6 @@ def register(): CreateChartProperties, UpdateChartStart, UpdateChartSucceed, - OpenThirdPartyBalanceStart, OpenAgedBalanceStart, Configuration, Period, @@ -87,7 +86,6 @@ def register(): OpenIncomeStatement, CreateChart, UpdateChart, - OpenThirdPartyBalance, OpenAgedBalance, ClosePeriod, ReOpenPeriod, @@ -108,7 +106,6 @@ def register(): Pool.register( GeneralLedger, TrialBalance, - ThirdPartyBalance, AgedBalance, GeneralJournal, module='account', type_='report') diff --git a/account.py b/account.py index e3d8efbb98..29b8e9e623 100644 --- a/account.py +++ b/account.py @@ -6,7 +6,7 @@ import operator from itertools import izip, groupby from functools import wraps -from sql import Column, Literal, Null +from sql import Column, Null from sql.aggregate import Sum from sql.conditionals import Coalesce, Case @@ -28,7 +28,6 @@ __all__ = ['TypeTemplate', 'Type', 'OpenType', 'AccountTemplate', 'Account', 'OpenIncomeStatementStart', 'OpenIncomeStatement', 'CreateChartStart', 'CreateChartAccount', 'CreateChartProperties', 'CreateChart', 'UpdateChartStart', 'UpdateChartSucceed', 'UpdateChart', - 'OpenThirdPartyBalanceStart', 'OpenThirdPartyBalance', 'ThirdPartyBalance', 'OpenAgedBalanceStart', 'OpenAgedBalance', 'AgedBalance'] @@ -1856,115 +1855,6 @@ class UpdateChart(Wizard): return 'succeed' -class OpenThirdPartyBalanceStart(ModelView): - 'Open Third Party Balance' - __name__ = 'account.open_third_party_balance.start' - company = fields.Many2One('company.company', 'Company', required=True) - fiscalyear = fields.Many2One('account.fiscalyear', 'Fiscal Year', - required=True) - posted = fields.Boolean('Posted Move', help='Show only posted move') - - @staticmethod - def default_fiscalyear(): - Fiscalyear = Pool().get('account.fiscalyear') - return Fiscalyear.find( - Transaction().context.get('company'), exception=False) - - @staticmethod - def default_posted(): - return False - - @staticmethod - def default_company(): - return Transaction().context.get('company') - - -class OpenThirdPartyBalance(Wizard): - 'Open Third Party Balance' - __name__ = 'account.open_third_party_balance' - start = StateView('account.open_third_party_balance.start', - 'account.open_third_party_balance_start_view_form', [ - Button('Cancel', 'end', 'tryton-cancel'), - Button('Print', 'print_', 'tryton-print', default=True), - ]) - print_ = StateReport('account.third_party_balance') - - def do_print_(self, action): - data = { - 'company': self.start.company.id, - 'fiscalyear': self.start.fiscalyear.id, - 'posted': self.start.posted, - } - return action, data - - def transition_print_(self): - return 'end' - - -class ThirdPartyBalance(Report): - __name__ = 'account.third_party_balance' - - @classmethod - def get_context(cls, records, data): - report_context = super(ThirdPartyBalance, cls).get_context(records, - data) - - pool = Pool() - Party = pool.get('party.party') - MoveLine = pool.get('account.move.line') - Move = pool.get('account.move') - Account = pool.get('account.account') - Company = pool.get('company.company') - Date = pool.get('ir.date') - cursor = Transaction().cursor - - line = MoveLine.__table__() - move = Move.__table__() - account = Account.__table__() - - company = Company(data['company']) - report_context['company'] = company - report_context['digits'] = company.currency.digits - report_context['fiscalyear'] = data['fiscalyear'] - with Transaction().set_context(context=report_context): - line_query, _ = MoveLine.query_get(line) - if data['posted']: - posted_clause = move.state == 'posted' - else: - posted_clause = Literal(True) - - cursor.execute(*line.join(move, condition=line.move == move.id - ).join(account, condition=line.account == account.id - ).select(line.party, Sum(line.debit), Sum(line.credit), - where=(line.party != Null) - & (account.active == True) - & account.kind.in_(('payable', 'receivable')) - & (account.company == data['company']) - & ((line.maturity_date <= Date.today()) - | (line.maturity_date == Null)) - & line_query & posted_clause, - group_by=line.party, - having=(Sum(line.debit) != 0) | (Sum(line.credit) != 0))) - - res = cursor.fetchall() - id2party = {} - for party in Party.browse([x[0] for x in res]): - id2party[party.id] = party - objects = [{ - 'name': id2party[x[0]].rec_name, - 'debit': x[1], - 'credit': x[2], - 'solde': x[1] - x[2], - } for x in res] - objects.sort(lambda x, y: cmp(x['name'], y['name'])) - report_context['total_debit'] = sum((x['debit'] for x in objects)) - report_context['total_credit'] = sum((x['credit'] for x in objects)) - report_context['total_solde'] = sum((x['solde'] for x in objects)) - report_context['records'] = objects - - return report_context - - class OpenAgedBalanceStart(ModelView): 'Open Aged Balance' __name__ = 'account.open_aged_balance.start' @@ -1972,9 +1862,18 @@ class OpenAgedBalanceStart(ModelView): balance_type = fields.Selection( [('customer', 'Customer'), ('supplier', 'Supplier'), ('both', 'Both')], "Type", required=True) + date = fields.Date('Date', required=True) term1 = fields.Integer("First Term", required=True) - term2 = fields.Integer("Second Term", required=True) - term3 = fields.Integer("Third Term", required=True) + term2 = fields.Integer("Second Term", required=True, + domain=[ + ('term2', '>', Eval('term1', 0)), + ], + depends=['term1']) + term3 = fields.Integer("Third Term", required=True, + domain=[ + ('term3', '>', Eval('term2', 0)), + ], + depends=['term2']) unit = fields.Selection( [('day', 'Day'), ('month', 'Month')], "Unit", required=True) posted = fields.Boolean('Posted Move', help='Show only posted move') @@ -1987,6 +1886,10 @@ class OpenAgedBalanceStart(ModelView): def default_posted(): return False + @classmethod + def default_date(cls): + return Pool().get('ir.date').today() + @staticmethod def default_term1(): return 30 @@ -2032,6 +1935,7 @@ class OpenAgedBalance(Wizard): error_description="term_overlap_desc") data = { 'company': self.start.company.id, + 'date': self.start.date, 'term1': self.start.term1, 'term2': self.start.term2, 'term3': self.start.term3, @@ -2056,13 +1960,14 @@ class AgedBalance(Report): Party = pool.get('party.party') MoveLine = pool.get('account.move.line') Move = pool.get('account.move') + Reconciliation = pool.get('account.move.reconciliation') Account = pool.get('account.account') Company = pool.get('company.company') - Date = pool.get('ir.date') cursor = Transaction().cursor line = MoveLine.__table__() move = Move.__table__() + reconciliation = Reconciliation.__table__() account = Account.__table__() company = Company(data['company']) @@ -2071,7 +1976,7 @@ class AgedBalance(Report): with Transaction().set_context(context=report_context): line_query, _ = MoveLine.query_get(line) - terms = (data['term1'], data['term2'], data['term3']) + terms = (0, data['term1'], data['term2'], data['term3']) if data['unit'] == 'month': coef = datetime.timedelta(days=30) else: @@ -2083,20 +1988,27 @@ class AgedBalance(Report): 'customer': ('receivable',), }[data['balance_type']] + report_context['date'] = date = data['date'] res = {} for position, term in enumerate(terms): - term_query = line.maturity_date <= (Date.today() - term * coef) - if position != 2: + term_query = line.maturity_date <= (date - term * coef) + if position + 1 < len(terms): term_query &= line.maturity_date > ( - Date.today() - terms[position + 1] * coef) + date - terms[position + 1] * coef) + else: + term_query |= line.maturity_date == Null cursor.execute(*line.join(move, condition=line.move == move.id ).join(account, condition=line.account == account.id + ).join(reconciliation, 'LEFT', + condition=reconciliation.id == line.reconciliation ).select(line.party, Sum(line.debit) - Sum(line.credit), where=(line.party != Null) & (account.active == True) & account.kind.in_(kind) - & (line.reconciliation == Null) + & ((line.reconciliation == Null) + | (reconciliation.date > date)) + & (move.date <= date) & (account.company == data['company']) & term_query & line_query, group_by=line.party, @@ -2113,17 +2025,22 @@ class AgedBalance(Report): report_context['main_title'] = data['balance_type'] report_context['unit'] = data['unit'] - for i in range(3): + total = 0 + for i in range(len(terms)): report_context['total' + str(i)] = sum( (v[i] for v in res.itervalues())) + total += report_context['total' + str(i)] report_context['term' + str(i)] = terms[i] + report_context['total'] = total report_context['company'] = company report_context['parties'] = [{ 'name': p.rec_name, + 'balance': sum(res[p.id]), 'amount0': res[p.id][0], 'amount1': res[p.id][1], 'amount2': res[p.id][2], + 'amount3': res[p.id][3], } for p in parties] return report_context diff --git a/account.xml b/account.xml index d830c8c067..dff06932d4 100644 --- a/account.xml +++ b/account.xml @@ -523,25 +523,6 @@ this repository contains the full copyright notices and license terms. --> id="menu_open_income_statement" icon="tryton-tree" name="Income Statement"/> - - account.open_third_party_balance.start - form - open_third_party_balance_start_form - - - Third Party Balance - - account.third_party_balance - account/third_party_balance.odt - - - Open Third Party Balance - account.open_third_party_balance - - - account.open_aged_balance.start form diff --git a/aged_balance.odt b/aged_balance.odt index 5ef8ddcf11bc19607a4e903f9cca93aeb522ac3d..a7956d1eb78aba72458c0d4d4792956d0ada354d 100644 GIT binary patch literal 13291 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 R1_BxUh6iu>qcOOC^?&e)i3tDz diff --git a/move.py b/move.py index 905d697f43..fa36604bb4 100644 --- a/move.py +++ b/move.py @@ -7,7 +7,7 @@ from operator import itemgetter from collections import defaultdict from sql import Null -from sql.aggregate import Sum +from sql.aggregate import Sum, Max from sql.conditionals import Coalesce, Case from trytond.model import ModelView, ModelSQL, fields, Check @@ -460,6 +460,8 @@ class Reconciliation(ModelSQL, ModelView): name = fields.Char('Name', size=None, required=True) lines = fields.One2Many('account.move.line', 'reconciliation', 'Lines') + date = fields.Date('Date', required=True, select=True, + help='Highest date of the reconciled lines') @classmethod def __setup__(cls): @@ -483,6 +485,32 @@ class Reconciliation(ModelSQL, ModelView): '"%(credit)s" differ.'), }) + @classmethod + def __register__(cls, module_name): + TableHandler = backend.get('TableHandler') + cursor = Transaction().cursor + table = TableHandler(cursor, cls, module_name) + sql_table = cls.__table__() + pool = Pool() + Move = pool.get('account.move') + Line = pool.get('account.move.line') + move = Move.__table__() + line = Line.__table__() + + date_exist = table.column_exist('date') + + super(Reconciliation, cls).__register__(module_name) + + # Migration from 3.8: new date field + if not date_exist: + cursor.execute(*sql_table.update( + [sql_table.date], + line.join(move, + condition=move.id == line.move + ).select(Max(move.date), + where=line.reconciliation == sql_table.id, + group_by=line.reconciliation))) + @classmethod def create(cls, vlist): Sequence = Pool().get('ir.sequence') @@ -1579,6 +1607,7 @@ class Line(ModelSQL, ModelView): ], limit=1) return Reconciliation.create([{ 'lines': [('add', [x.id for x in lines])], + 'date': max(l.date for l in lines), }])[0] diff --git a/third_party_balance.odt b/third_party_balance.odt deleted file mode 100644 index 9b6a0c8d4ab4fedbab997030de3f71ed1c7bd4d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28537 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

-