coati-payroll 0.0.3__tar.gz → 0.0.5__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.

Potentially problematic release.


This version of coati-payroll might be problematic. Click here for more details.

Files changed (256) hide show
  1. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/PKG-INFO +2 -1
  2. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/cli.py +187 -9
  3. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/version.py +1 -1
  4. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll.egg-info/PKG-INFO +2 -1
  5. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/pyproject.toml +1 -0
  6. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/LICENSE +0 -0
  7. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/README.md +0 -0
  8. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/__init__.py +0 -0
  9. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/app.py +0 -0
  10. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/audit_helpers.py +0 -0
  11. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/auth.py +0 -0
  12. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/config.py +0 -0
  13. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/demo_data.py +0 -0
  14. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/enums.py +0 -0
  15. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/forms.py +0 -0
  16. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/__init__.py +0 -0
  17. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/ast/__init__.py +0 -0
  18. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/ast/ast_visitor.py +0 -0
  19. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/ast/expression_evaluator.py +0 -0
  20. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/ast/safe_operators.py +0 -0
  21. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/ast/type_converter.py +0 -0
  22. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/data_sources.py +0 -0
  23. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/engine.py +0 -0
  24. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/exceptions.py +0 -0
  25. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/execution/__init__.py +0 -0
  26. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/execution/execution_context.py +0 -0
  27. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/execution/step_executor.py +0 -0
  28. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/execution/variable_store.py +0 -0
  29. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/novelty_codes.py +0 -0
  30. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/results/__init__.py +0 -0
  31. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/results/execution_result.py +0 -0
  32. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/steps/__init__.py +0 -0
  33. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/steps/assignment_step.py +0 -0
  34. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/steps/base_step.py +0 -0
  35. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/steps/calculation_step.py +0 -0
  36. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/steps/conditional_step.py +0 -0
  37. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/steps/step_factory.py +0 -0
  38. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/steps/tax_lookup_step.py +0 -0
  39. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/tables/__init__.py +0 -0
  40. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/tables/bracket_calculator.py +0 -0
  41. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/tables/table_lookup.py +0 -0
  42. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/tables/tax_table.py +0 -0
  43. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/validation/__init__.py +0 -0
  44. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/validation/schema_validator.py +0 -0
  45. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/validation/security_validator.py +0 -0
  46. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine/validation/tax_table_validator.py +0 -0
  47. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/formula_engine_examples.py +0 -0
  48. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/i18n.py +0 -0
  49. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/initial_data.py +0 -0
  50. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/interes_engine.py +0 -0
  51. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/liquidacion_engine/__init__.py +0 -0
  52. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/liquidacion_engine/engine.py +0 -0
  53. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/locale_config.py +0 -0
  54. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/log.py +0 -0
  55. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/model.py +0 -0
  56. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/__init__.py +0 -0
  57. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/calculators/__init__.py +0 -0
  58. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/calculators/benefit_calculator.py +0 -0
  59. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/calculators/concept_calculator.py +0 -0
  60. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/calculators/deduction_calculator.py +0 -0
  61. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/calculators/exchange_rate_calculator.py +0 -0
  62. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/calculators/perception_calculator.py +0 -0
  63. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/calculators/salary_calculator.py +0 -0
  64. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/domain/__init__.py +0 -0
  65. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/domain/calculation_items.py +0 -0
  66. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/domain/employee_calculation.py +0 -0
  67. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/domain/payroll_context.py +0 -0
  68. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/engine.py +0 -0
  69. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/processors/__init__.py +0 -0
  70. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/processors/accounting_processor.py +0 -0
  71. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/processors/accumulation_processor.py +0 -0
  72. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/processors/loan_processor.py +0 -0
  73. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/processors/novelty_processor.py +0 -0
  74. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/processors/vacation_processor.py +0 -0
  75. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/__init__.py +0 -0
  76. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/acumulado_repository.py +0 -0
  77. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/base_repository.py +0 -0
  78. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/config_repository.py +0 -0
  79. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/employee_repository.py +0 -0
  80. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/exchange_rate_repository.py +0 -0
  81. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/novelty_repository.py +0 -0
  82. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/repositories/planilla_repository.py +0 -0
  83. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/results/__init__.py +0 -0
  84. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/results/error_result.py +0 -0
  85. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/results/payroll_result.py +0 -0
  86. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/results/validation_result.py +0 -0
  87. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/services/__init__.py +0 -0
  88. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/services/accounting_voucher_service.py +0 -0
  89. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/services/employee_processing_service.py +0 -0
  90. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/services/payroll_execution_service.py +0 -0
  91. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/services/snapshot_service.py +0 -0
  92. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/validators/__init__.py +0 -0
  93. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/validators/base_validator.py +0 -0
  94. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/validators/currency_validator.py +0 -0
  95. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/validators/employee_validator.py +0 -0
  96. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/validators/period_validator.py +0 -0
  97. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/nomina_engine/validators/planilla_validator.py +0 -0
  98. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/plugin_manager.py +0 -0
  99. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/__init__.py +0 -0
  100. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/driver.py +0 -0
  101. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/drivers/__init__.py +0 -0
  102. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/drivers/dramatiq_driver.py +0 -0
  103. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/drivers/huey_driver.py +0 -0
  104. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/drivers/noop_driver.py +0 -0
  105. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/selector.py +0 -0
  106. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/queue/tasks.py +0 -0
  107. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/rate_limiting.py +0 -0
  108. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/rbac.py +0 -0
  109. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/report_engine.py +0 -0
  110. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/report_export.py +0 -0
  111. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/schema_validator.py +0 -0
  112. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/security.py +0 -0
  113. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/static/styles.css +0 -0
  114. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/system_reports.py +0 -0
  115. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/auth/login.html +0 -0
  116. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/base.html +0 -0
  117. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/index.html +0 -0
  118. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/macros.html +0 -0
  119. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/calculation_rule/form.html +0 -0
  120. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/calculation_rule/index.html +0 -0
  121. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/calculation_rule/schema_editor.html +0 -0
  122. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/carga_inicial_prestacion/form.html +0 -0
  123. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/carga_inicial_prestacion/index.html +0 -0
  124. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/carga_inicial_prestacion/reporte.html +0 -0
  125. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/config_calculos/index.html +0 -0
  126. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/configuracion/index.html +0 -0
  127. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/currency/form.html +0 -0
  128. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/currency/index.html +0 -0
  129. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/custom_field/form.html +0 -0
  130. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/custom_field/index.html +0 -0
  131. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/deduccion/form.html +0 -0
  132. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/deduccion/index.html +0 -0
  133. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/employee/form.html +0 -0
  134. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/employee/index.html +0 -0
  135. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/empresa/form.html +0 -0
  136. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/empresa/index.html +0 -0
  137. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/exchange_rate/form.html +0 -0
  138. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/exchange_rate/import.html +0 -0
  139. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/exchange_rate/index.html +0 -0
  140. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/liquidacion/index.html +0 -0
  141. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/liquidacion/nueva.html +0 -0
  142. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/liquidacion/ver.html +0 -0
  143. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/payroll_concepts/audit_log.html +0 -0
  144. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/percepcion/form.html +0 -0
  145. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/percepcion/index.html +0 -0
  146. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/config.html +0 -0
  147. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/config_deducciones.html +0 -0
  148. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/config_empleados.html +0 -0
  149. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/config_percepciones.html +0 -0
  150. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/config_prestaciones.html +0 -0
  151. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/config_reglas.html +0 -0
  152. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/ejecutar_nomina.html +0 -0
  153. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/form.html +0 -0
  154. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/index.html +0 -0
  155. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/listar_nominas.html +0 -0
  156. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/log_nomina.html +0 -0
  157. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/novedades/form.html +0 -0
  158. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/novedades/index.html +0 -0
  159. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/ver_nomina.html +0 -0
  160. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/planilla/ver_nomina_empleado.html +0 -0
  161. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/plugins/index.html +0 -0
  162. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestacion/form.html +0 -0
  163. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestacion/index.html +0 -0
  164. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestacion_management/dashboard.html +0 -0
  165. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestacion_management/initial_balance_bulk.html +0 -0
  166. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestamo/approve.html +0 -0
  167. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestamo/condonacion.html +0 -0
  168. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestamo/detail.html +0 -0
  169. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestamo/form.html +0 -0
  170. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestamo/index.html +0 -0
  171. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestamo/pago_extraordinario.html +0 -0
  172. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/prestamo/tabla_pago_pdf.html +0 -0
  173. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/report/admin_index.html +0 -0
  174. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/report/detail.html +0 -0
  175. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/report/execute.html +0 -0
  176. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/report/index.html +0 -0
  177. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/report/permissions.html +0 -0
  178. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/settings/index.html +0 -0
  179. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/shared/concept_form.html +0 -0
  180. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/shared/concept_index.html +0 -0
  181. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/tipo_planilla/form.html +0 -0
  182. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/tipo_planilla/index.html +0 -0
  183. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/user/form.html +0 -0
  184. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/user/index.html +0 -0
  185. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/user/profile.html +0 -0
  186. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/account_detail.html +0 -0
  187. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/account_form.html +0 -0
  188. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/account_index.html +0 -0
  189. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/dashboard.html +0 -0
  190. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/initial_balance_bulk.html +0 -0
  191. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/initial_balance_form.html +0 -0
  192. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/leave_request_detail.html +0 -0
  193. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/leave_request_form.html +0 -0
  194. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/leave_request_index.html +0 -0
  195. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/policy_detail.html +0 -0
  196. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/policy_form.html +0 -0
  197. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/policy_index.html +0 -0
  198. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/templates/modules/vacation/register_taken_form.html +0 -0
  199. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/translations/en/LC_MESSAGES/messages.mo +0 -0
  200. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/translations/en/LC_MESSAGES/messages.po +0 -0
  201. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/translations/es/LC_MESSAGES/messages.mo +0 -0
  202. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/translations/es/LC_MESSAGES/messages.po +0 -0
  203. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vacation_service.py +0 -0
  204. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/__init__.py +0 -0
  205. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/calculation_rule.py +0 -0
  206. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/carga_inicial_prestacion.py +0 -0
  207. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/config_calculos.py +0 -0
  208. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/configuracion.py +0 -0
  209. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/constants.py +0 -0
  210. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/currency.py +0 -0
  211. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/custom_field.py +0 -0
  212. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/employee.py +0 -0
  213. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/empresa.py +0 -0
  214. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/exchange_rate.py +0 -0
  215. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/liquidacion.py +0 -0
  216. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/payroll_concepts.py +0 -0
  217. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/__init__.py +0 -0
  218. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/association_routes.py +0 -0
  219. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/config_routes.py +0 -0
  220. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/export_routes.py +0 -0
  221. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/helpers/__init__.py +0 -0
  222. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/helpers/association_helpers.py +0 -0
  223. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/helpers/excel_helpers.py +0 -0
  224. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/helpers/form_helpers.py +0 -0
  225. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/nomina_routes.py +0 -0
  226. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/novedad_routes.py +0 -0
  227. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/routes.py +0 -0
  228. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/services/__init__.py +0 -0
  229. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/services/export_service.py +0 -0
  230. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/services/nomina_service.py +0 -0
  231. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/services/novedad_service.py +0 -0
  232. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/services/planilla_service.py +0 -0
  233. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/validators/__init__.py +0 -0
  234. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/planilla/validators/planilla_validators.py +0 -0
  235. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/plugins.py +0 -0
  236. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/prestacion.py +0 -0
  237. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/prestamo.py +0 -0
  238. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/report.py +0 -0
  239. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/settings.py +0 -0
  240. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/tipo_planilla.py +0 -0
  241. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/user.py +0 -0
  242. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll/vistas/vacation.py +0 -0
  243. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll.egg-info/SOURCES.txt +0 -0
  244. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll.egg-info/dependency_links.txt +0 -0
  245. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll.egg-info/entry_points.txt +0 -0
  246. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll.egg-info/requires.txt +0 -0
  247. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/coati_payroll.egg-info/top_level.txt +0 -0
  248. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/requirements.txt +0 -0
  249. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/setup.cfg +0 -0
  250. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/tests/test_ast_security.py +0 -0
  251. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/tests/test_ast_visitor.py +0 -0
  252. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/tests/test_cli.py +0 -0
  253. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/tests/test_plugin_manager.py +0 -0
  254. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/tests/test_plugins_cli.py +0 -0
  255. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/tests/test_plugins_ui.py +0 -0
  256. {coati_payroll-0.0.3 → coati_payroll-0.0.5}/tests/test_routes_map.py +0 -0
