diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml index 4181ab934435f27c935d364e0c7963fabf3c10ad..53266c8a2d7a905fab9482c41549a5c7fb0e2d62 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/building.xml @@ -30,6 +30,7 @@ converge diverge + freeze solve_automatically start_building diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml index 26571da5ec09d460a147d24e41b22e78a28ad056..a3ab6af58418d69cdb4463c9dd02f40e0b9e1111 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/calculating.xml @@ -30,6 +30,7 @@ converge diverge + freeze solve_automatically solve_divergence solve_divergence_action diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml index 5f766037225fa921c821caca68757fdb9233e67f..688c00d7080695b7296f057fcf077c87094b390a 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/diverged.xml @@ -31,6 +31,7 @@ calculate converge diverge + freeze solve_automatically solve_divergence solve_divergence_action diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml index 29db4dd2abc44704fb3e9d06112e79ca0f63d78c..c6444fc45ce4914a3604457a8c2bd939e7ce66d1 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/draft.xml @@ -28,6 +28,7 @@ transitions + freeze start_building diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/frozen.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/frozen.xml new file mode 100644 index 0000000000000000000000000000000000000000..b3d62f51690ba75045a7965e3c9cfa5a9b6a8590 --- /dev/null +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/frozen.xml @@ -0,0 +1,72 @@ + + + + + + + + + + description + The document is no longer simulated. + + + id + frozen + + + permission_roles + + AAAAAAAAAAI= + + + + title + Frozen + + + transitions + + + + + + type_list + + + + + + + + + + + + + + + data + + + + Add portal content + + + + + + Modify portal content + + + Manager + + + + + + + + + + diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml index 79f1615fb9d4311656774d13c82a8d7bf8141439..77e75e1876ec49b9b46f21575e70223e0f89c902 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solved.xml @@ -31,6 +31,7 @@ calculate converge diverge + freeze solve_automatically start_building diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml index fe57912c1a4d13a45c93ed18525f2b7e3a2ed019..50e8eaf7b54347fe103087fd990c30184b234744 100644 --- a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/states/solving.xml @@ -30,6 +30,7 @@ converge diverge + freeze diff --git a/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/transitions/freeze.xml b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/transitions/freeze.xml new file mode 100644 index 0000000000000000000000000000000000000000..f85abad44f9ce04d5604cdb924469e03220a8c2d --- /dev/null +++ b/bt5/erp5_base/WorkflowTemplateItem/portal_workflow/delivery_causality_workflow/transitions/freeze.xml @@ -0,0 +1,79 @@ + + + + + + + + + + actbox_category + workflow + + + actbox_icon + + + + actbox_name + + + + actbox_url + + + + after_script_name + + + + description + Make the document no longer simulated. + + + guard + + AAAAAAAAAAI= + + + + id + freeze + + + new_state_id + frozen + + + script_name + + + + title + Freeze + + + trigger_type + 2 + + + + + + + + + + + + permissions + + + Modify portal content + + + + + + + diff --git a/product/ERP5/ERP5Defaults.py b/product/ERP5/ERP5Defaults.py index 05c351b7b8fe1b3270d93144eafe97cc4659081d..13a4b0157a44ea59babc88a623675ba7c306b5c2 100644 --- a/product/ERP5/ERP5Defaults.py +++ b/product/ERP5/ERP5Defaults.py @@ -224,3 +224,4 @@ portal_current_inventory_state_list = ('delivered', 'started', 'stopped', 'invoi portal_updatable_amortisation_transaction_state_list = ('draft',) +portal_frozen_causality_state_list = ('frozen',) diff --git a/product/ERP5/ERP5Site.py b/product/ERP5/ERP5Site.py index bcaed78514ddbd4b1abf2e6eb3a17142b97f2220..af4c966e9a6e9a6399eddb690fc7945aefca4786 100644 --- a/product/ERP5/ERP5Site.py +++ b/product/ERP5/ERP5Site.py @@ -1287,6 +1287,14 @@ class ERP5Site(FolderMixIn, CMFSite, CacheCookieMixin): return self._getPortalConfiguration( 'portal_updatable_amortisation_transaction_state_list') + security.declareProtected(Permissions.AccessContentsInformation, + 'getPortalFrozenCausalityStateList') + def getPortalFrozenCausalityStateList(self): + """ + Return all causality states where the document is no longer simulated. + """ + return self._getPortalConfiguration('portal_frozen_causality_state_list') + security.declareProtected(Permissions.AccessContentsInformation, 'getPortalGroupedSimulationStateList') def getPortalGroupedSimulationStateList(self): diff --git a/product/ERP5/mixin/rule.py b/product/ERP5/mixin/rule.py index c63c9486519000b099f91b896c95a1bf09e94864..e5b814e0af8d3685b3b4815f37a56c322b019b43 100644 --- a/product/ERP5/mixin/rule.py +++ b/product/ERP5/mixin/rule.py @@ -495,6 +495,8 @@ class SimulableMixin(Base): See _updateSimulation for accepted parameters. """ + if self.getCausalityState() in self.getPortalFrozenCausalityStateList(): + return tv = getTransactionalVariable() key = 'SimulableMixin.updateSimulation', self.getUid() item_list = kw.items()