diff --git a/htdocs/core/modules/facture/modules_facture.php b/htdocs/core/modules/facture/modules_facture.php index a87a2ed7016b53524776b5ec16ff53a568056845..c2f19ba3d169588d75e9134d41f8a463aa50b36d 100644 --- a/htdocs/core/modules/facture/modules_facture.php +++ b/htdocs/core/modules/facture/modules_facture.php @@ -135,7 +135,7 @@ abstract class ModeleNumRefFactures * @param DoliDB $db Database handler * @param Object $object Object invoice * @param string $message message - * @param string $modele Force le modele a utiliser ('' to not force) + * @param string $modele Force template to use ('' to not force) * @param Translate $outputlangs objet lang a utiliser pour traduction * @param int $hidedetails Hide details of lines * @param int $hidedesc Hide description diff --git a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php index a45a2d8b9581aec6b363b89d3b90f2990d4ed45c..11d0cddffe52c16410ca845497e43495da5d95e3 100755 --- a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php +++ b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php @@ -58,38 +58,69 @@ abstract class ModelePDFSuppliersInvoices extends CommonDocGenerator * * @param DoliDB $db objet base de donnee * @param Object $object object supplier invoice - * @param string $model force le modele a utiliser ('' to not force) + * @param string $modele Force template to use ('' to not force) * @param Translate $outputlangs objet lang a utiliser pour traduction * @return int 0 if KO, 1 if OK */ -function supplier_invoice_pdf_create($db, $object, $model, $outputlangs) +function supplier_invoice_pdf_create($db, $object, $modele, $outputlangs) { - global $conf, $langs; + global $conf, $user, $langs; $langs->load("suppliers"); - $dir = DOL_DOCUMENT_ROOT."/core/modules/supplier_invoice/pdf/"; + $error=0; + + // Increase limit for PDF build + $err=error_reporting(); + error_reporting(0); + @set_time_limit(120); + error_reporting($err); + + $dir = "/core/modules/supplier_invoice/"; + $srctemplatepath=''; // Positionne modele sur le nom du modele de invoice fournisseur a utiliser - if (! dol_strlen($model)) + if (! dol_strlen($modele)) { if (! empty($conf->global->INVOICE_SUPPLIER_ADDON_PDF)) { - $model = $conf->global->INVOICE_SUPPLIER_ADDON_PDF; + $modele = $conf->global->INVOICE_SUPPLIER_ADDON_PDF; } else { - $model = 'canelle'; - //print $langs->trans("Error")." ".$langs->trans("Error_INVOICE_SUPPLIER_ADDON_PDF_NotDefined"); - //return 0; + $modele = 'canelle'; } } + + // If selected modele is a filename template (then $modele="modelname:filename") + $tmp=explode(':',$modele,2); + if (! empty($tmp[1])) + { + $modele=$tmp[0]; + $srctemplatepath=$tmp[1]; + } + + // Search template file + $file=''; $classname=''; $filefound=0; + foreach(array('doc','pdf') as $prefix) + { + $file = $prefix."_".$modele.".modules.php"; + + // On verifie l'emplacement du modele + $file = dol_buildpath($dir.'pdf/'.$file); // TODO rename into doc/ + + if (file_exists($file)) + { + $filefound=1; + $classname=$prefix.'_'.$modele; + break; + } + } + // Charge le modele - $file = "pdf_".$model.".modules.php"; - if (file_exists($dir.$file)) + if ($filefound) { - $classname = "pdf_".$model; - require_once($dir.$file); + require_once($file); $obj = new $classname($db,$object); @@ -103,6 +134,14 @@ function supplier_invoice_pdf_create($db, $object, $model, $outputlangs) // we delete preview files require_once(DOL_DOCUMENT_ROOT."/core/lib/files.lib.php"); dol_delete_preview($object); + + // Appel des triggers + include_once(DOL_DOCUMENT_ROOT . "/core/class/interfaces.class.php"); + $interface=new Interfaces($db); + $result=$interface->run_triggers('BILL_BUILDDOC',$object,$user,$langs,$conf); + if ($result < 0) { $error++; $this->errors=$interface->errors; } + // Fin appel triggers + return 1; } else @@ -115,7 +154,7 @@ function supplier_invoice_pdf_create($db, $object, $model, $outputlangs) } else { - print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$dir.$file); + print $langs->trans("Error")." ".$langs->trans("ErrorFileDoesNotExists",$file); return 0; } }