public static function products(array $filters = [], int $pagination = 0) { $relations = ['categories', 'locations', 'category', 'unitedetail']; $query = Products::with($relations) ->join('products_locations', 'products_locations.product_id', '=', 'products.id') ->select( 'products.*', 'products_locations.status as status', 'products_locations.reorder_level as reorder_level', 'products_locations.description as description', 'products_locations.position as position', # #'products_locations.background as background', # #'products_locations.color as color', # 'products_locations.price_variant as price_variant', 'products_locations.is_tva_inclusive as is_tva_inclusive', 'products_locations.tva_rate as tva_rate', 'products_locations.cost_price as cost_price', # //prix de revient 'products_locations.cmup as cmup', # 'products_locations.frns_id as frns_id', # 'products_locations.frns as frns', # 'products_locations.frns_is_tva_inclusive as frns_is_tva_inclusive', # 'products_locations.frns_tva as frns_tva', # 'products_locations.frns_price as frns_price', # 'products_locations.purchase_price as purchase_price', # //prix d'achat 'products_locations.status as status', 'products_locations.reorder_level as reorder_level', )->distinct(); $conditions = []; if (!empty($filters)) { self::applyFilters($query, $filters, $conditions); } $products = $pagination === 0 ? $query->get() : $query->paginate($pagination); $products->transform(function($product) use ($conditions) { if(isset($conditions['products_locations.location_id'])){ $product['locations'] = ProductLocation::where('location_id', $conditions['products_locations.location_id'])->first(); } $product['emplacement'] = self::getProductLocation($product->id, $conditions); $product['stock'] = self::getProductStock($product->id, $conditions); $product['price'] = self::getCustomerPrice($product->id, $conditions); $product['dataprice'] = self::getCustomerPriceDetails($product->id, $conditions); $product['supplier_prices'] = self::getSupplierPrices($product->id, $conditions); return $product; }); return $products; }