/** * @param OrderItem $orderItem * @param bool $delayed Defines whether update in the database must be performed immediately or can be delayed */ public function saveOrderItem($orderItem, $delayed = false) { $this->getDb()->query("\n UPDATE" . ($delayed ? " LOW_PRIORITY " : "") . "order_product\n SET\n total = price * quantity + ?,\n comment = ?,\n public_comment = ?,\n shipping = ?,\n time_modified = NOW()\n WHERE order_product_id = ?\n ", array('d:' . $orderItem->getShippingCost(), 's:' . $orderItem->getPrivateComment(), 's:' . $orderItem->getPublicComment(), 'd:' . $orderItem->getShippingCost(), 'i:' . $orderItem->getId())); }
/** * @param OrderItem $orderItem * @param array $localShipping * @return array */ private function calculateLocalShipping($orderItem, $localShipping) { if (array_key_exists($orderItem->getSupplierId(), $localShipping)) { $localShipping[$orderItem->getSupplierId()]['total'] += $orderItem->getTotal(); $orderItem->setShippingCost(0); OrderItemDAO::getInstance()->saveOrderItem($orderItem, true); } else { $localShipping[$orderItem->getSupplierId()]['orderItem'] = $orderItem; $localShipping[$orderItem->getSupplierId()]['total'] = $orderItem->getTotal(); $orderItem->setShippingCost($orderItem->getSupplier()->getShippingCost()); } return $localShipping; }