Hola a todos,
Tengo un problema a la hora de cambiar la forma de pago en el backend de VM.
Tengo varios métodos de pagos con descuentos y con tasas:
Tarjeta --> 0,5% de descuento
Ingreso o Transferencia --> 0,5% de descuento
PayPal --> 2,5% de tasa
Contrareembolso --> 4%, minimo 5€ de tasa
Cuando compro todos los descuentos y tasas se aplican de forma correcta, pero si voy a l backend y cambio de una forma de pago a otra los descuentos o tasas se aplica de forma erronea.
Ejemplo si paso de tarjeta a Paypal en vez de calcular el 2,5% de tasa, le suma a la orden directamente 2,5€
He visto cosas por el fichero ps_order_change_html.....
URL del sitio: Contenido solo visible a usuarios registrados
Hola,
Entiendo que te estás refiriendo a cambiar la forma de pago a un pedido que ya se ha completado. Es posible que se trate de un bug en Virtuemart 2.0 que todavía no se ha corregido. Lo mejor sería que cancelaras el pedido y realizaras uno nuevo con la nueva forma de pago, ya que supongo que esto no será un tema que te ocurra muy a menudo.
La verdad es que no ocurre muy a menudo.. por cierto es en VM 1.1.9. A ver ya he solucionado el tema del calculo modificando la función. Ahora me encuentro el otro problema, aunque ahora calcula bien, cuando le doy a modificar sigue tomando los descuento tipo porcentaje como si fuesen enteros, es decir si el descuento es el 2%, el toma el descuento o tasa como 2€. Y la verdad no veo de donde "tira" para recalcular dentro del order.order_print.php.
A ver si me podéis ayudar.
function html_change_payment($payment_id,$ordertotal) {
global $VM_LANG, $CURRENCY_DISPLAY;
?>
<form method="post" action="">
query($q);
while ($dbs->next_record()){
if (!is_null( $dbs->f('payment_method_id') )) {
print 'f('payment_method_id').'"';
if($dbs->f('payment_method_id') == $payment_id) print " selected ";
print '>';
print $dbs->f('payment_method_name');
if ($dbs->f('payment_method_discount_is_percent') == 0 && $dbs->f('payment_method_discount_min_amount') > 0) {
print "-> ".$ordertotal. $CURRENCY_DISPLAY->getFullValue(($dbs->f('payment_method_discount_min_amount') * -1));
}
elseif ($dbs->f('payment_method_discount_is_percent') == 1 && $dbs->f('payment_method_discount_min_amount') == 0) {
$ordertotaldesc = round($ordertotal,2) * round($dbs->f('payment_method_discount'),2)/100;
print "-> ". $CURRENCY_DISPLAY->getFullValue(($ordertotaldesc * -1));
}
elseif ($dbs->f('payment_method_discount_is_percent') == 1 && $dbs->f('payment_method_discount_min_amount') f('payment_method_discount'),2)/100;
$descuentomin = $dbs->f('payment_method_discount_min_amount');
if ($descuentomin ".$CURRENCY_DISPLAY->getFullValue(($ordertotaldesc * -1));
}
elseif ($dbs->f('payment_method_discount_is_percent') == 1 && $dbs->f('payment_method_discount_min_amount') > 0) {
$ordertotaldesc = round($ordertotal,2) * round($dbs->f('payment_method_discount'),2)/100;
$descuentomin = $dbs->f('payment_method_discount_min_amount');
if ($descuentomin > $ordertotaldesc) {
$ordertotaldesc = $descuentomin;
}
print "-> ". $CURRENCY_DISPLAY->getFullValue(($ordertotaldesc * -1));
}
elseif ($dbs->f('payment_method_discount_is_percent') == 0 && $dbs->f('payment_method_discount_min_amount') == 0) {
print "-> ".$CURRENCY_DISPLAY->getFullValue(($dbs->f('payment_method_discount') * -1));
}
else{
print "-> ". $CURRENCY_DISPLAY->getFullValue(($dbs->f('payment_method_discount') * -1));
}
print '';
}
}
?>
<input type="image" title="_('PHPSHOP_UPDATE') ?>"
src="images/edit_f2.gif" border="0" alt="_('PHPSHOP_UPDATE') ?>" />
<input type="hidden" name="order_id" value="order_id ?>" />
<?php
}
}