Example #1
0
 /**
  * {@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));
 }
Example #3
0
 /**
  * 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);
 }