changeset 3d5661114326 in modules/account:default
details: https://hg.tryton.org/modules/account?cmd=changeset;node=3d5661114326
description:
        Store directly sequence type to sequence

        issue10122
        review351381002
diffstat:

 CHANGELOG                                 |   1 +
 __init__.py                               |   1 +
 configuration.py                          |  41 ++++++++++++++++++++++++++++++-
 fiscalyear.py                             |  21 ++++++---------
 journal.py                                |   8 +++--
 journal.xml                               |   3 +-
 move.py                                   |  13 ++++-----
 move.xml                                  |   4 +--
 period.py                                 |   5 ++-
 tests/scenario_account_reconcile.rst      |   3 +-
 tests/scenario_account_reconciliation.rst |   7 +++--
 tests/test_account.py                     |  10 +++++--
 tests/tools.py                            |   7 ++++-
 view/configuration_form.xml               |   3 ++
 14 files changed, 89 insertions(+), 38 deletions(-)

diffs (400 lines):

diff -r 01493b338a7f -r 3d5661114326 CHANGELOG
--- a/CHANGELOG Sun Mar 07 19:07:31 2021 +0100
+++ b/CHANGELOG Thu Mar 11 23:00:09 2021 +0100
@@ -1,3 +1,4 @@
+* Add reconciliation sequence to configuration
 * Add report for income statement and balance sheet
 * Allow filtering general ledger by journal
 * Add journal context to Move.query_get
diff -r 01493b338a7f -r 3d5661114326 __init__.py
--- a/__init__.py       Sun Mar 07 19:07:31 2021 +0100
+++ b/__init__.py       Thu Mar 11 23:00:09 2021 +0100
@@ -44,6 +44,7 @@
         configuration.Configuration,
         configuration.ConfigurationDefaultAccount,
         configuration.DefaultTaxRule,
+        configuration.Sequence,
         period.Period,
         journal.Journal,
         journal.JournalSequence,
diff -r 01493b338a7f -r 3d5661114326 configuration.py
--- a/configuration.py  Sun Mar 07 19:07:31 2021 +0100
+++ b/configuration.py  Thu Mar 11 23:00:09 2021 +0100
@@ -3,7 +3,7 @@
 from trytond.pool import Pool
 from trytond.model import ModelView, ModelSQL, ModelSingleton, fields
 from trytond.transaction import Transaction
-from trytond.pyson import Eval
+from trytond.pyson import Eval, Id
 from trytond.modules.company.model import (
     CompanyMultiValueMixin, CompanyValueMixin)
 
@@ -47,6 +47,15 @@
             help="Default supplier tax rule for new parties."))
     tax_rounding = fields.MultiValue(fields.Selection(
             tax_roundings, "Tax Rounding"))
+    reconciliation_sequence = fields.MultiValue(fields.Many2One(
+            'ir.sequence', "Reconciliation Sequence", required=True,
+            domain=[
+                ('company', 'in',
+                    [Eval('context', {}).get('company', -1), None]),
+                ('sequence_type', '=',
+                    Id('account',
+                        'sequence_type_account_move_reconciliation')),
+                ]))
 
     @classmethod
     def multivalue_model(cls, field):
@@ -55,12 +64,19 @@
             return pool.get('account.configuration.default_account')
         if field in {'default_customer_tax_rule', 'default_supplier_tax_rule'}:
             return pool.get('account.configuration.default_tax_rule')
+        if field == 'reconciliation_sequence':
+            return pool.get('account.configuration.sequence')
         return super(Configuration, cls).multivalue_model(field)
 
     @classmethod
     def default_tax_rounding(cls, **pattern):
         return cls.multivalue_model('tax_rounding').default_tax_rounding()
 
+    @classmethod
+    def default_reconciliation_sequence(cls, **pattern):
+        return cls.multivalue_model(
+            'reconciliation_sequence').default_reconciliation_sequence()
+
 
 class ConfigurationDefaultAccount(ModelSQL, CompanyValueMixin):
     "Account Configuration Default Account"
@@ -131,3 +147,26 @@
     @classmethod
     def default_tax_rounding(cls):
         return 'document'
