diff --git a/ChangeLog b/ChangeLog index 383e3477e0a41370e58f539ec3c75f05310d2dec..d97bfe9a9ceb7208bbfcc0038ec49e55edbacb35 100644 --- a/ChangeLog +++ b/ChangeLog @@ -130,6 +130,9 @@ Fix: [ bug #1367 ] "Show invoice" link after a POS sell throws an error. Fix: TCPDF error file not found in member card generation. Fix: [ bug #1380 ] Customer invoices are not grouped in company results report. Fix: [ bug #1393 ] PHP Warning when creating a supplier invoice. +Fix: [ bug #1399 ] [pgsql] Silent warning when setting a propal as "facturée" in propal.php +Fix: When number reach 9999 with default numbering module, next number + will be 10000 instead of 0000 and error. ***** ChangeLog for 3.5.2 compared to 3.5.1 ***** Fix: Can't add user for a task. diff --git a/htdocs/admin/boxes.php b/htdocs/admin/boxes.php index 31d313b84e9dd0d7600cc3cc13410b39559b21f1..5c2c8176842ea847166a43ed389f9b57160a4bc1 100644 --- a/htdocs/admin/boxes.php +++ b/htdocs/admin/boxes.php @@ -57,7 +57,7 @@ if ($action == 'add') $db->begin(); - // Initialize distinctfkuser with all already existing values of fk_user (user that use a personalized view of boxes for pos) + // Initialize distinct fkuser with all already existing values of fk_user (user that use a personalized view of boxes for page "pos") $distinctfkuser=array(); if (! $error) { @@ -85,14 +85,31 @@ if ($action == 'add') } } + $distinctfkuser['0']='0'; // Add entry for fk_user = 0. We must use string as key and val + foreach($distinctfkuser as $fk_user) { - if (! $error && $fk_user != 0) // We will add fk_user = 0 later. + if (! $error && $fk_user != '') { + $nbboxonleft=$nbboxonright=0; + $sql = "SELECT box_order FROM ".MAIN_DB_PREFIX."boxes WHERE position = ".GETPOST("pos","alpha")." AND fk_user = ".$fk_user." AND entity = ".$conf->entity; + dol_syslog("boxes.php activate box sql=".$sql); + $resql = $db->query($sql); + if ($resql) + { + while($obj = $db->fetch_object($resql)) + { + $boxorder=$obj->box_order; + if (preg_match('/A/',$boxorder)) $nbboxonleft++; + if (preg_match('/B/',$boxorder)) $nbboxonright++; + } + } + else dol_print_error($db); + $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes ("; $sql.= "box_id, position, box_order, fk_user, entity"; $sql.= ") values ("; - $sql.= GETPOST("boxid","int").", ".GETPOST("pos","alpha").", 'A01', ".$fk_user.", ".$conf->entity; + $sql.= GETPOST("boxid","int").", ".GETPOST("pos","alpha").", '".(($nbboxonleft > $nbboxonright) ? 'B01' : 'A01')."', ".$fk_user.", ".$conf->entity; $sql.= ")"; dol_syslog("boxes.php activate box sql=".$sql); @@ -105,24 +122,6 @@ if ($action == 'add') } } - // If value 0 was not included, we add it. - if (! $error) - { - $sql = "INSERT INTO ".MAIN_DB_PREFIX."boxes ("; - $sql.= "box_id, position, box_order, fk_user, entity"; - $sql.= ") values ("; - $sql.= GETPOST("boxid","int").", ".GETPOST("pos","alpha").", 'A01', 0, ".$conf->entity; - $sql.= ")"; - - dol_syslog("boxes.php activate box sql=".$sql); - $resql = $db->query($sql); - if (! $resql) - { - $errmesg=$db->lasterror(); - $error++; - } - } - if (! $error) { header("Location: boxes.php"); diff --git a/htdocs/admin/dict.php b/htdocs/admin/dict.php index 16f9aed618fe3cbdaa691f55452e3f21d5ecce21..d834929d00f4530913a64b0d74bd549ecdb856a7 100644 --- a/htdocs/admin/dict.php +++ b/htdocs/admin/dict.php @@ -532,9 +532,7 @@ if (GETPOST('actionadd') || GETPOST('actionmodify')) $result = $db->query($sql); if ($result) // Add is ok { - //$oldid=$id; - //$_POST=array('id'=>$oldid); // Clean $_POST array, we keep only - //$_GET["id"]=$_POST["id"]; // Force affichage dictionnaire en cours d'edition + $_POST=array('id'=>$id); // Clean $_POST array, we keep only } else { diff --git a/htdocs/comm/propal/class/propal.class.php b/htdocs/comm/propal/class/propal.class.php index c843da689988e059ada33b75b954dfe24bd04e8d..9c35faef31f47d62fddad0b79a1a34d37a4a17ba 100644 --- a/htdocs/comm/propal/class/propal.class.php +++ b/htdocs/comm/propal/class/propal.class.php @@ -1724,7 +1724,7 @@ class Propal extends CommonObject $this->db->begin(); $sql = "UPDATE ".MAIN_DB_PREFIX."propal"; - $sql.= " SET fk_statut = ".$statut.", note_private = '".$this->db->escape($note)."', date_cloture=".$this->db->idate($now).", fk_user_cloture=".$user->id; + $sql.= " SET fk_statut = ".$statut.", note_private = '".$this->db->escape($note)."', date_cloture='".$this->db->idate($now)."', fk_user_cloture=".$user->id; $sql.= " WHERE rowid = ".$this->id; $resql=$this->db->query($sql); diff --git a/htdocs/compta/prelevement/fiche.php b/htdocs/compta/prelevement/fiche.php index 7f1a671de4af59ab0d9cec5ee67f2d8faaaecb21..e594beae1d627ced9035dab121fca579f37efd2c 100644 --- a/htdocs/compta/prelevement/fiche.php +++ b/htdocs/compta/prelevement/fiche.php @@ -133,7 +133,7 @@ if ($action == 'infocredit' && $user->rights->prelevement->bons->credit) $bon = new BonPrelevement($db,""); $form = new Form($db); -llxHeader('',$langs->trans("WithdrawalsReceipts")); i +llxHeader('',$langs->trans("WithdrawalsReceipts")); if ($id > 0) @@ -151,7 +151,7 @@ if ($id > 0) /*if ($action == 'credite') { print $form->formconfirm("fiche.php?id=".$bon->id,$langs->trans("ClassCredited"),$langs->trans("ClassCreditedConfirm"),"confirm_credite",'',1,1); - + }*/ print '<table class="border" width="100%">'; diff --git a/htdocs/core/db/pgsql.class.php b/htdocs/core/db/pgsql.class.php index ca75b493ccac66fedda62e4c83d98e90ec45f881..e7e7df739b7345e6c946ef3edaab428c8a24f6a4 100644 --- a/htdocs/core/db/pgsql.class.php +++ b/htdocs/core/db/pgsql.class.php @@ -196,7 +196,8 @@ class DoliDBPgsql extends DoliDB // nuke unsigned $line=preg_replace('/(int\w+|smallint)\s+unsigned/i','\\1',$line); - + $line=preg_replace('/as signed/i','as integer',$line); + // blob -> text $line=preg_replace('/\w*blob/i','text',$line); diff --git a/htdocs/core/lib/functions2.lib.php b/htdocs/core/lib/functions2.lib.php index cc84823c2761f63f3ea679005c2ec593198cd414..917ceaf0e650f38c86d8199ce0eb67a3bbc6704d 100644 --- a/htdocs/core/lib/functions2.lib.php +++ b/htdocs/core/lib/functions2.lib.php @@ -536,7 +536,7 @@ function array2table($data,$tableMarkup=1,$tableoptions='',$troptions='',$tdopti * @param Societe $objsoc The company that own the object we need a counter for * @param string $date Date to use for the {y},{m},{d} tags. * @param string $mode 'next' for next value or 'last' for last value - * @return string New value + * @return string New value (numeric) or error message */ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$mode='next') { @@ -798,6 +798,12 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m { $counter++; + // If value for $counter has a length higher than $maskcounter chars + if ($counter >= pow(10, dol_strlen($maskcounter))) + { + $counter='ErrorMaxNumberReachForThisMask'; + } + if (! empty($maskrefclient_maskcounter)) { //print "maskrefclient_maskcounter=".$maskrefclient_maskcounter." maskwithnocode=".$maskwithnocode." maskrefclient=".$maskrefclient."\n<br>"; @@ -839,6 +845,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$objsoc='',$date='',$m $maskrefclient_counter = $maskrefclient_obj->val; } else dol_print_error($db); + if (empty($maskrefclient_counter) || preg_match('/[^0-9]/i',$maskrefclient_counter)) $maskrefclient_counter=$maskrefclient_maskoffset; $maskrefclient_counter++; } diff --git a/htdocs/core/modules/commande/mod_commande_marbre.php b/htdocs/core/modules/commande/mod_commande_marbre.php index 2ccbff754917c125cddeb15cbe86968cdac3e897..8075099cdd688d737b8d81f2a6780a1f9b219edf 100644 --- a/htdocs/core/modules/commande/mod_commande_marbre.php +++ b/htdocs/core/modules/commande/mod_commande_marbre.php @@ -71,7 +71,7 @@ class mod_commande_marbre extends ModeleNumRefCommandes $coyymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."commande"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -105,7 +105,7 @@ class mod_commande_marbre extends ModeleNumRefCommandes // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."commande"; $sql.= " WHERE ref like '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -126,7 +126,9 @@ class mod_commande_marbre extends ModeleNumRefCommandes //$date=time(); $date=$object->date; $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog("mod_commande_marbre::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/contract/mod_contract_serpis.php b/htdocs/core/modules/contract/mod_contract_serpis.php index 357483e7ae9cfd225f75e11538259cf6040a6593..a595fb5f59cec5f7874bdc72f1b4212f3c6e7934 100644 --- a/htdocs/core/modules/contract/mod_contract_serpis.php +++ b/htdocs/core/modules/contract/mod_contract_serpis.php @@ -69,7 +69,7 @@ class mod_contract_serpis extends ModelNumRefContracts $coyymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."contrat"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -102,7 +102,7 @@ class mod_contract_serpis extends ModelNumRefContracts global $db,$conf; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."contrat"; $sql.= " WHERE ref like '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -122,7 +122,9 @@ class mod_contract_serpis extends ModelNumRefContracts $date=$contract->date_contrat; $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog("mod_contract_serpis::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/expedition/mod_expedition_safor.php b/htdocs/core/modules/expedition/mod_expedition_safor.php index 0b55ba39418d0aa1a4a09082251940c76f3dc508..5fb3db1ddfe124ccd819b91c7b82bba3b30ec815 100644 --- a/htdocs/core/modules/expedition/mod_expedition_safor.php +++ b/htdocs/core/modules/expedition/mod_expedition_safor.php @@ -69,7 +69,7 @@ class mod_expedition_safor extends ModelNumRefExpedition $coyymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."expedition"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -102,7 +102,7 @@ class mod_expedition_safor extends ModelNumRefExpedition global $db,$conf; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."expedition"; $sql.= " WHERE ref like '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -122,7 +122,9 @@ class mod_expedition_safor extends ModelNumRefExpedition $date=time(); $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog("mod_expedition_safor::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/facture/mod_facture_mars.php b/htdocs/core/modules/facture/mod_facture_mars.php index 008229cab1ed12aa43c12d9c2eeb7a0e3338c6ad..f1a46913e2514218452dcb7f4b8507b00f6ba39b 100644 --- a/htdocs/core/modules/facture/mod_facture_mars.php +++ b/htdocs/core/modules/facture/mod_facture_mars.php @@ -75,7 +75,7 @@ class mod_facture_mars extends ModeleNumRefFactures $fayymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(facnumber FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$this->prefixinvoice."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -138,7 +138,7 @@ class mod_facture_mars extends ModeleNumRefFactures // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(facnumber FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -159,7 +159,8 @@ class mod_facture_mars extends ModeleNumRefFactures if ($mode == 'last') { - $num = sprintf("%04s",$max); + if ($max >= (pow(10, 4) - 1)) $num=$max; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max); $ref=''; $sql = "SELECT facnumber as ref"; @@ -182,7 +183,9 @@ class mod_facture_mars extends ModeleNumRefFactures { $date=$facture->date; // This is invoice date (not creation date) $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog(get_class($this)."::getNextValue return ".$prefix.$yymm."-".$num); return $prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/facture/mod_facture_terre.php b/htdocs/core/modules/facture/mod_facture_terre.php index 60be7a1e311cd90af4121679f7b4770010e5997c..220df75dc72bc47daad8a785e22ff90cb9502b77 100644 --- a/htdocs/core/modules/facture/mod_facture_terre.php +++ b/htdocs/core/modules/facture/mod_facture_terre.php @@ -73,7 +73,7 @@ class mod_facture_terre extends ModeleNumRefFactures $fayymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(facnumber FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$this->prefixinvoice."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -95,7 +95,7 @@ class mod_facture_terre extends ModeleNumRefFactures $fayymm=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(facnumber FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$this->prefixcreditnote."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -116,7 +116,7 @@ class mod_facture_terre extends ModeleNumRefFactures $fayymm=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(facnumber FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$this->prefixdeposit."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -154,7 +154,7 @@ class mod_facture_terre extends ModeleNumRefFactures // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(facnumber FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(facnumber FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture"; $sql.= " WHERE facnumber LIKE '".$prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -175,7 +175,8 @@ class mod_facture_terre extends ModeleNumRefFactures if ($mode == 'last') { - $num = sprintf("%04s",$max); + if ($max >= (pow(10, 4) - 1)) $num=$max; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max); $ref=''; $sql = "SELECT facnumber as ref"; @@ -198,7 +199,9 @@ class mod_facture_terre extends ModeleNumRefFactures { $date=$facture->date; // This is invoice date (not creation date) $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog(get_class($this)."::getNextValue return ".$prefix.$yymm."-".$num); return $prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/fichinter/mod_pacific.php b/htdocs/core/modules/fichinter/mod_pacific.php index d50f0be861db43d442cde868e0336001a1d3cb1a..3d0b15d0d09a5cfc4fc87b8c6d404f37cdc30447 100644 --- a/htdocs/core/modules/fichinter/mod_pacific.php +++ b/htdocs/core/modules/fichinter/mod_pacific.php @@ -72,7 +72,7 @@ class mod_pacific extends ModeleNumRefFicheinter $fayymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."fichinter"; $sql.= " WHERE ref like '".$this->prefix."____-%'"; $sql.= " WHERE entity = ".$conf->entity; @@ -108,7 +108,7 @@ class mod_pacific extends ModeleNumRefFicheinter // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."fichinter"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -124,7 +124,9 @@ class mod_pacific extends ModeleNumRefFicheinter //$date=time(); $date=$object->datec; $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); return $this->prefix.$yymm."-".$num; } diff --git a/htdocs/core/modules/livraison/mod_livraison_jade.php b/htdocs/core/modules/livraison/mod_livraison_jade.php index 0d7e2e9a534e415e24e5f64bbc908a1bd5c8186f..77ca85f8e6c7b091ba0cc5b46b9bd890916f310e 100644 --- a/htdocs/core/modules/livraison/mod_livraison_jade.php +++ b/htdocs/core/modules/livraison/mod_livraison_jade.php @@ -78,7 +78,7 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder $fayymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."livraison"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -112,7 +112,7 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."livraison"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -134,7 +134,9 @@ class mod_livraison_jade extends ModeleNumRefDeliveryOrder $date=$object->date_delivery; if (empty($date)) $date=dol_now(); $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog("mod_livraison_jade::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/project/mod_project_simple.php b/htdocs/core/modules/project/mod_project_simple.php index bfc0eea0838426232d78f9bfa37d63a7b8f71a36..da1c914f484bd748f83867f1c115277e04a49898 100644 --- a/htdocs/core/modules/project/mod_project_simple.php +++ b/htdocs/core/modules/project/mod_project_simple.php @@ -72,7 +72,7 @@ class mod_project_simple extends ModeleNumRefProjects $coyymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."projet"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -108,7 +108,7 @@ class mod_project_simple extends ModeleNumRefProjects // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."projet"; $sql.= " WHERE ref like '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -130,7 +130,9 @@ class mod_project_simple extends ModeleNumRefProjects //$yymm = strftime("%y%m",time()); $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog("mod_project_simple::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/project/task/mod_task_simple.php b/htdocs/core/modules/project/task/mod_task_simple.php index fad0d6afa12d5f4556433bb28072a6a459e8df1f..afc17d663c0ee8296fbeffad90a6e0f59f7b43c0 100644 --- a/htdocs/core/modules/project/task/mod_task_simple.php +++ b/htdocs/core/modules/project/task/mod_task_simple.php @@ -72,7 +72,7 @@ class mod_task_simple extends ModeleNumRefTask $coyymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(task.ref FROM " . $posindice . ")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(task.ref FROM " . $posindice . ") AS SIGNED)) as max"; $sql .= " FROM " . MAIN_DB_PREFIX . "projet_task AS task, "; $sql .= MAIN_DB_PREFIX . "projet AS project WHERE task.fk_projet=project.rowid"; $sql .= " AND task.ref LIKE '" . $this->prefix . "____-%'"; @@ -109,7 +109,7 @@ class mod_task_simple extends ModeleNumRefTask // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."projet_task"; $sql.= " WHERE ref like '".$this->prefix."____-%'"; @@ -130,7 +130,9 @@ class mod_task_simple extends ModeleNumRefTask //$yymm = strftime("%y%m",time()); $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog("mod_task_simple::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/propale/mod_propale_marbre.php b/htdocs/core/modules/propale/mod_propale_marbre.php index 79a31c73b59d2f4368c48593cde5ab9043a71cef..aa2959691e69d1ebe9f330dcf7ca5ff941eefd40 100644 --- a/htdocs/core/modules/propale/mod_propale_marbre.php +++ b/htdocs/core/modules/propale/mod_propale_marbre.php @@ -73,7 +73,7 @@ class mod_propale_marbre extends ModeleNumRefPropales $pryymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."propal"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -110,7 +110,7 @@ class mod_propale_marbre extends ModeleNumRefPropales // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."propal"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -130,7 +130,9 @@ class mod_propale_marbre extends ModeleNumRefPropales $date = time(); $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog("mod_propale_marbre::getNextValue return ".$this->prefix.$yymm."-".$num); return $this->prefix.$yymm."-".$num; @@ -149,4 +151,3 @@ class mod_propale_marbre extends ModeleNumRefPropales } } - diff --git a/htdocs/core/modules/societe/mod_codeclient_monkey.php b/htdocs/core/modules/societe/mod_codeclient_monkey.php index cf761b0dc06ae7479e24860523e9b609bdb55640..8b31e581e26ed621887a99c1037a71b151d8a927 100644 --- a/htdocs/core/modules/societe/mod_codeclient_monkey.php +++ b/htdocs/core/modules/societe/mod_codeclient_monkey.php @@ -119,7 +119,7 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode // D'abord on recupere la valeur max (reponse immediate car champ indexe) $posindice=8; - $sql = "SELECT MAX(SUBSTRING(".$field." FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(".$field." FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."societe"; $sql.= " WHERE ".$field." LIKE '".$prefix."____-%'"; $sql.= " AND entity IN (".getEntity('societe', 1).")"; @@ -139,7 +139,9 @@ class mod_codeclient_monkey extends ModeleThirdPartyCode $date = dol_now(); $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog(get_class($this)."::getNextValue return ".$prefix.$yymm."-".$num); return $prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php index aff2557efb2008d9f9b56e114d15b94879791df5..049c312e1efb33a27592e8d099cb9a15e5bfec02 100644 --- a/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php +++ b/htdocs/core/modules/supplier_invoice/mod_facture_fournisseur_cactus.php @@ -73,7 +73,7 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices $siyymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; $sql.= " WHERE ref LIKE '".$this->prefixinvoice."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -112,7 +112,7 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; // This is standard SQL + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; // This is standard SQL $sql.= " FROM ".MAIN_DB_PREFIX."facture_fourn"; $sql.= " WHERE ref LIKE '".$prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -133,7 +133,8 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices if ($mode == 'last') { - $num = sprintf("%04s",$max); + if ($max >= (pow(10, 4) - 1)) $num=$max; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max); $ref=''; $sql = "SELECT ref as ref"; @@ -156,7 +157,9 @@ class mod_facture_fournisseur_cactus extends ModeleNumRefSuppliersInvoices { $date=$object->date; // This is invoice date (not creation date) $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); dol_syslog(get_class($this)."::getNextValue return ".$prefix.$yymm."-".$num); return $prefix.$yymm."-".$num; diff --git a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php index 7438de73c7d01441a95b528810a1e71af27ab465..563e1b6fe1a7dbc1b2e6b3281cfde13b30069b46 100644 --- a/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php +++ b/htdocs/core/modules/supplier_order/mod_commande_fournisseur_muguet.php @@ -73,7 +73,7 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders $coyymm=''; $max=''; $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " WHERE ref LIKE '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -108,7 +108,7 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders // D'abord on recupere la valeur max $posindice=8; - $sql = "SELECT MAX(SUBSTRING(ref FROM ".$posindice.")) as max"; + $sql = "SELECT MAX(CAST(SUBSTRING(ref FROM ".$posindice.") AS SIGNED)) as max"; $sql.= " FROM ".MAIN_DB_PREFIX."commande_fournisseur"; $sql.= " WHERE ref like '".$this->prefix."____-%'"; $sql.= " AND entity = ".$conf->entity; @@ -125,7 +125,9 @@ class mod_commande_fournisseur_muguet extends ModeleNumRefSuppliersOrders $date=$object->date_commande; // Not always defined if (empty($date)) $date=$object->date; // Creation date is order date for suppliers orders $yymm = strftime("%y%m",$date); - $num = sprintf("%04s",$max+1); + + if ($max >= (pow(10, 4) - 1)) $num=$max+1; // If counter > 9999, we do not format on 4 chars, we take number as it is + else $num = sprintf("%04s",$max+1); return $this->prefix.$yymm."-".$num; } diff --git a/htdocs/expedition/class/expedition.class.php b/htdocs/expedition/class/expedition.class.php index d8024a257fa2cc67c0828dc3a438aafd22fe1ba8..5cf09642c6893e5f1c510307e5f3737b9f4d393d 100644 --- a/htdocs/expedition/class/expedition.class.php +++ b/htdocs/expedition/class/expedition.class.php @@ -206,8 +206,8 @@ class Expedition extends CommonObject $sql.= ") VALUES ("; $sql.= "'(PROV)'"; $sql.= ", ".$conf->entity; - $sql.= ", ".($this->ref_customer?"'".$this->ref_customer."'":"null"); - $sql.= ", ".($this->ref_int?"'".$this->ref_int."'":"null"); + $sql.= ", ".($this->ref_customer?"'".$this->db->escape($this->ref_customer)."'":"null"); + $sql.= ", ".($this->ref_int?"'".$this->db->escape($this->ref_int)."'":"null"); $sql.= ", '".$this->db->idate($now)."'"; $sql.= ", ".$user->id; $sql.= ", ".($this->date_expedition>0?"'".$this->db->idate($this->date_expedition)."'":"null");