public static bool|mixed
getInvoiceNumber
(mixed $orderId, mixed $date = false, mixed $invoiceNumber = false, mixed $invoiceNumberId = false)
/**
* @param $orderId
* @param bool $date
* @param bool $invoiceNumber ... is human readable number
* @param bool $invoiceNumberId ... is number id which must not be the same like autoincrement because of montly or yearly created numbers, see parameter: invoice_creating_numbers
* @return bool|mixed
*/
public static function getInvoiceNumber($orderId, $date = false, $invoiceNumber = false, $invoiceNumberId = false)
{
if ($invoiceNumber) {
return $invoiceNumber;
// the number is stored in database yet
}
$paramsC = PhocacartUtils::getComponentParameters();
$invoice_number_format = $paramsC->get('invoice_number_format', '{prefix}{year}{orderid}{suffix}');
$invoice_number_prefix = $paramsC->get('invoice_number_prefix', '');
$invoice_number_suffix = $paramsC->get('invoice_number_suffix', '');
$order_id_length_invoice = $paramsC->get('order_id_length_invoice', '10');
$date = !$date ? self::getOrderDate($orderId) : $date;
$dateO = PhocacartDate::splitDate($date);
$id = $orderId;
if ($invoiceNumberId && $invoiceNumberId > 0) {
$id = $invoiceNumberId;
// not autoincrement but specific ID based on year or month see parameter: invoice_creating_numbers
} else {
return '';
}
$id = str_pad($id, $order_id_length_invoice, '0', STR_PAD_LEFT);
$o = str_replace('{orderid}', $id, $invoice_number_format);
$o = str_replace('{prefix}', $invoice_number_prefix, $o);
$o = str_replace('{suffix}', $invoice_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;
/* $order_date = $orderDate != '' ? $orderDate : self::getOrderDate($orderId);
$invoice_prefix = $invoicePrefix != '' ? $invoicePrefix : $paramsC->get('invoice_prefix', '');
$invoice_number_format = $invoiceNumberFormat != '' ? $invoiceNumberFormat : $paramsC->get( 'invoice_number_format', '');
$invoice_number_chars = $invoiceNumberChars != '' ? $invoiceNumberChars : $paramsC->get( 'invoice_number_chars', 12);
$order_date = date("Ymd", strtotime($order_date));
$iN = $invoice_number_format;
$iN = str_replace('{prefix}', $invoice_prefix, $iN);
$iN = str_replace('{orderdate}', $order_date, $iN);
$pos = strpos($iN, '{orderid}');
if ($pos === false) {
$l1 = strlen($iN);
$l2 = 0;
//$l = $invoice_number_chars - $l1 - $l2;
$l = $l1;
if ($l < 0) {$l = 0;}
$iN = str_pad($iN, $invoice_number_chars, '0', STR_PAD_RIGHT);
} else {
$l1 = strlen(str_replace('{orderid}', '', $iN));
//$l2 = strlen($orderId);
$l = $invoice_number_chars - $l1;
if ($l < 0) {$l = 0;}
$orderId = str_pad($orderId, $l, '0', STR_PAD_LEFT);
$iN = str_replace('{orderid}', $orderId, $iN);
}
return $iN;*/
}