Exemplo n.º 1
0
    ?>
			<tr>
				<td class="key"><strong><?php 
    echo vmText::_('COM_VIRTUEMART_COUPON_CODE');
    ?>
</strong></td>
				<td><?php 
    echo $this->orderbt->coupon_code;
    ?>
</td>
			</tr>
			<?php 
}
?>
			<?php 
if ($this->orderbt->invoiceNumber and !shopFunctionsF::InvoiceNumberReserved($this->orderbt->invoiceNumber)) {
    $invoice_url = juri::root() . 'index.php?option=com_virtuemart&view=invoice&layout=invoice&format=pdf&tmpl=component&virtuemart_order_id=' . $this->orderbt->virtuemart_order_id . '&order_number=' . $this->orderbt->order_number . '&order_pass='******'COM_VIRTUEMART_INVOICE_PRINT') . "\"  href=\"javascript:void window.open('{$invoice_url}', 'win2', 'status=no,toolbar=no,scrollbars=yes,titlebar=no,menubar=no,resizable=yes,width=640,height=480,directories=no,location=no');\"  >";
    $invoice_link .= $this->orderbt->invoiceNumber . '</a>';
    ?>
			<tr>
				<td class="key"><strong><?php 
    echo vmText::_('COM_VIRTUEMART_INVOICE');
    ?>
</strong></td>
				<td><?php 
    echo $invoice_link;
    ?>
</td>
			</tr>
			<?php 
Exemplo n.º 2
0
 function getInvoicePDF($orderDetails = 0, $viewName = 'invoice', $layout = 'invoice', $format = 'html', $force = false)
 {
     // 		$force = true;
     $path = tsmConfig::get('forSale_path', 0);
     if (empty($path)) {
         vmError('No path set to store invoices');
         return false;
     } else {
         $path .= shopFunctionsF::getInvoiceFolderName() . DS;
         if (!file_exists($path)) {
             vmError('Path wrong to store invoices, folder invoices does not exist ' . $path);
             return false;
         } else {
             if (!is_writable($path)) {
                 vmError('Cannot store pdf, directory not writeable ' . $path);
                 return false;
             }
         }
     }
     $orderModel = tmsModel::getModel('orders');
     $invoiceNumberDate = array();
     if (!$orderModel->createInvoiceNumber($orderDetails['details']['BT'], $invoiceNumberDate)) {
         return false;
     }
     if (!empty($invoiceNumberDate[0])) {
         $invoiceNumber = $invoiceNumberDate[0];
     } else {
         $invoiceNumber = FALSE;
     }
     if (!$invoiceNumber or empty($invoiceNumber)) {
         vmError('Cant create pdf, createInvoiceNumber failed');
         return 0;
     }
     if (shopFunctionsF::InvoiceNumberReserved($invoiceNumber)) {
         return 0;
     }
     //$path .= preg_replace('/[^A-Za-z0-9_\-\.]/', '_', 'vm'.$layout.'_'.$invoiceNumber.'.pdf');
     $path .= shopFunctionsF::getInvoiceName($invoiceNumber, $layout) . '.pdf';
     if (file_exists($path) and !$force) {
         return $path;
     }
     //We come from the be, so we need to load the FE language
     tsmConfig::loadJLang('com_virtuemart', true);
     $this->addViewPath(VMPATH_SITE . DS . 'views');
     $view = $this->getView($viewName, $format);
     $this->writeJs = false;
     $view->addTemplatePath(VMPATH_SITE . DS . 'views' . DS . $viewName . DS . 'tmpl');
     if (!class_exists('VmTemplate')) {
         require VMPATH_SITE . DS . 'helpers' . DS . 'vmtemplate.php';
     }
     $template = VmTemplate::loadVmTemplateStyle();
     $templateName = VmTemplate::setTemplate($template);
     if (!empty($templateName)) {
         $TemplateOverrideFolder = JPATH_SITE . DS . "templates" . DS . $templateName . DS . "html" . DS . "com_virtuemart" . DS . "invoice";
         if (file_exists($TemplateOverrideFolder)) {
             $view->addTemplatePath($TemplateOverrideFolder);
         }
     }
     $view->invoiceNumber = $invoiceNumberDate[0];
     $view->invoiceDate = $invoiceNumberDate[1];
     $view->orderDetails = $orderDetails;
     $view->uselayout = $layout;
     $view->showHeaderFooter = false;
     $vendorModel = tmsModel::getModel('vendor');
     $virtuemart_vendor_id = 1;
     //We could set this automatically by the vendorId stored in the order.
     $vendor = $vendorModel->getVendor($virtuemart_vendor_id);
     $metadata = array('title' => tsmText::sprintf('COM_VIRTUEMART_INVOICE_TITLE', $vendor->vendor_store_name, $view->invoiceNumber, $orderDetails['details']['BT']->order_number), 'keywords' => tsmText::_('COM_VIRTUEMART_INVOICE_CREATOR'));
     return VmPdf::createVmPdf($view, $path, 'F', $metadata);
 }
