From 559c7974e966c856ec43acb6477948ba13a45678 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sun, 22 Apr 2012 10:02:12 +0200 Subject: [PATCH] shipping receipt modele can be used from a custom directory --- .../modules/livraison/modules_livraison.php | 56 ++++++++++++++----- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/htdocs/core/modules/livraison/modules_livraison.php b/htdocs/core/modules/livraison/modules_livraison.php index 1454421b1fb..c9343e8ae95 100644 --- a/htdocs/core/modules/livraison/modules_livraison.php +++ b/htdocs/core/modules/livraison/modules_livraison.php @@ -3,6 +3,7 @@ * Copyright (C) 2004-2011 Laurent Destailleur * Copyright (C) 2004 Eric Seigne * Copyright (C) 2006-2011 Regis Houssin + * Copyright (C) 2011-2012 Philippe Grand * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -154,33 +155,62 @@ abstract class ModeleNumRefDeliveryOrder * @param Translate $outputlangs objet lang a utiliser pour traduction * @return int 0 if KO, 1 if OK */ -function delivery_order_pdf_create($db, $object, $model='', $outputlangs='') +function delivery_order_pdf_create($db, $object, $modele, $outputlangs='') { global $conf,$langs; + $langs->load("deliveries"); - $dir = "/core/modules/livraison/pdf/"; + $error=0; + + $srctemplatepath=''; // Positionne modele sur le nom du modele de bon de livraison a utiliser - if (! dol_strlen($model)) + if (! dol_strlen($modele)) { if ($conf->global->LIVRAISON_ADDON_PDF) { - $model = $conf->global->LIVRAISON_ADDON_PDF; + $modele = $conf->global->LIVRAISON_ADDON_PDF; } else { - print $langs->trans("Error")." ".$langs->trans("Error_LIVRAISON_ADDON_PDF_NotDefined"); - return 0; + $modele = 'typhon'; } } - // Charge le modele - $file = "pdf_".$model.".modules.php"; - // On verifie l'emplacement du modele - $file = dol_buildpath($dir.$file); - if (file_exists($file)) + + // 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 files + $file=''; $classname=''; $filefound=0; + $dirmodels=array('/'); + if (is_array($conf->modules_parts['models'])) $dirmodels=array_merge($dirmodels,$conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + foreach(array('doc','pdf') as $prefix) + { + $file = $prefix."_".$modele.".modules.php"; + + // On verifie l'emplacement du modele + $file=dol_buildpath($reldir."core/modules/livraison/pdf/".$file,0); + if (file_exists($file)) + { + $filefound=1; + $classname=$prefix.'_'.$modele; + break; + } + } + if ($filefound) break; + } + + // Charge le modele + if ($filefound) { - $classname = "pdf_".$model; require_once($file); $obj = new $classname($db); @@ -212,4 +242,4 @@ function delivery_order_pdf_create($db, $object, $model='', $outputlangs='') } } -?> +?> \ No newline at end of file