diff --git a/classes/Components/I18n/FormatterService.php b/classes/Components/I18n/FormatterService.php
index feb2e33b..d6fecb79 100644
--- a/classes/Components/I18n/FormatterService.php
+++ b/classes/Components/I18n/FormatterService.php
@@ -41,13 +41,14 @@ class FormatterService
* Factory for FormatterInterface objects. There will be a FormatterInterface object for every data type
* necessary.
*
- * @param string $type
+ * @param string $type
+ * @param FormatterMode $strictness
*
* @return FormatterInterface
*/
- public function factory(string $type): FormatterInterface
+ public function factory(string $type, FormatterMode $strictness = FormatterMode::MODE_STRICT): FormatterInterface
{
- return new $type($this->locale);
+ return new $type($this->locale, $strictness);
}
@@ -55,13 +56,14 @@ class FormatterService
/**
* Shortcut function for creating a FloatFormatter and parsing a user input.
*
- * @param string $input
+ * @param string $input
+ * @param FormatterMode $strictness
*
* @return FloatFormatter
*/
- public function floatFromUserInput(string $input): FloatFormatter
+ public function floatFromUserInput(string $input, FormatterMode $strictness=FormatterMode::MODE_NULL): FloatFormatter
{
- $formatter = new FloatFormatter($this->locale);
+ $formatter = new FloatFormatter($this->locale, $strictness);
$formatter->parseUserInput($input);
return $formatter;
}
@@ -71,13 +73,14 @@ class FormatterService
/**
* Shortcut function for creating a FloatFormatter and setting a PHP value.
*
- * @param float $input
+ * @param string|float|null $input
+ * @param FormatterMode $strictness
*
* @return FloatFormatter
*/
- public function floatFromPhpVal(float $input): FloatFormatter
+ public function floatFromPhpVal(string|null|float $input, FormatterMode $strictness=FormatterMode::MODE_NULL): FloatFormatter
{
- $formatter = $this->factory(FloatFormatter::class);
+ $formatter = $this->factory(FloatFormatter::class, $strictness);
$formatter->setPhpVal($input);
return $formatter;
}
@@ -248,4 +251,69 @@ class FormatterService
}
}
+
+
+ /**
+ * Format a quantity value for output.
+ *
+ * @param mixed $menge
+ *
+ * @return string
+ */
+ public function formatMenge(mixed $menge): string
+ {
+ $formatter = new FloatFormatter($this->locale, FormatterMode::MODE_EMPTY);
+ $formatter->setPhpVal(floatval($menge));
+ return $formatter->formatForUser();
+ }
+
+
+
+ /**
+ * Parse a quantity from a form and parse for database input.
+ *
+ * @param mixed $string
+ *
+ * @return string|float|null
+ */
+ public function parseMenge(mixed $string): string|null|float
+ {
+ $formatter = new FloatFormatter($this->locale, FormatterMode::MODE_EMPTY);
+ $formatter->parseUserInput(strval($string));
+ return $formatter->getPhpVal();
+ }
+
+
+ /**
+ * Format a price value for output.
+ *
+ * @param mixed $menge
+ *
+ * @return string
+ */
+ public function formatPreis(mixed $menge): string
+ {
+ $formatter = new FloatFormatter($this->locale, FormatterMode::MODE_EMPTY);
+ $formatter->setMinDigits(2);
+ $formatter->setPhpVal(floatval($menge));
+ return $formatter->formatForUser();
+ }
+
+
+
+ /**
+ * Parse a price from a form and parse for database input.
+ *
+ * @param mixed $string
+ *
+ * @return string|float|null
+ */
+ public function parsePreis(mixed $string): string|null|float
+ {
+ $formatter = new FloatFormatter($this->locale, FormatterMode::MODE_EMPTY);
+ $formatter->setMinDigits(2);
+ $formatter->parseUserInput(strval($string));
+ return $formatter->getPhpVal();
+ }
+
}
\ No newline at end of file
diff --git a/phpwf/plugins/class.yui.php b/phpwf/plugins/class.yui.php
index c15023bf..de6edb5a 100644
--- a/phpwf/plugins/class.yui.php
+++ b/phpwf/plugins/class.yui.php
@@ -449,12 +449,6 @@ class YUI {
break;
case 2: // Betrag
$value = $this->app->erp->FromFormatZahlToDB($value);
- if(strpos($value,','))
- {
- $value = str_replace(",", ".",str_replace('.','', $value));
- }else{
- $value = str_replace(",", ".", $value);
- }
$this->app->DB->Update("UPDATE $table SET betrag='$value' WHERE id='$id' LIMIT 1");
$result = $this->app->DB->Select("SELECT ".$this->FormatPreis('betrag')." FROM $table WHERE id='$id' LIMIT 1");
break;
@@ -476,19 +470,12 @@ class YUI {
case 2: // Menge
$value = $this->app->erp->FromFormatZahlToDB($value);
- $value = str_replace(",", ".", $value);
$this->app->DB->Update("UPDATE $table SET menge='$value' WHERE id='$id' LIMIT 1");
$result = $this->app->DB->Select("SELECT ".$this->app->erp->FormatMenge("menge")." FROM $table WHERE id='$id' LIMIT 1");
break;
case 3: // Betrag
$value = $this->app->erp->FromFormatZahlToDB($value);
- if(strpos($value,','))
- {
- $value = str_replace(",", ".",str_replace('.','', $value));
- }else{
- $value = str_replace(",", ".", $value);
- }
$this->app->DB->Update("UPDATE $table SET betrag='$value' WHERE id='$id' LIMIT 1");
$result = $this->app->DB->Select("SELECT ".$this->FormatPreis('betrag')." FROM $table WHERE id='$id' LIMIT 1");
break;
@@ -519,12 +506,6 @@ class YUI {
break;
case 4: // preis
$value = $this->app->erp->FromFormatZahlToDB($value);
- if(strpos($value,','))
- {
- $value = str_replace(",", ".",str_replace('.','', $value));
- }else{
- $value = str_replace(",", ".", $value);
- }
$this->app->DB->Update("UPDATE $table SET preis='$value' WHERE id='$id' LIMIT 1");
$result = $this->app->DB->Select("SELECT ".$this->FormatPreis('preis')." FROM $table WHERE id='$id' LIMIT 1");
break;
@@ -544,7 +525,6 @@ class YUI {
break;
case 4: // Menge
$value = $this->app->erp->FromFormatZahlToDB($value);
- $value = str_replace(',', '.', $value);
if($value < 0 ) {
$value=1;
}
@@ -650,12 +630,6 @@ class YUI {
break;
case 5: //preis
$value = $this->app->erp->FromFormatZahlToDB($value);
- if(strpos($value,','))
- {
- $value = str_replace(",", ".",str_replace('.','', $value));
- }else{
- $value = str_replace(",", ".", $value);
- }
$join = "";
$preiscell = 'b.preis';
if($module == 'auftrag' || $module == 'rechnung' || $module == 'gutschrift' || $module == 'angebot' || $module == 'proformarechnung')
@@ -718,12 +692,6 @@ class YUI {
if($module == 'auftrag' || $module == 'rechnung' || $module == 'angebot' || $module == 'gutschrift' || $module == 'proformarechnung')
{
$value = $this->app->erp->FromFormatZahlToDB($value);
- if(strpos($value,','))
- {
- $value = str_replace(",", ".",str_replace('.','', $value));
- }else{
- $value = str_replace(",", ".", $value);
- }
if($value == '')$value = '0';
$this->app->DB->Update("UPDATE $table SET rabatt='$value',keinrabatterlaubt=1 WHERE id='$id' LIMIT 1");
$result = $this->app->DB->Select("SELECT ".$this->FormatPreis('rabatt')." FROM $table WHERE id='$id' LIMIT 1");
@@ -741,13 +709,6 @@ class YUI {
if($module == 'auftrag' || $module == 'rechnung' || $module == 'angebot' || $module == 'gutschrift' )
{
$value = $this->app->erp->FromFormatZahlToDB($value);
- if(strpos($value,','))
- {
- $value = str_replace(",", ".",str_replace('.','', $value));
- }else{
- $value = str_replace(",", ".", $value);
- }
- if($value == '')$value = '0';
$this->app->DB->Update("UPDATE $table SET einkaufspreis='$value' WHERE id='$id' LIMIT 1");
$result = $this->app->DB->Select("SELECT ".$this->FormatPreis('einkaufspreis')." FROM $table WHERE id='$id' LIMIT 1");
}
@@ -1552,30 +1513,22 @@ class YUI {
$module, $id, implode(', ', array_unique($positionsIds))
)
);
-
+
+ /** @var \Xentral\Components\I18n\FormatterService $fs */
+ $fs=$this->app->Container->get('FormatterService');
+
if(!empty($positions)) {
foreach($positions as $position) {
$positionId = $position['id'];
if(isset($idToPrice[$positionId])
&& $position['preis'] != $idToPrice[$positionId]
) {
- $price = rtrim(number_format($position['preis'], 8, ',', '.'), '0');
- $priceSplit = explode(',', $price);
- if(strlen($priceSplit[(empty($priceSplit)?0:count($priceSplit))-1]) < 2) {
- $price .= str_repeat('0',2-strlen($priceSplit[(empty($priceSplit)?0:count($priceSplit))-1]));
- }
- $ret[] = ['elid' => $arr[$positionId]['price_id'], 'value' => $price];
+ $ret[] = ['elid' => $arr[$positionId]['price_id'], 'value' => $fs->formatPreis($position['preis'])];
}
if(isset($idToQuantity[$positionId])
&& $position['menge'] != $idToQuantity[$positionId]
) {
- $quantity = rtrim(number_format($position['menge'], 8, ',', ''), '0');
- $quantitySplit = explode(',', $quantity);
- if(isset($quantitySplit[1]) && $quantitySplit[1] === '') {
- $quantity = $quantitySplit[0];
- }
-
- $ret[] = ['elid'=> $arr[$positionId]['quantity_id'], 'value' => $quantity];
+ $ret[] = ['elid'=> $arr[$positionId]['quantity_id'], 'value' => $fs->formatMenge($position['menge'])];
}
}
}
@@ -1781,9 +1734,7 @@ class YUI {
$preis = $this->app->Secure->GetPOST("preis");
$preis = $this->app->erp->FromFormatZahlToDB($preis);
$menge = $this->app->Secure->GetPOST("menge");
- //$menge = str_replace(',', '.', $menge);
$menge= $this->app->erp->FromFormatZahlToDB($menge);
-
if($menge < 0) $menge = 1;
$ort = $this->app->Secure->GetPOST("ort");
@@ -1791,8 +1742,7 @@ class YUI {
$lieferdatum = $this->app->String->Convert($lieferdatum, "%1.%2.%3", "%3-%2-%1");
$datum = $this->app->Secure->GetPOST("datum");
$datum = $this->app->String->Convert($datum, "%1.%2.%3", "%3-%2-%1");
- $rabatt = $this->app->Secure->GetPOST("rabatt");
- $rabatt = str_replace(',', '.', $rabatt);
+ $rabatt = $this->app->erp->FromFormatZahlToDB($this->app->Secure->GetPOST("rabatt"));
if($rabatt > 0 || $rabatt=="0") $keinrabatterlaubt=1; else $keinrabatterlaubt=0;
if ($lieferdatum == "") $lieferdatum = "00.00.0000";
@@ -1970,8 +1920,7 @@ class YUI {
$artikel = $this->app->Secure->GetPOST("artikel");
$stueckliste = $this->app->Secure->GetPOST("stueckliste");
$beschreibung = $this->app->Secure->GetPOST("beschreibung");
- $betrag = $this->app->Secure->GetPOST("betrag");
- $betrag = str_replace(',', '.', $betrag);
+ $betrag = $this->app->erp->FromFormatZahlToDB($this->app->Secure->GetPOST("betrag"));
$kalkulationart = $this->app->Secure->GetPOST("kalkulationart");
//$projekt = $this->app->DB->Select("SELECT projekt FROM kalkulation WHERE mitarbeiternummer='$adresse' LIMIT 1");
@@ -2004,8 +1953,7 @@ class YUI {
if ($module == "reisekosten") {
$bezeichnung = $this->app->Secure->GetPOST("bezeichnung");
- $betrag = $this->app->Secure->GetPOST("betrag");
- $betrag = str_replace(',', '.', $betrag);
+ $betrag = $this->app->erp->FromFormatZahlToDB($this->app->Secure->GetPOST("betrag"));
$reisekostenart = $this->app->Secure->GetPOST("reisekostenart");
$abrechnen = $this->app->Secure->GetPOST("abrechnen");
$keineust = $this->app->Secure->GetPOST("keineust");
@@ -2023,8 +1971,7 @@ class YUI {
} else
if ($module == "inventur" && $artikel_id > 0) {
$bezeichnung = $this->app->Secure->GetPOST("artikel");
- $preis = $this->app->Secure->GetPOST("preis");
- $preis = str_replace(',', '.', $preis);
+ $preis = $this->app->erp->FromFormatZahlToDB($this->app->Secure->GetPOST("preis"));
$nummer = $this->app->Secure->GetPOST("nummer");
/*adresse = $this->app->Secure->GetPOST("adresse");
@@ -2046,8 +1993,7 @@ class YUI {
/*
$bezeichnung = $this->app->Secure->GetPOST("artikel");
- $preis = $this->app->Secure->GetPOST("preis");
- $preis = str_replace(',','.',$preis);
+ $preis = $this->app->erp->FromFormatZahlToDB($this->app->Secure->GetPOST("preis"));
$nummer = $this->app->Secure->GetPOST("nummer");
*/
diff --git a/www/lib/class.erpapi.php b/www/lib/class.erpapi.php
index 44ed50c8..e764b32b 100644
--- a/www/lib/class.erpapi.php
+++ b/www/lib/class.erpapi.php
@@ -1452,30 +1452,24 @@ public function NavigationHooks(&$menu)
if(is_null($stellen))return "if(trim(round( $spalte *100))+0 <> trim($spalte*100)+0, format($spalte, length( trim($spalte)+0)-length(round($spalte))-1 ".($punkt?"":" ,'de_DE'")."),format($spalte,2".($punkt?"":" ,'de_DE'")."))";
return "format($spalte,$stellen".($punkt?"":" ,'de_DE'").")";
}
-
+
+
+
/**
- * @deprecated
+ * Wandelt eine Formatierte Zahl in das Format für die Datenbank um.
*
* @param $value
*
* @return mixed
+ * @deprecated
+ *
*/
function FromFormatZahlToDB($value)
{
- $poskomma = strrpos($value, ',');
- $pospunkt = strrpos($value, '.');
- if($poskomma === false) {
- return $value;
- }
- if($pospunkt === false) {
- return str_replace(',','.', $value);
- }
-
- if($poskomma > $pospunkt) {
- return str_replace(['.', ','], ['', '.'], $value);
- }
-
- return str_replace(',','', $value);
+ /** @var \Xentral\Components\I18n\FormatterService $fs */
+ $fs = $this->app->Container->get('FormatterService');
+ $number = $fs->floatFromUserInput(strval($value));
+ return $number->getPhpVal();
}
// @refactor Formater Komponente
@@ -1508,13 +1502,28 @@ public function NavigationHooks(&$menu)
}
return $prefix.'.'.'belegnr';
}
-
- // @refactor DbHelper Komponente
+
+
+
+ /**
+ * Erstelle die lokalisierten Formatierungsanweisungen für das SQL-Query.
+ * Wird and folgenden Stellen benutzt:
+ * -\Artikel::TableSearch()
+ *
+ * @param $spalte
+ * @param $decimals
+ *
+ * @return mixed
+ * @deprecated Es wäre besser, die Formatierung in PHP zu machen
+ *
+ */
+
function FormatMenge($spalte, $decimals = 0)
{
- return ('FORMAT('.$spalte.','.$decimals.',\'de_DE\')');
-
-// return "replace(trim($spalte)+0,'.',',')";
+ /** @var \Xentral\Components\I18n\FormatterService $fn */
+ $fs = $this->app->Container->get('FormatterService');
+ $number = $fs->factory(\Xentral\Components\I18n\Formatter\FloatFormatter::class);
+ return $number->setMinDigits($decimals)->formatForUserWithSqlStatement($spalte);
}
function FormatUCfirst($spalte)
@@ -12131,14 +12140,14 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
$this->app->Tpl->Add($target, $html);
}
- /**@deprecated**/
+ /**@deprected**/
function HelpIcon()
{
$module = $this->app->Secure->GetGET("module");
$action = $this->app->Secure->GetGET("action");
}
- /**@deprecated**/
+ /**@deprected**/
function PrinterIcon()
{
// $this->app->Tpl->Add('TABSPRINT',"
");
@@ -12769,12 +12778,21 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
return $obj->LieferscheinCheck($lieferschein);
}
}
-
-
- // @refactor Formater Komponente
+
+
+
+ /**
+ * Formatiert den $betrag als Währungs-Ausgabe-String.
+ *
+ * @param $betrag
+ *
+ * @return string
+ */
public function EUR($betrag)
{
- return number_format($betrag,2,',','.');
+ /** @var \Xentral\Components\I18n\FormatterService $fs */
+ $fs = $this->app->Container->get('FormatterService');
+ return $fs->formatPreis($betrag);
}
// @refactor Adresse Modul
@@ -12795,36 +12813,30 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
return $kreditlimit >= ($rechnungen+$auftraege);
}
-
- // @refactor FormHelper Komponente
- public function ReplaceBetrag($db,$value,$fromform = null)
+
+
+
+ /**
+ * Formatiert bzw. parst einen Geldbetrag für die Ausgabe im Formular oder die Speicherung in der DB.
+ *
+ * @param $db Richtung (true=Speichern in DB, false=Ausgabe im Formular)
+ * @param $value
+ * @param $fromform
+ *
+ * @return float|mixed|string
+ */
+ public function ReplaceBetrag($db, $value, $fromform = null)
{
+ /** @var \Xentral\Components\I18n\FormatterService $fs */
+ $fs = $this->app->Container->get('FormatterService');
+
// wenn ziel datenbank
- if($db)
- {
- // wenn . und , vorhanden dann entferne punkt
- $pos_punkt = strrpos($value, '.');
- $pos_komma = strrpos($value, ',');
- if(($pos_punkt !== false) && ($pos_komma !== false)){
- if($pos_punkt < $pos_komma){
- $value = str_replace('.', '', $value);
- }else{
- $value = str_replace(',', '', $value);
- }
- }
- return str_replace(',','.',$value);
+ if ($db) {
+ return $fs->parsePreis($value);
}
+
// wenn ziel formular
-
- if ($value != "") {
- //return $abkuerzung;
-
- if($value == round((float) $value, 2)) {
- return number_format((float)$value,2,',','');
- }
- }
-
- return rtrim(str_replace('.',',',$value),'0');
+ return $fs->formatPreis($value);
}
// @refactor FormHelper Komponente
@@ -13052,83 +13064,63 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
}
return $value;
}
-
- // @refactor FormHelper Komponente
- function ReplaceMenge($db,$value,$fromform)
+
+
+
+ /**
+ * Formatiert bzw. parst eine Menge für die Ausgabe im Formular oder die Speicherung in der DB.
+ *
+ * @param $db Richtung (true=Speichern in DB, false=Ausgabe im Formular)
+ * @param $value
+ * @param $fromform
+ *
+ * @return float|mixed|string
+ */
+ function ReplaceMenge($db, $value, $fromform)
{
- $tcheck = str_replace(',','.',$value);
- if($tcheck < 0) {
- return 1;
- }
-
-
- $dbformat = 0;
- if(strpos($value,'.') > 0) {
- $dbformat = 1;
- }
-
+ /** @var \Xentral\Components\I18n\FormatterService $fs */
+ $fs = $this->app->Container->get('FormatterService');
+
// wenn ziel datenbank
- if($db)
- {
- if($dbformat) {
- return $value;
- }
-
- if($value!=''){
- return str_replace(',', '.', $value);
- }
-
- return '';
+ if ($db) {
+ return $fs->parseMenge($value);
}
+
// wenn ziel formular
- if(strpos($value,'.') !== false)
- {
- $value = rtrim(rtrim($value,'0'),'.');
- if($value[0] === '.') {
- $value = '0'.$value;
- }
- }
- if($dbformat) {
- if($value!='') {
- return str_replace('.',',',$value);
- }
- return '';
- }
-
- return $value;
+ return $fs->formatMenge($value);
}
-
- // @refactor FormHelper Komponente
- function ReplaceDecimal($db,$value,$fromform)
+
+
+
+ /**
+ * Formatiert bzw. parst eine Zahl für die Ausgabe im Formular oder die Speicherung in der DB.
+ *
+ * @param $db Richtung (true=Speichern in DB, false=Ausgabe im Formular)
+ * @param $value
+ * @param $fromform
+ *
+ * @return array|mixed|string|string[]
+ */
+ function ReplaceDecimal($db, $value, $fromform)
{
- //value muss hier vom format ueberprueft werden
- $dbformat = 0;
- if(strpos($value,'.') > 0) {
- $dbformat = 1;
- }
-
+ /** @var \Xentral\Components\I18n\FormatterService $fs */
+ $fs = $this->app->Container->get('FormatterService');
+
// wenn ziel datenbank
- if($db)
- {
- if($dbformat) {
- return $value;
- }
-
- if($value!=''){
- return str_replace(',', '.', $value);
- }
- return '';
+ if ($db) {
+ $floatFormatter = $fs->floatFromUserInput(strval($value));
+ return $floatFormatter->getPhpVal();
}
+
// wenn ziel formular
-
- if($dbformat) {
- if($value!='') {
- return $value;
- }
- return '';
+ if (is_numeric($value)) {
+ $floatFormatter = $fs->floatFromPhpVal(floatval($value));
+ return $floatFormatter->formatForUser();
}
-
- return $value;
+
+ // Soweit sollte es gar nicht kommen
+ // TODO: soll hier eine Exception geworfen werden?
+ return null;
}
@@ -13856,7 +13848,7 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
}
}
- /**@deprecated */
+ /**@depreacated */
function CheckSamePage()
{
$id = $this->app->Secure->GetGET("id");
@@ -13868,7 +13860,7 @@ function SendPaypalFromAuftrag($auftrag, $test = false)
}
/**
- * @deprecated
+ * @depreacated
* @refactor Artikel Modul
*/
function SeitenSperrAuswahl($ueberschrift,$meldung)
@@ -13911,7 +13903,7 @@ $( this ).dialog( "close" );
');
}
-/**@deprecated */
+/**@depreacated */
function SeitenSperrInfo($meldung)
{
$this->app->Tpl->Set('SPERRMELDUNG', '$("a#inline").fancybox({
@@ -24944,7 +24936,7 @@ function ChargenMHDAuslagern($artikel, $menge, $lagerplatztyp, $lpid,$typ,$wert,
}
$ansprechpartner = str_replace('<','<',$ansprechpartner);
$ansprechpartner = str_replace('>','>',$ansprechpartner);
- list($name, $email) = explode('<', trim($ansprechpartner,'>'));
+ [$name, $email] = explode('<', trim($ansprechpartner,'>'));
$betreff = str_replace('\"','"',$betreff);
$betreff = str_replace("\'","'",$betreff);
@@ -27759,7 +27751,7 @@ function Firmendaten($field,$projekt="")
return $ret;
}
- /** @deprecated */
+ /** @depracated */
function GetPrioTicketSelect($prio)
{
$prios = array('4'=>'niedrig','3'=>'normal','2'=>'hoch');
diff --git a/www/pages/artikel.php b/www/pages/artikel.php
index 680d1175..6e130efc 100644
--- a/www/pages/artikel.php
+++ b/www/pages/artikel.php
@@ -22,6 +22,7 @@ include '_gen/artikel.php';
class Artikel extends GenArtikel {
/** @var Application $app */
var $app;
+ protected \Xentral\Components\I18n\FormatterService $formatterService;
const MODULE_NAME = 'Article';
public function TableSearch($app, $name, $erlaubtevars)
@@ -938,10 +939,10 @@ class Artikel extends GenArtikel {
IF(s.art='it','
- Informationsteil/Dienstleistung',''),IF(s.art='bt','
- Beistellung',''), COALESCE((SELECT GROUP_CONCAT('
- ', art.nummer, ' ', art.name_de, ' (', alt.reason, ')', '' SEPARATOR '') FROM parts_list_alternative AS alt INNER JOIN artikel AS art ON art.id = alt.alternative_article_id WHERE alt.parts_list_id = s.id), '')) as artikel,
CONCAT('',a.nummer,'') as nummer,
s.referenz,
- trim(s.menge)+0 as menge, a.einheit,
- ".$this->app->erp->FormatMenge('ifnull(lag.menge,0)').' as lager,
+ {$this->app->erp->FormatMenge('s.menge')} as menge, a.einheit,
+ {$this->app->erp->FormatMenge('ifnull(lag.menge,0)')} as lager,
CASE WHEN (SELECT SUM(lr.menge) FROM lager_reserviert lr WHERE lr.artikel=a.id) > 0
- THEN (SELECT '.$this->app->erp->FormatMenge('SUM(lr.menge)')." FROM lager_reserviert lr WHERE lr.artikel=a.id)
+ THEN (SELECT {$this->app->erp->FormatMenge('SUM(lr.menge)')} FROM lager_reserviert lr WHERE lr.artikel=a.id)
ELSE 0
END as reserviert,
s.id as menu
@@ -952,7 +953,7 @@ class Artikel extends GenArtikel {
INNER JOIN (
SELECT artikel
FROM stueckliste
- WHERE stuecklistevonartikel='$id' GROUP BY artikel
+ WHERE stuecklistevonartikel='{$id}' GROUP BY artikel
) AS s2 ON lpi.artikel = s2.artikel
INNER JOIN lager_platz AS lp ON lpi.lager_platz = lp.id AND ifnull(lp.sperrlager,0) = 0
GROUP BY lpi.artikel) AS lag ON a.id = lag.artikel
@@ -1871,6 +1872,9 @@ class Artikel extends GenArtikel {
public function __construct($app, $intern = false) {
//parent::GenArtikel($app);
$this->app=$app;
+
+ $this->formatterService = $this->app->Container->get('FormatterService');
+
if($intern){
return;
}
@@ -6003,7 +6007,8 @@ class Artikel extends GenArtikel {
$name = 'node'.$k;
$$name = new stdClass();
$$name->id = $v['id'];
- $$name->label = ' '.$v['menge'].' x '.$v['nummer'].' '.(strlen($v['name_de']) < 30?$v['name_de']:(mb_substr($v['name_de'],0,27).'...')).'';
+ $$name->label = " {$this->formatterService->formatMenge($v['menge'])} x "
+ . ''.$v['nummer'].' '.(strlen($v['name_de']) < 30?$v['name_de']:(mb_substr($v['name_de'],0,27).'...')).'';
$$name->checkbox = false;
$$name->inode = false;
$$name->radio = false;
@@ -6035,7 +6040,8 @@ class Artikel extends GenArtikel {
$name = 'node'.$k;
$$name = new stdClass();
$$name->id = $v['id'];
- $$name->label = ' '.$v['menge'].' x '.$v['nummer'].' '.(strlen($v['name_de']) < 30?$v['name_de']:(mb_substr($v['name_de'],0,27).'...')).'';
+ $$name->label = " {$this->formatterService->formatMenge($v['menge'])} x "
+ . ''.$v['nummer'].' '.(strlen($v['name_de']) < 30?$v['name_de']:(mb_substr($v['name_de'],0,27).'...')).'';
$$name->checkbox = false;
$$name->inode = false;
$$name->radio = false;
@@ -6321,7 +6327,7 @@ class Artikel extends GenArtikel {
$id = (int)$this->app->Secure->GetPOST('id');
- $data = $this->app->DB->SelectRow("SELECT s.id, s.artikel, trim(s.menge)+0 as menge, s.art, s.referenz, s.layer, s.place, s.wert, s.bauform, s.zachse, s.xpos, s.ypos FROM stueckliste s WHERE s.id = '$id' LIMIT 1");
+ $data = $this->app->DB->SelectRow("SELECT s.id, s.artikel, s.menge, s.art, s.referenz, s.layer, s.place, s.wert, s.bauform, s.zachse, s.xpos, s.ypos FROM stueckliste s WHERE s.id = '{$id}' LIMIT 1");
if($data){
if($data['artikel'] == 0){
@@ -6349,7 +6355,8 @@ class Artikel extends GenArtikel {
}
}
}*/
-
+
+ $data['menge'] = $this->formatterService->formatMenge($data['menge']);
}else{
$data['id'] = 0;
@@ -6378,7 +6385,7 @@ class Artikel extends GenArtikel {
$id = (int)$this->app->Secure->GetPOST('eid');
$startikelid = (int)$this->app->Secure->GetPOST('estartikelid');
$artikel = trim($this->app->Secure->GetPOST('eartikel'));
- $menge = str_replace(',','.',trim($this->app->Secure->GetPOST('emenge')));
+ $menge = $this->formatterService->parseMenge($this->app->Secure->GetPOST('emenge'));
$art = trim($this->app->Secure->GetPOST('eart'));
//$alternative = trim($this->app->Secure->GetPOST('ealternative'));
$referenz = trim($this->app->Secure->GetPOST('ereferenz'));