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 \file htdocs/adherents/cartes/carte.php
\ingroup adherent \ingroup adherent
\brief Page de creation d'une carte PDF \brief Page de creation d'une carte PDF
\version $Id$ \version $Id$
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.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 // liste des patterns remplacable dans le texte a imprimer
$patterns = array ( $patterns = array (
'/%PRENOM%/', '/%PRENOM%/',
'/%NOM%/', '/%NOM%/',
'/%SERVEUR%/', '/%SERVEUR%/',
'/%SOCIETE%/', '/%SOCIETE%/',
'/%ADRESSE%/', '/%ADRESSE%/',
'/%CP%/', '/%CP%/',
'/%VILLE%/', '/%VILLE%/',
'/%PAYS%/', '/%PAYS%/',
'/%EMAIL%/', '/%EMAIL%/',
'/%NAISS%/', '/%NAISS%/',
'/%PHOTO%/', '/%PHOTO%/',
'/%TYPE%/', '/%TYPE%/',
'/%ID%/', '/%ID%/',
'/%ANNEE%/' '/%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 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_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); $pdf = new PDF_card('CARD', 1, 1);
@ -64,8 +64,8 @@ $pdf->AddPage();
// Choix de l'annee d'impression ou annee courante. // Choix de l'annee d'impression ou annee courante.
if (!isset($annee)){ if (!isset($annee)){
$now = getdate(); $now = getdate();
$annee=$now['year']; $annee=$now['year'];
} }
// requete en prenant que les adherents a jour de cotisation // requete en prenant que les adherents a jour de cotisation
@ -81,39 +81,40 @@ $sql.= " ORDER BY d.rowid ASC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$num = $db->num_rows($result); $num = $db->num_rows($result);
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
// attribut a remplacer // attribut a remplacer
$replace = array ( $replace = array (
ucfirst(strtolower($objp->prenom)), ucfirst(strtolower($objp->prenom)),
strtoupper($objp->nom), strtoupper($objp->nom),
"http://".$_SERVER["SERVER_NAME"]."/", "http://".$_SERVER["SERVER_NAME"]."/",
$objp->societe, $objp->societe,
ucwords(strtolower($objp->adresse)), ucwords(strtolower($objp->adresse)),
$objp->cp, $objp->cp,
strtoupper($objp->ville), strtoupper($objp->ville),
ucfirst(strtolower($objp->pays)), ucfirst(strtolower($objp->pays)),
$objp->email, $objp->email,
$objp->naiss, $objp->naiss,
$objp->photo, $objp->photo,
$objp->type, $objp->type,
$objp->rowid, $objp->rowid,
$annee $annee
); );
// imprime le texte specifique sur la carte // 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),
$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_HEADER_TEXT), preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_FOOTER_TEXT));
preg_replace ($patterns, $replace, $conf->global->ADHERENT_CARD_FOOTER_TEXT)); $i++;
$i++; }
}
$db->close(); $db->close();
$pdf->Output();
// Output to http strem
$pdf->Output();
} }
else else
{ {

View File

@ -16,17 +16,14 @@
* You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* $Id$
* $Source$
*/ */
/** /**
\file htdocs/adherents/cartes/etiquette.php \file htdocs/adherents/cartes/etiquette.php
\ingroup adherent \ingroup adherent
\brief Page de creation d'etiquettes \brief Page de creation d'etiquettes
\version $Revision$ \version $Id$
*/ */
require("./pre.inc.php"); require("./pre.inc.php");
require_once(DOL_DOCUMENT_ROOT."/adherents/adherent.class.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 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_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); //$pdf = new PDF_card('CARD', 1, 1);
if (defined("ADHERENT_ETIQUETTE_TYPE") && ADHERENT_ETIQUETTE_TYPE !=''){ 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{ }else{
$pdf = new PDF_card('L7163', 1, 1); $pdf = new PDF_card('L7163', 1, 1);
} }
$pdf->Open(); $pdf->Open();
@ -54,8 +51,8 @@ $pdf->AddPage();
// Choix de l'annee d'impression ou annee courante. // Choix de l'annee d'impression ou annee courante.
if (!isset($annee)){ if (!isset($annee)){
$now = getdate(); $now = getdate();
$annee=$now['year']; $annee=$now['year'];
} }
// requete en prenant que les adherents a jour de cotisation // requete en prenant que les adherents a jour de cotisation
@ -71,18 +68,20 @@ $sql.= " ORDER BY d.rowid ASC";
$result = $db->query($sql); $result = $db->query($sql);
if ($result) if ($result)
{ {
$num = $db->num_rows(); $num = $db->num_rows();
$i = 0; $i = 0;
while ($i < $num) while ($i < $num)
{ {
$objp = $db->fetch_object($result); $objp = $db->fetch_object($result);
// imprime le texte specifique sur la carte // 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))),'',''); $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++; $i++;
} }
$db->close(); $db->close();
$pdf->Output();
// Output to http strem
$pdf->Output();
} }
else else
{ {

View File

@ -169,6 +169,9 @@ if ($what == 'mysql')
if ($compression == 'none') fclose($handle); if ($compression == 'none') fclose($handle);
if ($compression == 'gz') gzclose($handle); if ($compression == 'gz') gzclose($handle);
if ($compression == 'bz') bzclose($handle); if ($compression == 'bz') bzclose($handle);
if (! empty($conf->global->MAIN_UMASK))
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
} }
else else
{ {

View File

@ -110,7 +110,7 @@ class CommActionRapport
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du proprié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); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -138,6 +138,8 @@ class CommActionRapport
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; return 1;
} }

View File

@ -94,8 +94,17 @@ if ($_POST["action"] == "builddoc" && $user->rights->facture->lire)
// enregistre le fichier pdf concatene // enregistre le fichier pdf concatene
$filename=sanitize_string(strtolower($langs->transnoentities("Unpayed"))); $filename=sanitize_string(strtolower($langs->transnoentities("Unpayed")));
if ($option=='late') $filename.='_'.sanitize_string(strtolower($langs->transnoentities("Late"))); if ($option=='late') $filename.='_'.sanitize_string(strtolower($langs->transnoentities("Late")));
if ($pagecount) $pdf->Output($diroutputpdf.'/'.$filename.'_'.dolibarr_print_date(mktime(),'dayhourlog').'.pdf'); if ($pagecount)
else $mesg='<div class="error">'.$langs->trans('NoPDFAvailableForChecked').'</div>'; {
$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 else
{ {

View File

@ -21,47 +21,47 @@
*/ */
/** /**
\file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php \file htdocs/compta/paiement/cheque/pdf/pdf_blochet.class.php
\ingroup banque \ingroup banque
\brief Fichier de la classe permettant de générer les bordereau de remise de cheque \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les bordereau de remise de cheque
\version $Revision$ \version $Revision$
*/ */
/** /**
\class BordereauChequeBlochet \class BordereauChequeBlochet
\brief Classe permettant de générer les bordereau de remise de cheque \brief Classe permettant de g<EFBFBD>n<EFBFBD>rer les bordereau de remise de cheque
*/ */
class BordereauChequeBlochet class BordereauChequeBlochet
{ {
var $emetteur; // Objet societe qui emet var $emetteur; // Objet societe qui emet
/** /**
\brief Constructeur \brief Constructeur
*/ */
function BordereauChequeBlochet($db) function BordereauChequeBlochet($db)
{ {
global $conf,$langs,$mysoc; global $conf,$langs,$mysoc;
$langs->load("main"); $langs->load("main");
$langs->load("bills"); $langs->load("bills");
$this->db = $db; $this->db = $db;
$this->name = "blochet"; $this->name = "blochet";
$this->description = $langs->transnoentities("CheckReceipt"); $this->description = $langs->transnoentities("CheckReceipt");
$this->tab_top = 60; $this->tab_top = 60;
// Dimension page pour format A4 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
$this->page_largeur = 210; $this->page_largeur = 210;
$this->page_hauteur = 297; $this->page_hauteur = 297;
$this->format = array($this->page_largeur,$this->page_hauteur); $this->format = array($this->page_largeur,$this->page_hauteur);
$this->marge_gauche=10; $this->marge_gauche=10;
$this->marge_droite=20; $this->marge_droite=20;
$this->marge_haute=10; $this->marge_haute=10;
$this->marge_basse=10; $this->marge_basse=10;
$this->line_height = 5; $this->line_height = 5;
$this->line_per_page = 25; $this->line_per_page = 25;
@ -74,7 +74,7 @@ class BordereauChequeBlochet
\param pdf pdf object \param pdf pdf object
\param page current page number \param page current page number
\param pages number of pages \param pages number of pages
*/ */
function Header(&$pdf, $page, $pages) function Header(&$pdf, $page, $pages)
{ {
global $langs; global $langs;
@ -120,7 +120,7 @@ class BordereauChequeBlochet
$pdf->line(170, 47, 170, 54); $pdf->line(170, 47, 170, 54);
$pdf->SetFont('Arial','',10); $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->SetFont('Arial','B',10);
$pdf->Text(57, 52, $this->nbcheque); $pdf->Text(57, 52, $this->nbcheque);
@ -192,11 +192,11 @@ class BordereauChequeBlochet
} }
} }
/** /**
\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 _dir repertoire
\param month mois du rapport \param month mois du rapport
\param year annee du rapport \param year annee du rapport
*/ */
function write_file($_dir, $number) function write_file($_dir, $number)
{ {
global $langs; global $langs;
@ -216,23 +216,23 @@ class BordereauChequeBlochet
$month = sprintf("%02d",$month); $month = sprintf("%02d",$month);
$year = sprintf("%04d",$year); $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 // Protection et encryption du pdf
if ($conf->global->PDF_SECURITY_ENCRYPTION) if ($conf->global->PDF_SECURITY_ENCRYPTION)
{ {
require_once(FPDFI_PATH.'fpdi_protection.php'); require_once(FPDFI_PATH.'fpdi_protection.php');
$pdf = new FPDI_Protection('P','mm','A4'); $pdf = new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<72>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
{ {
require_once(FPDFI_PATH.'fpdi.php'); require_once(FPDFI_PATH.'fpdi.php');
$pdf=new FPDI('P','mm',$this->format); $pdf=new FPDI('P','mm',$this->format);
} }
$pdf->Open(); $pdf->Open();
@ -246,7 +246,7 @@ class BordereauChequeBlochet
if ($pages == 0) 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; $pages = 1;
} }
@ -257,6 +257,8 @@ class BordereauChequeBlochet
$this->Body($pdf, 1); $this->Body($pdf, 1);
$pdf->Output($_file); $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 \file htdocs/bon-prelevement.class.php
\ingroup prelevement \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$ \version $Revision$
*/ */
@ -129,7 +129,7 @@ class BonPrelevement
if ($concat == 1) if ($concat == 1)
{ {
/* /*
* On aggrège les lignes * On aggr<EFBFBD>ge les lignes
*/ */
$sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes"; $sql = "SELECT rowid FROM ".MAIN_DB_PREFIX."prelevement_lignes";
$sql .= " WHERE fk_prelevement_bons".$this->id; $sql .= " WHERE fk_prelevement_bons".$this->id;
@ -150,7 +150,7 @@ class BonPrelevement
else else
{ {
/* /*
* Pas de d'agrégation * Pas de d'agr<EFBFBD>gation
*/ */
$sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_lignes (fk_prelevement_bons"; $sql = "INSERT INTO ".MAIN_DB_PREFIX."prelevement_lignes (fk_prelevement_bons";
$sql .= " , fk_soc , client_nom "; $sql .= " , fk_soc , client_nom ";
@ -237,7 +237,7 @@ class BonPrelevement
} }
else else
{ {
dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retournée"); dolibarr_syslog("BonPrelevement::Fetch Erreur aucune ligne retourn<EFBFBD>e");
return -1; return -1;
} }
} }
@ -279,7 +279,7 @@ class BonPrelevement
for ($i = 0 ; $i < sizeof($facs) ; $i++) 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]); dolibarr_syslog("BonPrelevement::set_credite set_payed fac ".$facs[$i]);
$fac = new Facture($this->db); $fac = new Facture($this->db);
$fac->fetch($facs[$i]); $fac->fetch($facs[$i]);
@ -302,7 +302,7 @@ class BonPrelevement
} }
/* /*
* Fin de la procédure * Fin de la proc<EFBFBD>dure
* *
*/ */
if ($error == 0) if ($error == 0)
@ -352,10 +352,10 @@ class BonPrelevement
if ($this->db->query($sql)) if ($this->db->query($sql))
{ {
$subject = "Crédit prélèvement ".$this->ref." à la banque"; $subject = "Cr<EFBFBD>dit pr<70>l<EFBFBD>vement ".$this->ref." <20> la banque";
$message = "Le bon de prélèvement ".$this->ref; $message = "Le bon de pr<EFBFBD>l<EFBFBD>vement ".$this->ref;
$message .= " a été crédité par la banque.\n"; $message .= " a <EFBFBD>t<EFBFBD> cr<63>dit<69> par la banque.\n";
$message .= "Date crédit : ".dolibarr_print_date($date,'dayhour'); $message .= "Date cr<EFBFBD>dit : ".dolibarr_print_date($date,'dayhour');
$this->Notify($user, "cr", $subject, $message); $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) if ($error == 0)
@ -421,12 +421,12 @@ class BonPrelevement
{ {
$this->method_trans = $method; $this->method_trans = $method;
$subject = "Transmission du prélèvement ".$this->ref." à la banque"; $subject = "Transmission du pr<EFBFBD>l<EFBFBD>vement ".$this->ref." <20> la banque";
$message = "Le bon de prélèvement ".$this->ref; $message = "Le bon de pr<EFBFBD>l<EFBFBD>vement ".$this->ref;
$message .= " a été transmis à la banque par ".$user->prenom. " ".$user->nom; $message .= " a <EFBFBD>t<EFBFBD> transmis <20> la banque par ".$user->prenom. " ".$user->nom;
$message .= "\n\n"; $message .= "\n\n";
$message .= "\nMontant : ".price($this->amount); $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'); $message .= "\nDate : ".dolibarr_print_date($date,'day');
$this->Notify($user,"tr", $subject, $message, 1); $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) if ($error == 0)
@ -470,7 +470,7 @@ class BonPrelevement
function Notify($user, $action, $subject, $message, $joinfile=0) function Notify($user, $action, $subject, $message, $joinfile=0)
{ {
$message .= "\n\n--\n"; $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 = "SELECT u.name, u.firstname, u.email";
$sql .= " FROM ".MAIN_DB_PREFIX."user as u"; $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() function _get_list_factures()
{ {
$arr = array(); $arr = array();
/* /*
* Renvoie toutes les factures présente * Renvoie toutes les factures pr<EFBFBD>sente
* dans un bon de prélèvement * dans un bon de pr<EFBFBD>l<EFBFBD>vement
*/ */
$sql = "SELECT fk_facture"; $sql = "SELECT fk_facture";
$sql .= " FROM ".MAIN_DB_PREFIX."prelevement_bons as p"; $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 banque bank
* \param agence agence * \param agence agence
* \return int <O si erreur, sinon nbre de factures * \return int <O si erreur, sinon nbre de factures
@ -645,7 +645,7 @@ class BonPrelevement
/** /**
* \brief Cree prelevement * \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) function Create($banque=0, $guichet=0)
{ {
@ -693,7 +693,7 @@ class BonPrelevement
$sql .= " AND f.paye = 0"; $sql .= " AND f.paye = 0";
$sql .= " AND pfd.traite = 0"; $sql .= " AND pfd.traite = 0";
$sql .= " AND f.total_ttc > 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) if ($banque == 1)
{ {
@ -718,7 +718,7 @@ class BonPrelevement
$i++; $i++;
} }
$this->db->free($resql); $this->db->free($resql);
dolibarr_syslog("$i factures à prélever"); dolibarr_syslog("$i factures <EFBFBD> pr<70>lever");
} }
else else
{ {
@ -737,11 +737,11 @@ class BonPrelevement
if (! $error) if (! $error)
{ {
/* /*
* Vérification des RIB * V<EFBFBD>rification des RIB
* *
*/ */
$i = 0; $i = 0;
dolibarr_syslog("Début vérification des RIB"); dolibarr_syslog("D<EFBFBD>but v<>rification des RIB");
if (sizeof($factures) > 0) if (sizeof($factures) > 0)
{ {
@ -769,7 +769,7 @@ class BonPrelevement
} }
else else
{ {
dolibarr_syslog("Impossible de lire la société"); dolibarr_syslog("Impossible de lire la soci<EFBFBD>t<EFBFBD>");
} }
} }
else 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) if (sizeof($factures_prev) > 0)
{ {
@ -855,7 +855,7 @@ class BonPrelevement
else else
{ {
$error++; $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) 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)); dolibarr_syslog("Nombre de factures ".sizeof($factures_prev));
if (sizeof($factures_prev) > 0) if (sizeof($factures_prev) > 0)
@ -880,7 +880,7 @@ class BonPrelevement
$pai->amounts = array(); $pai->amounts = array();
$pai->amounts[$fac[0]] = $fact->total_ttc; $pai->amounts[$fac[0]] = $fact->total_ttc;
$pai->datepaye = $this->db->idate($datetimeprev); $pai->datepaye = $this->db->idate($datetimeprev);
$pai->paiementid = 3; // prélèvement $pai->paiementid = 3; // pr<EFBFBD>l<EFBFBD>vement
$pai->num_paiement = $ref; $pai->num_paiement = $ref;
if ($pai->create($user, 1) == -1) // on appelle en no_commit if ($pai->create($user, 1) == -1) // on appelle en no_commit
@ -896,7 +896,7 @@ class BonPrelevement
$pai->valide(); $pai->valide();
/* /*
* Ajout d'une ligne de prélèvement * Ajout d'une ligne de pr<EFBFBD>l<EFBFBD>vement
* *
* *
* $fac[3] : banque * $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"; $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) if (! $resql)
{ {
$error++; $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() function Generate()
{ {
global $conf;
$result = -1; $result = -1;
$this->file = fopen ($this->filename,"w"); $this->file = fopen ($this->filename,"w");
@ -1160,6 +1162,8 @@ class BonPrelevement
$this->EnregTotal($this->total); $this->EnregTotal($this->total);
fclose($this->file); fclose($this->file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($this->file, octdec($conf->global->MAIN_UMASK));
return $result; return $result;
} }
@ -1173,13 +1177,13 @@ class BonPrelevement
function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount) function EnregDestinataire($rowid, $client_nom, $rib_banque, $rib_guichet, $rib_number, $amount)
{ {
fputs ($this->file, "06"); 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, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance)); fputs ($this->file, strftime("%d%m", $this->date_echeance));
@ -1193,7 +1197,7 @@ class BonPrelevement
fputs ($this->file, substr(" ",0,24)); fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2 // Zone R<EFBFBD>serv<EFBFBD>e D2
fputs ($this->file, substr(" ",0,8)); fputs ($this->file, substr(" ",0,8));
@ -1211,16 +1215,16 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$montant, -16)); 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("*".$this->ref.$rowid." ",0,13));
fputs ($this->file, substr(" ",0,18)); fputs ($this->file, substr(" ",0,18));
// Code établissement G1 // Code <EFBFBD>tablissement G1
fputs ($this->file, $rib_banque); fputs ($this->file, $rib_banque);
// Zone Réservée G2 // Zone R<EFBFBD>serv<EFBFBD>e G2
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));
@ -1236,13 +1240,13 @@ class BonPrelevement
function EnregDestinataireVersion1($fac) function EnregDestinataireVersion1($fac)
{ {
fputs ($this->file, "06"); 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, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance)); fputs ($this->file, strftime("%d%m", $this->date_echeance));
@ -1252,11 +1256,11 @@ class BonPrelevement
fputs ($this->file, substr($fac->client->nom. " ",0,24)); 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)); fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2 // Zone R<EFBFBD>serv<EFBFBD>e D2
fputs ($this->file, substr(" ",0,8)); fputs ($this->file, substr(" ",0,8));
@ -1274,16 +1278,16 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$montant, -16)); fputs ($this->file, substr("000000000000000".$montant, -16));
// Libellé F // Libell<EFBFBD> F
fputs ($this->file, substr("*".$fac->ref." ",0,13)); fputs ($this->file, substr("*".$fac->ref." ",0,13));
fputs ($this->file, substr(" ",0,18)); fputs ($this->file, substr(" ",0,18));
// Code établissement G1 // Code <EFBFBD>tablissement G1
fputs ($this->file, $fac->client->bank_account->code_banque); 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)); fputs ($this->file, substr(" ",0,5));
@ -1297,13 +1301,13 @@ class BonPrelevement
function EnregEmetteur() function EnregEmetteur()
{ {
fputs ($this->file, "03"); 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, " ");
fputs ($this->file, strftime("%d%m", $this->date_echeance)); fputs ($this->file, strftime("%d%m", $this->date_echeance));
@ -1313,15 +1317,15 @@ class BonPrelevement
fputs ($this->file, substr($this->raison_sociale. " ",0,24)); 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)); 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)); 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, substr(" ",0,2));
fputs ($this->file, "E"); fputs ($this->file, "E");
@ -1335,19 +1339,19 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$this->emetteur_numero_compte, -11)); 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)); fputs ($this->file, substr(" ",0,16));
// Zone Réservée F // Zone R<EFBFBD>serv<EFBFBD>e F
fputs ($this->file, substr(" ",0,31)); fputs ($this->file, substr(" ",0,31));
// Code établissement // Code <EFBFBD>tablissement
fputs ($this->file, $this->emetteur_code_etablissement); 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)); fputs ($this->file, substr(" ",0,5));
@ -1362,13 +1366,13 @@ class BonPrelevement
function EnregTotal($total) function EnregTotal($total)
{ {
fputs ($this->file, "08"); 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)); fputs ($this->file, substr(" ",0,12));
@ -1381,7 +1385,7 @@ class BonPrelevement
fputs ($this->file, substr(" ",0,24)); fputs ($this->file, substr(" ",0,24));
// Zone Réservée D2 // Zone R<EFBFBD>serv<EFBFBD>e D2
fputs ($this->file, substr(" ",0,8)); fputs ($this->file, substr(" ",0,8));
@ -1399,15 +1403,15 @@ class BonPrelevement
fputs ($this->file, substr("000000000000000".$montant, -16)); 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)); fputs ($this->file, substr(" ",0,31));
// Code établissement // Code <EFBFBD>tablissement
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));
// Zone Réservée F // Zone R<EFBFBD>serv<EFBFBD>e F
fputs ($this->file, substr(" ",0,5)); fputs ($this->file, substr(" ",0,5));

View File

@ -238,6 +238,7 @@ class Conf
// Module adherent // Module adherent
$this->adherent->enabled=defined("MAIN_MODULE_ADHERENT")?MAIN_MODULE_ADHERENT:0; $this->adherent->enabled=defined("MAIN_MODULE_ADHERENT")?MAIN_MODULE_ADHERENT:0;
$this->adherent->dir_output=DOL_DATA_ROOT."/adherent"; $this->adherent->dir_output=DOL_DATA_ROOT."/adherent";
$this->adherent->dir_tmp=DOL_DATA_ROOT."/adherent/temp";
// Module produit // Module produit
$this->produit->enabled=defined("MAIN_MODULE_PRODUIT")?MAIN_MODULE_PRODUIT:0; $this->produit->enabled=defined("MAIN_MODULE_PRODUIT")?MAIN_MODULE_PRODUIT:0;
$this->produit->dir_output=DOL_DATA_ROOT."/produit"; $this->produit->dir_output=DOL_DATA_ROOT."/produit";

View File

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

View File

@ -22,7 +22,7 @@
/** /**
* \file htdocs/fourn/commande/modules/pdf_muscadet.modules.php * \file htdocs/fourn/commande/modules/pdf_muscadet.modules.php
* \ingroup fournisseur * \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 * \author Regis Houssin
* \version $Id$ * \version $Id$
*/ */
@ -35,14 +35,14 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
* \class pdf_muscadet * \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 class pdf_muscadet extends ModelePDFSuppliersOrders
{ {
/** /**
* \brief Constructeur * \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) function pdf_muscadet($db)
{ {
@ -53,7 +53,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$this->db = $db; $this->db = $db;
$this->name = "muscadet"; $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 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
@ -67,8 +67,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$this->option_logo = 1; // Affiche logo $this->option_logo = 1; // Affiche logo
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Affiche mode règlement $this->option_modereg = 1; // Affiche mode r<EFBFBD>glement
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
@ -77,7 +77,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $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 // Defini position des colonnes
$this->posxdesc=$this->marge_gauche+1; $this->posxdesc=$this->marge_gauche+1;
@ -93,8 +93,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
/** /**
\brief Renvoi dernière erreur \brief Renvoi derni<EFBFBD>re erreur
\return string Dernière erreur \return string Derni<EFBFBD>re erreur
*/ */
function pdferror() function pdferror()
{ {
@ -102,8 +102,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
/** /**
\brief Fonction générant la commande sur le disque \brief Fonction g<EFBFBD>n<EFBFBD>rant la commande sur le disque
\param id Id de la commande à générer \param id Id de la commande <EFBFBD> g<EFBFBD>n<EFBFBD>rer
\return int 1=ok, 0=ko \return int 1=ok, 0=ko
*/ */
function write_file($com,$outputlangs='') function write_file($com,$outputlangs='')
@ -125,7 +125,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
if ($conf->fournisseur->commande->dir_output) 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)) if (! is_object($com))
{ {
$id = $com; $id = $com;
@ -134,7 +134,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
} }
$deja_regle = ""; $deja_regle = "";
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($com->specimen) if ($com->specimen)
{ {
$dir = $conf->fournisseur->commande->dir_output; $dir = $conf->fournisseur->commande->dir_output;
@ -167,7 +167,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -210,7 +210,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
{ {
$tab_top = 88; $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->SetXY ($this->posxdesc-1, $tab_top);
$pdf->MultiCell(190, 3, $com->note_public, 0, 'J'); $pdf->MultiCell(190, 3, $com->note_public, 0, 'J');
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
@ -244,22 +244,22 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
if ($libelleproduitservice) $libelleproduitservice.="<br>"; if ($libelleproduitservice) $libelleproduitservice.="<br>";
$libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1); $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) if ($com->lignes[$i]->fk_product)
{ {
$libelleproduitservice=$outputlangs->transnoentities("Product")." ".$com->lignes[$i]->ref_fourn." - ".$libelleproduitservice; $libelleproduitservice=$outputlangs->transnoentities("Product")." ".$com->lignes[$i]->ref_fourn." - ".$libelleproduitservice;
} }
if ($com->lignes[$i]->date_start && $com->lignes[$i]->date_end) 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); $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->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(); $nexY = $pdf->GetY();
@ -271,7 +271,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetXY ($this->posxup, $curY); $pdf->SetXY ($this->posxup, $curY);
$pdf->MultiCell(18, 4, price($com->lignes[$i]->subprice), 0, 'R', 0); $pdf->MultiCell(18, 4, price($com->lignes[$i]->subprice), 0, 'R', 0);
// Quantité // Quantit<EFBFBD>
$pdf->SetXY ($this->posxqty, $curY); $pdf->SetXY ($this->posxqty, $curY);
$pdf->MultiCell(10, 4, $com->lignes[$i]->qty, 0, 'R'); $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)) 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")) if (defined("FACTURE_CHQ_NUMBER"))
@ -358,7 +358,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetXY ($this->marge_gauche, 227); $pdf->SetXY ($this->marge_gauche, 227);
$pdf->SetFont('Arial','B',8); $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->SetXY ($this->marge_gauche, 231);
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$pdf->MultiCell(80, 3, $account->adresse_proprio, 0, 'L', 0); $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")) if (defined("FACTURE_RIB_NUMBER"))
@ -382,7 +382,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$cury=242; $cury=242;
$pdf->SetXY ($this->marges['g'], $cury); $pdf->SetXY ($this->marges['g'], $cury);
$pdf->SetFont('Arial','B',8); $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; $cury+=4;
$pdf->SetFont('Arial','B',6); $pdf->SetFont('Arial','B',6);
$pdf->line($this->marges['g']+1, $cury, $this->marges['g']+1, $cury+10 ); $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->MultiCell(18, 3, "Code guichet", 0, 'C', 0);
$pdf->line($this->marges['g']+36, $cury, $this->marges['g']+36, $cury+10 ); $pdf->line($this->marges['g']+36, $cury, $this->marges['g']+36, $cury+10 );
$pdf->SetXY ($this->marges['g']+36, $cury); $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->line($this->marges['g']+60, $cury, $this->marges['g']+60, $cury+10 );
$pdf->SetXY ($this->marges['g']+60, $cury); $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->line($this->marges['g']+73, $cury, $this->marges['g']+73, $cury+10 );
$pdf->SetFont('Arial','',8); $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->SetFont('Arial','B',10);
$pdf->SetXY($this->marge_gauche, 217); $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->MultiCell(80, 5, $titre, 0, 'L');
$pdf->SetFont('Arial','',10); $pdf->SetFont('Arial','',10);
$pdf->SetXY(54, 217); $pdf->SetXY(54, 217);
@ -443,6 +443,8 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }
@ -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 pdf Objet PDF
* \param object Objet order * \param object Objet order
* \param deja_regle Montant deja regle * \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->MultiCell($largcol2, $tab2_hl, "-".$object->remise_percent."%", 0, 'R', 1);
$pdf->SetXY ($col1x, $tab2_top + $tab2_hl * 2); $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->SetXY ($col2x, $tab2_top + $tab2_hl * 2);
$pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 0); $pdf->MultiCell($largcol2, $tab2_hl, price($object->total_ht), 0, 'R', 0);
@ -515,7 +517,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$index = 0; $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); $pdf->SetFillColor(248,248,248);
foreach( $this->tva as $tvakey => $tvaval ) foreach( $this->tva as $tvakey => $tvaval )
@ -599,7 +601,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
{ {
global $conf; 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->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie)); $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'); 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'); else $pdf->MultiCell(80, 4, $mysoc->nom, 0, 'L');
// Caractéristiques emetteur // Caract<EFBFBD>ristiques emetteur
$carac_emetteur = ''; $carac_emetteur = '';
if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE;
else { else {
@ -769,7 +771,7 @@ class pdf_muscadet extends ModelePDFSuppliersOrders
$pdf->SetFont('Arial','B',11); $pdf->SetFont('Arial','B',11);
$pdf->MultiCell(106,4, $object->client->nom, 0, 'L'); $pdf->MultiCell(106,4, $object->client->nom, 0, 'L');
// Caractéristiques client // Caract<EFBFBD>ristiques client
$carac_client=$object->client->adresse; $carac_client=$object->client->adresse;
$carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n"; $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; 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->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; return 1;
} }

View File

@ -22,7 +22,7 @@
/** /**
\file htdocs/includes/modules/commande/pdf_einstein.modules.php \file htdocs/includes/modules/commande/pdf_einstein.modules.php
\ingroup commande \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 \author Laurent Destailleur
\version $Id$ \version $Id$
*/ */
@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
\class pdf_einstein \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 class pdf_einstein extends ModelePDFCommandes
@ -44,7 +44,7 @@ class pdf_einstein extends ModelePDFCommandes
/** /**
\brief Constructeur \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) function pdf_einstein($db)
{ {
@ -69,12 +69,12 @@ class pdf_einstein extends ModelePDFCommandes
$this->option_logo = 1; // Affiche logo $this->option_logo = 1; // Affiche logo
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION $this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION
$this->option_modereg = 1; // Affiche mode règlement $this->option_modereg = 1; // Affiche mode r<EFBFBD>glement
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 1; // Affiche si il y a eu escompte $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_freetext = 1; // Support add of a personalised text
$this->option_draft_watermark = 1; //Support add of a watermark on drafts $this->option_draft_watermark = 1; //Support add of a watermark on drafts
@ -83,7 +83,7 @@ class pdf_einstein extends ModelePDFCommandes
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $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 // Defini position des colonnes
$this->posxdesc=$this->marge_gauche+1; $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 * \brief Fonction g<EFBFBD>n<EFBFBD>rant la commande sur le disque
* \param com Objet commande à générer * \param com Objet commande <EFBFBD> g<EFBFBD>n<EFBFBD>rer
* \param outputlangs Lang object for output language * \param outputlangs Lang object for output language
* \return int 1=ok, 0=ko * \return int 1=ok, 0=ko
*/ */
@ -123,7 +123,7 @@ class pdf_einstein extends ModelePDFCommandes
if ($conf->commande->dir_output) 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)) if (! is_object($com))
{ {
$id = $com; $id = $com;
@ -132,7 +132,7 @@ class pdf_einstein extends ModelePDFCommandes
} }
$deja_regle = ""; $deja_regle = "";
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($com->specimen) if ($com->specimen)
{ {
$dir = $conf->commande->dir_output; $dir = $conf->commande->dir_output;
@ -164,7 +164,7 @@ class pdf_einstein extends ModelePDFCommandes
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -208,7 +208,7 @@ class pdf_einstein extends ModelePDFCommandes
{ {
$tab_top = 88; $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->SetXY ($this->posxdesc-1, $tab_top);
$pdf->MultiCell(190, 3, $com->note_public, 0, 'J'); $pdf->MultiCell(190, 3, $com->note_public, 0, 'J');
$nexY = $pdf->GetY(); $nexY = $pdf->GetY();
@ -251,7 +251,7 @@ class pdf_einstein extends ModelePDFCommandes
$libelleproduitservice.=dol_htmlentitiesbr($com->lignes[$i]->desc,1); $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) if ($com->lignes[$i]->fk_product)
{ {
$prodser = new Product($this->db); $prodser = new Product($this->db);
@ -282,7 +282,7 @@ class pdf_einstein extends ModelePDFCommandes
// Description // Description
$pdf->writeHTMLCell($this->posxtva-$this->posxdesc-1, 3, $this->posxdesc-1, $curY, $libelleproduitservice, 0, 1); $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(); $nexY = $pdf->GetY();
@ -322,9 +322,9 @@ class pdf_einstein extends ModelePDFCommandes
// cherche nombre de lignes a venir pour savoir si place suffisante // cherche nombre de lignes a venir pour savoir si place suffisante
if ($i < ($nblignes - 1)) // If it's not last line 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; $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); $nblineFollowDesc = (num_lines($follow_descproduitservice,52)*4);
} }
else // If it's last line else // If it's last line
@ -388,6 +388,8 @@ class pdf_einstein extends ModelePDFCommandes
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur
@ -612,7 +614,7 @@ class pdf_einstein extends ModelePDFCommandes
$index = 0; $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); $pdf->SetFillColor(248,248,248);
foreach( $this->tva as $tvakey => $tvaval ) foreach( $this->tva as $tvakey => $tvaval )
@ -699,7 +701,7 @@ class pdf_einstein extends ModelePDFCommandes
{ {
global $conf; 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->SetTextColor(0,0,0);
$pdf->SetFont('Arial','',8); $pdf->SetFont('Arial','',8);
$titre = $outputlangs->transnoentities("AmountInCurrency",$outputlangs->transnoentities("Currency".$conf->monnaie)); $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 pdf Objet PDF
* \param com Objet commande * \param com Objet commande
* \param showadress 0=non, 1=oui * \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'); 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'); else $pdf->MultiCell(80, 4, $this->emetteur->nom, 0, 'L');
// Caractéristiques emetteur // Caract<EFBFBD>ristiques emetteur
$carac_emetteur = ''; $carac_emetteur = '';
if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE; if (defined("FAC_PDF_ADRESSE") && FAC_PDF_ADRESSE) $carac_emetteur .= ($carac_emetteur ? "\n" : '' ).FAC_PDF_ADRESSE;
else { else {
@ -915,7 +917,7 @@ class pdf_einstein extends ModelePDFCommandes
// Nom client // Nom client
$carac_client = "\n".$object->contact->getFullName($outputlangs,1,1); $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->adresse;
$carac_client.="\n".$object->contact->cp . " " . $object->contact->ville."\n"; $carac_client.="\n".$object->contact->cp . " " . $object->contact->ville."\n";
//Pays si different de l'emetteur //Pays si different de l'emetteur
@ -931,19 +933,19 @@ class pdf_einstein extends ModelePDFCommandes
$pdf->SetFont('Arial','B',11); $pdf->SetFont('Arial','B',11);
$pdf->MultiCell(96,4, $object->client->nom, 0, 'L'); $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'); $arrayidcontact = $object->getIdContact('external','CUSTOMER');
if (sizeof($arrayidcontact) > 0) if (sizeof($arrayidcontact) > 0)
{ {
$object->fetch_contact($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) ) if( !preg_match('#'.$object->contact->getFullName($outputlangs,1).'#isU',$object->client->nom) )
{ {
$carac_client .= "\n".$object->contact->getFullName($outputlangs,1,1); $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->adresse;
$carac_client.="\n".$object->client->cp . " " . $object->client->ville."\n"; $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"; $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; if ($object->client->tva_intra) $carac_client.="\n".$outputlangs->transnoentities("VATIntraShort").': '.$object->client->tva_intra;
$pdf->SetFont('Arial','',9); $pdf->SetFont('Arial','',9);
$posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline name $posy=$pdf->GetY()-9; //Auto Y coord readjust for multiline name

View File

@ -130,6 +130,8 @@ class html_cerfafr extends ModeleDon
$handle=fopen($file,"w"); $handle=fopen($file,"w");
fwrite($handle,$html); fwrite($handle,$html);
fclose($handle); fclose($handle);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; return 1;
} }

View File

@ -21,30 +21,30 @@
*/ */
/** /**
\file htdocs/includes/modules/facture/modules_facture.php \file htdocs/includes/modules/facture/modules_facture.php
\ingroup facture \ingroup facture
\brief Fichier contenant la classe mère de generation des factures en PDF \brief Fichier contenant la classe m<EFBFBD>re de generation des factures en PDF
et la classe mère de numérotation des factures et la classe m<EFBFBD>re de num<EFBFBD>rotation des factures
\version $Id$ \version $Id$
*/ */
require_once(DOL_DOCUMENT_ROOT.'/lib/functions.lib.php'); 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.'/includes/fpdf/fpdfi/fpdi_protection.php');
require_once(DOL_DOCUMENT_ROOT."/product.class.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 \class ModelePDFFactures
\brief Classe mère des modèles de facture \brief Classe m<EFBFBD>re des mod<EFBFBD>les de facture
*/ */
class ModelePDFFactures extends FPDF class ModelePDFFactures extends FPDF
{ {
var $error=''; 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() 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 * \param db Handler de base
*/ */
function liste_modeles($db) function liste_modeles($db)
{ {
$type='invoice'; $type='invoice';
$liste=array(); $liste=array();
$sql ="SELECT nom as id, nom as lib"; $sql ="SELECT nom as id, nom as lib";
$sql.=" FROM ".MAIN_DB_PREFIX."document_model"; $sql.=" FROM ".MAIN_DB_PREFIX."document_model";
$sql.=" WHERE type = '".$type."'"; $sql.=" WHERE type = '".$type."'";
$resql = $db->query($sql); $resql = $db->query($sql);
if ($resql) if ($resql)
@ -86,24 +86,24 @@ class ModelePDFFactures extends FPDF
} }
/** /**
\class ModeleNumRefFactures \class ModeleNumRefFactures
\brief Classe mère des modèles de numérotation des références de facture \brief Classe m<EFBFBD>re des mod<EFBFBD>les de num<EFBFBD>rotation des r<EFBFBD>f<EFBFBD>rences de factur
*/ */
class ModeleNumRefFactures class ModeleNumRefFactures
{ {
var $error=''; var $error='';
/** \brief Return if a module can be used or not /** \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() function isEnabled()
{ {
return true; return true;
} }
/** \brief Renvoi la description par defaut du modele de numérotation /** \brief Renvoi la description par defaut du modele de num<EFBFBD>rotation
* \return string Texte descripif * \return string Texte descripif
*/ */
function info() function info()
{ {
global $langs; global $langs;
@ -111,9 +111,9 @@ class ModeleNumRefFactures
return $langs->trans("NoDescription"); return $langs->trans("NoDescription");
} }
/** \brief Renvoi un exemple de numérotation /** \brief Renvoi un exemple de num<EFBFBD>rotation
* \return string Example * \return string Example
*/ */
function getExample() function getExample()
{ {
global $langs; global $langs;
@ -121,20 +121,20 @@ class ModeleNumRefFactures
return $langs->trans("NoExample"); return $langs->trans("NoExample");
} }
/** \brief Test si les numéros déjà en vigueur dans la base ne provoquent pas de /** \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érotation de fonctionner. * de conflits qui empechera cette num<EFBFBD>rotation de fonctionner.
* \return boolean false si conflit, true si ok * \return boolean false si conflit, true si ok
*/ */
function canBeActivated() function canBeActivated()
{ {
return true; return true;
} }
/** \brief Renvoi prochaine valeur attribuée /** \brief Renvoi prochaine valeur attribu<EFBFBD>e
* \param objsoc Objet societe * \param objsoc Objet societe
* \param facture Objet facture * \param facture Objet facture
* \return string Valeur * \return string Valeur
*/ */
function getNextValue($objsoc,$facture) function getNextValue($objsoc,$facture)
{ {
global $langs; global $langs;
@ -142,8 +142,8 @@ class ModeleNumRefFactures
} }
/** \brief Renvoi version du module numerotation /** \brief Renvoi version du module numerotation
* \return string Valeur * \return string Valeur
*/ */
function getVersion() function getVersion()
{ {
global $langs; global $langs;
@ -158,14 +158,14 @@ class ModeleNumRefFactures
/** /**
\brief Crée un facture sur disque en fonction du modèle de FACTURE_ADDON_PDF \brief Cree un facture sur disque en fonction du modele de FACTURE_ADDON_PDF
\param db objet base de donnée \param db objet base de donnee
\param id id de la facture à créer \param id id de la facture a creer
\param message message \param message message
\param modele force le modele à utiliser ('' par defaut) \param modele force le modele a utiliser ('' par defaut)
\param outputlangs objet lang a utiliser pour traduction \param outputlangs objet lang a utiliser pour traduction
\return int <0 si KO, >0 si OK \return int <0 si KO, >0 si OK
*/ */
function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='') function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
{ {
global $conf,$langs; global $conf,$langs;
@ -173,7 +173,7 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
$dir = DOL_DOCUMENT_ROOT . "/includes/modules/facture/"; $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 (! strlen($modele))
{ {
if ($conf->global->FACTURE_ADDON_PDF) 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) 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); facture_meta_create($db, $id);
// et on supprime l'image correspondant au preview // et on supprime l'image correspondant au preview
@ -216,17 +216,17 @@ function facture_pdf_create($db, $id, $message='', $modele='', $outputlangs='')
} }
else 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; 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] \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ée \param db Objet base de donn<EFBFBD>e
\param facid Id de la facture à créer \param facid Id de la facture <EFBFBD> cr<EFBFBD>er
\param message Message \param message Message
*/ */
function facture_meta_create($db, $facid, $message="") function facture_meta_create($db, $facid, $message="")
{ {
global $langs,$conf; global $langs,$conf;
@ -246,59 +246,63 @@ function facture_meta_create($db, $facid, $message="")
create_exdir($dir); create_exdir($dir);
} }
if (is_dir($dir)) if (is_dir($dir))
{ {
$nblignes = sizeof($fac->lignes); $nblignes = sizeof($fac->lignes);
$client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville; $client = $fac->client->nom . " " . $fac->client->adresse . " " . $fac->client->cp . " " . $fac->client->ville;
$meta = "REFERENCE=\"" . $fac->ref . "\" $meta = "REFERENCE=\"" . $fac->ref . "\"
DATE=\"" . dolibarr_print_date($fac->date) . "\" DATE=\"" . dolibarr_print_date($fac->date) . "\"
NB_ITEMS=\"" . $nblignes . "\" NB_ITEMS=\"" . $nblignes . "\"
CLIENT=\"" . $client . "\" CLIENT=\"" . $client . "\"
TOTAL_HT=\"" . $fac->total_ht . "\" TOTAL_HT=\"" . $fac->total_ht . "\"
TOTAL_TTC=\"" . $fac->total_ttc . "\"\n"; TOTAL_TTC=\"" . $fac->total_ttc . "\"\n";
for ($i = 0 ; $i < $nblignes ; $i++) { for ($i = 0 ; $i < $nblignes ; $i++)
//Pour les articles {
$meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\" //Pour les articles
$meta .= "ITEM_" . $i . "_QUANTITY=\"" . $fac->lignes[$i]->qty . "\"
ITEM_" . $i . "_UNIT_PRICE=\"" . $fac->lignes[$i]->price . "\" ITEM_" . $i . "_UNIT_PRICE=\"" . $fac->lignes[$i]->price . "\"
ITEM_" . $i . "_TVA=\"" .$fac->lignes[$i]->tva_tx . "\" ITEM_" . $i . "_TVA=\"" .$fac->lignes[$i]->tva_tx . "\"
ITEM_" . $i . "_DESCRIPTION=\"" . str_replace("\r\n","",nl2br($fac->lignes[$i]->desc)) . "\" 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 \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ée \param db objet base de donn<EFBFBD>e
\param facid id de la facture à créer \param facid id de la facture <EFBFBD> cr<EFBFBD>er
*/ */
function facture_delete_preview($db, $facid) function facture_delete_preview($db, $facid)
{ {
global $langs,$conf; global $langs,$conf;
$fac = new Facture($db,"",$facid); $fac = new Facture($db,"",$facid);
$fac->fetch($facid); $fac->fetch($facid);
if ($conf->facture->dir_output) 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 ) )
{ {
$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) ) if ( ! unlink($file) )
{ {
return 0; return 0;
} }
}
} }
}
} }
?> ?>

View File

@ -412,6 +412,8 @@ class pdf_crabe extends ModelePDFFactures
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur

View File

@ -22,7 +22,7 @@
/** /**
\file htdocs/includes/modules/facture/pdf_huitre.modules.php \file htdocs/includes/modules/facture/pdf_huitre.modules.php
\ingroup facture \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 \author Laurent Destailleur
\version $Id$ \version $Id$
*/ */
@ -33,7 +33,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
\class pdf_huitre \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 class pdf_huitre extends ModelePDFFactures
@ -42,7 +42,7 @@ class pdf_huitre extends ModelePDFFactures
/** \brief Constructeur /** \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) function pdf_huitre($db)
{ {
@ -69,23 +69,23 @@ class pdf_huitre extends ModelePDFFactures
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
$this->option_tva = 0; // Gere option tva FACTURE_TVAOPTION $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_modereg = 0; // Gere choix mode r<EFBFBD>glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 0; // Affiche code produit-service $this->option_codeproduitservice = 0; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 0; // Affiche si il y a eu escompte $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 $this->option_draft_watermark = 1; //Support add of a watermark on drafts
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $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 * \brief Fonction g<EFBFBD>n<EFBFBD>rant la facture sur le disque
* \param fac Objet facture à générer (ou id si ancienne methode) * \param fac Objet facture <EFBFBD> g<EFBFBD>n<EFBFBD>rer (ou id si ancienne methode)
* \param outputlangs Lang object for output language * \param outputlangs Lang object for output language
* \return int 1=ok, 0=ko * \return int 1=ok, 0=ko
*/ */
@ -106,7 +106,7 @@ class pdf_huitre extends ModelePDFFactures
if ($conf->facture->dir_output) 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)) if (! is_object($fac))
{ {
$id = $fac; $id = $fac;
@ -114,7 +114,7 @@ class pdf_huitre extends ModelePDFFactures
$ret=$fac->fetch($id); $ret=$fac->fetch($id);
} }
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($fac->specimen) if ($fac->specimen)
{ {
$dir = $conf->facture->dir_output; $dir = $conf->facture->dir_output;
@ -145,7 +145,7 @@ class pdf_huitre extends ModelePDFFactures
$pdf=new FPDI_Protection('P','mm','A4'); $pdf=new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -271,12 +271,11 @@ class pdf_huitre extends ModelePDFFactures
$pdf->SetLineWidth(0.5); $pdf->SetLineWidth(0.5);
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur 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 pdf objet PDF
* \param fac objet facture * \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 pdf objet PDF
* \param fac objet facture * \param fac objet facture
*/ */

View File

@ -23,8 +23,8 @@
/** /**
\file htdocs/includes/modules/facture/pdf_oursin.modules.php \file htdocs/includes/modules/facture/pdf_oursin.modules.php
\ingroup facture \ingroup facture
\brief Fichier de la classe permettant de générer les factures au modèle oursin \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les factures au mod<EFBFBD>le oursin
\author Sylvain SCATTOLINI basé sur un modèle de Laurent Destailleur \author Sylvain SCATTOLINI bas<EFBFBD> sur un mod<EFBFBD>le de Laurent Destailleur
\version $Id$ \version $Id$
*/ */
@ -34,7 +34,7 @@ require_once(DOL_DOCUMENT_ROOT."/lib/company.lib.php");
/** /**
\class pdf_oursin \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 class pdf_oursin extends ModelePDFFactures
@ -44,7 +44,7 @@ class pdf_oursin extends ModelePDFFactures
/** /**
\brief Constructeur \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) function pdf_oursin($db)
{ {
@ -70,12 +70,12 @@ class pdf_oursin extends ModelePDFFactures
$this->option_logo = 1; // Affiche logo FAC_PDF_LOGO $this->option_logo = 1; // Affiche logo FAC_PDF_LOGO
$this->option_tva = 1; // Gere option tva FACTURE_TVAOPTION $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_modereg = 1; // Gere choix mode r<EFBFBD>glement FACTURE_CHQ_NUMBER, FACTURE_RIB_NUMBER
$this->option_condreg = 1; // Affiche conditions règlement $this->option_condreg = 1; // Affiche conditions r<EFBFBD>glement
$this->option_codeproduitservice = 1; // Affiche code produit-service $this->option_codeproduitservice = 1; // Affiche code produit-service
$this->option_multilang = 1; // Dispo en plusieurs langues $this->option_multilang = 1; // Dispo en plusieurs langues
$this->option_escompte = 0; // Affiche si il y a eu escompte $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 $this->option_draft_watermark = 1; //Support add of a watermark on drafts
if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise') if (defined("FACTURE_TVAOPTION") && FACTURE_TVAOPTION == 'franchise')
@ -83,13 +83,13 @@ class pdf_oursin extends ModelePDFFactures
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $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 * \brief Fonction g<EFBFBD>n<EFBFBD>rant la facture sur le disque
* \param fac Objet facture à générer (ou id si ancienne methode) * \param fac Objet facture <EFBFBD> g<EFBFBD>n<EFBFBD>rer (ou id si ancienne methode)
* \param outputlangs Lang object for output language * \param outputlangs Lang object for output language
* \return int 1=ok, 0=ko * \return int 1=ok, 0=ko
*/ */
@ -110,7 +110,7 @@ class pdf_oursin extends ModelePDFFactures
if ($conf->facture->dir_output) 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)) if (! is_object($fac))
{ {
$id = $fac; $id = $fac;
@ -122,7 +122,7 @@ class pdf_oursin extends ModelePDFFactures
$amount_credit_not_included = $fac->getSommeCreditNote(); $amount_credit_not_included = $fac->getSommeCreditNote();
// Définition de $dir et $file // D<EFBFBD>finition de $dir et $file
if ($fac->specimen) if ($fac->specimen)
{ {
$dir = $conf->facture->dir_output; $dir = $conf->facture->dir_output;
@ -154,7 +154,7 @@ class pdf_oursin extends ModelePDFFactures
$pdf=new FPDI_Protection('P','mm',$this->format); $pdf=new FPDI_Protection('P','mm',$this->format);
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -196,7 +196,7 @@ class pdf_oursin extends ModelePDFFactures
$codeproduitservice=""; $codeproduitservice="";
$pdf->SetXY ($this->marges['g']+ 1, $curY ); $pdf->SetXY ($this->marges['g']+ 1, $curY );
if (defined("FACTURE_CODEPRODUITSERVICE") && FACTURE_CODEPRODUITSERVICE) { 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); $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) { 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).")"; $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'); $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); $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)) { if ((! defined("FACTURE_CHQ_NUMBER") || ! FACTURE_CHQ_NUMBER) && (! defined("FACTURE_RIB_NUMBER") || ! FACTURE_RIB_NUMBER)) {
$pdf->SetXY ($this->marges['g'], 228); $pdf->SetXY ($this->marges['g'], 228);
$pdf->SetTextColor(200,0,0); $pdf->SetTextColor(200,0,0);
@ -270,7 +270,7 @@ class pdf_oursin extends ModelePDFFactures
$pdf->SetTextColor(0,0,0); $pdf->SetTextColor(0,0,0);
} }
// Propose mode règlement par CHQ // Propose mode r<EFBFBD>glement par CHQ
if (defined("FACTURE_CHQ_NUMBER")) if (defined("FACTURE_CHQ_NUMBER"))
{ {
if (FACTURE_CHQ_NUMBER > 0) 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 (defined("FACTURE_RIB_NUMBER"))
{ {
if (FACTURE_RIB_NUMBER > 0) 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) if ($fac->cond_reglement_code)
{ {
$pdf->SetFont('Arial','B',10); $pdf->SetFont('Arial','B',10);
@ -354,6 +354,8 @@ class pdf_oursin extends ModelePDFFactures
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur 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 pdf objet PDF
* \param fac objet facture * \param fac objet facture
* \param deja_regle montant deja regle * \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 pdf objet PDF
* \param fac objet facture * \param fac objet facture
*/ */
@ -705,7 +707,7 @@ class pdf_oursin extends ModelePDFFactures
$pdf->MultiCell(80, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L'); $pdf->MultiCell(80, 4, MAIN_INFO_SOCIETE_NOM, 0, 'L');
} }
// Caractéristiques emetteur // Caract<EFBFBD>ristiques emetteur
$pdf->SetFont('Arial','',9); $pdf->SetFont('Arial','',9);
if (defined("FAC_PDF_ADRESSE")) if (defined("FAC_PDF_ADRESSE"))
{ {

View File

@ -315,6 +315,8 @@ class pdf_soleil extends ModelePDFFicheinter
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; return 1;

View File

@ -20,7 +20,7 @@
/** /**
\file htdocs/includes/modules/mailings/peche.modules.php \file htdocs/includes/modules/mailings/peche.modules.php
\ingroup mailing \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$ \version $Id$
*/ */
@ -29,13 +29,13 @@ include_once DOL_DOCUMENT_ROOT.'/includes/modules/mailings/modules_mailings.php'
/** /**
\class mailing_pomme \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 class mailing_peche extends MailingTargets
{ {
var $name='EmailsFromFile'; // Identifiant du module mailing 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_module=array(); // Module mailing actif si modules require_module actifs
var $require_admin=1; // Module mailing actif pour user admin ou non var $require_admin=1; // Module mailing actif pour user admin ou non
var $picto='generic'; var $picto='generic';
@ -99,7 +99,7 @@ class mailing_peche extends MailingTargets
/** /**
* \brief Ajoute destinataires dans table des cibles * \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 * \param filterarray Requete sql de selection des destinataires
* \return int < 0 si erreur, nb ajout si ok * \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>'; //$mesg = '<div class="ok">'.$langs->trans("FileTransferComplete").'</div>';
//print_r($_FILES); //print_r($_FILES);
$handle = @fopen($upload_dir . "/" . $_FILES['username']['name'], "r"); $file=$upload_dir . "/" . $_FILES['username']['name'];
$handle = @fopen($file, "r");
if ($handle) if ($handle)
{ {
$i = 0; $i = 0;
@ -165,6 +166,7 @@ class mailing_peche extends MailingTargets
} }
} }
fclose($handle); fclose($handle);
if ($i > 0) if ($i > 0)
{ {
return -$i; return -$i;

View File

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

View File

@ -397,6 +397,8 @@ class pdf_propale_azur extends ModelePDFPropales
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; // Pas d'erreur return 1; // Pas d'erreur

View File

@ -270,6 +270,8 @@ class pdf_propale_jaune extends ModelePDFPropales
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
$langs->setPhpLang(); // On restaure langue session $langs->setPhpLang(); // On restaure langue session
return 1; return 1;

View File

@ -16,28 +16,26 @@
* along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* or see http://www.gnu.org/ * or see http://www.gnu.org/
*
* $Id$
*/ */
/** /**
\file htdocs/includes/modules/rapport/pdf_paiement.class.php \file htdocs/includes/modules/rapport/pdf_paiement.class.php
\ingroup banque \ingroup banque
\brief Fichier de la classe permettant de générer les rapports de paiement \brief Fichier de la classe permettant de g<EFBFBD>n<EFBFBD>rer les rapports de paiement
\version $Revision$ \version $Id$
*/ */
require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php'); require_once(DOL_DOCUMENT_ROOT.'/includes/fpdf/fpdfi/fpdi_protection.php');
/** /**
\class pdf_paiement \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 class pdf_paiement extends FPDF
{ {
/** /**
\brief Constructeur \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) 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 _dir repertoire
\param month mois du rapport \param month mois du rapport
\param year annee 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->month=$month;
$this->year=$year; $this->year=$year;
@ -194,7 +198,7 @@ class pdf_paiement extends FPDF
$pdf = new FPDI_Protection('P','mm','A4'); $pdf = new FPDI_Protection('P','mm','A4');
$pdfrights = array('print'); // Ne permet que l'impression du document $pdfrights = array('print'); // Ne permet que l'impression du document
$pdfuserpass = ''; // Mot de passe pour l'utilisateur final $pdfuserpass = ''; // Mot de passe pour l'utilisateur final
$pdfownerpass = NULL; // Mot de passe du propriétaire, créé aléatoirement si pas défini $pdfownerpass = NULL; // Mot de passe du propri<EFBFBD>taire, cr<63><72> al<61>atoirement si pas d<>fini
$pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass); $pdf->SetProtection($pdfrights,$pdfuserpass,$pdfownerpass);
} }
else else
@ -256,7 +260,7 @@ class pdf_paiement extends FPDF
if ($pages == 0) 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; $pages = 1;
} }
/* /*
@ -275,6 +279,11 @@ class pdf_paiement extends FPDF
$this->Body($pdf, 1, $lines); $this->Body($pdf, 1, $lines);
$pdf->Output($_file); $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->eol); // This eol is added by the mail function, so we add it in log
fputs($fp, $this->message); fputs($fp, $this->message);
fclose($fp); 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) function unaccent_isostring($str)
{ {
$translation = array( $translation = array(
"\xE0" => "a", "\xE0" => "a",
"\xE1" => "a", "\xE1" => "a",
"\xE2" => "a", "\xE2" => "a",
"\xE8" => "e", "\xE8" => "e",
"\xE9" => "e", "\xE9" => "e",
"\xEA" => "e", "\xEA" => "e",
"\xEB" => "e", "\xEB" => "e",
"\xEE" => "i", "\xEE" => "i",
"\xEF" => "i", "\xEF" => "i",
"\xF4" => "o", "\xF4" => "o",
"\xF6" => "o", "\xF6" => "o",
"\xFB" => "u", "\xFB" => "u",
"\xFC" => "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"); fwrite($file,$message."\n");
fclose($file); 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 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"])) 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(); $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 = "DELETE FROM ".MAIN_DB_PREFIX."user_param";
$sql.= " WHERE fk_user = ".$user->id; $sql.= " WHERE fk_user = ".$user->id;
if ($url) $sql.=" AND page='".$url."'"; if ($url) $sql.=" AND page='".$url."'";
@ -771,9 +772,9 @@ function dolibarr_trunc($string,$size=40,$trunc='right')
//print $conf->character_set_client.'-'.mb_strlen($string).'-'.strlen($string); //print $conf->character_set_client.'-'.mb_strlen($string).'-'.strlen($string);
//print 'ee'.$string.$size.mb_strcut($string,0,$size,'UTF-8').'rr'; //print 'ee'.$string.$size.mb_strcut($string,0,$size,'UTF-8').'rr';
if (strlen($string) > $size) if (strlen($string) > $size)
return substr($string,0,$size).'...'; return substr($string,0,$size).'...';
else else
return $string; return $string;
} }
if ($trunc == 'middle') 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 else if (! empty($feature2)) // This should be used for future changes
{ {
if (empty($user->rights->$feature->$feature2->lire) 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 else if (! empty($feature)) // This is for old permissions
{ {
if (empty($user->rights->$feature->lire) if (empty($user->rights->$feature->lire)
&& empty($user->rights->$feature->read)) $readok=0; && empty($user->rights->$feature->read)) $readok=0;
} }
if (! $readok) accessforbidden(); if (! $readok) accessforbidden();
//print "Read access is ok"; //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 else if (! empty($feature2)) // This should be used for future changes
{ {
if (empty($user->rights->$feature->$feature2->creer) 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 else if (! empty($feature)) // This is for old permissions
{ {
if (empty($user->rights->$feature->creer) if (empty($user->rights->$feature->creer)
&& empty($user->rights->$feature->write)) $createok=0; && empty($user->rights->$feature->write)) $createok=0;
} }
if (! $createok) accessforbidden(); if (! $createok) accessforbidden();
//print "Write access is ok"; //print "Write access is ok";
@ -1685,7 +1686,7 @@ function dol_move_uploaded_file($src_file, $dest_file, $allowoverwrite)
$return=move_uploaded_file($src_file, $file_name); $return=move_uploaded_file($src_file, $file_name);
if ($return) 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); 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; 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 rate Rate value to format (19.6 19,6 19.6% 19,6%,...)
* \param foundpercent Add a percent % sign in output * \param foundpercent Add a percent % sign in output
* \param info_bits Miscellanous information on vat * \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) function vatrate($rate,$addpercent=false,$info_bits=0)
{ {
@ -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. \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 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 (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 = 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 = 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. 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_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse
\param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse \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. // 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> // 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 (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && ! $societe_acheteuse->tva_intra)
{ {
if ($idprod) return get_product_vat_for_country($idprod,$societe_vendeuse->pays_code); 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; 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) if (($societe_vendeuse->isInEEC() && $societe_acheteuse->isInEEC()) && $societe_acheteuse->tva_intra)
{ {
return 0; 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. \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 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 (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 = 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 = 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. 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_vendeuse Objet soci<EFBFBD>t<EFBFBD> vendeuse
\param societe_acheteuse Objet soci<EFBFBD>t<EFBFBD> acheteuse \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/" \remarks Examples: 1->"0/0/1/", 15->"0/1/5/"
\param $num Id a d<EFBFBD>composer \param $num Id a d<EFBFBD>composer
\param $level Niveau de decoupage (1, 2 ou 3 niveaux) \param $level Niveau de decoupage (1, 2 ou 3 niveaux)
@ -2311,6 +2312,8 @@ function get_exdir($num,$level=3)
*/ */
function create_exdir($dir) function create_exdir($dir)
{ {
global $conf;
dolibarr_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO); dolibarr_syslog("functions.lib::create_exdir: dir=".$dir,LOG_INFO);
if (@is_dir($dir)) return 0; if (@is_dir($dir)) return 0;
@ -2332,21 +2335,24 @@ function create_exdir($dir)
{ {
if (! @is_dir($ccdir)) 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); umask(0);
if (! @mkdir($ccdir, 0755)) $dirmaskdec=octdec('0755');
{ if (! empty($conf->global->MAIN_UMASK)) $dirmaskdec=octdec($conf->global->MAIN_UMASK);
// Si le is_dir a renvoye une fausse info, alors on passe ici. $dirmaskdec |= octdec('0110');
dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING); if (! @mkdir($ccdir, $dirmaskdec))
$nberr++; {
} // Si le is_dir a renvoye une fausse info, alors on passe ici.
else dolibarr_syslog("functions.lib::create_exdir: Fails to create directory '".$ccdir."' or directory already exists.",LOG_WARNING);
{ $nberr++;
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 else
$nbcreated++; {
} 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 else
{ {

View File

@ -597,10 +597,8 @@ class Ldap
{ {
fputs($fp, $content); fputs($fp, $content);
fclose($fp); fclose($fp);
// We change mod to allow file to be overwritten if dump is launched if (! empty($conf->global->MAIN_UMASK))
// from command line or a web session. @chmod($outputfile, octdec($conf->global->MAIN_UMASK));
// 0666 = rw-rw-rw-
if (! empty($conf->global->MAIN_UMASK)) @chmod($file, $conf->global->MAIN_UMASK);
return 1; return 1;
} }
else else

View File

@ -38,7 +38,7 @@ function makesalt($type=CRYPT_SALT_LENGTH)
{ {
case 12: // 8 + 4 case 12: // 8 + 4
$saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break; $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; $saltlen=8; $saltprefix='$1$'; $saltsuffix='$'; break;
case 2: // 2 case 2: // 2
default: // by default, fall back on Standard DES (should work everywhere) default: // by default, fall back on Standard DES (should work everywhere)
@ -89,10 +89,14 @@ function encodedecode_dbpassconf($level=0)
} }
fclose($fp); 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)); fputs($fp, $config, strlen($config));
fclose($fp); fclose($fp);
// It's config file, so we set permission for creator only
// @chmod($file, octdec('0600'));
return 1; return 1;
} }
else else
@ -109,9 +113,9 @@ function encodedecode_dbpassconf($level=0)
} }
/** /**
* \brief Encode une chaine de caractére * \brief Encode une chaine de caract<EFBFBD>re
* \param chaine chaine de caractères a encoder * \param chaine chaine de caract<EFBFBD>res a encoder
* \return string_coded chaine de caractères encodée * \return string_coded chaine de caract<EFBFBD>res encod<EFBFBD>e
*/ */
function dol_encode($chain) function dol_encode($chain)
{ {
@ -125,9 +129,9 @@ function dol_encode($chain)
} }
/** /**
* \brief Decode une chaine de caractére * \brief Decode une chaine de caract<EFBFBD>re
* \param chain chaine de caractéres a decoder * \param chain chaine de caract<EFBFBD>res a decoder
* \return string_coded chaine de caractéres decodée * \return string_coded chaine de caract<EFBFBD>res decod<EFBFBD>e
*/ */
function dol_decode($chain) 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"); fwrite($calfileh,"END:VCALENDAR");
fclose($calfileh); fclose($calfileh);
if (! empty($conf->global->MAIN_UMASK))
@chmod($outputfile, octdec($conf->global->MAIN_UMASK));
} }
else else
{ {
@ -312,11 +314,8 @@ function build_rssfile($format='rss',$title,$desc,$events_array,$outputfile,$fil
fwrite($fichier, '</rss>'); fwrite($fichier, '</rss>');
fclose($fichier); fclose($fichier);
if (! empty($conf->global->MAIN_UMASK))
// We change mod to allow file to be overwritten if dump is launched @chmod($outputfile, octdec($conf->global->MAIN_UMASK));
// from command line or a web session.
// 0666 = rw-rw-rw-
if (! empty($conf->global->MAIN_UMASK)) @chmod($fichier, $conf->global->MAIN_UMASK);
} }
} }

View File

@ -50,7 +50,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
$this->db = $db; $this->db = $db;
$this->name = "sirocco"; $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 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
@ -64,7 +64,7 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $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 = ""; $this->error = "";
} }
@ -250,6 +250,9 @@ class pdf_sirocco extends ModelePDFDeliveryOrder
$this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs); $this->_tableau($pdf, $tab_top, $tab_height, $nexY, $outputlangs);
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; return 1;
} }
} }

View File

@ -55,7 +55,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
$this->db = $db; $this->db = $db;
$this->name = "typhon"; $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 // Dimension page pour format A4
$this->type = 'pdf'; $this->type = 'pdf';
@ -76,7 +76,7 @@ class pdf_typhon extends ModelePDFDeliveryOrder
// Recupere emmetteur // Recupere emmetteur
$this->emetteur=$mysoc; $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(); $this->tva=array();
@ -321,6 +321,8 @@ class pdf_typhon extends ModelePDFDeliveryOrder
$pdf->Close(); $pdf->Close();
$pdf->Output($file); $pdf->Output($file);
if (! empty($conf->global->MAIN_UMASK))
@chmod($file, octdec($conf->global->MAIN_UMASK));
return 1; // Pas d'erreur return 1; // Pas d'erreur
} }