import DesktopView from '@/core/components/views/DesktopView' import MobileView from '@/core/components/views/MobileView' import Menu from '@/lib/auth/components/Menu' import { EllipsisVerticalIcon, MagnifyingGlassIcon } from '@heroicons/react/24/outline' import ImageNext from 'next/image' import { useRouter } from 'next/router' import { useQuery } from 'react-query' import _, { forEach } from 'lodash-contrib' import Spinner from '@/core/components/elements/Spinner/Spinner' import Manifest from '@/lib/treckingAwb/component/Manifest' import { useState } from 'react' import Pagination from '@/core/components/elements/Pagination/Pagination' import Link from 'next/link' import TransactionStatusBadge from '@/lib/transaction/components/TransactionStatusBadge' const { listShipments } = require('../api/listShipment') const Shipments = () => { const router = useRouter() const { q = '', page = 1 } = router.query const [paramStatus, setParamStatus] = useState(null) const limit = 15 const query = { q: q, status: paramStatus, offset: (page - 1) * limit, limit } const [inputQuery, setInputQuery] = useState(q) const queryString = _.toQuery(query) const { data: shipments } = useQuery('shipments' + queryString, () => listShipments({ query: queryString }) ) const [idAWB, setIdAWB] = useState(null) const pageCount = Math.ceil(shipments?.pickingTotal / limit) let pageQuery = _.omit(query, ['limit', 'offset', 'context']) pageQuery = _.pickBy(pageQuery, _.identity) pageQuery = _.toQuery(pageQuery) const closePopup = () => { setIdAWB(null) } const handleSubmit = async (e) => { e.preventDefault() router.push(`${router.pathname}?q=${inputQuery}`) } const filterStatus = async (status) => { if (status === paramStatus) { setParamStatus(null) } else { setParamStatus(status) } } return ( <>
setInputQuery(e.target.value)} />
{shipments?.pickings.map((shipment) => (

Kurir :{' '} {shipment.carrierName || '-'}

No. Resi : {shipment.trackingNumber || '-'}

{shipment?.status === 'completed' && (

Pesanan Tiba

)} {shipment?.status === 'shipment' && (

Sedang Dikirim

)} {shipment?.status === 'pending' && (

Pending

)}

No. Transaksi

{shipment.saleOrder.name}

{shipment.date}

))}

Pengiriman

Detail Pengiriman

setInputQuery(e.target.value)} />
{!shipments && ( )} {shipments && shipments?.pickings?.length == 0 && ( )} {shipments?.pickings.map((shipment) => ( ))}
Tanggal No. Resi No. Pengiriman Sales Order Purchase Order Expedisi Status
Tidak ada transaksi
{shipment.date || '-'} {shipment.trackingNumber || '-'} {shipment.name || '-'} {shipment.saleOrder.name || '-'} {shipment.saleOrder.clientOrderRef || '-'} {shipment.carrierName || '-'}
) } const CardStatus = ({ device, paramStatus, shipments, filterStatus }) => { const status = [`pending`, `shipment`, `completed`] return ( <> {status.map((value) => { const statusData = getStatusLabel(device, value, shipments) if (device === 'desktop') { return (
filterStatus(value)} >

{statusData.label}

{statusData.image}

{statusData.shipCount} Pesanan

) } else { return (
filterStatus(value)} > {statusData.image}

{statusData.label}

{' '} {statusData.shipCount} {'>'}

) } })} ) } const getStatusLabel = (device, status, shipments) => { let images = null switch (status) { case 'pending': if (device === 'desktop') { images = (
) } else { images = (
) } return { label: 'Pending', shipCount: shipments?.summary?.pendingCount, image: images } case 'shipment': if (device === 'desktop') { images = (
) } else { images = (
) } return { label: 'Pengiriman', shipCount: shipments?.summary?.shipmentCount, image: images } case 'completed': if (device === 'desktop') { images = (
) } else { images = (
) } return { label: 'Pesanan Tiba', shipCount: shipments?.summary?.completedCount, image: images } default: return 'Status Tidak Dikenal' } } export default Shipments