Search the Community
Showing results for tags 'округление'.
Found 2 results
-
Sort By
- Date
- Relevancy
-
Округление НДС в Предложениях/Счетах в SuiteCRM: проблема одной копейки
SpravkaCRM.ru posted a topic in Заметки по ходу разработки
Столкнулся с некорректным вычислением НДС и суммы без и с НДС в Счетах в SuiteCRM. Когда для конечного клиента по той или иной позиции показывают цену без НДС, то все считается превосходно: 40 000 + 18% = 47 200 А вот в случаях, когда озвучиваемая клиенту цена уже содержит в себе НДС, то при составлении Счетов по таким позициям возможны некоторые математические ошибки на одну копейку: Допустим конечная цена для клиента на позицию = 40 000 тогда стоимость по прайсу: 40 000 / 1.18 = 33 898.305 но дело в том, что в Счетах при редактировании позиций можно указывать цифры только с двумя знаками после запятой. А пятерка на конце цифры33 898.305 дает некоторую неопределенность в округлении - толи вверх, толи в низ. Из-за этого происходит нарушение расчетов в функцииcalculateLine в файлеmodules/AOS_Products_Quotes/line_items.js при вычислении размера налога. Если в поле "Стоимость по прайсу" ввести значение33 898.305, то все будет подсчитано корректно. НО! три знака после запятой не сохранится! Сохранится только два! А это значит, что при последующем редактировании в это поле будет подставлено значение33 898.30. а это приведет к тому, что конечная цена с НДС будет не 40 000 а39,999.99 Если же в поле ввести33,898.31, то это тоже даст погрешность в одну копейку: Решением этой проблемы является округление "вверх" при расчете суммы налога: Найдите в функцииcalculateLine строки: var vat = unformatNumber(document.getElementById(key + 'vat' + ln).value,',','.'); var productTotalPrice = productQty * productUnitPrice; var totalvat=(productTotalPrice * vat) /100; и добавьте к ним еще одну строчку, чтобы получилось вот так: var vat = unformatNumber(document.getElementById(key + 'vat' + ln).value,',','.'); var productTotalPrice = productQty * productUnitPrice; var totalvat=(productTotalPrice * vat) /100; totalvat = Math.ceil(totalvat*100)/100; Тем самым мы строкойtotalvat=Math.ceil(totalvat*100)/100; приводим промежуточное значение налога к двум знакам после запятой с округлением "вверх". В итоге НДС будет рассчитан правильно: Фикс бага проверялся на SuiteCRM 7.3.2, но, думаю будет актуален и для более ранних и более поздних версий SuiteCRM. Так же баг наблюдается во всех модулях SuiteCRM, использующих набор продуктов при помощи модуляAOS_Products_Quotes: Счета, Предложения Просмотреть полную запись -
Округление НДС в Предложениях/Счетах в SuiteCRM: проблема одной копейки
SpravkaCRM.ru posted a record in Доводим напильником SuiteCRM
Столкнулся с некорректным вычислением НДС и суммы без и с НДС в Счетах в SuiteCRM. Когда для конечного клиента по той или иной позиции показывают цену без НДС, то все считается превосходно: 40 000 + 18% = 47 200 А вот в случаях, когда озвучиваемая клиенту цена уже содержит в себе НДС, то при составлении Счетов по таким позициям возможны некоторые математические ошибки на одну копейку: Допустим конечная цена для клиента на позицию = 40 000 тогда стоимость по прайсу: 40 000 / 1.18 = 33 898.305 но дело в том, что в Счетах при редактировании позиций можно указывать цифры только с двумя знаками после запятой. А пятерка на конце цифры33 898.305 дает некоторую неопределенность в округлении - толи вверх, толи в низ. Из-за этого происходит нарушение расчетов в функцииcalculateLine в файлеmodules/AOS_Products_Quotes/line_items.js при вычислении размера налога. Если в поле "Стоимость по прайсу" ввести значение33 898.305, то все будет подсчитано корректно. НО! три знака после запятой не сохранится! Сохранится только два! А это значит, что при последующем редактировании в это поле будет подставлено значение33 898.30. а это приведет к тому, что конечная цена с НДС будет не 40 000 а39,999.99 Если же в поле ввести33,898.31, то это тоже даст погрешность в одну копейку: Решением этой проблемы является округление "вверх" при расчете суммы налога: Найдите в функцииcalculateLine строки: var vat = unformatNumber(document.getElementById(key + 'vat' + ln).value,',','.'); var productTotalPrice = productQty * productUnitPrice; var totalvat=(productTotalPrice * vat) /100; и добавьте к ним еще одну строчку, чтобы получилось вот так: var vat = unformatNumber(document.getElementById(key + 'vat' + ln).value,',','.'); var productTotalPrice = productQty * productUnitPrice; var totalvat=(productTotalPrice * vat) /100; totalvat = Math.ceil(totalvat*100)/100; Тем самым мы строкойtotalvat=Math.ceil(totalvat*100)/100; приводим промежуточное значение налога к двум знакам после запятой с округлением "вверх". В итоге НДС будет рассчитан правильно: Фикс бага проверялся на SuiteCRM 7.3.2, но, думаю будет актуален и для более ранних и более поздних версий SuiteCRM. Так же баг наблюдается во всех модулях SuiteCRM, использующих набор продуктов при помощи модуляAOS_Products_Quotes: Счета, Предложения-
- округление
- 1 копейка
-
(and 2 more)
Tagged with: