From 2e108e1e2f64d24f41e5611c54bc4f12e129e3da Mon Sep 17 00:00:00 2001 From: kastoras Date: Wed, 28 Apr 2021 00:32:37 +0300 Subject: [PATCH] Close/CLOSE #13739 Product API route added to get product stock Using GET /products/{id}/stock user can get product stock from all warehouses. Using warehouse id will get stock of warehouse given. --- htdocs/product/class/api_products.class.php | 44 +++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/htdocs/product/class/api_products.class.php b/htdocs/product/class/api_products.class.php index 9b06b30765d..7805d7c7f52 100644 --- a/htdocs/product/class/api_products.class.php +++ b/htdocs/product/class/api_products.class.php @@ -1793,6 +1793,50 @@ class Products extends DolibarrApi return $result; } + /** + * Get stock data for the product id given. + * Optionaly with $selected_warehouse_id parameter user can get stock of specific warehouse + * + * @param int $id ID of Product + * @param int $selected_warehouse_id ID of warehouse + * @return int + * + * @throws RestException 500 + * @throws RestException 401 + * @throws RestException 404 + * + * @url GET {id}/stock + */ + public function getStock($id,$selected_warehouse_id=null){ + + if (!DolibarrApiAccess::$user->rights->produit->lire) { + throw new RestException(401); + } + + if (!DolibarrApi::_checkAccessToResource('product', $id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $product_model = new Product($this->db); + $product_model->fetch($id); + $product_model->load_stock(); + + $stockData = $this->_cleanObjectDatas($product_model)->stock_warehouse; + if($selected_warehouse_id){ + foreach($stockData as $warehouse_id => $warehouse){ + if($warehouse_id != $selected_warehouse_id){ + unset($stockData[$warehouse_id]); + } + } + } + + if(empty($stockData)){ + throw new RestException(404, 'No stock found'); + } + + return ['stock_warehouses'=>$stockData]; + } + // phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore /** * Clean sensible object datas