PCR-360 Wiki

Annual Recurring Charge's Recurring Date Validation

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;