From 3c7c5f262f3c288ba57fdca1b9a80c56555593d8 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Fri, 15 Mar 2013 16:03:03 +0100 Subject: [PATCH 1/8] anglicization of comments --- .../modules_commandefournisseur.php | 40 +++++++++---------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php index 6b9fd315f18..f9407ba804e 100644 --- a/htdocs/core/modules/supplier_order/modules_commandefournisseur.php +++ b/htdocs/core/modules/supplier_order/modules_commandefournisseur.php @@ -4,7 +4,7 @@ * Copyright (C) 2004 Eric Seigne * Copyright (C) 2005-2012 Regis Houssin * Copyright (C) 2006 Andre Cianfarani - * Copyright (C) 2011 Philippe Grand + * Copyright (C) 2011-2013 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 @@ -40,7 +40,7 @@ abstract class ModelePDFSuppliersOrders extends CommonDocGenerator /** - * Return list of active generation modules + * Return list of active generation models * * @param DoliDB $db Database handler * @param string $maxfilenamelength Max length of value to show @@ -64,24 +64,24 @@ abstract class ModelePDFSuppliersOrders extends CommonDocGenerator /** - * Classe mere des modeles de numerotation des references de commandes fournisseurs + * Parent Class of numbering models of suppliers orders references */ abstract class ModeleNumRefSuppliersOrders { var $error=''; - /** Return if a module can be used or not + /** Return if a model can be used or not * - * @return boolean true if module can be used + * @return boolean true if model can be used */ function isEnabled() { return true; } - /** Renvoie la description par defaut du modele de numerotation + /** Returns the default description of the model numbering * - * @return string Texte descripif + * @return string Description Text */ function info() { @@ -90,7 +90,7 @@ abstract class ModeleNumRefSuppliersOrders return $langs->trans("NoDescription"); } - /** Renvoie un exemple de numerotation + /** Returns a numbering example * * @return string Example */ @@ -101,16 +101,16 @@ abstract class ModeleNumRefSuppliersOrders return $langs->trans("NoExample"); } - /** Test si les numeros deja en vigueur dans la base ne provoquent pas de conflits qui empecheraient cette numerotation de fonctionner. + /** Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering. * - * @return boolean false si conflit, true si ok + * @return boolean false if conflict, true if ok */ function canBeActivated() { return true; } - /** Renvoie prochaine valeur attribuee + /** Returns next value assigned * * @return string Valeur */ @@ -120,9 +120,9 @@ abstract class ModeleNumRefSuppliersOrders return $langs->trans("NotAvailable"); } - /** Renvoie version du module numerotation + /** Returns version of the model numbering * - * @return string Valeur + * @return string Value */ function getVersion() { @@ -143,7 +143,7 @@ abstract class ModeleNumRefSuppliersOrders * @param DoliDB $db Database handler * @param Object $object Object supplier order * @param string $modele Force template to use ('' to not force) - * @param Translate $outputlangs Object lang a utiliser pour traduction + * @param Translate $outputlangs Object lang to use for traduction * @param int $hidedetails Hide details of lines * @param int $hidedesc Hide description * @param int $hideref Hide ref @@ -164,7 +164,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet $srctemplatepath=''; - // Positionne le modele sur le nom du modele a utiliser + // Set the model on the model name to use if (! dol_strlen($modele)) { if (! empty($conf->global->COMMANDE_SUPPLIER_ADDON_PDF)) @@ -177,7 +177,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet } } - // If selected modele is a filename template (then $modele="modelname:filename") + // If selected model is a filename template (then $modele="modelname:filename") $tmp=explode(':',$modele,2); if (! empty($tmp[1])) { @@ -195,7 +195,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet { $file = $prefix."_".$modele.".modules.php"; - // On verifie l'emplacement du modele + // We checked the location of the model $file=dol_buildpath($reldir."core/modules/supplier_order/pdf/".$file,0); if (file_exists($file)) { @@ -207,7 +207,7 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet if ($filefound) break; } - // Charge le modele + // Load the model if ($filefound) { require_once $file; @@ -225,12 +225,12 @@ function supplier_order_pdf_create($db, $object, $modele, $outputlangs, $hidedet require_once DOL_DOCUMENT_ROOT.'/core/lib/files.lib.php'; dol_delete_preview($object); - // Appel des triggers + // Calls triggers include_once DOL_DOCUMENT_ROOT . '/core/class/interfaces.class.php'; $interface=new Interfaces($db); $result=$interface->run_triggers('ORDER_SUPPLIER_BUILDDOC',$object,$user,$langs,$conf); if ($result < 0) { $error++; $this->errors=$interface->errors; } - // Fin appel triggers + // End calls triggers return 1; } From b0bce235959ae08d5198bb7171cebc159dbf3759 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Fri, 15 Mar 2013 16:16:38 +0100 Subject: [PATCH 2/8] prepair numbering models for supplier invoices --- .../modules_facturefournisseur.php | 78 ++++++++++++++++++- 1 file changed, 76 insertions(+), 2 deletions(-) diff --git a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php index 5d409dd6c67..3d4e442f6f3 100755 --- a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php +++ b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php @@ -1,6 +1,7 @@ * Copyright (C) 2012 Regis Houssin + * Copyright (C) 2013 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 @@ -20,7 +21,7 @@ /** * \file htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php * \ingroup facture fournisseur - * \brief File that contain parent class for supplier invoices models + * \brief File that contains parent class for supplier invoices models */ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; @@ -55,6 +56,79 @@ abstract class ModelePDFSuppliersInvoices extends CommonDocGenerator } +/** + * Parent Class of numbering models of suppliers invoices references + */ +abstract class ModeleNumRefSuppliersInvoices +{ + var $error=''; + + /** Return if a model can be used or not + * + * @return boolean true if model can be used + */ + function isEnabled() + { + return true; + } + + /** Returns the default description of the model numbering + * + * @return string Description Text + */ + function info() + { + global $langs; + $langs->load("invoices"); + return $langs->trans("NoDescription"); + } + + /** Returns a numbering example + * + * @return string Example + */ + function getExample() + { + global $langs; + $langs->load("invoices"); + return $langs->trans("NoExample"); + } + + /** Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering. + * + * @return boolean false if conflict, true if ok + */ + function canBeActivated() + { + return true; + } + + /** Returns next value assigned + * + * @return string Valeur + */ + function getNextValue() + { + global $langs; + return $langs->trans("NotAvailable"); + } + + /** Returns version of the model numbering + * + * @return string Value + */ + function getVersion() + { + global $langs; + $langs->load("admin"); + + if ($this->version == 'development') return $langs->trans("VersionDevelopment"); + if ($this->version == 'experimental') return $langs->trans("VersionExperimental"); + if ($this->version == 'dolibarr') return DOL_VERSION; + return $langs->trans("NotAvailable"); + } +} + /** * Create a document onto disk according to template module. * @@ -168,4 +242,4 @@ function supplier_invoice_pdf_create($db, $object, $modele, $outputlangs, $hided } } -?> +?> \ No newline at end of file From a9eed57e27aef5395b0da0eefbfb56ee93cc6e47 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Fri, 15 Mar 2013 16:43:28 +0100 Subject: [PATCH 3/8] prepair numbering models for supplier invoices --- .../mod_facture_fournisseur_tulip.php | 145 ++++++++++++++++++ 1 file changed, 145 insertions(+) create mode 100644 htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php new file mode 100644 index 00000000000..88e930f7804 --- /dev/null +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php @@ -0,0 +1,145 @@ + + * Copyright (C) 2004-2008 Laurent Destailleur + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2013 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php + * \ingroup commande + * \brief File containing the Tulip Class of numbering models of suppliers invoices references + */ + +require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_invoice/modules_facturefournisseur.php'; + + +/** + \class mod_facture_fournisseur_tulip + \brief Tulip Class of numbering models of suppliers invoices references +*/ +class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersOrders +{ + var $version='dolibarr'; // 'development', 'experimental', 'dolibarr' + var $error = ''; + var $nom = 'Tulip'; + + + /** + * Returns the description of the model numbering + * + * @return string Description Text + */ + function info() + { + global $conf,$langs; + + $langs->load("bills"); + $langs->load("admin"); + + $form = new Form($this->db); + + $texte = $langs->trans('GenericNumRefModelDesc')."
\n"; + $texte.= '
'; + $texte.= ''; + $texte.= ''; + $texte.= ''; + $texte.= ''; + + $tooltip=$langs->trans("GenericMaskCodes",$langs->transnoentities("Invoice"),$langs->transnoentities("Invoice")); + $tooltip.=$langs->trans("GenericMaskCodes2"); + $tooltip.=$langs->trans("GenericMaskCodes3"); + $tooltip.=$langs->trans("GenericMaskCodes4a",$langs->transnoentities("Invoice"),$langs->transnoentities("Invoice")); + $tooltip.=$langs->trans("GenericMaskCodes5"); + + // Parametrage du prefix + $texte.= ''; + $texte.= ''; + + $texte.= ''; + + $texte.= ''; + + $texte.= '
'.$langs->trans("Mask").':'.$form->textwithpicto('',$tooltip,1,1).' 
'; + $texte.= '
'; + + return $texte; + } + + /** + * Returns a numbering example + * + * @return string Example + */ + function getExample() + { + global $conf,$langs,$mysoc; + + $old_code_client=$mysoc->code_client; + $mysoc->code_client='CCCCCCCCCC'; + $numExample = $this->getNextValue($mysoc,''); + $mysoc->code_client=$old_code_client; + + if (! $numExample) + { + $numExample = $langs->trans('NotConfigured'); + } + return $numExample; + } + + /** + * Return next value + * + * @param Societe $objsoc Object third party + * @param Object $object Object + * @return string Value if OK, 0 if KO + */ + function getNextValue($objsoc=0,$object='') + { + global $db,$conf; + + require_once DOL_DOCUMENT_ROOT .'/core/lib/functions2.lib.php'; + + // On defini critere recherche compteur + $mask=$conf->global->SUPPLIER_INVOICE_TULIP_MASK; + + if (! $mask) + { + $this->error='NotConfigured'; + return 0; + } + + $numFinal=get_next_value($db,$mask,'commande_fournisseur','ref','',$objsoc->code_fournisseur,$object->date_commande); + + return $numFinal; + } + + + /** + * Renvoie la reference de commande suivante non utilisee + * + * @param Societe $objsoc Object third party + * @param Object $object Object + * @return string Texte descripif + */ + function commande_get_num($objsoc=0,$object='') + { + return $this->getNextValue($objsoc,$object); + } +} + +?> \ No newline at end of file From 8f7c629d9cc051d110aa3e71cd8dc2e2a82e0c22 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Fri, 15 Mar 2013 17:45:25 +0100 Subject: [PATCH 4/8] prepair numbering models for supplier invoices --- htdocs/admin/fournisseur.php | 122 ++++++++++++++++++ .../mod_facture_fournisseur_tulip.php | 6 +- .../modules_facturefournisseur.php | 2 +- 3 files changed, 126 insertions(+), 4 deletions(-) diff --git a/htdocs/admin/fournisseur.php b/htdocs/admin/fournisseur.php index e92ef38ee97..98f10481edc 100644 --- a/htdocs/admin/fournisseur.php +++ b/htdocs/admin/fournisseur.php @@ -116,6 +116,25 @@ if ($action == 'specimen') // For orders } } +if ($action == 'updateMaskInvoice') +{ + $maskconstinvoice=GETPOST('maskconstinvoice','alpha'); + $maskinvoice=GETPOST('maskinvoice','alpha'); + + if ($maskconstinvoice) $res = dolibarr_set_const($db,$maskconstinvoice,$maskinvoice,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + $mesg = "".$langs->trans("SetupSaved").""; + } + else + { + $mesg = "".$langs->trans("Error").""; + } +} + if ($action == 'specimenfacture') // For invoices { $modele=GETPOST('module','alpha'); @@ -521,6 +540,109 @@ foreach ($dirmodels as $reldir) print '
'; +// Supplier invoice numbering model + +print_titre($langs->trans("InvoicesNumberingModels")); + +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +clearstatcache(); + +foreach ($dirmodels as $reldir) +{ + $dir = dol_buildpath($reldir."core/modules/supplier_invoice/"); + + if (is_dir($dir)) + { + $handle = opendir($dir); + if (is_resource($handle)) + { + $var=true; + + while (($file = readdir($handle))!==false) + { + if (substr($file, 0, 25) == 'mod_facture_fournisseur_' && substr($file, dol_strlen($file)-3, 3) == 'php') + { + $file = substr($file, 0, dol_strlen($file)-4); + + require_once $dir.$file.'.php'; + + $module = new $file; + + if ($module->isEnabled()) + { + // Show modules according to features level + if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) continue; + if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) continue; + + $var=!$var; + print ''; + + // Show example of numbering model + print ''."\n"; + + print ''; + + $invoice=new FactureFournisseur($db); + $invoice->initAsSpecimen(); + + // Info + $htmltooltip=''; + $htmltooltip.=''.$langs->trans("Version").': '.$module->getVersion().'
'; + $nextval=$module->getNextValue($mysoc,$invoice); + if ("$nextval" != $langs->trans("NotAvailable")) // Keep " on nextval + { + $htmltooltip.=''.$langs->trans("NextValue").': '; + if ($nextval) + { + $htmltooltip.=$nextval.'
'; + } + else + { + $htmltooltip.=$langs->trans($module->error).'
'; + } + } + + print ''; + + print ''; + } + } + } + closedir($handle); + } + } +} + +print '
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Example").''.$langs->trans("Status").''.$langs->trans("Info").'
'.$module->nom."\n"; + print $module->info(); + print ''; + $tmp=$module->getExample(); + if (preg_match('/^Error/',$tmp)) { + $langs->load("errors"); print '
'.$langs->trans($tmp).'
'; + } + elseif ($tmp=='NotConfigured') print $langs->trans($tmp); + else print $tmp; + print '
'; + if ($conf->global->INVOICE_SUPPLIER_ADDON == "$file") + { + print img_picto($langs->trans("Activated"),'switch_on'); + } + else + { + print ''.img_picto($langs->trans("Disabled"),'switch_off').''; + } + print ''; + print $form->textwithpicto('',$htmltooltip,1,0); + print '

'; + /* * Modeles documents for supplier invoices */ diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php index 88e930f7804..fe4aca4dd7f 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php @@ -32,7 +32,7 @@ require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_invoice/modules_facturef \class mod_facture_fournisseur_tulip \brief Tulip Class of numbering models of suppliers invoices references */ -class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersOrders +class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices { var $version='dolibarr'; // 'development', 'experimental', 'dolibarr' var $error = ''; @@ -56,7 +56,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersOrders $texte = $langs->trans('GenericNumRefModelDesc')."
\n"; $texte.= '
'; $texte.= ''; - $texte.= ''; + $texte.= ''; $texte.= ''; $texte.= ''; @@ -123,7 +123,7 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersOrders return 0; } - $numFinal=get_next_value($db,$mask,'commande_fournisseur','ref','',$objsoc->code_fournisseur,$object->date_commande); + $numFinal=get_next_value($db,$mask,'facture_fournisseur','ref','',$objsoc->code_fournisseur,$object->date_commande); return $numFinal; } diff --git a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php index 3d4e442f6f3..c8fe4685fe2 100755 --- a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php +++ b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php @@ -242,4 +242,4 @@ function supplier_invoice_pdf_create($db, $object, $modele, $outputlangs, $hided } } -?> \ No newline at end of file +?> From e46900ad84f50da3a7eeb2892271f8f9ca478931 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Fri, 15 Mar 2013 18:40:31 +0100 Subject: [PATCH 5/8] prepair numbering models for supplier invoices --- .../mod_facture_fournisseur_cactus.php | 147 ++++++++++++++++++ .../mod_facture_fournisseur_tulip.php | 4 +- 2 files changed, 149 insertions(+), 2 deletions(-) create mode 100644 htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php new file mode 100644 index 00000000000..f753d8b2fce --- /dev/null +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php @@ -0,0 +1,147 @@ + + * Copyright (C) 2005-2009 Regis Houssin + * Copyright (C) 2013 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + * or see http://www.gnu.org/ + */ + +/** + * \file htdocs/core/modules/supplier_order/mod_facture_fournisseur_cactus.php + * \ingroup commande + * \brief File containing the Cactus Class of numbering models of suppliers invoices references + */ + +require_once DOL_DOCUMENT_ROOT .'/core/modules/supplier_order/modules_facturefournisseur.php'; + + +/** + * Cactus Class of numbering models of suppliers invoices references + */ +class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices +{ + var $version='dolibarr'; // 'development', 'experimental', 'dolibarr' + var $error = ''; + var $nom = 'Cactus'; + var $prefix='SI'; + + + /** + * Return description of numbering model + * + * @return string Text with description + */ + function info() + { + global $langs; + return $langs->trans("SimpleNumRefModelDesc",$this->prefix); + } + + + /** + * Returns a numbering example + * + * @return string Example + */ + function getExample() + { + return $this->prefix."1301-0001"; + } + + + /** + * Tests if the numbers already in force in the database do not cause conflicts that would prevent this numbering. + * + * @return boolean false if conflict, true if ok + */ + function canBeActivated() + { + global $conf,$langs; + + $siyymm=''; $max=''; + + $posindice=8; + $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; + $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; + $sql.= " AND entity = ".$conf->entity; + $resql=$db->query($sql); + if ($resql) + { + $row = $db->fetch_row($resql); + if ($row) { $siyymm = substr($row[0],0,6); $max=$row[0]; } + } + if (! $siyymm || preg_match('/'.$this->prefix.'[0-9][0-9][0-9][0-9]/i',$siyymm)) + { + return true; + } + else + { + $langs->load("errors"); + $this->error=$langs->trans('ErrorNumRefModel',$max); + return false; + } + } + + /** + * Return next value + * + * @param Societe $objsoc Object third party + * @param Object $object Object + * @return string Value if OK, 0 if KO + */ + function getNextValue($objsoc=0,$object='') + { + global $db,$conf; + + // D'abord on recupere la valeur max + $posindice=8; + $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; + $sql.= " WHERE ref like '".$this->prefix."____-%'"; + $sql.= " AND entity = ".$conf->entity; + + $resql=$db->query($sql); + if ($resql) + { + $obj = $db->fetch_object($resql); + if ($obj) $max = intval($obj->max); + else $max=0; + } + + //$date=time(); + $date=$object->datec; // Not always defined + if (empty($date)) $date=$object->date; // Creation date is order date for suppliers orders + $yymm = strftime("%y%m",$date); + $num = sprintf("%04s",$max+1); + + return $this->prefix.$yymm."-".$num; + } + + + /** + * Renvoie la reference de facture suivante non utilisee + * + * @param Societe $objsoc Object third party + * @param Object $object Object + * @return string Texte descripif + */ + function invoice_get_num($objsoc=0,$object='') + { + return $this->getNextValue($objsoc,$object); + } +} + +?> diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php index fe4aca4dd7f..72cf50adc60 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_tulip.php @@ -130,13 +130,13 @@ class mod_facture_fournisseur_tulip extends ModeleNumRefSuppliersInvoices /** - * Renvoie la reference de commande suivante non utilisee + * Renvoie la reference de facture suivante non utilisee * * @param Societe $objsoc Object third party * @param Object $object Object * @return string Texte descripif */ - function commande_get_num($objsoc=0,$object='') + function invoice_get_num($objsoc=0,$object='') { return $this->getNextValue($objsoc,$object); } From 7dbc782d42888a30fcf9e273b1f563682a76ea7e Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Fri, 15 Mar 2013 19:03:07 +0100 Subject: [PATCH 6/8] prepair numbering models for supplier invoices --- .../core/modules/supplier_invoice/modules_facturefournisseur.php | 1 + 1 file changed, 1 insertion(+) diff --git a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php index c8fe4685fe2..7a80cc93bfe 100755 --- a/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php +++ b/htdocs/core/modules/supplier_invoice/modules_facturefournisseur.php @@ -24,6 +24,7 @@ * \brief File that contains parent class for supplier invoices models */ require_once DOL_DOCUMENT_ROOT.'/core/class/commondocgenerator.class.php'; +require_once DOL_DOCUMENT_ROOT.'/compta/bank/class/account.class.php'; // requis car utilise par les classes qui heritent /** From 6fbb00a8905f14a8a8fcc24ce4ef9a4ee295dc99 Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Fri, 15 Mar 2013 19:28:26 +0100 Subject: [PATCH 7/8] prepair numbering models for supplier invoices --- htdocs/admin/fournisseur.php | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/htdocs/admin/fournisseur.php b/htdocs/admin/fournisseur.php index 98f10481edc..b26b156cebf 100644 --- a/htdocs/admin/fournisseur.php +++ b/htdocs/admin/fournisseur.php @@ -261,6 +261,14 @@ if ($action == 'setmod') dolibarr_set_const($db, "COMMANDE_SUPPLIER_ADDON",$value,'chaine',0,'',$conf->entity); } +if ($action == 'invoicesetmod') +{ + // TODO Verifier si module numerotation choisi peut etre active + // par appel methode canBeActivated + + dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON",$value,'chaine',0,'',$conf->entity); +} + if ($action == 'addcat') { $fourn = new Fournisseur($db); @@ -604,7 +612,7 @@ foreach ($dirmodels as $reldir) } else { - print ''.img_picto($langs->trans("Disabled"),'switch_off').''; + print ''.img_picto($langs->trans("Disabled"),'switch_off').''; } print ''; From 7a69066dc849abfb326bddb27007d5173d0b5ccf Mon Sep 17 00:00:00 2001 From: Grand Philippe Date: Sat, 16 Mar 2013 15:24:14 +0100 Subject: [PATCH 8/8] enhancement of suppliers module --- htdocs/admin/supplier_invoice.php | 511 ++++++++++++++++++ .../{fournisseur.php => supplier_order.php} | 348 +----------- htdocs/core/modules/modFournisseur.class.php | 7 +- htdocs/langs/fr_FR/admin.lang | 1 + 4 files changed, 544 insertions(+), 323 deletions(-) create mode 100644 htdocs/admin/supplier_invoice.php rename htdocs/admin/{fournisseur.php => supplier_order.php} (57%) diff --git a/htdocs/admin/supplier_invoice.php b/htdocs/admin/supplier_invoice.php new file mode 100644 index 00000000000..49e31d1b86c --- /dev/null +++ b/htdocs/admin/supplier_invoice.php @@ -0,0 +1,511 @@ + + * Copyright (C) 2004-2011 Laurent Destailleur + * Copyright (C) 2005-2011 Regis Houssin + * Copyright (C) 2004 Sebastien Di Cintio + * Copyright (C) 2004 Benoit Mortier + * Copyright (C) 2010-2012 Juanjo Menent + * Copyright (C) 2011-2013 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 + * the Free Software Foundation; either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +/** + * \file htdocs/admin/supplier_invoice.php + * \ingroup fournisseur + * \brief Page d'administration-configuration du module Fournisseur + */ + +require '../main.inc.php'; +require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; +require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; +require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; + +$langs->load("admin"); +$langs->load("other"); +$langs->load("orders"); + +if (!$user->admin) +accessforbidden(); + +$type=GETPOST('type', 'alpha'); +$value=GETPOST('value', 'alpha'); +$action=GETPOST('action', 'alpha'); + +$specimenthirdparty=new Societe($db); +$specimenthirdparty->initAsSpecimen(); + + +/* + * Actions + */ + +if ($action == 'updateMask') +{ + $maskconstorder=GETPOST('maskconstorder','alpha'); + $maskorder=GETPOST('maskorder','alpha'); + + if ($maskconstorder) $res = dolibarr_set_const($db,$maskconstorder,$maskorder,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + $mesg = "".$langs->trans("SetupSaved").""; + } + else + { + $mesg = "".$langs->trans("Error").""; + } +} + +if ($action == 'specimen') // For invoices +{ + $modele=GETPOST('module','alpha'); + + $facture = new FactureFournisseur($db); + $facture->initAsSpecimen(); + $facture->thirdparty=$specimenthirdparty; // Define who should has build the invoice (so the supplier) + + // Search template files + $file=''; $classname=''; $filefound=0; + $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); + foreach($dirmodels as $reldir) + { + $file=dol_buildpath($reldir."core/modules/supplier_invoice/pdf/pdf_".$modele.".modules.php",0); + if (file_exists($file)) + { + $filefound=1; + $classname = "pdf_".$modele; + break; + } + } + + if ($filefound) + { + require_once $file; + + $module = new $classname($db,$facture); + + if ($module->write_file($facture,$langs) > 0) + { + header("Location: ".DOL_URL_ROOT."/document.php?modulepart=facture_fournisseur&file=SPECIMEN.pdf"); + return; + } + else + { + $mesg=''.$module->error.''; + dol_syslog($module->error, LOG_ERR); + } + } + else + { + $mesg=''.$langs->trans("ErrorModuleNotFound").''; + dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); + } +} + +if ($action == 'set') +{ + $label = GETPOST('label','alpha'); + $scandir = GETPOST('scandir','alpha'); + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)"; + $sql.= " VALUES ('".$db->escape($value)."','".$type."',".$conf->entity.", "; + $sql.= ($label?"'".$db->escape($label)."'":'null').", "; + $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null"); + $sql.= ")"; + $res=$db->query($sql); + if ($res) + { + + } + // else dol_print_error($db); +} + +if ($action == 'del') +{ + $sql = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; + $sql.= " WHERE nom = '".$value."'"; + $sql.= " AND type = '".$type."'"; + $sql.= " AND entity = ".$conf->entity; + $db->query($sql); + if ($res) + { + + } + // else dol_print_error($db); +} + +if ($action == 'setdoc') +{ + $label = GETPOST('label','alpha'); + $scandir = GETPOST('scandir','alpha'); + + $db->begin(); + + if ($type == 'order_supplier' && dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) + { + $conf->global->INVOICE_SUPPLIER_ADDON_PDF = $value; + } + + // On active le modele + $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; + $sql_del.= " WHERE nom = '".$db->escape($value)."'"; + $sql_del.= " AND type = '".$type."'"; + $sql_del.= " AND entity = ".$conf->entity; + $result1=$db->query($sql_del); + + $sql = "INSERT INTO ".MAIN_DB_PREFIX."document_model (nom, type, entity, libelle, description)"; + $sql.= " VALUES ('".$db->escape($value)."', '".$type."', ".$conf->entity.", "; + $sql.= ($label?"'".$db->escape($label)."'":'null').", "; + $sql.= (! empty($scandir)?"'".$db->escape($scandir)."'":"null"); + $sql.= ")"; + $result2=$db->query($sql); + if ($result1 && $result2) + { + $db->commit(); + } + else + { + $db->rollback(); + } +} + +if ($action == 'setmod') +{ + // TODO Verifier si module numerotation choisi peut etre active + // par appel methode canBeActivated + + dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_NUMBER",$value,'chaine',0,'',$conf->entity); +} + +if ($action == 'addcat') +{ + $fourn = new Fournisseur($db); + $fourn->CreateCategory($user,$_POST["cat"]); +} + +if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT') +{ + $freetext = GETPOST('SUPPLIER_INVOICE_FREE_TEXT'); // No alpha here, we want exact string + + $res = dolibarr_set_const($db, "SUPPLIER_INVOICE_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity); + + if (! $res > 0) $error++; + + if (! $error) + { + $mesg = "".$langs->trans("SetupSaved").""; + } + else + { + $mesg = "".$langs->trans("Error").""; + } +} + + +/* + * View + */ + +$dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); + +llxHeader("",""); + +$form=new Form($db); + +$linkback=''.$langs->trans("BackToModuleList").''; +print_fiche_titre($langs->trans("SuppliersSetup"),$linkback,'setup'); + +print "
"; + +$h = 0; + +$head[$h][0] = DOL_URL_ROOT."/admin/supplier_order.php"; +$head[$h][1] = $langs->trans("SupplierOrder"); +$head[$h][2] = 'Order'; +$h++; + +$head[$h][0] = DOL_URL_ROOT."/admin/supplier_invoice.php"; +$head[$h][1] = $langs->trans("SuppliersInvoice"); +$head[$h][2] = 'Invoice'; +$hselected=$h; +$h++; + +dol_fiche_head($head, $hselected, $langs->trans("ModuleSetup")); + + +// Supplier invoice numbering module + +print_titre($langs->trans("SuppliersInvoiceNumberingModel")); + +print '
'; +print ''; +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +clearstatcache(); + +foreach ($dirmodels as $reldir) +{ + $dir = dol_buildpath($reldir."core/modules/supplier_invoice/"); + + if (is_dir($dir)) + { + $handle = opendir($dir); + if (is_resource($handle)) + { + $var=true; + + while (($file = readdir($handle))!==false) + { + if (substr($file, 0, 25) == 'mod_facture_fournisseur_' && substr($file, dol_strlen($file)-3, 3) == 'php') + { + $file = substr($file, 0, dol_strlen($file)-4); + + require_once $dir.$file.'.php'; + + $module = new $file; + + if ($module->isEnabled()) + { + // Show modules according to features level + if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) continue; + if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) continue; + + $var=!$var; + print ''; + + // Show example of numbering module + print ''."\n"; + + print ''; + + $invoice=new FactureFournisseur($db); + $invoice->initAsSpecimen(); + + // Info + $htmltooltip=''; + $htmltooltip.=''.$langs->trans("Version").': '.$module->getVersion().'
'; + $nextval=$module->getNextValue($mysoc,$invoice); + if ("$nextval" != $langs->trans("NotAvailable")) // Keep " on nextval + { + $htmltooltip.=''.$langs->trans("NextValue").': '; + if ($nextval) + { + $htmltooltip.=$nextval.'
'; + } + else + { + $htmltooltip.=$langs->trans($module->error).'
'; + } + } + + print ''; + + print ''; + } + } + } + closedir($handle); + } + } +} + +print '
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Example").''.$langs->trans("Status").''.$langs->trans("Info").'
'.$module->nom."\n"; + print $module->info(); + print ''; + $tmp=$module->getExample(); + if (preg_match('/^Error/',$tmp)) { + $langs->load("errors"); print '
'.$langs->trans($tmp).'
'; + } + elseif ($tmp=='NotConfigured') print $langs->trans($tmp); + else print $tmp; + print '
'; + if ($conf->global->INVOICE_SUPPLIER_ADDON_NUMBER == "$file") + { + print img_picto($langs->trans("Activated"),'switch_on'); + } + else + { + print ''.img_picto($langs->trans("Disabled"),'switch_off').''; + } + print ''; + print $form->textwithpicto('',$htmltooltip,1,0); + print '

'; + + + + +/* + * Modeles documents for supplier invoices + */ + +print_titre($langs->trans("BillsPDFModules")); + +// Defini tableau def de modele +$def = array(); + +$sql = "SELECT nom"; +$sql.= " FROM ".MAIN_DB_PREFIX."document_model"; +$sql.= " WHERE type = 'order_supplier'"; +$sql.= " AND entity = ".$conf->entity; + +$resql=$db->query($sql); +if ($resql) +{ + $i = 0; + $num_rows=$db->num_rows($resql); + while ($i < $num_rows) + { + $array = $db->fetch_array($resql); + array_push($def, $array[0]); + $i++; + } +} +else +{ + dol_print_error($db); +} + +print ''."\n"; +print ''."\n"; +print ''."\n"; +print ''."\n"; +print ''."\n"; +print ''."\n"; +print ''; +print ''."\n"; + +clearstatcache(); + +foreach ($dirmodels as $reldir) +{ + $dir = dol_buildpath($reldir."core/modules/supplier_invoice/pdf/"); + + if (is_dir($dir)) + { + $var=true; + + $handle=opendir($dir); + + + if (is_resource($handle)) + { + while (($file = readdir($handle))!==false) + { + if (preg_match('/\.modules\.php$/i',$file) && substr($file,0,4) == 'pdf_') + { + $name = substr($file, 4, dol_strlen($file) -16); + $classname = substr($file, 0, dol_strlen($file) -12); + + $var=!$var; + print "\n"; + print "\n"; + print "\n"; + + // Active + if (in_array($name, $def)) + { + print '"; + } + else + { + print '"; + } + + // Defaut + print ''; + + // Info + $htmltooltip = ''.$langs->trans("Name").': '.$module->name; + $htmltooltip.='
'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown")); + $htmltooltip.='
'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur; + $htmltooltip.='

