Skip to content

Commit

Permalink
feat(caluma): expand workflow for advance-credit
Browse files Browse the repository at this point in the history
  • Loading branch information
Yelinz committed Sep 10, 2021
1 parent e8c0d4a commit ad2ac6b
Show file tree
Hide file tree
Showing 8 changed files with 131 additions and 132 deletions.
124 changes: 57 additions & 67 deletions caluma/data/form-config.json
Expand Up @@ -17,6 +17,24 @@
"source": null
}
},
{
"model": "caluma_form.form",
"pk": "advance-credits-form",
"fields": {
"created_at": "2021-08-25T08:41:53.249Z",
"modified_at": "2021-08-25T08:41:53.249Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"name": "{\"de\": null, \"fr\": null, \"en\": \"Vorschusszahlung\"}",
"description": "{\"de\": null, \"fr\": null, \"en\": \"\"}",
"meta": {},
"is_published": false,
"is_archived": false,
"source": null
}
},
{
"model": "caluma_form.form",
"pk": "circulation-form",
Expand Down Expand Up @@ -104,6 +122,21 @@
"sort": 1
}
},
{
"model": "caluma_form.formquestion",
"pk": "advance-credits-form.advance-credit-amount",
"fields": {
"created_at": "2021-08-25T08:47:29.058Z",
"modified_at": "2021-08-25T08:47:29.058Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"form": "advance-credits-form",
"question": "advance-credit-amount",
"sort": 1
}
},
{
"model": "caluma_form.formquestion",
"pk": "circulation-form.circulation-comment",
Expand Down Expand Up @@ -134,21 +167,6 @@
"sort": 2
}
},
{
"model": "caluma_form.formquestion",
"pk": "decision-and-credit-form.decision-and-credit-advance-credit",
"fields": {
"created_at": "2021-06-10T16:45:20.451Z",
"modified_at": "2021-06-10T16:45:20.451Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"form": "decision-and-credit-form",
"question": "decision-and-credit-advance-credit",
"sort": 1
}
},
{
"model": "caluma_form.formquestion",
"pk": "decision-and-credit-form.decision-and-credit-decision",
Expand Down Expand Up @@ -229,25 +247,25 @@
},
{
"model": "caluma_form.question",
"pk": "circulation-comment",
"pk": "advance-credit-amount",
"fields": {
"created_at": "2021-05-31T16:01:25.772Z",
"modified_at": "2021-05-31T16:01:25.772Z",
"created_at": "2021-08-25T08:47:29.001Z",
"modified_at": "2021-08-25T08:47:29.001Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"label": "{\"de\": \"Kommentar\", \"fr\": null, \"en\": null}",
"type": "textarea",
"label": "{\"de\": null, \"fr\": null, \"en\": \"Vorschusszahlungbetrag\"}",
"type": "integer",
"is_required": "false",
"is_hidden": "false",
"is_archived": false,
"placeholder": "{\"de\": null, \"fr\": null, \"en\": null}",
"info_text": "{\"de\": null, \"fr\": null, \"en\": null}",
"static_content": "{\"de\": \"\", \"fr\": \"\", \"en\": \"\"}",
"configuration": {
"max_length": null,
"min_length": null
"max_value": null,
"min_value": null
},
"meta": {},
"data_source": null,
Expand All @@ -262,23 +280,26 @@
},
{
"model": "caluma_form.question",
"pk": "circulation-decision",
"pk": "circulation-comment",
"fields": {
"created_at": "2021-06-25T13:19:22.232Z",
"modified_at": "2021-06-25T13:19:30.433Z",
"created_at": "2021-05-31T16:01:25.772Z",
"modified_at": "2021-05-31T16:01:25.772Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"label": "{\"de\": \"Entscheid\", \"fr\": null, \"en\": null}",
"type": "choice",
"is_required": "true",
"label": "{\"de\": \"Kommentar\", \"fr\": null, \"en\": null}",
"type": "textarea",
"is_required": "false",
"is_hidden": "false",
"is_archived": false,
"placeholder": "{\"de\": null, \"fr\": null, \"en\": null}",
"info_text": "{\"de\": \"\", \"fr\": null, \"en\": null}",
"info_text": "{\"de\": null, \"fr\": null, \"en\": null}",
"static_content": "{\"de\": \"\", \"fr\": \"\", \"en\": \"\"}",
"configuration": {},
"configuration": {
"max_length": null,
"min_length": null
},
"meta": {},
"data_source": null,
"row_form": null,
Expand All @@ -292,21 +313,21 @@
},
{
"model": "caluma_form.question",
"pk": "decision-and-credit-advance-credit",
"pk": "circulation-decision",
"fields": {
"created_at": "2021-06-10T16:45:20.330Z",
"modified_at": "2021-06-10T16:45:20.330Z",
"created_at": "2021-06-25T13:19:22.232Z",
"modified_at": "2021-06-25T13:19:30.433Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"label": "{\"de\": \"Vorschussgenehmigung\", \"fr\": null, \"en\": null}",
"label": "{\"de\": \"Entscheid\", \"fr\": null, \"en\": null}",
"type": "choice",
"is_required": "false",
"is_required": "true",
"is_hidden": "false",
"is_archived": false,
"placeholder": "{\"de\": null, \"fr\": null, \"en\": null}",
"info_text": "{\"de\": null, \"fr\": null, \"en\": null}",
"info_text": "{\"de\": \"\", \"fr\": null, \"en\": null}",
"static_content": "{\"de\": \"\", \"fr\": \"\", \"en\": \"\"}",
"configuration": {},
"meta": {},
Expand Down Expand Up @@ -505,21 +526,6 @@
"sort": 2
}
},
{
"model": "caluma_form.questionoption",
"pk": "decision-and-credit-advance-credit.decision-and-credit-advance-credit-approved",
"fields": {
"created_at": "2021-06-10T16:45:20.345Z",
"modified_at": "2021-06-10T16:45:20.345Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"question": "decision-and-credit-advance-credit",
"option": "decision-and-credit-advance-credit-approved",
"sort": 1
}
},
{
"model": "caluma_form.questionoption",
"pk": "decision-and-credit-decision.decision-and-credit-decision-additional-data",
Expand Down Expand Up @@ -657,22 +663,6 @@
"source": null
}
},
{
"model": "caluma_form.option",
"pk": "decision-and-credit-advance-credit-approved",
"fields": {
"created_at": "2021-06-10T16:45:20.210Z",
"modified_at": "2021-06-10T16:45:20.210Z",
"created_by_user": null,
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"label": "{\"de\": \"Genehmigt\", \"fr\": null, \"en\": null}",
"is_archived": false,
"meta": {},
"source": null
}
},
{
"model": "caluma_form.option",
"pk": "decision-and-credit-decision-additional-data",
Expand Down
28 changes: 25 additions & 3 deletions caluma/data/workflow-config.json
Expand Up @@ -17,7 +17,29 @@
"control_groups": null,
"is_archived": false,
"form": "additional-data-form",
"lead_time": 432000,
"lead_time": 2592000,
"is_multiple_instance": false
}
},
{
"model": "caluma_workflow.task",
"pk": "advance-credits",
"fields": {
"created_at": "2021-08-25T08:12:15.091Z",
"modified_at": "2021-08-25T08:12:15.091Z",
"created_by_user": "755f8c0c-6f60-493a-bf80-158671d29df9",
"created_by_group": "admin",
"modified_by_user": null,
"modified_by_group": null,
"name": "{\"de\": \"Vorschusszahlung\", \"fr\": null, \"en\": null}",
"description": "{\"de\": null, \"fr\": null, \"en\": null}",
"type": "complete_task_form",
"meta": {},
"address_groups": null,
"control_groups": null,
"is_archived": false,
"form": "advance-credits-form",
"lead_time": 2592000,
"is_multiple_instance": false
}
},
Expand Down Expand Up @@ -324,7 +346,7 @@
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"next": "'after-decision-and-credit'|task"
"next": "['after-decision-and-credit']|tasks"
}
},
{
Expand Down Expand Up @@ -376,7 +398,7 @@
"created_by_group": null,
"modified_by_user": null,
"modified_by_group": null,
"next": "'after-define-amount'|task"
"next": "'complete-document'|task"
}
},
{
Expand Down
15 changes: 1 addition & 14 deletions caluma/extensions/dynamic_tasks.py
@@ -1,5 +1,4 @@
from caluma.caluma_workflow.dynamic_tasks import BaseDynamicTasks, register_dynamic_task
from caluma.caluma_workflow.models import WorkItem


class CustomDynamicTasks(BaseDynamicTasks):
Expand All @@ -23,22 +22,10 @@ def resolve_after_decision_and_credit(self, case, user, prev_work_item, context)
)

