JavaScript ES6税收计算,其中某些项目免税

时间:2018-07-01 14:50:11

标签: javascript oop object ecmascript-6

我正在设置es6 / oop税收计算器,并且在正确设置税收金额时遇到了一些问题。我用它们的数量和价格实例化产品对象,并将它们添加到库存中,然后在整个库存中调用total方法。有些产品免税,所以我使用的是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将营业税设置为.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。我试图避免对每个项目的税额进行硬编码,因为最终将只有两种税种。

0 个答案:

没有答案