odoo-addon-account-move-payroll-import 16.0.1.0.2__tar.gz → 16.0.1.0.3__tar.gz

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 (34) hide show
  1. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/PKG-INFO +1 -1
  2. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/__manifest__.py +1 -1
  3. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/models/payroll_import_setup.py +39 -4
  4. odoo-addon-account_move_payroll_import-16.0.1.0.3/odoo/addons/account_move_payroll_import/utils/parse_utils.py +46 -0
  5. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo_addon_account_move_payroll_import.egg-info/PKG-INFO +1 -1
  6. odoo-addon-account_move_payroll_import-16.0.1.0.2/odoo/addons/account_move_payroll_import/utils/parse_utils.py +0 -34
  7. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/CHANGELOG.md +0 -0
  8. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/README.rst +0 -0
  9. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/__init__.py +0 -0
  10. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/data/payroll_import_defaults.xml +0 -0
  11. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/i18n/ca_ES.po +0 -0
  12. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/i18n/es.po +0 -0
  13. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/models/__init__.py +0 -0
  14. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/models/account_move.py +0 -0
  15. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/models/payroll_custom_concept.py +0 -0
  16. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/models/payroll_import_mapping.py +0 -0
  17. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/security/ir.model.access.csv +0 -0
  18. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/static/src/css/styles.css +0 -0
  19. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/static/src/js/payroll_import_button.js +0 -0
  20. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/static/src/xml/payroll_import_templates.xml +0 -0
  21. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/utils/__init__.py +0 -0
  22. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/utils/file_utils.py +0 -0
  23. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/views/assets_template.xml +0 -0
  24. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/views/payroll_import_views.xml +0 -0
  25. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/wizards/__init__.py +0 -0
  26. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/wizards/payroll_import_wizard.py +0 -0
  27. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo/addons/account_move_payroll_import/wizards/payroll_import_wizard.xml +0 -0
  28. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo_addon_account_move_payroll_import.egg-info/SOURCES.txt +0 -0
  29. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo_addon_account_move_payroll_import.egg-info/dependency_links.txt +0 -0
  30. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo_addon_account_move_payroll_import.egg-info/not-zip-safe +0 -0
  31. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo_addon_account_move_payroll_import.egg-info/requires.txt +0 -0
  32. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/odoo_addon_account_move_payroll_import.egg-info/top_level.txt +0 -0
  33. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/setup.cfg +0 -0
  34. {odoo-addon-account_move_payroll_import-16.0.1.0.2 → odoo-addon-account_move_payroll_import-16.0.1.0.3}/setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-account_move_payroll_import
3
- Version: 16.0.1.0.2
3
+ Version: 16.0.1.0.3
4
4
  Summary: ODOO account move spanish payroll data import for social cooperatives.
5
5
  Home-page: https://gitlab.com/somitcoop/erp-research/odoo-accounting
6
6
  Author: Som It Cooperatiu SCCL, Som Connexió SCCL
@@ -3,7 +3,7 @@
3
3
  # License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl.html).
