mirror of
https://github.com/Dolibarr/dolibarr.git
synced 2025-02-20 13:46:52 +01:00
Fix: Usage of reset of cursor in numbering modules for a particular month (@ option) was broken.
This commit is contained in:
parent
754e0111f3
commit
1cb7fc6ede
|
|
@ -12,6 +12,8 @@ For users:
|
|||
future bank transaction already wrote.
|
||||
- Fixed: Bad ref in supplier list.
|
||||
- Fixed: Bad link in product statistics for supplier referers.
|
||||
- Fix: Usage of reset of cursor in personalized numbering modules for a particular
|
||||
month (@ option) was broken.
|
||||
|
||||
For translators:
|
||||
- Added ca_ES language files
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@
|
|||
/**
|
||||
\file htdocs/includes/modules/commande/mod_commande_saphir.php
|
||||
\ingroup commande
|
||||
\brief Fichier contenant la classe du modèle de numérotation de référence de commande Saphir
|
||||
\brief Fichier contenant la classe du mod<EFBFBD>le de num<EFBFBD>rotation de r<EFBFBD>f<EFBFBD>rence de commande Saphir
|
||||
\version $Id$
|
||||
*/
|
||||
|
||||
|
|
@ -32,7 +32,7 @@ require_once(DOL_DOCUMENT_ROOT ."/includes/modules/commande/modules_commande.php
|
|||
|
||||
/**
|
||||
\class mod_commande_saphir
|
||||
\brief Classe du modèle de numérotation de référence de commande Saphir
|
||||
\brief Classe du mod<EFBFBD>le de num<EFBFBD>rotation de r<EFBFBD>f<EFBFBD>rence de commande Saphir
|
||||
*/
|
||||
class mod_commande_saphir extends ModeleNumRefCommandes
|
||||
{
|
||||
|
|
@ -41,7 +41,7 @@ class mod_commande_saphir extends ModeleNumRefCommandes
|
|||
var $nom = 'Saphir';
|
||||
|
||||
|
||||
/** \brief Renvoi la description du modele de numérotation
|
||||
/** \brief Renvoi la description du modele de num<EFBFBD>rotation
|
||||
* \return string Texte descripif
|
||||
*/
|
||||
function info()
|
||||
|
|
@ -72,7 +72,7 @@ class mod_commande_saphir extends ModeleNumRefCommandes
|
|||
return $texte;
|
||||
}
|
||||
|
||||
/** \brief Renvoi un exemple de numérotation
|
||||
/** \brief Renvoi un exemple de num<EFBFBD>rotation
|
||||
* \return string Example
|
||||
*/
|
||||
function getExample()
|
||||
|
|
@ -102,7 +102,7 @@ class mod_commande_saphir extends ModeleNumRefCommandes
|
|||
|
||||
require_once(DOL_DOCUMENT_ROOT ."/lib/functions2.lib.php");
|
||||
|
||||
// On défini critere recherche compteur
|
||||
// We get cursor rule
|
||||
$mask=$conf->global->COMMANDE_SAPHIR_MASK;
|
||||
|
||||
if (! $mask)
|
||||
|
|
|
|||
|
|
@ -75,7 +75,8 @@ function array2table($data,$tableMarkup=1,$tableoptions='',$troptions='',$tdopti
|
|||
function get_next_value($db,$mask,$table,$field,$where='',$valueforccc='',$date='')
|
||||
{
|
||||
// Clean parameters
|
||||
if ($date == '') $date=time();
|
||||
if ($date == '') $date=mktime(); // We use local year and month of PHP server to search numbers
|
||||
// but we should use local year and month of user
|
||||
|
||||
// Extract value for mask counter, mask raz and mask offset
|
||||
if (! eregi('\{(0+)([@\+][0-9]+)?([@\+][0-9]+)?\}',$mask,$reg)) return 'ErrorBadMask';
|
||||
|
|
@ -117,6 +118,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$valueforccc='',$date=
|
|||
if (! empty($reg[3]) && eregi('^\+',$reg[3])) $maskoffset=eregi_replace('^\+','',$reg[3]);
|
||||
|
||||
// Define $sqlwhere
|
||||
|
||||
// If a restore to zero after a month is asked we check if there is already a value for this year.
|
||||
if (! empty($reg[2]) && eregi('^@',$reg[2])) $maskraz=eregi_replace('^@','',$reg[2]);
|
||||
if (! empty($reg[3]) && eregi('^@',$reg[3])) $maskraz=eregi_replace('^@','',$reg[3]);
|
||||
|
|
@ -139,10 +141,15 @@ function get_next_value($db,$mask,$table,$field,$where='',$valueforccc='',$date=
|
|||
if (strlen($reg[2]) == 1) $yearcomp=substr(date("y",$date),2,1)+$yearoffset;
|
||||
|
||||
$sqlwhere='';
|
||||
$sqlwhere.='SUBSTRING('.$field.', '.(strlen($reg[1])+1).', '.strlen($reg[2]).') >= '.$yearcomp;
|
||||
$sqlwhere.='( (SUBSTRING('.$field.', '.(strlen($reg[1])+1).', '.strlen($reg[2]).') >= '.$yearcomp;
|
||||
if ($monthcomp > 1) // Test useless if monthcomp = 1 (or 0 is same as 1)
|
||||
{
|
||||
$sqlwhere.=' AND SUBSTRING('.$field.', '.(strlen($reg[1])+strlen($reg[2])+1).', '.strlen($reg[3]).') >= '.$monthcomp;
|
||||
$sqlwhere.=' AND SUBSTRING('.$field.', '.(strlen($reg[1])+strlen($reg[2])+1).', '.strlen($reg[3]).') >= '.$monthcomp.')';
|
||||
$sqlwhere.=' OR SUBSTRING('.$field.', '.(strlen($reg[1])+1).', '.strlen($reg[2]).') >= '.sprintf("%02d",($yearcomp+1)).' )';
|
||||
}
|
||||
else
|
||||
{
|
||||
$sqlwhere.=') )';
|
||||
}
|
||||
}
|
||||
//print "masktri=".$masktri." maskcounter=".$maskcounter." maskraz=".$maskraz." maskoffset=".$maskoffset."<br>\n";
|
||||
|
|
@ -174,6 +181,7 @@ function get_next_value($db,$mask,$table,$field,$where='',$valueforccc='',$date=
|
|||
if ($where) $sql.=$where;
|
||||
if ($sqlwhere) $sql.=' AND '.$sqlwhere;
|
||||
|
||||
//print $sql;
|
||||
dolibarr_syslog("functions2::get_next_value sql=".$sql, LOG_DEBUG);
|
||||
$resql=$db->query($sql);
|
||||
if ($resql)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user