Přihlásit se

Joomla 5.1.0 a Joomla 4.4.4 (17 dub 2024)

Dnes byla uvolněna nová verze Joomla 5.1.0, společně s Joomla 4.4.4. Tato verze přináší spoustu nových funkcí, vylepšení v oblasti bezpečnosti a kódu a díky těmto vylepšením i vyšší rychlost.

virtuemart "spropitné"

18. kvě 2021 23:05 - 18. kvě 2021 23:05 #144375
Odpověď od Ernst
Joomla Expert
tak jsem pokročil o něco dál
ono se to vše správně do order_billTax v tabulce virtuemart_orders vše správně zapíše (tedy spropitné jako další daň).
Problém je jinde. V objednávce (backend, frondend, email) se ta daň nezobrazí odtud, ale ze spárované tabulky virtuemart_order_calc_rules.
Když tam hodnotu daně (spropitného) změním přímo v databázi, ta objednávka se zobrazuje tak jak chci.
Ale nevíte někdo, jak nastavením VM nebo tím pluginem dosáhnu změny v této tabulce?

Nebo jak udělat přepis /administrator/components/com_virtuemart/models/orders.php, protože mám obavu, že až zde budu muset provést ten zápis a byl bych rád aby to bylo upgradeodolné?

21. kvě 2021 10:32 #144385
Odpověď od Ernst
Joomla Expert
Tak, plugin je hotov a funkční.
Trošku už se to začíná podobat out of box řešení, ale ještě vzdáleně.
Spropitné je přidáno jako daň typu TaxBill (Daň na účet). Tuto daň je nutné vytvořit ručně.
Vzhledem k tomu, že ji musím zapsat do tabulky virtuemart_order_calc_rules, tak pro její zápis používám ještě trigger plgVmConfirmedOrder.

Pro zadání výš spropitného slouží pole zákazníka. Zadání může být v % nebo jako částka v Kč.
Nevýhodou je, že částka spropitného se nezobrazuje v košíku, je až následně přidána k platbě. Možná tuto funkci ještě dodělám.

Pokud o toto řešení má někdo zájem, napište mi na email.
Poděkovali: Cony

21. kvě 2021 22:10 - 21. kvě 2021 22:10 #144392
Odpověď od Ernst
Joomla Expert
Ještě mám jeden dotaz. Co se dá zjistit v orderdone.php, tedy poděkování za objednávku.?
V $this nenajdu třeba id objednávky, neznáte někdo způsob jak zjistit něco co není v $this?

21. kvě 2021 22:41 #144393
Odpověď od Cony
Moderátor
Jojo, jeden z neduhů VM. VM z nějakého důvodu počítá s tím, že to vše řeší Payment plugin. To že pak při každém způsobu platby vypadá poděkování jinak, nebo že konverze je potřeba řešit u všech pluginů není nějak úplně domyšlené :)

Osobně opět řeším opět systémovým pluginem, který ukládá ID objednávky do application input a v order done jej čtu odtamtud a objednávku si znovu nahraju.

Plugin
Code:
public function plgVmOnUpdateOrderPayment($data) { JFactory::getApplication()->input->set('virtuemart_order_id', $data->virtuemart_order_id); }

orderdone
Code:
$order_id = JFactory::getApplication()->input->get('virtuemart_order_id'); if (!empty($order_id)) { $orderModel = VmModel::getModel('orders'); $order = $orderModel->getOrder($order_id); // konverze, poděkování a pod... }
Poděkovali: Ernst

21. kvě 2021 22:53 - 21. kvě 2021 22:54 #144394
Odpověď od Ernst
Joomla Expert
Super elegantní řešení, tohle bych asi nevymyslel.
Běží to ok.

Díky moc, jsem dlužník.

Bude se to hodit i na jindy, protože děkovná stránka je dost chudá a často si zaslouží trochu rozšířit.

22. kvě 2021 23:52 - 22. kvě 2021 23:52 #144398
Odpověď od Ernst
Joomla Expert
dovolím se ještě jednou zeptat, netušíte jak do sublayout addtocart.php dostanu objekt košíku?
Nebo zda to vůbec jde.

Powered by Fórum