import Spinner from '@/core/components/elements/Spinner/Spinner' import useInvoice from '../hooks/useInvoice' import { downloadInvoice, downloadTaxInvoice } from '../utils/invoices' import Divider from '@/core/components/elements/Divider/Divider' import VariantGroupCard from '@/lib/variant/components/VariantGroupCard' import currencyFormat from '@/core/utils/currencyFormat' import MobileView from '@/core/components/views/MobileView' import DesktopView from '@/core/components/views/DesktopView' import Menu from '@/lib/auth/components/Menu' import Link from '@/core/components/elements/Link/Link' import Image from '@/core/components/elements/Image/Image' import { createSlug } from '@/core/utils/slug' import { useEffect, useState } from 'react' const Invoice = ({ id }) => { const { invoice } = useInvoice({ id }) const [totalAmount, setTotalAmount] = useState(0) const [totalDiscountAmount, setTotalDiscountAmount] = useState(0) useEffect(() => { if (invoice?.data?.products) { let calculateTotalAmount = 0 let calculateTotalDiscountAmount = 0 invoice.data.products.forEach((product) => { calculateTotalAmount += product.price.price * product.quantity calculateTotalDiscountAmount += (product.price.price - product.price.priceDiscount) * product.quantity }) setTotalAmount(calculateTotalAmount) setTotalDiscountAmount(calculateTotalDiscountAmount) } }, [invoice]) if (invoice.isLoading) { return (
) } const address = invoice.data?.customer let fullAddress = [] if (address?.street) fullAddress.push(address.street) if (address?.subDistrict?.name) fullAddress.push(address.subDistrict.name) if (address?.district?.name) fullAddress.push(address.district.name) if (address?.city?.name) fullAddress.push(address.city.name) fullAddress = fullAddress.join(', ') return ( invoice.data?.name && ( <>
{invoice.data?.name} {invoice.data?.amountResidual > 0 ? ( Belum Lunas ) : ( Lunas )} {invoice.data?.purchaseOrderName || '-'} {invoice.data?.paymentTerm} {invoice.data?.amountResidual > 0 && invoice.invoiceDate != invoice.invoiceDateDue && ( {invoice.data?.invoiceDateDue} )} {invoice.data?.sales} {invoice.data?.invoiceDate}

Invoice

Faktur Pajak

Detail Penagihan
{address?.name} {address?.email || '-'} {address?.mobile || '-'} {fullAddress}
Detail Produk

Total Belanja

{currencyFormat(invoice.data?.amountTotal)}

Invoice & Faktur Pajak

{invoice?.data?.name} {invoice?.data?.amountResidual > 0 ? (
Belum Lunas
) : (
Lunas
)}
Tanggal Invoice
: {invoice?.data?.invoiceDate}
Purchase Order
:{' '}
Ketentuan Pembayaran
: {invoice?.data?.paymentTerm}
Nama Sales
: {invoice?.data?.sales}
Faktur Pajak
:{' '} {invoice.data?.efaktur ? ( ) : ( '-' )}
Rincian Pembelian
{invoice?.data?.products?.map((product) => ( ))}
Nama Produk Jumlah Harga Diskon Subtotal
{product?.name}
{product?.parent?.name}
{product?.code}{' '} {product?.attributes.length > 0 ? `| ${product?.attributes.join(', ')}` : ''}
{product.quantity} {currencyFormat(product.price.price)} {product.price.discountPercentage > 0 ? `${product.price.discountPercentage}%` : ''} {currencyFormat(product.price.priceDiscount * product.quantity)}
Subtotal
{currencyFormat(totalAmount)}
Total Diskon
{currencyFormat(-totalDiscountAmount)}
PPN 11% (Incl.)
{currencyFormat(totalAmount * 0.11)}
Grand Total
{currencyFormat(invoice.data?.amountTotal)}
) ) } const DescriptionRow = ({ children, label }) => (
{label} {children}
) export default Invoice