diff --git a/htdocs/webservices/server_productorservice.php b/htdocs/webservices/server_productorservice.php
index 0bba1e80058ee17cdb6a4c7db4afb7232188a501..e6caadaed578bcd2e4d482c3780b7e3e39271d13 100755
--- a/htdocs/webservices/server_productorservice.php
+++ b/htdocs/webservices/server_productorservice.php
@@ -31,6 +31,8 @@ require_once DOL_DOCUMENT_ROOT.'/core/lib/functions.lib.php';
 require_once DOL_DOCUMENT_ROOT.'/user/class/user.class.php';
 
 require_once DOL_DOCUMENT_ROOT.'/product/class/product.class.php';
+require_once(DOL_DOCUMENT_ROOT."/categories/class/categorie.class.php");
+
 
 
 dol_syslog("Call Dolibarr webservices interfaces");
@@ -255,6 +257,20 @@ $server->register(
     'WS to get list of all products or services id and ref'
 );
 
+// Register WSDL
+$server->register(
+	'getProductsForCategory',
+	// Entry values
+	array('authentication'=>'tns:authentication','id'=>'xsd:string'),
+	// Exit values
+	array('result'=>'tns:result','products'=>'ProductsArray'),
+	$ns,
+	$ns.'#getProductsForCategory',
+	$styledoc,
+	$styleuse,
+	'WS to get list of all products or services for a category'
+);
+
 
 /**
  * Get produt or service
@@ -541,6 +557,135 @@ function getListOfProductsOrServices($authentication,$filterproduct)
 }
 
 
+//  return category infos and children
+function getProductsForCategory($authentication,$id)
+{
+	global $db,$conf,$langs;
+
+	dol_syslog("Function: getProductsForCategory login=".$authentication['login']." id=".$id);
+
+	if ($authentication['entity']) $conf->entity=$authentication['entity'];
+
+	$objectresp=array();
+	$errorcode='';$errorlabel='';
+	$error=0;
+
+	$fuser=check_authentication($authentication,$error,$errorcode,$errorlabel);
+
+
+	if (! $error && !$id)
+	{
+		$error++;
+		$errorcode='BAD_PARAMETERS'; $errorlabel="Parameter id must be provided.";
+	}
+
+
+	if (! $error)
+	{
+		$fuser->getrights();
+
+		if ($fuser->rights->produit->lire)
+		{
+			$categorie=new Categorie($db);
+			$result=$categorie->fetch($id);
+			if ($result > 0)
+			{
+				$table = "product";
+				$field = "product";
+				$sql  = "SELECT fk_".$field." FROM ".MAIN_DB_PREFIX."categorie_".$table;
+				$sql .= " WHERE fk_categorie = ".$id;
+				$sql .= " ORDER BY fk_".$field." ASC" ;
+
+
+				dol_syslog("GetProductsForCategory::get_type sql=".$sql);
+				$res  = $db->query($sql);
+				if ($res)
+				{
+						
+					while ($rec = $db->fetch_array ($res))
+					{
+						$obj = new Product ($db);
+						$obj->fetch ($rec['fk_'.$field]);
+						if($obj->status > 0 ) {
+							 
+							$dir = (!empty($conf->product->dir_output)?$conf->product->dir_output:$conf->service->dir_output);
+							$pdir = get_exdir($obj->id,2) . $obj->id ."/photos/";
+							$dir = $dir . '/'. $pdir;
+								
+							$products[] = array(
+							
+				    	'id' => $obj->id,
+			   			'ref' => $obj->ref,
+			   			'ref_ext' => $obj->ref_ext,
+			    		'label' => $obj->label,
+			    		'description' => $obj->description,
+			    		'date_creation' => dol_print_date($obj->date_creation,'dayhourrfc'),
+			    		'date_modification' => dol_print_date($obj->date_modification,'dayhourrfc'),
+			            'note' => $obj->note,
+			            'status_tosell' => $obj->status,
+			            'status_tobuy' => $obj->status_buy,
+                		'type' => $obj->type,
+				        'barcode' => $obj->barcode,
+				        'barcode_type' => $obj->barcode_type,
+                		'country_id' => $obj->country_id>0?$obj->country_id:'',
+				        'country_code' => $obj->country_code,
+				        'custom_code' => $obj->customcode,
+
+				        'price_net' => $obj->price,
+                		'price' => ($obj->price_ttc-$obj->price),
+				        'vat_rate' => $obj->tva_tx,
+				        'price_ttc' => $obj->price_ttc,
+                		'price_base_type' => $obj->price_base_type,
+
+				        'stock_real' => $obj->stock_reel,
+                		'stock_alert' => $obj->seuil_stock_alerte,
+				        'pmp' => $obj->pmp,
+                		'import_key' => $obj->import_key,
+                		'dir' => $pdir,
+                		'photos' => $obj->liste_photos($dir,$nbmax=10)
+							
+							
+							);
+						}
+
+					}
+						
+					// Retour
+					$objectresp = array(
+					'result'=>array('result_code'=>'OK', 'result_label'=>''),
+					'products'=> $products
+					);
+						
+				}
+				else
+				{
+					$errorcode='NORECORDS_FOR_ASSOCIATION'; $errorlabel='No products associated'.$sql;
+					$objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel));
+					dol_syslog("getProductsForCategory:: ".$c->error, LOG_DEBUG);
+						
+				}
+			}
+			else
+			{
+				$error++;
+				$errorcode='NOT_FOUND'; $errorlabel='Object not found for id='.$id;
+			}
+		}
+		else
+		{
+			$error++;
+			$errorcode='PERMISSION_DENIED'; $errorlabel='User does not have permission for this request';
+		}
+	}
+
+	if ($error)
+	{
+		$objectresp = array('result'=>array('result_code' => $errorcode, 'result_label' => $errorlabel));
+	}
+
+	return $objectresp;
+}
+
 
 
 // Return the results.