Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

OpenCart – Vyvolání notifikace o objednávce pomocí PHP

Nabytkar230
verified
rating uzivatele
20. 3. 2019 12:02:09
Řeším tu takový problémek - mám u zákazníka starý OpenCart 2, a mám tu importní můstek na objednávky z jiného systému - přímo do SQL, to je OK.
Nicméně bych potřeboval vyvolat PHPčkem proces notifikace, tj. jako kdyby přišla nová objednávka. Moje představa je, že to pustím přes nějaký controller a ID objednávky, něco jako
Ale tak hluboko OpenCart neznám, nevíte někdo? Případně i zaplatím
20. 3. 2019 12:02:09
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393627
P8j6
verified
rating uzivatele
(9 hodnocení)
20. 3. 2019 12:11:09
A co myslíte tou notifikací? Odeslat email obsluze o přijetí objednávky?
Prakticky, při importu nové objednávky by jste měl využít model: catalog/model/checkout/order.php
Tam je funkce addOrder pro přidání objednávky do databáze. A pak funkce addOrderHistory, která přidá objednávce nějaký konkrétní stav a odešle příslušné notifikační emaily.
Alternativně, pokud nepoužíváte ten model, tak prostě pošlete email pomoci: system/library/mail.php. Např v té funkci addOrderHistory uvidíte vzor jak se s knihovnou mail zachází.
20. 3. 2019 12:11:09
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393626
Nabytkar230
verified
rating uzivatele
20. 3. 2019 12:14:59
Díky za odpověď, jsou tam 2 e-mail - obsluze i zákazníkovi. Pokud importuje napřímo do SQL, tak používám tabulky order, order_item, order_option, order_total a order_history. Takže teoreticky stačí nevyplnit order_history a vyvolat addOrderHistory i bez importu objednávky přes ten model?
20. 3. 2019 12:14:59
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393625
Peter Nižník
verified
rating uzivatele
(5 hodnocení)
20. 3. 2019 12:16:51
Napsal Nabytkar;1517956
Řeším tu takový problémek - mám u zákazníka starý OpenCart 2, a mám tu importní můstek na objednávky z jiného systému - přímo do SQL, to je OK.
Nicméně bych potřeboval vyvolat PHPčkem proces notifikace, tj. jako kdyby přišla nová objednávka. Moje představa je, že to pustím přes nějaký controller a ID objednávky, něco jako
Ale tak hluboko OpenCart neznám, nevíte někdo? Případně i zaplatím
Je potrebne zavolat controller/api/order/addorder tahle funkce vloží novou obj. a také změní stavy včetně notifikace klientovi,
kbydy něco napište PM
20. 3. 2019 12:16:51
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393624
P8j6
verified
rating uzivatele
(9 hodnocení)
20. 3. 2019 12:28:41
@peterniznik
addOrder emaily neodesílá, to dělá až funkce addOrderHistory.
@Nabytkar
Ano, pokud je objednávka už v databázi, tak by mělo stačit zavolat addOrderHistory($order_id, $order_status_id).
Kde $order_status_id je id stavu buď Processing 2, nebo Pending 1, nejsem si teď úplně jistý, tak vyzkoušejte jedničku i dvojku. Nebo se podívejte jaké id eshop používa pro stav "Objednávka přijata".
20. 3. 2019 12:28:41
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393623
Peter Nižník
verified
rating uzivatele
(5 hodnocení)
20. 3. 2019 12:31:13
@P8j6
jo má chyba psal jsem to z hlavy, správně je to controller/api/order/add kde tahle funkce má v sobě voláni addOrder a také addOrderHistory
20. 3. 2019 12:31:13
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393622
Nabytkar230
verified
rating uzivatele
20. 3. 2019 15:39:27
Díky oběma.
Díval, že /api/order/si stejně volá
tedy metoda addOrderHistory není přímo v order, ale až v metodě add, kterou volat nemůžu, protože nemám data objednávky.
Tak jednodušše, tohle je verze 2.0.1.0, a netuším vůbec, co musím všechno inicializovat. Předpokládám, že pojedu podle index.php a v určité části ještě před dispatcherem to zaseknu a zavolám si addOrderHistory.
Ale netuším, co všechno OC vyžaduje (třeba Request a Response se mi zdají už zbytečné, ale neznám závislosti).
Můžu tedy mít poslední dotaz - před jakou inicializací v index.php můžu zavolat addOrderHistory a jak vytvořím objekt, ze kterého ji můžu volat?
20. 3. 2019 15:39:27
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393621
P8j6
verified
rating uzivatele
(9 hodnocení)
20. 3. 2019 16:10:25
Psal jste že už máte hotový skript který vkládá objednávky do databáze. Kde ten skript sídlí? Je to klasický opencartovský controller. Nebo nějaký úplně nezávislý skript který není v controlleru ani v modelu?
20. 3. 2019 16:10:25
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393620
Nabytkar230
verified
rating uzivatele
20. 3. 2019 20:01:05
Právě že úplně nezávislý, OC obchází přímým přístupem do DB. U Prestashopu to znám, tam načtu config a init a mám rovnou inicializované prostředí, tak jsem vedle.
20. 3. 2019 20:01:05
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393619
P8j6
verified
rating uzivatele
(9 hodnocení)
20. 3. 2019 20:41:59
Kdyby jste měl verzi 2.3.0.2. tak můžete použít startup.php podobně jak to děláte v prestě. Ale ve 2.0. to ještě vše jde přes index.
Vy stejně jen potřebujete odeslat email ne? Takže buď úplně jednoduše, ten mail prostě pošlete přes php, jak jste zvyklý, třeba pomoci funkce mail.
Nebo si udělejte v catalogu jednoduchý controller, např: catalog/controller/tool/utils.php
A do něho přijde něco v tomhle stylu (píšu to z hlavy, takže to asi nebude 100% funkční, ale pro představu):
class ControllerToolUtils extends Controller {
public function notify() {
$this->load->model('checkout/order');
if (isset($this->request->get)) {
$order_id = intval($this->request->get);
} else {
$order_id = 0;
}
if ($order_$id > 0) {
$this->model_checkout_order->addOrderHistory($order_id, 1);
}
}
}
A potom z vašeho skriptu můžete volat url adresu: index.php?route=tool/utils/notify&order_id=123
Ještě bych to samozřejmě celé zabezpečil nějakým tokenem, aby to nemohl z internetu zavolat žádný zaškodník.
20. 3. 2019 20:41:59
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393618
Nabytkar230
verified
rating uzivatele
21. 3. 2019 11:18:35
Super, tak je to funkční, bylo nutné ještě nastavit původní status objednávky na 0, jinak se přeposílal jenom info e-mail.
21. 3. 2019 11:18:35
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393617
P8j6
verified
rating uzivatele
(9 hodnocení)
21. 3. 2019 11:37:52
Ano, tohle musí být první status co k objednávce příjde. Tím se odešlou všechny ty emaily o potvrzení objednávky, atd..
Super, hlavně že se povedlo.
21. 3. 2019 11:37:52
https://webtrh.cz/diskuse/opencart-vyvolani-notifikace-o-objednavce-pomoci-php/#reply1393616
Pro odpověď se přihlašte.
Přihlásit