Skip to main content

Adding sub total to Order Created email

13 years 10 months ago #82971 by DenisLeemkuil
Hi Guys,


For our shop I'm trying to add the sub total to one of the email messages. I've attached a screenshot which is in Dutch, but I'm sure you get the idea. I've seen many examples where $data->cart->order_subtotal and $data->cart->order_subtotal_no_vat are used. But for me it just keeps returning 0. I must be missing something.

I've tried different approaches but this was my starting point:
Code:
echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('SUBTOTAL').': '; if($config->get('price_with_tax')){ echo $currencyHelper->format($data->cart->order_subtotal,$data->order_currency_id); }else{ echo $currencyHelper->format($data->cart->order_subtotal_no_vat,$data->order_currency_id); } echo '</td></tr>';

Complete message:
Code:
<?php /** * @package HikaShop for Joomla! * @version 2.0.0 * @author hikashop.com * @copyright (C) 2010-2012 HIKARI SOFTWARE. All rights reserved. * @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html */ defined('_JEXEC') or die('Restricted access'); ?><div style="background-color: #ffffff; font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px; color: #000000; width: 100%;"> <table style="margin: auto;font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px;" border="0" cellspacing="0" cellpadding="0"> <tbody> <tr> <td height="10"> </td> </tr> <tr> <td> <?php echo JText::sprintf('HI_CUSTOMER',@$data->customer->name);?> <br/> <br/> <?php $colspan = 4; $url = $data->order_number; $config =& hikashop_config(); if($config->get('simplified_registration',0)!=2){ $url = '<a href="'.$data->order_url.'">'. $url.'</a>'; } echo JText::sprintf('ORDER_CREATION_SUCCESS_ON_WEBSITE_AT_DATE',$url,HIKASHOP_LIVE, hikashop_getDate(time(),'%d %B %Y'), hikashop_getDate(time(),'%H:%M'));?> </td> </tr> <tr> <td height="10"> </td> </tr> <tr> <td> <h1 style="background-color:#DDDDDD;font-size:14px;width:100%;padding:5px;"><?php echo JText::_('SUMMARY_OF_YOUR_ORDER');?></h1> <br/> <table width="100%" style="font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px;"> <tr> <td style="font-weight:bold;"><?php echo JText::_('CART_PRODUCT_NAME'); ?></td> <?php if ($config->get('show_code')) { $colspan++; ?> <td style="font-weight:bold;"><?php echo JText::_('CART_PRODUCT_CODE'); ?></td> <?php } ?> <td style="font-weight: bold;"><?php echo JText::_('CART_PRODUCT_UNIT_PRICE'); ?></td> <td style="font-weight: bold;"><?php echo JText::_('CART_PRODUCT_QUANTITY'); ?></td> <td style="font-weight: bold; text-align: right;"><?php echo JText::_('HIKASHOP_TOTAL'); ?> </td> </tr> <?php if(hikashop_level(2)){ $fieldsClass = hikashop_get('class.field'); $null = null; $itemFields = $fieldsClass->getFields('frontcomp',$null,'item'); } $group = $config->get('group_options',0); foreach($data->cart->products as $item){ if($group && $item->cart_product_option_parent_id) continue; ?> <tr> <td> <p> <?php echo $item->order_product_name; if($group){ $display_item_price=false; foreach($data->cart->products as $j => $optionElement){ if($optionElement->cart_product_option_parent_id != $item->cart_product_id) continue; if($optionElement->order_product_price>0){ $display_item_price = true; } } if($display_item_price){ if($config->get('price_with_tax')){ echo ' '.$currencyHelper->format($item->order_product_price+$item->order_product_tax,$data->order_currency_id); }else{ echo ' '.$currencyHelper->format($item->order_product_price,$data->order_currency_id); } } } ?> </p><?php if(!empty($itemFields)){ foreach($itemFields as $field){ $namekey = $field->field_namekey; if(empty($item->$namekey)) continue; echo '<p>'.$fieldsClass->getFieldName($field).': '.$fieldsClass->show($field,$item->$namekey).'</p>'; } } $optionsPrices = new stdClass(); $optionsPrices->order_product_price=0; $optionsPrices->order_product_tax=0; $optionsPrices->order_product_total_price=0; $optionsPrices->order_product_total_price_no_vat=0; if($group){ foreach($data->cart->products as $j => $optionElement){ if($optionElement->cart_product_option_parent_id == 0 || $optionElement->cart_product_option_parent_id != $item->cart_product_id) continue; $optionsPrices->order_product_price +=$optionElement->order_product_price; $optionsPrices->order_product_tax +=$optionElement->order_product_tax; $optionsPrices->order_product_total_price+=$optionElement->order_product_total_price; $optionsPrices->order_product_total_price_no_vat+=$optionElement->order_product_total_price_no_vat; ?> <p class="hikashop_order_option_name"> <?php echo $optionElement->order_product_name; if($optionElement->order_product_price>0){ if($config->get('price_with_tax')){ echo ' ( + '.$currencyHelper->format($optionElement->order_product_price+$optionElement->order_product_tax,$data->order_currency_id).' )'; }else{ echo ' ( + '.$currencyHelper->format($optionElement->order_product_price,$data->order_currency_id).' )'; } } ?> </p> <?php } } $statusDownload = explode(',',$config->get('order_status_for_download','confirmed,shipped')); if(in_array($data->order_status,$statusDownload)){ if(!empty($item->files)){ global $Itemid; $url_itemid = ''; if(!empty($Itemid)){ $url_itemid='&Itemid='.$Itemid; } echo '<p>'; foreach($item->files as $file){ $fileName = empty($file->file_name) ? $file->file_path : $file->file_name; echo '<a href="'.hikashop_frontendLink('index.php?option=com_hikashop&ctrl=order&task=download&file_id='.$file->file_id.'&order_id='.$data->order_id.$url_itemid).'">'.$fileName.'</a><br/>'; } echo '</p>'; } } ?> </td> <?php if ($config->get('show_code')) { ?> <td><p class="hikashop_product_code_mail"><?php echo $item->order_product_code; ?></p></td> <?php } ?> <td> <?php if($config->get('price_with_tax')){ echo $currencyHelper->format($item->order_product_price+$optionsPrices->order_product_price+$item->order_product_tax+$optionsPrices->order_product_tax,$data->order_currency_id); }else{ echo $currencyHelper->format($item->order_product_price+$optionsPrices->order_product_price,$data->order_currency_id); } ?> </td> <td><?php echo $item->order_product_quantity; ?></td> <td style="text-align: right"> <?php if($config->get('price_with_tax')){ echo $currencyHelper->format($item->order_product_total_price+$optionsPrices->order_product_total_price,$data->order_currency_id); }else{ echo $currencyHelper->format($item->order_product_total_price_no_vat+$optionsPrices->order_product_total_price_no_vat,$data->order_currency_id); } ?> </td> </tr> <?php } // Start custom sub total echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('SUBTOTAL').': '; if($config->get('price_with_tax')){ echo $currencyHelper->format($data->cart->order_subtotal,$data->order_currency_id); }else{ echo $currencyHelper->format($data->cart->order_subtotal_no_vat,$data->order_currency_id); } echo '</td></tr>'; // End sub total if(bccomp($data->order_discount_price,0,5)){ echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('HIKASHOP_COUPON').': '; if($config->get('price_with_tax')){ echo $currencyHelper->format($data->order_discount_price*-1,$data->order_currency_id); }else{ echo $currencyHelper->format(($data->order_discount_price-@$data->order_discount_tax)*-1,$data->order_currency_id); } echo '</td></tr>'; } if(bccomp($data->order_shipping_price,0,5)){ echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('HIKASHOP_SHIPPING_METHOD').': '; if($config->get('price_with_tax')){ echo $currencyHelper->format($data->order_shipping_price,$data->order_currency_id); }else{ echo $currencyHelper->format($data->order_shipping_price-@$data->order_shipping_tax,$data->order_currency_id); } echo '</td></tr>'; } if(bccomp($data->order_payment_price,0,5)){ echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::_('HIKASHOP_PAYMENT_METHOD').': '.$currencyHelper->format($data->order_payment_price,$data->order_currency_id).'</td></tr>'; } if(!empty($data->cart->additional)) { $exclude_additionnal = explode(',', $config->get('order_additional_hide', '')); foreach($data->cart->additional as $additional) { if(in_array($additional->name, $exclude_additionnal)) continue; echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'. JText::_($additional->name).': '; if(!empty($additional->price_value) || empty($additional->value)) { if($config->get('price_with_tax')){ echo $currencyHelper->format($additional->price_value_with_tax, $data->order_currency_id); }else{ echo $currencyHelper->format($additional->price_value, $data->order_currency_id); } } else { echo $additional->value; } echo '</td></tr>'; } } if($data->cart->full_total->prices[0]->price_value!=$data->cart->full_total->prices[0]->price_value_with_tax){ if($config->get('detailed_tax_display') && !empty($data->order_tax_info)){ foreach($data->order_tax_info as $tax){ echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.$tax->tax_namekey. ': '.$currencyHelper->format($tax->tax_amount,$data->order_currency_id).'</td></tr>'; } }else{ echo '<tr><td colspan="'.$colspan.'" style="text-align:right">'.JText::sprintf('TOTAL_WITHOUT_VAT',$currencyHelper->format($data->cart->full_total->prices[0]->price_value,$data->order_currency_id)).'</td></tr>'; } $text=JText::sprintf('TOTAL_WITH_VAT',$currencyHelper->format($data->cart->full_total->prices[0]->price_value_with_tax,$data->order_currency_id)); }else{ $text=JText::_('HIKASHOP_FINAL_TOTAL'). ': '.$currencyHelper->format($data->cart->full_total->prices[0]->price_value_with_tax,$data->order_currency_id); } echo '<tr><td colspan="'.$colspan.'" style="text-align:right;font-weight:bold;">'.$text.'</td></tr>'; ?> </table> </td> </tr> <tr> <td height="10"> </td> </tr> <tr> <td> <table width="100%" style="border: 1px solid #DDDDDD;font-family: Verdana, Arial, Helvetica, sans-serif;font-size:12px;"> <?php $params = null; $js = ''; $fieldsClass = hikashop_get('class.field'); $app =& JFactory::getApplication(); if($app->isAdmin()){ $view = 'order'; }else{ $view = 'address'; } $template = trim(hikashop_getLayout($view,'address_template',$params,$js)); if(!empty($data->cart->billing_address)){ $billing = $template; foreach($data->order_addresses_fields as $field){ $fieldname = $field->field_namekey; $address =& $data->order_addresses[$data->cart->billing_address->address_id]; $billing=str_replace('{'.$fieldname.'}',$fieldsClass->show($field,$address->$fieldname),$billing); } echo '<tr><td style="font-weight:bold;background-color:#DDDDDD">'.JText::_('HIKASHOP_BILLING_ADDRESS').'</td></tr><tr><td>'; echo str_replace(array("\r\n","\r","\n"),'<br/>',preg_replace('#{(?:(?!}).)*}#i','',$billing)).'<br/></td></tr>'; } if(!empty($data->order_shipping_method)) { $currentShipping = hikashop_import('hikashopshipping',$data->order_shipping_method); if(method_exists($currentShipping, 'getShippingAddress')) { $override = $currentShipping->getShippingAddress($data->order_shipping_id); if($override !== false) { $data->override_shipping_address = $override; } } } if(!empty($data->override_shipping_address) || (!empty($data->cart->has_shipping) && !empty($data->cart->shipping_address))) echo '<tr><td style="font-weight:bold;background-color:#DDDDDD">'.JText::_('HIKASHOP_SHIPPING_ADDRESS').'</td></tr><tr><td>'; if(!empty($data->override_shipping_address)) { echo $data->override_shipping_address.'<br/></td></tr>'; } else if(!empty($data->cart->has_shipping) && !empty($data->cart->shipping_address)){ $shipping = $template; foreach($data->order_addresses_fields as $field){ $fieldname = $field->field_namekey; $address =& $data->order_addresses[$data->cart->shipping_address->address_id]; $shipping=str_replace('{'.$fieldname.'}',$fieldsClass->show($field,$address->$fieldname),$shipping); } echo str_replace(array("\r\n","\r","\n"),'<br/>',preg_replace('#{(?:(?!}).)*}#i','',$shipping)).'<br/></td></tr>'; }?> </table> </td> </tr> <tr> <td><?php $fields = $fieldsClass->getFields('frontcomp',$data,'order',''); foreach($fields as $fieldName => $oneExtraField) { if(empty($data->$fieldName)) continue; echo "<br/>".$fieldsClass->trans($oneExtraField->field_realname).': '.$fieldsClass->show($oneExtraField,$data->$fieldName); } ?></td> </tr> <tr> <td height="10"> </td> </tr> <tr> <td><?php // Start payment method $class = hikashop_get('class.payment'); $payment = $class->get($data->order_payment_id); echo JText::_('HIKASHOP_CHECKOUT_PAYMENT').': '.$payment->payment_name; // End payment method ?>.</td> </tr> <tr> <td height="10"> </td> </tr> <?php JPluginHelper::importPlugin('hikashop'); $dispatcher = JDispatcher::getInstance(); $dispatcher->trigger('onAfterOrderProductsListingDisplay', array(&$data->cart, 'email_notification_html')); ?> <tr> <td> <?php if(!$app->isAdmin()){ if($data->cart->full_total->prices[0]->price_value_with_tax>0) echo JText::_('ORDER_VALID_AFTER_PAYMENT'); $config =& hikashop_config(); if($data->cart->full_total->prices[0]->price_value_with_tax>0 && hikashop_level(1) && $config->get('allow_payment_button',1)){ global $Itemid; $url = ''; if(!empty($Itemid)){ $url='&Itemid='.$Itemid; } $pay_url = hikashop_frontendLink('index.php?option=com_hikashop&ctrl=order&task=pay&order_id='.$data->order_id.$url); if($config->get('force_ssl',0) && strpos('https://',$pay_url) === false) { $pay_url = str_replace('http://','https://',$pay_url); } ?> <a href="$pay_url"><?php JText::_('PAY_NOW'); ?></a> <?php } ?> <br/> <br/> <?php echo JText::sprintf('THANK_YOU_FOR_YOUR_ORDER',HIKASHOP_LIVE); }?> <br/> <br/> <?php echo JText::sprintf('BEST_REGARDS_CUSTOMER',$mail->from_name);?> </td> </tr> <tr> <td height="10"> </td> </tr> <tr> <td height="10"> </td> </tr> </tbody> </table> </div>

I could do some calculations from within the product loop. But I was wondering if there isn't a cleaner way to go about this.


Cheers,
Willem

Please Log in or Create an account to join the conversation.

13 years 10 months ago #83121 by Jerome
Hi,

I don't know where you found "order_subtotal" but this variable never exists in HikaShop.
The cart object have to prices variables : full_total and total.
Both are object with prices array and price_value/price_value_with_tax values.

So you can use the same part of code than the "full_total" but with "total".

Regards,

Jerome - Obsidev.com
HikaMarket & HikaSerial developer / HikaShop core dev team.
The following user(s) said Thank You: DenisLeemkuil

Please Log in or Create an account to join the conversation.

13 years 10 months ago #83138 by DenisLeemkuil
That did it, thanks for the help!

Please Log in or Create an account to join the conversation.

Time to create page: 0.082 seconds
Powered by Kunena Forum