odoo-addon-l10n-es-aeat-sii-oca 16.0.2.5.3__py3-none-any.whl → 17.0.1.1.0__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 (74) hide show
  1. odoo/addons/l10n_es_aeat_sii_oca/README.rst +73 -86
  2. odoo/addons/l10n_es_aeat_sii_oca/__manifest__.py +7 -6
  3. odoo/addons/l10n_es_aeat_sii_oca/data/aeat_sii_map_data.xml +208 -187
  4. odoo/addons/l10n_es_aeat_sii_oca/data/aeat_sii_tax_agency_data.xml +0 -25
  5. odoo/addons/l10n_es_aeat_sii_oca/data/ir_config_parameter_data.xml +9 -0
  6. odoo/addons/l10n_es_aeat_sii_oca/data/ir_cron.xml +12 -0
  7. odoo/addons/l10n_es_aeat_sii_oca/data/l10n.es.aeat.map.tax.line.tax.csv +143 -0
  8. odoo/addons/l10n_es_aeat_sii_oca/hooks.py +3 -6
  9. odoo/addons/l10n_es_aeat_sii_oca/i18n/bg.po +0 -33
  10. odoo/addons/l10n_es_aeat_sii_oca/i18n/ca.po +0 -33
  11. odoo/addons/l10n_es_aeat_sii_oca/i18n/cs.po +0 -33
  12. odoo/addons/l10n_es_aeat_sii_oca/i18n/de.po +0 -33
  13. odoo/addons/l10n_es_aeat_sii_oca/i18n/es.po +3 -33
  14. odoo/addons/l10n_es_aeat_sii_oca/i18n/es_CO.po +0 -33
  15. odoo/addons/l10n_es_aeat_sii_oca/i18n/es_CR.po +0 -33
  16. odoo/addons/l10n_es_aeat_sii_oca/i18n/eu.po +0 -33
  17. odoo/addons/l10n_es_aeat_sii_oca/i18n/fr.po +0 -33
  18. odoo/addons/l10n_es_aeat_sii_oca/i18n/gl.po +0 -33
  19. odoo/addons/l10n_es_aeat_sii_oca/i18n/hr.po +0 -33
  20. odoo/addons/l10n_es_aeat_sii_oca/i18n/l10n_es_aeat_sii_oca.pot +92 -82
  21. odoo/addons/l10n_es_aeat_sii_oca/i18n/nl.po +0 -33
  22. odoo/addons/l10n_es_aeat_sii_oca/i18n/pl.po +0 -33
  23. odoo/addons/l10n_es_aeat_sii_oca/i18n/pt.po +0 -33
  24. odoo/addons/l10n_es_aeat_sii_oca/i18n/pt_BR.po +0 -33
  25. odoo/addons/l10n_es_aeat_sii_oca/i18n/ru.po +0 -33
  26. odoo/addons/l10n_es_aeat_sii_oca/i18n/sl.po +0 -33
  27. odoo/addons/l10n_es_aeat_sii_oca/i18n/sv.po +0 -33
  28. odoo/addons/l10n_es_aeat_sii_oca/i18n/tr.po +0 -33
  29. odoo/addons/l10n_es_aeat_sii_oca/i18n/vi.po +0 -33
  30. odoo/addons/l10n_es_aeat_sii_oca/models/__init__.py +0 -1
  31. odoo/addons/l10n_es_aeat_sii_oca/models/account_move.py +142 -49
  32. odoo/addons/l10n_es_aeat_sii_oca/models/aeat_sii_map.py +3 -1
  33. odoo/addons/l10n_es_aeat_sii_oca/models/aeat_sii_mapping_registration_keys.py +1 -1
  34. odoo/addons/l10n_es_aeat_sii_oca/models/res_company.py +8 -9
  35. odoo/addons/l10n_es_aeat_sii_oca/models/sii_mixin.py +60 -58
  36. odoo/addons/l10n_es_aeat_sii_oca/readme/CONFIGURE.md +20 -0
  37. odoo/addons/l10n_es_aeat_sii_oca/readme/CONTRIBUTORS.md +24 -0
  38. odoo/addons/l10n_es_aeat_sii_oca/readme/DESCRIPTION.md +2 -0
  39. odoo/addons/l10n_es_aeat_sii_oca/readme/INSTALL.md +6 -0
  40. odoo/addons/l10n_es_aeat_sii_oca/readme/ROADMAP.md +12 -0
  41. odoo/addons/l10n_es_aeat_sii_oca/readme/{USAGE.rst → USAGE.md} +2 -2
  42. odoo/addons/l10n_es_aeat_sii_oca/security/ir.model.access.csv +0 -1
  43. odoo/addons/l10n_es_aeat_sii_oca/static/description/index.html +33 -46
  44. odoo/addons/l10n_es_aeat_sii_oca/tests/json/sii_in_invoice_p_iva21_ibc_group_dict.json +24 -0
  45. odoo/addons/l10n_es_aeat_sii_oca/tests/test_l10n_es_aeat_sii.py +71 -50
  46. odoo/addons/l10n_es_aeat_sii_oca/views/account_fiscal_position_view.xml +6 -16
  47. odoo/addons/l10n_es_aeat_sii_oca/views/account_journal_view.xml +2 -4
  48. odoo/addons/l10n_es_aeat_sii_oca/views/account_move_views.xml +39 -70
  49. odoo/addons/l10n_es_aeat_sii_oca/views/aeat_sii_map_view.xml +1 -1
  50. odoo/addons/l10n_es_aeat_sii_oca/views/res_company_view.xml +6 -10
  51. odoo/addons/l10n_es_aeat_sii_oca/wizards/account_move_reversal.py +9 -8
  52. odoo/addons/l10n_es_aeat_sii_oca/wizards/account_move_reversal_views.xml +4 -2
  53. odoo/addons/l10n_es_aeat_sii_oca/wizards/account_move_send_sii.py +15 -19
  54. odoo/addons/l10n_es_aeat_sii_oca/wizards/account_move_send_sii_views.xml +38 -5
  55. {odoo_addon_l10n_es_aeat_sii_oca-16.0.2.5.3.dist-info → odoo_addon_l10n_es_aeat_sii_oca-17.0.1.1.0.dist-info}/METADATA +84 -96
  56. odoo_addon_l10n_es_aeat_sii_oca-17.0.1.1.0.dist-info/RECORD +93 -0
  57. {odoo_addon_l10n_es_aeat_sii_oca-16.0.2.5.3.dist-info → odoo_addon_l10n_es_aeat_sii_oca-17.0.1.1.0.dist-info}/WHEEL +1 -1
  58. odoo_addon_l10n_es_aeat_sii_oca-17.0.1.1.0.dist-info/top_level.txt +1 -0
  59. odoo/addons/l10n_es_aeat_sii_oca/data/aeat_sii_queue_job.xml +0 -17
  60. odoo/addons/l10n_es_aeat_sii_oca/migrations/16.0.1.4.0/post-migration.py +0 -18
  61. odoo/addons/l10n_es_aeat_sii_oca/models/queue_job.py +0 -18
  62. odoo/addons/l10n_es_aeat_sii_oca/readme/CONFIGURE.rst +0 -39
  63. odoo/addons/l10n_es_aeat_sii_oca/readme/CONTRIBUTORS.rst +0 -25
  64. odoo/addons/l10n_es_aeat_sii_oca/readme/DESCRIPTION.rst +0 -2
  65. odoo/addons/l10n_es_aeat_sii_oca/readme/INSTALL.rst +0 -8
  66. odoo/addons/l10n_es_aeat_sii_oca/readme/ROADMAP.rst +0 -10
  67. odoo/addons/l10n_es_aeat_sii_oca/security/aeat_sii.xml +0 -17
  68. odoo/addons/l10n_es_aeat_sii_oca/views/queue_job_views.xml +0 -38
  69. odoo_addon_l10n_es_aeat_sii_oca-16.0.2.5.3.dist-info/RECORD +0 -94
  70. odoo_addon_l10n_es_aeat_sii_oca-16.0.2.5.3.dist-info/top_level.txt +0 -1
  71. /odoo/addons/l10n_es_aeat_sii_oca/tests/json/{sii_out_invoice_s_iva0_sp_i_s_iva0_ic_dict.json → sii_out_invoice_s_iva0_sp_i_s_iva0_g_i_dict.json} +0 -0
  72. /odoo/addons/l10n_es_aeat_sii_oca/tests/json/{sii_out_invoice_s_iva_e_s_iva0_e_dict.json → sii_out_invoice_s_iva_e_s_iva0_g_e_dict.json} +0 -0
  73. /odoo/addons/l10n_es_aeat_sii_oca/tests/json/{sii_out_refund_s_iva0_sp_i_s_iva0_ic_dict.json → sii_out_refund_s_iva0_sp_i_s_iva0_g_i_dict.json} +0 -0
  74. /odoo/addons/l10n_es_aeat_sii_oca/tests/json/{sii_out_refund_s_iva_e_s_iva0_e_dict.json → sii_out_refund_s_iva_e_s_iva0_g_e_dict.json} +0 -0
