Adding sub total to Order Created email

  • Posts: 6
  • Thank you received: 0
11 years 10 months ago #82971

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:

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:
<?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

Attachments:

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

  • Posts: 26152
  • Thank you received: 4027
  • MODERATOR
11 years 10 months ago #83121

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.

Also helping the HikaShop support team when having some time or couldn't sleep.
By the way, do not send me private message, use the "contact us" form instead.
The following user(s) said Thank You: DenisLeemkuil

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

  • Posts: 6
  • Thank you received: 0
11 years 10 months ago #83138

That did it, thanks for the help!

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

Time to create page: 0.061 seconds
Powered by Kunena Forum