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

Step-by-step guide to creating a .NET MAUI application for Android

   Step 1: Set Up Your Development Environment Install Visual Studio 2022 : Make sure you have Visual Studio 2022 installed with the .NET MAUI workload. Install Android SDK and Emulator : Ensure you have the Android SDK and an Android emulator installed. Step 2: Create a New .NET MAUI Project Open Visual Studio 2022 : Launch Visual Studio. Create a New Project : Click on "Create a new project" in the start window. Select .NET MAUI App Template : Choose "MAUI" in the project type drop-down, select the ".NET MAUI App" template, and click "Next". Configure Your Project : Name your project, choose a location, and click "Next". Choose .NET Version : Select the version of .NET you want to target and click "Create". Step 3: Set Up Your Project Explore Project Structure : Familiarize yourself with the project structure, dependencies, and files. Create XAML Pages : Start designing your app's user interface using XAML. Step 4: Write...

Instalar Windows Subsystem for Linux (WSL) en un paso

Desde Windows 10 2004, es posible instalar Windows Subsystem for Linux (WSL) con un simple comando desde PowerShell o Windows Command Prompt (como administrador) wsl --install al cual le podemos pasar una serie de parámetros, por ejemplo, para escoger la distribución a instalar wsl --install -d ubuntu wsl --install --distribution Debian Solo resta entrar el nombre de usuario y contraseña para más detalles: https://docs.microsoft.com/en-us/windows/wsl/install 

.NET MAUI project structure

  Project Structure Main Project Directory : App.xaml : This file is used for application-level resources, such as styles and themes. App.xaml.cs : Contains the code-behind for the App.xaml file, including the application entry point. MainPage.xaml : The main page of your application, which defines the UI layout in XAML. MainPage.xaml.cs : The code-behind for MainPage.xaml, where you implement the logic for the main page. Platforms : Android : Contains platform-specific code for Android, such as AndroidManifest.xml and MainActivity.cs. iOS : Contains platform-specific code for iOS, such as Info.plist and AppDelegate.cs. MacCatalyst : Contains platform-specific code for Mac Catalyst, such as Info.plist and AppDelegate.cs. WinUI : Contains platform-specific code for Windows, such as Package.appxmanifest and App.xaml.cs. Resources : Fonts : Contains font files used in the application. Images : Contains image assets used in the application. Styles : Contains styles and themes used in t...