Pro vývojáře
Tato sekce je určena pro vývojáře, kteří chtějí integrovat modul s vlastními řešeními nebo fakturačními pluginy.
Meta data objednávky
Section titled “Meta data objednávky”Firemní údaje
Section titled “Firemní údaje”| Meta klíč | Popis | Příklad |
|---|---|---|
_billing_ic | IČ (identifikační číslo) | 12345678 |
_billing_dic | DIČ (daňové identifikační číslo) | CZ12345678 |
_billing_dic_dph | IČ DPH (pouze Slovensko) | SK1234567890 |
Osvobození od DPH
Section titled “Osvobození od DPH”| Meta klíč | Popis | Hodnoty |
|---|---|---|
is_vat_exempt | WooCommerce standard - osvobození od DPH | yes / no |
_wpify_vat_exempt_reason | Důvod osvobození | domestic, export, reverse_charge, legacy, standard |
Příklad získání dat z objednávky
Section titled “Příklad získání dat z objednávky”$order = wc_get_order( $order_id );
// Firemní údaje$ic = $order->get_meta( '_billing_ic' );$dic = $order->get_meta( '_billing_dic' );$dic_dph = $order->get_meta( '_billing_dic_dph' );
// Osvobození od DPH - použijte WooCommerce metodu$is_vat_exempt = wc_string_to_bool( $order->get_meta( 'is_vat_exempt' ) );$vat_exempt_reason = $order->get_meta( '_wpify_vat_exempt_reason' );Meta data zákazníka
Section titled “Meta data zákazníka”| Meta klíč | Popis |
|---|---|
billing_ic | IČ zákazníka |
billing_dic | DIČ zákazníka |
billing_dic_dph | IČ DPH zákazníka (SK) |
Získání dat ze zákazníka
Section titled “Získání dat ze zákazníka”// Doporučený způsob - použití WC_Customer objektu$customer = WC()->customer;
// Osvobození od DPH - primární zdroj je zákazník$is_vat_exempt = $customer->get_is_vat_exempt();
// Firemní údaje$ic = $customer->get_meta( 'billing_ic' );$dic = $customer->get_meta( 'billing_dic' );
// Alternativně z user meta$user_id = get_current_user_id();$ic = get_user_meta( $user_id, 'billing_ic', true );$dic = get_user_meta( $user_id, 'billing_dic', true );Dostupné filtry
Section titled “Dostupné filtry”wpify_woo_icdic_eu_country_codes
Section titled “wpify_woo_icdic_eu_country_codes”Upraví seznam EU zemí pro výpočet Reverse Charge.
apply_filters( 'wpify_woo_icdic_eu_country_codes', $eu_countries );| Parametr | Typ | Popis |
|---|---|---|
$eu_countries | array | Pole kódů EU zemí (např. ['CZ', 'SK', 'DE', ...]) |
Návratová hodnota: array - Upravené pole kódů zemí
Příklad:
/** * Upravit seznam EU zemí * * @param array $countries Pole kódů EU zemí * * @return array Upravené pole zemí */function my_modify_eu_countries( array $countries ): array { // Přidat zemi (např. po vstupu do EU) $countries[] = 'XX';
// Odebrat zemi $countries = array_diff( $countries, array( 'GB' ) );
return $countries;}add_filter( 'wpify_woo_icdic_eu_country_codes', 'my_modify_eu_countries' );wpify_woo_icdic_vat_id_valid_for_exempt
Section titled “wpify_woo_icdic_vat_id_valid_for_exempt”Vlastní validace DIČ pro osvobození od DPH. Umožňuje bypass VIES nebo vlastní kontrolu.
apply_filters( 'wpify_woo_icdic_vat_id_valid_for_exempt', $is_valid, $vat_id );| Parametr | Typ | Popis |
|---|---|---|
$is_valid | bool | Výsledek validace (z VIES nebo základní kontroly) |
$vat_id | string | DIČ k validaci (včetně prefixu země, např. CZ12345678) |
Návratová hodnota: bool - Zda je DIČ platné pro osvobození
Příklad:
/** * Vlastní whitelist DIČ * * @param bool $is_valid Výsledek validace * @param string $vat_id DIČ k validaci * * @return bool Upravený výsledek */function my_vat_id_whitelist( bool $is_valid, string $vat_id ): bool { // Vlastní whitelist DIČ - vždy platné $whitelist = array( 'CZ12345678', 'SK1234567890' );
if ( in_array( $vat_id, $whitelist, true ) ) { return true; }
return $is_valid;}add_filter( 'wpify_woo_icdic_vat_id_valid_for_exempt', 'my_vat_id_whitelist', 10, 2 );wpify_woo_icdic_destination_country
Section titled “wpify_woo_icdic_destination_country”Přepíše cílovou zemi použitou pro výpočet DPH.
apply_filters( 'wpify_woo_icdic_destination_country', $destination_country, $billing_country, $shipping_country, $shop_country );| Parametr | Typ | Popis |
|---|---|---|
$destination_country | string | Vypočítaná cílová země (dle WooCommerce nastavení) |
$billing_country | string | Kód fakturační země zákazníka |
$shipping_country | string | Kód doručovací země zákazníka |
$shop_country | string | Kód země obchodu |
Návratová hodnota: string - Kód země pro výpočet DPH
Příklad:
/** * Vždy použít fakturační zemi pro B2B * * @param string $destination Vypočítaná cílová země * @param string $billing Fakturační země * @param string $shipping Doručovací země * @param string $shop Země obchodu * * @return string Upravená cílová země */function my_destination_country( string $destination, string $billing, string $shipping, string $shop ): string { // Pro B2B vždy použít fakturační zemi if ( WC()->customer && WC()->customer->get_meta( 'billing_ic' ) ) { return $billing; }
return $destination;}add_filter( 'wpify_woo_icdic_destination_country', 'my_destination_country', 10, 4 );wpify_woo_icdic_vat_exempt_result
Section titled “wpify_woo_icdic_vat_exempt_result”Přepíše rozhodnutí o osvobození od DPH.
apply_filters( 'wpify_woo_icdic_vat_exempt_result', $result, $billing_country, $shipping_country, $vat_id, $destination_country );| Parametr | Typ | Popis |
|---|---|---|
$result | array | Výsledek: ['exempt' => bool, 'reason' => string] |
$billing_country | string | Kód fakturační země |
$shipping_country | string | Kód doručovací země |
$vat_id | string | DIČ zákazníka |
$destination_country | string | Cílová země pro výpočet |
Návratová hodnota: array - ['exempt' => bool, 'reason' => string]
Možné hodnoty reason:
domestic- Domácí prodej (cílová země = země obchodu)export- Export do třetích zemí mimo EUreverse_charge- EU Reverse Charge (B2B v rámci EU)legacy- Osvobozeno přes zastaralé nastavenístandard- Standardní prodej bez osvobození
Příklad:
/** * Osvobodit od DPH pro specifické země mimo EU * * @param array $result Výsledek rozhodnutí * @param string $billing Fakturační země * @param string $shipping Doručovací země * @param string $vat_id DIČ zákazníka * @param string $destination Cílová země * * @return array Upravený výsledek */function my_vat_exempt_result( array $result, string $billing, string $shipping, string $vat_id, string $destination ): array { // Švýcarsko a Norsko - vždy osvobodit if ( in_array( $destination, array( 'CH', 'NO' ), true ) ) { return array( 'exempt' => true, 'reason' => 'export', ); }
return $result;}add_filter( 'wpify_woo_icdic_vat_exempt_result', 'my_vat_exempt_result', 10, 5 );wpify_woo_icdic_pre_vies_validation
Section titled “wpify_woo_icdic_pre_vies_validation”Bypass VIES validace a vrátit vlastní výsledek. Voláno před dotazem na VIES.
apply_filters( 'wpify_woo_icdic_pre_vies_validation', $pre_result, $dic );| Parametr | Typ | Popis |
|---|---|---|
$pre_result | bool|null | null = pokračovat s VIES, true/false = bypass |
$dic | string | DIČ k validaci (včetně prefixu země) |
Návratová hodnota:
true- DIČ je platné (bypass VIES)false- DIČ je neplatné (bypass VIES)null- Pokračovat s normální VIES validací
Příklad:
/** * Přeskočit VIES pro testovací DIČ * * @param bool|null $pre_result Předchozí výsledek * @param string $dic DIČ k validaci * * @return bool|null Výsledek nebo null pro pokračování */function my_skip_vies_for_test( $pre_result, string $dic ) { // Přeskočit VIES pro testovací DIČ if ( str_starts_with( $dic, 'TEST' ) ) { return true; // Považovat za platné }
// Přeskočit VIES při výpadku - přijmout na základě formátu if ( defined( 'VIES_FALLBACK' ) && VIES_FALLBACK ) { if ( preg_match( '/^[A-Z]{2}[0-9A-Z]+$/', $dic ) ) { return true; } }
return null; // Pokračovat s VIES validací}add_filter( 'wpify_woo_icdic_pre_vies_validation', 'my_skip_vies_for_test', 10, 2 );wpify_woo_icdic_vies_validation_result
Section titled “wpify_woo_icdic_vies_validation_result”Upraví výsledek VIES validace po jejím provedení.
apply_filters( 'wpify_woo_icdic_vies_validation_result', $is_valid, $dic );| Parametr | Typ | Popis |
|---|---|---|
$is_valid | bool | Výsledek VIES validace |
$dic | string | DIČ které bylo validováno |
Návratová hodnota: bool - Upravený výsledek validace
Příklad:
/** * Logování VIES výsledků * * @param bool $is_valid Výsledek validace * @param string $dic Validované DIČ * * @return bool Nezměněný výsledek */function my_log_vies_result( bool $is_valid, string $dic ): bool { error_log( sprintf( 'VIES validation for %s: %s', $dic, $is_valid ? 'valid' : 'invalid' ) );
return $is_valid;}add_filter( 'wpify_woo_icdic_vies_validation_result', 'my_log_vies_result', 10, 2 );wpify_woo_add_ic_dic_to_address
Section titled “wpify_woo_add_ic_dic_to_address”Kontroluje, zda se IČ/DIČ přidá do formátované adresy (e-maily, účet zákazníka).
apply_filters( 'wpify_woo_add_ic_dic_to_address', $add );| Parametr | Typ | Popis |
|---|---|---|
$add | bool | Zda přidat IČ/DIČ do adresy (výchozí true) |
Návratová hodnota: bool - Zda přidat do adresy
Příklad:
/** * Nepřidávat IČ/DIČ do formátované adresy * * @param bool $add Zda přidat * * @return bool Upravená hodnota */function my_hide_ic_dic_in_address( bool $add ): bool { return false;}add_filter( 'wpify_woo_add_ic_dic_to_address', 'my_hide_ic_dic_in_address' );Integrace s fakturačními pluginy
Section titled “Integrace s fakturačními pluginy”Zobrazení poznámky o Reverse Charge na faktuře
Section titled “Zobrazení poznámky o Reverse Charge na faktuře”Modul nezobrazuje automaticky poznámky na fakturách. Toto musí zajistit váš fakturační plugin na základě meta dat.
Integrace s WPify Woo Fakturoid
Section titled “Integrace s WPify Woo Fakturoid”Pokud používáte plugin WPify Woo Fakturoid, poznámky o Reverse Charge a exportu se zpracovávají automaticky na základě meta dat z tohoto modulu.
Vlastní fakturační plugin
Section titled “Vlastní fakturační plugin”Příklad integrace pro vlastní fakturační řešení:
/** * Přidat poznámku o DPH na fakturu * * @param WC_Order $order Objednávka * * @return void */function my_invoice_vat_note( WC_Order $order ): void { $is_exempt = wc_string_to_bool( $order->get_meta( 'is_vat_exempt' ) ); $reason = $order->get_meta( '_wpify_vat_exempt_reason' );
if ( ! $is_exempt ) { return; }
$notes = array( 'reverse_charge' => 'Reverse charge - daň odvede příjemce plnění dle čl. 196 směrnice 2006/112/ES', 'export' => 'Osvobozeno od DPH - dodání zboží do třetí země dle § 66 zákona o DPH', );
if ( isset( $notes[ $reason ] ) ) { echo '<p class="tax-note">' . esc_html( $notes[ $reason ] ) . '</p>'; }}add_action( 'my_invoice_footer', 'my_invoice_vat_note' );Integrace s WooCommerce PDF Invoices & Packing Slips
Section titled “Integrace s WooCommerce PDF Invoices & Packing Slips”/** * Přidat poznámku o DPH do WCPDF faktury * * @param string $document_type Typ dokumentu * @param WC_Order $order Objednávka * * @return void */function my_wcpdf_vat_note( string $document_type, WC_Order $order ): void { if ( $document_type !== 'invoice' ) { return; }
$is_exempt = wc_string_to_bool( $order->get_meta( 'is_vat_exempt' ) ); $reason = $order->get_meta( '_wpify_vat_exempt_reason' );
if ( ! $is_exempt ) { return; }
$notes = array( 'reverse_charge' => __( 'Reverse charge - daň odvede příjemce', 'my-plugin' ), 'export' => __( 'Osvobozeno od DPH - export mimo EU', 'my-plugin' ), );
if ( isset( $notes[ $reason ] ) ) { echo '<tr class="vat-exempt-note"><td colspan="3">' . esc_html( $notes[ $reason ] ) . '</td></tr>'; }}add_action( 'wpo_wcpdf_after_order_data', 'my_wcpdf_vat_note', 10, 2 );REST API
Section titled “REST API”Modul přidává REST API endpoint pro validaci IČ a DIČ:
POST /wp-json/wpify-woo/v1/ic-dic/validate| Parametr | Typ | Povinný | Popis |
|---|---|---|---|
ic | string | Ne | IČ k validaci (ARES) |
dic | string | Ne | DIČ k validaci (VIES) |
country | string | Ano | Kód země (ISO 3166-1 alpha-2) |
Příklad požadavku:
fetch('/wp-json/wpify-woo/v1/ic-dic/validate', { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ ic: '12345678', country: 'CZ' })}).then(response => response.json()).then(data => console.log(data));CSS třídy
Section titled “CSS třídy”| Třída | Popis |
|---|---|
vat-exempt | Přidáno k objednávce v seznamu objednávek |
wpify-woo-ic-dic__toggle | Checkbox “Nakupuji na firmu” |
wpify-woo-ic-dic__company_field | Firemní pole (skrytá když není zaškrtnuto) |
wpify-woo-ic--validate | Pole IČ s ARES validací |
wpify-woo-vies--validate | Pole DIČ s VIES validací |
JavaScript události
Section titled “JavaScript události”// Po úspěšném načtení dat z ARESdocument.addEventListener('wpify_woo_ares_loaded', function(e) { console.log('ARES data:', e.detail);});
// Po validaci DIČ ve VIESdocument.addEventListener('wpify_woo_vies_validated', function(e) { console.log('VIES result:', e.detail.valid);});Kde umístit kód
Section titled “Kde umístit kód”Vlastní funkce můžete vložit:
- Do
functions.phpvaší child šablony - Pomocí pluginu Code Snippets
- Do vlastního pluginu