Ako nastaviť nulovú DPH pri predaji do zahraničia

Woocommerce ponúka možnosť jednoducho definovať rôzne sadzby pre daň z pridanej hodnoty. Čo však neponúka, je možnosť určiť, či majiteľ e-shopu a jeho zákaznik je platiteľ alebo neplatiteľ DPH. Toto je dôležité rozlišovať predovšetkým v prípade, že e-shop predáva svoje produkty do zahraničia. Každý platiteľ DPH má pridelené svoje daňové identifikačné číslo pre DPH, u nás známe ako IČ DPH alebo tiež VAT number v angličtine. Preto je potrebné pri vytváraní objednávky na e-shope mať aj možnosť zadať fakturačné údaje vrátane spomináneho IČ DPH, čo v základe Woocommerce tiež chýba.

V prípade ak majiteľ e-shopu je platiteľ DPH a predá produkty zahraničnému platiteľovi DPH s vyplneným IČ DPH,  je potrebné aby mu ich predal bez DPH. Ide o prípad tzv. “prenesenia daňovej povinnosti”, z angličtiny Reverse charge.

Pre zabezpečenie tohto princípu vo Woocommerce som si napísal jednoduchú PHP triedu, ktorá vyžaduje iba zadanie kľúča pre hodnotu predstavujúcu údaj IČ DPH. Trieda obsahuje funkcie, ktoré jednoducho overia či ide o zahraničného zákazníka s vyplneným IČ DPH. Ak áno, nastavia tomuto zákazníkovi oslobodenie od DPH a teda sa mu v pokladni zobrazia iba ceny bez DPH.

Aj keď riešenie nie je úplne stopercentné, keďže sa neoveruje zadané IČ DPH a taktiež sa nerozlišujú krajiny, pre menšie e-shopy predavájuce do štátov Európskej únie je postačujúce.

				
					class PxReverseCharge
{
    public $vat_number_key;

    public $country_code;

    public function __construct($vat_number_key, $country_code)
    {
        $this->vat_number_key = $vat_number_key;

        $this->country_code = $country_code;

        if (!is_admin()) {
            $this->hooks();
        }
    }

    function hooks()
    {
        add_action('woocommerce_checkout_update_order_review', array($this, 'px_tax_exempt_checkout'));
        add_action('woocommerce_checkout_init', array($this, 'px_refresh_checkout'));
    }

    function px_tax_exempt_checkout($post_data)
    {
        WC()->customer->set_is_vat_exempt(false);
        parse_str($post_data, $output);
        if ($output['billing_country'] !== $this->country_code && $output[$this->vat_number_key] !== "") {
            WC()->customer->set_is_vat_exempt(true);
        }

    }

    function px_refresh_checkout()
    {
        $code = "jQuery( function($){
        $('form.checkout').on('change', 'input[name=" . $this->vat_number_key . "]', function(){
            $(document.body).trigger('update_checkout');
        });
    });";

        wc_enqueue_js($code);
    }
    
}

//priklad s klucom billing_icdph
new PxReverseCharge('billing_icdph', 'SK');
				
			
Picture of Roman Kraiger

Roman Kraiger

Zakladateľ agentúry Pixeler, vášnivý cyklista, programátor a občasný bloger.

Páčil sa Vám tento článok?

Odmeňte ho páčikom.

alebo ho zdieľajte medzi priateľmi na:

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *