banner

MWSConnect usa lenguaje SQL para establecer las fórmulas de tal manera que cualquier instrucción SQL valida con campos correctos dará como resultado un valor válido.

el lenguaje SQL es muy poderosos y nos permite realizar cálculos muy complejos pero también hay que tener cuidado para escribir las sintaxis correcta para obtener los valores deseados.

Antes de empezar

Esta página hace referencia a la versión 6.5.3.0 en adelante de MWSconnect. En versiones anteriores a esta versión no se obtendrá el resultado esperado.

Las fórmulas que usan campos del sistema pueden ser sencillas o muy complejas, si no tiene habilidad con el uso de fórmulas SQL por favor contacta con nosotros y le nosotros nos encargaremos de establecer las fórmulas por usted ya que los valores pueden ser erróneos si no hace bien.

Campos permitidos

MWSConnect alberga sus productos en una base de datos relacionada por lo que existen campos de las tablas de la base de datos que usted puede utilizar.

Entre los campos más importantes que pueden ser usados en las fórmulas están lo siguientes:

  • PRECIO1 = Campo principal donde se almacena el precio del ERP u origen de datos, normalmente precio de venta o PVP
  • PRECIO2 = Campo de precio secundario que viene del ERP y origen de datos, Este campo suele ser el Precio de Compra del ERP, pero no siempre.
  • CANTIDAD: Campo que contiene el Stock del programa de gestión ERP o del origen de datos.
  • NOMBRE: Campo que contiene el nombre del Producto
  • SKU: Campo que contiene el código o Referencia
  • EAN: Guarda el EAN del producto
  • IVA: Campo que contiene el valor del IVA del producto ( 4,10,21 …)
  • MARCA: Campo con el fabricante del producto. Normalmente viene vacío aunque dependerá de cada ERP.
  • ORIGEN: Guarda el origen del stock, puede ser vacío traer valores como Mayorista, Propio o bien el nombre del Almacén dependiendo de cada caso.
  • FAVORITO: Indica si está marcado como favorito o no. Posibles valores “S” y  “N”
  • PRIME: Indica si está marcado como producto Prime en Amazon o no. Posibles valores “S” y  “N”

Importante: Normalmente tanto el PRECIO1 como el PRECIO2 vienen con datos, pero dependiendo del origen de datos ERP, no siempre tiene porqué venir relleno por lo que puede contener valores nulos o cero, por lo que habrá que tenerlo en cuenta si hacemos divisiones pudiendo provocar desbordamientos o valores no deseados .

Mediante la combinación de estos campos se pueden hacer fórmulas sencillas como multiplicar el valor un un factor por ejemplo, o tremendamente complejas como por ejemplo, establecer un precio en función de rangos de stock o precios de nuestro ERP.

Palabras reservadas, sentencias y funciones que debemos conocer

Función ROUND(VALOR,DECIMALES) = Permite redondear VALOR a un número de DECIMALES
Ejemplo: Si la fórmula es ROUND(PRECIO1,2) dará como resultado el Precio1 redondeado a 2 decimales.

Función: COALESCE(VALOR,VALOR_DEVUELTO) . Esta función devuelve VALOR_DEVUETO si el VALOR es nulo.
Ejemplo: Si la fórmula es COALESCE(PRECIO2,0) dará como resultado 0 si el Precio2 es nulo o viene vacío.

Ejemplo. ROUND(COALESCE(PRECIO2,99.127) ,2)
Esta instrucción devolverá 99,13 en el caso de PRECIO2 sea nulo. En caso contrario, devolverá el valor de PRECIO2 redondeado a 2 decimales.

sentencia condicional CASE
Proporciona un valor como resultado de una condición que se evalúa.

CASE [VALOR A EVALUAR]
WHEN [expresion1] THEN [RESULTADO1]
WHEN [expresion2] THEN [RESULTADO2]
ELSE [RESULTADO POR DEFECTO]
END

Función GETDATE() . Esta función devuelve la fecha y hora actuales del sistema

Comas y decimales

Es importante saber que para usar valores numéricos con decimales siempre se usará el punto . en lugar de la coma ,

Por lo tanto si quieres expresar el valor 3,90 deberás usar 3.90 ( usando un punto en lugar de la coma)

Ejemplo de fórmulas sencillas de Precio

A continuación se muestran algunas fórmulas sencillas que tienen en cuenta el campo PRECIO1 con método Markup es decir :Precio * (1.X)

