public static
getPaymentReferenceNumber
(mixed $orderId, mixed $date = false, mixed $prmNumber = false, mixed $idNumberA = array())
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;
}