<?php
//$Id: pdfrequete.php,v 1.9 2008-07-09 12:03:13 fgiva Exp $

function TraiterAffectation(&$selectionetat,$idmateriel,$statut)
{  //"Tous","Affecté","Nonaffecté","En panne","En réparation","En stock"
  switch ($statut) {
  case "Nonaffecté":
    $selectionetat.=" and $idmateriel in (2,3,4)";
    break;
  case "Affecté":
    $selectionetat.=" and $idmateriel=1";
    break;
  case "En panne":
    $selectionetat.=" and $idmateriel=2";
    break;
  case "En réparation":
    $selectionetat.=" and $idmateriel=3";
    break;
  case "En stock":
    $selectionetat.=" and $idmateriel=4";
  }
}

function TraiterIntervention(&$tableetat,&$selectionetat,&$champsaffiches,$idmateriel,$idmatinterv,$tablemateriel,$statut)
{  //"Tous","Cloturée","En cours"
  if ($statut=="Tous" || $statut=="Cloturée") {
    if ($statut=="Cloturée")
      $selectionetat.=" and idetatintervention=3";
  } else {  //en cours
    $tableetat.=" left join intervention on $tablemateriel.$idmateriel=intervention.$idmatinterv";
    $selectionetat.=" and idetatintervention=2";
    if ($tablemateriel=="s")
      $champsaffiches=str_replace("'subsql' as complement","observations as intervention",$champsaffiches);
    else 
      $champsaffiches.=",observations as intervention";
  }  
}

function TraiterSelectionStation(&$tableetat,&$selectionetat,$idsreq,$tablereq,$sel) {
  if (strstr($tablereq,"modele")) { //modelesysteme,...processeur,...ecran
    $tablereq =substr($tablereq,6);
    if ($tablereq=="systeme") {
      if ($idsreq) $selectionetat.=" and s.idsysteme in ($idsreq)";
      else $selectionetat.=" and s.idsysteme <> 0";
      $lib="m0.libmodele"; 
    } else {
      $tableetat.=" left join element as e$sel on s.idstation=e$sel.idstation inner join modeleelement as m$sel on e$sel.idmodele=m$sel.idmodele";
      if ($idsreq) $selectionetat.=" and e$sel.idmodele in ($idsreq)"; 
      else $selectionetat.=" and e$sel.idmodele <> 0 and m$sel.nature='$tablereq'";
      $lib="m$sel.libmodele"; 
    }
  } else { //service,direction,batiment,fournisseur
    if ($tablereq!="direction") {
      if ($tablereq="fournisseur")
        $tableetat.=" left join fournisseur as f on s.idfournisseur=f.idfournisseur";
      if ($idsreq) $selectionetat.=" and s.id$tablereq in ($idsreq)"; 
      else $selectionetat.=" and s.id$tablereq <> 0";
    } else {
      $tableetat.=" inner join direction on service.iddirection=direction.iddirection";
      if ($idsreq) $selectionetat.=" and direction.iddirection in ($idsreq)"; 
      else $selectionetat.=" and direction.iddirection <> 0";
    }
    $lib="lib$tablereq"; 
  }
  return $lib;
}

function TraiterSelectionElement(&$tableetat,&$selectionetat,$idsreq,$tablereq,$sel) {
  if (strstr($tablereq,"modele")) { //modelecopieur,...telephone,...videoproj
  //pour modeleproc,...(element de station), on exclut ces elements en testant
  //leur affectation à des stations
    $tablereq =substr($tablereq,6);
    if ($idsreq) $selectionetat.=" and e.idmodele in ($idsreq)";
    else $selectionetat.=" and e.idmodele <> 0 and m0.nature='$tablereq'";
    $lib="m0.libmodele"; 
  } else { //service,direction,batiment,fournisseur
    if ($tablereq!="direction") {
      if ($tablereq="fournisseur")
        $tableetat.=" left join fournisseur as f on e.idfournisseur=f.idfournisseur";
      if ($idsreq) $selectionetat.=" and e.id$tablereq in ($idsreq)"; 
      else $selectionetat.=" and e.id$tablereq <> 0";
    } else {
      $tableetat.=" left join direction on service.iddirection=direction.iddirection";
      if ($idsreq) $selectionetat.=" and direction.iddirection in ($idsreq)"; 
      else $selectionetat.=" and direction.iddirection <> 0";
    }
    $lib="lib$tablereq"; 
  }
  return $lib;
}

include ("../dyn/session.inc");
set_time_limit(180);
if(file_exists("../dyn/custom/var.inc")) {
   include("../dyn/custom/var.inc");
}
else {
  include("../dyn/var.inc");
}
// classe fpdf
define('FPDF_FONTPATH','font/');
require('../obj/fpdf_etatparc.php');
require('DB.php');

// connexion
include ("../dyn/connexion.php");
$DEBUG=0;
// dsn
$db=& DB :: connect($dsn, $db_option);
if (DB :: isError($db))
    die($db->getMessage());
