Back to PhocacartOrder class

Method getNumberId

public static int|mixed
getNumberId
(mixed $type = 'order', mixed $orderId = 0, mixed $date = false)
Parameters
  • string $type order | receipt | invoice
  • $orderId
  • mixed $date
Returns
  • int|mixed Defines which numbers will be used, if set by auto increment or by year or by month Example: auto increment can be 1250 but it is new year so based on year the number will be 1 (even autoincrement will be 1251) Number can start each month/year at 1 because of accounting ... be aware the numbers need to include prefixes

Method getNumberId - Source code

/**
 * @param string $type order | receipt | invoice
 * @param $orderId
 * @param mixed $date
 * @return int|mixed
 *
 * Defines which numbers will be used, if set by auto increment or by year or by month
 * Example: auto increment can be 1250 but it is new year so based on year the number will be 1 (even autoincrement will be 1251)
 * Number can start each month/year at 1 because of accounting ... be aware the numbers need to include prefixes
 */
public static function getNumberId($type = 'order', $orderId = 0, $date = false)
{
    $paramsC = PhocacartUtils::getComponentParameters();
    switch ($type) {
        case 'invoice':
            $creating_numbers = $paramsC->get('invoice_creating_numbers', 'A');
            $column = 'invoice_number_id';
            break;
        case 'receipt':
            $creating_numbers = $paramsC->get('receipt_creating_numbers', 'A');
            $column = 'receipt_number_id';
            break;
        case 'queue':
            $creating_numbers = $paramsC->get('queue_creating_numbers', 'A');
            $column = 'queue_number_id';
            break;
        case 'order':
        default:
            $creating_numbers = $paramsC->get('order_creating_numbers', 'A');
            $column = 'order_number_id';
            break;
    }
    switch ($creating_numbers) {
        case 'Y':
            // Yearly based
            $date = !$date ? self::getOrderDate($orderId) : $date;
            $time = strtotime($date);
            $year = date("Y", $time);
            $db = Factory::getDBO();
            $query = ' SELECT MAX(' . $column . ') FROM #__phocacart_orders WHERE YEAR(date) = ' . (int) $year . ' ORDER BY date LIMIT 1';
            $db->setQuery($query);
            $id = $db->loadResult();
            if (!$id || $id == 0) {
                return 1;
            } else {
                $id++;
                return $id;
            }
            break;
        case 'M':
            // Montly based
            $date = !$date ? self::getOrderDate($orderId) : $date;
            $time = strtotime($date);
            $year = date("Y", $time);
            $month = date("m", $time);
            $db = Factory::getDBO();
            $query = ' SELECT MAX(' . $column . ') FROM #__phocacart_orders WHERE YEAR(date) = ' . (int) $year . ' AND MONTH(date) = ' . (int) $month . ' ORDER BY date LIMIT 1';
            $db->setQuery($query);
            $id = $db->loadResult();
            if (!$id || $id == 0) {
                return 1;
            } else {
                $id++;
                return $id;
            }
            break;
        case 'D':
            // Daily based
            $date = !$date ? self::getOrderDate($orderId) : $date;
            $time = strtotime($date);
            $year = date("Y", $time);
            $month = date("m", $time);
            $day = date("d", $time);
            $db = Factory::getDBO();
            $query = ' SELECT MAX(' . $column . ') FROM #__phocacart_orders WHERE YEAR(date) = ' . (int) $year . ' AND MONTH(date) = ' . (int) $month . ' AND DAY(date) = ' . (int) $day . ' ORDER BY date LIMIT 1';
            $db->setQuery($query);
            $id = $db->loadResult();
            if (!$id || $id == 0) {
                return 1;
            } else {
                $id++;
                return $id;
            }
            break;
        case 'A':
        default:
            // OrderId stay autoincrement
            return $orderId;
            break;
    }
}