@@ -12,60 +12,55 @@
12
12
  <field name="arch" type="xml">
13
13
  <xpath expr="//field[@name='thirdparty_invoice']" position="attributes">
14
14
  <attribute
15
- name="attrs"
16
- >{'invisible': [('move_type', 'not in', ('in_invoice', 'out_invoice', 'out_refund', 'in_refund'))]}</attribute>
15
+ name="invisible"
16
+ >move_type not in ['in_invoice', 'out_invoice', 'out_refund', 'in_refund']</attribute>
17
17
  </xpath>
18
18
  <xpath expr="//field[@name='thirdparty_number']" position="attributes">
19
- <attribute
20
- name="attrs"
21
- >{'required': [('thirdparty_invoice', '=', True)], 'invisible': [('thirdparty_invoice', '=', False)]}</attribute>
19
+ <attribute name="required">thirdparty_invoice</attribute>
20
+ <attribute name="invisible">not thirdparty_invoice</attribute>
22
21
  </xpath>
23
22
  <button name="button_draft" position="after">
23
+ <field name="aeat_state" invisible="1" />
24
24
  <button
25
25
  type="object"
26
26
  string="Send to SII"
27
27
  name="send_sii"
28
28
  groups="l10n_es_aeat.group_account_aeat"
29
- attrs="{'invisible': ['|','|',('sii_enabled', '=', False), ('state', 'not in', ['posted']), ('aeat_state','in',['sent','cancelled'])]}"
29
+ invisible="not sii_enabled or state not in ['posted'] or not aeat_send_failed"
30
30
  />
