odoo-addon-account-reconcile-oca 16.0.1.2.12.3__py3-none-any.whl → 17.0.1.0.0.20__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. odoo/addons/account_reconcile_oca/README.rst +19 -18
  2. odoo/addons/account_reconcile_oca/__manifest__.py +4 -1
  3. odoo/addons/account_reconcile_oca/hooks.py +2 -2
  4. odoo/addons/account_reconcile_oca/i18n/account_reconcile_oca.pot +89 -8
  5. odoo/addons/account_reconcile_oca/i18n/ca.po +0 -5
  6. odoo/addons/account_reconcile_oca/i18n/es.po +2 -7
  7. odoo/addons/account_reconcile_oca/i18n/fr.po +0 -5
  8. odoo/addons/account_reconcile_oca/i18n/hr.po +0 -5
  9. odoo/addons/account_reconcile_oca/i18n/nl.po +0 -5
  10. odoo/addons/account_reconcile_oca/i18n/pt_BR.po +0 -5
  11. odoo/addons/account_reconcile_oca/i18n/sv.po +34 -39
  12. odoo/addons/account_reconcile_oca/i18n/tr.po +0 -5
  13. odoo/addons/account_reconcile_oca/models/__init__.py +3 -0
  14. odoo/addons/account_reconcile_oca/models/account_account_reconcile.py +2 -2
  15. odoo/addons/account_reconcile_oca/models/account_bank_statement.py +15 -0
  16. odoo/addons/account_reconcile_oca/models/account_bank_statement_line.py +98 -19
  17. odoo/addons/account_reconcile_oca/models/account_journal.py +15 -1
  18. odoo/addons/account_reconcile_oca/models/account_move_line.py +0 -1
  19. odoo/addons/account_reconcile_oca/models/account_reconcile_abstract.py +4 -2
  20. odoo/addons/account_reconcile_oca/models/res_company.py +14 -0
  21. odoo/addons/account_reconcile_oca/models/res_config_settings.py +12 -0
  22. odoo/addons/account_reconcile_oca/readme/CONTRIBUTORS.md +1 -0
  23. odoo/addons/account_reconcile_oca/readme/{DESCRIPTION.rst → DESCRIPTION.md} +2 -1
  24. odoo/addons/account_reconcile_oca/readme/ROADMAP.md +3 -0
  25. odoo/addons/account_reconcile_oca/readme/USAGE.md +10 -0
  26. odoo/addons/account_reconcile_oca/static/description/index.html +10 -9
  27. odoo/addons/account_reconcile_oca/static/src/js/reconcile/reconcile_controller.esm.js +44 -4
  28. odoo/addons/account_reconcile_oca/static/src/js/reconcile/reconcile_renderer.esm.js +52 -1
  29. odoo/addons/account_reconcile_oca/static/src/js/reconcile_form/reconcile_form_controller.esm.js +3 -0
  30. odoo/addons/account_reconcile_oca/static/src/js/reconcile_manual/reconcile_manual_controller.esm.js +3 -0
  31. odoo/addons/account_reconcile_oca/static/src/js/reconcile_move_line/reconcile_move_line_renderer.esm.js +1 -1
  32. odoo/addons/account_reconcile_oca/static/src/js/widgets/reconcile_chatter_field.esm.js +11 -4
  33. odoo/addons/account_reconcile_oca/static/src/js/widgets/reconcile_data_widget.esm.js +22 -33
  34. odoo/addons/account_reconcile_oca/static/src/js/widgets/reconcile_move_line_widget.esm.js +62 -6
  35. odoo/addons/account_reconcile_oca/static/src/js/widgets/selection_badge_uncheck.esm.js +10 -1
  36. odoo/addons/account_reconcile_oca/static/src/scss/reconcile.scss +16 -15
  37. odoo/addons/account_reconcile_oca/static/src/xml/reconcile.xml +44 -10
  38. odoo/addons/account_reconcile_oca/tests/test_account_reconcile.py +15 -9
  39. odoo/addons/account_reconcile_oca/tests/test_bank_account_reconcile.py +28 -21
  40. odoo/addons/account_reconcile_oca/views/account_account.xml +3 -3
  41. odoo/addons/account_reconcile_oca/views/account_account_reconcile.xml +7 -7
  42. odoo/addons/account_reconcile_oca/views/account_bank_statement.xml +46 -0
  43. odoo/addons/account_reconcile_oca/views/account_bank_statement_line.xml +71 -37
  44. odoo/addons/account_reconcile_oca/views/account_journal.xml +10 -4
  45. odoo/addons/account_reconcile_oca/views/account_move.xml +1 -1
  46. odoo/addons/account_reconcile_oca/views/account_move_line.xml +8 -3
  47. odoo/addons/account_reconcile_oca/views/res_config_settings.xml +24 -0
  48. {odoo_addon_account_reconcile_oca-16.0.1.2.12.3.dist-info → odoo_addon_account_reconcile_oca-17.0.1.0.0.20.dist-info}/METADATA +27 -28
  49. odoo_addon_account_reconcile_oca-17.0.1.0.0.20.dist-info/RECORD +64 -0
  50. {odoo_addon_account_reconcile_oca-16.0.1.2.12.3.dist-info → odoo_addon_account_reconcile_oca-17.0.1.0.0.20.dist-info}/WHEEL +1 -1
  51. odoo_addon_account_reconcile_oca-17.0.1.0.0.20.dist-info/top_level.txt +1 -0
  52. odoo/addons/account_reconcile_oca/i18n/it.po +0 -598
  53. odoo/addons/account_reconcile_oca/migrations/16.0.1.2.0/pre-migration.py +0 -23
  54. odoo/addons/account_reconcile_oca/readme/CONTRIBUTORS.rst +0 -1
  55. odoo/addons/account_reconcile_oca/readme/ROADMAP.rst +0 -3
  56. odoo/addons/account_reconcile_oca/readme/USAGE.rst +0 -12
  57. odoo_addon_account_reconcile_oca-16.0.1.2.12.3.dist-info/RECORD +0 -61
  58. odoo_addon_account_reconcile_oca-16.0.1.2.12.3.dist-info/top_level.txt +0 -1
