/* eslint-disable @typescript-eslint/no-explicit-any */ import React from "react"; import Image from "next/image"; import { getInvoiceDetails } from "../../../Api/OrderApi"; import { useSearchParams } from "next/navigation"; import moment from "moment-timezone"; import { amountFormatWithCurrency, amountInWordWithCurrency, getFormattedAddress, } from "../../../lib/Helper"; import HourGlassLoader from "../../Loader/Loader"; interface InvoiceData { orderId: string; dispatchDoc: string; referenceNo: string; referenceDate: string; invoiceNo: string; invoiceDate: string; dueDate?: string; billTo: { name: string; address: string; phone: string; email: string; accountNo?: string; }; shipTo: { name: string; address: string; phone: string; email: string; }; shipper?: { name: string; address: string; phone: string; email: string; }; consignee?: { name: string; address: string; phone: string; email: string; }; packages: Array<{ packageId: string; description: string; grossWeight?: number; chargeableWeight?: number; amount: number; }>; subTotal?: number; vat?: number; totalAmount: number; amountInWords: string; status?: string; } const InvoicePrint = () => { const searchParams = useSearchParams(); const id = searchParams.get("id"); const [invoiceData, setInvoiceData] = React.useState< InvoiceData | null | any >(null); const addressRef = React.useRef(null); React.useEffect(() => { const fetchInvoiceData = async () => { if (id) { const data: any = await getInvoiceDetails(id); setInvoiceData(data); } }; fetchInvoiceData(); }, [id]); const handlePrint = () => { if (addressRef.current) { const printWindow = window.open("", "", "height=500,width=500"); printWindow?.document.write( "Print" ); printWindow?.document.write(addressRef.current.innerHTML); printWindow?.document.write(""); printWindow?.document.close(); printWindow?.print(); } }; if (!invoiceData) { return ; } // Helper for fallback const safe = (val: any, fallback = "--") => val ? moment(val).format("MMM DD, YYYY") : fallback; return ( <>
{/* Header Table */} {/* */}
Delybell Delybell Logistics CO WLL {" "}
C.R.111829-2, Bldg.134, Road:354, Block:306
P.O. Box 3117, Manama, Bahrain
Tel: +(973) 3717 2727, 3372 0647
Email: delivery@delybell.com
VAT#: 220002993200002
{invoiceData.status ? invoiceData.status.toUpperCase() : "UNPAID"}
Invoice No. {invoiceData?.generatedInvoiceId}
Invoice Date {safe(invoiceData?.createdAt)}
Due Date {safe(invoiceData?.dueDate)}
Order ID {invoiceData?.order_details?.generatedOrderId} {/* ({invoiceData?.order_details?.generatedOrderId}) */}   Due Date {safe(invoiceData.dueDate)}
{/* Invoice No: {safe(invoiceData.invoiceNo)} */}
Invoice
{/* Invoice Date: {safe(invoiceData.invoiceDate)} */}
Barcode

Sender :

{ invoiceData.order_details?.created_for_details ?.companyName } {invoiceData.order_details?.created_for_details ?.companyRegistrationNumber ? ` - ${invoiceData.order_details?.created_for_details?.companyRegistrationNumber}` : ""}

{getFormattedAddress( invoiceData.order_details, "order_view" )}

Email:{" "} { invoiceData.order_details?.created_for_details ?.email }

Contact No.:{" "} { invoiceData.order_details?.created_for_details ?.phone }

Shipper:

{safe(invoiceData.shipper?.name, safe(invoiceData.shipTo?.name))}

{safe(invoiceData.shipper?.address, safe(invoiceData.shipTo?.address))}

call : {safe(invoiceData.shipper?.phone, safe(invoiceData.shipTo?.phone))}, E-mail: {safe(invoiceData.shipper?.email, safe(invoiceData.shipTo?.email))}

Receiver:

{invoiceData.order_details ?.destinationCustomerName || ""}

{getFormattedAddress( invoiceData.order_details, "order_view" )}

Contact No :{" "} {invoiceData.order_details ?.destinationMobileNumber || invoiceData.order_details ?.destinationAlternateNumber || ""}

Alt. Contact No :{" "} {invoiceData.order_details ?.destinationAlternateNumber || "--"}

Email :{" "} {invoiceData.order_details?.destinationEmail || "--"}

{/* Package Table */} {invoiceData?.order_details?.order_package_list && invoiceData?.order_details?.order_package_list.length > 0 ? ( invoiceData?.order_details?.order_package_list.map( (pkg: any, idx: number) => ( ) ) ) : ( )} {/* */} {/* */}
PKG ID Weight Description Amount (BHD)
{pkg.generatedOrderPackageId} {pkg.weight} KG {pkg.packageDescription} {safe(pkg.amount)}
No packages found
Sub Total: BHD {safe(invoiceData.subTotal, safe(invoiceData.totalAmount))}
VAT: {invoiceData.vat !== undefined ? `BHD ${invoiceData.vat}` : "--"}
Total (BHD): {amountFormatWithCurrency(invoiceData.totalAmount)}
Amount in Words:{" "} {amountInWordWithCurrency( invoiceData.amountInWords )}

Make Payments to:

Bank Name: BBK
Account Name: INTERCITY EXPRESS CARGO CO. WLL

Account Number: 100000428320
IBAN-BH: BH22-BBKU-0010-0000-4283-20

{/*

Make all cheques payable to INTERCITY EXPRESS CARGO CO. WLL
If you have any questions concerning this invoice, call : 3717 2727, E-mail: accounts@delybell.com

*/}

*This is computer generated invoice no signature required.

{/* Thank you section */}
Thank you for your business!
); }; export default InvoicePrint;