'.$langs->trans("FeaturesSupported").':'; + $htmltooltip.='
'.$langs->trans("Logo").': '.yn($module->option_logo,1,1); + $htmltooltip.='
'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1); + $htmltooltip.='
'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1); + print ''; + print ''; + + print "\n"; + } + } + + closedir($handle); + } + } +} + +print '
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Status").''.$langs->trans("Default").''.$langs->trans("Info").'
".$name."\n"; + require_once $dir.$file; + $module = new $classname($db,$specimenthirdparty); + print $module->description; + print "'."\n"; + if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF != "$name") + { + print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier">'; + print img_picto($langs->trans("Enabled"),'switch_on'); + print ''; + } + else + { + print img_picto($langs->trans("Enabled"),'switch_on'); + } + print "'."\n"; + print 'scandir.'&label='.urlencode($module->name).'&type=order_supplier">'.img_picto($langs->trans("Disabled"),'switch_off').''; + print "'; + if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF == "$name") + { + print img_picto($langs->trans("Default"),'on'); + } + else + { + print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier"" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').''; + } + print ''; + print $form->textwithpicto('',$htmltooltip,1,0); + print ''; + print ''.img_object($langs->trans("Preview"),'order').''; + print '

'; + +print_titre($langs->trans("OtherOptions")); +print ''; +print ''; +print ''; +print ''; +print ''; +print "\n"; + +print ''; +print ''; +print ''; +print '\n"; +print ''; + +dol_htmloutput_mesg($mesg); + +$db->close(); +llxFooter(); +?> diff --git a/htdocs/admin/fournisseur.php b/htdocs/admin/supplier_order.php similarity index 57% rename from htdocs/admin/fournisseur.php rename to htdocs/admin/supplier_order.php index b26b156cebf..aa609d65721 100644 --- a/htdocs/admin/fournisseur.php +++ b/htdocs/admin/supplier_order.php @@ -5,7 +5,7 @@ * Copyright (C) 2004 Sebastien Di Cintio * Copyright (C) 2004 Benoit Mortier * Copyright (C) 2010-2012 Juanjo Menent - * Copyright (C) 2011 Philippe Grand + * Copyright (C) 2011-2013 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 @@ -22,7 +22,7 @@ */ /** - * \file htdocs/admin/fournisseur.php + * \file htdocs/admin/supplier_order.php * \ingroup fournisseur * \brief Page d'administration-configuration du module Fournisseur */ @@ -31,10 +31,10 @@ require '../main.inc.php'; require_once DOL_DOCUMENT_ROOT.'/core/lib/admin.lib.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.class.php'; require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.commande.class.php'; -require_once DOL_DOCUMENT_ROOT.'/fourn/class/fournisseur.facture.class.php'; $langs->load("admin"); -$langs->load('other'); +$langs->load("other"); +$langs->load("orders"); if (!$user->admin) accessforbidden(); @@ -116,71 +116,6 @@ if ($action == 'specimen') // For orders } } -if ($action == 'updateMaskInvoice') -{ - $maskconstinvoice=GETPOST('maskconstinvoice','alpha'); - $maskinvoice=GETPOST('maskinvoice','alpha'); - - if ($maskconstinvoice) $res = dolibarr_set_const($db,$maskconstinvoice,$maskinvoice,'chaine',0,'',$conf->entity); - - if (! $res > 0) $error++; - - if (! $error) - { - $mesg = "".$langs->trans("SetupSaved").""; - } - else - { - $mesg = "".$langs->trans("Error").""; - } -} - -if ($action == 'specimenfacture') // For invoices -{ - $modele=GETPOST('module','alpha'); - - $facture = new FactureFournisseur($db); - $facture->initAsSpecimen(); - $facture->thirdparty=$specimenthirdparty; // Define who should has build the invoice (so the supplier) - - // Search template files - $file=''; $classname=''; $filefound=0; - $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); - foreach($dirmodels as $reldir) - { - $file=dol_buildpath($reldir."core/modules/supplier_invoice/pdf/pdf_".$modele.".modules.php",0); - if (file_exists($file)) - { - $filefound=1; - $classname = "pdf_".$modele; - break; - } - } - - if ($filefound) - { - require_once $file; - - $module = new $classname($db,$facture); - - if ($module->write_file($facture,$langs) > 0) - { - header("Location: ".DOL_URL_ROOT."/document.php?modulepart=facture_fournisseur&file=SPECIMEN.pdf"); - return; - } - else - { - $mesg=''.$module->error.''; - dol_syslog($module->error, LOG_ERR); - } - } - else - { - $mesg=''.$langs->trans("ErrorModuleNotFound").''; - dol_syslog($langs->trans("ErrorModuleNotFound"), LOG_ERR); - } -} - if ($action == 'set') { $label = GETPOST('label','alpha'); @@ -225,11 +160,6 @@ if ($action == 'setdoc') $conf->global->COMMANDE_SUPPLIER_ADDON_PDF = $value; } - if ($type == 'invoice_supplier' && dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON_PDF",$value,'chaine',0,'',$conf->entity)) - { - $conf->global->INVOICE_SUPPLIER_ADDON_PDF = $value; - } - // On active le modele $sql_del = "DELETE FROM ".MAIN_DB_PREFIX."document_model"; $sql_del.= " WHERE nom = '".$db->escape($value)."'"; @@ -261,25 +191,17 @@ if ($action == 'setmod') dolibarr_set_const($db, "COMMANDE_SUPPLIER_ADDON",$value,'chaine',0,'',$conf->entity); } -if ($action == 'invoicesetmod') -{ - // TODO Verifier si module numerotation choisi peut etre active - // par appel methode canBeActivated - - dolibarr_set_const($db, "INVOICE_SUPPLIER_ADDON",$value,'chaine',0,'',$conf->entity); -} - if ($action == 'addcat') { $fourn = new Fournisseur($db); $fourn->CreateCategory($user,$_POST["cat"]); } -if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT') +if ($action == 'set_SUPPLIER_ORDER_FREE_TEXT') { - $freetext = GETPOST('SUPPLIER_INVOICE_FREE_TEXT'); // No alpha here, we want exact string + $freetext = GETPOST('SUPPLIER_ORDER_FREE_TEXT'); // No alpha here, we want exact string - $res = dolibarr_set_const($db, "SUPPLIER_INVOICE_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity); + $res = dolibarr_set_const($db, "SUPPLIER_ORDER_FREE_TEXT",$freetext,'chaine',0,'',$conf->entity); if (! $res > 0) $error++; @@ -300,7 +222,7 @@ if ($action == 'set_SUPPLIER_INVOICE_FREE_TEXT') $dirmodels=array_merge(array('/'),(array) $conf->modules_parts['models']); -llxHeader(); +llxHeader("",""); $form=new Form($db); @@ -309,6 +231,22 @@ print_fiche_titre($langs->trans("SuppliersSetup"),$linkback,'setup'); print "
"; +$h = 0; + +$head[$h][0] = DOL_URL_ROOT."/admin/supplier_order.php"; +$head[$h][1] = $langs->trans("SupplierOrder"); +$head[$h][2] = 'Order'; +$hselected=$h; +$h++; + +$head[$h][0] = DOL_URL_ROOT."/admin/supplier_invoice.php"; +$head[$h][1] = $langs->trans("SuppliersInvoice"); +$head[$h][2] = 'Invoice'; + +$h++; + +dol_fiche_head($head, $hselected, $langs->trans("ModuleSetup")); + // Supplier order numbering module @@ -548,240 +486,6 @@ foreach ($dirmodels as $reldir) print '
'.$langs->trans("Parameter").''.$langs->trans("Value").' 
'; +print $langs->trans("FreeLegalTextOnInvoices").' ('.$langs->trans("AddCRIfTooLong").')
'; +print ''; +print '
'; +print ''; +print "

