JavaScript ES6 налоговые расчеты с некоторыми пунктами освобождаются - PullRequest
0 голосов
/ 01 июля 2018

Я настраиваю налоговый калькулятор 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. Я пытаюсь избежать жесткого кодирования суммы налога на единицу, поскольку в конечном итоге будет только два типа налога.

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