brotherton-erpnext/erpnext/public/js/setup_wizard.js
Rushabh Mehta f056974bc5 [domain] Healthcare (#10664)
* Medical module for erpnext

* Changes in core for Medical module

* patient registration updated

* fix - appointment invioce - fields missing

* pages- indicator instead of bg-color

* Lab Test field renamed service type

* Department added Lab Test

* procedure name in prescription

* fixes sample collection

* filter disabled patient

* fix patient admission

* updated patient age

* availability check msg updated

* fixes, removed procedure from invoice

* sample print renamed

* fixes, validation

* service desk physician in filter

* refactor scheduler

* Appointment -field property - set only once = 1

* Appointment - Mark closed and pending buttons removed

* Appointment - readonly = 1 if value set

* Appointment - availabilty

* Appointment - Cancel - info - cancel invoice

* Appointment - set pending appointments

* Dosage form - new DT

* Drug Prescription - Dosage form added

* Facility - Floor - removed from Fecility

* Floor - removed

* Lab Test Template - item creation validation

* Procedure - Create Procedure

* Procedure Appointment - new DT

* Service Unit - Floor reference removed

* Zone Fcilities - Unused DT removed

* Appointment Desk - fixed

* Service Desk - method pointing from procedure changed to procedure_appointment

* Consultation print - got featured

* Consultation - removed patient refernce to procedure prescription

* Procedure Prescription - removed patient refernce

* Lab Test - Changed field properties and value

* Lab Test - field property changed

* Lab Test - methods rewrite - lab test doc creation

* Lab Test - create lab test from invoice and consultaion - got changed

* Button History changed to Medical Record

* Service Desk - Updated

* Notification - Procedure Appointment

* fix-get procedure prescription

* fix field added to test prescription

* msgprint on invoice creation

* fix data on install

* Merge branch erpnext/develop

* fixes- minor

* Setup wizard - Create Sensitivity

* Appointment - Validate and Save if there is no schedule for Physician

* Consultation - Button create vital signs and medical record

* Review Type - New DocType

* Review Detail and Treatment Plan - Childs - Consultation

* Patient Medical Record - field Attach doc

* Consultation - New Fields

* Consultation - Manage new Fields - Medical record add action

* Patient Relation - Child DocType - Patient

* Patient - Patient Relation added

* Patient - collapsible = 1

* Laboratory Settings - fields - message for lab test

* Laboratory Settings - get message for lab test

* SMS text for lab test and invoice test report

* Procedure Stock Detail - Stock detail for Procedure and Template

* Template Stage Detail - Stage detail for Procedure Template

* Procedure Stage Detail - Stage detail for Procedure

* Service Unit - field - warehouse

* Scheduler - msg - content changed

* Laboratory Settings - defualt - msg content

* Invoice Test Report - msg print

* Print Format-Changed-Consultation-Invoice Test Report-Lab Test

* OP Settings - Expnse Account for Stock Entry in Procedure

* Procedure and Procedure Template - Manage Stock Stage and Sample Collection

* Procedure Appointment - Manage Stock and Stage

* Lab Test - fixed - resource not find

* Invoice Test Report - fixed - resource not find

* Procedure - doc reload after insert

* Patient Medical Record - fixed - refernce missed

* Create Vital Signs -on client side

* Rename module Medical to Healthcare

* Remove In Patient (IP) Feature.

* Rename - Procedure to Clinical Procedure

* Remove spaces in Naming Series

* Rename Duration to Drug Prescription Duration

* Duration to Drug Prescription Duration

* Merge All Settings to Healthcare Settings

* Healthcare settings - import fixed

* Procedure related documents are removed

* Appointment Desk and Sevrvice Desk are removed

* Consultation - minimal

* Consultation - minimal

* Consultation - minimal - patient detials in collapsible section

* Message Print to Alerts

* Patient - some fields removed

* Patient - create consultation - message print to alerts

* Consultation - show patient details updated

* Setup wizard - Duration to Drug Prescritpion Duration

* Healthcare Settings - patient registration - fee collection

* Lab Test - Create Sales Invoice bug fixed

* Healthcare menu rearranged

* Healthcare Settings - Optimised and Rearragnged

* Healthcare Settings - Expense account removed

* Receivable account removed from patient

* Patient - Optimised and Rearragnged

* Removed Referring Physician

* Healthcare Settings - bold headings removed

* Physician - Patient - Fields are Segregated

* Remove Service Unit

* Remove - Service Type

* Consultation invoice

* Lab Test - invoice

* Patient - Invoice

* Rename Appointment to Patient Appointment

* wip

* Patient Dashboard, Physician Form cleanup

* Dosage renamed to Prescription Dosage

* Renamed Drug Prescription Duration to Prescription Duration

* Patient Appointment booking modal

* Patient Age - calculate by dob

* Remove - scheduler

* Consultation - Appointment to Patient Appointment

* Patient Dashboard - rearranged

* Patient Appointment

* Removed rer_physician from lab test and consultation

* Patient Appontment Changes

* Appointment and Consultation - optimized

* Patient Appointment - fee validity code optimized

* Consultation and Patient Appointment - Invoice validate two side

* fix: #13 remove relation to admission

* Healthcare - Patient Portal

* fix import error

* domain Healthcare added on install

* Removed - Invoice Test Report

* Physician Schedule - menu

* Consultation - patient details - re write

* New Doctype-Medical Code

* Consultation - Daignosis codification

* Medical Code - Codification - Settings

* Medical Code Standard - Medical Code - Codification - Settings

* fix appointment calendar

* fix appointment analytics

* Menu Medical Code Standard

* New Doctype - Medical Code Standard

* Set Physician Role insted of IP Physician and OP Physician Role

* fixed some json files

* Medical code - permission to physician

* Unused Childs - Work Schedule and User List - Removed

* Label Procedure to Lab Test

* Lab Test and Patient - code optimised

* Add Item Groups - setup wizard

* Healthcare Settings - add Role - Medical Administrator

* Healthcare - Demo setup - Make Demo

* Fee Validity - Logic Test

* Test Fee Validity - Optimised

* Healthcare Doctypes - Restricted to Domain Healthcare

* Domainify - remove Healthcare Roles - Other Domains

* Healthcare doctypes - beta checked

* Codacy fixes

* Codacy - fixes

* Codacy - fixes

* Codacy - fixes

* Codacy - fixes

* Codacy - fixes

* Lab Test - print hide =1 for some fields

* Consultation - Codification field label to Medical Coding

* Codacy fixes - import frappe and etc.

* Codacy fixes - import frappe in test_vital_signs

* Codacy fixes

* Codacy fixes

* Codacy fixes and remove delete perm for patient

* send_sms - import form frappe

* Healthcare Settings

* Lab Prescription - Consultation - Test Code - read_only = 0

* Portal fixes

* Patient Appointment - filter physician - if has schedule

* Physician - IP Charge - Removed

* test - files

* Web Form - Patient Profile - removed

* Role Medical Administrator to Healthcare Administrator

* WIP healthcare documentation

* Coday - fixes

* Travis - fixes

* Lab Test Report - menu

* Reorder Healthcare settings - group lab config to bottom

* Sample Collection - New - allow Sample and patient Selection

* Rate - similar behaviour and Label as in Item Standard Selling Rate

* Healthcare documentation

* Lab Test Samples to Lab Test sample

* Commplaints to Complaint

* Commplaints to Complaint

* Antibiotics to Antibiotic

* Appointment Token Number - remove

* View - Medical record

* Codacy fixes

* update healthcare docs

* Cleanup Docs - Search, quick entry, trsck change, etc.

* [minor] ux changes
2017-09-13 12:52:30 +05:30

242 lines
7.0 KiB
JavaScript

frappe.provide("erpnext.setup");
frappe.pages['setup-wizard'].on_page_load = function(wrapper) {
if(frappe.sys_defaults.company) {
frappe.set_route("desk");
return;
}
};
frappe.setup.on("before_load", function () {
erpnext.setup.slides_settings.map(frappe.setup.add_slide);
});
erpnext.setup.slides_settings = [
{
// Domain
name: 'domain',
domains: ["all"],
title: __('Select your Domain'),
fields: [
{
fieldname: 'domain', label: __('Domain'), fieldtype: 'Select',
options: [
{ "label": __("Distribution"), "value": "Distribution" },
{ "label": __("Manufacturing"), "value": "Manufacturing" },
{ "label": __("Retail"), "value": "Retail" },
{ "label": __("Services"), "value": "Services" },
{ "label": __("Education (beta)"), "value": "Education" },
{"label": __("Healthcare (beta)"), "value": "Healthcare"}
], reqd: 1
},
],
// help: __('Select the nature of your business.'),
onload: function (slide) {
slide.get_input("domain").on("change", function () {
frappe.setup.domain = $(this).val();
frappe.wizard.refresh_slides();
});
},
},
{
// Brand
name: 'brand',
domains: ["all"],
icon: "fa fa-bookmark",
title: __("The Brand"),
// help: __('Upload your letter head and logo. (you can edit them later).'),
fields: [
{
fieldtype: "Attach Image", fieldname: "attach_logo",
label: __("Attach Logo"),
description: __("100px by 100px"),
is_private: 0,
align: 'center'
},
{
fieldname: 'company_name',
label: frappe.setup.domain === 'Education' ?
__('Institute Name') : __('Company Name'),
fieldtype: 'Data',
reqd: 1
},
{
fieldname: 'company_abbr',
label: frappe.setup.domain === 'Education' ?
__('Institute Abbreviation') : __('Company Abbreviation'),
fieldtype: 'Data'
}
],
onload: function(slide) {
this.bind_events(slide);
},
bind_events: function (slide) {
slide.get_input("company_name").on("change", function () {
var parts = slide.get_input("company_name").val().split(" ");
var abbr = $.map(parts, function (p) { return p ? p.substr(0, 1) : null }).join("");
slide.get_field("company_abbr").set_value(abbr.slice(0, 5).toUpperCase());
}).val(frappe.boot.sysdefaults.company_name || "").trigger("change");
slide.get_input("company_abbr").on("change", function () {
if (slide.get_input("company_abbr").val().length > 5) {
frappe.msgprint("Company Abbreviation cannot have more than 5 characters");
slide.get_field("company_abbr").set_value("");
}
});
},
validate: function() {
if (!this.values.company_abbr) {
return false;
}
return true;
}
},
{
// Organisation
name: 'organisation',
domains: ["all"],
title: __("Your Organization"),
icon: "fa fa-building",
// help: (frappe.setup.domain === 'Education' ?
// __('The name of the institute for which you are setting up this system.') :
// __('The name of your company for which you are setting up this system.')),
fields: [
{
fieldname: 'company_tagline',
label: __('What does it do?'),
fieldtype: 'Data',
placeholder: frappe.setup.domain === 'Education' ?
__('e.g. "Primary School" or "University"') :
__('e.g. "Build tools for builders"'),
reqd: 1
},
{ fieldname: 'bank_account', label: __('Bank Name'), fieldtype: 'Data', reqd: 1 },
{
fieldname: 'chart_of_accounts', label: __('Chart of Accounts'),
options: "", fieldtype: 'Select'
},
{ fieldtype: "Section Break", label: __('Financial Year') },
{ fieldname: 'fy_start_date', label: __('Start Date'), fieldtype: 'Date', reqd: 1 },
{ fieldtype: "Column Break" },
{ fieldname: 'fy_end_date', label: __('End Date'), fieldtype: 'Date', reqd: 1 },
],
onload: function (slide) {
this.load_chart_of_accounts(slide);
this.bind_events(slide);
this.set_fy_dates(slide);
},
validate: function () {
// validate fiscal year start and end dates
if (this.values.fy_start_date == 'Invalid date' || this.values.fy_end_date == 'Invalid date') {
frappe.msgprint(__("Please enter valid Financial Year Start and End Dates"));
return false;
}
if ((this.values.company_name || "").toLowerCase() == "company") {
frappe.msgprint(__("Company Name cannot be Company"));
return false;
}
return true;
},
set_fy_dates: function (slide) {
var country = frappe.wizard.values.country;
if (country) {
var fy = erpnext.setup.fiscal_years[country];
var current_year = moment(new Date()).year();
var next_year = current_year + 1;
if (!fy) {
fy = ["01-01", "12-31"];
next_year = current_year;
}
var year_start_date = current_year + "-" + fy[0];
if (year_start_date > frappe.datetime.get_today()) {
next_year = current_year;
current_year -= 1;
}
slide.get_field("fy_start_date").set_value(current_year + '-' + fy[0]);
slide.get_field("fy_end_date").set_value(next_year + '-' + fy[1]);
}
},
load_chart_of_accounts: function (slide) {
var country = frappe.wizard.values.country;
if (country) {
frappe.call({
method: "erpnext.accounts.doctype.account.chart_of_accounts.chart_of_accounts.get_charts_for_country",
args: { "country": country },
callback: function (r) {
if (r.message) {
slide.get_input("chart_of_accounts").empty()
.add_options(r.message);
if (r.message.length === 1) {
var field = slide.get_field("chart_of_accounts");
field.set_value(r.message[0]);
field.df.hidden = 1;
field.refresh();
}
}
}
})
}
},
bind_events: function (slide) {
slide.get_input("fy_start_date").on("change", function () {
var start_date = slide.form.fields_dict.fy_start_date.get_value();
var year_end_date =
frappe.datetime.add_days(frappe.datetime.add_months(start_date, 12), -1);
slide.form.fields_dict.fy_end_date.set_value(year_end_date);
});
}
}
];
// Source: https://en.wikipedia.org/wiki/Fiscal_year
// default 1st Jan - 31st Dec
erpnext.setup.fiscal_years = {
"Afghanistan": ["12-20", "12-21"],
"Australia": ["07-01", "06-30"],
"Bangladesh": ["07-01", "06-30"],
"Canada": ["04-01", "03-31"],
"Costa Rica": ["10-01", "09-30"],
"Egypt": ["07-01", "06-30"],
"Hong Kong": ["04-01", "03-31"],
"India": ["04-01", "03-31"],
"Iran": ["06-23", "06-22"],
"Italy": ["07-01", "06-30"],
"Myanmar": ["04-01", "03-31"],
"New Zealand": ["04-01", "03-31"],
"Pakistan": ["07-01", "06-30"],
"Singapore": ["04-01", "03-31"],
"South Africa": ["03-01", "02-28"],
"Thailand": ["10-01", "09-30"],
"United Kingdom": ["04-01", "03-31"],
};
// var test_values_edu = {
// "language": "english",
// "domain": "Education",
// "country": "India",
// "timezone": "Asia/Kolkata",
// "currency": "INR",
// "first_name": "Tester",
// "email": "test@example.com",
// "password": "test",
// "company_name": "Hogwarts",
// "company_abbr": "HS",
// "company_tagline": "School for magicians",
// "bank_account": "Gringotts Wizarding Bank",
// "fy_start_date": "2016-04-01",
// "fy_end_date": "2017-03-31"
// }