Skip to content

Releases: pixeler-sk/px-shop-core

v1.13.0

Choose a tag to compare

@github-actions github-actions released this 03 Oct 22:37

Antispam na formulároch odstúpenia a reklamácie vyžaduje px-wc-requests 1.10.0 (filter pxer_submit_check).

  • Nový modul seller – údaje predávajúceho zadané raz (obchodné meno,
    sídlo, IČO, DIČ, IČ DPH, register, kontakt, orgán dozoru): shortcode
    [px_seller] / [px_seller field="ico"], {px_seller} v e-mailoch
    WooCommerce, PX_Seller::get().
  • Nový modul antispam (predvolene vypnutý) – Cloudflare Turnstile alebo
    Google reCAPTCHA v2 na waitliste, registrácii, zabudnutom hesle,
    recenziách a formulároch px-wc-requests (filter pxer_submit_check);
    kľúče z wp-config.php alebo nastavení, bez kľúčov nerobí nič.
  • Waitlist posiela token antispamu (antispam_token v REST).
  • Firemné údaje: povinné polia viditeľne povinné. Po zaškrtnutí „Nakupujem
    na firmu" majú názov firmy a IČO hviezdičku, aria-required a triedu
    validate-required namiesto „(voliteľné)" (aj bez JS podľa uložených
    alebo odoslaných údajov); chyby sú prepojené s poľom (data-id, text pod
    poľom, woocommerce-invalid); IČO pri SK/CZ s numerickou klávesnicou.
  • Firemné údaje v Môj účet: kontrola formátu IČO/DIČ/IČ DPH pri uložení
    fakturačnej adresy, IČO/DIČ/IČ DPH v prehľade adries.
  • Waitlist: texty formulára, hlásení a e-mailov jednotne vo vykaní (sk_SK).
  • Waitlist variácií: udalosť px-waitlist-toggle (detail.visible,
    variationId, parentId) pri ukázaní a skrytí formulára — kontrakt pre
    vlastný výber variácií v téme.

v1.12.0

Choose a tag to compare

@github-actions github-actions released this 02 Oct 12:04
  • Waitlist: formulár na detail vypredaného produktu vkladá jadro samo —
    téma ani site plugin ho už nemusia volať. Body
    woocommerce_single_product_summary (31) pre štandardné šablóny
    a pxt_single_summary_end (5) pre px-shop-theme; presun alebo vypnutie
    filtrom px_waitlist_form_hooks. Na jeden produkt a stránku sa vypíše
    len raz, takže staršie vlastné volanie render_form() ho nezdvojí.
  • Waitlist pre vypredanú variáciu: variabilný produkt má formulár
    skrytý, ukáže sa po výbere vypredanej kombinácie a prihlásenie ide na
    ID variácie (e-maily nesú jej názov). Metabox produktu ukazuje
    prihlásených aj po variáciách.
  • Omnibus: denný sken sa plánuje až na init — zmizne notice
    „_load_textdomain_just_in_time … woocommerce" po aktivácii.

