From 22e20cea2153fa46a44728fbd3517bf1f2015a19 Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Fri, 11 Jul 2008 06:46:55 +0000 Subject: [PATCH] Fix: Some errors on generating delivery and sending receipts --- htdocs/admin/expedition.php | 6 + htdocs/admin/livraison.php | 6 + htdocs/document.php | 4 +- htdocs/expedition/expedition.class.php | 2 + htdocs/expedition/fiche.php | 2 +- .../mods/pdf/pdf_expedition_merou.modules.php | 214 +-- .../pdf/pdf_expedition_rouget.modules.php | 232 +-- htdocs/livraison/fiche.php | 2 +- .../mods/pdf/pdf_sirocco.modules.php | 583 ++++--- .../livraison/mods/pdf/pdf_typhon.modules.php | 1501 ++++++++--------- 10 files changed, 1281 insertions(+), 1271 deletions(-) diff --git a/htdocs/admin/expedition.php b/htdocs/admin/expedition.php index 4ff0aadcae4..daec48e4b9f 100644 --- a/htdocs/admin/expedition.php +++ b/htdocs/admin/expedition.php @@ -67,10 +67,16 @@ if ($_GET["action"] == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=expedition&file=SPECIMEN.pdf"); return; } + else + { + $mesg='
'.$obj->error.'
'; + dolibarr_syslog($obj->error, LOG_ERR); + } } else { $mesg='
'.$langs->trans("ErrorModuleNotFound").'
'; + dolibarr_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } } diff --git a/htdocs/admin/livraison.php b/htdocs/admin/livraison.php index 33f6392ecee..42938f4a84a 100644 --- a/htdocs/admin/livraison.php +++ b/htdocs/admin/livraison.php @@ -74,10 +74,16 @@ if ($_GET["action"] == 'specimen') header("Location: ".DOL_URL_ROOT."/document.php?modulepart=livraison&file=SPECIMEN.pdf"); return; } + else + { + $mesg='
'.$obj->error.'
'; + dolibarr_syslog($obj->error, LOG_ERR); + } } else { $mesg='
'.$langs->trans("ErrorModuleNotFound").'
'; + dolibarr_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); } } diff --git a/htdocs/document.php b/htdocs/document.php index 8d0b6d457c1..58086e0bef0 100644 --- a/htdocs/document.php +++ b/htdocs/document.php @@ -218,7 +218,7 @@ if ($modulepart) { $accessallowed=1; } - $original_file=$conf->expedition->dir_output.'/'.$original_file; + $original_file=$conf->expedition_bon->dir_output.'/'.$original_file; //$sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."fichinter WHERE ref='$refname'"; } @@ -230,7 +230,7 @@ if ($modulepart) { $accessallowed=1; } - $original_file=$conf->livraison->dir_output.'/'.$original_file; + $original_file=$conf->livraison_bon->dir_output.'/'.$original_file; //$sqlprotectagainstexternals = "SELECT fk_soc as fk_soc FROM ".MAIN_DB_PREFIX."fichinter WHERE ref='$refname'"; } diff --git a/htdocs/expedition/expedition.class.php b/htdocs/expedition/expedition.class.php index 05c1663404f..5600ddcf778 100644 --- a/htdocs/expedition/expedition.class.php +++ b/htdocs/expedition/expedition.class.php @@ -662,6 +662,8 @@ class Expedition extends CommonObject { global $user,$langs; + dolibarr_syslog("Expedition::initAsSpecimen"); + // Charge tableau des id de société socids $socids = array(); $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."societe WHERE client=1 LIMIT 10"; diff --git a/htdocs/expedition/fiche.php b/htdocs/expedition/fiche.php index 7b123111909..90c987a569f 100644 --- a/htdocs/expedition/fiche.php +++ b/htdocs/expedition/fiche.php @@ -684,7 +684,7 @@ else if ($conf->expedition_bon->enabled) { $expeditionref = sanitize_string($expedition->ref); - $filedir = $conf->expedition->dir_output . "/" .$expeditionref; + $filedir = $conf->expedition_bon->dir_output . "/" .$expeditionref; $urlsource = $_SERVER["PHP_SELF"]."?id=".$expedition->id; diff --git a/htdocs/expedition/mods/pdf/pdf_expedition_merou.modules.php b/htdocs/expedition/mods/pdf/pdf_expedition_merou.modules.php index 9e1fad2f523..c5c6fa62331 100644 --- a/htdocs/expedition/mods/pdf/pdf_expedition_merou.modules.php +++ b/htdocs/expedition/mods/pdf/pdf_expedition_merou.modules.php @@ -1,6 +1,6 @@ - * Copyright (C) 2005-2006 Laurent Destailleur + * Copyright (C) 2005-2008 Laurent Destailleur * Copyright (C) 2005 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -20,32 +20,32 @@ */ /** - \file htdocs/expedition/mods/pdf/pdf_expedition_dorade.modules.php - \ingroup expedition - \brief Fichier de la classe permettant de générer les bordereaux envoi au modèle Merou - \version $Id$ -*/ + \file htdocs/expedition/mods/pdf/pdf_expedition_merou.modules.php + \ingroup expedition + \brief Fichier de la classe permettant de générer les bordereaux envoi au modèle Merou + \version $Id$ + */ require_once DOL_DOCUMENT_ROOT."/expedition/mods/pdf/ModelePdfExpedition.class.php"; require_once DOL_DOCUMENT_ROOT."/contact.class.php"; /** - \class pdf_expedition_dorade - \brief Classe permettant de générer les borderaux envoi au modèle Merou -*/ + \class pdf_expedition_dorade + \brief Classe permettant de générer les borderaux envoi au modèle Merou + */ Class pdf_expedition_merou extends ModelePdfExpedition { var $emetteur; // Objet societe qui emet - /** - \brief Constructeur - \param db Handler accès base de donnée - */ + /** + \brief Constructeur + \param db Handler accès base de donnée + */ function pdf_expedition_merou($db=0) - { - global $conf,$langs,$mysoc; + { + global $conf,$langs,$mysoc; $this->db = $db; $this->name = "Merou"; @@ -57,35 +57,35 @@ Class pdf_expedition_merou extends ModelePdfExpedition |element->commande,source->external,code->DESTINATAIRE \n "; - $this->type = 'pdf'; - $this->page_largeur = 148.5; - $this->page_hauteur = 210; - $this->format = array($this->page_largeur,$this->page_hauteur); - - $this->option_logo = 1; // Affiche logo - - // Recupere emmetteur - $this->emetteur=$mysoc; - if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini + $this->type = 'pdf'; + $this->page_largeur = 148.5; + $this->page_hauteur = 210; + $this->format = array($this->page_largeur,$this->page_hauteur); + + $this->option_logo = 1; // Affiche logo + + // Recupere emmetteur + $this->emetteur=$mysoc; + if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini } - /** - * \brief Fonction générant le document sur le disque - * \param obj Objet expedition à générer (ou id si ancienne methode) - * \return int 1=ok, 0=ko - */ + /** + * \brief Fonction générant le document sur le disque + * \param obj Objet expedition à générer (ou id si ancienne methode) + * \return int 1=ok, 0=ko + */ function write_file(&$obj, $outputlangs='') { global $user,$conf,$langs; - + if (! is_object($outputlangs)) $outputlangs=$langs; $outputlangs->load("main"); - $outputlangs->load("companies"); - $outputlangs->load("bills"); - $outputlangs->load("propal"); - $outputlangs->load("products"); - $outputlangs->load("sendings"); + $outputlangs->load("companies"); + $outputlangs->load("bills"); + $outputlangs->load("propal"); + $outputlangs->load("products"); + $outputlangs->load("sendings"); $outputlangs->setPhpLang(); @@ -93,40 +93,40 @@ Class pdf_expedition_merou extends ModelePdfExpedition $this->expe = $obj; //Verification de la configuration - if ($conf->expedition->dir_output) - { + if ($conf->expedition_bon->dir_output) + { //Creation du Client $soc = new Societe($this->db); $soc->fetch($this->expe->commande->socid); - + //Creation de l expediteur $this->expediteur = $soc; //Creation du destinataire $this->destinataire = new Contact($this->db); - // $pdf->expe->commande->fetch($pdf->commande->id); - //print_r($pdf->expe); + // $pdf->expe->commande->fetch($pdf->commande->id); + //print_r($pdf->expe); $idcontact = $this->expe->commande->getIdContact('external','DESTINATAIRE'); $this->destinataire->fetch($idcontact[0]); - + //Creation du livreur $idcontact = $this->expe->commande->getIdContact('internal','LIVREUR'); $this->livreur = new User($this->db,$idcontact[0]); if ($idcontact[0]) $this->livreur->fetch(); - + // Définition de $dir et $file if ($this->expe->specimen) { - $dir = $conf->expedition->dir_output; + $dir = $conf->expedition_bon->dir_output; $file = $dir . "/SPECIMEN.pdf"; } else { $expref = sanitize_string($this->expe->ref); - $dir = $conf->expedition->dir_output . "/" . $expref; + $dir = $conf->expedition_bon->dir_output . "/" . $expref; $file = $dir . "/" . $expref . ".pdf"; } - + if (! file_exists($dir)) { if (create_exdir($dir) < 0) @@ -135,21 +135,21 @@ Class pdf_expedition_merou extends ModelePdfExpedition return 0; } } - + //Si le dossier existe if (file_exists($dir)) { - // Initialisation Bon vierge + // Initialisation Bon vierge $pdf = new FPDI_Protection('l','mm',$this->format); - - // Protection et encryption du pdf - if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } + + // Protection et encryption du pdf + if ($conf->global->PDF_SECURITY_ENCRYPTION) + { + $pdfrights = array('print'); // Ne permet que l'impression du document + $pdfuserpass = ''; // Mot de passe pour l'utilisateur final + $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini + $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); + } $pdf->Open(); $pdf->AddPage(); @@ -191,19 +191,19 @@ Class pdf_expedition_merou extends ModelePdfExpedition $pdf->rect(20+3, $curY+1, 3, 3); //Insertion de la reference du produit $pdf->SetXY (30, $curY ); - $pdf->SetFont('Arial','B', 7); + $pdf->SetFont('Arial','B', 7); $pdf->MultiCell(20, 5, $Prod->ref, 0, 'L', 0); //Insertion du libelle - $pdf->SetFont('Arial','', 7); + $pdf->SetFont('Arial','', 7); $pdf->SetXY (50, $curY ); $pdf->MultiCell(130, 5, $Prod->libelle, 0, 'L', 0); //Insertion de la quantite - $pdf->SetFont('Arial','', 7); + $pdf->SetFont('Arial','', 7); $pdf->SetXY (180, $curY ); $pdf->MultiCell(20, 5, $Produits[$i]->qty, 0, 'L', 0); //Generation de la page 2 $curY += 4; - $nexY = $curY; + $nexY = $curY; if ($nexY > ($tab_top+$tab_height-10) && $i < $nblignes - 1){ $this->_tableau($pdf, $tab_top, $tab_height, $nexY); $this->_pagefoot($pdf); @@ -223,26 +223,26 @@ Class pdf_expedition_merou extends ModelePdfExpedition $pdf->Close(); $pdf->Output($file); - + $langs->setPhpLang(); // On restaure langue session return 1; } - else - { - $this->error=$outputlangs->transnoentities("ErrorCanNotCreateDir",$dir); + else + { + $this->error=$outputlangs->transnoentities("ErrorCanNotCreateDir",$dir); $langs->setPhpLang(); // On restaure langue session - return 0; - } + return 0; + } } - else - { - $this->error=$outputlangs->transnoentities("ErrorConstantNotDefined","EXP_OUTPUTDIR"); + else + { + $this->error=$outputlangs->transnoentities("ErrorConstantNotDefined","EXP_OUTPUTDIR"); $langs->setPhpLang(); // On restaure langue session - return 0; - } - $this->error=$outputlangs->transnoentities("ErrorUnknown"); + return 0; + } + $this->error=$outputlangs->transnoentities("ErrorUnknown"); $langs->setPhpLang(); // On restaure langue session - return 0; // Erreur par defaut + return 0; // Erreur par defaut } @@ -252,10 +252,10 @@ Class pdf_expedition_merou extends ModelePdfExpedition function _tableau(&$pdf, $tab_top, $tab_height, $nexY) { global $langs; - + $langs->load("main"); $langs->load("bills"); - + $pdf->SetFont('Arial','B',8); $pdf->SetXY(10,$tab_top); $pdf->MultiCell(10,5,"LS",0,'C',1); @@ -295,32 +295,32 @@ Class pdf_expedition_merou extends ModelePdfExpedition function _pagehead(&$pdf, $exp) { global $conf, $langs; - + $tab4_top = 60; $tab4_hl = 6; $tab4_sl = 4; $ligne = 2; //*********************LOGO**************************** - $logo=$conf->societe->dir_logos.'/'.$this->emetteur->logo; - if ($this->emetteur->logo) - { - if (is_readable($logo)) - { - $pdf->Image($logo,10, 5, 0, 24); - } - else - { - $pdf->SetTextColor(200,0,0); - $pdf->SetFont('Arial','B',8); - $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L'); - $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); - } - } - else if(defined("MAIN_INFO_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) - { - $pdf->MultiCell(100, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L'); - } + $logo=$conf->societe->dir_logos.'/'.$this->emetteur->logo; + if ($this->emetteur->logo) + { + if (is_readable($logo)) + { + $pdf->Image($logo,10, 5, 0, 24); + } + else + { + $pdf->SetTextColor(200,0,0); + $pdf->SetFont('Arial','B',8); + $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L'); + $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); + } + } + else if(defined("MAIN_INFO_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) + { + $pdf->MultiCell(100, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L'); + } //*********************Entete**************************** //Nom du Document @@ -332,7 +332,7 @@ Class pdf_expedition_merou extends ModelePdfExpedition //Num Expedition $Yoff = $Yoff+7; $Xoff = 140; -// $pdf->rect($Xoff, $Yoff, 85, 8); + // $pdf->rect($Xoff, $Yoff, 85, 8); $pdf->SetXY($Xoff,$Yoff); $pdf->SetFont('Arial','',8); $pdf->SetTextColor(0,0,0); @@ -340,7 +340,7 @@ Class pdf_expedition_merou extends ModelePdfExpedition //$this->Code39($Xoff+43, $Yoff+1, $this->expe->ref,$ext = true, $cks = false, $w = 0.4, $h = 4, $wide = true); //Num Commande $Yoff = $Yoff+4; -// $pdf->rect($Xoff, $Yoff, 85, 8); + // $pdf->rect($Xoff, $Yoff, 85, 8); $pdf->SetXY($Xoff,$Yoff); $pdf->SetFont('Arial','',8); $pdf->SetTextColor(0,0,0); @@ -365,49 +365,49 @@ Class pdf_expedition_merou extends ModelePdfExpedition $pdf->SetXY($blSocX,$blSocY+3); $pdf->MultiCell($blSocW, 3, FAC_PDF_ADRESSE, '' , 'L'); } - + if (defined("FAC_PDF_ADRESSE2")){ $pdf->SetFont('Arial','',7); $pdf->SetXY($blSocX,$blSocY+6); $pdf->MultiCell($blSocW, 3, FAC_PDF_ADRESSE2, '' , 'L'); } - + if (defined("FAC_PDF_TEL")){ $pdf->SetFont('Arial','',7); $pdf->SetXY($blSocX,$blSocY+10); $pdf->MultiCell($blSocW, 3, "Tel : " . FAC_PDF_TEL, '' , 'L'); } - + if (defined("FAC_PDF_MEL")){ $pdf->SetFont('Arial','',7); $pdf->SetXY($blSocX,$blSocY+13); $pdf->MultiCell(40, 3, "Email : " . FAC_PDF_MEL, '' , 'L'); } - + if (defined("FAC_PDF_FAX")){ $pdf->SetFont('Arial','',7); $pdf->SetXY($blSocX,$blSocY+16); $pdf->MultiCell(40, 3, "Fax : " . FAC_PDF_FAX, '' , 'L'); } - + if (defined("MAIN_INFO_SIRET")){ $pdf->SetFont('Arial','',7); $pdf->SetXY($blSocX2,$blSocY+10); $pdf->MultiCell($blSocW, 3, "SIRET : " . MAIN_INFO_SIRET, '' , 'L'); } - + if (defined("MAIN_INFO_APE")){ $pdf->SetFont('Arial','',7); $pdf->SetXY($blSocX2,$blSocY+13); $pdf->MultiCell($blSocW, 3, "APE : " . MAIN_INFO_APE, '' , 'L'); } - + if (defined("MAIN_INFO_TVAINTRA")){ $pdf->SetFont('Arial','',7); $pdf->SetXY($blSocX2,$blSocY+16); $pdf->MultiCell($blSocW, 3, "ICOMM : " . MAIN_INFO_TVAINTRA, '' , 'L'); } - + //Date Expedition $Yoff = $Yoff+7; $pdf->SetXY($blSocX,$blSocY+20); @@ -455,7 +455,7 @@ Class pdf_expedition_merou extends ModelePdfExpedition $pdf->SetXY($blExpX,$Yoff+$blSocY); $pdf->SetFont('Arial','',7); $pdf->MultiCell($blW,3, "Tel : ".$this->expediteur->tel, 0, 'L'); - + /**********************************/ //Emplacement Informations Destinataire (Contact livraison) /**********************************/ diff --git a/htdocs/expedition/mods/pdf/pdf_expedition_rouget.modules.php b/htdocs/expedition/mods/pdf/pdf_expedition_rouget.modules.php index a5146cbcea6..c80dca62240 100644 --- a/htdocs/expedition/mods/pdf/pdf_expedition_rouget.modules.php +++ b/htdocs/expedition/mods/pdf/pdf_expedition_rouget.modules.php @@ -1,6 +1,6 @@ - * Copyright (C) 2005-2007 Laurent Destailleur + * Copyright (C) 2005-2008 Laurent Destailleur * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -19,63 +19,63 @@ */ /** - \file htdocs/expedition/mods/pdf/pdf_expedition_rouget.modules.php - \ingroup expedition - \brief Fichier de la classe permettant de générer les bordereaux envoi au modèle Rouget - \version $Id$ -*/ + \file htdocs/expedition/mods/pdf/pdf_expedition_rouget.modules.php + \ingroup expedition + \brief Fichier de la classe permettant de générer les bordereaux envoi au modèle Rouget + \version $Id$ + */ require_once DOL_DOCUMENT_ROOT."/expedition/mods/pdf/ModelePdfExpedition.class.php"; /** - \class pdf_expedition_dorade - \brief Classe permettant de générer les borderaux envoi au modèle Rouget -*/ + \class pdf_expedition_dorade + \brief Classe permettant de générer les borderaux envoi au modèle Rouget + */ Class pdf_expedition_rouget extends ModelePdfExpedition { var $emetteur; // Objet societe qui emet - - /** - \brief Constructeur - \param db Handler accès base de donnée - */ + + /** + \brief Constructeur + \param db Handler accès base de donnée + */ function pdf_expedition_rouget($db=0) { - global $conf,$langs,$mysoc; + global $conf,$langs,$mysoc; $this->db = $db; $this->name = "rouget"; $this->description = "Modèle simple."; - - $this->type = 'pdf'; - $this->page_largeur = 210; - $this->page_hauteur = 297; - $this->format = array($this->page_largeur,$this->page_hauteur); - $this->marge_gauche=10; - $this->marge_droite=10; - $this->marge_haute=10; - $this->marge_basse=10; - $this->option_logo = 0; + $this->type = 'pdf'; + $this->page_largeur = 210; + $this->page_hauteur = 297; + $this->format = array($this->page_largeur,$this->page_hauteur); + $this->marge_gauche=10; + $this->marge_droite=10; + $this->marge_haute=10; + $this->marge_basse=10; - // Recupere emmetteur - $this->emetteur=$mysoc; - if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini + $this->option_logo = 0; + + // Recupere emmetteur + $this->emetteur=$mysoc; + if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini } - + /* - * \param pdf Objet PDF - * \param exp Objet expedition - * \param showadress 0=non, 1=oui - * \param outputlang Objet lang cible - */ - function _pagehead(&$pdf, $exp, $showadress=1, $outputlangs) + * \param pdf Objet PDF + * \param exp Objet expedition + * \param showadress 0=non, 1=oui + * \param outputlang Objet lang cible + */ + function _pagehead(&$pdf, $exp, $showadress=1, $outputlangs) { global $conf; - + if ($conf->barcode->enabled) { $posx=105; @@ -84,69 +84,69 @@ Class pdf_expedition_rouget extends ModelePdfExpedition { $posx=$this->marge_gauche+3; } - + $pdf->Rect($this->marge_gauche, $this->marge_haute, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 30); - + if ($this->barcode->enabled) { $pdf->Code39($this->marge_gauche+3, $this->marge_haute+3, $this->expe->ref); } - - $pdf->SetDrawColor(128,128,128); + + $pdf->SetDrawColor(128,128,128); $pdf->SetFont('Arial','', 14); $pdf->Text($posx, 16, $outputlangs->transnoentities("SendingSheet")); // Bordereau expedition $pdf->Text($posx, 22, $outputlangs->transnoentities("Ref") ." : ".$this->expe->ref); $pdf->Text($posx, 28, $outputlangs->transnoentities("Date")." : ".dolibarr_print_date($this->expe->date,"%d %b %Y")); $pdf->Text($posx, 34, $outputlangs->transnoentities("Page")." : ".$pdf->PageNo() ."/{nb}", 0); - + if ($this->barcode->enabled) { $pdf->Code39($this->marge_gauche+3, 44, $this->expe->commande->ref); } - + $pdf->SetFont('Arial','', 14); $pdf->Text($posx, 48, $outputlangs->transnoentities("Order")); $pdf->Text($posx, 54, $outputlangs->transnoentities("Ref") ." : ".$this->expe->commande->ref); $pdf->Text($posx, 60, $outputlangs->transnoentities("Date")." : ".dolibarr_print_date($this->expe->commande->date,"%d %b %Y")); } - - /** - * \brief Fonction générant le document sur le disque - * \param obj Objet expedition à générer (ou id si ancienne methode) - * \return int 1=ok, 0=ko - */ + + /** + * \brief Fonction générant le document sur le disque + * \param obj Objet expedition à générer (ou id si ancienne methode) + * \return int 1=ok, 0=ko + */ function write_file(&$obj, $outputlangs='') { global $user,$conf,$langs; - + if (! is_object($outputlangs)) $outputlangs=$langs; $outputlangs->load("main"); - $outputlangs->load("companies"); - $outputlangs->load("bills"); - $outputlangs->load("propal"); - $outputlangs->load("products"); + $outputlangs->load("companies"); + $outputlangs->load("bills"); + $outputlangs->load("propal"); + $outputlangs->load("products"); $outputlangs->setPhpLang(); - if ($conf->expedition->dir_output) + if ($conf->expedition_bon->dir_output) { $this->expe = $obj; - + // Définition de $dir et $file if ($this->expe->specimen) { - $dir = $conf->expedition->dir_output; + $dir = $conf->expedition_bon->dir_output; $file = $dir . "/SPECIMEN.pdf"; } else { $expref = sanitize_string($this->expe->ref); - $dir = $conf->expedition->dir_output . "/" . $expref; + $dir = $conf->expedition_bon->dir_output . "/" . $expref; $file = $dir . "/" . $expref . ".pdf"; } - + if (! file_exists($dir)) { if (create_exdir($dir) < 0) @@ -155,41 +155,41 @@ Class pdf_expedition_rouget extends ModelePdfExpedition return 0; } } - - if (file_exists($dir)) - { - $pdf=new ModelePdfExpedition(); + + if (file_exists($dir)) + { + $pdf=new ModelePdfExpedition(); //$this = new ModelePdfExpedition(); //$this->expe = &$this->expe; - + $pdf->Open(); $pdf->AliasNbPages(); $pdf->AddPage(); - + $pdf->SetTitle($this->expe->ref); $pdf->SetSubject($langs->transnoentities("Sending")); $pdf->SetCreator("Dolibarr ".DOL_VERSION); //$this->pdf->SetAuthor($user->fullname); - - $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right - $pdf->SetAutoPageBreak(1,0); + + $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right + $pdf->SetAutoPageBreak(1,0); $this->_pagehead($pdf,$this->exp,0,$outputlangs); - + $pdf->SetFont('Arial','', 14); $pdf->SetTextColor(0,0,0); - - $tab_top = 90; + + $tab_top = 90; $height_note = 200; $pdf->Rect($this->marge_gauche, 80, $this->page_largeur-$this->marge_gauche-$this->marge_droite, 210); - $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note); + $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $height_note); if ($this->barcode->enabled) { - $this->posxdesc=$this->marge_gauche+35; + $this->posxdesc=$this->marge_gauche+35; } else { - $this->posxdesc=$this->marge_gauche+1; + $this->posxdesc=$this->marge_gauche+1; } $this->tableau_top = 80; @@ -205,74 +205,74 @@ Class pdf_expedition_rouget extends ModelePdfExpedition for ($i = 0 ; $i < sizeof($this->expe->lignes) ; $i++) { $curY = $this->tableau_top + 14 + ($i * 7); - + if ($this->barcode->enabled) { $pdf->i25($this->marge_gauche+3, ($curY - 2), "000000".$this->expe->lignes[$i]->fk_product, 1, 8); } - - // Description de la ligne produit - $libelleproduitservice=dol_htmlentitiesbr($this->expe->lignes[$i]->description,1); - if ($this->expe->lignes[$i]->description&&$this->expe->lignes[$i]->description!=$com->lignes[$i]->libelle) - { - if ($libelleproduitservice) $libelleproduitservice.="
"; - $libelleproduitservice.=dol_htmlentitiesbr($this->expe->lignes[$i]->description,1); - } - // Si ligne associée à un code produit - if ($this->expe->lignes[$i]->fk_product) - { - $prodser = new Product($this->db); - $prodser->fetch($this->expe->lignes[$i]->fk_product); + + // Description de la ligne produit + $libelleproduitservice=dol_htmlentitiesbr($this->expe->lignes[$i]->description,1); + if ($this->expe->lignes[$i]->description&&$this->expe->lignes[$i]->description!=$com->lignes[$i]->libelle) + { + if ($libelleproduitservice) $libelleproduitservice.="
"; + $libelleproduitservice.=dol_htmlentitiesbr($this->expe->lignes[$i]->description,1); + } + // Si ligne associée à un code produit + if ($this->expe->lignes[$i]->fk_product) + { + $prodser = new Product($this->db); + $prodser->fetch($this->expe->lignes[$i]->fk_product); // On ajoute la ref - if ($prodser->ref) + if ($prodser->ref) { $prefix_prodserv = ""; - if($prodser->isservice()) - $prefix_prodserv = $outputlangs->transnoentities("Service")." "; - else - $prefix_prodserv = $outputlangs->transnoentities("Product")." "; + if($prodser->isservice()) + $prefix_prodserv = $outputlangs->transnoentities("Service")." "; + else + $prefix_prodserv = $outputlangs->transnoentities("Product")." "; - $libelleproduitservice=$prefix_prodserv.$prodser->ref." - ".$libelleproduitservice; - } + $libelleproduitservice=$prefix_prodserv.$prodser->ref." - ".$libelleproduitservice; + } - } + } - $pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page + $pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page - $pdf->writeHTMLCell(150, 3, $this->posxdesc, $curY, $libelleproduitservice, 0, 1); + $pdf->writeHTMLCell(150, 3, $this->posxdesc, $curY, $libelleproduitservice, 0, 1); - $pdf->SetXY (160, $curY); + $pdf->SetXY (160, $curY); $pdf->MultiCell(30, 3, $this->expe->lignes[$i]->qty_asked); - - $pdf->SetXY (186, $curY); + + $pdf->SetXY (186, $curY); $pdf->MultiCell(30, 3, $this->expe->lignes[$i]->qty_shipped); } - $pdf->AliasNbPages(); + $pdf->AliasNbPages(); - $pdf->Close(); - + $pdf->Close(); + $pdf->Output($file); - + $langs->setPhpLang(); // On restaure langue session return 1; } - else - { - $this->error=$outputlangs->transnoentities("ErrorCanNotCreateDir",$dir); + else + { + $this->error=$outputlangs->transnoentities("ErrorCanNotCreateDir",$dir); $langs->setPhpLang(); // On restaure langue session - return 0; - } + return 0; + } } - else - { - $this->error=$outputlangs->transnoentities("ErrorConstantNotDefined","EXP_OUTPUTDIR"); + else + { + $this->error=$outputlangs->transnoentities("ErrorConstantNotDefined","EXP_OUTPUTDIR"); $langs->setPhpLang(); // On restaure langue session - return 0; - } - $this->error=$outputlangs->transnoentities("ErrorUnknown"); + return 0; + } + $this->error=$outputlangs->transnoentities("ErrorUnknown"); $langs->setPhpLang(); // On restaure langue session - return 0; // Erreur par defaut + return 0; // Erreur par defaut } } diff --git a/htdocs/livraison/fiche.php b/htdocs/livraison/fiche.php index 3cd491f680f..54da1cd859c 100644 --- a/htdocs/livraison/fiche.php +++ b/htdocs/livraison/fiche.php @@ -552,7 +552,7 @@ else */ $livraisonref = sanitize_string($livraison->ref); - $filedir = $conf->livraison->dir_output . '/' . $livraisonref; + $filedir = $conf->livraison_bon->dir_output . '/' . $livraisonref; $urlsource = $_SERVER["PHP_SELF"]."?id=".$livraison->id; $genallowed=$user->rights->expedition->livraison->creer; diff --git a/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php b/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php index a255fdb5484..5139584abef 100644 --- a/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php +++ b/htdocs/livraison/mods/pdf/pdf_sirocco.modules.php @@ -20,65 +20,66 @@ * or see http://www.gnu.org/ */ -/** - \file htdocs/livraison/mods/pdf/pdf_sirocco.modules.php - \ingroup livraison - \brief Fichier de la classe permettant de générer les bons de livraison au modèle Sirocco - \version $Id$ -*/ +/** + \file htdocs/livraison/mods/pdf/pdf_sirocco.modules.php + \ingroup livraison + \brief Fichier de la classe permettant de générer les bons de livraison au modèle Sirocco + \version $Id$ + */ require_once(DOL_DOCUMENT_ROOT."/livraison/mods/modules_livraison.php"); /** - \class pdf_sirocco - \brief Classe permettant de générer les bons de livraison au modèle Sirocco -*/ + \class pdf_sirocco + \brief Classe permettant de générer les bons de livraison au modèle Sirocco + */ class pdf_sirocco extends ModelePDFDeliveryOrder { - /** \brief Constructeur - \param db handler accès base de donnée - */ - function pdf_sirocco($db=0) - { - $this->db = $db; - $this->name = "sirocco"; - $this->description = "Modèle de bon de livraison simple"; + /** \brief Constructeur + \param db handler accès base de donnée + */ + function pdf_sirocco($db=0) + { + $this->db = $db; + $this->name = "sirocco"; + $this->description = "Modèle de bon de livraison simple"; - // Dimension page pour format A4 - $this->type = 'pdf'; - $this->page_largeur = 210; - $this->page_hauteur = 297; - $this->format = array($this->page_largeur,$this->page_hauteur); + // Dimension page pour format A4 + $this->type = 'pdf'; + $this->page_largeur = 210; + $this->page_hauteur = 297; + $this->format = array($this->page_largeur,$this->page_hauteur); - $this->error = ""; - } - + $this->error = ""; + } - /** \brief Renvoi dernière erreur - \return string Dernière erreur - */ - function pdferror() - { - return $this->error; - } - - - /** - \brief Fonction générant le bon de livraison sur le disque - \param delivery Object livraison à générer - \return int 1=ok, 0=ko - */ - function write_file($delivery) - { + + /** \brief Renvoi dernière erreur + * \return string Dernière erreur + */ + function pdferror() + { + return $this->error; + } + + + /** + \brief Fonction générant le bon de livraison sur le disque + \param delivery Object livraison à générer + \param outputlangs Output language + \return int 1 if OK, <=0 if KO + */ + function write_file($delivery,$outputlangs='') + { global $user,$conf,$langs; - $langs->load("main"); - $langs->load("bills"); - $langs->load("products"); - $langs->load("deliveries"); + $langs->load("main"); + $langs->load("bills"); + $langs->load("products"); + $langs->load("deliveries"); if ($conf->livraison_bon->dir_output) { @@ -93,287 +94,285 @@ class pdf_sirocco extends ModelePDFDeliveryOrder { dolibarr_print_error($db,$delivery->error); } - } + } $deliveryref = sanitize_string($delivery->ref); - $dir = $conf->livraison->dir_output; + $dir = $conf->livraison_bon->dir_output; if (! eregi('specimen',$deliveryref)) $dir.= "/" . $deliveryref; $file = $dir . "/" . $deliveryref . ".pdf"; - if (! file_exists($dir)) - { - if (create_exdir($dir) < 0) - { - $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); - return 0; - } - } + if (! file_exists($dir)) + { + if (create_exdir($dir) < 0) + { + $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); + return 0; + } + } + + if (file_exists($dir)) + { + // Protection et encryption du pdf + if ($conf->global->PDF_SECURITY_ENCRYPTION) + { + $pdf=new FPDI_Protection('P','mm',$this->format); + $pdfrights = array('print'); // Ne permet que l'impression du document + $pdfuserpass = ''; // Mot de passe pour l'utilisateur final + $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini + $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); + } + else + { + $pdf=new FPDI('P','mm',$this->format); + } + + $pdf->Open(); + $pdf->AddPage(); + + $pdf->SetTitle($delivery->ref); + $pdf->SetSubject($langs->transnoentities("DeliveryOrder")); + $pdf->SetCreator("Dolibarr ".DOL_VERSION); + $pdf->SetAuthor($user->fullname); + + $this->_pagehead($pdf, $delivery); + + /* + */ + $tab_top = 100; + $tab_height = 140; + /* + * + */ + + $pdf->SetFillColor(220,220,220); + + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','', 10); + + $pdf->SetXY (10, $tab_top + 10 ); + + $iniY = $pdf->GetY(); + $curY = $pdf->GetY(); + $nexY = $pdf->GetY(); + $nblignes = sizeof($delivery->lignes); + + for ($i = 0 ; $i < $nblignes ; $i++) + { + + $curY = $nexY; + + $pdf->SetXY (30, $curY ); + + $pdf->MultiCell(100, 5, $delivery->lignes[$i]->desc, 0, 'J', 0); + + $nexY = $pdf->GetY(); + + $pdf->SetXY (10, $curY ); + + $pdf->MultiCell(20, 5, $delivery->lignes[$i]->ref, 0, 'C'); + + $pdf->SetXY (133, $curY ); + $pdf->MultiCell(10, 5, $delivery->lignes[$i]->tva_tx, 0, 'C'); + + $pdf->SetXY (145, $curY ); + $pdf->MultiCell(10, 5, $delivery->lignes[$i]->qty, 0, 'C'); + + $pdf->SetXY (156, $curY ); + $pdf->MultiCell(18, 5, price($delivery->lignes[$i]->price), 0, 'R', 0); + + $pdf->SetXY (174, $curY ); + $total = price($delivery->lignes[$i]->price * $delivery->lignes[$i]->qty); + $pdf->MultiCell(26, 5, $total, 0, 'R', 0); + + $pdf->line(10, $curY, 200, $curY ); + + if ($nexY > 240 && $i < $nblignes - 1) + { + $this->_tableau($pdf, $tab_top, $tab_height, $nexY); + $pdf->AddPage(); + $nexY = $iniY; + $this->_pagehead($pdf, $delivery); + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','', 10); + } + } + + $this->_tableau($pdf, $tab_top, $tab_height, $nexY); + /* + * + */ + $tab2_top = 241; + $tab2_lh = 7; + $tab2_height = $tab2_lh * 4; + + $pdf->SetFont('Arial','', 11); + + $pdf->Rect(132, $tab2_top, 68, $tab2_height); + + $pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*3), 200, $tab2_top + $tab2_height - ($tab2_lh*3) ); + $pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*2), 200, $tab2_top + $tab2_height - ($tab2_lh*2) ); + $pdf->line(132, $tab2_top + $tab2_height - $tab2_lh, 200, $tab2_top + $tab2_height - $tab2_lh ); + + $pdf->line(174, $tab2_top, 174, $tab2_top + $tab2_height); + + $pdf->SetXY (132, $tab2_top + 0); + $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("TotalHT"), 0, 'R', 0); + + $pdf->SetXY (132, $tab2_top + $tab2_lh); + $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("Discount"), 0, 'R', 0); + + $pdf->SetXY (132, $tab2_top + $tab2_lh*2); + $pdf->MultiCell(42, $tab2_lh, "Total HT après remise", 0, 'R', 0); + + $pdf->SetXY (132, $tab2_top + $tab2_lh*3); + $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("TotalVAT"), 0, 'R', 0); + + $pdf->SetXY (132, $tab2_top + ($tab2_lh*4)); + $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("TotalTTC"), 1, 'R', 1); + + $pdf->SetXY (174, $tab2_top + 0); + $pdf->MultiCell(26, $tab2_lh, price($delivery->total_ht + $delivery->remise), 0, 'R', 0); + + $pdf->SetXY (174, $tab2_top + $tab2_lh); + $pdf->MultiCell(26, $tab2_lh, price($delivery->remise), 0, 'R', 0); + + $pdf->SetXY (174, $tab2_top + $tab2_lh*2); + $pdf->MultiCell(26, $tab2_lh, price($delivery->total_ht), 0, 'R', 0); + + $pdf->SetXY (174, $tab2_top + $tab2_lh*3); + $pdf->MultiCell(26, $tab2_lh, price($delivery->total_tva), 0, 'R', 0); + + $pdf->SetXY (174, $tab2_top + ($tab2_lh*4)); + $pdf->MultiCell(26, $tab2_lh, price($delivery->total_ttc), 1, 'R', 1); + + + $pdf->Output($file); + return 1; + } } else { $this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR"); - return 0; + return 0; } + } - $file = $dir . "/" . $deliveryref . ".pdf"; - - if (file_exists($dir)) - { - // Protection et encryption du pdf - if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } - - $pdf->Open(); - $pdf->AddPage(); - - $pdf->SetTitle($delivery->ref); - $pdf->SetSubject($langs->transnoentities("DeliveryOrder")); - $pdf->SetCreator("Dolibarr ".DOL_VERSION); - $pdf->SetAuthor($user->fullname); - - $this->_pagehead($pdf, $delivery); - - /* - */ - $tab_top = 100; - $tab_height = 140; - /* - * - */ - - $pdf->SetFillColor(220,220,220); - - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','', 10); - - $pdf->SetXY (10, $tab_top + 10 ); - - $iniY = $pdf->GetY(); - $curY = $pdf->GetY(); - $nexY = $pdf->GetY(); - $nblignes = sizeof($delivery->lignes); - - for ($i = 0 ; $i < $nblignes ; $i++) - { - - $curY = $nexY; - - $pdf->SetXY (30, $curY ); - - $pdf->MultiCell(100, 5, $delivery->lignes[$i]->desc, 0, 'J', 0); - - $nexY = $pdf->GetY(); - - $pdf->SetXY (10, $curY ); - - $pdf->MultiCell(20, 5, $delivery->lignes[$i]->ref, 0, 'C'); - - $pdf->SetXY (133, $curY ); - $pdf->MultiCell(10, 5, $delivery->lignes[$i]->tva_tx, 0, 'C'); - - $pdf->SetXY (145, $curY ); - $pdf->MultiCell(10, 5, $delivery->lignes[$i]->qty, 0, 'C'); - - $pdf->SetXY (156, $curY ); - $pdf->MultiCell(18, 5, price($delivery->lignes[$i]->price), 0, 'R', 0); - - $pdf->SetXY (174, $curY ); - $total = price($delivery->lignes[$i]->price * $delivery->lignes[$i]->qty); - $pdf->MultiCell(26, 5, $total, 0, 'R', 0); - - $pdf->line(10, $curY, 200, $curY ); - - if ($nexY > 240 && $i < $nblignes - 1) - { - $this->_tableau($pdf, $tab_top, $tab_height, $nexY); - $pdf->AddPage(); - $nexY = $iniY; - $this->_pagehead($pdf, $delivery); - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','', 10); - } - } - - $this->_tableau($pdf, $tab_top, $tab_height, $nexY); - /* - * - */ - $tab2_top = 241; - $tab2_lh = 7; - $tab2_height = $tab2_lh * 4; - - $pdf->SetFont('Arial','', 11); - - $pdf->Rect(132, $tab2_top, 68, $tab2_height); - - $pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*3), 200, $tab2_top + $tab2_height - ($tab2_lh*3) ); - $pdf->line(132, $tab2_top + $tab2_height - ($tab2_lh*2), 200, $tab2_top + $tab2_height - ($tab2_lh*2) ); - $pdf->line(132, $tab2_top + $tab2_height - $tab2_lh, 200, $tab2_top + $tab2_height - $tab2_lh ); - - $pdf->line(174, $tab2_top, 174, $tab2_top + $tab2_height); - - $pdf->SetXY (132, $tab2_top + 0); - $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("TotalHT"), 0, 'R', 0); - - $pdf->SetXY (132, $tab2_top + $tab2_lh); - $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("Discount"), 0, 'R', 0); - - $pdf->SetXY (132, $tab2_top + $tab2_lh*2); - $pdf->MultiCell(42, $tab2_lh, "Total HT après remise", 0, 'R', 0); - - $pdf->SetXY (132, $tab2_top + $tab2_lh*3); - $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("TotalVAT"), 0, 'R', 0); - - $pdf->SetXY (132, $tab2_top + ($tab2_lh*4)); - $pdf->MultiCell(42, $tab2_lh, $langs->transnoentities("TotalTTC"), 1, 'R', 1); - - $pdf->SetXY (174, $tab2_top + 0); - $pdf->MultiCell(26, $tab2_lh, price($delivery->total_ht + $delivery->remise), 0, 'R', 0); - - $pdf->SetXY (174, $tab2_top + $tab2_lh); - $pdf->MultiCell(26, $tab2_lh, price($delivery->remise), 0, 'R', 0); - - $pdf->SetXY (174, $tab2_top + $tab2_lh*2); - $pdf->MultiCell(26, $tab2_lh, price($delivery->total_ht), 0, 'R', 0); - - $pdf->SetXY (174, $tab2_top + $tab2_lh*3); - $pdf->MultiCell(26, $tab2_lh, price($delivery->total_tva), 0, 'R', 0); - - $pdf->SetXY (174, $tab2_top + ($tab2_lh*4)); - $pdf->MultiCell(26, $tab2_lh, price($delivery->total_ttc), 1, 'R', 1); - - - $pdf->Output($file); - return 1; - } - } - - /* - * \brief Affiche la grille des lignes de propales - * \param pdf objet PDF - */ + /** + * \brief Affiche la grille des lignes de propales + * \param pdf objet PDF + */ function _tableau(&$pdf, $tab_top, $tab_height, $nexY) - { - global $langs,$conf; - $langs->load("main"); - $langs->load("bills"); + { + global $langs,$conf; + $langs->load("main"); + $langs->load("bills"); - $pdf->SetFont('Arial','',11); - - $pdf->Text(30,$tab_top + 5,$langs->transnoentities("Designation")); - - $pdf->line(132, $tab_top, 132, $tab_top + $tab_height); - $pdf->Text(134,$tab_top + 5,$langs->transnoentities("VAT")); - - $pdf->line(144, $tab_top, 144, $tab_top + $tab_height); - $pdf->Text(147,$tab_top + 5,$langs->transnoentities("Qty")); - - $pdf->line(156, $tab_top, 156, $tab_top + $tab_height); - $pdf->Text(160,$tab_top + 5,$langs->transnoentities("PriceU")); - - $pdf->line(174, $tab_top, 174, $tab_top + $tab_height); - $pdf->Text(187,$tab_top + 5,$langs->transnoentities("Total")); - - // $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top); - $pdf->Rect(10, $tab_top, 190, $tab_height); + $pdf->SetFont('Arial','',11); + + $pdf->Text(30,$tab_top + 5,$langs->transnoentities("Designation")); + + $pdf->line(132, $tab_top, 132, $tab_top + $tab_height); + $pdf->Text(134,$tab_top + 5,$langs->transnoentities("VAT")); + + $pdf->line(144, $tab_top, 144, $tab_top + $tab_height); + $pdf->Text(147,$tab_top + 5,$langs->transnoentities("Qty")); + + $pdf->line(156, $tab_top, 156, $tab_top + $tab_height); + $pdf->Text(160,$tab_top + 5,$langs->transnoentities("PriceU")); + + $pdf->line(174, $tab_top, 174, $tab_top + $tab_height); + $pdf->Text(187,$tab_top + 5,$langs->transnoentities("Total")); + + // $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top); + $pdf->Rect(10, $tab_top, 190, $tab_height); - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','',10); - $titre = $langs->transnoentities("AmountInCurrency",$langs->transnoentities("Currency".$conf->monnaie)); - $pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre); + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','',10); + $titre = $langs->transnoentities("AmountInCurrency",$langs->transnoentities("Currency".$conf->monnaie)); + $pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre); - } + } - /* - * \brief Affiche en-tête propale - * \param pdf objet PDF - * \param fac objet propale - * \param showadress 0=non, 1=oui - */ + /* + * \brief Affiche en-tête propale + * \param pdf objet PDF + * \param fac objet propale + * \param showadress 0=non, 1=oui + */ function _pagehead(&$pdf, $delivery) - { + { global $langs; $langs->load("deliveries"); - $pdf->SetXY(10,5); - if (defined("MAIN_INFO_SOCIETE_NOM")) - { + $pdf->SetXY(10,5); + if (defined("MAIN_INFO_SOCIETE_NOM")) + { $pdf->SetTextColor(0,0,200); $pdf->SetFont('Arial','B',14); $pdf->MultiCell(76, 8, MAIN_INFO_SOCIETE_NOM, 0, 'L'); - } - - $pdf->SetTextColor(70,70,170); - if (defined("FAC_PDF_ADRESSE")) - { + } + + $pdf->SetTextColor(70,70,170); + if (defined("FAC_PDF_ADRESSE")) + { $pdf->SetFont('Arial','',12); $pdf->MultiCell(76, 5, FAC_PDF_ADRESSE); - } - if (defined("FAC_PDF_TEL")) - { + } + if (defined("FAC_PDF_TEL")) + { $pdf->SetFont('Arial','',10); $pdf->MultiCell(76, 5, "Tél : ".FAC_PDF_TEL); - } - if (defined("MAIN_INFO_SIREN")) - { + } + if (defined("MAIN_INFO_SIREN")) + { $pdf->SetFont('Arial','',10); $pdf->MultiCell(76, 5, "SIREN : ".MAIN_INFO_SIREN); - } - - if (defined("FAC_PDF_INTITULE2")) - { + } + + if (defined("FAC_PDF_INTITULE2")) + { $pdf->SetXY(100,5); $pdf->SetFont('Arial','B',14); $pdf->SetTextColor(0,0,200); $pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R'); + } + /* + * Adresse Client + */ + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','B',12); + $client = new Societe($this->db); + /* + * if a delivery address is used, use that, else use the client address + */ + if ($commande->adresse_livraison_id>0) { + $client->fetch_adresse_livraison($commande->adresse_livraison_id); + } else { + $client->fetch($delivery->socid); + } + $delivery->client = $client; + + $pdf->SetXY(102,42); + $pdf->MultiCell(96,5, $delivery->client->nom); + $pdf->SetFont('Arial','B',11); + $pdf->SetXY(102,47); + $pdf->MultiCell(96,5, $delivery->client->adresse . "\n" . $delivery->client->cp . " " . $delivery->client->ville); + $pdf->rect(100, 40, 100, 40); + + + $pdf->SetTextColor(200,0,0); + $pdf->SetFont('Arial','B',12); + $pdf->Text(11, 88, $langs->transnoentities("Date")." : " . dolibarr_print_date($delivery->date_valid,"day")); + $pdf->Text(11, 94, $langs->transnoentities("DeliveryOrder")." ".$delivery->ref); + + $pdf->SetFont('Arial','B',9); + $commande = new Commande ($this->db); + if ($commande->fetch($delivery->commande_id) >0) { + $pdf->Text(11, 98, $langs->transnoentities("RefOrder")." ".$commande->ref); + } + + } - /* - * Adresse Client - */ - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','B',12); - $client = new Societe($this->db); - /* - * if a delivery address is used, use that, else use the client address - */ - if ($commande->adresse_livraison_id>0) { - $client->fetch_adresse_livraison($commande->adresse_livraison_id); - } else { - $client->fetch($delivery->socid); - } - $delivery->client = $client; - - $pdf->SetXY(102,42); - $pdf->MultiCell(96,5, $delivery->client->nom); - $pdf->SetFont('Arial','B',11); - $pdf->SetXY(102,47); - $pdf->MultiCell(96,5, $delivery->client->adresse . "\n" . $delivery->client->cp . " " . $delivery->client->ville); - $pdf->rect(100, 40, 100, 40); - - - $pdf->SetTextColor(200,0,0); - $pdf->SetFont('Arial','B',12); - $pdf->Text(11, 88, $langs->transnoentities("Date")." : " . dolibarr_print_date($delivery->date_valid,"day")); - $pdf->Text(11, 94, $langs->transnoentities("DeliveryOrder")." ".$delivery->ref); - - $pdf->SetFont('Arial','B',9); - $commande = new Commande ($this->db); - if ($commande->fetch($delivery->commande_id) >0) { - $pdf->Text(11, 98, $langs->transnoentities("RefOrder")." ".$commande->ref); - } - - - } } diff --git a/htdocs/livraison/mods/pdf/pdf_typhon.modules.php b/htdocs/livraison/mods/pdf/pdf_typhon.modules.php index 99a6bded59d..ad4ad7f1b11 100644 --- a/htdocs/livraison/mods/pdf/pdf_typhon.modules.php +++ b/htdocs/livraison/mods/pdf/pdf_typhon.modules.php @@ -20,12 +20,12 @@ */ /** - \file htdocs/livraison/mods/pdf/pdf_typhon.modules.php - \ingroup livraison - \brief Fichier de la classe permettant de générer les bons de livraison au modèle Typhon - \author Laurent Destailleur - \version $Id$ -*/ + \file htdocs/livraison/mods/pdf/pdf_typhon.modules.php + \ingroup livraison + \brief Fichier de la classe permettant de générer les bons de livraison au modèle Typhon + \author Laurent Destailleur + \version $Id$ + */ require_once(DOL_DOCUMENT_ROOT."/livraison/mods/modules_livraison.php"); require_once(DOL_DOCUMENT_ROOT."/livraison/livraison.class.php"); @@ -33,825 +33,822 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php"); /** - \class pdf_typhon - \brief Classe permettant de générer les bons de livraison au modèle Typhon -*/ + \class pdf_typhon + \brief Classe permettant de générer les bons de livraison au modèle Typhon + */ class pdf_typhon extends ModelePDFDeliveryOrder { - - /** - \brief Constructeur - \param db Handler accès base de donnée - */ - function pdf_typhon($db) - { - global $conf,$langs; - $this->db = $db; - $this->name = "typhon"; - $this->description = "Modèle de bon de livraison complet (logo...)"; + /** + \brief Constructeur + \param db Handler accès base de donnée + */ + function pdf_typhon($db) + { + global $conf,$langs; - // Dimension page pour format A4 - $this->type = 'pdf'; - $this->page_largeur = 210; - $this->page_hauteur = 297; - $this->format = array($this->page_largeur,$this->page_hauteur); - $this->marge_gauche=10; - $this->marge_droite=10; - $this->marge_haute=10; - $this->marge_basse=10; - - $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO - $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION - $this->option_modereg = 1; // Gere choix mode règlement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER - $this->option_codeproduitservice = 1; // Affiche code produit-service - if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise') - $this->franchise=1; + $this->db = $db; + $this->name = "typhon"; + $this->description = "Modèle de bon de livraison complet (logo...)"; - // Recupere code pays de l'emmetteur - if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini + // Dimension page pour format A4 + $this->type = 'pdf'; + $this->page_largeur = 210; + $this->page_hauteur = 297; + $this->format = array($this->page_largeur,$this->page_hauteur); + $this->marge_gauche=10; + $this->marge_droite=10; + $this->marge_haute=10; + $this->marge_basse=10; - $this->tva=array(); + $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO + $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION + $this->option_modereg = 1; // Gere choix mode règlement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER + $this->option_codeproduitservice = 1; // Affiche code produit-service + if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise') + $this->franchise=1; - // Defini position des colonnes - $this->posxdesc=$this->marge_gauche+1; - $this->posxtva=121; - $this->posxup=132; - $this->posxqty=151; - $this->posxdiscount=162; - $this->postotalht=177; - - $this->atleastoneratenotnull=0; - $this->atleastonediscount=0; + // Recupere code pays de l'emmetteur + if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'était pas défini + + $this->tva=array(); + + // Defini position des colonnes + $this->posxdesc=$this->marge_gauche+1; + $this->posxtva=121; + $this->posxup=132; + $this->posxqty=151; + $this->posxdiscount=162; + $this->postotalht=177; + + $this->atleastoneratenotnull=0; + $this->atleastonediscount=0; } - /** - \brief Renvoi dernière erreur - \return string Dernière erreur - */ - function pdferror() - { - return $this->error; - } + /** + * \brief Renvoi dernière erreur + * \return string Dernière erreur + */ + function pdferror() + { + return $this->error; + } - /** - \brief Fonction générant la commande sur le disque - \param delivery Object livraison à générer - \return int 1=ok, 0=ko - */ - function write_file($delivery,$outputlangs='') - { - global $user,$langs,$conf; + /** + \brief Fonction générant le bon de livraison sur le disque + \param delivery Object livraison à générer + \param outputlangs Output language + \return int 1 if OK, <=0 if KO + */ + function write_file($delivery,$outputlangs='') + { + global $user,$langs,$conf; - $langs->load("main"); - $langs->load("bills"); - $langs->load("products"); - $langs->load("deliveries"); + $langs->load("main"); + $langs->load("bills"); + $langs->load("products"); + $langs->load("deliveries"); - if ($conf->livraison_bon->dir_output) - { - // If $delivery is id instead of object - if (! is_object($delivery)) - { - $id = $delivery; - $delivery = new Livraison($this->db); - $delivery->fetch($id); + if ($conf->livraison_bon->dir_output) + { + // If $delivery is id instead of object + if (! is_object($delivery)) + { + $id = $delivery; + $delivery = new Livraison($this->db); + $delivery->fetch($id); - if ($result < 0) - { - dolibarr_print_error($db,$delivery->error); - } + if ($result < 0) + { + dolibarr_print_error($db,$delivery->error); } - - $nblignes = sizeof($delivery->lignes); - - $deliveryref = sanitize_string($delivery->ref); - $dir = $conf->livraison->dir_output; - if (! eregi('specimen',$deliveryref)) $dir.= "/" . $deliveryref; - $file = $dir . "/" . $deliveryref . ".pdf"; - - if (! file_exists($dir)) - { - if (create_exdir($dir) < 0) - { - $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); - return 0; - } - } - - if (file_exists($dir)) - { - // Protection et encryption du pdf - if ($conf->global->PDF_SECURITY_ENCRYPTION) - { - $pdf=new FPDI_Protection('P','mm',$this->format); - $pdfrights = array('print'); // Ne permet que l'impression du document - $pdfuserpass = ''; // Mot de passe pour l'utilisateur final - $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini - $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); - } - else - { - $pdf=new FPDI('P','mm',$this->format); - } - - $pdf->Open(); - $pdf->AddPage(); + } - $pdf->SetDrawColor(128,128,128); + $nblignes = sizeof($delivery->lignes); - $pdf->SetTitle($delivery->ref); - $pdf->SetSubject($langs->transnoentities("DeliveryOrder")); - $pdf->SetCreator("Dolibarr ".DOL_VERSION); - $pdf->SetAuthor($user->fullname); + $deliveryref = sanitize_string($delivery->ref); + $dir = $conf->livraison_bon->dir_output; + if (! eregi('specimen',$deliveryref)) $dir.= "/" . $deliveryref; + $file = $dir . "/" . $deliveryref . ".pdf"; - $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right - $pdf->SetAutoPageBreak(1,0); -/* - // Positionne $this->atleastonediscount si on a au moins une remise - for ($i = 0 ; $i < $nblignes ; $i++) - { - if ($delivery->lignes[$i]->remise_percent) - { - $this->atleastonediscount++; - } - } -*/ - $this->_pagehead($pdf, $delivery); + if (! file_exists($dir)) + { + if (create_exdir($dir) < 0) + { + $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); + return 0; + } + } - $pagenb = 1; - $tab_top = 90; - $tab_top_newpage = 50; - $tab_height = 150; + if (file_exists($dir)) + { + // Protection et encryption du pdf + if ($conf->global->PDF_SECURITY_ENCRYPTION) + { + $pdf=new FPDI_Protection('P','mm',$this->format); + $pdfrights = array('print'); // Ne permet que l'impression du document + $pdfuserpass = ''; // Mot de passe pour l'utilisateur final + $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini + $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); + } + else + { + $pdf=new FPDI('P','mm',$this->format); + } - $iniY = $tab_top + 8; - $curY = $tab_top + 8; - $nexY = $tab_top + 8; + $pdf->Open(); + $pdf->AddPage(); - // Boucle sur les lignes - for ($i = 0 ; $i < $nblignes ; $i++) - { - $curY = $nexY; - - // Description de la ligne produit - $libelleproduitservice=dol_htmlentitiesbr($delivery->lignes[$i]->label,1); - if ($delivery->lignes[$i]->description && $delivery->lignes[$i]->description!=$delivery->lignes[$i]->label) - { - if ($libelleproduitservice) $libelleproduitservice.="
"; - $libelleproduitservice.=dol_htmlentitiesbr($delivery->lignes[$i]->description,1); - } - // Si ligne associée à un code produit - if ($delivery->lignes[$i]->fk_product) - { - $prodser = new Product($this->db); - $prodser->fetch($delivery->lignes[$i]->fk_product); - if ($prodser->ref) - { - $prefix_prodserv = ""; - if($prodser->isservice()) - { - // Un service peur aussi être livré - $prefix_prodserv = $langs->transnoentities("Service")." "; - } - else - { - $prefix_prodserv = $langs->transnoentities("Product")." "; - } - $libelleproduitservice=$prefix_prodserv.$prodser->ref." - ".$libelleproduitservice; - } - } - if ($delivery->lignes[$i]->date_start && $delivery->lignes[$i]->date_end) - { - // Affichage durée si il y en a une - $libelleproduitservice.="
".dol_htmlentitiesbr("(".$langs->transnoentities("From")." ".dolibarr_print_date($delivery->lignes[$i]->date_start)." ".$langs->transnoentities("to")." ".dolibarr_print_date($delivery->lignes[$i]->date_end).")",1); - } - - $pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page - - $pdf->writeHTMLCell(108, 4, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1); - - $pdf->SetFont('Arial','', 9); // On repositionne la police par défaut + $pdf->SetDrawColor(128,128,128); - $nexY = $pdf->GetY(); -/* - // TVA - $pdf->SetXY ($this->posxtva, $curY); - $pdf->MultiCell(10, 4, ($delivery->lignes[$i]->tva_tx < 0 ? '*':'').abs($delivery->lignes[$i]->tva_tx), 0, 'R'); + $pdf->SetTitle($delivery->ref); + $pdf->SetSubject($langs->transnoentities("DeliveryOrder")); + $pdf->SetCreator("Dolibarr ".DOL_VERSION); + $pdf->SetAuthor($user->fullname); - // Prix unitaire HT avant remise - $pdf->SetXY ($this->posxup, $curY); - $pdf->MultiCell(18, 4, price($delivery->lignes[$i]->subprice), 0, 'R', 0); -*/ - // Quantité - $pdf->SetXY ($this->posxqty, $curY); - $pdf->MultiCell(10, 4, $delivery->lignes[$i]->qty_livre, 0, 'R'); -/* - // Remise sur ligne - $pdf->SetXY ($this->posxdiscount, $curY); - if ($delivery->lignes[$i]->remise_percent) - { - $pdf->MultiCell(14, 4, $delivery->lignes[$i]->remise_percent."%", 0, 'R'); - } + $pdf->SetMargins($this->marge_gauche, $this->marge_haute, $this->marge_droite); // Left, Top, Right + $pdf->SetAutoPageBreak(1,0); + /* + // Positionne $this->atleastonediscount si on a au moins une remise + for ($i = 0 ; $i < $nblignes ; $i++) + { + if ($delivery->lignes[$i]->remise_percent) + { + $this->atleastonediscount++; + } + } + */ + $this->_pagehead($pdf, $delivery); - // Total HT ligne - $pdf->SetXY ($this->postotalht, $curY); - $total = price($delivery->lignes[$i]->price * $delivery->lignes[$i]->qty); - $pdf->MultiCell(23, 4, $total, 0, 'R', 0); + $pagenb = 1; + $tab_top = 90; + $tab_top_newpage = 50; + $tab_height = 150; - // Collecte des totaux par valeur de tva - // dans le tableau tva["taux"]=total_tva - $tvaligne=$delivery->lignes[$i]->price * $delivery->lignes[$i]->qty; - if ($delivery->remise_percent) $tvaligne-=($tvaligne*$delivery->remise_percent)/100; - $this->tva[ (string)$delivery->lignes[$i]->tva_tx ] += $tvaligne; -*/ - $nexY+=2; // Passe espace entre les lignes + $iniY = $tab_top + 8; + $curY = $tab_top + 8; + $nexY = $tab_top + 8; - if ($nexY > 200 && $i < ($nblignes - 1)) - { - $this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY); + // Boucle sur les lignes + for ($i = 0 ; $i < $nblignes ; $i++) + { + $curY = $nexY; + + // Description de la ligne produit + $libelleproduitservice=dol_htmlentitiesbr($delivery->lignes[$i]->label,1); + if ($delivery->lignes[$i]->description && $delivery->lignes[$i]->description!=$delivery->lignes[$i]->label) + { + if ($libelleproduitservice) $libelleproduitservice.="
"; + $libelleproduitservice.=dol_htmlentitiesbr($delivery->lignes[$i]->description,1); + } + // Si ligne associée à un code produit + if ($delivery->lignes[$i]->fk_product) + { + $prodser = new Product($this->db); + $prodser->fetch($delivery->lignes[$i]->fk_product); + if ($prodser->ref) + { + $prefix_prodserv = ""; + if($prodser->isservice()) + { + // Un service peur aussi être livré + $prefix_prodserv = $langs->transnoentities("Service")." "; + } + else + { + $prefix_prodserv = $langs->transnoentities("Product")." "; + } + $libelleproduitservice=$prefix_prodserv.$prodser->ref." - ".$libelleproduitservice; + } + } + if ($delivery->lignes[$i]->date_start && $delivery->lignes[$i]->date_end) + { + // Affichage durée si il y en a une + $libelleproduitservice.="
".dol_htmlentitiesbr("(".$langs->transnoentities("From")." ".dolibarr_print_date($delivery->lignes[$i]->date_start)." ".$langs->transnoentities("to")." ".dolibarr_print_date($delivery->lignes[$i]->date_end).")",1); + } + + $pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page + + $pdf->writeHTMLCell(108, 4, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1); + + $pdf->SetFont('Arial','', 9); // On repositionne la police par défaut + + $nexY = $pdf->GetY(); + /* + // TVA + $pdf->SetXY ($this->posxtva, $curY); + $pdf->MultiCell(10, 4, ($delivery->lignes[$i]->tva_tx < 0 ? '*':'').abs($delivery->lignes[$i]->tva_tx), 0, 'R'); + + // Prix unitaire HT avant remise + $pdf->SetXY ($this->posxup, $curY); + $pdf->MultiCell(18, 4, price($delivery->lignes[$i]->subprice), 0, 'R', 0); + */ + // Quantité + $pdf->SetXY ($this->posxqty, $curY); + $pdf->MultiCell(10, 4, $delivery->lignes[$i]->qty_livre, 0, 'R'); + /* + // Remise sur ligne + $pdf->SetXY ($this->posxdiscount, $curY); + if ($delivery->lignes[$i]->remise_percent) + { + $pdf->MultiCell(14, 4, $delivery->lignes[$i]->remise_percent."%", 0, 'R'); + } + + // Total HT ligne + $pdf->SetXY ($this->postotalht, $curY); + $total = price($delivery->lignes[$i]->price * $delivery->lignes[$i]->qty); + $pdf->MultiCell(23, 4, $total, 0, 'R', 0); + + // Collecte des totaux par valeur de tva + // dans le tableau tva["taux"]=total_tva + $tvaligne=$delivery->lignes[$i]->price * $delivery->lignes[$i]->qty; + if ($delivery->remise_percent) $tvaligne-=($tvaligne*$delivery->remise_percent)/100; + $this->tva[ (string)$delivery->lignes[$i]->tva_tx ] += $tvaligne; + */ + $nexY+=2; // Passe espace entre les lignes + + if ($nexY > 200 && $i < ($nblignes - 1)) + { + $this->_tableau($pdf, $tab_top, $tab_height + 20, $nexY); $this->_pagefoot($pdf); - - // Nouvelle page - $pdf->AddPage(); - $pagenb++; - $this->_pagehead($pdf, $delivery, 0); + + // Nouvelle page + $pdf->AddPage(); + $pagenb++; + $this->_pagehead($pdf, $delivery, 0); $nexY = $tab_top_newpage + 8; - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','', 10); - } + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','', 10); + } - } + } - - // Affiche cadre tableau - if ($pagenb == 1) - { - $this->_tableau($pdf, $tab_top, $tab_height, $nexY); - $bottomlasttab=$tab_top + $tab_height + 1; - } - else - { - $this->_tableau($pdf, $tab_top_newpage, $tab_height, $nexY); - $bottomlasttab=$tab_top_newpage + $tab_height + 1; - } - /* - $deja_regle = ""; - $posy=$this->_tableau_tot($pdf, $delivery, $deja_regle, $bottomlasttab); - - if ($deja_regle) { - $this->_tableau_versements($pdf, $fac, $posy); - } -*/ - /* - * Mode de règlement - */ - /* - if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) - { - $pdf->SetXY ($this->marge_gauche, 228); - $pdf->SetTextColor(200,0,0); - $pdf->SetFont('Arial','B',8); - $pdf->MultiCell(90, 3, $langs->transnoentities("ErrorNoPaiementModeConfigured"),0,'L',0); - $pdf->MultiCell(90, 3, $langs->transnoentities("ErrorCreateBankAccount"),0,'L',0); - $pdf->SetTextColor(0,0,0); - } -*/ - /* - * Propose mode règlement par CHQ - */ - /* - if (defined("FACTURE_CHQ_NUMBER")) - { - if (FACTURE_CHQ_NUMBER > 0) - { - $account = new Account($this->db); - $account->fetch(FACTURE_CHQ_NUMBER); + // Affiche cadre tableau + if ($pagenb == 1) + { + $this->_tableau($pdf, $tab_top, $tab_height, $nexY); + $bottomlasttab=$tab_top + $tab_height + 1; + } + else + { + $this->_tableau($pdf, $tab_top_newpage, $tab_height, $nexY); + $bottomlasttab=$tab_top_newpage + $tab_height + 1; + } + /* + $deja_regle = ""; - $pdf->SetXY ($this->marge_gauche, 227); - $pdf->SetFont('Arial','B',8); - $pdf->MultiCell(90, 3, "Règlement par chèque à l'ordre de ".$account->proprio." envoyé à:",0,'L',0); - $pdf->SetXY ($this->marge_gauche, 231); - $pdf->SetFont('Arial','',8); - $pdf->MultiCell(80, 3, $account->adresse_proprio, 0, 'L', 0); - } - } - */ - - /* - * Propose mode règlement par RIB - */ - /* - if (defined("FACTURE_RIB_NUMBER")) - { - if (FACTURE_RIB_NUMBER > 0) - { - $account = new Account($this->db); - $account->fetch(FACTURE_RIB_NUMBER); + $posy=$this->_tableau_tot($pdf, $delivery, $deja_regle, $bottomlasttab); - $this->marges['g']=$this->marge_gauche; - - $cury=242; - $pdf->SetXY ($this->marges['g'], $cury); - $pdf->SetFont('Arial','B',8); - $pdf->MultiCell(90, 3, "Règlement par virement sur le compte bancaire suivant:", 0, 'L', 0); - $cury+=4; - $pdf->SetFont('Arial','B',6); - $pdf->line($this->marges['g']+1, $cury, $this->marges['g']+1, $cury+10 ); - $pdf->SetXY ($this->marges['g'], $cury); - $pdf->MultiCell(18, 3, "Code banque", 0, 'C', 0); - $pdf->line($this->marges['g']+18, $cury, $this->marges['g']+18, $cury+10 ); - $pdf->SetXY ($this->marges['g']+18, $cury); - $pdf->MultiCell(18, 3, "Code guichet", 0, 'C', 0); - $pdf->line($this->marges['g']+36, $cury, $this->marges['g']+36, $cury+10 ); - $pdf->SetXY ($this->marges['g']+36, $cury); - $pdf->MultiCell(24, 3, "Numéro compte", 0, 'C', 0); - $pdf->line($this->marges['g']+60, $cury, $this->marges['g']+60, $cury+10 ); - $pdf->SetXY ($this->marges['g']+60, $cury); - $pdf->MultiCell(13, 3, "Clé RIB", 0, 'C', 0); - $pdf->line($this->marges['g']+73, $cury, $this->marges['g']+73, $cury+10 ); - - $pdf->SetFont('Arial','',8); - $pdf->SetXY ($this->marges['g'], $cury+5); - $pdf->MultiCell(18, 3, $account->code_banque, 0, 'C', 0); - $pdf->SetXY ($this->marges['g']+18, $cury+5); - $pdf->MultiCell(18, 3, $account->code_guichet, 0, 'C', 0); - $pdf->SetXY ($this->marges['g']+36, $cury+5); - $pdf->MultiCell(24, 3, $account->number, 0, 'C', 0); - $pdf->SetXY ($this->marges['g']+60, $cury+5); - $pdf->MultiCell(13, 3, $account->cle_rib, 0, 'C', 0); - - $pdf->SetXY ($this->marges['g'], $cury+12); - $pdf->MultiCell(90, 3, "Domiciliation : " . $account->domiciliation, 0, 'L', 0); - $pdf->SetXY ($this->marges['g'], $cury+22); - $pdf->MultiCell(90, 3, "Prefix IBAN : " . $account->iban_prefix, 0, 'L', 0); - $pdf->SetXY ($this->marges['g'], $cury+25); - $pdf->MultiCell(90, 3, "BIC : " . $account->bic, 0, 'L', 0); + if ($deja_regle) { + $this->_tableau_versements($pdf, $fac, $posy); + } + */ + /* + * Mode de règlement + */ + /* + if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) + { + $pdf->SetXY ($this->marge_gauche, 228); + $pdf->SetTextColor(200,0,0); + $pdf->SetFont('Arial','B',8); + $pdf->MultiCell(90, 3, $langs->transnoentities("ErrorNoPaiementModeConfigured"),0,'L',0); + $pdf->MultiCell(90, 3, $langs->transnoentities("ErrorCreateBankAccount"),0,'L',0); + $pdf->SetTextColor(0,0,0); + } + */ + /* + * Propose mode règlement par CHQ + */ + /* + if (defined("FACTURE_CHQ_NUMBER")) + { + if (FACTURE_CHQ_NUMBER > 0) + { + $account = new Account($this->db); + $account->fetch(FACTURE_CHQ_NUMBER); - } - } - */ - - /* - * Conditions de règlements - */ - /* Pour l'instant les conditions de règlement ne sont pas gérées sur les propales */ - /* - $pdf->SetFont('Arial','B',10); - $pdf->SetXY($this->marge_gauche, 217); - $titre = "Conditions de réglement:"; - $pdf->MultiCell(80, 5, $titre, 0, 'L'); - $pdf->SetFont('Arial','',10); - $pdf->SetXY(54, 217); - $pdf->MultiCell(80, 5, $prop->cond_reglement_facture,0,'L'); - */ + $pdf->SetXY ($this->marge_gauche, 227); + $pdf->SetFont('Arial','B',8); + $pdf->MultiCell(90, 3, "Règlement par chèque à l'ordre de ".$account->proprio." envoyé à:",0,'L',0); + $pdf->SetXY ($this->marge_gauche, 231); + $pdf->SetFont('Arial','',8); + $pdf->MultiCell(80, 3, $account->adresse_proprio, 0, 'L', 0); + } + } + */ - /* - * Pied de page - */ - $this->_pagefoot($pdf); - $pdf->AliasNbPages(); - - $pdf->Close(); + /* + * Propose mode règlement par RIB + */ + /* + if (defined("FACTURE_RIB_NUMBER")) + { + if (FACTURE_RIB_NUMBER > 0) + { + $account = new Account($this->db); + $account->fetch(FACTURE_RIB_NUMBER); - $pdf->Output($file); + $this->marges['g']=$this->marge_gauche; - return 1; // Pas d'erreur - } - else - { - $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); - return 0; - } - } - else - { - $this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR"); - return 0; - } - $this->error=$langs->transnoentities("ErrorUnknown"); - return 0; // Erreur par defaut - } + $cury=242; + $pdf->SetXY ($this->marges['g'], $cury); + $pdf->SetFont('Arial','B',8); + $pdf->MultiCell(90, 3, "Règlement par virement sur le compte bancaire suivant:", 0, 'L', 0); + $cury+=4; + $pdf->SetFont('Arial','B',6); + $pdf->line($this->marges['g']+1, $cury, $this->marges['g']+1, $cury+10 ); + $pdf->SetXY ($this->marges['g'], $cury); + $pdf->MultiCell(18, 3, "Code banque", 0, 'C', 0); + $pdf->line($this->marges['g']+18, $cury, $this->marges['g']+18, $cury+10 ); + $pdf->SetXY ($this->marges['g']+18, $cury); + $pdf->MultiCell(18, 3, "Code guichet", 0, 'C', 0); + $pdf->line($this->marges['g']+36, $cury, $this->marges['g']+36, $cury+10 ); + $pdf->SetXY ($this->marges['g']+36, $cury); + $pdf->MultiCell(24, 3, "Numéro compte", 0, 'C', 0); + $pdf->line($this->marges['g']+60, $cury, $this->marges['g']+60, $cury+10 ); + $pdf->SetXY ($this->marges['g']+60, $cury); + $pdf->MultiCell(13, 3, "Clé RIB", 0, 'C', 0); + $pdf->line($this->marges['g']+73, $cury, $this->marges['g']+73, $cury+10 ); - /* - * \brief Affiche le total à payer - * \param pdf Objet PDF - * \param prop Objet propale - * \param deja_regle Montant deja regle - * \return y Position pour suite - */ - function _tableau_tot(&$pdf, $delivery, $deja_regle, $posy) - { - global $langs; - $langs->load("main"); - $langs->load("bills"); + $pdf->SetFont('Arial','',8); + $pdf->SetXY ($this->marges['g'], $cury+5); + $pdf->MultiCell(18, 3, $account->code_banque, 0, 'C', 0); + $pdf->SetXY ($this->marges['g']+18, $cury+5); + $pdf->MultiCell(18, 3, $account->code_guichet, 0, 'C', 0); + $pdf->SetXY ($this->marges['g']+36, $cury+5); + $pdf->MultiCell(24, 3, $account->number, 0, 'C', 0); + $pdf->SetXY ($this->marges['g']+60, $cury+5); + $pdf->MultiCell(13, 3, $account->cle_rib, 0, 'C', 0); + + $pdf->SetXY ($this->marges['g'], $cury+12); + $pdf->MultiCell(90, 3, "Domiciliation : " . $account->domiciliation, 0, 'L', 0); + $pdf->SetXY ($this->marges['g'], $cury+22); + $pdf->MultiCell(90, 3, "Prefix IBAN : " . $account->iban_prefix, 0, 'L', 0); + $pdf->SetXY ($this->marges['g'], $cury+25); + $pdf->MultiCell(90, 3, "BIC : " . $account->bic, 0, 'L', 0); - $tab2_top = $posy; - $tab2_hl = 5; - $tab2_height = $tab2_hl * 4; - $pdf->SetFont('Arial','', 9); + } + } + */ - // Affiche la mention TVA non applicable selon option - $pdf->SetXY ($this->marge_gauche, $tab2_top + 0); - if ($this->franchise==1) - { - $pdf->MultiCell(100, $tab2_hl, "* TVA non applicable art-293B du CGI", 0, 'L', 0); - } + /* + * Conditions de règlements + */ + /* Pour l'instant les conditions de règlement ne sont pas gérées sur les propales */ + /* + $pdf->SetFont('Arial','B',10); + $pdf->SetXY($this->marge_gauche, 217); + $titre = "Conditions de réglement:"; + $pdf->MultiCell(80, 5, $titre, 0, 'L'); + $pdf->SetFont('Arial','',10); + $pdf->SetXY(54, 217); + $pdf->MultiCell(80, 5, $prop->cond_reglement_facture,0,'L'); + */ - // Tableau total - $lltot = 200; $col1x = 120; $col2x = 182; $largcol2 = $lltot - $col2x; + /* + * Pied de page + */ + $this->_pagefoot($pdf); + $pdf->AliasNbPages(); - // Total HT - $pdf->SetFillColor(255,255,255); - $pdf->SetXY ($col1x, $tab2_top + 0); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalHT"), 0, 'L', 1); + $pdf->Close(); - $pdf->SetXY ($col2x, $tab2_top + 0); - $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ht +$delivery->remise), 0, 'R', 1); + $pdf->Output($file); - // Remise globale - if ($delivery->remise > 0) - { - $pdf->SetXY ($col1x, $tab2_top + $tab2_hl); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("GlobalDiscount"), 0, 'L', 1); + return 1; // Pas d'erreur + } + else + { + $this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir); + return 0; + } + } - $pdf->SetXY ($col2x, $tab2_top + $tab2_hl); - $pdf->MultiCell($largcol2, $tab2_hl, "-".$delivery->remise_percent."%", 0, 'R', 1); + $this->error=$langs->transnoentities("ErrorConstantNotDefined","LIVRAISON_OUTPUTDIR"); + return 0; + } - $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * 2); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, "Total HT après remise", 0, 'L', 1); + /* + * \brief Affiche le total à payer + * \param pdf Objet PDF + * \param prop Objet propale + * \param deja_regle Montant deja regle + * \return y Position pour suite + */ + function _tableau_tot(&$pdf, $delivery, $deja_regle, $posy) + { + global $langs; + $langs->load("main"); + $langs->load("bills"); - $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2); - $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ht), 0, 'R', 0); + $tab2_top = $posy; + $tab2_hl = 5; + $tab2_height = $tab2_hl * 4; + $pdf->SetFont('Arial','', 9); - $index = 2; - } - else - { - $index = 0; - } + // Affiche la mention TVA non applicable selon option + $pdf->SetXY ($this->marge_gauche, $tab2_top + 0); + if ($this->franchise==1) + { + $pdf->MultiCell(100, $tab2_hl, "* TVA non applicable art-293B du CGI", 0, 'L', 0); + } - // Affichage des totaux de TVA par taux (conformément à réglementation) - $pdf->SetFillColor(248,248,248); - foreach( $this->tva as $tvakey => $tvaval ) - { - if ($tvakey) // On affiche pas taux 0 - { - $this->atleastoneratenotnull++; - - $index++; - $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); - $tvacompl = ( (float)$tvakey < 0 ) ? " (".$langs->transnoentities("NonPercuRecuperable").")" : '' ; - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalVAT").' '.abs($tvakey).'%'.$tvacompl, 0, 'L', 1); - - $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval * abs((float)$tvakey) / 100 ), 0, 'R', 1); - } - } - if (! $this->atleastoneratenotnull) - { - $index++; - $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalVAT"), 0, 'L', 1); - - $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_tva), 0, 'R', 1); - } - - $useborder=0; - - $index++; - $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); - $pdf->SetTextColor(0,0,60); - $pdf->SetFillColor(224,224,224); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalTTC"), $useborder, 'L', 1); + // Tableau total + $lltot = 200; $col1x = 120; $col2x = 182; $largcol2 = $lltot - $col2x; - $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ttc), $useborder, 'R', 1); - $pdf->SetFont('Arial','', 9); - $pdf->SetTextColor(0,0,0); + // Total HT + $pdf->SetFillColor(255,255,255); + $pdf->SetXY ($col1x, $tab2_top + 0); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalHT"), 0, 'L', 1); - if ($deja_regle > 0) - { - $index++; - - $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("AlreadyPayed"), 0, 'L', 0); + $pdf->SetXY ($col2x, $tab2_top + 0); + $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ht +$delivery->remise), 0, 'R', 1); - $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle), 0, 'R', 0); + // Remise globale + if ($delivery->remise > 0) + { + $pdf->SetXY ($col1x, $tab2_top + $tab2_hl); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("GlobalDiscount"), 0, 'L', 1); - $index++; - $pdf->SetTextColor(0,0,60); - //$pdf->SetFont('Arial','B', 9); - $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("RemainderToPay"), $useborder, 'L', 1); + $pdf->SetXY ($col2x, $tab2_top + $tab2_hl); + $pdf->MultiCell($largcol2, $tab2_hl, "-".$delivery->remise_percent."%", 0, 'R', 1); - $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); - $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ttc - $deja_regle), $useborder, 'R', 1); - $pdf->SetFont('Arial','', 9); - $pdf->SetTextColor(0,0,0); - } - - $index++; - return ($tab2_top + ($tab2_hl * $index)); - } + $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * 2); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, "Total HT après remise", 0, 'L', 1); - /* - * \brief Affiche la grille des lignes de propales - * \param pdf objet PDF - */ - function _tableau(&$pdf, $tab_top, $tab_height, $nexY) - { - global $langs,$conf; - $langs->load("main"); - $langs->load("bills"); - - // Montants exprimés en (en tab_top - 1) - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','',8); - //$titre = $langs->transnoentities("AmountInCurrency",$langs->transnoentities("Currency".$conf->monnaie)); - //$pdf->Text($this->page_largeur - $this->marge_droite - $pdf->GetStringWidth($titre), $tab_top-1, $titre); + $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2); + $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ht), 0, 'R', 0); - $pdf->SetDrawColor(128,128,128); + $index = 2; + } + else + { + $index = 0; + } - // Rect prend une longueur en 3eme param - $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height); - // line prend une position y en 3eme param - $pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6); + // Affichage des totaux de TVA par taux (conformément à réglementation) + $pdf->SetFillColor(248,248,248); + foreach( $this->tva as $tvakey => $tvaval ) + { + if ($tvakey) // On affiche pas taux 0 + { + $this->atleastoneratenotnull++; - $pdf->SetFont('Arial','',10); + $index++; + $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); + $tvacompl = ( (float)$tvakey < 0 ) ? " (".$langs->transnoentities("NonPercuRecuperable").")" : '' ; + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalVAT").' '.abs($tvakey).'%'.$tvacompl, 0, 'L', 1); - $pdf->SetXY ($this->posxdesc-1, $tab_top+2); - $pdf->MultiCell(108,2, $langs->transnoentities("Designation"),'','L'); -/* - $pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height); - $pdf->SetXY ($this->posxtva-1, $tab_top+2); - $pdf->MultiCell(12,2, $langs->transnoentities("VAT"),'','C'); + $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($tvaval * abs((float)$tvakey) / 100 ), 0, 'R', 1); + } + } + if (! $this->atleastoneratenotnull) + { + $index++; + $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalVAT"), 0, 'L', 1); - $pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height); - $pdf->SetXY ($this->posxup-1, $tab_top+2); - $pdf->MultiCell(18,2, $langs->transnoentities("PriceUHT"),'','C'); -*/ - $pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height); - $pdf->SetXY ($this->posxqty-1, $tab_top+2); - $pdf->MultiCell(11,2, $langs->transnoentities("Qty"),'','C'); -/* - $pdf->line($this->posxdiscount-1, $tab_top, $this->posxdiscount-1, $tab_top + $tab_height); - if ($this->atleastonediscount) - { - $pdf->SetXY ($this->posxdiscount-1, $tab_top+2); - $pdf->MultiCell(16,2, $langs->transnoentities("ReductionShort"),'','C'); - } + $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_tva), 0, 'R', 1); + } - if ($this->atleastonediscount) - { - $pdf->line($this->postotalht, $tab_top, $this->postotalht, $tab_top + $tab_height); - } - $pdf->SetXY ($this->postotalht-1, $tab_top+2); - $pdf->MultiCell(23,2, $langs->transnoentities("TotalHT"),'','C'); -*/ - } + $useborder=0; - /* - * \brief Affiche en-tête propale - * \param pdf objet PDF - * \param fac objet propale - * \param showadress 0=non, 1=oui - */ - function _pagehead(&$pdf, $delivery, $showadress=1) - { - global $langs,$conf,$mysoc; + $index++; + $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); + $pdf->SetTextColor(0,0,60); + $pdf->SetFillColor(224,224,224); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("TotalTTC"), $useborder, 'L', 1); - $langs->load("main"); - $langs->load("bills"); - $langs->load("orders"); - $langs->load("companies"); - - $pdf->SetTextColor(0,0,60); - $pdf->SetFont('Arial','B',13); + $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ttc), $useborder, 'R', 1); + $pdf->SetFont('Arial','', 9); + $pdf->SetTextColor(0,0,0); - $posy=$this->marge_haute; - - $pdf->SetXY($this->marge_gauche,$posy); + if ($deja_regle > 0) + { + $index++; + + $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("AlreadyPayed"), 0, 'L', 0); + + $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($deja_regle), 0, 'R', 0); + + $index++; + $pdf->SetTextColor(0,0,60); + //$pdf->SetFont('Arial','B', 9); + $pdf->SetXY ($col1x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($col2x-$col1x, $tab2_hl, $langs->transnoentities("RemainderToPay"), $useborder, 'L', 1); + + $pdf->SetXY ($col2x, $tab2_top + $tab2_hl * $index); + $pdf->MultiCell($largcol2, $tab2_hl, price($delivery->total_ttc - $deja_regle), $useborder, 'R', 1); + $pdf->SetFont('Arial','', 9); + $pdf->SetTextColor(0,0,0); + } + + $index++; + return ($tab2_top + ($tab2_hl * $index)); + } + + /* + * \brief Affiche la grille des lignes de propales + * \param pdf objet PDF + */ + function _tableau(&$pdf, $tab_top, $tab_height, $nexY) + { + global $langs,$conf; + $langs->load("main"); + $langs->load("bills"); + + // Montants exprimés en (en tab_top - 1) + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','',8); + //$titre = $langs->transnoentities("AmountInCurrency",$langs->transnoentities("Currency".$conf->monnaie)); + //$pdf->Text($this->page_largeur - $this->marge_droite - $pdf->GetStringWidth($titre), $tab_top-1, $titre); + + $pdf->SetDrawColor(128,128,128); + + // Rect prend une longueur en 3eme param + $pdf->Rect($this->marge_gauche, $tab_top, $this->page_largeur-$this->marge_gauche-$this->marge_droite, $tab_height); + // line prend une position y en 3eme param + $pdf->line($this->marge_gauche, $tab_top+6, $this->page_largeur-$this->marge_droite, $tab_top+6); + + $pdf->SetFont('Arial','',10); + + $pdf->SetXY ($this->posxdesc-1, $tab_top+2); + $pdf->MultiCell(108,2, $langs->transnoentities("Designation"),'','L'); + /* + $pdf->line($this->posxtva-1, $tab_top, $this->posxtva-1, $tab_top + $tab_height); + $pdf->SetXY ($this->posxtva-1, $tab_top+2); + $pdf->MultiCell(12,2, $langs->transnoentities("VAT"),'','C'); + + $pdf->line($this->posxup-1, $tab_top, $this->posxup-1, $tab_top + $tab_height); + $pdf->SetXY ($this->posxup-1, $tab_top+2); + $pdf->MultiCell(18,2, $langs->transnoentities("PriceUHT"),'','C'); + */ + $pdf->line($this->posxqty-1, $tab_top, $this->posxqty-1, $tab_top + $tab_height); + $pdf->SetXY ($this->posxqty-1, $tab_top+2); + $pdf->MultiCell(11,2, $langs->transnoentities("Qty"),'','C'); + /* + $pdf->line($this->posxdiscount-1, $tab_top, $this->posxdiscount-1, $tab_top + $tab_height); + if ($this->atleastonediscount) + { + $pdf->SetXY ($this->posxdiscount-1, $tab_top+2); + $pdf->MultiCell(16,2, $langs->transnoentities("ReductionShort"),'','C'); + } + + if ($this->atleastonediscount) + { + $pdf->line($this->postotalht, $tab_top, $this->postotalht, $tab_top + $tab_height); + } + $pdf->SetXY ($this->postotalht-1, $tab_top+2); + $pdf->MultiCell(23,2, $langs->transnoentities("TotalHT"),'','C'); + */ + } + + /* + * \brief Affiche en-tête propale + * \param pdf objet PDF + * \param fac objet propale + * \param showadress 0=non, 1=oui + */ + function _pagehead(&$pdf, $delivery, $showadress=1) + { + global $langs,$conf,$mysoc; + + $langs->load("main"); + $langs->load("bills"); + $langs->load("orders"); + $langs->load("companies"); + + $pdf->SetTextColor(0,0,60); + $pdf->SetFont('Arial','B',13); + + $posy=$this->marge_haute; + + $pdf->SetXY($this->marge_gauche,$posy); // Logo - $logo=$conf->societe->dir_logos.'/'.$mysoc->logo; - if ($mysoc->logo) - { - if (is_readable($logo)) - { - $pdf->Image($logo, $this->marge_gauche, $posy, 0, 24); - } - else - { - $pdf->SetTextColor(200,0,0); - $pdf->SetFont('Arial','B',8); - $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L'); - $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); - } - } - else if(defined("MAIN_INFO_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) - { - $pdf->MultiCell(100, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L'); - } + $logo=$conf->societe->dir_logos.'/'.$mysoc->logo; + if ($mysoc->logo) + { + if (is_readable($logo)) + { + $pdf->Image($logo, $this->marge_gauche, $posy, 0, 24); + } + else + { + $pdf->SetTextColor(200,0,0); + $pdf->SetFont('Arial','B',8); + $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorLogoFileNotFound",$logo), 0, 'L'); + $pdf->MultiCell(100, 3, $langs->transnoentities("ErrorGoToModuleSetup"), 0, 'L'); + } + } + else if(defined("MAIN_INFO_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) + { + $pdf->MultiCell(100, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L'); + } - $pdf->SetFont('Arial','B',13); - $pdf->SetXY(100,$posy); - $pdf->SetTextColor(0,0,60); - $pdf->MultiCell(100, 4, $langs->transnoentities("DeliveryOrder")." ".$delivery->ref, '' , 'R'); - $pdf->SetFont('Arial','',12); - - $posy+=6; - $pdf->SetXY(100,$posy); - $pdf->SetTextColor(0,0,60); - if ($delivery->date_valid) - { - $pdf->MultiCell(100, 4, $langs->transnoentities("Date")." : " . dolibarr_print_date($delivery->date_valid,"%d %b %Y"), '', 'R'); - } - else - { - $pdf->SetTextColor(255,0,0); - $pdf->MultiCell(100, 4, $langs->transnoentities("DeliveryNotValidated"), '', 'R'); + $pdf->SetFont('Arial','B',13); + $pdf->SetXY(100,$posy); $pdf->SetTextColor(0,0,60); + $pdf->MultiCell(100, 4, $langs->transnoentities("DeliveryOrder")." ".$delivery->ref, '' , 'R'); + $pdf->SetFont('Arial','',12); + + $posy+=6; + $pdf->SetXY(100,$posy); + $pdf->SetTextColor(0,0,60); + if ($delivery->date_valid) + { + $pdf->MultiCell(100, 4, $langs->transnoentities("Date")." : " . dolibarr_print_date($delivery->date_valid,"%d %b %Y"), '', 'R'); + } + else + { + $pdf->SetTextColor(255,0,0); + $pdf->MultiCell(100, 4, $langs->transnoentities("DeliveryNotValidated"), '', 'R'); + $pdf->SetTextColor(0,0,60); + } + + $posy+=6; + $pdf->SetXY(100,$posy); + $pdf->SetTextColor(0,0,60); + $commande = new Commande ($this->db); + if ($commande->fetch($delivery->commande_id) >0) { + $pdf->MultiCell(100, 4, $langs->transnoentities("RefOrder")." : ".$commande->ref, '' , 'R'); + } + + if ($showadress) + { + // Emetteur + $posy=42; + $hautcadre=40; + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','',8); + $pdf->SetXY($this->marge_gauche,$posy-5); + $pdf->MultiCell(66,5, $langs->transnoentities("BillFrom").":"); + + + $pdf->SetXY($this->marge_gauche,$posy); + $pdf->SetFillColor(230,230,230); + $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); + + + $pdf->SetXY($this->marge_gauche+2,$posy+3); + + // Nom emetteur + $pdf->SetTextColor(0,0,60); + $pdf->SetFont('Arial','B',11); + if (defined("FAC_PDF_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) $pdf->MultiCell(80, 4, FAC_PDF_SOCIETE_NOM, 0, 'L'); + else $pdf->MultiCell(80, 4, $mysoc->nom, 0, 'L'); + + // Caractéristiques emetteur + $carac_emetteur = ''; + if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; + else { + $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$mysoc->adresse; + $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$mysoc->cp.' '.$mysoc->ville; + } + $carac_emetteur .= "\n"; + // Tel + if (defined("FAC_PDF_TEL") && FAC_PDF_TEL) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Phone").": ".FAC_PDF_TEL; + elseif ($mysoc->tel) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Phone").": ".$mysoc->tel; + // Fax + if (defined("FAC_PDF_FAX") && FAC_PDF_FAX) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Fax").": ".FAC_PDF_FAX; + elseif ($mysoc->fax) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Fax").": ".$mysoc->fax; + // EMail + if (defined("FAC_PDF_MEL") && FAC_PDF_MEL) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Email").": ".FAC_PDF_MEL; + elseif ($mysoc->email) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Email").": ".$mysoc->email; + // Web + if (defined("FAC_PDF_WWW") && FAC_PDF_WWW) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Web").": ".FAC_PDF_WWW; + elseif ($mysoc->url) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Web").": ".$mysoc->url; + + $pdf->SetFont('Arial','',9); + $pdf->SetXY($this->marge_gauche+2,$posy+8); + $pdf->MultiCell(80,4, $carac_emetteur); + + // Client destinataire + $posy=42; + $pdf->SetTextColor(0,0,0); + $pdf->SetFont('Arial','',8); + $pdf->SetXY(102,$posy-5); + $pdf->MultiCell(80,5, $langs->transnoentities("DeliveryAddress").":"); + + /* + * if a delivery address is used, use that, else use the client address + */ + $client = new Societe($this->db); + if ($commande->adresse_livraison_id > 0) { + $client->fetch_adresse_livraison($commande->adresse_livraison_id); + } else { + $client->fetch($delivery->socid); + } + $delivery->client = $client; + + // Cadre client destinataire + $pdf->rect(100, $posy, 100, $hautcadre); + + // Nom client + $pdf->SetXY(102,$posy+3); + $pdf->SetFont('Arial','B',11); + $pdf->MultiCell(106,4, $delivery->client->nom, 0, 'L'); + + // Caractéristiques client + $carac_client=$delivery->client->adresse."\n"; + $carac_client.=$delivery->client->cp . " " . $delivery->client->ville."\n"; + + // Pays si différent de l'émetteur + if ($this->emetteur->pays_code != $delivery->client->pays_code) + { + $carac_client.=$delivery->client->pays."\n"; + } + + // Tva intracom + if ($delivery->client->tva_intra) $carac_client.="\n".$langs->transnoentities("VATIntraShort").': '.$delivery->client->tva_intra; + $pdf->SetFont('Arial','',9); + $pdf->SetXY(102,$posy+8); + $pdf->MultiCell(86,4, $carac_client); + } + } - $posy+=6; - $pdf->SetXY(100,$posy); - $pdf->SetTextColor(0,0,60); - $commande = new Commande ($this->db); - if ($commande->fetch($delivery->commande_id) >0) { - $pdf->MultiCell(100, 4, $langs->transnoentities("RefOrder")." : ".$commande->ref, '' , 'R'); + /* + * \brief Affiche le pied de page + * \param pdf objet PDF + */ + function _pagefoot(&$pdf) + { + global $langs, $conf; + $langs->load("main"); + $langs->load("bills"); + $langs->load("companies"); + + // Premiere ligne d'info réglementaires + $ligne1=""; + if ($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE) + { + $ligne1.=($ligne1?" - ":"").getFormeJuridiqueLabel($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE); + } + if ($conf->global->MAIN_INFO_CAPITAL) + { + $ligne1.=($ligne1?" - ":"").$langs->transnoentities("CapitalOf",$conf->global->MAIN_INFO_CAPITAL)." ".$langs->transnoentities("Currency".$conf->monnaie); + } + if ($conf->global->MAIN_INFO_SIRET) + { + $ligne1.=($ligne1?" - ":"").$langs->transcountry("ProfId2",$this->emetteur->pays_code).": ".$conf->global->MAIN_INFO_SIRET; + } + if ($conf->global->MAIN_INFO_SIREN && (! $conf->global->MAIN_INFO_SIRET || $this->emetteur->pays_code != 'FR')) + { + $ligne1.=($ligne1?" - ":"").$langs->transcountry("ProfId1",$this->emetteur->pays_code).": ".$conf->global->MAIN_INFO_SIREN; + } + if ($conf->global->MAIN_INFO_APE) + { + $ligne1.=($ligne1?" - ":"").$langs->transcountry("ProfId3",$this->emetteur->pays_code).": ".MAIN_INFO_APE; + } + + // Deuxieme ligne d'info réglementaires + $ligne2=""; + if ($conf->global->MAIN_INFO_RCS) + { + $ligne2.=($ligne2?" - ":"").$langs->transcountry("ProfId4",$this->emetteur->pays_code).": ".$conf->global->MAIN_INFO_RCS; + } + if ($conf->global->MAIN_INFO_TVAINTRA != '') + { + $ligne2.=($ligne2?" - ":"").$langs->transnoentities("VATIntraShort").": ".$conf->global->MAIN_INFO_TVAINTRA; + } + + $pdf->SetFont('Arial','',8); + $pdf->SetDrawColor(224,224,224); + + // On positionne le debut du bas de page selon nbre de lignes de ce bas de page + $posy=$this->marge_basse + 1 + ($ligne1?3:0) + ($ligne2?3:0); + + $pdf->SetY(-$posy); + $pdf->line($this->marge_gauche, $this->page_hauteur-$posy, 200, $this->page_hauteur-$posy); + $posy--; + + if ($ligne1) + { + $pdf->SetXY($this->marge_gauche,-$posy); + $pdf->MultiCell(200, 2, $ligne1, 0, 'C', 0); + } + + if ($ligne2) + { + $posy-=3; + $pdf->SetXY($this->marge_gauche,-$posy); + $pdf->MultiCell(200, 2, $ligne2, 0, 'C', 0); + } + + $pdf->SetXY(-20,-$posy); + $pdf->MultiCell(10, 2, $pdf->PageNo().'/{nb}', 0, 'R', 0); } - if ($showadress) - { - // Emetteur - $posy=42; - $hautcadre=40; - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','',8); - $pdf->SetXY($this->marge_gauche,$posy-5); - $pdf->MultiCell(66,5, $langs->transnoentities("BillFrom").":"); - - - $pdf->SetXY($this->marge_gauche,$posy); - $pdf->SetFillColor(230,230,230); - $pdf->MultiCell(82, $hautcadre, "", 0, 'R', 1); - - - $pdf->SetXY($this->marge_gauche+2,$posy+3); - - // Nom emetteur - $pdf->SetTextColor(0,0,60); - $pdf->SetFont('Arial','B',11); - if (defined("FAC_PDF_SOCIETE_NOM") && FAC_PDF_SOCIETE_NOM) $pdf->MultiCell(80, 4, FAC_PDF_SOCIETE_NOM, 0, 'L'); - else $pdf->MultiCell(80, 4, $mysoc->nom, 0, 'L'); - - // Caractéristiques emetteur - $carac_emetteur = ''; - if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; - else { - $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$mysoc->adresse; - $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$mysoc->cp.' '.$mysoc->ville; - } - $carac_emetteur .= "\n"; - // Tel - if (defined("FAC_PDF_TEL") && FAC_PDF_TEL) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Phone").": ".FAC_PDF_TEL; - elseif ($mysoc->tel) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Phone").": ".$mysoc->tel; - // Fax - if (defined("FAC_PDF_FAX") && FAC_PDF_FAX) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Fax").": ".FAC_PDF_FAX; - elseif ($mysoc->fax) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Fax").": ".$mysoc->fax; - // EMail - if (defined("FAC_PDF_MEL") && FAC_PDF_MEL) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Email").": ".FAC_PDF_MEL; - elseif ($mysoc->email) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Email").": ".$mysoc->email; - // Web - if (defined("FAC_PDF_WWW") && FAC_PDF_WWW) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Web").": ".FAC_PDF_WWW; - elseif ($mysoc->url) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).$langs->transnoentities("Web").": ".$mysoc->url; - - $pdf->SetFont('Arial','',9); - $pdf->SetXY($this->marge_gauche+2,$posy+8); - $pdf->MultiCell(80,4, $carac_emetteur); - - // Client destinataire - $posy=42; - $pdf->SetTextColor(0,0,0); - $pdf->SetFont('Arial','',8); - $pdf->SetXY(102,$posy-5); - $pdf->MultiCell(80,5, $langs->transnoentities("DeliveryAddress").":"); - - /* - * if a delivery address is used, use that, else use the client address - */ - $client = new Societe($this->db); - if ($commande->adresse_livraison_id > 0) { - $client->fetch_adresse_livraison($commande->adresse_livraison_id); - } else { - $client->fetch($delivery->socid); - } - $delivery->client = $client; - - // Cadre client destinataire - $pdf->rect(100, $posy, 100, $hautcadre); - - // Nom client - $pdf->SetXY(102,$posy+3); - $pdf->SetFont('Arial','B',11); - $pdf->MultiCell(106,4, $delivery->client->nom, 0, 'L'); - - // Caractéristiques client - $carac_client=$delivery->client->adresse."\n"; - $carac_client.=$delivery->client->cp . " " . $delivery->client->ville."\n"; - - // Pays si différent de l'émetteur - if ($this->emetteur->pays_code != $delivery->client->pays_code) - { - $carac_client.=$delivery->client->pays."\n"; - } - - // Tva intracom - if ($delivery->client->tva_intra) $carac_client.="\n".$langs->transnoentities("VATIntraShort").': '.$delivery->client->tva_intra; - $pdf->SetFont('Arial','',9); - $pdf->SetXY(102,$posy+8); - $pdf->MultiCell(86,4, $carac_client); - } - - } - - /* - * \brief Affiche le pied de page - * \param pdf objet PDF - */ - function _pagefoot(&$pdf) - { - global $langs, $conf; - $langs->load("main"); - $langs->load("bills"); - $langs->load("companies"); - - // Premiere ligne d'info réglementaires - $ligne1=""; - if ($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE) - { - $ligne1.=($ligne1?" - ":"").getFormeJuridiqueLabel($conf->global->MAIN_INFO_SOCIETE_FORME_JURIDIQUE); - } - if ($conf->global->MAIN_INFO_CAPITAL) - { - $ligne1.=($ligne1?" - ":"").$langs->transnoentities("CapitalOf",$conf->global->MAIN_INFO_CAPITAL)." ".$langs->transnoentities("Currency".$conf->monnaie); - } - if ($conf->global->MAIN_INFO_SIRET) - { - $ligne1.=($ligne1?" - ":"").$langs->transcountry("ProfId2",$this->emetteur->pays_code).": ".$conf->global->MAIN_INFO_SIRET; - } - if ($conf->global->MAIN_INFO_SIREN && (! $conf->global->MAIN_INFO_SIRET || $this->emetteur->pays_code != 'FR')) - { - $ligne1.=($ligne1?" - ":"").$langs->transcountry("ProfId1",$this->emetteur->pays_code).": ".$conf->global->MAIN_INFO_SIREN; - } - if ($conf->global->MAIN_INFO_APE) - { - $ligne1.=($ligne1?" - ":"").$langs->transcountry("ProfId3",$this->emetteur->pays_code).": ".MAIN_INFO_APE; - } - - // Deuxieme ligne d'info réglementaires - $ligne2=""; - if ($conf->global->MAIN_INFO_RCS) - { - $ligne2.=($ligne2?" - ":"").$langs->transcountry("ProfId4",$this->emetteur->pays_code).": ".$conf->global->MAIN_INFO_RCS; - } - if ($conf->global->MAIN_INFO_TVAINTRA != '') - { - $ligne2.=($ligne2?" - ":"").$langs->transnoentities("VATIntraShort").": ".$conf->global->MAIN_INFO_TVAINTRA; - } - - $pdf->SetFont('Arial','',8); - $pdf->SetDrawColor(224,224,224); - - // On positionne le debut du bas de page selon nbre de lignes de ce bas de page - $posy=$this->marge_basse + 1 + ($ligne1?3:0) + ($ligne2?3:0); - - $pdf->SetY(-$posy); - $pdf->line($this->marge_gauche, $this->page_hauteur-$posy, 200, $this->page_hauteur-$posy); - $posy--; - - if ($ligne1) - { - $pdf->SetXY($this->marge_gauche,-$posy); - $pdf->MultiCell(200, 2, $ligne1, 0, 'C', 0); - } - - if ($ligne2) - { - $posy-=3; - $pdf->SetXY($this->marge_gauche,-$posy); - $pdf->MultiCell(200, 2, $ligne2, 0, 'C', 0); - } - - $pdf->SetXY(-20,-$posy); - $pdf->MultiCell(10, 2, $pdf->PageNo().'/{nb}', 0, 'R', 0); - } - } ?>