/** * {@inheritdoc} */ public static function postLoad(EntityStorageInterface $storage, array &$items) { foreach ($items as $item) { $item->product = uc_product_load_variant($item->nid->target_id, $item->data->first()->toArray()); if ($item->product) { $item->title = $item->product->label(); $item->model = $item->product->model; $item->cost = $item->product->cost->value; $item->price = $item->product->price; $item->weight = $item->product->weight->value; $item->weight_units = $item->product->weight->units; } $item->module = $item->data->module; } parent::postLoad($storage, $items); }
/** * {@inheritdoc} */ public function validateForm(array &$form, FormStateInterface $form_state) { $data = \Drupal::moduleHandler()->invokeAll('uc_add_to_cart_data', array($form_state->getValues())); $form_state->set('variant', uc_product_load_variant($form_state->getValue('nid'), $data)); }
/** * Form submit callback: add a product to an order. */ public function addProductSubmit($form, FormStateInterface $form_state) { $form_state->set('products_action', 'products_select'); $form_state->set('refresh_products', TRUE); $form_state->setRebuild(); $order = $form['#order']; $data = \Drupal::moduleHandler()->invokeAll('uc_add_to_cart_data', array($form_state->getValue('product_controls'))); $values = uc_product_load_variant(intval($form_state->getValue(['product_controls', 'nid'])), $data)->toArray(); $values['qty'] = $form_state->getValue(['product_controls', 'qty']); $values['order_id'] = $order->id(); $product = OrderProduct::create($values); \Drupal::moduleHandler()->alter('uc_order_product', $product, $order); $product->save(); $order->products[] = $product; $order->logChanges([$this->t('Added (@qty) @title to order.', ['@qty' => $product->qty->value, '@title' => $product->title->value])]); // Decrement stock. if (\Drupal::moduleHandler()->moduleExists('uc_stock')) { uc_stock_adjust_product_stock($product, 0, $order); } // Add this product to the form values for accurate tax calculations. $products = $form_state->getValue('products'); $products[] = $product; $form_state->setValue('products', $products); }