From 940cf2bc31929ef55e7ebb22481753908e2bc13c Mon Sep 17 00:00:00 2001 From: Laurent Destailleur Date: Tue, 8 Jul 2008 22:29:34 +0000 Subject: [PATCH] Fix: Numbering errors --- .../modules/commande/mod_commande_marbre.php | 32 ++++-------------- .../modules/facture/terre/terre.modules.php | 4 +-- .../modules/propale/mod_propale_marbre.php | 33 +++++-------------- 3 files changed, 18 insertions(+), 51 deletions(-) diff --git a/htdocs/includes/modules/commande/mod_commande_marbre.php b/htdocs/includes/modules/commande/mod_commande_marbre.php index b2b474322e2..88e3ead542a 100644 --- a/htdocs/includes/modules/commande/mod_commande_marbre.php +++ b/htdocs/includes/modules/commande/mod_commande_marbre.php @@ -1,5 +1,5 @@ +/* Copyright (C) 2005-2008 Laurent Destailleur * Copyright (C) 2005-2006 Regis Houssin * * This program is free software; you can redistribute it and/or modify @@ -93,16 +93,17 @@ class mod_commande_marbre extends ModeleNumRefCommandes global $db; // D'abord on récupère la valeur max (réponse immédiate car champ indéxé) - $coyymm=''; - $sql = "SELECT MAX(ref)"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande"; + $posindice=8; + $sql = "SELECT MAX(0+SUBSTRING(ref,".$posindice.")) as max"; + $sql.= " FROM ".MAIN_DB_PREFIX."commande"; $sql.= " WHERE ref like '".$this->prefix."%'"; $resql=$db->query($sql); if ($resql) { - $row = $db->fetch_row($resql); - if ($row) $coyymm = substr($row[0],0,6); + $obj = $db->fetch_object($resql); + if ($obj) $max = $obj->max; + else $max=0; } else { @@ -110,25 +111,6 @@ class mod_commande_marbre extends ModeleNumRefCommandes return -1; } - // Si champ respectant le modèle a été trouvée - if (eregi('^'.$this->prefix.'[0-9][0-9][0-9][0-9]',$coyymm)) - { - // Recherche rapide car restreint par un like sur champ indexé - $posindice=8; - $sql = "SELECT MAX(0+SUBSTRING(ref,$posindice))"; - $sql.= " FROM ".MAIN_DB_PREFIX."commande"; - $sql.= " WHERE ref like '${coyymm}%'"; - $resql=$db->query($sql); - if ($resql) - { - $row = $db->fetch_row($resql); - $max = $row[0]; - } - } - else - { - $max=0; - } //$date=time(); $date=$commande->date; $yymm = strftime("%y%m",$date); diff --git a/htdocs/includes/modules/facture/terre/terre.modules.php b/htdocs/includes/modules/facture/terre/terre.modules.php index c5ff160ad66..0ac07f84742 100644 --- a/htdocs/includes/modules/facture/terre/terre.modules.php +++ b/htdocs/includes/modules/facture/terre/terre.modules.php @@ -121,7 +121,7 @@ class mod_facture_terre extends ModeleNumRefFactures // D'abord on récupère la valeur max (réponse immédiate car champ indéxé) $posindice=8; - $sql = "SELECT MAX(facnumber+SUBSTRING(facnumber,".$posindice.")) as ref"; + $sql = "SELECT MAX(0+SUBSTRING(facnumber,".$posindice.")) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber like '".$prefix."%'"; @@ -129,7 +129,7 @@ class mod_facture_terre extends ModeleNumRefFactures if ($resql) { $obj = $db->fetch_object($resql); - if ($obj) $max = $obj->ref; + if ($obj) $max = $obj->max; else $max=0; } else diff --git a/htdocs/includes/modules/propale/mod_propale_marbre.php b/htdocs/includes/modules/propale/mod_propale_marbre.php index dcbf4505d19..e46e282c698 100644 --- a/htdocs/includes/modules/propale/mod_propale_marbre.php +++ b/htdocs/includes/modules/propale/mod_propale_marbre.php @@ -95,14 +95,17 @@ class mod_propale_marbre extends ModeleNumRefPropales global $db; // D'abord on récupère la valeur max (réponse immédiate car champ indéxé) - $pryymm=''; - $sql = "SELECT MAX(ref)"; + $posindice=8; + $sql = "SELECT MAX(0+SUBSTRING(ref,".$posindice.")) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."propal"; + $sql.= " WHERE ref like '".$this->prefix."%'"; + $resql=$db->query($sql); if ($resql) { - $row = $db->fetch_row($resql); - if ($row) $pryymm = substr($row[0],0,6); + $obj = $db->fetch_object($resql); + if ($obj) $max = $obj->max; + else $max=0; } else { @@ -110,27 +113,9 @@ class mod_propale_marbre extends ModeleNumRefPropales return -1; } - // Si champ respectant le modèle a été trouvée - if (eregi('^'.$this->prefix.'[0-9][0-9][0-9][0-9]',$pryymm)) - { - // Recherche rapide car restreint par un like sur champ indexé - $posindice=8; - $sql = "SELECT MAX(0+SUBSTRING(ref,".$posindice."))"; - $sql.= " FROM ".MAIN_DB_PREFIX."propal"; - $sql.= " WHERE ref like '".$pryymm."%'"; - $resql=$db->query($sql); - if ($resql) - { - $row = $db->fetch_row($resql); - $max = $row[0]; - } - } - else - { - $max=0; - } + $date=$propal->date; //$yymm = strftime("%y%m",time()); - $yymm = strftime("%y%m",$propal->date); + $yymm = strftime("%y%m",$date); $num = sprintf("%04s",$max+1); dolibarr_syslog("mod_propale_marbre::getNextValue return ".$this->prefix.$yymm."-".$num);