Merge pull request #14328 from marc-dll/NEW_api_thirdparty_price_level
NEW: thirdparty REST API: endpoint to set price level
This commit is contained in:
commit
75d8455789
@ -492,6 +492,66 @@ class Thirdparties extends DolibarrApi
|
|||||||
return $this->company->delete($id);
|
return $this->company->delete($id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set new price level for the given thirdparty
|
||||||
|
*
|
||||||
|
* @param int $id ID of thirdparty
|
||||||
|
* @param int $priceLevel Price level to apply to thirdparty
|
||||||
|
* @return object Thirdparty data without useless information
|
||||||
|
*
|
||||||
|
* @url PUT {id}/setpricelevel
|
||||||
|
*
|
||||||
|
* @throws RestException 400 Price level out of bounds
|
||||||
|
* @throws RestException 401 Access not allowed for your login
|
||||||
|
* @throws RestException 404 Thirdparty not found
|
||||||
|
* @throws RestException 500 Error fetching/setting price level
|
||||||
|
* @throws RestException 501 Request needs modules "Thirdparties" and "Products" and setting Multiprices activated
|
||||||
|
*/
|
||||||
|
public function setThirdpartyPriceLevel($id, $priceLevel)
|
||||||
|
{
|
||||||
|
global $conf;
|
||||||
|
|
||||||
|
if (empty($conf->societe->enabled)) {
|
||||||
|
throw new RestException(501, 'Module "Thirdparties" needed for this request');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($conf->product->enabled)) {
|
||||||
|
throw new RestException(501, 'Module "Products" needed for this request');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($conf->global->PRODUIT_MULTIPRICES)) {
|
||||||
|
throw new RestException(501, 'Multiprices features activation needed for this request');
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($priceLevel < 1 || $priceLevel > $conf->global->PRODUIT_MULTIPRICES_LIMIT) {
|
||||||
|
throw new RestException(400, 'Price level must be between 1 and ' . $conf->global->PRODUIT_MULTIPRICES_LIMIT);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty(DolibarrApiAccess::$user->rights->societe->creer)) {
|
||||||
|
throw new RestException(401, 'Access to thirdparty ' . $id . ' not allowed for login '. DolibarrApiAccess::$user->login);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->company->fetch($id);
|
||||||
|
if ($result < 0) {
|
||||||
|
throw new RestException(404, 'Thirdparty ' . $id . ' not found');
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty($result)) {
|
||||||
|
throw new RestException(500, 'Error fetching thirdparty ' . $id, array_merge(array($this->company->error), $this->company->errors));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (empty(DolibarrApi::_checkAccessToResource('societe', $this->company->id))) {
|
||||||
|
throw new RestException(401, 'Access to thirdparty ' . $id . ' not allowed for login ' . DolibarrApiAccess::$user->login);
|
||||||
|
}
|
||||||
|
|
||||||
|
$result = $this->company->set_price_level($priceLevel, DolibarrApiAccess::$user);
|
||||||
|
if ($result <= 0) {
|
||||||
|
throw new RestException(500, 'Error setting new price level for thirdparty ' . $id, array($this->company->db->lasterror()));
|
||||||
|
}
|
||||||
|
|
||||||
|
return $this->_cleanObjectDatas($this->company);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get customer categories for a thirdparty
|
* Get customer categories for a thirdparty
|
||||||
*
|
*
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user