function createInvoiceNumber($orderDetails, &$invoiceNumber) { $orderDetails = (array) $orderDetails; $db = JFactory::getDBO(); if (!isset($orderDetails['virtuemart_order_id'])) { vmWarn('createInvoiceNumber $orderDetails has no virtuemart_order_id ', $orderDetails); vmdebug('createInvoiceNumber $orderDetails has no virtuemart_order_id ', $orderDetails); } $q = 'SELECT * FROM `#__virtuemart_invoices` WHERE `virtuemart_order_id`= "' . $orderDetails['virtuemart_order_id'] . '" '; // AND `order_status` = "'.$orderDetails->order_status.'" '; $db->setQuery($q); $result = $db->loadAssoc(); if (!class_exists('ShopFunctions')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'shopfunctions.php'; } if (!$result or empty($result['invoice_number'])) { $data['virtuemart_order_id'] = $orderDetails['virtuemart_order_id']; $data['order_status'] = $orderDetails['order_status']; $data['virtuemart_vendor_id'] = $orderDetails['virtuemart_vendor_id']; JPluginHelper::importPlugin('vmshopper'); JPluginHelper::importPlugin('vmpayment'); $dispatcher = JDispatcher::getInstance(); // plugin returns invoice number, 0 if it does not want an invoice number to be created by Vm $plg_datas = $dispatcher->trigger('plgVmOnUserInvoice', array($orderDetails, &$data)); if (!isset($data['invoice_number'])) { // check the default configuration $orderstatusForInvoice = VmConfig::get('inv_os', array('C')); if (!is_array($orderstatusForInvoice)) { $orderstatusForInvoice = array($orderstatusForInvoice); } //for backward compatibility 2.0.8e $pdfInvoice = (int) VmConfig::get('pdf_invoice', 0); // backwards compatible $force_create_invoice = vRequest::getCmd('create_invoice', -1); // florian : added if pdf invoice are enabled if (in_array($orderDetails['order_status'], $orderstatusForInvoice) or $pdfInvoice == 1 or $force_create_invoice == $orderDetails['order_create_invoice_pass']) { $q = 'SELECT COUNT(1) FROM `#__virtuemart_invoices` WHERE `virtuemart_vendor_id`= "' . $orderDetails['virtuemart_vendor_id'] . '" '; // AND `order_status` = "'.$orderDetails->order_status.'" '; $db->setQuery($q); $count = $db->loadResult() + 1; if (empty($data['invoice_number'])) { $date = date("Y-m-d"); if (!class_exists('vmCrypt')) { require VMPATH_ADMIN . DS . 'helpers' . DS . 'vmcrypt.php'; } $data['invoice_number'] = str_replace('-', '', substr($date, 2, 8)) . vmCrypt::getHumanToken(4) . '0' . $count; } } else { return false; } } $table = $this->getTable('invoices'); $table->bindChecknStore($data); $invoiceNumber = array($table->invoice_number, $table->created_on); } elseif (ShopFunctions::InvoiceNumberReserved($result['invoice_number'])) { $invoiceNumber = array($result['invoice_number'], $result['created_on']); return true; } else { $invoiceNumber = array($result['invoice_number'], $result['created_on']); } return true; }