> For the complete documentation index, see [llms.txt](https://docs.portos.sk/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.portos.sk/rozsirenia/woocommerce.md).

# WooCommerce

## Na čo slúži prepojenie so systémom WooCommerce?

Odbremeňuje obsluhu od úkonov, ako napríklad:

* manuálne prepisovanie objednávok z WooCommerce do skladového systému PORTOS
* manuálne aktualizovanie skladových zostatkov vo WooCommerce podľa zostatko v systéme PORTOS.

Prepojenie s e-shopom WooCommerce rieši nasledovné úlohy:

### Prenos objednávok

Automatické sťahovanie skompletizovaných (uhradených a expedovaných) objednávok zo systému WooCommerce. Z každej objednávky je vytvorený skladový pohyb – *výdajka*, čím sa ponížia skladové zostatky na skladových kartách. Z objednávky sa netvorí faktúra, nakoľko sa počíta, že fakturácia je riešená priamo v systéme WooCommerce.

### Synchronizácia skladových zostatkov

Po tom, ako sa prenesú všetky objednávky, prepojenie zabezpečí, že všetky produkty zo systému WooCommerce majú nastavený skladový zostatok rovný spárovanému tovaru z Portosu.

## Spojazdnenie prepojenia <a href="#spojazdnenie-prepojenia" id="spojazdnenie-prepojenia"></a>

1. Prvým krokom je vygenerovanie tzv. *API kľúčov* priamo v prostredí WooCommerce (Word Press) [podľa oficiálneho návodu](https://woocommerce.com/document/woocommerce-rest-api/). Vo vlastnostiach API kľúča je potrebné zapnúť oprávnenie pre čítanie aj zápis (Read/Write access). Výsledkom je dvojica kľúčov: tzv. „**Consumer key**“ (verejný kľúč) a „**Consumer secret**“ (súkromný kľúč).
2. Ďalším krokom je vloženie týchto údajov a úprava nastavení rozšírenia WooCommerce podľa popisu v časti [Nastavenia](#nastavenia) nižšie.

## Nastavenia

Pre prístup k nastaveniam prepojenia so systémom WooCommerce:

* otvorte aplikáciu [Portos BackOffice](/backoffice/uvod-do-aplikacie-backoffice.md) a prihláste sa.
* v hlavnom menu kliknite v sekcii "**Systém**" na položku "**Rozšírenia**".
* Zobrazí sa zoznam rozšírení systému. V časti "**WooCommerce**" stlačte tlačidlo "**Spravovať**".

Zobrazí sa obrazovka s nastaveniami, na ktorej sú k dispozícii nastavenia popísané nižšie.

* **Párovanie tovarov:**
  * **Sklad**: voliteľná (nepovinná) hodnota. Ak je vyplnené, prepojenie bude párovať produkty z WooCommerce iba s tovarmi zo zvoleného skladu.
  * **Prefix kódu tovaru**: určuje, akými symbolmi sa bude začínať kód identifikátora WooCommerce produktu. Predvolená hodnota je „wc-„. Viac o význame tohto nastavenia nájdete v časti[ Párovanie tovarov.](#parovanie-tovarov)
  * **Zrkadliť skladové zostatky**: Určuje, či budú skladové zostatky zo systému Portos prenášané do WooCommerce produktov.
* **Synchronizácia**:
  * **Synchronizovať od**: v prípade, ak e-shop funguje skôr, ako je aktivované toto prepojenie, môže sa stať, že v e-shope existujú objednávky, ktoré už sú manuálne spracované v systéme PORTOS. V takom prípade si neželáme, aby niektoré objednávky prepojenie prenieslo do systému PORTOS a duplicitne tak vytvorilo skladové výdajky. V nastaveniach modulu je preto možné určiť, od ktorého dátumu majú byť objednávky z WooCommerce prenášané. Objednávky upravené pred týmto termínom budú ignorované.
  * **Perióda synchronizácie**: doba, vyjadrená v minútach, počas ktorej bude prepojenie po poslednej synchronizácii čakať, než vyvolá opätovnú synchronizáciu.
* **Nastavenia e-shopu**:
  * **Adresa e-shopu**: vložme internetovú adresu, na ktorej sa nachádza e-shop (vrátane https\:// alebo http\://), napríklad *<https://moj-woocommerce-eshop.sk>*.
  * **Verejný kľúč**: *Consumer key* získaný z WooCommerce prostredia.
  * **Súkromný kľúč**: *Consumer secret* získaný z WooCommerce prostredia.

## Párovanie tovarov

Pod párovaním tovarov rozumieme proces, ktorým spojíme ***produkt*** zo systému WooCommerce s ***tovarom*** zo systému PORTOS, čim vznikne dvojica *produkt – tovar*.

Hľadanie *tovaru* k WooCommerce *produktu* prebieha nasledovne:

1. na základe nastavenia „*Prefix kódu tovaru*“ a unikátneho identifikátora WooCommerce produktu (vlastnosť *id*) vyskladáme kód tovaru. Napríklad k produktu s ID 12345 vznikne hodnota „wc-12345“, pričom symboly „wc-“ je možné zmeniť za iné, úpravou nastavení WooCommerce rozšírenia. V zozname tovarov sú vyhľadané tovary, ktoré majú v zozname kódov práve tento kód. Ak nájdeme práve jeden tovar, tento tovar priradíme k produktu. Ak nájdeme viac, ako jeden tovar, je vyhlásená chyba „V*iac, ako jeden tovar má v zozname kódov priradený kód* …“. V prípade, ak sa nenašiel žiaden tovar, pokračuje sa ďalším bodom.
2. V prípade, ak má WooCommerce produkt vyplnenú vlastnosť *SKU*, v zozname tovarov sú vyhľadané tovary, ktoré majú v zozname kódov túto hodnotu SKU. Ak nájdeme práve jeden tovar, tento tovar priradíme k produktu. Ak nájdeme viac, ako jeden tovar, je vyhlásená chyba „V*iac, ako jeden tovar má v zozname kódov priradený kód* …“. V prípade, ak sa nenašiel žiaden tovar, pokračuje sa ďalším bodom.
3. V zozname tovarov hľadáme všetky tovary, ktorých názov sa zhoduje s názvom WooCommerce produktu. Pri porovnávaní zhody sa nezohľadňujú veľké a malé písmená. Ak nájdeme práve jeden tovar, tento tovar priradíme k produktu. Ak nájdeme viac, ako jeden tovar, je vyhlásená chyba „*Viac, ako jeden tovar nesie názov …".*
4. V prípade, ak má WooCommerce produkt vyplnenú vlastnosť SKU a táto vlastnosť pozostáva výhradne z čísel, hľadáme v zozname tovarov taký tovar, ktorého číslo je zhodné s číslom v SKU. Ak nájdeme práve jeden tovar, tento tovar priradíme k produktu.
5. V prípade, ak sa nenašiel žiaden tovar vyhlásená je chyba „*Nie je možné spárovať tovar k WooCommerce produktu … s identifikátorom …".*

Priraďovanie kódov k tovarom teda nie je povinné. Stačí, ak je splnená niektorá z týchto podmienok:

* v zozname kódov tovaru sa náchádza hodnota SKU z WooCommerce produktu.
* v zozname tovarov sa nachádza tovar s rovnakým názvom, ako je názov produktu z WooCommerce.
* v zozname tovarov s nachádza tovar s rovnakým číslom, ako je hodnota SKU.

{% hint style="info" %}
**Poznámka**

V prípade, ak k WooCommerce Produktu nie je nájdený žiaden tovar, tovar sa nevytvára. Rovnako to platí aj opačne: ak sa v systéme PORTOS nachádza tovar, ku ktorému neevidujeme WooCommerce produkt, produkt sa taktiež nevytvára.
{% endhint %}

## Často kladené otázky <a href="#otazky-a-odpovede" id="otazky-a-odpovede"></a>

### Kedy sa spúšta synchronizácia? <a href="#kedy-sa-spusta-synchronizacia" id="kedy-sa-spusta-synchronizacia"></a>

Vždy bezprostredne po štarte API služby, alebo po zmene nastavení modulu WooCommerce. Synchronizácia sa následne periodicky opakuje podľa políčka *Perióda synchronizácie* v nastaveniach WooCommerce rozšírenia.

### Ako spustím synchronizáciu manuálne? <a href="#ako-spustim-synchronizaciu-manualne" id="ako-spustim-synchronizaciu-manualne"></a>

Niektorým z týchto ukonov:

* Uloženie nastavení WooCommerce rozšírenia.
* Reštartovanie PORTOS API služby.

### Ako zistím, či modul pracuje správne? <a href="#ako-zistim-ci-modul-pracuje-spravne" id="ako-zistim-ci-modul-pracuje-spravne"></a>

V prípade akejkoľvek chyby v module je možné ju sledovať napríklad v aplikácii PORTOS Pokladňa, v obrazovke *Stav systému*.