@@ -1,28 +1,34 @@
1
1
  from odoo.tests import Form, tagged
2
2
 
3
- from odoo.addons.account.tests.common import TestAccountReconciliationCommon
3
+ from odoo.addons.account_reconcile_model_oca.tests.common import (
4
+ TestAccountReconciliationCommon,
5
+ )
4
6
 
5
7
 
6
8
  @tagged("post_install", "-at_install")
7
9
  class TestReconciliationWidget(TestAccountReconciliationCommon):
10
+ @classmethod
11
+ def _setup_context(cls):
12
+ return {**cls.env.context, "_test_account_reconcile_oca": True}
13
+
8
14
  @classmethod
9
15
  def setUpClass(cls, chart_template_ref=None):
10
16
  super().setUpClass(chart_template_ref=chart_template_ref)
11
-
17
+ cls.env = cls.env(context=cls._setup_context())
12
18
  cls.acc_bank_stmt_model = cls.env["account.bank.statement"]
13
19
  cls.acc_bank_stmt_line_model = cls.env["account.bank.statement.line"]
14
20
  cls.bank_journal_usd.suspense_account_id = (
15
- cls.company.account_journal_suspense_account_id
21
+ cls.env.company.account_journal_suspense_account_id
16
22
  )
17
23
  cls.bank_journal_euro.suspense_account_id = (
18
- cls.company.account_journal_suspense_account_id
24
+ cls.env.company.account_journal_suspense_account_id
19
25
  )
