Přeskočit na obsah

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 klíčPopisPříklad
_billing_icIČ (identifikační číslo)12345678
_billing_dicDIČ (daňové identifikační číslo)CZ12345678
_billing_dic_dphIČ DPH (pouze Slovensko)SK1234567890
Meta klíčPopisHodnoty
is_vat_exemptWooCommerce standard - osvobození od DPHyes / no
_wpify_vat_exempt_reasonDůvod osvobozenídomestic, export, reverse_charge, legacy, standard
$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 klíčPopis
billing_icIČ zákazníka
billing_dicDIČ zákazníka
billing_dic_dphIČ DPH zákazníka (SK)
// 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 );

Upraví seznam EU zemí pro výpočet Reverse Charge.

apply_filters( 'wpify_woo_icdic_eu_country_codes', $eu_countries );
ParametrTypPopis
$eu_countriesarrayPole 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' );

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 );
ParametrTypPopis
$is_validboolVýsledek validace (z VIES nebo základní kontroly)
$vat_idstringDIČ 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 );

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 );
ParametrTypPopis
$destination_countrystringVypočítaná cílová země (dle WooCommerce nastavení)
$billing_countrystringKód fakturační země zákazníka
$shipping_countrystringKód doručovací země zákazníka
$shop_countrystringKó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 );

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 );
ParametrTypPopis
$resultarrayVýsledek: ['exempt' => bool, 'reason' => string]
$billing_countrystringKód fakturační země
$shipping_countrystringKód doručovací země
$vat_idstringDIČ zákazníka
$destination_countrystringCí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 EU
  • reverse_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 );

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 );
ParametrTypPopis
$pre_resultbool|nullnull = pokračovat s VIES, true/false = bypass
$dicstringDIČ 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 );

Upraví výsledek VIES validace po jejím provedení.

apply_filters( 'wpify_woo_icdic_vies_validation_result', $is_valid, $dic );
ParametrTypPopis
$is_validboolVýsledek VIES validace
$dicstringDIČ 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 );

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 );
ParametrTypPopis
$addboolZda 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' );

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.

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.

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 );

Modul přidává REST API endpoint pro validaci IČ a DIČ:

POST /wp-json/wpify-woo/v1/ic-dic/validate
ParametrTypPovinnýPopis
icstringNeIČ k validaci (ARES)
dicstringNeDIČ k validaci (VIES)
countrystringAnoKó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));
TřídaPopis
vat-exemptPřidáno k objednávce v seznamu objednávek
wpify-woo-ic-dic__toggleCheckbox “Nakupuji na firmu”
wpify-woo-ic-dic__company_fieldFiremní pole (skrytá když není zaškrtnuto)
wpify-woo-ic--validatePole IČ s ARES validací
wpify-woo-vies--validatePole DIČ s VIES validací
// Po úspěšném načtení dat z ARES
document.addEventListener('wpify_woo_ares_loaded', function(e) {
console.log('ARES data:', e.detail);
});
// Po validaci DIČ ve VIES
document.addEventListener('wpify_woo_vies_validated', function(e) {
console.log('VIES result:', e.detail.valid);
});

Vlastní funkce můžete vložit:

  • Do functions.php vaší child šablony
  • Pomocí pluginu Code Snippets
  • Do vlastního pluginu