public function generateNewItem($params) { global $DB; // Retrieve plugin configuration $config = new PluginOrderConfig(); $reference = new PluginOrderReference(); foreach ($params["id"] as $tmp => $values) { //If itemtype cannot be generated, go to the new occurence if (in_array($values['itemtype'], self::getTypesThanCannotBeGenerared())) { continue; } $entity = $values["entities_id"]; //------------- Template management -----------------------// //Look for a template in the entity $templateID = $reference->checkIfTemplateExistsInEntity($values["id"], $values["itemtype"], $entity); $item = new $values["itemtype"](); if ($values['itemtype']) { $order = new PluginOrderOrder(); } $order->getFromDB($values["plugin_order_orders_id"]); $reference->getFromDB($params["plugin_order_references_id"]); if ($templateID) { $item->getFromDB($templateID); unset($item->fields["is_template"]); unset($item->fields["date_mod"]); $fields = array(); foreach ($item->fields as $key => $value) { if ($value != '' && (!isset($fields[$key]) || $fields[$key] == '' || $fields[$key] == 0)) { $input[$key] = $value; } } if ($config->getGeneratedAssetState()) { $input["states_id"] = $config->getGeneratedAssetState(); } $input["entities_id"] = $entity; $input["serial"] = $values["serial"]; if ($item->fields['name']) { $input["name"] = autoName($item->fields["name"], "name", $templateID, $values["itemtype"], $entity); } else { $input["name"] = $values["name"]; } if ($item->getField('otherserial') != NOT_AVAILABLE) { if ($item->fields['otherserial']) { $input["otherserial"] = autoName($item->fields["otherserial"], "otherserial", $templateID, $values["itemtype"], $entity); } else { $input["otherserial"] = $values["otherserial"]; } } if ($config->canAddLocation()) { $input['locations_id'] = $order->fields['locations_id']; } } elseif ($values["itemtype"] == 'Contract') { $input["name"] = $values["name"]; $input["entities_id"] = $entity; $input['contracttypes_id'] = $reference->fields['types_id']; } else { if ($config->getGeneratedAssetState()) { $input["states_id"] = $config->getGeneratedAssetState(); } else { $input["states_id"] = 0; } $input["entities_id"] = $entity; $input["serial"] = $values["serial"]; $input["otherserial"] = $values["otherserial"]; $input["name"] = $values["name"]; // Get bill data if ($config->canAddLocation()) { $input['locations_id'] = $order->fields['locations_id']; } $input["manufacturers_id"] = $reference->fields["manufacturers_id"]; $typefield = getForeignKeyFieldForTable(getTableForItemType($values["itemtype"] . "Type")); $input[$typefield] = $reference->fields["types_id"]; $modelfield = getForeignKeyFieldForTable(getTableForItemType($values["itemtype"] . "Model")); $input[$modelfield] = $reference->fields["models_id"]; } $input = Toolbox::addslashes_deep($input); $newID = $item->add($input); // Attach new ticket if option is on if (isset($params['generate_ticket'])) { $tkt = new TicketTemplate(); if ($tkt->getFromDB($params['generate_ticket']['tickettemplates_id'])) { $input = array(); $input = Ticket::getDefaultValues($entity); $ttp = new TicketTemplatePredefinedField(); $predefined = $ttp->getPredefinedFields($params['generate_ticket']['tickettemplates_id'], true); if (count($predefined)) { foreach ($predefined as $predeffield => $predefvalue) { $input[$predeffield] = $predefvalue; } } $input['entities_id'] = $entity; $input['_users_id_requester'] = empty($order->fields['users_id']) ? Session::getLoginUserID() : $order->fields['users_id']; $input['items_id'] = $newID; $input['itemtype'] = $values["itemtype"]; $ticket = new Ticket(); $ticketID = $ticket->add($input); } } //-------------- End template management ---------------------------------// $result = $this->createLinkWithItem($values["id"], $newID, $values["itemtype"], $values["plugin_order_orders_id"], $entity, $templateID, false, false); //Add item's history $new_value = __("Item generated by using order", "order") . ' : ' . $order->fields["name"]; $order->addHistory($values["itemtype"], '', $new_value, $newID); //Add order's history $new_value = __("Item generated by using order", "order") . ' : '; $new_value .= $item->getTypeName() . " -> " . $item->getField("name"); $order->addHistory('PluginOrderOrder', '', $new_value, $values["plugin_order_orders_id"]); //Copy order documents if needed self::copyDocuments($values['itemtype'], $newID, $values["plugin_order_orders_id"], $entity); Session::addMessageAfterRedirect(__("Item successfully selected", "order"), true); } }
$pluginOrderOrder->updateOrderStatus($_POST["id"], $config->getDraftState(), $_POST["comment"]); Session::addMessageAfterRedirect(__("Order currently edited", "order")); } Html::redirect($_SERVER['HTTP_REFERER']); } else { if (isset($_POST["add_item"])) { //Details management if ($_POST["discount"] < 0 || $_POST["discount"] > 100) { Session::addMessageAfterRedirect(__("The discount pourcentage must be between 0 and 100", "order"), false, ERROR); } else { $pluginOrderOrder->getFromDB($_POST["plugin_order_orders_id"]); $new_value = __("Add reference", "order") . " "; $new_value .= Dropdown::getDropdownName("glpi_plugin_order_references", $_POST["plugin_order_references_id"]); $new_value .= " (" . __("Quantity", "order") . " : " . $_POST["quantity"]; $new_value .= " " . __("Discount (%)", "order") . " : " . $_POST["discount"] . ")"; $pluginOrderOrder->addHistory("PluginOrderOrder", "", $new_value, $_POST["plugin_order_orders_id"]); $pluginOrderOrder_Item->addDetails($_POST["plugin_order_references_id"], $_POST["itemtype"], $_POST["plugin_order_orders_id"], $_POST["quantity"], $_POST["price"], $_POST["discount"], $_POST["plugin_order_ordertaxes_id"]); } Html::redirect($_SERVER['HTTP_REFERER']); } else { if (isset($_POST["delete_item"])) { if (isset($_POST["plugin_order_orders_id"]) && $_POST["plugin_order_orders_id"] > 0 && isset($_POST["item"])) { foreach ($_POST["item"] as $ID => $val) { if ($val == 1) { $pluginOrderOrder_Item->getFromDB($ID); if ($pluginOrderOrder_Item->fields["itemtype"] == 'SoftwareLicense') { $result = $pluginOrderOrder_Item->queryRef($_POST["plugin_order_orders_id"], $pluginOrderOrder_Item->fields["plugin_order_references_id"], $pluginOrderOrder_Item->fields["price_taxfree"], $pluginOrderOrder_Item->fields["discount"]); $nb = $DB->numrows($result); if ($nb) { for ($i = 0; $i < $nb; $i++) { $ID = $DB->result($result, $i, 'id');
$_GET["plugin_order_orders_id"] = ""; } $supplier = new PluginOrderOrder_Supplier(); $order = new PluginOrderOrder(); if (isset($_POST["add"])) { if (PluginOrderOrder_Supplier::canCreate()) { if (isset($_POST["plugin_order_orders_id"]) && $_POST["plugin_order_orders_id"] > 0) { if ($supplier->add($_POST)) { $new_value = __("Add") . " "; if ($_POST["num_quote"]) { $new_value .= __("Quote number", "order") . " " . $_POST["num_quote"]; } if ($_POST["num_order"]) { $new_value .= " - " . __("Order number") . " : " . $_POST["num_order"]; } $order->addHistory('PluginOrderOrder', "", $new_value, $_POST["plugin_order_orders_id"]); } } } Html::back(); } elseif (isset($_POST["delete"])) { if (PluginOrderOrder_Supplier::canCreate()) { foreach ($_POST["check"] as $ID => $value) { if ($supplier->delete(array("id" => $ID), 0, 0)) { $new_value = __("Delete", "order") . " " . __("Supplier Detail", "order") . " : " . $ID; $order->addHistory('PluginOrderOrder', "", $new_value, $_POST["plugin_order_orders_id"]); } } } Html::back(); } elseif (isset($_POST["update"])) {