31
31
  <button
32
32
  type="object"
33
33
  string="Send cancellation to SII"
34
34
  name="cancel_sii"
35
35
  groups="l10n_es_aeat.group_account_aeat"
36
- attrs="{'invisible': ['|','|',('sii_enabled', '=', False), ('state', 'not in', ['cancel']), ('aeat_state', 'not in', ['sent','sent_w_errors','sent_modified'])]}"
36
+ invisible="not sii_enabled or state not in ['cancel'] or aeat_state not in ['sent','sent_w_errors','sent_modified']"
37
37
  />
38
38
  </button>
39
39
  <notebook position="inside">
40
- <page
41
- string="SII"
42
- name="page_sii"
43
- attrs="{'invisible': [('sii_enabled', '=', False)]}"
44
- >
40
+ <page string="SII" name="page_sii" invisible="not sii_enabled">
45
41
  <group string="SII Information" name="group_sii_information">
46
- <field
47
- name="sii_description"
48
- attrs="{'required': [('sii_enabled', '=', True)]}"
49
- />
42
+ <field name="sii_description" required="sii_enabled" />
50
43
  <field name="thirdparty_invoice" />
51
44
  <field
52
45
  name="thirdparty_number"
53
- attrs="{'required': [('thirdparty_invoice', '=', True)], 'invisible': [('thirdparty_invoice', '=', False)]}"
46
+ required="thirdparty_invoice"
47
+ invisible="not thirdparty_invoice"
54
48
  />
