=== Elementary POS for WooCommerce ===
Contributors: ramble11
Tags: pos, sync, woocommerce, stock, inventory
Requires at least: 5.8
Tested up to: 6.9
Requires PHP: 7.4
Stable tag: 0.9.16
License: GPLv2 or later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Obousměrná synchronizace produktů a skladových zásob mezi Elementary POS a WooCommerce.

== Popis ==

[Elementary POS](https://elementarypos.com) je moderní cloudová pokladna pro maloobchodní podniky. Tento plugin umožňuje automatickou synchronizaci produktů a zásob mezi vaším systémem Elementary POS a obchodem WooCommerce v reálném čase.

= Klíčové funkce =

* **HPOS kompatibilní** - Plně kompatibilní s WooCommerce High-Performance Order Storage
* **Obousměrný import produktů** - Import produktů z Elementary POS do WooCommerce, nebo export z WooCommerce do Elementary POS
* **Systém mapování daní** - Inteligentní mapování daní mezi daňovými třídami WooCommerce a typy daní v Elementary POS
* **Import v režimu konceptu** - Možnost importovat nové produkty jako Koncept místo Publikováno
* **Synchronizace konceptových produktů** - Volitelná synchronizace konceptových produktů spolu s publikovanými
* **Bezpečné odstraňování produktů** - Produkty jsou přesunuty do Koše místo trvalého smazání, což umožňuje obnovení
* **Obousměrná synchronizace zásob** - Udržujte skladové množství synchronizované v obou směrech
* **Webhooky v reálném čase** - Okamžité aktualizace při prodeji v Elementary POS
* **Automatická synchronizace objednávek** - Objednávky WooCommerce automaticky aktualizují zásoby Elementary POS
* **Systém fronty** - Spolehlivé zpracování s automatickým opakováním při selhání; neúspěšné položky jsou automaticky opakovány při nové aktivitě
* **Komplexní logování** - Sledování všech synchronizačních aktivit s podrobnými záznamy
* **Manuální ovládání** - Plná manuální kontrola nad synchronizací podle potřeby

= Jak to funguje =

**Co se synchronizuje:**

*Elementary POS → WooCommerce:*
* Data produktů (název, SKU, cena, kategorie, daňové třídy)
* Změny množství zásob ze všech zdrojů (prodeje, manuální úpravy, inventurní opravy)

*WooCommerce → Elementary POS:*
* Data produktů (název, SKU, cena, daňové třídy)
* Změny množství zásob z dokončených objednávek
* Manuální úpravy zásob v administraci WooCommerce

**Kdy dochází k synchronizaci:**

*Elementary POS → WooCommerce:*
Když dojde ke změně zásob v Elementary POS (prodej, manuální úprava atd.), webhook je odeslán do WooCommerce.
Plugin zpracuje aktualizaci okamžitě v reálném čase a aktualizuje úrovně zásob ve WooCommerce.

*WooCommerce → Elementary POS:*
Když je objednávka dokončena ve WooCommerce nebo když jsou zásoby manuálně změněny v administraci WooCommerce, změny zásob jsou automaticky odeslány do Elementary POS.
Změny jsou odeslány okamžitě, když k nim dojde. Pokud je API nedostupné, změny jsou zařazeny do fronty a automaticky opakovány s exponenciálním zpožděním (15min, 1hod, 6hod). Všechny dříve neúspěšné položky jsou automaticky resetovány a opakovány při nové aktivitě, což zajišťuje, že žádné změny nejsou trvale ztraceny.

= Požadavky =

* WordPress 5.8 nebo vyšší
* WooCommerce 5.0 nebo vyšší
* PHP 7.4 nebo vyšší
* Elementary POS API klíč
* Produkty musí mít SKU kódy pro synchronizaci zásob (import produktů může fungovat bez SKU)

= Kompatibilita =

* **HPOS kompatibilní** - Plně kompatibilní s WooCommerce High-Performance Order Storage
* **WP Cron** - Používá WordPress cron pro zpracování fronty (spouští se každých 15 minut)

== Omezení ==

* **Desetinná množství nejsou podporována** - Kvůli omezením jádra WooCommerce jsou podporována pouze celá čísla. Desetinné hodnoty (např. 1,5 kg, 0,75 litru) jsou automaticky zaokrouhleny na celá čísla, což může ovlivnit obchody prodávající produkty na váhu, délku nebo objem.
* **Spouštěč synchronizace zásob** - Synchronizace zásob WooCommerce → Elementary POS probíhá ve dvou scénářích: (1) když WooCommerce sníží zásoby z dokončených objednávek (prostřednictvím hooku woocommerce_reduce_order_item_stock), a (2) když jsou zásoby manuálně změněny v administraci WooCommerce. Pokud má váš obchod vypnutou správu zásob pro určité produkty (např. služby, digitální produkty), tyto produkty nespustí synchronizaci do Elementary POS.
* **Viditelnost produktu a stav zásob** - Nově importované produkty jsou standardně nastaveny jako "Viditelné" v katalogu a "Na skladě". Během aktualizací je viditelnost v katalogu zachována (nezmění se), ale stav zásob je vždy nastaven na "Na skladě". Pokud potřebujete produkty skryté nebo vyprodané, upravte tato nastavení manuálně po importu.
* **Pouze jednoduché produkty** - Plugin importuje všechny produkty jako Jednoduché produkty (WC_Product_Simple). Produkty s variantami v Elementary POS jsou importovány jako jediné jednoduché produkty, ne jako Variabilní produkty s variacemi. Pokud váš katalog silně závisí na variacích produktů (velikost, barva atd.), budete je muset manuálně nakonfigurovat ve WooCommerce po importu.
* **Plochá struktura kategorií** - Všechny kategorie produktů z Elementary POS jsou vytvořeny jako kategorie nejvyšší úrovně ve WooCommerce. Hierarchie kategorií (vztahy rodič/dítě) nejsou během importu zachovány. Kategorie jsou párované pouze podle názvu.
* **Omezení WP-Cron** - WP-Cron funguje na základě časových intervalů (např. každou hodinu nebo jednou denně), ale spouští se pouze když někdo navštíví váš web. To znamená, že pokud nikdo neotevře vaše webové stránky, úloha nemusí být spuštěna včas, ale je zařazena do fronty a provedena při první návštěvě.


== Instalace ==

1. Nainstalujte plugin z WordPress.org (Pluginy → Přidat nový → Vyhledat "Elementary POS")
2. Aktivujte plugin
3. Přejděte na Elementary POS v menu WordPress administrace
4. Přejděte na záložku Nastavení
5. Zadejte svůj Elementary POS API klíč
6. Klikněte na "Uložit nastavení" pro uložení API klíče
7. (Volitelné) Klikněte na "Otestovat API připojení" pro ověření spojení

= Počáteční nastavení =

Po instalaci a konfiguraci API klíče můžete začít používat plugin:

1. **(Volitelné) Import produktů**: Přejděte na záložku Import → Načíst produkty → Import pro přenesení produktů z Elementary POS do WooCommerce
2. **(Volitelné) Synchronizace zásob**: Proveďte počáteční synchronizaci zásob v libovolném směru (Elementary POS → WooCommerce nebo WooCommerce → Elementary POS) ze záložky Synchronizace
3. **(Volitelné) Povolit automatickou synchronizaci**: Po provedení počáteční synchronizace zásob můžete povolit automatickou synchronizaci v záložce Nastavení přepnutím přepínače na ZAPNUTO
4. **Ověřit stav**: Zkontrolujte Dashboard pro potvrzení, že všechna nastavení jsou správně nakonfigurována

== Snímky obrazovky ==

1. Dashboard - Přehled stavu synchronizace a rychlé akce
2. Import produktů - Import produktů z Elementary POS do WooCommerce s možnostmi filtrování
3. Synchronizace zásob - Manuální ovládání synchronizace zásob v obou směrech
4. Nastavení - Konfigurace API a přepínač automatické synchronizace
5. Záznamy - Podrobné záznamy aktivit s filtrováním a vyhledáváním

== Changelog ==

= 0.9.16 =
* Přidáno: Manuální změny zásob v administraci WooCommerce jsou nyní synchronizovány do Elementary POS
* Přidáno: Prevence smyčky pro importní operace k zamezení duplikátní synchronizace během importu EP→WC
* Vylepšeno: Synchronizace zásob nyní pokrývá úpravy inventáře založené na objednávkách i manuální
* Vylepšeno: Systém fronty nyní automaticky opakuje dříve neúspěšné položky při nové aktivitě
* Vylepšeno: Potlačení chyb pro přepsání serverových limitů k prevenci fatálních chyb v prostředích s omezeným hostingem
* Opraveno: Všechny hardcoded české řetězce nahrazeny správnými přeložitelnými anglickými řetězci
* Opraveno: JavaScript řetězce nyní správně přeložitelné prostřednictvím wp_localize_script
* Změněno: Aktualizována dokumentace odrážející plnou obousměrnou synchronizaci zásob
* Změněno: Odstraněny redundantní en_US překladové soubory

= 0.9.14 =
* Přidáno: Obousměrný systém mapování daní pro import produktů
* Přidáno: Možnost importovat daňové třídy s mapováním pro oba směry EP→WC i WC→EP
* Přidáno: Automatické mapování daní na základě procentuální shody
* Přidáno: Interaktivní tabulka mapování daní s rozbalovacími seznamy
* Přidáno: Vizuální zobrazení daňových sazeb (max 3 země s indikátorem "...")
* Přidáno: Možnost "Žádná přiřazená daň" pro daňové třídy WooCommerce
* Vylepšeno: Mapování daní uloženo v transientech během importu pro konzistenci
* Vylepšeno: Import WC→EP nyní používá správný API endpoint (edit-sale-item pro existující produkty, add-sale-item pro nové)
* Změněno: Nahrazeno jediné rozbalovací menu daní v importu WC→EP komplexním mapovacím systémem
* Změněno: Mapování daní je povinné pro import WC→EP (EP API vyžaduje taxId), volitelné pro EP→WC
* Opraveno: Chyba "SKU kód již existuje" při aktualizaci existujících produktů v importu WC→EP

= 0.9.13 =
* Vylepšeno: Čekající produkty jsou nyní zpracovávány stejným způsobem jako konceptové produkty
* Vylepšeno: Když je povolena "Synchronizace konceptových produktů", čekající produkty jsou zahrnuty do synchronizace
* Vylepšeno: Import, export a synchronizace zásob nyní podporují stav čekajících produktů
* Vylepšeno: Statistiky na dashboardu nyní zahrnují čekající produkty, když je povolena synchronizace konceptů

= 0.9.12 =
* Vylepšeno: Záložka Import - sjednocené rozhraní s rozbalovacím seznamem pro výběr směru (EP→WC nebo WC→EP)
* Vylepšeno: Záložka Synchronizace - sjednocené rozhraní s rozbalovacím seznamem pro výběr směru
* Vylepšeno: Jediné tlačítko "Načíst produkty" místo samostatných tlačítek pro každý směr
* Vylepšeno: Jediné tlačítko "Aktualizovat sklad" místo samostatných tlačítek pro každý směr
* Změněno: Odstraněna sekce "Rychlé akce" z Dashboardu
* Změněno: Záložky Import a Synchronizace nyní používají jediná sjednocená tlačítka pro lepší UX

= 0.9.11 =
* Důležité: Refaktorován import na 3-fázový systém s transparentním reportováním průběhu
* Přidáno: Fáze 1 - Smazání všech WC produktů v blocích (volitelné, zabraňuje timeoutům u velkých katalogů)
* Přidáno: Fáze 2 - Import produktů z Elementary POS v blocích (zabraňuje timeoutům)
* Přidáno: Fáze 3 - Načtení zásob z Elementary POS v blocích (volitelné, zabraňuje timeoutům)
* Vylepšeno: Zobrazení průběhu v reálném čase pro každou fázi s počty produktů
* Vylepšeno: Zpracování chyb a podpora zrušení specifická pro fázi
* Vylepšeno: Pojmenování funkcí pro budoucí kompatibilitu exportu WC → EP
* Vylepšeno: Zaškrtávací políčka možností importu jsou nyní zakázána během importu k prevenci zmatení
* Změněno: Importní operace nyní odděleny pro lepší viditelnost a kontrolu uživatelem
* Opraveno: Velké importy (10k+ produktů) již negenerují timeouty

= 0.9.10 =
* Opraveno: Konceptové produkty jsou nyní správně detekovány a aktualizovány během importu
* Opraveno: Import nyní respektuje stav konceptu - konceptové produkty zůstávají koncepty po aktualizaci
* Přidáno: Nová pomocná metoda pro načítání produktů s vědomím konceptů během importu
* Přidáno: Detailní diagnostika timeoutů v JavaScript konzoli
* Vylepšeno: Velikost bloku importu optimalizována pro lepší výkon (50 produktů na blok)
* Vylepšeno: Progress bar nyní ukazuje skutečné procento a počty produktů
* Vylepšeno: Komplexní hlášení chyb se specifickými typy timeoutů
* Změněno: Stav produktu je zachován během aktualizací (koncept/publikováno)

= 0.9.9 =
* Přidáno: Volitelná synchronizace konceptových produktů - nové nastavení v záložce Nastavení
* Změněno: Odstraňování produktů nyní přesouvá produkty do Koše místo trvalého smazání
* Vylepšeno: Produkty mohou být obnoveny z Koše po importu s možností "smazat vše"
* Vylepšeno: Mechanismus rollbacku nyní obnovuje odstraněné produkty z Koše při selhání importu

= 0.9.8 =
* Přidáno: Možnost importovat produkty jako Koncept místo stavu Publikováno
* Vylepšeno: Mechanismus prevence smyčky nyní používá globální příznaky na úrovni požadavku místo časově založených transientů pro lepší spolehlivost
* Vylepšeno: Odinstalace pluginu nyní automaticky deaktivuje webhook v Elementary POS k prevenci osiřelých notifikací
* Vylepšeno: Odstraněny upovídané inicializační log zprávy pro čistší záznamy
* Změněno: Typ fronty přejmenován z 'order_stock_change' na 'stock_change' pro konzistenci
* Změněno: Refaktorován handler objednávkových zásob WooCommerce do samostatné třídy

= 0.9.7 =
* Vylepšeno: Mechanismus prevence smyčky nyní používá globální příznaky na úrovni požadavku místo časově založených transientů pro lepší spolehlivost
* Vylepšeno: Odinstalace pluginu nyní automaticky deaktivuje webhook v Elementary POS k prevenci osiřelých notifikací
* Změněno: Typ fronty přejmenován z 'order_stock_change' na 'stock_change' pro konzistenci
* Změněno: Refaktorován handler objednávkových zásob WooCommerce do samostatné třídy

= 0.9.6 =
* Opraveno: Import s načítáním zásob nyní správně nastavuje časové razítko synchronizace k povolení automatické synchronizace
* Vylepšeno: Dashboard redesignován s jedinou sjednocenou stavovou tabulkou (9 řádků) nahrazující předchozí rozložení dvou tabulek
* Vylepšeno: Přidána statistika "Celkem produktů s SKU" do dashboardu pro lepší přehled inventáře
* Vylepšeno: Stav "Automatická synchronizace" přesunut na druhou pozici v dashboardu pro lepší viditelnost
* Vylepšeno: Snížena upovídanost logování - odstraněny upovídané API request/response logy při zachování všech chyb a důležitých událostí
* Změněno: Validace webhooku zjednodušena pro přijetí počáteční synchronizace z libovolného směru (EP→WC nebo WC→EP)

= 0.9.5 =
* KRITICKÁ OPRAVA: Webhook nyní správně aplikuje změny zásob jako delty místo absolutních hodnot
* KRITICKÁ OPRAVA: Synchronizace nyní používá syncTimestamp z Elementary POS API místo lokálního serverového času
* KRITICKÁ OPRAVA: Synchronizace WC→EP nyní správně nastavuje obecná i směrově specifická časová razítka
* Opraveno: Webhook nyní funguje správně bez ohledu na to, který směr synchronizace (EP→WC nebo WC→EP) byl proveden jako první
* Bezpečnost: Automatická synchronizace je nyní automaticky deaktivována při změně API klíče
* Bezpečnost: Webhook nemůže být povolen bez provedení počáteční synchronizace (podporovány oba směry)
* Vylepšeno: Manuální synchronizace nyní správně ukládá syncTimestamp z API odpovědi
* Vylepšeno: Vylepšené logování pro operace webhooku s detaily agregace
* Změněno: Časová razítka synchronizace jsou resetována na 0 při změně API klíče (bezpečnost různých účtů)

= 0.9.4 =
* Opraveno: Handler webhooku nyní správně přeskakuje změny zásob z vlastního pluginu k prevenci nesprávných úrovní zásob
* Opraveno: Odstraněno zbytečné logování když webhook obdrží pouze změny z vlastního pluginu

= 0.9.3 =
* Vylepšeno: Prodlouženo čištění fronty a záznamů ze 7 na 30 dní
* Vylepšeno: Webhook logy filtrované pro zobrazení pouze událostí stock_updated
* Změněno: Odstraněn redundantní "Stav webhooku" z dashboardu
* Změněno: Nahrazena sekce automatického obnovení kompaktními tlačítky manuálního obnovení vedle záhlaví záložek
* Změněno: Formát časového razítka záznamu změněn na ISO formát (RRRR-MM-DD HH:MM:SS)

= 0.9.2 =
* Vylepšeno: Doba zobrazení upozornění prodloužena z 5 na 8 sekund pro lepší čitelnost
* Změněno: API test nyní zobrazuje Base URL místo prostředí a počtu produktů
* Vylepšeno: Čištění kódu - odstraněny zbytečné wrapper funkce a mrtvý kód

= 0.9.1 =
* Změněno: Standardizovány všechny interní identifikátory k použití prefixu 'elementary-pos-woocommerce'
* Změněno: Aktualizovány názvy CSS tříd pro lepší konzistenci
* Změněno: Aktualizovány JavaScript handles pro lepší konzistenci
* Opraveno: ID pluginu nyní odpovídá slugu pluginu

= 0.9.0 =
* Přidáno: Automatická správa webhooku prostřednictvím Elementary POS API
* Přidáno: Přepínač pro povolení/zakázání webhooku v Nastavení
* Přidáno: Monitorování stavu webhooku v reálném čase (zdravý, varování, chyba, vypnuto)
* Přidáno: Tlačítko Testovat stav pro manuální ověření webhooku
* Změněno: URL webhooku již není třeba manuálně kopírovat - plně automatizováno
* Změněno: Zjednodušená konfigurace webhooku v záložce Nastavení
* Vylepšeno: Lepší UX s vizuálním přepínacím tlačítkem a indikátory stavu
* Vylepšeno: Automatická registrace webhooku při povolení/zakázání
* Vylepšeno: Stav načítání zabraňuje viditelným změnám stavu přepínače

= 0.8.5 =
* Změněno: Název pluginu zkrácen na "Elementary POS for WooCommerce"
* Změněno: Text domain aktualizován na "elementary-pos-for-woocommerce"
* Změněno: Všechny překlady aktualizovány na novou textovou doménu
* Opraveno: Odstraněna duplikátní Author URI pro soulad s WordPress.org směrnicemi

= 0.8.4 =
* Opraveno: Soulad názvu pluginu s WordPress.org směrnicemi ochranné známky
* Opraveno: Příprava SQL dotazů pro WordPress kódovací standardy
* Opraveno: Pojmenování globálních proměnných se správnými prefixy
* Vylepšeno: Dokumentace kódu a bezpečnostní komentáře pro recenzenty
* Aktualizováno: Testováno až do WordPress 6.8

= 0.8.3 =
* Iniciální release kandidát
* Automatický import produktů - Import produktů z Elementary POS do WooCommerce jedním kliknutím
* Obousměrná synchronizace zásob - Udržujte úrovně zásob synchronizované v obou směrech
* Webhooky v reálném čase - Okamžité aktualizace při prodeji v Elementary POS
* Automatická synchronizace objednávek - Objednávky WooCommerce automaticky aktualizují inventář Elementary POS
* Systém fronty - Spolehlivé zpracování s automatickým opakováním při selhání
* Komplexní logování - Sledování všech synchronizačních aktivit s podrobnými záznamy
* Manuální ovládání - Plná manuální kontrola nad synchronizací podle potřeby
* Dashboard se statistikami v reálném čase a rychlými akcemi
* HPOS kompatibilní - Plně kompatibilní s WooCommerce High-Performance Order Storage

== Upozornění na aktualizaci ==

= 0.8.3 =
Iniciální release kandidát s kompletní obousměrnou synchronizací mezi Elementary POS a WooCommerce.

== Podpora ==

Pro podporu, prosím navštivte [https://elementarypos.com/en/contact/](https://elementarypos.com/en/contact/) nebo napište email na support@elementarypos.com

== Externí služby ==

Tento plugin se spoléhá na Elementary POS API, externí službu třetí strany, pro synchronizaci dat produktů a inventáře mezi vaším obchodem WooCommerce a systémem Elementary POS.

= Co je Elementary POS API a k čemu se používá? =

Elementary POS API je cloudová služba poskytovaná Elementary POS, která spravuje vaše pokladní data. Tento plugin se připojuje k API pro:
* Import produktů z Elementary POS do WooCommerce
* Obousměrnou synchronizaci úrovní zásob
* Odesílání aktualizací objednávek WooCommerce do Elementary POS
* Příjem notifikací o změnách zásob v reálném čase prostřednictvím webhooků

= Jaká data jsou odesílána a kdy? =

Plugin odesílá data do Elementary POS API v následujících situacích:

**Během importu produktů:**
* Žádná data nejsou odesílána - plugin pouze získává informace o produktech (SKU, název, cena, množství zásob)

**Během synchronizace zásob (WooCommerce → Elementary POS):**
* SKU kódy produktů
* Změny množství zásob
* Časové razítko změn
* K tomu dochází když manuálně spustíte synchronizaci WC→EP nebo když je dokončena objednávka ve WooCommerce

**Během registrace webhooku:**
* URL vaší WordPress stránky
* URL endpointu webhooku
* K tomu dochází když povolíte automatickou synchronizaci v nastavení pluginu

**Co plugin přijímá z Elementary POS:**
* Informace o produktech (SKU, název, cena, zásoby)
* Notifikace o změnách zásob (SKU, delta množství)
* Informace o stavu webhooku

= Používané API endpointy =

* Produkce: `https://api.elementarypos.com`

Příslušný endpoint je automaticky vybrán na základě vašeho Elementary POS API klíče.

= Podmínky služby a soukromí =

* Zásady ochrany osobních údajů Elementary POS: [https://elementarypos.com/en/privacy-policy/](https://elementarypos.com/en/privacy-policy/)

**Důležité:** Pro použití tohoto pluginu musíte mít aktivní Elementary POS účet a API klíč. Používáním tohoto pluginu souhlasíte s podmínkami služby Elementary POS a berete na vědomí, že data budou přenášena na jejich API endpointy.

== Zásady ochrany osobních údajů ==

Tento plugin neshromažďuje ani neukládá osobní data uživatelů (jména, e-maily, adresy).

Plugin ukládá provozní data ve vaší databázi:
* Záznamy synchronizace (časová razítka, typy operací, SKU produktů)
* Data fronty pro opakované operace (informace o produktech a objednávkách)

Všechna data jsou ukládána lokálně ve vaší WordPress databázi. Žádná data nejsou odesílána třetím stranám kromě vašeho Elementary POS API endpointu pro účely synchronizace. Záznamy mohou být manuálně vymazány z nastavení pluginu.