20
26
  cls.current_assets_account = (
21
27
  cls.env["account.account"]
22
28
  .search(
23
29
  [
24
30
  ("account_type", "=", "asset_current"),
25
- ("company_id", "=", cls.company.id),
31
+ ("company_id", "=", cls.env.company.id),
26
32
  ],
27
33
  limit=1,
28
34
  )
@@ -34,7 +40,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
34
40
  .search(
35
41
  [
36
42
  ("account_type", "=", "asset_receivable"),
37
- ("company_id", "=", cls.company.id),
43
+ ("company_id", "=", cls.env.company.id),
38
44
  ],
39
45
  limit=1,
40
46
  )
@@ -46,7 +52,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
46
52
  .search(
47
53
  [
48
54
  ("account_type", "=", "equity"),
49
- ("company_id", "=", cls.company.id),
55
+ ("company_id", "=", cls.env.company.id),
50
56
  ],
51
57
  limit=1,
52
58
  )
@@ -57,7 +63,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
57
63
  .search(
58
64
  [
59
65
  ("account_type", "=", "asset_non_current"),
60
- ("company_id", "=", cls.company.id),
66
+ ("company_id", "=", cls.env.company.id),
61
67
  ],
62
68
  limit=1,
63
69
  )
@@ -251,7 +257,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
251
257
  0,
252
258
  {
253
259
  "account_id": self.asset_receivable_account.id,
254
- "partner_id": self.company.partner_id.id,
260
+ "partner_id": self.env.company.partner_id.id,
255
261
  "name": "DEMO",
256
262
  "credit": 100,
257
263
  },
@@ -3,27 +3,34 @@ import time
3
3
  from odoo.exceptions import UserError
4
4
  from odoo.tests import Form, tagged
5
5
 
6
- from odoo.addons.account.tests.common import TestAccountReconciliationCommon
6
+ from odoo.addons.account_reconcile_model_oca.tests.common import (
7
+ TestAccountReconciliationCommon,
8
+ )
7
9
 
8
10
 
9
11
  @tagged("post_install", "-at_install")
10
12
  class TestReconciliationWidget(TestAccountReconciliationCommon):
13
+ @classmethod
14
+ def _setup_context(cls):
15
+ return {**cls.env.context, "_test_account_reconcile_oca": True}
16
+
11
17
  @classmethod
12
18
  def setUpClass(cls, chart_template_ref=None):
13
19
  super().setUpClass(chart_template_ref=chart_template_ref)
20
+ cls.env = cls.env(context=cls._setup_context())
14
21
 
15
22
  cls.acc_bank_stmt_model = cls.env["account.bank.statement"]
16
23
  cls.acc_bank_stmt_line_model = cls.env["account.bank.statement.line"]
17
24
  cls.bank_journal_usd.suspense_account_id = (
18
- cls.company.account_journal_suspense_account_id
25
+ cls.env.company.account_journal_suspense_account_id
19
26
  )
20
27
  cls.bank_journal_euro.suspense_account_id = (
21
- cls.company.account_journal_suspense_account_id
28
+ cls.env.company.account_journal_suspense_account_id
22
29
  )
23
30
  cls.current_assets_account = cls.env["account.account"].search(
24
31
  [
25
32
  ("account_type", "=", "asset_current"),
26
- ("company_id", "=", cls.company.id),
33
+ ("company_id", "=", cls.env.company.id),
27
34
  ],
28
35
  limit=1,
29
36
  )
@@ -98,7 +105,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
98
105
  ) as f:
99
106
  self.assertFalse(f.can_reconcile)
100
107
  f.add_account_move_line_id = inv1.line_ids.filtered(
101
- lambda l: l.account_id.account_type == "asset_receivable"
108
+ lambda line: line.account_id.account_type == "asset_receivable"
102
109
  )
103
110
  self.assertFalse(f.add_account_move_line_id)
104
111
  self.assertTrue(f.can_reconcile)
@@ -130,7 +137,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
130
137
  }
131
138
  )
132
139
  receivable1 = inv1.line_ids.filtered(
133
- lambda l: l.account_id.account_type == "asset_receivable"
140
+ lambda line: line.account_id.account_type == "asset_receivable"
134
141
  )
135
142
  with Form(
136
143
  bank_stmt_line,
@@ -184,7 +191,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
184
191
  ) as f:
185
192
  self.assertFalse(f.can_reconcile)
186
193
  f.add_account_move_line_id = inv1.line_ids.filtered(
187
- lambda l: l.account_id.account_type == "asset_receivable"
194
+ lambda line: line.account_id.account_type == "asset_receivable"
188
195
  )
189
196
  self.assertFalse(f.add_account_move_line_id)
190
197
  self.assertTrue(f.can_reconcile)
@@ -238,10 +245,10 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
238
245
  }
239
246
  )
240
247
  receivable1 = inv1.line_ids.filtered(
241
- lambda l: l.account_id.account_type == "asset_receivable"
248
+ lambda line: line.account_id.account_type == "asset_receivable"
242
249
  )
243
250
  receivable2 = inv2.line_ids.filtered(
244
- lambda l: l.account_id.account_type == "asset_receivable"
251
+ lambda line: line.account_id.account_type == "asset_receivable"
245
252
  )
