This Event will validates the Alternate Recurring Date against the Fiscal Year Start Date.
PHP
/**
* @var array $params
* @var array $data
*/
// charge_type means this is coming from the form
if (in_array($params['charge_type'], ['ANNUAL_RECURRING', 'SEMI_ANNUAL', 'QUARTERLY'])) {
if (isset($data['ALTERNATE_RECURRING_DATE'])) {
$arcDate = new DateTime($data['ALTERNATE_RECURRING_DATE']);
if ($arcDate->format('md') != '1001') {
$this->setError('Alternate Recurring Date needs to be set to Fiscal Date 10/01');
return false;
}
} else {
$this->setError('Alternate Recurring Date needs to be set to Fiscal Date 10/01');
return false;
}
}
return true;
This Event validates if Alternate Recurring Dates are missing on a Charge when trying to Complete a Service Desk Item.
PHP
/**
* @var array $params
* @var array $data
*/
if ($params['isCompletion'] && $params['completePromptConfirm']) {
$missingARCDates = $this->query(<<<SQL
SELECT COUNT(1) AS CNT FROM SERVICE_DESK_CHARGES SDC
INNER JOIN CHRG_CATALOG CC ON CC.RECID = SDC.CHRG_CATALOG_RECID
INNER JOIN LISTS CHARGE_TYPE ON CHARGE_TYPE.RECID = CC.CHARGE_TYPE_LISTS_RECID
WHERE SERVICE_DESK_ACTIONS_RECID = :sdaRecid
AND CHARGE_TYPE.CODE = 'ANNUAL_RECURRING'
AND SDC.ALTERNATE_RECURRING_DATE IS NULL
SQL, [':sdaRecid' => $data['RECID']]
);
$this->debug($missingARCDates);
if ((int) $missingARCDates[0]['CNT'] > 0) {
$this->setError('Charge(s) are missing the Alternate Recurring Date. The Date needs to be set to Fiscal Date 10/01');
return false;
}
}
return true;