mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2026-01-25 02:03:23 +01:00
264 lines
7.1 KiB
PHP
264 lines
7.1 KiB
PHP
<?php
|
|
/* Copyright (C) 2006 Rodolphe Quiedeville <rodolphe@quiedeville.org>
|
|
*
|
|
* 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
|
|
* the Free Software Foundation; either version 2 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
|
* or see http://www.gnu.org/
|
|
*
|
|
* $Id$
|
|
* $Source$
|
|
*/
|
|
|
|
/**
|
|
\file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php
|
|
\ingroup banque
|
|
\brief Fichier de la classe permettant de générer les bordereau de remise de cheque
|
|
\version $Revision$
|
|
*/
|
|
|
|
|
|
/**
|
|
\class BordereauChequeBlochet
|
|
\brief Classe permettant de générer les bordereau de remise de cheque
|
|
*/
|
|
|
|
class BordereauChequeBlochet
|
|
{
|
|
var $emetteur; // Objet societe qui emet
|
|
|
|
/**
|
|
\brief Constructeur
|
|
*/
|
|
function BordereauChequeBlochet($db)
|
|
{
|
|
global $conf,$langs,$mysoc;
|
|
|
|
$langs->load("main");
|
|
$langs->load("bills");
|
|
|
|
$this->db = $db;
|
|
$this->name = "blochet";
|
|
$this->description = $langs->transnoentities("CheckReceipt");
|
|
|
|
$this->tab_top = 60;
|
|
|
|
// 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=20;
|
|
$this->marge_haute=10;
|
|
$this->marge_basse=10;
|
|
|
|
$this->line_height = 5;
|
|
$this->line_per_page = 25;
|
|
$this->tab_height = 200; //$this->line_height * $this->line_per_page;
|
|
}
|
|
|
|
|
|
/**
|
|
\brief Generate Header
|
|
\param pdf pdf object
|
|
\param page current page number
|
|
\param pages number of pages
|
|
*/
|
|
function Header(&$pdf, $page, $pages)
|
|
{
|
|
global $langs;
|
|
|
|
$title = $this->description;
|
|
$pdf->SetFont('Arial','B',10);
|
|
$pdf->Text(10, 10, $title);
|
|
|
|
$pdf->SetFont('Arial','',10);
|
|
$pdf->Text(10, 19, $langs->transnoentities("Numero"));
|
|
|
|
$pdf->SetFont('Arial','',10);
|
|
$pdf->Text(10, 27, $langs->transnoentities("Date") );
|
|
|
|
$pdf->SetFont('Arial','',10);
|
|
$pdf->Text(10, 35, $langs->transnoentities("Owner"));
|
|
|
|
$pdf->SetFont('Arial','B',10);
|
|
$pdf->Text(32, 35, $this->account->proprio);
|
|
|
|
$pdf->SetFont('Arial','B',10);
|
|
$pdf->Text(32, 19, $this->number);
|
|
|
|
$pdf->SetFont('Arial','B',10);
|
|
$pdf->Text(32, 27, dolibarr_print_date($this->date,"day"));
|
|
|
|
|
|
$pdf->SetFont('Arial','',10);
|
|
$pdf->Text(10, 43, "Compte");
|
|
|
|
$pdf->SetFont('Arial','B',10);
|
|
$pdf->Text(32, 43, $this->account->code_banque);
|
|
$pdf->Text(51, 43, $this->account->code_guichet);
|
|
$pdf->Text(68, 43, $this->account->number);
|
|
$pdf->Text(104, 43, $this->account->cle_rib);
|
|
|
|
$pdf->SetFont('Arial','',10);
|
|
$pdf->Text(114, 19, "Signature");
|
|
|
|
$pdf->Rect(9, 47, 192, 7);
|
|
$pdf->line(55, 47, 55, 54);
|
|
$pdf->line(140, 47, 140, 54);
|
|
$pdf->line(170, 47, 170, 54);
|
|
|
|
$pdf->SetFont('Arial','',10);
|
|
$pdf->Text(10, 52, "Nombre de chèque");
|
|
|
|
$pdf->SetFont('Arial','B',10);
|
|
$pdf->Text(57, 52, $this->nbcheque);
|
|
|
|
$pdf->SetFont('Arial','',10);
|
|
$pdf->Text(148, 52, "Total");
|
|
|
|
$pdf->SetFont('Arial','B',10);
|
|
$pdf->SetXY (170, 47);
|
|
$pdf->MultiCell(31, 7, price($this->amount), 0, 'C', 0);
|
|
|
|
// Tableau
|
|
$pdf->SetFont('Arial','',8);
|
|
$pdf->Text(11,$this->tab_top + 6,$langs->transnoentities("Num"));
|
|
$pdf->line(30, $this->tab_top, 30, $this->tab_top + $this->tab_height + 10);
|
|
|
|
$pdf->Text(31,$this->tab_top + 6,$langs->transnoentities("Bank"));
|
|
$pdf->line(100, $this->tab_top, 100, $this->tab_top + $this->tab_height + 10);
|
|
$pdf->Text(101, $this->tab_top + 6, $langs->transnoentities("CheckTransmitter"));
|
|
|
|
$pdf->line(180, $this->tab_top, 180, $this->tab_top + $this->tab_height + 10);
|
|
$pdf->SetXY (180, $this->tab_top);
|
|
$pdf->MultiCell(20, 10, $langs->transnoentities("Amount"), 0, 'R');
|
|
$pdf->line(9, $this->tab_top + 10, 201, $this->tab_top + 10 );
|
|
|
|
$pdf->Rect(9, $this->tab_top, 192, $this->tab_height + 10);
|
|
|
|
$pdf->Rect(9, 14, 192, 31);
|
|
$pdf->line(9, 22, 112, 22);
|
|
$pdf->line(9, 30, 112, 30);
|
|
$pdf->line(9, 38, 112, 38);
|
|
|
|
$pdf->line(30, 14, 30, 45);
|
|
$pdf->line(48, 38, 48, 45);
|
|
$pdf->line(66, 38, 66, 45);
|
|
$pdf->line(102, 38, 102, 45);
|
|
$pdf->line(112, 14, 112, 45);
|
|
|
|
}
|
|
|
|
|
|
function Body(&$pdf, $page)
|
|
{
|
|
// x=10 - Num
|
|
// x=30 - Banque
|
|
// x=100 - Emetteur
|
|
$pdf->SetFont('Arial','', 9);
|
|
$oldprowid = 0;
|
|
$pdf->SetFillColor(220,220,220);
|
|
$yp = 0;
|
|
for ($j = 0 ; $j < sizeof($this->lines) ; $j++)
|
|
{
|
|
$pdf->SetXY (1, $this->tab_top + 10 + $yp);
|
|
$pdf->MultiCell(8, $this->line_height, $j+1, 0, 'R', 0);
|
|
|
|
$pdf->SetXY (10, $this->tab_top + 10 + $yp);
|
|
$pdf->MultiCell(20, $this->line_height, $this->lines[$j]->num_chq?$this->lines[$j]->num_chq:'', 0, 'J', 0);
|
|
|
|
$pdf->SetXY (30, $this->tab_top + 10 + $yp);
|
|
$pdf->MultiCell(70, $this->line_height, dolibarr_trunc($this->lines[$j]->bank_chq,44), 0, 'J', 0);
|
|
|
|
$pdf->SetXY (100, $this->tab_top + 10 + $yp);
|
|
$pdf->MultiCell(80, $this->line_height, dolibarr_trunc($this->lines[$j]->emetteur_chq,50), 0, 'J', 0);
|
|
|
|
$pdf->SetXY (180, $this->tab_top + 10 + $yp);
|
|
$pdf->MultiCell(20, $this->line_height, price($this->lines[$j]->amount_chq), 0, 'R', 0);
|
|
|
|
$yp = $yp + $this->line_height;
|
|
}
|
|
}
|
|
/**
|
|
\brief Fonction générant le rapport sur le disque
|
|
\param _dir repertoire
|
|
\param month mois du rapport
|
|
\param year annee du rapport
|
|
*/
|
|
function write_file($_dir, $number)
|
|
{
|
|
global $langs;
|
|
|
|
$dir = $_dir . "/".get_exdir($number);
|
|
|
|
if (! is_dir($dir))
|
|
{
|
|
$result=create_exdir($dir);
|
|
|
|
if ($result < 0)
|
|
{
|
|
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
|
return -1;
|
|
}
|
|
}
|
|
|
|
$month = sprintf("%02d",$month);
|
|
$year = sprintf("%04d",$year);
|
|
$_file = $dir . "bordereau-00".$number.".pdf"; //Todo: réparation provisoire, ajout de 2 zero
|
|
|
|
// Protection et encryption du pdf
|
|
if ($conf->global->PDF_SECURITY_ENCRYPTION)
|
|
{
|
|
require_once(FPDFI_PATH.'fpdi_protection.php');
|
|
$pdf = new FPDI_Protection('P','mm','A4');
|
|
$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
|
|
{
|
|
require_once(FPDFI_PATH.'fpdi.php');
|
|
$pdf=new FPDI('P','mm',$this->format);
|
|
}
|
|
|
|
$pdf->Open();
|
|
|
|
|
|
$pages = intval($lignes / $this->line_per_page);
|
|
|
|
if (($lignes % $this->line_per_page)>0)
|
|
{
|
|
$pages++;
|
|
}
|
|
|
|
if ($pages == 0)
|
|
{
|
|
// force à générer au moins une page si le rapport ne contient aucune ligne
|
|
$pages = 1;
|
|
}
|
|
|
|
$pdf->AddPage();
|
|
|
|
$this->Header($pdf, 1, $pages);
|
|
|
|
$this->Body($pdf, 1);
|
|
|
|
$pdf->Output($_file);
|
|
}
|
|
}
|
|
|
|
?>
|