diff --git a/src/components/pages/closing/table/sapronak/IncomingSapronaksSummaryTable.tsx b/src/components/pages/closing/table/sapronak/IncomingSapronaksSummaryTable.tsx
index 8980603d..78773dbb 100644
--- a/src/components/pages/closing/table/sapronak/IncomingSapronaksSummaryTable.tsx
+++ b/src/components/pages/closing/table/sapronak/IncomingSapronaksSummaryTable.tsx
@@ -7,8 +7,9 @@ import { ColumnDef, SortingState } from '@tanstack/react-table';
import Table from '@/components/Table';
import Card from '@/components/Card';
+import Badge from '@/components/Badge';
-import { formatNumber } from '@/lib/helper';
+import { cn, formatNumber } from '@/lib/helper';
import { isResponseSuccess } from '@/lib/api-helper';
import { useTableFilter } from '@/services/hooks/useTableFilter';
import { ClosingApi } from '@/services/api/closing';
@@ -66,6 +67,48 @@ const ClosingIncomingSapronaksSummaryTable = ({
{
accessorKey: 'category',
header: 'Kategori',
+ cell: (props) => {
+ const categories = props.row.original.category
+ .split(' ')
+ .filter((cat) => cat.trim());
+ const maxBadges = 4;
+ const visibleCategories = categories.slice(0, maxBadges);
+ const remainingCount = categories.length - maxBadges;
+
+ return (
+
+ {visibleCategories.map((category, index) => (
+
+ {category.length > 12
+ ? `${category.slice(0, 12)}...`
+ : category}
+
+ ))}
+ {remainingCount > 0 && (
+
+ +{remainingCount}
+
+ )}
+
+ );
+ },
},
{
accessorKey: 'total_qty',
diff --git a/src/components/pages/closing/table/sapronak/IncomingSapronaksTable.tsx b/src/components/pages/closing/table/sapronak/IncomingSapronaksTable.tsx
index 9dd9bc45..b0bd2744 100644
--- a/src/components/pages/closing/table/sapronak/IncomingSapronaksTable.tsx
+++ b/src/components/pages/closing/table/sapronak/IncomingSapronaksTable.tsx
@@ -9,8 +9,9 @@ import { Icon } from '@iconify/react';
import Table from '@/components/Table';
import DebouncedTextInput from '@/components/input/DebouncedTextInput';
import Card from '@/components/Card';
+import Badge from '@/components/Badge';
-import { formatDate, formatNumber } from '@/lib/helper';
+import { cn, formatDate, formatNumber } from '@/lib/helper';
import { isResponseSuccess } from '@/lib/api-helper';
import { useTableFilter } from '@/services/hooks/useTableFilter';
import { ClosingApi } from '@/services/api/closing';
@@ -79,6 +80,48 @@ const ClosingIncomingSapronaksTable = ({
{
accessorKey: 'product_category',
header: 'Kategori Produk',
+ cell: (props) => {
+ const categories = props.row.original.product_category
+ .split(' ')
+ .filter((cat) => cat.trim());
+ const maxBadges = 4;
+ const visibleCategories = categories.slice(0, maxBadges);
+ const remainingCount = categories.length - maxBadges;
+
+ return (
+
+ {visibleCategories.map((category, index) => (
+
+ {category.length > 12
+ ? `${category.slice(0, 12)}...`
+ : category}
+
+ ))}
+ {remainingCount > 0 && (
+
+ +{remainingCount}
+
+ )}
+
+ );
+ },
},
{
accessorKey: 'source_warehouse',
diff --git a/src/components/pages/closing/table/sapronak/OutgoingSapronaksSummaryTable.tsx b/src/components/pages/closing/table/sapronak/OutgoingSapronaksSummaryTable.tsx
index e0bae0f7..b50b012b 100644
--- a/src/components/pages/closing/table/sapronak/OutgoingSapronaksSummaryTable.tsx
+++ b/src/components/pages/closing/table/sapronak/OutgoingSapronaksSummaryTable.tsx
@@ -7,8 +7,9 @@ import { ColumnDef, SortingState } from '@tanstack/react-table';
import Table from '@/components/Table';
import Card from '@/components/Card';
+import Badge from '@/components/Badge';
-import { formatNumber } from '@/lib/helper';
+import { cn, formatNumber } from '@/lib/helper';
import { isResponseSuccess } from '@/lib/api-helper';
import { useTableFilter } from '@/services/hooks/useTableFilter';
import { ClosingApi } from '@/services/api/closing';
@@ -66,6 +67,48 @@ const ClosingOutgoingSapronaksSummaryTable = ({
{
accessorKey: 'category',
header: 'Kategori',
+ cell: (props) => {
+ const categories = props.row.original.category
+ .split(' ')
+ .filter((cat) => cat.trim());
+ const maxBadges = 4;
+ const visibleCategories = categories.slice(0, maxBadges);
+ const remainingCount = categories.length - maxBadges;
+
+ return (
+
+ {visibleCategories.map((category, index) => (
+
+ {category.length > 12
+ ? `${category.slice(0, 12)}...`
+ : category}
+
+ ))}
+ {remainingCount > 0 && (
+
+ +{remainingCount}
+
+ )}
+
+ );
+ },
},
{
accessorKey: 'total_qty',
diff --git a/src/components/pages/closing/table/sapronak/OutgoingSapronaksTable.tsx b/src/components/pages/closing/table/sapronak/OutgoingSapronaksTable.tsx
index 4143c499..23e3e8b0 100644
--- a/src/components/pages/closing/table/sapronak/OutgoingSapronaksTable.tsx
+++ b/src/components/pages/closing/table/sapronak/OutgoingSapronaksTable.tsx
@@ -9,6 +9,9 @@ import { Icon } from '@iconify/react';
import Table from '@/components/Table';
import DebouncedTextInput from '@/components/input/DebouncedTextInput';
import Card from '@/components/Card';
+import Badge from '@/components/Badge';
+
+import { cn } from '@/lib/helper';
import { formatDate, formatNumber } from '@/lib/helper';
import { isResponseSuccess } from '@/lib/api-helper';
@@ -79,6 +82,48 @@ const ClosingOutgoingSapronaksTable = ({
{
accessorKey: 'product_category',
header: 'Kategori Produk',
+ cell: (props) => {
+ const categories = props.row.original.product_category
+ .split(' ')
+ .filter((cat) => cat.trim());
+ const maxBadges = 4;
+ const visibleCategories = categories.slice(0, maxBadges);
+ const remainingCount = categories.length - maxBadges;
+
+ return (
+
+ {visibleCategories.map((category, index) => (
+
+ {category.length > 12
+ ? `${category.slice(0, 12)}...`
+ : category}
+
+ ))}
+ {remainingCount > 0 && (
+
+ +{remainingCount}
+
+ )}
+
+ );
+ },
},
{
accessorKey: 'source_warehouse',