Genera un plugin de precios mayoristas por tramos para WooCommerce
Los precios mayoristas en WooCommerce son ese caso donde el plugin público cubre el 80% y luego el catálogo manager dice "por cierto, el Distribuidor A tiene 30% de descuento en categoría X pero sólo en pedidos de más de 500€, y los minoristas en UE tienen un tratamiento fiscal distinto a los no-UE". Ese 20% es donde el plugin genérico se rompe y tu contable empieza a apuntar excepciones a mano.
Generar un plugin de mayoristas desde cero te deja codificar tu escala exacta de precios. Tramos por rol, overrides por cliente en user meta, pedido mínimo por producto, display de impuestos por tipo de cliente — todo son caminos que el plugin evalúa en calculate_totals(). Tú describes, nosotros escribimos la lógica.
¿Por qué generarlo en vez de instalar un plugin existente?
B2BKing y Wholesale Suite son plugins maduros y buenos. Arrancan en 100-150€/año y traen UIs extensas, genial si necesitas la experiencia B2B completa: quotes, pagos por factura, órdenes de compra. Si tu operación mayorista es más simple — "los roles X, Y, Z tienen descuentos A, B, C" — pagas por una superficie que no vas a usar.
La proliferación de configuración de esos plugins (docenas de páginas de ajustes, sub-reglas por rol, producto, categoría) se convierte en su propio mantenimiento. Cuatro años después, nadie recuerda por qué el Rol B tenía esa regla sobreescrita en la Categoría C. Un plugin generado es un fichero de reglas legible de punta a punta.
Si tus reglas mayoristas viven en una hoja de cálculo y cambian poco, el plugin puede leer de un JSON editable por shortcode o de una tabla que ops mantiene. Menos admin, menos sorpresas, huella auditable más pequeña.
Prompt de ejemplo
Este es el tipo de descripción que genera este plugin. Puedes partir de aquí y ajustar lo que necesites antes de generar.
Nombre del plugin: Acme Precios B2B
Roles: "retailer" y "distributor" (crear en activación si faltan).
Reglas:
- retailer: -15% sobre regular_price.
- distributor: -25% en categoría "core", -30% en "accessories", -15% resto.
Pedido mínimo:
- retailer: 10 unidades por producto.
- distributor: sin mínimo.
Display de impuestos:
- retailer: precios con IVA (21%).
- distributor: sin IVA.
En add-to-cart: validar cantidad mínima server-side. Si no llega, bloquear con error claro.
Shortcode [acme_price_table sku="ABC123"] muestra precio del visitante + precio público tachado.
Admin bajo WC > Ajustes > B2B:
- Tabla de reglas (rol, categoría, %) editable.
- Override por cliente: buscar usuario, fijar % (user meta).
HPOS-compatible. Sin dependencias.Qué suele incluir el plugin generado
- Filtro en woocommerce_product_get_price y _regular_price por rol
- Check de user meta con caché por request
- Filtro de display de impuestos vía woocommerce_get_price_including_tax / excluding_tax
- Pedido mínimo forzado en woocommerce_add_to_cart_validation
- Shortcode con esc_html + wc_price
- Ajustes admin con búsqueda AJAX de usuarios para overrides
- Hook de activación que crea roles faltantes
Quotes, órdenes de compra, pago por factura, catálogo oculto, listas SKU por cliente — cada feature extra es una línea en el prompt.
Preguntas frecuentes
¿Funciona con multidivisa?
Sí, si el plugin multidivisa aplica la conversión vía woocommerce_product_get_price (casi todos, CURCY y WPML Currency lo hacen). El pricing evalúa primero, luego la divisa. Menciona cuál usas.
¿Cómo interactúa con cupones WC?
Por defecto los cupones aplican después del precio mayorista (descuento + cupón apilan). Si no quieres apilar, añadimos filtro que bloquea cupones para ciertos roles. Tú eliges.
¿Puede ocultar productos al minorista?
Sí. Filtramos por categoría o tag en pre_get_posts para archivos de tienda y bloqueamos URL directa con redirect. Dinos qué rol ve qué catálogo.
¿Soporta quotes (sin checkout inmediato)?
Podemos reemplazar "Añadir al carrito" por "Solicitar presupuesto" para ciertos roles, crear un estado "pending_quote" y notificar a ventas. Describe el flujo y se construye.