246
253
  with Form(
247
254
  bank_stmt_line,
@@ -298,10 +305,10 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
298
305
  }
299
306
  )
300
307
  receivable1 = inv1.line_ids.filtered(
301
- lambda l: l.account_id.account_type == "liability_payable"
308
+ lambda line: line.account_id.account_type == "liability_payable"
302
309
  )
303
310
  receivable2 = inv2.line_ids.filtered(
304
- lambda l: l.account_id.account_type == "liability_payable"
311
+ lambda line: line.account_id.account_type == "liability_payable"
305
312
  )
306
313
  with Form(
307
314
  bank_stmt_line,
@@ -419,7 +426,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
419
426
  inv1 = self.create_invoice(currency_id=self.currency_euro_id)
420
427
 
421
428
  receivable1 = inv1.line_ids.filtered(
422
- lambda l: l.account_id.account_type == "asset_receivable"
429
+ lambda line: line.account_id.account_type == "asset_receivable"
423
430
  )
424
431
  bank_stmt = self.acc_bank_stmt_model.create(
425
432
  {
@@ -525,7 +532,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
525
532
  }
526
533
  )
527
534
  receivable1 = inv1.line_ids.filtered(
528
- lambda l: l.account_id.account_type == "asset_receivable"
535
+ lambda line: line.account_id.account_type == "asset_receivable"
529
536
  )
530
537
  with Form(
531
538
  bank_stmt_line,
@@ -572,7 +579,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
572
579
  }
573
580
  )
574
581
  receivable1 = inv1.line_ids.filtered(
575
- lambda l: l.account_id.account_type == "asset_receivable"
582
+ lambda line: line.account_id.account_type == "asset_receivable"
576
583
  )
577
584
  with Form(
578
585
  bank_stmt_line,
@@ -649,7 +656,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
649
656
  }
650
657
  )
651
658
  receivable1 = inv1.line_ids.filtered(
652
- lambda l: l.account_id.account_type == "asset_receivable"
659
+ lambda line: line.account_id.account_type == "asset_receivable"
653
660
  )
654
661
  with Form(
655
662
  bank_stmt_line,
@@ -687,7 +694,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
687
694
  }
688
695
  )
689
696
  receivable1 = inv1.line_ids.filtered(
690
- lambda l: l.account_id.account_type == "asset_receivable"
697
+ lambda line: line.account_id.account_type == "asset_receivable"
691
698
  )
692
699
  with Form(
693
700
  bank_stmt_line,
@@ -733,12 +740,12 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
733
740
  ) as f:
734
741
  self.assertFalse(f.can_reconcile)
735
742
  f.add_account_move_line_id = inv1.line_ids.filtered(
736
- lambda l: l.account_id.account_type == "asset_receivable"
743
+ lambda line: line.account_id.account_type == "asset_receivable"
737
744
  )
738
745
  self.assertFalse(f.add_account_move_line_id)
739
746
  self.assertTrue(f.can_reconcile)
740
747
  f.add_account_move_line_id = inv1.line_ids.filtered(
741
- lambda l: l.account_id.account_type == "asset_receivable"
748
+ lambda line: line.account_id.account_type == "asset_receivable"
742
749
  )
743
750
  self.assertFalse(f.add_account_move_line_id)
744
751
  self.assertFalse(f.can_reconcile)
@@ -873,11 +880,11 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
873
880
  partner = inv1.partner_id
874
881
 
875
882
  receivable1 = inv1.line_ids.filtered(
876
- lambda l: l.account_id.account_type == "asset_receivable"
883
+ lambda line: line.account_id.account_type == "asset_receivable"
877
884
  )
878
885
  self.assertTrue(receivable1)
879
886
  receivable2 = inv2.line_ids.filtered(
880
- lambda l: l.account_id.account_type == "asset_receivable"
887
+ lambda line: line.account_id.account_type == "asset_receivable"
881
888
  )
882
889
  self.assertTrue(receivable2)
883
890
 
@@ -1000,7 +1007,7 @@ class TestReconciliationWidget(TestAccountReconciliationCommon):
1000
1007
  ) as f:
1001
1008
  self.assertFalse(f.can_reconcile)
