/** * Update an order * * @param array $authentication Array of authentication information * @param array $order Order info * @return array Array result */ function updateOrder($authentication, $order) { global $db, $conf, $langs; $now = dol_now(); dol_syslog("Function: updateOrder login="******"Order id or ref or ref_ext is mandatory."; } if (!$error) { $objectfound = false; include_once DOL_DOCUMENT_ROOT . '/core/lib/company.lib.php'; $object = new Commande($db); $result = $object->fetch($order['id'], empty($order['id']) ? $order['ref'] : '', empty($order['id']) && empty($order['ref']) ? $order['ref_ext'] : ''); if (!empty($object->id)) { $objectfound = true; $db->begin(); if (isset($order['status'])) { if ($order['status'] == -1) { $result = $object->cancel($fuser); } if ($order['status'] == 1) { $result = $object->valid($fuser); } if ($order['status'] == 0) { $result = $object->set_reopen($fuser); } if ($order['status'] == 3) { $result = $object->cloture($fuser); } } if (isset($order['billed'])) { if ($order['billed']) { $result = $object->classifyBilled($fuser); } if (!$order['billed']) { $result = $object->classifyBilled($fuser); } } //Retreive all extrafield for object // fetch optionals attributes and labels $extrafields = new ExtraFields($db); $extralabels = $extrafields->fetch_name_optionals_label('commande', true); foreach ($extrafields->attribute_label as $key => $label) { $key = 'options_' . $key; if (isset($order[$key])) { $result = $object->setValueFrom($key, $order[$key], 'commande_extrafields'); } } if ($result <= 0) { $error++; } } if (!$error && $objectfound) { $db->commit(); $objectresp = array('result' => array('result_code' => 'OK', 'result_label' => ''), 'id' => $object->id); } elseif ($objectfound) { $db->rollback(); $error++; $errorcode = 'KO'; $errorlabel = $object->error; } else { $error++; $errorcode = 'NOT_FOUND'; $errorlabel = 'Order id=' . $order['id'] . ' ref=' . $order['ref'] . ' ref_ext=' . $order['ref_ext'] . ' cannot be found'; } } if ($error) { $objectresp = array('result' => array('result_code' => $errorcode, 'result_label' => $errorlabel)); } return $objectresp; }