Exemplo n.º 3
0
 static function InvoiceNumberReserved($invoice_number)
 {
     if (!class_exists('ShopFunctionsF')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     return shopFunctionsF::InvoiceNumberReserved($invoice_number);
 }
Exemplo n.º 4
0
 public function display($tpl = null)
 {
     $document = JFactory::getDocument();
     tsmConfig::loadJLang('com_virtuemart_shoppers', true);
     /* It would be so nice to be able to load the override of the FE additionally from here
     		 * joomlaWantsThisFolder\language\overrides\en-GB.override.ini
     		 * $jlang =JFactory::getLanguage();
     		$tag = $jlang->getTag();
     		$jlang->load('override', 'language/overrides',$tag,true);*/
     //We never want that the cart is indexed
     $document->setMetaData('robots', 'NOINDEX, NOFOLLOW, NOARCHIVE, NOSNIPPET');
     if (empty($this->uselayout)) {
         $layout = vRequest::getCmd('layout', 'mail');
     } else {
         $layout = $this->uselayout;
     }
     switch ($layout) {
         case 'invoice':
             $this->doctype = $layout;
             $title = tsmText::_('COM_VIRTUEMART_INVOICE');
             break;
         case 'deliverynote':
             $this->doctype = $layout;
             $layout = 'invoice';
             $title = tsmText::_('COM_VIRTUEMART_DELIVERYNOTE');
             break;
         case 'confirmation':
             $this->doctype = $layout;
             $layout = 'confirmation';
             $title = tsmText::_('COM_VIRTUEMART_CONFIRMATION');
             break;
         case 'mail':
             if (tsmConfig::get('order_mail_html')) {
                 $layout = 'mail_html';
             } else {
                 $layout = 'mail_raw';
             }
     }
     $this->setLayout($layout);
     $tmpl = vRequest::getCmd('tmpl');
     $this->print = false;
     if ($tmpl and !$this->isPdf) {
         $this->print = true;
     }
     $this->format = vRequest::getCmd('format', 'html');
     if ($layout == 'invoice') {
         $document->setTitle(tsmText::_('COM_VIRTUEMART_INVOICE'));
     }
     $order_print = false;
     if ($this->print and $this->format == 'html') {
         $order_print = true;
     }
     $orderModel = tmsModel::getModel('orders');
     $orderDetails = $this->orderDetails;
     if ($orderDetails == 0) {
         $orderDetails = $orderModel->getMyOrderDetails();
         if (!$orderDetails) {
             echo tsmText::_('COM_VIRTUEMART_CART_ORDER_NOTFOUND');
             vmdebug('COM_VIRTUEMART_CART_ORDER_NOTFOUND and $orderDetails ', $orderDetails);
             return;
         } else {
             if (empty($orderDetails['details'])) {
                 echo tsmText::_('COM_VIRTUEMART_CART_ORDER_DETAILS_NOTFOUND');
                 return;
             }
         }
     }
     if (empty($orderDetails['details'])) {
         echo tsmText::_('COM_VIRTUEMART_ORDER_NOTFOUND');
         return 0;
     }
     if (!empty($orderDetails['details']['BT']->order_language)) {
         tsmConfig::loadJLang('com_virtuemart', true, $orderDetails['details']['BT']->order_language);
         tsmConfig::loadJLang('com_virtuemart_shoppers', true, $orderDetails['details']['BT']->order_language);
         tsmConfig::loadJLang('com_virtuemart_orders', true, $orderDetails['details']['BT']->order_language);
     }
     //QuicknDirty, caching of the result VirtueMartModelCustomfields::calculateModificators must be deleted,
     /*if(!empty($orderDetails['items']) and is_array($orderDetails['items'])){
     
     			$nbPr = count($orderDetails['items']);
     
     			for($k = 0; $k<$nbPr ;$k++){
     				$orderDetails['items'][$k]->modificatorSum = null;
     			}
     			vmdebug('$nbPr',$nbPr);
     		}*/
     $this->assignRef('orderDetails', $orderDetails);
     // if it is order print, invoice number should not be created, either it is there, either it has not been created
     if (empty($this->invoiceNumber) and !$order_print) {
         $invoiceNumberDate = array();
         if ($orderModel->createInvoiceNumber($orderDetails['details']['BT'], $invoiceNumberDate)) {
             if (shopFunctionsF::InvoiceNumberReserved($invoiceNumberDate[0])) {
                 if ($this->uselayout != 'mail') {
                     $document->setTitle(tsmText::_('COM_VIRTUEMART_PAYMENT_INVOICE'));
                     return;
                 }
             }
             $this->invoiceNumber = $invoiceNumberDate[0];
             $this->invoiceDate = $invoiceNumberDate[1];
             if (!$this->invoiceNumber or empty($this->invoiceNumber)) {
                 vmError('Cant create pdf, createInvoiceNumber failed');
                 if ($this->uselayout != 'mail') {
                     return;
                 }
             }
         } else {
             // Could OR should not create Invoice Number, createInvoiceNumber failed
             if ($this->uselayout != 'mail') {
                 return;
             }
         }
     }
     $virtuemart_vendor_id = $orderDetails['details']['BT']->virtuemart_vendor_id;
     $emailCurrencyId = $orderDetails['details']['BT']->user_currency_id;
     $exchangeRate = FALSE;
     if (!class_exists('vmPSPlugin')) {
         require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php';
     }
     JPluginHelper::importPlugin('vmpayment');
     $dispatcher = JDispatcher::getInstance();
     $dispatcher->trigger('plgVmgetEmailCurrency', array($orderDetails['details']['BT']->virtuemart_paymentmethod_id, $orderDetails['details']['BT']->virtuemart_order_id, &$emailCurrencyId));
     if (!class_exists('CurrencyDisplay')) {
         require VMPATH_ADMIN . DS . 'helpers' . DS . 'currencydisplay.php';
     }
     $currency = CurrencyDisplay::getInstance($emailCurrencyId, $virtuemart_vendor_id);
     if ($emailCurrencyId) {
         $currency->exchangeRateShopper = $orderDetails['details']['BT']->user_currency_rate;
     }
     $this->assignRef('currency', $currency);
     //Create BT address fields
     $userFieldsModel = tmsModel::getModel('userfields');
     $_userFields = $userFieldsModel->getUserFields('account', array('captcha' => true, 'delimiters' => true), array('delimiter_userinfo', 'user_is_vendor', 'username', 'password', 'password2', 'agreed', 'address_type'));
     $userfields = $userFieldsModel->getUserFieldsFilled($_userFields, $orderDetails['details']['BT']);
     $this->assignRef('userfields', $userfields);
     //Create ST address fields
     $orderst = array_key_exists('ST', $orderDetails['details']) ? $orderDetails['details']['ST'] : $orderDetails['details']['BT'];
     $shipmentFieldset = $userFieldsModel->getUserFields('shipment', array(), array('delimiter_userinfo', 'username', 'email', 'password', 'password2', 'agreed', 'address_type'));
     $shipmentfields = $userFieldsModel->getUserFieldsFilled($shipmentFieldset, $orderst);
     $this->assignRef('shipmentfields', $shipmentfields);
     $civility = "";
     foreach ($userfields['fields'] as $field) {
         if ($field['name'] == "title") {
             $civility = $field['value'];
             break;
         }
     }
     $company = empty($orderDetails['details']['BT']->company) ? "" : $orderDetails['details']['BT']->company . ", ";
     $shopperName = $company . $civility . ' ' . $orderDetails['details']['BT']->first_name . ' ' . $orderDetails['details']['BT']->last_name;
     $this->assignRef('shopperName', $shopperName);
     $this->assignRef('civility', $civility);
     // Create an array to allow orderlinestatuses to be translated
     // We'll probably want to put this somewhere in ShopFunctions..
     $orderStatusModel = tmsModel::getModel('orderstatus');
     $_orderstatuses = $orderStatusModel->getOrderStatusList(true);
     $orderstatuses = array();
     foreach ($_orderstatuses as $_ordstat) {
         $orderstatuses[$_ordstat->order_status_code] = tsmText::_($_ordstat->order_status_name);
     }
     $this->assignRef('orderstatuslist', $orderstatuses);
     $this->assignRef('orderstatuses', $orderstatuses);
     $_itemStatusUpdateFields = array();
     $_itemAttributesUpdateFields = array();
     foreach ($orderDetails['items'] as $_item) {
         // 			$_itemStatusUpdateFields[$_item->virtuemart_order_item_id] = JHtml::_('select.genericlist', $orderstatuses, "item_id[".$_item->virtuemart_order_item_id."][order_status]", 'class="selectItemStatusCode"', 'order_status_code', 'order_status_name', $_item->order_status, 'order_item_status'.$_item->virtuemart_order_item_id,true);
         $_itemStatusUpdateFields[$_item->virtuemart_order_item_id] = $_item->order_status;
     }
     if (empty($orderDetails['shipmentName'])) {
         if (!class_exists('vmPSPlugin')) {
             require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php';
         }
         JPluginHelper::importPlugin('vmshipment');
         $dispatcher = JDispatcher::getInstance();
         $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEShipment', array($orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_shipmentmethod_id, &$orderDetails['shipmentName']));
     }
     if (empty($orderDetails['paymentName'])) {
         if (!class_exists('vmPSPlugin')) {
             require JPATH_VM_PLUGINS . DS . 'vmpsplugin.php';
         }
         JPluginHelper::importPlugin('vmpayment');
         $dispatcher = JDispatcher::getInstance();
         $returnValues = $dispatcher->trigger('plgVmOnShowOrderFEPayment', array($orderDetails['details']['BT']->virtuemart_order_id, $orderDetails['details']['BT']->virtuemart_paymentmethod_id, &$orderDetails['paymentName']));
     }
     $vendorModel = tmsModel::getModel('vendor');
     $vendor = $vendorModel->getVendor($virtuemart_vendor_id);
     $vendorModel->addImages($vendor);
     $vendor->vendorFields = $vendorModel->getVendorAddressFields($virtuemart_vendor_id);
     if (tsmConfig::get('enable_content_plugin', 0)) {
         if (!class_exists('shopFunctionsF')) {
             require VMPATH_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
         }
         shopFunctionsF::triggerContentPlugin($vendor, 'vendor', 'vendor_store_desc');
         shopFunctionsF::triggerContentPlugin($vendor, 'vendor', 'vendor_terms_of_service');
         shopFunctionsF::triggerContentPlugin($vendor, 'vendor', 'vendor_legal_info');
     }
     $this->assignRef('vendor', $vendor);
     if (strpos($layout, 'mail') !== false) {
         $lineSeparator = "<br />";
     } else {
         $lineSeparator = "\n";
     }
     $this->assignRef('headFooter', $this->showHeaderFooter);
     //Attention, this function will be removed, it wont be deleted, but it is obsoloete in any view.html.php
     $vendorAddress = shopFunctionsF::renderVendorAddress($virtuemart_vendor_id, $lineSeparator);
     $this->assignRef('vendorAddress', $vendorAddress);
     $vendorEmail = $vendorModel->getVendorEmail($virtuemart_vendor_id);
     $vars['vendorEmail'] = $vendorEmail;
     // this is no setting in BE to change the layout !
     //shopFunctionsF::setVmTemplate($this,0,0,$layoutName);
     if (strpos($layout, 'mail') !== false) {
         if ($this->doVendor) {
             //Old text key COM_VIRTUEMART_MAIL_SUBJ_VENDOR_C
             $this->subject = tsmText::sprintf('COM_VIRTUEMART_MAIL_SUBJ_VENDOR_' . $orderDetails['details']['BT']->order_status, $this->shopperName, strip_tags($currency->priceDisplay($orderDetails['details']['BT']->order_total, $currency)), $orderDetails['details']['BT']->order_number);
             $recipient = 'vendor';
         } else {
             $this->subject = tsmText::sprintf('COM_VIRTUEMART_MAIL_SUBJ_SHOPPER_' . $orderDetails['details']['BT']->order_status, $vendor->vendor_store_name, strip_tags($currency->priceDisplay($orderDetails['details']['BT']->order_total, $currency)), $orderDetails['details']['BT']->order_number);
             $recipient = 'shopper';
         }
         $this->assignRef('recipient', $recipient);
     }
     $tpl = null;
     parent::display($tpl);
 }