This commit is contained in:
Rodolphe Quiedeville 2008-09-01 13:23:46 +00:00
parent 0a7c51642e
commit 539a39105d

View File

@ -22,286 +22,286 @@
*/ */
/** /**
\file htdocs/expedition/mods/methode_expedition.modules.php \file htdocs/expedition/mods/methode_expedition.modules.php
\ingroup expedition \ingroup expedition
\brief Fichier contenant la classe mère de generation de bon de livraison en PDF \brief Fichier contenant la classe mère de generation de bon de livraison en PDF
et la classe mère de numérotation des bons de livraisons et la classe mère de numérotation des bons de livraisons
\version $Revision$ \version $Revision$
*/ */
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
/** /**
\class methode_expedition \class methode_expedition
\brief Classe mère des methodes expeditions \brief Classe mère des methodes expeditions
*/ */
class methode_expedition class methode_expedition
{ {
function methode_expedition($db=0) function methode_expedition($db=0)
{ {
$this->db = $db; $this->db = $db;
$this->name = "NON DEFINIT"; $this->name = "NON DEFINIT";
$this->description = "ERREUR DANS LA DEFINITION DU MODULE."; $this->description = "ERREUR DANS LA DEFINITION DU MODULE.";
} }
function Active($statut) function Active($statut)
{ {
// Mise a jour du statut // Mise a jour du statut
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut "; $sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut ";
$sql.= " WHERE rowid = ".$this->id; $sql.= " WHERE rowid = ".$this->id;
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if ($resql) if ($resql)
{ {
$af = $this->db->affected_rows($resql); $af = $this->db->affected_rows($resql);
if ($af == 0 && $statut == 1) if ($af == 0 && $statut == 1)
{ {
// On créé la méthode dans la base // On créé la méthode dans la base
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode";
$sql .= " (rowid, statut, code, libelle, description)"; $sql .= " (rowid, statut, code, libelle, description)";
$sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')"; $sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')";
$resql = $this->db->query($sql); $resql = $this->db->query($sql);
if (! $resql) if (! $resql)
{ {
dolibarr_syslog("methode_expedition::Active Erreur 2"); dolibarr_syslog("methode_expedition::Active Erreur 2");
} }
} }
} }
else else
{ {
dolibarr_syslog("methode_expedition::Active Erreur 1"); dolibarr_syslog("methode_expedition::Active Erreur 1");
} }
} }
function write_file($id) function write_file($id)
{ {
global $user; global $user;
$propale = new Propal($this->db,"",$id); $propale = new Propal($this->db,"",$id);
if ($propale->fetch($id)) if ($propale->fetch($id))
{ {
$file = $dir . "/" . $propale->ref . ".pdf"; $file = $dir . "/" . $propale->ref . ".pdf";
if (file_exists($dir)) if (file_exists($dir))
{ {
// Protection et encryption du pdf // Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION) if ($conf->global->PDF_SECURITY_ENCRYPTION)
{ {
$pdf=new FPDI_Protection('P','mm','A4'); $pdf=new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
{ {
$pdf=new FPDI('P','mm',$this->format); $pdf=new FPDI('P','mm',$this->format);
} }
$pdf->Open(); $pdf->Open();
$pdf->AddPage(); $pdf->AddPage();
$pdf->SetTitle($propale->ref); $pdf->SetTitle($propale->ref);
$pdf->SetSubject("Proposition commerciale"); $pdf->SetSubject("Proposition commerciale");
$pdf->SetCreator("Dolibarr ".DOL_VERSION); $pdf->SetCreator("Dolibarr ".DOL_VERSION);
$pdf->SetAuthor($user->fullname); $pdf->SetAuthor($user->fullname);
$this->_pagehead($pdf, $propale); $this->_pagehead($pdf, $propale);
$tab_top = 100; $tab_top = 100;
$tab_height = 150; $tab_height = 150;
$pdf->SetFillColor(220,220,220); $pdf->SetFillColor(220,220,220);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10); $pdf->SetFont('Arial','', 10);
$pdf->SetXY (10, $tab_top + 10 ); $pdf->SetXY (10, $tab_top + 10 );
$iniY = $pdf->GetY(); $iniY = $pdf->GetY();
$curY = $pdf->GetY(); $curY = $pdf->GetY();
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
$nblignes = sizeof($propale->lignes); $nblignes = sizeof($propale->lignes);
for ($i = 0 ; $i < $nblignes ; $i++) for ($i = 0 ; $i < $nblignes ; $i++)
{ {
$curY = $nexY; $curY = $nexY;
$pdf->SetXY (30, $curY ); $pdf->SetXY (30, $curY );
$pdf->MultiCell(100, 5, $propale->lignes[$i]->desc, 0, 'J', 0); $pdf->MultiCell(100, 5, $propale->lignes[$i]->desc, 0, 'J', 0);
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
$pdf->SetXY (10, $curY ); $pdf->SetXY (10, $curY );
$pdf->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C'); $pdf->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C');
$pdf->SetXY (133, $curY ); $pdf->SetXY (133, $curY );
$pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C'); $pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C');
$pdf->SetXY (145, $curY ); $pdf->SetXY (145, $curY );
$pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C'); $pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C');
$pdf->SetXY (156, $curY ); $pdf->SetXY (156, $curY );
$pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0); $pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0);
$pdf->SetXY (174, $curY ); $pdf->SetXY (174, $curY );
$total = price($propale->lignes[$i]->price * $propale->lignes[$i]->qty); $total = price($propale->lignes[$i]->price * $propale->lignes[$i]->qty);
$pdf->MultiCell(26, 5, $total, 0, 'R', 0); $pdf->MultiCell(26, 5, $total, 0, 'R', 0);
$pdf->line(10, $curY, 200, $curY ); $pdf->line(10, $curY, 200, $curY );
if ($nexY > 240 && $i < $nblignes - 1) if ($nexY > 240 && $i < $nblignes - 1)
{ {
$this->_tableau($pdf, $tab_top, $tab_height, $nexY); $this->_tableau($pdf, $tab_top, $tab_height, $nexY);
$pdf->AddPage(); $pdf->AddPage();
$nexY = $iniY; $nexY = $iniY;
$this->_pagehead($pdf, $propale); $this->_pagehead($pdf, $propale);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','', 10); $pdf->SetFont('Arial','', 10);
} }
} }
$this->_tableau($pdf, $tab_top, $tab_height, $nexY); $this->_tableau($pdf, $tab_top, $tab_height, $nexY);
/* /*
* *
*/ */
$tab2_top = 254; $tab2_top = 254;
$tab2_lh = 7; $tab2_lh = 7;
$tab2_height = $tab2_lh * 3; $tab2_height = $tab2_lh * 3;
$pdf->SetFont('Arial','', 11); $pdf->SetFont('Arial','', 11);
$pdf->Rect(132, $tab2_top, 68, $tab2_height); $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*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*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(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->line(174, $tab2_top, 174, $tab2_top + $tab2_height);
$pdf->SetXY (132, $tab2_top + 0); $pdf->SetXY (132, $tab2_top + 0);
$pdf->MultiCell(42, $tab2_lh, "Total HT", 0, 'R', 0); $pdf->MultiCell(42, $tab2_lh, "Total HT", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + $tab2_lh); $pdf->SetXY (132, $tab2_top + $tab2_lh);
$pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0); $pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0);
$pdf->SetXY (132, $tab2_top + ($tab2_lh*2)); $pdf->SetXY (132, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1); $pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1);
$pdf->SetXY (174, $tab2_top + 0); $pdf->SetXY (174, $tab2_top + 0);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0); $pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + $tab2_lh); $pdf->SetXY (174, $tab2_top + $tab2_lh);
$pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0); $pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0);
$pdf->SetXY (174, $tab2_top + ($tab2_lh*2)); $pdf->SetXY (174, $tab2_top + ($tab2_lh*2));
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1); $pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1);
/* /*
* *
*/ */
$pdf->Output($file); $pdf->Output($file);
} }
} }
} }
function _tableau(&$pdf, $tab_top, $tab_height, $nexY) function _tableau(&$pdf, $tab_top, $tab_height, $nexY)
{ {
$pdf->SetFont('Arial','',11); $pdf->SetFont('Arial','',11);
$pdf->Text(30,$tab_top + 5,'Désignation'); $pdf->Text(30,$tab_top + 5,'Désignation');
$pdf->line(132, $tab_top, 132, $tab_top + $tab_height); $pdf->line(132, $tab_top, 132, $tab_top + $tab_height);
$pdf->Text(134,$tab_top + 5,'TVA'); $pdf->Text(134,$tab_top + 5,'TVA');
$pdf->line(144, $tab_top, 144, $tab_top + $tab_height); $pdf->line(144, $tab_top, 144, $tab_top + $tab_height);
$pdf->Text(147,$tab_top + 5,'Qté'); $pdf->Text(147,$tab_top + 5,'Qté');
$pdf->line(156, $tab_top, 156, $tab_top + $tab_height); $pdf->line(156, $tab_top, 156, $tab_top + $tab_height);
$pdf->Text(160,$tab_top + 5,'P.U.'); $pdf->Text(160,$tab_top + 5,'P.U.');
$pdf->line(174, $tab_top, 174, $tab_top + $tab_height); $pdf->line(174, $tab_top, 174, $tab_top + $tab_height);
$pdf->Text(187,$tab_top + 5,'Total'); $pdf->Text(187,$tab_top + 5,'Total');
// $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top); // $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top);
$pdf->Rect(10, $tab_top, 190, $tab_height); $pdf->Rect(10, $tab_top, 190, $tab_height);
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$titre = $langs->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie)); $titre = $langs->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie));
$pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre); $pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre);
} }
function _pagehead(&$pdf, $propale) function _pagehead(&$pdf, $propale)
{ {
$pdf->SetXY(10,5); $pdf->SetXY(10,5);
if (defined("FAC_PDF_INTITULE")) if (defined("FAC_PDF_INTITULE"))
{ {
$pdf->SetTextColor(0,0,200); $pdf->SetTextColor(0,0,200);
$pdf->SetFont('Times','B',14); $pdf->SetFont('Times','B',14);
$pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L'); $pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L');
} }
$pdf->SetTextColor(70,70,170); $pdf->SetTextColor(70,70,170);
if (defined("FAC_PDF_ADRESSE")) if (defined("FAC_PDF_ADRESSE"))
{ {
$pdf->SetFont('Times','',12); $pdf->SetFont('Times','',12);
$pdf->MultiCell(76, 5, FAC_PDF_ADRESSE); $pdf->MultiCell(76, 5, FAC_PDF_ADRESSE);
} }
if (defined("FAC_PDF_TEL")) if (defined("FAC_PDF_TEL"))
{ {
$pdf->SetFont('Times','',10); $pdf->SetFont('Times','',10);
$pdf->MultiCell(76, 5, "Tél : ".FAC_PDF_TEL); $pdf->MultiCell(76, 5, "Tél : ".FAC_PDF_TEL);
} }
if (defined("FAC_PDF_SIREN")) if (defined("FAC_PDF_SIREN"))
{ {
$pdf->SetFont('Times','',10); $pdf->SetFont('Times','',10);
$pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN); $pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN);
} }
if (defined("FAC_PDF_INTITULE2")) if (defined("FAC_PDF_INTITULE2"))
{ {
$pdf->SetXY(100,5); $pdf->SetXY(100,5);
$pdf->SetFont('Times','B',14); $pdf->SetFont('Times','B',14);
$pdf->SetTextColor(0,0,200); $pdf->SetTextColor(0,0,200);
$pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R'); $pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R');
} }
/* /*
* Adresse Client * Adresse Client
*/ */
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
$pdf->SetFont('Courier','B',12); $pdf->SetFont('Courier','B',12);
$propale->fetch_client(); $propale->fetch_client();
$pdf->SetXY(102,42); $pdf->SetXY(102,42);
$pdf->MultiCell(96,5, $propale->client->nom); $pdf->MultiCell(96,5, $propale->client->nom);
$pdf->SetFont('Courier','B',11); $pdf->SetFont('Courier','B',11);
$pdf->SetXY(102,47); $pdf->SetXY(102,47);
$pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville); $pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville);
$pdf->rect(100, 40, 100, 40); $pdf->rect(100, 40, 100, 40);
$pdf->SetTextColor(200,0,0); $pdf->SetTextColor(200,0,0);
$pdf->SetFont('Courier','B',12); $pdf->SetFont('Courier','B',12);
$pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day')); $pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day'));
$pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref); $pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref);
} }
} }