Virtuemart

VirtueMart es componente de Joomla que nos da una solución de e-comercio. Ambos tiene la Licencia Pública General de GNU, por lo que son libres para su descarga, uso y modificación.
Te puedes descargar la ultima versión en su pagina oficial de virtuemart. Este paquete contiene 3 componente comprimidos, estos los tienes que instalar de forma independiente cada uno como cualquier otro componente de Joomla :
- CORE: El codigo del componente.
- AIO ( All in one): " Todo en uno" es decir plugins y modules de todo tipo para el componente (formas envío,formas de pago,....)
- TPDF : Librería que utiliza virtuemart para generar los pdf.
Tiene una web para la documentación muy amplia, tiene un foro que alimenta la comunidad de Virtuemart ademas de hacer soporte, tiene una API para hacer extensiones o plugins para interactuar con Virtuemart. Está traduccida a un mogollon de idiomas con sus paquetes, por supuesto tienes el paquete en español, a demas puedes participar en esas traducciones en transifex.
También podrías ver los cambios y como va el proyecto en el repositorio SVN.
Virtuemart fue la primera solución que convierta en un e-comerce tu Joomla, ambos fueron de la mano desde sus inicios, hoy en día, ya existen muchos mas componentes de Joomla que crean una tienda on-line y seguro que muy buenas, aunque nosotros seguimos siendo fieles a VIRTUEMART, el motivo principal es que lo conocemos su funcionamiento casi a la perfección.
Lo primero que es saber que no se tiene instalar absolutamente ningún plugin y componente, es simplemente un override de la plantilla de virtuemart de orders en los ficheros:
- html/com_virtuemart/orders/detail.php
- html/com_virtuemart/orders/details_item.php
En fichero de detail añadimos:
<input type="hidden" name="task" value="add"/>
<input type="hidden" name="option" value="com_virtuemart">
<input type="hidden" name="view" value="cart">
<input type="hidden" name="Itemid" value="101">
</form>
En fichero de details_items.php añadimos esta input ocultos:
<input type="hidden" name="virtuemart_product_id[]" value="<?php echo $item->virtuemart_product_id; ?>">
<input type="hidden" name="quantity[]" value="<?php echo $qtt; ?>">
La idea es crear un repositorio espejo en GitHub del repositorio OFICIAL DE VIRTUEMART que esta Subversion.Esto surge despues de ver y preguntar en este hilo del foro de Virtuemart. Nunca trabaje con SVN, soy de GIT. :-)
Lo primero que hacemos es bajarnos el repositorio SVN en local con:
git svn clone https://dev.virtuemart.net/svn/virtuemart
Esta ruta la sacamos de https://docs.virtuemart.net/tutorials/development/100-svn-download.html
Tiene que tene instalado el paquete git-svn, si no tuvieras
sudo apt install git-svn
Entonces empieza descargar todo el repositorio y todo su historial, en este caso tarda bastante ya que es muy grande, lleva muchos años el repositorio.
Una vez terminado, una de la primeras preguntas que me hago es, donde tiene guarda la ruta del SVN que clono, ya que con "git remote" no aparece nada.
Buscando informacion en "git svn --help", encuentro:
▶ git svn info Path: . URL: https://dev.virtuemart.net/svn/virtuemart/trunk/virtuemart Repository Root: https://dev.virtuemart.net/svn/virtuemart Repository UUID: 87cc427b-4a1e-0410-b729-b2260ec0f063 Revision: 10338 Node Kind: directory Schedule: normal Last Changed Author: Milbo Last Changed Rev: 10338 Last Changed Date: 2020-07-06 11:18:18 +0200 (lun, 06 jul 2020)
Con esto es suficiente por ahora.
Creo una rama llamada svn, para tener todo igual en esa rama.
Para poder sincronizar con svn de forma manual, al tener añadir en config el svn-repo simplemente tiene que ejecutar:
git svn fetch
Ahora solo queda hacer un rebase para actualice. Yo lo hago en la rama svn que tengo creada.
git svn rebase
Luego solo te queda actualizar en git tus ramas... jejej
Con :
- Php 7.2
- Joomla 3.9.21
- Virtuemar 3.8.4 10335
me da un error al intentar cambiar el estado de algunos pedidos.
[Sun Aug 30 20:08:50.604004 2020] [php7:warn] [pid 6369] [client ::1:43724] PHP Warning: strtoupper() expects parameter 1 to be string, object given in /www/Clientes/superoliva/web/libraries/src/Language/Language.php on line 314, referer: http://localhost/Clientes/superoliva/web/administrator/index.php?option=com_virtuemart&view=orders
[Sun Aug 30 20:08:50.604083 2020] [php7:warn] [pid 6369] [client ::1:43724] PHP Warning: strpos() expects parameter 1 to be string, object given in /www/Clientes/superoliva/web/libraries/src/Language/Language.php on line 361, referer: http://localhost/Clientes/superoliva/web/administrator/index.php?option=com_virtuemart&view=orders
[Sun Aug 30 20:08:50.604106 2020] [php7:error] [pid 6369] [client ::1:43724] PHP Recoverable fatal error: Object of class stdClass could not be converted to string in /www/Clientes/superoliva/web/libraries/src/Language/Language.php on line 364, referer: http://localhost/Clientes/superoliva/web/administrator/index.php?option=com_virtuemart&view=orders
El problema creo que solo surge en los pedido que tiene un estado creado por nosotros. ( lo texteare mas)
Buscamos cual puede ser la causa y es el fichero administrator/components/com_virtuemart/models/orderstatus.php
Donde veo con la ultima actualizacion de virtuemart cambiaron esto:

