Я настраиваю налоговый калькулятор es6 / oop и у меня возникают проблемы при правильной настройке суммы налога. Я создаю экземпляры объектов продукта с их количеством и ценой, добавляю их в инвентарь, а затем вызываю общий метод для всего инвентаря. Некоторые продукты освобождены от налогов, поэтому я использую объект BasicProduct и объект ExemptProduct:
const Product = require('./Product')
class ExemptProduct extends Product {
constructor(product) {
super(product)
this._salesTax = product.salesTax
}
get salesTax() {
return this.setSalesTax();
}
setSalesTax () {
return null;
}
}
module.exports = ExemptProduct
BasicObject устанавливает налог с продаж на 0,10. Мой total
метод здесь:
total() {
let total = 0
let tax = 0
let importDuty = .05
for (let productId in this.items) {
total += this.inventory.products.find(product => {
return product.id == productId
}).price * this.items[productId]
tax += this.inventory.products.find(product => {
return product.id == productId
}).salesTax * this.items[productId]
console.log(tax)
}
let taxToApply = total * tax
let importDutyToApply = total * importDuty
total = total + taxToApply + importDutyToApply
return total
}
В данный момент я тестирую три инвентарных элемента, два из которых являются экземплярами безналоговых продуктов. Все они выходят с правильной суммой налога, пока не достигнут этого for in
. В файле console.log, который я оставил, распечатывается .10 для всех трех, когда два из них должны быть 0 / null. Я пытаюсь избежать жесткого кодирования суммы налога на единицу, поскольку в конечном итоге будет только два типа налога.