ROUND(PRECIO1 + (PRECIO1 * 27/100),2)
Aumenta el PRECIO1 en 27% y lo redondea a 2 decimales.

ROUND(PRECIO1 - (PRECIO1 * 6/100),2)
Reduce el PRECIO1 en 6% y lo redondea a 2 decimales.

ROUND(PRECIO2 + (PRECIO2* 27/100),2) + 3.90
Aumenta el PRECIO2 en 27% y lo redondea a 2 decimales y luego suma 3,90

ROUND(PRECIO2 + (PRECIO2 * 50/100),2)
Ejemplo de fórmula con Precio2 o Precio de Compra + 1.50, redondeando a 2 Decimales

 

Algo más complejo

Fórmula para establecer un Margen sobre ventas del 25% sobre el Precio2 o ( precio de compra )

CASE COALESCE(PRECIO2,0)
when 0 THEN PRECIO1
ELSE
round((PRECIO2*100)/(100-25),2)
END

En este ejemplo se combinan practicamente todas las palabras reservadas que hemos visto,

Explicación: Primero evaluamos si tenemos precio de compra o no ( Precio2 ), si no viene precio2 , entonces devolverá el Precio1 ( precio de venta )

pero si viene correctamente el precio2 o precio de compra, entonces devolverá la fórmula round((PRECIO2*100)/(100-25),2) que  obedece a la siguiente fórmula

    PUC * 100
------------------
   100 - MARGEN

Rangos de Fechas

Imaginemos que queremos establecer un determinado precio en función de la fecha del año.

En este caso, queremos aumentar el precio de compra o precio en un 1.50 si la fecha de hoy está entre el 1 de Diciembre y el 31 de Diciembre del 2020  a los productos que contengan en su descripción la palabra ANTHELIOS.

Si estamos en cualquier otra fecha, aumentaremos el precio de compra oPrecio2 en un 1.70

CASE
WHEN NOMBRE LIKE '%ANTHELIOS%' and (GETDATE() AT TIME ZONE 'Central European Standard Time' between CONVERT(DATETIME, '2020/12/01', 102) AND CONVERT(DATETIME, '2020/12/31', 102)) 
THEN ROUND(PRECIO2 * 1.50,2)
ELSE ROUND(PRECIO2 * 1.70,2)
END

Rangos de precios

En esta ocasión tenemos una fórmula muy sencilla que nos permite aumentar un 3% a los productos cuyo Precio1 esté entre 18,01€  y 48€

si el precio es superior a 48€ entonces aumentará el precio e un 5%

para todos los demás productos, devolverá el Precio1

CASE
WHEN PRECIO1 BETWEEN 18.01 AND 48 THEN ROUND(PRECIO1 + (PRECIO1 * 3/100),2)
WHEN PRECIO1 >48 THEN ROUND(PRECIO1 + (PRECIO1 * 5/100),2)
ELSE PRECIO1
END

Usando campo CANTIDAD

En esta otra fórmula, tenemos otro ejemplo que usa el campo STOCK para determinar el precio del producto

Si la cantidad es inferior o igual 11, aumentará el precio1 en un 56%
Si la cantidad es inferior o igual 26, aumentará el precio1 en un 37%
Si la cantidad es inferior o igual 40, aumentará el precio1 en un 50%

en caso contrario, aumentará el precio1 en un 45%

CASE
WHEN CANTIDAD<=11 THEN ROUND(PRECIO1 + (PRECIO1 * 56/100),2)
WHEN CANTIDAD <=26 THEN ROUND(PRECIO1 + (PRECIO1 * 37/100),2)
WHEN CANTIDAD <=40 THEN ROUND(PRECIO1 + (PRECIO1 * 50/100),2)
ELSE
ROUND(PRECIO1 + (PRECIO1 * 45/100),2)
END

 

Otro ejemplo algo más completo sería el siguiente:

CASE 
WHEN PRECIO1<=40 THEN round(((PRECIO1+6.5)*1.262)*100/78.22,2) 
ELSE round(((PRECIO1+7.5)*1.262)*100/78.22,2) 
END

En definitiva, MWSConnect permite usar fórmulas de lo más sencillas hasta las más complejas para establecer su precio u stock en cualquiera de su marketplace o tienda virtual. Promofarma, Amazon , WooCommerce o Prestashop.