'use client'; import Image from 'next/image'; import { Avatar } from '@/components/ui/avatar'; import { Badge } from '@/components/ui/badge'; import { Title, Text } from '@/components/ui/text'; import Table from '@/components/ui/table'; import { siteConfig } from '@/config/site.config'; import { useSelector, useDispatch } from 'react-redux'; import { useEffect } from 'react'; import { postDownloadInvoice } from '@/redux/slices/user/invoice/invoiceSlice'; import { useRouter, useSearchParams } from 'next/navigation'; import Link from 'next/link'; import { Button } from 'rizzui'; import { FaArrowLeft } from 'react-icons/fa'; import { routes } from '@/config/routes'; import { getSingleClientinvoice } from '@/redux/slices/user/client/invoice/clientinvoiceSlice'; import Spinner from '@/components/ui/spinner'; import { IoMdDownload } from "react-icons/io"; import moment from 'moment'; import withRoleAuth from '@/AuthGuard/withRoleAuth'; import { roles } from '@/config/roles'; import { CustomePageHeader } from '@/components/pageheader/pageheader'; import PageHeader from '@/app/shared/page-header'; import { capitalizeFirstLetter } from '@/utils/common-functions'; function InvoiceDetails({ params }: { params: { id: string } }) { const dispatch = useDispatch(); const router = useRouter(); const { singleInvoicedetails, loading } = useSelector((state: any) => state?.root?.clieninvoice); const IncoiceLoader = useSelector((state: any) => state?.root?.invoice)?.loading const { defaultWorkSpace } = useSelector((state: any) => state?.root?.workspace) // console.log(singleInvoicedetails, 'singleInvoicedetails') const data = singleInvoicedetails?.data?.[0]; useEffect(() => { dispatch(getSingleClientinvoice(params?.id)); }, [params?.id]); const columns = [ { title:

Item Descriptions

, key: 'item', width: 600, render: (product: any, record: any, index: any) => ( <> {!(record.key === 'totalRow') ?
{product?.item && product?.item != '' ? product?.item : "-"} {product?.description && product?.description != '' ? product?.description : "-"}
: } ), }, { title:

Quantity

, key: 'qty', width: 150, render: (product: any, record: any, index: any) => ( <> {!(record.key === 'totalRow') ? {product?.qty && product?.qty != '' ? product?.qty : "-"} : } ), }, { title:

Rate

, key: 'rate', width: 150, render: (product: any, record: any, index: any) => ( <> {!(record.key === 'totalRow') ? {product?.rate && product?.rate != '' ? data?.currency_symbol + " " + product?.rate : "-"} : } ), }, { title:

Taxes

, key: 'tax', width: 200, render: (product: any, record: any, index: any) => ( <> {!(record.key === 'totalRow') ? {product?.tax && product?.tax != '' ? product?.tax + " %" : "-"} : Total Amount : } ), }, { title:

Amount

, key: 'amount', width: 200, render: (product: any, record: any, index: any) => ( // console.log(product, 'product'), <> {!(record.key === 'totalRow') ? {product?.amount && product?.amount != '' ? data?.currency_symbol + " " + product?.amount : "-"} :
{data?.currency_symbol} {data?.total && data?.total != '' ? data?.total : 0}
} ), } ]; // Add an empty object and total row to the data const dataWithAdditionalRows = [...(Array.isArray(data?.invoice_content) ? data.invoice_content : []), { key: 'totalRow' }]; function InvoiceDetailsListTable() { return ( record.id} scroll={{ x: 1100 }} className="mb-4 invoice_table_view" /> ); } const DownloadInvoice = () => { dispatch(postDownloadInvoice({ invoice_id: params?.id })) }; return ( <> {loading ?
: <>
{/* creation date */}
Creation Date : {data?.createdAt ? moment(data?.createdAt).format('DD MMM, YYYY') : '-'}
Due Date : {data?.due_date ? moment(data?.due_date).format('DD MMM, YYYY') : '-'}
Invoice Number : {data?.invoice_number}
Payment Status <Badge variant="flat" color={ data?.status === 'draft' ? 'primary' : data?.status === 'paid' ? 'success' : data?.status === 'unpaid' ? 'warning' : data?.status === 'overdue' ? 'danger' : 'primary' } rounded="md" className="capitalize" > {data?.status} </Badge>
From {data?.from?.agency_full_name && data?.from?.agency_full_name != '' && data?.from?.agency_full_name} {data?.from?.company_name && data?.from?.company_name != '' && data?.from?.company_name} {data?.from?.address && data?.from?.address != '' && data?.from?.address + ","}
{data?.from?.city?.name && data?.from?.city?.name != '' && data?.from?.city?.name + ","} {data?.from?.state?.name && data?.from?.state?.name != '' && data?.from?.state?.name + ","} {data?.from?.country?.name && data?.from?.country?.name != '' && data?.from?.country?.name + ","}
{data?.from?.pincode && data?.from?.pincode != '' && data?.from?.pincode}
Email Id {data?.from?.email && data?.from?.email != '' ? data?.from?.email : "-"}
Phone {data?.from?.contact_number && data?.from?.contact_number != '' ? data?.from?.contact_number : "-"}
Bill To {data?.custom_client?.name ?
{data?.custom_client?.name}
:
{data?.to?.first_name && data?.to?.first_name != '' && data?.to?.first_name + " "} {data?.to?.last_name && data?.to?.last_name != '' && data?.to?.last_name}
}
{data?.to?.company_name && data?.to?.company_name != '' && data?.to?.company_name} {data?.custom_client?.address ? data.custom_client?.address : ( <> {(data?.to?.address && data?.to?.address !== '') ? data?.to?.address + "," : data?.custom_client?.address}
{data?.to?.city?.name && data?.to?.city?.name !== '' && data?.to?.city?.name + ","} {data?.to?.state?.name && data?.to?.state?.name !== '' && data?.to?.state?.name + ","} {data?.to?.country?.name && data?.to?.country?.name !== '' && data?.to?.country?.name + ","} )}
{data?.to?.pincode && data?.to?.pincode != '' && data?.to?.pincode}
{data?.memo && data?.memo != '' &&
{data?.memo && data?.memo != '' && data?.memo}
}
} ); } export default withRoleAuth([roles.agency, roles.teamAgency.team_agency], 'invoices', null, 'view')(InvoiceDetails);