diff --git a/src/Controller/PosOrderItemAutoComplete.php b/src/Controller/PosOrderItemAutoComplete.php index bee8b4c..6186e4a 100644 --- a/src/Controller/PosOrderItemAutoComplete.php +++ b/src/Controller/PosOrderItemAutoComplete.php @@ -2,6 +2,7 @@ namespace Drupal\commerce_pos\Controller; +use Drupal\commerce_product\Entity\ProductVariation; use Drupal\Core\Controller\ControllerBase; use Symfony\Component\HttpFoundation\JsonResponse; use Symfony\Component\HttpFoundation\Request; @@ -24,18 +25,14 @@ class PosOrderItemAutoComplete extends ControllerBase { * Return Hello string. */ public function orderItemAutoCompleteHandler(Request $request, $value, $count) { - $results = []; - if ($input = $request->query->get('q')) { - $string = $request->query->get('q'); $suggestions = $this->searchQueryString($string); - foreach ($suggestions as $key) { $results[] = [ 'value' => $key->title . " (" . $key->product_id . ")", - 'label' => $this->showProductasHTML($key->product_id), + 'label' => $this->showProductasHTML($key->variation_id), ]; } } @@ -47,11 +44,14 @@ class PosOrderItemAutoComplete extends ControllerBase { * Helper function for searching the product. */ public function searchQueryString($string) { - $connection = \Drupal::service('database'); - $query = $connection->select('commerce_product_field_data', 'cpd') - ->fields('cpd', ['product_id', 'title']) - ->condition('cpd.title', "%" . $string . "%", 'LIKE') - ->range(0, 10); + /** @var \Drupal\Core\Database\Connection $connection */ + $connection = \Drupal::database(); + $query = $connection->select('commerce_product_field_data', 'cpd'); + $query->join('commerce_product_variation_field_data', 'cvd', 'cvd.product_id=cpd.product_id'); + $query->fields('cvd', ['variation_id']); + $query->fields('cpd', ['product_id', 'title']); + $query->condition('cpd.title', "%" . $string . "%", 'LIKE'); + $query->range(0, 10); $result = $query->execute()->fetchAll(); return $result; } @@ -59,10 +59,8 @@ class PosOrderItemAutoComplete extends ControllerBase { /** * Helper function to do return the HTML output. */ - public function showProductasHTML($product_id) { - - $product = Product::load($product_id); - $variation = $product->getDefaultVariation(); + public function showProductasHTML($variation_id) { + $variation = ProductVariation::load($variation_id); $price = $variation->getPrice()->__toString(); // @todo Need to add a default image, HTML, CSS @@ -71,7 +69,7 @@ class PosOrderItemAutoComplete extends ControllerBase { Drupal Commerce Ski Cap (Black, One Size)
-
' . $product->getTitle() . '
+
' . $variation->getTitle() . '
' . $price . '
';