Ir al contenido principal

Drupal Commerce - producto con varios precios


Montando un marketplace con Drupal Commerce, apareció un caso de uso donde el cliente quería agregar a cada producto un precio de envío diferente. Por tanto no valía una Flate Rate u alguna solución clásica de 'shipping', así que pensé que Rules y encontré esta simple solución de Josh Miller:

La idea es agregar un campo 'envío' tipo 'price' al tipo de producto en cuestión, y luego con rules, sumar al precio del producto, el precio del envío.

  1. Crear una nueva regla de cálculo de precio. Ir a admin/commerce/config/product-pricing/rules/add y darle un nombre
  2. Agregamos una primera condición "Entity has field" a la entidad "commerce-line-item" y seleccione el campo "commerce_product". Con este paso se carga el producto para la siguiente inspección.
  3. Segunda condición, cargamos el campo con el precio: "Entity has field" a la entidad "commerce-line-item:commerce-product" y seleccionamos el campo creado previamente en el tipo de producto.
  4. Confirmar que el nuevo campo 'envio' no está vacío. Siempre es buena idea saltar el cálculo si el campo está vacío, por lo cual agregamos una tercera condición: "Data is Empty" y seleccionamos la cantidad (amount) del campo en cuestión. El token debe aparecer similar a "commerce-line-item:commerce-product:field-shipping-price:amount" ... y asegurarse de seleccionar 'NEGATE', pues queremos que los campos NO estén vacíos.
  5. Finalmmente agregar el precio del campo al del producto. Ahora solamente necesitamos agregar una acción llamada "Add an amount to the unit price" dentro de "Line Item". Seleccionamos el campo como mismo hicimos en el paso anterior, similar a "commerce-line-item:commerce-product:field-shipping-price:amount". Finalizamos seleccionando el componente "shipping"
  6. La regla exportada: http://pastebin.com/JmKjNPE4
    Ahora podemos agregar algún precio de envío en nuestros productos y aparecerá durante el checkout. Es interesante que Commerce desglosa el precio total y sabe de dónde viene cada número. Por ejemplo, tenemos un producto que cuesta $50.00 y $10.00 de envío, el total será $60.00, pero durante en la orden aparecerá claramente desglosado los $50.00 del producto, y los $10.00 del envío.

Comentarios

Entradas populares de este blog

Interfaz HTTP para VLC

VLC es un genial reproductor de video (y audio) libre y que cualquiera puede descargar desde aquí . Pero lo que no todos conocen son las facilidades de VLC como servidor de medias y transcodificador.  Es posible crear canales, grupos de canales, horarios de transmisión, recodificar un fichero (o un streaming) en tiempo real y muchas cosas más. Lo mejor es lo flexible que es y la cantidad de opciones disponibles tanto en modo gráfico, como en por comandos. Pero no todo es color de rosas, porque las interfaz no es muy amigable y a veces la documentación resulta no muy 'tragable' para usuarios comunes que no tengan muchos conocimientos sobre los servidores de media, los protocolos que se utilizan, compresión y hasta conceptos generales de televisión, video y audio. VLC me resuelve muchos problemas, pero he tenido que irme abriendo paso con él poco a poco, y aún me queda mucho por recorrer; por eso decidí ir documentando lo que voy aprendiendo, primero para compartirlo para que otr

ffmpeg: videos para web (mp4, ogg)

Después de algunas pruebas de compresión con ffmpeg para webs, esta es la combinación que mejor resultado me ha dado: $ ffmpeg -i v_original.mp4 -c:v theora -c:a libvorbis -b:v 1,5M -b:a 192k -vf scale=-1:720 v_final.ogg $ ffmpeg -i v_original.mp4 -b:v 1.5M -b:a 192k -vf scale=-1:720 v_final.mp4 El video será utilizado como background de algunas páginas. En un principio pensé en fullHD, pero para mantener una calidad decente era necesario aumentar el bitrate de manera considerable, aumentando por supuesto el tamaño del archivo. Así que se decidió disminuir la resolución a 720p y mantener un balance entre calidad y bitrate que se considera adecuado para el uso que tendrá el material.

Apache, actualizando a OS X 10.9 Maverick

Algunos pequeños cambios respecto a Apache notamos cuando actualizas el sistema a OS X Maverick. Primero, ya no tenemos la opción de Web Sharing en la interfaz de configuración, así que hay que meterle mano al Terminal. Para arrancar Apache: sudo apachectl start para detenerlo: sudo apachectl stop para reiniciar: sudo apachectl restart  Una vez arrancado podemos abrir un explorador con http://127.0.0.1 y veremos que el servicio está corriendo, pero tendremos otra sorpresa. El servidor tiene el documento raíz en /Library/WebServer/Documents y posiblemente nosotros lo teníamos antes en ~/Sites así que tendremos que configurar nuestro fichero httpd.conf para apuntar al directorio que contendrá nuestros proyectos: sudo nano /private/etc/apache2/httpd.conf  Ya que estamos editando el fichero de configuración, es recomendable además, activar PHP descomentando la línea del módulo PHP5_module. Una vez ajustado a tus necesidades, recuerda reiniciar el servicio para que los c