WooCommerce B2B: Cómo configurar una tienda mayorista

Publicado: 2020-06-09

El sector del comercio electrónico está experimentando un crecimiento increíble, año tras año, sin un final previsible a la vista. Lo mismo ocurre con el comercio electrónico B2B, pero no hay muchas buenas opciones de plataforma disponibles para las pequeñas y medianas empresas que desean vender al por mayor. Hay varias soluciones SaaS en el mercado, pero son costosas, de código cerrado y en su mayoría están orientadas a empresas más grandes.

Si es propietario o desarrollador de un negocio, WooCommerce es una solución gratuita, versátil y poderosa.

¿WooCommerce es adecuado para tiendas B2B?

“Listo para usar”, no lo es. WooCommerce es una solución fantástica para las tiendas de comercio electrónico, pero no se desarrolló específicamente para la venta al por mayor, por lo que desde el principio carece de muchas opciones importantes. Sin embargo, puede usar un poderoso complemento mayorista como B2BKing para extender WooCommerce y agregar todas las funcionalidades de empresa a empresa que pueda necesitar.

Hay otros dos aspectos que debes tener en cuenta al elegir WooCommerce para tu proyecto B2B:

  • WooCommerce requerirá actualizaciones regulares de complementos para garantizar que sea seguro y funcione correctamente.
  • Dependiendo de su alojamiento y configuración del sitio web, el entorno de WordPress a veces puede funcionar un poco lento. Sin embargo, hay formas de optimizarlo y acelerarlo, como a través de complementos como WP Rocket (u otros complementos de optimización y almacenamiento en caché).

Si bien no es perfecto, WooCommerce actualmente impulsa más del 20 % de las tiendas en línea del mundo, y hay buenas razones para ello: es gratuito, de código abierto, poderoso y seguro. Estas mismas cualidades también lo convierten en una excelente opción para tiendas mayoristas.

¿En qué se diferencia una tienda B2B de una tienda electrónica típica?

La venta de empresa a empresa suele ser una experiencia muy diferente y más personal que la venta directa a los consumidores. Los compradores comerciales tienen conocimientos, están abiertos a la negociación y desean obtener excelentes ofertas y descuentos por comprar al por mayor. Los catálogos de precios, las opciones de descuento y las opciones de pago y envío pueden variar mucho de un cliente a otro, según factores como el tamaño de la empresa, el tamaño del pedido o las relaciones comerciales existentes.

Desde el punto de vista del desarrollo de un sitio web, esto se traduce en la necesidad de un alto grado de flexibilidad técnica cuando se trata de reglas de precios, descuentos, envío y pedidos.

La venta a empresas también introduce la necesidad de funciones como:

  • Ocultar precios para invitados
  • formulario de registro de empresa
  • Compatibilidad con el número de IVA (u otra identificación fiscal)
  • Excepciones de impuestos
  • Solicitudes de cotización
  • Campos de pago y facturación personalizados
  • formulario de pedido al por mayor
  • Capacidad para admitir múltiples usuarios en una cuenta de comprador (para estructuras corporativas)

Avancemos y veamos cómo se pueden implementar algunas de estas funciones en WooCommerce. Las próximas secciones estarán más dirigidas a los desarrolladores y compartiré algunos fragmentos de código que espero les resulten útiles, así como complementos gratuitos que pueden usar.

1. Ocultar precios para usuarios invitados

Comencemos con uno fácil. Puedes hacer esto con dos filtros de WooCommerce. Primero, usemos woocommerce_get_price_html para cambiar el precio mostrado a "Iniciar sesión para ver precios".

add_filter( 'woocommerce_get_price_html', 'b2bking_hide_prices_guest_users', 10, 2 );

function b2bking_hide_prices_guest_users( $price, $product ){
if ( ! is_user_logged_in() ){
	return esc_html__( 'Login to view prices', 'your-plugin-text-domain' );
} else {
	return $price;
}
}

Una vez que hayamos hecho esto, los precios ya no estarán visibles y serán reemplazados por nuestro texto. Sin embargo, esto no es suficiente, ya que el usuario aún puede agregar estos productos al carrito y ver su precio. El filtro woocommerce_is_purchasable , acertadamente llamado, nos proporciona una solución.

add_filter( 'woocommerce_is_purchasable', 'b2bking_disable_purchasable_guest_users' );

