WooCommerce Postiennakko

WooCommerce Postiennakko

WooCommerce postiennakko on aina ollut mahdollista. Se on helppo asettaa, kun vain uudelleen nimeää jonkin WooCommercen valmiista maksutavoista, esimerkiksi Shekkimaksun.

MUTTA mitenkäs postienakon sitoo ainoastaan Postin toimitustapoihin, jos kaupassa on myös esim. Matkahuolto ja/tai nouto vaihtoehdot? Posti myös perii postiennakko -palvelusta 5,50€. Mitenkäs se lisätään tilaukselle automaattisesti?

Postiennakko nyt ei nykyään ole ehkä enää se yleisin maksutapa verkkokaupassa, mutta joissakin asiakassegmenteissä edelleen ihan käyttökelpoinen.

En itsekään ole mikään suuren suuri koodari, mutta yhdistelin ja muokkasin netistä löytämistäni valmiista koodin pätkistä WordPress pluginin, joka tekee kaiken tuon edellämainitun.

Tässä koodi, ole hyvä (mutta älä vielä lähde asentelemaansitä, se vaatii ensin pientä konfigurointia):

<?php
/**
Plugin Name: Postiennakkomaksu
Description: Näytetään postiennakkomaksu postin toimitustavalle ja lisätään kassalla tilaukselle 5,50€ sis. ALV postiennakkomaksu.
 */
 
 // Mahdollistetaan postiennakon käyttö VAIN jos postin toimitustapa on valittuna

function postiennakkomaksu_available_payment_gateways( $gateways ) {
	
	if( !is_admin() ) {

	$chosen_shipping_rates = WC()->session->get( 'chosen_shipping_methods', array() );

	if ( ! in_array( 'posti_pickup:3', $chosen_shipping_rates ) ) :

		unset( $gateways['cheque'] );

	endif;

	return $gateways;
	
	}

}
add_filter( 'woocommerce_available_payment_gateways', 'postiennakkomaksu_available_payment_gateways' );
  
// Luodaan postiennakkomaksu (maksu itsessään syötetään verottomana)
  
add_action( 'woocommerce_cart_calculate_fees', 'postiennakkomaksu_add_checkout_fee_for_gateway' );
  
function postiennakkomaksu_add_checkout_fee_for_gateway($cart_obj) {
    $chosen_gateway = WC()->session->get( 'chosen_payment_method' );
     if ( $chosen_gateway == 'cheque' ) {
      $cart_obj->add_fee( 'Postiennakkomaksu', 4.435, true );
   }
}
  
// Päivitä kassa sivu ja lisää postiennakkomaksu
  
add_action( 'woocommerce_review_order_before_payment', 'postiennakkomaksu_refresh_checkout_on_payment_methods_change' );
  
function postiennakkomaksu_refresh_checkout_on_payment_methods_change(){
    ?>
    <script type="text/javascript">
        (function($){
            $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
                $('body').trigger('update_checkout');
            });
        })(jQuery);
    </script>
    <?php
}
?>

Shekkimaksuista WooCommerce Postiennakko

Suurimmalla osalla ei Suomessa ole shekkimaksut käytössä verkkokaupassa, joten sitä voidaan käyttää postiennakon luomiseen. Klikkaa siis WooCommercen maksujen asetuksiin: WooCommerce –> Asetukset –> Maksut –> Shekkimaksu

WooCommerce Postiennakko Luonti Shekkimaksusta
Shekkimaksu -maksutavan asetukset.

Seuraavaksi avautuu Shekkimaksun, eikun Postiennakon asetukset. Täppää ruksi kohtaan ”Ota käyttöön shekillä (sekki) maksaminen”. Otsikko kohdassa päätetään mitä kassalla/kuitissa lukee ja lopuksi annetaan kuvaus maksutavasta. Klikkaa lopuksi ”Tallenna muutokset”.

WooCommerce Postiennakko Maksutapa Asetukset
Muutetaan Shekkimaksu Postiennakoksi.

WooCommerce Postiennakko Tietylle Toimitustavall