1002
1009
  f.add_account_move_line_id = inv1.line_ids.filtered(
1003
- lambda l: l.account_id.account_type == "asset_receivable"
1010
+ lambda line: line.account_id.account_type == "asset_receivable"
1004
1011
  )
1005
1012
  self.assertFalse(f.add_account_move_line_id)
1006
1013
  self.assertTrue(f.can_reconcile)
@@ -8,15 +8,15 @@
8
8
  <field name="model">account.account</field>
9
9
  <field name="inherit_id" ref="account.view_account_list" />
10
10
  <field name="arch" type="xml">
11
- <button name="action_read_account" position="after">
11
+ <tree position="inside">
12
12
  <button
13
13
  type="action"
14
14
  name="%(account_reconcile_oca.account_account_account_account_reconcile_act_window)s"
15
15
  string="Reconcile"
16
16
  class="float-end btn-secondary"
17
- attrs="{'invisible': [('reconcile', '=', False)]}"
17
+ invisible="reconcile == False"
18
18
  />
19
- </button>
19
+ </tree>
20
20
  </field>
21
21
  </record>
22
22
 
@@ -21,15 +21,15 @@
21
21
  name="reconcile"
22
22
  type="object"
23
23
  string="Reconcile"
24
- class="btn btn-primary"
25
- attrs="{'invisible': [('is_reconciled', '=', True)]}"
24
+ class="btn btn-primary mx-1"
25
+ invisible="is_reconciled == True"
26
26
  />
27
27
  <button
28
28
  name="clean_reconcile"
29
29
  type="object"
30
30
  string="Clean"
31
- class="btn btn-secondary"
32
- attrs="{'invisible': [('is_reconciled', '=', True)]}"
31
+ class="btn btn-secondary mx-1"
32
+ invisible="is_reconciled == True"
33
33
  />
34
34
  </div>
35
35
  </div>
@@ -52,7 +52,7 @@
52
52
  <page
53
53
  name="reconcile_line"
54
54
  string="Reconcile"
55
- attrs="{'invisible': [('is_reconciled', '=', True)]}"
55
+ invisible="is_reconciled == True"
56
56
  >
57
57
  <field
58
58
  name="add_account_move_line_id"
@@ -135,7 +135,7 @@
135
135
  <field name="name">Reconcile</field>
136
136
  <field name="res_model">account.account.reconcile</field>
137
137
  <field name="view_mode">kanban</field>
138
- <field name="domain">[("partner_id", "=", active_id)]</field>
138
+ <field name="domain">[("partner_id", "=", id)]</field>
139
139
  <field
140
140
  name="context"
141
141
  >{'view_ref': 'account_reconcile_oca.account_account_reconcile_form_view'}</field>
@@ -150,7 +150,7 @@
150
150
  <field name="name">Reconcile</field>
151
151
  <field name="res_model">account.account.reconcile</field>
152
152
  <field name="view_mode">kanban</field>
153
- <field name="domain">[("account_id", "=", active_id)]</field>
153
+ <field name="domain">[("account_id", "=", id)]</field>
154
154
  <field
155
155
  name="context"
156
156
  >{'view_ref': 'account_reconcile_oca.account_account_reconcile_form_view'}</field>
@@ -0,0 +1,46 @@
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <!-- Copyright 2023 Dixmit
3
+ License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). -->
4
+ <odoo>
5
+
6
+ <record id="account_bank_statement_form_edit" model="ir.ui.view">
7
+ <field name="name">Edit Bank statement</field>
8
+ <field name="model">account.bank.statement</field>
9
+ <field name="priority">99</field>
10
+ <field name="arch" type="xml">
11
+ <form string="Bank Statement">
12
+ <div
13
+ class="alert alert-warning text-center"
14
+ role="alert"
15
+ invisible="is_valid and is_complete"
16
+ >
17
+ <field name="problem_description" />
18
+ <field name="is_valid" invisible="1" />
19
+ <field name="is_complete" invisible="1" />
20
+ </div>
21
+ <sheet>
22
+ <group>
23
+ <field name="name" required="1" />
24
+ <field name="balance_start" />
25
+ <field name="balance_end_real" />
26
+ <field name="attachment_ids" widget="many2many_binary" />
27
+ <field name="line_ids" invisible="1" />
28
+ </group>
29
+ </sheet>
30
+
31
+ </form>
32
+ </field>
33
+ </record>
34
+
35
+ <record id="account_bank_statement_action_edit" model="ir.actions.act_window">
36
+ <field name="name">Edit Bank Statement</field>
37
+ <field name="res_model">account.bank.statement</field>
38
+ <field name="view_mode">form</field>
39
+ <field
40
+ name="view_ids"
41
+ eval="[(5, 0, 0),
42
+ (0, 0, {'view_mode': 'form', 'view_id': ref('account_bank_statement_form_edit')})]"
43
+ />
44
+ <field name="target">new</field>
45
+ </record>
46
+ </odoo>
@@ -11,9 +11,28 @@
11
11
  <field name="is_reconciled" />
