CLOSE #18319 REST API - Shipment: Add 'close' action / endpoint / POST method.

Allow "closing" a shipment through the REST API.
This commit is contained in:
lainwir3d 2020-08-29 13:15:55 +02:00
parent 0c528db1eb
commit d1f9762ca9

View File

@ -626,6 +626,53 @@ class Shipments extends DolibarrApi
}
*/
/**
* Close a shipment (Classify it as "Delivered")
*
* @param int $id Expedition ID
* @param int $notrigger Disabled triggers
*
* @url POST {id}/close
*
* @return int
*/
public function close($id, $notrigger = 0)
{
if (!DolibarrApiAccess::$user->rights->expedition->creer) {
throw new RestException(401);
}
$result = $this->shipment->fetch($id);
if (!$result) {
throw new RestException(404, 'Shipment not found');
}
if (!DolibarrApi::_checkAccessToResource('expedition', $this->commande->id)) {
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
}
$result = $this->shipment->setClosed();
if ($result == 0) {
throw new RestException(304, 'Error nothing done. May be object is already closed');
}
if ($result < 0) {
throw new RestException(500, 'Error when closing Order: '.$this->commande->error);
}
$result = $this->shipment->fetch($id);
if (!$result) {
throw new RestException(404, 'Shipment not found');
}
if (!DolibarrApi::_checkAccessToResource('expedition', $this->commande->id)) {
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
}
$this->shipment->fetchObjectLinked();
return $this->_cleanObjectDatas($this->shipment);
}
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Clean sensible object datas