<?php
// +-------------------------------------------------+
// © 2002-2004 PMB Services / www.sigb.net pmb@sigb.net et contributeurs (voir www.sigb.net)
// +-------------------------------------------------+
// $Id: lettre-facture.inc.php,v 1.16 2015-04-03 11:16:26 jpermanne Exp $

if (stristr($_SERVER['REQUEST_URI'], ".inc.php")) die("no access");

// popup d'impression PDF pour facture
// reçoit : id_cde

if (!$id_fac) {print "<script> self.close(); </script>" ; die;}

//Footer personalisé
class PDF extends FPDF
{
	function Footer() {
		
		global $msg;
		global $y_footer, $fs_footer;
		
	    $this->SetY(-$y_footer);
	    //Numéro de page centré
	    $this->Cell(0,$fs_footer,$msg['acquisition_act_page'].$this->PageNo().' / '.$this->AliasNbPages,0,0,'C');
	}
}

if ($acquisition_pdffac_print) {
	require_once($acquisition_pdffac_print);
} else {
	
	require_once("$class_path/entites.class.php");
	require_once("$class_path/coordonnees.class.php");
	require_once("$class_path/actes.class.php");
	require_once("$class_path/lignes_actes.class.php");
	require_once("$class_path/liens_actes.class.php");
	require_once("$class_path/rubriques.class.php");
	require_once("$class_path/types_produits.class.php");
	require_once("$class_path/paiements.class.php");
	
	
	//paramètres modifiables-----------------------------------------------------------------------------
	
	if (!$acquisition_pdffac_text_size) $fs = '10';	//Taille de la police 
		else $fs = $acquisition_pdffac_text_size; 
		
	$format_page = explode('x',$acquisition_pdffac_format_page);
	if(!$format_page[0]) $largeur_page = '210';			//largeur de page
		else $largeur_page = $format_page[0];
	if(!$format_page[1]) $hauteur_page = '297';		//hauteur de page
		else $hauteur_page = $format_page[1];
	
	if(!$acquisition_pdffac_orient_page) $orient_page = 'P';		//orientation page (P=portrait, L=paysage)
		else $orient_page = $acquisition_pdffac_orient_page;
	
	$marges_page = explode(',', $acquisition_pdffac_marges_page);
	if (!$marges_page[0]) $marge_haut = '10';		//marge haut
		else $marge_haut = $marges_page[0];
	if (!$marges_page[1]) $marge_bas = '20';		//marge bas
		else $marge_bas = $marges_page[1];
	if (!$marges_page[2]) $marge_droite = '10';		//marge droite
		else $marge_droite = $marges_page[2];
	if (!$marges_page[3]) $marge_gauche = '10';		//marge gauche
		else $marge_gauche = $marges_page[3];
	
	$pos_raison = explode(',', $acquisition_pdffac_pos_raison);
	if (!$pos_raison[0]) $x_raison = '10';			//Distance raison sociale / bord gauche de page
		else $x_raison = $pos_raison[0];
	if (!$pos_raison[1]) $y_raison = '10';			//Distance raison sociale / bord haut de page
		else $y_raison = $pos_raison[1];
	if (!$pos_raison[2]) $l_raison = '100';			//Largeur raison sociale
		else $l_raison = $pos_raison[2];
	if (!$pos_raison[3]) $h_raison = '10';			//Hauteur raison sociale
		else $h_raison = $pos_raison[3];
	if (!$pos_raison[4]) $fs_raison = '16';			//Police raison sociale
		else $fs_raison = $pos_raison[4];
	
	$pos_date = explode(',', $acquisition_pdffac_pos_date);
	if (!$pos_date[0]) $x_date = '170';				//Distance date / bord gauche de page
		else $x_date = $pos_date[0];
	if (!$pos_date[1]) $y_date = '10';				//Distance date / bord haut de page
		else $y_date = $pos_date[1];
	if (!$pos_date[2]) $l_date = '0';				//Largeur date
		else $l_date = $pos_date[2];
	if (!$pos_date[3]) $h_date = '6';				//Hauteur date
		else $h_date = $pos_date[3];
	if (!$pos_date[4]) $fs_date = '8';				//Police date
		else $fs_date = $pos_date[4];
	
	$pos_adr_fac = explode(',', $acquisition_pdffac_pos_adr_fac);
	if (!$pos_adr_fac[0]) $x_adr_fac = '10';			//Distance adr facturation / bord gauche de page
		else $x_adr_fac = $pos_adr_fac[0];
	if (!$pos_adr_fac[1]) $y_adr_fac = '20';			//Distance adr facturation / bord haut de page
		else $y_adr_fac = $pos_adr_fac[1];
	if (!$pos_adr_fac[2]) $l_adr_fac = '60';			//Largeur adr facturation
		else $l_adr_fac = $pos_adr_fac[2];
	if (!$pos_adr_fac[3]) $h_adr_fac = '5';				//Hauteur adr facturation
		else $h_adr_fac = $pos_adr_fac[3];
	if (!$pos_adr_fac[4]) $fs_adr_fac = '10';			//Police adr facturation
		else $fs_adr_fac = $pos_adr_fac[4];
	$text_adr_liv = $msg['acquisition_adr_fac'];
	$text_adr_fac_tel = $msg['acquisition_tel'].".";
	$text_adr_fac_fax = $msg['acquisition_fax'].".";
	$text_adr_fac_email = $msg['acquisition_mail']." :";
	
	$pos_adr_fou = explode(',', $acquisition_pdffac_pos_adr_fou);
	if (!$pos_adr_fou[0]) $x_adr_fou = '110';			//Distance adr fournisseur / bord gauche de page
		else $x_adr_fou = $pos_adr_fou[0];
	if (!$pos_adr_fou[1]) $y_adr_fou = '20';			//Distance adr fournisseur / bord haut de page
		else $y_adr_fou = $pos_adr_fou[1];
	if (!$pos_adr_fou[2]) $l_adr_fou = '100';			//Largeur adr fournisseur
		else $l_adr_fou = $pos_adr_fou[2];
	if (!$pos_adr_fou[3]) $h_adr_fou = '5';				//Hauteur adr fournisseur
		else $h_adr_fou = $pos_adr_fou[3];
	if (!$pos_adr_fou[4]) $fs_adr_fou = '10';			//Police adr fournisseur
		else $fs_adr_fou = $pos_adr_fou[4];
	$text_adr_fou = $msg['acquisition_act_fou2'];
	
	$pos_num = explode(',', $acquisition_pdffac_pos_num);
	if (!$pos_num[0]) $x_num = '10';				//Distance num facture / bord gauche de page
		else $x_num = $pos_num[0];
	if (!$pos_num[1]) $y_num = '60';				//Distance num facture / bord haut de page
		else $y_num = $pos_num[1];
	if (!$pos_num[2]) $l_num = '0';					//Largeur num facture
		else $l_num = $pos_num[2];
	if (!$pos_num[3]) $h_num = '6';				//Hauteur num facture
		else $h_num = $pos_num[3];
	if (!$pos_num[4]) $fs_num = '14';				//Police num facture
		else $fs_num = $pos_num[4];
	$text_num_fac = $msg['acquisition_act_num_fac'];
	$text_fac_ref_fou = $msg['acquisition_fac_ref_fou'];
	$text_num_cde = $msg['acquisition_act_num_cde'];
	
	$pos_tab = explode(',', $acquisition_pdffac_tab_fac);
	if (!$pos_tab[0]) $h_tab = '5';				//Hauteur de ligne table facture
		else $h_tab = $pos_tab[0];
	if (!$pos_tab[1]) $fs_tab = '10';			//Police table facture
		else $fs_tab = $pos_tab[1];
	$x_tab = $marge_gauche;						//position table facture / bord droit page 
	$y_tab = $marge_haut;						//position table facture / haut page sur pages 2 et + 
	
	$pos_tot = explode(',', $acquisition_pdffac_pos_tot);
	if (!$pos_tot[0]) $x_tot = '10';			//Distance total facture / bord gauche de page
		else $x_tot = $pos_tot[0];
	if (!$pos_tot[1]) $l_tot = '40';			//Largeur cellule total facture
		else $l_tot = $pos_tot[1];
	if (!$pos_tot[2]) $h_tot = '5';				//Hauteur total facture
		else $h_tot = $pos_tot[2];
	if (!$pos_tot[3]) $fs_tot = '10';			//Police total facture
		else $fs_tot = $pos_tot[3];
	
	$pos_footer = explode(',', $acquisition_pdffac_pos_footer);
	if (!$pos_footer[0]) $y_footer = '15';			//Distance footer / bas de page
		else $y_footer = $pos_footer[0];
	if (!$pos_footer[1]) $fs_footer = '8';			//Police footer
		else $fs_footer = $pos_footer[1];
	
	
	//---------------------------------------------------------------------------------------------------------------------
	
	$taille_doc=array($largeur_page,$hauteur_page);
	$w = $largeur_page-$marge_gauche-$marge_droite;
	$ourPDF = new $fpdf($orient_page, 'mm', $taille_doc);
	$ourPDF->Open();
	$ourPDF->SetMargins($marge_gauche, $marge_haut, $marge_droite);
	
	//On récupère les infos de la facture
	$fac = new actes($id_fac);
	$lignes = actes::getLignes($id_fac);
	$bibli = new entites ($fac->num_entite);
	$coord_fac = new coordonnees($fac->num_contact_fact);
	
	$fou = new entites($fac->num_fournisseur);
	$coord_fou = entites::get_coordonnees($fac->num_fournisseur, '1');
	$coord_fou = pmb_mysql_fetch_object($coord_fou);
	
	$id_cde = liens_actes::getParent($id_fac);
	$cde = new actes($id_cde);
	
	$ourPDF->addPage();
	
	$ourPDF->setFont($pmb_pdf_font);
	
	
	//Affichage date 
	$date =  formatdate(today());
	$ourPDF->setFontSize($fs_date);
	$ourPDF->SetXY($x_date, $y_date);
	$ourPDF->Cell($l_date, $h_date, $date, 0, 0, 'L', 0);
	
	//Affichage raison sociale
	$raison =  $bibli->raison_sociale;
	$ourPDF->setFontSize($fs_raison);
	$ourPDF->SetXY($x_raison, $y_raison);
	$ourPDF->Cell($l_raison, $h_raison, $raison, 0, 0, 'L', 0);
	
	//Affichage coordonnees fournisseur
	if($fou->raison_sociale != '') $adr_fou = $fou->raison_sociale."\n";
	if($coord_fou->libelle != '') $adr_fou.= $coord_fou->libelle;
	if($coord_fou->adr1 != '') $adr_fou.= $coord_fou->adr1."\n";
	if($coord_fou->adr2 != '') $adr_fou.= $coord_fou->adr2."\n";
	if($coord_fou->cp != '') $adr_fou.= $coord_fou->cp." ";
	if($coord_fou->ville != '') $adr_fou.= $coord_fou->ville."\n\n";
	if($coord_fou->contact != '') $adr_fou.= $text_adr_fou.$coord_fou->contact;
	$ourPDF->setFontSize($fs_adr_fou);
	$ourPDF->SetXY($x_adr_fou, $y_adr_fou);
	$ourPDF->MultiCell($l_adr_fou, $h_adr_fou, $adr_fou, 0, 'L', 0);
	
	//Affichage adresse facturation
	if($coord_fac->libelle != '') $adr_fac = $coord_fac->libelle."\n"; 
	if($coord_fac->adr1 != '') $adr_fac.= $coord_fac->adr1."\n";
	if($coord_fac->adr2 != '') $adr_fac.= $coord_fac->adr2."\n";
	if($coord_fac->cp != '') $adr_fac.= $coord_fac->cp." ";
	if($coord_fac->ville != '') $adr_fac.= $coord_fac->ville."\n";
	if($coord_fac->tel1 != '') $adr_fac.= $text_adr_fac_tel." ".$coord_fac->tel1."\n";
	if($coord_fac->fax != '') $adr_fac.= $text_adr_fac_fax." ".$coord_fac->fax."\n";
	if($coord_fac->email != '') $adr_fac.= $text_adr_fac_email." ".$coord_fac->email."\n";
	$ourPDF->setFontSize($fs_adr_fac);
	$ourPDF->SetXY($x_adr_fac, $y_adr_fac);
	$ourPDF->MultiCell($l_adr_fac, $h_adr_fac, $adr_fac, 0, 'L', 0);
	
	//Affichage numero facture et numero commande
	$numero = str_replace('!!numero!!', $fac->numero, $text_num_fac);
	$numero = str_replace('!!date!!', formatdate($fac->date_acte), $numero);
	$numero.= "\n".$text_num_cde." ".$cde->numero."\n";
	$numero.= $text_fac_ref_fou." ".$fac->reference;
	$ourPDF->SetFontSize($fs_num);
	$ourPDF->SetXY($x_num, $y_num);
	$ourPDF->MultiCell($l_num, $h_num, $numero, 0, 'L', 0);
	$ourPDF->Ln();
	
	//Affichage lignes facture
	$ourPDF->SetAutoPageBreak(false);
	$ourPDF->AliasNbPages();
	
	$ourPDF->SetFontSize($fs_tab);
	$ourPDF->SetFillColor(230);
	$ourPDF->Ln();
	$y = $ourPDF->GetY();
	$ourPDF->SetXY($x_tab,$y);
	
	$x_code =  $x_tab;
	$w_code = round($w*20/100);
	$x_lib = $x_code + $w_code;
	$w_lib = round($w*40/100);
	$x_qte = $x_lib + $w_lib;
	$w_qte = round($w*10/100); 
	$x_pri = $x_qte + $w_qte;
	$w_pri = round($w*10/100);
	$x_dat = $x_pri + $w_pri;
	$w_dat = round($w*20/100);
	
	if ($acquisition_gestion_tva) $prix.= $msg['acquisition_act_tab_priht']."\n".$msg['acquisition_tva']."\n".$msg['acquisition_rem']; 
		else $prix.= " ".$msg['acquisition_act_tab_prittc']."\n".$msg['acquisition_rem'];	
	$tot_ht = 0;
	$tot_tva = 0;
	$tot_ttc = 0;
	
	printEntete();
	
	while (($row = pmb_mysql_fetch_object($lignes))) {
	
		$typ = new types_produits($row->num_type);
		$col1 = $typ->libelle."\n".$row->code;
		if ($row->num_rubrique) {
			$rub = new rubriques($row->num_rubrique);
			$col5.= $rub->num_cp_compta;
		}
		
		$col4 = number_format($row->prix, 2,'.','')." ".$fac->devise."\n".number_format($row->tva,2,'.','')." %\n".number_format($row->remise,2,'.','')." %";
		
			$h = $h_tab * max( 	$ourPDF->NbLines($w_code, $col1),
						$ourPDF->NbLines($w_lib, $row->libelle),
						$ourPDF->NbLines($w_qte, $row->nb),
						$ourPDF->NbLines($w_pri, $col4),
						$ourPDF->NbLines($w_dat, $col5) );
							
			$s = $y+$h;		
			if ($s > ($hauteur_page-$marge_bas)){
		
				$ourPDF->AddPage();
				$ourPDF->SetXY($x_tab, $y_tab);
				$y = $ourPDF->GetY();
				printEntete();
				
			} 
			$ourPDF->SetXY($x_code, $y);
			$ourPDF->Rect($x_code, $y, $w_code, $h);
			$ourPDF->MultiCell($w_code, $h_tab, $col1, 0, 'L');
			$ourPDF->SetXY($x_lib, $y);
			$ourPDF->Rect($x_lib, $y, $w_lib, $h);
			$ourPDF->MultiCell($w_lib, $h_tab, $row->libelle, 0, 'L');
			$ourPDF->SetXY($x_qte, $y);
			$ourPDF->Rect($x_qte, $y, $w_qte, $h);
			$ourPDF->MultiCell($w_qte, $h_tab, $row->nb, 0, 'R');
			$ourPDF->SetXY($x_pri, $y);
			$ourPDF->Rect($x_pri, $y, $w_pri, $h);
			$ourPDF->MultiCell($w_pri, $h_tab, $col4, 0, 'R');
			$ourPDF->SetXY($x_dat, $y);
			$ourPDF->Rect($x_dat, $y, $w_dat, $h);
			$ourPDF->MultiCell($w_dat, $h_tab, $col5, 0, 'R');
			$y = $y+$h;
	
	
		//calcul des montants ht, ttc, tva			
		if ($acquisition_gestion_tva) {
			$lig_ht = $row->nb * $row->prix * (1-($row->remise/100)) ;
			$tot_ht = $tot_ht + $lig_ht;
			$tot_tva = $tot_tva + ($lig_ht*($row->tva/100) );
			$tot_ttc = $tot_ht + $tot_tva;						
		} else {
			$lig_ttc = $row->nb * $row->prix * (1-($row->remise/100)) ;
			$tot_ttc = $tot_ttc + $lig_ttc;
		}
	
	}
	$y = $ourPDF->SetY($y);
	
	
	
	//affichage des montants ht, ttc, tva	
	$ourPDF->Ln();
	$y = $ourPDF->GetY();
	if ($acquisition_gestion_tva) $h = $h_tot * 3;
		else $h = $h_tot;
	$s = $y + $h;
	
	if ($s > ($hauteur_page-$marge_bas)){
	
		$ourPDF->AddPage();
		$ourPDF->SetXY($x_tot, $marge_haut);
		$y = $ourPDF->GetY(); 
	}
	
	if ($acquisition_gestion_tva){
		$ourPDF->Cell($l_tot, $h_tot, $msg['acquisition_total_ht'], 1, 0, 'L',0);
		$ourPDF->Cell($l_tot, $h_tot, number_format(round($tot_ht, 2),2,'.','')." ".$fac->devise, 1, 1, 'R',0);
		$ourPDF->Cell($l_tot, $h_tot, $msg['acquisition_tva'], 1, 0, 'L',0);
		$ourPDF->Cell($l_tot, $h_tot, number_format(round($tot_tva, 2),2,'.','')." ".$fac->devise, 1, 1,'R',0);	 		 	
	}
	
	$ourPDF->Cell($l_tot, $h_tot, $msg['acquisition_total_ttc'], 1, 0, 'L',0);
	$ourPDF->Cell($l_tot, $h_tot, number_format(round($tot_ttc, 2),2,'.','')." ".$fac->devise, 1, 1, 'R',0);	 	
	
	
	$ourPDF->SetAutoPageBreak(true, $marge_bas);
	$ourPDF->SetX($marge_gauche);
	$ourPDF->Ln();
	
	
	$ourPDF->SetFontSize($fs);
	
	
	$ourPDF->OutPut();
}	
	

