Add option to set mask on new files
This commit is contained in:
parent
1ca8c0975f
commit
6a259176a4
@ -19,11 +19,11 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/adherents/cartes/carte.php
|
||||
\ingroup adherent
|
||||
\brief Page de creation d'une carte PDF
|
||||
\version $Id$
|
||||
*/
|
||||
\file htdocs/adherents/cartes/carte.php
|
||||
\ingroup adherent
|
||||
\brief Page de creation d'une carte PDF
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
|
||||
@ -32,29 +32,29 @@ require_once(DOL_DOCUMENT_ROOT."/adherents/cartes/PDF_card.class.php");
|
||||
|
||||
// liste des patterns remplacable dans le texte a imprimer
|
||||
$patterns = array (
|
||||
'/%PRENOM%/',
|
||||
'/%NOM%/',
|
||||
'/%SERVEUR%/',
|
||||
'/%SOCIETE%/',
|
||||
'/%ADRESSE%/',
|
||||
'/%CP%/',
|
||||
'/%VILLE%/',
|
||||
'/%PAYS%/',
|
||||
'/%EMAIL%/',
|
||||
'/%NAISS%/',
|
||||
'/%PHOTO%/',
|
||||
'/%TYPE%/',
|
||||
'/%ID%/',
|
||||
'/%ANNEE%/'
|
||||
'/%PRENOM%/',
|
||||
'/%NOM%/',
|
||||
'/%SERVEUR%/',
|
||||
'/%SOCIETE%/',
|
||||
'/%ADRESSE%/',
|
||||
'/%CP%/',
|
||||
'/%VILLE%/',
|
||||
'/%PAYS%/',
|
||||
'/%EMAIL%/',
|
||||
'/%NAISS%/',
|
||||
'/%PHOTO%/',
|
||||
'/%TYPE%/',
|
||||
'/%ID%/',
|
||||
'/%ANNEE%/'
|
||||
);
|
||||
|
||||
/*
|
||||
*-------------------------------------------------
|
||||
* Pour créer l'objet on a 2 moyens :
|
||||
* Pour cr<EFBFBD>er l'objet on a 2 moyens :
|
||||
* Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel)
|
||||
* Soit on donne le type d'étiquette au format AVERY
|
||||
* Soit on donne le type d'<EFBFBD>tiquette au format AVERY
|
||||
*-------------------------------------------------
|
||||
*/
|
||||
*/
|
||||
|
||||
//$pdf = new PDF_Label(array('name'=>'perso1', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99.1, 'height'=>'38.1', 'metric'=>'mm', 'font-size'=>14), 1, 2);
|
||||
$pdf = new PDF_card('CARD', 1, 1);
|
||||
@ -64,8 +64,8 @@ $pdf->AddPage();
|
||||
|
||||
// Choix de l'annee d'impression ou annee courante.
|
||||
if (!isset($annee)){
|
||||
$now = getdate();
|
||||
$annee=$now['year'];
|
||||
$now = getdate();
|
||||
$annee=$now['year'];
|
||||
}
|
||||
|
||||
// requete en prenant que les adherents a jour de cotisation
|
||||
@ -79,41 +79,42 @@ $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1 AND datefin >= ".$d
|
||||
$sql.= " ORDER BY d.rowid ASC";
|
||||
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
if ($result)
|
||||
{
|
||||
$num = $db->num_rows($result);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$objp = $db->fetch_object($result);
|
||||
// attribut a remplacer
|
||||
$replace = array (
|
||||
ucfirst(strtolower($objp->prenom)),
|
||||
strtoupper($objp->nom),
|
||||
"http://".$_SERVER["SERVER_NAME"]."/",
|
||||
$objp->societe,
|
||||
ucwords(strtolower($objp->adresse)),
|
||||
$objp->cp,
|
||||
strtoupper($objp->ville),
|
||||
ucfirst(strtolower($objp->pays)),
|
||||
$objp->email,
|
||||
$objp->naiss,
|
||||
$objp->photo,
|
||||
$objp->type,
|
||||
$objp->rowid,
|
||||
$annee
|
||||
);
|
||||
$num = $db->num_rows($result);
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$objp = $db->fetch_object($result);
|
||||
// attribut a remplacer
|
||||
$replace = array (
|
||||
ucfirst(strtolower($objp->prenom)),
|
||||
strtoupper($objp->nom),
|
||||
"http://".$_SERVER["SERVER_NAME"]."/",
|
||||
$objp->societe,
|
||||
ucwords(strtolower($objp->adresse)),
|
||||
$objp->cp,
|
||||
strtoupper($objp->ville),
|
||||
ucfirst(strtolower($objp->pays)),
|
||||
$objp->email,
|
||||
$objp->naiss,
|
||||
$objp->photo,
|
||||
$objp->type,
|
||||
$objp->rowid,
|
||||
$annee
|
||||
);
|
||||
|
||||
// imprime le texte specifique sur la carte
|
||||
//$pdf->Add_PDF_card(sprintf("%s\n%s\n%s\n%s\n%s, %s\n%s", $objp->type." n° ".$objp->rowid,ucfirst(strtolower($objp->prenom))." ".strtoupper($objp->nom),"<".$objp->email.">", ucwords(strtolower($objp->adresse)), $objp->cp, strtoupper($objp->ville), ucfirst(strtolower($objp->pays))),$annee,"Association FreeLUG http://www.freelug.org/");
|
||||
$pdf->Add_PDF_card(preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_TEXT),
|
||||
preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_HEADER_TEXT),
|
||||
preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_FOOTER_TEXT));
|
||||
$i++;
|
||||
}
|
||||
// imprime le texte specifique sur la carte
|
||||
$pdf->Add_PDF_card(preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_TEXT),
|
||||
preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_HEADER_TEXT),
|
||||
preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_FOOTER_TEXT));
|
||||
$i++;
|
||||
}
|
||||
|
||||
$db->close();
|
||||
$pdf->Output();
|
||||
$db->close();
|
||||
|
||||
// Output to http strem
|
||||
$pdf->Output();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -122,4 +123,4 @@ else
|
||||
llxFooter('$Date$ - $Revision$');
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -16,17 +16,14 @@
|
||||
* 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.
|
||||
*
|
||||
* $Id$
|
||||
* $Source$
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/adherents/cartes/etiquette.php
|
||||
\ingroup adherent
|
||||
\brief Page de creation d'etiquettes
|
||||
\version $Revision$
|
||||
*/
|
||||
\file htdocs/adherents/cartes/etiquette.php
|
||||
\ingroup adherent
|
||||
\brief Page de creation d'etiquettes
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require("./pre.inc.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.php");
|
||||
@ -35,18 +32,18 @@ require_once('PDF_card.class.php');
|
||||
|
||||
/*
|
||||
*-------------------------------------------------
|
||||
* Pour créer l'objet on a 2 moyens :
|
||||
* Pour cr<EFBFBD>er l'objet on a 2 moyens :
|
||||
* Soit on donne les valeurs en les passant dans un tableau (sert pour un format personnel)
|
||||
* Soit on donne le type d'étiquette au format AVERY
|
||||
* Soit on donne le type d'<EFBFBD>tiquette au format AVERY
|
||||
*-------------------------------------------------
|
||||
*/
|
||||
*/
|
||||
|
||||
//$pdf = new PDF_Label(array('name'=>'perso1', 'marginLeft'=>1, 'marginTop'=>1, 'NX'=>2, 'NY'=>7, 'SpaceX'=>0, 'SpaceY'=>0, 'width'=>99.1, 'height'=>'38.1', 'metric'=>'mm', 'font-size'=>14), 1, 2);
|
||||
//$pdf = new PDF_card('CARD', 1, 1);
|
||||
if (defined("ADHERENT_ETIQUETTE_TYPE") && ADHERENT_ETIQUETTE_TYPE !=''){
|
||||
$pdf = new PDF_card(ADHERENT_ETIQUETTE_TYPE, 1, 1);
|
||||
$pdf = new PDF_card(ADHERENT_ETIQUETTE_TYPE, 1, 1);
|
||||
}else{
|
||||
$pdf = new PDF_card('L7163', 1, 1);
|
||||
$pdf = new PDF_card('L7163', 1, 1);
|
||||
}
|
||||
|
||||
$pdf->Open();
|
||||
@ -54,8 +51,8 @@ $pdf->AddPage();
|
||||
|
||||
// Choix de l'annee d'impression ou annee courante.
|
||||
if (!isset($annee)){
|
||||
$now = getdate();
|
||||
$annee=$now['year'];
|
||||
$now = getdate();
|
||||
$annee=$now['year'];
|
||||
}
|
||||
|
||||
// requete en prenant que les adherents a jour de cotisation
|
||||
@ -69,20 +66,22 @@ $sql.= " WHERE d.fk_adherent_type = t.rowid AND d.statut = 1 AND datefin >= ".$d
|
||||
$sql.= " ORDER BY d.rowid ASC";
|
||||
|
||||
$result = $db->query($sql);
|
||||
if ($result)
|
||||
if ($result)
|
||||
{
|
||||
$num = $db->num_rows();
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$objp = $db->fetch_object($result);
|
||||
// imprime le texte specifique sur la carte
|
||||
$pdf->Add_PDF_card(sprintf("%s\n%s\n%s %s\n%s", ucfirst(strtolower($objp->prenom))." ".strtoupper($objp->nom), ucwords(strtolower($objp->adresse)), $objp->cp, strtoupper($objp->ville), ucfirst(strtolower($objp->pays))),'','');
|
||||
$i++;
|
||||
}
|
||||
$num = $db->num_rows();
|
||||
$i = 0;
|
||||
while ($i < $num)
|
||||
{
|
||||
$objp = $db->fetch_object($result);
|
||||
// imprime le texte specifique sur la carte
|
||||
$pdf->Add_PDF_card(sprintf("%s\n%s\n%s %s\n%s", ucfirst(strtolower($objp->prenom))." ".strtoupper($objp->nom), ucwords(strtolower($objp->adresse)), $objp->cp, strtoupper($objp->ville), ucfirst(strtolower($objp->pays))),'','');
|
||||
$i++;
|
||||
}
|
||||
|
||||
$db->close();
|
||||
$pdf->Output();
|
||||
$db->close();
|
||||
|
||||
// Output to http strem
|
||||
$pdf->Output();
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -91,4 +90,4 @@ else
|
||||
llxFooter('$Date$ - $Revision$');
|
||||
}
|
||||
|
||||
?>
|
||||
?>
|
||||
|
||||
@ -169,6 +169,9 @@ if ($what == 'mysql')
|
||||
if ($compression == 'none') fclose($handle);
|
||||
if ($compression == 'gz') gzclose($handle);
|
||||
if ($compression == 'bz') bzclose($handle);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -110,7 +110,7 @@ class CommActionRapport
|
||||
$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étire, crée aléatoirement si pas défini
|
||||
$pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>tire, cr<63>e al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
@ -138,7 +138,9 @@ class CommActionRapport
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -94,8 +94,17 @@ if ($_POST["action"] == "builddoc" && $user->rights->facture->lire)
|
||||
// enregistre le fichier pdf concatene
|
||||
$filename=sanitize_string(strtolower($langs->transnoentities("Unpayed")));
|
||||
if ($option=='late') $filename.='_'.sanitize_string(strtolower($langs->transnoentities("Late")));
|
||||
if ($pagecount) $pdf->Output($diroutputpdf.'/'.$filename.'_'.dolibarr_print_date(mktime(),'dayhourlog').'.pdf');
|
||||
else $mesg='<div class="error">'.$langs->trans('NoPDFAvailableForChecked').'</div>';
|
||||
if ($pagecount)
|
||||
{
|
||||
$file=$diroutputpdf.'/'.$filename.'_'.dolibarr_print_date(mktime(),'dayhourlog').'.pdf';
|
||||
$pdf->Output($file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
}
|
||||
else
|
||||
{
|
||||
$mesg='<div class="error">'.$langs->trans('NoPDFAvailableForChecked').'</div>';
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@ -21,74 +21,74 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\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$
|
||||
*/
|
||||
\file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php
|
||||
\ingroup banque
|
||||
\brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>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
|
||||
\brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les bordereau de remise de cheque
|
||||
*/
|
||||
|
||||
class BordereauChequeBlochet
|
||||
{
|
||||
var $emetteur; // Objet societe qui emet
|
||||
|
||||
/**
|
||||
\brief Constructeur
|
||||
*/
|
||||
/**
|
||||
\brief Constructeur
|
||||
*/
|
||||
function BordereauChequeBlochet($db)
|
||||
{
|
||||
global $conf,$langs,$mysoc;
|
||||
{
|
||||
global $conf,$langs,$mysoc;
|
||||
|
||||
$langs->load("main");
|
||||
$langs->load("bills");
|
||||
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "blochet";
|
||||
$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;
|
||||
|
||||
// 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;
|
||||
$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"));
|
||||
|
||||
@ -120,7 +120,7 @@ class BordereauChequeBlochet
|
||||
$pdf->line(170, 47, 170, 54);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->Text(10, 52, "Nombre de chèque");
|
||||
$pdf->Text(10, 52, "Nombre de ch<EFBFBD>que");
|
||||
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->Text(57, 52, $this->nbcheque);
|
||||
@ -131,7 +131,7 @@ class BordereauChequeBlochet
|
||||
$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"));
|
||||
@ -178,31 +178,31 @@ class BordereauChequeBlochet
|
||||
|
||||
$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;
|
||||
$yp = $yp + $this->line_height;
|
||||
}
|
||||
}
|
||||
/**
|
||||
\brief Fonction générant le rapport sur le disque
|
||||
\brief Fonction g<EFBFBD>n<EFBFBD>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);
|
||||
@ -210,54 +210,56 @@ class BordereauChequeBlochet
|
||||
if ($result < 0)
|
||||
{
|
||||
$this->error=$langs->transnoentities("ErrorCanNotCreateDir",$dir);
|
||||
return -1;
|
||||
}
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$month = sprintf("%02d",$month);
|
||||
$year = sprintf("%04d",$year);
|
||||
$_file = $dir . "bordereau-00".$number.".pdf"; //Todo: réparation provisoire, ajout de 2 zero
|
||||
|
||||
$_file = $dir . "bordereau-00".$number.".pdf"; //Todo: r<EFBFBD>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);
|
||||
}
|
||||
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<72>taire, cr<63><72> al<61>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
|
||||
// force to build at least one page if report has no lines
|
||||
$pages = 1;
|
||||
}
|
||||
|
||||
|
||||
$pdf->AddPage();
|
||||
|
||||
|
||||
$this->Header($pdf, 1, $pages);
|
||||
|
||||
|
||||
$this->Body($pdf, 1);
|
||||
|
||||
|
||||
$pdf->Output($_file);
|
||||
}
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
\file htdocs/bon-prelevement.class.php
|
||||
\ingroup prelevement
|
||||
\brief Fichier de la classe des bons de prélévements
|
||||
\brief Fichier de la classe des bons de pr<EFBFBD>l<EFBFBD>vements
|
||||
\version $Revision$
|
||||
*/
|
||||
|
||||
@ -129,7 +129,7 @@ class BonPrelevement
|
||||
if ($concat == 1)
|
||||
{
|
||||
/*
|
||||
* On aggrège les lignes
|
||||
* On aggr<EFBFBD>ge les lignes
|
||||
*/
|
||||
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes";
|
||||
$sql .= " WHERE fk_prelevement_bons".$this->id;
|
||||
@ -150,7 +150,7 @@ class BonPrelevement
|
||||
else
|
||||
{
|
||||
/*
|
||||
* Pas de d'agrégation
|
||||
* Pas de d'agr<EFBFBD>gation
|
||||
*/
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_lignes (fk_prelevement_bons";
|
||||
$sql .= " , fk_soc , client_nom ";
|
||||
@ -237,7 +237,7 @@ class BonPrelevement
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée");
|
||||
dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retourn<EFBFBD>e");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -279,7 +279,7 @@ class BonPrelevement
|
||||
|
||||
for ($i = 0 ; $i < sizeof($facs) ; $i++)
|
||||
{
|
||||
/* Tag la facture comme impayée */
|
||||
/* Tag la facture comme impay<EFBFBD>e */
|
||||
dolibarr_syslog("BonPrelevement::set_credite set_payed fac ".$facs[$i]);
|
||||
$fac = new Facture($this->db);
|
||||
$fac->fetch($facs[$i]);
|
||||
@ -302,7 +302,7 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/*
|
||||
* Fin de la procédure
|
||||
* Fin de la proc<EFBFBD>dure
|
||||
*
|
||||
*/
|
||||
if ($error == 0)
|
||||
@ -352,10 +352,10 @@ class BonPrelevement
|
||||
|
||||
if ($this->db->query($sql))
|
||||
{
|
||||
$subject = "Crédit prélèvement ".$this->ref." à la banque";
|
||||
$message = "Le bon de prélèvement ".$this->ref;
|
||||
$message .= " a été crédité par la banque.\n";
|
||||
$message .= "Date crédit : ".dolibarr_print_date($date,'dayhour');
|
||||
$subject = "Cr<EFBFBD>dit pr<70>l<EFBFBD>vement ".$this->ref." <20> la banque";
|
||||
$message = "Le bon de pr<EFBFBD>l<EFBFBD>vement ".$this->ref;
|
||||
$message .= " a <EFBFBD>t<EFBFBD> cr<63>dit<69> par la banque.\n";
|
||||
$message .= "Date cr<EFBFBD>dit : ".dolibarr_print_date($date,'dayhour');
|
||||
|
||||
$this->Notify($user, "cr", $subject, $message);
|
||||
}
|
||||
@ -366,7 +366,7 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/*
|
||||
* Fin de la procédure
|
||||
* Fin de la proc<EFBFBD>dure
|
||||
*
|
||||
*/
|
||||
if ($error == 0)
|
||||
@ -421,12 +421,12 @@ class BonPrelevement
|
||||
{
|
||||
$this->method_trans = $method;
|
||||
|
||||
$subject = "Transmission du prélèvement ".$this->ref." à la banque";
|
||||
$message = "Le bon de prélèvement ".$this->ref;
|
||||
$message .= " a été transmis à la banque par ".$user->prenom. " ".$user->nom;
|
||||
$subject = "Transmission du pr<EFBFBD>l<EFBFBD>vement ".$this->ref." <20> la banque";
|
||||
$message = "Le bon de pr<EFBFBD>l<EFBFBD>vement ".$this->ref;
|
||||
$message .= " a <EFBFBD>t<EFBFBD> transmis <20> la banque par ".$user->prenom. " ".$user->nom;
|
||||
$message .= "\n\n";
|
||||
$message .= "\nMontant : ".price($this->amount);
|
||||
$message .= "\nMéthode : ".$this->methodes_trans[$this->method_trans];
|
||||
$message .= "\nM<EFBFBD>thode : ".$this->methodes_trans[$this->method_trans];
|
||||
$message .= "\nDate : ".dolibarr_print_date($date,'day');
|
||||
|
||||
$this->Notify($user,"tr", $subject, $message, 1);
|
||||
@ -439,7 +439,7 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/*
|
||||
* Fin de la procédure
|
||||
* Fin de la proc<EFBFBD>dure
|
||||
*
|
||||
*/
|
||||
if ($error == 0)
|
||||
@ -470,7 +470,7 @@ class BonPrelevement
|
||||
function Notify($user, $action, $subject, $message, $joinfile=0)
|
||||
{
|
||||
$message .= "\n\n--\n";
|
||||
$message .= "Ceci est un message automatique envoyé par Dolibarr";
|
||||
$message .= "Ceci est un message automatique envoy<EFBFBD> par Dolibarr";
|
||||
|
||||
$sql = "SELECT u.name, u.firstname, u.email";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."user as u";
|
||||
@ -516,15 +516,15 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Recupére la liste des factures concernées
|
||||
* \brief Recup<EFBFBD>re la liste des factures concern<EFBFBD>es
|
||||
*/
|
||||
function _get_list_factures()
|
||||
{
|
||||
$arr = array();
|
||||
|
||||
/*
|
||||
* Renvoie toutes les factures présente
|
||||
* dans un bon de prélèvement
|
||||
* Renvoie toutes les factures pr<EFBFBD>sente
|
||||
* dans un bon de pr<EFBFBD>l<EFBFBD>vement
|
||||
*/
|
||||
$sql = "SELECT fk_facture";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p";
|
||||
@ -595,7 +595,7 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Renvoi nombre de factures a prélever
|
||||
* \brief Renvoi nombre de factures a pr<EFBFBD>lever
|
||||
* \param banque bank
|
||||
* \param agence agence
|
||||
* \return int <O si erreur, sinon nbre de factures
|
||||
@ -645,7 +645,7 @@ class BonPrelevement
|
||||
|
||||
/**
|
||||
* \brief Cree prelevement
|
||||
* \return int <0 si ko, nbre de facture prélevé sinon
|
||||
* \return int <0 si ko, nbre de facture pr<EFBFBD>lev<EFBFBD> sinon
|
||||
*/
|
||||
function Create($banque=0, $guichet=0)
|
||||
{
|
||||
@ -693,7 +693,7 @@ class BonPrelevement
|
||||
$sql .= " AND f.paye = 0";
|
||||
$sql .= " AND pfd.traite = 0";
|
||||
$sql .= " AND f.total_ttc > 0";
|
||||
$sql .= " AND f.fk_mode_reglement = 3"; // Mode prélèvement
|
||||
$sql .= " AND f.fk_mode_reglement = 3"; // Mode pr<EFBFBD>l<EFBFBD>vement
|
||||
|
||||
if ($banque == 1)
|
||||
{
|
||||
@ -718,7 +718,7 @@ class BonPrelevement
|
||||
$i++;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
dolibarr_syslog("$i factures à prélever");
|
||||
dolibarr_syslog("$i factures <EFBFBD> pr<70>lever");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -737,11 +737,11 @@ class BonPrelevement
|
||||
if (! $error)
|
||||
{
|
||||
/*
|
||||
* Vérification des RIB
|
||||
* V<EFBFBD>rification des RIB
|
||||
*
|
||||
*/
|
||||
$i = 0;
|
||||
dolibarr_syslog("Début vérification des RIB");
|
||||
dolibarr_syslog("D<EFBFBD>but v<>rification des RIB");
|
||||
|
||||
if (sizeof($factures) > 0)
|
||||
{
|
||||
@ -769,7 +769,7 @@ class BonPrelevement
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("Impossible de lire la société");
|
||||
dolibarr_syslog("Impossible de lire la soci<EFBFBD>t<EFBFBD>");
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -790,7 +790,7 @@ class BonPrelevement
|
||||
*
|
||||
*/
|
||||
|
||||
dolibarr_syslog(sizeof($factures_prev)." factures seront prélevées");
|
||||
dolibarr_syslog(sizeof($factures_prev)." factures seront pr<EFBFBD>lev<EFBFBD>es");
|
||||
|
||||
if (sizeof($factures_prev) > 0)
|
||||
{
|
||||
@ -855,7 +855,7 @@ class BonPrelevement
|
||||
else
|
||||
{
|
||||
$error++;
|
||||
dolibarr_syslog("Erreur création du bon de prelevement");
|
||||
dolibarr_syslog("Erreur cr<EFBFBD>ation du bon de prelevement");
|
||||
}
|
||||
}
|
||||
|
||||
@ -865,7 +865,7 @@ class BonPrelevement
|
||||
*/
|
||||
if (!$error)
|
||||
{
|
||||
dolibarr_syslog("Début génération des paiements");
|
||||
dolibarr_syslog("D<EFBFBD>but g<>n<EFBFBD>ration des paiements");
|
||||
dolibarr_syslog("Nombre de factures ".sizeof($factures_prev));
|
||||
|
||||
if (sizeof($factures_prev) > 0)
|
||||
@ -880,7 +880,7 @@ class BonPrelevement
|
||||
$pai->amounts = array();
|
||||
$pai->amounts[$fac[0]] = $fact->total_ttc;
|
||||
$pai->datepaye = $this->db->idate($datetimeprev);
|
||||
$pai->paiementid = 3; // prélèvement
|
||||
$pai->paiementid = 3; // pr<EFBFBD>l<EFBFBD>vement
|
||||
$pai->num_paiement = $ref;
|
||||
|
||||
if ($pai->create($user, 1) == -1) // on appelle en no_commit
|
||||
@ -896,7 +896,7 @@ class BonPrelevement
|
||||
$pai->valide();
|
||||
|
||||
/*
|
||||
* Ajout d'une ligne de prélèvement
|
||||
* Ajout d'une ligne de pr<EFBFBD>l<EFBFBD>vement
|
||||
*
|
||||
*
|
||||
* $fac[3] : banque
|
||||
@ -916,7 +916,7 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/*
|
||||
* Mise à jour des demandes
|
||||
* Mise <EFBFBD> jour des demandes
|
||||
*
|
||||
*/
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."prelevement_facture_demande";
|
||||
@ -976,7 +976,7 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/*
|
||||
* Mise à jour du total
|
||||
* Mise <EFBFBD> jour du total
|
||||
*
|
||||
*/
|
||||
|
||||
@ -988,7 +988,7 @@ class BonPrelevement
|
||||
if (! $resql)
|
||||
{
|
||||
$error++;
|
||||
dolibarr_syslog("Erreur mise à jour du total - $sql");
|
||||
dolibarr_syslog("Erreur mise <EFBFBD> jour du total - $sql");
|
||||
}
|
||||
|
||||
/*
|
||||
@ -1086,11 +1086,13 @@ class BonPrelevement
|
||||
}
|
||||
|
||||
/**
|
||||
* Génération d'un bon de prélèvement
|
||||
* G<EFBFBD>n<EFBFBD>ration d'un bon de pr<EFBFBD>l<EFBFBD>vement
|
||||
*
|
||||
*/
|
||||
function Generate()
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$result = -1;
|
||||
|
||||
$this->file = fopen ($this->filename,"w");
|
||||
@ -1160,7 +1162,9 @@ class BonPrelevement
|
||||
$this->EnregTotal($this->total);
|
||||
|
||||
fclose($this->file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($this->file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
@ -1173,13 +1177,13 @@ class BonPrelevement
|
||||
function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount)
|
||||
{
|
||||
fputs ($this->file, "06");
|
||||
fputs ($this->file, "08"); // Prélèvement ordinaire
|
||||
fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
|
||||
|
||||
fputs ($this->file, " "); // Zone Réservée B2
|
||||
fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
|
||||
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
|
||||
|
||||
// Date d'échéance C1
|
||||
// Date d'<EFBFBD>ch<EFBFBD>ance C1
|
||||
|
||||
fputs ($this->file, " ");
|
||||
fputs ($this->file, strftime("%d%m", $this->date_echeance));
|
||||
@ -1193,7 +1197,7 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr(" ",0,24));
|
||||
|
||||
// Zone Réservée D2
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e D2
|
||||
|
||||
fputs ($this->file, substr(" ",0,8));
|
||||
|
||||
@ -1211,16 +1215,16 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr("000000000000000".$montant, -16));
|
||||
|
||||
// Libellé F
|
||||
// Libell<EFBFBD> F
|
||||
|
||||
fputs ($this->file, substr("*".$this->ref.$rowid." ",0,13));
|
||||
fputs ($this->file, substr(" ",0,18));
|
||||
|
||||
// Code établissement G1
|
||||
// Code <EFBFBD>tablissement G1
|
||||
|
||||
fputs ($this->file, $rib_banque);
|
||||
|
||||
// Zone Réservée G2
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e G2
|
||||
|
||||
fputs ($this->file, substr(" ",0,5));
|
||||
|
||||
@ -1236,13 +1240,13 @@ class BonPrelevement
|
||||
function EnregDestinataireVersion1($fac)
|
||||
{
|
||||
fputs ($this->file, "06");
|
||||
fputs ($this->file, "08"); // Prélèvement ordinaire
|
||||
fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
|
||||
|
||||
fputs ($this->file, " "); // Zone Réservée B2
|
||||
fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
|
||||
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
|
||||
|
||||
// Date d'échéance C1
|
||||
// Date d'<EFBFBD>ch<EFBFBD>ance C1
|
||||
|
||||
fputs ($this->file, " ");
|
||||
fputs ($this->file, strftime("%d%m", $this->date_echeance));
|
||||
@ -1252,11 +1256,11 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr($fac->client->nom. " ",0,24));
|
||||
|
||||
// Reference de la remise créancier D1
|
||||
// Reference de la remise cr<EFBFBD>ancier D1
|
||||
|
||||
fputs ($this->file, substr(" ",0,24));
|
||||
|
||||
// Zone Réservée D2
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e D2
|
||||
|
||||
fputs ($this->file, substr(" ",0,8));
|
||||
|
||||
@ -1274,16 +1278,16 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr("000000000000000".$montant, -16));
|
||||
|
||||
// Libellé F
|
||||
// Libell<EFBFBD> F
|
||||
|
||||
fputs ($this->file, substr("*".$fac->ref." ",0,13));
|
||||
fputs ($this->file, substr(" ",0,18));
|
||||
|
||||
// Code établissement G1
|
||||
// Code <EFBFBD>tablissement G1
|
||||
|
||||
fputs ($this->file, $fac->client->bank_account->code_banque);
|
||||
|
||||
// Zone Réservée G2
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e G2
|
||||
|
||||
fputs ($this->file, substr(" ",0,5));
|
||||
|
||||
@ -1297,13 +1301,13 @@ class BonPrelevement
|
||||
function EnregEmetteur()
|
||||
{
|
||||
fputs ($this->file, "03");
|
||||
fputs ($this->file, "08"); // Prélèvement ordinaire
|
||||
fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
|
||||
|
||||
fputs ($this->file, " "); // Zone Réservée B2
|
||||
fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
|
||||
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
|
||||
|
||||
// Date d'échéance C1
|
||||
// Date d'<EFBFBD>ch<EFBFBD>ance C1
|
||||
|
||||
fputs ($this->file, " ");
|
||||
fputs ($this->file, strftime("%d%m", $this->date_echeance));
|
||||
@ -1313,15 +1317,15 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr($this->raison_sociale. " ",0,24));
|
||||
|
||||
// Reference de la remise créancier D1 sur 7 caractéres
|
||||
// Reference de la remise cr<EFBFBD>ancier D1 sur 7 caract<63>res
|
||||
|
||||
fputs ($this->file, substr($this->reference_remise. " ",0,7));
|
||||
|
||||
// Zone Réservée D1-2
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e D1-2
|
||||
|
||||
fputs ($this->file, substr(" ",0,17));
|
||||
|
||||
// Zone Réservée D2
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e D2
|
||||
|
||||
fputs ($this->file, substr(" ",0,2));
|
||||
fputs ($this->file, "E");
|
||||
@ -1335,19 +1339,19 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr("000000000000000".$this->emetteur_numero_compte, -11));
|
||||
|
||||
// Zone Réservée E
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e E
|
||||
|
||||
fputs ($this->file, substr(" ",0,16));
|
||||
|
||||
// Zone Réservée F
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e F
|
||||
|
||||
fputs ($this->file, substr(" ",0,31));
|
||||
|
||||
// Code établissement
|
||||
// Code <EFBFBD>tablissement
|
||||
|
||||
fputs ($this->file, $this->emetteur_code_etablissement);
|
||||
|
||||
// Zone Réservée G
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e G
|
||||
|
||||
fputs ($this->file, substr(" ",0,5));
|
||||
|
||||
@ -1362,13 +1366,13 @@ class BonPrelevement
|
||||
function EnregTotal($total)
|
||||
{
|
||||
fputs ($this->file, "08");
|
||||
fputs ($this->file, "08"); // Prélèvement ordinaire
|
||||
fputs ($this->file, "08"); // Pr<EFBFBD>l<EFBFBD>vement ordinaire
|
||||
|
||||
fputs ($this->file, " "); // Zone Réservée B2
|
||||
fputs ($this->file, " "); // Zone R<EFBFBD>serv<EFBFBD>e B2
|
||||
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Numéro National d'emmetteur B3
|
||||
fputs ($this->file, $this->numero_national_emetteur); // Num<EFBFBD>ro National d'emmetteur B3
|
||||
|
||||
// Réservé C1
|
||||
// R<EFBFBD>serv<EFBFBD> C1
|
||||
|
||||
fputs ($this->file, substr(" ",0,12));
|
||||
|
||||
@ -1381,7 +1385,7 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr(" ",0,24));
|
||||
|
||||
// Zone Réservée D2
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e D2
|
||||
|
||||
fputs ($this->file, substr(" ",0,8));
|
||||
|
||||
@ -1399,15 +1403,15 @@ class BonPrelevement
|
||||
|
||||
fputs ($this->file, substr("000000000000000".$montant, -16));
|
||||
|
||||
// Zone Réservée F
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e F
|
||||
|
||||
fputs ($this->file, substr(" ",0,31));
|
||||
|
||||
// Code établissement
|
||||
// Code <EFBFBD>tablissement
|
||||
|
||||
fputs ($this->file, substr(" ",0,5));
|
||||
|
||||
// Zone Réservée F
|
||||
// Zone R<EFBFBD>serv<EFBFBD>e F
|
||||
|
||||
fputs ($this->file, substr(" ",0,5));
|
||||
|
||||
|
||||
@ -238,6 +238,7 @@ class Conf
|
||||
// Module adherent
|
||||
$this->adherent->enabled=defined("MAIN_MODULE_ADHERENT")?MAIN_MODULE_ADHERENT:0;
|
||||
$this->adherent->dir_output=DOL_DATA_ROOT."/adherent";
|
||||
$this->adherent->dir_tmp=DOL_DATA_ROOT."/adherent/temp";
|
||||
// Module produit
|
||||
$this->produit->enabled=defined("MAIN_MODULE_PRODUIT")?MAIN_MODULE_PRODUIT:0;
|
||||
$this->produit->dir_output=DOL_DATA_ROOT."/produit";
|
||||
|
||||
@ -17,357 +17,360 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\file docs/class/courrier-droit-editeur.class.php
|
||||
\ingroup editeurs
|
||||
\brief Classe de generation des courriers pour les editeurs
|
||||
\version $Id$
|
||||
*/
|
||||
\file docs/class/courrier-droit-editeur.class.php
|
||||
\ingroup editeurs
|
||||
\brief Classe de generation des courriers pour les editeurs
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
|
||||
|
||||
|
||||
class pdf_courrier_droit_editeur
|
||||
class pdf_courrier_droit_editeur
|
||||
{
|
||||
/**
|
||||
\brief Constructeur
|
||||
\param db Handler accès base de donnée
|
||||
/**
|
||||
\brief Constructeur
|
||||
\param db Handler acc<EFBFBD>s base de donn<EFBFBD>e
|
||||
*/
|
||||
function pdf_courrier_droit_editeur ($db)
|
||||
{
|
||||
$this->langs = $langs;
|
||||
|
||||
$this->db = $db;
|
||||
|
||||
// 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->name = "Courrier des droits ".strftime("%Y", time());
|
||||
$this->file = '1'.strftime("%Y", time()).'.pdf';
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Génère le document
|
||||
\return int 0 = ok, <> 0 = ko
|
||||
*/
|
||||
function Generate($numero)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$this->file = $numero.strftime("%Y", time());
|
||||
$this->extension = "pdf";
|
||||
|
||||
dolibarr_syslog("pdf_courrier_droit_editeur::Generate ", LOG_DEBUG );
|
||||
|
||||
require_once(FPDF_PATH.'fpdf.php');
|
||||
require_once(DOL_DOCUMENT_ROOT."/product.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/product/canvas/product.livre.class.php");
|
||||
$error = 0;
|
||||
$year = strftime("%Y", time());
|
||||
|
||||
//
|
||||
$sql = "SELECT s.rowid,s.nom";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||
//$sql .= " , ".MAIN_DB_PREFIX."categorie_fournisseur as cf";
|
||||
$sql .= " WHERE s.fournisseur = 1 ";
|
||||
//$sql .= " AND s.rowid = cf.fk_societe";
|
||||
//$sql .= " AND cf.fk_categorie = 2";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$fichref = "Droits-$year";
|
||||
$dir_all = DOL_DATA_ROOT."/ged/" . get_exdir($numero);
|
||||
$file_all = $dir_all . $numero . ".pdf";
|
||||
|
||||
// Initialisation document vierge
|
||||
$pdf_all=new FPDI_Protection('P','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_all->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
|
||||
$pdf_all->Open();
|
||||
|
||||
|
||||
while ($obj = $this->db->fetch_object($resql) )
|
||||
{
|
||||
$id = $obj->rowid;
|
||||
|
||||
dolibarr_syslog("droits-editeurs.php id:$id", LOG_DEBUG );
|
||||
|
||||
$coupdf = new pdf_courrier_droit_editeur($this->db, $langs);
|
||||
|
||||
$fichref = "Droits-$year";
|
||||
$dir = DOL_DATA_ROOT."/societe/courrier/" . get_exdir($id);
|
||||
$file = $dir . $fichref . ".pdf";
|
||||
|
||||
// Initialisation document vierge
|
||||
$pdf=new FPDI_Protection('P','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);
|
||||
}
|
||||
|
||||
$pdf->Open();
|
||||
|
||||
$coupdf->Write($id, $dir, $year, $pdf);
|
||||
$coupdf->Write($id, $dir_all, $year, $pdf_all);
|
||||
|
||||
$pdf->Close();
|
||||
$pdf->Output($file);
|
||||
dolibarr_syslog("droits-editeurs.php write $file", LOG_DEBUG );
|
||||
}
|
||||
|
||||
$pdf_all->Close();
|
||||
$pdf_all->Output($file_all);
|
||||
dolibarr_syslog("droits-editeurs.php write $fileall", LOG_DEBUG );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("pdf_courrier_droit_editeur::Generate ".$db->error(), LOG_ERR );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction générant le fichier
|
||||
\param id id de la societe
|
||||
\return int 1=ok, 0=ko
|
||||
*/
|
||||
function Write($id, $dir, $year, &$pdf)
|
||||
{
|
||||
dolibarr_syslog("pdf_courrier_droit_editeur::Write $id,$year ", LOG_DEBUG );
|
||||
$soc = new Societe($this->db);
|
||||
$soc->fetch($id);
|
||||
|
||||
if (! file_exists($dir))
|
||||
{
|
||||
if (create_exdir($dir) < 0)
|
||||
{
|
||||
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists($dir))
|
||||
{
|
||||
// Initialisation document vierge
|
||||
|
||||
|
||||
$books = array();
|
||||
$year_data = $year - 1;
|
||||
|
||||
// On récupère données du mail
|
||||
$sql = "SELECT p.rowid,p.label, pc.taux, pc.quantite";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."facturedet as fd";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product as p";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product_cnv_livre as pl";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product_cnv_livre_contrat as pc";
|
||||
|
||||
$sql .= " WHERE fd.fk_facture = f.rowid";
|
||||
$sql .= " AND fd.fk_product = p.rowid";
|
||||
$sql .= " AND p.canvas = 'livre'";
|
||||
$sql .= " AND p.rowid = pl.rowid";
|
||||
$sql .= " AND pl.fk_contrat = pc.rowid";
|
||||
$sql .= " AND year (f.datef) <= ".($year_data);
|
||||
$sql .= " GROUP BY p.rowid";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$i = 0;
|
||||
while ($obj = $this->db->fetch_object($resql) )
|
||||
{
|
||||
$books[$i]['title'] = $obj->label;
|
||||
$books[$i]['id'] = $obj->rowid;
|
||||
$books[$i]['taux'] = $obj->taux;
|
||||
$books[$i]['qty'] = $obj->quantite;
|
||||
|
||||
$i++;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
}
|
||||
else
|
||||
{
|
||||
print $this->db->error();
|
||||
print "$sql\n";
|
||||
}
|
||||
|
||||
foreach($books as $ref => $value)
|
||||
function pdf_courrier_droit_editeur ($db)
|
||||
{
|
||||
$livre = new ProductLivre($this->db);
|
||||
$livre->FetchCanvas($value['id']);
|
||||
$this->langs = $langs;
|
||||
|
||||
$pdf->AddPage();
|
||||
$qtycontrat = $value['qty'];
|
||||
/*
|
||||
* Adresse
|
||||
*/
|
||||
$this->db = $db;
|
||||
|
||||
// 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;
|
||||
|
||||
// Client destinataire
|
||||
$posy=42;
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->SetXY(102,$posy-5);
|
||||
|
||||
// Nom client
|
||||
$pdf->SetXY(102,$posy+3);
|
||||
$pdf->SetFont('Arial','B',11);
|
||||
$pdf->MultiCell(106,4, $soc->nom, 0, 'L');
|
||||
|
||||
// Caractéristiques client
|
||||
$carac_client=$soc->adresse;
|
||||
$carac_client.="\n".$soc->cp . " " . $soc->ville."\n";
|
||||
$carac_client.=$soc->pays."\n";
|
||||
|
||||
$pdf->SetFont('Arial','',9);
|
||||
$pdf->SetXY(102,$posy+8);
|
||||
$pdf->MultiCell(86,4, $carac_client);
|
||||
/*
|
||||
*
|
||||
*
|
||||
*/
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',10);
|
||||
|
||||
$pdf->SetXY(10,100);
|
||||
|
||||
$pdf->MultiCell(190,5,"Je vous prie de trouver ci-dessous le récapitulatif des ventes du titre cité pour la période du 1er janvier au 31 décembre $year_data.");
|
||||
|
||||
$pdf->SetXY(10,120);
|
||||
$pdf->MultiCell(25,5,"Nom du titre : ");
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(35,120);
|
||||
$pdf->MultiCell(140,5,$value['title']);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140);
|
||||
$pdf->MultiCell(46,5,"Quantité signée au contrat : ");
|
||||
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(56,140);
|
||||
$pdf->MultiCell(14,5,$qtycontrat,0,'R');
|
||||
|
||||
$sql = "SELECT p.label, sum(fd.qty), date_format(f.datef,'%Y')";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."facturedet as fd";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product as p";
|
||||
$sql .= " WHERE fd.fk_facture = f.rowid";
|
||||
$sql .= " AND p.rowid = '".$value['id']."'";
|
||||
$sql .= " AND fd.fk_product = p.rowid";
|
||||
$sql .= " AND p.canvas = 'livre'";
|
||||
$sql .= " GROUP BY p.rowid, date_format(f.datef,'%Y') ORDER BY date_format(f.datef,'%Y') ASC";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
|
||||
$qtysell = 0;
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$i = 0;
|
||||
while ($row = $this->db->fetch_row($resql) )
|
||||
{
|
||||
$i++;
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 8) );
|
||||
$pdf->MultiCell(44,5,"Quantité vendue en ".$row[2]." : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(54,140 + ($i * 8) );
|
||||
$pdf->MultiCell(16,5,$row[1],0,'R');
|
||||
|
||||
$qtysell += $row[1];
|
||||
|
||||
}
|
||||
$this->db->free($resql);
|
||||
}
|
||||
else
|
||||
{
|
||||
print $this->db->error();
|
||||
}
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(100,140 + ($i * 8) );
|
||||
$pdf->MultiCell(15,5,"Solde : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(115,140 + ($i * 8) );
|
||||
$pdf->MultiCell(16,5,($qtycontrat - $qtysell),0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 10) );
|
||||
$pdf->MultiCell(50,5,"Taux des droits d'auteurs : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(60,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, $value['taux']." %",0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 10) );
|
||||
$pdf->MultiCell(50,5,"Prix de vente des livres HT : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(60,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, sprintf("%.2f",$livre->price),0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 10) );
|
||||
$pdf->MultiCell(50,5,"Prix de vente des livres TTC : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(60,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, sprintf("%.2f",$livre->price_ttc),0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,150 + ($i * 10) );
|
||||
$pdf->MultiCell(80,5,"Reste à devoir sur les droits pour l'année ".($year-1)." : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(90,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, $pu_ttc,0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,150 + ($i * 10) + 20);
|
||||
$pdf->MultiCell(190,5,"Nous restons à votre entière disposition pour de plus amples renseignements dont vous pouvez avoir besoin et vous remercions de la confiance que vous nous avez accordée.");
|
||||
|
||||
|
||||
$this->name = "Courrier des droits ".strftime("%Y", time());
|
||||
$this->file = '1'.strftime("%Y", time()).'.pdf';
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief G<EFBFBD>n<EFBFBD>re le document
|
||||
\return int 0 = ok, <> 0 = ko
|
||||
*/
|
||||
function Generate($numero)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
$this->file = $numero.strftime("%Y", time());
|
||||
$this->extension = "pdf";
|
||||
|
||||
dolibarr_syslog("pdf_courrier_droit_editeur::Generate ", LOG_DEBUG );
|
||||
|
||||
require_once(FPDF_PATH.'fpdf.php');
|
||||
require_once(DOL_DOCUMENT_ROOT."/product.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/product/canvas/product.livre.class.php");
|
||||
$error = 0;
|
||||
$year = strftime("%Y", time());
|
||||
|
||||
//
|
||||
$sql = "SELECT s.rowid,s.nom";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."societe as s";
|
||||
//$sql .= " , ".MAIN_DB_PREFIX."categorie_fournisseur as cf";
|
||||
$sql .= " WHERE s.fournisseur = 1 ";
|
||||
//$sql .= " AND s.rowid = cf.fk_societe";
|
||||
//$sql .= " AND cf.fk_categorie = 2";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$fichref = "Droits-$year";
|
||||
$dir_all = DOL_DATA_ROOT."/ged/" . get_exdir($numero);
|
||||
$file_all = $dir_all . $numero . ".pdf";
|
||||
|
||||
// Initialisation document vierge
|
||||
$pdf_all=new FPDI_Protection('P','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<72>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf_all->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
|
||||
$pdf_all->Open();
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir);
|
||||
return -6;
|
||||
}
|
||||
}
|
||||
while ($obj = $this->db->fetch_object($resql) )
|
||||
{
|
||||
$id = $obj->rowid;
|
||||
|
||||
dolibarr_syslog("droits-editeurs.php id:$id", LOG_DEBUG );
|
||||
|
||||
$coupdf = new pdf_courrier_droit_editeur($this->db, $langs);
|
||||
|
||||
$fichref = "Droits-$year";
|
||||
$dir = DOL_DATA_ROOT."/societe/courrier/" . get_exdir($id);
|
||||
$file = $dir . $fichref . ".pdf";
|
||||
|
||||
// Initialisation document vierge
|
||||
$pdf=new FPDI_Protection('P','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<72>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
|
||||
$pdf->Open();
|
||||
|
||||
$coupdf->Write($id, $dir, $year, $pdf);
|
||||
$coupdf->Write($id, $dir_all, $year, $pdf_all);
|
||||
|
||||
$pdf->Close();
|
||||
$pdf->Output($file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
dolibarr_syslog("droits-editeurs.php write $file", LOG_DEBUG );
|
||||
}
|
||||
|
||||
$pdf_all->Close();
|
||||
$pdf_all->Output($file_all);
|
||||
dolibarr_syslog("droits-editeurs.php write $fileall", LOG_DEBUG );
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("pdf_courrier_droit_editeur::Generate ".$db->error(), LOG_ERR );
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction g<EFBFBD>n<EFBFBD>rant le fichier
|
||||
\param id id de la societe
|
||||
\return int 1=ok, 0=ko
|
||||
*/
|
||||
function Write($id, $dir, $year, &$pdf)
|
||||
{
|
||||
dolibarr_syslog("pdf_courrier_droit_editeur::Write $id,$year ", LOG_DEBUG );
|
||||
$soc = new Societe($this->db);
|
||||
$soc->fetch($id);
|
||||
|
||||
if (! file_exists($dir))
|
||||
{
|
||||
if (create_exdir($dir) < 0)
|
||||
{
|
||||
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (file_exists($dir))
|
||||
{
|
||||
// Initialisation document vierge
|
||||
|
||||
|
||||
$books = array();
|
||||
$year_data = $year - 1;
|
||||
|
||||
// On r<>cup<75>re donn<6E>es du mail
|
||||
$sql = "SELECT p.rowid,p.label, pc.taux, pc.quantite";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."facturedet as fd";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product as p";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product_cnv_livre as pl";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product_cnv_livre_contrat as pc";
|
||||
|
||||
$sql .= " WHERE fd.fk_facture = f.rowid";
|
||||
$sql .= " AND fd.fk_product = p.rowid";
|
||||
$sql .= " AND p.canvas = 'livre'";
|
||||
$sql .= " AND p.rowid = pl.rowid";
|
||||
$sql .= " AND pl.fk_contrat = pc.rowid";
|
||||
$sql .= " AND year (f.datef) <= ".($year_data);
|
||||
$sql .= " GROUP BY p.rowid";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
if ($resql)
|
||||
{
|
||||
$i = 0;
|
||||
while ($obj = $this->db->fetch_object($resql) )
|
||||
{
|
||||
$books[$i]['title'] = $obj->label;
|
||||
$books[$i]['id'] = $obj->rowid;
|
||||
$books[$i]['taux'] = $obj->taux;
|
||||
$books[$i]['qty'] = $obj->quantite;
|
||||
|
||||
$i++;
|
||||
}
|
||||
$this->db->free($resql);
|
||||
}
|
||||
else
|
||||
{
|
||||
print $this->db->error();
|
||||
print "$sql\n";
|
||||
}
|
||||
|
||||
foreach($books as $ref => $value)
|
||||
{
|
||||
$livre = new ProductLivre($this->db);
|
||||
$livre->FetchCanvas($value['id']);
|
||||
|
||||
$pdf->AddPage();
|
||||
$qtycontrat = $value['qty'];
|
||||
/*
|
||||
* Adresse
|
||||
*/
|
||||
|
||||
|
||||
// Client destinataire
|
||||
$posy=42;
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->SetXY(102,$posy-5);
|
||||
|
||||
// Nom client
|
||||
$pdf->SetXY(102,$posy+3);
|
||||
$pdf->SetFont('Arial','B',11);
|
||||
$pdf->MultiCell(106,4, $soc->nom, 0, 'L');
|
||||
|
||||
// Caract<63>ristiques client
|
||||
$carac_client=$soc->adresse;
|
||||
$carac_client.="\n".$soc->cp . " " . $soc->ville."\n";
|
||||
$carac_client.=$soc->pays."\n";
|
||||
|
||||
$pdf->SetFont('Arial','',9);
|
||||
$pdf->SetXY(102,$posy+8);
|
||||
$pdf->MultiCell(86,4, $carac_client);
|
||||
/*
|
||||
*
|
||||
*
|
||||
*/
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',10);
|
||||
|
||||
$pdf->SetXY(10,100);
|
||||
|
||||
$pdf->MultiCell(190,5,"Je vous prie de trouver ci-dessous le r<>capitulatif des ventes du titre cit<69> pour la p<>riode du 1er janvier au 31 d<>cembre $year_data.");
|
||||
|
||||
$pdf->SetXY(10,120);
|
||||
$pdf->MultiCell(25,5,"Nom du titre : ");
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(35,120);
|
||||
$pdf->MultiCell(140,5,$value['title']);
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140);
|
||||
$pdf->MultiCell(46,5,"Quantit<EFBFBD> sign<67>e au contrat : ");
|
||||
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(56,140);
|
||||
$pdf->MultiCell(14,5,$qtycontrat,0,'R');
|
||||
|
||||
$sql = "SELECT p.label, sum(fd.qty), date_format(f.datef,'%Y')";
|
||||
$sql .= " FROM ".MAIN_DB_PREFIX."facture as f";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."facturedet as fd";
|
||||
$sql .= " , ".MAIN_DB_PREFIX."product as p";
|
||||
$sql .= " WHERE fd.fk_facture = f.rowid";
|
||||
$sql .= " AND p.rowid = '".$value['id']."'";
|
||||
$sql .= " AND fd.fk_product = p.rowid";
|
||||
$sql .= " AND p.canvas = 'livre'";
|
||||
$sql .= " GROUP BY p.rowid, date_format(f.datef,'%Y') ORDER BY date_format(f.datef,'%Y') ASC";
|
||||
|
||||
$resql=$this->db->query($sql);
|
||||
|
||||
$qtysell = 0;
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$i = 0;
|
||||
while ($row = $this->db->fetch_row($resql) )
|
||||
{
|
||||
$i++;
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 8) );
|
||||
$pdf->MultiCell(44,5,"Quantit<EFBFBD> vendue en ".$row[2]." : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(54,140 + ($i * 8) );
|
||||
$pdf->MultiCell(16,5,$row[1],0,'R');
|
||||
|
||||
$qtysell += $row[1];
|
||||
|
||||
}
|
||||
$this->db->free($resql);
|
||||
}
|
||||
else
|
||||
{
|
||||
print $this->db->error();
|
||||
}
|
||||
|
||||
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(100,140 + ($i * 8) );
|
||||
$pdf->MultiCell(15,5,"Solde : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(115,140 + ($i * 8) );
|
||||
$pdf->MultiCell(16,5,($qtycontrat - $qtysell),0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 10) );
|
||||
$pdf->MultiCell(50,5,"Taux des droits d'auteurs : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(60,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, $value['taux']." %",0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 10) );
|
||||
$pdf->MultiCell(50,5,"Prix de vente des livres HT : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(60,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, sprintf("%.2f",$livre->price),0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,140 + ($i * 10) );
|
||||
$pdf->MultiCell(50,5,"Prix de vente des livres TTC : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(60,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, sprintf("%.2f",$livre->price_ttc),0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,150 + ($i * 10) );
|
||||
$pdf->MultiCell(80,5,"Reste <20> devoir sur les droits pour l'ann<6E>e ".($year-1)." : ",0);
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY(90,140 + ($i * 10) );
|
||||
$pdf->MultiCell(16,5, $pu_ttc,0,'R');
|
||||
|
||||
$i++;
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(10,150 + ($i * 10) + 20);
|
||||
$pdf->MultiCell(190,5,"Nous restons <20> votre enti<74>re disposition pour de plus amples renseignements dont vous pouvez avoir besoin et vous remercions de la confiance que vous nous avez accord<72>e.");
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
$this->error=$this->langs->trans("ErrorCanNotCreateDir",$dir);
|
||||
return -6;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@ -22,286 +22,289 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/expedition/mods/methode_expedition.modules.php
|
||||
\ingroup expedition
|
||||
\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
|
||||
\version $Revision$
|
||||
*/
|
||||
\file htdocs/expedition/mods/methode_expedition.modules.php
|
||||
\ingroup expedition
|
||||
\brief Fichier contenant la classe m<EFBFBD>re de generation de bon de livraison en PDF
|
||||
et la classe m<EFBFBD>re de num<EFBFBD>rotation des bons de livraisons
|
||||
\version $Revision$
|
||||
*/
|
||||
|
||||
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
|
||||
|
||||
/**
|
||||
\class methode_expedition
|
||||
\brief Classe mère des methodes expeditions
|
||||
*/
|
||||
\class methode_expedition
|
||||
\brief Classe m<EFBFBD>re des methodes expeditions
|
||||
*/
|
||||
class methode_expedition
|
||||
{
|
||||
|
||||
function methode_expedition($db=0)
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->name = "NON DEFINIT";
|
||||
$this->description = "ERREUR DANS LA DEFINITION DU MODULE.";
|
||||
}
|
||||
|
||||
function Active($statut)
|
||||
{
|
||||
// Mise a jour du statut
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut ";
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$af = $this->db->affected_rows($resql);
|
||||
|
||||
if ($af == 0 && $statut == 1)
|
||||
function methode_expedition($db=0)
|
||||
{
|
||||
$this->db = $db;
|
||||
$this->name = "NON DEFINIT";
|
||||
$this->description = "ERREUR DANS LA DEFINITION DU MODULE.";
|
||||
}
|
||||
|
||||
function Active($statut)
|
||||
{
|
||||
// Mise a jour du statut
|
||||
$sql = "UPDATE ".MAIN_DB_PREFIX."expedition_methode set statut = $statut ";
|
||||
$sql.= " WHERE rowid = ".$this->id;
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if ($resql)
|
||||
{
|
||||
$af = $this->db->affected_rows($resql);
|
||||
|
||||
if ($af == 0 && $statut == 1)
|
||||
{
|
||||
// On créé la méthode dans la base
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode";
|
||||
$sql .= " (rowid, statut, code, libelle, description)";
|
||||
$sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')";
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if (! $resql)
|
||||
{
|
||||
dolibarr_syslog("methode_expedition::Active Erreur 2");
|
||||
}
|
||||
// On cr<63><72> la m<>thode dans la base
|
||||
|
||||
$sql = "INSERT INTO ".MAIN_DB_PREFIX."expedition_methode";
|
||||
$sql .= " (rowid, statut, code, libelle, description)";
|
||||
$sql .= " VALUES (".$this->id.",1,'$this->code','$this->name','$this->description')";
|
||||
|
||||
$resql = $this->db->query($sql);
|
||||
|
||||
if (! $resql)
|
||||
{
|
||||
dolibarr_syslog("methode_expedition::Active Erreur 2");
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("methode_expedition::Active Erreur 1");
|
||||
}
|
||||
}
|
||||
|
||||
function write_file($id)
|
||||
{
|
||||
global $user;
|
||||
$propale = new Propal($this->db,"",$id);
|
||||
if ($propale->fetch($id))
|
||||
{
|
||||
|
||||
|
||||
$file = $dir . "/" . $propale->ref . ".pdf";
|
||||
|
||||
if (file_exists($dir))
|
||||
{
|
||||
// Protection et encryption du pdf
|
||||
if ($conf->global->PDF_SECURITY_ENCRYPTION)
|
||||
{
|
||||
$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
|
||||
{
|
||||
$pdf=new FPDI('P','mm',$this->format);
|
||||
}
|
||||
|
||||
$pdf->Open();
|
||||
$pdf->AddPage();
|
||||
|
||||
$pdf->SetTitle($propale->ref);
|
||||
$pdf->SetSubject("Proposition commerciale");
|
||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||
$pdf->SetAuthor($user->fullname);
|
||||
|
||||
$this->_pagehead($pdf, $propale);
|
||||
|
||||
$tab_top = 100;
|
||||
$tab_height = 150;
|
||||
|
||||
$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($propale->lignes);
|
||||
|
||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||
{
|
||||
|
||||
$curY = $nexY;
|
||||
|
||||
$pdf->SetXY (30, $curY );
|
||||
|
||||
$pdf->MultiCell(100, 5, $propale->lignes[$i]->desc, 0, 'J', 0);
|
||||
|
||||
$nexY = $pdf->GetY();
|
||||
|
||||
$pdf->SetXY (10, $curY );
|
||||
|
||||
$pdf->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C');
|
||||
|
||||
$pdf->SetXY (133, $curY );
|
||||
$pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C');
|
||||
|
||||
$pdf->SetXY (145, $curY );
|
||||
$pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C');
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("methode_expedition::Active Erreur 1");
|
||||
}
|
||||
}
|
||||
|
||||
$pdf->SetXY (156, $curY );
|
||||
$pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (174, $curY );
|
||||
$total = price($propale->lignes[$i]->price * $propale->lignes[$i]->qty);
|
||||
$pdf->MultiCell(26, 5, $total, 0, 'R', 0);
|
||||
|
||||
$pdf->line(10, $curY, 200, $curY );
|
||||
function write_file($id)
|
||||
{
|
||||
global $conf, $user;
|
||||
|
||||
if ($nexY > 240 && $i < $nblignes - 1)
|
||||
{
|
||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY);
|
||||
$pdf->AddPage();
|
||||
$nexY = $iniY;
|
||||
$this->_pagehead($pdf, $propale);
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','', 10);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY);
|
||||
/*
|
||||
*
|
||||
*/
|
||||
$tab2_top = 254;
|
||||
$tab2_lh = 7;
|
||||
$tab2_height = $tab2_lh * 3;
|
||||
|
||||
$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, "Total HT", 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (132, $tab2_top + $tab2_lh);
|
||||
$pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (132, $tab2_top + ($tab2_lh*2));
|
||||
$pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1);
|
||||
|
||||
$pdf->SetXY (174, $tab2_top + 0);
|
||||
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (174, $tab2_top + $tab2_lh);
|
||||
$pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (174, $tab2_top + ($tab2_lh*2));
|
||||
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1);
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _tableau(&$pdf, $tab_top, $tab_height, $nexY)
|
||||
{
|
||||
|
||||
$pdf->SetFont('Arial','',11);
|
||||
|
||||
$pdf->Text(30,$tab_top + 5,'Désignation');
|
||||
|
||||
$pdf->line(132, $tab_top, 132, $tab_top + $tab_height);
|
||||
$pdf->Text(134,$tab_top + 5,'TVA');
|
||||
|
||||
$pdf->line(144, $tab_top, 144, $tab_top + $tab_height);
|
||||
$pdf->Text(147,$tab_top + 5,'Qté');
|
||||
|
||||
$pdf->line(156, $tab_top, 156, $tab_top + $tab_height);
|
||||
$pdf->Text(160,$tab_top + 5,'P.U.');
|
||||
|
||||
$pdf->line(174, $tab_top, 174, $tab_top + $tab_height);
|
||||
$pdf->Text(187,$tab_top + 5,'Total');
|
||||
|
||||
// $pdf->Rect(10, $tab_top, 190, $nexY - $tab_top);
|
||||
$pdf->Rect(10, $tab_top, 190, $tab_height);
|
||||
$propale = new Propal($this->db,"",$id);
|
||||
if ($propale->fetch($id))
|
||||
{
|
||||
|
||||
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$titre = $langs->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie));
|
||||
$pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre);
|
||||
$file = $dir . "/" . $propale->ref . ".pdf";
|
||||
|
||||
}
|
||||
if (file_exists($dir))
|
||||
{
|
||||
// Protection et encryption du pdf
|
||||
if ($conf->global->PDF_SECURITY_ENCRYPTION)
|
||||
{
|
||||
$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<72>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
{
|
||||
$pdf=new FPDI('P','mm',$this->format);
|
||||
}
|
||||
|
||||
function _pagehead(&$pdf, $propale)
|
||||
{
|
||||
$pdf->SetXY(10,5);
|
||||
if (defined("FAC_PDF_INTITULE"))
|
||||
{
|
||||
$pdf->SetTextColor(0,0,200);
|
||||
$pdf->SetFont('Times','B',14);
|
||||
$pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L');
|
||||
}
|
||||
|
||||
$pdf->SetTextColor(70,70,170);
|
||||
if (defined("FAC_PDF_ADRESSE"))
|
||||
{
|
||||
$pdf->SetFont('Times','',12);
|
||||
$pdf->MultiCell(76, 5, FAC_PDF_ADRESSE);
|
||||
}
|
||||
if (defined("FAC_PDF_TEL"))
|
||||
{
|
||||
$pdf->SetFont('Times','',10);
|
||||
$pdf->MultiCell(76, 5, "Tél : ".FAC_PDF_TEL);
|
||||
}
|
||||
if (defined("FAC_PDF_SIREN"))
|
||||
{
|
||||
$pdf->SetFont('Times','',10);
|
||||
$pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN);
|
||||
}
|
||||
|
||||
if (defined("FAC_PDF_INTITULE2"))
|
||||
{
|
||||
$pdf->SetXY(100,5);
|
||||
$pdf->SetFont('Times','B',14);
|
||||
$pdf->SetTextColor(0,0,200);
|
||||
$pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R');
|
||||
}
|
||||
/*
|
||||
* Adresse Client
|
||||
*/
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Courier','B',12);
|
||||
$propale->fetch_client();
|
||||
$pdf->SetXY(102,42);
|
||||
$pdf->MultiCell(96,5, $propale->client->nom);
|
||||
$pdf->SetFont('Courier','B',11);
|
||||
$pdf->SetXY(102,47);
|
||||
$pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville);
|
||||
$pdf->rect(100, 40, 100, 40);
|
||||
|
||||
|
||||
$pdf->SetTextColor(200,0,0);
|
||||
$pdf->SetFont('Courier','B',12);
|
||||
$pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day'));
|
||||
$pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref);
|
||||
|
||||
|
||||
}
|
||||
$pdf->Open();
|
||||
$pdf->AddPage();
|
||||
|
||||
$pdf->SetTitle($propale->ref);
|
||||
$pdf->SetSubject("Proposition commerciale");
|
||||
$pdf->SetCreator("Dolibarr ".DOL_VERSION);
|
||||
$pdf->SetAuthor($user->fullname);
|
||||
|
||||
$this->_pagehead($pdf, $propale);
|
||||
|
||||
$tab_top = 100;
|
||||
$tab_height = 150;
|
||||
|
||||
$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($propale->lignes);
|
||||
|
||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||
{
|
||||
|
||||
$curY = $nexY;
|
||||
|
||||
$pdf->SetXY (30, $curY );
|
||||
|
||||
$pdf->MultiCell(100, 5, $propale->lignes[$i]->desc, 0, 'J', 0);
|
||||
|
||||
$nexY = $pdf->GetY();
|
||||
|
||||
$pdf->SetXY (10, $curY );
|
||||
|
||||
$pdf->MultiCell(20, 5, $propale->lignes[$i]->ref, 0, 'C');
|
||||
|
||||
$pdf->SetXY (133, $curY );
|
||||
$pdf->MultiCell(10, 5, $propale->lignes[$i]->tva_tx, 0, 'C');
|
||||
|
||||
$pdf->SetXY (145, $curY );
|
||||
$pdf->MultiCell(10, 5, $propale->lignes[$i]->qty, 0, 'C');
|
||||
|
||||
$pdf->SetXY (156, $curY );
|
||||
$pdf->MultiCell(18, 5, price($propale->lignes[$i]->price), 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (174, $curY );
|
||||
$total = price($propale->lignes[$i]->price * $propale->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, $propale);
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','', 10);
|
||||
}
|
||||
}
|
||||
|
||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY);
|
||||
/*
|
||||
*
|
||||
*/
|
||||
$tab2_top = 254;
|
||||
$tab2_lh = 7;
|
||||
$tab2_height = $tab2_lh * 3;
|
||||
|
||||
$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, "Total HT", 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (132, $tab2_top + $tab2_lh);
|
||||
$pdf->MultiCell(42, $tab2_lh, "Total TVA", 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (132, $tab2_top + ($tab2_lh*2));
|
||||
$pdf->MultiCell(42, $tab2_lh, "Total TTC", 1, 'R', 1);
|
||||
|
||||
$pdf->SetXY (174, $tab2_top + 0);
|
||||
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ht), 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (174, $tab2_top + $tab2_lh);
|
||||
$pdf->MultiCell(26, $tab2_lh, price($propale->total_tva), 0, 'R', 0);
|
||||
|
||||
$pdf->SetXY (174, $tab2_top + ($tab2_lh*2));
|
||||
$pdf->MultiCell(26, $tab2_lh, price($propale->total_ttc), 1, 'R', 1);
|
||||
|
||||
/*
|
||||
*
|
||||
*/
|
||||
|
||||
$pdf->Output($file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function _tableau(&$pdf, $tab_top, $tab_height, $nexY)
|
||||
{
|
||||
|
||||
$pdf->SetFont('Arial','',11);
|
||||
|
||||
$pdf->Text(30,$tab_top + 5,'D<>signation');
|
||||
|
||||
$pdf->line(132, $tab_top, 132, $tab_top + $tab_height);
|
||||
$pdf->Text(134,$tab_top + 5,'TVA');
|
||||
|
||||
$pdf->line(144, $tab_top, 144, $tab_top + $tab_height);
|
||||
$pdf->Text(147,$tab_top + 5,'Qt<51>');
|
||||
|
||||
$pdf->line(156, $tab_top, 156, $tab_top + $tab_height);
|
||||
$pdf->Text(160,$tab_top + 5,'P.U.');
|
||||
|
||||
$pdf->line(174, $tab_top, 174, $tab_top + $tab_height);
|
||||
$pdf->Text(187,$tab_top + 5,'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->trans("AmountInCurrency",$langs->trans("Currency".$conf->monnaie));
|
||||
$pdf->Text(200 - $pdf->GetStringWidth($titre), 98, $titre);
|
||||
|
||||
}
|
||||
|
||||
function _pagehead(&$pdf, $propale)
|
||||
{
|
||||
$pdf->SetXY(10,5);
|
||||
if (defined("FAC_PDF_INTITULE"))
|
||||
{
|
||||
$pdf->SetTextColor(0,0,200);
|
||||
$pdf->SetFont('Times','B',14);
|
||||
$pdf->MultiCell(76, 8, FAC_PDF_INTITULE, 0, 'L');
|
||||
}
|
||||
|
||||
$pdf->SetTextColor(70,70,170);
|
||||
if (defined("FAC_PDF_ADRESSE"))
|
||||
{
|
||||
$pdf->SetFont('Times','',12);
|
||||
$pdf->MultiCell(76, 5, FAC_PDF_ADRESSE);
|
||||
}
|
||||
if (defined("FAC_PDF_TEL"))
|
||||
{
|
||||
$pdf->SetFont('Times','',10);
|
||||
$pdf->MultiCell(76, 5, "T<EFBFBD>l : ".FAC_PDF_TEL);
|
||||
}
|
||||
if (defined("FAC_PDF_SIREN"))
|
||||
{
|
||||
$pdf->SetFont('Times','',10);
|
||||
$pdf->MultiCell(76, 5, "SIREN : ".FAC_PDF_SIREN);
|
||||
}
|
||||
|
||||
if (defined("FAC_PDF_INTITULE2"))
|
||||
{
|
||||
$pdf->SetXY(100,5);
|
||||
$pdf->SetFont('Times','B',14);
|
||||
$pdf->SetTextColor(0,0,200);
|
||||
$pdf->MultiCell(100, 10, FAC_PDF_INTITULE2, '' , 'R');
|
||||
}
|
||||
/*
|
||||
* Adresse Client
|
||||
*/
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Courier','B',12);
|
||||
$propale->fetch_client();
|
||||
$pdf->SetXY(102,42);
|
||||
$pdf->MultiCell(96,5, $propale->client->nom);
|
||||
$pdf->SetFont('Courier','B',11);
|
||||
$pdf->SetXY(102,47);
|
||||
$pdf->MultiCell(96,5, $propale->client->adresse . "\n" . $propale->client->cp . " " . $propale->client->ville);
|
||||
$pdf->rect(100, 40, 100, 40);
|
||||
|
||||
|
||||
$pdf->SetTextColor(200,0,0);
|
||||
$pdf->SetFont('Courier','B',12);
|
||||
$pdf->Text(11, 88, "Date : " . dolibarr_print_date($propale->date,'day'));
|
||||
$pdf->Text(11, 94, "Proposition commerciale : ".$propale->ref);
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
* \file htdocs/fourn/commande/modules/pdf_muscadet.modules.php
|
||||
* \ingroup fournisseur
|
||||
* \brief Fichier de la classe permettant de générer les commandes fournisseurs au modèle Muscadet
|
||||
* \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes fournisseurs au mod<EFBFBD>le Muscadet
|
||||
* \author Regis Houssin
|
||||
* \version $Id$
|
||||
*/
|
||||
@ -35,14 +35,14 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
|
||||
|
||||
/**
|
||||
* \class pdf_muscadet
|
||||
* \brief Classe permettant de générer les commandes fournisseurs au modèle Muscadet
|
||||
* \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes fournisseurs au mod<EFBFBD>le Muscadet
|
||||
*/
|
||||
class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
{
|
||||
|
||||
/**
|
||||
* \brief Constructeur
|
||||
* \param db Handler accès base de donnée
|
||||
* \param db Handler acc<EFBFBD>s base de donn<EFBFBD>e
|
||||
*/
|
||||
function pdf_muscadet($db)
|
||||
{
|
||||
@ -53,7 +53,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "muscadet";
|
||||
$this->description = "Modèle de commandes fournisseur complet (logo...)";
|
||||
$this->description = "Mod<EFBFBD>le de commandes fournisseur complet (logo...)";
|
||||
|
||||
// Dimension page pour format A4
|
||||
$this->type = 'pdf';
|
||||
@ -67,8 +67,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
|
||||
$this->option_logo = 1; // Affiche logo
|
||||
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
|
||||
$this->option_modereg = 1; // Affiche mode règlement
|
||||
$this->option_condreg = 1; // Affiche conditions règlement
|
||||
$this->option_modereg = 1; // Affiche mode r<EFBFBD>glement
|
||||
$this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
|
||||
$this->option_codeproduitservice = 1; // Affiche code produit-service
|
||||
$this->option_multilang = 1; // Dispo en plusieurs langues
|
||||
|
||||
@ -77,7 +77,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
|
||||
// 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
|
||||
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
|
||||
|
||||
// Defini position des colonnes
|
||||
$this->posxdesc=$this->marge_gauche+1;
|
||||
@ -93,8 +93,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoi dernière erreur
|
||||
\return string Dernière erreur
|
||||
\brief Renvoi derni<EFBFBD>re erreur
|
||||
\return string Derni<EFBFBD>re erreur
|
||||
*/
|
||||
function pdferror()
|
||||
{
|
||||
@ -102,8 +102,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction générant la commande sur le disque
|
||||
\param id Id de la commande à générer
|
||||
\brief Fonction g<EFBFBD>n<EFBFBD>rant la commande sur le disque
|
||||
\param id Id de la commande <EFBFBD> g<EFBFBD>n<EFBFBD>rer
|
||||
\return int 1=ok, 0=ko
|
||||
*/
|
||||
function write_file($com,$outputlangs='')
|
||||
@ -125,7 +125,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
|
||||
if ($conf->fournisseur->commande->dir_output)
|
||||
{
|
||||
// Définition de l'objet $com (pour compatibilite ascendante)
|
||||
// D<EFBFBD>finition de l'objet $com (pour compatibilite ascendante)
|
||||
if (! is_object($com))
|
||||
{
|
||||
$id = $com;
|
||||
@ -134,7 +134,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
}
|
||||
$deja_regle = "";
|
||||
|
||||
// Définition de $dir et $file
|
||||
// D<EFBFBD>finition de $dir et $file
|
||||
if ($com->specimen)
|
||||
{
|
||||
$dir = $conf->fournisseur->commande->dir_output;
|
||||
@ -167,7 +167,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$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
|
||||
$pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
@ -210,7 +210,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
{
|
||||
$tab_top = 88;
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour g<EFBFBD>rer multi-page
|
||||
$pdf->SetXY ($this->posxdesc-1, $tab_top);
|
||||
$pdf->MultiCell(190, 3, $com->note_public, 0, 'J');
|
||||
$nexY = $pdf->GetY();
|
||||
@ -244,22 +244,22 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
if ($libelleproduitservice) $libelleproduitservice.="<br>";
|
||||
$libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1);
|
||||
}
|
||||
// Si ligne associée à un code produit
|
||||
// Si ligne associ<EFBFBD>e <20> un code produit
|
||||
if ($com->lignes[$i]->fk_product)
|
||||
{
|
||||
$libelleproduitservice=$outputlangs->transnoentities("Product")." ".$com->lignes[$i]->ref_fourn." - ".$libelleproduitservice;
|
||||
}
|
||||
if ($com->lignes[$i]->date_start && $com->lignes[$i]->date_end)
|
||||
{
|
||||
// Affichage durée si il y en a une
|
||||
// Affichage dur<EFBFBD>e si il y en a une
|
||||
$libelleproduitservice.="<br>".dol_htmlentitiesbr("(".$outputlangs->transnoentities("From")." ".dolibarr_print_date($com->lignes[$i]->date_start)." ".$outputlangs->transnoentities("to")." ".dolibarr_print_date($com->lignes[$i]->date_end).")",1);
|
||||
}
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour g<EFBFBD>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->SetFont('Arial','', 9); // On repositionne la police par d<EFBFBD>faut
|
||||
|
||||
$nexY = $pdf->GetY();
|
||||
|
||||
@ -271,7 +271,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$pdf->SetXY ($this->posxup, $curY);
|
||||
$pdf->MultiCell(18, 4, price($com->lignes[$i]->subprice), 0, 'R', 0);
|
||||
|
||||
// Quantité
|
||||
// Quantit<EFBFBD>
|
||||
$pdf->SetXY ($this->posxqty, $curY);
|
||||
$pdf->MultiCell(10, 4, $com->lignes[$i]->qty, 0, 'R');
|
||||
|
||||
@ -333,7 +333,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
}
|
||||
|
||||
/*
|
||||
* Mode de règlement
|
||||
* Mode de r<EFBFBD>glement
|
||||
*/
|
||||
if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER))
|
||||
{
|
||||
@ -346,7 +346,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
}
|
||||
|
||||
/*
|
||||
* Propose mode règlement par CHQ
|
||||
* Propose mode r<EFBFBD>glement par CHQ
|
||||
*/
|
||||
/*
|
||||
if (defined("FACTURE_CHQ_NUMBER"))
|
||||
@ -358,7 +358,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
|
||||
$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->MultiCell(90, 3, "R<EFBFBD>glement par ch<63>que <20> l'ordre de ".$account->proprio." envoy<EFBFBD> <20>:",0,'L',0);
|
||||
$pdf->SetXY ($this->marge_gauche, 231);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$pdf->MultiCell(80, 3, $account->adresse_proprio, 0, 'L', 0);
|
||||
@ -367,7 +367,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
*/
|
||||
|
||||
/*
|
||||
* Propose mode règlement par RIB
|
||||
* Propose mode r<EFBFBD>glement par RIB
|
||||
*/
|
||||
/*
|
||||
if (defined("FACTURE_RIB_NUMBER"))
|
||||
@ -382,7 +382,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$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);
|
||||
$pdf->MultiCell(90, 3, "R<EFBFBD>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 );
|
||||
@ -393,10 +393,10 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$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->MultiCell(24, 3, "Num<EFBFBD>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->MultiCell(13, 3, "Cl<EFBFBD> RIB", 0, 'C', 0);
|
||||
$pdf->line($this->marges['g']+73, $cury, $this->marges['g']+73, $cury+10 );
|
||||
|
||||
$pdf->SetFont('Arial','',8);
|
||||
@ -421,13 +421,13 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
*/
|
||||
|
||||
/*
|
||||
* Conditions de règlements
|
||||
* Conditions de r<EFBFBD>glements
|
||||
*/
|
||||
/* Pour l'instant les conditions de règlement ne sont pas gérées sur les propales */
|
||||
/* Pour l'instant les conditions de r<EFBFBD>glement ne sont pas g<>r<EFBFBD>es sur les propales */
|
||||
/*
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
$pdf->SetXY($this->marge_gauche, 217);
|
||||
$titre = "Conditions de réglement:";
|
||||
$titre = "Conditions de r<EFBFBD>glement:";
|
||||
$pdf->MultiCell(80, 5, $titre, 0, 'L');
|
||||
$pdf->SetFont('Arial','',10);
|
||||
$pdf->SetXY(54, 217);
|
||||
@ -443,7 +443,9 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
else
|
||||
@ -462,7 +464,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Affiche le total à payer
|
||||
* \brief Affiche le total <EFBFBD> payer
|
||||
* \param pdf Objet PDF
|
||||
* \param object Objet order
|
||||
* \param deja_regle Montant deja regle
|
||||
@ -503,7 +505,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$pdf->MultiCell($largcol2, $tab2_hl, "-".$object->remise_percent."%", 0, 'R', 1);
|
||||
|
||||
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * 2);
|
||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, "Total HT après remise", 0, 'L', 1);
|
||||
$pdf->MultiCell($col2x-$col1x, $tab2_hl, "Total HT apr<EFBFBD>s remise", 0, 'L', 1);
|
||||
|
||||
$pdf->SetXY ($col2x, $tab2_top + $tab2_hl * 2);
|
||||
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 0);
|
||||
@ -515,7 +517,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$index = 0;
|
||||
}
|
||||
|
||||
// Affichage des totaux de TVA par taux (conformément à réglementation)
|
||||
// Affichage des totaux de TVA par taux (conform<EFBFBD>ment <20> r<>glementation)
|
||||
$pdf->SetFillColor(248,248,248);
|
||||
|
||||
foreach( $this->tva as $tvakey => $tvaval )
|
||||
@ -599,7 +601,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
{
|
||||
global $conf;
|
||||
|
||||
// Montants exprimés en (en tab_top - 1)
|
||||
// Montants exprim<EFBFBD>s en (en tab_top - 1)
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie));
|
||||
@ -724,7 +726,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
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
|
||||
// Caract<EFBFBD>ristiques emetteur
|
||||
$carac_emetteur = '';
|
||||
if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE;
|
||||
else {
|
||||
@ -769,7 +771,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
|
||||
$pdf->SetFont('Arial','B',11);
|
||||
$pdf->MultiCell(106,4, $object->client->nom, 0, 'L');
|
||||
|
||||
// Caractéristiques client
|
||||
// Caract<EFBFBD>ristiques client
|
||||
$carac_client=$object->client->adresse;
|
||||
$carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n";
|
||||
if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra;
|
||||
|
||||
@ -270,6 +270,9 @@ class pdf_edison extends ModelePDFCommandes
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
\file htdocs/includes/modules/commande/pdf_einstein.modules.php
|
||||
\ingroup commande
|
||||
\brief Fichier de la classe permettant de générer les commandes au modèle Einstein
|
||||
\brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes au mod<EFBFBD>le Einstein
|
||||
\author Laurent Destailleur
|
||||
\version $Id$
|
||||
*/
|
||||
@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
|
||||
|
||||
/**
|
||||
\class pdf_einstein
|
||||
\brief Classe permettant de générer les commandes au modèle Einstein
|
||||
\brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les commandes au mod<EFBFBD>le Einstein
|
||||
*/
|
||||
|
||||
class pdf_einstein extends ModelePDFCommandes
|
||||
@ -44,7 +44,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
|
||||
/**
|
||||
\brief Constructeur
|
||||
\param db Handler accès base de donnée
|
||||
\param db Handler acc<EFBFBD>s base de donn<EFBFBD>e
|
||||
*/
|
||||
function pdf_einstein($db)
|
||||
{
|
||||
@ -69,12 +69,12 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
|
||||
$this->option_logo = 1; // Affiche logo
|
||||
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
|
||||
$this->option_modereg = 1; // Affiche mode règlement
|
||||
$this->option_condreg = 1; // Affiche conditions règlement
|
||||
$this->option_modereg = 1; // Affiche mode r<EFBFBD>glement
|
||||
$this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
|
||||
$this->option_codeproduitservice = 1; // Affiche code produit-service
|
||||
$this->option_multilang = 1; // Dispo en plusieurs langues
|
||||
$this->option_escompte = 1; // Affiche si il y a eu escompte
|
||||
$this->option_credit_note = 1; // Gère les avoirs
|
||||
$this->option_credit_note = 1; // G<EFBFBD>re les avoirs
|
||||
$this->option_freetext = 1; // Support add of a personalised text
|
||||
$this->option_draft_watermark = 1; //Support add of a watermark on drafts
|
||||
|
||||
@ -83,7 +83,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
|
||||
// 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
|
||||
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
|
||||
|
||||
// Defini position des colonnes
|
||||
$this->posxdesc=$this->marge_gauche+1;
|
||||
@ -99,8 +99,8 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Fonction générant la commande sur le disque
|
||||
* \param com Objet commande à générer
|
||||
* \brief Fonction g<EFBFBD>n<EFBFBD>rant la commande sur le disque
|
||||
* \param com Objet commande <EFBFBD> g<EFBFBD>n<EFBFBD>rer
|
||||
* \param outputlangs Lang object for output language
|
||||
* \return int 1=ok, 0=ko
|
||||
*/
|
||||
@ -123,7 +123,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
|
||||
if ($conf->commande->dir_output)
|
||||
{
|
||||
// Définition de l'objet $com (pour compatibilite ascendante)
|
||||
// D<EFBFBD>finition de l'objet $com (pour compatibilite ascendante)
|
||||
if (! is_object($com))
|
||||
{
|
||||
$id = $com;
|
||||
@ -132,7 +132,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
}
|
||||
$deja_regle = "";
|
||||
|
||||
// Définition de $dir et $file
|
||||
// D<EFBFBD>finition de $dir et $file
|
||||
if ($com->specimen)
|
||||
{
|
||||
$dir = $conf->commande->dir_output;
|
||||
@ -164,7 +164,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$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
|
||||
$pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
@ -208,7 +208,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
{
|
||||
$tab_top = 88;
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour gérer multi-page
|
||||
$pdf->SetFont('Arial','', 9); // Dans boucle pour g<EFBFBD>rer multi-page
|
||||
$pdf->SetXY ($this->posxdesc-1, $tab_top);
|
||||
$pdf->MultiCell(190, 3, $com->note_public, 0, 'J');
|
||||
$nexY = $pdf->GetY();
|
||||
@ -251,7 +251,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1);
|
||||
}
|
||||
}
|
||||
// Si ligne associée à un code produit
|
||||
// Si ligne associ<EFBFBD>e <20> un code produit
|
||||
if ($com->lignes[$i]->fk_product)
|
||||
{
|
||||
$prodser = new Product($this->db);
|
||||
@ -282,7 +282,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
// Description
|
||||
$pdf->writeHTMLCell($this->posxtva-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1);
|
||||
|
||||
$pdf->SetFont('Arial','', 9); // On repositionne la police par défaut
|
||||
$pdf->SetFont('Arial','', 9); // On repositionne la police par d<EFBFBD>faut
|
||||
|
||||
$nexY = $pdf->GetY();
|
||||
|
||||
@ -322,9 +322,9 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
// cherche nombre de lignes a venir pour savoir si place suffisante
|
||||
if ($i < ($nblignes - 1)) // If it's not last line
|
||||
{
|
||||
//on récupère la description du produit suivant
|
||||
//on r<EFBFBD>cup<EFBFBD>re la description du produit suivant
|
||||
$follow_descproduitservice = $com->lignes[$i+1]->desc;
|
||||
//on compte le nombre de ligne afin de vérifier la place disponible (largeur de ligne 52 caracteres)
|
||||
//on compte le nombre de ligne afin de v<EFBFBD>rifier la place disponible (largeur de ligne 52 caracteres)
|
||||
$nblineFollowDesc = (num_lines($follow_descproduitservice,52)*4);
|
||||
}
|
||||
else // If it's last line
|
||||
@ -388,7 +388,9 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
@ -612,7 +614,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
|
||||
$index = 0;
|
||||
|
||||
// Affichage des totaux de TVA par taux (conformément à réglementation)
|
||||
// Affichage des totaux de TVA par taux (conform<EFBFBD>ment <20> r<>glementation)
|
||||
$pdf->SetFillColor(248,248,248);
|
||||
|
||||
foreach( $this->tva as $tvakey => $tvaval )
|
||||
@ -699,7 +701,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
{
|
||||
global $conf;
|
||||
|
||||
// Montants exprimés en (en tab_top - 1)
|
||||
// Montants exprim<EFBFBD>s en (en tab_top - 1)
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
$pdf->SetFont('Arial','',8);
|
||||
$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie));
|
||||
@ -746,7 +748,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Affiche en-tête commande
|
||||
* \brief Affiche en-t<EFBFBD>te commande
|
||||
* \param pdf Objet PDF
|
||||
* \param com Objet commande
|
||||
* \param showadress 0=non, 1=oui
|
||||
@ -853,7 +855,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
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, $this->emetteur->nom, 0, 'L');
|
||||
|
||||
// Caractéristiques emetteur
|
||||
// Caract<EFBFBD>ristiques emetteur
|
||||
$carac_emetteur = '';
|
||||
if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE;
|
||||
else {
|
||||
@ -915,7 +917,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
// Nom client
|
||||
$carac_client = "\n".$object->contact->getFullName($outputlangs,1,1);
|
||||
|
||||
// Caractéristiques client
|
||||
// Caract<EFBFBD>ristiques client
|
||||
$carac_client.="\n".$object->contact->adresse;
|
||||
$carac_client.="\n".$object->contact->cp . " " . $object->contact->ville."\n";
|
||||
//Pays si different de l'emetteur
|
||||
@ -931,19 +933,19 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$pdf->SetFont('Arial','B',11);
|
||||
$pdf->MultiCell(96,4, $object->client->nom, 0, 'L');
|
||||
|
||||
// Nom du contact suivi commande si c'est une société
|
||||
// Nom du contact suivi commande si c'est une soci<EFBFBD>t<EFBFBD>
|
||||
$arrayidcontact = $object->getIdContact('external','CUSTOMER');
|
||||
if (sizeof($arrayidcontact) > 0)
|
||||
{
|
||||
$object->fetch_contact($arrayidcontact[0]);
|
||||
// On vérifie si c'est une société ou un particulier
|
||||
// On v<EFBFBD>rifie si c'est une soci<63>t<EFBFBD> ou un particulier
|
||||
if( !preg_match('#'.$object->contact->getFullName($outputlangs,1).'#isU',$object->client->nom) )
|
||||
{
|
||||
$carac_client .= "\n".$object->contact->getFullName($outputlangs,1,1);
|
||||
}
|
||||
}
|
||||
|
||||
// Caractéristiques client
|
||||
// Caract<EFBFBD>ristiques client
|
||||
$carac_client.="\n".$object->client->adresse;
|
||||
$carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n";
|
||||
|
||||
@ -953,7 +955,7 @@ class pdf_einstein extends ModelePDFCommandes
|
||||
$carac_client.=dol_entity_decode($object->client->pays)."\n";
|
||||
}
|
||||
}
|
||||
// Numéro TVA intracom
|
||||
// Num<EFBFBD>ro TVA intracom
|
||||
if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra;
|
||||
$pdf->SetFont('Arial','',9);
|
||||
$posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline name
|
||||
|
||||
@ -130,7 +130,9 @@ class html_cerfafr extends ModeleDon
|
||||
$handle=fopen($file,"w");
|
||||
fwrite($handle,$html);
|
||||
fclose($handle);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
|
||||
@ -21,30 +21,30 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/includes/modules/facture/modules_facture.php
|
||||
\ingroup facture
|
||||
\brief Fichier contenant la classe mère de generation des factures en PDF
|
||||
et la classe mère de numérotation des factures
|
||||
\version $Id$
|
||||
*/
|
||||
\file htdocs/includes/modules/facture/modules_facture.php
|
||||
\ingroup facture
|
||||
\brief Fichier contenant la classe m<EFBFBD>re de generation des factures en PDF
|
||||
et la classe m<EFBFBD>re de num<EFBFBD>rotation des factures
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
require_once(DOL_DOCUMENT_ROOT.'/lib/functions.lib.php');
|
||||
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
|
||||
require_once(DOL_DOCUMENT_ROOT."/product.class.php");
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); // Requis car utilisé dans les classes qui héritent
|
||||
require_once(DOL_DOCUMENT_ROOT."/compta/bank/account.class.php"); // Requis car utilis<EFBFBD> dans les classes qui h<>ritent
|
||||
|
||||
|
||||
/**
|
||||
\class ModelePDFFactures
|
||||
\brief Classe mère des modèles de facture
|
||||
*/
|
||||
\class ModelePDFFactures
|
||||
\brief Classe m<EFBFBD>re des mod<EFBFBD>les de facture
|
||||
*/
|
||||
|
||||
class ModelePDFFactures extends FPDF
|
||||
{
|
||||
var $error='';
|
||||
|
||||
/**
|
||||
* \brief Renvoi le dernier message d'erreur de création de facture
|
||||
* \brief Renvoi le dernier message d'erreur de cr<EFBFBD>ation de facture
|
||||
*/
|
||||
function pdferror()
|
||||
{
|
||||
@ -52,16 +52,16 @@ class ModelePDFFactures extends FPDF
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Renvoi la liste des modèles actifs
|
||||
* \brief Renvoi la liste des mod<EFBFBD>les actifs
|
||||
* \param db Handler de base
|
||||
*/
|
||||
function liste_modeles($db)
|
||||
{
|
||||
$type='invoice';
|
||||
$liste=array();
|
||||
$sql ="SELECT nom as id, nom as lib";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."document_model";
|
||||
$sql.=" WHERE type = '".$type."'";
|
||||
$type='invoice';
|
||||
$liste=array();
|
||||
$sql ="SELECT nom as id, nom as lib";
|
||||
$sql.=" FROM ".MAIN_DB_PREFIX."document_model";
|
||||
$sql.=" WHERE type = '".$type."'";
|
||||
|
||||
$resql = $db->query($sql);
|
||||
if ($resql)
|
||||
@ -86,64 +86,64 @@ class ModelePDFFactures extends FPDF
|
||||
}
|
||||
|
||||
/**
|
||||
\class ModeleNumRefFactures
|
||||
\brief Classe mère des modèles de numérotation des références de facture
|
||||
*/
|
||||
\class ModeleNumRefFactures
|
||||
\brief Classe m<EFBFBD>re des mod<EFBFBD>les de num<EFBFBD>rotation des r<EFBFBD>f<EFBFBD>rences de factur
|
||||
*/
|
||||
class ModeleNumRefFactures
|
||||
{
|
||||
var $error='';
|
||||
|
||||
|
||||
/** \brief Return if a module can be used or not
|
||||
* \return boolean true if module can be used
|
||||
*/
|
||||
* \return boolean true if module can be used
|
||||
*/
|
||||
function isEnabled()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/** \brief Renvoi la description par defaut du modele de numérotation
|
||||
* \return string Texte descripif
|
||||
*/
|
||||
/** \brief Renvoi la description par defaut du modele de num<EFBFBD>rotation
|
||||
* \return string Texte descripif
|
||||
*/
|
||||
function info()
|
||||
{
|
||||
global $langs;
|
||||
$langs->load("bills");
|
||||
return $langs->trans("NoDescription");
|
||||
}
|
||||
|
||||
/** \brief Renvoi un exemple de numérotation
|
||||
* \return string Example
|
||||
*/
|
||||
|
||||
/** \brief Renvoi un exemple de num<EFBFBD>rotation
|
||||
* \return string Example
|
||||
*/
|
||||
function getExample()
|
||||
{
|
||||
global $langs;
|
||||
$langs->load("bills");
|
||||
return $langs->trans("NoExample");
|
||||
}
|
||||
|
||||
/** \brief Test si les numéros déjà en vigueur dans la base ne provoquent pas de
|
||||
* de conflits qui empechera cette numérotation de fonctionner.
|
||||
* \return boolean false si conflit, true si ok
|
||||
*/
|
||||
|
||||
/** \brief Test si les num<EFBFBD>ros d<EFBFBD>j<EFBFBD> en vigueur dans la base ne provoquent pas d
|
||||
* de conflits qui empechera cette num<EFBFBD>rotation de fonctionner.
|
||||
* \return boolean false si conflit, true si ok
|
||||
*/
|
||||
function canBeActivated()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
/** \brief Renvoi prochaine valeur attribuée
|
||||
* \param objsoc Objet societe
|
||||
* \param facture Objet facture
|
||||
* \return string Valeur
|
||||
*/
|
||||
|
||||
/** \brief Renvoi prochaine valeur attribu<EFBFBD>e
|
||||
* \param objsoc Objet societe
|
||||
* \param facture Objet facture
|
||||
* \return string Valeur
|
||||
*/
|
||||
function getNextValue($objsoc,$facture)
|
||||
{
|
||||
global $langs;
|
||||
return $langs->trans("NotAvailable");
|
||||
}
|
||||
|
||||
|
||||
/** \brief Renvoi version du module numerotation
|
||||
* \return string Valeur
|
||||
*/
|
||||
* \return string Valeur
|
||||
*/
|
||||
function getVersion()
|
||||
{
|
||||
global $langs;
|
||||
@ -153,19 +153,19 @@ class ModeleNumRefFactures
|
||||
if ($this->version == 'experimental') return $langs->trans("VersionExperimental");
|
||||
if ($this->version == 'dolibarr') return DOL_VERSION;
|
||||
return $langs->trans("NotAvailable");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF
|
||||
\param db objet base de donnée
|
||||
\param id id de la facture à créer
|
||||
\param message message
|
||||
\param modele force le modele à utiliser ('' par defaut)
|
||||
\param outputlangs objet lang a utiliser pour traduction
|
||||
\return int <0 si KO, >0 si OK
|
||||
*/
|
||||
\brief Cree un facture sur disque en fonction du modele de FACTURE_ADDON_PDF
|
||||
\param db objet base de donnee
|
||||
\param id id de la facture a creer
|
||||
\param message message
|
||||
\param modele force le modele a utiliser ('' par defaut)
|
||||
\param outputlangs objet lang a utiliser pour traduction
|
||||
\return int <0 si KO, >0 si OK
|
||||
*/
|
||||
function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
|
||||
{
|
||||
global $conf,$langs;
|
||||
@ -173,7 +173,7 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
|
||||
|
||||
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/";
|
||||
|
||||
// Positionne modele sur le nom du modele à utiliser
|
||||
// Positionne modele sur le nom du modele a utiliser
|
||||
if (! strlen($modele))
|
||||
{
|
||||
if ($conf->global->FACTURE_ADDON_PDF)
|
||||
@ -199,7 +199,7 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
|
||||
|
||||
if ($obj->write_file($id, $outputlangs) > 0)
|
||||
{
|
||||
// Succès de la création de la facture. On génère le fichier meta
|
||||
// Success in building document. We build meta file.
|
||||
facture_meta_create($db, $id);
|
||||
|
||||
// et on supprime l'image correspondant au preview
|
||||
@ -216,17 +216,17 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_print_error('',$langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file));
|
||||
dolibarr_print_error('',$langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file));
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Créé un meta fichier à côté de la facture sur le disque pour faciliter les recherches en texte plein. Pourquoi ? tout simplement parcequ'en fin d'exercice quand je suis avec mon comptable je n'ai pas de connexion internet "rapide" pour retrouver en 2 secondes une facture non payée ou compliquée à gérer ... avec un rgrep c'est vite fait bien fait [eric seigne]
|
||||
\param db Objet base de donnée
|
||||
\param facid Id de la facture à créer
|
||||
\param message Message
|
||||
*/
|
||||
\brief Cr<EFBFBD><EFBFBD> un meta fichier <EFBFBD> c<EFBFBD>t<EFBFBD> de la facture sur le disque pour faciliter les recherches en texte plein. Pourquoi ? tout simplement parcequ'en fin d'exercice quand je suis avec mon comptable je n'ai pas de connexion internet "rapide" pour retrouver en 2 secondes une facture non pay<EFBFBD>e ou compliqu<71>e <20> g<>rer ... avec un rgrep c'est vite fait bien fait [eric seigne
|
||||
\param db Objet base de donn<EFBFBD>e
|
||||
\param facid Id de la facture <EFBFBD> cr<EFBFBD>er
|
||||
\param message Message
|
||||
*/
|
||||
function facture_meta_create($db, $facid, $message="")
|
||||
{
|
||||
global $langs,$conf;
|
||||
@ -234,71 +234,75 @@ function facture_meta_create($db, $facid, $message="")
|
||||
$fac = new Facture($db,"",$facid);
|
||||
$fac->fetch($facid);
|
||||
$fac->fetch_client();
|
||||
|
||||
|
||||
if ($conf->facture->dir_output)
|
||||
{
|
||||
$facref = sanitize_string($fac->ref);
|
||||
$dir = $conf->facture->dir_output . "/" . $facref ;
|
||||
$file = $dir . "/" . $facref . ".meta";
|
||||
|
||||
|
||||
if (! is_dir($dir))
|
||||
{
|
||||
create_exdir($dir);
|
||||
}
|
||||
|
||||
if (is_dir($dir))
|
||||
if (is_dir($dir))
|
||||
{
|
||||
$nblignes = sizeof($fac->lignes);
|
||||
$client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville;
|
||||
$meta = "REFERENCE=\"" . $fac->ref . "\"
|
||||
$nblignes = sizeof($fac->lignes);
|
||||
$client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville;
|
||||
$meta = "REFERENCE=\"" . $fac->ref . "\"
|
||||
DATE=\"" . dolibarr_print_date($fac->date) . "\"
|
||||
NB_ITEMS=\"" . $nblignes . "\"
|
||||
CLIENT=\"" . $client . "\"
|
||||
TOTAL_HT=\"" . $fac->total_ht . "\"
|
||||
TOTAL_TTC=\"" . $fac->total_ttc . "\"\n";
|
||||
|
||||
for ($i = 0 ; $i < $nblignes ; $i++) {
|
||||
//Pour les articles
|
||||
$meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\"
|
||||
for ($i = 0 ; $i < $nblignes ; $i++)
|
||||
{
|
||||
//Pour les articles
|
||||
$meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\"
|
||||
ITEM_" . $i . "_UNIT_PRICE=\"" . $fac->lignes[$i]->price . "\"
|
||||
ITEM_" . $i . "_TVA=\"" .$fac->lignes[$i]->tva_tx . "\"
|
||||
ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n","",nl2br($fac->lignes[$i]->desc)) . "\"
|
||||
";
|
||||
}
|
||||
}
|
||||
$fp = fopen ($file,"w");
|
||||
fputs($fp,$meta);
|
||||
fclose($fp);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
}
|
||||
$fp = fopen ($file,"w");
|
||||
fputs($fp,$meta);
|
||||
fclose($fp);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
\brief Supprime l'image de prévisualitation, pour le cas de régénération de facture
|
||||
\param db objet base de donnée
|
||||
\param facid id de la facture à créer
|
||||
*/
|
||||
\brief Supprime l'image de pr<EFBFBD>visualitation, pour le cas de r<EFBFBD>g<EFBFBD>n<EFBFBD>ration de facture
|
||||
\param db objet base de donn<EFBFBD>e
|
||||
\param facid id de la facture <EFBFBD> cr<EFBFBD>er
|
||||
*/
|
||||
function facture_delete_preview($db, $facid)
|
||||
{
|
||||
global $langs,$conf;
|
||||
global $langs,$conf;
|
||||
|
||||
$fac = new Facture($db,"",$facid);
|
||||
$fac->fetch($facid);
|
||||
$fac = new Facture($db,"",$facid);
|
||||
$fac->fetch($facid);
|
||||
|
||||
if ($conf->facture->dir_output)
|
||||
{
|
||||
$facref = sanitize_string($fac->ref);
|
||||
$dir = $conf->facture->dir_output . "/" . $facref ;
|
||||
$file = $dir . "/" . $facref . ".pdf.png";
|
||||
|
||||
if ( file_exists( $file ) && is_writable( $file ) )
|
||||
if ($conf->facture->dir_output)
|
||||
{
|
||||
$facref = sanitize_string($fac->ref);
|
||||
$dir = $conf->facture->dir_output . "/" . $facref ;
|
||||
$file = $dir . "/" . $facref . ".pdf.png";
|
||||
|
||||
if ( file_exists( $file ) && is_writable( $file ) )
|
||||
{
|
||||
if ( ! unlink($file) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
?>
|
||||
|
||||
@ -412,7 +412,9 @@ class pdf_crabe extends ModelePDFFactures
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@
|
||||
/**
|
||||
\file htdocs/includes/modules/facture/pdf_huitre.modules.php
|
||||
\ingroup facture
|
||||
\brief Fichier de la classe permettant de générer les factures au modèle Huitre
|
||||
\brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le Huitre
|
||||
\author Laurent Destailleur
|
||||
\version $Id$
|
||||
*/
|
||||
@ -33,7 +33,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
|
||||
|
||||
/**
|
||||
\class pdf_huitre
|
||||
\brief Classe permettant de générer les factures au modèle Huitre
|
||||
\brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le Huitre
|
||||
*/
|
||||
|
||||
class pdf_huitre extends ModelePDFFactures
|
||||
@ -42,7 +42,7 @@ class pdf_huitre extends ModelePDFFactures
|
||||
|
||||
|
||||
/** \brief Constructeur
|
||||
\param db handler accès base de donnée
|
||||
\param db handler acc<EFBFBD>s base de donn<EFBFBD>e
|
||||
*/
|
||||
function pdf_huitre($db)
|
||||
{
|
||||
@ -69,23 +69,23 @@ class pdf_huitre extends ModelePDFFactures
|
||||
|
||||
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
|
||||
$this->option_tva = 0; // Gere option tva FACTURE_TVAOPTION
|
||||
$this->option_modereg = 0; // Gere choix mode règlement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
|
||||
$this->option_condreg = 1; // Affiche conditions règlement
|
||||
$this->option_modereg = 0; // Gere choix mode r<EFBFBD>glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
|
||||
$this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
|
||||
$this->option_codeproduitservice = 0; // Affiche code produit-service
|
||||
$this->option_multilang = 1; // Dispo en plusieurs langues
|
||||
$this->option_escompte = 0; // Affiche si il y a eu escompte
|
||||
$this->option_credit_note = 0; // Gère les avoirs
|
||||
$this->option_credit_note = 0; // G<EFBFBD>re les avoirs
|
||||
$this->option_draft_watermark = 1; //Support add of a watermark on drafts
|
||||
|
||||
// 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
|
||||
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Fonction générant la facture sur le disque
|
||||
* \param fac Objet facture à générer (ou id si ancienne methode)
|
||||
* \brief Fonction g<EFBFBD>n<EFBFBD>rant la facture sur le disque
|
||||
* \param fac Objet facture <EFBFBD> g<EFBFBD>n<EFBFBD>rer (ou id si ancienne methode)
|
||||
* \param outputlangs Lang object for output language
|
||||
* \return int 1=ok, 0=ko
|
||||
*/
|
||||
@ -106,7 +106,7 @@ class pdf_huitre extends ModelePDFFactures
|
||||
|
||||
if ($conf->facture->dir_output)
|
||||
{
|
||||
// Définition de l'objet $fac (pour compatibilite ascendante)
|
||||
// D<EFBFBD>finition de l'objet $fac (pour compatibilite ascendante)
|
||||
if (! is_object($fac))
|
||||
{
|
||||
$id = $fac;
|
||||
@ -114,7 +114,7 @@ class pdf_huitre extends ModelePDFFactures
|
||||
$ret=$fac->fetch($id);
|
||||
}
|
||||
|
||||
// Définition de $dir et $file
|
||||
// D<EFBFBD>finition de $dir et $file
|
||||
if ($fac->specimen)
|
||||
{
|
||||
$dir = $conf->facture->dir_output;
|
||||
@ -145,7 +145,7 @@ class pdf_huitre extends ModelePDFFactures
|
||||
$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
|
||||
$pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
@ -271,13 +271,12 @@ class pdf_huitre extends ModelePDFFactures
|
||||
$pdf->SetLineWidth(0.5);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
@ -373,7 +372,7 @@ class pdf_huitre extends ModelePDFFactures
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Affiche le total à payer
|
||||
* \brief Affiche le total <EFBFBD> payer
|
||||
* \param pdf objet PDF
|
||||
* \param fac objet facture
|
||||
*/
|
||||
@ -463,7 +462,7 @@ class pdf_huitre extends ModelePDFFactures
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Affiche en-tête facture
|
||||
* \brief Affiche en-t<EFBFBD>te facture
|
||||
* \param pdf objet PDF
|
||||
* \param fac objet facture
|
||||
*/
|
||||
|
||||
@ -23,8 +23,8 @@
|
||||
/**
|
||||
\file htdocs/includes/modules/facture/pdf_oursin.modules.php
|
||||
\ingroup facture
|
||||
\brief Fichier de la classe permettant de générer les factures au modèle oursin
|
||||
\author Sylvain SCATTOLINI basé sur un modèle de Laurent Destailleur
|
||||
\brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le oursin
|
||||
\author Sylvain SCATTOLINI bas<EFBFBD> sur un mod<EFBFBD>le de Laurent Destailleur
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
|
||||
|
||||
/**
|
||||
\class pdf_oursin
|
||||
\brief Classe permettant de générer les factures au modèle oursin
|
||||
\brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le oursin
|
||||
*/
|
||||
|
||||
class pdf_oursin extends ModelePDFFactures
|
||||
@ -44,7 +44,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
|
||||
/**
|
||||
\brief Constructeur
|
||||
\param db handler accès base de donnée
|
||||
\param db handler acc<EFBFBD>s base de donn<EFBFBD>e
|
||||
*/
|
||||
function pdf_oursin($db)
|
||||
{
|
||||
@ -70,12 +70,12 @@ class pdf_oursin extends ModelePDFFactures
|
||||
|
||||
$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_condreg = 1; // Affiche conditions règlement
|
||||
$this->option_modereg = 1; // Gere choix mode r<EFBFBD>glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
|
||||
$this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
|
||||
$this->option_codeproduitservice = 1; // Affiche code produit-service
|
||||
$this->option_multilang = 1; // Dispo en plusieurs langues
|
||||
$this->option_escompte = 0; // Affiche si il y a eu escompte
|
||||
$this->option_credit_note = 1; // Gère les avoirs
|
||||
$this->option_credit_note = 1; // G<EFBFBD>re les avoirs
|
||||
$this->option_draft_watermark = 1; //Support add of a watermark on drafts
|
||||
|
||||
if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise')
|
||||
@ -83,13 +83,13 @@ class pdf_oursin extends ModelePDFFactures
|
||||
|
||||
// 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
|
||||
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* \brief Fonction générant la facture sur le disque
|
||||
* \param fac Objet facture à générer (ou id si ancienne methode)
|
||||
* \brief Fonction g<EFBFBD>n<EFBFBD>rant la facture sur le disque
|
||||
* \param fac Objet facture <EFBFBD> g<EFBFBD>n<EFBFBD>rer (ou id si ancienne methode)
|
||||
* \param outputlangs Lang object for output language
|
||||
* \return int 1=ok, 0=ko
|
||||
*/
|
||||
@ -110,7 +110,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
|
||||
if ($conf->facture->dir_output)
|
||||
{
|
||||
// Définition de l'objet $fac (pour compatibilite ascendante)
|
||||
// D<EFBFBD>finition de l'objet $fac (pour compatibilite ascendante)
|
||||
if (! is_object($fac))
|
||||
{
|
||||
$id = $fac;
|
||||
@ -122,7 +122,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
$amount_credit_not_included = $fac->getSommeCreditNote();
|
||||
|
||||
|
||||
// Définition de $dir et $file
|
||||
// D<EFBFBD>finition de $dir et $file
|
||||
if ($fac->specimen)
|
||||
{
|
||||
$dir = $conf->facture->dir_output;
|
||||
@ -154,7 +154,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
$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
|
||||
$pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
@ -196,7 +196,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
$codeproduitservice="";
|
||||
$pdf->SetXY ($this->marges['g']+ 1, $curY );
|
||||
if (defined("FACTURE_CODEPRODUITSERVICE") && FACTURE_CODEPRODUITSERVICE) {
|
||||
// Affiche code produit si ligne associée à un code produit
|
||||
// Affiche code produit si ligne associ<EFBFBD>e <20> un code produit
|
||||
|
||||
$prodser = new Product($this->db);
|
||||
|
||||
@ -206,7 +206,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
}
|
||||
}
|
||||
if ($fac->lignes[$i]->date_start && $fac->lignes[$i]->date_end) {
|
||||
// Affichage durée si il y en a une
|
||||
// Affichage dur<EFBFBD>e si il y en a une
|
||||
$codeproduitservice.=" (".$outputlangs->transnoentities("From")." ".dolibarr_print_date($fac->lignes[$i]->date_start)." ".$langs->transnoentities("to")." ".dolibarr_print_date($fac->lignes[$i]->date_end).")";
|
||||
}
|
||||
$pdf->MultiCell(108, 5, $fac->lignes[$i]->desc."$codeproduitservice", 0, 'J');
|
||||
@ -260,7 +260,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
$posy=$this->_tableau_versements($pdf, $fac, $posy, $outputlangs);
|
||||
}
|
||||
|
||||
// Mode de règlement
|
||||
// Mode de r<EFBFBD>glement
|
||||
if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) {
|
||||
$pdf->SetXY ($this->marges['g'], 228);
|
||||
$pdf->SetTextColor(200,0,0);
|
||||
@ -270,7 +270,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
$pdf->SetTextColor(0,0,0);
|
||||
}
|
||||
|
||||
// Propose mode règlement par CHQ
|
||||
// Propose mode r<EFBFBD>glement par CHQ
|
||||
if (defined("FACTURE_CHQ_NUMBER"))
|
||||
{
|
||||
if (FACTURE_CHQ_NUMBER > 0)
|
||||
@ -287,7 +287,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
}
|
||||
}
|
||||
|
||||
// Propose mode règlement par RIB
|
||||
// Propose mode r<EFBFBD>glement par RIB
|
||||
if (defined("FACTURE_RIB_NUMBER"))
|
||||
{
|
||||
if (FACTURE_RIB_NUMBER > 0)
|
||||
@ -334,7 +334,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
}
|
||||
}
|
||||
|
||||
// Conditions de règlements
|
||||
// Conditions de r<EFBFBD>glements
|
||||
if ($fac->cond_reglement_code)
|
||||
{
|
||||
$pdf->SetFont('Arial','B',10);
|
||||
@ -354,7 +354,9 @@ class pdf_oursin extends ModelePDFFactures
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
@ -512,7 +514,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Affiche le total à payer
|
||||
* \brief Affiche le total <EFBFBD> payer
|
||||
* \param pdf objet PDF
|
||||
* \param fac objet facture
|
||||
* \param deja_regle montant deja regle
|
||||
@ -617,7 +619,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
}
|
||||
|
||||
/*
|
||||
* \brief Affiche en-tête facture
|
||||
* \brief Affiche en-t<EFBFBD>te facture
|
||||
* \param pdf objet PDF
|
||||
* \param fac objet facture
|
||||
*/
|
||||
@ -705,7 +707,7 @@ class pdf_oursin extends ModelePDFFactures
|
||||
$pdf->MultiCell(80, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L');
|
||||
}
|
||||
|
||||
// Caractéristiques emetteur
|
||||
// Caract<EFBFBD>ristiques emetteur
|
||||
$pdf->SetFont('Arial','',9);
|
||||
if (defined("FAC_PDF_ADRESSE"))
|
||||
{
|
||||
|
||||
@ -315,7 +315,9 @@ class pdf_soleil extends ModelePDFFicheinter
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -20,7 +20,7 @@
|
||||
/**
|
||||
\file htdocs/includes/modules/mailings/peche.modules.php
|
||||
\ingroup mailing
|
||||
\brief Fichier de la classe permettant de générer la liste de destinataires Peche
|
||||
\brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer la liste de destinataires Peche
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
@ -29,13 +29,13 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'
|
||||
|
||||
/**
|
||||
\class mailing_pomme
|
||||
\brief Classe permettant de générer la liste des destinataires Pomme
|
||||
\brief Classe permettant de g<EFBFBD>n<EFBFBD>rer la liste des destinataires Pomme
|
||||
*/
|
||||
|
||||
class mailing_peche extends MailingTargets
|
||||
{
|
||||
var $name='EmailsFromFile'; // Identifiant du module mailing
|
||||
var $desc='EMails issus d\'un fichier'; // Libellé utilisé si aucune traduction pour MailingModuleDescXXX ou XXX=name trouvée
|
||||
var $desc='EMails issus d\'un fichier'; // Libell<EFBFBD> utilis<69> si aucune traduction pour MailingModuleDescXXX ou XXX=name trouv<75>e
|
||||
var $require_module=array(); // Module mailing actif si modules require_module actifs
|
||||
var $require_admin=1; // Module mailing actif pour user admin ou non
|
||||
var $picto='generic';
|
||||
@ -99,7 +99,7 @@ class mailing_peche extends MailingTargets
|
||||
|
||||
/**
|
||||
* \brief Ajoute destinataires dans table des cibles
|
||||
* \param mailing_id Id du mailing concerné
|
||||
* \param mailing_id Id du mailing concern<EFBFBD>
|
||||
* \param filterarray Requete sql de selection des destinataires
|
||||
* \return int < 0 si erreur, nb ajout si ok
|
||||
*/
|
||||
@ -123,7 +123,8 @@ class mailing_peche extends MailingTargets
|
||||
|
||||
//$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
|
||||
//print_r($_FILES);
|
||||
$handle = @fopen($upload_dir . "/" . $_FILES['username']['name'], "r");
|
||||
$file=$upload_dir . "/" . $_FILES['username']['name'];
|
||||
$handle = @fopen($file, "r");
|
||||
if ($handle)
|
||||
{
|
||||
$i = 0;
|
||||
@ -165,6 +166,7 @@ class mailing_peche extends MailingTargets
|
||||
}
|
||||
}
|
||||
fclose($handle);
|
||||
|
||||
if ($i > 0)
|
||||
{
|
||||
return -$i;
|
||||
|
||||
@ -340,6 +340,7 @@ class modTelephonie extends DolibarrModules
|
||||
}
|
||||
}
|
||||
fclose($fp);
|
||||
|
||||
}
|
||||
|
||||
//print "<tr><td>Creation de la table $name/td>";
|
||||
|
||||
@ -397,7 +397,9 @@ class pdf_propale_azur extends ModelePDFPropales
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
|
||||
@ -270,7 +270,9 @@ class pdf_propale_jaune extends ModelePDFPropales
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1;
|
||||
}
|
||||
|
||||
@ -16,28 +16,26 @@
|
||||
* 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$
|
||||
*/
|
||||
|
||||
/**
|
||||
\file htdocs/includes/modules/rapport/pdf_paiement.class.php
|
||||
\ingroup banque
|
||||
\brief Fichier de la classe permettant de générer les rapports de paiement
|
||||
\version $Revision$
|
||||
\brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les rapports de paiement
|
||||
\version $Id$
|
||||
*/
|
||||
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
|
||||
|
||||
|
||||
/**
|
||||
\class pdf_paiement
|
||||
\brief Classe permettant de générer les rapports de paiement
|
||||
\brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les rapports de paiement
|
||||
*/
|
||||
class pdf_paiement extends FPDF
|
||||
{
|
||||
/**
|
||||
\brief Constructeur
|
||||
\param db handler accès base de donnée
|
||||
\param db handler acc<EFBFBD>s base de donn<EFBFBD>e
|
||||
*/
|
||||
function pdf_paiement($db)
|
||||
{
|
||||
@ -160,14 +158,20 @@ class pdf_paiement extends FPDF
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Fonction générant le rapport sur le disque
|
||||
\brief Fonction generant le rapport sur le disque
|
||||
\param _dir repertoire
|
||||
\param month mois du rapport
|
||||
\param year annee du rapport
|
||||
*/
|
||||
function write_file($_dir, $month, $year)
|
||||
function write_file($_dir, $month, $year, $outputlangs='')
|
||||
{
|
||||
global $langs;
|
||||
global $user,$langs,$conf;
|
||||
|
||||
if (! is_object($outputlangs)) $outputlangs=$langs;
|
||||
// Force output charset to ISO, because FPDF expect text to be encoded in ISO
|
||||
$outputlangs->charset_output=$outputlangs->character_set_client='ISO-8859-1';
|
||||
|
||||
$outputlangs->setPhpLang();
|
||||
|
||||
$this->month=$month;
|
||||
$this->year=$year;
|
||||
@ -194,7 +198,7 @@ class pdf_paiement extends FPDF
|
||||
$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
|
||||
$pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
|
||||
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
|
||||
}
|
||||
else
|
||||
@ -256,7 +260,7 @@ class pdf_paiement extends FPDF
|
||||
|
||||
if ($pages == 0)
|
||||
{
|
||||
// force à générer au moins une page si le rapport ne contient aucune ligne
|
||||
// force to build at least one page if report has no line
|
||||
$pages = 1;
|
||||
}
|
||||
/*
|
||||
@ -275,6 +279,11 @@ class pdf_paiement extends FPDF
|
||||
$this->Body($pdf, 1, $lines);
|
||||
|
||||
$pdf->Output($_file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
$langs->setPhpLang(); // On restaure langue session
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -266,6 +266,9 @@ class CMailFile
|
||||
fputs($fp, $this->eol); // This eol is added by the mail function, so we add it in log
|
||||
fputs($fp, $this->message);
|
||||
fclose($fp);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -82,22 +82,22 @@ function check_mail ($mail)
|
||||
function unaccent_isostring($str)
|
||||
{
|
||||
$translation = array(
|
||||
"\xE0" => "a",
|
||||
"\xE1" => "a",
|
||||
"\xE2" => "a",
|
||||
"\xE8" => "e",
|
||||
"\xE9" => "e",
|
||||
"\xEA" => "e",
|
||||
"\xEB" => "e",
|
||||
"\xEE" => "i",
|
||||
"\xEF" => "i",
|
||||
"\xF4" => "o",
|
||||
"\xF6" => "o",
|
||||
"\xFB" => "u",
|
||||
"\xFC" => "u"
|
||||
"\xE0" => "a",
|
||||
"\xE1" => "a",
|
||||
"\xE2" => "a",
|
||||
"\xE8" => "e",
|
||||
"\xE9" => "e",
|
||||
"\xEA" => "e",
|
||||
"\xEB" => "e",
|
||||
"\xEE" => "i",
|
||||
"\xEF" => "i",
|
||||
"\xF4" => "o",
|
||||
"\xF6" => "o",
|
||||
"\xFB" => "u",
|
||||
"\xFC" => "u"
|
||||
);
|
||||
|
||||
return str_replace(array_keys($translation), array_values($translation), $str);
|
||||
return str_replace(array_keys($translation), array_values($translation), $str);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -185,6 +185,7 @@ function dolibarr_syslog($message, $level=LOG_INFO)
|
||||
|
||||
fwrite($file,$message."\n");
|
||||
fclose($file);
|
||||
// This is for log file, we do not change permissions
|
||||
|
||||
// If enable html log tag enabled and url parameter log defined, we show output log on HTML comments
|
||||
if (! empty($conf->global->MAIN_ENABLE_LOG_HTML) && ! empty($_GET["log"]))
|
||||
@ -300,7 +301,7 @@ function dolibarr_set_user_page_param($db, &$user, $url='', $tab)
|
||||
|
||||
$db->begin();
|
||||
|
||||
// On efface anciens param<61>tres pour toutes les cl<63> dans $tab
|
||||
// On efface anciens param<61>tres pour toutes les cl<63> dans $ta
|
||||
$sql = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
|
||||
$sql.= " WHERE fk_user = ".$user->id;
|
||||
if ($url) $sql.=" AND page='".$url."'";
|
||||
@ -456,10 +457,10 @@ function dolibarr_print_date($time,$format='',$to_gmt=false,$convtooutput=true)
|
||||
// Date is a timestamps
|
||||
$ret=adodb_strftime($format,$time,$to_gmt);
|
||||
}
|
||||
|
||||
|
||||
// Page code for text from strftime functions
|
||||
$pagecodefrom='ISO-8859-1';
|
||||
|
||||
|
||||
return ($convtooutput?$langs->convToOuptutCharset($ret,$pagecodefrom):$ret);
|
||||
}
|
||||
|
||||
@ -760,7 +761,7 @@ function dol_phone_link($phone,$option=0)
|
||||
function dolibarr_trunc($string,$size=40,$trunc='right')
|
||||
{
|
||||
global $conf;
|
||||
|
||||
|
||||
if ($size==0) return $string;
|
||||
if (! defined('USE_SHORT_TITLE') || (defined('USE_SHORT_TITLE') && USE_SHORT_TITLE))
|
||||
{
|
||||
@ -771,9 +772,9 @@ function dolibarr_trunc($string,$size=40,$trunc='right')
|
||||
//print $conf->character_set_client.'-'.mb_strlen($string).'-'.strlen($string);
|
||||
//print 'ee'.$string.$size.mb_strcut($string,0,$size,'UTF-8').'rr';
|
||||
if (strlen($string) > $size)
|
||||
return substr($string,0,$size).'...';
|
||||
return substr($string,0,$size).'...';
|
||||
else
|
||||
return $string;
|
||||
return $string;
|
||||
}
|
||||
if ($trunc == 'middle')
|
||||
{
|
||||
@ -1384,12 +1385,12 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
|
||||
else if (! empty($feature2)) // This should be used for future changes
|
||||
{
|
||||
if (empty($user->rights->$feature->$feature2->lire)
|
||||
&& empty($user->rights->$feature->$feature2->read)) $readok=0;
|
||||
&& empty($user->rights->$feature->$feature2->read)) $readok=0;
|
||||
}
|
||||
else if (! empty($feature)) // This is for old permissions
|
||||
{
|
||||
if (empty($user->rights->$feature->lire)
|
||||
&& empty($user->rights->$feature->read)) $readok=0;
|
||||
if (empty($user->rights->$feature->lire)
|
||||
&& empty($user->rights->$feature->read)) $readok=0;
|
||||
}
|
||||
if (! $readok) accessforbidden();
|
||||
//print "Read access is ok";
|
||||
@ -1425,12 +1426,12 @@ function restrictedArea($user, $feature='societe', $objectid=0, $dbtablename='',
|
||||
else if (! empty($feature2)) // This should be used for future changes
|
||||
{
|
||||
if (empty($user->rights->$feature->$feature2->creer)
|
||||
&& empty($user->rights->$feature->$feature2->write)) $createok=0;
|
||||
&& empty($user->rights->$feature->$feature2->write)) $createok=0;
|
||||
}
|
||||
else if (! empty($feature)) // This is for old permissions
|
||||
{
|
||||
if (empty($user->rights->$feature->creer)
|
||||
&& empty($user->rights->$feature->write)) $createok=0;
|
||||
if (empty($user->rights->$feature->creer)
|
||||
&& empty($user->rights->$feature->write)) $createok=0;
|
||||
}
|
||||
if (! $createok) accessforbidden();
|
||||
//print "Write access is ok";
|
||||
@ -1684,8 +1685,8 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite)
|
||||
// Move file
|
||||
$return=move_uploaded_file($src_file, $file_name);
|
||||
if ($return)
|
||||
{
|
||||
if (! empty($conf->global->MAIN_UMASK)) @chmod($file_name, $conf->global->MAIN_UMASK);
|
||||
{
|
||||
if (! empty($conf->global->MAIN_UMASK)) @chmod($file_name, octdec($conf->global->MAIN_UMASK));
|
||||
dolibarr_syslog("Functions.lib::dol_move_uploaded_file Success to move ".$src_file." to ".$file_name." - Umask=".$conf->global->MAIN_UMASK, LOG_DEBUG);
|
||||
return 1;
|
||||
}
|
||||
@ -2001,7 +2002,7 @@ function print_fleche_navigation($page,$file,$options='',$nextpage,$betweenarrow
|
||||
* \param rate Rate value to format (19.6 19,6 19.6% 19,6%,...)
|
||||
* \param foundpercent Add a percent % sign in output
|
||||
* \param info_bits Miscellanous information on vat
|
||||
* \return string Chaine avec montant format<EFBFBD> (19,6 ou 19,6% ou 8.5% *)
|
||||
* \return string Chaine avec montant format<EFBFBD> (19,6 ou 19,6% ou 8.5% *
|
||||
*/
|
||||
function vatrate($rate,$addpercent=false,$info_bits=0)
|
||||
{
|
||||
@ -2109,7 +2110,7 @@ function price2num($amount,$rounding='',$alreadysqlnb=-1)
|
||||
$dec=','; $thousand=' ';
|
||||
if ($langs->trans("SeparatorDecimal") != "SeparatorDecimal") $dec=$langs->trans("SeparatorDecimal");
|
||||
if ($langs->trans("SeparatorThousand")!= "SeparatorThousand") $thousand=$langs->trans("SeparatorThousand");
|
||||
|
||||
|
||||
//print 'x'.$dec.$thousand.'-';
|
||||
if ($alreadysqlnb != 1) // If not a PHP number or unknown, we change format
|
||||
{
|
||||
@ -2157,8 +2158,8 @@ function get_product_vat_for_country($idprod, $countrycode)
|
||||
\remarks Si vendeur non assujeti a TVA, TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
|
||||
Si le (pays vendeur = pays acheteur) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<EFBFBD>faut=0 (La TVA doit <EFBFBD>tre pay<EFBFBD> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle
|
||||
Sinon TVA propos<EFBFBD>e par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
|
||||
\param societe_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse
|
||||
\param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse
|
||||
@ -2190,7 +2191,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<>faut=0 (La TVA doit <20>tre pay<61> par l'acheteur au centre d'impots de son pays et non au vendeur). Fin de r<>gle.
|
||||
// Non g<>r<EFBFBD>
|
||||
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle.
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<>faut=TVA du produit vendu. Fin de r<>gle
|
||||
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && ! $societe_acheteuse->tva_intra)
|
||||
{
|
||||
if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code);
|
||||
@ -2198,7 +2199,7 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
|
||||
return $taux_produit;
|
||||
}
|
||||
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA intra) alors TVA par d<>faut=0. Fin de r<>gle.
|
||||
// Si (vendeur et acheteur dans Communaut<75> europ<6F>enne) et (acheteur = entreprise avec num TVA intra) alors TVA par d<>faut=0. Fin de r<>gle
|
||||
if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && $societe_acheteuse->tva_intra)
|
||||
{
|
||||
return 0;
|
||||
@ -2215,8 +2216,8 @@ function get_default_tva($societe_vendeuse, $societe_acheteuse, $taux_produit, $
|
||||
\remarks Si vendeur non assujeti a TVA, TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
|
||||
Si le (pays vendeur = pays acheteur) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (bien vendu = moyen de transports neuf comme auto, bateau, avion) alors TVA par d<EFBFBD>faut=0 (La TVA doit <EFBFBD>tre pay<EFBFBD> par acheteur au centre d'impots de son pays et non au vendeur). Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = particulier ou entreprise sans num TVA intra) alors TVA par d<EFBFBD>faut=TVA du produit vendu. Fin de r<EFBFBD>gle
|
||||
Si (vendeur et acheteur dans Communaut<EFBFBD> europ<EFBFBD>enne) et (acheteur = entreprise avec num TVA) intra alors TVA par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle
|
||||
Sinon TVA propos<EFBFBD>e par d<EFBFBD>faut=0. Fin de r<EFBFBD>gle.
|
||||
\param societe_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse
|
||||
\param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse
|
||||
@ -2289,7 +2290,7 @@ function departement_rowid($db,$code, $pays_id)
|
||||
}
|
||||
|
||||
/**
|
||||
\brief Renvoi un chemin de classement r<EFBFBD>pertoire en fonction d'un id
|
||||
\brief Renvoi un chemin de classement r<EFBFBD>pertoire en fonction d'un i
|
||||
\remarks Examples: 1->"0/0/1/", 15->"0/1/5/"
|
||||
\param $num Id a d<EFBFBD>composer
|
||||
\param $level Niveau de decoupage (1, 2 ou 3 niveaux)
|
||||
@ -2311,6 +2312,8 @@ function get_exdir($num,$level=3)
|
||||
*/
|
||||
function create_exdir($dir)
|
||||
{
|
||||
global $conf;
|
||||
|
||||
dolibarr_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO);
|
||||
|
||||
if (@is_dir($dir)) return 0;
|
||||
@ -2332,21 +2335,24 @@ function create_exdir($dir)
|
||||
{
|
||||
if (! @is_dir($ccdir))
|
||||
{
|
||||
dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' does not exists or is outside open_basedir PHP setting.",LOG_DEBUG);
|
||||
dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' does not exists or is outside open_basedir PHP setting.",LOG_DEBUG);
|
||||
|
||||
umask(0);
|
||||
if (! @mkdir($ccdir, 0755))
|
||||
{
|
||||
// Si le is_dir a renvoye une fausse info, alors on passe ici.
|
||||
dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING);
|
||||
$nberr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' created",LOG_DEBUG);
|
||||
$nberr=0; // On remet a zero car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
|
||||
$nbcreated++;
|
||||
}
|
||||
umask(0);
|
||||
$dirmaskdec=octdec('0755');
|
||||
if (! empty($conf->global->MAIN_UMASK)) $dirmaskdec=octdec($conf->global->MAIN_UMASK);
|
||||
$dirmaskdec |= octdec('0110');
|
||||
if (! @mkdir($ccdir, $dirmaskdec))
|
||||
{
|
||||
// Si le is_dir a renvoye une fausse info, alors on passe ici.
|
||||
dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING);
|
||||
$nberr++;
|
||||
}
|
||||
else
|
||||
{
|
||||
dolibarr_syslog("functions.lib::create_exdir: Directory '".$ccdir."' created",LOG_DEBUG);
|
||||
$nberr=0; // On remet a zero car si on arrive ici, cela veut dire que les <20>checs pr<70>c<EFBFBD>dents peuvent etre ignor<6F>s
|
||||
$nbcreated++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -3007,7 +3013,7 @@ function is_emtpy_folder($folder){
|
||||
return true;
|
||||
else
|
||||
return false;
|
||||
|
||||
|
||||
closedir($handle);
|
||||
}
|
||||
else
|
||||
|
||||
@ -597,10 +597,8 @@ class Ldap
|
||||
{
|
||||
fputs($fp, $content);
|
||||
fclose($fp);
|
||||
// We change mod to allow file to be overwritten if dump is launched
|
||||
// from command line or a web session.
|
||||
// 0666 = rw-rw-rw-
|
||||
if (! empty($conf->global->MAIN_UMASK)) @chmod($file, $conf->global->MAIN_UMASK);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
|
||||
@ -38,7 +38,7 @@ function makesalt($type=CRYPT_SALT_LENGTH)
|
||||
{
|
||||
case 12: // 8 + 4
|
||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||
case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilisé)
|
||||
case 8: // 8 + 4 (Pour compatibilite, ne devrait pas etre utilis<EFBFBD>)
|
||||
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
|
||||
case 2: // 2
|
||||
default: // by default, fall back on Standard DES (should work everywhere)
|
||||
@ -89,10 +89,14 @@ function encodedecode_dbpassconf($level=0)
|
||||
}
|
||||
fclose($fp);
|
||||
|
||||
if ($fp = @fopen(DOL_DOCUMENT_ROOT.'/conf/conf.php','w'))
|
||||
$file=DOL_DOCUMENT_ROOT.'/conf/conf.php';
|
||||
if ($fp = @fopen($file,'w'))
|
||||
{
|
||||
fputs($fp, $config, strlen($config));
|
||||
fclose($fp);
|
||||
// It's config file, so we set permission for creator only
|
||||
// @chmod($file, octdec('0600'));
|
||||
|
||||
return 1;
|
||||
}
|
||||
else
|
||||
@ -109,9 +113,9 @@ function encodedecode_dbpassconf($level=0)
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Encode une chaine de caractére
|
||||
* \param chaine chaine de caractères a encoder
|
||||
* \return string_coded chaine de caractères encodée
|
||||
* \brief Encode une chaine de caract<EFBFBD>re
|
||||
* \param chaine chaine de caract<EFBFBD>res a encoder
|
||||
* \return string_coded chaine de caract<EFBFBD>res encod<EFBFBD>e
|
||||
*/
|
||||
function dol_encode($chain)
|
||||
{
|
||||
@ -125,9 +129,9 @@ function dol_encode($chain)
|
||||
}
|
||||
|
||||
/**
|
||||
* \brief Decode une chaine de caractére
|
||||
* \param chain chaine de caractéres a decoder
|
||||
* \return string_coded chaine de caractéres decodée
|
||||
* \brief Decode une chaine de caract<EFBFBD>re
|
||||
* \param chain chaine de caract<EFBFBD>res a decoder
|
||||
* \return string_coded chaine de caract<EFBFBD>res decod<EFBFBD>e
|
||||
*/
|
||||
function dol_decode($chain)
|
||||
{
|
||||
|
||||
@ -201,6 +201,8 @@ function build_calfile($format='vcal',$title,$desc,$events_array,$outputfile,$fi
|
||||
fwrite($calfileh,"END:VCALENDAR");
|
||||
|
||||
fclose($calfileh);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -312,11 +314,8 @@ function build_rssfile($format='rss',$title,$desc,$events_array,$outputfile,$fil
|
||||
fwrite($fichier, '</rss>');
|
||||
|
||||
fclose($fichier);
|
||||
|
||||
// We change mod to allow file to be overwritten if dump is launched
|
||||
// from command line or a web session.
|
||||
// 0666 = rw-rw-rw-
|
||||
if (! empty($conf->global->MAIN_UMASK)) @chmod($fichier, $conf->global->MAIN_UMASK);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -50,7 +50,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "sirocco";
|
||||
$this->description = "Modele de bon de réception livraison simple";
|
||||
$this->description = "Modele de bon de r<EFBFBD>ception livraison simple";
|
||||
|
||||
// Dimension page pour format A4
|
||||
$this->type = 'pdf';
|
||||
@ -64,7 +64,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
|
||||
|
||||
// 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
|
||||
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
|
||||
|
||||
$this->error = "";
|
||||
}
|
||||
@ -250,6 +250,9 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
|
||||
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
|
||||
|
||||
$pdf->Output($file);
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
@ -55,7 +55,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
|
||||
$this->db = $db;
|
||||
$this->name = "typhon";
|
||||
$this->description = "Modele de bon de réception livraison complet (logo...)";
|
||||
$this->description = "Modele de bon de r<EFBFBD>ception livraison complet (logo...)";
|
||||
|
||||
// Dimension page pour format A4
|
||||
$this->type = 'pdf';
|
||||
@ -76,7 +76,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
|
||||
// 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
|
||||
if (! $this->emetteur->pays_code) $this->emetteur->pays_code=substr($langs->defaultlang,-2); // Par defaut, si n'<EFBFBD>tait pas d<>fini
|
||||
|
||||
$this->tva=array();
|
||||
|
||||
@ -321,7 +321,9 @@ class pdf_typhon extends ModelePDFDeliveryOrder
|
||||
$pdf->Close();
|
||||
|
||||
$pdf->Output($file);
|
||||
|
||||
if (! empty($conf->global->MAIN_UMASK))
|
||||
@chmod($file, octdec($conf->global->MAIN_UMASK));
|
||||
|
||||
return 1; // Pas d'erreur
|
||||
}
|
||||
else
|
||||
|
||||
Loading…
Reference in New Issue
Block a user