2017-07-28 10:16:17 +02:00
< ? php
/* Copyright ( C ) 2015 Jean - François Ferry < jfefe @ aternatik . fr >
* Copyright ( C ) 2016 Laurent Destailleur < eldy @ users . sourceforge . net >
*
* This program is free software ; you can redistribute it and / or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation ; either version 3 of the License , or
* ( at your option ) any later version .
*
* This program is distributed in the hope that it will be useful ,
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
* GNU General Public License for more details .
*
* You should have received a copy of the GNU General Public License
2019-09-23 21:55:30 +02:00
* along with this program . If not , see < https :// www . gnu . org / licenses />.
2017-07-28 10:16:17 +02:00
*/
use Luracast\Restler\RestException ;
require_once DOL_DOCUMENT_ROOT . '/fourn/class/fournisseur.commande.class.php' ;
/**
* API class for supplier orders
*
* @ access protected
* @ class DolibarrApiAccess { @ requires user , external }
*/
class SupplierOrders extends DolibarrApi
{
2019-11-02 01:17:45 +01:00
/**
*
* @ var array $FIELDS Mandatory fields , checked when create and update object
*/
2021-02-25 23:21:30 +01:00
public static $FIELDS = array (
2019-11-02 01:17:45 +01:00
'socid'
);
/**
* @ var CommandeFournisseur $order { @ type CommandeFournisseur }
*/
public $order ;
/**
* Constructor
*/
public function __construct ()
{
global $db , $conf ;
$this -> db = $db ;
$this -> order = new CommandeFournisseur ( $this -> db );
}
/**
* Get properties of a supplier order object
*
* Return an array with supplier order information
*
* @ param int $id ID of supplier order
* @ return array | mixed data without useless information
*
* @ throws RestException
*/
public function get ( $id )
{
2020-04-10 10:59:32 +02:00
if ( ! DolibarrApiAccess :: $user -> rights -> fournisseur -> commande -> lire ) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 );
}
$result = $this -> order -> fetch ( $id );
2020-04-10 10:59:32 +02:00
if ( ! $result ) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 404 , 'Supplier order not found' );
}
2021-04-02 22:20:13 +02:00
if ( ! DolibarrApi :: _checkAccessToResource ( 'fournisseur' , $this -> order -> id , 'commande_fournisseur' , 'commande' )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 , 'Access not allowed for login ' . DolibarrApiAccess :: $user -> login );
}
$this -> order -> fetchObjectLinked ();
return $this -> _cleanObjectDatas ( $this -> order );
}
/**
* List orders
*
* Get a list of supplier orders
*
* @ param string $sortfield Sort field
* @ param string $sortorder Sort order
* @ param int $limit Limit for list
* @ param int $page Page number
* @ param string $thirdparty_ids Thirdparty ids to filter orders of ( example '1' or '1,2,3' ) { @ pattern /^ [ 0 - 9 ,] * $ / i }
2020-03-27 15:30:05 +01:00
* @ param string $product_ids Product ids to filter orders of ( example '1' or '1,2,3' ) { @ pattern /^ [ 0 - 9 ,] * $ / i }
2019-11-02 01:17:45 +01:00
* @ param string $status Filter by order status : draft | validated | approved | running | received_start | received_end | cancelled | refused
* @ param string $sqlfilters Other criteria to filter answers separated by a comma . Syntax example " (t.ref:like:'SO-%') and (t.datec:<:'20160101') "
* @ return array Array of order objects
*
* @ throws RestException
*/
2020-03-27 15:30:05 +01:00
public function index ( $sortfield = " t.rowid " , $sortorder = 'ASC' , $limit = 100 , $page = 0 , $thirdparty_ids = '' , $product_ids = '' , $status = '' , $sqlfilters = '' )
2019-11-02 01:17:45 +01:00
{
global $db , $conf ;
2021-04-08 19:05:28 +02:00
if ( ! DolibarrApiAccess :: $user -> rights -> fournisseur -> commande -> lire ) {
throw new RestException ( 401 );
}
2019-11-02 01:17:45 +01:00
$obj_ret = array ();
// case of external user, $thirdparty_ids param is ignored and replaced by user's socid
$socids = DolibarrApiAccess :: $user -> socid ? DolibarrApiAccess :: $user -> socid : $thirdparty_ids ;
// If the internal user must only see his customers, force searching by him
$search_sale = 0 ;
2021-02-25 23:21:30 +01:00
if ( ! DolibarrApiAccess :: $user -> rights -> societe -> client -> voir && ! $socids ) {
$search_sale = DolibarrApiAccess :: $user -> id ;
}
2019-11-02 01:17:45 +01:00
$sql = " SELECT t.rowid " ;
2021-02-25 23:21:30 +01:00
if (( ! DolibarrApiAccess :: $user -> rights -> societe -> client -> voir && ! $socids ) || $search_sale > 0 ) {
$sql .= " , sc.fk_soc, sc.fk_user " ; // We need these fields in order to filter by sale (including the case where the user can only see his prospects)
}
2020-04-10 10:59:32 +02:00
$sql .= " FROM " . MAIN_DB_PREFIX . " commande_fournisseur as t " ;
2019-11-02 01:17:45 +01:00
2021-02-25 23:21:30 +01:00
if (( ! DolibarrApiAccess :: $user -> rights -> societe -> client -> voir && ! $socids ) || $search_sale > 0 ) {
$sql .= " , " . MAIN_DB_PREFIX . " societe_commerciaux as sc " ; // We need this table joined to the select in order to filter by sale
}
2019-11-02 01:17:45 +01:00
2021-02-25 23:21:30 +01:00
if ( ! empty ( $product_ids )) {
$sql .= " , " . MAIN_DB_PREFIX . " commande_fournisseurdet as cd " ; // We need this table joined to the select in order to filter by product
}
2020-03-27 15:30:05 +01:00
2020-04-10 10:59:32 +02:00
$sql .= ' WHERE t.entity IN (' . getEntity ( 'supplier_order' ) . ')' ;
2021-02-25 23:21:30 +01:00
if (( ! DolibarrApiAccess :: $user -> rights -> societe -> client -> voir && ! $socids ) || $search_sale > 0 ) {
$sql .= " AND t.fk_soc = sc.fk_soc " ;
}
if ( ! empty ( $product_ids )) {
2021-03-22 11:30:18 +01:00
$sql .= " AND cd.fk_commande = t.rowid AND cd.fk_product IN ( " . $this -> db -> sanitize ( $product_ids ) . " ) " ;
2021-02-25 23:21:30 +01:00
}
if ( $socids ) {
2021-03-22 11:30:18 +01:00
$sql .= " AND t.fk_soc IN ( " . $this -> db -> sanitize ( $socids ) . " ) " ;
2021-02-25 23:21:30 +01:00
}
if ( $search_sale > 0 ) {
$sql .= " AND t.rowid = sc.fk_soc " ; // Join for the needed table to filter by sale
}
2019-11-02 01:17:45 +01:00
// Filter by status
2021-02-25 23:21:30 +01:00
if ( $status == 'draft' ) {
$sql .= " AND t.fk_statut IN (0) " ;
}
if ( $status == 'validated' ) {
$sql .= " AND t.fk_statut IN (1) " ;
}
if ( $status == 'approved' ) {
$sql .= " AND t.fk_statut IN (2) " ;
}
if ( $status == 'running' ) {
$sql .= " AND t.fk_statut IN (3) " ;
}
if ( $status == 'received_start' ) {
$sql .= " AND t.fk_statut IN (4) " ;
}
if ( $status == 'received_end' ) {
$sql .= " AND t.fk_statut IN (5) " ;
}
if ( $status == 'cancelled' ) {
$sql .= " AND t.fk_statut IN (6,7) " ;
}
if ( $status == 'refused' ) {
$sql .= " AND t.fk_statut IN (9) " ;
}
2019-11-02 01:17:45 +01:00
// Insert sale filter
2021-02-25 23:21:30 +01:00
if ( $search_sale > 0 ) {
2021-06-09 15:36:47 +02:00
$sql .= " AND sc.fk_user = " . (( int ) $search_sale );
2019-11-02 01:17:45 +01:00
}
// Add sql filters
2021-02-25 23:21:30 +01:00
if ( $sqlfilters ) {
2021-12-20 20:49:32 +01:00
$errormessage = '' ;
if ( ! DolibarrApi :: _checkFilters ( $sqlfilters , $errormessage )) {
throw new RestException ( 503 , 'Error when validating parameter sqlfilters -> ' . $errormessage );
2019-11-02 01:17:45 +01:00
}
2021-05-03 14:58:29 +02:00
$regexstring = '\(([^:\'\(\)]+:[^:\'\(\)]+:[^\(\)]+)\)' ;
2020-04-10 10:59:32 +02:00
$sql .= " AND ( " . preg_replace_callback ( '/' . $regexstring . '/' , 'DolibarrApi::_forge_criteria_callback' , $sqlfilters ) . " ) " ;
2019-11-02 01:17:45 +01:00
}
2020-09-19 23:30:29 +02:00
$sql .= $this -> db -> order ( $sortfield , $sortorder );
2020-04-10 10:59:32 +02:00
if ( $limit ) {
2021-02-25 23:21:30 +01:00
if ( $page < 0 ) {
2019-11-02 01:17:45 +01:00
$page = 0 ;
}
$offset = $limit * $page ;
2020-09-19 23:30:29 +02:00
$sql .= $this -> db -> plimit ( $limit + 1 , $offset );
2019-11-02 01:17:45 +01:00
}
2020-09-19 23:30:29 +02:00
$result = $this -> db -> query ( $sql );
2021-02-25 23:21:30 +01:00
if ( $result ) {
2019-11-02 01:17:45 +01:00
$i = 0 ;
2020-09-19 23:30:29 +02:00
$num = $this -> db -> num_rows ( $result );
2019-11-02 01:17:45 +01:00
$min = min ( $num , ( $limit <= 0 ? $num : $limit ));
2021-02-25 23:21:30 +01:00
while ( $i < $min ) {
2020-09-19 23:30:29 +02:00
$obj = $this -> db -> fetch_object ( $result );
$order_static = new CommandeFournisseur ( $this -> db );
2020-04-10 10:59:32 +02:00
if ( $order_static -> fetch ( $obj -> rowid )) {
2019-11-02 01:17:45 +01:00
$obj_ret [] = $this -> _cleanObjectDatas ( $order_static );
}
$i ++ ;
}
2020-05-21 15:05:19 +02:00
} else {
2020-09-19 23:30:29 +02:00
throw new RestException ( 503 , 'Error when retrieve supplier order list : ' . $this -> db -> lasterror ());
2019-11-02 01:17:45 +01:00
}
2020-04-10 10:59:32 +02:00
if ( ! count ( $obj_ret )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 404 , 'No supplier order found' );
}
return $obj_ret ;
}
/**
* Create supplier order object
*
2020-09-07 10:18:17 +02:00
* Example : { " ref " : " auto " , " ref_supplier " : " 1234 " , " socid " : " 1 " , " multicurrency_code " : " SEK " , " multicurrency_tx " : 1 , " tva_tx " : 25 , " note " : " Imported via the REST API " }
2020-08-06 19:57:31 +02:00
*
2019-11-02 01:17:45 +01:00
* @ param array $request_data Request datas
* @ return int ID of supplier order
*/
public function post ( $request_data = null )
{
2021-09-09 14:44:17 +02:00
if ( empty ( DolibarrApiAccess :: $user -> rights -> fournisseur -> commande -> creer ) && empty ( DolibarrApiAccess :: $user -> rights -> supplier_order -> creer )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 , " Insuffisant rights " );
}
// Check mandatory fields
$result = $this -> _validate ( $request_data );
2020-04-10 10:59:32 +02:00
foreach ( $request_data as $field => $value ) {
2019-11-02 01:17:45 +01:00
$this -> order -> $field = $value ;
}
2020-04-10 10:59:32 +02:00
if ( ! array_keys ( $request_data , 'date' )) {
2019-11-02 01:17:45 +01:00
$this -> order -> date = dol_now ();
}
/* We keep lines as an array
2021-02-25 23:21:30 +01:00
if ( isset ( $request_data [ " lines " ])) {
$lines = array ();
foreach ( $request_data [ " lines " ] as $line ) {
array_push ( $lines , ( object ) $line );
}
$this -> order -> lines = $lines ;
} */
2017-07-28 10:16:17 +02:00
2019-11-02 01:17:45 +01:00
if ( $this -> order -> create ( DolibarrApiAccess :: $user ) < 0 ) {
throw new RestException ( 500 , " Error creating order " , array_merge ( array ( $this -> order -> error ), $this -> order -> errors ));
}
return $this -> order -> id ;
}
/**
* Update supplier order
*
* @ param int $id Id of supplier order to update
* @ param array $request_data Datas
* @ return int
*/
public function put ( $id , $request_data = null )
{
2021-09-09 14:44:17 +02:00
if ( empty ( DolibarrApiAccess :: $user -> rights -> fournisseur -> commande -> creer ) && empty ( DolibarrApiAccess :: $user -> rights -> supplier_order -> creer )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 );
}
$result = $this -> order -> fetch ( $id );
2020-04-10 10:59:32 +02:00
if ( ! $result ) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 404 , 'Supplier order not found' );
}
2021-04-02 22:20:13 +02:00
if ( ! DolibarrApi :: _checkAccessToResource ( 'fournisseur' , $this -> order -> id , 'commande_fournisseur' , 'commande' )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 , 'Access not allowed for login ' . DolibarrApiAccess :: $user -> login );
}
2020-04-10 10:59:32 +02:00
foreach ( $request_data as $field => $value ) {
2021-02-25 23:21:30 +01:00
if ( $field == 'id' ) {
continue ;
}
2019-11-02 01:17:45 +01:00
$this -> order -> $field = $value ;
}
2021-02-27 10:10:28 +01:00
if ( $this -> order -> update ( DolibarrApiAccess :: $user )) {
2019-11-02 01:17:45 +01:00
return $this -> get ( $id );
2021-02-25 23:21:30 +01:00
}
2019-11-02 01:17:45 +01:00
return false ;
}
/**
* Delete supplier order
*
2020-02-21 17:33:45 +01:00
* @ param int $id Supplier order ID
* @ return array Array of result
2019-11-02 01:17:45 +01:00
*/
public function delete ( $id )
{
2020-04-10 10:59:32 +02:00
if ( ! DolibarrApiAccess :: $user -> rights -> fournisseur -> commande -> supprimer ) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 );
}
$result = $this -> order -> fetch ( $id );
2020-04-10 10:59:32 +02:00
if ( ! $result ) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 404 , 'Supplier order not found' );
}
2021-04-02 22:20:13 +02:00
if ( ! DolibarrApi :: _checkAccessToResource ( 'fournisseur' , $this -> order -> id , 'commande_fournisseur' , 'commande' )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 , 'Access not allowed for login ' . DolibarrApiAccess :: $user -> login );
}
2020-04-10 10:59:32 +02:00
if ( $this -> order -> delete ( DolibarrApiAccess :: $user ) < 0 ) {
2022-03-18 16:14:20 +01:00
throw new RestException ( 500 , 'Error when deleting order' );
2019-11-02 01:17:45 +01:00
}
return array (
'success' => array (
'code' => 200 ,
'message' => 'Supplier order deleted'
)
);
}
/**
* Validate an order
*
* @ param int $id Order ID
* @ param int $idwarehouse Warehouse ID
* @ param int $notrigger 1 = Does not execute triggers , 0 = execute triggers
*
* @ url POST { id } / validate
*
* @ 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 ,
* " notrigger " : 0
* }
*/
public function validate ( $id , $idwarehouse = 0 , $notrigger = 0 )
{
2021-09-09 14:44:17 +02:00
if ( empty ( DolibarrApiAccess :: $user -> rights -> fournisseur -> commande -> creer ) && empty ( DolibarrApiAccess :: $user -> rights -> supplier_order -> creer )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 );
}
$result = $this -> order -> fetch ( $id );
2020-04-10 10:59:32 +02:00
if ( ! $result ) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 404 , 'Order not found' );
}
2021-04-02 22:20:13 +02:00
if ( ! DolibarrApi :: _checkAccessToResource ( 'fournisseur' , $this -> order -> id , 'commande_fournisseur' , 'commande' )) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 401 , 'Access not allowed for login ' . DolibarrApiAccess :: $user -> login );
}
$result = $this -> order -> valid ( DolibarrApiAccess :: $user , $idwarehouse , $notrigger );
if ( $result == 0 ) {
throw new RestException ( 304 , 'Error nothing done. May be object is already validated' );
}
if ( $result < 0 ) {
throw new RestException ( 500 , 'Error when validating Order: ' . $this -> order -> error );
}
return array (
'success' => array (
'code' => 200 ,
'message' => 'Order validated (Ref=' . $this -> order -> ref . ')'
)
);
}
2022-01-20 22:25:35 +01:00
2022-01-20 22:18:36 +01:00
/**
* 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 . ')'
)
);
}
2022-01-20 22:25:35 +01:00
2022-01-20 22:18:36 +01:00
/**
* 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 " : " "
* }
*/
2022-01-20 22:25:35 +01:00
public function makeOrder ( $id , $date , $method , $comment = '' )
2022-01-20 22:18:36 +01:00
{
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 . ')'
)
);
}
2022-01-20 22:25:35 +01:00
/**
2022-01-20 22:18:36 +01:00
* Receives the order , dispatches products .
2022-01-20 22:25:35 +01:00
*
* Example :
2022-01-20 22:18:36 +01:00
* < code > {
* " closeopenorder " : 1 ,
* " comment " : " " ,
2022-01-20 22:25:35 +01:00
* " lines " : [{
* " id " : 14 ,
* " fk_product " : 112 ,
* " qty " : 18 ,
* " warehouse " : 1 ,
* " price " : 114 ,
* " comment " : " " ,
* " eatby " : 0 ,
* " sellby " : 0 ,
* " batch " : 0 ,
* " notrigger " : 0
* }]
2022-01-20 22:18:36 +01:00
* } </ code >
2022-01-20 22:25:35 +01:00
*
2022-01-20 22:18:36 +01:00
* @ param int $id Order ID
2022-01-20 22:28:02 +01:00
* @ param integer $closeopenorder Close order if everything is received { @ required false }
2022-01-20 22:18:36 +01:00
* @ 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. "
2022-01-20 22:25:35 +01:00
*
2022-01-20 22:18:36 +01:00
*/
2022-01-20 22:28:02 +01:00
public function receiveOrder ( $id , $closeopenorder , $comment , $lines )
2022-01-20 22:18:36 +01:00
{
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 );
}
2022-01-20 22:25:35 +01:00
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 );
}
}
2022-01-20 22:18:36 +01:00
$result = $this -> order -> calcAndSetStatusDispatch ( DolibarrApiAccess :: $user , $closeopenorder , $comment );
2022-01-20 22:25:35 +01:00
if ( $result == 0 ) {
2022-01-20 22:18:36 +01:00
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 . ')'
)
);
}
2019-11-02 01:17:45 +01:00
// phpcs:disable PEAR.NamingConventions.ValidFunctionName.PublicUnderscore
/**
* Clean sensible object datas
*
2020-10-31 18:51:30 +01:00
* @ param Object $object Object to clean
* @ return Object Object with cleaned properties
2019-11-02 01:17:45 +01:00
*/
protected function _cleanObjectDatas ( $object )
{
// phpcs:enable
$object = parent :: _cleanObjectDatas ( $object );
unset ( $object -> rowid );
unset ( $object -> barcode_type );
unset ( $object -> barcode_type_code );
unset ( $object -> barcode_type_label );
unset ( $object -> barcode_type_coder );
return $object ;
}
/**
* Validate fields before create or update object
*
* @ param array $data Datas to validate
* @ return array
*
* @ throws RestException
*/
private function _validate ( $data )
{
$order = array ();
foreach ( SupplierOrders :: $FIELDS as $field ) {
2021-02-25 23:21:30 +01:00
if ( ! isset ( $data [ $field ])) {
2019-11-02 01:17:45 +01:00
throw new RestException ( 400 , " $field field missing " );
2021-02-25 23:21:30 +01:00
}
2019-11-02 01:17:45 +01:00
$order [ $field ] = $data [ $field ];
}
return $order ;
}
2017-07-28 10:16:17 +02:00
}