+
+
+class Sequence(ModelSQL, CompanyValueMixin):
+    "Account Configuration Sequence"
+    __name__ = 'account.configuration.sequence'
+    reconciliation_sequence = fields.Many2One(
+        'ir.sequence', "Reconciliation Sequence", required=True,
+        domain=[
+            ('company', 'in', [Eval('company', -1), None]),
+            ('sequence_type', '=',
+                Id('account', 'sequence_type_account_move_reconciliation')),
+            ],
+        depends=['company'])
+
+    @classmethod
+    def default_reconciliation_sequence(cls):
+        pool = Pool()
+        ModelData = pool.get('ir.model.data')
+        try:
+            return ModelData.get_id(
+                'account', 'sequence_account_move_reconciliation')
+        except KeyError:
+            return None
diff -r 01493b338a7f -r 3d5661114326 fiscalyear.py
--- a/fiscalyear.py     Sun Mar 07 19:07:31 2021 +0100
+++ b/fiscalyear.py     Thu Mar 11 23:00:09 2021 +0100
@@ -7,7 +7,7 @@
 from trytond.model import ModelView, ModelSQL, Workflow, fields
 from trytond.model.exceptions import AccessError
 from trytond.pool import Pool
-from trytond.pyson import Eval, If, PYSONEncoder
+from trytond.pyson import Eval, If, PYSONEncoder, Id
 from trytond.rpc import RPC
 from trytond.transaction import Transaction
 from trytond.wizard import (
@@ -43,17 +43,14 @@
             ('close', 'Close'),
             ('locked', 'Locked'),
             ], 'State', readonly=True, required=True)
