<?php
require("class.ImpressionTicket.php");
function get_journal_text($sid,$debug=false)
{
  $IT= new ImpressionTicket($debug);
  
  $sql=new DB();
  $sql2=new DB();
  
	  //Récupération du nombre de tickets annulés
	  $sql->query("SELECT COUNT(id) nb
			             FROM commande
	                             WHERE annulation IS NOT NULL");
	  $sql->next_object();
	  $session->nb_tickets_annulés = $sql->object->nb;
	  $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);
	  $employé_ouverture = $sql2->next_object();
	  $prenom_ouv = $employé_ouverture->prenom;
	  $sql2->query("SELECT prenom 
			              FROM personnel
			              WHERE id = ".$session->employe_ferm);
	  $employé_fermeture = $sql2->next_object();
	  $prenom_ferm = $employé_fermeture->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_object())
	{
	  $enseigne = $sql->object;
	  $sql->free();
	}
    }
  
  $titre = "Ticket";
  if ($journal_intermédiaire == true)
    $titre	 .= " intermédiaire";
  else
    $titre	 .= " session comptable";
  $IT->fwriteb(" ",$IT->centrer($titre));
  $IT->fwriteb($titre,-35);
  $IT->ln();
  if ($journal_intermédiaire == true)
    {
      $IT->fwriteb(" ",$IT->centrer("Imprimé ou visualisé à ".strftime("%Hh%M")));
      $IT->fwriteb("Imprimé ou visualisé à ".strftime("%Hh%M"));
      $IT->ln();
    }
  $IT->fwriteb(" ",$IT->centrer("Session ".$sid." du ".strftime("%d/%m/%Y",strtotime( $session->date_ouv ))));
  $IT->fwriteb("Session ".$sid." du ".strftime("%d/%m/%Y",strtotime( $session->date_ouv )));
  $IT->ln();
  $IT->fwriteb(" ",$IT->centrer("Montants exprimés en euro"));
  $IT->fwrite("Montants exprimés en euro");
  /*
   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("-----------------------------------------");
   $IT->ln();
   $IT->fwriteb(" ",(42-strlen($enseigne->enseigne))/2);
   $IT->fwriteb($enseigne->enseigne);
   $IT->ln();
   $IT->fwriteb(" ",(42-strlen($enseigne->m_adresse))/2);
   $IT->fwrite( $enseigne->m_adresse );
   $IT->ln();
   $IT->fwriteb(" ",(42-strlen($enseigne->m_code_postal." ".$enseigne->m_ville))/2);
   $IT->fwrite( $enseigne->m_code_postal . " " . $enseigne->m_ville );
   $IT->ln();
  $IT->fwriteb("-----------------------------------------");
   $IT->ln();
   $IT->fwriteb("Chiffre d'affaires brut TTC.. ");
   $IT->mwrite($session->ca_ttc,6);
   $IT->ln();
   $IT->fwrite("Remises - Promotions TTC.....");
   $IT->fwrite(" ");
   $IT->mwrite($session->total_remises,6);
   $IT->fwrite(" ");
   $IT->fwrite(round($session->total_remises/$session->ca_ttc*100)."%",3);
   $IT->ln();
   $IT->fwrite(" ",30);
   $IT->fwrite("--------");
   $IT->ln();
   $IT->fwriteb("Chiffre d'affaires net TTC...");
   $IT->fwrite(" ");
   $IT->mwrite($ca_net_ttc = $session->ca_ttc - $session->total_remises , 8 );
   $IT->ln();
   $IT->fwrite(" ",2);
   $IT->fwrite("TVA........................",-27);
   $IT->fwrite(" ");
   $IT->mwrite($tva = $session->ca_ttc - $session->total_remises - $session->ca_ht,8);
   $IT->fwrite(" ");
   $IT->fwrite(round($tva/$ca_net_ttc*100)."%",3);
   $IT->ln();
   $taux_tva=array("ht_5_5"=>5.50,
   "ht_19_6"=>19.6);
   $IT->fwrite(" ",30);
   $IT->fwrite("--------");
   $IT->ln();
   $IT->fwriteb("Chiffre d'affaires net HT....");
   $IT->fwrite(" ");
   $IT->mwrite($session->ca_ht,8);
   $IT->ln();
   foreach ($taux_tva as $id=>$taux){
   if ($session->$id){
   $IT->fwrite(" ",2);
   $IT->fwrite("dont assujeti à $taux%...........",27);
   $IT->fwrite(" ");
   $IT->mwrite($session->$id , 8);
   if (round($session->$id/$session->ca_ht*100)!=100){
   $IT->fwrite(" ");
   $IT->fwrite(round($session->$id/$session->ca_ht*100)."%",3);
   }
   $IT->ln();
   }
   }
   $IT->ln();
   $IT->fwriteb("Ventilation de la TVA par taux");
   $IT->ln();
   $sql->query("SELECT tva.taux,tva FROM tva,session_tva WHERE tva.id=session_tva.taux AND session=$session->sid");
   while ($sql->next_object)
   {
   $taux=$sql->object;
   $IT->fwrite(" ",2);
   $IT->fwrite("$taux->taux%.......................",27);
   $IT->fwrite(" ");
   $IT->mwrite($taux->tva, 8);
   if (round($taux->tva / $tva * 100) != 100){
   $IT->fwrite(" ");
   $IT->fwrite(round($session->$id * $taux / 100 / $tva * 100)."%",3);
   }
   $IT->ln();
   }
   $IT->fwrite(" ",30);
   $IT->fwrite("--------");
   $IT->ln();
   $IT->fwrite(" ",2);
   $IT->fwrite("Total......................");
   $IT->fwrite(" ");
   $IT->mwrite($tva,8);
   $IT->ln();
   $IT->ln();
   $IT->fwriteb("Ventilation CA net TTC par mode règlement");
   $IT->ln();
   $modes=array("espece"=>"Espèce",
   "cheque"=>"Chèque",
   "cb"=>"Carte bancaire",
   "tr"=>"Ticket restaurant");
   ksort($modes);
   foreach ($modes as $id=>$mode){
   if ($session->$id){
   $IT->fwrite(" ",2);
   $IT->fwrite($mode."............................",27);
   $IT->fwrite(" ");
   $IT->mwrite($session->$id,8);
   $IT->fwrite(" ");
   $IT->fwrite(round($session->$id/$ca_net_ttc*100)."%",3);
   $IT->ln();
   }
   }
   $IT->fwrite(" ",-30);
   $IT->fwrite("--------");
   $IT->ln();
   $IT->fwrite(" ",2);
   $IT->fwrite("Total......................");
   $IT->fwrite(" ");
   $IT->mwrite($session->espece+$session->cheque+$session->cb+$session->tr,8);
   $IT->ln();
   $IT->ln();
   $IT->fwriteb("Ventilation CA net TTC par mode commande");
   $IT->ln();
   $modes_commande=array("emporte"=>"Emporté",
   "livraison"=>"Livraison",
   "surplace"=>"Sur place");
   foreach ($modes_commande as $id=>$mode_commande)
   {
   if ($session->$id){
   $IT->fwrite(" ",2);
   $IT->fwrite($mode_commande.".....................",27);
   $IT->fwrite(" ",2);
   $IT->mwrite($session->$id,8);
   $IT->fwrite(" ");
   $IT->fwrite(round($session->$id/$ca_net_ttc*100)."%");
   $IT->ln();
   }
   }
   $IT->fwrite(" ",-30);
   $IT->fwrite("--------");
   $IT->ln();
   $IT->fwrite(" ",2);
   $IT->fwrite("Total......................");
   $IT->fwrite(" ",2);
   $IT->mwrite($ca_net_ttc,8);
   $IT->ln();
   $IT->fwriteb("Ventilation des tickets par mode commande");
   $IT->ln();
   $modes_commande=array("emporte"=>"Emporté",
   "livraison"=>"Livraison",
   "surplace"=>"Sur place");
   foreach ($modes_commande as $id=>$mode_commande)
   {
   if ($session->$id){
   $IT->fwrite(" ",2);
   $IT->fwrite($mode_commande.".....................",27);
   $IT->fwrite(" ",2);
   $IT->mwrite($session->$id,8);
   $IT->fwrite(" ");
   $IT->fwrite(round($session->$id/$ca_net_ttc*100)."%");
   $IT->ln();
   }
   }
   $IT->fwrite(" ",-30);
   $IT->fwrite("--------");
   $IT->ln();
   $IT->fwrite(" ",2);
   $IT->fwrite("Total......................");
   $IT->fwrite(" ",2);
   $IT->mwrite($ca_net_ttc,8);
   $IT->ln();
   $IT->ln();
   if ($session->nb_tickets_annulés){
   $IT->fwriteb("Tickets annulés");
   $IT->ln();
   $sql->query("SELECT id,annulation FROM commande WHERE sid = $session->sid and annulation is not null");
   while ($sql->next_object())
   {
   $ticket = $sql->object;
   $IT->fwrite($ticket->id,-6);
   $IT->fwritec($ticket->annulation,40);
   $IT->ln();
   }
   $IT->ln();
   }
   if ($session->total_perte)
   {
   //Récupération des produits finis déclarés en perte
   $sql->query("SELECT DISTINCT(produit) id,
   categorie,
   qte_produit
   FROM session_perte
   WHERE sid = ".$session->sid);
   while ( $sql->next_object() )
   {
   if($sql->numrows && $sql->object->categorie != 0) // Il y a des produits finis en perte
   {
   $produit_fini = $sql->object;
   //Récupération des désignations et prix de vente
   if ($produit_fini->categorie == 1) // Pizzas
   $sql2->query("SELECT CONCAT('Pizza',' ',article,' ',abreviation) nom , 
   prix 
   FROM pizza p, 
   pizza_tarif pt 
   WHERE p.id=pt.id AND pt.tid=$produit_fini->id");
   else{
   $sql2->query("SELECT article nom,
   PrixVenteTTC prix 
   FROM produit_$produit_fini->categorie 
   WHERE Id_Produit=$produit_fini->id");
   }
   $sql2->next_object();
   $produit_fini->prix = $sql2->object->prix;
   $perte["produits_finis"][$sql2->object->nom] = $produit_fini;
   $perte["produits_finis"][$sql2->object->nom] = $produit_fini;
   }
   }
   //Tri des produits par ordre alphabétique
   if ($perte["produits_finis"])
   ksort($perte["produits_finis"]);
   //Récupération des ingrédients déclarés en perte
   $sql->query("SELECT nom,
   qte_ingredient,
   unite,
   cout_unitaire
   FROM session_perte s,ingredient i
   WHERE s.ingredient=i.id and sid = ".$session->sid);
   while ( $sql->next_object() )
   {
   {
   $ingrédient = $sql->object;
   if ($perte["ingrédients"][$ingrédient->nom])
   $perte["ingrédients"][$ingrédient->nom]->qte_ingredient += $ingrédient->qte_ingredient;
   else
   $perte["ingrédients"][$ingrédient->nom] = $ingrédient;
   }
   }
   //Tri des ingrédients par ordre alphabétique
   ksort($perte["ingrédients"]);
   //Affichage
   if ($perte["produits_finis"])
   {
   $IT->fwriteb("Perte (produits finis)");
   $IT->ln();
   foreach ($perte["produits_finis"] as $nom=>$objet)
   {
   $IT->fwrite($nom."..........................",-26 );
   $IT->fwrite(" ");
   $IT->fwrite($objet->qte_produit,1);
   $IT->fwrite(" ",2);
   $IT->fwrite(number_format($objet->prix,2),5);
   $IT->fwrite(" ",2);
   $IT->mwrite(number_format($objet->prix*$objet->qte_produit,2),5);
   $ca_perte_produits_finis += $objet->prix*$objet->qte_produit;
   $IT->ln();
   }
   $IT->fwrite("",36);
   $IT->fwrite("------");
   $IT->ln();
   $IT->fwrite("Total...........................",-36);
   $IT->fwrite(number_format($ca_perte_produits_finis,2),6);
   $IT->ln();
   $IT->ln();
   }
   $IT->fwriteb("Perte (ingrédients)");
   $IT->ln();
   foreach ($perte["ingrédients"] as $nom=>$objet)
   {
   $objet->total=$objet->qte_ingredient*$objet->cout_unitaire;
   $IT->fwrite($nom."....................",-20 );
   $IT->fwrite(" ");
   if ($objet->unite == "U")
   $nb_déc=0;
   else
	$nb_déc=3;
	$IT->fwrite(number_format($objet->qte_ingredient,$nb_déc),5);
	$IT->write(" ",2);
	$IT->fwrite($objet->unite,2);
	$IT->write(" ",1);
	$IT->fwrite(number_format($objet->cout_unitaire,2),5);
	$IT->mwrite(number_format($objet->total,2));
	$total_perte_ingrédients += $objet->total;
	$IT->ln();
	}
	$IT->fwrite("",36);
	$IT->fwrite("------");
	$IT->ln();
	$IT->fwrite("Total...........................",-36);
	$IT->fwrite(number_format($total_perte_ingrédients,2),6);
	$IT->ln();
	$IT->ln();
	}
	$achats = @unserialize( $session->achats );
	if ( count ( $achats ) > 0 )
	{
	$IT->ln();
	$IT->fwriteb("Achats");
	$IT->ln();
	foreach($achats as $achat)
	{
	$IT->fwrite(" ",-6);
	$IT->fwrite($achat["objet"].".........................",-26);
	$IT->fwrite("",2);
	$IT->mwrite($achat["prix"],8);
	$IT->ln();
	}
	$IT->fwrite(" ",-33);
	$IT->fwrite(" ",3);
	$IT->fwrite("------");
	$IT->ln();
	$IT->fwrite(" ",-6);
	$IT->fwrite("Total");
	$IT->fwrite(".....................");
	$IT->fwrite(" ",2);
	$IT->mwrite($session->total_achats,8);
	$IT->ln();
	$IT->ln();
	$IT->ln();
	}
  	$IT->fwriteb("Masse salariale");
	$IT->ln();
	if ($sql->query("SELECT nom,
	prenom,
	SUM(temps) temps,
	SUM(cout_total) cout_total
	                  FROM pointage,
			  personnel
        	          WHERE sid = ".$session->sid."
			  AND employe = personnel.id 
                	  GROUP BY employe
	                  ORDER BY nom"))
			  {
			  if ( $sql->numrows > 0 )
			  {
			  $t_temps = 0;
			  $t_cout = 0;
			while( $sql->next_object() )
			{
			$employé = $sql->object;
			$IT->fwrite( $employé->nom."         ", 10);
			$IT->fwrite($employé->prenom.".....",-10);
			$IT->mwrite( $employé->temps , 6);
			$IT->fwrite("H ");
			$IT->mwrite($employé->cout_total , 6 );
			$IT->ln();
			$t_temps += $employé->temps;
				$t_cout_total += $employé->cout_total;
				}
				$IT->fwrite(" ",21);
				$IT->fwrite("-------------");
				$IT->ln();
				$IT->fwrite("Total");
				$IT->fwrite("...............");
				$IT->mwrite( $t_temps , 6);
				$IT->fwrite("H ");
				$IT->mwrite( $t_cout_total , 6);
				$IT->fwrite(" ");
				if ( $t_cout_total > 0 )
				$IT->mwrite( $t_cout_total / $session->ca_ht * 100 , 6);
				$IT->fwrite("%");
				$IT->ln();
				}
				else
				{
				$IT->fwrite("Pas d\"informations de pointage.");
				$IT->ln();
				}
				}
				$sql->free();
				$IT->ln();
				$IT->ln();
				/*******************    Fin de la version comptable    **********************/
  
   $IT->fwriteb("Ventilation CA BRUT TTC par catégorie");
   $IT->ln();
   $sql->query("SELECT id,pluriel nom,ca_ttc
   FROM type_produit t,
   session_categorie s
	             WHERE t.id = s.categorie 
	               AND nom NOT LIKE 'Produits plateaux'
	               AND session = ".$session->sid."
	             ORDER BY pluriel");
  while ( $sql->next_object() )
    {
      $catégorie = $sql->object;
      $IT->fwrite(" ",-6);
      $IT->fwrite($catégorie->nom."..................",-19 );
      $IT->mwrite( $catégorie->ca_ttc,10 );
      $IT->fwrite(" ");
      $IT->fwrite(number_format($catégorie->ca_ttc/$session->ca_ttc*100,1)."%",6);
      $IT->ln();
    }
  $IT->fwrite("",-28);
  $IT->fwrite("-------");
  $IT->ln();
  $IT->fwrite(" ",-6);
  $IT->fwrite( "Total..............");
  $IT->mwrite($session->ca_ttc,10);
  $IT->ln();
  $IT->ln();
  $IT->fwriteb("Ventilation remises TTC par catégorie");
  $IT->ln();
  $sql->query("SELECT id,pluriel nom,total_remises
	             FROM type_produit t,
	                  session_categorie s
	             WHERE t.id = s.categorie 
	               AND nom NOT LIKE 'Produits plateaux'
	               AND session = ".$session->sid."
	             ORDER BY pluriel");
  while ( $sql->next_object() )
    {
      $catégorie = $sql->object;
      if ($catégorie->total_remises != 0)
	{
	  $IT->fwrite(" ",-6);
	  $IT->fwrite($catégorie->nom."..................",-19 );
	  $IT->fwrite(" ");
	  $IT->mwrite( $catégorie->total_remises,9 );
	  $IT->fwrite(" ");
	  $IT->fwrite(number_format($catégorie->total_remises/$session->total_remises*100,1)."%",6);
	  $IT->ln();
	}
    }
  $IT->fwrite(" ",-29);
  $IT->fwrite("------");
  $IT->ln();
  $IT->fwrite(" ",-6);
  $IT->fwrite( "Total..............");
  $IT->mwrite($session->total_remises,10);
  $IT->ln();
  $IT->ln();
  $IT->fwriteb("Ventilation CA net TTC par catégorie");
  $IT->ln();
  $sql->query("SELECT id,
	                    pluriel nom,
	                    ca_ttc - total_remises AS ca_ttc_net
	             FROM type_produit t,
	                  session_categorie s
	             WHERE t.id = s.categorie 
	               AND nom NOT LIKE 'Produits plateaux'
	               AND session = ".$session->sid);
  while ( $sql->next_object() )
    {
      $catégorie = $sql->object;
      $IT->fwrite(" ",-6);
      $IT->fwrite($catégorie->nom."..................",-19 );
      $IT->mwrite( $catégorie->ca_ttc_net,10 );
      $IT->fwrite(" ");
      $IT->fwrite(number_format($catégorie->ca_ttc_net/($session->ca_ttc-$session->total_remises)*100,1)."%",6);
      $IT->ln();
    }
  $IT->fwrite("",-28);
  $IT->fwrite("-------");
  $IT->ln();
  $IT->fwrite(" ",-6);
  $IT->fwrite( "Total..............");
  $IT->mwrite($session->ca_ttc,10);
  $IT->ln();
  $IT->ln();
  $IT->fwriteb("Ventilation des quantités par catégorie");
  $IT->ln();
  $sql->query("SELECT categorie,qte
	             FROM session_menu
	             WHERE session = ".$session->sid);
  while ( $sql->next_object() )
    $menus[$sql->object->categorie] = $sql->object->qte;
  $sql->query("SELECT categorie,qte
	             FROM session_plateau
	             WHERE session = ".$session->sid);
  while ( $sql->next_object() )
    $plateaux[$sql->object->categorie] = $sql->object->qte;
  $catégories[$sql->object->id]["plateau"] = $sql->object;
  $sql->query("SELECT id,pluriel nom,qte,ca_ttc
	             FROM type_produit t,
	                  session_categorie s
	             WHERE t.id = s.categorie 
	               AND nom NOT LIKE 'Produits plateaux'
	               AND session = ".$session->sid);
  while ( $sql->next_object() )
    {
      $catégorie = $sql->object;
      $IT->fwrite(" ",-6);
      $IT->fwrite($catégorie->nom."...................",-23 );
      $IT->fwrite(" ");
      $IT->fwrite( $catégorie->qte,5 );
      $IT->ln();
      if ($menus[$catégorie->id] or $plateaux[$catégorie->id]){
	$IT->fwrite(" ",8);
	$IT->fwrite("seul(e)(s)...........");
	$IT->fwrite(" ");
	$IT->fwrite($catégorie->qte-$menus[$catégorie->id]-$plateaux[$catégorie->id],5);
	$IT->fwrite(" ");
	$IT->fwrite(number_format(($catégorie->qte-$menus[$catégorie->id]-$plateaux[$catégorie->id])/$catégorie->qte*100,0)."%",5);
	$IT->ln();
      }
      if ($menus[$catégorie->id]){
	$IT->fwrite(" ",8);
	$IT->fwrite("dans menu............");
	$IT->fwrite(" ");
	$IT->fwrite($menus[$catégorie->id],5 );
	$IT->fwrite(" ");
	$IT->fwrite(number_format($menus[$catégorie->id]/$catégorie->qte*100,0)."%",5);
	$IT->ln();
      }
      if ($plateaux[$catégorie->id]){
	$IT->fwrite(" ",8);
	$IT->fwrite("dans plateau.........");
	$IT->fwrite(" ");
	$IT->fwrite($plateaux[$catégorie->id],5 );
	$IT->fwrite(" ");
	$IT->fwrite(number_format($plateaux[$catégorie->id]/$catégorie->qte*100,0)."%",5);
	$IT->ln();
      }
    }
  $IT->ln();
  $IT->ln();
  $IT->fwriteb("Ingrédients consommés");
  $IT->ln();
  $sql->query("SELECT nom,var,unite
	             FROM ingredient,session_stock
	             WHERE ingredient.id = session_stock.ingredient 
                       AND sid = ".$session->sid."
                     ORDER BY nom");
  while ( $sql->next_object() )
	{
	  $ingrédient = $sql->object;
	  $IT->fwrite(" ",-6);
	  $IT->fwrite($ingrédient->nom.".....................",-27 );
	  if ($ingrédient->unite == "U")
	    $IT->fwrite(abs($ingrédient->var),6);
	  else
	    $IT->mwrite(abs($ingrédient->var),6);
	  $IT->fwrite(" ");
		$IT->fwrite($ingrédient->unite);
		$IT->ln();
	}
  $IT->ln();
  $IT->ln();
  $IT->ln();
  $IT->cut();
  $IT->close();
}
?>
