diff options
| author | IT Fixcomart <it@fixcomart.co.id> | 2025-07-31 11:02:58 +0000 |
|---|---|---|
| committer | IT Fixcomart <it@fixcomart.co.id> | 2025-07-31 11:02:58 +0000 |
| commit | 4cf94e241af5f95f567aac952dd990852026d23f (patch) | |
| tree | 5c519ac632391b34e1cc2bb31d011be37bb2d779 /src/lib/transaction/components/Transaction.jsx | |
| parent | dc31efb2fec4c7b79917324d922ae820c4b5bb50 (diff) | |
| parent | 04961a55929017f77ee6801d2b7ada4c05689821 (diff) | |
Merged in cr/repeat-order (pull request #430)
Cr/repeat order
Diffstat (limited to 'src/lib/transaction/components/Transaction.jsx')
| -rw-r--r-- | src/lib/transaction/components/Transaction.jsx | 615 |
1 files changed, 557 insertions, 58 deletions
diff --git a/src/lib/transaction/components/Transaction.jsx b/src/lib/transaction/components/Transaction.jsx index 8b3a8dd0..2c1a6208 100644 --- a/src/lib/transaction/components/Transaction.jsx +++ b/src/lib/transaction/components/Transaction.jsx @@ -17,6 +17,7 @@ import getFileBase64 from '@/core/utils/getFileBase64'; import currencyFormat from '@/core/utils/currencyFormat'; import VariantGroupCard from '@/lib/variant/components/VariantGroupCard'; import { + EllipsisVerticalIcon, ChevronDownIcon, ChevronRightIcon, ChevronUpIcon, @@ -40,6 +41,10 @@ import rejectProductApi from '../api/rejectProductApi'; import { useRouter } from 'next/router'; import { gtagPurchase } from '@/core/utils/googleTag'; import { deleteItemCart } from '@/core/utils/cart'; +import { + downloadInvoice, + downloadTaxInvoice, +} from '@/lib/invoice/utils/invoices'; import axios from 'axios'; import InformationSection from '../../treckingAwb/component/InformationSection'; import { Button } from '@chakra-ui/react'; @@ -51,18 +56,39 @@ const Transaction = ({ id }) => { const [reason, setReason] = useState(''); const auth = useAuth(); const { transaction } = useTransaction({ id }); + console.log('transaction', transaction); const statusApprovalWeb = transaction.data?.approvalStep; const [isLoading, setIsLoading] = useState(false); const { queryAirwayBill } = useAirwayBill({ orderId: id }); const [airwayBillPopup, setAirwayBillPopup] = useState(null); - + const [isOpen, setIsOpen] = useState(false); const poNumber = useRef(null); const poFile = useRef(null); const [uploadPo, setUploadPo] = useState(false); const [idAWB, setIdAWB] = useState(null); const openUploadPo = () => setUploadPo(true); const closeUploadPo = () => setUploadPo(false); - + const [copied, setCopied] = useState(false); + const [toOthers, setToOthers] = useState(null); + const [totalAmount, setTotalAmount] = useState(0); + const [totalDiscountAmount, setTotalDiscountAmount] = useState(0); + + useEffect(() => { + if (transaction?.data?.products) { + let calculateTotalAmount = 0; + let calculateTotalDiscountAmount = 0; + transaction.data.products.forEach((product) => { + calculateTotalAmount += product.price.price * product.quantity; + calculateTotalDiscountAmount += + (product.price.price - product.price.priceDiscount) * + product.quantity; + }); + setTotalAmount(calculateTotalAmount); + setTotalDiscountAmount(calculateTotalDiscountAmount); + } + }, [transaction.data, transaction.isLoading]); + console.log('totalAmount', totalAmount); + console.log('totalDiscountAmount', totalDiscountAmount); const submitUploadPo = async () => { const file = poFile.current.files[0]; const name = poNumber.current.value; @@ -283,6 +309,34 @@ const Transaction = ({ id }) => { } }; + const handleCopyClick = (waybillNumber) => { + const textToCopy = waybillNumber; + navigator.clipboard.writeText(textToCopy); + setCopied(true); + toast.success('No Resi Berhasil di Copy'); + setTimeout(() => setCopied(false), 2000); // Reset copied state after 2 seconds + }; + + const formatDate = (dateString) => { + const months = [ + 'Januari', + 'Februari', + 'Maret', + 'April', + 'Mei', + 'Juni', + 'Juli', + 'Agustus', + 'September', + 'Oktober', + 'November', + 'Desember', + ]; + + const [day, month, year] = dateString.split('/'); + return `${day} ${months[parseInt(month, 10) - 1]} ${year}`; + }; + return ( transaction.data?.name && ( <> @@ -392,18 +446,118 @@ const Transaction = ({ id }) => { </button> </div> </BottomPopup> + + <BottomPopup + title='Lainnya' + active={toOthers} + close={() => setToOthers(null)} + > + <div className='flex flex-col gap-y-4 mt-2'> + <button + className='text-left disabled:opacity-60' + disabled={!toOthers?.purchaseOrderFile} + onClick={() => { + downloadPurchaseOrder(toOthers); + setToOthers(null); + }} + > + Download PO + </button> + <button + className='text-left disabled:opacity-60' + disabled={toOthers?.status != 'draft'} + onClick={() => { + downloadQuotation(toOthers); + setToOthers(null); + }} + > + Download Quotation + </button> + <button + className='text-left disabled:opacity-60' + disabled={toOthers?.status != 'waiting'} + onClick={() => { + setToCancel(toOthers); + setToOthers(null); + }} + > + Batalkan Transaksi + </button> + </div> + </BottomPopup> + <Manifest idAWB={idAWB} closePopup={closePopup}></Manifest> <MobileView> - <div className='p-4'> - {auth?.feature?.soApproval && ( + <div className='px-4'> + <div className='flex flex-row w-full justify-between items-center py-2 px-3 mb-4 text-sm border border-yellow-500 text-yellow-800 rounded-lg bg-yellow-50 gap-2'> + <div class='flex items-center w-full ' role='alert'> + <svg + class='flex-shrink-0 inline w-4 h-4 mr-2' + aria-hidden='true' + fill='currentColor' + viewBox='0 0 20 20' + > + <path d='M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z' /> + </svg> + <div className='text-justify flex flex-col gap-1'> + <span className='text-black text-xs text-start'> + Pesanan anda mungkin mengalami keterlambatan tiba + </span> + </div> + </div> + <span + className='text-red-500 text-xs hover:cursor-pointer text-nowrap z-50' + onClick={() => setIdAWB(transaction?.data?.pickings[0]?.id)} + > + Lihat Detail + </span> + </div> + </div> + {auth?.feature?.soApproval && ( + <div className='p-4'> <StepApproval layer={statusApprovalWeb} status={transaction?.data?.status} className='ml-auto' /> - )} + </div> + )} + + <div className='flex flex-row justify-between items-center gap-2 px-4'> + <div className='flex flex-col justify-start items-start gap-2'> + <div className='font-medium'>Status Transaksi</div> + <TransactionStatusBadge status={transaction.data?.status} /> + </div> + <div> + <EllipsisVerticalIcon + className='w-5 h-5' + onClick={() => setToOthers(transaction?.data)} + /> + </div> </div> + + {transaction.data?.invoices?.length === 0 ? ( + <h1 className=''></h1> + ) : ( + transaction.data?.invoices?.map((invoice, index) => ( + <div + className='flex flex-row justify-between items-center gap-2 p-4' + key={index} + > + <div className=''>{invoice?.name}</div> + <span + className='text-red-500' + onClick={() => downloadInvoice(invoice)} + > + Download + </span> + </div> + )) + )} + + <Divider /> + <div className='flex flex-col gap-y-4 p-4'> <DescriptionRow label='Status Transaksi'> <div className='flex justify-end'> @@ -416,53 +570,123 @@ const Transaction = ({ id }) => { </div> </DescriptionRow> <DescriptionRow label='No Transaksi'> - {transaction.data?.name} + <p className='font-semibold'>{transaction.data?.name}</p> + </DescriptionRow> + <DescriptionRow label='Tanggal Transaksi'> + {transaction.data?.dateOrder + ? formatDate(transaction.data?.dateOrder) + : '-'} + </DescriptionRow> + <DescriptionRow label='Purchase Order'> + {transaction.data?.purchaseOrderName || '-'} </DescriptionRow> <DescriptionRow label='Ketentuan Pembayaran'> - {transaction.data?.paymentTerm} + {transaction.data?.paymentTerm || '-'} </DescriptionRow> <DescriptionRow label='Nama Sales'> {transaction.data?.sales} </DescriptionRow> - <DescriptionRow label='Waktu Transaksi'> - {transaction.data?.dateOrder} - </DescriptionRow> </div> <Divider /> <div className='p-4'> - <div className='font-medium'>Pengiriman</div> - <div className='flex flex-col gap-y-3 mt-4'> - {transaction?.data?.pickings?.map((airway) => ( - <button - className='shadow rounded-md p-3 text-gray_r-12 font-normal flex justify-between items-center text-left' - key={airway?.id} - onClick={() => setIdAWB(airway?.id)} - > - <div> - <p className='text-sm text-gray_r-11'>{airway?.name}</p> - <span className='mt-2 font-medium'> - No Resi : {airway?.trackingNumber || '-'}{' '} - </span> - {/*biteship*/} - {/*<p className='mt-1 font-medium'>{airway?.name}</p>*/} + <div className='flex flex-row justify-between items-center'> + <div className='font-medium'>Info Pengiriman</div> + <span + className='text-red-500' + onClick={() => setIdAWB(transaction?.data?.pickings[0]?.id)} + > + Lihat Detail + </span> + </div> + <hr className='mt-4 mb-4 border border-gray-100' /> + <div className='flex flex-col gap-y-4'> + <DescriptionRow label='Dokumen Pengiriman'> + <p className='text-red-500 font-semibold text-start'> + {transaction.data?.pickings?.length == 0 + ? 'Belum ada pengiriman' + : transaction?.data?.pickings[0].name} + </p> + </DescriptionRow> + <DescriptionRow label='Kurir'> + <p className='text-start'> + {transaction?.data?.pickings[0]?.carrierName ? ( + <p className=' text-nowrap'> + {transaction?.data?.pickings[0]?.carrierName} + </p> + ) : ( + '-' + )} + </p> + </DescriptionRow> + <DescriptionRow label='Jenis Service'> + <p className='text-start'> + {transaction?.data?.pickings[0]?.serviceType && + transaction?.data?.pickings[0]?.carrierName + ? transaction?.data?.pickings[0]?.serviceType + : '-'} + </p> + </DescriptionRow> + <DescriptionRow label='Nomor Resi'> + <div className='flex flex-row gap-1 text-start'> + {transaction?.data?.pickings[0]?.trackingNumber || '-'} + {transaction?.data?.pickings[0]?.trackingNumber && ( + <button + className={`${ + copied ? 'text-gray-400' : 'text-red-600 ' + }`} + onClick={() => + handleCopyClick( + transaction?.data?.pickings[0]?.trackingNumber + ) + } + > + <svg + aria-hidden='true' + fill='none' + stroke='currentColor' + stroke-width='1.5' + viewBox='0 0 24 24' + className='w-5 h-6' + > + <path + d='M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 01-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 011.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 00-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 01-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5a3.375 3.375 0 00-3.375-3.375H9.75' + stroke-linecap='round' + stroke-linejoin='round' + ></path> + </svg> + </button> + )} + </div> + </DescriptionRow> + <DescriptionRow label='Estimasi Tiba'> + <p className='text-start'> + {transaction?.data?.pickings[0]?.eta + ? transaction?.data?.pickings[0]?.eta + : '-'} + </p> + </DescriptionRow> + <DescriptionRow label='Alamat Pengiriman'> + <div className='flex flex-col justify-start items-start'> + <div className='text-start text-nowrap truncate w-full'> + {transaction?.data?.address?.customer?.name} </div> - <div className='flex gap-x-2'> - <div className='text-sm text-gray-600 badge-green leading-[1.5] mt-1 text-center'> - {airway?.delivered ? 'Pesanan Tiba' : 'Sedang Dikirim'} - </div> - <ChevronRightIcon className='w-5 stroke-2' /> + <div className='text-start'> + {transaction?.data?.address?.customer?.phone + ? transaction?.data?.address?.customer?.phone + : '-'} </div> - </button> - ))} + <div className='text-start'> + {transaction?.data?.address?.customer?.alamatBisnis} + </div> + </div> + </DescriptionRow> </div> - {transaction?.data?.pickings == 0 && ( - <div className='badge-red text-sm px-2'>Belum ada pengiriman</div> - )} + </div> - <Divider /> + {/* <Divider /> <div className='p-4'> <p className='font-medium'>Invoice</p> @@ -491,11 +715,11 @@ const Transaction = ({ id }) => { <div className='badge-red text-sm px-2'>Belum ada invoice</div> )} </div> - </div> + </div> */} <Divider /> - {!auth?.feature.soApproval && ( + {/* {!auth?.feature.soApproval && ( <div className='p-4 flex flex-col gap-y-4'> <DescriptionRow label='Purchase Order'> {transaction.data?.purchaseOrderName || '-'} @@ -523,11 +747,59 @@ const Transaction = ({ id }) => { </div> )} - <Divider /> + <Divider /> */} <div className='font-medium p-4'>Detail Produk</div> {transaction?.data?.products.length > 0 ? ( - <div>{memoizeVariantGroupCard}</div> + <div className='p-4 pt-0 flex flex-col gap-y-3'> + <VariantGroupCard variants={transaction.data?.products} buyMore /> + <div className='font-medium'>Rincian Pembayaran</div> + <div className='flex justify-between mt-1'> + <p className='text-gray_r-12/70'>Metode Pembayaran</p> + <p> + {transaction.data?.paymentType + ? transaction.data?.paymentType + ?.replace(/_/g, ' ') + .replace(/\b\w/g, (char) => char.toUpperCase()) + : '-'} + </p> + </div> + <div className='flex justify-between mt-1'> + <p className='text-gray_r-12/70'>Berat Barang</p> + <p>{transaction.data?.pickings[0]?.weightTotal + ' Kg'}</p> + </div> + <hr className='mt-1 border border-gray-100' /> + <div className='flex justify-between mt-1'> + <p className='text-gray_r-12/70'>Total Belanja</p> + <p>{currencyFormat(totalAmount)}</p> + </div> + <div className='flex justify-between mt-1'> + <p className='text-gray_r-12/70'>Diskon Belanja</p> + <p>{'- ' + currencyFormat(totalDiscountAmount)}</p> + </div> + <div className='flex justify-between mt-1'> + <p className='text-gray_r-12/70'>Subtotal</p> + <p>{currencyFormat(transaction.data?.amountUntaxed)}</p> + </div> + <div className='flex justify-between mt-1'> + <p className='text-gray_r-12/70'> + PPN {((PPN - 1) * 100).toFixed(0)}% + </p> + <p>{currencyFormat(transaction.data?.amountTax)}</p> + </div> + <div className='flex justify-between mt-1'> + <p className='text-gray_r-12/70'>Biaya Pengiriman</p> + <p>{currencyFormat(transaction.data?.deliveryAmount)}</p> + </div> + <div className='flex justify-between mt-1 font-medium'> + <p className='text-gray_r-12/70'>Asuransi Pengiriman</p> + <p>-</p> + </div> + <div className='flex justify-between mt-1 font-medium'> + <p>Grand Total</p> + <p>{currencyFormat(transaction.data?.amountTotal)}</p> + </div> + </div> ) : ( <div className='badge-red text-sm px-2 ml-4'> Semua produk telah di reject @@ -541,13 +813,13 @@ const Transaction = ({ id }) => { </div> )} - <Divider /> + {/* <Divider /> */} - <SectionAddress address={transaction.data?.address} /> + {/* <SectionAddress address={transaction.data?.address} /> */} - <Divider /> + {/* <Divider /> */} - <div className='p-4 pt-0'> + {/* <div className='p-4 pt-0'> {transaction.data?.status == 'draft' && auth?.feature.soApproval && ( <div className='flex gap-x-2'> @@ -604,7 +876,7 @@ const Transaction = ({ id }) => { Batalkan Transaksi </button> )} - </div> + </div> */} </MobileView> <DesktopView> @@ -646,7 +918,7 @@ const Transaction = ({ id }) => { </span> <TransactionStatusBadge status={transaction?.data?.status} /> </div> - <div className='flex gap-x-4'> + {/* <div className='flex gap-x-4'> <button type='button' className='btn-solid-red px-3 py-2 mr-auto' @@ -709,19 +981,15 @@ const Transaction = ({ id }) => { Batalkan Transaksi </button> )} - </div> + </div> */} - <div className='grid grid-cols-2 gap-x-6 mt-6'> - <div className='grid grid-cols-2 gap-y-4'> + <div className='grid grid-cols-2 gap-x-6 mt-4'> + <div className='grid grid-cols-[35%_65%] gap-y-4'> <div>Nama Sales</div> <div>: {transaction?.data?.sales}</div> <div>Tanggal Transaksi</div> <div>: {transaction?.data?.dateOrder}</div> - </div> - <div className='grid grid-cols-2 gap-y-4'> - <div>Ketentuan Pembayaran</div> - <div>: {transaction?.data?.paymentTerm}</div> {!auth?.feature?.soApproval ? ( <> @@ -754,6 +1022,193 @@ const Transaction = ({ id }) => { </> )} </div> + <div className='grid grid-cols-[35%_65%] gap-y-4'> + <div>Payment Term</div> + <div>: {transaction?.data?.paymentTerm}</div> + + <div>Dokumen Pengiriman</div> + <div> + :{' '} + {transaction.data?.pickings?.length === 0 + ? 'Belum ada pengiriman' + : transaction?.data?.pickings[0].name} + </div> + + <div>Invoice Pembelian</div> + <div> + :{' '} + {transaction.data?.invoices?.length === 0 + ? 'Belum ada invoice' + : transaction.data?.invoices?.map((invoice, index) => ( + <Link + href={`/my/invoices/${invoice.id}`} + className='contents' + key={index} + > + {invoice?.name} + {/* <div className='shadow rounded-md p-4 text-gray_r-12 font-normal flex justify-between'> + <div> + <p className='mb-1'>{invoice?.name}</p> + <div className='flex items-center gap-x-1'> + {invoice.amountResidual > 0 ? ( + <div className='badge-red'>Belum Lunas</div> + ) : ( + <div className='badge-green'>Lunas</div> + )} + <p className='text-caption-2 text-gray_r-11'> + {currencyFormat(invoice.amountTotal)} + </p> + </div> + </div> + <ChevronRightIcon className='w-5 stroke-2' /> + </div> */} + </Link> + ))} + </div> + </div> + </div> + <hr className='mt-4 mb-4 border border-gray-100' /> + {/* <div className='grid grid-cols-2 gap-x-6'> */} + <div className='flex flex-row justify-between items-start w-full h-fit '> + <div className='flex flex-col w-1/2 justify-start items-start'> + <span className='text-h-sm font-medium mb-2'> + Alamat Pengiriman + </span> + <div className='grid grid-cols-[34%_2%_64%] gap-y-4'> + <div>Nama Penerima</div> + <div>: </div> + <div>{transaction?.data?.address?.customer?.name}</div> + + <div>No. Telepon</div> + <div>: </div> + <div> + {transaction?.data?.address?.customer?.phone + ? transaction?.data?.address?.customer?.phone + : '-'} + </div> + + <div>Email</div> + <div>: </div> + <div> + {transaction?.data?.address?.customer?.email + ? transaction?.data?.address?.customer?.email + : '-'} + </div> + + <div>Alamat Pengiriman</div> + <div>: </div> + <div className='text-indent-[2px]'> + {transaction?.data?.address?.customer?.alamatBisnis} + </div> + </div> + </div> + <div className='flex flex-col w-1/2 justify-start items-start'> + <span className='text-h-sm font-medium mb-2'> + Info Pengiriman + </span> + <div className='grid grid-cols-[34%_2%_64%] gap-y-4 w-full'> + <div>Nomor Resi</div> + <div>: </div> + <div className='flex flex-row gap-1 '> + {transaction?.data?.pickings[0]?.trackingNumber || '-'} + {transaction?.data?.pickings[0]?.trackingNumber && ( + <button + className={`${ + copied ? 'text-gray-400' : 'text-red-600 ' + }`} + onClick={() => + handleCopyClick( + transaction?.data?.pickings[0]?.trackingNumber + ) + } + > + <svg + aria-hidden='true' + fill='none' + stroke='currentColor' + stroke-width='1.5' + viewBox='0 0 24 24' + className='w-5 h-6' + > + <path + d='M15.75 17.25v3.375c0 .621-.504 1.125-1.125 1.125h-9.75a1.125 1.125 0 01-1.125-1.125V7.875c0-.621.504-1.125 1.125-1.125H6.75a9.06 9.06 0 011.5.124m7.5 10.376h3.375c.621 0 1.125-.504 1.125-1.125V11.25c0-4.46-3.243-8.161-7.5-8.876a9.06 9.06 0 00-1.5-.124H9.375c-.621 0-1.125.504-1.125 1.125v3.5m7.5 10.375H9.375a1.125 1.125 0 01-1.125-1.125v-9.25m12 6.625v-1.875a3.375 3.375 0 00-3.375-3.375h-1.5a1.125 1.125 0 01-1.125-1.125v-1.5a3.375 3.375 0 00-3.375-3.375H9.75' + stroke-linecap='round' + stroke-linejoin='round' + ></path> + </svg> + </button> + )} + </div> + + <div>Kurir</div> + <div>: </div> + {transaction?.data?.pickings[0]?.carrierName ? ( + <div className='flex flex-row w-full gap-1 items-center justify-start '> + <p className=' text-nowrap'> + {transaction?.data?.pickings[0]?.carrierName} + </p> + <span + className='text-red-500 text-sm font-semibold hover:cursor-pointer' + onClick={() => + setIdAWB(transaction?.data?.pickings[0]?.id) + } + > + Lacak Pengiriman + </span> + </div> + ) : ( + '-' + )} + + <div>Jenis Service</div> + <div>: </div> + <div> + {' '} + {transaction?.data?.pickings[0]?.serviceType && + transaction?.data?.pickings[0]?.carrierName + ? transaction?.data?.pickings[0]?.serviceType + : '-'} + </div> + + <div>Tanggal Kirim</div> + <div>: </div> + <div> + {transaction?.data?.pickings[0]?.date + ? formatDate(transaction?.data?.pickings[0]?.date) + : '-'} + </div> + + <div>Estimasi Tiba</div> + <div>: </div> + <div className='text-red-500'> + {transaction?.data?.pickings[0]?.eta + ? transaction?.data?.pickings[0]?.eta + : '-'} + </div> + {transaction?.data?.pickings[0] && ( + <div className='w-full bagian-informasi col-span-3'> + <div + class='flex items-center w-fit py-2 px-3 mb-4 text-sm border border-yellow-500 text-yellow-800 rounded-lg bg-yellow-50' + role='alert' + > + <svg + class='flex-shrink-0 inline w-4 h-4 mr-2' + aria-hidden='true' + fill='currentColor' + viewBox='0 0 20 20' + > + <path d='M10 .5a9.5 9.5 0 1 0 9.5 9.5A9.51 9.51 0 0 0 10 .5ZM9.5 4a1.5 1.5 0 1 1 0 3 1.5 1.5 0 0 1 0-3ZM12 15H8a1 1 0 0 1 0-2h1v-3H8a1 1 0 0 1 0-2h2a1 1 0 0 1 1 1v4h1a1 1 0 0 1 0 2Z' /> + </svg> + <div className='text-justify flex flex-col gap-1'> + <span className='text-black text-xs'> + Pesanan anda mungkin mengalami keterlambatan tiba + </span> + </div> + </div> + </div> + )} + </div> + </div> </div> <div className='flex gap-x-3'> @@ -1045,7 +1500,49 @@ const Transaction = ({ id }) => { )} {transaction?.data?.products?.length > 0 && ( - <div className='flex justify-end mt-4'> + // <div className='flex justify-end mt-4'> + // <div className='w-1/4 grid grid-cols-2 gap-y-3 text-gray_r-12/80'> + // <div className='text-right'>Subtotal</div> + // <div className='text-right font-medium'> + // {currencyFormat(transaction.data?.amountUntaxed)} + // </div> + + // <div className='text-right'> + // PPN {((PPN - 1) * 100).toFixed(0)}% + // </div> + // <div className='text-right font-medium'> + // {currencyFormat(transaction.data?.amountTax)} + // </div> + + // <div className='text-right whitespace-nowrap'> + // Biaya Pengiriman + // </div> + // <div className='text-right font-medium'> + // {currencyFormat(transaction.data?.deliveryAmount)} + // </div> + + // <div className='text-right'>Grand Total</div> + // <div className='text-right font-medium text-gray_r-12'> + // {currencyFormat(transaction.data?.amountTotal)} + // </div> + // </div> + // </div> + + <div className='flex justify-end mt-4 flex-col items-end'> + <div className='w-1/4 grid grid-cols-2 gap-y-3 text-gray_r-12/80'> + <div className='text-right'>Total Belanja</div> + <div className='text-right font-medium'> + {currencyFormat(totalAmount)} + </div> + + <div className='text-right'>Total Diskon</div> + <div className='text-right font-medium'> + {'- ' + currencyFormat(totalDiscountAmount)} + </div> + </div> + + <hr className='w-full border border-gray-100 mt-4 mb-4 self-stretch' /> + <div className='w-1/4 grid grid-cols-2 gap-y-3 text-gray_r-12/80'> <div className='text-right'>Subtotal</div> <div className='text-right font-medium'> @@ -1059,15 +1556,17 @@ const Transaction = ({ id }) => { {currencyFormat(transaction.data?.amountTax)} </div> - <div className='text-right whitespace-nowrap'> - Biaya Pengiriman - </div> + <div className='text-right'>Biaya Pengiriman</div> <div className='text-right font-medium'> {currencyFormat(transaction.data?.deliveryAmount)} </div> + </div> + <hr className='w-full border border-gray-100 mt-4 mb-4 self-stretch' /> + + <div className='w-1/4 grid grid-cols-2 gap-y-3 font-semibold'> <div className='text-right'>Grand Total</div> - <div className='text-right font-medium text-gray_r-12'> + <div className='text-right'> {currencyFormat(transaction.data?.amountTotal)} </div> </div> |
