From 7c4dc9dc6e4117caf77bc6934305a98f28a14069 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 5 May 2009 12:32:52 +0200 Subject: [PATCH 01/48] Fix test on journal.view.columns for issue1037 --- move.py | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/move.py b/move.py index 75bf12a257..e990cf0725 100644 --- a/move.py +++ b/move.py @@ -1226,10 +1226,11 @@ class Line(ModelSQL, ModelView): else: attrs.append('required="0"') xml += '\n' % (column.field.name, ' '.join(attrs)) - if 'currency_digits' not in journal.view.columns: + column_names = [x.field.name for x in journal.view.columns] + if 'currency_digits' not in column_names: xml += '' - if 'second_currency' in journal.view.columns \ - and 'second_currency_digits' not in journal.view.columns: + if 'second_currency' in column_names \ + and 'second_currency_digits' not in column_names: xml += '' xml += '' result['arch'] = xml From f1de5d6240d4164afaeccb7f547e6f58d40b9218 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 8 May 2009 00:22:28 +0200 Subject: [PATCH 02/48] Set default value for left and right when copying account --- account.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/account.py b/account.py index 52c766a160..e716744a7f 100644 --- a/account.py +++ b/account.py @@ -817,6 +817,10 @@ class Account(ModelSQL, ModelView): return args2 def copy(self, cursor, user, ids, default=None, context=None): + if default is None: + default = {} + default['left'] = 0 + default['right'] = 0 res = super(Account, self).copy(cursor, user, ids, default=default, context=context) self._rebuild_tree(cursor, user, 'parent', False, 0) From 6211e5aaf418cf5d75f69cd477b5800e2e17a9d5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 18 May 2009 19:11:05 +0200 Subject: [PATCH 03/48] Use depends on fields to add missing fields for issue1051 --- move.py | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/move.py b/move.py index e990cf0725..440c7ff0e6 100644 --- a/move.py +++ b/move.py @@ -1211,9 +1211,9 @@ class Line(ModelSQL, ModelView): xml = '\n' \ '\n' % title - fields = [] + fields = set() for column in journal.view.columns: - fields.append(column.field.name) + fields.add(column.field.name) attrs = [] if column.field.name == 'debit': attrs.append('sum="Debit"') @@ -1226,16 +1226,13 @@ class Line(ModelSQL, ModelView): else: attrs.append('required="0"') xml += '\n' % (column.field.name, ' '.join(attrs)) - column_names = [x.field.name for x in journal.view.columns] - if 'currency_digits' not in column_names: - xml += '' - if 'second_currency' in column_names \ - and 'second_currency_digits' not in column_names: - xml += '' + for depend in getattr(self, column.field.name).depends: + fields.add(depend) + fields.add('state') xml += '' result['arch'] = xml - result['fields'] = self.fields_get(cursor, user, fields_names=fields, - context=context) + result['fields'] = self.fields_get(cursor, user, + fields_names=list(fields), context=context) del result['md5'] result['md5'] = md5.new(str(result)).hexdigest() if hexmd5 == result['md5']: From 81ac94903f2ea802655ba6503a60a7e3b936debe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 1 Jun 2009 23:55:54 +0200 Subject: [PATCH 04/48] Copy translation from template for issue1025 --- __init__.py | 1 + account.py | 67 +++++++++++++++++++++++++++++++++ ir.py | 41 ++++++++++++++++++++ tax.py | 105 ++++++++++++++++++++++++++++++++++++++++++++++++++-- 4 files changed, 210 insertions(+), 4 deletions(-) create mode 100644 ir.py diff --git a/__init__.py b/__init__.py index fe13dce5bb..5d6c9e9d6d 100644 --- a/__init__.py +++ b/__init__.py @@ -1,5 +1,6 @@ #This file is part of Tryton. The COPYRIGHT file at the top level of this repository contains the full copyright notices and license terms. +from ir import * from fiscalyear import * from account import * from period import * diff --git a/account.py b/account.py index e716744a7f..8ae0a58b94 100644 --- a/account.py +++ b/account.py @@ -99,6 +99,7 @@ class TypeTemplate(ModelSQL, ModelView): :return: id of the type created ''' type_obj = self.pool.get('account.account.type') + lang_obj = self.pool.get('ir.lang') if template2type is None: template2type = {} @@ -112,6 +113,22 @@ class TypeTemplate(ModelSQL, ModelView): vals['parent'] = parent_id new_id = type_obj.create(cursor, user, vals, context=context) + + prev_lang = template._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + template.setLang(lang) + data = {} + for field in template._columns.keys(): + if template._columns[field].translate: + data[field] = template[field] + if data: + type_obj.write(cursor, user, new_id, data, context=ctx) + template.setLang(prev_lang) template2type[template.id] = new_id else: new_id = template2type[template.id] @@ -240,6 +257,7 @@ class Type(ModelSQL, ModelView): into type. The dictionary is filled with new types ''' template_obj = self.pool.get('account.account.type.template') + lang_obj = self.pool.get('ir.lang') if template2type is None: template2type = {} @@ -252,6 +270,20 @@ class Type(ModelSQL, ModelView): context=context, type=type) if vals: self.write(cursor, user, type.id, vals, context=context) + + prev_lang = type._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + type.setLang(lang) + data = template_obj._get_type_value(cursor, user, + type.template, context=ctx, type=type) + if data: + self.write(cursor, user, type.id, data, context=ctx) + type.setLang(prev_lang) template2type[type.template.id] = type.id for child in type.childs: @@ -389,6 +421,7 @@ class AccountTemplate(ModelSQL, ModelView): :return: id of the account created ''' account_obj = self.pool.get('account.account') + lang_obj = self.pool.get('ir.lang') if template2account is None: template2account = {} @@ -406,6 +439,22 @@ class AccountTemplate(ModelSQL, ModelView): vals['type'] = template2type.get(template.type.id, False) new_id = account_obj.create(cursor, user, vals, context=context) + + prev_lang = template._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + template.setLang(lang) + data = {} + for field in template._columns.keys(): + if template._columns[field].translate: + data[field] = template[field] + if data: + account_obj.write(cursor, user, new_id, data, context=ctx) + template.setLang(prev_lang) template2account[template.id] = new_id else: new_id = template2account[template.id] @@ -872,6 +921,7 @@ class Account(ModelSQL, ModelView): into type. ''' template_obj = self.pool.get('account.account.template') + lang_obj = self.pool.get('ir.lang') if template2account is None: template2account = {} @@ -891,6 +941,20 @@ class Account(ModelSQL, ModelView): False) if vals: self.write(cursor, user, account.id, vals, context=context) + + prev_lang = account._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + account.setLang(lang) + data = template_obj._get_account_value(cursor, user, + account.template, context=ctx, account=account) + if data: + self.write(cursor, user, account.id, data, context=ctx) + account.setLang(prev_lang) template2account[account.template.id] = account.id for child in account.childs: @@ -1747,6 +1811,9 @@ class CreateChartAccount(Wizard): tax_rule_line_template_obj = \ self.pool.get('account.tax.rule.line.template') + context=context.copy() + context['language'] = 'en_US' + account_template = account_template_obj.browse(cursor, user, datas['form']['account_template'], context=context) diff --git a/ir.py b/ir.py new file mode 100644 index 0000000000..4dc504912d --- /dev/null +++ b/ir.py @@ -0,0 +1,41 @@ +#This file is part of Tryton. The COPYRIGHT file at the top level of +#this repository contains the full copyright notices and license terms. +from trytond.model import ModelView, ModelSQL +from trytond.model.cacheable import Cacheable + + +class Lang(ModelSQL, ModelView, Cacheable): + _name = 'ir.lang' + + def get_translatable_languages(self, cursor, user, context=None): + res = self.get(cursor, 'translatable_languages') + if res is None: + lang_ids = self.search(cursor, user, [ + ('translatable', '=', True), + ], context=context) + res = [x.code for x in self.browse(cursor, user, lang_ids, + context=context)] + self.add(cursor, 'translatable_languages', res) + return res + + def create(self, cursor, user, vals, context=None): + # Clear cache + if self.get(cursor, 'translatable_languages'): + self.invalidate(cursor, 'translatable_languages') + return super(Lang, self).create(cursor, user, vals, + context=context) + + def write(self, cursor, user, ids, vals, context=None): + # Clear cache + if self.get(cursor, 'translatable_languages'): + self.invalidate(cursor, 'translatable_languages') + return super(Lang, self).write(cursor, user, ids, vals, + context=context) + + def delete(self, cursor, user, ids, context=None): + # Clear cache + if self.get(cursor, 'translatable_languages'): + self.invalidate(cursor, 'translatable_languages') + return super(Lang, self).delete(cursor, user, ids, + context=context) +Lang() diff --git a/tax.py b/tax.py index b25b941c59..589d69a2fd 100644 --- a/tax.py +++ b/tax.py @@ -30,7 +30,7 @@ class CodeTemplate(ModelSQL, ModelView): _name = 'account.tax.code.template' _description = __doc__ - name = fields.Char('Name', required=True) + name = fields.Char('Name', required=True, translate=True) code = fields.Char('Code') parent = fields.Many2One('account.tax.code.template', 'Parent') childs = fields.One2Many('account.tax.code.template', 'parent', 'Children') @@ -89,6 +89,7 @@ class CodeTemplate(ModelSQL, ModelView): :return: id of the tax code created ''' tax_code_obj = self.pool.get('account.tax.code') + lang_obj = self.pool.get('ir.lang') if template2tax_code is None: template2tax_code = {} @@ -103,6 +104,22 @@ class CodeTemplate(ModelSQL, ModelView): vals['parent'] = parent_id new_id = tax_code_obj.create(cursor, user, vals, context=context) + + prev_lang = template._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + template.setLang(lang) + data = {} + for field in template._columns.keys(): + if template._columns[field].translate: + data[field] = template[field] + if data: + tax_code_obj.write(cursor, user, new_id, data, context=ctx) + template.setLang(prev_lang) template2tax_code[template.id] = new_id else: new_id = template2tax_code[template.id] @@ -122,7 +139,8 @@ class Code(ModelSQL, ModelView): _name = 'account.tax.code' _description = __doc__ - name = fields.Char('Name', size=None, required=True, select=1) + name = fields.Char('Name', size=None, required=True, select=1, + translate=True) code = fields.Char('Code', size=None, select=1) active = fields.Boolean('Active', select=2) company = fields.Many2One('company.company', 'Company', required=True) @@ -257,6 +275,7 @@ class Code(ModelSQL, ModelView): tax code. The dictionary is filled with new tax codes ''' template_obj = self.pool.get('account.tax.code.template') + lang_obj = self.pool.get('ir.lang') if template2tax_code is None: template2tax_code = {} @@ -269,6 +288,20 @@ class Code(ModelSQL, ModelView): code.template, context=context, code=code) if vals: self.write(cursor, user, code.id, vals, context=context) + + prev_lang = code._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + code.setLang(lang) + data = template_obj._get_tax_code_value(cursor, user, + code.template, context=ctx, code=code) + if data: + self.write(cursor, user, code.id, data, context=ctx) + code.setLang(prev_lang) template2tax_code[code.template.id] = code.id for child in code.childs: @@ -466,6 +499,7 @@ class TaxTemplate(ModelSQL, ModelView): :return: id of the tax created ''' tax_obj = self.pool.get('account.tax') + lang_obj = self.pool.get('ir.lang') if template2tax is None: template2tax = {} @@ -509,6 +543,22 @@ class TaxTemplate(ModelSQL, ModelView): vals['credit_note_tax_code'] = False new_id = tax_obj.create(cursor, user, vals, context=context) + + prev_lang = template._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + template.setLang(lang) + data = {} + for field in template._columns.keys(): + if template._columns[field].translate: + data[field] = template[field] + if data: + tax_obj.write(cursor, user, new_id, data, context=ctx) + template.setLang(prev_lang) template2tax[template.id] = new_id else: new_id = template2tax[template.id] @@ -755,6 +805,7 @@ class Tax(ModelSQL, ModelView): The dictionary is filled with new taxes ''' template_obj = self.pool.get('account.tax.template') + lang_obj = self.pool.get('ir.lang') if template2tax is None: template2tax = {} @@ -828,6 +879,20 @@ class Tax(ModelSQL, ModelView): if vals: self.write(cursor, user, tax.id, vals, context=context) + + prev_lang = tax._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + tax.setLang(lang) + data = template_obj._get_tax_value(cursor, user, tax.template, + context=ctx, tax=tax) + if data: + self.write(cursor, user, tax.id, data, context=ctx) + tax.setLang(prev_lang) template2tax[tax.template.id] = tax.id for child in tax.childs: @@ -855,7 +920,7 @@ class RuleTemplate(ModelSQL, ModelView): 'Tax Rule Template' _name = 'account.tax.rule.template' _description = __doc__ - name = fields.Char('Name', required=True) + name = fields.Char('Name', required=True, translate=True) lines = fields.One2Many('account.tax.rule.line.template', 'rule', 'Lines') account = fields.Many2One('account.account.template', 'Account Template', domain=[('parent', '=', False)], required=True) @@ -897,6 +962,7 @@ class RuleTemplate(ModelSQL, ModelView): :return: id of the tax rule created ''' rule_obj = self.pool.get('account.tax.rule') + lang_obj = self.pool.get('ir.lang') if template2rule is None: template2rule = {} @@ -909,6 +975,22 @@ class RuleTemplate(ModelSQL, ModelView): context=context) vals['company'] = company_id new_id = rule_obj.create(cursor, user, vals, context=context) + + prev_lang = template._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + template.setLang(lang) + data = {} + for field in template._columns.keys(): + if template._columns[field].translate: + data[field] = template[field] + if data: + rule_obj.write(cursor, user, new_id, data, context=ctx) + template.setLang(prev_lang) template2rule[template.id] = new_id else: new_id = template2rule[template.id] @@ -921,7 +1003,7 @@ class Rule(ModelSQL, ModelView): 'Tax Rule' _name = 'account.tax.rule' _description = __doc__ - name = fields.Char('Name', required=True) + name = fields.Char('Name', required=True, translate=True) company = fields.Many2One('company.company', 'Company', required=True, select=1, domain="[('id', '=', context.get('company', 0))]") lines = fields.One2Many('account.tax.rule.line', 'rule', 'Lines') @@ -972,6 +1054,7 @@ class Rule(ModelSQL, ModelView): tax rule. The dictionary is filled with new tax rules ''' template_obj = self.pool.get('account.tax.rule.template') + lang_obj = self.pool.get('ir.lang') if template2rule is None: template2rule = {} @@ -984,6 +1067,20 @@ class Rule(ModelSQL, ModelView): rule.template, context=context, rule=rule) if vals: self.write(cursor, user, rule.id, vals, context=context) + + prev_lang = rule._context.get('language') or 'en_US' + ctx = context.copy() + for lang in lang_obj.get_translatable_languages(cursor, user, + context=context): + if lang == prev_lang: + continue + ctx['language'] = lang + rule.setLang(lang) + data = template_obj._get_tax_rule_value(cursor, user, + rule.template, context=ctx, rule=rule) + if data: + self.write(cursor, user, rule.id, data, context=ctx) + rule.setLang(prev_lang) template2rule[rule.template.id] = rule.id Rule() From 584eaa915c2be95978acc1be3c19039415118418 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 1 Jun 2009 23:52:51 +0200 Subject: [PATCH 05/48] Remove wrong help on account of taxes --- tax.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/tax.py b/tax.py index 589d69a2fd..ed860cd2b6 100644 --- a/tax.py +++ b/tax.py @@ -614,14 +614,12 @@ class Tax(ModelSQL, ModelView): domain="[('id', '=', context.get('company', 0))]") invoice_account = fields.Many2One('account.account', 'Invoice Account', domain="[('company', '=', company)]", - help='Leave empty to use the default invoice account', states={ 'readonly': "type == 'none' or not company", 'required': "type != 'none' and company", }, depends=['company']) credit_note_account = fields.Many2One('account.account', 'Credit Note Account', domain="[('company', '=', company)]", - help='Leave empty to use the default credit note account', states={ 'readonly': "type == 'none' or not company", 'required': "type != 'none' and company", From 643c40bfaf4a6de0ca69802785ccd74f8d38dacf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 7 Jul 2009 10:51:48 +0200 Subject: [PATCH 06/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index db1d1747ef..30eac9d0c0 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.0', + 'version': '1.2.1', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/', From 18f5e7f8b111808e854ce55b3ce756d9e226defd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 7 Jul 2009 10:52:37 +0200 Subject: [PATCH 07/48] Prepare changelog for release 1.2.1 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index c4a50560c0..008ff48fcb 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.2.1 - 2009-07-07 +* Some bug fixes (see mercurial logs for details) + Version 1.2.0 - 2009-04-20 * Bug fixes (see mercurial logs for details) * Add tax rule to replace vat and supplier_vat on party From 265b3801d2cfa5e5821e631e599b321228a73bfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 7 Jul 2009 10:52:41 +0200 Subject: [PATCH 08/48] Added tag 1.2.1 for changeset 2de18291f47d --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index eb54eadcc2..071c2b1b67 100644 --- a/.hgtags +++ b/.hgtags @@ -1,2 +1,3 @@ 04925636777da31ceff8c5315ab32acc5d727931 1.0.0 c25f8bf80f1f8f92954cfed3a6dd2f799bd370e4 1.2.0 +2de18291f47d187d366f61a811a364fe0c95911c 1.2.1 From b37663eea1c821b52aac2e35bc28c8e64afd2143 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 7 Jul 2009 10:53:49 +0200 Subject: [PATCH 09/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index 30eac9d0c0..aee2fed06d 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.1', + 'version': '1.2.2', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/', From f5f7fd3156ea4ff60d4e9ae6bcf6e15940235659 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 14 Jul 2009 12:59:30 +0200 Subject: [PATCH 10/48] Fix computation of end amounts in General Ledger for issue1108 --- account.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/account.py b/account.py index 8ae0a58b94..c63974bd43 100644 --- a/account.py +++ b/account.py @@ -1252,16 +1252,12 @@ class GeneralLegder(Report): ('fiscalyear', '=', datas['form']['fiscalyear']), ('end_date', '<=', end_period.start_date), ], context=context) - end_period_ids = list(set(end_period_ids).difference( - set(start_period_ids))) if datas['form']['end_period'] not in end_period_ids: end_period_ids.append(datas['form']['end_period']) else: end_period_ids = period_obj.search(cursor, user, [ ('fiscalyear', '=', datas['form']['fiscalyear']), ], context=context) - end_period_ids = list(set(end_period_ids).difference( - set(start_period_ids))) end_context = context.copy() end_context['fiscalyear'] = datas['form']['fiscalyear'] @@ -1295,7 +1291,8 @@ class GeneralLegder(Report): context['id2end_account'] = id2end_account context['digits'] = company.currency.digits context['lines'] = lambda account_id: self.lines(cursor, user, - account_id, end_period_ids, datas['form']['posted'], context) + account_id, list(set(end_period_ids).difference( + set(start_period_ids))), datas['form']['posted'], context) context['company'] = company return super(GeneralLegder, self).parse(cursor, user, report, objects, From ee631f7504226d54d7b680003fafa7a788605e72 Mon Sep 17 00:00:00 2001 From: Bertrand Chenal Date: Fri, 24 Jul 2009 17:57:09 +0200 Subject: [PATCH 11/48] Added doc --- doc/index.rst | 221 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 doc/index.rst diff --git a/doc/index.rst b/doc/index.rst new file mode 100644 index 0000000000..0057cae687 --- /dev/null +++ b/doc/index.rst @@ -0,0 +1,221 @@ +Account Module +############## + +The account module define fundamentals for most of accounting needs. + + +Fiscal Year +*********** + +A fiscal year aggregate a set of periods that are included between two +dates. A Fiscal year can be *Open* or *Closed*. Closing a fiscal year +will close all the corresponding periods. + +- Name: The name of the fiscal year. +- Code: The code. +- Starting and Ending Date: The dates in which the periods should be + included. +- Company: The company for which the fiscal year is defined. +- State: Can be *Open* or *Closed*. +- Periods: The list of periods. +- Post Move Sequence: The sequence to use for numbering moves in this + fiscal year. + + +Period +****** + +A period is mainly defined by a Starting and an Ending date, a Fiscal +Year, a Type and a State (*Open* or *Closed* ). + +The type can be *Standard* or *Adjustement*: Periods of type +*Standard* on the same fiscal year can not overlap. Period of type +*Adjustement* can overlap other periods and are typically used for all +the accounting moves that must be created when closing a fiscal year. + +Each account move must be linked to a period and a move must be +created on an open period. + + +Account Type +************ + +The Account Type Model define the structure of the accounting reports: + +- Income Statement: A checkbox that tells if accounts of this type + must appear at the top level of the Income Statement report. +- Balance Sheet: A checkbox that tells if accounts of this type + must appear at the top level of the Balance Sheet report. +- Display Balance: A selection that allow to choose how the balance + should be computed (Debit - Credit or Credit - Debit) + + +Account +******* + +An Account is defined by these fields: + +- Name +- Code +- Company +- Parent Account +- Currency +- kind: can take one of these values: + + - Payable or Receivable: if the account is used respectively on + credit and debit moves of parties. + - Expense or Revenue: if the account is used respectively on expense + and revenue moves of parties. + - View: means that the account is used to group other accounts in + the account chart. + - Other: For other accounts. + +- Type: The Account Type of the account. +- Deferral: A checkbox. If set to true, credits and debits are carried + over form fiscal year to fiscal year. +- Second currency: Force all moves for the account to have this + secondary currency. +- Reconcile: Allow move lines of this account to be reconciled. +- A list of tax: This auto-complete move with new moves lines + corresponding to thoses taxes if the user create a line linked to + the current account. +- Note + + +Journal +******* + +A Journal contains the following fields: + +- Name +- Code +- Active: A checkbox that allow to disable the tax. +- View: Defines how the moves lines of this journal should be + displayed. +- Centralised counterpart: If true all created lines are linked to the + last open movement for the current journal and the current period. +- Update Posted: if true it allow to upated posted moves of this + journal. +- Default Credit Account, Default Debit Account: Used as default + accounts on move lines for centralised journals and for journal of + *Cash* type. +- Type: By default take one of the following values: *General*, + *Revenue*, *Expense*, *Cash*, *Situation*. + + +Move +**** + +A Move groups a list of Move Lines. It contains the following fields: + +- Name +- Reference +- Period +- Journal +- Effective Date: The date the move was created. +- Post Date: The date the move was posted. +- State: Can be *Draft* or *Posted*. A move should be balanced before + being posted. Once posted the move gets a Reference number, the + lines are posted and they can not be edited anymore. +- Lines: The move lines. + + +Moves Line: +*********** + +A Move Line is an amount of money that is credited to or debited from +an account. The fields are: + +- Name +- Reference +- Debit and Credit: Define the debited or credited amount. These two + values can not be non-zero at the same time. +- Account: The account. +- Move: The move that links all the corresponding lines. +- State: Can take one of the following value: + + - *Draft*: The line is part of a non-balanced move. + - *Valid*: The line is part of a balanced move. + - *Posted*: The line is part of a posted move. + +- Second Currency and Amount Second Currency: allow to keep track of + the original amount if the underlying transaction was made in an + other currency. +- Maturity Date: used for payable and receivable lines. The Maturity + Date is the limit date for the payment. +- Reconciliation: Hold a reconciliation number if applicable. +- Journal, Period, Date: The values on these fields comes from the + corresponding move. +- Tax Lines + +The *Reconcile Lines* wizard allow to link move lines of the same +acount for whose the credit sum is equal to the debit sum. If the +selected lines are not balanced, the wizard offer to create a +write-off. + +The *Unreconcile Lines* wizard allow to do the inverse operation. + + +Tax Code +******** + +The tax codes defines a tree structure and are used to create the tax +reports. They are used to collect the tax amounts and the base amounts +of the invoices. The Tax Code model contains the followong fields: + +- Name +- Code +- Active: A checkbox that allow to disable the tax code. +- Company: The company for which the tax code is defined. +- Parent, Children: Parent and children tax codes. +- Sum: The sum of all amounts corresponding to this tax code. + + +Tax +*** + +The tax model defines taxes, how the tax amount are computed and which +tax code to use when creating invoices. The Tax model is defined by +the following fields: + +- Name +- Description +- Group +- Active: A checkbox that allow to disable the tax code. +- Sequence +- Type: May be *Percentage* or *Fixed*. +- Amount: If Type is *Fixed*, defines a fix amount for the tax. +- Percentage: If Type is *Percentage*, defines the percentage of the + tax. +- Parent, Children: Parent and children taxes +- Company: The company for which the tax code is defined. +- Invoice Account: The account to use when creating move lines for + invoicing with this tax. +- Credit Note Account: The account to use when creating move lines for + credit notes with this tax. +- Invoice Base Code: The code to use for the base amount when this tax + is used on invoices. +- Invoice Base Sign: The sign of the base amount when summed for the + above tax code. +- Invoice Tax Code: The code to use for the tax amount when this tax + is used on invoices. +- Invoice Tax Sign: The sign of the tax amount when summed for the + above tax code. +- Credit Note Base Code: The code to use for the base amount when this tax + is used on credit notes. +- Credit Note Base Sign: The sign of the base amount summed for the + above tax code. +- Credit Note Tax Code: The code to use for the tax amount when this tax + is used on credit notes. +- Credit Note Tax Sign: The sign of the tax amount when summed for the + above tax code. + + +Templates +********* + +The Template models (Account Template, Account Type Template, Tax +Template, Tax Code Template, etc) are the equivalent of their +counterparts except that they are not linked to a company. A wizard +allow to create and update from templates the corresponding objects. + From c42a7e8a8f12db5808af99fe2b99dfd02a82ee4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 24 Jul 2009 18:41:29 +0200 Subject: [PATCH 12/48] Add missing doc in MANIFEST.in --- MANIFEST.in | 1 + 1 file changed, 1 insertion(+) diff --git a/MANIFEST.in b/MANIFEST.in index c61b52dbb5..b2a140eeeb 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -8,3 +8,4 @@ include *.xml include *.odt include *.csv include tests/* +include doc/* From 26691c25589e7b7f9d870960d23cf5e09a9bb3f4 Mon Sep 17 00:00:00 2001 From: Bertrand Chenal Date: Mon, 27 Jul 2009 15:07:19 +0200 Subject: [PATCH 13/48] Doc: typos, rewordings and improvements --- doc/index.rst | 63 +++++++++++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 24 deletions(-) diff --git a/doc/index.rst b/doc/index.rst index 0057cae687..e19efc8dd7 100644 --- a/doc/index.rst +++ b/doc/index.rst @@ -1,18 +1,18 @@ Account Module ############## -The account module define fundamentals for most of accounting needs. +The account module defines fundamentals for most of accounting needs. Fiscal Year *********** -A fiscal year aggregate a set of periods that are included between two -dates. A Fiscal year can be *Open* or *Closed*. Closing a fiscal year -will close all the corresponding periods. +A fiscal year aggregates a set of periods that are included between +two dates. A Fiscal year can be *Open* or *Closed*. Closing a fiscal +year will close all the corresponding periods. - Name: The name of the fiscal year. -- Code: The code. +- Code: The code, useful for fast data entry and searching. - Starting and Ending Date: The dates in which the periods should be included. - Company: The company for which the fiscal year is defined. @@ -32,6 +32,8 @@ The type can be *Standard* or *Adjustement*: Periods of type *Standard* on the same fiscal year can not overlap. Period of type *Adjustement* can overlap other periods and are typically used for all the accounting moves that must be created when closing a fiscal year. +By default, the system uses only *Standard* period when creating +moves. Each account move must be linked to a period and a move must be created on an open period. @@ -40,7 +42,8 @@ created on an open period. Account Type ************ -The Account Type Model define the structure of the accounting reports: +The Account Type Model defines the structure of the accounting +reports: - Income Statement: A checkbox that tells if accounts of this type must appear at the top level of the Income Statement report. @@ -76,9 +79,10 @@ An Account is defined by these fields: - Second currency: Force all moves for the account to have this secondary currency. - Reconcile: Allow move lines of this account to be reconciled. -- A list of tax: This auto-complete move with new moves lines +- Taxes: This list of tax auto-complete move with new moves lines corresponding to thoses taxes if the user create a line linked to - the current account. + the current account and if the journal type is *Expense* or + *Revenue*. - Note @@ -90,11 +94,12 @@ A Journal contains the following fields: - Name - Code - Active: A checkbox that allow to disable the tax. -- View: Defines how the moves lines of this journal should be +- View: Defines how the moves lines on this journal should be displayed. -- Centralised counterpart: If true all created lines are linked to the - last open movement for the current journal and the current period. -- Update Posted: if true it allow to upated posted moves of this +- Centralised counterpart: If checked all created lines are linked to + the last open movement for the current journal and the current + period. +- Update Posted: if true it allow to upate posted moves of this journal. - Default Credit Account, Default Debit Account: Used as default accounts on move lines for centralised journals and for journal of @@ -128,8 +133,8 @@ an account. The fields are: - Name - Reference -- Debit and Credit: Define the debited or credited amount. These two - values can not be non-zero at the same time. +- Debit and Credit: Define the debited or credited amount. Only one + field can be filled. - Account: The account. - Move: The move that links all the corresponding lines. - State: Can take one of the following value: @@ -146,14 +151,17 @@ an account. The fields are: - Reconciliation: Hold a reconciliation number if applicable. - Journal, Period, Date: The values on these fields comes from the corresponding move. -- Tax Lines +- Tax Lines. Gives the distribution of the amount line on the account + chart The *Reconcile Lines* wizard allow to link move lines of the same acount for whose the credit sum is equal to the debit sum. If the selected lines are not balanced, the wizard offer to create a -write-off. +write-off line with the difference to make the reconciliation. -The *Unreconcile Lines* wizard allow to do the inverse operation. +The *Unreconcile Lines* wizard allow to do the inverse operation (but +doesn't reverse other operations that could have triggered by the +reconciliation). Tax Code @@ -183,16 +191,18 @@ the following fields: - Group - Active: A checkbox that allow to disable the tax code. - Sequence -- Type: May be *Percentage* or *Fixed*. +- Type: May be *Percentage*, *Fixed*, or *None* for empty tax. - Amount: If Type is *Fixed*, defines a fix amount for the tax. - Percentage: If Type is *Percentage*, defines the percentage of the tax. - Parent, Children: Parent and children taxes -- Company: The company for which the tax code is defined. +- Company: The company for which the tax is defined. - Invoice Account: The account to use when creating move lines for - invoicing with this tax. + invoicing with this tax, for credit on revenue or for debit on + expense. - Credit Note Account: The account to use when creating move lines for - credit notes with this tax. + credit notes with this tax, for debit on revenue or for credit on + expense - Invoice Base Code: The code to use for the base amount when this tax is used on invoices. - Invoice Base Sign: The sign of the base amount when summed for the @@ -210,12 +220,17 @@ the following fields: - Credit Note Tax Sign: The sign of the tax amount when summed for the above tax code. +If a code field is left empty, the corresponding amounts will be +ignored by the tax reports. + Templates ********* The Template models (Account Template, Account Type Template, Tax Template, Tax Code Template, etc) are the equivalent of their -counterparts except that they are not linked to a company. A wizard -allow to create and update from templates the corresponding objects. - +counterparts except that they are not linked to a company. Two wizard +(*Create Chart of Account from Template* and *Update Chart of Account +from Template*) allow to create and update the accounts from the +account templates (and consequently all other models associated to +templates). From f41aa5a7679f90850c1467754454fe6171209413 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 27 Jul 2009 16:44:11 +0200 Subject: [PATCH 14/48] Remove version from INSTALL, it is in setup.py --- INSTALL | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL b/INSTALL index 647b181bc1..b101dc129d 100644 --- a/INSTALL +++ b/INSTALL @@ -6,7 +6,7 @@ Prerequisites * Python 2.4 or later (http://www.python.org/) * egenix-mx-base (http://www.egenix.com/products/python/) - * trytond 1.1.x (http://www.tryton.org/) + * trytond (http://www.tryton.org/) * trytond_company (http://www.tryton.org/) * trytond_party (http://www.tryton.org/) * trytond_currency (http://www.tryton.org/) From 691f00c2e647e7dabf107eea3ae1258b46847ddd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 31 Aug 2009 10:54:14 +0200 Subject: [PATCH 15/48] Prepare changelog for release 1.2.2 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 008ff48fcb..394dac29fd 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.2.2 - 2009-08-31 +* Some bug fixes (see mercurial logs for details) + Version 1.2.1 - 2009-07-07 * Some bug fixes (see mercurial logs for details) From f92a526303ff7528967b06cc5b317870875f25ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 31 Aug 2009 10:54:23 +0200 Subject: [PATCH 16/48] Added tag 1.2.2 for changeset c04efed7fbda --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 071c2b1b67..59df2bc90f 100644 --- a/.hgtags +++ b/.hgtags @@ -1,3 +1,4 @@ 04925636777da31ceff8c5315ab32acc5d727931 1.0.0 c25f8bf80f1f8f92954cfed3a6dd2f799bd370e4 1.2.0 2de18291f47d187d366f61a811a364fe0c95911c 1.2.1 +c04efed7fbdaef1058dd8777189358c4597500e3 1.2.2 From f928353bce76e178d47ae9934aa03e8d5a15f626 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 31 Aug 2009 10:56:14 +0200 Subject: [PATCH 17/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index aee2fed06d..bd94db2d43 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.2', + 'version': '1.2.3', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/', From 3db3f6d6cd16c46825cf2272784832760f68681a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 11 Sep 2009 12:25:15 +0200 Subject: [PATCH 18/48] Use IN_MAX in get_credit_debit for issue1160 (transplanted from 7f153d255a539bf0bab33616727d4ed2825947c0) --- account.py | 34 ++++++++++++++++++---------------- 1 file changed, 18 insertions(+), 16 deletions(-) diff --git a/account.py b/account.py index c63974bd43..4f96e89e57 100644 --- a/account.py +++ b/account.py @@ -760,22 +760,24 @@ class Account(ModelSQL, ModelView): line_query, fiscalyear_ids = move_line_obj.query_get(cursor, user, context=context) - cursor.execute('SELECT a.id, ' + \ - ','.join(['SUM(COALESCE(l.' + name + ', 0))' - for name in names]) + ' ' \ - 'FROM account_account a ' \ - 'LEFT JOIN account_move_line l ' \ - 'ON (a.id = l.account) ' \ - 'WHERE a.kind != \'view\' ' \ - 'AND a.id IN (' + \ - ','.join(['%s' for x in ids]) + ') ' \ - 'AND ' + line_query + ' ' \ - 'AND a.active ' \ - 'GROUP BY a.id', ids) - for row in cursor.fetchall(): - account_id = row[0] - for i in range(len(names)): - res[names[i]][account_id] = row[i + 1] + for i in range(0, len(ids), cursor.IN_MAX): + sub_ids = ids[i:i + cursor.IN_MAX] + cursor.execute('SELECT a.id, ' + \ + ','.join(['SUM(COALESCE(l.' + name + ', 0))' + for name in names]) + ' ' \ + 'FROM account_account a ' \ + 'LEFT JOIN account_move_line l ' \ + 'ON (a.id = l.account) ' \ + 'WHERE a.kind != \'view\' ' \ + 'AND a.id IN (' + \ + ','.join(['%s' for x in sub_ids]) + ') ' \ + 'AND ' + line_query + ' ' \ + 'AND a.active ' \ + 'GROUP BY a.id', sub_ids) + for row in cursor.fetchall(): + account_id = row[0] + for i in range(len(names)): + res[names[i]][account_id] = row[i + 1] account2company = {} id2company = {} From 2c77d851ad39697251849c9d04d2801fcbb51a24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 5 Oct 2009 16:30:35 +0200 Subject: [PATCH 19/48] Return Decimal for default value of sign fields instead of integer (transplanted from 2167000098d03b7e64de9a543d721240f661eaa6) --- tax.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/tax.py b/tax.py index ed860cd2b6..0f14270617 100644 --- a/tax.py +++ b/tax.py @@ -437,16 +437,16 @@ class TaxTemplate(ModelSQL, ModelView): return False def default_invoice_base_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def default_invoice_tax_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def default_credit_note_base_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def default_credit_note_tax_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def _get_tax_value(self, cursor, user, template, context=None, tax=None): @@ -688,16 +688,16 @@ class Tax(ModelSQL, ModelView): return False def default_invoice_base_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def default_invoice_tax_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def default_credit_note_base_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def default_credit_note_tax_sign(self, cursor, user, context=None): - return 1 + return Decimal('1') def default_company(self, cursor, user, context=None): company_obj = self.pool.get('company.company') From 1ce36c2ad6ac112269ce37e7363fc5947556f54d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 13 Oct 2009 12:15:34 +0200 Subject: [PATCH 20/48] Add currency_digits to values of tax_lines to have right display of rounding (transplanted from 621fb4fc6bacef3deab8715dc32e802934caa3e4) --- move.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/move.py b/move.py index 440c7ff0e6..49510b8480 100644 --- a/move.py +++ b/move.py @@ -668,6 +668,7 @@ class Line(ModelSQL, ModelView): values['tax_lines'] = [ { 'amount': tax_amount, + 'currency_digits': line.currency_digits, 'code': code_id, 'code.rec_name': tax_code_obj.browse(cursor, user, code_id, context=context).rec_name, @@ -798,6 +799,7 @@ class Line(ModelSQL, ModelView): continue res.setdefault('add', []).append({ 'amount': base_amounts[code_id], + 'currency_digits': account.currency_digits, 'code': code_id, 'code.rec_name': tax_code_obj.browse(cursor, user, code_id, context=context).rec_name, From 7ead3f9ae5a5bcf8b6610c43a8d00958e494118c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Sun, 18 Oct 2009 14:15:07 +0200 Subject: [PATCH 21/48] Add missing rounding on default computed tax amounts for issue1247 (transplanted from ed3e1afa545901dbf1e15ec482b7e9c2458956e8) --- move.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/move.py b/move.py index 49510b8480..c6280f2fff 100644 --- a/move.py +++ b/move.py @@ -542,6 +542,7 @@ class Line(ModelSQL, ModelView): tax_obj = self.pool.get('account.tax') account_obj = self.pool.get('account.account') tax_code_obj = self.pool.get('account.tax.code') + currency_obj = self.pool.get('currency.currency') values = super(Line, self).default_get(cursor, user, fields, context=context, with_rec_name=with_rec_name) @@ -654,6 +655,10 @@ class Line(ModelSQL, ModelView): line_amount -= tax_line['amount'] tax_amount += tax_line['amount'] * \ tax_line['tax'][key + '_tax_sign'] + line_amount = currency_obj.round(cursor, user, + line.account.company.currency, line_amount) + tax_amount = currency_obj.round(cursor, user, + line.account.company.currency, tax_amount) if ('debit' in fields): values['debit'] = line_amount > Decimal('0.0') \ and line_amount or Decimal('0.0') From 9936889d35473592aa05a3e0e01d327c89976427 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 2 Nov 2009 10:16:40 +0100 Subject: [PATCH 22/48] Fix company context domain when company is not in context (transplanted from c9ac47a6fea863c54cb8501a22564a3e5b519628) --- fiscalyear.py | 3 ++- tax.py | 6 ++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/fiscalyear.py b/fiscalyear.py index 021c793102..b7ae28896d 100644 --- a/fiscalyear.py +++ b/fiscalyear.py @@ -35,7 +35,8 @@ class FiscalYear(ModelSQL, ModelView): context="{'code': 'account.move', 'company': company}", depends=['company']) company = fields.Many2One('company.company', 'Company', required=True, - domain="[('id', '=', context.get('company', False))]") + domain="[('id', 'company' in context and '=' or '!=', " \ + "context.get('company', 0))]") def __init__(self): super(FiscalYear, self).__init__() diff --git a/tax.py b/tax.py index 0f14270617..0e52cfdc73 100644 --- a/tax.py +++ b/tax.py @@ -611,7 +611,8 @@ class Tax(ModelSQL, ModelView): parent = fields.Many2One('account.tax', 'Parent', ondelete='CASCADE') childs = fields.One2Many('account.tax', 'parent', 'Children') company = fields.Many2One('company.company', 'Company', required=True, - domain="[('id', '=', context.get('company', 0))]") + domain="[('id', 'company' in context and '=' or '!=', " \ + "context.get('company', 0))]") invoice_account = fields.Many2One('account.account', 'Invoice Account', domain="[('company', '=', company)]", states={ @@ -1003,7 +1004,8 @@ class Rule(ModelSQL, ModelView): _description = __doc__ name = fields.Char('Name', required=True, translate=True) company = fields.Many2One('company.company', 'Company', required=True, - select=1, domain="[('id', '=', context.get('company', 0))]") + select=1, domain="[('id', 'company' in context '=' or '!=', " \ + "context.get('company', 0))]") lines = fields.One2Many('account.tax.rule.line', 'rule', 'Lines') template = fields.Many2One('account.tax.rule.template', 'Template') From f5918a04b6e73bbe0b44df88bc160a3185bc8a9f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 6 Nov 2009 08:13:03 +0100 Subject: [PATCH 23/48] Fix domain and depends on journal because company is not always in context (transplanted from 5852812e3433f86f52c43a8bf0daa1abd721add7) --- journal.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/journal.py b/journal.py index b4281c0d84..c7d6daa610 100644 --- a/journal.py +++ b/journal.py @@ -90,20 +90,22 @@ class Journal(ModelSQL, ModelView): context={'code': 'account.journal'}) credit_account = fields.Property(type='many2one', relation='account.account', string='Default Credit Account', - domain="[('kind', '!=', 'view'), ('company', '=', company)]", + domain="[('kind', '!=', 'view'), " \ + "('company', '=', context.get('company'))]", states={ 'required': "centralised or " \ "(type == 'cash' and context.get('company'))", 'invisible': "not context.get('company')", - }, depends=['company', 'type', 'centralised']) + }, depends=['type', 'centralised']) debit_account = fields.Property(type='many2one', relation='account.account', string='Default Debit Account', - domain="[('kind', '!=', 'view'), ('company', '=', company)]", + domain="[('kind', '!=', 'view'), " \ + "('company', '=', context.get('company'))]", states={ 'required': "centralised or " \ "(type == 'cash' and context.get('company'))", 'invisible': "not context.get('company')", - }, depends=['company', 'type', 'centralised']) + }, depends=['type', 'centralised']) def __init__(self): super(Journal, self).__init__() From ee29e249aac169f44e22a5ca30d209e3ca0c71ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 23 Nov 2009 18:11:14 +0100 Subject: [PATCH 24/48] Prepare release 1.2.3 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 394dac29fd..6876551425 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.2.3 - 2009-11-23 +* Some bug fixes (see mercurial logs for details) + Version 1.2.2 - 2009-08-31 * Some bug fixes (see mercurial logs for details) From 068f578e38d01429384dadf0afeb4e81be924807 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 23 Nov 2009 18:11:26 +0100 Subject: [PATCH 25/48] Added tag 1.2.3 for changeset 99adee2f5f20 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 59df2bc90f..29f45d506e 100644 --- a/.hgtags +++ b/.hgtags @@ -2,3 +2,4 @@ c25f8bf80f1f8f92954cfed3a6dd2f799bd370e4 1.2.0 2de18291f47d187d366f61a811a364fe0c95911c 1.2.1 c04efed7fbdaef1058dd8777189358c4597500e3 1.2.2 +99adee2f5f208403bbecc3e15971f435fc9735d7 1.2.3 From dc7212b2120a76f5cef0bcda935e82387ea9cc88 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 23 Nov 2009 18:15:54 +0100 Subject: [PATCH 26/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index bd94db2d43..1ca51c5c3d 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.3', + 'version': '1.2.4', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/', From f13bceb1ce5667cf77674216e9a871c157fa819a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 21 Dec 2009 12:01:56 +0100 Subject: [PATCH 27/48] Use root user for create/delete default properties in account chart creation (transplanted from 6a5adb9683c2c26293ad3f946b0a42d3f08780c2) --- account.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/account.py b/account.py index 4f96e89e57..eaaf16c751 100644 --- a/account.py +++ b/account.py @@ -1897,8 +1897,8 @@ class CreateChartAccount(Wizard): ('res', '=', False), ('company', '=', datas['form']['company']), ], context=context) - property_obj.delete(cursor, user, property_ids, context=context) - property_obj.create(cursor, user, { + property_obj.delete(cursor, 0, property_ids, context=context) + property_obj.create(cursor, 0, { 'name': 'account_receivable', 'field': account_receivable_field_id, 'value': 'account.account,' + \ @@ -1915,8 +1915,8 @@ class CreateChartAccount(Wizard): ('res', '=', False), ('company', '=', datas['form']['company']), ], context=context) - property_obj.delete(cursor, user, property_ids, context=context) - property_obj.create(cursor, user, { + property_obj.delete(cursor, 0, property_ids, context=context) + property_obj.create(cursor, 0, { 'name': 'account_payable', 'field': account_payable_field_id, 'value': 'account.account,' + \ From 1222cfca1e7adb4abb5169fcf3ff18fb9dcca08f Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Mon, 4 Jan 2010 17:42:53 +0100 Subject: [PATCH 28/48] Remove surplus argument for issue 1363. (transplanted from 78254a0c1336465b459882fa1c412c3dabde7254) --- journal.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/journal.py b/journal.py index c7d6daa610..39b734d195 100644 --- a/journal.py +++ b/journal.py @@ -242,8 +242,7 @@ class Period(ModelSQL, ModelView): def delete(self, cursor, user, ids, context=None): self._check(cursor, user, ids, context=context) - return super(Period, self).delete(cursor, user, ids, vals, - context=context) + return super(Period, self).delete(cursor, user, ids, context=context) def close(self, cursor, user, ids, context=None): ''' From 2e8a7674e9ac94fe7e467ad8614a423bce240d4d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Mon, 25 Jan 2010 09:40:01 +0100 Subject: [PATCH 29/48] Update COPYRIGHT --- COPYRIGHT | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 9504fb1693..94a43fbe61 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,7 +1,7 @@ Copyright (C) 2004-2008 Tiny SPRL. -Copyright (C) 2008-2009 Cédric Krier. -Copyright (C) 2008 Bertrand Chenal. -Copyright (C) 2008-2009 B2CK SPRL. +Copyright (C) 2008-2010 Cédric Krier. +Copyright (C) 2008-2010 Bertrand Chenal. +Copyright (C) 2008-2010 B2CK SPRL. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From dd351527865310f293ac30ebeebb4a6de9d91cf6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 12 Feb 2010 10:46:38 +0100 Subject: [PATCH 30/48] Use globals() also in domain for issue1386 (transplanted from 6f12c2cea522b370829810a91f7b90e58467dc7e) --- party.py | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/party.py b/party.py index b633dd2d9b..a37128a6fc 100644 --- a/party.py +++ b/party.py @@ -8,27 +8,29 @@ class Party(ModelSQL, ModelView): _name = 'party.party' account_payable = fields.Property(type='many2one', relation='account.account', string='Account Payable', - domain="[('kind', '=', 'payable'), ('company', '=', company)]", + domain="[('kind', '=', 'payable'), " \ + "('company', '=', globals().get('company', 0))]", states={ 'required': "globals().get('company') and bool(company)", 'invisible': "not globals().get('company') or not bool(company)", }) account_receivable = fields.Property(type='many2one', relation='account.account', string='Account Receivable', - domain="[('kind', '=', 'receivable'), ('company', '=', company)]", + domain="[('kind', '=', 'receivable'), " \ + "('company', '=', globals().get('company', 0))]", states={ 'required': "globals().get('company') and bool(company)", 'invisible': "not globals().get('company') or not bool(company)", }) customer_tax_rule = fields.Property(type='many2one', relation='account.tax.rule', string='Customer Tax Rule', - domain="[('company', '=', company)]", + domain="[('company', '=', globals().get('company', 0))]", states={ 'invisible': "not globals().get('company') or not bool(company)", }, help='Apply this rule on taxes when party is customer.') supplier_tax_rule = fields.Property(type='many2one', relation='account.tax.rule', string='Supplier Tax Rule', - domain="[('company', '=', company)]", + domain="[('company', '=', globals().get('company', 0))]", states={ 'invisible': "not globals().get('company') or not bool(company)", }, help='Apply this rule on taxes when party is supplier.') From 93ef717018dd072ac12227f8548028cb9c97a959 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 18 Feb 2010 19:56:36 +0100 Subject: [PATCH 31/48] Prepare release 1.2.4 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 6876551425..7c600910f8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.2.4 - 2010-02-18 +* Some bug fixes (see mercurial logs for details) + Version 1.2.3 - 2009-11-23 * Some bug fixes (see mercurial logs for details) From a9e8558844178f3cbbc4e02959ab22f55452c483 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 18 Feb 2010 19:56:41 +0100 Subject: [PATCH 32/48] Added tag 1.2.4 for changeset 8350bd3c3870 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 29f45d506e..5833de3d58 100644 --- a/.hgtags +++ b/.hgtags @@ -3,3 +3,4 @@ c25f8bf80f1f8f92954cfed3a6dd2f799bd370e4 1.2.0 2de18291f47d187d366f61a811a364fe0c95911c 1.2.1 c04efed7fbdaef1058dd8777189358c4597500e3 1.2.2 99adee2f5f208403bbecc3e15971f435fc9735d7 1.2.3 +8350bd3c38700476902cf4f52d7b670b19519581 1.2.4 From 53b25a7213f15897c565a046bbe40295164cc1d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 18 Feb 2010 19:59:39 +0100 Subject: [PATCH 33/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index 1ca51c5c3d..15557d0daa 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.4', + 'version': '1.2.5', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/', From 52a0cfcdc2b7b8354f9cf3d8439fedaa3e55f28a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Tue, 11 May 2010 22:31:14 +0200 Subject: [PATCH 34/48] Don't include .pyc from tests (transplanted from e76066d660a5db564d8b202b7e40a56c62628d47) --- MANIFEST.in | 1 - 1 file changed, 1 deletion(-) diff --git a/MANIFEST.in b/MANIFEST.in index b2a140eeeb..dcb2afa6dc 100644 --- a/MANIFEST.in +++ b/MANIFEST.in @@ -7,5 +7,4 @@ include LICENSE include *.xml include *.odt include *.csv -include tests/* include doc/* From 652945ef82c55179ea6ff73d6ed6ff191bade9de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Thu, 17 Jun 2010 20:09:01 +0200 Subject: [PATCH 35/48] Add recursive check on account type for issue1590 (transplanted from e58b929959c8ee31e10b897b4572d03c71aad5aa) --- account.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/account.py b/account.py index eaaf16c751..770e84bf9f 100644 --- a/account.py +++ b/account.py @@ -29,6 +29,12 @@ class TypeTemplate(ModelSQL, ModelView): def __init__(self): super(TypeTemplate, self).__init__() + self._constraints += [ + ('check_recursion', 'recursive_types'), + ] + self._error_messages.update({ + 'recursive_types': 'You can not create recursive types!', + }) self._order.insert(0, ('sequence', 'ASC')) def default_balance_sheet(self, cursor, user, context=None): @@ -168,6 +174,12 @@ class Type(ModelSQL, ModelView): def __init__(self): super(Type, self).__init__() + self._constraints += [ + ('check_recursion', 'recursive_types'), + ] + self._error_messages.update({ + 'recursive_types': 'You can not create recursive types!', + }) self._order.insert(0, ('sequence', 'ASC')) def default_balance_sheet(self, cursor, user, context=None): From c88892121b8194b4a22ce28673b225a9ce4f35d1 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Tue, 2 Nov 2010 21:11:38 +0100 Subject: [PATCH 36/48] Prepare release 1.2.5 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 7c600910f8..1b14dcc376 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.2.5 - 2010-11-02 +* Bug fixes (see mercurial logs for details) + Version 1.2.4 - 2010-02-18 * Some bug fixes (see mercurial logs for details) From 215bca409bc162afbcb5b20cfbf4381d15097366 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Tue, 2 Nov 2010 21:11:38 +0100 Subject: [PATCH 37/48] Added tag 1.2.5 for changeset f00115051f9a --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 5833de3d58..308d76413d 100644 --- a/.hgtags +++ b/.hgtags @@ -4,3 +4,4 @@ c25f8bf80f1f8f92954cfed3a6dd2f799bd370e4 1.2.0 c04efed7fbdaef1058dd8777189358c4597500e3 1.2.2 99adee2f5f208403bbecc3e15971f435fc9735d7 1.2.3 8350bd3c38700476902cf4f52d7b670b19519581 1.2.4 +f00115051f9a71b24e5ce09d997a743ee48e6e7a 1.2.5 From 805d02a611343c53aa86499be208208f32085909 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Tue, 2 Nov 2010 21:11:39 +0100 Subject: [PATCH 38/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index 15557d0daa..57dccb4dcb 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.5', + 'version': '1.2.6', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/', From 0766e7ce6deef00d56116a75b5f29f73245296dd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Krier?= Date: Fri, 31 Dec 2010 12:41:01 +0100 Subject: [PATCH 39/48] Prevent overlapping of periods in aged balance for issue1764 (transplanted from 14828419189f9c6035ab12253f523046f615c284) --- account.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/account.py b/account.py index 770e84bf9f..84e44f58fa 100644 --- a/account.py +++ b/account.py @@ -2366,7 +2366,7 @@ class AgedBalance(Report): datetime.timedelta(days=term*coef),) else: term_query = '(l.maturity_date <= %s '\ - 'AND l.maturity_date >= %s) ' + 'AND l.maturity_date > %s) ' term_args = ( date_obj.today(cursor, user, context=context) + \ datetime.timedelta(days=term*coef), From 66344b5773133fdc1bc6c00e60512c699d0911b9 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 16:42:18 +0100 Subject: [PATCH 40/48] Update COPYRIGHT --- COPYRIGHT | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 94a43fbe61..1a54bea559 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,7 +1,9 @@ Copyright (C) 2004-2008 Tiny SPRL. -Copyright (C) 2008-2010 Cédric Krier. -Copyright (C) 2008-2010 Bertrand Chenal. -Copyright (C) 2008-2010 B2CK SPRL. +Copyright (C) 2007-2011 Cédric Krier. +Copyright (C) 2007-2011 Bertrand Chenal. +Copyright (C) 2008-2011 B2CK SPRL. +Copyright (C) 2008-2011 Udo Spallek. +Copyright (C) 2008-2011 virtual things - Preisler & Spallek GbR. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From 0d55f0e5df1e29d2d10839abbda79b159576c6a6 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 17:26:52 +0100 Subject: [PATCH 41/48] Prepare release 1.2.6 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 1b14dcc376..74d8e59971 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.2.6 - 2011-02-13 +* Bug fixes (see mercurial logs for details) + Version 1.2.5 - 2010-11-02 * Bug fixes (see mercurial logs for details) From 8f632924f9d7a39165b2a34ccecfbde87a26d345 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 17:26:52 +0100 Subject: [PATCH 42/48] Added tag 1.2.6 for changeset 58d4cb54757b --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 308d76413d..7251062b6b 100644 --- a/.hgtags +++ b/.hgtags @@ -5,3 +5,4 @@ c04efed7fbdaef1058dd8777189358c4597500e3 1.2.2 99adee2f5f208403bbecc3e15971f435fc9735d7 1.2.3 8350bd3c38700476902cf4f52d7b670b19519581 1.2.4 f00115051f9a71b24e5ce09d997a743ee48e6e7a 1.2.5 +58d4cb54757b545b54c741b933e6bb56f65658ad 1.2.6 From 7f6322cfb2b47e653ec0b01547e7426fa8e9171d Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 17:27:06 +0100 Subject: [PATCH 43/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index 57dccb4dcb..45f22cadf5 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.6', + 'version': '1.2.7', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/', From 03c098846cd07dee7eca8dc830f5fef6acf31499 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 18:17:10 +0100 Subject: [PATCH 44/48] Backed out changeset c0cc2bfa8b35 - Removing wrong COPYRIGHT update. --- COPYRIGHT | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 1a54bea559..94a43fbe61 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,9 +1,7 @@ Copyright (C) 2004-2008 Tiny SPRL. -Copyright (C) 2007-2011 Cédric Krier. -Copyright (C) 2007-2011 Bertrand Chenal. -Copyright (C) 2008-2011 B2CK SPRL. -Copyright (C) 2008-2011 Udo Spallek. -Copyright (C) 2008-2011 virtual things - Preisler & Spallek GbR. +Copyright (C) 2008-2010 Cédric Krier. +Copyright (C) 2008-2010 Bertrand Chenal. +Copyright (C) 2008-2010 B2CK SPRL. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From 3ddb5ee97c3c1cc5c665c896b0a0a335180d89e7 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 18:18:34 +0100 Subject: [PATCH 45/48] Update COPYRIGHT --- COPYRIGHT | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/COPYRIGHT b/COPYRIGHT index 94a43fbe61..97eff54014 100644 --- a/COPYRIGHT +++ b/COPYRIGHT @@ -1,7 +1,7 @@ Copyright (C) 2004-2008 Tiny SPRL. -Copyright (C) 2008-2010 Cédric Krier. -Copyright (C) 2008-2010 Bertrand Chenal. -Copyright (C) 2008-2010 B2CK SPRL. +Copyright (C) 2008-2011 Cédric Krier. +Copyright (C) 2008-2011 Bertrand Chenal. +Copyright (C) 2008-2011 B2CK SPRL. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by From da01a36bb23e19566236c7f0f845680e506dd249 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 18:21:27 +0100 Subject: [PATCH 46/48] Prepare release 1.2.7 --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 74d8e59971..6bf64e13a5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Version 1.2.7 - 2011-02-13 +* Bug fixes (see mercurial logs for details) + Version 1.2.6 - 2011-02-13 * Bug fixes (see mercurial logs for details) From 60794a76ef34460e13e41a6c0734778fc88933c3 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 18:21:27 +0100 Subject: [PATCH 47/48] Added tag 1.2.7 for changeset e60db0ddba30 --- .hgtags | 1 + 1 file changed, 1 insertion(+) diff --git a/.hgtags b/.hgtags index 7251062b6b..92d385f60b 100644 --- a/.hgtags +++ b/.hgtags @@ -6,3 +6,4 @@ c04efed7fbdaef1058dd8777189358c4597500e3 1.2.2 8350bd3c38700476902cf4f52d7b670b19519581 1.2.4 f00115051f9a71b24e5ce09d997a743ee48e6e7a 1.2.5 58d4cb54757b545b54c741b933e6bb56f65658ad 1.2.6 +e60db0ddba30202350c9a4ecf77095837fcf7c33 1.2.7 From b010bdc716b833a3702d6480e0d69113e1ad7550 Mon Sep 17 00:00:00 2001 From: Mathias Behrle Date: Sun, 13 Feb 2011 18:21:37 +0100 Subject: [PATCH 48/48] Increase version number --- __tryton__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__tryton__.py b/__tryton__.py index 45f22cadf5..94ff45b438 100644 --- a/__tryton__.py +++ b/__tryton__.py @@ -6,7 +6,7 @@ 'name_fr_FR': 'Comptabilité', 'name_es_CO': 'Contabilidad', 'name_es_ES': 'Contabilidad', - 'version': '1.2.7', + 'version': '1.2.8', 'author': 'B2CK', 'email': 'info@b2ck.com', 'website': 'http://www.tryton.org/',