[ ['saveOrderSellerId', 255], ], OrderEvent::ORDER_DELIVERY_CHANGED => [ ['saveOrderSellerId', 255], ], PosOrderEvent::PURCHASE_STATE_CHECK => [ ['setCustomSellersIdData', 255], ], ]; } public function saveOrderSellerId(OrderEvent $event): void { $order = $event->getOrder(); // Pokud objednavka nema seller_id v delivery datech, tak nic nedelam $sellerId = ($order->getData('delivery_data')['seller_id'] ?? null); if (!$sellerId && ($cart = $event->getCart())) { // je mozne, ze v tuhle dobu jeste nejsou ulozeny deliveryData na objednavce, ale v cart data jsou $sellerId = ($cart->deliveryData['seller_id'] ?? null); } if (!$sellerId) { return; } sqlQueryBuilder()->insert('order_sellers') ->directValues([ 'id_order' => $order->id, 'id_seller' => $sellerId, ]) ->onDuplicateKeyUpdate(['id_order', 'id_seller']) ->execute(); } public function setCustomSellersIdData(PosOrderEvent $event) { $this->posEntity->createFromDB($event->getIdPos()); if ($this->posEntity->getStores()[0] ?? false) { $purchaseState = $event->getPurchaseState(); $customData = $purchaseState->getCustomData(); $idSeller = sqlQueryBuilder() ->select('s.id') ->from('sellers', 's') ->andWhere('s.id_store = :store_id') ->setParameter('store_id', $this->posEntity->getStores()[0]) ->execute() ->fetchOne(); $customData['order']['note_admin'] = json_encode( array_merge($customData['order']['note_admin'] ?? [], [ 'delivery_data' => [ 'seller_id' => $idSeller, ], ]) ); $purchaseState->setCustomData($customData); } } /** * @required */ public function setPosEntity(?PosEntity $posEntity): void { $this->posEntity = $posEntity; } }