// Ajusta cantidad al múltiplo y exidis al actualizar en el carrito add_action('woocommerce_after_cart_item_quantity_update', 'ajustar_multiplo_y_exidis_en_update', 9, 3); function ajustar_multiplo_y_exidis_en_update($cart_item_key, $quantity, $old_quantity) { $cart = WC()->cart; $cart_item = $cart->get_cart_item($cart_item_key); $product_id = $cart_item['product_id']; $product = wc_get_product($product_id); $sku = $product->get_sku(); $pza_caja = get_post_meta($product_id, 'pza_caja', true); $multiplo = $pza_caja ? intval($pza_caja) : 1; // Consultar exidis remoto $remote = new SesionRobotito(WC()->session->get_customer_id()); $remote->initDatabase(); $remote->loadCookies(); if (!$remote->checkSession()) { $remote->login(); } $producto_autocomplete = $remote->getProductoAutocomplete($sku); $exidis = null; if ($producto_autocomplete && isset($producto_autocomplete['data']['exidis'])) { $exidis = intval($producto_autocomplete['data']['exidis']); } $ajustada = $quantity; if ($multiplo > 1 && $ajustada % $multiplo !== 0) { $ajustada = ceil($ajustada / $multiplo) * $multiplo; } if ($exidis !== null && $ajustada > $exidis) { $ajustada = $exidis - ($exidis % $multiplo); wc_add_notice('No hay suficiente disponibilidad. Máximo permitido: ' . $exidis, 'error'); } if ($ajustada != $quantity) { $cart->set_quantity($cart_item_key, $ajustada); wc_add_notice('La cantidad se ajustó a ' . $ajustada, 'notice'); } } Metales No Ferrosos | Distribuidor de Abrasivos y Herramientas | Abrasivo.mx