'use client';
import { Image } from '@akinon/next/components';
import { useLocalization } from '@akinon/next/hooks';
import { Button, Link, Price } from '@theme/components';
import { ROUTES } from '@theme/routes';
import settings from '@theme/settings';
import { getOrderStatus } from '@theme/utils';
import { OrderDetailHeader } from '@theme/views/account/orders/order-detail-header';
import { SalesContractModal } from '@theme/views/sales-contract-modal';
import clsx from 'clsx';
import { useEffect, useState } from 'react';
export const AnonymousTrackingOrderDetail = ({ order }) => {
const { locale, t } = useLocalization();
const [orderDate, setOrderDate] = useState('');
const localeValue = settings.localization.locales.find(
(locale_) => locale_.value === locale
).apiValue;
const groupedOrder = [];
if (order) {
const groupedData =
order?.orderitem_set?.reduce((groups, item) => {
const { tracking_number } = item;
if (!groups[tracking_number]) {
groups[tracking_number] = [];
}
groups[tracking_number].push(item);
return groups;
}, {}) || {};
const result = Object.values(groupedData);
groupedOrder.push(...result);
}
useEffect(() => {
if (!order) {
return;
}
const shortDate = new Date(order.created_date).toLocaleDateString(
localeValue,
{
day: 'numeric',
month: 'long',
year: 'numeric'
}
);
setOrderDate(shortDate);
}, [order, localeValue]);
return (
{order ? (
{t('account.my_orders.detail.order_date')}:{' '}
{orderDate}
{order?.orderitem_set?.length}{' '}
{t('account.my_orders.detail.products')} {groupedOrder?.length}{' '}
{t('account.my_orders.detail.packages')}
{t('account.my_orders.detail.delivery_address')}:{' '}
{order?.shipping_address?.line}{' '}
{order?.shipping_address?.district?.name}{' '}
{order?.shipping_address?.township?.name}{' '}
{order?.shipping_address?.city?.name}
{groupedOrder.map((group, i) => {
const orderStatus = getOrderStatus(
group[0]?.status?.value?.toString(),
t
);
return (
{t('account.my_orders.detail.package_no')}: {i + 1}
({group.length}{' '}
{t('account.my_orders.detail.items')})
{orderStatus.label}
{group[0]?.tracking_number && group[0]?.tracking_url && (
)}
{group.map((item, index) => {
const itemStatus = getOrderStatus(
item?.status?.value?.toString(),
t
);
return (
{item?.product?.name}
{item?.product?.attributes
?.filterable_color && (
{t('account.my_orders.detail.color')}
:{' '}
{
item?.product?.attributes
?.filterable_color
}
)}
{item?.product?.attributes?.size && (
{t('account.my_orders.detail.size')}
:{item?.product?.attributes?.size}
)}
{t('account.my_orders.detail.code')}
: {item?.product?.base_code}
{itemStatus.label}
{(item.is_cancellable || item.is_refundable) &&
order.is_cancellable &&
item?.status?.value == '400' && (
)}
{parseFloat(item.retail_price) >
parseFloat(item.price) && (
)}
parseFloat(item.price)
})}
value={item.price}
/>
);
})}
);
})}
{t('account.my_orders.detail.subtotal')} (
{order?.orderitem_set?.length}{' '}
{t('account.my_orders.detail.items')})
{order?.discountitem_set &&
order?.discountitem_set?.map((item, index) => (
))}
{t('account.my_orders.detail.total')}
) : (
{t('account.anonymous_order.not_found.title')}
{t('account.anonymous_order.not_found.description')}
{t('account.anonymous_order.not_found.button')}
)}
);
};