'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 ?
: <>
Download Invoice
{/* 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
{data?.status}
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);