commit e8a2f7fafff97a7e6ff6cbf30e7ca2f5ca52b4d3
Author: Eric Seigne <eric.seigne@ryxeo.com>
Date:   Mon Jan 3 23:00:11 2011 +0100

    generation automatique des courriers d'information de fin de maintenance dans le courant de l'annee

diff --git a/plugins/anet_epacks/front/plugin_anet_epacks.generate_odt_courrier_end_contract.form.php b/plugins/anet_epacks/front/plugin_anet_epacks.generate_odt_courrier_end_contract.form.php
new file mode 100644
index 0000000..9641e1b
--- /dev/null
+++ b/plugins/anet_epacks/front/plugin_anet_epacks.generate_odt_courrier_end_contract.form.php
@@ -0,0 +1,149 @@
+<?php
+
+// Génère le fichier ODT/PDF: courrier indiquant que la maintenance se termine cette année ...
+include "../ryxeo.php";
+
+if(!defined('GLPI_ROOT')){
+  define('GLPI_ROOT', '../../..');
+}
+include_once (GLPI_ROOT . "/inc/includes.php");
+include_once("tools.php");
+
+checkRight("config","w");
+//checkSeveralRightsOr(array("config" => "w", "profile" => "w"));
+
+require_once('lib/odf.php');
+//$odf->exportAsAttachedFile();
+//$odf->printVars();
+//print_r($odf);
+//$odf->saveToDisk('tmp/fichier.odt');
+
+global $DB;
+
+//Si on demande a re-generer le fichier ODF on ne fait que ça
+//a faire
+if(isset($_GET['cid'])) {
+  $fk_entitee = $_GET['clientid'];
+  //On a demandé a re-générer le contrat
+  //print "re - creation du contrat ... ";
+
+  //Le nom du contrat
+  $query = "SELECT name FROM glpi_contracts WHERE ID='" . $_GET['cid'] . "'";
+  $result = $DB->query($query);
+  $data=$DB->fetch_array($result);
+  $cname=$data[0];
+
+  //les epacks
+  $query2 = "SELECT code FROM glpi_plugin_anet_epacks WHERE FK_contract='" . $_GET['cid'] . "'";
+  $result2 = $DB->query($query2);
+  $epackstxt = "";
+
+  for($i = 0; $i < $DB->numrows($result2); $i++) {
+    $data2      = $DB->fetch_array($result2);
+    $epackstxt .= " " . $data2[0];
+  }
+
+  //Le niveau du contrat de maintenance ...
+  $niveau = "-" . $_GET['niveau'];
+
+  $odf = new odf("courrier_fin_maintenance_cette_annee.odt");
+  setlocale(LC_TIME, "fr_FR");
+  error_reporting(E_ALL);
+  $odf->setVars('date', strftime("%A %e %B %Y"), true, 'UTF-8');
+
+  $odf->setVars('datedebut', strftime("%A %e %B %Y"), true, 'UTF-8');
+  $odf->setVars('epacks', $epackstxt, true, 'UTF-8');
+
+  $query2="SELECT * FROM glpi_entities, glpi_entities_data WHERE glpi_entities.ID=FK_entities AND glpi_entities.ID='$fk_entitee';";
+  //print $query2;
+  //$DB->query($query2) or die($DB->error());
+  $result2 = $DB->query($query2);
+  $data2=$DB->fetch_array($result2);
+  
+  $odf->setVars('cname',  $cname, true, 'UTF-8');
+  
+  $odf->setVars('client', $data2['name'], true, 'UTF-8');
+  $odf->setVars('clienttype', "____________________", true, 'UTF-8');
+  $odf->setVars('clientcapital', "____________________", true, 'UTF-8');
+  $odf->setVars('clientrcs', "____________________", true, 'UTF-8');
+  $odf->setVars('clientsiret', "____________________", true, 'UTF-8');
+  $odf->setVars('clientadresse', $data2['address'], true, 'UTF-8');
+  $odf->setVars('clientcp', $data2['postcode']);
+  $odf->setVars('clientville', $data2['town'], true, 'UTF-8');
+  $odf->setVars('clientcontact', "____________________", true, 'UTF-8');
+  
+  //On créé un fichier local pour archive ...
+  $fichier = "contrats/" . date("Y-m-d") . "-abuledu-maintenance-" . $cname . ".odt";
+  $odf->saveToDisk($fichier);
+  pushfile($fichier);
+  //On génère le fichier
+  //$odf->exportAsAttachedFile();
+  //print $texte;
+  
+  
+ }
+ else {
+   $fk_entitee = $_POST['clientid'];
+   //On créé le contrat ...
+   if(count($_POST['epack']) > 0) {
+     $cname=strtoupper(anti_speciaux($_POST['clientname'])) . date("Ymd");
+     $cnum=date("Ymd");
+     //Verification que ce numero de contrat ne soit pas déjà pris ...
+     $query="SELECT count(*) FROM glpi_contracts WHERE name='" . $cname . "'";
+     //$DB->query($query) or die($DB->error());
+     $result = $DB->query($query);
+     $data=$DB->fetch_array($result);
+     if($data[0] > 0) {
+       print "<p>AAAAAAAAaaaaaaaaaatention, ce numéro de contrat $cname / $cnum est déjà utilisé !!! cette situation ne peut arriver que si vous créez plus d'un contrat par jour ... si c'est le cas voyez avec les développeurs ...</p>\n";
+       exit;
+     }
+
+     $query="INSERT INTO glpi_contracts(FK_entities,recursive,name,num,contract_type,begin_date,duration,notice,periodicity,facturation,notes,alert,renewal)
+                                 VALUES(" . $_POST['clientid'] . ",'0','$cname','$cnum','6', NOW( ) ,'36','1','12','12','Créé par anet :: " . basename($_SERVER['SCRIPT_FILENAME']) . "','3','1' )";
+     $texte .= "<p> Création du contrat :: $query</p>\n";
+
+     $DB->query($query) or die($DB->error());
+     $contractid = $DB->insert_id();
+
+     $texte .= "<p>Pour y associer les ePacks suivants:</p>
+<ul>\n";
+
+     for($i = 0; $i < count($_POST['epack']); $i++) {
+       $epack = trim($_POST['epack'][$i]);
+       $epackstxt .= " $epack ";
+       $query="UPDATE glpi_plugin_anet_epacks SET FK_contract='$contractid' WHERE code='$epack'";
+       $DB->query($query) or die($DB->error());
+
+       $texte .= "<li>$query</li>\n";
+     }
+     $texte .= "</ul>";
+     
+   }
+   //Sinon c'est qu'on génère un contrat de partenaire global ENR2009
+   else {
+     $cname=strtoupper(anti_speciaux(base64_decode($_GET['clientname']))) . "-ENR2009";
+     $cnum=date("Ymd");
+     //Verification que ce numero de contrat ne soit pas déjà pris ...
+     $query="SELECT count(*) FROM glpi_contracts WHERE name='" . $cname . "'";
+     //$DB->query($query) or die($DB->error());
+     $result = $DB->query($query);
+     $data=$DB->fetch_array($result);
+     if($data[0] > 0) {
+       print "<p>AAAAAAAAaaaaaaaaaatention, ce numéro de contrat $cname / $cnum est déjà utilisé !!! cette situation ne peut arriver que si vous créez plus d'un contrat par jour ... si c'est le cas voyez avec les développeurs ... <a href=\"plugin_anet_epacks.generate_odt_contrat_partenaire_enr2009.form.php\">Un petit retour à l'accueil</a> ?</p>\n";
+       exit;
+     }
+
+     $query="INSERT INTO glpi_contracts(FK_entities,recursive,name,num,contract_type,begin_date,duration,notice,periodicity,facturation,notes,alert,renewal)
+                                 VALUES(" . $_GET['clientid'] . ",'0','$cname','$cnum','6', NOW( ) ,'36','1','12','12','Créé par anet :: " . basename($_SERVER['SCRIPT_FILENAME']) . "','3','1' )";
+     $texte .= "<p> Création du contrat partenaire :: $query</p>\n";
+
+     $DB->query($query) or die($DB->error());
+     $contractid = $DB->insert_id();
+     
+   }
+
+   print "<p>Désolé pour la mise en page et cette superbe page blanche ...</p>\n";
+
+   print "<p>Les packs sont maintenant associés au contrat, <a href=\"plugin_anet_epacks.view_maintenance.php?year=" . date("Y") . "\">cliquez ici pour choisir le type de contrat que vous voulez</a> pour ce client.</p>\n";
+ }
+?>
diff --git a/plugins/anet_epacks/front/plugin_anet_epacks.index.php b/plugins/anet_epacks/front/plugin_anet_epacks.index.php
index 517fd21..54ae73d 100644
--- a/plugins/anet_epacks/front/plugin_anet_epacks.index.php
+++ b/plugins/anet_epacks/front/plugin_anet_epacks.index.php
@@ -47,6 +47,7 @@ print "
  <li><a href=\"plugin_anet_epacks.view_maintenance.php?year=" . date("Y") . "\">Liste des contrats auto-générés</a></li>
  <li><a href=\"plugin_anet_epacks.view_array_recap.php\">Tableau récapitulatif de mes serveurs</a> (page d'accueil du site normalement)</li>
  <li><a href=\"plugin_anet_epacks.view_recap_mensuel_rvd.php?year=" . date("Y") . "&month=" . date("m") . "\">Relevé mensuel pour facturer les revendeurs</a></li>
