fix: service unit create - set fields based on service unit type, added validations

This commit is contained in:
anoop 2020-05-20 15:41:37 +05:30
parent bd4629568d
commit 858593b96e
4 changed files with 43 additions and 16 deletions

View File

@ -12,7 +12,6 @@
"engine": "InnoDB",
"field_order": [
"healthcare_service_unit_name",
"parent_healthcare_service_unit",
"is_group",
"service_unit_type",
"allow_appointments",
@ -20,8 +19,10 @@
"inpatient_occupancy",
"occupancy_status",
"column_break_9",
"warehouse",
"company",
"warehouse",
"tree_details_section",
"parent_healthcare_service_unit",
"lft",
"rgt",
"old_parent"
@ -51,7 +52,6 @@
"depends_on": "eval:doc.inpatient_occupancy != 1 && doc.allow_appointments != 1",
"fieldname": "is_group",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Is Group"
},
{
@ -63,12 +63,12 @@
"options": "Healthcare Service Unit Type"
},
{
"bold": 1,
"default": "0",
"depends_on": "eval:doc.is_group != 1 && doc.inpatient_occupancy != 1",
"fetch_from": "service_unit_type.allow_appointments",
"fieldname": "allow_appointments",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Allow Appointments",
"no_copy": 1,
"read_only": 1
@ -90,6 +90,7 @@
"fetch_from": "service_unit_type.inpatient_occupancy",
"fieldname": "inpatient_occupancy",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Inpatient Occupancy",
"no_copy": 1,
"read_only": 1,
@ -101,7 +102,7 @@
"fieldtype": "Select",
"label": "Occupancy Status",
"no_copy": 1,
"options": "\nVacant\nOccupied",
"options": "Vacant\nOccupied",
"read_only": 1
},
{
@ -157,10 +158,16 @@
"options": "Healthcare Service Unit",
"print_hide": 1,
"report_hide": 1
},
{
"collapsible": 1,
"fieldname": "tree_details_section",
"fieldtype": "Section Break",
"label": "Tree Details"
}
],
"links": [],
"modified": "2020-03-26 16:13:08.675952",
"modified": "2020-05-20 18:26:56.065543",
"modified_by": "Administrator",
"module": "Healthcare",
"name": "Healthcare Service Unit",

View File

@ -27,5 +27,11 @@ class HealthcareServiceUnit(NestedSet):
self.allow_appointments = 0
self.overlap_appointments = 0
self.inpatient_occupancy = 0
elif not self.allow_appointments:
self.overlap_appointments = 0
elif self.service_unit_type:
service_unit_type = frappe.get_doc('Healthcare Service Unit Type', self.service_unit_type)
self.allow_appointments = service_unit_type.allow_appointments
self.overlap_appointments = service_unit_type.overlap_appointments
self.inpatient_occupancy = service_unit_type.inpatient_occupancy
if self.inpatient_occupancy:
self.occupancy_status = 'Vacant'
self.overlap_appointments = 0

View File

@ -31,6 +31,7 @@
"fieldtype": "Data",
"in_list_view": 1,
"label": "Service Unit Type",
"no_copy": 1,
"reqd": 1,
"unique": 1
},
@ -40,8 +41,7 @@
"depends_on": "eval:doc.inpatient_occupancy != 1",
"fieldname": "allow_appointments",
"fieldtype": "Check",
"label": "Allow Appointments",
"no_copy": 1
"label": "Allow Appointments"
},
{
"bold": 1,
@ -49,8 +49,7 @@
"depends_on": "eval:doc.allow_appointments == 1 && doc.inpatient_occupany != 1",
"fieldname": "overlap_appointments",
"fieldtype": "Check",
"label": "Allow Overlap",
"no_copy": 1
"label": "Allow Overlap"
},
{
"bold": 1,
@ -58,8 +57,7 @@
"depends_on": "eval:doc.allow_appointments != 1",
"fieldname": "inpatient_occupancy",
"fieldtype": "Check",
"label": "Inpatient Occupancy",
"no_copy": 1
"label": "Inpatient Occupancy"
},
{
"bold": 1,
@ -79,6 +77,7 @@
"fieldname": "item",
"fieldtype": "Link",
"label": "Item",
"no_copy": 1,
"options": "Item",
"read_only": 1
},
@ -86,7 +85,8 @@
"fieldname": "item_code",
"fieldtype": "Data",
"label": "Item Code",
"mandatory_depends_on": "eval: doc.is_billable == 1"
"mandatory_depends_on": "eval: doc.is_billable == 1",
"no_copy": 1
},
{
"fieldname": "item_group",
@ -138,7 +138,7 @@
}
],
"links": [],
"modified": "2020-01-30 16:06:00.624496",
"modified": "2020-05-20 15:31:09.627516",
"modified_by": "Administrator",
"module": "Healthcare",
"name": "Healthcare Service Unit Type",

View File

@ -10,6 +10,20 @@ from frappe.model.rename_doc import rename_doc
class HealthcareServiceUnitType(Document):
def validate(self):
if self.allow_appointments and self.inpatient_occupancy:
frappe.msgprint(
_('Healthcare Service Unit Type cannot be both <b>Allow Appointments</b> and <b>Inpatient Occupancy</b>'),
raise_exception=1, title=_('Validation Error'), indicator='red'
)
elif not self.allow_appointments and not self.inpatient_occupancy:
frappe.msgprint(
_('Healthcare Service Unit Type cannot be both <b>Allow Appointments</b> and <b>Inpatient Occupancy</b>'),
raise_exception=1, title=_('Validation Error'), indicator='red'
)
if not self.allow_appointments:
self.overlap_appointments = 0
if self.is_billable:
if self.disabled:
frappe.db.set_value('Item', self.item, 'disabled', 1)