Inviare un buono sconto ad un cliente dopo l’acquisto in base ad un importo speso ed al metodo di pagamento scelto

Oggi vediamo un codice che ci aiuta a dare uno sconto al cliente che effettua un ordine sul sito web e che rispetta certe caratteristiche, in questo caso le seguenti:

  • il cliente deve spendere almeno 250 €
  • il cliente deve pagare con bonifico bancario oppure con ritiro in sede
// Soglia minima per la creazione del coupon
define('IMPORTO_MINIMO_ORDINE_COUPON',250);

// ogni volta che un ordine completato soddisfa i criteri, il cliente riceverà un'email con il coupon di sconto
add_action('woocommerce_order_status_completed', 'invia_coupon_sconto', 10, 1);
add_action('woocommerce_email_before_order_table', 'aggiungi_coupon_alla_mail', 10, 4);

function invia_coupon_sconto($order_id) {
    $order = wc_get_order($order_id);

    if (!$order || $order->get_meta('generated_coupon_code')) {
        return;
    }

    // Ottieni il totale e il metodo di pagamento
    $order_total = $order->get_total();
    $payment_method = $order->get_payment_method();

    if ($order_total > IMPORTO_MINIMO_ORDINE_COUPON && in_array($payment_method, ['bacs', 'local_pickup'])) {
        // Genera e salva il coupon
        genera_coupon_per_ordine($order);
    }
}

function aggiungi_coupon_alla_mail($order, $sent_to_admin, $plain_text, $email) {
    if ($email->id == 'customer_completed_order') {
        // Verifica il totale dell'ordine
        $order_total = $order->get_total();
        
        // Se il totale non supera la soglia, non mostrare il coupon
        if ($order_total <= IMPORTO_MINIMO_ORDINE_COUPON) {
            return;
        }

        if ( ! empty($coupon_code)) {
            echo '<div style="width: 80%; margin: 16px auto; padding: 16px 5%; text-align: center; border-width: 6px; border-style: dashed; border-color: #999;">';
            echo '<h4 style="font-size: 16px;">Il tuo Coupon Pick & Pay</h4>';
            echo '<h2 style="text-transform: uppercase; font-size: 32px; text-align: center;">' . esc_html($coupon_code) . '</h2>';
            echo '<p>Utilizza questo coupon per ottenere uno sconto di un 8% sul tuo prossimo ordine. Questo coupon è utilizzabile una sola volta.</p>';
            echo '</div>';
        }
    }
}

function genera_coupon_per_ordine($order) {
    // Genera un codice coupon unico
    $coupon_code = 'sconto8_' . uniqid();

    // Crea il coupon
    $coupon = new WC_Coupon();
    $coupon->set_code($coupon_code);
    $coupon->set_discount_type('percent'); // Tipo di sconto percentuale
    $coupon->set_amount(8); // Sconto 8%
    $coupon->set_individual_use(true); // Utilizzabile solo una volta
    $coupon->set_usage_limit(1); // Limitato a un uso
    $coupon->save();

    // Salva il codice coupon come meta nell'ordine
    $order->update_meta_data('generated_coupon_code', $coupon_code);
    $order->save();

    return $coupon_code;
}

Il cliente riceve nella mail lo sconto di un 8% da usare quando vuole, oppure nel codice ho inserirto e commentato ache un limite di tempo.

Impostato il coupon per essere usato solo 1 volta. In questo caso il coupon viene inserito nel sistema ed è realizzato in modo da essere univoco per ogni cliente.

Questo è quello che riceverà il cliente.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *