Add option to set mask on new files

This commit is contained in:
Laurent Destailleur 2008-10-21 21:27:20 +00:00
parent 1ca8c0975f
commit 6a259176a4
31 changed files with 1206 additions and 1130 deletions

View File

@ -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$');
}
?>
?>

View File

@ -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$');
}
?>
?>

View File

@ -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
{

View File

@ -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;
}
}

View File

@ -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
{

View File

@ -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));
}
}
?>

View File

@ -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));

View File

@ -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";

View File

@ -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;
}
}
}
?>

View File

@ -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 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);
}
}

View File

@ -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;

View File

@ -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;
}

View File

@ -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

View File

@ -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

View File

@ -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;
}
}
}
}
}
?>

View File

@ -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
}

View File

@ -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
*/

View File

@ -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"))
{

View File

@ -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;
}

View File

@ -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;

View File

@ -340,6 +340,7 @@ class modTelephonie extends DolibarrModules
}
}
fclose($fp);
}
//print "<tr><td>Creation de la table $name/td>";

View File

@ -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
}

View File

@ -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;
}

View File

@ -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;
}
}

View File

@ -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));
}
}

View File

@ -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

View File

@ -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

View File

@ -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)
{

View File

@ -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));
}
}

View File

@ -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;
}
}

View File

@ -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