diff --git a/constants.php b/constants.php index 48d4f0239..097e4b34e 100644 --- a/constants.php +++ b/constants.php @@ -126,6 +126,7 @@ define('PIPELINE_STATUS_INTERVIEWING', 500); define('PIPELINE_STATUS_OFFERED', 600); define('PIPELINE_STATUS_NOTINCONSIDERATION', 650); +define('PIPELINE_STATUS_CANDIDATEDECLINED', 675); define('PIPELINE_STATUS_CLIENTDECLINED', 700); define('PIPELINE_STATUS_PLACED', 800); diff --git a/db/cats_schema.sql b/db/cats_schema.sql index 5807a8888..472e8ce6a 100755 --- a/db/cats_schema.sql +++ b/db/cats_schema.sql @@ -275,6 +275,7 @@ insert into `candidate_joborder_status`(`candidate_joborder_status_id`,`short_d insert into `candidate_joborder_status`(`candidate_joborder_status_id`,`short_description`,`can_be_scheduled`,`triggers_email`,`is_enabled`) values (500,'Interviewing',0,1,1); insert into `candidate_joborder_status`(`candidate_joborder_status_id`,`short_description`,`can_be_scheduled`,`triggers_email`,`is_enabled`) values (600,'Offered',0,1,1); insert into `candidate_joborder_status`(`candidate_joborder_status_id`,`short_description`,`can_be_scheduled`,`triggers_email`,`is_enabled`) values (650,'Not in Consideration',0,0,1); +insert into `candidate_joborder_status`(`candidate_joborder_status_id`,`short_description`,`can_be_scheduled`,`triggers_email`,`is_enabled`) values (675,'Candidate Declined',0,0,1); insert into `candidate_joborder_status`(`candidate_joborder_status_id`,`short_description`,`can_be_scheduled`,`triggers_email`,`is_enabled`) values (700,'Client Declined',0,0,1); insert into `candidate_joborder_status`(`candidate_joborder_status_id`,`short_description`,`can_be_scheduled`,`triggers_email`,`is_enabled`) values (800,'Placed',0,1,1); diff --git a/lib/Statistics.php b/lib/Statistics.php index 498fdf0db..49f2f050d 100755 --- a/lib/Statistics.php +++ b/lib/Statistics.php @@ -906,6 +906,7 @@ public function getPipelineData($jobOrderID = -1) SUM(IF(candidate_joborder.status = %s, 1, 0)) AS submitted, SUM(IF(candidate_joborder.status = %s, 1, 0)) AS interviewing, SUM(IF(candidate_joborder.status = %s, 1, 0)) AS offered, + SUM(IF(candidate_joborder.status = %s, 1, 0)) AS candidateDeclined, SUM(IF(candidate_joborder.status = %s, 1, 0)) AS passedOn, SUM(IF(candidate_joborder.status = %s, 1, 0)) AS placed, SUM(IF(candidate_joborder.status = %s, 1, 0)) AS replied @@ -926,6 +927,7 @@ public function getPipelineData($jobOrderID = -1) PIPELINE_STATUS_SUBMITTED, PIPELINE_STATUS_INTERVIEWING, PIPELINE_STATUS_OFFERED, + PIPELINE_STATUS_CANDIDATEDECLINED, PIPELINE_STATUS_CLIENTDECLINED, PIPELINE_STATUS_PLACED, PIPELINE_STATUS_CANDIDATE_REPLIED, @@ -945,6 +947,7 @@ public function getPipelineData($jobOrderID = -1) 'submitted' => 0, 'interviewing' => 0, 'offered' => 0, + 'candidateDeclined' => 0, 'passedOn' => 0, 'placed' => 0 ); diff --git a/modules/candidates/CandidatesUI.php b/modules/candidates/CandidatesUI.php index 78383a35c..223446146 100755 --- a/modules/candidates/CandidatesUI.php +++ b/modules/candidates/CandidatesUI.php @@ -1906,9 +1906,16 @@ private function changeStatus() $mailerSettings = new MailerSettings($this->_siteID); $mailerSettingsRS = $mailerSettings->getAll(); $candidateJoborderStatusSendsMessage = unserialize($mailerSettingsRS['candidateJoborderStatusSendsMessage']); + if (!is_array($candidateJoborderStatusSendsMessage)) + { + $candidateJoborderStatusSendsMessage = array(); + } foreach ($statusRS as $index => $status) { - $statusRS[$index]['triggersEmail'] = $candidateJoborderStatusSendsMessage[$status['statusID']]; + if (isset($candidateJoborderStatusSendsMessage[$status['statusID']])) + { + $statusRS[$index]['triggersEmail'] = $candidateJoborderStatusSendsMessage[$status['statusID']]; + } } /* Get the change status email template. */ diff --git a/modules/graphs/GraphsUI.php b/modules/graphs/GraphsUI.php index 5ba3bbc92..75f7b4f50 100755 --- a/modules/graphs/GraphsUI.php +++ b/modules/graphs/GraphsUI.php @@ -483,7 +483,8 @@ private function miniJobOrderPipeline() "Submitted", "Interviewing", "Offered", - "Declined", + "Candidate Declined", + "Client Declined", "Placed" ); } @@ -497,14 +498,16 @@ private function miniJobOrderPipeline() "Submitted", "|Interviewing", "Offered", - "|Declined", + "|Cand Declined", + "Client Declined", "Placed" ); } - $x[8] = $statisticsData['placed']; - $x[7] = $statisticsData['passedOn']; - $x[6] = $statisticsData['offered'] + $x[8]; + $x[9] = $statisticsData['placed']; + $x[8] = $statisticsData['passedOn']; + $x[7] = $statisticsData['candidateDeclined']; + $x[6] = $statisticsData['offered'] + $x[9]; $x[5] = $statisticsData['interviewing'] + $x[6]; $x[4] = $statisticsData['submitted'] + $x[5]; $x[3] = $statisticsData['qualifying'] + $x[4]; @@ -515,12 +518,13 @@ private function miniJobOrderPipeline() $colorOptions = Graphs::getColorOptions(); $colorArray = array(); - for ($i = 0; $i < 9; $i++) + for ($i = 0; $i < 10; $i++) { $colorArray[] = new LinearGradient(new DarkGreen, new White, 0); } $colorArray[4] = new LinearGradient(new Orange, new White, 0); $colorArray[7] = new LinearGradient(new AlmostBlack, new White, 0); + $colorArray[8] = new LinearGradient(new AlmostBlack, new White, 0); $graph = new GraphComparisonChart( $y, $x, $colorArray, 'Status of Candidates', $this->width, diff --git a/modules/install/Schema.php b/modules/install/Schema.php index 5562d4ccf..0ce3ee6d3 100755 --- a/modules/install/Schema.php +++ b/modules/install/Schema.php @@ -1447,6 +1447,20 @@ public static function get() SET short_description = \'Not reached\' WHERE activity_type_id = 100; ', + '377' => ' + INSERT INTO candidate_joborder_status + (candidate_joborder_status_id, short_description, can_be_scheduled, triggers_email, is_enabled) + SELECT + 675, \'Candidate Declined\', 0, 0, 1 + FROM + DUAL + WHERE + NOT EXISTS ( + SELECT 1 + FROM candidate_joborder_status + WHERE candidate_joborder_status_id = 675 + ); + ', ); } diff --git a/modules/joborders/JobOrdersUI.php b/modules/joborders/JobOrdersUI.php index 8fd8fce5c..73c94b912 100755 --- a/modules/joborders/JobOrdersUI.php +++ b/modules/joborders/JobOrdersUI.php @@ -1573,10 +1573,17 @@ private function changeStatus() $mailerSettingsRS = $mailerSettings->getAll(); $candidateJoborderStatusSendsMessage = unserialize($mailerSettingsRS['candidateJoborderStatusSendsMessage']); + if (!is_array($candidateJoborderStatusSendsMessage)) + { + $candidateJoborderStatusSendsMessage = array(); + } foreach ($statusRS as $index => $status) { - $statusRS[$index]['triggersEmail'] = $candidateJoborderStatusSendsMessage[$status['statusID']]; + if (isset($candidateJoborderStatusSendsMessage[$status['statusID']])) + { + $statusRS[$index]['triggersEmail'] = $candidateJoborderStatusSendsMessage[$status['statusID']]; + } } /* Get the change status email template. */ diff --git a/modules/settings/EmailSettings.tpl b/modules/settings/EmailSettings.tpl index 9b12b4f11..02549401e 100755 --- a/modules/settings/EmailSettings.tpl +++ b/modules/settings/EmailSettings.tpl @@ -68,7 +68,8 @@ candidateJoborderStatusSendsMessage[PIPELINE_STATUS_SUBMITTED]==1): ?>checked>Status Change: Submitted
candidateJoborderStatusSendsMessage[PIPELINE_STATUS_INTERVIEWING]==1): ?>checked>Status Change: Interviewing
candidateJoborderStatusSendsMessage[PIPELINE_STATUS_OFFERED]==1): ?>checked>Status Change: Offered
- candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CLIENTDECLINED]==1): ?>checked>Status Change: Declined
+ candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CANDIDATEDECLINED]==1): ?>checked>Status Change: Candidate Declined
+ candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CLIENTDECLINED]==1): ?>checked>Status Change: Client Declined
candidateJoborderStatusSendsMessage[PIPELINE_STATUS_PLACED]==1): ?>checked>Status Change: Placed
emailTemplatesRS as $index => $data): ?> >
diff --git a/modules/settings/SettingsUI.php b/modules/settings/SettingsUI.php index ab51dd4ee..99a79715b 100755 --- a/modules/settings/SettingsUI.php +++ b/modules/settings/SettingsUI.php @@ -2064,6 +2064,20 @@ private function emailSettings() $mailerSettingsRS = $mailerSettings->getAll(); $candidateJoborderStatusSendsMessage = unserialize($mailerSettingsRS['candidateJoborderStatusSendsMessage']); + if (!is_array($candidateJoborderStatusSendsMessage)) + { + $candidateJoborderStatusSendsMessage = array(); + } + + $pipelines = new Pipelines($this->_siteID); + $statusRS = $pipelines->getStatusesForPicking(); + foreach ($statusRS as $status) + { + if (!isset($candidateJoborderStatusSendsMessage[$status['statusID']])) + { + $candidateJoborderStatusSendsMessage[$status['statusID']] = $status['triggersEmail']; + } + } $emailTemplates = new EmailTemplates($this->_siteID); $emailTemplatesRS = $emailTemplates->getAll(); @@ -2094,6 +2108,10 @@ private function onEmailSettings() } $candidateJoborderStatusSendsMessage = unserialize($mailerSettingsRS['candidateJoborderStatusSendsMessage']); + if (!is_array($candidateJoborderStatusSendsMessage)) + { + $candidateJoborderStatusSendsMessage = array(); + } $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CONTACTED] = (UserInterface::isChecked('statusChangeContacted', $_POST) ? 1 : 0); $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CANDIDATE_REPLIED] = (UserInterface::isChecked('statusChangeReplied', $_POST) ? 1 : 0); @@ -2101,7 +2119,22 @@ private function onEmailSettings() $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_SUBMITTED] = (UserInterface::isChecked('statusChangeSubmitted', $_POST) ? 1 : 0); $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_INTERVIEWING] = (UserInterface::isChecked('statusChangeInterviewing', $_POST) ? 1 : 0); $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_OFFERED] = (UserInterface::isChecked('statusChangeOffered', $_POST) ? 1 : 0); - $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CLIENTDECLINED] = (UserInterface::isChecked('statusChangeDeclined', $_POST) ? 1 : 0); + if (isset($_POST['statusChangeCandidateDeclined'])) + { + $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CANDIDATEDECLINED] = (UserInterface::isChecked('statusChangeCandidateDeclined', $_POST) ? 1 : 0); + } + else + { + $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CANDIDATEDECLINED] = (UserInterface::isChecked('statusChangeDeclined', $_POST) ? 1 : 0); + } + if (isset($_POST['statusChangeClientDeclined'])) + { + $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CLIENTDECLINED] = (UserInterface::isChecked('statusChangeClientDeclined', $_POST) ? 1 : 0); + } + else + { + $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_CLIENTDECLINED] = (UserInterface::isChecked('statusChangeDeclined', $_POST) ? 1 : 0); + } $candidateJoborderStatusSendsMessage[PIPELINE_STATUS_PLACED] = (UserInterface::isChecked('statusChangePlaced', $_POST) ? 1 : 0); $mailerSettings->set('candidateJoborderStatusSendsMessage', serialize($candidateJoborderStatusSendsMessage));