2010-08-24 6 views
0

J'ai besoin de mon magasin jusqu'à 4 décimales. Jusqu'à présent, j'ai suivi quelques tuts et ils travaillent bien à l'avant pour les produits. Seulement dans les prix de vente/facture, les taxes et les totaux sont toujours arrondis à 2 décimales.Magento - décimales dans la facture/être

J'ai édité/réenregistrés fichiers suivants:

\ app code \ \ Local \ Mage \ Adminhtml \ bloc \ Catalog \ produit \ Edition \ Tab \ Options \ option.php
quelque part autour de la ligne 283 i changé return number_format($value, 2, null, ''); dans

\ app code \ \ Local \ Mage \ Adminhtml \ bloc \ Catalog \ produit \ Aide \ Form \ Price.php
même que dans option.php

\ app \ Code \ Local \ Mage \ Core \ Model \ store.php
sortie modifiée de la fonction roundPrice() ligne 740 dans return round($price, 4);

\ app \ Code \ Local \ Mage \ Directory \ Modèle \ Monnaie php
en fonction format() changé formatPrecision de 2 à 4 dans la ligne 197.

\ lib \ Zend \ Currency.php
$_options['precision'] a changé de 2 à 4

\ app \ conception \ adminhtml \ default \ default \ template \ catalog \ produit \ modifier \ prix \ tier.phtml
echo sprintf('%.2f', $_item['price']); changé sprintf('%.4f', $_item['price'])

Ive a regardé dans certains fichiers de base comme facture.php ou dans les fichiers adminhtml s'il y a des trucs d'arrondi. Mais je ne pouvais rien trouver d'utile.

utilisé des extensions: (Magento 1.4.1.0)
Asperience_DeleteAllOrders
Flagbit_ChangeAttributeSet
Mxperts_Invoice
de_DE LanguagePack

grâce, greetz Rito

magento round issue

(désolé pour l'allemand dans l'image)

+2

Magento est très complexe, il y a beaucoup de fichiers et la pile d'appels de fonction est très profonde. Vous devriez envisager d'utiliser un débogueur pas-à-pas comme XDebug ou Zend Debugger pour trouver votre problème. Personnellement, j'ai codé avec Magento il y a 6 mois et je continuais à faire du débogage à distance avec PDT/XDebug. Au moins une fois par jour. – greg0ire

Répondre

0

« totaux » était un bon indice, thx à jour Jonathan

Heres la solution pour les ventes/facture avec quatre chiffres après la virgule.

\ app code \ \ Local \ Mage \ Adminhtml \ Bloquer \ Sales \ Articles \ Abstract.php
changement code suivant:
Ligne 292: function displayPrices() changement return $this->displayRoundedPrices($basePrice, $price, 4, $strong, $separator);
Ligne 305: $precision=2 en $precision

\ app code \ \ Local \ Mage \ Sales \ Model \ order.php ligne 1358:

public function formatPrice($price, $addBrackets = false) 
    { 
     return $this->formatPricePrecision($price, 4, $addBrackets); 
    } 

Je sais que très sale, mais il fonctionne très bien :)

1

Ma première suggestion serait d'allumer les conseils Frontend et Backend (System>Config>Advanced>Developer) afin que vous puissiez voir quel bloc et quelle vue phtml est responsable du rendu du contenu à deux décimales. Si vous installez le Developer Toolbar extension, vous trouverez cela beaucoup plus facile. En regardant votre capture d'écran, je pense que cela vient de la vue Admin Sales Order, et donc les fichiers phtml sous app/design/adminhtml/default/default/template/sales/order/create/totals et les blocs = Mage_Adminhtml_Block_Sales_Order_Create_Totals_Default sont un bon endroit pour regarder. La fonction formatPrice semble utiliser Store.php que vous avez remplacé et certains des fichiers Currency.

Je soupçonne que @ greg0ire est correct, celui-ci va effectuer un débogage à distance pour traquer. Il est possible que votre $options['precision'] soit écrasé quelque part, vous devez donc voir sa valeur au moment de l'exécution.

Bonne chance, JD

post-scriptum Je suppose que vous avez effacé et désactivé le cache ... Notez que le cache adminhtml est et non effacé dans l'interface graphique System>Cache Management, vous devez supprimer manuellement les fichiers dans var/cache.

+0

merci pour vos conseils. – Rito

0

trouvé un moyen simple différent magento 1.5.1

obtenu au code/core/Mage/Répertoire/Modèle/Currency.php

changement ligne numéro 194.

format fonction publique (prix de $, $ options = array(), $ includeContainer = true, $ addBrackets = false) { retour $ this-> formatPrecision (prix de $, 0 , $ options, $ includeContainer, $ addBrackets); }

0 - Indique le point de précision pour le prix.