@@ -1,6 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: coati-payroll
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
+ Summary: A jurisdiction-agnostic payroll calculation engine.
4
5
  Requires-Python: >=3.11
5
6
  Description-Content-Type: text/markdown
6
7
  License-File: LICENSE
@@ -39,10 +39,10 @@ from flask.cli import with_appcontext
39
39
  # <-------------------------------------------------------------------------> #
40
40
  # Local modules
41
41
  # <-------------------------------------------------------------------------> #
42
- from coati_payroll.model import db, Usuario
42
+ from coati_payroll.model import db, Usuario, PluginRegistry
43
43
  from coati_payroll.auth import proteger_passwd
44
44
  from coati_payroll.log import log
45
- from coati_payroll.plugin_manager import discover_installed_plugins, load_plugin_module
45
+ from coati_payroll.plugin_manager import discover_installed_plugins, load_plugin_module, sync_plugin_registry
46
46
 
47
47
 
48
48
  # Global context to store CLI options
@@ -68,7 +68,7 @@ def output_result(ctx, message, data=None, success=True):
68
68
  click.echo(f"{symbol} {message}")
69
69
 
70
70
 
71
- class PluginsCommand(click.MultiCommand):
71
+ class PluginsCommand(click.Group):
72
72
  def list_commands(self, cli_ctx):
