diff --git a/app/Http/Controllers/Items/Items.php b/app/Http/Controllers/Items/Items.php index be9105e93..4e81b3b9f 100644 --- a/app/Http/Controllers/Items/Items.php +++ b/app/Http/Controllers/Items/Items.php @@ -205,12 +205,16 @@ class Items extends Controller $currency = Currency::where('code', $currency_code)->first(); - $filter_data = [ + $autocomplete = Item::autocomplete([ 'name' => $query, 'sku' => $query, - ]; + ]); - $items = Item::getItems($filter_data); + if ($type == 'invoice') { + $autocomplete->quantity(); + } + + $items = $autocomplete->get(); if ($items) { foreach ($items as $item) { diff --git a/app/Models/Item/Item.php b/app/Models/Item/Item.php index d1bda03f3..f9729625c 100644 --- a/app/Models/Item/Item.php +++ b/app/Models/Item/Item.php @@ -14,6 +14,13 @@ class Item extends Model protected $table = 'items'; + /** + * The accessors to append to the model's array form. + * + * @var array + */ + protected $appends = ['item_id']; + /** * Attributes that should be mass-assignable. * @@ -81,23 +88,41 @@ class Item extends Model $this->attributes['purchase_price'] = (double) $value; } - public static function getItems($filter_data = array()) + /** + * Get the item id. + * + * @return string + */ + public function getItemIdAttribute() { - if (empty($filter_data)) { - return Item::all(); - } + return $this->id; + } - $query = Item::select('id as item_id', 'name', 'sku', 'sale_price', 'purchase_price', 'tax_id'); - - $query->where('quantity', '>', '0'); - - $query->where(function ($query) use ($filter_data) { - foreach ($filter_data as $key => $value) { + /** + * Scope autocomplete. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @param array $filter + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeAutocomplete($query, $filter) + { + return $query->where(function ($query) use ($filter) { + foreach ($filter as $key => $value) { $query->orWhere($key, 'LIKE', "%" . $value . "%"); } }); + } - return $query->get(); + /** + * Scope quantity. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopeQuantity($query) + { + return $query->where('quantity', '>', '0'); } /**