v1.11.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 12:49
  • Nový modul Médiá produktov pre MCP (media_abilities, predvolene
    vypnutý, WordPress 6.9+). Schopnosti Abilities API pre MCP konektor
    (kategória px-shop-media): px-shop-core/get-product-images,
    px-shop-core/set-product-images (hlavný obrázok a galéria z knižnice
    médií alebo z URL so sideloadom, bez mazania príloh, zdroj v meta
    _px_source_url) a px-shop-core/set-attachment-alt. Prenesené z benabu.
  • Slovenské preklady nových textov.

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 18 Sep 13:59
  • Video, odkaz celého bannera a karusel vyžadujú px-shop-theme >= 0.6.0
    (handles px-banner-video a px-banner-carousel). So staršou témou sa
    video nevykreslí (ostane obrázok) a skupina s carousel ostane obyčajnými
    bannermi pod sebou.
  • Content — video na pozadí bannera. Box Banner display má nové polia:
    video z YouTube/Vimeo (odkaz v akomkoľvek tvare — watch?v=, youtu.be,
    embed/, shorts/, s parametrami ako ?si=; Vimeo aj neverejné s hashom)
    alebo súbor MP4/WebM z knižnice médií (súbor má prednosť), a voľbu
    Prehrávať aj na mobile. Meta _px_banner_video_url,
    _px_banner_video_id, _px_banner_video_mobile (REST, sanitizácia,
    can_edit). Do HTML nejde iframe — len wrapper s data-px-banner-video
    (pri súbore <video preload="none">), prehrávač stavia téma (handle
    px-banner-video, plugin ho vyžiada len pri banneri s videom). Wrapper
    je inert. YouTube/Vimeo čaká na súhlas: modul Súhlas s cookies, ak je
    aktívny (data-px-consent-cmp="px", služba + kategória), inak CookieYes
    (cookieyes, kategória advertisement), keď je nájdený plugin
    cookie-law-info alebo to web povie filtrom px_content_video_cmp
    (CookieYes z GTM); kategóriu mení px_content_video_cmp_category,
    celý výsledok px_content_video_consent. Obrázok bannera ostáva posterom a
    LCP prvkom; eager pridáva fetchpriority="high", nový argument
    image_sizes nastaví atribút sizes.
  • Content — odkaz celého bannera (_px_banner_link_url): nadpis sa
    stane odkazom, téma ho roztiahne cez celý banner (stretched link);
    tlačidlá ostávajú funkčné, žiadne vnorené <a>. Banner bez nadpisu
    dostane prázdny odkaz s aria-label (parts/banner-link.php).
  • Nové supports kľúče video (media-right, media-left, background)
    a link (všetky štyri layouty); nepodporované polia sa v admine skryjú.
  • Content — karusel. render_group() / [px_banner carousel="1"]:
    skupina s viac než jednou položkou dostane Swiper markup
    (.px-banners--carousel.swiper > .swiper-wrapper > .swiper-slide)
    s ovládaním (šípky, bodky, pauza prezentácie aj videa — skryté do štartu
    JS) a vyžiada handle px-banner-carousel. Texty filtrom px_content_carousel_labels,
    argumenty label a group_class.
  • heading_tag h1 dostane v skupine len prvý banner (ostatné h2). eager
    a fetchpriority má len prvý banner skupiny; v karuseli je druhý slide
    eager bez priority (prvý prechod neukáže prázdny banner). Nový argument
    priority. Filter px_content_carousel_labels sa zlučuje s predvolenými
    textami. Vimeo odkazy /video(s)/ID majú prednosť pred prvým číselným
    segmentom. Prázdny odkaz bannera bez nadpisu nesie názov z nadtitulku
    alebo perexu.
  • Nový modul Staré slugy termov (old_term_slugs, predvolene zapnutý,
    nezávisí od WooCommerce). Pri zmene slugu termu verejnej taxonómie
    (admin, REST, WP-CLI) sa predchádzajúci slug uloží do term meta
    _px_old_slug; stará URL, ktorá skončí 404, dostane 301 na aktuálnu
    (get_term_link()) so zachovaním /page/N/ aj query stringu. Funguje aj
    po zmene slugu rodiča (podkategórie). Nejednoznačná zhoda nechá 404.
    Seed px_add_old_term_slug( $term_id, $slug ), zoznam s odstránením
    v úprave termu, filtre px_old_term_slugs_taxonomies,
    px_old_term_slugs_redirect.
  • Slovenské preklady nových textov.

v1.9.1

Choose a tag to compare