'; -// Supplier invoice numbering model - -print_titre($langs->trans("InvoicesNumberingModels")); - -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print ''; -print "\n"; - -clearstatcache(); - -foreach ($dirmodels as $reldir) -{ - $dir = dol_buildpath($reldir."core/modules/supplier_invoice/"); - - if (is_dir($dir)) - { - $handle = opendir($dir); - if (is_resource($handle)) - { - $var=true; - - while (($file = readdir($handle))!==false) - { - if (substr($file, 0, 25) == 'mod_facture_fournisseur_' && substr($file, dol_strlen($file)-3, 3) == 'php') - { - $file = substr($file, 0, dol_strlen($file)-4); - - require_once $dir.$file.'.php'; - - $module = new $file; - - if ($module->isEnabled()) - { - // Show modules according to features level - if ($module->version == 'development' && $conf->global->MAIN_FEATURES_LEVEL < 2) continue; - if ($module->version == 'experimental' && $conf->global->MAIN_FEATURES_LEVEL < 1) continue; - - $var=!$var; - print ''; - - // Show example of numbering model - print ''."\n"; - - print ''; - - $invoice=new FactureFournisseur($db); - $invoice->initAsSpecimen(); - - // Info - $htmltooltip=''; - $htmltooltip.=''.$langs->trans("Version").': '.$module->getVersion().'
'; - $nextval=$module->getNextValue($mysoc,$invoice); - if ("$nextval" != $langs->trans("NotAvailable")) // Keep " on nextval - { - $htmltooltip.=''.$langs->trans("NextValue").': '; - if ($nextval) - { - $htmltooltip.=$nextval.'
'; - } - else - { - $htmltooltip.=$langs->trans($module->error).'
'; - } - } - - print ''; - - print ''; - } - } - } - closedir($handle); - } - } -} - -print '
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Example").''.$langs->trans("Status").''.$langs->trans("Info").'
'.$module->nom."\n"; - print $module->info(); - print ''; - $tmp=$module->getExample(); - if (preg_match('/^Error/',$tmp)) { - $langs->load("errors"); print '
'.$langs->trans($tmp).'
'; - } - elseif ($tmp=='NotConfigured') print $langs->trans($tmp); - else print $tmp; - print '
'; - if ($conf->global->INVOICE_SUPPLIER_ADDON == "$file") - { - print img_picto($langs->trans("Activated"),'switch_on'); - } - else - { - print ''.img_picto($langs->trans("Disabled"),'switch_off').''; - } - print ''; - print $form->textwithpicto('',$htmltooltip,1,0); - print '