73
73
  try:
74
74
  return [p.plugin_id for p in discover_installed_plugins()]
@@ -86,12 +86,9 @@ class PluginsCommand(click.MultiCommand):
86
86
 
87
87
  return click.Command(name, callback=lambda: _missing())
88
88
 
89
- @click.group(name=name)
89
+ @click.group(name=name, help=f"Gestión del plugin '{name}'")
90
90
  def plugin_group():
91
- """Empty group function that serves as a container for plugin subcommands.
92
-
93
- Subcommands (init, update) are dynamically added below.
94
- """
91
+ """Grupo de comandos del plugin específico."""
95
92
  pass
96
93
 
97
94
  @plugin_group.command("init")
@@ -128,10 +125,191 @@ class PluginsCommand(click.MultiCommand):
128
125
  output_result(ctx, f"Plugin '{name}' update failed: {exc}", None, False)
129
126
  raise click.ClickException(str(exc))
130
127
 
128
+ @plugin_group.command("demo_data")
129
+ @with_appcontext
130
+ @pass_context
131
+ def plugin_demo_data(ctx):
132
+ """Carga datos de demostración para pruebas automáticas."""
133
+ # Permitir alias: demo_data o load_demo_data
134
+ demo_fn = getattr(module, "demo_data", None)
135
+ if demo_fn is None or not callable(demo_fn):
136
+ demo_fn = getattr(module, "load_demo_data", None)
137
+ if demo_fn is None or not callable(demo_fn):
138
+ raise click.ClickException("Plugin does not provide callable 'demo_data()' or 'load_demo_data()'")
139
+
140
+ try:
141
+ demo_fn()
142
+ db.create_all()
143
+ output_result(ctx, f"Plugin '{name}' demo data loaded")
144
+ except Exception as exc:
145
+ log.exception("Plugin demo_data failed")
146
+ output_result(ctx, f"Plugin '{name}' demo data failed: {exc}", None, False)
147
+ raise click.ClickException(str(exc))
148
+
149
+ @plugin_group.command("enable")
150
+ @with_appcontext
151
+ @pass_context
152
+ def plugin_enable(ctx):
153
+ """Habilita el plugin en el registro (active=True)."""
154
+ try:
155
+ sync_plugin_registry()
156
+ record = db.session.execute(db.select(PluginRegistry).filter_by(plugin_id=name)).scalars().first()
157
+ if record is None:
158
+ raise click.ClickException("Plugin no registrado en la base de datos")
159
+ if not record.installed:
160
+ raise click.ClickException("Plugin no está instalado en el entorno")
161
+ record.active = True
162
+ db.session.commit()
163
+ output_result(ctx, f"Plugin '{name}' habilitado. Reinicie la app para cargar blueprints.")
164
+ except click.ClickException:
165
+ raise
166
+ except Exception as exc:
167
+ db.session.rollback()
168
+ output_result(ctx, f"No se pudo habilitar el plugin: {exc}", None, False)
169
+ raise click.ClickException(str(exc))
170
+
171
+ @plugin_group.command("disable")
172
+ @with_appcontext
173
+ @pass_context
174
+ def plugin_disable(ctx):
175
+ """Deshabilita el plugin en el registro (active=False)."""
176
+ try:
177
+ sync_plugin_registry()
178
+ record = db.session.execute(db.select(PluginRegistry).filter_by(plugin_id=name)).scalars().first()
179
+ if record is None:
180
+ raise click.ClickException("Plugin no registrado en la base de datos")
181
+ record.active = False
182
+ db.session.commit()
183
+ output_result(ctx, f"Plugin '{name}' deshabilitado")
184
+ except click.ClickException:
185
+ raise
186
+ except Exception as exc:
187
+ db.session.rollback()
188
+ output_result(ctx, f"No se pudo deshabilitar el plugin: {exc}", None, False)
189
+ raise click.ClickException(str(exc))
190
+
191
+ def _get_plugin_metadata(plugin_id: str) -> dict:
192
+ meta = {"plugin_id": plugin_id}
193
+ try:
194
+ # versión detectada por distribución instalada
195
+ discovered = {p.plugin_id: p for p in discover_installed_plugins()}
196
+ if plugin_id in discovered:
197
+ meta["version"] = discovered[plugin_id].version
198
+ except Exception:
199
+ pass
200
+ try:
201
+ mod = load_plugin_module(plugin_id)
202
+ info = getattr(mod, "PLUGIN_INFO", None) or getattr(mod, "INFO", None)
203
+ if isinstance(info, dict):
204
+ meta.update(
205
+ {
206
+ "description": info.get("description"),
207
+ "maintainer": info.get("maintainer"),
208
+ "contact": info.get("contact"),
209
+ "version": info.get("version", meta.get("version")),
210
+ }
211
+ )
212
+ else:
213
+ meta.setdefault("version", getattr(mod, "__version__", meta.get("version")))
214
+ meta["description"] = meta.get("description") or (
215
+ mod.__doc__.strip() if getattr(mod, "__doc__", None) else None
216
+ )
217
+ meta["maintainer"] = getattr(mod, "MAINTAINER", None)
218
+ meta["contact"] = getattr(mod, "CONTACT", None)
219
+ except Exception:
220
+ # no importa si el módulo falla, usamos lo disponible
221
+ pass
222
+ try:
223
+ rec = db.session.execute(db.select(PluginRegistry).filter_by(plugin_id=plugin_id)).scalars().first()
224
+ if rec:
225
+ meta["installed"] = rec.installed
226
+ meta["active"] = rec.active
227
+ meta["distribution_name"] = rec.distribution_name
228
+ except Exception:
229
+ pass
230
+ return meta
231
+
232
+ @plugin_group.command("status")
233
+ @with_appcontext
234
+ @pass_context
235
+ def plugin_status(ctx):
236
+ """Muestra el estado del plugin (installed/active/version)."""
237
+ try:
238
+ sync_plugin_registry()
239
+ meta = _get_plugin_metadata(name)
240
+ if ctx.json_output:
241
+ output_result(ctx, f"Estado del plugin '{name}'", meta, True)
242
+ else:
243
+ click.echo(f"Estado del plugin '{name}':")
244
+ click.echo(f" Installed: {meta.get('installed', False)}")
245
+ click.echo(f" Active: {meta.get('active', False)}")
246
+ click.echo(f" Version: {meta.get('version', 'desconocida')}\n")
247
+ except Exception as exc:
248
+ output_result(ctx, f"No se pudo obtener estado: {exc}", None, False)
249
+ raise click.ClickException(str(exc))
250
+
251
+ @plugin_group.command("version")
252
+ @with_appcontext
253
+ @pass_context
254
+ def plugin_version(ctx):
255
+ """Muestra la versión del plugin."""
256
+ meta = _get_plugin_metadata(name)
257
+ ver = meta.get("version") or "desconocida"
258
+ if ctx.json_output:
259
+ output_result(ctx, f"Versión del plugin '{name}'", {"version": ver}, True)
260
+ else:
261
+ click.echo(ver)
262
+
263
+ @plugin_group.command("info")
264
+ @with_appcontext
265
+ @pass_context
266
+ def plugin_info(ctx):
267
+ """Muestra información del plugin (descripción y enlaces)."""
268
+ meta = _get_plugin_metadata(name)
269
+ if ctx.json_output:
270
+ output_result(ctx, f"Información del plugin '{name}'", meta, True)
271
+ else:
272
+ click.echo(f"Info del plugin '{name}':")
273
+ if meta.get("description"):
274
+ click.echo(f" Description: {meta['description']}")
275
+ if meta.get("distribution_name"):
276
+ click.echo(f" Package: {meta['distribution_name']}")
277
+ if meta.get("version"):
278
+ click.echo(f" Version: {meta['version']}")
279
+ click.echo(f" Installed: {meta.get('installed', False)}")
280
+ click.echo(f" Active: {meta.get('active', False)}")
281
+
282
+ @plugin_group.command("maintainer")
283
+ @with_appcontext
284
+ @pass_context
285
+ def plugin_maintainer(ctx):
286
+ """Muestra el maintainer del plugin (según metadatos)."""
287
+ meta = _get_plugin_metadata(name)
288
+ maint = meta.get("maintainer") or "desconocido"
289
+ if ctx.json_output:
290
+ output_result(ctx, f"Maintainer del plugin '{name}'", {"maintainer": maint}, True)
291
+ else:
292
+ click.echo(maint)
293
+
294
+ # Alias por compatibilidad: 'mantainer' (mal escrito)
295
+ plugin_group.add_command(plugin_maintainer, "mantainer")
296
+
297
+ @plugin_group.command("contact")
298
+ @with_appcontext
299
+ @pass_context
300
+ def plugin_contact(ctx):
301
+ """Muestra el contacto del plugin (correo/URL si disponible)."""
302
+ meta = _get_plugin_metadata(name)
303
+ contact = meta.get("contact") or "no disponible"
304
+ if ctx.json_output:
305
+ output_result(ctx, f"Contacto del plugin '{name}'", {"contact": contact}, True)
306
+ else:
307
+ click.echo(contact)
308
+
131
309
  return plugin_group
132
310
 
133
311
 
134
- plugins = PluginsCommand(name="plugins")
312
+ plugins = PluginsCommand(name="plugins", help="Gestión de plugins instalados")
135
313
 
136
314
 
137
315
  # ============================================================================
@@ -15,4 +15,4 @@
15
15
  Data model for the payroll module.
16
16
  """
17
17
 
18
- __version__ = "0.0.3"
18
+ __version__ = "0.0.5"
@@ -1,6 +1,7 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: coati-payroll
3
- Version: 0.0.3
3
+ Version: 0.0.5
4
+ Summary: A jurisdiction-agnostic payroll calculation engine.
4
5
  Requires-Python: >=3.11
5
6
  Description-Content-Type: text/markdown
6
7
  License-File: LICENSE
@@ -1,5 +1,6 @@
1
1
  [project]
2
2
  name = "coati-payroll"
3
+ description = "A jurisdiction-agnostic payroll calculation engine."
3
4
  requires-python = ">= 3.11"
4
5
  readme = "README.md"
5
6
  dynamic = ["version", "dependencies"]
File without changes
File without changes