From b48d369258fea70f62f7956a0887bb14be2595cc Mon Sep 17 00:00:00 2001 From: Ysandor Date: Sat, 10 Feb 2018 20:38:53 +0100 Subject: [PATCH] add the possibility to remove a category from a thirdparty I don't know if there is a good reason for not proposing to unlink a thirdparty from a category but if it is not the case here is a piece of code allowing to remove a category that works for me and seems general enough to be useful to other people. The new function is inspired from the addCategory function. PS : This is the first time i'm trying to contribute on github so don't hesitate to tell me if I did something wrong. --- .../societe/class/api_thirdparties.class.php | 38 +++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/htdocs/societe/class/api_thirdparties.class.php b/htdocs/societe/class/api_thirdparties.class.php index 7326d99e2b7..6910f5d6dc3 100644 --- a/htdocs/societe/class/api_thirdparties.class.php +++ b/htdocs/societe/class/api_thirdparties.class.php @@ -552,7 +552,45 @@ class Thirdparties extends DolibarrApi return $this->company; } + /** + * Delete category to a thirdparty + * + * @param int $id Id of thirdparty + * @param array $request_data Request datas + * + * @return mixed + * + * @url POST {id}/deleteCategory + */ + function deleteCategory($id, $request_data = NULL) { + if (!isset($request_data["category_id"])) + throw new RestException(400, "category_id field missing"); + $category_id = $request_data["category_id"]; + if(! DolibarrApiAccess::$user->rights->societe->creer) { + throw new RestException(401); + } + + $result = $this->company->fetch($id); + if( ! $result ) { + throw new RestException(404, 'Thirdparty not found'); + } + $category = new Categorie($this->db); + $result = $category->fetch($category_id); + if( ! $result ) { + throw new RestException(404, 'category not found'); + } + + if( ! DolibarrApi::_checkAccessToResource('societe',$this->company->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + if( ! DolibarrApi::_checkAccessToResource('category',$category->id)) { + throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login); + } + + $category->del_type($this->company,'customer'); + return $this->company; + } /** * Get outstanding proposals of thirdparty