export interface IFdtoInvoice { id: string; no: string; refNo: string; type: InvoiceType; orderType: string | null; source: string | null; businessId: string; restaurantId: string; createdAt: string; completedAt: string; status: BillStatus; items: IFdtoItem[]; refundFrom: string; isRefund: boolean; subtotal: number; discounts: IFdtoDiscount[]; subtotalBeforeTax: number; fees: IFdtoFee[]; taxes: IFdtoTax[]; rounding: number; nett: number; payments: IFdtoPayment[]; credit: IFdtoInvoiceCredit; } interface IFdtoInvoiceCredit { normal: number; free: number; } export declare enum InvoiceType { bill = "BILL", memberStorePurcase = "MEMBER_STORE_PURCHASE" } export declare enum BillStatus { draft = "DRAFT", completed = "COMPLETED", voided = "VOIDED", refunded = "REFUNDED" } export declare enum ItemStatus { draft = "DRAFT", sent = "SENT", voided = "VOIDED", refunded = "REFUNDED" } export declare enum DiscountType { bill = "BILL", item = "ITEM", all = "ALL" } export interface IFdtoDiscount { type: DiscountType; amount: number; } export interface IFdtoItem { id: string; itemId: string; createdAt: string; status: ItemStatus; name: string; code: string; category: string; variantName: string; isRefund: boolean; quantity: number; unitPrice: number; subtotal: number; discounts: IFdtoDiscount[]; subtotalBeforeTax: number; fees: IFdtoFee[]; taxes: IFdtoTax[]; nett: number; customAttributes?: { [key: string]: string; }; } export declare enum ChargeType { percentage = "PERCENTAGE", amount = "AMOUNT" } interface BaseCharge { type: ChargeType; name: string; amount: number; } export interface PercentageCharge extends BaseCharge { type: ChargeType.percentage; chargeableAmount: number; percentage: number; amount: number; } interface AmountCharge extends BaseCharge { type: ChargeType.amount; amount: number; } /** * taxable fee: * in house delivery fee * * nontaxable fee: * grabfood extra fee * service fee */ export type IFdtoFee = (PercentageCharge | AmountCharge) & { taxable: boolean; code: FeeCode; }; export declare enum FeeCode { serviceCharge = "SERVICE_CHARGE", inHouseDeliveryFee = "IN_HOUSE_DELIVERY_FEE", otherCharge = "OTHER_CHARGE" } export interface IFdtoTax extends PercentageCharge { code: string; } export interface IFdtoPayment { name: string; createdAt: string; amount: number; issuer: string | null; variant: string | null; } export {};