'; - -/* - * Modeles documents for supplier invoices - */ - -print_titre($langs->trans("BillsPDFModules")); - -// Defini tableau def de modele -$def = array(); - -$sql = "SELECT nom"; -$sql.= " FROM ".MAIN_DB_PREFIX."document_model"; -$sql.= " WHERE type = 'invoice_supplier'"; -$sql.= " AND entity = ".$conf->entity; - -$resql=$db->query($sql); -if ($resql) -{ - $i = 0; - $num_rows=$db->num_rows($resql); - while ($i < $num_rows) - { - $array = $db->fetch_array($resql); - array_push($def, $array[0]); - $i++; - } -} -else -{ - dol_print_error($db); -} - - -print ''."\n"; -print ''."\n"; -print ''."\n"; -print ''."\n"; -print ''."\n"; -print ''."\n"; -print ''; -print ''."\n"; - -clearstatcache(); - -foreach ($dirmodels as $reldir) -{ - $dir = dol_buildpath($reldir."core/modules/supplier_invoice/pdf/"); - - if (is_dir($dir)) - { - $var=true; - - $handle=opendir($dir); - - if (is_resource($handle)) - { - while (($file = readdir($handle)) !== false) - { - if (preg_match('/\.modules\.php$/i',$file) && substr($file,0,4) == 'pdf_') - { - $name = substr($file, 4, dol_strlen($file) -16); - $classname = substr($file, 0, dol_strlen($file) -12); - - $var=!$var; - print "\n"; - print "\n"; - print "\n"; - - // Active - if (in_array($name, $def)) - { - print ""; - } - else - { - print ""; - } - - // Defaut - print "'; - - // Info - $htmltooltip = ''.$langs->trans("Name").': '.$module->name; - $htmltooltip.='
'.$langs->trans("Type").': '.($module->type?$module->type:$langs->trans("Unknown")); - $htmltooltip.='
'.$langs->trans("Width").'/'.$langs->trans("Height").': '.$module->page_largeur.'/'.$module->page_hauteur; - $htmltooltip.='

