From 0d29b41daee86f624f1d7f1868433f2d84aa4596 Mon Sep 17 00:00:00 2001 From: Andhitia Rama Date: Thu, 22 Aug 2024 00:19:44 +0700 Subject: [PATCH] [ADD] ssi_general_audit_worksheet_preliminary_analytic_procedure --- .../README.rst | 46 ++++ .../__init__.py | 7 + .../__manifest__.py | 47 ++++ .../general_audit_ws_b32655a.xml | 26 +++ .../general_audit_ws_c8740d4.xml | 26 +++ .../general_audit_ws_d4289e4.xml | 26 +++ .../general_audit_worksheet_type_data.xml | 32 +++ .../ir_sequence/general_audit_ws_b32655a.xml | 17 ++ .../ir_sequence/general_audit_ws_c8740d4.xml | 15 ++ .../ir_sequence/general_audit_ws_d4289e4.xml | 15 ++ .../general_audit_ws_b32655a.xml | 180 +++++++++++++++ .../general_audit_ws_c8740d4.xml | 180 +++++++++++++++ .../general_audit_ws_d4289e4.xml | 180 +++++++++++++++ .../general_audit_ws_b32655a.xml | 26 +++ .../general_audit_ws_c8740d4.xml | 26 +++ .../general_audit_ws_d4289e4.xml | 26 +++ .../models/__init__.py | 18 ++ .../analytic_procedure_conclusion_category.py | 24 ++ .../models/general_audit_ws_b32655a.py | 48 ++++ ...ws_b32655a_vertical_horizontal_analysis.py | 212 ++++++++++++++++++ .../models/general_audit_ws_c8740d4.py | 29 +++ ...s_c8740d4_analytic_procedure_conclusion.py | 38 ++++ .../models/general_audit_ws_d4289e4.py | 135 +++++++++++ .../models/general_audit_ws_d4289e4_ratio.py | 91 ++++++++ .../models/ws_ra140.py | 26 +++ .../models/ws_ra1401.py | 43 ++++ .../models/ws_ra1402.py | 132 +++++++++++ .../security/ir.model.access.csv | 3 + .../general_audit_ws_b32655a.xml | 57 +++++ .../general_audit_ws_c8740d4.xml | 57 +++++ .../general_audit_ws_d4289e4.xml | 41 ++++ .../security/ir_module_category_data.xml | 52 +++++ .../ir_rule/general_audit_ws_b32655a.xml | 62 +++++ .../ir_rule/general_audit_ws_c8740d4.xml | 58 +++++ .../ir_rule/general_audit_ws_d4289e4.xml | 62 +++++ .../res_group/general_audit_ws_b32655a.xml | 61 +++++ .../res_group/general_audit_ws_c8740d4.xml | 61 +++++ .../res_group/general_audit_ws_d4289e4.xml | 61 +++++ .../security/res_group_data.xml | 18 ++ .../static/description/icon.png | Bin 0 -> 48333 bytes ...ic_procedure_conclusion_category_views.xml | 77 +++++++ .../views/general_audit_ws_b32655a_views.xml | 142 ++++++++++++ .../views/general_audit_ws_c8740d4_views.xml | 81 +++++++ .../views/general_audit_ws_d4289e4_views.xml | 95 ++++++++ 44 files changed, 2659 insertions(+) create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/README.rst create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/__init__.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/__manifest__.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_b32655a.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_c8740d4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_d4289e4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/general_audit_worksheet_type_data.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_b32655a.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_c8740d4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_d4289e4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_b32655a.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_c8740d4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_d4289e4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_b32655a.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_c8740d4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_d4289e4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/__init__.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/analytic_procedure_conclusion_category.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a_vertical_horizontal_analysis.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4_analytic_procedure_conclusion.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4_ratio.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra140.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1401.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1402.py create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir.model.access.csv create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_b32655a.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_c8740d4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_d4289e4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_module_category_data.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_b32655a.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_c8740d4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_d4289e4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_b32655a.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_c8740d4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_d4289e4.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group_data.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/static/description/icon.png create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/views/analytic_procedure_conclusion_category_views.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_b32655a_views.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_c8740d4_views.xml create mode 100644 ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_d4289e4_views.xml diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/README.rst b/ssi_general_audit_worksheet_preliminary_analytic_procedure/README.rst new file mode 100644 index 0000000..efa0273 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/README.rst @@ -0,0 +1,46 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +======================================================== +General Audit Worksheet - Preliminary Analytic Procedure +======================================================== + + +Installation +============ + +To install this module, you need to: + +1. Clone the branch 14.0 of the repository https://github.com/open-synergy/ssi-general-audit +2. Add the path to this repository in your configuration (addons-path) +3. Update the module list (Must be on developer mode) +4. Go to menu *Apps -> Apps -> Main Apps* +5. Search For *General Audit Worksheet - Preliminary Analytic Procedure* +6. Install the module + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smash it by providing detailed and welcomed feedback. + + +Credits +======= + +Contributors +------------ + +* Andhitia Rama + +Maintainer +---------- + +.. image:: https://simetri-sinergi.id/logo.png + :alt: PT. Simetri Sinergi Indonesia + :target: https://simetri-sinergi.id + +This module is maintained by the PT. Simetri Sinergi Indonesia. diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/__init__.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/__init__.py new file mode 100644 index 0000000..8d7ff5a --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/__init__.py @@ -0,0 +1,7 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from . import ( + models, +) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/__manifest__.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/__manifest__.py new file mode 100644 index 0000000..5023833 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/__manifest__.py @@ -0,0 +1,47 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). +# pylint: disable=locally-disabled, manifest-required-author +{ + "name": "General Audit Worksheet - Preliminary Analytic Procedure", + "version": "14.0.1.0.0", + "website": "https://simetri-sinergi.id", + "author": "OpenSynergy Indonesia, PT. Simetri Sinergi Indonesia", + "license": "AGPL-3", + "installable": True, + "depends": [ + "ssi_general_audit", + ], + "data": [ + "security/ir_module_category_data.xml", + "security/res_group/general_audit_ws_c8740d4.xml", + "security/res_group/general_audit_ws_b32655a.xml", + "security/res_group/general_audit_ws_d4289e4.xml", + "security/res_group_data.xml", + "security/ir_model_access/general_audit_ws_c8740d4.xml", + "security/ir_model_access/general_audit_ws_b32655a.xml", + "security/ir_model_access/general_audit_ws_d4289e4.xml", + "security/ir.model.access.csv", + "security/ir_rule/general_audit_ws_c8740d4.xml", + "security/ir_rule/general_audit_ws_b32655a.xml", + "security/ir_rule/general_audit_ws_d4289e4.xml", + "data/ir_sequence/general_audit_ws_c8740d4.xml", + "data/ir_sequence/general_audit_ws_b32655a.xml", + "data/ir_sequence/general_audit_ws_d4289e4.xml", + "data/sequence_template/general_audit_ws_c8740d4.xml", + "data/sequence_template/general_audit_ws_b32655a.xml", + "data/sequence_template/general_audit_ws_d4289e4.xml", + "data/policy_template/general_audit_ws_c8740d4.xml", + "data/policy_template/general_audit_ws_b32655a.xml", + "data/policy_template/general_audit_ws_d4289e4.xml", + "data/approval_template/general_audit_ws_c8740d4.xml", + "data/approval_template/general_audit_ws_b32655a.xml", + "data/approval_template/general_audit_ws_d4289e4.xml", + "data/general_audit_worksheet_type_data.xml", + "views/analytic_procedure_conclusion_category_views.xml", + "views/general_audit_ws_b32655a_views.xml", + "views/general_audit_ws_c8740d4_views.xml", + "views/general_audit_ws_d4289e4_views.xml", + ], + "demo": [], +} diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_b32655a.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_b32655a.xml new file mode 100644 index 0000000..c021d0b --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_b32655a.xml @@ -0,0 +1,26 @@ + + + + + Standard + + + use_python + result = True + + + + + + use_group + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_c8740d4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_c8740d4.xml new file mode 100644 index 0000000..5136f9b --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_c8740d4.xml @@ -0,0 +1,26 @@ + + + + + Standard + + + use_python + result = True + + + + + + use_group + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_d4289e4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_d4289e4.xml new file mode 100644 index 0000000..b1783cd --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/approval_template/general_audit_ws_d4289e4.xml @@ -0,0 +1,26 @@ + + + + + Standard + + + use_python + result = True + + + + + + use_group + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/general_audit_worksheet_type_data.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/general_audit_worksheet_type_data.xml new file mode 100644 index 0000000..0674770 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/general_audit_worksheet_type_data.xml @@ -0,0 +1,32 @@ + + + + + + C8740D4 + Preliminary Analytic Procedure + + + + + + B32655A + Preliminary Analytic Procedure - Vertical and Horizontal Analysis + + + + + + + D4289E4 + Preliminary Analytic Procedure - Ratio Analysis + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_b32655a.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_b32655a.xml new file mode 100644 index 0000000..dd5e8db --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_b32655a.xml @@ -0,0 +1,17 @@ + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis (b32655a) + general_audit_ws_b32655a + 6 + WS-B32655A/%(range_year)s/ + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_c8740d4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_c8740d4.xml new file mode 100644 index 0000000..b12c098 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_c8740d4.xml @@ -0,0 +1,15 @@ + + + + + Preliminary Analytic Procedure (c8740d4) + general_audit_ws_c8740d4 + 6 + WS-C8740D4/%(range_year)s/ + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_d4289e4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_d4289e4.xml new file mode 100644 index 0000000..1d4006b --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/ir_sequence/general_audit_ws_d4289e4.xml @@ -0,0 +1,15 @@ + + + + + Preliminary Analytic Procedure - Ratio Analysis (d4289e4) + general_audit_ws_d4289e4 + 6 + WS-C8740D4/%(range_year)s/ + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_b32655a.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_b32655a.xml new file mode 100644 index 0000000..d785002 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_b32655a.xml @@ -0,0 +1,180 @@ + + + + + Standard + + + + result=True + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + + result = False +if env.user.id in document.active_approver_user_ids.ids: + result = True + + + + + + + + + + + result = False +if env.user.id in document.active_approver_user_ids.ids: + result = True + + + + + + + + + + use_group + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_c8740d4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_c8740d4.xml new file mode 100644 index 0000000..3859ed0 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_c8740d4.xml @@ -0,0 +1,180 @@ + + + + + Standard + + + + result=True + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + + result = False +if env.user.id in document.active_approver_user_ids.ids: + result = True + + + + + + + + + + + result = False +if env.user.id in document.active_approver_user_ids.ids: + result = True + + + + + + + + + + use_group + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_d4289e4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_d4289e4.xml new file mode 100644 index 0000000..f48d4f4 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/policy_template/general_audit_ws_d4289e4.xml @@ -0,0 +1,180 @@ + + + + + Standard + + + + result=True + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + use_group + + + + + + + + + + + + + result = False +if env.user.id in document.active_approver_user_ids.ids: + result = True + + + + + + + + + + + result = False +if env.user.id in document.active_approver_user_ids.ids: + result = True + + + + + + + + + + use_group + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_b32655a.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_b32655a.xml new file mode 100644 index 0000000..65b9dce --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_b32655a.xml @@ -0,0 +1,26 @@ + + + + + Standard + + + / + + + use_python + result=True + + use_sequence + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_c8740d4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_c8740d4.xml new file mode 100644 index 0000000..c9c489c --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_c8740d4.xml @@ -0,0 +1,26 @@ + + + + + Standard + + + / + + + use_python + result=True + + use_sequence + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_d4289e4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_d4289e4.xml new file mode 100644 index 0000000..aa0675f --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/data/sequence_template/general_audit_ws_d4289e4.xml @@ -0,0 +1,26 @@ + + + + + Standard + + + / + + + use_python + result=True + + use_sequence + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/__init__.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/__init__.py new file mode 100644 index 0000000..3e1479b --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/__init__.py @@ -0,0 +1,18 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from . import ( + analytic_procedure_conclusion_category, + general_audit_ws_b32655a, + general_audit_ws_b32655a_vertical_horizontal_analysis, + general_audit_ws_c8740d4, + general_audit_ws_c8740d4_analytic_procedure_conclusion, + general_audit_ws_d4289e4, + general_audit_ws_d4289e4_ratio, + # ws_ra140, + # ws_ra1401, + # ws_ra1401_vertical_horizontal_analysis, + # ws_ra1402, + # ws_ra1402_ratio, +) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/analytic_procedure_conclusion_category.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/analytic_procedure_conclusion_category.py new file mode 100644 index 0000000..d21be61 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/analytic_procedure_conclusion_category.py @@ -0,0 +1,24 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import fields, models + + +class AnalyticProcedureConsulsionCategory(models.Model): + _name = "analytic_procedure_conclusion_category" + _inherit = [ + "mixin.master_data", + ] + _description = "Analytic Procedure Consulsion Category" + _order = "sequence, id" + + sequence = fields.Integer( + string="Sequence", + required=True, + default=5, + ) + parent_id = fields.Many2one( + string="Parent", + comodel_name="analytic_procedure_conclusion_category", + ) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a.py new file mode 100644 index 0000000..110c711 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a.py @@ -0,0 +1,48 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import api, fields, models + + +class GeneralAuditWSb32655a(models.Model): + _name = "general_audit_ws_b32655a" + _description = ( + "Preliminary Analytic Procedure - Vertical and Horizontal Analysis (b32655a)" + ) + _inherit = [ + "general_audit_worksheet_mixin", + ] + _type_xml_id = ( + "ssi_general_audit_worksheet_preliminary_analytic_procedure." + "worksheet_type_b32655a" + ) + + analysis_ids = fields.One2many( + string="Analysis", + comodel_name="general_audit_ws_b32655a.vertical_horizontal_analysis", + inverse_name="worksheet_id", + readonly=True, + states={ + "open": [ + ("readonly", False), + ], + }, + ) + + @api.onchange("general_audit_id") + def onchange_analysis_ids(self): + self.update({"analysis_ids": [(5, 0, 0)]}) + if self.general_audit_id: + result = [] + for detail in self.general_audit_id.standard_detail_ids: + result.append( + ( + 0, + 0, + { + "standard_detail_id": detail.id, + }, + ) + ) + self.update({"analysis_ids": result}) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a_vertical_horizontal_analysis.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a_vertical_horizontal_analysis.py new file mode 100644 index 0000000..041f603 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_b32655a_vertical_horizontal_analysis.py @@ -0,0 +1,212 @@ +# Copyright 2021 PT Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class WS1401VerticalHorizontalAnalysis(models.Model): + _name = "general_audit_ws_b32655a.vertical_horizontal_analysis" + _description = ( + "Preliminary Analytic Procedure - " + "Vertical and Horizontal Analysis (b32655a) - Detail" + ) + + worksheet_id = fields.Many2one( + string="# WS-B32655A", + comodel_name="general_audit_ws_b32655a", + required=True, + ondelete="cascade", + ) + standard_detail_id = fields.Many2one( + string="Standard Detail", + comodel_name="general_audit.standard_detail", + required=True, + ) + type_id = fields.Many2one( + string="Account Type", + comodel_name="client_account_type", + related="standard_detail_id.type_id", + store=True, + ) + currency_id = fields.Many2one( + string="Currency", + comodel_name="res.currency", + related="standard_detail_id.currency_id", + store=True, + ) + sequence = fields.Integer( + string="Sequence", + related="standard_detail_id.sequence", + store=True, + ) + + computation_item_id = fields.Many2one( + string="Base Figure Computation Item", + comodel_name="trial_balance_computation_item", + related="type_id.analytic_procedure_computation_item_id", + store=True, + ) + + @api.depends( + "computation_item_id", + "worksheet_id.general_audit_id", + ) + def _compute_computation_item(self): + Computation = self.env["general_audit.computation"] + for record in self: + result = False + ws = record.worksheet_id + if ws.general_audit_id and record.computation_item_id: + criteria = [ + ("general_audit_id", "=", ws.general_audit_id.id), + ("computation_item_id", "=", record.computation_item_id.id), + ] + computations = Computation.search(criteria) + if len(computations) > 0: + result = computations[0] + record.general_audit_computation_item_id = result + + general_audit_computation_item_id = fields.Many2one( + string="General Audit Computation", + comodel_name="general_audit.computation", + compute="_compute_computation_item", + store=True, + ) + interim_base_figure = fields.Float( + string="Interim Base Figure", + related="general_audit_computation_item_id.interim_amount", + store=True, + ) + extrapolation_base_figure = fields.Float( + string="Extrapolation Base Figure", + related="general_audit_computation_item_id.extrapolation_amount", + store=True, + ) + previous_base_figure = fields.Float( + string="Previous Base Figure", + related="general_audit_computation_item_id.previous_amount", + store=True, + ) + interim_balance = fields.Monetary( + string="Interim Balance", + related="standard_detail_id.interim_balance", + store=True, + ) + extrapolation_balance = fields.Monetary( + string="Extrapolation Balance", + related="standard_detail_id.adjusted_extrapolation_balance", + store=True, + ) + previous_balance = fields.Monetary( + string="Previous Balance", + related="standard_detail_id.previous_balance", + store=True, + ) + + @api.depends( + "interim_base_figure", + "extrapolation_base_figure", + "previous_base_figure", + "interim_balance", + "extrapolation_balance", + "previous_balance", + ) + def _compute_vertical(self): + for record in self: + interim = extrapolation = previous = 0.0 + + if record.interim_base_figure != 0.0: + interim = (record.interim_balance / record.interim_base_figure) * 100.0 + + if record.extrapolation_base_figure != 0.0: + extrapolation = ( + record.extrapolation_balance / record.extrapolation_base_figure + ) * 100.0 + + if record.previous_base_figure != 0.0: + previous = ( + record.previous_balance / record.previous_base_figure + ) * 100.0 + + record.interim_vertical_analysis = interim + record.extrapolation_vertical_analysis = extrapolation + record.previous_vertical_analysis = previous + + interim_vertical_analysis = fields.Float( + string="Interim Vertical Analysis", + compute="_compute_vertical", + store=True, + ) + extrapolation_vertical_analysis = fields.Float( + string="Extrapolation Vertical Analysis", + compute="_compute_vertical", + store=True, + ) + previous_vertical_analysis = fields.Float( + string="Previous Vertical Analysis", + compute="_compute_vertical", + store=True, + ) + + @api.depends( + "interim_balance", + "extrapolation_balance", + "previous_balance", + ) + def _compute_horizontal(self): + for record in self: + extrapolation_change = interim_change = 0.0 + extrapolation_change_percent = interim_change_percent = 0.0 + if record.standard_detail_id: + extrapolation_change = ( + record.extrapolation_balance - record.previous_balance + ) + interim_change = record.interim_balance - record.previous_balance + + if record.previous_balance != 0.0: + extrapolation_change_percent = ( + extrapolation_change / record.previous_balance + ) * 100.0 + interim_change_percent = ( + interim_change / record.previous_balance + ) * 100.0 + + record.extrapolation_change = extrapolation_change + record.interim_change = interim_change + record.extrapolation_change_percent = extrapolation_change_percent + record.interim_change_percent = interim_change_percent + + extrapolation_change = fields.Monetary( + string="Extrapolation Change", + compute="_compute_horizontal", + store=True, + ) + extrapolation_change_percent = fields.Float( + string="Extrapolation Change (%)", + compute="_compute_horizontal", + store=True, + ) + interim_change = fields.Monetary( + string="Interim Change", + compute="_compute_horizontal", + store=True, + ) + interim_change_percent = fields.Float( + string="Interim Change (%)", + compute="_compute_horizontal", + store=True, + ) + industry_average = fields.Float( + string="Industry Average", + ) + vertical_need_attention = fields.Boolean( + string="Vertical Need Attention", + default=False, + ) + horizontal_need_attention = fields.Boolean( + string="Horizontal Need Attention", + default=False, + ) + explanation = fields.Char( + string="Explanation", + ) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4.py new file mode 100644 index 0000000..1140d4f --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4.py @@ -0,0 +1,29 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import fields, models + + +class GeneralAuditWSc8740d4(models.Model): + _name = "general_audit_ws_c8740d4" + _description = "Preliminary Analytic Procedure (c8740d4)" + _inherit = [ + "general_audit_worksheet_mixin", + ] + _type_xml_id = ( + "ssi_general_audit_worksheet_preliminary_analytic_procedure." + "worksheet_type_c8740d4" + ) + + conclusion_ids = fields.One2many( + string="Conclusion", + comodel_name="general_audit_ws_c8740d4.analytic_procedure_conclusion", + inverse_name="worksheet_id", + readonly=True, + states={ + "open": [ + ("readonly", False), + ], + }, + ) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4_analytic_procedure_conclusion.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4_analytic_procedure_conclusion.py new file mode 100644 index 0000000..4f0dda9 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_c8740d4_analytic_procedure_conclusion.py @@ -0,0 +1,38 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import fields, models + + +class GeneralAuditWSb32655aAnalyticProcedureConclusion(models.Model): + _name = "general_audit_ws_c8740d4.analytic_procedure_conclusion" + _description = "Analytic Procedure Consulsion Category" + _order = "parent_sequence, sequence, id" + + worksheet_id = fields.Many2one( + string="# Worksheet", + comodel_name="ws_ra140", + required=True, + ondelete="cascade", + ) + category_id = fields.Many2one( + string="Category", + comodel_name="analytic_procedure_conclusion_category", + required=True, + ondelete="restrict", + ) + sequence = fields.Integer( + string="Sequence", + related="category_id.sequence", + store=True, + ) + parent_sequence = fields.Integer( + string="Parent Sequence", + related="category_id.parent_id.sequence", + store=True, + ) + name = fields.Text( + string="Conclusion", + required=True, + ) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4.py new file mode 100644 index 0000000..60c80b4 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4.py @@ -0,0 +1,135 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import api, fields, models + +from odoo.addons.ssi_decorator import ssi_decorator + + +class GeneralAuditWSd4289e4(models.Model): + _name = "general_audit_ws_d4289e4" + _description = "Preliminary Analytic Procedure - Ratio Analysis (d4289e4)" + _inherit = [ + "general_audit_worksheet_mixin", + ] + _type_xml_id = ( + "ssi_general_audit_worksheet_preliminary_analytic_procedure." + "worksheet_type_d4289e4" + ) + + ratio_ids = fields.One2many( + string="Ratio Ratio", + comodel_name="general_audit_ws_d4289e4.ratio", + inverse_name="worksheet_id", + ) + liquidity_ratio_ids = fields.One2many( + string="Liquidity Ratio", + comodel_name="general_audit_ws_d4289e4.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "liquidity"), + ], + ) + activity_ratio_ids = fields.One2many( + string="Activity Ratio", + comodel_name="general_audit_ws_d4289e4.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "activity"), + ], + ) + solvency_ratio_ids = fields.One2many( + string="Solvency Ratio", + comodel_name="general_audit_ws_d4289e4.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "solvency"), + ], + ) + profitability_ratio_ids = fields.One2many( + string="Profitability Ratio", + comodel_name="general_audit_ws_d4289e4.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "profitability"), + ], + ) + + @api.onchange("general_audit_id") + def onchange_ratio_ids(self): + self.update({"ratio_ids": [(5, 0, 0)]}) + FinancialRatio = self.env["client_financial_ratio"] + if self.general_audit_id: + result = [] + for ratio in FinancialRatio.search([]): + result.append( + ( + 0, + 0, + { + "financial_ratio_id": ratio.id, + }, + ) + ) + self.update({"ratio_ids": result}) + + def action_compute_ratio(self): + for record in self: + record._recompute_computation() + + @ssi_decorator.post_confirm_action() + def _recompute_computation(self): + self.ensure_one() + additional_dict = self._get_additional_dict() + for computation in self.ratio_ids: + additionaldict = computation._recompute(additional_dict) + additional_dict = additionaldict + + self.general_audit_id._recompute_extrapolation_computation() + + def _get_additional_dict(self): + self.ensure_one() + result = {"account_type": {}, "account_group": {}, "computation": {}} + # Load general audit's standard detail to dict + for data in self.general_audit_id.standard_detail_ids: + result["account_type"].update( + { + data.type_id.code: { + "extrapolation": data.extrapolation_balance, + "interim": data.interim_balance, + "previous": data.previous_balance, + "extrapolation_avg": data.extrapolation_avg, + "interim_avg": data.interim_avg, + }, + } + ) + + # Load general audit's group summary to dict + for data in self.general_audit_id.group_detail_ids: + result["account_group"].update( + { + data.group_id.code: { + "extrapolation": data.extrapolation_balance, + "interim": data.interim_balance, + "previous": data.previous_balance, + "extrapolation_avg": data.extrapolation_avg, + "interim_avg": data.interim_avg, + }, + } + ) + + # Load general audit's computation to dict + for data in self.general_audit_id.computation_ids: + result["computation"].update( + { + data.computation_item_id.code: { + "extrapolation": data.extrapolation_amount, + "interim": data.interim_amount, + "previous": data.previous_amount, + "extrapolation_avg": data.extrapolation_avg_amount, + "interim_avg": data.interim_avg_amount, + }, + } + ) + return result diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4_ratio.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4_ratio.py new file mode 100644 index 0000000..d02b982 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/general_audit_ws_d4289e4_ratio.py @@ -0,0 +1,91 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import fields, models +from odoo.tools.safe_eval import safe_eval as eval # pylint: disable=redefined-builtin + + +class GeneralAuditWSd4289e4Ratio(models.Model): + _name = "general_audit_ws_d4289e4.ratio" + _description = "Preliminary Analytic Procedure - Ratio Analysis (d4289e4) - Ratio" + + worksheet_id = fields.Many2one( + string="# Worksheet", + comodel_name="general_audit_ws_d4289e4", + required=True, + ondelete="cascade", + ) + financial_ratio_id = fields.Many2one( + string="Ratio", + comodel_name="client_financial_ratio", + required=True, + ) + category = fields.Selection( + string="Category", + related="financial_ratio_id.category", + ) + extrapolation_amount = fields.Float( + string="Extrapolation Amount", + related=False, + store=True, + ) + interim_amount = fields.Float( + string="Interim Amount", + related=False, + store=True, + ) + previous_amount = fields.Float( + string="Previous Amount", + related=False, + store=True, + ) + industry_average = fields.Float( + string="Industry Average", + ) + analysis = fields.Char( + string="Analysis", + ) + + def _get_localdict(self): + self.ensure_one() + return { + "env": self.env, + "document": self, + } + + def _recompute(self, additional_dict): + self.ensure_one() + python_code = self.financial_ratio_id.python_code + + localdict = self._get_localdict() + localdict.update(additional_dict) + try: + eval( + python_code, + localdict, + mode="exec", + nocopy=True, + ) + extrapolation_amount = localdict["result_extrapolation"] + interim_amount = localdict["result_interim"] + previous_amount = localdict["result_previous"] + additional_dict.update( + { + self.financial_ratio_id.code: { + "extrapolation": extrapolation_amount, + "interim": interim_amount, + "previous": previous_amount, + } + } + ) + except Exception: + extrapolation_amount = interim_amount = previous_amount = 0.0 + self.write( + { + "extrapolation_amount": extrapolation_amount, + "interim_amount": interim_amount, + "previous_amount": previous_amount, + } + ) + return additional_dict diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra140.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra140.py new file mode 100644 index 0000000..9b2e293 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra140.py @@ -0,0 +1,26 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import fields, models + + +class WSAuditRA140(models.Model): + _name = "ws_ra140" + _description = "General Audit WS RA.140" + _inherit = [ + "accountant.general_audit_worksheet_mixin", + ] + _type_xml_id = "ssi_accountant_general_audit_ws_ra140.worksheet_type_ra140" + + conclusion_ids = fields.One2many( + string="Conclusion", + comodel_name="ws_ra140.analytic_procedure_conclusion", + inverse_name="worksheet_id", + readonly=True, + states={ + "open": [ + ("readonly", False), + ], + }, + ) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1401.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1401.py new file mode 100644 index 0000000..a345bda --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1401.py @@ -0,0 +1,43 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import api, fields, models + + +class WSAuditRA1401(models.Model): + _name = "ws_ra1401" + _description = "General Audit WS RA.140.1" + _inherit = [ + "accountant.general_audit_worksheet_mixin", + ] + _type_xml_id = "ssi_accountant_general_audit_ws_ra140.worksheet_type_ra1401" + + analysis_ids = fields.One2many( + string="Analysis", + comodel_name="ws_ra1401.vertical_horizontal_analysis", + inverse_name="worksheet_id", + readonly=True, + states={ + "open": [ + ("readonly", False), + ], + }, + ) + + @api.onchange("general_audit_id") + def onchange_analysis_ids(self): + self.update({"analysis_ids": [(5, 0, 0)]}) + if self.general_audit_id: + result = [] + for detail in self.general_audit_id.standard_detail_ids: + result.append( + ( + 0, + 0, + { + "standard_detail_id": detail.id, + }, + ) + ) + self.update({"analysis_ids": result}) diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1402.py b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1402.py new file mode 100644 index 0000000..5740c84 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/models/ws_ra1402.py @@ -0,0 +1,132 @@ +# Copyright 2022 OpenSynergy Indonesia +# Copyright 2022 PT. Simetri Sinergi Indonesia +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl-3.0-standalone.html). + +from odoo import api, fields, models + +from odoo.addons.ssi_decorator import ssi_decorator + + +class WSAuditRA1402(models.Model): + _name = "ws_ra1402" + _description = "General Audit WS RA.140.2" + _inherit = [ + "accountant.general_audit_worksheet_mixin", + ] + _type_xml_id = "ssi_accountant_general_audit_ws_ra140.worksheet_type_ra1402" + + ratio_ids = fields.One2many( + string="Ratio Ratio", + comodel_name="ws_ra1402.ratio", + inverse_name="worksheet_id", + ) + liquidity_ratio_ids = fields.One2many( + string="Liquidity Ratio", + comodel_name="ws_ra1402.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "liquidity"), + ], + ) + activity_ratio_ids = fields.One2many( + string="Activity Ratio", + comodel_name="ws_ra1402.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "activity"), + ], + ) + solvency_ratio_ids = fields.One2many( + string="Solvency Ratio", + comodel_name="ws_ra1402.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "solvency"), + ], + ) + profitability_ratio_ids = fields.One2many( + string="Profitability Ratio", + comodel_name="ws_ra1402.ratio", + inverse_name="worksheet_id", + domain=[ + ("financial_ratio_id.category", "=", "profitability"), + ], + ) + + @api.onchange("general_audit_id") + def onchange_ratio_ids(self): + self.update({"ratio_ids": [(5, 0, 0)]}) + FinancialRatio = self.env["accountant.financial_ratio"] + if self.general_audit_id: + result = [] + for ratio in FinancialRatio.search([]): + result.append( + ( + 0, + 0, + { + "financial_ratio_id": ratio.id, + }, + ) + ) + self.update({"ratio_ids": result}) + + def action_compute_ratio(self): + for record in self: + record._recompute_computation() + + @ssi_decorator.post_confirm_action() + def _recompute_computation(self): + self.ensure_one() + additional_dict = self._get_additional_dict() + for computation in self.ratio_ids: + additionaldict = computation._recompute(additional_dict) + additional_dict = additionaldict + + self.general_audit_id._recompute_extrapolation_computation() + + def _get_additional_dict(self): + self.ensure_one() + result = {"account_type": {}, "account_group": {}, "computation": {}} + # Load general audit's standard detail to dict + for data in self.general_audit_id.standard_detail_ids: + result["account_type"].update( + { + data.type_id.code: { + "extrapolation": data.extrapolation_balance, + "interim": data.interim_balance, + "previous": data.previous_balance, + "extrapolation_avg": data.extrapolation_avg, + "interim_avg": data.interim_avg, + }, + } + ) + + # Load general audit's group summary to dict + for data in self.general_audit_id.group_detail_ids: + result["account_group"].update( + { + data.group_id.code: { + "extrapolation": data.extrapolation_balance, + "interim": data.interim_balance, + "previous": data.previous_balance, + "extrapolation_avg": data.extrapolation_avg, + "interim_avg": data.interim_avg, + }, + } + ) + + # Load general audit's computation to dict + for data in self.general_audit_id.computation_ids: + result["computation"].update( + { + data.computation_item_id.code: { + "extrapolation": data.extrapolation_amount, + "interim": data.interim_amount, + "previous": data.previous_amount, + "extrapolation_avg": data.extrapolation_avg_amount, + "interim_avg": data.interim_avg_amount, + }, + } + ) + return result diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir.model.access.csv b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir.model.access.csv new file mode 100644 index 0000000..96d209f --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +analytic_procedure_conclusion_category_employee,analytic_procedure_conclusion_category - user,model_analytic_procedure_conclusion_category,analytic_procedure_conclusion_category_group,1,1,1,1 +analytic_procedure_conclusion_category_all,analytic_procedure_conclusion_category - all,model_analytic_procedure_conclusion_category,,1,0,0,0 diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_b32655a.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_b32655a.xml new file mode 100644 index 0000000..d030115 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_b32655a.xml @@ -0,0 +1,57 @@ + + + + + general_audit_ws_b32655a - all + + + + + + + + general_audit_ws_b32655a - user + + + + + + + + + + general_audit_ws_b32655a.vertical_horizontal_analysis - all + + + + + + + + general_audit_ws_b32655a.vertical_horizontal_analysis - user + + + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_c8740d4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_c8740d4.xml new file mode 100644 index 0000000..dad3864 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_c8740d4.xml @@ -0,0 +1,57 @@ + + + + + general_audit_ws_c8740d4 - all + + + + + + + + general_audit_ws_c8740d4 - user + + + + + + + + + + general_audit_ws_c8740d4.analytic_procedure_conclusion - all + + + + + + + + general_audit_ws_c8740d4.analytic_procedure_conclusion - user + + + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_d4289e4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_d4289e4.xml new file mode 100644 index 0000000..25feed0 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_model_access/general_audit_ws_d4289e4.xml @@ -0,0 +1,41 @@ + + + + + general_audit_ws_d4289e4 - all + + + + + + + + general_audit_ws_d4289e4 - user + + + + + + + + + + general_audit_ws_d4289e4.ratio - all + + + + + + + + general_audit_ws_d4289e4.ratio - user + + + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_module_category_data.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_module_category_data.xml new file mode 100644 index 0000000..fd5d988 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_module_category_data.xml @@ -0,0 +1,52 @@ + + + + + + Preliminary Analytic Procedure + + + + + Preliminary Analytic Procedure + + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis + + + + + + Preliminary Analytic Procedure - Ratio Analysis + + + + + Preliminary Analytic Procedure - Ratio Analysis + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_b32655a.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_b32655a.xml new file mode 100644 index 0000000..c040f0f --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_b32655a.xml @@ -0,0 +1,62 @@ + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis (b32655a) - Internal Users + + + [ + ('user_id','=',user.id), + ] + + + + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis (b32655a) - Responsible to company data + + + [('company_id','=',user.company_id.id)] + + + + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis (b32655a) - Responsible to company and all child companies data + + + [('company_id','in',user.company_ids.ids)] + + + + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis (b32655a) - All + + + [(1,'=',1)] + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_c8740d4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_c8740d4.xml new file mode 100644 index 0000000..52eca09 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_c8740d4.xml @@ -0,0 +1,58 @@ + + + + + Preliminary Analytic Procedure (c8740d4) - Internal Users + + + [ + ('user_id','=',user.id), + ] + + + + + + + + Preliminary Analytic Procedure (c8740d4) - Responsible to company data + + + [('company_id','=',user.company_id.id)] + + + + + + + + Preliminary Analytic Procedure (c8740d4) - Responsible to company and all child companies data + + + [('company_id','in',user.company_ids.ids)] + + + + + + + + Preliminary Analytic Procedure (c8740d4) - All + + + [(1,'=',1)] + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_d4289e4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_d4289e4.xml new file mode 100644 index 0000000..3821338 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/ir_rule/general_audit_ws_d4289e4.xml @@ -0,0 +1,62 @@ + + + + + Preliminary Analytic Procedure - Ratio Analysis (d4289e4) - Internal Users + + + [ + ('user_id','=',user.id), + ] + + + + + + + + Preliminary Analytic Procedure - Ratio Analysis (d4289e4) - Responsible to company data + + + [('company_id','=',user.company_id.id)] + + + + + + + + Preliminary Analytic Procedure - Ratio Analysis (d4289e4) - Responsible to company and all child companies data + + + [('company_id','in',user.company_ids.ids)] + + + + + + + + Preliminary Analytic Procedure - Ratio Analysis (d4289e4) - All + + + [(1,'=',1)] + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_b32655a.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_b32655a.xml new file mode 100644 index 0000000..b2f0144 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_b32655a.xml @@ -0,0 +1,61 @@ + + + + + + Viewer + + + + + User + + + + + + Validator + + + + + + + + Company + + + + + Company and All Child Companies + + + + + + All + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_c8740d4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_c8740d4.xml new file mode 100644 index 0000000..3e88bab --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_c8740d4.xml @@ -0,0 +1,61 @@ + + + + + + Viewer + + + + + User + + + + + + Validator + + + + + + + + Company + + + + + Company and All Child Companies + + + + + + All + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_d4289e4.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_d4289e4.xml new file mode 100644 index 0000000..12e6e1e --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group/general_audit_ws_d4289e4.xml @@ -0,0 +1,61 @@ + + + + + + Viewer + + + + + User + + + + + + Validator + + + + + + + + Company + + + + + Company and All Child Companies + + + + + + All + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group_data.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group_data.xml new file mode 100644 index 0000000..f8595bc --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/security/res_group_data.xml @@ -0,0 +1,18 @@ + + + + + Analytic Procedure Conclusion category + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/static/description/icon.png b/ssi_general_audit_worksheet_preliminary_analytic_procedure/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4c8e1127b454f53e19e77fa587a40f5b286c5ac0 GIT binary patch literal 48333 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�jvlX5ln`12R;32fB9lFAc*I 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 + + + + + analytic_procedure_conclusion_category - search + analytic_procedure_conclusion_category + + primary + + + + + + + analytic_procedure_conclusion_category - tree + analytic_procedure_conclusion_category + + primary + + + + + + + + + + + + + + analytic_procedure_conclusion_category - form + analytic_procedure_conclusion_category + + primary + + + + + + + + + + + + Analytic Procedure Conclusion Category + ir.actions.act_window + analytic_procedure_conclusion_category + tree,form + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_b32655a_views.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_b32655a_views.xml new file mode 100644 index 0000000..12839d1 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_b32655a_views.xml @@ -0,0 +1,142 @@ + + + + + + general_audit_ws_b32655a form + general_audit_ws_b32655a + + primary + + + + + + + general_audit_ws_b32655a tree + general_audit_ws_b32655a + primary + + + + + + + + + general_audit_ws_b32655a form + general_audit_ws_b32655a + primary + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Preliminary Analytic Procedure - Vertical and Horizontal Analysis + ir.actions.act_window + general_audit_ws_b32655a + tree,form + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_c8740d4_views.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_c8740d4_views.xml new file mode 100644 index 0000000..8fdce58 --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_c8740d4_views.xml @@ -0,0 +1,81 @@ + + + + + + general_audit_ws_c8740d4 form + general_audit_ws_c8740d4 + + primary + + + + + + + + general_audit_ws_c8740d4 tree + general_audit_ws_c8740d4 + primary + + + + + + + + + general_audit_ws_c8740d4 form + general_audit_ws_c8740d4 + primary + + + + + + + + + + + + + + + + + + + + + Preliminary Analytic Procedure + ir.actions.act_window + general_audit_ws_c8740d4 + tree,form + + + + + + diff --git a/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_d4289e4_views.xml b/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_d4289e4_views.xml new file mode 100644 index 0000000..cadeb2e --- /dev/null +++ b/ssi_general_audit_worksheet_preliminary_analytic_procedure/views/general_audit_ws_d4289e4_views.xml @@ -0,0 +1,95 @@ + + + + + + general_audit_ws_d4289e4 form + general_audit_ws_d4289e4 + + primary + + + + + + + general_audit_ws_d4289e4 tree + general_audit_ws_d4289e4 + primary + + + + + + + + + general_audit_ws_d4289e4 form + general_audit_ws_d4289e4 + primary + + + + + +