2016-11-03 14 views
0

Von Prestashop admin Ich habe neue Währung (Währung, die Werte mit Komma wie 26,51 anzeigen) hinzugefügt und eine Bestellung aufgeben. Es zeigt die Preise in der neuen Währung an (siehe Bild 1), aber wenn ich die Bestellung über den Web-Service erhalte, wird der Preis nicht in der neuen Währung mit Komma angezeigt, sondern in Punkten anstelle von Komma. (Siehe Bild 2)Prestashop Währung Problem, wenn versuchen, es mit Webservice

Image 1

Image 2

+0

Und das Problem ist? – sarcom

+0

Ich möchte den gleichen Wert in API, die in Admin angezeigt wird. Wie in Admin seine Anzeige als 26,51 (mit Komma), aber in API seine 26,51 (ohne Komma) – Indian

+0

Sie müssen 'konvertieren' mit einem einfachen String ersetzen. Alle Preise sind mit Punkt in der Datenbank gespeichert :) – sarcom

Antwort

0

In PrestaShop Datenbank werden die Preiswerte gespeichert als Ist-Werte (Float-Zahlen). Um sie an jeder Schnittstelle anzuzeigen, übergibt PrestaShop die Werte an eine vordefinierte Funktion und zeigt dann nur die Ausgabe dieser Funktion an.

Die Funktion, die Prestashop verwendet, ist

Tools::displayPrice() 

Sie auch verwenden, können die tatsächlichen float Wert auf die richtige Formatierung Währungswert zu konvertieren.

0

Sie würden den Wert, den Sie aus dem Web-Service erhalten vorverarbeitet benötigen Sie die entsprechende Landessprache anwenden:

$locale = (isset($_COOKIE['locale'])) ? 
     $_COOKIE['locale'] : 
     $_SERVER['HTTP_ACCEPT_LANGUAGE']; 

function number_format_locale($number,$decimals=2) { 
$locale = localeconv(); 
return number_format($number,$decimals, 
      $locale['decimal_point'], 
      $locale['thousands_sep']); 

}

die Funktion number_format_locale() Verwenden Sie den Gesamtpreis auf Französisch zu konvertieren.

Französisch: bonne chance!

0

Sie können eine benutzerdefinierte Methode machen, die den Wert zurückgibt, wie Sie wollen, stellen Sie eine Überschreibung von Order Klasse (erstellen Sie eine neue PHP-Datei in prestashop/override/classes/orderOrder.php genannt):

class Order extends OrderCore{ 
    public function __construct($id = null, $id_lang = null){ 
     $this->webserviceParameters['fields']['total_paid'] = array(
      'getter' => 'getWsTotalPaid' 
     ); 

     parent::__construct($id, $id_lang); 
    } 

    public function getWsTotalPaid(){ 
     return str_replace('.', ',', $this->total_paid); 
    } 
} 

Offensichtlich können Sie ‚Neuformatierung‘ alle Felder, die Sie möchten, aber achten Sie auf Elterneinstellungen.

Verwandte Themen