2016-11-03 61 views
0

從Prestashop管理員我添加了新貨幣(用26,51顯示逗號的貨幣)並下了訂單。它以新貨幣顯示價格(見圖1),但是當我使用網絡服務獲得訂單時,它不會用逗號獲得新貨幣的價格,它以點而不是逗號表示。 (見圖像2)Prestashop使用webservice嘗試獲取它時的貨幣問題

Image 1

Image 2

+0

問題是? – sarcom

+0

我想要在管理員中顯示的API具有相同的值。像在管理中顯示爲26,51(使用逗號),但在API中使用26.51(不使用逗號) – Indian

+0

您必須使用簡單的字符串替換進行「轉換」。所有的價格都存儲在數據庫中的點:) – sarcom

回答

0

在數據庫的PrestaShop,價格值存儲爲實際值(浮點數)。要在任何界面上顯示它們,PrestaShop會將這些值傳遞給預定義的函數,然後僅顯示該函數的輸出。

說的Prestashop使用功能是

Tools::displayPrice() 

你也可以用它來實際浮點值轉換爲正確格式的貨幣價值。

0

您需要進行預處理是從Web服務中獲得的價值,以應用適當的區域設置語言:

$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']); 

}

使用功能number_format_locale(),以總價轉換成法語。

法語:bonne chance!

0

你可以爲你想要的返回值的自定義方法,使Order類覆蓋(建立在prestashop/override/classes/order一個新的PHP文件名爲Order.php):

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); 
    } 
} 

很明顯,你可以「格式化」的所有字段,但要注意父設置。