Ben bir e-ticaret uygulaması için çoklu para birimi desteği ekliyorum. Ben sorunu yaklaştı yolu taban para uygulama tutmak ve şablon bir fiyatı gösteren bir priceDisplay () fonksiyonu / eklenti her zaman aramak sahip oldu. Yani şablon dolar tutarları fiyatları almaya devam ediyor. PriceDisplay işlevi doğru gerekirse fiyatını dönüştürür ve oturumda saklanan izleyiciler ayarlarına bağlı olarak doğru $ veya Euro işareti ekler. Sipariş teslim üzerine, başvuru dolar miktarı yanı sıra currencyCode ve currencyRate sırasını saklar. Ayrıca biz onlar sipariş ekranda gösterildi tam olarak ne fatura almak sağlamak için kendi para müşterinin kredi kartı tahsil edilecektir.
Çıkış sırasında yanı sıra sepeti sepeti toplamları görüntülenirken Şimdi ben yaşıyorum konudur. Örnek olarak, uygulama fiyatları alışveriş sepeti görüntülemek için şablon gönderir:
subtotal: 9.75
ship: 5.95
total: 15.70
Şablon bu miktarda alır ve her öğe üzerinde priceDisplay işlevini çağırır. Döviz kuru 1.1 ise, o zaman biz kullanıcıya görüntülenen olsun:
subtotal: 10.725 -> 10.73
ship: 6.545 -> 6.55
total: 17.27
Bunu subtotal + gemi = 17.28 görebilirsiniz, ancak dönüştürülen toplam 17.27 olduğunu.
Yani bence seçeneklerin çift tüm yol boyunca düşünce olmasa, işe yarayabilir:
- Uygulama tarafında tüm dönüşüm Kolu
- Ürün ulaştı edileceği durumlarda, şablon onları dönüştürmek ve sağlayacak priceDisplay işlevi, temel para birimi birlikte tüm bireysel addends ve toplam göndermek gerektiğini converted total ve sum of addends maç kadar. Bu durumda, o nasıl toplam 15.70 ama belki 15.71 veya 15.69 değil uygulamaya iletişim yapmak (biz baz para düzeni saklanması ve ödeme işlerken exchangeRate çarpın olacak çünkü.)
- Dönüşümlerin parçası olarak düştü / eklenen ondalık noktaları takip edin ve o ile 'akıllı' bir şey yapmak. Yani bu örnekte, 10.725, biz 5/1000 ekledi. Biz 6,545 dönüştürmek Peki, ne zaman biz ilk daha sonra dönüştürmek 0,005 damla gerekir. Belki de bu seçenek 2 yukarıdaki yaptığı süreçtir?
- Burada öneri.
Herhangi bir fark yaparsa, uygulama PHP ve şablon Smarty olduğunu.
You can also see the same issue in adding the line totals of the cart items:
3 items x 9.75 each = 29.25
converted:
3 items x 10.73 (10.725) = 32.18 (32.175)
but 3 x 10.73 = 32.19 != 32.18