<?php
require("class.ImpressionTicket.php");
function get_journal_text($sid,$debug=false)
{
  $IT= new ImpressionTicket($debug);
  
  $sql=new DB();
  $sql2=new DB();
  

  if ($sql->query("SELECT * 
	           FROM session
	           WHERE sid = $sid"))
    {
      if ($sql->next_row_assoc())
	{
	  $session = $sql->row;
	  $sql->free();
	  //Récupération du prénom des employés ayant ouvert et fermé la session
	  $sql2->query("SELECT prenom 
	                FROM personnel
	                WHERE id = ".$session["employe_ouv"]);
	  $sql2->next_row_assoc();
	  $prenom_ouv = $sql2->row["prenom"];
	  $sql2->query("SELECT prenom 
	           FROM personnel
	           WHERE id = ".$session["employe_ferm"]);
	  $sql2->next_row_assoc();
	  $prenom_ferm = $sql2->row["prenom"];
	}
    }
  else
    return '';
  
  $journal_intermédiaire = false;
  //Vérif si c'est un journal avant ou après clôture
  if ($session["date_ferm"] == "0000-00-00 00:00:00")
    $journal_intermédiaire = true;
  if ($sql->query("SELECT * 
	           FROM enseigne 
	           WHERE id = 1"))
    {
      if ($sql->next_row_assoc())
	{
	  $enseigne=$sql->row;
	  $sql->free();
	}
    }

  //Récupération des infos de perte
  //Produits finis
  if (!empty($_SESSION[PERTE][PRODUITS]))
    {
	foreach ($_SESSION[PERTE][PRODUITS] as $idm_catégorie=>$catégorie)
	{
		if ($idm_catégorie == 1) //Cas particulier des pizzas
		{
			foreach ($catégorie as $id_pizza=>$qté)
			{
				//Récupération des caractéristiques générales
				$sql->query("SELECT tid id,
				                    pizza_tarif.id pizza,
				                    CONCAT(article,' ',abreviation) nom
             			             FROM pizza_tarif,
				                  pizza 
				             WHERE tid = $id_pizza
				               AND pizza_tarif.id = pizza.id");
				$sql->next_row_assoc();
				//Récupération du coût de revient total
				$sql2->query("SELECT i.id,
				                     nom,
				                     unite,
				                     (cout_achat/poids_net*(100+perte)/100) AS prix_revient,
				                     q
				             FROM ingredient i,
				                  composition_pizza c
				             WHERE i.id = c.ingredient
				               AND pizza = {$sql->row["pizza"]}
				             ORDER BY nom");
				while ($sql2->next_row_assoc())
				{
					//Génération du tableau des ingrédients
					$q = unserialize($sql2->row["q"]);
					if ($q[$sql->row["id"]])
					{
						$ingrédients_produits_finis[$sql2->row["id"]]["nom"] = $sql2->row["nom"];
						$ingrédients_produits_finis[$sql2->row["id"]]["unite"] = $sql2->row["unite"];
						$ingrédients_produits_finis[$sql2->row["id"]]["qte"] += $q[$sql->row["id"]] * $qté;
						$ingrédients_produits_finis[$sql2->row["id"]]["cout_revient"] = $sql2->row["prix_revient"];
						$ingrédients_produits_finis[$sql2->row["id"]]["total"] += $sql2->row["prix_revient"] * $q[$sql->row["id"]] * $qté;
					}
					//Coût de revient des produits finis
					$sql->row["cout_revient"] += $sql2->row["prix_revient"] * $q[$sql->row["id"]];
				}
				$sql->row["categorie"] = $idm_catégorie;
				$sql->row["qte"] = $qté;
				$sql->row["total"] = $qté * $sql->row["cout_revient"];
				$produits_finis[] = $sql->row;
				$montant_perte_produits_finis += $qté * $sql->row["cout_revient"];
			}
		}
		else
		{
			foreach ($catégorie as $id_autre_produit=>$qté)
			{
				//Récupération des caractéristiques générales
				$sql->query("SELECT Id_Produit id,
				                    Article nom,
				                    PrixVenteTTC prix
				             FROM produit_$idm_catégorie 
				             WHERE Id_Produit = $id_autre_produit");
				$sql->next_row_assoc();
				//Récupération du coût de revient total
				$sql2->query("SELECT i.id,
				                     nom,
				                     unite,
				                     (cout_achat/poids_net*(100+perte)/100) AS prix_revient,
				                     q
				             FROM ingredient i,
				                  composition c
				             WHERE i.id = c.ingredient
				               AND type = $idm_catégorie
				               AND produit = $id_autre_produit
				             ORDER BY nom");
				while ($sql2->next_row_assoc())
				{
					//Génération du tableau des ingrédients
					$ingrédients_produits_finis[$sql2->row["id"]]["nom"] = $sql2->row["nom"];
					$ingrédients_produits_finis[$sql2->row["id"]]["unite"] = $sql2->row["unite"];
					$ingrédients_produits_finis[$sql2->row["id"]]["qte"] = $sql2->row["q"] * $qté;
					$ingrédients_produits_finis[$sql2->row["id"]]["cout_revient"] = $sql2->row["prix_revient"];
					$ingrédients_produits_finis[$sql2->row["id"]]["total"] = $sql2->row["prix_revient"] * $sql2->row["q"] * $qté;
					//Coût de revient des produits finis
					$sql->row["cout_revient"] += $sql2->row["prix_revient"] * $sql2->row["q"];
				}
				$sql->row["categorie"] = $idm_catégorie;
				$sql->row["qte"] = $qté;
				$sql->row["total"] = $qté * $sql->row["cout_revient"];
				$produits_finis[] = $sql->row;
				$montant_perte_produits_finis += $qté * $sql->row["cout_revient"];
			}
		}
	}
  }

  else //Vérification des données en base pour cette session
{
	//Récupération des produits finis
	$sql->query("SELECT DISTINCT(produit),categorie,qte_produit FROM session_perte WHERE sid = $sid AND produit <> 0");
	while ($sql->next_row_assoc())
	{
		if ($sql->row["categorie"] == 1)
		{
			//Récupération des caractéristiques générales
			$sql2->query("SELECT tid id,
			                    pizza_tarif.id pizza,
			                    CONCAT(article,' ',abreviation) nom
             		             FROM pizza_tarif,
			                  pizza 
			             WHERE tid = {$sql->row["produit"]}
			               AND pizza_tarif.id = pizza.id");
		}
		else
		{
			//Récupération des caractéristiques générales
			$sql2->query("SELECT Article nom
			              FROM produit_{$sql->row["categorie"]}
			              WHERE Id_Produit = {$sql->row["produit"]}");
		}
		$sql2->next_row_assoc();
		$sql2->row["qte"] = $sql->row["qte_produit"];
		$produits_finis[] = $sql2->row;
	}
	//Récupération des ingrédients des produits finis
	$sql->query("SELECT ingredient,nom,qte_ingredient,unite,cout_unitaire FROM session_perte s ,ingredient i WHERE sid = $sid AND produit <> 0 AND s.ingredient = i.id");
	while ($sql->next_row_assoc())
	{
		$ingrédients_produits_finis[$sql->row["ingredient"]]["nom"] = $sql->row["nom"];
		$ingrédients_produits_finis[$sql->row["ingredient"]]["unite"] = $sql->row["unite"];
		$ingrédients_produits_finis[$sql->row["ingredient"]]["qte"] += $sql->row["qte_ingredient"];
		$ingrédients_produits_finis[$sql->row["ingredient"]]["total"] += $sql->row["cout_unitaire"]*$sql->row["qte_ingredient"];
		$montant_perte_produits_finis += $sql->row["cout_unitaire"]*$sql->row["qte_ingredient"];
	}
}
  //Ingrédients seuls
  if (!empty($_SESSION[PERTE][INGREDIENTS]))
    {
	foreach ($_SESSION[PERTE][INGREDIENTS] as $id_ingrédient=>$qté)
	{
		//Récupération du coût de revient total
		$sql->query("SELECT id,
		                     nom,
		                     unite,
		                     (cout_achat/poids_net*(100+perte)/100) AS prix_revient
		              FROM ingredient
		              WHERE id = $id_ingrédient");
		$sql->next_row_assoc();
		//Génération du tableau des ingrédients
		$sql->row["qte"] = $qté;
		$sql->row["total"] = $qté * $sql->row["prix_revient"];
		$ingrédients_seuls[] = $sql->row;
		$montant_perte_ingrédients_seuls += $qté * $sql->row["prix_revient"];
	}
  }
  else //Vérification des données en base pour cette session
  {
	$sql->query("SELECT ingredient,nom,qte_ingredient qte,unite,qte_ingredient*cout_unitaire AS total FROM session_perte s ,ingredient i WHERE sid = $sid AND produit = 0 AND s.ingredient = i.id");
	while ($sql->next_row_assoc())
	{
		$ingrédients_seuls[] = $sql->row;
		$montant_perte_ingrédients_seuls += $sql->row["total"];
	}
}

  /*
$IT->fwrite(strftime("%d/%m/%Y %H:%M"));
  $IT->ln();
  */
$titre = "Journal de caisse";
if ($journal_intermédiaire == true)
	$titre	 .= " intermédiaire";
  $IT->fwriteb($titre);
  $IT->ln();
if ($journal_intermédiaire == true){
  $IT->fwriteb('Imprimé ou visualisé à '.strftime("%Hh%M"));
  $IT->ln();
}
  $IT->fwriteb('Session n°'.$sid.' du '.strftime("%d/%m/%Y",strtotime($session['date_ouv'])));
  $IT->ln();
if ($journal_intermédiaire == false){
  $IT->fwrite('Ouverte à '.strftime("%Hh%M",strtotime($session['date_ouv'])).' par '.$prenom_ouv);
  $IT->ln();
  $IT->fwrite('Fermée à '.strftime("%Hh%M",strtotime($session['date_ferm'])).' par '.$prenom_ferm);
  $IT->ln();
}
  $IT->ln();
  $IT->fwriteb($enseigne['enseigne']);
  $IT->ln();
  $IT->fwrite($enseigne['m_adresse']);
  $IT->ln();
  $IT->fwrite($enseigne['m_code_postal'].' '.$enseigne['m_ville']);
  $IT->ln();
  $IT->ln();
  

  if ($sql->query("SELECT * 
                   FROM personnel 
                   WHERE id={$session['employe_ouv']}"))
    {
      if ($sql->next_row_assoc())
	{
	  $employe_ouv = $sql->row;
	}
      $sql->free();
    }
  
  if (!$sql->query("SELECT * FROM type_produit ORDER BY id"))
    return false;
  
  $autres_types=array();
  $type2name=array();
  $type2tva=array();
  // parcours les types de produits pour creer un tableau qui fait la correspondance entre id et nom
  while($sql->next_row_assoc())
    {
      switch($sql->row['type'])
	{
	case 'pizza':
	  $pizza_type=$sql->row;
	  $pizza_type['tva']= round( $pizza_type['tva'],1 );
	  break;
	case 'menu':
	  $menu_type = $sql->row;
	  $menu_type['tva'] = round( $menu_type['tva'],1 );
	  break;
	case 'plateau':
	  $plateau_type = $sql->row;
	  $plateau_type['tva'] = round( $plateau_type['tva'],1 );
	  break;
	default:
	  $autres_types[$sql->row['id']]=$sql->row;
	  $autres_types[$sql->row['id']]['tva']=round($autres_types[$sql->row['id']]['tva'],1);
	  break;
	}
      $type2name[$sql->row['id']]=$sql->row['nom'];
      $type2tva[$sql->row['id']]=round($sql->row['tva'],1);
      
    }
  
 $sql->free();


 // calcul des differents taux de tva en fontction du type de panier
 $tva_sur_place='19.6'; // par defaut au cas ou
  
 if ($sql->query('SELECT tva_sur_place FROM enseigne WHERE id=1'))
   {
     if ($sql->next_row())
       {
	 $tva_sur_place=strval(round($sql->row[0],1));
       }
  
     $sql->free();
   }


 /* Calcul du CA TTC */
 $IT->fwriteb("Montant du CA BRUT TTC");
 $IT->ln();

 // Calcul du CA par categorie
 $ca = array();
 $nb = array(); // nombre de produits par categories
 $ca_promos = array();
 $ca_ht = array(); // tableau suivant la tva
 $tva = array();
 if ($sql->query("SELECT * 
                  FROM commande 
                  WHERE sid = $sid 
                    AND annulation IS NULL 
                  ORDER BY date"))
   {
     while($sql->next_row_assoc())
       {
	 $panier = unserialize($sql->row['panier']);
	 
	 foreach( $panier->items as $p_id=>$item)
	   { 
	     if ($item->nb>0)
	       {
		 switch($item->type)
		   {
		   case 'menu':
		     $inc = $item->Total();
		     $ca[$menu_type['id']]+=$inc;
		     $nb[$menu_type['id']]+=$item->nb;

		     if ($sql->row['mode']=='surplace')
		       {
			 $tva[$tva_sur_place]+=  $inc*$tva_sur_place/(100.0+$tva_sur_place);
			 
			 $ca_ht[$tva_sur_place]+=$inc;
		       }
		     else
		       {
			 $tva[strval($menu_type['tva'])]+= $inc*$menu_type['tva']/(100.0+$menu_type['tva']);
			 $ca_ht[strval($menu_type['tva'])]+=$inc;
		       }
		     
		     break;
		   case 'plateau':
		     $inc = $item->Total();
		     $ca[$plateau_type['id']]+=$inc;
		     $nb[$plateau_type['id']]+=$item->nb;

		     if ($sql->row['mode'] == 'surplace')
		       {
			 $tva[$tva_sur_place] += $inc * $tva_sur_place / (100.0 + $tva_sur_place);
			 
			 $ca_ht[$tva_sur_place] += $inc;
		       }
		     else
		       {
			 $tva[strval($menu_type['tva'])]+= $inc*$menu_type['tva']/(100.0+$menu_type['tva']);
			 $ca_ht[strval($menu_type['tva'])]+=$inc;
		       }
		     
		     break;
		   case 'quantite':
		     $inc= $item->Total();
		     $ca[$autres_types[$item->produit_id]['id']]+=$inc;
		     $nb[$autres_types[$item->produit_id]['id']]++;
		     
		     if ($sql->row['mode']=='surplace')
		       {
			  $tva[$tva_sur_place]+= $inc*$tva_sur_place/(100.0+$tva_sur_place);
			  $ca_ht[$tva_sur_place]+=$inc;
		       }
		      else
			{
			  $tva[strval($autres_types[$item->produit_id]['tva'])]+= $inc*$autres_types[$item->produit_id]['tva']/(100.0+$autres_types[$item->produit_id]['tva']);
			  $ca_ht[strval($autres_types[$item->produit_id]['tva'])]+=$inc;
			}
		     
		     break;
		   case 'pizza':
		     $inc= $item->Total();
		     $ca[$pizza_type['id']]+=$inc;
		     $nb[$pizza_type['id']]+=$item->nb;;
		     if ($sql->row['mode']=='surplace')
		       {
			 $tva[$tva_sur_place]+= round( $inc*$tva_sur_place/(100.0+$tva_sur_place),2);
			 $ca_ht[$tva_sur_place]+=$inc;
		       }
		     else
		       {
			 $tva[strval($pizza_type['tva'])]+= $inc*$pizza_type['tva']/(100.0+$pizza_type['tva']);
			 $ca_ht[strval($pizza_type['tva'])]+=$inc;
		       }
		     
		     break;
		   default:
		     $inc= $item->Total();
		     $ca[$autres_types[$item->type]['id']]+=$inc;
		     $nb[$autres_types[$item->type]['id']]+=$item->nb;
		     
		     if ($sql->row['mode']=='surplace')
			{
			  $tva[$tva_sur_place]+= $inc*$tva_sur_place/(100.0+$tva_sur_place);
			  $ca_ht[$tva_sur_place]+=$inc;
			}
		      else
			{
			  $tva[strval($autres_types[$item->type]['tva'])]+= $inc*$autres_types[$item->type]['tva']/(100.0+$autres_types[$item->type]['tva']);
			  $ca_ht[strval($autres_types[$item->type]['tva'])]+=$inc;
			}
		      break;
		    }
		}
	    }
	  

	 $coupons=array();
	 // maintenant pour les promos
	  if (is_array($panier->coupons))
	    foreach( $panier->coupons as $p_id=>$coupon)
	    { 
	      // Forcer les coupons orphelins ainsi que les coupons manager a être de type pizza
	      if ($coupon->type=='8' or $coupon->type=='')
		$coupon->type_produit=$pizza_type['id'];

	      // Maitentant les coupons sont aussi classés par type produit
	      if (!is_array($ca_promos[$coupon->type_produit]))
		{
		  $ca_promos[$coupon->type_produit] = array();
		  $nb_promos[$coupon->type_produit] = array();
		}
	      $ca_promos[$coupon->type_produit][$coupon->nom]+=$coupon->montant;
	      $nb_promos[$coupon->type_produit][$coupon->nom]++;
	      
	      $ca_ht[strval($type2tva[$coupon->type_produit])]-=$coupon->montant;
	    }
	}
     $sql->free();
   }
 
 ksort($ca_promos);
 ksort($ca);
 
 $total=0;
 $total_nb=0;
 foreach($ca as $key=>$val)
   {
 
    $total += $val;
     $total_nb += $nb[$key];
     

     $IT->fwrite("CA {$type2name[$key]} TTC",-27);
     $IT->fwrite(' ');
     $IT->fwrite($nb[$key],3);
     $IT->fwrite(' ');
     $IT->mwrite($val,8);
     $IT->ln();
   }

 $IT->fwrite(' ',-28);
 $IT->fwrite('------------');
 $IT->ln();
 $IT->fwrite('CA Total TTC',-28);
 $IT->fwrite($total_nb,3);
 $IT->fwrite(' ');
 $IT->mwrite($total,8);
 $IT->ln();

 //$sql->query("UPDATE session set ca_ttc='$total' where sid='$sid'");
 
 $IT->ln();
 $IT->fwriteb("Montant des remises TTC",-28);
 $IT->ln();
 
 $text='';
 $total=0;
 $total_nb=0;
 foreach($ca_promos as $type=>$coupons)
   {
     foreach($coupons as $key=>$val)
       {
	 $total += $val;
	 $total_nb += $nb_promos[$type][$key];
	 
	 $IT->fwrite("$key",-28);
	 $IT->fwrite(' ');
	 $IT->fwrite($nb_promos[$type][$key],3);
	 $IT->fwrite(' ');
	 $IT->mwrite($val,7);
	 $IT->ln();
       }
   }
 $IT->fwrite(' ',-29);
 $IT->fwrite('-----------');
 $IT->ln();
 $IT->fwrite('Total des remises TTC',-29);
 $IT->fwrite($total_nb,3);
 $IT->fwrite(' ');
 $IT->mwrite($total,7);
 $IT->ln();

 $IT->ln();
 $IT->fwriteb("Montant du CA NET TTC",-28);
 $IT->ln();

 $total=0;
 $total_nb=0;
 $ca_net=array();
 foreach($ca as $key=>$val)
   {
     if (is_array($ca_promos[$key]))
       $val-=array_sum($ca_promos[$key]);

     $total += $val;
     $ca_net[$key]=$val;
     $total_nb += $nb[$key];
     
     $IT->fwrite("CA {$type2name[$key]} TTC",-27);
     $IT->fwrite(' ');
     $IT->fwrite($nb[$key],3);
     $IT->fwrite(' ');
     $IT->mwrite($val,8);
     $IT->ln();
   }

 $IT->fwrite(' ',-28);
 $IT->fwrite('------------');
 $IT->ln();
 $IT->fwrite('CA Net Total TTC',-28);
 $IT->fwrite($total_nb,3);
 $IT->fwrite(' ');
 $IT->mwrite($total,8);
 $IT->ln();
 
 $total_montant=$total;

 $IT->ln();
 $IT->fwriteb("CA par répartition TVA",-28);
  $IT->ln();
  
  $CA_total_HT=0;
//Récupération des données en base
$sql->query('SELECT taux,SUM(ca_net_ht) ca_net_ht FROM session_tva,tva WHERE session_tva.tva = tva.id AND session = '. $sid . ' GROUP BY tva');
if( !$sql->numrows )
     include ( 'maj_session_tva.php' );
while($sql->next_object())
{       
    $CA_total_HT += $sql->object->ca_net_ht;
    $IT->fwrite("CA HT TVA ".$sql->object->taux."%",-30);
    $IT->fwrite(' ');
    $IT->mwrite($sql->object->ca_net_ht,9);
    $IT->ln();
}
$text.=sprintf("%-30s"," ").'-------'."\n";
  
  
 $IT->fwrite(' ',-32);
 $IT->fwrite('--------');
 $IT->ln();
 $IT->fwrite("CA total HT",-31);
 $IT->fwrite(' ');
 $IT->mwrite($CA_total_HT,8);
 $IT->ln();
  

 //$sql->query("UPDATE session set ca_ht='$total' where sid='$sid'");

 $IT->ln();
 if ($produits_finis || $ingrédients_seuls)
  {
	if ($produits_finis)
	{
		$IT->fwriteb("Perte produits finis");
		$IT->ln();
		foreach ($produits_finis as $produit_fini)
		{	
			$IT->fwrite($produit_fini["nom"],-29);
			$IT->fwrite(" ");
			$IT->fwrite($produit_fini["qte"]);
			$IT->fwrite(" ");
			$IT->ln();
		}
		$IT->ln();
		$IT->fwrite("Détail ingrédients");
		$IT->ln();
		foreach ($ingrédients_produits_finis as $ingrédient_produit_fini)
		{
			$IT->fwrite($ingrédient_produit_fini["nom"],-24);
			$IT->fwriteb(" ");
			$IT->fwrite($ingrédient_produit_fini["qte"],5);
			$IT->fwriteb(" ");
			$IT->fwrite($ingrédient_produit_fini["unite"],2);
			$IT->fwriteb(" ");
			$IT->mwrite($ingrédient_produit_fini["total"],6);
			$IT->ln();
		}
 		$IT->fwrite(' ',-33);
		$IT->fwrite('--------');
		$IT->ln();
		$IT->fwrite(' ',-34);
	 	$IT->fwrite(' ');
		$IT->mwrite($montant_perte_produits_finis,5);
		$IT->ln();
	}
	if ($ingrédients_seuls)
	{
		$IT->fwriteb("Perte ingrédients");
		$IT->ln();
		foreach($ingrédients_seuls as $ingrédient_seul)
		{	
			$IT->fwrite($ingrédient_seul["nom"],-24);
			$IT->fwriteb(" ");
			$IT->fwrite($ingrédient_seul["qte"],5);
			$IT->fwriteb(" ");
			$IT->fwrite($ingrédient_seul["unite"],2);
			$IT->fwriteb(" ");
			$IT->mwrite($ingrédient_seul["total"],6);
			$IT->ln();
		}
		$IT->fwrite(' ',-33);
		$IT->fwrite('--------');
		$IT->ln();
		$IT->fwrite(' ',-32);
		$IT->mwrite($montant_perte_ingrédients_seuls,8);
	}
     }
 else
  {
	$IT->fwriteb("Pertes");
	$IT->ln();
 	$IT->fwrite("Aucune perte pour cette session.");
	$IT->ln();
  }

 $achats=@unserialize($session['achats']);
 if (is_array($achats))
   {
     $IT->ln();
     $IT->fwriteb("Achats");
     $IT->ln();
     if (count($achats)>0)
       {
	 foreach($achats as $achat)
	   {
	     $IT->fwrite($achat['objet'],-31);
	     $IT->fwrite(' ');

	     $IT->mwrite($achat['prix'],8);
	     
	     $IT->ln();
	   }
	 
	 $IT->fwrite(' ',-31);
	 $IT->fwrite(' ');
	 $IT->fwrite('--------');
	 $IT->ln();
	 $IT->fwrite('Total',-31);
	 $IT->fwrite(' ');
	 $IT->mwrite($session['total_achats'],8);
	 $IT->ln();
	 
       }
     else
       {
	 $IT->fwrite("Aucun achat pour cette session.");
	 $IT->ln();
       }
   }
 
  $IT->ln();
 $IT->fwriteb("Masse salariale");
 $IT->ln();

 /*
  * La masse salariale
  */
 if ($sql->query("SELECT e.id,
                         e.nom,
                         e.prenom,
                         e.taux_horaire,
                         e.panier,
                         e.coupure,
                         SUM((TIME_TO_SEC(p.fin) - TIME_TO_SEC(p.debut))/3600) AS temps,
                         COUNT(DISTINCT p.sid) AS services,
                         COUNT(p.id)-COUNT(DISTINCT p.sid) AS coupures
                  FROM pointage p,
                       personnel e 
                  WHERE sid = $sid
                    AND e.id=p.employe 
                  GROUP BY e.id
                  ORDER BY e.nom"))
    {

      if ($sql->numrows>0)
	{
	  $t_temps=0;
	  $t_cout=0;
	  while($sql->next_row_assoc())
	    {
	      $cout= round($sql->row['taux_horaire']*$sql->row['temps']+$sql->row['panier']*$sql->row['services']+$sql->row['coupure']*$sql->row['coupures'],2);
              $IT->fwrite($sql->row['nom'],-8);
	      $IT->fwrite(' ');
	      $IT->fwrite($sql->row['prenom'],-8);
	      $IT->fwrite(' ');
	      $IT->mwrite($sql->row['temps'],6);
	      $IT->fwrite('H ');
	      $IT->mwrite($cout,6);
	      $IT->ln();
	      $t_temps+=$sql->row['temps'];
	      $t_cout+=$cout;
	    }

	   $IT->fwrite('Total',-18);
	   $IT->mwrite($t_temps,6);
	   $IT->fwrite('H ');
	   $IT->mwrite($t_cout,6);
	   $IT->fwrite(' ');
	   if ($total>0)
	     $IT->mwrite($t_cout/$CA_total_HT*100,6);
	   $IT->fwrite('%');
	   $IT->ln();
	}
      else
	{
	  $IT->fwrite('Pas d\'informations de pointage.');
	  $IT->ln();
	}
      $sql->free();
    }



 /* Classer les commandes en tableaux suivant leur mode de commande */
 $commandes=array();
 $totaux=array(); // total en fonction du mode (livraison...) et de cb,cheque,espece...
 
 if ($sql->query("SELECT  *  FROM  commande WHERE  sid='$sid' and annulation is NULL ORDER BY DATE ASC"))
   {
      while($sql->next_row_assoc())
	{
	  $sql->row['paye'] = $sql->row['cb']+$sql->row['espece']+$sql->row['cheque']+$sql->row['tr'];
	  $sql->row['solde'] = $sql->row['montant'] - $sql->row['paye'];
	  
	  if ($sql2->query("SELECT idc,tel,portable,nom,prenom FROM `client`  WHERE  idc = {$sql->row['client']}"))
	    {
	      if ($sql2->next_row_assoc())
		{
		  $sql->row['client_data']=$sql2->row;
		}
	      else
		{
		  $sql->row['client_data']=array('tel'=>'0000000000','nom'=>"Comptoir");
		}
	      $sql2->free();
	    }
	  else    
	    $sql->row['client_data']= array();
	  
	  if (!is_array($totaux[$sql->row['mode']]))
	    {
	      $totaux[$sql->row['mode']]=array();
	    }
	  if (!is_array($commandes[$sql->row['mode']]))
	    $commandes[$sql->row['mode']]=array();
      
      
	  $commandes[$sql->row['mode']][$sql->row['id']] = $sql->row;

	  $totaux[$sql->row['mode']]['cb']+=$sql->row['cb'];
	  $totaux[$sql->row['mode']]['espece']+=$sql->row['espece'];
	  $totaux[$sql->row['mode']]['cheque']+=$sql->row['cheque'];
	  $totaux[$sql->row['mode']]['tr']+=$sql->row['tr'];
	  
	  $totaux[$sql->row['mode']]['montant']+=$sql->row['montant'];
      
	}
      $sql->free();
   }

 $IT->ln();
 $IT->fwriteb("Répart. CA par type de vente");
 $IT->ln();
 

 if (count($totaux)>0)
   foreach($totaux as $mode=>$val)
   {
     $IT->fwrite(ucfirst($mode),-10);
     $IT->fwrite(' ');
     
     $IT->mwrite($val['montant'],6);
     $IT->fwrite(' soit ');
     
     if ($total_montant>0)
       {
	 $perc= $val['montant']*100.0/$total_montant;
	 $IT->mwrite($perc,6);
	 $IT->fwrite(' %');
       }
     
     $IT->ln();
   }

 $IT->ln();
 //Répart. commandes par type de vente
 
 //Récupération des quantités de chaque type de vente
 $sql->query("SELECT mode,COUNT(id) qte
               FROM commande 
               WHERE sid = $sid and annulation IS NULL
               GROUP BY mode");
 while($sql->next_row_assoc())
   $types_vente[$sql->row["mode"]]=$sql->row["qte"];
 $sql->query("SELECT COUNT(id) qte_totale
               FROM commande 
               WHERE sid = $sid and annulation IS NULL");
 $sql->next_row_assoc();
 $qte_totale=$sql->row["qte_totale"];
 
 $IT->fwriteb("Répart. commandes par type de vente");
 $IT->ln();
 foreach ($types_vente as $type_vente=>$qte)
	  {
	    $IT->fwrite(ucfirst($type_vente),-10);
	    $IT->fwrite(' ');
	    $IT->fwrite(number_format($qte,0,","," "),4);
	    $IT->fwrite(' soit ');
	    $IT->fwrite(round($qte/$qte_totale*100)."%");
	    $IT->ln();
	  }
 $IT->fwrite('---------------');
 $IT->ln();
 $IT->fwrite('Total',-10);
 $IT->fwrite(' ');
 $IT->fwrite(number_format($qte_totale,0,","," "),4);
 
	//Encaissements 
 
 $IT->ln();
 $IT->fwriteb("Encaissements",-28);
 $IT->ln();
 
 $total=array();
 foreach($totaux as $mode=>$data)
   {
     $totaux[$mode]['solde']=round($totaux[$mode]['montant']-$totaux[$mode]['cb']-$totaux[$mode]['espece']-$totaux[$mode]['cheque']-$totaux[$mode]['tr'],2);
     
     $total['montant']+=$totaux[$mode]['montant'];
     $total['cb']+=$totaux[$mode]['cb'];
     $total['espece']+=$totaux[$mode]['espece'];
     $total['cheque']+=$totaux[$mode]['cheque'];
     $total['tr']+=$totaux[$mode]['tr'];
     $total['solde']+=$totaux[$mode]['solde'];
    }
 

 $total['espece_apres_achats']=round($total['espece']-$session['total_achats'],2);
 $total['montant_apres_achats']=round($total['montant']-$session['total_achats'],2);
 
 $IT->fwrite("      Esp.   Ch.    CB     TR     Mont.");
 $IT->ln();

 foreach($totaux as $mode=>$val)
   {
     $IT->fwrite(ucfirst($mode),-3);
     $IT->fwrite(' ');
     $IT->mwrite($val['espece'],6);
     $IT->fwrite(' ');
     $IT->mwrite($val['cheque'],5);
     $IT->fwrite(' ');
     $IT->mwrite($val['cb'],7);
     $IT->fwrite(' ');
     $IT->mwrite($val['tr'],6);
     $IT->fwrite(' ');
     $IT->mwrite($val['espece']+$val['cheque']+$val['cb']+$val['tr'],8,false);
     $IT->ln();
   }
 $IT->write('----------------------------------------');
 $IT->ln();
 $IT->fwrite('Total',-3);
 $IT->mwrite($total['espece'],7,false);
 $IT->fwrite(' ');
 $IT->mwrite($total['cheque'],5);
 $IT->fwrite(' ');
 $IT->mwrite($total['cb'],7,false);
 $IT->fwrite(' ');
 $IT->mwrite($total['tr'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['espece']+$total['cheque']+$total['cb']+$total['tr'],8,false);
 $IT->ln();
 
 $IT->fwrite('Achat',-3);
 $IT->fwrite(' ');
 $IT->mwrite($session['total_achats'],6);
 $IT->ln();

 $IT->fwrite('Caisse',-3);
 $IT->mwrite($total['espece_apres_achats'],7,false);
 $IT->fwrite(' ');
 $IT->mwrite($total['cheque'],5);
 $IT->fwrite(' ');
 $IT->mwrite($total['cb'],7,false);
 $IT->fwrite(' ');
 $IT->mwrite($total['tr'],6);
 $IT->fwrite(' ');
// $IT->mwrite($total['montant_apres_achats'],6);
 $IT->ln();
 

 
/*

 $IT->ln();
 $IT->fwrite("Cumul   Esp.   Ch.    CB     TR     Mont.");
 $IT->ln();

 $IT->fwrite('Session');
 $IT->fwrite(' ');
 $IT->mwrite($total['espece'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['cheque'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['cb'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['tr'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['montant'],6);
 $IT->ln();
 
 $IT->fwrite('Caisse ');
 $IT->fwrite(' ');
 $IT->mwrite($total['espece_apres_achats'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['cheque'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['cb'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['tr'],6);
 $IT->fwrite(' ');
 $IT->mwrite($total['montant_apres_achats'],6);
 $IT->ln();
*/

 if (trim($session['rapport'])!='')
   {
     $IT->ln();
     $IT->fwriteb("Rapport");
     $IT->ln();
     $IT->fwritec($session['rapport'],40);
     $IT->ln();
   }
 
 if (trim($session['observation'])!='')
   {
     $IT->ln();
     $IT->fwriteb("Observations");
     $IT->ln();
     $IT->fwritec($session['observation'],40);
   }
 
 $IT->ln();
 $IT->fwriteb("Tickets annulés");
 $IT->ln();
 if ($sql->query("SELECT * 
		  FROM commande 
		  WHERE sid = $sid 
		    AND annulation IS NOT NULL 
		  ORDER BY date ASC"))
   {
    
     if ($sql->numrows>0)
       {
	 while($sql->next_row_assoc())
	   {
	     $IT->fwrite($sql->row['id'],-6);
	     $IT->fwritec($sql->row['annulation'],40);
	     $IT->ln();
	   }
       }
     else
       {
	 $IT->fwrite('aucun');
	$IT->ln();
       }
   }
 $IT->fwriteb("Remises exceptionnelles");
 $IT->ln();
 $aucune = true;
 if ($sql->query("SELECT id,panier 
		  FROM commande 
		  WHERE sid = $sid"))
   {
     if ($sql->numrows>0)
       {
	 while($sql->next_row_assoc())
	   {
		$panier = unserialize(stripslashes($sql->row["panier"]));
		foreach($panier->coupons as $coupon)
		{
			if (!empty($coupon->motif))
			{
			     $aucune = false;
			     $IT->fwrite($sql->row["id"],-6);
			     $IT->fwritec($coupon->motif,40);
			     $IT->ln();
			}
		}
	   }
       }
   }
     if ($aucune == true)
      {
	 $IT->fwrite('aucune');
	 $IT->ln();
       }
 $IT->fwriteb("Coupons fidélité");
 $IT->ln();
 $aucun = true;
if ($sql->query("SELECT id,panier 
		  FROM commande 
		  WHERE sid = $sid"))
   {
     if ($sql->numrows>0)
       {
	 while($sql->next_row_assoc())
	   {
		$panier = unserialize(stripslashes($sql->row["panier"]));
		foreach($panier->coupons as $coupon)
		{
			if ($coupon->type == 17)
			{
			     $aucun = false;
			     $IT->fwrite($sql->row["id"],-6);
			     $IT->fwritec($coupon->infos,40);
			     $IT->ln();
			}
   		}
	   }
       }
    }
 if ($aucun == true)
 {
	$IT->fwrite("aucun");
        $IT->ln();
 }
 $IT->fwriteb("Tickets d'achat différé");
 $IT->ln();
 $aucun = true;
if ($sql->query("SELECT id,
                        panier 
		  FROM commande 
		  WHERE sid = $sid"))
   {
     if ($sql->numrows>0)
       {
	 while($sql->next_row_assoc())
	   {
		$panier = unserialize(stripslashes($sql->row["panier"]));
		foreach($panier->coupons as $coupon)
		{
			if ($coupon->type == 16)
			{
			     $aucun = false;
			     $IT->fwrite($sql->row["id"],-6);
			     $IT->fwritec('débité sur '.$coupon->cde_origine,40);
			     $IT->ln();
			}
   		}
	   }
       }
    }
 if ($aucun == true)
 {
	$IT->fwrite('aucun');
        $IT->ln();
 }

	   
 $IT->cut();
 $IT->close();
}
?>
