/** * Form submit callback: remove a product from an order. */ public function removeProduct($form, FormStateInterface $form_state) { $form_state->set('refresh_products', TRUE); /** @var \Drupal\uc_order\Entity\Order $order */ $order = $form['#order']; $triggering_element = $form_state->getTriggeringElement(); $order_product_id = intval($triggering_element['#return_value']); /** @var \Drupal\uc_order\Entity\OrderProduct $product */ $product = $order->products[$order_product_id]; if (\Drupal::moduleHandler()->moduleExists('uc_stock')) { // Replace stock immediately. uc_stock_adjust($product->model->value, $product->qty->value); } $product->delete(); unset($order->products[$order_product_id]); $order->logChanges([$this->t('Removed %title from order.', ['%title' => $product->title->value])]); }
/** * Responds to order product deletion. */ function hook_uc_order_product_delete($order_product_id) { // Put back the stock. $product = db_query("SELECT model, qty FROM {uc_order_products} WHERE order_product_id = :id", array(':id' => $order_product_id))->fetchObject(); uc_stock_adjust($product->model, $product->qty); }