diff --git a/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx b/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx index 12d97b9a..71a6040c 100644 --- a/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx +++ b/src/components/pages/marketing/form/table-view/DeliveryOrderProductTable.tsx @@ -2,10 +2,11 @@ import { DeliveryOrderProductFormValues } from '@/components/pages/marketing/for import Button from '@/components/Button'; import Card from '@/components/Card'; import { Icon } from '@iconify/react'; -import { useRef } from 'react'; +import { useRef, useMemo } from 'react'; import { formatCurrency, formatDate, formatNumber } from '@/lib/helper'; import DeliveryOrderExport from '@/components/pages/marketing/pdf/DeliveryOrderExport'; -import { Marketing } from '@/types/api/marketing/marketing'; +import { Marketing, BaseDelivery } from '@/types/api/marketing/marketing'; +import { Warehouse } from '@/types/api/master-data/warehouse'; type DeliveryOrderProductTableProps = { data: DeliveryOrderProductFormValues[]; @@ -42,7 +43,31 @@ const DeliveryOrderProductTable = ({ const approvalStepNumber = marketing?.latest_approval?.step_number; - const renderTableContent = (item: DeliveryOrderProductFormValues) => { + const hasDeliveryOrder = useMemo(() => { + return ( + marketing?.delivery_order && + marketing.delivery_order.length > 0 && + marketing.delivery_order.some( + (doItem) => doItem.deliveries && doItem.deliveries.length > 0 + ) + ); + }, [marketing?.delivery_order]); + + const deliveryItems = useMemo(() => { + if (!hasDeliveryOrder) return []; + return ( + marketing?.delivery_order?.flatMap((doItem) => + doItem.deliveries.map((delivery) => ({ + ...delivery, + do_number: doItem.do_number, + delivery_date: doItem.delivery_date, + warehouse: doItem.warehouse, + })) + ) ?? [] + ); + }, [marketing?.delivery_order, hasDeliveryOrder]); + + const renderSalesOrderContent = (item: DeliveryOrderProductFormValues) => { const doItem = marketing?.delivery_order?.find( (doItem) => doItem.do_number === item.do_number ); @@ -185,50 +210,217 @@ const DeliveryOrderProductTable = ({ ); }; + const renderDeliveryOrderContent = ( + item: BaseDelivery & { + do_number: string; + delivery_date: string; + warehouse: Warehouse; + } + ) => { + const parentDoItem = marketing?.delivery_order?.find( + (doItem) => doItem.do_number === item.do_number + ); + + return ( + <> +