bugfix GetNextArtikelNummer skip existing numbers

This commit is contained in:
OpenXE 2024-09-04 11:13:38 +02:00
parent 1ff2878d06
commit e51e1db15c

View File

@ -27558,6 +27558,16 @@ function Firmendaten($field,$projekt="")
return $buchstaben_anteil_string.$neue_nummer; return $buchstaben_anteil_string.$neue_nummer;
} }
function CalcNextArtikelNummer($nummer) {
$check = null;
do {
$nummer = $this->CalcNextNummer($nummer);
$sql = "SELECT id FROM artikel WHERE nummer = '".$nummer."'";
$check = $this->app->DB->Select($sql);
} while (!empty($check));
return ($nummer);
}
function GetNextNummer($type,$projekt="",$data="") function GetNextNummer($type,$projekt="",$data="")
{ {
$doctype = $type; $doctype = $type;
@ -28032,7 +28042,7 @@ function Firmendaten($field,$projekt="")
$nurzahlen = preg_replace("/[^0-9]/","",$next_nummer_alt); $nurzahlen = preg_replace("/[^0-9]/","",$next_nummer_alt);
$laenge = strlen($nurzahlen); $laenge = strlen($nurzahlen);
$next_nummer = $this->CalcNextNummer($next_nummer_alt); $next_nummer = $this->CalcNextArtikelNummer($next_nummer_alt);
//$nurbuchstaben.str_pad($nurzahlen+1, $laenge ,'0', STR_PAD_LEFT); //$nurbuchstaben.str_pad($nurzahlen+1, $laenge ,'0', STR_PAD_LEFT);
$neue_nummer = $next_nummer; $neue_nummer = $next_nummer;
@ -28045,12 +28055,12 @@ function Firmendaten($field,$projekt="")
if($eigenernummernkreis=="1") if($eigenernummernkreis=="1")
{ {
$neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 1"); $neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 1");
if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextNummer($neue_nummer); if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$next_nummer = $this->CalcNextNummer($neue_nummer); $next_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1"); $this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1");
} else { } else {
//zentraler nummernkreis mit prefix //zentraler nummernkreis mit prefix
$next_nummer = $this->CalcNextNummer($this->Firmendaten("next_artikelnummer")); $next_nummer = $this->CalcNextArtikelNummer($this->Firmendaten("next_artikelnummer"));
$this->FirmendatenSet("next_artikelnummer",$next_nummer); $this->FirmendatenSet("next_artikelnummer",$next_nummer);
if($next_nummer_alt!="") $neue_nummer=$next_nummer_alt.$next_nummer; if($next_nummer_alt!="") $neue_nummer=$next_nummer_alt.$next_nummer;
else $neue_nummer = $next_nummer; else $neue_nummer = $next_nummer;
@ -28065,15 +28075,15 @@ function Firmendaten($field,$projekt="")
if($eigenernummernkreis) if($eigenernummernkreis)
{ {
$neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 1"); $neue_nummer = $this->app->DB->Select("SELECT next_artikelnummer FROM projekt WHERE id='$projekt' LIMIT 1");
if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextNummer($neue_nummer); if($this->app->DB->Select("SELECT id FROM artikel WHERE nummer = '".$this->app->DB->real_escape_string($neue_nummer)."' LIMIT 1"))$neue_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$next_nummer = $this->CalcNextNummer($neue_nummer); $next_nummer = $this->CalcNextArtikelNummer($neue_nummer);
$this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1"); $this->app->DB->Update("UPDATE projekt SET next_artikelnummer='".$next_nummer."' WHERE id='$projekt' LIMIT 1");
}else{ }else{
$firmennummer = $this->app->erp->Firmendaten('next_artikelnummer'); $firmennummer = $this->app->erp->Firmendaten('next_artikelnummer');
if($firmennummer) if($firmennummer)
{ {
$next_nummer = $firmennummer; $next_nummer = $firmennummer;
$neue_nummer = $this->CalcNextNummer($next_nummer); $neue_nummer = $this->CalcNextArtikelNummer($next_nummer);
$this->FirmendatenSet('next_artikelnummer', $neue_nummer); $this->FirmendatenSet('next_artikelnummer', $neue_nummer);
$neue_nummer = $this->app->erp->Firmendaten('next_artikelnummer'); $neue_nummer = $this->app->erp->Firmendaten('next_artikelnummer');
} else { } else {
@ -28095,10 +28105,11 @@ function Firmendaten($field,$projekt="")
$neue_nummer = $this->app->DB->Select("SELECT MAX(CAST(nummer AS UNSIGNED)) FROM artikel WHERE nummer LIKE '1%'"); $neue_nummer = $this->app->DB->Select("SELECT MAX(CAST(nummer AS UNSIGNED)) FROM artikel WHERE nummer LIKE '1%'");
if(($neue_nummer=="" || $neue_nummer=="0")) $neue_nummer = "100000"; if(($neue_nummer=="" || $neue_nummer=="0")) $neue_nummer = "100000";
} }
$neue_nummer = $this->CalcNextNummer($neue_nummer);//$neue_nummer + 1; $neue_nummer = $this->CalcNextArtikelNummer($neue_nummer);//$neue_nummer + 1;
} }
} }
} }
$this->app->erp->ProzessUnlock($process_lock); $this->app->erp->ProzessUnlock($process_lock);
$neue_nummer = str_replace('{JAHR}',date('Y'),$neue_nummer); $neue_nummer = str_replace('{JAHR}',date('Y'),$neue_nummer);
$neue_nummer = str_replace('{MONAT}',date('m'),$neue_nummer); $neue_nummer = str_replace('{MONAT}',date('m'),$neue_nummer);