4
4
  {
5
5
  "name": "SomItCoop ODOO accounting spanish payroll import",
6
- "version": "16.0.1.0.2",
6
+ "version": "16.0.1.0.3",
7
7
  "depends": ["account", "hr", "web", "l10n_es"],
8
8
  "author": """
9
9
  Som It Cooperatiu SCCL,
@@ -3,7 +3,7 @@
3
3
  from odoo import models, fields, api, _, Command
4
4
  from odoo.exceptions import UserError
5
5
 
6
- from ..utils.parse_utils import abs_float
6
+ from ..utils.parse_utils import abs_float, parse_float
7
7
 
8
8
 
9
9
  # This are the only allowed mappings for the moment
@@ -18,6 +18,8 @@ ALLOWED_MAPPINGS = [
18
18
  "payroll_import_mapping_ss_bonus",
19
19
  ]
20
20
 
21
+ VALUE_ERROR_MSG = "Invalid value '%s' in column %s."
22
+
21
23
 
22
24
  class PayrollImportSetup(models.Model):
23
25
  _name = "payroll.import.setup"
@@ -394,16 +396,37 @@ class PayrollImportSetup(models.Model):
394
396
  row[self.column_total_tc1rlc - 1],
395
397
  self.thousands_delimiter,
396
398
  self.decimal_delimiter,
399
+ context={
400
+ "raise_exception": True,
401
+ "exception_msg": VALUE_ERROR_MSG % (
402
+ row[self.column_total_tc1rlc - 1],
403
+ self.column_total_tc1rlc
404
+ )
405
+ }
397
406
  )
398
407
  - abs_float(
399
408
  row[self.column_ss_employee - 1],
400
409
  self.thousands_delimiter,
401
410
  self.decimal_delimiter,
411
+ context={
412
+ "raise_exception": True,
413
+ "exception_msg": VALUE_ERROR_MSG % (
414
+ row[self.column_ss_employee - 1],
415
+ self.column_ss_employee
416
+ )
417
+ }
402
418
  )
403
419
  - abs_float(
404
420
  row[self.column_ss_company - 1],
405
421
  self.thousands_delimiter,
406
422
  self.decimal_delimiter,
423
+ context={
424
+ "raise_exception": True,
425
+ "exception_msg": VALUE_ERROR_MSG % (
426
+ row[self.column_ss_company - 1],
427
+ self.column_ss_company
428
+ )
429
+ }
407
430
  )
408
431
  )
409
432
  return cumulative
@@ -436,8 +459,10 @@ class PayrollImportSetup(models.Model):
436
459
  return {}
437
460
 
438
461
  column = getattr(self, line_mapping.column_field, False)
439
- value = abs_float(
440
- row[column - 1], self.thousands_delimiter, self.decimal_delimiter
462
+ exception_msg = VALUE_ERROR_MSG % (row[column - 1], column)
463
+ value = parse_float(
464
+ row[column - 1], self.thousands_delimiter, self.decimal_delimiter,
465
+ context={"raise_exception": True, "exception_msg": exception_msg}
441
466
  )
442
467
 
443
468
  if not value:
@@ -489,8 +514,10 @@ class PayrollImportSetup(models.Model):
489
514
  cc_vals_list = []
490
515
  for custom_concept in self.custom_concepts_ids:
491
516
  column = custom_concept.col_index
517
+ exception_msg = VALUE_ERROR_MSG % (row[column - 1], column)
492
518
  value = abs_float(
493
- row[column - 1], self.thousands_delimiter, self.decimal_delimiter
519
+ row[column - 1], self.thousands_delimiter, self.decimal_delimiter,
520
+ context={"raise_exception": True, "exception_msg": exception_msg}
494
521
  )
495
522
 
496
523
  if not value:
@@ -511,6 +538,14 @@ class PayrollImportSetup(models.Model):
511
538
  """
512
539
  Create the payroll account move.
513
540
  """
541
+ for vals in lines_vals:
542
+ # credits might be negative in the file
543
+ vals["credit"] = abs(vals.get("credit", 0.0))
544
+
545
+ # debits must be positive so: switch debit/credit if debit is negative
546
+ if vals.get("debit", 0.0) < 0.0:
547
+ vals["credit"] = abs(vals.pop("debit"))
548
+
514
549
  move = self.env["account.move"].with_context(
515
550
  is_payroll_import=True
516
551
  ).create(
@@ -0,0 +1,46 @@
1
+ # -*- coding: utf-8 -*-
2
+ from odoo.exceptions import UserError
3
+
4
+
5
+ def parse_float(value, thousands_sep=",", decimal_sep=".", context={}):
6
+ """
7
+ Parse a float value.
8
+ :param thousands_sep: the thousands separator.
9
+ :param decimal_sep: the decimal separator.
10
+ :param value: the value to parse.
11
+ :param context: the context.
12
+ :return: the parsed float value.
13
+ """
14
+ if type(value) in (int, float, bool):
15
+ return float(value)
16
+
17
+ value = str(value).strip()
18
+ if not value:
19
+ return 0.0
20
+
21
+ value = value.replace(thousands_sep, "", 1).replace(decimal_sep, ".", 1)
22
+ try:
23
+ return float(value)
24
+ except ValueError:
25
+ if context.get("raise_exception", True):
26
+ msg = context.get("exception_msg", "Invalid float value: %s" % value)
27
+ raise UserError(msg)
28
+ return 0.0
29
+
30
+
31
+ def abs_float(value, thousands_sep=",", decimal_sep=".", context={}):
32
+ """
33
+ Parse a float value and return its absolute value.
34
+ :param thousands_sep: the thousands separator.
35
+ :param decimal_sep: the decimal separator.
36
+ :param value: the value to parse.
37
+ :param context: the context.
38
+ :return: the absolute value of the parsed float value.
39
+ """
40
+ try:
41
+ return abs(parse_float(value, thousands_sep, decimal_sep))
42
+ except ValueError:
43
+ if context.get("raise_exception", True):
44
+ msg = context.get("exception_msg", "Invalid float value: %s" % value)
45
+ raise UserError(msg)
46
+ return 0.0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: odoo-addon-account-move-payroll-import
3
- Version: 16.0.1.0.2
3
+ Version: 16.0.1.0.3
4
4
  Summary: ODOO account move spanish payroll data import for social cooperatives.
5
5
  Home-page: https://gitlab.com/somitcoop/erp-research/odoo-accounting
6
6
  Author: Som It Cooperatiu SCCL, Som Connexió SCCL
@@ -1,34 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
-
4
- def parse_float(value, thousands_sep=",", decimal_sep="."):
5
- """
6
- Parse a float value.
7
- :param thousands_sep: the thousands separator.
8
- :param decimal_sep: the decimal separator.
9
- :param value: the value to parse.
10
- :return: the parsed float value.
11
- """
12
- if type(value) in (int, float, bool):
13
- return float(value)
14
-
15
- value = str(value).strip()
16
- if not value:
17
- return 0.0
18
-
19
- value = value.replace(thousands_sep, "").replace(decimal_sep, ".")
20
- return float(value)
21
-
22
-
23
- def abs_float(value, thousands_sep=",", decimal_sep="."):
24
- """
25
- Parse a float value and return its absolute value.
26
- :param thousands_sep: the thousands separator.
27
- :param decimal_sep: the decimal separator.
28
- :param value: the value to parse.
29
- :return: the absolute value of the parsed float value.
30
- """
31
- try:
32
- return abs(parse_float(value, thousands_sep, decimal_sep))
33
- except ValueError:
34
- raise ValueError("Invalid float value: %s" % value)