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));