dolibarr-dev
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Dolibarr-dev] idée compteur à ma sque client


From: Raphaël Bertrand (Résultic)
Subject: Re: [Dolibarr-dev] idée compteur à ma sque client
Date: Thu, 12 Jun 2008 17:55:38 +0200
User-agent: Thunderbird 2.0.0.14 (Windows/20080421)

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 : address@hidden

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+)(address@hidden)?(address@hidden)?\}',$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.'}';


reply via email to

[Prev in Thread] Current Thread [Next in Thread]