55
49
  <field
56
50
  name="sii_refund_type"
57
- attrs="{'required': [('sii_enabled', '=', True),('move_type', 'in', ('out_refund','in_refund'))], 'invisible': [('move_type', 'not in', ('out_refund','in_refund'))]}"
51
+ required="sii_enabled and move_type in ['out_refund','in_refund']"
52
+ invisible="move_type not in ['out_refund','in_refund']"
58
53
  />
59
54
  <field
60
55
  name="sii_refund_specific_invoice_type"
61
- attrs="{'invisible': [('move_type', '!=', 'out_refund')]}"
56
+ invisible="move_type != 'out_refund'"
62
57
  />
63
58
  <field name="sii_registration_key_domain" invisible="1" />
64
59
  <field
65
60
  name="sii_registration_key"
66
61
  groups="account.group_account_invoice"
67
62
  domain="[('type', '=', sii_registration_key_domain)]"
68
- attrs="{'required': [('sii_enabled', '=', True)]}"
63
+ required="sii_enabled"
69
64
  widget="selection"
70
65
  />
71
66
  <field
@@ -85,38 +80,36 @@
85
80
  groups="account.group_account_invoice"
86
81
  invisible="1"
87
82
  />
83
+ <label for="sii_send_date" />
84
+ <div
85
+ name="sii_send_date"
86
+ invisible="aeat_state in ['sent','cancelled']"
87
+ >
88
+ <field name="sii_send_date" class="oe_inline text-break" />
89
+ <button
90
+ type="object"
91
+ class="oi oi-arrow-right oe_link"
92
+ name="send_sii"
93
+ string="Send to SII"
94
+ />
95
+ </div>
96
+ <field
97
+ name="sii_needs_cancel"
98
+ invisible="state != 'cancel' or aeat_state not in ['sent', 'sent_w_errors', 'sent_modified']"
99
+ />
88
100
  <field name="sii_enabled" invisible="1" />
89
101
  <field name="sii_lc_operation" />
90
102
  <field
91
103
  name="sii_property_location"
92
104
  groups="account.group_account_invoice"
93
- attrs="{
94
- 'invisible': [
95
- '|',
96
- ('sii_registration_key_code', 'not in', ['12', '13']),
97
- ('move_type', 'not in', ['out_invoice', 'out_refund']),
98
- ],
99
- 'required': [
100
- ('sii_registration_key_code', 'in', ['12', '13']),
101
- ('move_type', 'in', ['out_invoice', 'out_refund']),
102
- ],
103
- }"
105
+ invisible="sii_registration_key_code not in ['12', '13'] or move_type not in ['out_invoice', 'out_refund']"
106
+ required="sii_registration_key_code in ['12', '13'] and move_type in ['out_invoice', 'out_refund']"
104
107
  />
105
108
  <field
106
109
  name="sii_property_cadastrial_code"
107
110
  groups="account.group_account_invoice"
108
- attrs="{
109
- 'invisible': [
110
- '|',
111
- ('sii_registration_key_code', 'not in', ['12', '13']),
112
- ('move_type', 'not in', ['out_invoice', 'out_refund']),
113
- ],
114
- 'required': [
115
- ('sii_registration_key_code', 'in', ['12', '13']),
116
- ('sii_property_location', 'in', ['1', '2']),
117
- ('move_type', 'in', ['out_invoice', 'out_refund']),
118
- ],
119
- }"
111
+ invisible="sii_registration_key_code not in ['12', '13'] or move_type not in ['out_invoice', 'out_refund']"
112
+ required="sii_registration_key_code in ['12', '13'] and sii_property_location in ['1', '2'] and move_type in ['out_invoice', 'out_refund']"
120
113
  />