@github-actions github-actions released this 05 Sep 18:35
  • Oprava: názvy a popisy modulov sa už neprekladajú pri načítaní registra
    na plugins_loaded, ale až na obrazovke nastavení (nová funkcia
    px_shop_core_module_labels() a filter px_shop_core_module_labels).
    WordPress 6.7+ hlásil _load_textdomain_just_in_time pre doménu
    px-shop-core. Modul pridaný site pluginom cez filter
    px_shop_core_modules môže title/desc niesť ďalej v definícii —
    obrazovka nastavení ich vezme ako náhradu.

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 16:03
  • Nový modul Jednotková cena (unit_price): cena za 1 kg / 1 l / 1 m /
    1 ks vedľa predajnej ceny, ako to vyžaduje označovanie cenami (smernica
    98/6/ES, zákon 108/2024 § 2 písm. h) a § 6). Na produkte (aj variácii) sa pod
    cenou vypĺňa obsah balenia — množstvo a jednotka (ml, l, g, kg, m, m², m³,
    ks); jednotková cena sa počíta z ceny, ktorú obchod zobrazuje (aktívna,
    akciová, s daňou alebo bez podľa nastavenia). Zákonné výnimky drží modul
    sám: nekreslí sa, keď by sa rovnala predajnej cene (1 ks, presne 1 l) a pri
    baleniach do 50 g / 50 ml. Bez údaja sa nekreslí nič, takže zapnutý modul
    existujúci web nemení. Predvolený výstup pod cenou v archíve a na detaile
    sa vypína filtrom px_unit_price_display (téma si riadok kreslí sama cez
    PX_Unit_Price::get_html()); variácia nesie px_unit_price_html; live
    search vracia unit_price. WP-CLI wp px unit-price set|clear|list.
    Import cez WooCommerce CSV: stĺpce Meta: _px_unit_qty a Meta: _px_unit.

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 12:44
  • Live search: vyhľadávanie podľa SKU a EAN/GTIN — v šepkávači aj na
    štandardnej stránke výsledkov (?s=…&post_type=product). WordPress prehľadáva
    len názov, perex a obsah, takže nalepený kód dielu alebo pípnutý čiarový kód
    dovtedy nevrátil nič — jediný prípad, keď zákazník aj personál presne vedia,
    čo chcú. Zhoda variácie sa mapuje na rodiča (variácia nemá vlastnú stránku
    a na krabici býva jej SKU). Presná zhoda potláča prefixové: keď kód nesie
    konkrétny produkt, rodina s rovnakým začiatkom SKU je už len šum. Presná SKU
    alebo EAN tak vráti jeden výsledok a pri jednom výsledku presmeruje
    WooCommerce (wc_template_redirect()) rovno na produkt — ale len keď je
    v URL post_type=product, teda z formulára v hlavičke.

  • Live search: SKU sa okrem presnej zhody hľadá aj podľa predpony, ale až
    od štyroch znakov, aby „RAM" neťahalo pol katalógu. Prefixové zhody sa radia
    podľa dĺžky SKU, takže keď ich je viac než strop, prežije to najbližšie
    napísanému — rez nesmie padnúť podľa ID produktu, päťdesiat najstarších
    z päťsto neodpovedá na nič. EAN/GTIN len presne a len v tvare
    GTIN-8/12/13/14. Dáta idú z wc_product_meta_lookup (riadok na produkt,
    ten istý zdroj ako vyhľadávanie v administrácii WooCommerce), pričom SKU
    a EAN sa pýtajú dvoma dotazmi: index má len sku, spoločné OR by oň
    optimalizátor pripravil a každá číselná fráza by znamenala full scan.

  • Live search: lookup je cache, ktorú WooCommerce prepisuje pri uložení
    produktu, takže importér zapisujúci _sku priamo do postmeta ju vie nechať
    pozadu. Správna oprava je WooCommerce → Stav → Nástroje → Obnoviť
    vyhľadávacie tabuľky produktov
    . Dohľadanie priamo v postmeta (sken bez
    indexu) v kóde ostáva, ale beží len pod WP-CLI — verejné vyhľadávacie pole
    ho spúšťať nesmie, crawler s vymyslenými kódmi by ho vyvolal na každý
    request.

  • Live search: nové filtre px_shop_core_search_code_ids( $ids, $term, $limit ) (obchod s číslami dielov inde než v _sku si sem zapojí vlastný
    zdroj) a px_shop_core_search_code_limit (50 — strop zhôd na kód pridaných
    na stránku výsledkov). Helper PX_Search::product_ids_matching_code( $term, $limit ) je verejný. Šepkávač nájdené produkty radí pred fulltextové
    výsledky; viditeľnosť, sklad a stav produktu rieši WP_Query, takže sa
    nefiltruje dvakrát. Na stránke výsledkov sa ID pripájajú do klauzuly
    posts_search — a keď fragment nevyzerá presne tak, ako ho stavia jadro
    (alebo v ňom po odtrhnutí ostane zmienka o post_password), filter dotaz
    nechá na pokoji; polovične pochopený WHERE je presne to, čím sa vo
    vyhľadávaní začnú objavovať koncepty.

  • Live search: odpoveď šepkávača je 60 sekúnd v transiente a nesie
    Cache-Control: public, max-age=60. Endpoint pixeler/v1/search je verejný
    a bez rate limitu — každé písmeno v poli posielalo vlastný WP_Query +
    get_terms(), takže opakovaná fráza (aj cudzia) vedela zbytočne zaťažiť
    databázu. Filter px_shop_core_search_response beží aj nad cachovanými
    dátami, aby si téma vedela dopísať jazykovo závislé popisky.

  • Live search: kľúč cache nesie normalizovanú frázu (malé písmená, zúžené
    medzery — „Prilba" a „prilba" je tá istá otázka), jazyk a všetko, od čoho
    závisí price_html: menu, nastavenie „ceny s daňou / bez dane" a oslobodenie
    od DPH, ktoré prepína aj modul firemných údajov tohto pluginu. Inak by prvý
    návštevník s iným daňovým kontextom otrávil ceny všetkým na 60 sekúnd.
    Prihlásenému zákazníkovi sa necachuje vôbec a zapisuje sa len s perzistentnou
    object cache — bez nej by každá neznáma fráza znamenala dva riadky vo
    wp_options a crawler by ich narobil státisíce. Na webe bez object cache tak
    serverová cache šepkávača nie je a zostáva len hlavička Cache-Control, ktorá
    opakované písmená zachytí v prehliadači a na CDN. Fráza je obmedzená na 64
    znakov, viewAll ostáva mimo cache (nesie pôvodné písanie návštevníka).

  • Live search: nový filter px_shop_core_search_query_args( $args, $term )
    nad WP_Query argumentmi šepkávača. Web si tak vie preložiť časť frázy na
    atribútový filter — „matrac 90x200" na tax_query nad pa_rozmer plus
    fulltext „matrac" — bez toho, aby plugin poznal názvy atribútov konkrétneho
    e-shopu. Ak filter skráti $args['s'], vyhľadávanie kategórií použije
    skrátenú frázu (a pri prázdnej ho preskočí), takže spotrebované tokeny
    neprepadnú do zhody na názov kategórie.

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 23 Aug 14:48