+ <li><a href=\"plugin_anet_epacks.view_endcontract.php?year=" . date("Y") . "&month=12\">Création des courriers d'information de fin de contrat :</a> récupère la liste de tous les contrats qui se terminent dans le courant de l'année en cours et génère un fichier openoffice préremplis qu'il suffit d'envoyer.</li>
 </ul>
 
 <h2>Tâches pour l'administrateur</h2>
diff --git a/plugins/anet_epacks/front/plugin_anet_epacks.verif_contract_epack.php b/plugins/anet_epacks/front/plugin_anet_epacks.verif_contract_epack.php
new file mode 100644
index 0000000..e33d26c
--- /dev/null
+++ b/plugins/anet_epacks/front/plugin_anet_epacks.verif_contract_epack.php
@@ -0,0 +1,57 @@
+<?php
+/*
+* recherche les contrats qui ne sont pas raccrochés aux epacks
+* dans la table glpi_plugin_anet_epacks on a un FK_contract qui doit faire référence au bon contrat.
+* pour mettre à jour on cherche donc les FK_enduser dans glpi_plugin_anet_epacks WHERE FK_contract=0
+* ensuite on cherche si ce FK_enduser existe dans glpi_contracts FK_entities
+* si c'est le cas on met à jour glpi_plugin_anet_epacks
+*
+*/
+
+if(!defined('GLPI_ROOT')){
+  define('GLPI_ROOT', '../../..');
+}
+include_once (GLPI_ROOT . "/inc/includes.php");
+
+checkRight("config","w");
+global $DB;
+
+commonHeader("anet_epacks",$_SERVER['PHP_SELF'],"config","plugins");
+
+print "<h3>Recollage automatique des epacks <-> contrats</h3>\n";
+
+print "<div style=\"text-align:left\">";
+
+$query = "SELECT FK_enduser,code FROM glpi_plugin_anet_epacks WHERE FK_contract='0' AND FK_enduser>'0'";
+$result = $DB->query($query);
+//print $query;
+while($data=$DB->fetch_array($result)) {
+  $enduser=$data[0];
+  $code=$data[1];
+
+  $query1 = "SELECT * FROM glpi_entities WHERE ID='" . $enduser  . "'";
+  $result1 = $DB->query($query1);
+  $data1=$DB->fetch_array($result1);
+  $clientfinal = $data1['completename'];
+
+
+  $query2 = "SELECT * FROM glpi_contracts WHERE FK_entities='" . $enduser  . "'";
+  $result2 = $DB->query($query2);
+  $data2=$DB->fetch_array($result2);
+
+  if(trim($data2['name'])) {
+    $query3 = "UPDATE glpi_plugin_anet_epacks SET FK_contract='" . $data2['ID']  . "' WHERE FK_enduser='$enduser' AND FK_contract='0'";
+    print "<p>Recollement automatique pour $code -> $clientfinal -> nouvelle ref contrat: " . $data2['ID'] . "</p>";
+    $result3 = $DB->query($query3);
+    $data3=$DB->fetch_array($result3);
+  }
+  else {
+    print "<p><b>Vérification manuelle nécessaire</b> pour epack ref $code client final $clientfinal (ref $enduser) qui n'a aucune référence de contrat en recollement automatique (" . $data2['ID'] . ")</p>";
+  }
+ }
+
+//$query = "UPDATE `glpi_users` SET FK_entities='1' WHERE `FK_entities` = 0 AND email NOT LIKE '%ryxeo.com'";
+//$result = $DB->query($query);
+
+commonFooter();
+?>
diff --git a/plugins/anet_epacks/front/plugin_anet_epacks.view_endcontract.php b/plugins/anet_epacks/front/plugin_anet_epacks.view_endcontract.php
new file mode 100644
index 0000000..c02cc76
--- /dev/null
+++ b/plugins/anet_epacks/front/plugin_anet_epacks.view_endcontract.php
@@ -0,0 +1,91 @@
+<?php
+
+// Génère le fichier ODT/PDF pour le revendeur avec son numéro de pack à utiliser. Ce fichier doit contenir un certain nombre d'informations (url pour enregistrer son pack etc.)
+
+if(!defined('GLPI_ROOT')){
+  define('GLPI_ROOT', '../../..');
+}
+include_once (GLPI_ROOT . "/inc/includes.php");
+
+checkRight("config","w");
+//checkSeveralRightsOr(array("config" => "w", "profile" => "w"));
+
+commonHeader("anet_epacks",$_SERVER['PHP_SELF'],"config","plugins");
+
+print "<p>Liste : <a href=\"" . $PHP_SELF . "\">Tous</a> - <a href=\"" . $PHP_SELF . "?year=2008\">2008</a> - <a href=\"" . $PHP_SELF . "?year=2009\">2009</a> - <a href=\"" . $PHP_SELF . "?year=2010\">2010</a> - <a href=\"" . $PHP_SELF . "?year=2011\">2011</a>.</p>";
+
+
+global $DB;
+
+if($_GET['year'])
+  $condition = "AND `begin_date`+INTERVAL `duration` MONTH < '" . $_GET['year'] . "-12-31' AND `begin_date`+INTERVAL `duration` MONTH > '" . $_GET['year'] . "-01-01'";
+
+//Les contrats attribués
+//Permet de limiter un peu l'affichage, il faudra faire un système de recherche ou pagination à terme
+$query = "SELECT c.*,`begin_date`+INTERVAL `duration` MONTH as endcontract FROM glpi_plugin_anet_epacks
+ LEFT JOIN glpi_contracts AS c ON FK_contract=c.ID
+ WHERE FK_contract > 0 $condition GROUP BY FK_contract";
+//print $query;
+//$DB->query($query) or die($DB->error());
+$result = $DB->query($query);
+
+print "<table class='tab_cadre' width='100%' cellpadding='2'>\n";
+print "<tr class='tab_bg_3'>
+  <td>Client</td>
+  <td>Nom du contrat</td>
+  <td>Numéro</td>
+  <td>Coût</td>
+  <td>Début / Fin</td>
+  <td>Durée (mois)</td>
+  <td>ePacks concernés</td>
+  <td>Documents</td>
+</tr>\n";
+
+for($i = 0; $i < $DB->numrows($result); $i++) {
+  $data=$DB->fetch_array($result);
+
+  $query2="SELECT g.name as clientderyxeo FROM glpi_plugin_anet_epacks AS e LEFT JOIN glpi_entities AS g ON FK_clientderyxeo=g.ID
+LEFT JOIN glpi_contracts AS c ON FK_contract=c.ID
+WHERE FK_contract= '" . $data['ID'] . "'";
+  //print $query2 . "<br />" . "<br />";
+  //$DB->query($query) or die($DB->error());
+  $epacks = "";
+  $result2 = $DB->query($query2);
+  for($j = 0; $j < $DB->numrows($result2); $j++) {
+    $data2=$DB->fetch_array($result2);
+    $epacks .= $data2['code'] . "<br />";
+  }
+
+  $query3="SELECT e.*,g.name as enduser FROM glpi_plugin_anet_epacks AS e LEFT JOIN glpi_entities AS g ON FK_enduser=g.ID
+LEFT JOIN glpi_contracts AS c ON FK_contract=c.ID
+WHERE FK_enduser= '" . $data['FK_entities'] . "'
+LIMIT 500;";
+  //print $query3 . "<br />" . "<br />";
+  $result3 = $DB->query($query3);
+  $enduser = "&nbsp;&nbsp;";
+  for($j = 0; $j < $DB->numrows($result3); $j++) {
+    if($j>0)
+      $enduser .= " :: ";
+    $data3=$DB->fetch_array($result3);
+    $enduser .= stripslashes($data3['enduser']);
+  }
+
+  print "<tr class='tab_bg_3'>\n";
+  print "  <td>" . $data2['clientderyxeo'] . " <br /> " . $enduser . "</td>
+  <td>" . $data['name'] . "</td>
+  <td>" . $data['num'] . "</td>
+  <td>" . $data['cost'] . "</td>
+  <td>" . $data['begin_date'] . " <br /> " . $data['endcontract'] . "</td>
+  <td>" . $data['duration'] . "</td>
+  <td>" . $epacks . "</td>\n";
+  print "  <td>
+    <a href=\"plugin_anet_epacks.generate_odt_courrier_end_contract.form.php?clientid=" . $data['FK_entities'] . "&cid=" . $data['ID'] . "&niveau=courrier_endcontract\">Courrier de fin de maintenance</a><br />
+  </td>
+</tr>\n";
+}
+
+
+print "</table>";
+
+commonFooter();
+?>