121
114
  </group>
122
115
  <group
@@ -130,15 +123,15 @@
130
123
  <field name="aeat_state" />
131
124
  <field
132
125
  name="sii_account_registration_date"
133
- attrs="{'invisible': ['|',('sii_account_registration_date', '=', False),('move_type', 'not in', ['in_invoice', 'in_refund'])]}"
126
+ invisible="not sii_account_registration_date or move_type not in ['in_invoice', 'in_refund']"
134
127
  />
135
128
  <field
136
129
  name="aeat_send_failed"
137
- attrs="{'invisible': [('aeat_send_failed', '=', False)]}"
130
+ invisible="not aeat_send_failed"
138
131
  />
139
132
  <field
140
133
  name="aeat_send_error"
141
- attrs="{'invisible': [('aeat_send_failed', '=', False)]}"
134
+ invisible="not aeat_send_failed"
142
135
  />
143
136
  <field name="sii_csv" />
144
137
  </group>
@@ -167,30 +160,6 @@
167
160
  </notebook>
168
161
  </field>
169
162
  </record>
170
- <record id="invoice_sii_form_connector" model="ir.ui.view">
171
- <field name="name">account.invoice.sii.form - Connector</field>
172
- <field name="model">account.move</field>
173
- <field name="inherit_id" ref="invoice_sii_form" />
174
- <field name="arch" type="xml">
175
- <group name="group_sii_result" position="after">
176
- <group
177
- string="Connector Jobs"
178
- name="group_sii_jobs"
179
- groups="l10n_es_aeat.group_account_aeat"
180
- cols="4"
181
- >
182
- <field
183
- name="invoice_jobs_ids"
184
- options="{'reload_on_button': true}"
185
- nolabel="1"
186
- colspan="2"
187
- readonly="1"
188
- context="{'tree_view_ref': 'l10n_es_aeat_sii_oca.view_queue_job_sii'}"
189
- />
190
- </group>
191
- </group>
192
- </field>
193
- </record>
194
163
  <record id="view_account_invoice_sii_filter" model="ir.ui.view">
195
164
  <field name="name">account.invoice.select.sii</field>
196
165
  <field name="model">account.move</field>
@@ -57,7 +57,7 @@
57
57
  <tree editable="bottom">
58
58
  <field name="code" />
59
59
  <field name="name" />
60
- <field name="taxes" widget="many2many_tags" />
60
+ <field name="tax_xmlid_ids" widget="many2many_tags" />
61
61
  </tree>
62
62
  </field>
63
63
  </record>
@@ -13,7 +13,7 @@
13
13
  <group name="sii_enabled">
14
14
  <field name="sii_enabled" />
15
15
  </group>
16
- <group attrs="{'invisible': [('sii_enabled', '=', False)]}">
16
+ <group invisible="not sii_enabled">
17
17
  <group name="sii_config">
18
18
  <field name="sii_test" />
19
19
  <field name="sii_method" />
@@ -23,26 +23,22 @@
23
23
  <field name="sii_description_method" />
24
24
  <field
25
25
  name="sii_description"
26
- attrs="{'invisible': [('sii_description_method', '!=', 'fixed')]}"
26
+ invisible="sii_description_method != 'fixed'"
27
27
  />
28
28
  <field name="sii_header_customer" />
29
29
  <field name="sii_header_supplier" />
30
30
  </group>
31
- <group name="sii_connector" string="Connector config">
32
- <field name="use_connector" />
33
- <field
34
- name="send_mode"
35
- attrs="{'invisible': [('use_connector', '=', False)]}"
36
- />
31
+ <group name="cron_config" string="Cron Config">
32
+ <field name="send_mode" />
37
33
  <field