function b2bking_disable_purchasable_guest_users( $purchasable ){
	if ( ! is_user_logged_in() ){
		return false;
	} else {
		return $purchasable;
	}
}

Después de agregar esto, los usuarios invitados ya no podrán comprar productos y el botón "agregar al carrito" ya no estará disponible. Una cosa más que vale la pena mencionar es que puede tener problemas al usar formularios de búsqueda AJAX, dependiendo de cómo estén configurados. Una forma rápida de solucionarlo es agregar también el código anterior a su código principal y buscar AJAX envolviendo el código dentro :

if ( wp_doing_ajax() ){ 
// code here
}

El final resulto:

Si está interesado en una alternativa de complemento porque no está familiarizado con la codificación, B2BKing tiene esta y otras funcionalidades de restricción de acceso de invitados, como una opción para ocultar el sitio web por completo u ocultar los precios de productos o categorías individuales.

2. Registro comercial, o formularios de registro B2B y B2C separados

Lo que desea hacer aquí es agregar campos personalizados como "Nombre de la empresa", "Dirección", "ID de IVA", etc.

Puede usar este código para agregar un campo personalizado para el nombre de la empresa:

add_action( 'woocommerce_register_form', 'b2bking_custom_registration_field' );

function b2bking_custom_registration_field(){
	echo '<label>' . esc_html__( 'Company name', 'your-custom-text-domain' ) . '</label>';
	echo '<input type="text" name="billing_company">';
}

Si desea sincronizar este campo con el campo de facturación de WooCommerce para el nombre de la empresa en el registro, puede hacerlo utilizando el enlace woocommerce_created_customer y guardando el nombre de la empresa como meta del usuario, utilizando los mismos campos que utiliza WooCommerce: billing_first_name, billing_company, billing_city, etc:

add_action( 'woocommerce_created_customer', 'b2bking_save_custom_registration_fields' );

function b2bking_save_custom_registration_fields( $user_id ) {
$field_value = sanitize_text_field( filter_input( INPUT_POST, 'billing_company' ) ); 
if ( $field_value !== NULL ){
	update_user_meta( $user_id, 'billing_company', $field_value );
}
}

¿Cómo puede crear campos de formulario B2B y B2C separados? Puede agregar un campo "Seleccionar" al registro de la forma explicada anteriormente y usar un poco de JavaScript para determinar si el usuario eligió "Individual" o "Empresa". Muestre u oculte campos de registro como el nombre de la empresa según lo que elija el usuario.

Si desea evitar la codificación, existen algunas soluciones de complementos gratuitas para extender el registro, como https://wordpress.org/plugins/user-registration/ que también tienen opciones para múltiples formularios de registro, aunque la creación de un registro específico de B2B puede requerir un poco de trabajo extra de tu parte.

Si está buscando una solución premium, B2BKing proporciona algunos códigos abreviados útiles y fáciles de usar que puede agregar a cualquier página y crear un formulario de registro comercial.

3. Formulario de pedido al por mayor

Los clientes comerciales a menudo saben exactamente lo que quieren, hasta el SKU, por lo que agregar un formulario de pedido al por mayor a su sitio web agiliza el pedido para sus clientes y lo hace lucir profesional.

¿Cómo puedes agregar uno? No hay un fragmento de código rápido que pueda hacer esto, así que creo que un complemento es la mejor solución.

Hay un complemento gratuito que probé personalmente, que se ve y funciona muy bien: https://wordpress.org/plugins/woocommerce-bulk-order-form/

B2BKing también tiene su propia implementación propietaria, que puedes ver en la siguiente imagen:

4. Estructura de precios al por mayor

La pregunta relevante aquí es: ¿cómo configurar diferentes precios para diferentes usuarios? Hay 2 formas de hacerlo: cambiar el precio directamente o agregar un descuento.

Para agregar un descuento de carrito para un usuario o categoría de usuarios, use este código:

add_action( 'woocommerce_cart_calculate_fees', 'b2bking_cart_discount' );

function b2bking_cart_discount( $cart ){
$cart->add_fee( 'B2B Discount', -10 );
}

El código anterior usa un pequeño truco al agregar una tarifa negativa, que es un descuento. El código anterior no hace mucho, solo agrega un descuento de 10 dólares para todos los usuarios. Ampliemos un poco el código:

function b2bking_cart_discount( $cart ){
	$user_id = get_current_user_id();
	$user_status = get_user_meta( $user_id, 'user_status', true );
	if ( $user_status === 'b2b' ){
		$cart->add_fee( 'B2B Discount', -10 );
	}
}

