Hola, estoy intentando que para un determinado grupo de compradores salga en la ficha del producto el precio sin impuestos y el precio final con descuento pero no lo consigo.
He decidido marcar todas las posibilidadades de precio en la configuración del grupo para luego ir descartando y como podeis ver en la captura no calcula correctamente el impuesto. Para poner el PVP si que lo calcula correctamente pero para poner el precio sin IVA no lo hace bién (y eso que en la ficha del producto sí está puesto) y la cantidad de impuesto tampoco está bien puesto, parece como si calculara un 12´14% de impuesto.
Adjunto capturas de la ficha del producto, de la config del grupo de comprador y de los impuestos.
URL del sitio: Contenido solo visible a usuarios registrados
Hola David
Que versión de virtuemart tienes ?
Es posible que sea un problema de cómo maneja esto virtuemart, si revisas su archivo de template verás que posiblemente allí se realizan estos cálculos
En el archivo :
templates/TU_TEMPLATE/html/com_virtuemart/productdetails/default.php
Ubica las líneas de código que tengan el siguiente código que hace referencia a los precios que se muestran:
echo $this->currency->createPriceDiv ...
Saludos
Hola Jhon,
trabajo con la 2.0.14 pero he hecho pruebas en local con la 2.0.8 y el resultado es el mismo.
Esto es lo que hay en el archivo:
if ($this->showBasePrice) { echo $this->currency->createPriceDiv ( 'basePrice', 'COM_VIRTUEMART_PRODUCT_BASEPRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'basePriceVariant', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_VARIANT', $this->product->prices ); } echo $this->currency->createPriceDiv ( 'variantModification', 'COM_VIRTUEMART_PRODUCT_VARIANT_MOD', $this->product->prices ); echo $this->currency->createPriceDiv ( 'basePriceWithTax', 'COM_VIRTUEMART_PRODUCT_BASEPRICE_WITHTAX', $this->product->prices ); echo $this->currency->createPriceDiv ( 'discountedPriceWithoutTax', 'COM_VIRTUEMART_PRODUCT_DISCOUNTED_PRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'discountAmount', 'COM_VIRTUEMART_PRODUCT_DISCOUNT_AMOUNT', $this->product->prices ); echo $this->currency->createPriceDiv ( 'salesPriceWithDiscount', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITH_DISCOUNT', $this->product->prices ); echo $this->currency->createPriceDiv ( 'salesPrice', 'COM_VIRTUEMART_PRODUCT_SALESPRICE', $this->product->prices ); echo $this->currency->createPriceDiv ( 'priceWithoutTax', 'COM_VIRTUEMART_PRODUCT_SALESPRICE_WITHOUT_TAX', $this->product->prices ); echo $this->currency->createPriceDiv ( 'taxAmount', 'COM_VIRTUEMART_PRODUCT_TAX_AMOUNT', $this->product->prices ); ?>
Hola,
Es posible que se estén aplicando otras variaciones en los precios que no se muestran en la edición del artículo. Veo en la captura de pantalla en el primer post que has enviado que el precio sin IVA del producto "Reloj Fortis Spacematic automatico" es de 847,10744 y sin embargo el precio sin impuestos que se muestra en el frontal de la web es de 900,48, lo que parece no cuadrar.
Prueba a desactivar todas las reglas de cálculo de impuestos y descuentos dejando solo la de "IVA 21%" y comprueba si así cuadran los cálculos.
Hola Pablo,
el problema está en que VM para averiguar el precio sin impuestos resta la cantidad de impuesto al PVP sin descuento, y eso estaría bién si el impuesto que restara fuera el del PVP sin descuento, pero lo que hace es restar el impuesto del PVP con descuento al PVP sin descuento. Hay algo mal en VM porque no es cuestión de plantilla, he probado con varias plantillas.
Hola,
No acabo de entender lo que comentas. Por regla general, los impuestos o descuentos se aplican siempre sobre el precio del producto sin impuestos.
Es decir, en la base de datos se guarda como precio del producto el precio sin ningún tipo de impuesto o descuento. Luego, en función de los impuestos y descuentos aplicados se obtiene el precio final.
Lo mejor sería que nos dieras un ejemplo real con los distintos importes de un producto indicando lo que, según tú, no cuadra.
Hola Pablo, en un post anterior de este mismo hilo lo explico:
Hola David,
he probado con otras plantillas y el resultado es el mismo.
Por otro lado he averiguado donde está el error, lo que no sé es porque sucede y cómo arreglarlo:Si te fijas en la captura
PVP: 134€ Correcto
Precio venta con dto: 93,80€ Correcto
Cantidad de impuesto: 16,28 Es el IVA del precio vta con dto y no del PVP. Luego es Correcto
Precio venta sin impuesto: 117,72€ ESTE ES EL ERROR, lo averigua restando la Cantidad de impuesto al PVP, cuando debería restarlo al precio venta con dto¿cómo puede pasar esto? no es cuestión de plantilla, he probado con la purity y lo hace igual.
Por aclararlo aún más:
Tenemos dos cifras la A el PVP sin dto, y la B el PVP con dto, de cada una de esas cifras puedes averiguar la cuota de impuesto dividiéndola entre 1,21 y tendríamos la cuota del PVP sin dto, y la cuota del PVP con dto. Pues VM dice que el precio sin impuesto es una cifra que resulta de restar al A el PVP sin dto la cuota del PVP con dto. Como ves mezcla el PVP sindto con la cuota de impuesto del PVP con dto. UUUUff
Hola,
Los cálculos de los precios que se muestran se hacen desde el propio núcleo de Virtuemart y no desde sus plantillas, por lo que no es conveniente que apliques cambios aquí ya que se podrían perder al actualizar Virtuemart a una nueva versión.
Aquí lo más cómodo sería que no mostrases toda esa información en la ficha del producto ya que más ayudar al usuario le puede plantear dudas. Lo mejor sería mostrar el precio sin descuento, el precio final y listo.
Entonces ese error como lo soluciono?
Estoy mostrando todos los precios a ese grupo para ver las posibilidades y luego quitar los que no me interesen pero uno de los que me interesan lo hace mal.
Al tratarse de un grupo de compradores EMPRESA los precios tienen que ir sin IVA, yo necesito lo mismo que para los usuarios particulares pero sin impuestos: precio de venta y precio de venta con descuento. Y VEO QUE VM EL ÚNICO QUE PONE SIN IMPUESTOS ESTA MAL. ¿que hago?
Hola David
Tal como comentas si estas definiendo grupo de compradores, entonces no veo mayor problema
Ya que puedes asignar o no un impuesto por determinado grupo, es decir no asignarías el IVA a tu grupo empresa , pero si le asignarías el descuento sobre el precio.
El tema de la impresión puede ser un bug de vm, he realizado una prueba , en vm 2.14 y he visto para el siguiente ejemplo: Para un precio con coste 54, y con IVA 18% y descuento 10% , bota las siguientes variables de precios
[costPrice] => 54.00000 [basePrice] => 54 [basePriceVariant] => 54 [basePriceWithTax] => 63.72 [discountedPriceWithoutTax] => 0 [priceBeforeTax] => 54 [salesPrice] => 57.348 [taxAmount] => 9.72 [salesPriceWithDiscount] => 57.348 [salesPriceTemp] => 57.348 [discountAmount] => 6.372 [priceWithoutTax] => 54 [variantModification] => 0 [DBTax] => Array ( ) [Tax] => Array ( [0] => Array ( [0] => IVA 18% [1] => 18.0000 [2] => +% [3] => 1 ) ) [VatTax] => Array ( ) [DATax] => Array ( [0] => Array ( [0] => Descuento 10% Vestidos [1] => 10.0000 [2] => -% [3] => 1 ) )
La variable que te interesa supongo es discountedPriceWithoutTax, pero aparece cero.
Tienes la opción sin embargo de realizar tus cálculos utilizando estos valores del array de precio, debes conocer algo de programación PHP para realizar esto.
Por ejemplo, el precio de costo en el ejemplo :
$this->product->prices['costPrice']
El impuesto :
$this->product->prices[DATax][0][1])
Entonces para imprimir el precio con el descuento pero sin el impuesto:
echo ($this->product->prices['costPrice'] - $this->product->prices['DATax'][0][1]*$this->product->prices['costPrice']/100);
Sin embargo como te comentaron anteriormente se podría volver complejo, es mejor trabajarlo a nivel de grupos y mostrar sólo el precio de venta y el descuento por ejemplo.
Saludos.
Hola Jhon,
varias cosas, al grupo empresa no le puedo dejar sin IVA (se factura con IVA y el IVA lo pagan), lo que quiero es que los de ese grupo visualizen los precios sin iva.
El problema que tengo que solucionar es el siguiente:
en una situación en que hay descuentos en los precios tenemos dos TAX, TAX1 el del precio de venta y TAX2 el del precio final con dto, y la forma en que VM los maneja es dónde está el fallo. Yo y cualquiera que quiera vender a empresas necesita lo siguiente:
Precio de venta sin IVA (no sé como mostrarlo)
Precio con dto sin IVA (lo calcula mal)
Son las dos únicas cosas que se necesitan, y de momento no sé cómo hacer que consten en los productos.
¿dónde está el php dónde realiza el cálculo de discountedPriceWithoutTax? Ahí es donde está el fallo y si tengo que rectificarlo a mano cada vez que actualizo VM pues se hace...
Hola David
Si conoces algo de programación PHP puedes revisar el siguiente archivo de virtuemart que es en donde se asignan los precios :
/administrator/components/com_virtuemart/helpers/calculationh.php
Debes trabajar con el array de acuerdo a los keys brindados anteriormente(costPrice, baseprice, etc)
Otra opción es que realices la modificación a nivel de template tal como te comenté en la respuesta anterior.
Nota : En ambos casos realiza una copia de tus archivos que modifiques.
Saludos.
Hola Jhon,
he realizado la modificación en el template tal y como me indicabas y efectivamente sale la cifra que necesito MUCHAS GRACIAS, pero me surgen dos problemas:
1.- ¿cómo puedo asignar un template de productdetails o category a un grupo de compradores?
2.- ¿cómo puedo hace que esa cifra salga en formato precio? en euros y dos decimales.
Gracias.
Hola David,
No se puede asignar a una grupo de compradores una plantilla determinada, lo que si se puede realizar desde la edición del grupo Activar la pantalla de precios especifica para el grupo de compradores.
En la captura de pantalla que envías, veo el precio en € y con dos decimales, menos el 1648.76033 que desconozco que variable corresponde, puesto que no hay texto a la izquierda
Saludos
Hola Jordi,
ante toda esta problemática que VM no es capaz de sacar el discountedPriceWithoutTax correctamente, Jhon me apuntaba la solución de variar el template con un código que me ofrecía unos posts mas arriba, y el resultado es esa cifra que no sabías a que variable correspondía.
¿como puedo sarle formato de precio?
Hola familia,
Sin ánimo de liar más la pelota y como tengo el mismo problema con otras páginas que mantengo...
Una observación, si se hacen modificaciones a nivel de plantillas, luego se tendrán que hacer modificaciones en las demás plantillas en las que intervienen estos precios, carro, facturas, emails...
Lo bueno, que con actualizaciones no se pierden los cambios...
La solución propuesta por Jhon la veo más correcta para este caso, buscar en el archivo donde se calcula ese precio para todo virtuemart y modificar el calculo para que en todas las plantillas quede reflejado...
Si conoces algo de programación PHP puedes revisar el siguiente archivo de virtuemart que es en donde se asignan los precios :
/administrator/components/com_virtuemart/helpers/calculationh.php
Debes trabajar con el array de acuerdo a los keys brindados anteriormente(costPrice, baseprice, etc)
Lo malo, que en cada actualización hay que ir a modificar hasta que arreglen el tema los programadores de Virtuemart.
Saludos.