Hi,
I'm having some troubles configuring a cart in vm 3.0.12, since it's not displaying total (and product total).
It's just displaying product prices and quantity, but in the invoices the total is correct.
I had to copy the display_pricelist.php file from com_virtuemart/views folder to template/html folder, because even the product price was empty before copying the file.
This is actually the file
<fieldset class="vm-fieldset-pricelist">
<table
class="cart-summary"
cellspacing="0"
cellpadding="0"
border="0"
width="100%">
<tr>
<th class="vm-cart-item-name" ><?php echo vmText::_ ('COM_VIRTUEMART_CART_NAME') ?></th>
<!-- <th class="vm-cart-item-sku" ><?php echo vmText::_ ('COM_VIRTUEMART_CART_SKU') ?></th> -->
<th class="vm-cart-item-basicprice" ><?php echo vmText::_ ('COM_VIRTUEMART_CART_PRICE') ?></th>
<th class="vm-cart-item-quantity" ><?php echo vmText::_ ('COM_VIRTUEMART_CART_QUANTITY') ?></th>
<?php if (VmConfig::get ('show_tax')) {
$tax = vmText::_ ('COM_VIRTUEMART_CART_SUBTOTAL_TAX_AMOUNT');
if(!empty($this->cart->cartData['VatTax'])){
if(count($this->cart->cartData['VatTax']) < 2) {
reset($this->cart->cartData['VatTax']);
$taxd = current($this->cart->cartData['VatTax']);
$tax = shopFunctionsF::getTaxNameWithValue($taxd['calc_name'],$taxd['calc_value']);
}
}
?>
<th class="vm-cart-item-tax" ><?php echo "<span class='priceColor2'>" . $tax . '</span>' ?></th>
<?php } ?>
<!-- <th class="vm-cart-item-discount" ><?php echo "<span class='priceColor2'>" . vmText::_ ('COM_VIRTUEMART_CART_SUBTOTAL_DISCOUNT_AMOUNT') . '</span>' ?></th> -->
<th class="vm-cart-item-total" ><?php echo vmText::_ ('COM_VIRTUEMART_CART_TOTAL') ?></th>
</tr>
<?php
$i = 1;
foreach ($this->cart->products as $pkey => $prow) {
$prow->prices = array_merge($prow->prices,$this->cart->cartPrices[$pkey]);
?>
<tr valign="top" class="sectiontableentry<?php echo $i ?>">
<input type="hidden" name="cartpos[]" value="<?php echo $pkey ?>">
<td class="vm-cart-item-name" >
<?php if ($prow->virtuemart_media_id) { ?>
<span class="cart-images">
<?php
if (!empty($prow->images[0])) {
echo $prow->images[0]->displayMediaThumb ('', FALSE);
}
?>
</span>
<?php } ?>
<?php echo JHtml::link ($prow->url, $prow->product_name);
echo $this->customfieldsModel->CustomsFieldCartDisplay ($prow);
?>
</td>
<!-- <td class="vm-cart-item-sku" ><?php echo $prow->product_sku ?></td> -->
<td class="vm-cart-item-basicprice" >
<?php
if (VmConfig::get ('checkout_show_origprice', 1) && $prow->prices['basePriceWithTax'] != $prow->prices['basePriceWithTax']) {
echo '<span class="line-through">' . $this->currencyDisplay->createPriceDiv ('basePriceVariant', '', $prow->prices, TRUE, FALSE) . '</span><br />';
}
if ($prow->prices['basePriceWithTax']) {
echo $this->currencyDisplay->createPriceDiv ('basePriceWithTax', '', $prow->prices, FALSE, FALSE, 1.0, false, true);
} else {
echo $this->currencyDisplay->createPriceDiv ('basePriceVariant', '', $prow->prices, FALSE, FALSE, 1.0, false, true);
}
?>
</td>
<td class="vm-cart-item-quantity" ><?php
if ($prow->step_order_level)
$step=$prow->step_order_level;
else
$step=1;
if($step==0)
$step=1;
?>
<input type="text"
onblur="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED',true)?>');"
onclick="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED',true)?>');"
onchange="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED',true)?>');"
onsubmit="Virtuemart.checkQuantity(this,<?php echo $step?>,'<?php echo vmText::_ ('COM_VIRTUEMART_WRONG_AMOUNT_ADDED',true)?>');"
title="<?php echo vmText::_('COM_VIRTUEMART_CART_UPDATE') ?>" class="quantity-input js-recalculate" size="3" maxlength="4" name="quantity[<?php echo $pkey; ?>]" value="<?php echo $prow->quantity ?>" />
<button type="submit" class="vmicon vm2-add_quantity_cart" name="updatecart.<?php echo $pkey ?>" title="<?php echo vmText::_ ('COM_VIRTUEMART_CART_UPDATE') ?>" ></button>
<button type="submit" class="vmicon vm2-remove_from_cart" name="delete.<?php echo $pkey ?>" title="<?php echo vmText::_ ('COM_VIRTUEMART_CART_DELETE') ?>" ></button>
</td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td class="vm-cart-item-tax" ><?php echo "<span class='priceColor2'>" . $this->currencyDisplay->createPriceDiv ('taxAmount', '', $prow->prices, FALSE, FALSE, $prow->quantity, false, true) . "</span>" ?></td>
<?php } ?>
<td class="vm-cart-item-total">
<?php //vmdebug('hm',$prow->prices,$this->cart->cartPrices[$pkey]);
if (VmConfig::get ('checkout_show_origprice', 1) && !empty($prow->prices['basePriceWithTax']) && $prow->prices['basePriceWithTax'] != $prow->prices['salesPrice']) {
echo '<span class="line-through">' . $this->currencyDisplay->createPriceDiv ('basePriceWithTax', '', $prow->prices, TRUE, FALSE, $prow->quantity) . '</span><br />';
}
elseif (VmConfig::get ('checkout_show_origprice', 1) && empty($prow->prices['basePriceWithTax']) && $prow->prices['basePriceVariant'] != $prow->prices['salesPrice']) {
echo '<span class="line-through">' . $this->currencyDisplay->createPriceDiv ('basePriceVariant', '', $prow->prices, TRUE, FALSE, $prow->quantity) . '</span><br />';
}
echo $this->currencyDisplay->createPriceDiv ('salesPrice', '', $prow->prices, FALSE, FALSE, $prow->quantity) ?></td>
</tr>
<?php
$i = ($i==1) ? 2 : 1;
} ?>
<!--Begin of SubTotal, Tax, Shipment, Coupon Discount and Total listing -->
<?php if (VmConfig::get ('show_tax')) {
$colspan = 3;
} else {
$colspan = 2;
} ?>
<tr>
<td colspan="4"> </td>
<td colspan="<?php echo $colspan ?>">
<hr/>
</td>
</tr>
<tr class="sectiontableentry1">
<td colspan="4" align="right"><?php echo vmText::_ ('COM_VIRTUEMART_ORDER_PRINT_PRODUCT_PRICES_TOTAL'); ?></td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"><?php echo "<span class='priceColor2'>" . $this->currencyDisplay->createPriceDiv ('taxAmount', '', $this->cart->cartPrices, FALSE, false, true) . "</span>" ?></td>
<?php } ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ('salesPrice', '', $this->cart->cartPrices, FALSE) ?></td>
</tr>
<?php
if (VmConfig::get ('coupons_enable')) {
?>
<?php if (VmConfig::get ('show_tax')) {
$colspan = 3;
} else {
$colspan = 2;
} ?>
</tr>
<?php } ?>
<?php
foreach ($this->cart->cartData['DBTaxRulesBill'] as $rule) {
?>
<tr class="sectiontableentry<?php echo $i ?>">
<td colspan="4" align="right"><?php echo $rule['calc_name'] ?> </td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"></td>
<?php } ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->cartPrices[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?></td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->cartPrices[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> </td>
</tr>
<?php
if ($i) {
$i = 1;
} else {
$i = 0;
}
} ?>
<?php
foreach ($this->cart->cartData['taxRulesBill'] as $rule) {
if($rule['calc_value_mathop']=='avalara') continue;
?>
<tr class="sectiontableentry<?php echo $i ?>">
<td colspan="4" align="right"><?php echo $rule['calc_name'] ?> </td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->cartPrices[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> </td>
<?php } ?>
<td align="right"><?php ?> </td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->cartPrices[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> </td>
</tr>
<?php
if ($i) {
$i = 1;
} else {
$i = 0;
}
}
foreach ($this->cart->cartData['DATaxRulesBill'] as $rule) {
?>
<tr class="sectiontableentry<?php echo $i ?>">
<td colspan="4" align="right"><?php echo $rule['calc_name'] ?> </td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"></td>
<?php } ?>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->cartPrices[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> </td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ($rule['virtuemart_calc_id'] . 'Diff', '', $this->cart->cartPrices[$rule['virtuemart_calc_id'] . 'Diff'], FALSE); ?> </td>
</tr>
<?php
if ($i) {
$i = 1;
} else {
$i = 0;
}
}
if ( VmConfig::get('oncheckout_opc',true) or
!VmConfig::get('oncheckout_show_steps',false) or
(!VmConfig::get('oncheckout_opc',true) and VmConfig::get('oncheckout_show_steps',false) and
!empty($this->cart->virtuemart_shipmentmethod_id) )
) { ?>
<tr class="sectiontableentry1" style="vertical-align:top;">
<?php if (!$this->cart->automaticSelectedShipment) { ?>
<td colspan="4" style="align:left;vertical-align:top;">
<?php
echo '<h3>'.vmText::_ ('COM_VIRTUEMART_CART_SELECTED_SHIPMENT').'</h3>';
echo $this->cart->cartData['shipmentName'].'<br/>';
if (!empty($this->layoutName) and $this->layoutName == 'default') {
if (VmConfig::get('oncheckout_opc', 0)) {
$previouslayout = $this->setLayout('select');
echo $this->loadTemplate('shipment');
$this->setLayout($previouslayout);
} else {
echo JHtml::_('link', JRoute::_('index.php?option=com_virtuemart&view=cart&task=edit_shipment', $this->useXHTML, $this->useSSL), $this->select_shipment_text, 'class=""');
}
} else {
echo vmText::_ ('COM_VIRTUEMART_CART_SHIPPING');
}
echo '</td>';
} else {
?>
<td colspan="4" style="align:left;vertical-align:top;">
<?php echo '<h4>'.vmText::_ ('COM_VIRTUEMART_CART_SELECTED_SHIPMENT').'</h4>'; ?>
<?php echo $this->cart->cartData['shipmentName']; ?>
</td>
<?php } ?>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"><?php echo "<span class='priceColor2'>" . $this->currencyDisplay->createPriceDiv ('shipmentTax', '', $this->cart->cartPrices['shipmentTax'], FALSE) . "</span>"; ?> </td>
<?php } ?>
<td align="right"><?php if($this->cart->cartPrices['salesPriceShipment'] < 0) echo $this->currencyDisplay->createPriceDiv ('salesPriceShipment', '', $this->cart->cartPrices['salesPriceShipment'], FALSE); ?></td>
<td align="right"><?php echo $this->currencyDisplay->createPriceDiv ('salesPriceShipment', '', $this->cart->cartPrices['salesPriceShipment'], FALSE); ?> </td>
</tr>
<?php } ?>
<?php if ($this->cart->pricesUnformatted['salesPrice']>0.0 and
( VmConfig::get('oncheckout_opc',true) or
!VmConfig::get('oncheckout_show_steps',false) or
( (!VmConfig::get('oncheckout_opc',true) and VmConfig::get('oncheckout_show_steps',false) ) and !empty($this->cart->virtuemart_paymentmethod_id))
)
) { ?>
<tr class="sectiontableentry1" style="vertical-align:top;">
<?php if (!$this->cart->automaticSelectedPayment) { ?>
<td colspan="4" style="align:left;vertical-align:top;">
<?php
echo '<h3>'.vmText::_ ('COM_VIRTUEMART_CART_SELECTED_PAYMENT').'</h3>';
echo $this->cart->cartData['paymentName'].'<br/>';
if (!empty($this->layoutName) && $this->layoutName == 'default') {
if (VmConfig::get('oncheckout_opc', 0)) {
$previouslayout = $this->setLayout('select');
echo $this->loadTemplate('payment');
$this->setLayout($previouslayout);
} else {
echo JHtml::_('link', JRoute::_('index.php?option=com_virtuemart&view=cart&task=editpayment', $this->useXHTML, $this->useSSL), $this->select_payment_text, 'class=""');
}
} else {
echo vmText::_ ('COM_VIRTUEMART_CART_PAYMENT');
} ?> </td>
<?php } else { ?>
<td colspan="4" style="align:left;vertical-align:top;" >
<?php echo '<h4>'.vmText::_ ('COM_VIRTUEMART_CART_SELECTED_PAYMENT').'</h4>'; ?>
<?php echo $this->cart->cartData['paymentName']; ?> </td>
<?php } ?>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"><?php echo "<span class='priceColor2'>" . $this->currencyDisplay->createPriceDiv ('paymentTax', '', $this->cart->cartPrices['paymentTax'], FALSE) . "</span>"; ?> </td>
<?php } ?>
<td align="right" ><?php if($this->cart->cartPrices['salesPricePayment'] < 0) echo $this->currencyDisplay->createPriceDiv ('salesPricePayment', '', $this->cart->cartPrices['salesPricePayment'], FALSE); ?></td>
<td align="right" ><?php echo $this->currencyDisplay->createPriceDiv ('salesPricePayment', '', $this->cart->cartPrices['salesPricePayment'], FALSE); ?> </td>
</tr>
<?php } ?>
<tr>
<td colspan="4"> </td>
<td colspan="<?php echo $colspan ?>">
<hr/>
</td>
</tr>
<tr class="sectiontableentry2">
<td colspan="4" align="right"><?php echo vmText::_ ('COM_VIRTUEMART_CART_TOTAL') ?>:</td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"> <?php echo "<span class='priceColor2'>" . $this->currencyDisplay->createPriceDiv ('billTaxAmount', '', $this->cart->cartPrices['billTaxAmount'], FALSE) . "</span>" ?> </td>
<?php } ?>
<td align="right"><strong><?php echo $this->currencyDisplay->createPriceDiv ('billTotal', '', $this->cart->cartPrices['billTotal'], FALSE); ?></strong></td>
</tr>
<?php
if ($this->totalInPaymentCurrency) {
?>
<tr class="sectiontableentry2">
<td colspan="4" align="right"><?php echo vmText::_ ('COM_VIRTUEMART_CART_TOTAL_PAYMENT') ?>:</td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td align="right"></td>
<?php } ?>
<td align="right"></td>
<td align="right"><strong><?php echo $this->totalInPaymentCurrency; ?></strong></td>
</tr>
<?php
}
//Show VAT tax seperated
if(!empty($this->cart->cartData)){
if(!empty($this->cart->cartData['VatTax'])){
$c = count($this->cart->cartData['VatTax']);
if (!VmConfig::get ('show_tax') or $c>1) {
if($c>0){
?><tr class="sectiontableentry2">
<td colspan="5" align="right"><?php echo vmText::_ ('COM_VIRTUEMART_TOTAL_INCL_TAX') ?></td>
<?php if (VmConfig::get ('show_tax')) { ?>
<td ></td>
<?php } ?>
<td></td>
</tr><?php
}
foreach( $this->cart->cartData['VatTax'] as $vatTax ) {
if(!empty($vatTax['result'])) {
echo '<tr class="sectiontableentry'.$i.'">';
echo '<td colspan="4" align="right">'.shopFunctionsF::getTaxNameWithValue($vatTax['calc_name'],$vatTax['calc_value']). '</td>';
echo '<td align="right"><span class="priceColor2">'.$this->currencyDisplay->createPriceDiv( 'taxAmount', '', $vatTax['result'], FALSE, false, 1.0,false,true ).'</span></td>';
echo '<td></td><td></td>';
echo '</tr>';
}
}
}
}
}
?>
</table>
</fieldset>
I hope someone can help me :)
thanks in advance
Update: with the code modified as the post above, I'm able to display the product total but not the total bill.
I hope someone can help me :)
How can I display billTotal? I'm trying with echo ($data->billTotal), but it does not display anything...
I guess you actually mean default_pricelist.php not display_pricelist.php ? If you had to copy the file to template/html/com_virtuemart then I guess (again) that you are using overrides - of which nobody here can have knowledge of, but does suggest you have a template issue.
Why are you using an old insecure VirtueMart version? See http://forum.virtuemart.net/index.php?topic=118683.0
Current VM version is 3.2.10
So, no way to solve? Any suggestion?
Thank you
Hello
You are given advise, but You do take them. You don´t give much information.
Why are You using an old and unsecure VM version ?
You obviously seem to use a custom template. Try with Protostar and see if it works. Then modify Your template. Or Contact Your template designer for an update.
Have You changed anything in the configuration of the prices in the back end?
regards
Jörgen @ Kreativ Fotografi
You are using a VirtueMart that was released over 2 years ago. It is insecure so should not be used on a live website. Your first action should be to update VirtueMart. You probably also use an old insecure Joomla version so that should be updated, too. No Joomla version before J3.8.2 is secure.
You appear to be using a template which has display problems - maybe it is incompatible with that VirtueMart version? That should also be updated, or use a new template.
Test all updates on a backup copy of the live site, assuming you have a live site that has not yet been hacked (you have provided so little information).