-    post_move_sequence = fields.Many2One('ir.sequence', 'Post Move Sequence',
-            required=True, domain=[('code', '=', 'account.move'),
-                ['OR',
-                    ('company', '=', Eval('company')),
-                    ('company', '=', None)
-                ]],
-            context={
-                'code': 'account.move',
-                'company': Eval('company'),
-            },
-            depends=['company'])
+    post_move_sequence = fields.Many2One(
+        'ir.sequence', "Post Move Sequence", required=True,
+        domain=[
+            ('sequence_type', '=',
+                Id('account', 'sequence_type_account_move')),
+            ('company', '=', Eval('company')),
+            ],
+        depends=['company'])
     company = fields.Many2One('company.company', 'Company', required=True,
         domain=[
             ('id', If(Eval('context', {}).contains('company'), '=', '!='),
diff -r 01493b338a7f -r 3d5661114326 journal.py
--- a/journal.py        Sun Mar 07 19:07:31 2021 +0100
+++ b/journal.py        Thu Mar 11 23:00:09 2021 +0100
@@ -9,7 +9,7 @@
 from trytond.model import (
     ModelView, ModelSQL, Workflow, DeactivableMixin, fields, Unique)
 from trytond.model.exceptions import AccessError
-from trytond.pyson import Eval, Bool
+from trytond.pyson import Eval, Bool, Id
 from trytond.transaction import Transaction
 from trytond.pool import Pool
 from trytond.tools import reduce_ids, grouped_slice, lstrip_wildcard
@@ -40,7 +40,8 @@
     sequence = fields.MultiValue(fields.Many2One(
             'ir.sequence', "Sequence",
             domain=[
-                ('code', '=', 'account.journal'),
+                ('sequence_type', '=',
+                    Id('account', 'sequence_type_account_journal')),
                 ('company', 'in', [
                         Eval('context', {}).get('company', -1), None]),
                 ],
@@ -162,7 +163,8 @@
     sequence = fields.Many2One(
         'ir.sequence', "Sequence",
         domain=[
-            ('code', '=', 'account.journal'),
+            ('sequence_type', '=',
+                Id('account', 'sequence_type_account_journal')),
             ('company', 'in', [Eval('company', -1), None]),
             ],
         depends=['company'])
diff -r 01493b338a7f -r 3d5661114326 journal.xml
--- a/journal.xml       Sun Mar 07 19:07:31 2021 +0100
+++ b/journal.xml       Thu Mar 11 23:00:09 2021 +0100
@@ -87,7 +87,6 @@
         </record>
         <record model="ir.sequence.type" id="sequence_type_account_journal">
             <field name="name">Account Journal</field>
-            <field name="code">account.journal</field>
         </record>
         <record model="ir.sequence.type-res.group"
             id="sequence_type_account_journal_group_admin">
@@ -102,7 +101,7 @@
 
         <record model="ir.sequence" id="sequence_account_journal">
             <field name="name">Default Account Journal</field>
-            <field name="code">account.journal</field>
+            <field name="sequence_type" ref="sequence_type_account_journal"/>
         </record>
 
         <record model="ir.ui.view" id="journal_period_view_form">
diff -r 01493b338a7f -r 3d5661114326 move.py
--- a/move.py   Sun Mar 07 19:07:31 2021 +0100
+++ b/move.py   Thu Mar 11 23:00:09 2021 +0100
@@ -273,7 +273,6 @@
     @classmethod
     def create(cls, vlist):
         pool = Pool()
-        Sequence = pool.get('ir.sequence')
         Journal = pool.get('account.journal')
 
         vlist = [x.copy() for x in vlist]
@@ -284,7 +283,7 @@
                 if journal_id:
                     journal = Journal(journal_id)
                     if journal.sequence:
-                        vals['number'] = Sequence.get_id(journal.sequence.id)
+                        vals['number'] = journal.sequence.get()
 
         moves = super(Move, cls).create(vlist)
         cls.validate_move(moves)
@@ -413,7 +412,6 @@
     @ModelView.button
     def post(cls, moves):
         pool = Pool()
-        Sequence = pool.get('ir.sequence')
         Date = pool.get('ir.date')
         Line = pool.get('account.move.line')
 
@@ -435,8 +433,7 @@
             move.state = 'posted'
             if not move.post_number:
                 move.post_date = Date.today()
-                move.post_number = Sequence.get_id(
-                    move.period.post_move_sequence_used.id)
+                move.post_number = move.period.post_move_sequence_used.get()
 
             def keyfunc(l):
                 return l.party, l.account
@@ -490,12 +487,14 @@
 
     @classmethod
     def create(cls, vlist):
-        Sequence = Pool().get('ir.sequence')
+        pool = Pool()
+        Configuration = pool.get('account.configuration')
+        configuration = Configuration(1)
 
         vlist = [x.copy() for x in vlist]
         for vals in vlist:
             if 'name' not in vals:
-                vals['name'] = Sequence.get('account.move.reconciliation')
+                vals['name'] = configuration.reconciliation_sequence.get()
 
         return super(Reconciliation, cls).create(vlist)
 
diff -r 01493b338a7f -r 3d5661114326 move.xml
--- a/move.xml  Sun Mar 07 19:07:31 2021 +0100
+++ b/move.xml  Thu Mar 11 23:00:09 2021 +0100
@@ -69,7 +69,6 @@
         </record>
         <record model="ir.sequence.type" id="sequence_type_account_move">
             <field name="name">Account Move</field>
-            <field name="code">account.move</field>
         </record>
         <record model="ir.sequence.type-res.group"
             id="sequence_type_account_move_group_admin">
@@ -131,7 +130,6 @@
         </record>
         <record model="ir.sequence.type" 
id="sequence_type_account_move_reconciliation">
             <field name="name">Account Move Reconciliation</field>
-            <field name="code">account.move.reconciliation</field>
         </record>
         <record model="ir.sequence.type-res.group"
             id="sequence_type_account_move_reconciliation_group_admin">
@@ -146,7 +144,7 @@
 
         <record model="ir.sequence" id="sequence_account_move_reconciliation">
             <field name="name">Default Account Move Reconciliation</field>
-            <field name="code">account.move.reconciliation</field>
+            <field name="sequence_type" 
ref="sequence_type_account_move_reconciliation"/>
         </record>
 
         <record model="ir.ui.view" id="move_line_view_form">
diff -r 01493b338a7f -r 3d5661114326 period.py
--- a/period.py Sun Mar 07 19:07:31 2021 +0100
+++ b/period.py Thu Mar 11 23:00:09 2021 +0100
@@ -4,7 +4,7 @@
 from trytond.i18n import gettext
 from trytond.model import ModelView, ModelSQL, Workflow, fields
 from trytond.model.exceptions import AccessError
-from trytond.pyson import Eval
+from trytond.pyson import Eval, Id
 from trytond.transaction import Transaction
 from trytond.pool import Pool
 from trytond.const import OPERATORS
@@ -37,7 +37,8 @@
             ], 'State', readonly=True, required=True)
     post_move_sequence = fields.Many2One('ir.sequence', 'Post Move Sequence',
         domain=[
-            ('code', '=', 'account.move'),
+            ('sequence_type', '=',
+                Id('account', 'sequence_type_account_move')),
             ['OR',
                 ('company', '=', None),
                 ('company', '=', Eval('company', -1)),
diff -r 01493b338a7f -r 3d5661114326 tests/scenario_account_reconcile.rst
--- a/tests/scenario_account_reconcile.rst      Sun Mar 07 19:07:31 2021 +0100
+++ b/tests/scenario_account_reconcile.rst      Thu Mar 11 23:00:09 2021 +0100
@@ -82,7 +82,8 @@
 Create a write off method::
 
     >>> Sequence = Model.get('ir.sequence')
-    >>> sequence_journal, = Sequence.find([('code', '=', 'account.journal')])
+    >>> sequence_journal, = Sequence.find(
+    ...     [('sequence_type.name', '=', "Account Journal")], limit=1)
     >>> journal_writeoff = Journal(name='Write-Off', type='write-off',
     ...     sequence=sequence_journal)
     >>> journal_writeoff.save()
diff -r 01493b338a7f -r 3d5661114326 tests/scenario_account_reconciliation.rst
--- a/tests/scenario_account_reconciliation.rst Sun Mar 07 19:07:31 2021 +0100
+++ b/tests/scenario_account_reconciliation.rst Thu Mar 11 23:00:09 2021 +0100
@@ -124,11 +124,12 @@
     >>> move.save()
     >>> reconcile2, = [l for l in move.lines if l.account == receivable]
 
-Create a writeof payment method::
+Create a write-off payment method::
 
 
     >>> Sequence = Model.get('ir.sequence')
-    >>> sequence_journal, = Sequence.find([('code', '=', 'account.journal')])
+    >>> sequence_journal, = Sequence.find(
+    ...     [('sequence_type.name', '=', "Account Journal")], limit=1)
     >>> journal_writeoff = Journal(name='Write-Off', type='write-off',
     ...     sequence=sequence_journal)
     >>> journal_writeoff.save()
@@ -140,7 +141,7 @@
     >>> writeoff_method.credit_account = expense
     >>> writeoff_method.save()
 
-Reconcile Lines with writeoff::
+Reconcile Lines with write-off::
     >>> reconcile_lines = Wizard('account.move.reconcile_lines',
     ...     [reconcile1, reconcile2])
     >>> reconcile_lines.form_state == 'writeoff'
diff -r 01493b338a7f -r 3d5661114326 tests/test_account.py
--- a/tests/test_account.py     Sun Mar 07 19:07:31 2021 +0100
+++ b/tests/test_account.py     Thu Mar 11 23:00:09 2021 +0100
@@ -86,6 +86,7 @@
 def get_fiscalyear(company, today=None, start_date=None, end_date=None):
     pool = Pool()
     Sequence = pool.get('ir.sequence')
+    SequenceType = pool.get('ir.sequence.type')
     FiscalYear = pool.get('account.fiscalyear')
 
     if not today:
@@ -95,9 +96,12 @@
     if not end_date:
         end_date = today.replace(month=12, day=31)
 
+    sequence_type, = SequenceType.search([
+            ('name', '=', "Account Move"),
+            ], limit=1)
     sequence, = Sequence.create([{
                 'name': '%s' % today.year,
-                'code': 'account.move',
+                'sequence_type': sequence_type.id,
                 'company': company.id,
                 }])
     fiscalyear = FiscalYear(name='%s' % today.year, company=company)
@@ -121,8 +125,8 @@
 
     # Balance non-deferral
     journal_sequence, = Sequence.search([
-            ('code', '=', 'account.journal'),
-            ])
+            ('sequence_type.name', '=', "Account Journal"),
+            ], limit=1)
     journal_closing, = Journal.create([{
                 'name': 'Closing',
                 'code': 'CLO',
diff -r 01493b338a7f -r 3d5661114326 tests/tools.py
--- a/tests/tools.py    Sun Mar 07 19:07:31 2021 +0100
+++ b/tests/tools.py    Thu Mar 11 23:00:09 2021 +0100
@@ -16,6 +16,7 @@
     "Create a fiscal year for the company on today"
     FiscalYear = Model.get('account.fiscalyear', config=config)
     Sequence = Model.get('ir.sequence', config=config)
+    SequenceType = Model.get('ir.sequence.type', config=config)
 
     if not company:
         company = get_company()
@@ -28,7 +29,11 @@
     fiscalyear.end_date = today + relativedelta(month=12, day=31)
     fiscalyear.company = company
 
-    post_move_sequence = Sequence(name=str(today.year), code='account.move',
+    sequence_type, = SequenceType.find(
+        [('name', '=', "Account Move")], limit=1)
+    post_move_sequence = Sequence(
+        name=str(today.year),
+        sequence_type=sequence_type,
         company=company)
     post_move_sequence.save()
     fiscalyear.post_move_sequence = post_move_sequence
diff -r 01493b338a7f -r 3d5661114326 view/configuration_form.xml
--- a/view/configuration_form.xml       Sun Mar 07 19:07:31 2021 +0100
+++ b/view/configuration_form.xml       Thu Mar 11 23:00:09 2021 +0100
@@ -14,4 +14,7 @@
     <field name="default_supplier_tax_rule"/>
     <label name="tax_rounding"/>
     <field name="tax_rounding"/>
+    <separator id="move" string="Move" colspan="4"/>
+    <label name="reconciliation_sequence"/>
+    <field name="reconciliation_sequence"/>
 </form>

Reply via email to