/** * Show the details of an order and allow them to print an invoice */ private function ViewOrderDetails() { $GLOBALS['SNIPPETS']['AccountOrderItemRow'] = ""; $count = 0; if (!isset($_GET['order_id']) || !is_numeric($_GET['order_id'])) { redirect('account.php?action=view_orders'); } $GLOBALS['FlassMessage'] = GetFlashMessageBoxes(); // Retrieve the completed order that matches the customers user id $orderId = (int)$_GET['order_id']; $GLOBALS['OrderId'] = $orderId; $customerId = getClass('ISC_CUSTOMER')->getcustomerId(); $query = " SELECT *, ( SELECT CONCAT(custconfirstname, ' ', custconlastname) FROM [|PREFIX|]customers WHERE customerid=ordcustid ) AS custname, ( SELECT statusdesc FROM [|PREFIX|]order_status WHERE statusid=ordstatus ) AS ordstatustext FROM [|PREFIX|]orders WHERE ordcustid='".(int)$customerId."' AND orderid='".(int)$orderId."' AND deleted = 0 "; $result = $GLOBALS['ISC_CLASS_DB']->query($query); $row = $GLOBALS['ISC_CLASS_DB']->fetch($result); if(!$row) { redirect('account.php?action=view_orders'); } $GLOBALS['DisableReturnButton'] = ""; if (!gzte11(ISC_LARGEPRINT)) { $GLBOALS['DisableReturnButton'] = "none"; } $order = $row; // Fetch the shipping addresses for this order $addresses = array(); $query = " SELECT * FROM [|PREFIX|]order_addresses WHERE order_id='".$order['orderid']."' "; $result = $GLOBALS['ISC_CLASS_DB']->query($query); while($address = $GLOBALS['ISC_CLASS_DB']->fetch($result)) { $addresses[$address['id']] = $address; } // Fetch the shipping details for the order $query = " SELECT * FROM [|PREFIX|]order_shipping WHERE order_id=".$order['orderid']; $result = $GLOBALS['ISC_CLASS_DB']->query($query); while($shipping = $GLOBALS['ISC_CLASS_DB']->fetch($result)) { $addresses[$shipping['order_address_id']]['shipping'] = $shipping; } $GLOBALS['OrderComments'] = ''; if($row['ordcustmessage'] != '') { $GLOBALS['OrderComments'] = nl2br(isc_html_escape($row['ordcustmessage'])); } else { $GLOBALS['HideOrderComments'] = 'display: none'; } if(OrderIsComplete($row['ordstatus'])) { if (!gzte11(ISC_LARGEPRINT)) { $GLOBALS['DisableReturnButton'] = "none"; } if ($row['ordstatus'] == 4 || GetConfig('EnableReturns') == 0) { $GLOBALS['DisableReturnButton'] = "none"; } $GLOBALS['HideOrderStatus'] = "none"; $orderComplete = true; } else { $GLOBALS['HideOrderStatus'] = ''; $GLOBALS['OrderStatus'] = $row['ordstatustext']; $GLOBALS['DisableReturnButton'] = "none"; $orderComplete = false; } // Hide print order invoive if it's a incomplete order $GLOBALS['ShowOrderActions'] = ''; if(!$row['ordstatus']) { $GLOBALS['ShowOrderActions'] = 'display:none'; } $GLOBALS['OrderDate'] = isc_date(GetConfig('ExtendedDisplayDateFormat'), $row['orddate']); $GLOBALS['OrderTotal'] = CurrencyConvertFormatPrice($row['total_inc_tax'], $row['ordcurrencyid'], $row['ordcurrencyexchangerate'], true); // Format the billing address $GLOBALS['ShipFullName'] = isc_html_escape($row['ordbillfirstname'].' '.$row['ordbilllastname']); $GLOBALS['ShipCompany'] = ''; if($row['ordbillcompany']) { $GLOBALS['ShipCompany'] = '<br />'.isc_html_escape($row['ordbillcompany']); } $GLOBALS['ShipAddressLines'] = isc_html_escape($row['ordbillstreet1']); if ($row['ordbillstreet2'] != "") { $GLOBALS['ShipAddressLines'] .= '<br />' . isc_html_escape($row['ordbillstreet2']); } $GLOBALS['ShipSuburb'] = isc_html_escape($row['ordbillsuburb']); $GLOBALS['ShipState'] = isc_html_escape($row['ordbillstate']); $GLOBALS['ShipZip'] = isc_html_escape($row['ordbillzip']); $GLOBALS['ShipCountry'] = isc_html_escape($row['ordbillcountry']); $GLOBALS['ShipPhone'] = ""; $GLOBALS['BillingAddress'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet("AddressLabel"); // Is there a shipping address, or is it a digital download? if ($order['ordisdigital']) { $GLOBALS['HideSingleShippingAddress'] = 'display: none'; } else if ($order['shipping_address_count'] > 1) { $GLOBALS['ShippingAddress'] = GetLang('OrderWillBeShippedToMultipleAddresses'); $GLOBALS['HideItemDetailsHeader'] = 'display:none;'; } else { $shippingAddress = current($addresses); $GLOBALS['ShipFullName'] = isc_html_escape($shippingAddress['first_name'].' '.$shippingAddress['last_name']); $GLOBALS['ShipCompany'] = ''; if($shippingAddress['company']) { $GLOBALS['ShipCompany'] = '<br />'.isc_html_escape($shippingAddress['company']); } $GLOBALS['ShipAddressLines'] = isc_html_escape($shippingAddress['address_1']); if ($shippingAddress['address_2'] != "") { $GLOBALS['ShipAddressLines'] .= '<br />' . isc_html_escape($shippingAddress['address_2']); } $GLOBALS['ShipSuburb'] = isc_html_escape($shippingAddress['city']); $GLOBALS['ShipState'] = isc_html_escape($shippingAddress['state']); $GLOBALS['ShipZip'] = isc_html_escape($shippingAddress['zip']); $GLOBALS['ShipCountry'] = isc_html_escape($shippingAddress['country']); $GLOBALS['ShipPhone'] = ""; $GLOBALS['ShippingAddress'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet("AddressLabel"); } $itemTotalColumn = 'total_ex_tax'; if(getConfig('taxDefaultTaxDisplayOrders') == TAX_PRICES_DISPLAY_INCLUSIVE) { $itemTotalColumn = 'total_inc_tax'; } $GLOBALS['OrderTotalRows'] = ''; $totalRows = getOrderTotalRows($order); foreach($totalRows as $id => $totalRow) { $GLOBALS['ISC_CLASS_TEMPLATE']->assign('label', $totalRow['label']); $GLOBALS['ISC_CLASS_TEMPLATE']->assign('classNameAppend', ucfirst($id)); $value = currencyConvertFormatPrice( $totalRow['value'], $row['ordcurrencyid'], $row['ordcurrencyexchangerate'] ); $GLOBALS['ISC_CLASS_TEMPLATE']->assign('value', $value); $GLOBALS['OrderTotalRows'] .= $GLOBALS['ISC_CLASS_TEMPLATE']->getSnippet('AccountOrderTotalRow'); } $OrderProducts = array(); $ProductIds = array(); // Load up the items in this order $query = " SELECT o.*, op.*, oa.address_1, oa.address_2, oa.city, oa.zip, oa.country, oa.state, p.productid, p.prodpreorder, p.prodreleasedate, p.prodpreordermessage FROM [|PREFIX|]orders o LEFT JOIN [|PREFIX|]order_products op ON op.orderorderid LEFT JOIN [|PREFIX|]products p ON p.productid = op.ordprodid LEFT JOIN [|PREFIX|]order_addresses oa ON oa.`id` = op.order_address_id WHERE orderorderid = " . (int)$order['orderid'] ." ORDER BY op.order_address_id"; $result = $GLOBALS['ISC_CLASS_DB']->Query($query); //check if products are reorderable while ($row = $GLOBALS['ISC_CLASS_DB']->Fetch($result)) { $OrderProducts[$row['orderprodid']] = $row; $ProductIds[] = $row['ordprodid']; } $UnreorderableProducts = $this->GetUnreorderableProducts($OrderProducts, $ProductIds); // for grouping of shipping addresses in template output $previousAddressId = null; $destinationCounter = 0; foreach ($OrderProducts as $row) { if ($count++ % 2 != 0) { $GLOBALS['ItemClass'] = "OrderItem2"; } else { $GLOBALS['ItemClass'] = "OrderItem1"; } $GLOBALS['OrderProductId'] = $row['orderprodid']; $GLOBALS['DisableReorder'] = ''; $GLOBALS['ReorderMessage'] = ""; $GLOBALS['HideItemMessage'] = 'display:none;'; if(isset($UnreorderableProducts[$row['orderprodid']])) { $GLOBALS['DisableReorder'] = 'Disabled'; $GLOBALS['ReorderMessage'] = $UnreorderableProducts[$row['orderprodid']]; if(isset($_REQUEST['reorder']) && $_REQUEST['reorder']==1) { $GLOBALS['HideItemMessage'] = ''; } } $GLOBALS['Qty'] = (int) $row['ordprodqty']; $GLOBALS['Name'] = isc_html_escape($row['ordprodname']); $GLOBALS['EventDate'] = ''; if ($row['ordprodeventdate'] != 0) { $GLOBALS['EventDate'] = $row['ordprodeventname'] . ': '. isc_date('M jS Y', $row['ordprodeventdate']); } // Does the product still exist or has it been deleted? $prod_name = GetProdNameById($row['ordprodid']); if ($prod_name == "" && $row['ordprodtype'] == 'giftcertificate') { $GLOBALS['Link'] = "javascript:product_giftcertificate()"; $GLOBALS['Target'] = ""; }else if ($prod_name == "") { $GLOBALS['Link'] = "javascript:product_removed()"; $GLOBALS['Target'] = ""; } else { $GLOBALS['Link'] = ProdLink(GetProdNameById($row['ordprodid'])); $GLOBALS['Target'] = "_blank"; } $GLOBALS['DownloadsLink'] = ''; if ($row['ordprodtype'] == "digital" && $orderComplete) { $GLOBALS['DownloadItemEncrypted'] = $this->EncryptDownloadKey($row['orderprodid'], $row['ordprodid'], $row['orderorderid'], $row['ordtoken']); $GLOBALS['DownloadsLink'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet("AccountOrderItemDownloadLink"); } $GLOBALS['Refunded'] = ''; $GLOBALS['StrikeEnd'] = ''; $GLOBALS['StrikeStart'] = ''; if ($row['ordprodrefunded'] > 0) { if ($row['ordprodrefunded'] == $row['ordprodqty']) { $GLOBALS['StrikeStart'] = "<s>"; $GLOBALS['StrikeEnd'] = "</s>"; $GLOBALS['Refunded'] = '<span class="Refunded">'.GetLang('OrderProductRefunded').'</span>'; } else { $GLOBALS['Refunded'] = '<span class="Refunded">'.sprintf(GetLang('OrderProductsRefundedX'), $row['ordprodrefunded']).'</span>'; } } $GLOBALS['Price'] = CurrencyConvertFormatPrice( $row[$itemTotalColumn], $order['ordcurrencyid'], $order['ordcurrencyexchangerate'] ); // Were there one or more options selected? $GLOBALS['ProductOptions'] = ''; if($row['ordprodoptions'] != '') { $options = @unserialize($row['ordprodoptions']); if(!empty($options)) { $GLOBALS['ProductOptions'] = "<br /><small class='OrderItemOptions'>("; $comma = ''; foreach($options as $name => $value) { $GLOBALS['ProductOptions'] .= $comma.isc_html_escape($name).": ".isc_html_escape($value); $comma = ', '; } $GLOBALS['ProductOptions'] .= ")</small>"; } } if($row['ordprodwrapname']) { $GLOBALS['GiftWrappingName'] = isc_html_escape($row['ordprodwrapname']); $GLOBALS['HideWrappingOptions'] = ''; } else { $GLOBALS['GiftWrappingName'] = ''; $GLOBALS['HideWrappingOptions'] = 'display: none'; } $GLOBALS['HideExpectedReleaseDate'] = 'display:none;'; $GLOBALS['ExpectedReleaseDate'] = ''; if ($row['prodpreorder']) { if ($row['prodreleasedate']) { $message = $row['prodpreordermessage']; if (!$message) { $message = GetConfig('DefaultPreOrderMessage'); } $GLOBALS['ExpectedReleaseDate'] = '(' . str_replace('%%DATE%%', isc_date(GetConfig('DisplayDateFormat'), $row['prodreleasedate']), $message) . ')'; } else { $GLOBALS['ExpectedReleaseDate'] = '(' . GetLang('PreOrderProduct') . ')'; } $GLOBALS['HideExpectedReleaseDate'] = ''; } $GLOBALS['ItemShippingRow'] = ''; if ($order['shipping_address_count'] > 1 && ($previousAddressId != $row['order_address_id'])) { $destinationCounter++; $GLOBALS['Destination_Number'] = GetLang('Destination_Number', array('number' => $destinationCounter)); $addressLine = array_filter(array( $row['address_1'], $row['address_2'], $row['city'], $row['state'], $row['zip'], $row['country'], )); $GLOBALS['ItemShippingRow_AddressLine'] = Store_String::rightTruncate(implode(', ', $addressLine), 60); $GLOBALS['ItemShippingRow'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet('AccountOrderItemShippingRow'); } $GLOBALS['SNIPPETS']['AccountOrderItemRow'] .= $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet("AccountOrderItemRow"); $previousAddressId = $row['order_address_id']; } $GLOBALS['ISC_CLASS_TEMPLATE']->SetPageTitle(sprintf("%s - %s%d", GetConfig('StoreName'), GetLang('OrderIdHash'), $orderId)); $GLOBALS['ISC_CLASS_TEMPLATE']->SetTemplate("account_order"); $GLOBALS['ISC_CLASS_TEMPLATE']->ParseTemplate(); }
/** * Email the invoice from an order to a customer * * @param int The ID of the order to email the invoice for. * @param int The optional ID of the order status. Will default to the already stored status ID of the order */ function EmailInvoiceToCustomer($orderId, $newStatusId=null) { // Load the details for this order $order_row = GetOrder($orderId, true); if($order_row === false) { return false; } // All prices in the emailed invoices will be shown in the default currency of the store $defaultCurrency = GetDefaultCurrency(); $GLOBALS['OrderNumber'] = $orderId; if (isId($newStatusId)) { $order_status = $newStatusId; } else { $order_status = $order_row['ordstatus']; } $order_payment_module = $order_row['orderpaymentmodule']; if($order_row['ordcustid'] > 0) { $GLOBALS['ViewOrderStatusMsg'] = GetLang('ASummaryIsShownBelow')." <a href='".$GLOBALS['ShopPath']."/orderstatus.php'>".GetLang('ClickHere')."</a>."; } else { $GLOBALS['ViewOrderStatusMsg'] = ""; } $emailTemplate = FetchEmailTemplateParser(); if ($order_row['shipping_address_count'] > 1) { // multiple shipping addresses $GLOBALS['ShippingAddress'] = GetLang('OrderWillBeShippedToMultipleAddresses'); } else if ($order_row['shipping_address_count'] == 0) { // no shipping addresses (digital order) $GLOBALS['ShippingAddress'] = GetLang('ShippingImmediateDownload'); } else { // single shipping address $address = $GLOBALS['ISC_CLASS_DB']->FetchRow(" SELECT oa.* FROM `[|PREFIX|]order_addresses` oa WHERE oa.order_id = " . (int)$order_row['orderid'] . " "); $GLOBALS['ShipFullName'] = isc_html_escape($address['first_name'].' '.$address['last_name']); $GLOBALS['ShipCompany'] = ''; if($address['company']) { $GLOBALS['ShipCompany'] = '<br />'.isc_html_escape($address['company']); } $GLOBALS['ShipAddressLines'] = isc_html_escape($address['address_1']); if ($address['address_2'] != "") { $GLOBALS['ShipAddressLines'] .= '<br />' . isc_html_escape($address['address_2']); } $GLOBALS['ShipSuburb'] = isc_html_escape($address['city']); $GLOBALS['ShipState'] = isc_html_escape($address['state']); $GLOBALS['ShipZip'] = isc_html_escape($address['zip']); $GLOBALS['ShipCountry'] = isc_html_escape($address['country']); $GLOBALS['ShipPhone'] = isc_html_escape($address['phone']); // show shipping email, if any if(!$address['email']) { $GLOBALS['HideShippingEmail'] = 'display: none'; } else { $GLOBALS['ShippingEmail'] = $address['email']; } $GLOBALS['ShippingAddress'] = $emailTemplate->GetSnippet("AddressLabel"); } // Format the billing address $GLOBALS['ShipFullName'] = isc_html_escape($order_row['ordbillfirstname'].' '.$order_row['ordbilllastname']); $GLOBALS['ShipCompany'] = ''; if($order_row['ordbillcompany']) { $GLOBALS['ShipCompany'] = '<br />'.isc_html_escape($order_row['ordbillcompany']); } $GLOBALS['ShipAddressLines'] = isc_html_escape($order_row['ordbillstreet1']); if ($order_row['ordbillstreet2'] != "") { $GLOBALS['ShipAddressLines'] .= '<br />' . isc_html_escape($order_row['ordbillstreet2']); } $GLOBALS['ShipSuburb'] = isc_html_escape($order_row['ordbillsuburb']); $GLOBALS['ShipState'] = isc_html_escape($order_row['ordbillstate']); $GLOBALS['ShipZip'] = isc_html_escape($order_row['ordbillzip']); $GLOBALS['ShipCountry'] = isc_html_escape($order_row['ordbillcountry']); $GLOBALS['ShipPhone'] = isc_html_escape($order_row['ordbillphone']); // show billing email, if any if(!$order_row['ordbillemail']) { $GLOBALS['HideBillingEmail'] = 'display: none'; } else { $GLOBALS['BillingEmail'] = $order_row['ordbillemail']; } $GLOBALS['BillingAddress'] = $emailTemplate->GetSnippet("AddressLabel"); // Format the shipping provider's details $shippingCostColumn = 'cost_ex_tax'; $itemPriceColumn = 'price_ex_tax'; $itemTotalColumn = 'total_ex_tax'; $subTotalColumn = 'subtotal_ex_tax'; if(getConfig('taxDefaultTaxDisplayOrders') == TAX_PRICES_DISPLAY_INCLUSIVE) { $shippingCostColumn = 'cost_inc_tax'; $itemPriceColumn = 'price_inc_tax'; $itemTotalColumn = 'total_inc_tax'; $subTotalColumn = 'subtotal_inc_tax'; } $GLOBALS['TotalCost'] = FormatPrice($order_row['total_inc_tax'], false, true, false, $defaultCurrency, true); $email = $order_row['ordbillemail']; if(!$order_row['ordbillemail']) { // Get the customer's email address $query = sprintf("select custconemail from [|PREFIX|]customers where customerid='%d'", $GLOBALS['ISC_CLASS_DB']->Quote($order_row['ordcustid'])); $result = $GLOBALS['ISC_CLASS_DB']->Query($query); if ($row = $GLOBALS['ISC_CLASS_DB']->Fetch($result)) { $email = $row['custconemail']; } } if(!$email) { return false; } $prodHasSKU = false; $WrapCost = 0; $fieldArray = GetOrderProductFieldsData($orderId); // We need to loop throuh all the prodcts to see if any of them have an SKU foreach($order_row['products'] as $product_row) { if (trim($product_row['ordprodsku']) !== '') { $prodHasSKU = true; } } // OK, now set the proper columns for the product list if ($prodHasSKU) { $GLOBALS['CartItemColumns'] = $emailTemplate->GetSnippet("InvoiceProductColumns"); } else { $GLOBALS['CartItemColumns'] = $emailTemplate->GetSnippet("InvoiceProductColumnsNoSKU"); } $GLOBALS['SNIPPETS']['CartItems'] = ''; $previousAddressId = null; foreach($order_row['products'] as $product_row) { if ($order_row['shipping_address_count'] > 1 && $product_row['order_address_id'] != $previousAddressId) { if ($product_row['order_address_id']) { $addressLine = array_filter(array( $product_row['address_1'], $product_row['address_2'], $product_row['city'], $product_row['state'], $product_row['zip'], $product_row['country'], )); $addressLine = GetLang('ItemsShippedTo') . ' ' . Store_String::rightTruncate(implode(', ', $addressLine), 70); } else { $addressLine = GetLang('ItemsShippedToDigital'); } $GLOBALS['AddressLine'] = $addressLine; $GLOBALS['SNIPPETS']['CartItems'] .= $emailTemplate->GetSnippet("InvoiceProductShipRow"); $previousAddressId = $product_row['order_address_id']; } $pOptions = ''; if($product_row['ordprodoptions'] != '') { $options = @unserialize($product_row['ordprodoptions']); if(!empty($options)) { $pOptions = "<br /><small>("; $comma = ''; foreach($options as $name => $value) { $pOptions .= $comma.isc_html_escape($name).": ".isc_html_escape($value); $comma = ', '; } $pOptions .= ")</small>"; } } $GLOBALS['ProductOptions'] = $pOptions; $GLOBALS['EventDate'] = ''; if ($product_row['ordprodeventdate']) { $GLOBALS['EventDate'] = '<br /><span style="padding-left : 10px; padding-bottom:10px; font-size:11px; font-style:italic">('.$product_row['ordprodeventname'] . ': ' . isc_date('dS M Y', $product_row['ordprodeventdate']) . ')</span>'; } $GLOBALS['ProductPrice'] = FormatPrice($product_row[$itemPriceColumn], false, true, false, $defaultCurrency, true); $GLOBALS['ProductTotal'] = FormatPrice($product_row[$itemTotalColumn], false, true, false, $defaultCurrency, true); $GLOBALS['ProductQuantity'] = $product_row['ordprodqty']; $GLOBALS['ProductName'] = isc_html_escape($product_row['ordprodname']); $GLOBALS['ProductSku'] = ' '; if ($prodHasSKU && trim($product_row['ordprodsku']) !== '') { $GLOBALS['ProductSku'] = isc_html_escape($product_row['ordprodsku']); } // If this is a digital download and the order is complete, append a download link to the name of the product if($product_row['ordprodtype'] == 'digital' && OrderIsComplete($order_status)) { $GLOBALS['ISC_CLASS_ACCOUNT'] = GetClass('ISC_ACCOUNT'); $downloadEncrypted = $GLOBALS['ISC_CLASS_ACCOUNT']->EncryptDownloadKey($product_row['orderprodid'], $product_row['ordprodid'], $orderId, $order_row['ordtoken']); $downloadLink = $GLOBALS['ShopPathSSL'].'/account.php?action=download_item&data=' . $downloadEncrypted; $GLOBALS['ProductName'] .= ' (<a href="'.$downloadLink.'">'.GetLang('DownloadLink').'</a>)'; } $GLOBALS['CartProductFields'] = ''; if(isset($fieldArray[$product_row['orderprodid']])) { $GLOBALS['CartProductFields'] = LoadEmailOrderProductFields($fieldArray[$product_row['orderprodid']]); } if(isset($product_row['ordprodwrapcost'])) { $WrapCost += $product_row['ordprodwrapcost']; } $GLOBALS['ExpectedReleaseDate'] = ''; if ($product_row['prodpreorder']) { if ($product_row['prodreleasedate']) { $message = $product_row['prodpreordermessage']; if (!$message) { $message = GetConfig('DefaultPreOrderMessage'); } $GLOBALS['ExpectedReleaseDate'] = '(' . str_replace('%%DATE%%', isc_date(GetConfig('DisplayDateFormat'), $product_row['prodreleasedate']), $message) . ')'; } else { $GLOBALS['ExpectedReleaseDate'] = '(' . GetLang('PreOrderProduct') . ')'; } } if ($prodHasSKU) { $GLOBALS['SNIPPETS']['CartItems'] .= $emailTemplate->GetSnippet("InvoiceCartItem"); } else { $GLOBALS['SNIPPETS']['CartItems'] .= $emailTemplate->GetSnippet("InvoiceCartItemNoSKU"); } } $totalRows = getOrderTotalRows($order_row); $GLOBALS['SNIPPETS']['TotalRows'] = ''; foreach($totalRows as $row) { $emailTemplate->assign('label', isc_html_escape($row['label'])); $emailTemplate->assign('value', formatPrice($row['value'], false, true, false, $defaultCurrency, true)); $GLOBALS['SNIPPETS']['TotalRows'] .= $emailTemplate->getSnippet('InvoiceTotalRow'); } // Set the shipping method if ($order_row['ordisdigital']) { $GLOBALS['ShippingMethod'] = GetLang('ImmediateDownload'); } else { $GLOBALS['ShippingMethod'] = sprintf(GetLang('FreeShippingFromX'), $GLOBALS['StoreName']); } // What's the status of the order? If it's awaiting payment (7) then show the awaiting payment notice if ($order_status == 7) { // Get the awaiting payment snippet, for offline payment providers also show the "how to pay for your order" message" $checkout_provider = null; GetModuleById('checkout', $checkout_provider, $order_payment_module); if (is_object($checkout_provider) && $checkout_provider->getpaymenttype() == PAYMENT_PROVIDER_OFFLINE && method_exists($checkout_provider, 'GetOfflinePaymentMessage')) { $paymentData = array( 'orders' => array($order_row['orderid'] => $order_row) ); $checkout_provider->SetOrderData($paymentData); $GLOBALS['PaymentGatewayAmount'] = CurrencyConvertFormatPrice($order_row['total_inc_tax'], $order_row['ordcurrencyid'], $order_row['ordcurrencyexchangerate'], true); $GLOBALS['PaymentMessage'] = $checkout_provider->GetOfflinePaymentMessage(); $GLOBALS['PendingPaymentDetails'] = $emailTemplate->GetSnippet("InvoicePendingPaymentDetails"); $GLOBALS['PendingPaymentNotice'] = $emailTemplate->GetSnippet("InvoicePendingPaymentNotice"); } } $GLOBALS['OrderCommentBlock'] = ''; if($order_row['ordcustmessage'] != '') { $GLOBALS['OrderComments'] = isc_html_escape($order_row['ordcustmessage']); $GLOBALS['OrderCommentBlock'] = $emailTemplate->GetSnippet("InvoiceOrderComment"); } $emailTemplate->SetTemplate("invoice_email"); $message = $emailTemplate->ParseTemplate(true); // Create a new email API object to send the email $store_name = GetConfig('StoreName'); $obj_email = GetEmailClass(); $obj_email->From(GetConfig('OrderEmail'), $store_name); $obj_email->Set("Subject", sprintf(GetLang('YourOrderFrom'), $store_name)); $obj_email->AddBody("html", $message); $obj_email->AddRecipient($email, "", "h"); $email_result = $obj_email->Send(); $forwardEmails = array(); if($order_row['ordvendorid'] > 0) { $query = " SELECT vendororderemail FROM [|PREFIX|]vendors WHERE vendorid='".(int)$order_row['ordvendorid']."' "; $vendorOrderEmails = $GLOBALS['ISC_CLASS_DB']->FetchOne($query); $forwardEmails = array_merge($forwardEmails, explode(',', $vendorOrderEmails)); } // If there are any additional recipients (forward invoices to addresses), send them as well if(GetConfig('ForwardInvoiceEmails')) { $forwardEmails = array_merge($forwardEmails, explode(',', GetConfig('ForwardInvoiceEmails'))); } $forwardEmails = array_unique($forwardEmails); foreach($forwardEmails as $address) { if(!trim($address)) { continue; } $emailClass = GetEmailClass(); $emailClass->Set('CharSet', GetConfig('CharacterSet')); $emailClass->From(GetConfig('OrderEmail'), $store_name); $emailClass->Set("Subject", "Fwd: ".sprintf(GetLang('YourOrderFrom'), $store_name)." (#".$order_row['orderid'].")"); $emailClass->AddBody("html", $message); $emailClass->AddRecipient($address, "", "h"); $status = $emailClass->Send(); } // If the email was sent ok, show a confirmation message if ($email_result['success']) { return true; } else { // Email error return false; } }