12
12
  <field name="currency_id" />
13
13
  <field name="foreign_currency_id" />
14
+ <field name="statement_id" />
15
+ <field name="statement_balance_end_real" />
14
16
  <field name="to_check" />
17
+ <field name="reconcile_aggregate" />
18
+ <field name="aggregate_id" />
19
+ <field name="aggregate_name" />
15
20
  <templates>
16
21
  <t t-name="kanban-box">
22
+ <div
23
+ t-if="record.reconcile_aggregate.raw_value == 'statement' and !record.statement_id.raw_value"
24
+ class="o_reconcile_create_statement text-center"
25
+ >
26
+ <a
27
+ role="button"
28
+ class="btn btn-secondary btn-sm"
29
+ tabindex="-1"
30
+ type="object"
31
+ name="add_statement"
32
+ >
33
+ Statement
34
+ </a>
35
+ </div>
17
36
  <div
18
37
  t-attf-class="oe_kanban_card oe_kanban_global_click"
19
38
  style="width:100%"
@@ -117,6 +136,19 @@
117
136
  </field>
118
137
  </record>
119
138
 
139
+ <record id="account_bank_statement_line_search" model="ir.ui.view">
140
+ <field name="name">account.bank.statement.line.search</field>
141
+ <field name="model">account.bank.statement.line</field>
142
+ <field
143
+ name="inherit_id"
144
+ ref="account_statement_base.account_bank_statement_line_search"
145
+ />
146
+ <field name="arch" type="xml">
147
+ <field name="journal_id" position="after">
148
+ <field name="move_id" />
149
+ </field>
150
+ </field>
151
+ </record>
120
152
  <record id="bank_statement_line_form_reconcile_view" model="ir.ui.view">
121
153
  <field name="name">account.bank.statement.line.reconcile</field>
122
154
  <field name="model">account.bank.statement.line</field>
@@ -130,53 +162,54 @@
130
162
  type="object"
131
163
  string="Validate"
132
164
  accesskey="v"
133
- class="btn btn-primary"
134
- attrs="{'invisible': ['|', ('is_reconciled', '=', True), ('can_reconcile', '=', False)]}"
165
+ class="btn btn-primary mx-1"
166
+ invisible="is_reconciled == True or can_reconcile == False"
135
167
  />
136
168
  <button
137
169
  name="reconcile_bank_line"
138
170
  type="object"
139
171
  string="Reconcile"
140
- class="btn btn-primary disabled"
141
- attrs="{'invisible': ['|', ('is_reconciled', '=', True), ('can_reconcile', '=', True)]}"
172
+ class="btn btn-primary disabled mx-1"
173
+ invisible="is_reconciled == True or can_reconcile == True"
142
174
  />
143
175
  <button
144
176
  name="unreconcile_bank_line"
145
177
  type="object"
146
178
  string="Unreconcile"
147
179
  accesskey="r"
148
- class="btn btn-warning"
149
- attrs="{'invisible': [('is_reconciled', '=', False)]}"
180
+ class="btn btn-warning mx-1"
181
+ invisible="is_reconciled == False"
150
182
  confirm="Are you sure that the move should be unreconciled?"
151
183
  />
152
184
  <button
153
185
  name="clean_reconcile"
154
186
  type="object"
155
187
  string="Reset reconciliation"
156
- class="btn btn-secondary"
157
- attrs="{'invisible': [('is_reconciled', '=', True)]}"
188
+ class="btn btn-secondary mx-1"
189
+ invisible="is_reconciled == True"
158
190
  />
159
191
  <button
160
192
  name="action_to_check"
161
193
  string="To Check"
162
- class="btn btn-secondary"
194
+ class="btn btn-secondary mx-1"
163
195
  accesskey="c"
