/**
  * {@inheritdoc}
  */
 public function submitForm(array &$form, FormStateInterface $form_state)
 {
     $paypal_config = $this->config('uc_paypal.settings');
     $session = \Drupal::service('session');
     $order = Order::load($session->get('cart_order'));
     if (!$form_state->isValueEmpty('shippable')) {
         $quote_option = explode('---', $form_state->getValue(['quotes', 'quote_option']));
         $order->quote['method'] = $quote_option[0];
         $order->quote['accessorials'] = $quote_option[1];
         $method = ShippingQuoteMethod::load($quote_option[0]);
         $label = $method['quote']['accessorials'][$quote_option[1]];
         //      $label = $method->label();
         $quote_option = $form_state->getValue(['quotes', 'quote_option']);
         $order->quote['rate'] = $form_state->getValue(['quotes', $quote_option, 'rate']);
         $result = db_query("SELECT line_item_id FROM {uc_order_line_items} WHERE order_id = :id AND type = :type", [':id' => $order->id(), ':type' => 'shipping']);
         if ($lid = $result->fetchField()) {
             uc_order_update_line_item($lid, $label, $order->quote['rate']);
         } else {
             uc_order_line_item_add($order->id(), 'shipping', $label, $order->quote['rate']);
         }
     }
     if ($paypal_config->get('ec_review_company')) {
         $order->delivery_company = $form_state->getValue('delivery_company');
     }
     if ($paypal_config->get('ec_review_phone')) {
         $order->delivery_phone = $form_state->getValue('delivery_phone');
     }
     if ($paypal_config->get('ec_review_comment')) {
         db_delete('uc_order_comments')->condition('order_id', $order->id())->execute();
         uc_order_comment_save($order->id(), 0, $form_state->getValue('order_comments'), 'order');
     }
     $order->save();
     $form_state->setRedirect('uc_paypal.ec_submit');
 }
 /**
  * {@inheritdoc}
  */
 public function submitForm(array &$form, FormStateInterface $form_state)
 {
     $func = _uc_line_item_data($form_state->getValue('line_item_id'), 'callback');
     if (function_exists($func) && ($form = $func('form', $form_state->getValue('order_id'))) != NULL) {
         $func('submit', $form, $form_state);
     } else {
         uc_order_line_item_add($form_state->getValue('order_id'), $form_state->getValue('line_item_id'), $form_state->getValue('title'), $form_state->getValue('amount'));
         drupal_set_message($this->t('Line item added to order.'));
     }
     $form_state->setRedirect('entity.uc_order.edit_form', ['uc_order' => $form_state->getValue('order_id')]);
 }
Example #3
0
 /**
  * {@inheritdoc}
  */
 public function prepare(OrderInterface $order, array $form, FormStateInterface $form_state)
 {
     // If a quote was explicitly selected, add it to the order.
     if (isset($form['panes']['quotes']['quotes']['quote_option']['#value']) && isset($form['panes']['quotes']['quotes']['quote_option']['#default_value']) && $form['panes']['quotes']['quotes']['quote_option']['#value'] !== $form['panes']['quotes']['quotes']['quote_option']['#default_value']) {
         $quote_option = explode('---', $form_state->getValue(['panes', 'quotes', 'quotes', 'quote_option']));
         $order->quote['method'] = $quote_option[0];
         $order->quote['accessorials'] = $quote_option[1];
         $order->data->uc_quote_selected = TRUE;
     }
     // If the current quote was never explicitly selected, discard it and
     // use the default.
     if (empty($order->data->uc_quote_selected)) {
         unset($order->quote);
     }
     // Ensure that the form builder uses the default value to decide which
     // radio button should be selected.
     $input = $form_state->getUserInput();
     unset($input['panes']['quotes']['quotes']['quote_option']);
     $form_state->setUserInput($input);
     $order->quote_form = uc_quote_build_quote_form($order, !$form_state->get('quote_requested'));
     $default_option = _uc_quote_extract_default_option($order->quote_form);
     if ($default_option) {
         $order->quote['rate'] = $order->quote_form[$default_option]['rate']['#value'];
         $quote_option = explode('---', $default_option);
         $order->quote['method'] = $quote_option[0];
         $order->quote['accessorials'] = $quote_option[1];
         $methods = uc_quote_methods();
         $method = $methods[$quote_option[0]];
         $label = $method['quote']['accessorials'][$quote_option[1]];
         $result = db_query("SELECT line_item_id FROM {uc_order_line_items} WHERE order_id = :id AND type = :type", [':id' => $order->id(), ':type' => 'shipping']);
         if ($lid = $result->fetchField()) {
             uc_order_update_line_item($lid, $label, $order->quote['rate']);
         } else {
             uc_order_line_item_add($order->id(), 'shipping', $label, $order->quote['rate']);
         }
     } else {
         unset($order->quote);
     }
 }
Example #4
0
 /**
  * Order pane submit callback: Add a line item to an order.
  */
 public function addLineItem($form, FormStateInterface $form_state)
 {
     $order =& $form_state->get('order');
     $type = $form_state->getValue('li_type_select');
     uc_order_line_item_add($order->id(), $type, _uc_line_item_data($type, 'title'), 0);
     $order->line_items = $order->getLineItems();
     $form_state->setRebuild();
 }
Example #5
0
 /**
  * Ajax callback: Manually applies a shipping quote to an order.
  */
 public function applyQuote($form, FormStateInterface $form_state)
 {
     if ($form_state->hasValue(['quotes', 'quote_option'])) {
         if ($order = $form_state->get('order')) {
             $quote_option = explode('---', $form_state->getValue(['quotes', 'quote_option']));
             $order->quote['method'] = $quote_option[0];
             $order->quote['accessorials'] = $quote_option[1];
             $method = ShippingQuoteMethod::load($quote_option[0]);
             $label = $method->label();
             $quote_option = $form_state->getValue(['quotes', 'quote_option']);
             $order->quote['rate'] = $form_state->getValue(['quotes', $quote_option, 'rate']);
             $result = db_query("SELECT line_item_id FROM {uc_order_line_items} WHERE order_id = :id AND type = :type", [':id' => $order->id(), ':type' => 'shipping']);
             if ($lid = $result->fetchField()) {
                 uc_order_update_line_item($lid, $label, $order->quote['rate']);
                 $form_state->set('uc_quote', array('lid' => $lid, 'title' => $label, 'amount' => $order->quote['rate']));
             } else {
                 uc_order_line_item_add($order->id(), 'shipping', $label, $order->quote['rate']);
             }
             // Save selected shipping
             uc_quote_uc_order_update($order);
             // Update line items.
             $order->line_items = $order->getLineItems();
             // @todo Still needed?
             $form_state->set('order', $order);
             $form_state->setRebuild();
             $form_state->set('quote_requested', FALSE);
         }
     }
 }