diff --git a/htdocs/includes/modules/societe/mod_codeclient_tigre.php b/htdocs/includes/modules/societe/mod_codeclient_tigre.php index 26c55826638..59fc21f94eb 100644 --- a/htdocs/includes/modules/societe/mod_codeclient_tigre.php +++ b/htdocs/includes/modules/societe/mod_codeclient_tigre.php @@ -48,6 +48,8 @@ class mod_codeclient_tigre extends ModeleThirdPartyCode var $searchcode; // String de recherche var $numbitcounter; // Nombre de chiffres du compteur + var $substrBegin; + var $substrEnd; /** \brief Constructeur classe @@ -114,7 +116,7 @@ class mod_codeclient_tigre extends ModeleThirdPartyCode } else { - $example = $this->getNextValue($objsoc,1)."
".$this->getNextValue($objsoc,2); + $example = $this->getNextValue($objsoc,1);//."
".$this->getNextValue($objsoc,2); } return $example; } @@ -140,6 +142,7 @@ class mod_codeclient_tigre extends ModeleThirdPartyCode // On récupère la valeur max (réponse immédiate car champ indéxé) $posindice = $this->numbitcounter; + if ($this->substrEnd > 0) $substrEnd = ',-'.$this->substrEnd; $searchyy=''; $sql = "SELECT MAX(".$field.")"; $sql.= " FROM ".MAIN_DB_PREFIX."societe"; @@ -148,8 +151,11 @@ class mod_codeclient_tigre extends ModeleThirdPartyCode if ($resql) { $row = $db->fetch_row($resql); - //print $row[0]; - //if ($row) $searchyy = substr($row[0],0,-$posindice); + //print 'row='.$row[0].'
'; + //print 'begin='.$this->substrBegin.'
'; + //print 'end='.$this->substrEnd.'
'; + if ($row) $count = substr($row[0],$this->substrBegin.$substrEnd); + //print 'count='.$count.'
'; } /* // Si au moins un champ respectant le modèle a été trouvée @@ -200,65 +206,159 @@ class mod_codeclient_tigre extends ModeleThirdPartyCode $mask = $conf->global->CODE_TIGRE_MASK_SUPPLIER; } - // Ajout du jour en cours - if (eregi('(\{d{2}\})',$mask)) - { - $mask = eregi_replace('(\{d{2}\})',strftime("%d",time()),$mask); - } - else if (eregi('\{d+\}',$mask) && (eregi('\{d+\}',$mask) != '{dd}')) - { - return -1; - } + $maskElement = preg_split('/[|]{1}/', $mask); + + $foundCounter = 0; + $substrBegin = 0; + $substrEnd = 0; + $maskRebuild = ''; + $error = 0; + + for ($i = 0; $i < count($maskElement); $i++) + { + // Ajout du jour en cours + if ($maskElement[$i] == '{dd}') + { + $maskRebuild .= strftime("%d",time()); + if ($foundCounter==0) + { + $substrBegin += 2; + } + else + { + $substrEnd += 2; + } + } + else if (eregi('\{d+\}',$mask) && (eregi('\{d+\}',$mask) != '{dd}')) + { + $error++; + } - // Ajout du mois en cours - if (eregi('(\{m{2}\})',$mask)) - { - $mask = eregi_replace('(\{m{2}\})',strftime("%m",time()),$mask); - } - else if (eregi('\{m+\}',$mask) && (eregi('\{m+\}',$mask) != '{mm}')) - { - return -2; - } + // Ajout du mois en cours + if ($maskElement[$i] == '{mm}') + { + $maskRebuild .= strftime("%m",time()); + if ($foundCounter==0) + { + $substrBegin += 2; + } + else + { + $substrEnd += 2; + } + } + else if (eregi('\{m+\}',$mask) && (eregi('\{m+\}',$mask) != '{mm}')) + { + $error++; + } - // Ajout de l'année en cours - if (eregi('\{a{2}\}',$mask)) - { - $mask = eregi_replace('\{a{2}\}',substr(strftime("%Y",time()),2),$mask); - } - else if (eregi('\{a{4}\}',$mask)) - { - $mask = eregi_replace('\{a{4}\}',strftime("%Y",time()),$mask); - } - else if (eregi('\{a+\}',$mask) && ((eregi('\{a+\}',$mask) != '{aa}') || (eregi('\{a+\}',$mask) != '{aaa}'))) - { - return -3; - } + // Ajout de l'année en cours + if ($maskElement[$i] == '{aa}') + { + $maskRebuild .= substr(strftime("%Y",time()),2); + if ($foundCounter==0) + { + $substrBegin += 2; + } + else + { + $substrEnd += 2; + } + } + else if ($maskElement[$i] == '{aaaa}') + { + $maskRebuild .= strftime("%Y",time()); + if ($foundCounter==0) + { + $substrBegin += 4; + } + else + { + $substrEnd += 4; + } + } + else if (eregi('\{a+\}',$maskElement[$i]) && ((eregi('\{a+\}',$maskElement[$i]) != '{aa}') || (eregi('\{a+\}',$maskElement[$i]) != '{aaa}'))) + { + $error++; + } - // Ajout du préfix de la société - if (is_object($objsoc) && $objsoc->prefix_comm && eregi('\{pre\}',$mask)) - { - $mask = eregi_replace('\{pre\}',strtoupper($objsoc->prefix_comm),$mask); - } - else if (is_object($objsoc) && !$objsoc->prefix_comm && eregi('\{pre\}',$mask)) - { - return -4; - } - else if (!is_object($objsoc) && eregi('\{pre\}',$mask)) - { - $mask = eregi_replace('\{pre\}','ABC',$mask); - } + // Ajout du préfix de la société + if (is_object($objsoc) && $objsoc->prefix_comm && $maskElement[$i] == '{pre}') + { + $maskRebuild .= strtoupper($objsoc->prefix_comm); + $prefixLength = strlen($objsoc->prefix_comm); + if ($foundCounter==0) + { + $substrBegin += $prefixLength; + } + else + { + $substrEnd += $prefixLength; + } + } + else if (is_object($objsoc) && !$objsoc->prefix_comm && $maskElement[$i] == '{pre}') + { + $error++; + } + else if (!is_object($objsoc) && $maskElement[$i] == '{pre}') + { + $maskRebuild .= 'ABC'; + if ($foundCounter==0) + { + $substrBegin += 3; + } + else + { + $substrEnd += 3; + } + } + + // Ajout des séparateurs éventuels + if (eregi('[\/-]{1}',$maskElement[$i])) + { + $maskRebuild .= $maskElement[$i]; + if ($foundCounter==0) + { + $substrBegin++; + } + else + { + $substrEnd++; + } + } + + // Ajout des champs libres éventuels + if (eregi('^[0-9A-Z]+$',$maskElement[$i])) + { + $maskRebuild .= $maskElement[$i]; + $MaskElementLength = strlen($maskElement[$i]); + if ($foundCounter==0) + { + $substrBegin += $MaskElementLength; + } + else + { + $substrEnd += $MaskElementLength; + } + } - // Définition du compteur - if (eregi('\{0+\}',$mask)) - { - preg_match('/\{0+\}/',$mask,$regs); - // Défini le nombre de chiffres du compteur - $this->numbitcounter = strlen(substr($regs[0],1,-1)); - // Permettra d'effectuer une recherche dans la table - $this->searchcode = eregi_replace('\{0{'.$this->numbitcounter.'}\}','([0-9]{'.$this->numbitcounter.'})',$mask); + // Définition du compteur + if (eregi('\{0+\}',$maskElement[$i])) + { + // Défini le nombre de chiffres du compteur + $this->numbitcounter = strlen(substr($maskElement[$i],1,-1)); + // Permettra d'effectuer une recherche dans la table + $this->searchcode = $maskRebuild . '([0-9]{'.$this->numbitcounter.'})'; + + $maskRebuild .= $maskElement[$i]; + $foundCounter = 1; + } } - - return $mask; + $this->substrBegin = $substrBegin; + $this->substrEnd = $substrEnd; + //print 'begin='.$this->substrBegin.'
'; + //print 'end='.$this->substrEnd.'
'; + return $maskRebuild; }