164
196
  type="object"
165
- attrs="{'invisible': [('to_check', '=', True)]}"
197
+ invisible="to_check == True"
166
198
  />
167
- <button
199
+ <button
168
200
  name="action_checked"
169
201
  string="Set as Checked"
202
+ class="btn btn-secondary mx-1"
170
203
  accesskey="c"
171
204
  type="object"
172
- attrs="{'invisible': [('to_check', '=', False)]}"
205
+ invisible="to_check == False"
173
206
  />
174
207
  <button
175
208
  name="action_show_move"
176
209
  type="object"
177
210
  accesskey="m"
178
211
  string="View move"
179
- class="btn btn-info"
212
+ class="btn btn-info mx-1"
180
213
  />
181
214
  </div>
182
215
  </div>
@@ -205,14 +238,14 @@
205
238
  name="manual_model_id"
206
239
  widget="selection_badge_uncheck"
207
240
  nolabel="1"
208
- attrs="{'invisible': [('is_reconciled', '=', True)]}"
241
+ invisible="is_reconciled == True"
209
242
  />
210
243
  </div>
211
244
  <notebook>
212
245
  <page
213
246
  name="reconcile_line"
214
247
  string="Reconcile"
215
- attrs="{'invisible': [('is_reconciled', '=', True)]}"
248
+ invisible="is_reconciled == True"
216
249
  >
217
250
  <field
218
251
  name="add_account_move_line_id"
@@ -229,31 +262,32 @@
229
262
  <field
230
263
  name="manual_account_id"
231
264
  string="Account"
232
- attrs="{'readonly': ['|', '|', ('manual_reference', '=', False), ('is_reconciled', '=', True), ('manual_line_id', '!=', False)]}"
265
+ readonly="manual_reference == False or is_reconciled == True or manual_line_id != False"
233
266
  />
234
267
  <field
235
268
  name="manual_partner_id"
236
269
  string="Partner"
237
- attrs="{'readonly': ['|', '|', ('manual_reference', '=', False), ('is_reconciled', '=', True), '&amp;', ('manual_line_id', '!=', False), ('manual_kind', '!=', 'liquidity')]}"
270
+ readonly="manual_reference == False or is_reconciled == True or (manual_line_id != False and manual_kind != 'liquidity')"
238
271
  />
239
272
  <field
240
273
  name="analytic_distribution"
241
274
  widget="analytic_distribution"
242
275
  groups="analytic.group_analytic_accounting"
243
276
  options="{'account_field': 'manual_account_id', 'business_domain': 'general'}"
244
- attrs="{'invisible': ['|', ('manual_kind', '=', 'liquidity'), ('manual_reference', '=', False)], 'readonly': [('is_reconciled', '=', True)]}"
277
+ invisible="manual_kind == 'liquidity' or manual_reference == False"
278
+ readonly="is_reconciled == True"
245
279
  />
246
280
  </group>
247
281
  <group>
248
282
  <field
249
283
  name="manual_name"
250
284
  string="Name"
251
- attrs="{'readonly': ['|', '|', ('manual_reference', '=', False), ('is_reconciled', '=', True), '&amp;', ('manual_line_id', '!=', False), ('manual_kind', '!=', 'liquidity')]}"
285
+ readonly="manual_reference == False or is_reconciled == True or (manual_line_id != False and manual_kind != 'liquidity')"
252
286
  />
253
287
  <field
254
288
  name="manual_amount"
255
289
  string="Amount"
256
- attrs="{'readonly': ['|', ('manual_reference', '=', False), ('is_reconciled', '=', True)]}"
290
+ readonly="manual_reference == False or is_reconciled == True"
257
291
  />
258
292
  <field name="manual_currency_id" invisible="1" />
259
293
  <field name="manual_original_amount" invisible="1" />
@@ -261,10 +295,10 @@
261
295
  <label
262
296
  for="manual_move_id"
263
297
  string=""
264
- attrs="{'invisible': ['|', ('manual_move_type', 'not in', ['in_invoice', 'in_refund', 'out_invoice', 'out_refund']), ('manual_original_amount', '=', 0)]}"
298
+ insible="manual_move_type not in ['in_invoice', 'in_refund', 'out_invoice', 'out_refund'] or manual_original_amount == 0"
265
299
  />