Seuraavaksi sidotaan postiennakko tiettyyn toimitustapaan, eli sitä ei voi valita maksutavaksi, ellei tietty toimitustapa ole valittu. Avaa Firefox tai Chrome -selain, lisää jotakin verkkokauppasi ostoskoriin ja klikkaa itsesi kassalle. Nyt seuraa tämän projektin teknisin kohta.

Kassalla klikkaa hiiren oikealla nappulalla sen toimitustavan palluraa, jonka haluat sitoa postiennakkoon. Valitse aukeavasta valikosta joko ”Inspect” Chromessa tai ”Inspect Element” Firefoxissa.

WooCommerce Postiennakko Toimitustapa
Google Chrome Inspect -työkalu

Selaimen alareunaan aukeaa sivustosi html -koodia. Älä huoli, et voi tässä kohtaa rikkoa mitään. Etsi valitsemasi toimitustavan koodista kohta value="jotakin". Kopioi heittomerkkien välissä oleva teksti, mutta älä heittomerkkejä. Tässä esimerkissä kopioidaan flat_rate:1 -teksti.

Lataa nyt plugari ja avaa tekstieditorilla postiennakkomaksu.php -tiedosto. Ylikirjoita rivillä 15 oleva flat_rate:1 -kohta äsken sivultasi kopioimalla tekstillä. Esimerkiksi, jos kopioimasi tieto olisi flat_rate:7, olisi ylikirjoituksen jälkeen rivit 15 tämän näköinen:

if ( ! in_array( 'flat_rate:7', $chosen_shipping_rates ) ) :

Postiennakkomaksun Määrittäminen

Tämä kohta ei ole pakollinen, mutta jos haluat muuttaa postiennakkomaksun joksikin muuksi, kuin 5,50€ suuruiseksi se onnistuu seuraavasti. Avaa jälleen postiennakkomaksu.php -tiedosto tekstieditorilla ja etsi rivi 35 joka näyttää tältä:

  $cart_obj->add_fee( 'Postiennakkomaksu', 4.435, true );

Voit muuttaa rivilta 35 hinnan, joka oletuksena on 4.435. Huomioi, että desimaalierottimena toimii piste, ei pilkku. Huomioi myös, että hinta syötetään ALV 0% muotoisena ja verkkokauppa lisää siihen alvin kassalla. Alvittoman hinnan saat jakamalla alvillisen hinnan 1,24:llä. Eli, kun haluamme hinnakis 5,50€ alviton hinta lasketaan seuraavasti: 5,5/1,24=4,435. Pyöristä alviton hinta kolmanteen desimaaliin.

Nyt voit siirtää koko Postiennakkokansion FTP:llä palvelimelle wp-content –> plugins -kansioon ja ottaa hallinnasta pluginin käyttöön. Vaihtoehtoisesti voit pakata kansion .zip -tiedostoksi ja lisätä sen Lisäosat –> Lisää uusi -sivun yläreunan kautta sivustollesi.

Lähteet

https://businessbloomer.com/woocommerce-add-fee-to-cart/
https://stackoverflow.com/questions/44091342/make-taxable-a-woocommerce-custom-fee-based-on-payment-gateway-and-country
https://jeroensormani.com/enable-disable-payment-gateways-for-specific-shipping-methods/
https://stackoverflow.com/questions/53702966/disable-a-shipping-method-for-a-specific-payment-method-in-woocommerce

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn
Share on whatsapp
WhatsApp
Share on email
Sähköposti

2 Comments

  • Ihan mahtava plugin! Kiitos!
    Mitä jos toimitustapoja on kaksi, niin miten saan koodattua tuohon 2 eri ”flat ratea” eli jotain tyyliin
    if ( ! in_array( ’flat_rate:7&flat_rate:6’, $chosen_shipping_rates ) ) :

    En osaa koodaa 😀

    Reply
    • Kiitokset palautteesta Henrikkaa!

      Pitääpä tuota hieman tutkailla, kyllätän tuo toki mahdollista on… 🙂

      Reply

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *

Scroll to Top