From 7639e34eeef997aa5fe9863719e5fd58d3f98211 Mon Sep 17 00:00:00 2001 From: maniamartial Date: Sat, 14 Oct 2023 14:25:43 +0300 Subject: [PATCH 1/7] Adding child table payment Details #130 --- .../frappe_changemakers/doctype/case/case.py | 18 ++++++ .../doctype/payment_details/__init__.py | 0 .../payment_details/payment_details.json | 58 +++++++++++++++++++ .../payment_details/payment_details.py | 8 +++ .../doctype/payment_type/__init__.py | 0 .../doctype/payment_type/payment_type.js | 8 +++ .../doctype/payment_type/payment_type.json | 55 ++++++++++++++++++ .../doctype/payment_type/payment_type.py | 8 +++ .../doctype/payment_type/test_payment_type.py | 9 +++ 9 files changed, 164 insertions(+) create mode 100644 changemakers/frappe_changemakers/doctype/payment_details/__init__.py create mode 100644 changemakers/frappe_changemakers/doctype/payment_details/payment_details.json create mode 100644 changemakers/frappe_changemakers/doctype/payment_details/payment_details.py create mode 100644 changemakers/frappe_changemakers/doctype/payment_type/__init__.py create mode 100644 changemakers/frappe_changemakers/doctype/payment_type/payment_type.js create mode 100644 changemakers/frappe_changemakers/doctype/payment_type/payment_type.json create mode 100644 changemakers/frappe_changemakers/doctype/payment_type/payment_type.py create mode 100644 changemakers/frappe_changemakers/doctype/payment_type/test_payment_type.py diff --git a/changemakers/frappe_changemakers/doctype/case/case.py b/changemakers/frappe_changemakers/doctype/case/case.py index f3b3ad1..e1bd226 100644 --- a/changemakers/frappe_changemakers/doctype/case/case.py +++ b/changemakers/frappe_changemakers/doctype/case/case.py @@ -8,8 +8,26 @@ class Case(Document): def before_save(self): self.set_created_by() + self.calculate_total_amount() + self.validate_total_amount() def set_created_by(self): if not self.created_by: owner = frappe.db.get_value("User", self.owner, "full_name") self.created_by = owner + + def calculate_total_amount(doc): + total_amount = 0 + for row in doc.get("payment_details"): + total_amount += row.amount + frappe.msgprint(f"Row Amount: {row.amount}") + + frappe.msgprint(f"Total Amount: {total_amount}") + doc.total_amount = total_amount + + + def validate_total_amount(doc): + if doc.total_amount < 0: + frappe.throw("Total amount must be greater than zero.") + + diff --git a/changemakers/frappe_changemakers/doctype/payment_details/__init__.py b/changemakers/frappe_changemakers/doctype/payment_details/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/changemakers/frappe_changemakers/doctype/payment_details/payment_details.json b/changemakers/frappe_changemakers/doctype/payment_details/payment_details.json new file mode 100644 index 0000000..a983243 --- /dev/null +++ b/changemakers/frappe_changemakers/doctype/payment_details/payment_details.json @@ -0,0 +1,58 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2023-10-14 12:40:57.317152", + "default_view": "List", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "sno", + "payment_type", + "payment_details", + "amount" + ], + "fields": [ + { + "fieldname": "sno", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Sno", + "reqd": 1 + }, + { + "fieldname": "payment_type", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Payment Type", + "reqd": 1 + }, + { + "fieldname": "payment_details", + "fieldtype": "Data", + "in_list_view": 1, + "label": "Payment Details", + "reqd": 1 + }, + { + "fieldname": "amount", + "fieldtype": "Int", + "in_list_view": 1, + "label": "Amount", + "reqd": 1 + } + ], + "index_web_pages_for_search": 1, + "istable": 1, + "links": [], + "modified": "2023-10-14 13:30:04.469922", + "modified_by": "Administrator", + "module": "Frappe Changemakers", + "name": "Payment Details", + "owner": "Administrator", + "permissions": [], + "quick_entry": 1, + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/changemakers/frappe_changemakers/doctype/payment_details/payment_details.py b/changemakers/frappe_changemakers/doctype/payment_details/payment_details.py new file mode 100644 index 0000000..90ab4fe --- /dev/null +++ b/changemakers/frappe_changemakers/doctype/payment_details/payment_details.py @@ -0,0 +1,8 @@ +# Copyright (c) 2023, hussain@frappe.io and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + +class PaymentDetails(Document): + pass diff --git a/changemakers/frappe_changemakers/doctype/payment_type/__init__.py b/changemakers/frappe_changemakers/doctype/payment_type/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.js b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.js new file mode 100644 index 0000000..cc0a719 --- /dev/null +++ b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.js @@ -0,0 +1,8 @@ +// Copyright (c) 2023, hussain@frappe.io and contributors +// For license information, please see license.txt + +frappe.ui.form.on('Payment Type', { + // refresh: function(frm) { + + // } +}); diff --git a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json new file mode 100644 index 0000000..c531824 --- /dev/null +++ b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json @@ -0,0 +1,55 @@ +{ + "actions": [], + "allow_rename": 1, + "creation": "2023-10-14 12:52:50.195141", + "default_view": "List", + "doctype": "DocType", + "editable_grid": 1, + "engine": "InnoDB", + "field_order": [ + "consultation", + "testing", + "medicine" + ], + "fields": [ + { + "fieldname": "consultation", + "fieldtype": "Data", + "label": "Consultation" + }, + { + "fieldname": "testing", + "fieldtype": "Data", + "label": "Testing" + }, + { + "fieldname": "medicine", + "fieldtype": "Data", + "label": "Medicine" + } + ], + "index_web_pages_for_search": 1, + "links": [], + "modified": "2023-10-14 12:52:50.195141", + "modified_by": "Administrator", + "module": "Frappe Changemakers", + "name": "Payment Type", + "owner": "Administrator", + "permissions": [ + { + "create": 1, + "delete": 1, + "email": 1, + "export": 1, + "print": 1, + "read": 1, + "report": 1, + "role": "System Manager", + "share": 1, + "write": 1 + } + ], + "sort_field": "modified", + "sort_order": "DESC", + "states": [] +} \ No newline at end of file diff --git a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.py b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.py new file mode 100644 index 0000000..2d94620 --- /dev/null +++ b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.py @@ -0,0 +1,8 @@ +# Copyright (c) 2023, hussain@frappe.io and contributors +# For license information, please see license.txt + +# import frappe +from frappe.model.document import Document + +class PaymentType(Document): + pass diff --git a/changemakers/frappe_changemakers/doctype/payment_type/test_payment_type.py b/changemakers/frappe_changemakers/doctype/payment_type/test_payment_type.py new file mode 100644 index 0000000..404eced --- /dev/null +++ b/changemakers/frappe_changemakers/doctype/payment_type/test_payment_type.py @@ -0,0 +1,9 @@ +# Copyright (c) 2023, hussain@frappe.io and Contributors +# See license.txt + +# import frappe +from frappe.tests.utils import FrappeTestCase + + +class TestPaymentType(FrappeTestCase): + pass From 4f5de0a6efdc49bb9c8c057ab2973eab7c56c0eb Mon Sep 17 00:00:00 2001 From: maniamartial Date: Sat, 14 Oct 2023 15:39:14 +0300 Subject: [PATCH 2/7] Adding child table payment Details #130 --- .../frappe_changemakers/doctype/case/case.js | 14 ++++++++++++++ .../frappe_changemakers/doctype/case/case.py | 5 +---- 2 files changed, 15 insertions(+), 4 deletions(-) diff --git a/changemakers/frappe_changemakers/doctype/case/case.js b/changemakers/frappe_changemakers/doctype/case/case.js index a9566f5..45778e4 100644 --- a/changemakers/frappe_changemakers/doctype/case/case.js +++ b/changemakers/frappe_changemakers/doctype/case/case.js @@ -22,3 +22,17 @@ frappe.ui.form.on("Case", { frm.save(); }, }); + +frappe.ui.form.on("payment_details", { + amount: function (frm, cdt, cdn) { + // When the "amount" field in the child table changes + var child = locals[cdt][cdn]; + frm.doc.total_amount = 0; // Reset total amount + + frm.doc.payment_details.forEach(function (row) { + frm.doc.total_amount += row.amount; + }); + + frm.refresh_field("total_amount"); + }, +}); diff --git a/changemakers/frappe_changemakers/doctype/case/case.py b/changemakers/frappe_changemakers/doctype/case/case.py index e1bd226..75e4e0c 100644 --- a/changemakers/frappe_changemakers/doctype/case/case.py +++ b/changemakers/frappe_changemakers/doctype/case/case.py @@ -20,14 +20,11 @@ def calculate_total_amount(doc): total_amount = 0 for row in doc.get("payment_details"): total_amount += row.amount - frappe.msgprint(f"Row Amount: {row.amount}") - - frappe.msgprint(f"Total Amount: {total_amount}") doc.total_amount = total_amount def validate_total_amount(doc): if doc.total_amount < 0: - frappe.throw("Total amount must be greater than zero.") + frappe.throw("Total amount must not be less than zero.") From 8377067a26c6138615f1fba88043fda140c6cc98 Mon Sep 17 00:00:00 2001 From: maniamartial Date: Sat, 14 Oct 2023 15:44:22 +0300 Subject: [PATCH 3/7] Adding child table payment Details #130 --- .../frappe_changemakers/doctype/case/case.js | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/changemakers/frappe_changemakers/doctype/case/case.js b/changemakers/frappe_changemakers/doctype/case/case.js index 45778e4..a9566f5 100644 --- a/changemakers/frappe_changemakers/doctype/case/case.js +++ b/changemakers/frappe_changemakers/doctype/case/case.js @@ -22,17 +22,3 @@ frappe.ui.form.on("Case", { frm.save(); }, }); - -frappe.ui.form.on("payment_details", { - amount: function (frm, cdt, cdn) { - // When the "amount" field in the child table changes - var child = locals[cdt][cdn]; - frm.doc.total_amount = 0; // Reset total amount - - frm.doc.payment_details.forEach(function (row) { - frm.doc.total_amount += row.amount; - }); - - frm.refresh_field("total_amount"); - }, -}); From 6aca4b7edae2fe48597476549a7e78315f2851f6 Mon Sep 17 00:00:00 2001 From: maniamartial Date: Sun, 15 Oct 2023 10:53:27 +0300 Subject: [PATCH 4/7] Created Payment Type with named Entries --- changemakers/fixtures/custom_html_block.json | 1 + changemakers/fixtures/payment_type.json | 23 ++++++++++++ changemakers/fixtures/state.json | 8 ++++ .../frappe_changemakers/doctype/case/case.py | 37 +++++++++---------- .../payment_details/payment_details.json | 16 ++------ .../doctype/payment_type/payment_type.json | 20 ++-------- changemakers/hooks.py | 2 + 7 files changed, 60 insertions(+), 47 deletions(-) create mode 100644 changemakers/fixtures/payment_type.json diff --git a/changemakers/fixtures/custom_html_block.json b/changemakers/fixtures/custom_html_block.json index 61a6cc0..fa5a2fe 100644 --- a/changemakers/fixtures/custom_html_block.json +++ b/changemakers/fixtures/custom_html_block.json @@ -5,6 +5,7 @@ "html": "Open PWA", "modified": "2023-06-09 15:38:21.813843", "name": "Open PWA Button", + "private": 0, "roles": [], "script": null, "style": ".btn {\n background-color: aquamarine;\n padding: 10px 20px;\n text-decoration: none;\n color: darkslategrey;\n font-weight: 600;\n border-radius: 6px;\n}" diff --git a/changemakers/fixtures/payment_type.json b/changemakers/fixtures/payment_type.json new file mode 100644 index 0000000..7575c48 --- /dev/null +++ b/changemakers/fixtures/payment_type.json @@ -0,0 +1,23 @@ +[ + { + "docstatus": 0, + "doctype": "Payment Type", + "modified": "2023-10-15 10:00:50.198793", + "name": "Consultation", + "payment_name": "Consultation" + }, + { + "docstatus": 0, + "doctype": "Payment Type", + "modified": "2023-10-15 10:01:21.868668", + "name": "Testing", + "payment_name": "Testing" + }, + { + "docstatus": 0, + "doctype": "Payment Type", + "modified": "2023-10-15 10:01:42.912135", + "name": "Medicine", + "payment_name": "Medicine" + } +] \ No newline at end of file diff --git a/changemakers/fixtures/state.json b/changemakers/fixtures/state.json index 639f7c8..16efbb5 100644 --- a/changemakers/fixtures/state.json +++ b/changemakers/fixtures/state.json @@ -278,5 +278,13 @@ "doctype": "State", "modified": "2022-12-21 22:58:03.036242", "name": "Dadra and Nagar Haveli and Daman and Diu" + }, + { + "code": null, + "country": "India", + "docstatus": 0, + "doctype": "State", + "modified": "2023-10-12 14:53:15.118309", + "name": "Nairobi" } ] \ No newline at end of file diff --git a/changemakers/frappe_changemakers/doctype/case/case.py b/changemakers/frappe_changemakers/doctype/case/case.py index 75e4e0c..e0a083f 100644 --- a/changemakers/frappe_changemakers/doctype/case/case.py +++ b/changemakers/frappe_changemakers/doctype/case/case.py @@ -4,27 +4,26 @@ import frappe from frappe.model.document import Document - class Case(Document): - def before_save(self): - self.set_created_by() - self.calculate_total_amount() - self.validate_total_amount() + def before_save(self): + self.set_created_by() + self.calculate_total_amount() - def set_created_by(self): - if not self.created_by: - owner = frappe.db.get_value("User", self.owner, "full_name") - self.created_by = owner - - def calculate_total_amount(doc): - total_amount = 0 - for row in doc.get("payment_details"): - total_amount += row.amount - doc.total_amount = total_amount + def validate(self): + self.validate_total_amount() + def set_created_by(self): + if not self.created_by: + owner = frappe.db.get_value("User", self.owner, "full_name") + self.created_by = owner - def validate_total_amount(doc): - if doc.total_amount < 0: - frappe.throw("Total amount must not be less than zero.") + def calculate_total_amount(self): + total_amount = 0 + for row in self.get("payment_details"): + total_amount += row.amount + self.total_amount = total_amount - + def validate_total_amount(self): + if self.total_amount: + if self.total_amount < 0: + frappe.throw("Total amount must not be less than zero.") diff --git a/changemakers/frappe_changemakers/doctype/payment_details/payment_details.json b/changemakers/frappe_changemakers/doctype/payment_details/payment_details.json index a983243..0e80291 100644 --- a/changemakers/frappe_changemakers/doctype/payment_details/payment_details.json +++ b/changemakers/frappe_changemakers/doctype/payment_details/payment_details.json @@ -7,32 +7,24 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "sno", "payment_type", "payment_details", "amount" ], "fields": [ - { - "fieldname": "sno", - "fieldtype": "Int", - "in_list_view": 1, - "label": "Sno", - "reqd": 1 - }, { "fieldname": "payment_type", - "fieldtype": "Data", + "fieldtype": "Link", "in_list_view": 1, "label": "Payment Type", + "options": "Payment Type", "reqd": 1 }, { "fieldname": "payment_details", "fieldtype": "Data", "in_list_view": 1, - "label": "Payment Details", - "reqd": 1 + "label": "Payment Details" }, { "fieldname": "amount", @@ -45,7 +37,7 @@ "index_web_pages_for_search": 1, "istable": 1, "links": [], - "modified": "2023-10-14 13:30:04.469922", + "modified": "2023-10-15 10:12:31.178405", "modified_by": "Administrator", "module": "Frappe Changemakers", "name": "Payment Details", diff --git a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json index c531824..7265e38 100644 --- a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json +++ b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json @@ -7,30 +7,18 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "consultation", - "testing", - "medicine" + "payment_name" ], "fields": [ { - "fieldname": "consultation", + "fieldname": "payment_name", "fieldtype": "Data", - "label": "Consultation" - }, - { - "fieldname": "testing", - "fieldtype": "Data", - "label": "Testing" - }, - { - "fieldname": "medicine", - "fieldtype": "Data", - "label": "Medicine" + "label": "Payment Name" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-10-14 12:52:50.195141", + "modified": "2023-10-15 09:52:27.375296", "modified_by": "Administrator", "module": "Frappe Changemakers", "name": "Payment Type", diff --git a/changemakers/hooks.py b/changemakers/hooks.py index cef0da7..03abb78 100644 --- a/changemakers/hooks.py +++ b/changemakers/hooks.py @@ -12,6 +12,7 @@ "Custom HTML Block", "Case Type", "State", + "Payment Type", {"dt": "Client Script", "filters": {"name": "Action: Create User Profile"}}, { "dt": "Role", @@ -32,6 +33,7 @@ ) }, }, + ] # Includes in From 65f8d2fa9805f7e665d969803f9edbfb1359c1f5 Mon Sep 17 00:00:00 2001 From: maniamartial Date: Sun, 15 Oct 2023 22:48:32 +0300 Subject: [PATCH 5/7] Added field set by and payment description on payment --- changemakers/fixtures/payment_type.json | 15 +++++++++------ changemakers/fixtures/state.json | 8 -------- .../doctype/payment_type/payment_type.json | 17 ++++++++++++----- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/changemakers/fixtures/payment_type.json b/changemakers/fixtures/payment_type.json index 7575c48..345bd54 100644 --- a/changemakers/fixtures/payment_type.json +++ b/changemakers/fixtures/payment_type.json @@ -2,22 +2,25 @@ { "docstatus": 0, "doctype": "Payment Type", - "modified": "2023-10-15 10:00:50.198793", + "modified": "2023-10-15 22:45:30.180618", "name": "Consultation", - "payment_name": "Consultation" + "payment_description": "Consultation", + "set_by": null }, { "docstatus": 0, "doctype": "Payment Type", - "modified": "2023-10-15 10:01:21.868668", + "modified": "2023-10-15 22:46:01.908105", "name": "Testing", - "payment_name": "Testing" + "payment_description": "Testing", + "set_by": null }, { "docstatus": 0, "doctype": "Payment Type", - "modified": "2023-10-15 10:01:42.912135", + "modified": "2023-10-15 22:46:27.122311", "name": "Medicine", - "payment_name": "Medicine" + "payment_description": "Medicine", + "set_by": null } ] \ No newline at end of file diff --git a/changemakers/fixtures/state.json b/changemakers/fixtures/state.json index 16efbb5..639f7c8 100644 --- a/changemakers/fixtures/state.json +++ b/changemakers/fixtures/state.json @@ -278,13 +278,5 @@ "doctype": "State", "modified": "2022-12-21 22:58:03.036242", "name": "Dadra and Nagar Haveli and Daman and Diu" - }, - { - "code": null, - "country": "India", - "docstatus": 0, - "doctype": "State", - "modified": "2023-10-12 14:53:15.118309", - "name": "Nairobi" } ] \ No newline at end of file diff --git a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json index 7265e38..6988e4e 100644 --- a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json +++ b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json @@ -7,18 +7,25 @@ "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "payment_name" + "set_by", + "payment_description" ], "fields": [ { - "fieldname": "payment_name", - "fieldtype": "Data", - "label": "Payment Name" + "fieldname": "set_by", + "fieldtype": "Link", + "label": "Set By", + "options": "User" + }, + { + "fieldname": "payment_description", + "fieldtype": "Small Text", + "label": "Payment Description" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-10-15 09:52:27.375296", + "modified": "2023-10-15 22:44:44.646867", "modified_by": "Administrator", "module": "Frappe Changemakers", "name": "Payment Type", From 8a36739f37b17f7a8790938d27d6c5cbeb3aba77 Mon Sep 17 00:00:00 2001 From: maniamartial Date: Tue, 17 Oct 2023 09:25:52 +0300 Subject: [PATCH 6/7] Changing naming to 'Set By User' --- .../doctype/payment_type/payment_type.json | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json index 6988e4e..11055f5 100644 --- a/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json +++ b/changemakers/frappe_changemakers/doctype/payment_type/payment_type.json @@ -1,34 +1,30 @@ { "actions": [], "allow_rename": 1, + "autoname": "prompt", "creation": "2023-10-14 12:52:50.195141", "default_view": "List", "doctype": "DocType", "editable_grid": 1, "engine": "InnoDB", "field_order": [ - "set_by", - "payment_description" + "description" ], "fields": [ { - "fieldname": "set_by", - "fieldtype": "Link", - "label": "Set By", - "options": "User" - }, - { - "fieldname": "payment_description", + "fieldname": "description", "fieldtype": "Small Text", - "label": "Payment Description" + "label": "Description" } ], "index_web_pages_for_search": 1, "links": [], - "modified": "2023-10-15 22:44:44.646867", + "modified": "2023-10-17 09:20:27.707412", "modified_by": "Administrator", "module": "Frappe Changemakers", "name": "Payment Type", + "name_case": "Title Case", + "naming_rule": "Set by user", "owner": "Administrator", "permissions": [ { From 88c1b13c112f2276fa5155ee3e70a11dd7f27c72 Mon Sep 17 00:00:00 2001 From: maniamartial Date: Tue, 17 Oct 2023 09:40:22 +0300 Subject: [PATCH 7/7] Chaging naming Series to 'Set By User' --- changemakers/fixtures/payment_type.json | 21 +++++++++------------ 1 file changed, 9 insertions(+), 12 deletions(-) diff --git a/changemakers/fixtures/payment_type.json b/changemakers/fixtures/payment_type.json index 345bd54..b89a010 100644 --- a/changemakers/fixtures/payment_type.json +++ b/changemakers/fixtures/payment_type.json @@ -1,26 +1,23 @@ [ { + "description": "Medicine", "docstatus": 0, "doctype": "Payment Type", - "modified": "2023-10-15 22:45:30.180618", - "name": "Consultation", - "payment_description": "Consultation", - "set_by": null + "modified": "2023-10-17 09:21:16.075071", + "name": "Medicine" }, { + "description": "Testing", "docstatus": 0, "doctype": "Payment Type", - "modified": "2023-10-15 22:46:01.908105", - "name": "Testing", - "payment_description": "Testing", - "set_by": null + "modified": "2023-10-17 09:21:47.261596", + "name": "Testing" }, { + "description": "Consultation", "docstatus": 0, "doctype": "Payment Type", - "modified": "2023-10-15 22:46:27.122311", - "name": "Medicine", - "payment_description": "Medicine", - "set_by": null + "modified": "2023-10-17 09:22:17.794554", + "name": "Consultation" } ] \ No newline at end of file