'.$langs->trans("FeaturesSupported").':'; - $htmltooltip.='
'.$langs->trans("Logo").': '.yn($module->option_logo,1,1); - $htmltooltip.='
'.$langs->trans("PaymentMode").': '.yn($module->option_modereg,1,1); - $htmltooltip.='
'.$langs->trans("PaymentConditions").': '.yn($module->option_condreg,1,1); - print ''; - print ''; - - print "\n"; - } - } - closedir($handle); - } - } -} - -print '
'.$langs->trans("Name").''.$langs->trans("Description").''.$langs->trans("Status").''.$langs->trans("Default").''.$langs->trans("Info").'
".$name.""; - require_once $dir.$file; - $module = new $classname($db,$specimenthirdparty); - print $module->description; - print "\n"; - if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF != "$name") - { - print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier">'; - print img_picto($langs->trans("Enabled"),'switch_on'); - print ''; - } - else - { - print img_picto($langs->trans("Enabled"),'switch_on'); - } - print "\n"; - print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier">'.img_picto($langs->trans("Disabled"),'switch_off').''; - print ""; - if ($conf->global->INVOICE_SUPPLIER_ADDON_PDF == "$name") - { - print img_picto($langs->trans("Default"),'on'); - } - else - { - print 'scandir.'&label='.urlencode($module->name).'&type=invoice_supplier" alt="'.$langs->trans("Default").'">'.img_picto($langs->trans("Disabled"),'off').''; - } - print ''; - print $form->textwithpicto('',$htmltooltip,1,0); - print ''; - print ''.img_object($langs->trans("Preview"),'bill').''; - print '

'; - print_titre($langs->trans("OtherOptions")); print ''; print ''; @@ -792,10 +496,10 @@ print "\n"; print ''; print ''; -print ''; +print ''; print '\n"; diff --git a/htdocs/core/modules/modFournisseur.class.php b/htdocs/core/modules/modFournisseur.class.php index 4cb3b9163ef..7ca64a2c524 100644 --- a/htdocs/core/modules/modFournisseur.class.php +++ b/htdocs/core/modules/modFournisseur.class.php @@ -72,7 +72,7 @@ class modFournisseur extends DolibarrModules $this->langfiles = array('bills', 'companies', 'suppliers', 'orders'); // Config pages - $this->config_page_url = array("fournisseur.php"); + $this->config_page_url = array("supplier_order.php"); // Constantes $this->const = array(); @@ -92,6 +92,11 @@ class modFournisseur extends DolibarrModules $this->const[$r][1] = "chaine"; $this->const[$r][2] = "canelle"; $r++; + + $this->const[$r][0] = "INVOICE_SUPPLIER_ADDON_NUMBER"; + $this->const[$r][1] = "chaine"; + $this->const[$r][2] = "tulip"; + $r++; // Boxes $this->boxes = array(); diff --git a/htdocs/langs/fr_FR/admin.lang b/htdocs/langs/fr_FR/admin.lang index 04a95bf5980..ccf194dfeb0 100644 --- a/htdocs/langs/fr_FR/admin.lang +++ b/htdocs/langs/fr_FR/admin.lang @@ -1383,6 +1383,7 @@ MultiCompanySetup=Configuration du module Multi-société SuppliersSetup=Configuration du module Fournisseurs SuppliersCommandModel=Modèle de commandes fournisseur complet (logo...) SuppliersInvoiceModel=Modèle de factures fournisseur complet (logo...) +SuppliersInvoiceNumberingModel=Modèles de numérotation des factures fournisseur ##### GeoIPMaxmind ##### GeoIPMaxmindSetup=Configuration du module GeoIP Maxmind PathToGeoIPMaxmindCountryDataFile=Chemin du fichier Maxmind contenant les conversions IP->Pays.
Exemple: /usr/local/share/GeoIP/GeoIP.dat
'; print $langs->trans("FreeLegalTextOnInvoices").' ('.$langs->trans("AddCRIfTooLong").')
'; -print ''; +print ''; print '
'; print ''; print "