Franz Holzinger

Verse of the day

Denn es ist ein Gott und ein Mittler zwischen Gott und den Menschen, nämlich der Mensch Christus Jesus, der sich selbst gegeben hat für alle zur Erlösung, daß solches zu seiner Zeit gepredigt würde;
1 Timotheus 2:5-6

© Bible Gateway's Verse of the Day


autor  
15-04-11 13:49:12 priceThousandPoint Problem
Andreas Pohl
Hallo Herr Holzinger,

Wir haben bei unseren Preisen die Deutsche Punktierung angewendet. Im Setup habe ich folgendes konfiguriert:

plugin.tt_products.priceDec = 2
plugin.tt_products.priceDecPoint = ,
plugin.tt_procucts.priceThousandPoint =

Leider fügt er bei manchen Tausenderpreisen, die keine Nachkommastellen haben ein , als Tausenderzeichen ein. Die Angaben bei priceThousandPoint ignoriert er völlig. Auch wenn ich dort ein . einfüge.

Hier ein Beispielscreenshot:

http://blog.wilke.de/typo/bsp_thousandpoint.jpg

Ich hoffe Sie können uns da mal wieder weiterhelfen :)

Grüße,
Andreas Pohl
18-04-11 07:37:23 noZeroDecimalPoint
Andreas Pohl
Hallo Herr Holzinger,

ich konnten den Fehler einwenig eingrenzen. Wenn ich noZeroDecimalPoint ausschalte, tritt er nicht mehr auf. Es muss also etwas am Code der Konfiguration für die wegfallenden Nachkommastellen sein oder eben durch die Verbindung der fehlenden Nachkommastellen.

Grüße,
Andreas Pohl
18-04-11 14:51:17 Vorschlag zur Änderung
Franz Holzinger
Probieren Sie das aus:

view/field/class.tx_ttproducts_field_price_view.php


public function priceFormat ($double) {
$cnf = &t3lib_div::getUserObj('&tx_ttproducts_config');
$conf = &$cnf->conf;
$double = round($double, 10);

if ($conf['noZeroDecimalPoint'] && round($double, 2) == intval($double)) {
$rc = number_format($double);
$rc = number_format($double, 0, '', $conf['priceThousandPoint']);
} else {
$rc = number_format($double, intval($conf['priceDec']), $conf['priceDecPoint'], $conf['priceThousandPoint']);
}
return $rc;
} // priceFormat
18-04-11 15:24:34 funktioniert halbwegs
Andreas Pohl
Das komische auftauchende Komma scheint nicht mehr zu erscheinen. Jedoch macht er auch keine tausendertrennung mit einem Punkt wie ich das jetzt konfiguriert habe. Das ist aber erstmal nicht tragisch.
18-04-11 18:58:45 0
Franz Holzinger
Vermutlich benötigt er einen '.' als Parameter, also so:

$rc = number_format($double, 0, '.' , $conf['priceThousandPoint']);
19-04-11 07:53:42 leider nicht
Andreas Pohl
funktioniert leider auch mit dem '.' nicht.
20-04-11 21:58:00 Test PHP Code
Franz Holzinger
Ich habe folgenden PHP Code zum Testen geschrieben:

1. Beispiel:
$double = '83776633';
$rc = number_format($double, 0, '.' , '.');
debug ($rc, 'init priceFormat $rc');

Ergebnis:

83.776.633


2. Beispiel:

$rc = number_format($double, 0, '.' , '');

Ergebnis:

83776633

Es passt alles. Oder welchen Fall haben Sie ausprobiert?
3-05-11 07:45:59 Setup
Andreas Pohl
Wenn ich das so übernehme wie sie das hier vorgeschlagen haben funktioniert es bei mir teilweise auch. Alle Marker werden auch entsprechend mit den tausenderpunkten ersetzt. Lediglich der Marker ###PRICE_TOTEL_TAX### übernimmt diese Konfiguration gar nicht.

Wir haben uns entschieden doch keine tausenderpunkte zu verwenden aber es scheint als wäre da noch ein Fehler im System. Nun funktioniert es aber auch mit meiner Konfiguration. Leider eben nicht beim PRICE_TOTAL_TAX.
3-05-11 10:49:20 unklar
Franz Holzinger
Iich habe alle Stellen untersucht, in denen der Marker ###PRICE_TOTAL_TAX### erzeugt wird. Es wird jedes Mal die Methode priceFormat vor Zuweisung aufgerufen.

Oder welche Version von tt_products wäre das? Oder tritt dieser Fehler nur bei einem bestimmten Preis auf?
5-07-11 15:12:47 Auflistung
Andreas Pohl
Hier der Link zu unserer Homepage:

http://wilke.de

Wenn sie nun einmal genügend Produkte in den Warenkorb legen um einen Preis zu erzeugen der hoch genug ist, sollten sie das Problem sehen.

###PRICE_TOTAL_NO_TAX### = hat ein , als Tausendertrennung
###PRICE_TOTAL_ONLY_TAX### = keine Trennung
###PRICE_TOTAL_TAX### = keine Trennung

Hierbei ist derzeit keine Trennung für die tausenderpreise konfiguriert. Selbst wenn ich aber ein . als Trennung eingebe, funktioniert das nur für ONLY_TAX und TAX, aber nicht für NO_TAX. Dort bleiben immer die blöden Kommas bestehen.

Grüße,
Andreas Pohl
5-07-11 15:17:11 vergessen
Andreas Pohl
###PRICE_TOTAL_TAX### = hat auch ein , als Tausendertrennung
5-07-11 19:29:10 welche Version von tt_products?
Franz Holzinger
Ich habe keinen Marker '###PRICE_TOTAL_TAX###' gefunden, bei dem das beschriebene Verhalten auftritt. Das müsste man irgendwo debuggen, denn sonst suche ich vergeblich.
6-07-11 07:06:40 Version
Andreas Pohl
2.9.1..
6-07-11 19:04:03 Beispiel
Franz Holzinger
Ich habe es mit tt_products 2.9.1 nachgetestet. In beiden Markern wird ein Komma als ',' gesetzt.

Daten:

plugin.tt_products.priceDec = 2
plugin.tt_products.priceDecPoint = ,
plugin.tt_products.priceThousandPoint =

Sie haben einen Tippfehler in den Constants von priceThousandPoint

Für die Unterstützung der Tausenderformatierung muss der Code noch erweitert werden auf:
view/field/class.tx_ttproducts_field_price_view.php

public function priceFormat ($double) {
$cnf = &t3lib_div::getUserObj('&tx_ttproducts_config');
$conf = &$cnf->conf;
$double = round($double, 10);

if ($conf['noZeroDecimalPoint'] && round($double, 2) == intval($double)) {
$rc = number_format($double, 0, $conf['priceDecPoint'], $conf['priceThousandPoint']);
} else {
$rc = number_format($double, intval($conf['priceDec']), $conf['priceDecPoint'], $conf['priceThousandPoint']);
}
return $rc;
} // priceFormat
12-07-11 09:23:02 funktioniert!
Andreas Pohl
Dankeschön :) Werden sie das in den nächsten Versionen der 2.9 auch einpflegen oder soll ich das in meine Liste der Änderungen bei Updates einpflegen?
12-07-11 12:39:48 nächstes Update
Franz Holzinger
Das wird in der nächsten Zwischenversion von 2.9.1 mit dabei sein. Sie können es jetzt schon manuell selber einfügen.
< Zurück zum Forum