38
34
  name='sent_time'
39
35
  widget='float_time'
40
- attrs="{'invisible': ['|', ('use_connector', '=', False), ('send_mode', '!=', 'fixed')]}"
36
+ invisible="send_mode != 'fixed'"
41
37
  />
42
38
  <field
43
39
  name='delay_time'
44
40
  widget='float_time'
45
- attrs="{'invisible': ['|', ('use_connector', '=', False), ('send_mode', '!=', 'delayed')]}"
41
+ invisible="send_mode != 'delayed'"
46
42
  />
47
43
  </group>
48
44
  </group>
@@ -37,12 +37,13 @@ class AccountMoveReversal(models.TransientModel):
37
37
  if (
38
38
  "sii_refund_type" in fields_list
39
39
  or "sii_refund_type_required" in fields_list
40
- ) and self.env.context.get("active_model") == "account.move":
41
- invoices = self.env["account.move"].browse(
42
- self.env.context.get("active_ids"),
43
- )
44
- to_refund = invoices.filtered(
45
- lambda i: i.move_type in ("in_invoice", "out_invoice")
40
+ ):
41
+ to_refund = self.env["account.move"].search(
42
+ [
43
+ ("id", "in", self.env.context.get("active_ids")),
44
+ ("move_type", "in", ["in_invoice", "out_invoice"]),
45
+ ("journal_id.sii_enabled", "=", True),
46
+ ]
46
47
  )
47
48
  if any(to_refund.mapped("company_id.sii_enabled")):
48
49
  defaults["sii_refund_type"] = "I"
@@ -56,9 +57,9 @@ class AccountMoveReversal(models.TransientModel):
56
57
  )
57
58
  return defaults
58
59
 
59
- def reverse_moves(self):
60
+ def reverse_moves(self, is_modify=False):
60
61
  obj = self.with_context(
61
62
  sii_refund_type=self.sii_refund_type,
62
63
  supplier_invoice_number=self.supplier_invoice_number_refund,
63
64
  )
64
- return super(AccountMoveReversal, obj).reverse_moves()
65
+ return super(AccountMoveReversal, obj).reverse_moves(is_modify)
@@ -11,11 +11,13 @@
11
11
  <field name="supplier_invoice_number_refund_required" invisible="1" />
12
12
  <field
13
13
  name="sii_refund_type"
14
- attrs="{'required': [('sii_refund_type_required', '=', True)], 'invisible': [('sii_refund_type_required', '=', False)]}"
14
+ required="sii_refund_type_required"
15
+ invisible="not sii_refund_type_required"
15
16
  />
16
17
  <field
17
18
  name="supplier_invoice_number_refund"
18
- attrs="{'required': [('supplier_invoice_number_refund_required', '=', True)], 'invisible': [('supplier_invoice_number_refund_required', '=', False)]}"
19
+ required="supplier_invoice_number_refund_required"
20
+ invisible="not supplier_invoice_number_refund_required"
19
21
  />
20
22
  </field>
21
23
  </field>
@@ -8,34 +8,30 @@ class SendSIIWizard(models.TransientModel):
8
8
  _name = "wizard.send.sii"
9
9
  _description = "Send SII Wizard"
10
10
 
11
- sending_number = fields.Integer(string="Invoices Jobs Process Sending")
12
- sent_number = fields.Integer(string="Invoices SII Sent")
11
+ sending_number = fields.Integer()
12
+ not_send_without_errors_number = fields.Integer()
13
+ with_errors_number = fields.Integer()
14
+ modified_number = fields.Integer()
13
15
  account_move_ids = fields.Many2many("account.move", string="Invoices")
14
16
 
15
17
  def default_get(self, fields):
16
18
  res = super().default_get(fields)
17
- # get the records selected
18
19
  active_model = self.env.context.get("active_model")
19
20
  active_ids = self.env.context.get("active_ids", [])