¿Cómo es esto? Ahora el código verifica si el estado meta del usuario es ' b2b' y otorga un descuento solo a los usuarios de b2b.

¿Cómo se configura el metaestado? Puede configurar eso en el registro usando el gancho woocommerce_created_customer que usé arriba en la sección del segundo artículo y una simple línea de código. La función update_user_meta se usa tanto para actualizar como para crear meta del usuario.

update_user_meta( $user_id, 'user_status', 'b2b' );

¿Qué sucede si desea establecer estructuras complejas de diferentes precios para diferentes productos para diferentes usuarios?

Esto se vuelve un poco más complicado pero puedes usar los mismos principios. En WooCommerce, un producto es una “publicación”, y puede configurar los metadatos de publicación para él. Por ejemplo, puede agregar una publicación meta llamada b2b_price, para tener un precio separado para los usuarios de b2b. Aquí está el código.

update_post_meta( $post_id, 'b2b_price', 15 ); // 15 is the price for b2b users

¿Cómo muestra este precio solo a los usuarios de B2B?

add_filter('woocommerce_product_get_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_get_regular_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_variation_get_regular_price', 'b2bking_fixed_price', 99, 2 );
add_filter('woocommerce_product_variation_get_price', 'b2bking_fixed_price', 99, 2 );

function b2bking_fixed_price( $price, $product ) {
	// check if the user is B2B or not
	$current_user_id = get_current_user_id();
	$current_user_status = get_user_meta( $current_user_id, 'user_status', true );
	if ( $current_user_status !== 'b2b' ){
		// if user is not b2b show the normal price
		return $price;
	} else {
		// get the current product’s price for B2B users
		$current_product_id = $product->get_id();
		$b2b_price = get_post_meta( $current_product_id, 'b2b_price', true );
		return $b2b_price;
	}
}

5. Establecimiento de exenciones fiscales

¡Este es más fácil de lo que crees! Hay una función muy útil que puedes usar en WooCommerce que hará esto por ti e incluso se encargará de mostrar el precio en la mayoría de las situaciones: set_is_vat_exempt() . Buen nombre, ¿verdad?

Esta función incluso hará que los usuarios de B2B vean precios con el sufijo "sin impuestos", mientras que los usuarios de B2C vean precios que digan "impuestos incluidos".

add_action( 'init', 'b2bking_tax_exemption' );

function b2bking_tax_exemption(){
	// first we check if the user is tax exempt
	$tax_exempt = get_user_meta( get_current_user_id(), 'is_tax_exempt', true );
	if ( $tax_exempt === 'exempt' ){
		$customer = WC()->customer;
		$customer->set_is_vat_exempt( true );
	} else {
		// the next line is only necessary if the user’s exempt status changes dynamically, such as based on billing country
		$customer->set_is_vat_exempt( false ); 
	}
}

B2BKing - Complemento WooCommerce B2B y mayorista

Espero que algo de lo que he compartido anteriormente te sea útil. Sin embargo, equipar WooCommerce con funcionalidades B2B es una tarea compleja, y no te culparía si decidieras que comprar un complemento premium es un mejor uso de tu tiempo que escribir el código tú mismo. Realmente, no te juzgaré en absoluto.

Con eso en mente, compartiré algunas palabras sobre B2BKing. Este es un proyecto en el que mi equipo y yo hemos estado trabajando durante un tiempo, con el objetivo de convertir WooCommerce en una solución B2B capaz, una alternativa a las costosas plataformas SAAS.

Estamos constantemente desarrollándolo y apoyándolo como un proyecto a largo plazo, y actualmente tiene más de 137 características que incluyen registro comercial, exenciones de impuestos, reglas de precios dinámicas, soporte de IVA, sistema de mensajería incorporado, múltiples compradores en la cuenta, ofertas, un modo híbrido B2B y B2C dedicado y mucho, mucho más.

Esta semana, nos enorgullece haber sido seleccionados por Envato como su "Complemento destacado de la semana " y exhibidos en la página principal de CodeCanyon.

Ofrecemos una demostración en vivo que puede probar en cualquier momento, tanto en el backend como en el frontend: Live Demo

Si tiene alguna pregunta sobre el artículo, sobre el complemento o simplemente quiere saludar, ¡no sea tímido! No dude en ponerse en contacto con el desarrollador de complementos de su vecindario amigable.