//Entete de tableau
function printEntete() {
	
	global $msg;
	global $ourPDF, $y;
	global $x_tab,$y_tab,$h_tab;
	global $x_code,$x_lib,$x_qte,$x_pri,$x_dat;
	global $w_code,$w_lib,$w_qte,$w_pri,$w_dat;
	global $hauteur_page, $marge_bas;  
	global $prix;	

$h = $h_tab * max( 	$ourPDF->NbLines($w_code, $msg['acquisition_act_tab_typ']."\n".$msg['acquisition_act_tab_code']),
			$ourPDF->NbLines($w_lib,$msg['acquisition_act_tab_lib']),
			$ourPDF->NbLines($w_qte, $msg['acquisition_act_tab_qte']),
			$ourPDF->NbLines($w_pri, $prix),
			$ourPDF->NbLines($w_dat, $msg['acquisition_num_cp_compta']) );
	$s = $y+$h;		
	if ($s > ($hauteur_page-$marge_bas)){

		$ourPDF->AddPage();
		$ourPDF->SetXY($x_tab, $y_tab);
		$y = $ourPDF->GetY();
		
	} 
	$ourPDF->SetXY($x_code, $y);
	$ourPDF->Rect($x_code, $y, $w_code, $h, 'FD');
	$ourPDF->MultiCell($w_code, $h_tab, $msg['acquisition_act_tab_typ']."\n".$msg['acquisition_act_tab_code'], 0, 'L');
	$ourPDF->SetXY($x_lib, $y);
	$ourPDF->Rect($x_lib, $y, $w_lib, $h, 'FD');
	$ourPDF->MultiCell($w_lib, $h_tab, $msg['acquisition_act_tab_lib'], 0, 'L');
	$ourPDF->SetXY($x_qte, $y);
	$ourPDF->Rect($x_qte, $y, $w_qte, $h, 'FD');
	$ourPDF->MultiCell($w_qte, $h_tab, $msg['acquisition_act_tab_qte'], 0, 'L');
	$ourPDF->SetXY($x_pri, $y);
	$ourPDF->Rect($x_pri, $y, $w_pri, $h, 'FD');
	$ourPDF->MultiCell($w_pri, $h_tab, $prix, 0, 'L');
	$ourPDF->SetXY($x_dat, $y);
	$ourPDF->Rect($x_dat, $y, $w_dat, $h, 'FD');
	$ourPDF->MultiCell($w_dat, $h_tab, $msg['acquisition_num_cp_compta'], 0, 'L');
	$y = $y+$h;
}
?>