Problemas con cambio de forma de pago en BackEnd  

 
Sergio
 Sergio
Reputable Member

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

Citar
Respondido : 01/11/2012 12:21 am
Pablo Velasco
 Pablo Velasco
Illustrious Member

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.

Si nuestra ayuda te sirve déjanos tu testimonio y mejora así el posicionamiento de tu web:
Enviar Testimonio
¡Gracias!.

ResponderCitar
Respondido : 02/11/2012 9:35 am

Cursos Gratuitos WordPress

Sergio
 Sergio
Reputable Member

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
}

}

ResponderCitar
Respondido : 02/11/2012 10:08 am

Por favor Iniciar Sesión o Registro