33 KiB
PompoBundle
Bundle, který obsahuje všechny pompo customizace. Spoustu dokumentace se nachází už i přímo v jednotlivách třídách, kde je popsaných spousta věcí, aby bylo jasný jak to funguje.
Bundle je použit na shopech prod/pompo a prod/nejhracka, kdy na nejhračce se používá méně věcí, protože tam nejsou prodejny
a je to celkově jednodušší verze pompa.
Obecný popis pro prod/pompo
- Produkty - produkty se zakládájí a aktualizují z DataGo (pouze některé parametry a obrázky), zbytek potom upravují na e-shopu.
- Ceny - ceny se tahají z DRSu. Tahají se ceny ze specifického ceníku pro pompo.
- Sklad
- DataGo - centrální sklad a sklad dodavatele.
- DRS - sklad prodejen.
- Objednávky
- DataGo - zapisují se objednávky s přepravou, tedy objednávky přes přepravce a případně rezervace na prodejně, kam je nutný závoz z centrálního skladu.
- DRS - zapisují se rezervační objednávky, rezervační objednávka s přepravou (závoz s prodejny) se zapisuje nejříve do DataGo a do DRSu se zapíše až ve chvíli, kdy je objednávka v DataGo přepnuta do stavu "převoz".
Obecný popis pro prod/nejhracka
- Produkty - stejné produkty jako na
prod/pompo. - Ceny - ceny se tahají z DRSu, stejně jako na
prod/pompo, ale používá se jiný ceník, který je určen pro nejhračku. - Sklad - nejsou prodejny, takže se tahá pouze centrální sklad a sklad dodavatele z DataGo.
- Objednávky - objednávky pouze přes přepravce, takže se zapisují do DataGo, zpětně se stahuje a aktualizuje stav objednávek.
Popis PompoAPI
Kvůli DRS pokladnám bylo vytvořeno PompoAPI, které muselo zůstat kompatibilní se starým API, které používali na starém řešení.
Všechny routy okolo API jsou umístěny v Controller/PompoApiController.php a funkcionalita API je umístěna v Util/Api/ApiUtil.php.
Pokladny k API přistupují přes doménu api-pompo.wpjshop.cz, která je ručně přidaná do ingressu v kubernetes. Je tomu tak hlavně kvůli
tomu, že pokladny nějak nedávali komunikaci přes novější TLS (HTTPS), takže takhle doména běží na HTTP.
V budoucnu by třeba DRS měl být schopen provést nějakou aktualizaci na pokladnách a začít k API přistupovat přes klasickou
doménu https://pompo.cz, ale je to asi o domluvě s DRSem.
Specifikace
Customizace administrace PompoBundle/Admin
- Objednávky (
Actions/UpdateDataGoOrderAction.php) - akce, která po spuštění provede aktualizaci objednávky v DataGo. - Produkty (
Actions/UpdateNejhrackaProductAction.php) - akce, která po spuštění přenese data produktu na nejhračku. Přenesou se popisky a parametry. Komunikace probíhá pomocí GraphQL API. - Seznam generovaných kódů (
lists/OrderDiscountsGeneratedCouponsList.php) - přidáváme sloupec s prodejnou, na které byl poukaz uplatněn. - Seznam objednávek (
lists/OrdersList.php) - přidáváme custom sloupečky (ID cílové prodejny v DRSu, ID zákazníka v DRSu, datum závozu u rezervací s přepravou, odbavuje) - Seznam uživatelů (
lists/UsersList.php) - přidáváme sloupec s ID uživatele z DRSu. Zároveň se ještě rozšiřuje filtr podle ID zákazníka, aby hledal i podle DRS ID zákazníka. - Přidáno do hlavního menu (
StoreManagement.php) - správa skladů přes kterou je možné odpojit sklad - FE potom nebere v potaz skladovost odpojených skladů. V adminu v menu pod Sklad / Sklady / Správa skladů. - Záložky (
Tabs)- Dopravy a platby (
DeliveryPaymentTab.php) - přidává záložku "Synchronizace" k dopravám a k platbám. Plní si tam mapování vůči DataGo. - Způsob doručení (
DeliveryTypeTab.php) - přidává záložku "Synchronizace" k způsobům doručení. Plní si tam mapování vůči DRSu. - Nastavení e-shopu (
PompoSettingsTab.php) - přidává záložku "Pompo do nastavení e-shopu, na které jsou obecná nastavení specifická pro pompo. Z téhle záložky je možné taky ručně spustit synchronizaci obrázků nebo produktů. - Výrobci (
ProducersTab.php) - nahrání custom HTML obsahu k výrobci/sekci. Aktuálně se to už nejspíš nepoužívá, protože se to nakonec udělalo jinak. - Sekce (
SectionsTab.php) - možnost nastavení "Neoblíbenější licence" a nahrání custom HTML obsahu k výrobci/sekci. Aktuálně se to už nejspíš nepoužívá, protože se to nakonec udělalo jinak. - Prodejci (
SellersTab.php) - přidává záložku k prodejci. Zložka přidává ruzná nastavení okolo prodejce - mapování na DRS a DataFo, kraje, omezení... - Produkty dodavatelů (
SuppliersTab.php) - přidává záložku k dodavateli, kde je možné nastavit objednací dny - kdy se na straně pompa provádí objednávka k dodavateli. Slouží to primárně ke správnému výpočtu data doručení.
- Dopravy a platby (
- Exporty
- Objednávky (
Util/Export/OrdersExcelExport.php) - přidáváme custom sloupečky stejně jako naOrdersList.php
- Objednávky (
Přílohy PompoBundle/Attachment
ReceiptPDFAttachment.php- účtenka k nákupu na prodejně. Je možné si ji zobrazít v účtu.InvoicePDFAttachment.php- faktura z DataGo. Posílá se v OrderSentEmail, který se posílá ze synchronizace.
Věrnostní program PompoBundle/BonusProgram
Customizace okolo věrnostního programu.
BonusComputer.php- Funkce:
createBonusPoints- ignoruju osobní odběry, protože tam body počítám až když objednávku v synchronizaci páruju s prodejkou.activatePoints- body se aktivujou pouze u objednávek, které jsou vyřízené (nedělám to tedy standartně po počtu X dnů).getNewPointsStatus- všechny body jsou při vytvoření automaticky neaktivní.
BonusExchangeUtil.php- customizace výměny bodů kvůli partnerským poukazům, které jsou předgenerované a tímpádem nemůžu generovat pokaždý nový.- Funkce:
generateUserCoupon- pokud je výměna bodů nastavená jako partnerský kupón, tak tak najde dostupný kupón z již vygenerovaných a ten to přiděli uživateli.
PointEvaluator.php- Funkce:
calculatePointsFromPrice- customizace, aby se 1 bod rovnal 30 Kč
Command PompoBundle/Command
StockSynchronizationCommand.php- synchronizace skladu - je potřeba, aby byla synchronizace skladu rychlá a běžela prakticky furt, a k tomu slouží tenhle command, který každou minutu spouší synchronizaci skladu (v kubernetes běží command pod, kde je tenhle command spuštěný). Deployne se to vždycky automaticky s nasazením shopu díkyCOMMAND_PODproměnné v.gitlab-ci.ymlna shopu.
Controller PompoBundle/Controller
DataGoController.php- přístupný pouze pro zalogované administrátory, obsahuje debug routy./sync/{type}/- spustí synchronizaci daného typu./dump_order/{id}/- zobrazí JSON pro zadané ID objednávky. Stejná data se potom používají při vytváření objednávky.
DRSController.php- přístupný pouze pro zalogované administrátory, obsahuje debug routy./sync/{type}/- spustí synchronizaci daného typu./sync/user/{drsId}/- spustí synchronizaci uživatele podle zadaného ID (DRS -> shop)./sync/prices/{productCode}/- spustí synchronizaci cen pro daný produkt./sync/pos_order/{drsId}/- spustí synchronizaci prodejky podle ID v DRSu./dump_order/{id}/- zobrazí XML pro zadané ID objednávky. Stejná data se potom používají pro vytváření objednávky./dump_user/{id}/- zobrazí XML pro zadané ID uživatele. Stejná data se potom používají pro založení a aktualizaci zákazníka.
PompoApiController.php- Základní adresa je/_pompo/api/TenantPublicAPI/v1/{endpoint}. Obsahuje routy přes které komunikují pokladny. Celé PompoAPI je kompatibilní se starým API od AirMe, aby se na straně pokladny nemuselo nic měnit. Celé API je case-insensitive, i routy./PAAuth- slouží k získání API tokenu podle přihlašovacího jména a hesla do administrace./PAVouchers/UseVoucher- uplatnění poukazu, označí poukaz jako uplatněný/PAVouchers/TryUseVoucher- vrací stejná data jakoUseVoucher, jen poukaz ještě neuplatní/PAVouchers/RechargeVoucher- nastaví uplatněný poukaz jako neuplatněný, tímpádem je možné ho znovu použít/PAVouchers/{coupon}- vrátí informace o daném poukazu, nebo 404 pokud nebyl voucher nalezen.
PompoController.php- routy specifické pro pompo./_pompo/export/oss/- jednoduchý export produktů a jejich DPH./_pompo/sellers/- ajax načítání focusu s prodejnama (změna prodejny v hlavičce, na produktu...)./#account#/#user_cards#/- seznam zákazníckých karet v uživatelském účtu./#orderView#/{orderId}/receipt/- PDF s účtenkou z prodejny.
Customizace dropshipmentu PompoBundle/Dropship
PompoExpandoTransfer.php- Funkce:
modifyInsertedOrder- importovat objednávky jako zaplacené.
DataGo PompoBundle/DataGo
Synchronizace e-shopu s DataGo. DataGo je systém pro správu hlavního skladu a expedice z něj.
Většina spouštění synchronizace je zaregistrována v SynchronizationRegister\DataGoSynchronizationRegister.php.
Synchronizace
Synchronizace je rozdělená na dvě části. Jedna část se provádí v cronech a druhá část se provádí přes synchronization eventu. V synchronizační eventě se provádí věci, které je potřeba provádět často - objednávky a sklad. V cronu se potom provádí synchronizace produktů z CSV, skladu z CSV a obrázků produktů.
- Objednávky - do DataGo odesíláme objednávky přes dopravce, případně objednávky se závozem na prodejnu, které se odešlou i do DRSu
potom, co se přepnou do stavu "Převoz"
Synchronizers/OrderSynchronizer.php- odesílá objednávky do DataGo a potom zpětne stahuje jejich stavy z DataGo do e-shopu.
- Sklad - z DataGo stahujeme skladovost produktů na hlavním skladu.
Synchronizers/StockSynchronizer.php- aktualizuje hlavní sklad v e-shopu podle DataGo.- Typ CSV (
MODE_CSV) - sesynchronizuje sklad podle CSV souboru, který DataGo jednou za cca 20 minut aktualizuje. - Typ ZMĚNY (
MODE_NORMAL) - rozdílová synchronizace, kdy si e-shop řekne o změny za posledních X vteřin a sesynchronizuje. Lze si říct o změny max 600s zpátky.
- Typ CSV (
- Produkty - zakládá a aktualizuje produkty (název, kód, viditelnost, parametry...).
PROCESS_TYPE_FULL- import ze souboru, kde jsou všechny produkty - plný import, který pouze zakládá nové produkty.PROCESS_TYPE_FULL_UPDATE- import ze souboru, kde jsou všechny produkty - plný import, který pouze aktualizuje existující produktu (aktualizuje se jen pár údajů, parametrů).PROCESS_TYPE_NEW- import ze souboru, kde jsou pouze nové produkty za posledních několik hodin - pouze zakládá produktyPROCESS_TYPE_DIFF- import ze souboru, kde jsou pouze změněné produkty - pouze aktualizace již existujících.
- Obrázky produktů - synchronizují se v NORMAL cronu. Synchronizují se pouze změněné obrázky, které se nejdříve načtou z API a pak stáhnou / aktualizujou. Synchronizace obrázku jde spustit i ručně z administrace (Nastaveni e-shopu, záložka pompo).
Soubory
Popis souborů souvisejících s věcma okolo DataGo.
EventSubscriber\CronSubscriber- FREQUENT
- zpětná synchronizace stavů z DataGo
- NORMAL
- částečná synchronizace z CSV souborů - vytváření a aktualizace produktů, synchronizace skladu
- synchronizace změněných obrázků
- EXPENSIVE
- plná synchronizace z CSV souborů - produkty
- FREQUENT
EventSubscriber\OrderSubscriber- ORDER_STORNO
- v případě storna objednávky provést storno i v DataGo
- ORDER_STORNO
Synchronizer\OrderSynchronizer- zapisování objednávek do DataGo a zpětné stahování stavů z DataGo do e-shopuSynchronizer\ProductSynchronizer- zakládání a aktualizace produktůSynchronizer\StockSynchronizer- synchronizace skladu - dva typy:- CSV - synchronizace z velkého CSV souboru, který obsahuje všechny produkty a jejich sklad na centrále + sklad dodavatele
- JSON - rozdílová synchronizace skladu - ptáme se vždycky na změny za posledních 10 minut a podle toho aktualizujeme hlavní sklad
Util\DataGoApi- komunikace s DataGoUtil\PhotoDownloader- stahování fotekUtil\PhotoUpdater- aktualizace fotek
DRS PompoBundle/DRS
Synchronizace e-shopu s DRSem. DRS je systém pro správu pokladen/prodejen a jejich skladu.
Pro nějakou komunikaci se připojujeme se napřímo k MSSQL databázi a pak třeba pro zápis
objednávek, zápis uživatelů používáme SOAP API. Vešketá tahle komunikace se najde v DRSApi.php classe.
Konfigurace připojení se nachází v Resources/config/parameters.yml.
Většina spouštění synchronizace je zaregistrována v SynchronizationRegister\DRSSynchronizationRegister.php.
Synchronizace
S DRSem synchronizujeme sklady prodejen, ceny, objednávky včetně prodejek (nákupy na prodejně) a uživatelé.
- Objednávky - do DRSu jdou objednávky, které mají osobní odběr (vyzvednutí na prodejně).
Pokud je objednávka na osobní odběr, ale zboží je skladem pouze na centrálním skladě, tak
jde objednávka nejdříve do DataGo a po přepnutí do stavu "převoz" se objednávka odešle do DRSu.
Synchronizers/OrderSynchronizer.php- odesílá objednávky do DRSu a zpětně zpracovává stavy.Synchronizers/POSOrderSynchronizer.php- zakládá prodejky do e-shopu. Použilo se to i k doimportování objednávek ze starého e-shopu (proto tam jsou ify na$oldOrder, které by mělo být možné do budoucna odebrat).
- Ceny - synchronizujeme rozdílově. V DRSu existují dvě tabulky s cenama:
PricesGlobal- globální ceny podle měny, a pakPricesLocal- ceny konkrétních shopů (mutací).Synchronizers/PriceSynchronizer.php
- Sklad - synchronizujeme pohyby na skladech. Do tabulky
eshop.ChangedItems(MSSQL) se nám generují čísla produktů, kde proběhl nějaký pohyb a tuhle tabulku si potom načítáme a aktualizujeme podle ní skladovost u produktů, kde proběhl nějaký pohyb. Tahle synchronizace se spouští v samostatném threadu (StockSynchronizationCommand.php).Synchronizers/StockSynchronizer.php
- Uživatelé - synchronizujeme uživatele z e-shopu do DRSu a zároveň provádíme i zpětnou aktualizaci uživatelů z DRSu do e-shopu.
Zakládáme také nové uživatele, kteří vzniknou v DRSu, protože někdo může přijít na prodejnu a chtít věrnostní
kartu, kterou dostane a musí se mu na ní začít přičítat body. Takže i když je v DRSu uživatel s prázdným mailem,
tak na e-shopu uživatele založíme a nastavíme mu dočasný e-mail ve formátu
{drsId}@pompo.cz. Pokud uživateli někdy v budoucnu doplní mail v DRSu, tak se aktualizuje i na e-shopu + se uživateli odešlě e-mail aby dokončil registraci na e-shopu (protože je potřeba nastavit heslo atd...). Další způsob registrace je, že na e-shopu vyplní číslo zákazníka + číslo věrnostní kartičky, díky čemuž je schopen se zaregistrovat a spárovat si učet s existujícím účtem, kde se mu už počítaly body.Synchronizers/UserSynchronizer.php- synchronizace uživatelů do DRSu a zpětně k námSynchronizers/UserCouponSynchronizer.php- synchronizuje uživatelských kupónů do DRSu, aby na pokladnách viděli, že uživatel má tyhle kupóny a mohli mu tímpádem nabídnout jejich uplatnění
Soubory
Popis souborů souvisejících s věcma okolo DRSu.
EventSubscriber\CronSubscriber- FREQUENT
- Synchronizace prodejek z DRSu - vytváření nákupů na prodejně (kvůli bodům, a aby byly vidět v účtu zákazníka) a párování rezervací vytvořených na e-shopu s nákupem na prodejně.
- Synchronizace uživatelských kupónů do DRSu - aby bylo na pokladně vidět, jaké kupóny má uživatel v účtu a případně mu tak mohli připomenout, že tam nějaký má.
- EXPENSIVE
- Synchronizace akčních cen - sesynchronizujou se ceny, u kterých bude začínat nebo končit platnost.
- FREQUENT
Synchronizers/OrderSynchronizer.php- synchronizace objednávekSynchronizers/POSOrderSynchronizer.php- synchronizace prodejekSynchronizers/PriceSynchronizer.php- synchronizace cenSynchronizers/StockSynchronizer.php- synchornizace skladu prodejenSynchronizers/UserCouponSynchronizer.php- synchronizace uživatelských kupónůSynchronizers/UserSynchronizer.php- synchronizace kupónůUtil/DRSApi.php- komunikace s DRS API / databází
E-maily PompoBundle/Email
Custom e-maily, které se odesílají ze synchronizace.
OrderInPersonReadyEmail.php- objednávka připravena k osobnímu převzení. Odesílá DRS synchronizace když nastaven stav.OrderInProgressEmail.php- objednávka se zpracovává. Odesílá jak DRS, tak DataGo synchronizace.OrderNotCompleteEmail.php- objednávka je nekompletní. Objednavka je pripravena k osobnimu prevzeti, ale neni kompletni, protoze nejake zbozi chybi.OrderSentEmail.php- objednávka odeslána. Odesíla DataGo synchronizace, když byla objednávka poslána dopravcem.OrderShopTransportEmail.php- objednávka se převáží na prodejnu. Odesílá DataGo synchronizace, když nastane stav "převoz".UserPOSRegistrationEmail.php- zákazník se registroval na prodejně a je potřeba, aby dokončil registraci na e-shopu. Posílá DRS synchronizace uživatelů.
EventSubscribers PompoBundle/EventSubscriber
OrderingCartSubscriber.php- Funkce:
checkItemsStock- kontrola skladovosti v DataGo nebo v DRSu před odesláním objednávky, abych si nemohl objednat např. produkt, který jsem dal do košíku, ale mezitím ho někdo koupil na prodejně a nestihlo se to ještě přenést na shop.
DeliveryCheckSubscriber.php- validace doprav.- Funkce:
checkDelivery- validace košíku vůči dopravě, zda se třeba nesnažím rezervovat zboží, které není dostupné na centrálním skladě a vybrané prodejně.checkZasilkovnaDelivery- vlastní validace zásilkovny, přes kterou umožnují poslat pouze jednokusovou zásilku.
InvoicesOrderEventSubscriber.php- nastavení fakturační řady pro Slovensko.OrderingCronSubscriber.php- customizace notifikace nezaplacených objednávek.OrderItemInfoSubscriber.php- zobrazení poznámky u objednané položky - výběr varianty formou textového pole.OrderSubscriber.php- Funkce:
doOrderSplit- rozdělení objednávky na rezervační objednávku a rezervaci se závozem.logDeliveryDate- zaloguje k objednávce s osobním odběrem datum vyzvednutí, který se zobrazoval v košíku.setOrderType- uloží k objednávce typ (rezervace, rezervace s přepravou, dopravce) a zároveň nastaví flag objednávce.
PurchaseStateSubscriber.phppurchaseStateCreated- nafetchuje skladové dostupnosti k jednotlivým produktům, abych v košíku mohl správně zobrazovat, co je skladem, co je potřeba zavézt na prodejnu, co skladem není...
ProductList/CatalogSubscriber.php- nafetchovaní informací o skladech na ProductList.UserUserSubscriber.php- po zaregistrování uživatele se provede synchronizace s DRSem - pokud se uživatel registroval na prodejně, tak se díky tomu rovnou dotáhnou data k němu.
- vygenerování zákaznícké karty u nové registrovaného uživatele.
CronSubscriber.php- generování narozeninových poukazů, odesílaní notifikací o docházejících poukazech.
Custom triggery pro slevy PompoBundle/Ordering
Triggers/POSTrigger.php- podmínka, která umožní slevu uplatnit na pokladně. Uplatnění na pokladně == uplatnění slevy přes vlastní API (PompoAPI).Triggers/TransportChargeTrigger.php- podmínka, která říká, zda se má v košíku učtovat manipulační poplatek - pokud je to odběr na prodejně, kam se musí provést závoz.
Smarty plugins PompoBundle/Resources/smarty_plugins
function.get_delivery_date_incremented.php- vrací předpokládáný datum doručení pro produkt a dopravu, nebo pro celý košík a konkrétní dopravu.function.get_drs_customer_id.php- vrátí ID uživatele v DRSu podle e-shopového ID uživatele.function.get_dynamic_filter.php- vytvoří prázdnej dynamic filter, abysme byli schopni vytvořit formulář pro výběr hračky na homepage.function.get_formatted_receipt.php- zformátuje účtenku z DRSu, aby vypadalo aspoň trochu normálně v PDF, kde ji zobrazujeme.function.get_pompo_content.php- vrací cestu ke custom contentu pro sekci nebo výrobce. Pravděpodobně se nepoužívá, protože se to později vyřešilo jinak.function.get_pompo_delivery_charge.php- vrací cenu manipulačního polatku, která je pevná a je potřeba ji zobrazovat v košíku u osobních odběrů, kde je potřeba provést závoz z centrálního skladu.function.get_pompo_product_availability.php- vytáhne dostupnost z ProductPurchaseItemu, která by tam měla být nafetchovaná z PurchaseStateEventy.function.get_pompo_sellers.php- vrátí všechny prodejny, ke kterým to nafetchuje i potřebné info (dostupnost, datum doručení) a zároveň to ještě prodejny zgroupuje podle krajů.function.get_price_action_end_date.php- vrací datum konce platnostni akční ceny.function.get_product_deliverytime_info.php- vrací skladové informace o produktu. Používá se to na detailu produktu, abysme správně zobrazili zda je skladem online, zda je skladem na moji prodejně, jiné prodejně, u dodavatele...function.get_reservation_order.php- vrací druhou (rezervační) objednávku, která vznikla při rozdělení objednávek.function.get_section_licences.php- vrací licence pro danou sekci. V administraci lze u každé sekce nastavovat "Neoblíbenější licence".
Utility PompoBundle/Util
Pomocné funkce a předefinování některých engine servis.
Api/ApiUtil.php- veškeré logika, která se týká PompoAPI, se kterým komunikují DRS poklady. Používá se kvůli uplatnění poukazů na pokladně.auth- pokladna volá auth metodu, aby získala Bearer token pro komunikaci s API.useVoucher- použítí voucheru a zároveň "zkouška" (try) použítí, která voucher ještě neuplatní, ale vrátí stejná data, jako kdyby ho uplatnila.rechargeVoucher- reaktivuje kupón - změní stav z Uplatněno na Neuplatněno.
Email/Preprocessor.php- u e-mailu pro dokončení registrace potřebuju přidávat na konec URL #user-register-form, aby se zascrollovalo na formulář.Export/OSSExport.php- custom export pro OSS, aby si mohli opravit v DataGo CN kódy. Pravděpodobně ho už nepoužívájí, protože by už neměl být potřeba.Import/PompoImport.php- import dat před spuštěním, jinak se nikde nepoužívá. Už by neměl být potřeba.Incomaker- customizace IncomakeruPompoContactXMLElement.php- customizace kvůli věrnostním kartám a dětem, aby se odesílaly i do Incomakeru.PompoProductXMLElement.php- customizace kvůli flagům u produktu, protože do Incomakeru chceme posílat víc flagů než se posílá v defaultu.
Order- úpravy týkající se objednávekOrderInfo.php- předefinovanáOrderInfo.phpzOrderingBundle, kde je akorát upravená metodagetDeliveryDate, aby se datum doručení vracel správně na základě customizací okolo data doručení.OrderSynchronizerTrait.php- společné funkce pro synchronizaci objednávek (DRS a DataGo společné funkce).
Ordering- úpravy a customizace týkající se objednávání (košík, objednávka, datum doručení)OrderingUtil.php- obsahuje všechny věci, které se týkají košíku (dostupnosti, validace, datum doručení...). Hodně dokumentace se najde přimo uvnitř třídy.- Funkce:
orderSplitTransportReservation- rozdělí objednávku typu ORDER_TRANSPORT_RESERVATION na dvě objednávky.getOrderType- vrátí typ objednávky podle objednávky.getPurchaseStateOrderType- vrátí typ objednávky pro PurchaseState.fetchPurchaseStateProductsAvailability- načte skladovou dostupnost k produktům v purchase statu. Například: skladem, potřeba zavézt na prodejnu, není skladem...validatePurchaseStateByDelivery- zvaliduje PurchaseState. Validace na straně e-shopu, že je pro dopravu/prodejnu vše skladem.fetchSellersCartInfo- načte skladovou dostupnost k jednotlivým prodejnám na základě produktů v purchase statu, abych u prodejny mohl zobrazit, zda je všechno v košíku na dané prodejně dostupné, je potřeba závoz, není dostupné nebo třeba zda si můžu všechno v košíku vyzvednout na prodejně ve stejný čas, nebo se musí nějaká část zavézt. Zároveň si k prodejnám načtu a uložim datum doručení, který je potřeba počítat právě i na základě dostupnosti.getSellerAvailability- vrátí konstantu, která určitě dostupnost pro konkrétní prodejnu. Funkci musím předat hodnoty skladu a počet kusů pro které chci dostupnost vrátit.getPurchaseStateProducts- načte k produktům v purchase statu potřebné informace (skladovosti podle mojí prodejny).isOrderInPerson- vrací, zda je objednávka na osobní odběr nebo ne.isTransportChargeInOrder- vrací, zda je v objednávce obsažen "Manipulační příplatek" - za převoz na prodejnu.getOrderSeller- vrátí prodejnu pro danou objednávku (prodejna vybraná v košíku při tvorbě objednávky).getPurchaseStateProductsGrouped- kvůli variantám, které jsou dělané pouze přes poznámku se může stát, že v košíku jsou dva a více stejných produktů, jen s jinou poznámkou. V purchase statu se potom všechny tváří jako samostatné produkty, ale pro ProductList a skladovost je to furt stejný produkt, takže to v některých případech potřebuju zgroupovat do jedné položky, a k tomu přesně slouží tahle funkce.copyOrderItem- zkopíruje položku objednávky do jiné objednávky.getSellerDeliveryDate- spočítá datum doručení pro prodejnu (prodejce) na základě dostupnosti a dalších nastavení, které je v administraci možné provést.getSellerClosestShipmentDate- vrací nejbližší datum závozu z centrálního skladu na prodejnu. Závozy prodejen se nastavují v administraci u konkrétní prodejny.checkPurchaseStateStockDataGo- zvaliduje skladovost produktu vůči DataGo. Před odesláním objednávky se ještě provádí online kontrola skladovosti.checkPurchaseStateStock- zvaliduje skladovost vůči DRSu a DataGo.Před odesláním objednávky se ještě provádí online kontrola skladovosti.getPurchaseItemKey- vrací ID PurchaseItemu složené z ID produktu a ID varianty.getDaysOfWeek- pomocná funkce, která vrací dny v týdnu.activateSeller- pomocná funkce, která slouží k aktivaci konkrétní prodejny.
OrderType.php- třída která obsahuje pouze konstanty s typem objednávky.ProductAvailability.php- třída která obsahuje pouze konstanty s typem dostupnosti.
User- utility, které souvisejí s uživatelem.PompoUserUtil.php- pomocná utilita pro nějaké custom fce okolo uživatele.- Funkce:
generateBirthdayDiscountCoupons- funkce, která uživatelům generuje narozeninové kupóny. Každý uživatel může mít v účtu přidané svoje děti a pokud nějaké dítě má narozeniny, tak se 14 dní dopředu vygeneruje narozeninový poukaz.synchronizeRegisteredUser- metoda, která natvrdo natáhne k uživateli data z DRSu.getDaysParameter- pomocná funkce při generování poukazů. Vrací pole s datumama dnů ode dneška až po den za 14 dní.getNextYearDays- pomocná funkce, která vrací mezi dneškem a datem za 14 dnů všechny dny, které jsou v dalším roce. Používá se při generování poukazů abych správně generoval u konce roku.getDatePeriod- vrací datumy ode dneška až po datum za 14 dní.getBirthdayDiscountIdByLanguage- vrací ID generovaného poukazu podle jazyka.
UserCardUtil.php- utilita, které slouží pro práci s věrnostníma kartama.- Funkce:
getUserCards- vrací všechny věrnostní kartičky daného uživatele.generateUserCard- vygeneruje novou věrnostní kartu k danému uživateli.generateCardCode- vygeneruje kód, který se potom přiřadí k nově vytvořené kartě.
Watchdog- customizace hlídacího psaPompoWatchdog.php- předefinovávámegetInStoreFieldtak, aby se pro hlídacího psa brala v potaz pouze skladovost z centrálního skladu.
Configuration.php- třida s konfigurací, která je načtená z YML konfigurace + obsahuje pomocné funkce pro získaní některých informací z konfigurace.OrdersListFilter.php- předefinovanýOrdersListFilter.phpz jádra kvůli filtrování podle kódu objednávky. Z kódu objednávky se zkouší oříznout první znak.PompocontentUtil.php- slouží pro práci s custom HTML obsahem, který se připravoval pro sekce a výrobce. Nakonec se to nepoužilo, takže aktuálně by se to nemělo nikde používat.PompoGraphQLClient.php- slouží pro přenos dat naprod/nejhrackapomocí našeho GraphQL API.PompoLogger.php- slouží pro logování chyb do ActivityLogu, případně do Sentry.PompoUtil.php- pomocné funkce pro obecné věci týkající primárně synchronizace.- Funkce:
getDataGoCredentialsByOrder- vrací jméno a heslo pro zápis objednávek do DataGo, protože každá prodejna nebo jazyková mutace má jiné údaje.getDataGoDefaultCredentials- vrací výchozí jméno a heslo pro zápis objednávek podle jazykové mutace.recalculateStores- přepočítání skladu. Přenese sklad zestores_itemsna produkt, aby seděla zásoba podlestores_items.getIgnoredStores- vrací sklady, které se mají ignorovat. Nemá se přenášet jejich skladovost na produkt.synchronizeDataGoProducts- spustí synchronizaci produktů s DataGo.synchronizeDataGo- spustí synchronizaci zadaných typů s DataGo.synchronizeDRS- spustí synchronizaci zadaných typů s DRSem.synchronizeDataGoProducts- spustí synchronizaci produktů s DataGo.
ProductUtil.php- pomocné funkce kolem produktů.- Funkce:
fetchStoreInfo- multifetch pro načtení skladovosti rozdělené podle skladu - jde o centrální sklad, sklad aktuálně vybrané prodejny a součet kusů na ostatních prodejnách.getDeliveryDateIncremented- vrátí datum dopravy navýšený a potřebný počet dnů pro dané položky.getDateIncrement- vrací date increment - počet dní o kolik se má navýšit datum doručení pro dané položky.getMainStoreClosedDates- vrací datumy, kdy je hlavní sklad uzavřen a tímpádem je uzavčena i expedice z něj.getMainStoreDeliveryDateIncrement- vrací počet dní, o které je potřeba navýšit datum doručení pokud je expedice z centrály uzavřena.getDateIncrementWithoutWorkdays- odečte od incrementu nepracovní dny, aby když se pak zavoláDateUtil::calcWorkingDaysnebylo datum o ty nepracovní dny posunutý.getSupplierOrderIncrement- vrátí počet dnů do dalšího objednávacího dne od dodavatele.recursivelyGetClosestDeliveryDateIncrement- rekurzivně prochází objednací časy nastavené u dodavatele, aby se našel nejbližší den, kdy se od dodavatele bude objednávat.fetchProductsSupplierDeliveryDateIncrement- mutlifetch načte k produktům increment podle záznamu vproducts_of_suppliers- každý produkt může mít totiž delivery increment ještě povýšený speciálně u dodavatele.getSellersByStoreId- vrací prodejce indexované podle ID skladu.getProducts- vracíProductCollectionpodle zadaných ID produktů
PompoNotifier.php- emailové notifikace.- Funkce:
notifyLowPartnerCoupons- notifikace o docházejících poukazech.
PompoOrderUtil.php- pomocné funkce pro práci s objednávkamagetOrderSynchronizerType- vrátí zdroj remote objednávky (DataGo nebo DRS)getOrderItemDifference- vrací seznam položek s počtama kusů v DRSu / DataGo. Podle toho se potom generuje block.incomplete-items.tpl, který se posílá v mailu.
Customizace view PompoBundle/View
BonusProgramExchangeView.php- customizace kvůli partnerským poukazům, abych nezobrazoval partnerské poukazy, pokud tam už není dostupný žádný předvygenerovaný poukaz.PageView.php- customizace kvůli zaheslování stránky.UserCardsView.php- custom view pro zobrazení zákaznických karet uživatele.UserView.php- customizace kvůli registraci / dokončení registrace uživatelů, které si vytvořili účet na pokladně / mají zákazníckou kartu. Pokud uživatel má zákazníckou kartu, tak může pomocí čísla karty a čísla uživatele provést registraci na e-shopu a tím si účet automaticky spáruje s již existující zákaznickou kartou.getBodyVariables- pokud je v requestu číslo zákazníka v DRSu, tak předvyplním formulář datama z DRSu.handleSubmit- handlování odeslání formuláře, kde se vyplňuje číslo zákazníka a karty - pokud se vyplní existující, tak se předvyplní formulář pro registraci datama z DRSu.