diff --git a/src/app/[lang]/(dashboard)/(private)/apps/cash-bank/[id]/detail/page.tsx b/src/app/[lang]/(dashboard)/(private)/apps/cash-bank/[id]/detail/page.tsx new file mode 100644 index 0000000..8f2955f --- /dev/null +++ b/src/app/[lang]/(dashboard)/(private)/apps/cash-bank/[id]/detail/page.tsx @@ -0,0 +1,7 @@ +import CashBankDetail from '@/views/apps/cash-bank/detail' + +const CashBankDetailPage = () => { + return +} + +export default CashBankDetailPage diff --git a/src/types/apps/cashBankTypes.ts b/src/types/apps/cashBankTypes.ts new file mode 100644 index 0000000..c790274 --- /dev/null +++ b/src/types/apps/cashBankTypes.ts @@ -0,0 +1,10 @@ +export type CashBankType = { + id: number + date: string + description: string + reference: string + accept: number + send: number + balance: number + status: string +} diff --git a/src/views/apps/cash-bank/CashBankCard.tsx b/src/views/apps/cash-bank/CashBankCard.tsx index 94f1b10..e2116b9 100644 --- a/src/views/apps/cash-bank/CashBankCard.tsx +++ b/src/views/apps/cash-bank/CashBankCard.tsx @@ -13,6 +13,7 @@ import Button from '@mui/material/Button' // Third-party Imports import type { ApexOptions } from 'apexcharts' +import Link from 'next/link' // Styled Component Imports const AppReactApexCharts = dynamic(() => import('@/libs/styles/AppReactApexCharts')) @@ -36,7 +37,7 @@ interface CashBankCardProps { categories: string[] buttonText?: string buttonIcon?: string - onButtonClick?: () => void + href?: string chartColor?: string height?: number currency?: 'IDR' | 'USD' | 'EUR' @@ -51,7 +52,7 @@ const CashBankCard = ({ balances, chartData, categories, - onButtonClick, + href, chartColor = '#ff6b9d', height = 300, currency = 'IDR', @@ -220,7 +221,8 @@ const CashBankCard = ({ + ) + }), + columnHelper.accessor('reference', { + header: 'Referensi', + cell: ({ row }) => {row.original.reference || '-'} + }), + columnHelper.accessor('status', { + header: 'Status', + cell: ({ row }) => ( +
+ +
+ ) + }), + columnHelper.accessor('accept', { + header: 'Penerimaan', + cell: ({ row }) => ( + 0 ? 'text-green-600' : 'text-gray-500'}`}> + {row.original.accept > 0 ? formatCurrency(row.original.accept) : '-'} + + ) + }), + columnHelper.accessor('send', { + header: 'Pengeluaran', + cell: ({ row }) => ( + 0 ? 'text-red-600' : 'text-gray-500'}`}> + {row.original.send > 0 ? formatCurrency(row.original.send) : '-'} + + ) + }), + columnHelper.accessor('balance', { + header: 'Saldo', + cell: ({ row }) => ( + = 0 ? 'text-green-600' : 'text-red-600'}`}> + {formatCurrency(row.original.balance)} + + ) + }) + ], + [] + ) + + const table = useReactTable({ + data: paginatedData as CashBankType[], + columns, + filterFns: { + fuzzy: fuzzyFilter + }, + state: { + rowSelection, + pagination: { + pageIndex: currentPage, + pageSize + } + }, + enableRowSelection: true, + onRowSelectionChange: setRowSelection, + getCoreRowModel: getCoreRowModel(), + manualPagination: true, + pageCount: Math.ceil(totalCount / pageSize) + }) + + return ( + <> + + {/* Filter Status Tabs and Range Date */} +
+
+ + +
+
+ +
+ setSearch(value as string)} + placeholder='Cari Transaksi Cash/Bank' + className='max-sm:is-full' + /> +
+ + 10 + 25 + 50 + + + +
+
+
+ + + {table.getHeaderGroups().map(headerGroup => ( + + {headerGroup.headers.map(header => ( + + ))} + + ))} + + {filteredData.length === 0 ? ( + + + + + + ) : ( + + {table.getRowModel().rows.map(row => { + return ( + + {row.getVisibleCells().map(cell => ( + + ))} + + ) + })} + + {/* Subtotal Row */} + + + + + + + + + + + + {/* Total Row */} + + + + + + + + + + + + )} +
+ {header.isPlaceholder ? null : ( + <> +
+ {flexRender(header.column.columnDef.header, header.getContext())} + {{ + asc: , + desc: + }[header.column.getIsSorted() as 'asc' | 'desc'] ?? null} +
+ + )} +
+ Tidak ada data tersedia +
{flexRender(cell.column.columnDef.cell, cell.getContext())}
+ + Subtotal + + + + {formatCurrency(subtotalAccept)} + + + + {formatCurrency(subtotalSend)} + + + = 0 ? 'text-green-600' : 'text-red-600'}`} + > + {formatCurrency(netBalance)} + +
+ + Total + + + = 0 ? 'text-green-600' : 'text-red-600'}`} + > + {formatCurrency(netBalance)} + +
+
+ + ( + + )} + count={totalCount} + rowsPerPage={pageSize} + page={currentPage} + onPageChange={handlePageChange} + onRowsPerPageChange={handlePageSizeChange} + rowsPerPageOptions={[10, 25, 50]} + /> +
+ + ) +} + +export default CashBankDetailTable diff --git a/src/views/apps/cash-bank/detail/index.tsx b/src/views/apps/cash-bank/detail/index.tsx new file mode 100644 index 0000000..c213c42 --- /dev/null +++ b/src/views/apps/cash-bank/detail/index.tsx @@ -0,0 +1,23 @@ +// MUI Imports +import Grid from '@mui/material/Grid2' +import CashBankDetailHeader from './CashBankDetailHeader' +import CashBankDetailTable from './CashBankDetailTable' +import CashBankDetailCard from './CashBankDetailCard' + +const CashBankDetail = () => { + return ( + + + + + + + + + + + + ) +} + +export default CashBankDetail