In the following code, when order.total_price_with_tax is 1650 and order.single_number_of_order_item is 1, I want to set the value of formattedUnitPrice and formattedTotalPrice to 1,500.
For some reason, the output is 1,499.
Math.trunc is used because the result of the UnitPrice calculation may include a decimal point, so we want to truncate the decimal point and extract an integer multiplied by the number of itemsCount.
function formatCurrency(number) {
const formattedNumber = number.toLocaleString('ja-JP');
return formattedNumber;
}
function generateTableRow(order) {
const formattedOrderDate = formatDate(order.order_date);
const nextDay = new Date(formattedOrderDate);
nextDay.setDate(nextDay.getDate() + 1);
const nextDayFormatted = `${nextDay.getFullYear()}/${String(nextDay.getMonth() + 1).padStart(2, '0')}/${String(nextDay.getDate()).padStart(2, '0')}`;
const boxCount = order.dars_number_of_order_item + order.item_leaflet;
const unitPriceWithoutTax = order.single_number_of_order_item > 0 ?
Math.trunc(order.total_price_with_tax / order.single_number_of_order_item / 1.1) :
(order.dars_number_of_order_item > 0 ?
Math.trunc(order.total_price_with_tax / order.dars_number_of_order_item / 1.1) :
Math.trunc(order.total_price_with_tax / order.item_leaflet / 1.1));
const itemCount = order.single_number_of_order_item > 0 ?
order.single_number_of_order_item :
(order.dars_number_of_order_item > 0 ?
order.dars_number_of_order_item :
order.item_leaflet);
const formattedUnitPrice = formatCurrency(unitPriceWithoutTax);
const formattedTotalPrice = formatCurrency(unitPriceWithoutTax * itemCount);
return `
<tr>
<td style="text-align:center;">${nextDayFormatted}</td>
<td style="text-align:left;">${order.item_name}</td>
<td>${boxCount}</td>
<td>${order.total_item_num}</td>
<td>${order.unit}</td>
<td>${formattedUnitPrice}</td>
<td>${formattedTotalPrice}</td>
</tr>
`;
}