feat(FE-64): update MovementTable structure for improved data clarity and consistency

This commit is contained in:
rstubryan
2025-10-15 12:08:52 +07:00
parent df73ee1fdf
commit 06dc869b84
@@ -31,23 +31,23 @@ const dummyMovements: Movement[] = [
{ {
...baseMetadata, ...baseMetadata,
id: 1, id: 1,
alasan_transfer: 'Restock', transfer_reason: 'Restock',
tanggal_transfer: '2024-06-01', transfer_date: '2024-06-01',
warehouse_asal: { source_warehouse: {
...baseMetadata, ...baseMetadata,
id: 1, id: 1,
name: 'Warehouse A', name: 'Warehouse A',
type: 'AREA', type: 'AREA',
area: { id: 1, name: 'Area 1' }, area: { id: 1, name: 'Area 1' },
}, },
warehouse_tujuan: { destination_warehouse: {
...baseMetadata, ...baseMetadata,
id: 2, id: 2,
name: 'Warehouse B', name: 'Warehouse B',
type: 'AREA', type: 'AREA',
area: { id: 2, name: 'Area 2' }, area: { id: 2, name: 'Area 2' },
}, },
product: [ products: [
{ {
product: { product: {
...baseMetadata, ...baseMetadata,
@@ -73,13 +73,16 @@ const dummyMovements: Movement[] = [
suppliers: [], suppliers: [],
flags: [], flags: [],
}, },
qty_product: 10, product_qty: 10,
}, },
], ],
ekspedisi: [ deliveries: [
{ {
product_id: 1, delivery_cost: 50000,
qty: 10, delivery_cost_per_item: 5000,
document: 'doc1.pdf',
driver_name: 'Andi',
vehicle_plate: 'B 1234 CD',
supplier: { supplier: {
...baseMetadata, ...baseMetadata,
id: 1, id: 1,
@@ -97,34 +100,58 @@ const dummyMovements: Movement[] = [
balance: 0, balance: 0,
due_date: 30, due_date: 30,
}, },
plat_nomor: 'B 1234 CD', products: [
no_surat_jalan: 'SJ-001', {
dokumen: 'doc1.pdf', product: {
biaya_ekspedisi: 50000, ...baseMetadata,
nama_sopir: 'Andi', id: 1,
name: 'Product X',
brand: 'Brand X',
sku: 'SKU-X',
product_price: 10000,
selling_price: 12000,
tax: 10,
expiry_period: 365,
uom: {
...baseMetadata,
id: 1,
name: 'PCS',
},
product_category: {
...baseMetadata,
id: 1,
code: 'CAT-1',
name: 'Category 1',
},
suppliers: [],
flags: [],
},
product_qty: 10,
},
],
}, },
], ],
}, },
{ {
...baseMetadata, ...baseMetadata,
id: 2, id: 2,
alasan_transfer: 'Mutasi Stok', transfer_reason: 'Mutasi Stok',
tanggal_transfer: '2024-06-02', transfer_date: '2024-06-02',
warehouse_asal: { source_warehouse: {
...baseMetadata, ...baseMetadata,
id: 2, id: 2,
name: 'Warehouse B', name: 'Warehouse B',
type: 'AREA', type: 'AREA',
area: { id: 2, name: 'Area 2' }, area: { id: 2, name: 'Area 2' },
}, },
warehouse_tujuan: { destination_warehouse: {
...baseMetadata, ...baseMetadata,
id: 3, id: 3,
name: 'Warehouse C', name: 'Warehouse C',
type: 'AREA', type: 'AREA',
area: { id: 3, name: 'Area 3' }, area: { id: 3, name: 'Area 3' },
}, },
product: [ products: [
{ {
product: { product: {
...baseMetadata, ...baseMetadata,
@@ -150,13 +177,16 @@ const dummyMovements: Movement[] = [
suppliers: [], suppliers: [],
flags: [], flags: [],
}, },
qty_product: 5, product_qty: 5,
}, },
], ],
ekspedisi: [ deliveries: [
{ {
product_id: 2, delivery_cost: 60000,
qty: 5, delivery_cost_per_item: 12000,
document: 'doc2.pdf',
driver_name: 'Budi',
vehicle_plate: 'D 5678 EF',
supplier: { supplier: {
...baseMetadata, ...baseMetadata,
id: 2, id: 2,
@@ -174,34 +204,58 @@ const dummyMovements: Movement[] = [
balance: 1000, balance: 1000,
due_date: 15, due_date: 15,
}, },
plat_nomor: 'D 5678 EF', products: [
no_surat_jalan: 'SJ-002', {
dokumen: 'doc2.pdf', product: {
biaya_ekspedisi: 60000, ...baseMetadata,
nama_sopir: 'Budi', id: 2,
name: 'Product Y',
brand: 'Brand Y',
sku: 'SKU-Y',
product_price: 20000,
selling_price: 25000,
tax: 5,
expiry_period: 180,
uom: {
...baseMetadata,
id: 2,
name: 'BOX',
},
product_category: {
...baseMetadata,
id: 2,
code: 'CAT-2',
name: 'Category 2',
},
suppliers: [],
flags: [],
},
product_qty: 5,
},
],
}, },
], ],
}, },
{ {
...baseMetadata, ...baseMetadata,
id: 3, id: 3,
alasan_transfer: 'Pengembalian', transfer_reason: 'Pengembalian',
tanggal_transfer: '2024-06-03', transfer_date: '2024-06-03',
warehouse_asal: { source_warehouse: {
...baseMetadata, ...baseMetadata,
id: 3, id: 3,
name: 'Warehouse C', name: 'Warehouse C',
type: 'AREA', type: 'AREA',
area: { id: 3, name: 'Area 3' }, area: { id: 3, name: 'Area 3' },
}, },
warehouse_tujuan: { destination_warehouse: {
...baseMetadata, ...baseMetadata,
id: 1, id: 1,
name: 'Warehouse A', name: 'Warehouse A',
type: 'AREA', type: 'AREA',
area: { id: 1, name: 'Area 1' }, area: { id: 1, name: 'Area 1' },
}, },
product: [ products: [
{ {
product: { product: {
...baseMetadata, ...baseMetadata,
@@ -227,13 +281,16 @@ const dummyMovements: Movement[] = [
suppliers: [], suppliers: [],
flags: [], flags: [],
}, },
qty_product: 8, product_qty: 8,
}, },
], ],
ekspedisi: [ deliveries: [
{ {
product_id: 3, delivery_cost: 40000,
qty: 8, delivery_cost_per_item: 5000,
document: 'doc3.pdf',
driver_name: 'Cici',
vehicle_plate: 'F 9101 GH',
supplier: { supplier: {
...baseMetadata, ...baseMetadata,
id: 3, id: 3,
@@ -251,34 +308,58 @@ const dummyMovements: Movement[] = [
balance: 500, balance: 500,
due_date: 10, due_date: 10,
}, },
plat_nomor: 'F 9101 GH', products: [
no_surat_jalan: 'SJ-003', {
dokumen: 'doc3.pdf', product: {
biaya_ekspedisi: 40000, ...baseMetadata,
nama_sopir: 'Cici', id: 3,
name: 'Product Z',
brand: 'Brand Z',
sku: 'SKU-Z',
product_price: 15000,
selling_price: 18000,
tax: 8,
expiry_period: 90,
uom: {
...baseMetadata,
id: 3,
name: 'KG',
},
product_category: {
...baseMetadata,
id: 3,
code: 'CAT-3',
name: 'Category 3',
},
suppliers: [],
flags: [],
},
product_qty: 8,
},
],
}, },
], ],
}, },
{ {
...baseMetadata, ...baseMetadata,
id: 4, id: 4,
alasan_transfer: 'Transfer Internal', transfer_reason: 'Transfer Internal',
tanggal_transfer: '2024-06-04', transfer_date: '2024-06-04',
warehouse_asal: { source_warehouse: {
...baseMetadata, ...baseMetadata,
id: 4, id: 4,
name: 'Warehouse D', name: 'Warehouse D',
type: 'AREA', type: 'AREA',
area: { id: 4, name: 'Area 4' }, area: { id: 4, name: 'Area 4' },
}, },
warehouse_tujuan: { destination_warehouse: {
...baseMetadata, ...baseMetadata,
id: 5, id: 5,
name: 'Warehouse E', name: 'Warehouse E',
type: 'AREA', type: 'AREA',
area: { id: 5, name: 'Area 5' }, area: { id: 5, name: 'Area 5' },
}, },
product: [ products: [
{ {
product: { product: {
...baseMetadata, ...baseMetadata,
@@ -304,13 +385,16 @@ const dummyMovements: Movement[] = [
suppliers: [], suppliers: [],
flags: [], flags: [],
}, },
qty_product: 20, product_qty: 20,
}, },
], ],
ekspedisi: [ deliveries: [
{ {
product_id: 4, delivery_cost: 30000,
qty: 20, delivery_cost_per_item: 1500,
document: 'doc4.pdf',
driver_name: 'Dedi',
vehicle_plate: 'H 2345 IJ',
supplier: { supplier: {
...baseMetadata, ...baseMetadata,
id: 4, id: 4,
@@ -328,11 +412,35 @@ const dummyMovements: Movement[] = [
balance: 200, balance: 200,
due_date: 20, due_date: 20,
}, },
plat_nomor: 'H 2345 IJ', products: [
no_surat_jalan: 'SJ-004', {
dokumen: 'doc4.pdf', product: {
biaya_ekspedisi: 30000, ...baseMetadata,
nama_sopir: 'Dedi', id: 4,
name: 'Product A',
brand: 'Brand A',
sku: 'SKU-A',
product_price: 5000,
selling_price: 7000,
tax: 0,
expiry_period: 60,
uom: {
...baseMetadata,
id: 4,
name: 'LITER',
},
product_category: {
...baseMetadata,
id: 4,
code: 'CAT-4',
name: 'Category 4',
},
suppliers: [],
flags: [],
},
product_qty: 20,
},
],
}, },
], ],
}, },
@@ -401,30 +509,34 @@ const MovementTable = () => {
cell: (props) => pageSize * (page - 1) + props.row.index + 1, cell: (props) => pageSize * (page - 1) + props.row.index + 1,
}, },
{ {
accessorKey: 'warehouse_asal', accessorKey: 'source_warehouse',
header: 'Gudang Asal', header: 'Gudang Asal',
cell: (props) => props.row.original.warehouse_asal.name, cell: (props) => props.row.original.source_warehouse.name,
}, },
{ {
accessorKey: 'warehouse_tujuan', accessorKey: 'destination_warehouse',
header: 'Gudang Tujuan', header: 'Gudang Tujuan',
cell: (props) => props.row.original.warehouse_tujuan.name, cell: (props) => props.row.original.destination_warehouse.name,
}, },
{ {
accessorKey: 'product', accessorKey: 'products',
header: 'Nama Produk', header: 'Nama Produk',
cell: (props) => cell: (props) =>
props.row.original.product.map((p) => p.product.name), props.row.original.products
.map((p) => p.product.name)
.join(', '),
}, },
{ {
accessorKey: 'alasan_transfer', accessorKey: 'transfer_reason',
header: 'Catatan', header: 'Catatan',
}, },
{ {
accessorKey: 'biaya_ekspedisi', accessorKey: 'delivery_cost',
header: 'Biaya Ekspedisi', header: 'Biaya Pengiriman',
cell: (props) => cell: (props) =>
props.row.original.ekspedisi.map((e) => e.biaya_ekspedisi), props.row.original.deliveries
.reduce((sum, d) => sum + d.delivery_cost, 0)
.toLocaleString('id-ID'),
}, },
{ {
id: 'actions', id: 'actions',