Back to PhocacartOrder class

Method getPaymentReferenceNumber

public static
getPaymentReferenceNumber
(mixed $orderId, mixed $date = false, mixed $prmNumber = false, mixed $idNumberA = array())

Method getPaymentReferenceNumber - Source code

public static function getPaymentReferenceNumber($orderId, $date = false, $prmNumber = false, $idNumberA = array())
{
    if ($prmNumber) {
        return $prmNumber;
        // the number is stored in database yet
    }
    $app = Factory::getApplication();
    $paramsC = PhocacartUtils::getComponentParameters();
    $prn_number_format = $paramsC->get('prn_number_format', '{prefix}{year}{orderid}{suffix}');
    $prn_number_prefix = $paramsC->get('prn_number_prefix', '');
    $prn_number_suffix = $paramsC->get('prn_number_suffix', '');
    $order_id_length_prn = $paramsC->get('order_id_length_prn', '10');
    $prn_number_id_basis = $paramsC->get('prn_number_id_basis', 'A');
    $date = !$date ? self::getOrderDate($orderId) : $date;
    $dateO = PhocacartDate::splitDate($date);
    $id = $orderId;
    if (!empty($idNumberA)) {
        switch ($prn_number_id_basis) {
            case 'O':
                if (isset($idNumberA['order']) && $idNumberA['order'] > 0) {
                    $id = (int) $idNumberA['order'];
                } else {
                    // PRN can stay empty, e.g. in case
                    // - it is created from invoice number
                    // - but invoice was not created yet - waiting for changed status
                    return '';
                }
                break;
            case 'I':
                if (isset($idNumberA['invoice']) && $idNumberA['invoice'] > 0) {
                    $id = (int) $idNumberA['invoice'];
                } else {
                    return '';
                }
                break;
            case 'R':
                if (isset($idNumberA['receipt']) && $idNumberA['receipt'] > 0) {
                    $id = (int) $idNumberA['receipt'];
                } else {
                    return '';
                }
                break;
            case 'A':
            default:
                // Do nothing, ID is autoincrement - $orderId
                break;
        }
    }
    $id = str_pad($id, $order_id_length_prn, '0', STR_PAD_LEFT);
    $o = str_replace('{orderid}', $id, $prn_number_format);
    $o = str_replace('{prefix}', $prn_number_prefix, $o);
    $o = str_replace('{suffix}', $prn_number_suffix, $o);
    $o = str_replace('{year}', $dateO['year'], $o);
    $o = str_replace('{month}', $dateO['month'], $o);
    $o = str_replace('{day}', $dateO['day'], $o);
    return $o;
}