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 {