Début ajout du modèle personnalisable "tigre" avec numérotation automatique pour les codes clients et fournisseurs.

This commit is contained in:
Regis Houssin 2007-09-18 20:02:40 +00:00
parent ff9c23cd12
commit 2ff6e99c03

View File

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