[tryton-debian-vcs] tryton-modules-account-statement branch upstream updated. upstream/3.4.1-1-gf829208
Mathias Behrle
tryton-debian-vcs at alioth.debian.org
Thu Apr 23 16:02:15 UTC 2015
The following commit has been merged in the upstream branch:
https://alioth.debian.org/plugins/scmgit/cgi-bin/gitweb.cgi/?p=tryton/tryton-modules-account-statement.git;a=commitdiff;h=upstream/3.4.1-1-gf829208
commit f8292084c26942e95e791c84ecd74a250168046a
Author: Mathias Behrle <mathiasb at m9s.biz>
Date: Thu Apr 23 16:59:52 2015 +0200
Adding upstream version 3.6.0.
Signed-off-by: Mathias Behrle <mathiasb at m9s.biz>
diff --git a/CHANGELOG b/CHANGELOG
index 222fc4c..a234e17 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,5 +1,8 @@
-Version 3.4.1 - 2015-03-01
+Version 3.6.0 - 2015-04-20
* Bug fixes (see mercurial logs for details)
+* Add support for PyPy
+* Add line group model
+* Create Move by grouped lines (number, date, party)
Version 3.4.0 - 2014-10-20
* Bug fixes (see mercurial logs for details)
diff --git a/PKG-INFO b/PKG-INFO
index c32e357..e6a4b18 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: trytond_account_statement
-Version: 3.4.1
+Version: 3.6.0
Summary: Tryton module with account statements
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: issue_tracker at tryton.org
License: GPL-3
-Download-URL: http://downloads.tryton.org/3.4/
+Download-URL: http://downloads.tryton.org/3.6/
Description: trytond_account_statement
=========================
@@ -64,5 +64,7 @@ Classifier: Natural Language :: Slovenian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Office/Business
Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/__init__.py b/__init__.py
index 246d390..e12d022 100644
--- a/__init__.py
+++ b/__init__.py
@@ -1,5 +1,5 @@
-#This file is part of Tryton. The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# 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.pool import Pool
from .journal import *
@@ -12,6 +12,7 @@ def register():
Journal,
Statement,
Line,
+ LineGroup,
Move,
module='account_statement', type_='model')
Pool.register(
diff --git a/account.py b/account.py
index af74f27..ee29faf 100644
--- a/account.py
+++ b/account.py
@@ -1,6 +1,13 @@
-#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.pool import PoolMeta
+# 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 itertools import groupby
+from operator import itemgetter
+
+from sql.operators import Concat
+
+from trytond.pool import PoolMeta, Pool
+from trytond.transaction import Transaction
+from trytond.tools import grouped_slice, reduce_ids
__all__ = ['Move']
__metaclass__ = PoolMeta
@@ -10,5 +17,33 @@ class Move:
__name__ = 'account.move'
@classmethod
+ def __register__(cls, module_name):
+ pool = Pool()
+ StatementLine = pool.get('account.statement.line')
+ cursor = Transaction().cursor
+ sql_table = cls.__table__()
+
+ super(Move, cls).__register__(module_name)
+
+ # Migration from 3.4:
+ # account.statement.line origin changed to account.statement
+ statement_line = StatementLine.__table__()
+ cursor.execute(*sql_table.join(statement_line,
+ condition=(
+ Concat(StatementLine.__name__ + ',', statement_line.id)
+ == sql_table.origin
+ )
+ ).select(sql_table.id, statement_line.statement,
+ order_by=(sql_table.id, statement_line.statement)))
+ for statement_id, values in groupby(cursor.fetchall(), itemgetter(1)):
+ ids = [x[0] for x in values]
+ for sub_ids in grouped_slice(ids):
+ red_sql = reduce_ids(sql_table.id, sub_ids)
+ cursor.execute(*sql_table.update(
+ columns=[sql_table.origin],
+ values=['account.statement,%s' % statement_id],
+ where=red_sql))
+
+ @classmethod
def _get_origin(cls):
- return super(Move, cls)._get_origin() + ['account.statement.line']
+ return super(Move, cls)._get_origin() + ['account.statement']
diff --git a/doc/index.rst b/doc/index.rst
index 00fa451..aabece2 100644
--- a/doc/index.rst
+++ b/doc/index.rst
@@ -22,8 +22,8 @@ The statement can be in one of this states:
* Validated
- The statement is validated and is waiting to be posted. The moves for each
- line are already created in draft state.
+ The statement is validated and is waiting to be posted. A move for each
+ grouped lines is already created in draft state.
* Posted
@@ -39,12 +39,22 @@ Line
A Statement Line is mainly defined by:
+- Sequence: Use to order the lines in the statement.
+- Number: The number to identify a transaction.
- Date.
- Amount.
- Party.
- Account.
- Invoice.
- Description.
+- Move: The move created for this line.
+
+Line Group
+**********
+
+The line group represent the group of lines created at the validation of the
+statement.
+By default the lines of a statement are grouped by *Number*, *Date* and *Party*.
Journal
*******
diff --git a/journal.py b/journal.py
index 10cd2af..e6ffb01 100644
--- a/journal.py
+++ b/journal.py
@@ -1,5 +1,5 @@
-#This file is part of Tryton. The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# 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, fields
from trytond.transaction import Transaction
from trytond.pool import Pool
diff --git a/journal.xml b/journal.xml
index 54f890b..1ac2a59 100644
--- a/journal.xml
+++ b/journal.xml
@@ -56,7 +56,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_statement_journal1">
- <field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
+ <field name="domain"
+ eval="[('company', '=', Eval('user', {}).get('company', None))]"
+ pyson="1"/>
<field name="rule_group" ref="rule_group_statement_journal"/>
</record>
diff --git a/locale/bg_BG.po b/locale/bg_BG.po
index 1e03722..2c8f9df 100644
--- a/locale/bg_BG.po
+++ b/locale/bg_BG.po
@@ -3,12 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr ""
@@ -16,10 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr ""
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr ""
@@ -29,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr ""
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr ""
@@ -228,6 +222,81 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Променено от"
+#, fuzzy
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Сума"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Създадено на"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Създадено от"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Управление на валути"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Цифри за валута"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Дата"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Дневник"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Движение"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Номер"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Управление на партньор"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Условие за плащане"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Отчет"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Променено на"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Променено от"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Отчет"
@@ -244,10 +313,36 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Ред от отчет за сметка"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr ""
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr ""
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Движения"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Движения"
+
#, fuzzy
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
@@ -258,6 +353,16 @@ msgid "Statement Journals"
msgstr "Дневник за отчети"
#, fuzzy
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Редове от отчет"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Редове от отчет"
+
+#, fuzzy
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Отчет"
@@ -284,6 +389,10 @@ msgctxt ""
msgid "Validated"
msgstr "Проверен"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Отчети"
diff --git a/locale/ca_ES.po b/locale/ca_ES.po
index b9e7def..4b3396b 100644
--- a/locale/ca_ES.po
+++ b/locale/ca_ES.po
@@ -3,14 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"El compte \"%(account)s\" a la línia d'extracte \"%(line)s\" és la mateixa "
-"que la configurada com a haver o deure al diari \"%(journal)s\"."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr "L'import \"%s\" és més gran que l'import a pagar de la factura."
@@ -18,10 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr "L'import hauria de ser un valor positiu o negatiu."
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr "Proporcioneu un compte d'haver i de deure al diari d'extracte \"%s\"."
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr "El saldo final ha de ser \"%s\"."
@@ -31,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr "El nombre de línies ha de ser \"%s\"."
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr "Afegeix un compte deure i haver en el diari d'extracte \"%s\"."
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr "Heu de cancel·lar l'extracte \"%s\"abans de ser eliminat."
@@ -226,6 +218,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Usuari modificació"
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Import"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Data creació"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Usuari creació"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimals de la moneda"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Data"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Diari"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Assentament"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Tercer"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Extracte"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Data modificació"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Usuari modificació"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Extracte"
@@ -242,10 +294,34 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Línia d'extracte bancari"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr "Grup de línies d'extracte"
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grups de línies d'extracte"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Grups de línies"
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Apunts"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Apunts"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Assentaments"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Assentaments"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Tots els extractes"
@@ -254,13 +330,21 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr "Diaris d'extracte"
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Línies extracte"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Línies extracte"
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Extracte"
msgctxt "model:ir.action.act_window.domain,name:act_statement_form_domain_all"
msgid "All"
-msgstr "Tot"
+msgstr "Tots"
msgctxt ""
"model:ir.action.act_window.domain,name:act_statement_form_domain_draft"
@@ -270,13 +354,17 @@ msgstr "Esborrany"
msgctxt ""
"model:ir.action.act_window.domain,name:act_statement_form_domain_posted"
msgid "Posted"
-msgstr "Confirmat"
+msgstr "Comptabilitzat"
msgctxt ""
"model:ir.action.act_window.domain,name:act_statement_form_domain_validated"
msgid "Validated"
msgstr "Validat"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grups de línies d'extracte"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Extractes"
@@ -367,7 +455,7 @@ msgstr "Esborrany"
msgctxt "selection:account.statement,state:"
msgid "Posted"
-msgstr "Confirmat"
+msgstr "Comptabilitzat"
msgctxt "selection:account.statement,state:"
msgid "Validated"
@@ -393,6 +481,14 @@ msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
msgstr "Diaris d'extracte"
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Grup de línies d'extracte"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Grups de línies d'extracte"
+
msgctxt "view:account.statement.line:"
msgid "Amount"
msgstr "Import"
@@ -419,7 +515,7 @@ msgstr "Informació addicional"
msgctxt "view:account.statement:"
msgid "Post"
-msgstr "Confirma"
+msgstr "Comptabilitza"
msgctxt "view:account.statement:"
msgid "Statement"
diff --git a/locale/cs_CZ.po b/locale/cs_CZ.po
index 0e36f08..8be66b3 100644
--- a/locale/cs_CZ.po
+++ b/locale/cs_CZ.po
@@ -3,12 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr ""
@@ -16,10 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr ""
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr ""
@@ -29,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr ""
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr ""
@@ -224,6 +218,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr ""
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr ""
@@ -240,10 +294,34 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr ""
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr ""
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr ""
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr ""
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr ""
@@ -252,6 +330,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr ""
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr ""
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr ""
@@ -275,6 +361,10 @@ msgctxt ""
msgid "Validated"
msgstr ""
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr ""
diff --git a/locale/de_DE.po b/locale/de_DE.po
index c188f4d..dda2225 100644
--- a/locale/de_DE.po
+++ b/locale/de_DE.po
@@ -3,14 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"Konto \"%(account)s\" in Bankauszugszeile \"%(line)s\" ist dasselbe wie das "
-"für Soll oder Haben eingetragene in Journal \"%(journal)s\"."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr "Betrag \"%s\" ist größer als der für die Rechnung zu zahlende Betrag."
@@ -18,11 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr "Der Betrag sollte einen positiven oder negativen Wert aufweisen."
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-"Bitte tragen Sie Soll- und Habenkonto für das Bankauszugsjournal \"%s\" ein."
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr "Endsaldo muss \"%s\" sein."
@@ -32,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr "Anzahl der Zeilen muss \"%s\" sein."
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr "Bitte tragen Sie Haben- und Sollkonto für Bankauszugsjournal \"%s\" ein."
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr "Bankauszug \"%s\" muss annulliert werden, bevor er gelöscht werden kann."
@@ -227,6 +218,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Letzte Änderung durch"
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Betrag"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Erstellungsdatum"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Erstellt durch"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Währung"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Nachkommastellen Währung"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Buchungssatz"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Nummer"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Partei"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Name"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Bankauszug"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Zuletzt geändert"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Letzte Änderung durch"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Bankauszug"
@@ -243,10 +294,34 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Bankauszugszeile"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr "Bankauszugszeilengruppe"
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Bankauszugszeilengruppen"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Zeilengruppen"
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Buchungszeilen"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Buchungszeilen"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Buchungssätze"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Buchungssätze"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Bankauszüge"
@@ -255,6 +330,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr "Bankauszugsjournale"
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Bankauszugszeilen"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Bankauszugszeilen"
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Zahlung"
@@ -278,6 +361,10 @@ msgctxt ""
msgid "Validated"
msgstr "Geprüft"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Bankauszugszeilengruppen"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Bankauszüge"
@@ -394,17 +481,25 @@ msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
msgstr "Bankauszugsjournale"
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Bankauszugszeilengruppe"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Bankauszugszeilengruppen"
+
msgctxt "view:account.statement.line:"
msgid "Amount"
msgstr "Betrag"
msgctxt "view:account.statement.line:"
msgid "Statement Line"
-msgstr "Bankauszug Zeile"
+msgstr "Bankauszugszeile"
msgctxt "view:account.statement.line:"
msgid "Statement Lines"
-msgstr "Bankauszug Zeile"
+msgstr "Bankauszugszeilen"
msgctxt "view:account.statement:"
msgid "Cancel"
@@ -428,7 +523,7 @@ msgstr "Bankauszug"
msgctxt "view:account.statement:"
msgid "Statement Lines"
-msgstr "Bankauszug Zeilen"
+msgstr "Bankauszugszeilen"
msgctxt "view:account.statement:"
msgid "Statements"
diff --git a/locale/es_AR.po b/locale/es_AR.po
index 2bd398e..48f720c 100644
--- a/locale/es_AR.po
+++ b/locale/es_AR.po
@@ -3,14 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"La cuenta «%(account)s» en la línea de estracto «%(line)s» es la misma que "
-"la configurada como haber o debe en el diario «%(journal)s»."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr "El importe «%s» es mayor que el importe a pagar de la factura."
@@ -18,11 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr "El importe debería ser un valor positivo o negativo."
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-"Proporcione una cuenta de crédito y de débito en el diario de extracto «%s»."
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr "El saldo final debe ser «%s»."
@@ -32,6 +19,11 @@ msgid "Number of Lines must be \"%s\"."
msgstr "Número de Líneas debe ser «%s»."
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+"Proporcione una cuenta de crédito y de débito en el diario de extracto «%s»."
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr "Debe cancelar el extracto «%s» antes de eliminar."
@@ -61,7 +53,7 @@ msgstr "Usuario creación"
msgctxt "field:account.statement,currency_digits:"
msgid "Currency Digits"
-msgstr "Dígitos de moneda"
+msgstr "Decimales de moneda"
msgctxt "field:account.statement,date:"
msgid "Date"
@@ -227,6 +219,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Usuario modificación"
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de moneda"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Entidad"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Extracto"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Extracto"
@@ -243,10 +295,34 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Línea de extracto bancario"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr "Cuenta de grupo de líneas de extracto"
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de extracto"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Grupos de líneas"
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Líneas de asiento"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Líneas de asiento"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Asientos"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Asientos"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Todos los extractos"
@@ -255,6 +331,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr "Diarios de extracto"
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Líneas de extracto bancario"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Líneas de extracto bancario"
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Extracto"
@@ -278,6 +362,10 @@ msgctxt ""
msgid "Validated"
msgstr "Validado"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de extracto"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Extractos"
@@ -394,6 +482,14 @@ msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
msgstr "Diarios de extracto"
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Grupo de líneas de extracto"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de extracto"
+
msgctxt "view:account.statement.line:"
msgid "Amount"
msgstr "Importe"
diff --git a/locale/es_CO.po b/locale/es_CO.po
index 60026ad..02f9171 100644
--- a/locale/es_CO.po
+++ b/locale/es_CO.po
@@ -3,14 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"Cuenta \"%(account)s\" en linea de declaración \"%(line)s\" es la misma que "
-"la configurada como crédito o débito en diario \"%(journal)s\"."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr "El valor \"%s\" es mayor que el valor a pagar en la factura."
@@ -18,12 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr "El valor debería ser positivo o negativo!"
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-"Por favor indique las cuentas débito y crédito en el libro de estado de "
-"cuentas \"%s\"."
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr "El Saldo Final debe ser \"%s!\"."
@@ -33,6 +19,12 @@ msgid "Number of Lines must be \"%s\"."
msgstr "El número de líneas debe ser \"%s\"."
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+"Por favor provea un cuenta debito y credito en el libro del estado de cuenta"
+" \"%s\"."
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr "El estado de cuenta \"%s\" debe ser cancelado antes de ser eliminado."
@@ -228,6 +220,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Modificado por Usuario"
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Valor"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Fecha de Creación"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Creado por Usuario"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Monedas"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de Moneda"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Libro Contable"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Estado de Cuenta"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Fecha de Modificación"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Modificado por Usuario"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Estado de Cuenta"
@@ -244,10 +296,35 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Línea de Estado de Cuenta"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de Línea de Estado de Cuenta"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Grupos de Línea"
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Líneas de Asiento"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Líneas de Asiento"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Asientos"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Movimientos"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Estados de Cuenta"
@@ -256,6 +333,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr "Libros de Estados de Cuenta"
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Líneas de Estado de Cuenta"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Líneas de Estado de Cuenta"
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Estado de Cuenta"
@@ -279,6 +364,11 @@ msgctxt ""
msgid "Validated"
msgstr "Validado"
+#, fuzzy
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de Línea de Estado de Cuenta"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Estados de Cuenta"
@@ -341,7 +431,7 @@ msgstr "Número"
msgctxt "odt:account.statement:"
msgid "Party"
-msgstr "Terceros"
+msgstr "Tercero"
msgctxt "odt:account.statement:"
msgid "Phone:"
@@ -395,6 +485,14 @@ msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
msgstr "Libros de Estados de Cuenta"
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Grupo Línea de Estado de Cuenta"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Grupos de Línea de Estado de Cuenta"
+
msgctxt "view:account.statement.line:"
msgid "Amount"
msgstr "Valor"
diff --git a/locale/es_EC.po b/locale/es_EC.po
index 55e075f..8573ece 100644
--- a/locale/es_EC.po
+++ b/locale/es_EC.po
@@ -3,35 +3,26 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"La cuenta \"%(account)s\" en la línea de estado de cuenta \"%(line)s\" es la"
-" misma que la configurada como crédito o débito en el libro diario "
-"\"%(journal)s\"."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
-msgstr "El valor \"%s\" es mayor que el valor a pagar de la factura."
+msgstr "El importe \"%s\" es mayor que el importe a pagar de la factura."
msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
-msgstr "El valor debería ser positivo o negativo."
-
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-"Por favor proporcione una cuenta de débito y de crédito en el libro diario "
-"de estado de cuenta \"%s\"."
+msgstr "El importe debería ser un valor positivo o negativo."
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
-msgstr "El Saldo Final debe ser \"%s\"."
+msgstr "El saldo final debe ser \"%s\"."
msgctxt "error:account.statement:"
msgid "Number of Lines must be \"%s\"."
-msgstr "El Número de Líneas debe ser \"%s\"."
+msgstr "El número de líneas debe ser \"%s\"."
+
+msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+"Por favor proporcione una cuenta de débito y de crédito en el libro diario "
+"del estado de cuenta \"%s\"."
msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
@@ -43,7 +34,7 @@ msgstr "Hay facturas pagadas en los estados de cuenta borrador."
msgctxt "error:account.statement:"
msgid "Total Amount must be \"%s\"."
-msgstr "La Cantidad Total debe ser \"%s\"."
+msgstr "El importe total debe ser \"%s\"."
msgctxt "field:account.statement,balance:"
msgid "Balance"
@@ -55,11 +46,11 @@ msgstr "Empresa"
msgctxt "field:account.statement,create_date:"
msgid "Create Date"
-msgstr "Fecha de Creación"
+msgstr "Fecha de creación"
msgctxt "field:account.statement,create_uid:"
msgid "Create User"
-msgstr "Creado por Usuario"
+msgstr "Creado por usuario"
msgctxt "field:account.statement,currency_digits:"
msgid "Currency Digits"
@@ -71,7 +62,7 @@ msgstr "Fecha"
msgctxt "field:account.statement,end_balance:"
msgid "End Balance"
-msgstr "Saldo Final"
+msgstr "Saldo final"
msgctxt "field:account.statement,id:"
msgid "ID"
@@ -79,11 +70,11 @@ msgstr "ID"
msgctxt "field:account.statement,journal:"
msgid "Journal"
-msgstr "Libro Diario"
+msgstr "Libro diario"
msgctxt "field:account.statement,lines:"
msgid "Lines"
-msgstr "Transacciones"
+msgstr "Líneas"
msgctxt "field:account.statement,name:"
msgid "Name"
@@ -91,7 +82,7 @@ msgstr "Nombre"
msgctxt "field:account.statement,number_of_lines:"
msgid "Number of Lines"
-msgstr "Número de Líneas"
+msgstr "Número de líneas"
msgctxt "field:account.statement,rec_name:"
msgid "Name"
@@ -99,7 +90,7 @@ msgstr "Nombre"
msgctxt "field:account.statement,start_balance:"
msgid "Start Balance"
-msgstr "Saldo Inicial"
+msgstr "Saldo inicial"
msgctxt "field:account.statement,state:"
msgid "State"
@@ -107,7 +98,7 @@ msgstr "Estado"
msgctxt "field:account.statement,total_amount:"
msgid "Total Amount"
-msgstr "Valor Total"
+msgstr "Valor total"
msgctxt "field:account.statement,validation:"
msgid "Validation"
@@ -115,11 +106,11 @@ msgstr "Validación"
msgctxt "field:account.statement,write_date:"
msgid "Write Date"
-msgstr "Fecha de Modificación"
+msgstr "Fecha de modificación"
msgctxt "field:account.statement,write_uid:"
msgid "Write User"
-msgstr "Modificado por Usuario"
+msgstr "Modificado por usuario"
msgctxt "field:account.statement.journal,company:"
msgid "Company"
@@ -127,11 +118,11 @@ msgstr "Empresa"
msgctxt "field:account.statement.journal,create_date:"
msgid "Create Date"
-msgstr "Fecha de Creación"
+msgstr "Fecha de creación"
msgctxt "field:account.statement.journal,create_uid:"
msgid "Create User"
-msgstr "Creado por Usuario"
+msgstr "Creado por usuario"
msgctxt "field:account.statement.journal,currency:"
msgid "Currency"
@@ -143,7 +134,7 @@ msgstr "ID"
msgctxt "field:account.statement.journal,journal:"
msgid "Journal"
-msgstr "Libro Diario"
+msgstr "Libro diario"
msgctxt "field:account.statement.journal,name:"
msgid "Name"
@@ -155,15 +146,15 @@ msgstr "Nombre"
msgctxt "field:account.statement.journal,validation:"
msgid "Validation Type"
-msgstr "Tipo de Validación"
+msgstr "Tipo de validación"
msgctxt "field:account.statement.journal,write_date:"
msgid "Write Date"
-msgstr "Fecha de Modificación"
+msgstr "Fecha de modificación"
msgctxt "field:account.statement.journal,write_uid:"
msgid "Write User"
-msgstr "Modificado por Usuario"
+msgstr "Modificado por usuario"
msgctxt "field:account.statement.line,account:"
msgid "Account"
@@ -171,15 +162,15 @@ msgstr "Cuenta"
msgctxt "field:account.statement.line,amount:"
msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
msgctxt "field:account.statement.line,create_date:"
msgid "Create Date"
-msgstr "Fecha de Creación"
+msgstr "Fecha de creación"
msgctxt "field:account.statement.line,create_uid:"
msgid "Create User"
-msgstr "Creado por Usuario"
+msgstr "Creado por usuario"
msgctxt "field:account.statement.line,date:"
msgid "Date"
@@ -199,7 +190,7 @@ msgstr "Factura"
msgctxt "field:account.statement.line,move:"
msgid "Account Move"
-msgstr "Asiento Contable"
+msgstr "Asiento contable"
msgctxt "field:account.statement.line,number:"
msgid "Number"
@@ -219,47 +210,139 @@ msgstr "Secuencia"
msgctxt "field:account.statement.line,statement:"
msgid "Statement"
-msgstr "Estado de Cuenta"
+msgstr "Estado de cuenta"
msgctxt "field:account.statement.line,write_date:"
msgid "Write Date"
-msgstr "Fecha de Modificación"
+msgstr "Fecha de modificación"
msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
-msgstr "Modificado por Usuario"
+msgstr "Modificado por usuario"
+
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Fecha de creación"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Creado por usuario"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de moneda"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Libro diario"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Estado de cuenta"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Fecha de modificación"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Modificado por usuario"
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
-msgstr "Extracto"
+msgstr "Estado de cuenta"
msgctxt "model:account.statement,name:"
msgid "Account Statement"
-msgstr "Estado de Cuenta"
+msgstr "Estado de cuenta"
msgctxt "model:account.statement.journal,name:"
msgid "Statement Journal"
-msgstr "Libro Diario de Estados de Cuenta"
+msgstr "Libro diario de estados de cuenta"
msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
-msgstr "Línea de Estado de Cuenta"
+msgstr "Línea de estado de cuenta"
+
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr "Cuenta de grupo de líneas de estado de cuenta"
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de estado de cuenta"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Grupos de líneas"
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Líneas de Asiento"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Líneas de Asiento"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Asientos"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Asientos"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Estados de Cuenta"
msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
-msgstr "Libros Diarios de Estados de Cuenta"
+msgstr "Libros diarios de estados de cuenta"
+
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Líneas de estado de cuenta"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Línesa de estado de cuenta"
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
-msgstr "Estado de Cuenta"
+msgstr "Estado de cuenta"
msgctxt "model:ir.action.act_window.domain,name:act_statement_form_domain_all"
msgid "All"
@@ -280,13 +363,17 @@ msgctxt ""
msgid "Validated"
msgstr "Validado"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de Líneas de Estado de Cuenta"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
-msgstr "Estados de Cuenta"
+msgstr "Estados de cuenta"
msgctxt "model:ir.ui.menu,name:menu_statement_form"
msgid "Statements"
-msgstr "Estados de Cuenta"
+msgstr "Estados de cuenta"
msgctxt "model:ir.ui.menu,name:menu_statement_journal_form"
msgid "Statement Journals"
@@ -306,7 +393,7 @@ msgstr "#"
msgctxt "odt:account.statement:"
msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
msgctxt "odt:account.statement:"
msgid "Canceled"
@@ -334,7 +421,7 @@ msgstr "Correo electrónico:"
msgctxt "odt:account.statement:"
msgid "Journal:"
-msgstr "Libro Diario:"
+msgstr "Libro diario:"
msgctxt "odt:account.statement:"
msgid "Number"
@@ -350,7 +437,7 @@ msgstr "Teléfono:"
msgctxt "odt:account.statement:"
msgid "Statement"
-msgstr "Estado de Cuenta"
+msgstr "Estado de cuenta"
msgctxt "odt:account.statement:"
msgid "Total"
@@ -378,7 +465,7 @@ msgstr "Validado"
msgctxt "selection:account.statement.journal,validation:"
msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
msgctxt "selection:account.statement.journal,validation:"
msgid "Balance"
@@ -386,27 +473,35 @@ msgstr "Saldo"
msgctxt "selection:account.statement.journal,validation:"
msgid "Number of Lines"
-msgstr "Número de Líneas"
+msgstr "Número de líneas"
msgctxt "view:account.statement.journal:"
msgid "Statement Journal"
-msgstr "Libro Diario de Estados de Cuenta"
+msgstr "Libro diario de estados de cuenta"
msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
-msgstr "Libros Diarios de Estados de Cuenta"
+msgstr "Libros diarios de estados de cuenta"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Grupo de líneas de estado de cuenta"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de estado de cuenta"
msgctxt "view:account.statement.line:"
msgid "Amount"
-msgstr "Valor"
+msgstr "Importe"
msgctxt "view:account.statement.line:"
msgid "Statement Line"
-msgstr "Línea de Estado de Cuenta"
+msgstr "Línea de estado de cuenta"
msgctxt "view:account.statement.line:"
msgid "Statement Lines"
-msgstr "Líneas de Estado de Cuenta"
+msgstr "Líneas de estado de cuenta"
msgctxt "view:account.statement:"
msgid "Cancel"
@@ -418,7 +513,7 @@ msgstr "Borrador"
msgctxt "view:account.statement:"
msgid "Other Info"
-msgstr "Información Adicional"
+msgstr "Información adicional"
msgctxt "view:account.statement:"
msgid "Post"
@@ -426,15 +521,15 @@ msgstr "Contabilizar"
msgctxt "view:account.statement:"
msgid "Statement"
-msgstr "Estado de Cuenta"
+msgstr "Estado de cuenta"
msgctxt "view:account.statement:"
msgid "Statement Lines"
-msgstr "Líneas de Estado de Cuenta"
+msgstr "Líneas de estado de cuenta"
msgctxt "view:account.statement:"
msgid "Statements"
-msgstr "Estados de Cuenta"
+msgstr "Estados de cuenta"
msgctxt "view:account.statement:"
msgid "Validate"
diff --git a/locale/es_ES.po b/locale/es_ES.po
index 9176758..96be169 100644
--- a/locale/es_ES.po
+++ b/locale/es_ES.po
@@ -3,14 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"La cuenta \"%(account)s\" en la línea de extracto \"%(line)s\" es la misma "
-"que la configurada como haber o debe en el diario \"%(journal)s\"."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr "El importe \"%s\" es mayor que el importe a pagar de la factura."
@@ -18,11 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr "El importe debería ser un valor positivo o negativo."
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-"Proporcione una cuenta de haber y de debe en el diario de extracto \"%s\"."
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr "El saldo final debe ser \"%s\"."
@@ -32,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr "El número de líneas debe ser \"%s\"."
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr "Añade una cuenta debe y haber en el diario de extracto \"%s\"."
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr "Debe cancelar el extracto \"%s\" antes de borrarlo."
@@ -227,6 +218,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Usuario modificación"
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Importe"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Fecha creación"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Usuario creación"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Moneda"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimales de la moneda"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Fecha"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Diario"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Asiento"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Número"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Tercero"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Nombre"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Extracto"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Fecha modificación"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Usuario modificación"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Extracto"
@@ -243,10 +294,34 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Línea de extracto bancario"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr "Grupo de líneas de extracto"
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de extracto"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Grupos de líneas"
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Apuntes"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Apuntes"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Asientos"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Asientos"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Todos los extractos"
@@ -255,6 +330,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr "Diarios de extracto"
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Líneas de extracto bancario"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Líneas de extracto bancario"
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Extracto"
@@ -271,13 +354,17 @@ msgstr "Borrador"
msgctxt ""
"model:ir.action.act_window.domain,name:act_statement_form_domain_posted"
msgid "Posted"
-msgstr "Confirmado"
+msgstr "Contabilizado"
msgctxt ""
"model:ir.action.act_window.domain,name:act_statement_form_domain_validated"
msgid "Validated"
msgstr "Validado"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de extracto"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Extractos"
@@ -368,7 +455,7 @@ msgstr "Borrador"
msgctxt "selection:account.statement,state:"
msgid "Posted"
-msgstr "Confirmado"
+msgstr "Contabilizado"
msgctxt "selection:account.statement,state:"
msgid "Validated"
@@ -394,6 +481,14 @@ msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
msgstr "Diarios de extracto"
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Grupo de líneas de extracto"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Grupos de líneas de extracto"
+
msgctxt "view:account.statement.line:"
msgid "Amount"
msgstr "Importe"
@@ -420,7 +515,7 @@ msgstr "Información adicional"
msgctxt "view:account.statement:"
msgid "Post"
-msgstr "Confirmar"
+msgstr "Contabilizar"
msgctxt "view:account.statement:"
msgid "Statement"
diff --git a/locale/fr_FR.po b/locale/fr_FR.po
index e1216ab..c9ed351 100644
--- a/locale/fr_FR.po
+++ b/locale/fr_FR.po
@@ -3,14 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"Le compte « %(account)s » sur la ligne de relevé « %(line)s » que celui "
-"configuré comme crédit ou débit sur le journal « %(journal)s »."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr ""
"Le montant « %s » est plus grand que le montant restant à payer de la "
@@ -20,12 +12,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr "Le montant doit être une valeur positive ou négative."
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-"Veuillez remplir les comptes de débit et crédit sur le journal des relevés «"
-" %s »."
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr "La balance de fin doit valoir « %s »."
@@ -35,6 +21,11 @@ msgid "Number of Lines must be \"%s\"."
msgstr "Le nombre de lignes doit être « %s »."
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+"Veullez fournir les comptes de débit et crédit sur le journal de relevés."
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr "Le relevé « %s » doit être annulé avant suppression."
@@ -230,6 +221,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Mis à jour par"
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Montant"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Date de création"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Créé par"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Devise"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Décimales de la devise"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Date"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Journal"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Mouvement"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Numéro"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Tiers"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Nom"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Relevé"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Date de mise à jour"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Mis à jour par"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Relevé"
@@ -246,10 +297,34 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Ligne de relevé comptable"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr "Groupe de lignes de relevé comptable"
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Groupes de lignes de relevé"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Groupes de ligne"
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Lignes de mouvement"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Lignes de mouvement"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Mouvements"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Mouvements"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Relevés"
@@ -258,6 +333,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr "Journaux de relevés"
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Lignes de relevé"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Lignes de relevé"
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Relevé"
@@ -281,6 +364,10 @@ msgctxt ""
msgid "Validated"
msgstr "Validé"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Groupes de lignes de relevé"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Relevés"
@@ -397,6 +484,14 @@ msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
msgstr "Journaux de relevés"
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Groupe de lignes de relevé"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Groupes de lignes de relevé"
+
msgctxt "view:account.statement.line:"
msgid "Amount"
msgstr "Montant"
diff --git a/locale/nl_NL.po b/locale/nl_NL.po
index 2834ecd..4a109cc 100644
--- a/locale/nl_NL.po
+++ b/locale/nl_NL.po
@@ -3,12 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr ""
@@ -16,10 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr ""
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr ""
@@ -29,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr ""
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr ""
@@ -230,6 +224,76 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr ""
+#, fuzzy
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Bedrag"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Valuta"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Valuta decimalen"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Vervaldatum"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Dagboek"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Boeking"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Nummer"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Relaties"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Naam bijlage"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Bankafschrift"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr ""
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr ""
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Bankafschrift"
@@ -246,10 +310,36 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Rekeningafschriftregel"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr ""
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr ""
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Boekingen"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Boekingen"
+
#, fuzzy
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
@@ -260,6 +350,16 @@ msgid "Statement Journals"
msgstr "Dagboeken bankafschriften"
#, fuzzy
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Bankafschriftregels"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Bankafschriftregels"
+
+#, fuzzy
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Bankafschrift"
@@ -286,6 +386,10 @@ msgctxt ""
msgid "Validated"
msgstr "Goedgekeurd"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Bankafschriften"
diff --git a/locale/ru_RU.po b/locale/ru_RU.po
index d5396fd..bbab630 100644
--- a/locale/ru_RU.po
+++ b/locale/ru_RU.po
@@ -3,12 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr ""
@@ -16,10 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr ""
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr ""
@@ -29,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr ""
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr ""
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr ""
@@ -265,6 +259,80 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Изменено пользователем"
+#, fuzzy
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Сумма"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Дата создания"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Создано пользователем"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Валюты"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Кол-во цифр валюты"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Дата"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Журнал"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Перемещение"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Номер"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Организации"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Правило оплаты"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr ""
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Дата изменения"
+
+#, fuzzy
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Изменено пользователем"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr ""
@@ -281,10 +349,36 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr ""
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr ""
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr ""
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr ""
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Перемещения"
+
+#, fuzzy
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Перемещения"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr ""
@@ -293,6 +387,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr ""
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr ""
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr ""
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr ""
@@ -320,6 +422,10 @@ msgctxt ""
msgid "Validated"
msgstr "Утвержденный"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr ""
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr ""
diff --git a/locale/sl_SI.po b/locale/sl_SI.po
index 0038784..d1ec0b0 100644
--- a/locale/sl_SI.po
+++ b/locale/sl_SI.po
@@ -3,14 +3,6 @@ msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "error:account.statement.line:"
-msgid ""
-"Account \"%(account)s\" in statement line \"%(line)s\" is the same as the "
-"one configured as credit or debit on journal \"%(journal)s\"."
-msgstr ""
-"Konto \"%(account)s\" v postavki izpiska \"%(line)s\" je enak kontu, ki je "
-"nastavljen v dnevniku \"%(journal)s\" kot kredit ali debet."
-
-msgctxt "error:account.statement.line:"
msgid "Amount \"%s\" is greater than the amount to pay of invoice."
msgstr "Znesek \"%s\" je večji od zneska za plačat na računu."
@@ -18,11 +10,6 @@ msgctxt "error:account.statement.line:"
msgid "Amount should be a positive or negative value."
msgstr "Znesek mora biti pozitivna ali negativna vrednost."
-msgctxt "error:account.statement.line:"
-msgid "Please provide debit and credit account on statement journal \"%s\"."
-msgstr ""
-"Prosimo, da nastavite debetni in kreditni konto v dnevniku izpiskov \"%s\"."
-
msgctxt "error:account.statement:"
msgid "End Balance must be \"%s\"."
msgstr "Končni saldo mora biti \"%s\"."
@@ -32,6 +19,10 @@ msgid "Number of Lines must be \"%s\"."
msgstr "Število postavk mora biti \"%s\"."
msgctxt "error:account.statement:"
+msgid "Please provide debit and credit account on statement journal \"%s\"."
+msgstr "Pri dnevniku izpiskov \"%s\" vnesi debetni in kreditni konto."
+
+msgctxt "error:account.statement:"
msgid "Statement \"%s\" must be cancelled before deletion."
msgstr "Izpisek \"%s\" mora biti pred izbrisom preklican."
@@ -85,7 +76,7 @@ msgstr "Postavke"
msgctxt "field:account.statement,name:"
msgid "Name"
-msgstr "Plačilni rok"
+msgstr "Naziv"
msgctxt "field:account.statement,number_of_lines:"
msgid "Number of Lines"
@@ -227,6 +218,66 @@ msgctxt "field:account.statement.line,write_uid:"
msgid "Write User"
msgstr "Zapisal"
+msgctxt "field:account.statement.line.group,amount:"
+msgid "Amount"
+msgstr "Znesek"
+
+msgctxt "field:account.statement.line.group,create_date:"
+msgid "Create Date"
+msgstr "Izdelano"
+
+msgctxt "field:account.statement.line.group,create_uid:"
+msgid "Create User"
+msgstr "Izdelal"
+
+msgctxt "field:account.statement.line.group,currency:"
+msgid "Currency"
+msgstr "Valuta"
+
+msgctxt "field:account.statement.line.group,currency_digits:"
+msgid "Currency Digits"
+msgstr "Decimalke"
+
+msgctxt "field:account.statement.line.group,date:"
+msgid "Date"
+msgstr "Datum"
+
+msgctxt "field:account.statement.line.group,id:"
+msgid "ID"
+msgstr "ID"
+
+msgctxt "field:account.statement.line.group,journal:"
+msgid "Journal"
+msgstr "Dnevnik"
+
+msgctxt "field:account.statement.line.group,move:"
+msgid "Move"
+msgstr "Knjižba"
+
+msgctxt "field:account.statement.line.group,number:"
+msgid "Number"
+msgstr "Številka"
+
+msgctxt "field:account.statement.line.group,party:"
+msgid "Party"
+msgstr "Partner"
+
+msgctxt "field:account.statement.line.group,rec_name:"
+msgid "Name"
+msgstr "Ime"
+
+msgctxt "field:account.statement.line.group,statement:"
+msgid "Statement"
+msgstr "Izpisek"
+
+msgctxt "field:account.statement.line.group,write_date:"
+msgid "Write Date"
+msgstr "Zapisano"
+
+msgctxt "field:account.statement.line.group,write_uid:"
+msgid "Write User"
+msgstr "Zapisal"
+
msgctxt "model:account.journal.type,name:journal_type_statement"
msgid "Statement"
msgstr "Izpisek"
@@ -243,10 +294,34 @@ msgctxt "model:account.statement.line,name:"
msgid "Account Statement Line"
msgstr "Postavka izpiska"
+msgctxt "model:account.statement.line.group,name:"
+msgid "Account Statement Line Group"
+msgstr "Skupina postavk izpiska"
+
+msgctxt "model:ir.action,name:act_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Skupine postavk izpiska"
+
+msgctxt "model:ir.action,name:act_line_groups_form"
+msgid "Line Groups"
+msgstr "Skupine postavk"
+
msgctxt "model:ir.action,name:act_move_lines_form"
msgid "Move Lines"
msgstr "Postavke prometa"
+msgctxt "model:ir.action,name:act_move_lines_form2"
+msgid "Move Lines"
+msgstr "Postavke prometa"
+
+msgctxt "model:ir.action,name:act_moves_form"
+msgid "Moves"
+msgstr "Promet"
+
+msgctxt "model:ir.action,name:act_moves_form2"
+msgid "Moves"
+msgstr "Promet"
+
msgctxt "model:ir.action,name:act_statement_form"
msgid "Statements"
msgstr "Izpiski"
@@ -255,6 +330,14 @@ msgctxt "model:ir.action,name:act_statement_journal_form"
msgid "Statement Journals"
msgstr "Dnevniki izpiskov"
+msgctxt "model:ir.action,name:act_statement_line_move"
+msgid "Statement Lines"
+msgstr "Postavke izpiska"
+
+msgctxt "model:ir.action,name:act_statement_line_move_line"
+msgid "Statement Lines"
+msgstr "Postavke izpiska"
+
msgctxt "model:ir.action,name:report_statement"
msgid "Statement"
msgstr "Izpisek"
@@ -278,6 +361,10 @@ msgctxt ""
msgid "Validated"
msgstr "Odobreno"
+msgctxt "model:ir.ui.menu,name:menu_line_group_form"
+msgid "Statement Line Groups"
+msgstr "Skupine postavk izpiska"
+
msgctxt "model:ir.ui.menu,name:menu_statement_configuration"
msgid "Statements"
msgstr "Izpiski"
@@ -394,6 +481,14 @@ msgctxt "view:account.statement.journal:"
msgid "Statement Journals"
msgstr "Dnevniki izpiskov"
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Group"
+msgstr "Skupina postavk izpiska"
+
+msgctxt "view:account.statement.line.group:"
+msgid "Statement Line Groups"
+msgstr "Skupine postavk izpiska"
+
msgctxt "view:account.statement.line:"
msgid "Amount"
msgstr "Znesek"
diff --git a/setup.py b/setup.py
index 5465147..6f416ab 100644
--- a/setup.py
+++ b/setup.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python
-#This file is part of Tryton. The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# 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 setuptools import setup
import re
@@ -41,12 +41,11 @@ if minor_version % 2:
'hg+http://hg.tryton.org/modules/%s#egg=%s-%s' % (
name[8:], name, version))
-requires = []
+requires = ['python-sql >= 0.4']
for dep in info.get('depends', []):
if not re.match(r'(ir|res|webdav)(\W|$)', dep):
requires.append(get_require_version('trytond_%s' % dep))
requires.append(get_require_version('trytond'))
-requires.append('python-sql')
tests_require = [get_require_version('proteus')]
dependency_links = []
@@ -93,6 +92,8 @@ setup(name=name,
'Natural Language :: Spanish',
'Operating System :: OS Independent',
'Programming Language :: Python :: 2.7',
+ 'Programming Language :: Python :: Implementation :: CPython',
+ 'Programming Language :: Python :: Implementation :: PyPy',
'Topic :: Office/Business',
'Topic :: Office/Business :: Financial :: Accounting',
],
diff --git a/statement.odt b/statement.odt
index c85d075..b3d53f8 100644
Binary files a/statement.odt and b/statement.odt differ
diff --git a/statement.py b/statement.py
index 39bd11a..9fc0e49 100644
--- a/statement.py
+++ b/statement.py
@@ -1,10 +1,11 @@
-#This file is part of Tryton. The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# 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 decimal import Decimal
from collections import namedtuple
from itertools import groupby
-from sql.aggregate import Sum
+from sql import Null
+from sql.aggregate import Max, Sum
from trytond.model import Workflow, ModelView, ModelSQL, fields
from trytond.pyson import Eval, If, Bool
@@ -12,9 +13,8 @@ from trytond.transaction import Transaction
from trytond import backend
from trytond.pool import Pool
from trytond.modules.company import CompanyReport
-from trytond.tools import reduce_ids
-__all__ = ['Statement', 'Line', 'StatementReport']
+__all__ = ['Statement', 'Line', 'LineGroup', 'StatementReport']
_STATES = {'readonly': Eval('state') != 'draft'}
_DEPENDS = ['state']
@@ -41,7 +41,7 @@ _NUMBER_STATES.update({
_NUMBER_DEPENDS = _DEPENDS + ['validation']
-class Null(object):
+class Unequal(object):
"Always different"
def __eq__(self, other):
@@ -67,12 +67,12 @@ class Statement(Workflow, ModelSQL, ModelView):
journal = fields.Many2One('account.statement.journal', 'Journal',
required=True, select=True,
domain=[
- ('company', '=', Eval('context', {}).get('company', -1)),
+ ('company', '=', Eval('company', -1)),
],
states={
'readonly': (Eval('state') != 'draft') | Eval('lines', [0]),
},
- depends=['state'])
+ depends=['state', 'company'])
currency_digits = fields.Function(fields.Integer('Currency Digits'),
'on_change_with_currency_digits')
date = fields.Date('Date', required=True, states=_STATES, depends=_DEPENDS,
@@ -120,6 +120,8 @@ class Statement(Workflow, ModelSQL, ModelView):
'deletion.'),
'paid_invoice_draft_statement': ('There are paid invoices on '
'draft statements.'),
+ 'debit_credit_account_statement_journal': ('Please provide '
+ 'debit and credit account on statement journal "%s".'),
})
cls._transitions |= set((
('draft', 'validated'),
@@ -177,7 +179,7 @@ class Statement(Workflow, ModelSQL, ModelView):
# Migration from 3.2: add required name
cursor.execute(*sql_table.update([sql_table.name],
[sql_table.id.cast(cls.name.sql_type().base)],
- where=sql_table.name == None))
+ where=sql_table.name == Null))
@staticmethod
def default_company():
@@ -202,9 +204,8 @@ class Statement(Workflow, ModelSQL, ModelView):
@fields.depends('journal', 'state', 'lines')
def on_change_journal(self):
- res = {}
if not self.journal:
- return res
+ return
statements = self.search([
('journal', '=', self.journal.id),
@@ -212,11 +213,10 @@ class Statement(Workflow, ModelSQL, ModelView):
('date', 'DESC'),
], limit=1)
if not statements:
- return res
+ return
statement, = statements
- res['start_balance'] = statement.end_balance
- return res
+ self.start_balance = statement.end_balance
@fields.depends('journal')
def on_change_with_currency_digits(self, name=None):
@@ -240,9 +240,6 @@ class Statement(Workflow, ModelSQL, ModelView):
pool = Pool()
Currency = pool.get('currency.currency')
Line = pool.get('account.statement.line')
- res = {
- 'lines': {},
- }
if self.journal and self.lines:
invoices = set()
for line in self.lines:
@@ -259,52 +256,36 @@ class Statement(Workflow, ModelSQL, ModelView):
Currency.compute(invoice.currency,
invoice.amount_to_pay, self.journal.currency))
+ lines = list(self.lines)
line_offset = 0
for index, line in enumerate(self.lines or []):
if getattr(line, 'invoice', None) and line.id:
amount_to_pay = invoice_id2amount_to_pay[line.invoice.id]
- res['lines'].setdefault('update', [])
if (not self.journal.currency.is_zero(amount_to_pay)
and getattr(line, 'amount', None)
and (line.amount >= 0) == (amount_to_pay <= 0)):
- res['lines']['update'].append({
- 'id': line.id,
- 'amount': (amount_to_pay.copy_sign(line.amount)
- if abs(line.amount) > abs(amount_to_pay)
- else line.amount)
- })
if abs(line.amount) > abs(amount_to_pay):
- res['lines'].setdefault('add', [])
- vals = {}
+ new_line = Line()
for field_name, field in Line._fields.iteritems():
+ if field_name == 'id':
+ continue
try:
- value = getattr(line, field_name)
+ setattr(new_line, field_name,
+ getattr(line, field_name))
except AttributeError:
- continue
- if (value and field._type in ('many2one',
- 'one2one')):
- vals[field_name] = value.id
- if value.id >= 0:
- vals[field_name + '.rec_name'] = \
- value.rec_name
- else:
- vals[field_name] = value
- del vals['id']
- vals['amount'] = line.amount + amount_to_pay
- vals['invoice'] = None
- del vals['invoice.rec_name']
+ pass
+ new_line.amount = line.amount + amount_to_pay
+ new_line.invoice = None
line_offset += 1
- res['lines']['add'].append((index + line_offset, vals))
+ lines.insert(index + line_offset, new_line)
invoice_id2amount_to_pay[line.invoice.id] = 0
+ line.amount = amount_to_pay.copy_sign(line.amount)
else:
invoice_id2amount_to_pay[line.invoice.id] = (
line.amount + amount_to_pay)
else:
- res['lines']['update'].append({
- 'id': line.id,
- 'invoice': None,
- })
- return res
+ line.invoice = None
+ self.lines = lines
@fields.depends('journal')
def on_change_with_validation(self, name=None):
@@ -313,7 +294,7 @@ class Statement(Workflow, ModelSQL, ModelView):
def _group_key(self, line):
key = (
- ('number', line.number or Null()),
+ ('number', line.number or Unequal()),
('date', line.date),
('party', line.party),
)
@@ -405,8 +386,9 @@ class Statement(Workflow, ModelSQL, ModelView):
for statement in statements:
getattr(statement, 'validate_%s' % statement.validation)()
- for line in statement.lines:
- line.create_move()
+
+ cls.create_move(statements)
+
cls.write(statements, {
'state': 'validated',
})
@@ -422,6 +404,103 @@ class Statement(Workflow, ModelSQL, ModelView):
})
@classmethod
+ def create_move(cls, statements):
+ '''Create move for the statements and try to reconcile the lines.
+ Returns the list of move, statement and lines
+ '''
+ pool = Pool()
+ Line = pool.get('account.statement.line')
+ Move = pool.get('account.move')
+ MoveLine = pool.get('account.move.line')
+
+ moves = []
+ for statement in statements:
+ for key, lines in groupby(
+ statement.lines, key=statement._group_key):
+ lines = list(lines)
+ key = dict(key)
+ move = statement._get_move(key)
+ moves.append((move, statement, lines))
+
+ Move.save([m for m, _, _ in moves])
+
+ to_write = []
+ for move, _, lines in moves:
+ to_write.append(lines)
+ to_write.append({
+ 'move': move.id,
+ })
+ Line.write(*to_write)
+
+ move_lines = []
+ for move, statement, lines in moves:
+ amount = 0
+ amount_second_currency = 0
+ for line in lines:
+ move_line = line.get_move_line()
+ move_line.move = move
+ amount += move_line.debit - move_line.credit
+ if move_line.amount_second_currency:
+ amount_second_currency += move_line.amount_second_currency
+ move_lines.append((move_line, line))
+
+ move_line = statement._get_move_line(
+ amount, amount_second_currency)
+ move_line.move = move
+ move_lines.append((move_line, None))
+
+ MoveLine.save([l for l, _ in move_lines])
+
+ for move_line, line in move_lines:
+ if line:
+ line.reconcile(move_line)
+ return moves
+
+ def _get_move(self, key):
+ 'Return Move for the grouping key'
+ pool = Pool()
+ Move = pool.get('account.move')
+ Period = pool.get('account.period')
+
+ period_id = Period.find(self.company.id, date=key['date'])
+ return Move(
+ period=period_id,
+ journal=self.journal.journal,
+ date=key['date'],
+ origin=self,
+ company=self.company,
+ )
+
+ def _get_move_line(self, amount, amount_second_currency):
+ 'Return counterpart Move Line for the amount'
+ pool = Pool()
+ MoveLine = pool.get('account.move.line')
+
+ if amount < 0:
+ account = self.journal.journal.debit_account
+ else:
+ account = self.journal.journal.credit_account
+
+ if not account:
+ self.raise_user_error('debit_credit_account_statement_journal',
+ (self.journal.rec_name,))
+
+ if self.journal.currency != self.company.currency:
+ second_currency = self.journal.currency
+ amount_second_currency *= -1
+ else:
+ second_currency = None
+ amount_second_currency = None
+
+ return MoveLine(
+ debit=abs(amount) if amount < 0 else 0,
+ credit=abs(amount) if amount > 0 else 0,
+ account=account,
+ second_currency=second_currency,
+ amount_second_currency=amount_second_currency,
+ )
+
+ @classmethod
@ModelView.button
@Workflow.transition('posted')
def post(cls, statements):
@@ -457,7 +536,10 @@ class Line(ModelSQL, ModelView):
('kind', '!=', 'view'),
])
description = fields.Char('Description')
- move = fields.Many2One('account.move', 'Account Move', readonly=True)
+ move = fields.Many2One('account.move', 'Account Move', readonly=True,
+ domain=[
+ ('company', '=', Eval('_parent_statement', {}).get('company', -1)),
+ ])
invoice = fields.Many2One('account.invoice', 'Invoice',
domain=[
If(Bool(Eval('party')), [('party', '=', Eval('party'))], []),
@@ -473,11 +555,6 @@ class Line(ModelSQL, ModelView):
super(Line, cls).__setup__()
cls._order.insert(0, ('sequence', 'ASC'))
cls._error_messages.update({
- 'debit_credit_account_statement_journal': ('Please provide '
- 'debit and credit account on statement journal "%s".'),
- 'same_debit_credit_account': ('Account "%(account)s" in '
- 'statement line "%(line)s" is the same as the one '
- 'configured as credit or debit on journal "%(journal)s".'),
'amount_greater_invoice_amount_to_pay': ('Amount "%s" is '
'greater than the amount to pay of invoice.'),
})
@@ -489,7 +566,7 @@ class Line(ModelSQL, ModelView):
@staticmethod
def order_sequence(tables):
table, _ = tables[None]
- return [table.sequence == None, table.sequence]
+ return [table.sequence == Null, table.sequence]
@staticmethod
def default_amount():
@@ -497,31 +574,24 @@ class Line(ModelSQL, ModelView):
@fields.depends('amount', 'party', 'invoice')
def on_change_party(self):
- res = {}
-
if self.party:
if self.amount:
if self.amount > Decimal("0.0"):
- account = self.party.account_receivable
+ self.account = self.party.account_receivable
else:
- account = self.party.account_payable
- res['account'] = account.id
- res['account.rec_name'] = account.rec_name
+ self.account = self.party.account_payable
if self.invoice:
if self.party:
if self.invoice.party != self.party:
- res['invoice'] = None
+ self.invoice = None
else:
- res['invoice'] = None
- return res
+ self.invoice = None
@fields.depends('amount', 'party', 'account', 'invoice',
'_parent_statement.journal')
def on_change_amount(self):
Currency = Pool().get('currency.currency')
- res = {}
-
if self.party:
if self.account and self.account not in (
self.party.account_receivable, self.party.account_payable):
@@ -529,11 +599,9 @@ class Line(ModelSQL, ModelView):
pass
elif self.amount:
if self.amount > Decimal("0.0"):
- account = self.party.account_receivable
+ self.account = self.party.account_receivable
else:
- account = self.party.account_payable
- res['account'] = account.id
- res['account.rec_name'] = account.rec_name
+ self.account = self.party.account_payable
if self.invoice:
if self.amount and self.statement and self.statement.journal:
invoice = self.invoice
@@ -542,34 +610,26 @@ class Line(ModelSQL, ModelView):
amount_to_pay = Currency.compute(invoice.currency,
invoice.amount_to_pay, journal.currency)
if abs(self.amount) > amount_to_pay:
- res['invoice'] = None
+ self.invoice = None
else:
- res['invoice'] = None
- return res
+ self.invoice = None
@fields.depends('account', 'invoice')
def on_change_account(self):
- res = {}
-
if self.invoice:
if self.account:
if self.invoice.account != self.account:
- res['invoice'] = None
+ self.invoice = None
else:
- res['invoice'] = None
- return res
+ self.invoice = None
@fields.depends('party', 'account', 'invoice')
def on_change_invoice(self):
- changes = {}
if self.invoice:
if not self.party:
- changes['party'] = self.invoice.party.id
- changes['party.rec_name'] = self.invoice.party.rec_name
+ self.party = self.invoice.party
if not self.account:
- changes['account'] = self.invoice.account.id
- changes['account.rec_name'] = self.invoice.account.rec_name
- return changes
+ self.account = self.invoice.account
def get_rec_name(self, name):
return self.statement.rec_name
@@ -587,36 +647,12 @@ class Line(ModelSQL, ModelView):
default.setdefault('invoice', None)
return super(Line, cls).copy(lines, default=default)
- def create_move(self):
- '''
- Create move for the statement line and return move if created.
- '''
+ def reconcile(self, move_line):
pool = Pool()
- Move = pool.get('account.move')
- Period = pool.get('account.period')
- Invoice = pool.get('account.invoice')
Currency = pool.get('currency.currency')
- MoveLine = pool.get('account.move.line')
Lang = pool.get('ir.lang')
-
- if self.move:
- return
-
- period_id = Period.find(self.statement.company.id, date=self.date)
-
- move_lines = self._get_move_lines()
- move = Move(
- period=period_id,
- journal=self.statement.journal.journal,
- date=self.date,
- origin=self,
- lines=move_lines,
- )
- move.save()
-
- self.write([self], {
- 'move': move.id,
- })
+ Invoice = pool.get('account.invoice')
+ MoveLine = pool.get('account.move.line')
if self.invoice:
with Transaction().set_context(date=self.invoice.currency_date):
@@ -641,30 +677,28 @@ class Line(ModelSQL, ModelView):
reconcile_lines = self.invoice.get_reconcile_lines_for_amount(
amount)
- for move_line in move.lines:
- if move_line.account == self.invoice.account:
- Invoice.write([self.invoice], {
- 'payment_lines': [('add', [move_line.id])],
- })
- break
+ assert move_line.account == self.invoice.account
+
+ Invoice.write([self.invoice], {
+ 'payment_lines': [('add', [move_line.id])],
+ })
if reconcile_lines[1] == Decimal('0.0'):
lines = reconcile_lines[0] + [move_line]
MoveLine.reconcile(lines)
- return move
@classmethod
def post_move(cls, lines):
Move = Pool().get('account.move')
- Move.post([l.move for l in lines if l.move])
+ Move.post(list({l.move for l in lines if l.move}))
@classmethod
def delete_move(cls, lines):
Move = Pool().get('account.move')
- Move.delete([l.move for l in lines if l.move])
+ Move.delete(list({l.move for l in lines if l.move}))
- def _get_move_lines(self):
+ def get_move_line(self):
'''
- Return the move lines for the statement line
+ Return the move line for the statement line
'''
pool = Pool()
MoveLine = pool.get('account.move.line')
@@ -675,46 +709,93 @@ class Line(ModelSQL, ModelView):
self.amount, self.statement.company.currency)
if self.statement.journal.currency != self.statement.company.currency:
second_currency = self.statement.journal.currency.id
- amount_second_currency = abs(self.amount)
+ amount_second_currency = -self.amount
else:
amount_second_currency = None
second_currency = None
- move_lines = []
- move_lines.append(MoveLine(
- description=self.description,
- debit=amount < zero and -amount or zero,
- credit=amount >= zero and amount or zero,
- account=self.account,
- party=self.party if self.account.party_required else None,
- second_currency=second_currency,
- amount_second_currency=amount_second_currency,
- ))
+ return MoveLine(
+ description=self.description,
+ debit=amount < zero and -amount or zero,
+ credit=amount >= zero and amount or zero,
+ account=self.account,
+ party=self.party if self.account.party_required else None,
+ second_currency=second_currency,
+ amount_second_currency=amount_second_currency,
+ )
- journal = self.statement.journal.journal
- if self.amount >= zero:
- account = journal.debit_account
- else:
- account = journal.credit_account
- if not account:
- self.raise_user_error('debit_credit_account_statement_journal',
- (journal.rec_name,))
- if self.account == account:
- self.raise_user_error('same_debit_credit_account', {
- 'account': self.account.rec_name,
- 'line': self.rec_name,
- 'journal': journal,
- })
- move_lines.append(MoveLine(
- description=self.description,
- debit=amount >= zero and amount or zero,
- credit=amount < zero and -amount or zero,
- account=account,
- party=self.party if account.party_required else None,
- second_currency=second_currency,
- amount_second_currency=amount_second_currency,
- ))
- return move_lines
+
+class LineGroup(ModelSQL, ModelView):
+ 'Account Statement Line Group'
+ __name__ = 'account.statement.line.group'
+ _rec_name = 'number'
+ statement = fields.Many2One('account.statement', 'Statement')
+ journal = fields.Function(fields.Many2One('account.statement.journal',
+ 'Journal'), 'get_journal', searcher='search_journal')
+ number = fields.Char('Number')
+ date = fields.Date('Date')
+ amount = fields.Numeric('Amount',
+ digits=(16, Eval('currency_digits', 2)),
+ depends=['currency_digits'])
+ currency = fields.Function(fields.Many2One('currency.currency',
+ 'Currency'), 'get_currency')
+ currency_digits = fields.Function(fields.Integer('Currency Digits'),
+ 'get_currency_digits')
+ party = fields.Many2One('party.party', 'Party')
+ move = fields.Many2One('account.move', 'Move')
+
+ @classmethod
+ def __setup__(cls):
+ super(LineGroup, cls).__setup__()
+ cls._order.insert(0, ('date', 'DESC'))
+
+ @classmethod
+ def _grouped_columns(cls, line):
+ return [
+ Max(line.statement).as_('statement'),
+ Max(line.number).as_('number'),
+ Max(line.date).as_('date'),
+ Sum(line.amount).as_('amount'),
+ Max(line.party).as_('party'),
+ ]
+
+ @classmethod
+ def table_query(cls):
+ pool = Pool()
+ Move = pool.get('account.move')
+ Line = pool.get('account.statement.line')
+ move = Move.__table__()
+ line = Line.__table__()
+
+ std_columns = [
+ move.id,
+ move.create_uid,
+ move.create_date,
+ move.write_uid,
+ move.write_date,
+ ]
+
+ columns = (std_columns + [move.id.as_('move')]
+ + cls._grouped_columns(line))
+ return move.join(line,
+ condition=move.id == line.move
+ ).select(*columns,
+ where=move.origin.ilike(Statement.__name__ + ',%'),
+ group_by=std_columns + [move.id]
+ )
+
+ def get_journal(self, name):
+ return self.statement.journal.id
+
+ @classmethod
+ def search_journal(cls, name, clause):
+ return [('statement.journal',) + tuple(clause[1:])]
+
+ def get_currency(self, name):
+ return self.statement.journal.currency.id
+
+ def get_currency_digits(self, name):
+ return self.statement.journal.currency.digits
class StatementReport(CompanyReport):
diff --git a/statement.xml b/statement.xml
index 1d2780f..a1ebd97 100644
--- a/statement.xml
+++ b/statement.xml
@@ -48,21 +48,21 @@ this repository contains the full copyright notices and license terms. -->
id="act_statement_form_domain_draft">
<field name="name">Draft</field>
<field name="sequence" eval="10"/>
- <field name="domain">[('state', '=', 'draft')]</field>
+ <field name="domain" eval="[('state', '=', 'draft')]" pyson="1"/>
<field name="act_window" ref="act_statement_form"/>
</record>
<record model="ir.action.act_window.domain"
id="act_statement_form_domain_validated">
<field name="name">Validated</field>
<field name="sequence" eval="20"/>
- <field name="domain">[('state', '=', 'validated')]</field>
+ <field name="domain" eval="[('state', '=', 'validated')]" pyson="1"/>
<field name="act_window" ref="act_statement_form"/>
</record>
<record model="ir.action.act_window.domain"
id="act_statement_form_domain_posted">
<field name="name">Posted</field>
<field name="sequence" eval="30"/>
- <field name="domain">[('state', '=', 'posted')]</field>
+ <field name="domain" eval="[('state', '=', 'posted')]" pyson="1"/>
<field name="act_window" ref="act_statement_form"/>
</record>
<record model="ir.action.act_window.domain"
@@ -80,7 +80,9 @@ this repository contains the full copyright notices and license terms. -->
<field name="global_p" eval="True"/>
</record>
<record model="ir.rule" id="rule_statement1">
- <field name="domain">[('company', '=', user.company.id if user.company else None)]</field>
+ <field name="domain"
+ eval="[('company', '=', Eval('user', {}).get('company', None))]"
+ pyson="1"/>
<field name="rule_group" ref="rule_group_statement"/>
</record>
@@ -116,6 +118,48 @@ this repository contains the full copyright notices and license terms. -->
<field name="name">statement_line_tree_editable</field>
</record>
+ <record model="ir.action.act_window" id="act_statement_line_move">
+ <field name="name">Statement Lines</field>
+ <field name="res_model">account.statement.line</field>
+ <field name="domain"
+ eval="[('move', 'in', Eval('active_ids'))]" pyson="1"/>
+ </record>
+ <record model="ir.action.keyword" id="act_statement_line_move_keyword1">
+ <field name="keyword">form_relate</field>
+ <field name="model">account.move,-1</field>
+ <field name="action" ref="act_statement_line_move"/>
+ </record>
+
+ <record model="ir.action.act_window" id="act_statement_line_move_line">
+ <field name="name">Statement Lines</field>
+ <field name="res_model">account.statement.line</field>
+ <field name="domain"
+ eval="[('move.lines', 'in', Eval('active_ids'))]" pyson="1"/>
+ </record>
+ <record model="ir.action.keyword" id="act_statement_line_move_line_keyword1">
+ <field name="keyword">form_relate</field>
+ <field name="model">account.move.line,-1</field>
+ <field name="action" ref="act_statement_line_move_line"/>
+ </record>
+
+ <record model="ir.rule.group" id="rule_group_statement_line">
+ <field name="model" search="[('model', '=', 'account.statement.line')]"/>
+ <field name="global_p" eval="True"/>
+ </record>
+ <record model="ir.rule" id="rule_statement_line1">
+ <field name="domain"
+ eval="[('statement.company', '=', Eval('user', {}).get('company', None))]"
+ pyson="1"/>
+ <field name="rule_group" ref="rule_group_statement_line"/>
+ </record>
+
+ <record model="ir.model.access" id="access_statement">
+ <field name="model" search="[('model', '=', 'account.statement')]"/>
+ <field name="perm_read" eval="False"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_delete" eval="False"/>
+ </record>
<record model="ir.model.access" id="access_statement_account_admin">
<field name="model" search="[('model', '=', 'account.statement')]"/>
<field name="group" ref="account.group_account_admin"/>
@@ -141,6 +185,13 @@ this repository contains the full copyright notices and license terms. -->
<field name="perm_delete" eval="True"/>
</record>
+ <record model="ir.model.access" id="access_statement_line">
+ <field name="model" search="[('model', '=', 'account.statement.line')]"/>
+ <field name="perm_read" eval="False"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_delete" eval="False"/>
+ </record>
<record model="ir.model.access" id="access_statement_line_account_admin">
<field name="model" search="[('model', '=', 'account.statement.line')]"/>
<field name="group" ref="account.group_account_admin"/>
@@ -215,10 +266,83 @@ this repository contains the full copyright notices and license terms. -->
<field name="group" ref="account.group_account_admin"/>
</record>
+ <record model="ir.ui.view" id="line_group_view_form">
+ <field name="model">account.statement.line.group</field>
+ <field name="type">form</field>
+ <field name="name">line_group_form</field>
+ </record>
+ <record model="ir.ui.view" id="line_group_view_list">
+ <field name="model">account.statement.line.group</field>
+ <field name="type">tree</field>
+ <field name="name">line_group_list</field>
+ </record>
+
+ <record model="ir.action.act_window" id="act_line_group_form">
+ <field name="name">Statement Line Groups</field>
+ <field name="res_model">account.statement.line.group</field>
+ </record>
+ <record model="ir.action.act_window.view" id="act_line_group_form_view1">
+ <field name="sequence" eval="10"/>
+ <field name="view" ref="line_group_view_list"/>
+ <field name="act_window" ref="act_line_group_form"/>
+ </record>
+ <record model="ir.action.act_window.view" id="act_line_group_form_view2">
+ <field name="sequence" eval="20"/>
+ <field name="view" ref="line_group_view_form"/>
+ <field name="act_window" ref="act_line_group_form"/>
+ </record>
+ <menuitem parent="menu_statement_form" sequence="10"
+ action="act_line_group_form" id="menu_line_group_form"/>
+
+ <record model="ir.rule.group" id="rule_group_line_group">
+ <field name="model" search="[('model', '=', 'account.statement.line.group')]"/>
+ <field name="global_p" eval="True"/>
+ </record>
+ <record model="ir.rule" id="rule_line_group1">
+ <field name="domain"
+ eval="[('statement.company', '=', Eval('user', {}).get('company', None))]"
+ pyson="1"/>
+ <field name="rule_group" ref="rule_group_line_group"/>
+ </record>
+
+ <record model="ir.model.access" id="access_line_group">
+ <field name="model" search="[('model', '=', 'account.statement.line.group')]"/>
+ <field name="perm_read" eval="False"/>
+ <field name="perm_write" eval="False"/>
+ <field name="perm_create" eval="False"/>
+ <field name="perm_delete" eval="False"/>
+ </record>
+ <record model="ir.model.access" id="access_line_group_account_admin">
+ <field name="model" search="[('model', '=', 'account.statement.line.group')]"/>
+ <field name="group" ref="account.group_account_admin"/>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_write" eval="True"/>
+ <field name="perm_create" eval="True"/>
+ <field name="perm_delete" eval="True"/>
+ </record>
+ <record model="ir.model.access" id="access_line_group_account">
+ <field name="model" search="[('model', '=', 'account.statement.line.group')]"/>
+ <field name="group" ref="account.group_account"/>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_write" eval="True"/>
+ <field name="perm_create" eval="True"/>
+ <field name="perm_delete" eval="True"/>
+ </record>
+ <record model="ir.model.access" id="access_line_group_statement">
+ <field name="model" search="[('model', '=', 'account.statement.line.group')]"/>
+ <field name="group" ref="group_statement"/>
+ <field name="perm_read" eval="True"/>
+ <field name="perm_write" eval="True"/>
+ <field name="perm_create" eval="True"/>
+ <field name="perm_delete" eval="True"/>
+ </record>
+
<record model="ir.action.act_window" id="act_move_lines_form">
<field name="name">Move Lines</field>
<field name="res_model">account.move.line</field>
- <field name="domain">[('origin.statement.id', 'in', Eval('active_ids'), 'account.statement.line')]</field>
+ <field name="domain"
+ eval="[('origin.id', 'in', Eval('active_ids'), 'account.statement')]"
+ pyson="1"/>
</record>
<record model="ir.action.keyword" id="act_move_lines_form_keyword1">
<field name="keyword">form_relate</field>
@@ -226,5 +350,55 @@ this repository contains the full copyright notices and license terms. -->
<field name="action" ref="act_move_lines_form"/>
</record>
+ <record model="ir.action.act_window" id="act_move_lines_form2">
+ <field name="name">Move Lines</field>
+ <field name="res_model">account.move.line</field>
+ <field name="domain"
+ eval="[('origin.id', 'in', Eval('active_ids'), 'account.statement.line')]"
+ pyson="1"/>
+ </record>
+ <record model="ir.action.keyword" id="act_move_lines_form2_keyword1">
+ <field name="keyword">form_relate</field>
+ <field name="model">account.statement.line,-1</field>
+ <field name="action" ref="act_move_lines_form2"/>
+ </record>
+
+ <record model="ir.action.act_window" id="act_moves_form">
+ <field name="name">Moves</field>
+ <field name="res_model">account.move</field>
+ <field name="domain"
+ eval="[('origin.statement.id', 'in', Eval('active_ids'), 'account.statement.line')]"
+ pyson="1"/>
+ </record>
+ <record model="ir.action.keyword" id="act_moves_form_keyword1">
+ <field name="keyword">form_relate</field>
+ <field name="model">account.statement,-1</field>
+ <field name="action" ref="act_moves_form"/>
+ </record>
+
+ <record model="ir.action.act_window" id="act_moves_form2">
+ <field name="name">Moves</field>
+ <field name="res_model">account.move</field>
+ <field name="domain"
+ eval="[('origin.id', 'in', Eval('active_ids'), 'account.statement.line')]"
+ pyson="1"/>
+ </record>
+ <record model="ir.action.keyword" id="act_moves_form2_keyword1">
+ <field name="keyword">form_relate</field>
+ <field name="model">account.statement.line,-1</field>
+ <field name="action" ref="act_moves_form2"/>
+ </record>
+
+ <record model="ir.action.act_window" id="act_line_groups_form">
+ <field name="name">Line Groups</field>
+ <field name="res_model">account.statement.line.group</field>
+ <field name="domain"
+ eval="[('journal', 'in', Eval('active_ids'))]" pyson="1"/>
+ </record>
+ <record model="ir.action.keyword" id="act_line_groups_form_keyword1">
+ <field name="keyword">form_relate</field>
+ <field name="model">account.statement.journal,-1</field>
+ <field name="action" ref="act_line_groups_form"/>
+ </record>
</data>
</tryton>
diff --git a/tests/__init__.py b/tests/__init__.py
index fec38bf..5f19aa6 100644
--- a/tests/__init__.py
+++ b/tests/__init__.py
@@ -1,5 +1,5 @@
-#This file is part of Tryton. The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# 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 .test_account_statement import suite
diff --git a/tests/scenario_account_statement.rst b/tests/scenario_account_statement.rst
index 2fcaf0c..742d027 100644
--- a/tests/scenario_account_statement.rst
+++ b/tests/scenario_account_statement.rst
@@ -2,16 +2,18 @@
Account Statement Scenario
==========================
-=============
-General Setup
-=============
-
Imports::
>>> import datetime
>>> from dateutil.relativedelta import relativedelta
>>> from decimal import Decimal
>>> from proteus import config, Model, Wizard, Report
+ >>> from trytond.modules.company.tests.tools import create_company, \
+ ... get_company
+ >>> from trytond.modules.account.tests.tools import create_fiscalyear, \
+ ... create_chart, get_accounts
+ >>> from.trytond.modules.account_invoice.tests.tools import \
+ ... set_fiscalyear_invoice_sequences, create_payment_term
>>> today = datetime.date.today()
Create database::
@@ -25,34 +27,14 @@ Install account_statement and account_invoice::
>>> modules = Module.find([
... ('name', 'in', ('account_statement', 'account_invoice')),
... ])
- >>> Module.install([x.id for x in modules], config.context)
+ >>> for module in modules:
+ ... module.click('install')
>>> Wizard('ir.module.module.install_upgrade').execute('upgrade')
Create company::
- >>> Currency = Model.get('currency.currency')
- >>> CurrencyRate = Model.get('currency.currency.rate')
- >>> Company = Model.get('company.company')
- >>> Party = Model.get('party.party')
- >>> company_config = Wizard('company.company.config')
- >>> company_config.execute('company')
- >>> company = company_config.form
- >>> party = Party(name='Dunder Mifflin')
- >>> party.save()
- >>> company.party = party
- >>> currencies = Currency.find([('code', '=', 'USD')])
- >>> if not currencies:
- ... currency = Currency(name='U.S. Dollar', symbol='$', code='USD',
- ... rounding=Decimal('0.01'), mon_grouping='[3, 3, 0]',
- ... mon_decimal_point='.', mon_thousands_sep=',')
- ... currency.save()
- ... CurrencyRate(date=today + relativedelta(month=1, day=1),
- ... rate=Decimal('1.0'), currency=currency).save()
- ... else:
- ... currency, = currencies
- >>> company.currency = currency
- >>> company_config.execute('add')
- >>> company, = Company.find()
+ >>> _ = create_company()
+ >>> company = get_company()
Reload the context::
@@ -61,63 +43,19 @@ Reload the context::
Create fiscal year::
- >>> FiscalYear = Model.get('account.fiscalyear')
- >>> Sequence = Model.get('ir.sequence')
- >>> SequenceStrict = Model.get('ir.sequence.strict')
- >>> fiscalyear = FiscalYear(name='%s' % today.year)
- >>> fiscalyear.start_date = today + relativedelta(month=1, day=1)
- >>> fiscalyear.end_date = today + relativedelta(month=12, day=31)
- >>> fiscalyear.company = company
- >>> post_move_sequence = Sequence(name='%s' % today.year,
- ... code='account.move',
- ... company=company)
- >>> post_move_sequence.save()
- >>> fiscalyear.post_move_sequence = post_move_sequence
- >>> invoice_sequence = SequenceStrict(name='%s' % today.year,
- ... code='account.invoice',
- ... company=company)
- >>> invoice_sequence.save()
- >>> fiscalyear.out_invoice_sequence = invoice_sequence
- >>> fiscalyear.in_invoice_sequence = invoice_sequence
- >>> fiscalyear.out_credit_note_sequence = invoice_sequence
- >>> fiscalyear.in_credit_note_sequence = invoice_sequence
- >>> fiscalyear.save()
- >>> FiscalYear.create_period([fiscalyear.id], config.context)
+ >>> fiscalyear = set_fiscalyear_invoice_sequences(
+ ... create_fiscalyear(company))
+ >>> fiscalyear.click('create_period')
Create chart of accounts::
- >>> AccountTemplate = Model.get('account.account.template')
- >>> Account = Model.get('account.account')
- >>> AccountJournal = Model.get('account.journal')
- >>> account_template, = AccountTemplate.find([('parent', '=', None)])
- >>> create_chart = Wizard('account.create_chart')
- >>> create_chart.execute('account')
- >>> create_chart.form.account_template = account_template
- >>> create_chart.form.company = company
- >>> create_chart.execute('create_account')
- >>> receivable, = Account.find([
- ... ('kind', '=', 'receivable'),
- ... ('company', '=', company.id),
- ... ])
- >>> payable, = Account.find([
- ... ('kind', '=', 'payable'),
- ... ('company', '=', company.id),
- ... ])
- >>> revenue, = Account.find([
- ... ('kind', '=', 'revenue'),
- ... ('company', '=', company.id),
- ... ])
- >>> expense, = Account.find([
- ... ('kind', '=', 'expense'),
- ... ('company', '=', company.id),
- ... ])
- >>> cash, = Account.find([
- ... ('name', '=', 'Main Cash'),
- ... ('company', '=', company.id),
- ... ])
- >>> create_chart.form.account_receivable = receivable
- >>> create_chart.form.account_payable = payable
- >>> create_chart.execute('create_properties')
+ >>> _ = create_chart(company)
+ >>> accounts = get_accounts(company)
+ >>> receivable = accounts['receivable']
+ >>> payable = accounts['payable']
+ >>> revenue = accounts['revenue']
+ >>> expense = accounts['expense']
+ >>> cash = accounts['cash']
Create parties::
@@ -129,42 +67,33 @@ Create parties::
Create payment term::
- >>> PaymentTerm = Model.get('account.invoice.payment_term')
- >>> PaymentTermLine = Model.get('account.invoice.payment_term.line')
- >>> payment_term = PaymentTerm(name='Direct')
- >>> payment_term_line = PaymentTermLine(type='remainder', days=0)
- >>> payment_term.lines.append(payment_term_line)
+ >>> payment_term = create_payment_term()
>>> payment_term.save()
Create 2 customer invoices::
>>> Invoice = Model.get('account.invoice')
- >>> InvoiceLine = Model.get('account.invoice.line')
>>> customer_invoice1 = Invoice(type='out_invoice')
>>> customer_invoice1.party = customer
>>> customer_invoice1.payment_term = payment_term
- >>> invoice_line = InvoiceLine()
- >>> customer_invoice1.lines.append(invoice_line)
+ >>> invoice_line = customer_invoice1.lines.new()
>>> invoice_line.quantity = 1
>>> invoice_line.unit_price = Decimal('100')
>>> invoice_line.account = revenue
>>> invoice_line.description = 'Test'
- >>> customer_invoice1.save()
- >>> Invoice.post([customer_invoice1.id], config.context)
+ >>> customer_invoice1.click('post')
>>> customer_invoice1.state
u'posted'
>>> customer_invoice2 = Invoice(type='out_invoice')
>>> customer_invoice2.party = customer
>>> customer_invoice2.payment_term = payment_term
- >>> invoice_line = InvoiceLine()
- >>> customer_invoice2.lines.append(invoice_line)
+ >>> invoice_line = customer_invoice2.lines.new()
>>> invoice_line.quantity = 1
>>> invoice_line.unit_price = Decimal('150')
>>> invoice_line.account = revenue
>>> invoice_line.description = 'Test'
- >>> customer_invoice2.save()
- >>> Invoice.post([customer_invoice2.id], config.context)
+ >>> customer_invoice2.click('post')
>>> customer_invoice2.state
u'posted'
@@ -173,14 +102,12 @@ Create 1 customer credit note::
>>> customer_credit_note = Invoice(type='out_credit_note')
>>> customer_credit_note.party = customer
>>> customer_credit_note.payment_term = payment_term
- >>> invoice_line = InvoiceLine()
- >>> customer_credit_note.lines.append(invoice_line)
+ >>> invoice_line = customer_credit_note.lines.new()
>>> invoice_line.quantity = 1
>>> invoice_line.unit_price = Decimal('50')
>>> invoice_line.account = revenue
>>> invoice_line.description = 'Test'
- >>> customer_credit_note.save()
- >>> Invoice.post([customer_credit_note.id], config.context)
+ >>> customer_credit_note.click('post')
>>> customer_credit_note.state
u'posted'
@@ -189,15 +116,13 @@ Create 1 supplier invoices::
>>> supplier_invoice = Invoice(type='in_invoice')
>>> supplier_invoice.party = supplier
>>> supplier_invoice.payment_term = payment_term
- >>> invoice_line = InvoiceLine()
- >>> supplier_invoice.lines.append(invoice_line)
+ >>> invoice_line = supplier_invoice.lines.new()
>>> invoice_line.quantity = 1
>>> invoice_line.unit_price = Decimal('50')
>>> invoice_line.account = expense
>>> invoice_line.description = 'Test'
>>> supplier_invoice.invoice_date = today
- >>> supplier_invoice.save()
- >>> Invoice.post([supplier_invoice.id], config.context)
+ >>> supplier_invoice.click('post')
>>> supplier_invoice.state
u'posted'
@@ -206,6 +131,8 @@ Create statement::
>>> StatementJournal = Model.get('account.statement.journal')
>>> Statement = Model.get('account.statement')
>>> StatementLine = Model.get('account.statement.line')
+ >>> Sequence = Model.get('ir.sequence')
+ >>> AccountJournal = Model.get('account.journal')
>>> sequence = Sequence(name='Satement',
... code='account.journal',
@@ -285,7 +212,7 @@ Paid 50 to supplier::
Validate statement::
- >>> Statement.validate_statement([statement.id], config.context)
+ >>> statement.click('validate_statement')
>>> statement.state
u'validated'
@@ -316,29 +243,25 @@ Let's test the negative amount version of the supplier/customer invoices::
>>> customer_invoice3 = Invoice(type='out_invoice')
>>> customer_invoice3.party = customer
>>> customer_invoice3.payment_term = payment_term
- >>> invoice_line = InvoiceLine()
- >>> customer_invoice3.lines.append(invoice_line)
+ >>> invoice_line = customer_invoice3.lines.new()
>>> invoice_line.quantity = 1
>>> invoice_line.unit_price = Decimal('-120')
>>> invoice_line.account = revenue
>>> invoice_line.description = 'Test'
- >>> customer_invoice3.save()
- >>> Invoice.post([customer_invoice3.id], config.context)
+ >>> customer_invoice3.click('post')
>>> customer_invoice3.state
u'posted'
>>> supplier_invoice2 = Invoice(type='in_invoice')
>>> supplier_invoice2.party = supplier
>>> supplier_invoice2.payment_term = payment_term
- >>> invoice_line = InvoiceLine()
- >>> supplier_invoice2.lines.append(invoice_line)
+ >>> invoice_line = supplier_invoice2.lines.new()
>>> invoice_line.quantity = 1
>>> invoice_line.unit_price = Decimal('-40')
>>> invoice_line.account = expense
>>> invoice_line.description = 'Test'
>>> supplier_invoice2.invoice_date = today
- >>> supplier_invoice2.save()
- >>> Invoice.post([supplier_invoice2.id], config.context)
+ >>> supplier_invoice2.click('post')
>>> supplier_invoice2.state
u'posted'
@@ -376,13 +299,11 @@ Testing the use of an invoice in multiple statements::
>>> customer_invoice4 = Invoice(type='out_invoice')
>>> customer_invoice4.party = customer
>>> customer_invoice4.payment_term = payment_term
- >>> invoice_line = InvoiceLine()
- >>> customer_invoice4.lines.append(invoice_line)
+ >>> invoice_line = customer_invoice4.lines.new()
>>> invoice_line.quantity = 1
>>> invoice_line.unit_price = Decimal('300')
>>> invoice_line.account = revenue
>>> invoice_line.description = 'Test'
- >>> customer_invoice4.save()
>>> customer_invoice4.click('post')
>>> customer_invoice4.state
u'posted'
diff --git a/tests/test_account_statement.py b/tests/test_account_statement.py
index 0384bf6..551a3f3 100644
--- a/tests/test_account_statement.py
+++ b/tests/test_account_statement.py
@@ -1,25 +1,15 @@
-#This file is part of Tryton. The COPYRIGHT file at the top level of
-#this repository contains the full copyright notices and license terms.
+# This file is part of Tryton. The COPYRIGHT file at the top level of
+# this repository contains the full copyright notices and license terms.
import unittest
import doctest
import trytond.tests.test_tryton
-from trytond.tests.test_tryton import test_view, test_depends
+from trytond.tests.test_tryton import ModuleTestCase
from trytond.tests.test_tryton import doctest_setup, doctest_teardown
-class AccountStatementTestCase(unittest.TestCase):
+class AccountStatementTestCase(ModuleTestCase):
'Test AccountStatement module'
-
- def setUp(self):
- trytond.tests.test_tryton.install_module('account_statement')
-
- def test0005views(self):
- 'Test views'
- test_view('account_statement')
-
- def test0006depends(self):
- 'Test depends'
- test_depends()
+ module = 'account_statement'
def suite():
diff --git a/tryton.cfg b/tryton.cfg
index b426c98..f9b29d8 100644
--- a/tryton.cfg
+++ b/tryton.cfg
@@ -1,5 +1,5 @@
[tryton]
-version=3.4.1
+version=3.6.0
depends:
account
account_invoice
diff --git a/trytond_account_statement.egg-info/PKG-INFO b/trytond_account_statement.egg-info/PKG-INFO
index 55b11bc..57add82 100644
--- a/trytond_account_statement.egg-info/PKG-INFO
+++ b/trytond_account_statement.egg-info/PKG-INFO
@@ -1,12 +1,12 @@
Metadata-Version: 1.1
Name: trytond-account-statement
-Version: 3.4.1
+Version: 3.6.0
Summary: Tryton module with account statements
Home-page: http://www.tryton.org/
Author: Tryton
Author-email: issue_tracker at tryton.org
License: GPL-3
-Download-URL: http://downloads.tryton.org/3.4/
+Download-URL: http://downloads.tryton.org/3.6/
Description: trytond_account_statement
=========================
@@ -64,5 +64,7 @@ Classifier: Natural Language :: Slovenian
Classifier: Natural Language :: Spanish
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 2.7
+Classifier: Programming Language :: Python :: Implementation :: CPython
+Classifier: Programming Language :: Python :: Implementation :: PyPy
Classifier: Topic :: Office/Business
Classifier: Topic :: Office/Business :: Financial :: Accounting
diff --git a/trytond_account_statement.egg-info/SOURCES.txt b/trytond_account_statement.egg-info/SOURCES.txt
index 12837aa..622fb2f 100644
--- a/trytond_account_statement.egg-info/SOURCES.txt
+++ b/trytond_account_statement.egg-info/SOURCES.txt
@@ -32,6 +32,8 @@ tryton.cfg
./tests/__init__.py
./tests/scenario_account_statement.rst
./tests/test_account_statement.py
+./view/line_group_form.xml
+./view/line_group_list.xml
./view/statement_form.xml
./view/statement_journal_form.xml
./view/statement_journal_tree.xml
@@ -60,6 +62,8 @@ trytond_account_statement.egg-info/entry_points.txt
trytond_account_statement.egg-info/not-zip-safe
trytond_account_statement.egg-info/requires.txt
trytond_account_statement.egg-info/top_level.txt
+view/line_group_form.xml
+view/line_group_list.xml
view/statement_form.xml
view/statement_journal_form.xml
view/statement_journal_tree.xml
diff --git a/trytond_account_statement.egg-info/requires.txt b/trytond_account_statement.egg-info/requires.txt
index 08bc460..7d062c6 100644
--- a/trytond_account_statement.egg-info/requires.txt
+++ b/trytond_account_statement.egg-info/requires.txt
@@ -1,7 +1,7 @@
-trytond_account >= 3.4, < 3.5
-trytond_account_invoice >= 3.4, < 3.5
-trytond_company >= 3.4, < 3.5
-trytond_currency >= 3.4, < 3.5
-trytond_party >= 3.4, < 3.5
-trytond >= 3.4, < 3.5
-python-sql
\ No newline at end of file
+python-sql >= 0.4
+trytond_account >= 3.6, < 3.7
+trytond_account_invoice >= 3.6, < 3.7
+trytond_company >= 3.6, < 3.7
+trytond_currency >= 3.6, < 3.7
+trytond_party >= 3.6, < 3.7
+trytond >= 3.6, < 3.7
\ No newline at end of file
diff --git a/view/line_group_form.xml b/view/line_group_form.xml
new file mode 100644
index 0000000..bfdf3c6
--- /dev/null
+++ b/view/line_group_form.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<form string="Statement Line Group">
+ <label name="statement"/>
+ <field name="statement"/>
+ <label name="journal"/>
+ <field name="journal"/>
+ <label name="number"/>
+ <field name="number"/>
+ <label name="date"/>
+ <field name="date"/>
+ <label name="amount"/>
+ <field name="amount"/>
+ <label name="currency"/>
+ <field name="currency"/>
+ <label name="party"/>
+ <field name="party"/>
+ <label name="move"/>
+ <field name="move"/>
+</form>
diff --git a/view/line_group_list.xml b/view/line_group_list.xml
new file mode 100644
index 0000000..cab2b40
--- /dev/null
+++ b/view/line_group_list.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
+this repository contains the full copyright notices and license terms. -->
+<tree string="Statement Line Groups">
+ <field name="journal"/>
+ <field name="statement"/>
+ <field name="number"/>
+ <field name="date"/>
+ <field name="amount"/>
+ <field name="currency"/>
+ <field name="party"/>
+ <field name="move"/>
+</tree>
--
tryton-modules-account-statement
More information about the tryton-debian-vcs
mailing list