pavelevap / ceske-sluzby

České služby pro WordPress
56 stars 25 forks source link

DPD ParcelShop - doprava zdarma od určité ceny #183

Open vitschlesinger opened 7 years ago

vitschlesinger commented 7 years ago

Sekce DPD ParcelShop nepodporuje nastavení Dopravy zdarma od určité ceny.

Příklad: Objednávka do 299 Kč - Doprava DPD ParcelShop od 99,- Kč Objednávka od 300 Kč - Doprava DPD PracelShop 0,- Kč

pavelevap commented 7 years ago

@vitschlesinger: Ano, bohužel, tento způsob dopravy zatím nepodporuje shipping zones :-( #79

Nebo myslíte nějaké obecné nastavení, kde by bylo možné nastavit odstupňovanou cenu? Tedy nejen zdarma a za poplatek, ale rovnou třeba 3 různá pásma?

vitschlesinger commented 7 years ago

@pavelevap Ano, myslím aby se dala cena dopravy odstupňovat od určité ceny, příklad uvádím níže:

0-299 Kč cena objednávky = doprava od 50,- Kč 300 - 599 Kč cena objednávky = doprava 0,- Kč

Vpodstatě klasický systém, kde si můžu nastavit, od jaké ceny už je doprava zdarma. Bylo by to skvělá feature! Dejte mi vědět, zda-li i Vám dává smysl :)

My např. máme dopravu přes PPL a DPD a doprava od určité částky je zdarma, nicméně na DPD ParcelShop toto nastavení nelze aplikovat :(

pavelevap commented 7 years ago

@vitschlesinger: Ano, dává to smysl :-) Původně jsem myslel, že chcete něco jako klasický table rate shipping, tedy možnost nastavit třeba 5 různých cenových rozmezí, ale na to už jsou specializované pluginy, např. zde: https://wordpress.org/plugins/woocommerce-easy-table-rate-shipping/

Jak máte nastavenou dopravu zdarma pro PPL? Klasickou dopravní metodou "Doprava zdarma"? Pokud by šlo ale pouze o dopravu zdarma od určité ceny a možnost nastavit to pro všechny druhy dopravy, tak by to asi nemusel být problém, jen přemýšlím, jak to nejlépe udělat. Dokonce na to máme už jednu issue: #17. Myšlenka tam byla taková, že se využije doprava zdarma, kterou nabízí WooCommerce a pouze se doplní jedna z možností:

1) Buď udělat pro dopravu zdarma možnost výběru, pro kterou dopravní metodu se má aplikovat (výběr ze všech ostatních nastavených metod). Nevýhodou je, že je to samostatná dopravní metoda, takže když budou dvě různé podmínky (třeba různá pro DPD a PPL), tak se tam budou muset dát dvě různé dopravy.

2) Nebo doplnit ke všem ostatním dopravním metodám možnost nastavení podmínek pro dopravu zdarma (cena, od kdy bude doprava zdarma aplikována). Je to asi přehlednější situace, ale na druhou stranu pak úplně mizí možnost využití defaultní dopravy zdarma.

vitschlesinger commented 7 years ago

Dopravu mám ve WP řešenou přes plugin Woo Doprava (http://toret.cz/produkt/woo-doprava/) viz.: http://jmp.sh/hBJCS5n a potřeboval bych něco podobného právě i pro DPD ParcelShop se stejným nastavením. Myslíte, že je to možné? Díky mockrát! :)

niall-brown commented 6 years ago

I wanted to do something similar and managed to hack the plugin to achieve it.

File: ceske-sluzby-master/includes/class-ceske-sluzby-dpd-parcelshop.php Function: calculate_shipping

public function calculate_shipping( $package = array() ) {
    $zeme = WC()->customer->get_shipping_country();
    $total = WC()->cart->get_displayed_subtotal();
    if ( $zeme == "CZ" ) { 
        if ( $total < 2000) {
            $cena = $this->get_option( 'dpd_parcelshop_zakladni-cena' ); 
            $label = $this->title;
        }
        else {
            $cena = 0; 
            $label = $this->title . " zdarma";
        }
    }
    if ( $zeme == "SK" ) { $cena = $this->get_option( 'dpd_parcelshop_zakladni-cena-slovensko' ); }

    $rate = array(
      'id' => $this->id,
      'label' => $label,
      'cost' => $cena
    );
    $this->add_rate( $rate );
  }

I guess the cutoff value (I have 2000) should be defined in init_form_fields. Do you think it would be possible to roll this into the main code? Maybe there should be two cutoff values, one for CZ one for SK

To see my mod in action you can visit www.odomu.cz/obchod

(omlouvam se za anglictinu!)

pavelevap commented 4 years ago

Tak nakonec to bude celé trochu složitější, ale snad se to nějak podařilo realizovat. Pro každý způsob dopravy (a to i včetně dopravních zón) si můžete nově definovat vlastní cenové intervaly. Jak to funguje? Do příslušného políčka stačí vložit následující (formát je podobný jako u dodací doby):

100|99
500|49
1000|0

Nákup do hodnoty 100 Kč si bude brát nastavení ceny podle zvolené dopravy, nad 100 Kč se cena změní na 99 Kč, nad 500 Kč se automaticky změní na 49 Kč a nad 1000 Kč bude doprava zdarma. A použít to lze pro starší způsoby dopravy (tedy třeba DPD) i novější s využitím dopravních zón.

A dále přibylo ještě jedno nastavení, které umožní zadávat ceny dopravy s DPH. Standardně je možné zadávat cenu ve WooCommerce pouze bez DPH, takže musíte i intervaly zadávat bez DPH. S tímto nastavením se ale může vše zadávat i s DPH a nemusíte si to pak ručně dopočítávat (pozor ovlivní to všechny nastavené ceny dopravy). Inspirace pochází odtud: https://stackoverflow.com/questions/31335937/woocommerce-shipping-price-inclusive-tax

Co je potřeba ještě doladit?