20
21
  account_moves = self.env[active_model].browse(active_ids)
21
- # filter the records that have jobs associated
22
- invoices_with_jobs_ids = account_moves.filtered(lambda i: (i.invoice_jobs_ids))
23
- # and calculate the number of invoices in process of sending or sent
24
- sending_number = len(invoices_with_jobs_ids)
25
- sent_number = 0
26
- for invoice in invoices_with_jobs_ids:
27
- if all(invoice.invoice_jobs_ids.mapped("state")) == "failed":
28
- sending_number -= 1
29
- elif all(invoice.invoice_jobs_ids.mapped("state")) == "cancelled":
30
- sending_number -= 1
31
- elif any(invoice.invoice_jobs_ids.mapped("state")) == "done":
32
- sent_number += 1
33
- # update the values of the wizard
22
+ not_send_without_errors = account_moves.filtered(
23
+ lambda a: a.aeat_state == "not_sent" and not a.aeat_send_failed
24
+ )
25
+ with_errors = account_moves.filtered(lambda a: a.aeat_send_failed)
26
+ modified = account_moves.filtered(
27
+ lambda a: a.aeat_state in ["sent_modified", "cancelled_modified"]
28
+ )
34
29
  res.update(
35
30
  {
36
- "sending_number": sending_number,
37
- "sent_number": sent_number,
38
- "account_move_ids": [(6, 0, active_ids)],
31
+ "sending_number": len(account_moves),
32
+ "not_send_without_errors_number": len(not_send_without_errors),
33
+ "with_errors_number": len(with_errors),
34
+ "modified_number": len(modified),
39
35
  }
40
36
  )
41
37
  return res
@@ -7,10 +7,21 @@
7
7
  <field name="model">wizard.send.sii</field>
8
8
  <field name="arch" type="xml">
9
9
  <form>
10
+ <p
11
+ class="alert alert-info"
12
+ role="alert"
13
+ invisible="not_send_without_errors_number == 0"
14
+ >
15
+ <field
16
+ name="not_send_without_errors_number"
17
+ widget="statinfo"
18
+ string="of the selected invoices have not been sent to to the SII yet and will be sent."
19
+ />
20
+ </p>
10
21
  <p
11
22
  class="alert alert-warning"
12
23
  role="alert"
13
- attrs="{'invisible': [('sending_number', '=', 0)]}"
24
+ invisible="sending_number == 0"
14
25
  >
15
26
  <field
16
27
  name="sending_number"
@@ -19,14 +30,36 @@
19
30
  />
20
31
  </p>
21
32
  <p
22
- class="alert alert-danger"
33
+ class="alert alert-info"
34
+ role="alert"
35
+ invisible="with_errors_number == 0"
36
+ >
37
+ <field
38
+ name="with_errors_number"
39
+ widget="statinfo"
40
+ string="of the selected invoices failed when trying to send them to the SII. If confirm, they will be resent"
41
+ />
42
+ </p>
43
+ <p
44
+ class="alert alert-info"
45
+ role="alert"
46
+ invisible="with_errors_number == 0"
47
+ >
48
+ <field
49
+ name="with_errors_number"
50
+ widget="statinfo"
51
+ string="of the selected invoices failed when trying to send them to the SII. If confirm, they will be resent"
52
+ />
53
+ </p>
54
+ <p
55
+ class="alert alert-info"
23
56
  role="alert"
24
- attrs="{'invisible': [('sent_number', '=', 0)]}"
57
+ invisible="modified_number == 0"
25
58
  >
26
59
  <field
27
- name="sent_number"
60
+ name="modified_number"
28
61
  widget="statinfo"
29
- string="of the selected invoices have been correctly sent to the SII. If you confirm, they will be resent."
62
+ string="of the selected invoices have changed but changes have not been sent to the SII yet. If you confirm, they will be sent to sii."
30
63
  />
31
64
  </p>
32
65
  <footer>