Nový modul Súhlas s cookies (consent), predvolene vypnutý — vlastná CMP
namiesto Complianzu:

  • Register služieb je jediný zdroj pravdy. Jedna deklarácia v PHP (názov,
    prevádzkovateľ, kategória, účel, odkaz na zásady, zoznam cookies, spôsob
    blokovania) živí lištu, modál, stránku so zásadami aj blokovanie. Vstavaný
    katalóg: GA4, Google Ads, Google Tag Manager, Meta Pixel, Microsoft Clarity,
    Smartsupp, Heureka Overené zákazníkmi, YouTube, Google Maps, reCAPTCHA plus
    vlastné cookies WordPressu, WooCommerce a PX Shop. Filter
    px_consent_services pridá službu site pluginu a tá dostane riadok v modále,
    na podstránke aj blokovanie zadarmo.
  • Lišta v dvoch vrstvách. V prvej Prijať všetko / Odmietnuť všetko /
    Nastavenia
    — rovnaké tlačidlá rovnakej váhy, žiadne predznačené políčka,
    žiadna cookie wall a nič neblokuje obsah stránky. V druhej prepínače per
    kategória aj per službu s účelom, prevádzkovateľom a tabuľkou cookies.
    role="dialog", focus trap, ovládanie klávesnicou, Esc zatvára modál.
  • Súhlas žije v cookie px_consent (verzia zásad, čas, ID súhlasu,
    kategórie aj služby) s platnosťou 182 dní (px_consent_lifetime_days).
    Zmena poľa Verzia zásad v nastaveniach = lišta sa spýta znova všetkých.
    PHP cookie nikdy nečíta — výstup stránky je pre všetkých rovnaký a plnostránková
    cache nemá čo pokaziť.
  • Blokovanie: skripty služieb idú do stránky ako
    <script type="text/plain" data-px-consent="kategória" data-px-service="id">
    a JS z nich po súhlase urobí skutočné skripty. Rovnaký kontrakt môže použiť
    ktorýkoľvek ručne vložený skript tretej strany. Pri odvolaní sa zmažú cookies,
    ktoré vieme podľa registra pomenovať, a stránka sa načíta znova — bežiaci
    skript sa inak odinštalovať nedá.
  • Google (GA4, Ads, GTM) sa neblokuje, riadi sa signálmi. consent default
    so všetkým denied ide do <head> s wait_for_update, consent update
    chodí na vlastnú udalosť px:consent (pokrýva prvý súhlas, návrat aj
    odvolanie) a rovnaký stav sa tlačí do dataLayer ako event
    px_consent_update, na ktorý sa vie zavesiť GTM. Meta Pixel dostáva
    fbq('consent', 'grant'/'revoke').
  • Vložené videá a mapy sa nahradia zástupným boxom s tlačidlom; kliknutie
    povolí len tú jednu službu, nie celý marketing. YouTube sa púšťa cez
    youtube-nocookie.com. Bez JavaScriptu ostáva v stránke odkaz na pôvodný
    obsah, takže sa nestratí ani pre čítačku, ani pre vyhľadávač.
  • Podstránka: shortcode [px_cookie_policy] vypíše z registra tabuľky per
    službu (účel, prevádzkovateľ, právny základ, cookies, odkaz na zásady).
    Stránka s predvyplneným úvodom vznikne pri zapnutí modulu ako koncept —
    právny text ide von až vtedy, keď si ho niekto prečíta.
  • Dva bannery sa nestretnú. Pri aktívnom Complianze, CookieYes, Cookiebote
    a spol. sa modul sám nenačíta a v admine napíše prečo. Zapnutý modul zároveň
    vypne most consent_mode — signály posiela sám.
  • Známy limit: bez certifikácie IAB TCF nestačí vlastná CMP pre AdSense ani
    Ad Manager (Google to vyžaduje od 2024). Merania GA4 a konverzií v Google Ads
    cez Consent Mode sa to netýka.
  • Vzhľad patrí téme: plugin nesie len layoutové CSS (fixná pozícia, skryté
    stavy, prekrytie modálu). Šablóny sa prepisujú v téme
    (yourtheme/px-shop-core/consent/*.php), texty filtrami
    px_consent_banner_title a px_consent_banner_text.
  • Odkaz „Nastavenia cookies" kdekoľvek v téme: stačí data-px-consent-settings
    na tlačidle, prípadne window.pxConsent.open(). Dostupnosť sa testuje
    class_exists( 'PX_Consent' ) && PX_Consent::active() — trieda existuje aj
    vtedy, keď modul cúvol pred externou CMP, a holý test by nakreslil tlačidlo,
    ktoré nemá čo otvoriť.
  • Udalosť px:consent nenesie ID súhlasu — len verziu zásad, kategórie
    a služby. Identifikátor ostáva v cookie; cez dataLayer a kontajner by z neho
    bol stabilný identifikátor návštevníka, ktorý súhlas práve odmietol.
  • Vracajúci sa návštevník dostane consent update už v <head>, hneď za
    consent default — čakanie na skript v pätičke stálo prvé page_view.
    Cookie sa tam číta rovnako prísne ako v consent.js: čo nie je boolean alebo
    nesie inú verziu zásad, nie je odpoveď, a pri viacerých cookies rovnakého
    mena platí tá najprísnejšia.
  • Globálny gtag vzniká len vtedy, keď modul naozaj načítava knižnicu Googlu.
    Bez jediného ID ide do stránky len consent default — inak by cudzie pluginy
    videli typeof gtag === 'function' a knižnicu nenačítali.
  • Vložený obsah sa neobalí dvakrát: oEmbed prejde blokovaním pri rozbalení
    a znova s celým obsahom príspevku, takže po kliknutí sa vkladalo vnútorné
    zástupné okno namiesto videa. Mapy sa poznajú na ľubovoľnej doméne Googlu
    (google.sk/maps) a youtu.be sa prepisuje na plnohodnotný
    youtube-nocookie.com/embed/….
  • Most consent_mode sa vypína sám (PX_Consent::loaded()), nezávisle od
    poradia v registri modulov, a nastavenia napíšu skutočný dôvod namiesto
    všeobecného „Overridden in code".
  • Modál pri otvorení dá zvyšok stránky inert (fallback aria-hidden), po
    uložení voľby ide fokus na obsah stránky a po odblokovaní embedu na vzniknutý
    rámček — tlačidlo, ktoré zmizlo, by inak zhodilo fokus na začiatok dokumentu.
    Lišta je role="region" s názvom, nie dialóg: nič neblokuje ani nedrží fokus.
  • Cookies sa pri odvolaní mažú aj na aktuálnej ceste a jej nadradených
    segmentoch, nielen na /.
  • Register vypisuje len cookies, ktoré na webe naozaj vzniknú: px_wishlist
    a px_compare podľa zapnutých modulov, reCAPTCHA sa zapína v nastaveniach
    (v kategórii nevyhnutné, teda bez prepínača pre návštevníka) a pribudla
    pxt_per_page z témy.

v1.5.1

Choose a tag to compare

@github-actions github-actions released this 18 Aug 10:16

Firemné údaje — IČO sa vyžaduje len tam, kde ho firmy naozaj majú.
Pri zapnutej povinnosti IČO pokladňa odmietla každú zahraničnú firemnú
objednávku, teda presne toho zákazníka, pre ktorého je reverse charge —
írska či nemecká firma IČO nemá. Povinnosť teraz platí len v krajinách
s registrom, ktorý poznáme (SK, CZ); mení sa filtrom
px_company_country_has_ic.

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 07:13

Nový modul Google Consent Mode v2 (consent_mode), predvolene vypnutý:

  • Posiela Googlu signály súhlasu, ktoré free verzia Complianzu nevie — tá má
    pole consent-mode natvrdo zakázané, hoci runtime za ním žiadnu licenciu
    nekontroluje. Complianz ostáva CMP (banner, kategórie, cookie lišta,
    právne dokumenty), modul len prekladá jeho rozhodnutia do reči Googlu.
  • Bez neho web jazdí v režime „blokuj do súhlasu": Google nedostane od
    neudelených súhlasov žiadny signál, takže nie je modelovanie konverzií a
    Google Ads v EHP nepustí remarketingové publiká ani enhanced conversions.
  • consent default so všetkým denied ide do <head>, consent update
    na eventoch Complianzu cmplz_fire_categories a cmplz_revoke. Mapovanie:
    preferences → personalization_storage, statistics →
    analytics_storage, marketing → ad_storage, ad_user_data,
    ad_personalization.
  • Complianzu sa filtrom nad option_cmplz_options vypne vlastný GA snippet,
    aby sa gtag nevydával dvakrát. Do DB sa nezapisuje — sprievodca Complianzu
    vie hodnotu prepnúť späť.
  • Measurement ID sa číta z Complianzu (jeden zdroj pravdy, editovateľný
    v admine), prebije ho filter px_consent_mode_measurement_id. Ďalšie
    filtre: px_consent_mode_wait_for_update (500 ms),
    px_consent_mode_ads_data_redaction (true),
    px_consent_mode_url_passthrough (false).
  • Súhlas sa zámerne nečíta na strane PHP — výstup je pre všetkých rovnaký,
    takže je bezpečný voči page cache.
  • Zapnúť až vtedy, keď na webe nič iné nevydáva gtag (napr. vlastná
    implementácia v site plugine alebo GA vkladaný Complianzom), inak sa
    načíta dvakrát.

Firemné údaje (company_fields):

  • Poradie polí podľa toho, ako človek rozmýšľa: meno a priezvisko, potom
    políčko „Nakupujem na firmu" a až za ním firemný blok. Doteraz blok sedel
    nad menom, čo pýtalo IČO skôr, než zákazník povedal, kto vlastne je.
    Políčko je teraz normálne pole pokladne s prioritou, nie kus HTML nad
    formulárom, takže sa zaraďuje samo. Neukladá sa — WooCommerce si necháva
    len polia s predponou billing_/shipping_.
  • Názov firmy je súčasťou bloku aj vtedy, keď je pole „Firma" vo
    WooCommerce nastavené na skryté. Bez neho zostalo na faktúre IČO bez mena.
    Vypne to filter px_company_force_company_field.
  • Doplnenie z registra vyplní aj názov firmy a odškrtnutie políčka ho spolu
    s číslami vyčistí — inak by firma zostala na faktúre súkromnej osobe.
  • SuperFaktúre sa vypne jej vlastný firemný blok. Má ho predvolene
    zapnutý, len driemal, kým v pokladni nebolo pole „Firma" — teda presne to,
    čo tento modul vracia. Inak by v pokladni boli dve políčka „nakupujem na
    firmu", dve sady polí do rôznych meta kľúčov a dva pluginy rozhodujúce
    o jednej DPH. SuperFaktúra to isté robí pre WC Nastavenia SK/CZ; údaje na
    faktúru dostáva ďalej cez sf_client_data.
  • Z popisu políčka zmizlo „(voliteľné)" — pri zaškrtávacom políčku to znelo,
    akoby existoval nákup na firmu, ktorý je povinný.