示例#1
0
 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;
 }