En me servant du patch permettant de rendre saphir plus robuste,
j'ai rajouté la prise en compte du code client via le masque {cccc}
Il permet donc maintenant l'utilisation d’un masque {cccc} récupérant
les 0 à n (ici 4) premières lettres du code client pour constituer le
masque avant de récupérer la valeur du compteur propre à ce nouveau
masque (via un test avec un like, qui teste la correspondance des
caractères non spéciaux et ne faisant pas parti d'un masque numérique -
date ou compteur -, ainsi que la taille de la chaine).
Si cela vous convient, j'appliquerais les modifications aussi pour les
commandes, et peut être les interventions mais pas aux factures pour les
raisons juridiques déjà évoquées(nécessité d’avoir une continuité dans
les numéros de factures)
*Raphaël Bertrand*
Résultic - Management & Informatique
Siège : 11 rue Tronchet - 69006 LYON
Bureaux : 11 pl Maréchal Lyautey - 69006 LYON
Fixe. 08 74 77 00 70
Fax. 08 25 24 85 02
E-Mail : [EMAIL PROTECTED]
Lionel Chamussy a écrit :
Raphaël,
Peux tu regarder ce point, et proposer un patch qui aille dans ce sens
pour les propositions, commandes, (et interventions ?).
Merci.
Index: mod_propale_saphir.php
===================================================================
RCS file:
/sources/dolibarr/dolibarr/htdocs/includes/modules/propale/mod_propale_saphir.php,v
retrieving revision 1.17
diff -u -r1.17 mod_propale_saphir.php
--- mod_propale_saphir.php 1 May 2008 09:38:28 -0000 1.17
+++ mod_propale_saphir.php 12 Jun 2008 15:41:14 -0000
@@ -111,10 +111,15 @@
$maskraz=-1;
$maskoffset=0;
if (strlen($maskcounter) < 3) return
'CounterMustHaveMoreThan3Digits';
-
+ if (eregi('\{(c+)\}',$mask,$regmaskclientcode))
+ {
+ $maskclientcode=$regmaskclientcode[1];
+
$clientcode=sanitize_string(substr($objsoc->code_client,0,strlen($maskclientcode)));
+ }
$maskwithonlyymcode=$mask;
$maskwithonlyymcode=eregi_replace('\{(0+)([EMAIL
PROTECTED])?([EMAIL PROTECTED])?\}',$maskcounter,$maskwithonlyymcode);
$maskwithonlyymcode=eregi_replace('\{dd\}','dd',$maskwithonlyymcode);
+
$maskwithonlyymcode=eregi_replace('\{(c+)\}',$maskclientcode,$maskwithonlyymcode);
$maskwithnocode=$maskwithonlyymcode;
$maskwithnocode=eregi_replace('\{yyyy\}','yyyy',$maskwithnocode);
$maskwithnocode=eregi_replace('\{yy\}','yy',$maskwithnocode);
@@ -158,12 +163,24 @@
if ($posnumstart < 0) return 'ErrorBadMask';
$sqlstring='SUBSTRING(ref, '.($posnumstart+1).',
'.strlen($maskcounter).')';
//print "x".$sqlstring;
-
+
+ // Build maskLike
+ $maskLike = sanitize_string($mask);
+ $maskLike = str_replace("%","_",$maskLike);
+ // Replace protected special codes with matching number of _ as
wild card caracter
+ $maskLike =
str_replace(sanitize_string('{yyyy}'),'____',$maskLike);
+ $maskLike = str_replace(sanitize_string('{yy}'),'__',$maskLike);
+ $maskLike = str_replace(sanitize_string('{y}'),'_',$maskLike);
+ $maskLike = str_replace(sanitize_string('{mm}'),'_',$maskLike);
+ $maskLike = str_replace(sanitize_string('{dd}'),'__',$maskLike);
+ $maskLike =
str_replace(sanitize_string('{'.$masktri.'}'),str_pad("",strlen($maskcounter),"_"),$maskLike);
+ $maskLike =
str_replace(sanitize_string('{'.$maskclientcode.'}'),$clientcode,$maskLike);
// Get counter in database
$counter=0;
$sql = "SELECT MAX(".$sqlstring.") as val";
$sql.= " FROM ".MAIN_DB_PREFIX."propal";
- $sql.= " WHERE ref not like '(%'";
+ //$sql.= " WHERE ref not like '(%'";
+ $sql.= " WHERE ref like '".$maskLike."'";
if ($sqlwhere) $sql.=' AND '.$sqlwhere;
//print $sql;
@@ -187,6 +204,7 @@
$numFinal = str_replace('{y}' ,substr(date("y"),2,1),$numFinal);
$numFinal = str_replace('{mm}',date("m"),$numFinal);
$numFinal = str_replace('{dd}',date("d"),$numFinal);
+ $numFinal =
str_replace('{'.$maskclientcode.'}',$clientcode,$numFinal);
// Now we replace the counter
$maskbefore='{'.$masktri.'}';
_______________________________________________
Dolibarr-dev mailing list
[email protected]
http://lists.nongnu.org/mailman/listinfo/dolibarr-dev