266
300
  <div
267
- attrs="{'invisible': ['|', ('manual_move_type', 'not in', ['in_invoice', 'in_refund', 'out_invoice', 'out_refund']), ('manual_original_amount', '=', 0)]}"
301
+ insible="manual_move_type not in ['in_invoice', 'in_refund', 'out_invoice', 'out_refund'] or manual_original_amount == 0"
268
302
  >
269
303
  Invoice <field
270
304
  class="oe_inline"
@@ -293,19 +327,19 @@
293
327
  <field name="narration" />
294
328
  </page>
295
329
  <page name="chatter" string="Chatter">
296
- <field name="move_id" widget="account_reconcile_oca_chatter" />
330
+ <field name="move_id" widget="account_reconcile_oca_chatter" />
297
331
  </page>
298
332
  </notebook>
299
333
  </form>
300
334
  </field>
301
335
  </record>
302
336
  <record id="action_bank_statement_line_reconcile" model="ir.actions.act_window">
303
- <field name="name">Reconcile bank statement lines</field>
337
+ <field name="name">Statement lines</field>
304
338
  <field name="res_model">account.bank.statement.line</field>
305
339
  <field name="domain">[('journal_id', '=', active_id)]</field>
306
- <field
307
- name="context"
308
- >{'default_journal_id': active_id, 'search_default_not_reconciled': True, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}</field>
340
+ <field name="context">
341
+ {'default_journal_id': active_id, 'search_default_not_reconciled': True, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}
342
+ </field>
309
343
  <field name="view_mode">kanban,tree</field>
310
344
  <field
311
345
  name="view_ids"
@@ -326,12 +360,12 @@
326
360
  <field
327
361
  name="context"
328
362
  >{'default_journal_id': active_id, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}</field>
329
- <field name="view_mode">tree,kanban</field>
363
+ <field name="view_mode">kanban,tree</field>
330
364
  <field
331
365
  name="view_ids"
332
366
  eval="[(5, 0, 0),
333
- (0, 0, {'view_mode': 'tree', 'view_id': ref('account_statement_base.account_bank_statement_line_tree')}),
334
- (0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')})]"
367
+ (0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')}),
368
+ (0, 0, {'view_mode': 'tree', 'view_id': ref('account_statement_base.account_bank_statement_line_tree')})]"
335
369
  />
336
370
  <field name="help" type="html">
337
371
  <p class="o_view_nocontent_smiling_face">
@@ -346,14 +380,14 @@
346
380
  <field name="name">Reconcile bank statement lines</field>
347
381
  <field name="res_model">account.bank.statement.line</field>
348
382
  <field name="domain">[('journal_id', '=', active_id)]</field>
349
- <field
350
- name="context"
351
- >{'default_journal_id': active_id, 'search_default_to_check': True, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}</field>
352
- <field name="view_mode">tree</field>
383
+ <field name="context">
384
+ {'default_journal_id': active_id, 'search_default_to_check': True, 'view_ref': 'account_reconcile_oca.bank_statement_line_form_reconcile_view'}
385
+ </field>
386
+ <field name="view_mode">kanban</field>
353
387
  <field
354
388
  name="view_ids"
355
389
  eval="[(5, 0, 0),
356
- (0, 0, {'view_mode': 'tree', 'view_id': ref('bank_statement_line_reconcile_view')})]"
390
+ (0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')})]"
357
391
  />
358
392
  <field name="help" type="html">
359
393
  <p class="o_view_nocontent_smiling_face">
@@ -369,11 +403,11 @@
369
403
  <field name="name">Reconcile bank statement lines</field>
370
404
  <field name="res_model">account.bank.statement.line</field>
371
405
  <field name="context">{'search_default_move_id': active_id}</field>
372
- <field name="view_mode">tree</field>
406
+ <field name="view_mode">kanban</field>
373
407
  <field
374
408
  name="view_ids"
375
409
  eval="[(5, 0, 0),
376
- (0, 0, {'view_mode': 'tree', 'view_id': ref('bank_statement_line_reconcile_view')})]"
410
+ (0, 0, {'view_mode': 'kanban', 'view_id': ref('bank_statement_line_reconcile_view')})]"
377
411
  />
378
412
  <field name="help" type="html">
379
413
  <p class="o_view_nocontent_smiling_face">