Si dejo la version en rojo (la anterior) , funciona perfectamente.
Bueno, creare un tema en foro de virtuemart, a ver que me comentas.
A veces la cosas mas sencillas parecen muy compleja
El cambiar un precio a virtuemart es muy sencillo, pero virtuemart no hace que sea de forma intuitivo.
Ejemplo de cambio de precio:
1.- Tenemos un producto con un precio determinado , en este caso un ZZ que cuesta 2.19€, precio con iva incluido.
Joomla 3.10 VirtueMart 4.0.12
El objetivo es tener claro que hace cada fichero de la vista user de virtuemart para poder montar a nuestro en la plantilla que utilicemos en :
/templates/nuestraplantilla/html /virtuemart/user/
Overrides de views de Virtuemart
La vista user de virtuemart y la vista del carrito utilizan los siguientes ficheros:
- edit_address: Comprueba si llegaste desde 'cart' o 'user'
- edit_address_userfields: Crear todos los campos del formulario
- edit_address_addshipto: Lista las direcciones que tienes creadas y te permite (editarlas, borrarlas y crear una nueva)
El enlace de 'editar' y 'nueva dirección' de edit_address_addshipto utiliza la siguiente estructura de ficheros:
- edit.php: Cambia el titulo, crea el formulario, cargar 'edit_shopper', crea el div del boton de 'guardar' y del enlace de 'cancelar' y añade campos 'hidden'
- edit_shopper.php: Carga 'edit_address_userfields' y añade campos 'hidden'
- edit_address_userfields.php: Crear todos los campos del formulario
Fichero user/edit
Este fichero debería ser el que cargue primero siempre al editar cuando estamos tratando datos de usuario de virtuemart, pero no es así, ya que este fichero no se llega siempre, solo se llega:
- A la hora de hacer registros usuarios nuevos, si lo hace Virtuemart. (al instalar virtuemart en el plugin "VM Framework Loader" viene por defecto )
- Desde botton o link que "nueva dirección" dentro de la fichero edit_address_addshipto
Hay que tener en cuenta que el registro de un usuario nuevo se puede realizar desde un item de menu (normalmente) o desde el propio carro, desde el boton "Añadir/Editar información de facturación", lógicamente cuando no esta identificado y no se permite la compra como invitado.

Lee más…