else{
    if($DEBUG==1)
    echo "La base ".$dsn['database']." est connectée.<br>";
}
// parametre generaux
$res = $db->query($sql_collectivite);
if (DB :: isError($res))
   die($res->getMessage()."erreur ".$sql_collectivite);
else{
   while ($row=& $res->fetchRow()){
              $ville=$row[0];
              $logo=$row[1];
              $nom=$row[2];
}}
$res->free();
if(isset($_GET['idx']))
    $idx=$_GET['idx'];
else
    $idx="";

if ($idx) {
  include ("../sql/".$dsn['phptype']."/requete.etat.inc");
  // INSTANCE PDF            =====================================
  // orientation P= portrait L=paysage
  // unite mm (milimetre)
  // format A4 A3
  // =============================================================
  $unite="mm";
  $pdf=new PDF($etat["orientation"],$unite,$etat["format"]);
  $pdf->footerfont=$etat["footerfont"];
  $pdf->footertaille=$etat["footertaille"];
  $pdf->footerattribut=$etat["footerattribut"];
  $pdf->SetMargins($etat['se_margeleft'],$etat['se_margetop'],$etat['se_margeright']); //marge gauche,haut,droite par defaut 10mm
  $pdf->SetDisplayMode('real','single');
  // methode fpdf calcul nombre de page
  $pdf->AliasNbPages();
  // methode de creation de page
  $pdf->AddPage();
  // police ======================================================
  // setFont 0 = times, arial
  //         1 = I B ou ''
  //         2 = 8 ....
  // affichage image =============================================
  // image     0 = nom
  //           1 = left
  //           2 = top
  //           3 = width 0=calcul auto
  //           4 = hauteur 0=calcul auto
  //           5 = type image  rien=exetension du fichier
  //           6 = lien
  // setXY (left,top) =============================================
  // affichage multicell ==========================================
  // multicell 0 = width   =0 left->droite
  //           1 = hauteur de la cellule
  //           2 = texte
  //           3 = bordure (0 ou 1)
  //           4 = align (L C R J)
  //           5 =     0 fd transparent
  //                   1 couleur (parametre à rajouter)
  // ==============================================================
  $pdf->Image($logo,
              $etat["logoleft"],
              $etat["logotop"],
              0,
              0,
              '',
              'http://www.openmairie.org');
  // variables statiques
//  $titre= $etat["titre"];
//  $corps= $etat["corps"];
/*  if(file_exists("../dyn/custom/varpdf.inc")) {
     include("../dyn/custom/varetatpdf.inc");
  }
  else {
    include("../dyn/varetatpdf.inc");
  } */
  $res = $db->query("select * from requete where idrequete=$idx");
  if (DB :: isError($res))
     die($res->getMessage()."erreur ".$sql);
  else{
    while ($row=& $res->fetchRow(DB_FETCHMODE_ASSOC)){  //requete à traiter   
      // titre
      $titre=$row['librequete'];
      //
      $pdf->SetFont($etat["titrefont"],
                   $etat["titreattribut"],
                   $etat["titretaille"]);
      $pdf->SetXY($etat["titreleft"],
                 $etat["titretop"]);
      $pdf->MultiCell($etat["titrelargeur"],
                     $etat["titrehauteur"],
                     $titre,
                     $etat["titrebordure"],
                     $etat["titrealign"],
                     0);
      for ($i=0;$i<5;$i++)  //initialisation requetes
        $sousetat['sql'][$i]="";
      $tablerecherche=$row['tablerecherche'];
      $tablerecherche2=$row['tablerecherche2'];
      $naturemateriel=$row['naturemateriel'];
//"Tout","Bureautique","Station","Station+Prn+Copieur","PeriphsLibres","Prn+Copieur","Reseau+Telecom","Reseau","Telecom"
      if ($naturemateriel=="Tout" || $naturemateriel=="Station" ||
      $naturemateriel=="Station+Prn+Copieur") { //requete station necessaire
        include ("../sql/".$dsn['phptype']."/station.sousetat.inc");
        if ($tablerecherche) { //si 1ere selection
          $idsrecherche=$row['idsrecherche'];
          $nomlib[0]=TraiterSelectionStation($sousetat["table"][0],$sousetat["selection"][0],$idsrecherche,$tablerecherche,"1");
        }
        if ($tablerecherche2) {  //si 2eme selection
          $idsrecherche2=$row['idsrecherche2'];
          $nomlib2[0]=TraiterSelectionStation($sousetat["table"][0],$sousetat["selection"][0],$idsrecherche2,$tablerecherche2,"2");
        }
        TraiterIntervention($sousetat["table"][0],$sousetat["selection"][0],$sousetat["champsaffiches"][0],"idstation","idstation","s",$row['etatintervention']);
        TraiterAffectation($sousetat["selection"][0],"s.idetatstation",$row['etataffectation']);
        //multi-organisme
        if ($row['organisme']>0)
          $sousetat["selection"][0].=" and s.idorganisme=".$row['organisme'];
      } //fin traitement station
      if ($naturemateriel!="Station") {  //requete(s) element(s) necessaire(s)
        if ($naturemateriel=="Tout" || $naturemateriel=="Station+Prn+Copieur" || $naturemateriel=="Prn+Copieur")        
          include ("../sql/".$dsn['phptype']."/imprimante.sousetat.inc");
        if ($naturemateriel=="Tout" || $naturemateriel=="PeriphsLibres")        
          include ("../sql/".$dsn['phptype']."/periphlibre.sousetat.inc");
        if ($naturemateriel=="Tout" || $naturemateriel=="Reseau" || $naturemateriel=="Reseau+Telecom")        
          include ("../sql/".$dsn['phptype']."/reseau.sousetat.inc");
        if ($naturemateriel=="Tout" || $naturemateriel=="Telecom" || $naturemateriel=="Reseau+Telecom")
          include ("../sql/".$dsn['phptype']."/telecom.sousetat.inc");
        for ($i=1;$i<count($sousetat['sql']);$i++) {
          if (isset($sousetat['champsaffiches'][$i])) {
            if ($tablerecherche) { //si 1ere selection
              $idsrecherche=$row['idsrecherche'];
              $nomlib[$i]=TraiterSelectionElement($sousetat["table"][$i],$sousetat["selection"][$i],$idsrecherche,$tablerecherche,"1");
            }
            if ($tablerecherche2) {  //si 2eme selection
              $idsrecherche2=$row['idsrecherche2'];
              $nomlib2[$i]=TraiterSelectionElement($sousetat["table"][$i],$sousetat["selection"][$i],$idsrecherche2,$tablerecherche2,"2");
            }
            TraiterIntervention($sousetat["table"][$i],$sousetat["selection"][$i],$sousetat["champsaffiches"][$i],"idelement","idperipherique","e",$row['etatintervention']);
            TraiterAffectation($sousetat["selection"][$i],"e.idetatelement",$row['etataffectation']);
            //multi-organisme
            if ($row['organisme']>0)
              $sousetat["selection"][1].=" and e.idorganisme=".$row['organisme'];
          }
        }
      } //fin traitement element
      //traitement tri et construction requete
      for ($i=0;$i<count($sousetat['sql']);$i++) {
        if (isset($sousetat['champsaffiches'][$i])) {
          $nbindent=0;
          if ($row['souschaprecherche2']=="Oui") { 
            $sousetat["pretri"][$i]=$nomlib2[$i].",";
            $sousetat["champsaffiches"][$i].=",".$nomlib2[$i]." as sel2";
            $nbindent++;
          } 
          if ($row['souschaprecherche']=="Oui") {
            $sousetat["pretri"][$i]=$nomlib[$i].",".$sousetat["pretri"][$i]; 
            $sousetat["champsaffiches"][$i].=",".$nomlib[$i]." as sel1";
            $nbindent++;
          }
          //traitement options reseaumairie
          if ($i==0 || $i==1 || $i==3)
            switch ($row['reseaumairie']) {
            case "Oui":
              $sousetat["selection"][$i].=" and tcpip.adresseip like '10.%'";
              break;
            case "Non":
              $sousetat["selection"][$i].=" and (not (tcpip.adresseip like '10.%') || isnull(tcpip.adresseip))";
            }
          //traitement periode
          if ($i==0)
            $chpdate="s";
          else
            $chpdate="e";
          if ($row['datedebut']!="0000-00-00")
            $sousetat["selection"][$i].=" and ".$chpdate.".dateachat>='".$row['datedebut']."'";
          if ($row['datefin']!="0000-00-00")
            $sousetat["selection"][$i].=" and ".$chpdate.".dateachat<='".$row['datefin']."'";
          //construction finale des requetes sousetat
          $sousetat['sql'][$i]="select distinct ".$sousetat["champsaffiches"][$i].
          " from ".$sousetat["table"][$i]." where ".$sousetat["selection"][$i].
          " order by ".$sousetat["pretri"][$i];
          switch ($row['trigeneral']) {
          case "Num":
            $sousetat['sql'][$i].=$sousetat["trinum"][$i];
            break;
          case "Alpha":
            $sousetat['sql'][$i].=$sousetat["trialpha"][$i];
          }
        }
      }
  //echo ("requete finale: ".$sousetat['sql'][0]."<br>");
      // affichage des sous etats
      // =========================================================================
      // traitementde variables : &
      $titre=$sousetat['titre']; //tous les titres
      if(file_exists("../dyn/custom/varetatpdf.inc")) {
         include("../dyn/custom/varetatpdf.inc");
      }
      else {
        include("../dyn/varetatpdf.inc");
      }
      $sousetat['titre']=$titre;
      $pdf->sousetat($db,$etat,$sousetat,$nbindent); //cacher 1ere col Id
      //
      $pdf->Output();
    }
  }

} //fin idx existe

$db->disconnect();
if ($DEBUG == 1)
      echo "La base ".$dsn['database']." est déconnectée.<br>";
?>