Salutare!
Am o problema un pic mai complexa de cat nivelul meu si nu reusesc sa o rezolv, asa ca sper foarte mult sa ma ajutati un pic!
Site-ul la care lucrez este pentru un restaurant si a implementat procesatorul de comenzi de la GrandChef am sincronizat tot ok, comenzile merg la ei e totul bine, doar ca cei de la GrandChef nu primesc si costul livrarii, dar el este necesar pentru a fi inclus in factura! Ei mi-au sugerat ca sa creez un produs cu pretul = cu costul livrarii!
Problema: pe site avem 2 zone de livrare cu costuri diferite!
respectiv am creat 2 produse cu aceste costuri!
Solutia la care am ajuns eu este ca atunci cand clientul adauga adresa de livrare sa fac update la cart si sa adaug produsul cu costul de livrare respectiv zonei de livrare!
intr-o oarecare masura am reusit asta, doar ca atunci cand fac update la adresa se adauga doar produsul 1 al doilea nu se adauga, chiar daca schimb adresa!
atasez si scriptul creat de mine pentru a fi mai usor sa intelegeti!
Daca a mai lucrat cineva cu cei de la GrandChef si a mai intampinata ceasta problema, var rog sa imi spune-ti cum a-ti rezolvat-o!
function adauga_sterge_produse_in_cos()
{
// Verificați zona de livrare selectată
$zona_livrare_id = 0;
// Accesați lista zonelor de livrare din sistemul WooCommerce
$zone_livrare = WC_Shipping_Zones::get_zones();
// Parcurgeți lista zonelor de livrare pentru a găsi zona corespunzătoare
foreach ($zone_livrare as $zone) {
// Verificați condițiile specifice pentru a identifica zona de livrare dorită
// Exemplu: dacă numele zonei de livrare corespunde sau ID-ul zonei de livrare corespunde
if ($zone['zone_id'] === 1) {
$zona_livrare_id = $zone['zone_id'];
break;
}
}
// Verificați și ajustați coșul în funcție de zona de livrare selectată
if ($zona_livrare_id === 1) {
$product_id_zona_1 = 636; // ID-ul produsului pentru Zona 1
$product_id_zona_2 = 637; // ID-ul produsului pentru Zona 2
// Verificați dacă produsul pentru Zona 2 există în coș și eliminați-l
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
if ($cart_item['product_id'] === $product_id_zona_2) {
WC()->cart->remove_cart_item($cart_item_key);
break;
}
}
// Verificați dacă produsul pentru Zona 1 există deja în coș
$product_1_in_cart = false;
foreach (WC()->cart->get_cart() as $cart_item) {
if ($cart_item['product_id'] === $product_id_zona_1) {
$product_1_in_cart = true;
break;
}
}
// Adăugați produsul pentru Zona 1 în coș doar dacă nu există deja
if (!$product_1_in_cart) {
$quantity = 1; // Cantitatea produsului
WC()->cart->add_to_cart($product_id_zona_1, $quantity);
}
} elseif ($zona_livrare_id === 3) {
$product_id_zona_1 = 636; // ID-ul produsului pentru Zona 1
$product_id_zona_2 = 637; // ID-ul produsului pentru Zona 2
// Verificați dacă produsul pentru Zona 1 există în coș și eliminați-l
foreach (WC()->cart->get_cart() as $cart_item_key => $cart_item) {
if ($cart_item['product_id'] === $product_id_zona_1) {
WC()->cart->remove_cart_item($cart_item_key);
break;
}
}
// Verificați dacă produsul pentru Zona 2 există deja în coș
$product_2_in_cart = false;
foreach (WC()->cart->get_cart() as $cart_item) {
if ($cart_item['product_id'] === $product_id_zona_2) {
$product_2_in_cart = true;
break;
}
}
// Adăugați produsul pentru Zona 2 în coș doar dacă nu există deja
if (!$product_2_in_cart) {
$quantity = 1; // Cantitatea produsului
WC()->cart->add_to_cart($product_id_zona_2, $quantity);
}
}
}
add_action('woocommerce_checkout_update_order_review', 'adauga_sterge_produse_in_cos');