Pertanyaan itu diajukan sebelumnya tetapi tidak ada jawaban yang tepat. Masalahnya adalah saya sedang mengembangkan aplikasi POS untuk klien Kanada. Saya terjebak dalam perhitungan pajak dan tidak dapat menemukan solusi. Jadi inilah skenario saya, saya punya 2 item katakanlah item 1 = $10 dan item 2 = $2. Angka 2 bebas pajak artinya pajak (13%) tidak akan dikenakan pada angka 2 tetapi sebelum dikenakan pajak. Saya perlu menerapkan diskon misalnya $5. Jadi bagaimana menerapkan diskon pada total tagihan saya dan menghitung total pajak.

SAYA MEMBUTUHKAN JUMLAH PAJAK SETELAH DISKON. PAJAKNYA 13%.

Item 1 adalah $10 item 2 adalah $2 (Bebas Pajak)

Subtotal adalah $12 Diskon $5 Pajak akan ?

1
Muhammad Ibrahim 27 Mei 2021, 06:29

1 menjawab

Jawaban Terbaik

Inilah salah satu cara untuk melakukannya:

  1. Urutkan barang berdasarkan harga, paling mahal dulu.
  2. Terapkan diskon ke item dalam daftar yang diurutkan sampai tidak ada diskon yang tersisa.
  3. Jumlahkan harga daftar itu untuk mendapatkan subtotal yang didiskon.
  4. Jumlahkan harga barang kena pajak dalam daftar itu untuk mendapatkan jumlah kena pajak.
  5. Terapkan pajak ke jumlah kena pajak, dan tambahkan ke subtotal untuk mendapatkan total.
const ITEMS = [
  { price: 2.00, taxExempt: true },
  { price: 10.00, taxExempt: false },
  { price: 8.25, taxExempt: false },
]
const DISCOUNT = 12
const TAX = 0.13

const applyDiscount = (items, discount) => {
  // 1️⃣ sort by price, most expensive to least
  items = items.slice().sort((a,b) => b.price - a.price)

  // 2️⃣
  return items.map(item => {
    let price = item.price
    const itemDiscount = Math.min(price, discount) 
    if (itemDiscount > 0) {
      price -= itemDiscount
      discount -= itemDiscount
    }
    return { ...item, price, origPrice: item.price, itemDiscount }
  })
}

const itemsWithDiscount = applyDiscount(ITEMS, DISCOUNT)
const sumPrices = arr => arr.map(x => x.price).reduce((p,c) => p + c, 0)
const subtotal = sumPrices(itemsWithDiscount) // 3️⃣
const taxableAmt = sumPrices(itemsWithDiscount.filter(x => !x.taxExempt)) // 4️⃣
const total = subtotal + (taxableAmt * TAX) // 5️⃣

console.log('items after discount', itemsWithDiscount)
console.log('subtotal: $' + subtotal.toFixed(2) + ' (taxable: $' + taxableAmt.toFixed(2) + ')')
console.log('tax: $' + (taxableAmt * TAX).toFixed(2) + ' (' + (TAX * 100) + '%)')
console.log('total: $' + total.toFixed(2))
1
tony19 27 Mei 2021, 10:22