missing supplierorder api
This commit is contained in:
parent
4981f418e8
commit
93edbf1cda
@ -368,6 +368,189 @@ class SupplierOrders extends DolibarrApi
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Approve an order
|
||||
*
|
||||
* @param int $id Order ID
|
||||
* @param int $idwarehouse Warehouse ID
|
||||
* @param int $secondlevel 1=Does not execute triggers, 0= execute triggers
|
||||
*
|
||||
* @url POST {id}/approve
|
||||
*
|
||||
* @return array
|
||||
* FIXME An error 403 is returned if the request has an empty body.
|
||||
* Error message: "Forbidden: Content type `text/plain` is not supported."
|
||||
* Workaround: send this in the body
|
||||
* {
|
||||
* "idwarehouse": 0,
|
||||
* "secondlevel": 0
|
||||
* }
|
||||
*/
|
||||
public function approve($id, $idwarehouse = 0, $secondlevel = 0)
|
||||
{
|
||||
if (empty(DolibarrApiAccess::$user->rights->fournisseur->commande->creer) && empty(DolibarrApiAccess::$user->rights->supplier_order->creer)) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
$result = $this->order->fetch($id);
|
||||
if (!$result) {
|
||||
throw new RestException(404, 'Order not found');
|
||||
}
|
||||
|
||||
if (!DolibarrApi::_checkAccessToResource('fournisseur', $this->order->id, 'commande_fournisseur', 'commande')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
$result = $this->order->approve(DolibarrApiAccess::$user, $idwarehouse, $secondlevel);
|
||||
if ($result == 0) {
|
||||
throw new RestException(304, 'Error nothing done. May be object is already approved');
|
||||
}
|
||||
if ($result < 0) {
|
||||
throw new RestException(500, 'Error when approve Order: '.$this->order->error);
|
||||
}
|
||||
|
||||
return array(
|
||||
'success' => array(
|
||||
'code' => 200,
|
||||
'message' => 'Order approved (Ref='.$this->order->ref.')'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Sends an order to the vendor
|
||||
*
|
||||
* @param int $id Order ID
|
||||
* @param integer $date Date (unix timestamp in sec)
|
||||
* @param int $method Method
|
||||
* @param string $comment Comment
|
||||
*
|
||||
* @url POST {id}/makeorder
|
||||
*
|
||||
* @return array
|
||||
* FIXME An error 403 is returned if the request has an empty body.
|
||||
* Error message: "Forbidden: Content type `text/plain` is not supported."
|
||||
* Workaround: send this in the body
|
||||
* {
|
||||
* "date": 0,
|
||||
* "method": 0,
|
||||
* "comment": ""
|
||||
* }
|
||||
*/
|
||||
public function makeOrder($id, $date, $method, $comment='')
|
||||
{
|
||||
if (empty(DolibarrApiAccess::$user->rights->fournisseur->commande->creer) && empty(DolibarrApiAccess::$user->rights->supplier_order->creer)) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
$result = $this->order->fetch($id);
|
||||
if (!$result) {
|
||||
throw new RestException(404, 'Order not found');
|
||||
}
|
||||
|
||||
if (!DolibarrApi::_checkAccessToResource('fournisseur', $this->order->id, 'commande_fournisseur', 'commande')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
$result = $this->order->commande(DolibarrApiAccess::$user, $date, $method, $comment);
|
||||
if ($result == 0) {
|
||||
throw new RestException(304, 'Error nothing done. May be object is already sent');
|
||||
}
|
||||
if ($result < 0) {
|
||||
throw new RestException(500, 'Error when sending Order: '.$this->order->error);
|
||||
}
|
||||
|
||||
return array(
|
||||
'success' => array(
|
||||
'code' => 200,
|
||||
'message' => 'Order sent (Ref='.$this->order->ref.')'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Receives the order, dispatches products.
|
||||
*
|
||||
* Example:
|
||||
* <code> {
|
||||
* "closeopenorder": 1,
|
||||
* "comment": "",
|
||||
* "lines": [{
|
||||
* "id": 14,
|
||||
* "fk_product": 112,
|
||||
* "qty": 18,
|
||||
* "warehouse": 1,
|
||||
* "price": 114,
|
||||
* "comment": "",
|
||||
* "eatby": 0,
|
||||
* "sellby": 0,
|
||||
* "batch": 0,
|
||||
* "notrigger": 0
|
||||
* }]
|
||||
* }</code>
|
||||
*
|
||||
* @param int $id Order ID
|
||||
* @param integer $closeopenorder Close order if everything is received
|
||||
* @param string $comment Comment {@required false}
|
||||
* @param array $lines Array of product dispatches
|
||||
*
|
||||
* @url POST {id}/receive
|
||||
*
|
||||
* @return array
|
||||
* FIXME An error 403 is returned if the request has an empty body.
|
||||
* Error message: "Forbidden: Content type `text/plain` is not supported."
|
||||
*
|
||||
*/
|
||||
public function receiveOrder($id, $closeopenorder = 1, $comment = null, $lines)
|
||||
{
|
||||
if (empty(DolibarrApiAccess::$user->rights->fournisseur->commande->creer) && empty(DolibarrApiAccess::$user->rights->supplier_order->creer)) {
|
||||
throw new RestException(401);
|
||||
}
|
||||
$result = $this->order->fetch($id);
|
||||
if (!$result) {
|
||||
throw new RestException(404, 'Order not found');
|
||||
}
|
||||
|
||||
if (!DolibarrApi::_checkAccessToResource('fournisseur', $this->order->id, 'commande_fournisseur', 'commande')) {
|
||||
throw new RestException(401, 'Access not allowed for login '.DolibarrApiAccess::$user->login);
|
||||
}
|
||||
|
||||
foreach ($lines as $line) {
|
||||
$lineObj =(object) $line;
|
||||
|
||||
$result=$this->order->dispatchProduct(DolibarrApiAccess::$user,
|
||||
$lineObj->fk_product,
|
||||
$lineObj->qty,
|
||||
$lineObj->warehouse,
|
||||
$lineObj->price,
|
||||
$lineObj->comment,
|
||||
$lineObj->eatby,
|
||||
$lineObj->sellby,
|
||||
$lineObj->batch,
|
||||
$lineObj->id,
|
||||
$lineObj->notrigger);
|
||||
|
||||
if ($result < 0) {
|
||||
throw new RestException(500, 'Error dispatch order line '.$line->id.': '.$this->order->error);
|
||||
}
|
||||
}
|
||||
|
||||
$result = $this->order->calcAndSetStatusDispatch(DolibarrApiAccess::$user, $closeopenorder, $comment);
|
||||
|
||||
if ($result == 0) {
|
||||
throw new RestException(304, 'Error nothing done. May be object is already dispatched');
|
||||
}
|
||||
if ($result < 0) {
|
||||
throw new RestException(500, 'Error when receivce order: '.$this->order->error);
|
||||
}
|
||||
|
||||
return array(
|
||||
'success' => array(
|
||||
'code' => 200,
|
||||
'message' => 'Order received (Ref='.$this->order->ref.')'
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
|
||||
/**
|
||||
|
||||
Loading…
Reference in New Issue
Block a user