if "additional-data" in credit_decision.value:
return ["additional-data"]
return ["additional-data", "advance-credits"]
elif "define-amount" in credit_decision.value:
return ["define-amount"]
elif "complete" in credit_decision.value:
return ["complete-document"]

return []

@register_dynamic_task("after-define-amount")
def resolve_after_define_amount(self, case, user, prev_work_item, context):
work_item = WorkItem.objects.get(case=case, task_id="decision-and-credit")
credit_decision = work_item.document.answers.filter(
question_id="decision-and-credit-advance-credit",
).first()

if credit_decision and "approved" in credit_decision.value:
return ["additional-data"]

return ["complete-document"]
7 changes: 7 additions & 0 deletions caluma/extensions/events/case.py
Expand Up @@ -16,6 +16,13 @@ def complete_circulation(sender, case, user, **kwargs):
)


@on(post_complete_case, raise_exception=True)
@transaction.atomic
def set_case_finished_status(sender, case, user, **kwargs):
case.meta["status"] = "complete"
case.save()


@on(post_create_case, raise_exception=True)
def create_case_number(sender, case, user, context, **kwargs):
if (
Expand Down
23 changes: 15 additions & 8 deletions caluma/extensions/events/work_item.py
Expand Up @@ -8,7 +8,7 @@
models as caluma_workflow_models,
)
from caluma.caluma_workflow.events import (
post_complete_case,
post_complete_work_item,
post_create_work_item,
pre_complete_work_item,
)
Expand Down Expand Up @@ -79,13 +79,6 @@ def set_case_status(sender, work_item, user, **kwargs):
work_item.case.save()


