public function showOrderReception($orders_id) { global $DB, $CFG_GLPI; $order_order = new PluginOrderOrder(); $order_item = new PluginOrderOrder_Item(); $reference = new PluginOrderReference(); $order_order->getFromDB($orders_id); Session::initNavigateListItems($this->getType(), __("Order", "order") . " = " . $order_order->fields["name"]); $canedit = self::canCreate() && !$order_order->canUpdateOrder() && !$order_order->isCanceled(); $result_ref = $order_item->queryDetail($orders_id); $numref = $DB->numrows($result_ref); while ($data_ref = $DB->fetch_array($result_ref)) { echo "<div class='center'><table class='tab_cadre_fixe'>"; if (!$numref) { echo "<tr><th>" . __("No item to take delivery of", "order") . "</th></tr></table></div>"; } else { $references_id = $data_ref["id"]; $typeRef = $data_ref["itemtype"]; $price_taxfree = $data_ref["price_taxfree"]; $discount = $data_ref["discount"]; $item = new $typeRef(); $rand = mt_rand(); echo "<tr><th><ul><li>"; echo "<a href=\"javascript:showHideDiv('reception{$rand}','reception_img{$rand}', '" . $CFG_GLPI['root_doc'] . "/pics/plus.png','" . $CFG_GLPI['root_doc'] . "/pics/moins.png');\">"; echo "<img alt='' name='reception_img{$rand}' src=\"" . $CFG_GLPI['root_doc'] . "/pics/plus.png\">"; echo "</a>"; echo "</li></ul></th>"; echo "<th>" . __("Type") . "</th>"; echo "<th>" . __("Manufacturer") . "</th>"; echo "<th>" . __("Product reference", "order") . "</th>"; echo "<th>" . __("Delivered items", "order") . "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1 center'>"; echo "<td></td>"; echo "<td align='center'>" . $item->getTypeName() . "</td>"; echo "<td align='center'>" . Dropdown::getDropdownName("glpi_manufacturers", $data_ref["manufacturers_id"]) . "</td>"; echo "<td>" . $reference->getReceptionReferenceLink($data_ref) . "</td>"; $total = $order_item->getTotalQuantityByRefAndDiscount($orders_id, $references_id, $data_ref["price_taxfree"], $data_ref["discount"]); echo "<td>" . $order_item->getDeliveredQuantity($orders_id, $references_id, $data_ref["price_taxfree"], $data_ref["discount"]) . " / " . $total . "</td>"; echo "</tr></table>"; echo "<div class='center' id='reception{$rand}' style='display:none'>"; echo "<form method='post' name='order_reception_form{$rand}' id='order_reception_form{$rand}'" . " action=\"" . Toolbox::getItemTypeFormURL("PluginOrderReception") . "\">"; echo "<table class='tab_cadre_fixe'>"; echo "<tr>"; echo "<th width='15'></th>"; if ($typeRef != 'SoftwareLicense') { echo "<th>" . __("ID") . "</th>"; } echo "<th>" . __("Reference") . "</th>"; echo "<th>" . __("Status") . "</th>"; echo "<th>" . __("Delivery date") . "</th>"; echo "<th>" . __("Delivery form") . "</th>"; echo "<th>" . __("Delivery status", "order") . "</th>"; echo "</tr>"; $query = "SELECT `glpi_plugin_order_orders_items`.`id` AS IDD,\n `glpi_plugin_order_references`.`id` AS id,\n `glpi_plugin_order_references`.`templates_id`,\n `glpi_plugin_order_orders_items`.`states_id`,\n `glpi_plugin_order_orders_items`.`comment`,\n `glpi_plugin_order_orders_items`.`plugin_order_deliverystates_id`,\n `glpi_plugin_order_orders_items`.`delivery_date`,\n `glpi_plugin_order_orders_items`.`delivery_number`,\n `glpi_plugin_order_references`.`name`,\n `glpi_plugin_order_references`.`itemtype`,\n `glpi_plugin_order_orders_items`.`items_id`\n FROM `glpi_plugin_order_orders_items`, `glpi_plugin_order_references`\n WHERE `plugin_order_orders_id` = '{$orders_id}'\n AND `glpi_plugin_order_orders_items`.`plugin_order_references_id` = '" . $references_id . "'\n AND `glpi_plugin_order_orders_items`.`plugin_order_references_id` = `glpi_plugin_order_references`.`id`\n AND `glpi_plugin_order_orders_items`.`discount` LIKE '" . $discount . "'\n AND `glpi_plugin_order_orders_items`.`price_taxfree` LIKE '" . $price_taxfree . "' "; if ($typeRef == 'SoftwareLicense') { $query .= " GROUP BY `glpi_plugin_order_references`.`name` "; } $query .= " ORDER BY `glpi_plugin_order_references`.`name` "; $result = $DB->query($query); $num = $DB->numrows($result); while ($data = $DB->fetch_array($result)) { $random = mt_rand(); $detailID = $data["IDD"]; Session::addToNavigateListItems($this->getType(), $detailID); echo "<tr class='tab_bg_2'>"; $status = 1; if ($typeRef != 'SoftwareLicense') { $status = $this->checkThisItemStatus($detailID, PluginOrderOrder::ORDER_DEVICE_NOT_DELIVRED); } if ($order_order->canDeliver() && $status) { echo "<td width='15' align='left'>"; $sel = ""; if (isset($_GET["select"]) && $_GET["select"] == "all") { $sel = "checked"; } echo "<input type='checkbox' name='item[" . $detailID . "]' value='1' {$sel}>"; echo "</td>"; } else { echo "<td width='15' align='left'></td>"; } if ($typeRef != 'SoftwareLicense') { echo "<td align='center'>" . $data["IDD"] . " "; Html::showTooltip($data['comment']); echo "</td>"; } echo "<td align='center'>" . $reference->getReceptionReferenceLink($data) . "</td>"; echo "<td align='center'>"; $link = Toolbox::getItemTypeFormURL($this->getType()); if ($canedit && $data["states_id"] == PluginOrderOrder::ORDER_DEVICE_DELIVRED) { echo "<a href=\"" . $link . "?id=" . $data["IDD"] . "\">"; } echo $this->getReceptionStatus($detailID); if ($canedit && $data["states_id"] == PluginOrderOrder::ORDER_DEVICE_DELIVRED) { echo "</a>"; } echo "</td>"; echo "<td align='center'>" . Html::convDate($data["delivery_date"]) . "</td>"; echo "<td align='center'>" . $data["delivery_number"] . "</td>"; echo "<td align='center'>" . Dropdown::getDropdownName("glpi_plugin_order_deliverystates", $data["plugin_order_deliverystates_id"]) . "</td>"; echo "<input type='hidden' name='id[{$detailID}]' value='{$detailID}'>"; echo "<input type='hidden' name='name[{$detailID}]' value='" . $data["name"] . "'>"; echo "<input type='hidden' name='plugin_order_references_id[{$detailID}]' value='" . $data["id"] . "'>"; echo "<input type='hidden' name='itemtype[{$detailID}]' value='" . $data["itemtype"] . "'>"; echo "<input type='hidden' name='templates_id[{$detailID}]' value='" . $data["templates_id"] . "'>"; echo "<input type='hidden' name='states_id[{$detailID}]' value='" . $data["states_id"] . "'>"; } echo "</table>"; if ($order_order->canDeliver() && $this->checkItemStatus($orders_id, $references_id, PluginOrderOrder::ORDER_DEVICE_NOT_DELIVRED)) { Html::openArrowMassives("order_reception_form{$rand}", true); echo "<input type='hidden' name='plugin_order_orders_id' value='{$orders_id}'>"; $this->dropdownReceptionActions($typeRef, $references_id, $orders_id); Html::closeArrowMassives(array()); $rand = mt_rand(); if ($typeRef != 'SoftwareLicense') { echo "<div id='massreception" . $orders_id . $rand . "'></div>\n"; echo "<script type='text/javascript' >\n"; echo "function viewmassreception" . $orders_id . "{$rand}(){\n"; $params = array('plugin_order_orders_id' => $orders_id, 'plugin_order_references_id' => $references_id); Ajax::updateItemJsCode("massreception" . $orders_id . $rand, $CFG_GLPI["root_doc"] . "/plugins/order/ajax/massreception.php", $params, false); echo "};"; echo "</script>\n"; echo "<p><a href='javascript:viewmassreception" . $orders_id . "{$rand}();'>"; echo __("Take item delivery (bulk)", "order") . "</a></p><br>\n"; } } Html::closeForm(); echo "</div>"; } echo "<br>"; } }
public function generateOrder($params) { global $DB; $ID = $params['id']; $template = $params['template']; $signature = $params['sign']; if ($template) { $config = array('PATH_TO_TMP' => GLPI_DOC_DIR . '/_tmp'); $odf = new Odtphp\Odf(PLUGIN_ORDER_TEMPLATE_DIR . "{$template}", $config); $this->getFromDB($ID); if (file_exists(PLUGIN_ORDER_TEMPLATE_CUSTOM_DIR . "custom.php")) { include_once PLUGIN_ORDER_TEMPLATE_CUSTOM_DIR . "custom.php"; } if (function_exists("plugin_order_getCustomFieldsForODT")) { plugin_order_getCustomFieldsForODT($ID, $template, $odf, $signature); } else { $PluginOrderOrder_Item = new PluginOrderOrder_Item(); $PluginOrderReference_Supplier = new PluginOrderReference_Supplier(); try { $odf->setImage('logo', PLUGIN_ORDER_TEMPLATE_LOGO_DIR . '/logo.jpg'); } catch (\Odtphp\Exceptions\OdfException $e) { } $values = array(); $values['title_order'] = __("Order number", "order"); $values['num_order'] = $this->fields["num_order"]; $values['title_invoice_address'] = __("Invoice address", "order"); $values['comment_order'] = $this->fields["comment"]; $entity = new Entity(); $entity->getFromDB($this->fields["entities_id"]); $town = ''; if ($this->fields["entities_id"] != 0) { $name_entity = $entity->fields["name"]; } else { $name_entity = __("Root entity"); } $values['entity_name'] = $name_entity; if ($entity->getFromDB($this->fields["entities_id"])) { $town = $entity->fields["town"]; $values['entity_address'] = $entity->fields["address"]; $values['entity_postcode'] = $entity->fields["postcode"]; $values['entity_town'] = $entity->fields["town"]; $values['entity_country'] = $entity->fields["country"]; } $supplier = new Supplier(); if ($supplier->getFromDB($this->fields["suppliers_id"])) { $values['supplier_name'] = $supplier->fields["name"]; $values['supplier_address'] = $supplier->fields["address"]; $values['supplier_postcode'] = $supplier->fields["postcode"]; $values['supplier_town'] = $supplier->fields["town"]; $values['supplier_country'] = $supplier->fields["country"]; } $location = new Location(); if ($location->getFromDB($this->fields["locations_id"])) { $values['title_delivery_address'] = __("Delivery address", "order"); $values['comment_delivery_address'] = $location->fields['comment']; } if ($town) { $town = $town . ", "; } $order_date = Html::convDate($this->fields["order_date"]); $username = Html::clean(getUserName(Session::getLoginUserID())); $values['title_date_order'] = $town . __("The", "order") . " "; $values['date_order'] = $order_date; $values['title_sender'] = __("Issuer order", "order"); $values['sender'] = $username; $values['title_budget'] = __("Budget"); $budget = new Budget(); if ($budget->getFromDB($this->fields["budgets_id"])) { $values['budget'] = $budget->fields['name']; } else { $values['budget'] = ''; } $output = ''; $contact = new Contact(); if ($contact->getFromDB($this->fields["contacts_id"])) { $output = formatUserName($contact->fields["id"], "", $contact->fields["name"], $contact->fields["firstname"]); } $values['title_recipient'] = __("Recipient", "order"); $values['recipient'] = Html::clean($output); $values['nb'] = __("Quantity", "order"); $values['title_item'] = __("Designation", "order"); $values['title_ref'] = __("Reference"); $values['HTPrice_item'] = __("Unit price", "order"); $values['TVA_item'] = __("VAT", "order"); $values['title_discount'] = __("Discount rate", "order"); $values['HTPriceTotal_item'] = __("Sum tax free", "order"); $values['ATIPriceTotal_item'] = __("Price ATI", "order"); $listeArticles = array(); $result = $PluginOrderOrder_Item->queryDetail($ID); $num = $DB->numrows($result); while ($data = $DB->fetch_array($result)) { $quantity = $PluginOrderOrder_Item->getTotalQuantityByRefAndDiscount($ID, $data["id"], $data["price_taxfree"], $data["discount"]); $listeArticles[] = array('quantity' => $quantity, 'ref' => utf8_decode($data["name"]), 'taxe' => Dropdown::getDropdownName(getTableForItemType("PluginOrderOrderTax"), $data["plugin_order_ordertaxes_id"]), 'refnumber' => $PluginOrderReference_Supplier->getReferenceCodeByReferenceAndSupplier($data["id"], $this->fields["suppliers_id"]), 'price_taxfree' => $data["price_taxfree"], 'discount' => $data["discount"], false, 0, 'price_discounted' => $data["price_discounted"] * $quantity, 'price_ati' => $data["price_ati"]); } $article = $odf->setSegment('articles'); foreach ($listeArticles as $element) { $article->nbA($element['quantity']); $article->titleArticle($element['ref']); $article->refArticle($element['refnumber']); $article->TVAArticle($element['taxe']); $article->HTPriceArticle(Html::clean(Html::formatNumber($element['price_taxfree']))); if ($element['discount'] != 0) { $article->discount(Html::clean(Html::formatNumber($element['discount'])) . " %"); } else { $article->discount(""); } $article->HTPriceTotalArticle(Html::clean(Html::formatNumber($element['price_discounted']))); $total_TTC_Article = $element['price_discounted'] * (1 + $element['taxe'] / 100); $article->ATIPriceTotalArticle(Html::clean(Html::formatNumber($total_TTC_Article))); $article->merge(); } $odf->mergeSegment($article); $prices = $PluginOrderOrder_Item->getAllPrices($ID); // total price (with postage) $postagewithTVA = $PluginOrderOrder_Item->getPricesATI($this->fields["port_price"], Dropdown::getDropdownName("glpi_plugin_order_ordertaxes", $this->fields["plugin_order_ordertaxes_id"])); $total_HT = $prices["priceHT"] + $this->fields["port_price"]; $total_TVA = $prices["priceTVA"] + $postagewithTVA - $this->fields["port_price"]; $total_TTC = $prices["priceTTC"] + $postagewithTVA; if ($signature) { try { $odf->setImage('sign', PLUGIN_ORDER_SIGNATURE_DIR . $signature); } catch (\Odtphp\Exceptions\OdfException $e) { } } else { try { $odf->setImage('sign', '../pics/nothing.gif'); } catch (\Odtphp\Exceptions\OdfException $e) { } } $name = Dropdown::getDropdownName("glpi_plugin_order_orderpayments", $this->fields["plugin_order_orderpayments_id"]); $values['title_totalht'] = __("Price tax free", "order"); $values['totalht'] = Html::clean(Html::formatNumber($prices['priceHT'])); $values['title_port'] = __("Price tax free with postage", "order"); $values['totalht_port_price'] = Html::clean(Html::formatNumber($total_HT)); $values['title_price_port'] = __("Postage", "order"); $values['price_port_tva'] = " (" . Html::clean(Dropdown::getDropdownName("glpi_plugin_order_ordertaxes", $this->fields["plugin_order_ordertaxes_id"])) . "%)"; $values['port_price'] = Html::clean(Html::formatNumber($postagewithTVA)); $values['title_tva'] = __("VAT", "order"); $values['totaltva'] = Html::clean(Html::formatNumber($total_TVA)); $values['title_totalttc'] = __("Price ATI", "order"); $values['totalttc'] = Html::clean(Html::formatNumber($total_TTC)); $values['title_money'] = __("€", "order"); $values['title_sign'] = __("Signature of issuing order", "order"); $values['title_conditions'] = __("Payment conditions", "order"); $values['payment_conditions'] = $name; // Set variables in odt template foreach ($values as $field => $val) { try { $odf->setVars($field, $val, true, 'UTF-8'); } catch (\Odtphp\Exceptions\OdfException $e) { } } } $message = "_"; if (Session::isMultiEntitiesMode()) { $entity = new Entity(); $entity->getFromDB($this->fields['entities_id']); $message .= $entity->getName(); } $message .= "_" . $this->fields['num_order'] . "_"; $message .= Html::convDateTime($_SESSION['glpi_currenttime']); $message = str_replace(" ", "_", $message); $outputfile = str_replace(".odt", $message . ".odt", $template); // We export the file $odf->exportAsAttachedFile($outputfile); } }
public function showOrderLink($plugin_order_orders_id) { global $DB, $CFG_GLPI; $PluginOrderOrder = new PluginOrderOrder(); $PluginOrderOrder_Item = new PluginOrderOrder_Item(); $PluginOrderReference = new PluginOrderReference(); $PluginOrderReception = new PluginOrderReception(); $PluginOrderOrder->getFromDB($plugin_order_orders_id); $canedit = $PluginOrderOrder->canDeliver() && !$PluginOrderOrder->canUpdateOrder() && !$PluginOrderOrder->isCanceled(); $query_ref = "SELECT `glpi_plugin_order_orders_items`.`id` AS IDD,\n `glpi_plugin_order_orders_items`.`plugin_order_references_id` AS id,\n `glpi_plugin_order_references`.`name`,\n `glpi_plugin_order_references`.`itemtype`,\n `glpi_plugin_order_references`.`manufacturers_id`,\n `glpi_plugin_order_orders_items`.`price_taxfree`,\n `glpi_plugin_order_orders_items`.`discount`\n FROM `glpi_plugin_order_orders_items`, `glpi_plugin_order_references`\n WHERE `plugin_order_orders_id` = '{$plugin_order_orders_id}'\n AND `glpi_plugin_order_orders_items`.`plugin_order_references_id` = `glpi_plugin_order_references`.`id`\n AND `glpi_plugin_order_orders_items`.`states_id` = '" . PluginOrderOrder::ORDER_DEVICE_DELIVRED . "'\n GROUP BY `glpi_plugin_order_orders_items`.`plugin_order_references_id`\n ORDER BY `glpi_plugin_order_references`.`name`"; $result_ref = $DB->query($query_ref); $numref = $DB->numrows($result_ref); while ($data_ref = $DB->fetch_array($result_ref)) { echo "<div class='center'><table class='tab_cadre_fixe'>"; if (!$numref) { echo "<tr><th>" . __("No item to take delivery of", "order") . "</th></tr></table></div>"; } else { $plugin_order_references_id = $data_ref["id"]; $itemtype = $data_ref["itemtype"]; $canuse = $itemtype != 'PluginOrderOther'; $item = new $itemtype(); $rand = mt_rand(); $query = "SELECT `glpi_plugin_order_orders_items`.`id` AS IDD,\n `glpi_plugin_order_references`.`id` AS id,\n `glpi_plugin_order_references`.`templates_id`,\n `glpi_plugin_order_orders_items`.`states_id`,\n `glpi_plugin_order_orders_items`.`delivery_date`,\n `glpi_plugin_order_orders_items`.`delivery_number`,\n `glpi_plugin_order_references`.`name`,\n `glpi_plugin_order_references`.`itemtype`,\n `glpi_plugin_order_orders_items`.`items_id`,\n `glpi_plugin_order_orders_items`.`price_taxfree`,\n `glpi_plugin_order_orders_items`.`discount`\n FROM `glpi_plugin_order_orders_items`, `glpi_plugin_order_references`\n WHERE `plugin_order_orders_id` = '{$plugin_order_orders_id}'\n AND `glpi_plugin_order_orders_items`.`plugin_order_references_id` = '{$plugin_order_references_id}'\n AND `glpi_plugin_order_orders_items`.`plugin_order_references_id` = `glpi_plugin_order_references`.`id`\n AND `glpi_plugin_order_orders_items`.`states_id` = '" . PluginOrderOrder::ORDER_DEVICE_DELIVRED . "'"; if ($itemtype == 'SoftwareLicense') { $query .= " GROUP BY `glpi_plugin_order_orders_items`.`price_taxfree`,\n `glpi_plugin_order_orders_items`.`discount`"; } $query .= " ORDER BY `glpi_plugin_order_references`.`name`"; $result = $DB->query($query); $num = $DB->numrows($result); echo "<tr><th><ul><li>"; echo "<a href=\"javascript:showHideDiv('generation{$rand}','generation_img{$rand}', " . "'" . $CFG_GLPI['root_doc'] . "/pics/plus.png','" . $CFG_GLPI['root_doc'] . "/pics/moins.png');\">"; echo "<img alt='' name='generation_img{$rand}' src=\"" . $CFG_GLPI['root_doc'] . "/pics/plus.png\">"; echo "</a>"; echo "</li></ul></th>"; echo "<th>" . __("Type") . "</th>"; echo "<th>" . __("Manufacturer") . "</th>"; echo "<th>" . __("Product reference", "order") . "</th>"; echo "</tr>"; echo "<tr class='tab_bg_1 center'>"; echo "<td></td>"; echo "<td align='center'>" . $item->getTypeName() . "</td>"; echo "<td align='center'>" . Dropdown::getDropdownName("glpi_manufacturers", $data_ref["manufacturers_id"]) . "</td>"; echo "<td>" . $PluginOrderReference->getReceptionReferenceLink($data_ref) . " ({$num})</td>"; echo "</tr>"; echo "</table>"; echo "<div class='center' id='generation{$rand}' style='display:none'>"; echo "<form method='post' name='order_generation_form{$rand}'\n id='order_generation_form{$rand}' action=\"" . Toolbox::getItemTypeFormUrl(__CLASS__) . "\">"; echo "<table class='tab_cadre_fixe'>"; echo "<tr>"; if ($canedit & $canuse) { echo "<th width='15'></th>"; } if ($itemtype != 'SoftwareLicense') { echo "<th>" . __("ID") . "</th>"; } else { echo "<th>" . __("Quantity", "order") . "</th>"; } echo "<th>" . __("Reference") . "</th>"; echo "<th>" . __("Status") . "</th>"; echo "<th>" . __("Delivery date") . "</th>"; echo "<th>" . _n("Associated item", "Associated items", 2) . "</th></tr>"; while ($data = $DB->fetch_array($result)) { $random = mt_rand(); $detailID = $data["IDD"]; echo "<tr class='tab_bg_2'>"; if ($canedit & $canuse) { echo "<td width='15' align='left'>"; $sel = ""; if (isset($_GET["select"]) && $_GET["select"] == "all") { $sel = "checked"; } echo "<input type='checkbox' name='item[" . $detailID . "]' value='1' {$sel}>"; echo "</td>"; } if ($itemtype != 'SoftwareLicense') { echo "<td align='center'>" . $data["IDD"] . "</td>"; } else { echo "<td align='center'>"; echo $PluginOrderOrder_Item->getTotalQuantityByRefAndDiscount($plugin_order_orders_id, $plugin_order_references_id, $data["price_taxfree"], $data["discount"]); echo "</td>"; } echo "<td align='center'>" . $PluginOrderReference->getReceptionReferenceLink($data) . "</td>"; echo "<td align='center'>" . $PluginOrderReception->getReceptionStatus($detailID) . "</td>"; echo "<td align='center'>" . Html::convDate($data["delivery_date"]) . "</td>"; echo "<td align='center'>" . $this->getReceptionItemName($data["items_id"], $data["itemtype"]); echo "<input type='hidden' name='id[{$detailID}]' value='{$detailID}'>"; echo "<input type='hidden' name='name[{$detailID}]' value='" . $data["name"] . "'>"; echo "<input type='hidden' name='itemtype[{$detailID}]' value='" . $data["itemtype"] . "'>"; echo "<input type='hidden' name='templates_id[{$detailID}]' value='" . $data["templates_id"] . "'>"; echo "<input type='hidden' name='states_id[{$detailID}]' value='" . $data["states_id"] . "'>"; } echo "</tr>"; echo "</table>"; if ($canedit & $canuse) { Html::openArrowMassives("order_generation_form{$rand}", true); echo "<input type='hidden' name='plugin_order_orders_id' value='{$plugin_order_orders_id}'>"; $entities_id = $PluginOrderOrder->fields['entities_id']; $this->dropdownLinkActions($itemtype, $plugin_order_references_id, $plugin_order_orders_id, $entities_id); Html::closeArrowMassives(array()); } Html::closeForm(); echo "</div>"; } echo "<br>"; } }