import { EntityEnum, Nullable } from "../interface/entity.utils.interface"; import { RelationConfigs } from "../interface/relation-config.interface"; import { BaseEntityModel } from "./base.entity.model"; import { VendorInvoiceActionEnum } from "../enums/vendor_invoice_action_enum"; import { VendorInvoiceStatusEnum } from "../enums/vendor_invoice_action_status_enum"; import { VendorInvoicePaidStatusEnum } from "../enums/vendor_invoice_status_enum"; import { IVendorInvoiceFlowConfigContextData } from "../flow-configs/vendor_invoice_flow.config"; import { IUserEntity } from "../interface/user.entity.interface"; import { IVendorInvoiceEntity } from "../interface/vendor_invoice.entity.interface"; import { IRowActions } from "./interface/row-actions.interface"; import { OfficeLocationEntityModel } from "./office_location.entity.model"; import { UserEntityModel } from "./user.entity.model"; import { VendorEntityModel } from "./vendor.entity.model"; import { VendorInvoiceItemEntityModel } from "./vendor_invoice_item.entity.model"; import { VendorInvoicePaymentEntityModel } from "./vendor_invoice_payment.entity.model"; export declare class VendorInvoiceEntityModel extends BaseEntityModel implements IVendorInvoiceEntity { id: number; vendorId: number; serviceLocationId: number; invoiceNo: string; invoiceDate: number; dueDate?: number; voucherNo?: string; voucherDate?: number; invoiceDocuments: string; paidStatus: VendorInvoicePaidStatusEnum; status: VendorInvoiceStatusEnum; remark: Nullable; createdOn: number; updatedOn: number; createdBy: number; updatedBy: number; totalBasicAmount: number; totalInvoiceAmount: number; totalGstAmount: number; totalTdsAmount: number; totalNetAmount: number; paidAmount: number; adjustedAmount: number; vendor?: VendorEntityModel; officeLocation?: OfficeLocationEntityModel; vendorInvoiceItems?: VendorInvoiceItemEntityModel[]; vendorInvoicePayments?: VendorInvoicePaymentEntityModel[]; static relationConfigs: RelationConfigs<[ EntityEnum.VENDOR, EntityEnum.OFFICE_LOCATION, EntityEnum.VENDOR_INVOICE_ITEM, EntityEnum.VENDOR_INVOICE_PAYMENT ], EntityEnum.VENDOR_INVOICE>; static fromEntity(entity: IVendorInvoiceEntity): VendorInvoiceEntityModel; getRelationConfigs(): any[]; getAvailableActions(currentUser: UserEntityModel, config?: { combinedActions?: Record; customLabels?: Partial>; }): IRowActions[]; getUpdateActionVisibility(currentUser: UserEntityModel): { [key: string]: () => boolean; }; static getTotalBasicAmount(data: T[]): number; static getTotalInvoiceAmount(data: T[]): number; static getTotalGstAmount(data: T[]): number; static getTotalTdsAmount(data: T[]): number; static getTotalNetAmount(data: T[]): number; /** * Generates the next sequential voucher number for a new Vendor Invoice. * * @format * `
<###>` * * Where: * - `` — 4-digit financial year code (e.g., "2526" for FY 2025–26) * - `` — 2-digit month of today's date (e.g., "03" for March) * - `
` — 2-digit day of today's date (e.g., "27" for 27th) * - `<###>` — 3-digit sequence number, continuous within the FY (001–999) * * @sequence * The sequence (`###`) is FY-scoped — it does NOT reset daily or monthly. * It only resets when the Financial Year changes. * The next number is always `max(existing sequences in current FY) + 1`. * * @example * // Today: 27 March 2026 (FY 2025–26 → fyCode = "2526") * // Existing vouchers this FY: ["25260326001", "25260326002", "25260120003"] * // maxSequence = 3 * // Result: * getNextVoucherNumber(existingInvoices) // → "25260327004" * * @example * // Today: 27 March 2026, No existing vouchers in FY 2025–26 * // Result: * getNextVoucherNumber([]) // → "25260327001" * * @example * // FY changes: Today: 01 April 2026 (FY 2026–27 → fyCode = "2627") * // Existing vouchers: ["25260327999"] (from previous FY, ignored) * // Result: * getNextVoucherNumber(existingInvoices) // → "26270401001" (sequence resets) * * @throws {Error} If the sequence reaches 999 within the same FY * * @param existingVendorInvoices - All existing VendorInvoiceEntityModel instances. * Invoices with undefined/null voucherNo are automatically skipped. * Invoices from previous FYs are automatically ignored. * * @returns The next voucher number string in format `
<###>` */ static getNextVoucherNumber(existingVendorInvoices: VendorInvoiceEntityModel[]): string; getNextStatus(currentUser: IUserEntity, action: VendorInvoiceActionEnum, vendorInvoiceFlowConfigContextData: IVendorInvoiceFlowConfigContextData): VendorInvoiceStatusEnum; getBalanceAmount(): number; }