@on(post_complete_case, raise_exception=True)
@transaction.atomic
def set_case_finished_status(sender, case, user, **kwargs):
case.meta["status"] = "complete"
case.save()


@on(post_create_work_item, raise_exception=True)
@transaction.atomic
def create_circulation_child_case(sender, work_item, user, **kwargs):
Expand Down Expand Up @@ -135,3 +128,17 @@ def finish_circulation(sender, work_item, user, **kwargs):
),
user=user,
)


@on(post_complete_work_item, raise_exception=True)
@transaction.atomic
def finish_additional_data(sender, work_item, user, **kwargs):
if work_item.task_id == "additional-data":
caluma_workflow_api.complete_work_item(
work_item=caluma_workflow_models.WorkItem.objects.get(
task_id="advance-credits",
case=work_item.case,
status=caluma_workflow_models.WorkItem.STATUS_READY,
),
user=user,
)
40 changes: 0 additions & 40 deletions caluma/extensions/tests/test_dynamic_tasks.py
Expand Up @@ -77,43 +77,3 @@ def test_dynamic_task_after_decision_and_credit(

if case.status == Case.STATUS_RUNNING:
assert case.work_items.filter(task_id=expected_work_item).exists()


@pytest.mark.parametrize(
"decision,expected_work_item",
[
(False, "complete-document"),
(True, "additional-data"),
],
)
def test_dynamic_task_after_define_amount(
db,
caluma_data,
user,
circulation,
identites_mock_for_mailing,
decision,
expected_work_item,
):
case = circulation.parent_work_item.case

skip_work_item(case.work_items.get(task_id="circulation"), user)

case.work_items.get(task_id="decision-and-credit").document.answers.create(
question_id="decision-and-credit-decision",
value="decision-and-credit-decision-define-amount",
)

if decision:
case.work_items.get(task_id="decision-and-credit").document.answers.create(
question_id="decision-and-credit-advance-credit",
value="decision-and-credit-advance-credit-approved",
)

skip_work_item(case.work_items.get(task_id="decision-and-credit"), user)
skip_work_item(case.work_items.get(task_id="define-amount"), user)

case.refresh_from_db()

assert case.status == Case.STATUS_RUNNING
assert case.work_items.filter(task_id=expected_work_item).exists()

0 comments on commit ad2ac6b

Please sign in to comment.