Magento - десятичные точки в счете-фактуре - PullRequest
0 голосов
/ 24 августа 2010

Мне нужно для моего магазина до 4 десятичных знаков. До сих пор я следовал некоторым правилам, и они отлично работали в передней и задней части для продуктов. Только в ценах продаж / счетов налоги и итоги все еще округляются до 2 десятичных знаков.

Я отредактировал / переписал следующие файлы:

\ приложение \ код \ Local \ Mage \ Adminhtml \ Block \ Каталог \ Продукт \ Edit \ Вкладка \ Options \ Option.php
где-то около строки 283 я изменил return number_format($value, 2, null, ''); в return number_format($value, 4, null, '');

\ приложение \ код \ Local \ Mage \ Adminhtml \ Block \ Каталог \ Продукт \ Helper \ Form \ Price.php
такой же, как в Option.php

\ приложение \ код \ Local \ Mage \ Ядро \ Model \ Store.php
изменил вывод функции roundPrice() строка 740 на return round($price, 4);

\ приложение \ код \ Local \ Mage \ Directory \ Model \ Currency.php
в функции format() изменено formatPrecision с 2 на 4 в строке 197.

\ Lib \ Zend \ Currency.php
$_options['precision'] изменено с 2 на 4

\ приложение \ дизайн \ adminhtml \ по умолчанию \ умолчанию \ шаблон \ каталог \ продукт \ редактировать \ цены \ tier.phtml
echo sprintf('%.2f', $_item['price']); изменено на sprintf('%.4f', $_item['price'])

Я посмотрел некоторые основные файлы, такие как invoice.php или adminhtml, если есть какие-то округления. Но я не смог найти ничего полезного.

используемые расширения: (Magento 1.4.1.0)
Asperience_DeleteAllOrders
Flagbit_ChangeAttributeSet
Mxperts_Invoice
языковой пакет de_DE

спасибо, привет Рито

magento round issue

(извините за немецкий на картинке)

Ответы [ 3 ]

1 голос
/ 25 августа 2010

Моим первым предложением было бы включить подсказки Frontend и Backend (System>Config>Advanced>Developer), чтобы вы могли видеть, какой блок и какой просмотр phtml отвечают за отображение содержимого с двумя десятичными знаками. Если вы установите расширение панели инструментов разработчика , вам будет гораздо проще.

Глядя на ваш скриншот, я думаю, что это происходит из представления «Заказ на продажу администратора», и поэтому файлы phtml в app/design/adminhtml/default/default/template/sales/order/create/totals и Blocks = Mage_Adminhtml_Block_Sales_Order_Create_Totals_Default - это хорошее место для поиска. Кажется, что функция formatPrice использует перезаписанный вами Store.php и некоторые файлы Currency.

Я подозреваю, что @ greg0ire верен, для отслеживания этого потребуется некоторая удаленная отладка. Вполне возможно, что ваш $options['precision'] где-то перезаписывается, поэтому вам нужно увидеть его значение во время выполнения.

Удачи, JD

P.S. Я предполагаю, что вы очистили и отключили кэш ... Обратите внимание, что кэш adminhtml не очищен в System>Cache Management GUI, вы должны вручную удалить файлы в var/cache.

0 голосов
/ 12 мая 2011

Обнаружен другой простой способ в magento 1.5.1

Получил код / ​​core / Mage / Directory / Model / Currency.php

изменить номер строки 194.

открытый формат функции ($ price, $ options = array (), $ includeContainer = true, $ addBrackets = false) {return $ this-> formatPrecision ($ price, 0, $ options, $ includeContainer, $ addBrackets);}

0 - обозначает точную точку цены.

0 голосов
/ 26 августа 2010

"итоги" - хороший намек, спасибо Джонатану Дэй

Вот решение для продаж / счета с четырьмя десятичными знаками.

\ приложение \ код \ Local \ Mage \ Adminhtml \ Block \ Sales \ Items \ Abstract.php
изменить следующий код:
Строка 292: function displayPrices() изменить на return $this->displayRoundedPrices($basePrice, $price, 4, $strong, $separator);
Строка 305: $precision=2 в $precision

\ приложение \ код \ Local \ Mage \ Sales \ Model \ Order.php строка 1358:

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

Я знаю, что он очень грязный, но он отлично работает:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...