import { IBillingFlowConfig, IBillingParticulars } from "../../api"; import { BillingTemplateTitle } from "../../constants"; import { CurrencyEnum } from "../../enums"; import { IDtoValidationError, Result } from "../../misc"; import { DeleteDocumentDetails, DocumentFields } from "../../utils"; import { BillingActionsEnum } from "../enums/billing_action_enum"; import { BillingInvoiceTypeEnum } from "../enums/billing_invoice_type_enum"; import { BillingProfileCode } from "../enums/billing_profile_code_enum"; import { BillingStatusCategoryEnum } from "../enums/billing_status_category.enum"; import { BillingStatusEnum } from "../enums/billing_status_enum"; import { BillingTypeEnum } from "../enums/billing_type_enum"; import { BillingInvoiceNumberPrefixEnum } from "../enums/invoice_number_prefix_enum"; import { PaymentStatusEnum } from "../enums/payment_status_enum"; import { IBillingEntity } from "../interface/billing.entity.interface"; import { IBillingTransactionEntity } from "../interface/billing_transaction.entity.interface"; import { EntityEnum, Nullable } from "../interface/entity.utils.interface"; import { RelationConfigs } from "../interface/relation-config.interface"; import { BankEntityModel } from "./bank.entity.model"; import { BaseEntityModel } from "./base.entity.model"; import { BillingParticularLineItemEntityModel } from "./billing_particular_line_item.entity.model"; import { BillingProfileEntityModel } from "./billing_profile.entity.model"; import { BillingReimbursementExpenseEntityModel } from "./billing_reimbursement_expense.entity.model"; import { BillingTimesheetEntityModel } from "./billing_timesheet.entity.model"; import { BillingTransactionEntityModel } from "./billing_transaction.entity.model"; import { ClientEntityModel } from "./client.entity.model"; import { DesignationEntityModel } from "./designation.entity.model"; import { IAdvanceBillingTransactionsSummary } from "./interface/billing.model.interface"; import { ProjectEntityModel } from "./project.entity.model"; import { ReimbursementEntityModel } from "./reimbursement.entity.model"; import { ReimbursementExpenseEntityModel } from "./reimbursement_expense.entity.model"; import { UserEntityModel } from "./user.entity.model"; export declare class BillingEntityModel extends BaseEntityModel implements IBillingEntity { id: number; startDate: string; endDate: string; invoiceDate: number; projectId: number; totalAmount: number; totalMinutes: number; inrAmount: number; draftInvoiceNumber: string; invoiceNumber: Nullable; paymentStatus: PaymentStatusEnum; status: BillingStatusEnum; writeoffAmount: number; totalAmountPaid: number; tdsAmount: number; creditNoteAmount: number; refundAmount: number; invoiceEntityId: number; invoiceEntityType: BillingInvoiceTypeEnum; invoiceDocument?: Nullable; invoiceContactName: string; bankId: number; conversionRate?: number; particulars: string; currency: CurrencyEnum; createdBy: number; updatedBy: number; createdOn: number; updatedOn: number; type: BillingTypeEnum; project?: ProjectEntityModel; client?: ClientEntityModel; updatedByUser?: UserEntityModel; billOverdue?: boolean; billingReimbursementExpenses?: BillingReimbursementExpenseEntityModel[]; reimbursementExpenses?: ReimbursementExpenseEntityModel[]; bank?: BankEntityModel[]; billingTimesheets?: BillingTimesheetEntityModel[]; billingTransactions?: BillingTransactionEntityModel[]; billingParticularLineItems?: BillingParticularLineItemEntityModel[]; isProjectComplete?: boolean; static readonly BILLING_ENTITY_DOCUMENT_TYPES: readonly ["invoice"]; static validateDocumentNoDocumentFile(data: DocumentFields, deleteDetails?: DeleteDocumentDetails): Result; get bankFromBillingBankId(): BankEntityModel | undefined; get intermediaryBanks(): import("./intermediary_bank.entity.model").IntermediaryBankEntityModel[] | undefined; get reimbursements(): ReimbursementEntityModel[]; static relationConfigs: RelationConfigs<[ EntityEnum.PROJECT, EntityEnum.CLIENT, EntityEnum.USER, EntityEnum.REIMBURSEMENT_EXPENSE, EntityEnum.BILLING_REIMBURSEMENT_EXPENSE, EntityEnum.BILLING_TIMESHEET, EntityEnum.BANK, EntityEnum.BILLING_TRANSACTION, EntityEnum.BILLING_PARTICULAR_LINE_ITEM ], EntityEnum.BILLING>; static fromEntity(entity: IBillingEntity): BillingEntityModel; get nonDeletedBillingTimesheets(): BillingTimesheetEntityModel[]; get nonDeletedBillingReimbursementExpenses(): BillingReimbursementExpenseEntityModel[]; private groupParticularLineItemsByStatus; get activeBillingParticularLineItems(): BillingParticularLineItemEntityModel[]; get inactiveBillingParticularLineItems(): BillingParticularLineItemEntityModel[]; groupParticularLineItemsBySource(): { invoice: BillingParticularLineItemEntityModel[]; ope: BillingParticularLineItemEntityModel[]; custom: BillingParticularLineItemEntityModel[]; }; getStatusCategory(): BillingStatusCategoryEnum; getStatusLabel(): string; getTotalAmountInINR(): string; getDateRange(): string; getBillDate(): Date; mapOverdue(configValue: string | undefined): void; mapStatusCategory(status: BillingStatusEnum): BillingStatusCategoryEnum; mapStatusLabel(status: BillingStatusEnum): string; formatDate(dateStr: string, includeYear?: boolean): string; getAvailableAction(currentUserPermissions: string[], billingConfigFlow: IBillingFlowConfig, getUpdateActionVisibility: (bill: BillingEntityModel) => { [key: string]: () => boolean; }): BillingActionsEnum[]; getRelationConfigs(): any; getAdvanceBillingTransactionsSummary(adjustedBillingTransactions: IBillingTransactionEntity[]): IAdvanceBillingTransactionsSummary; private getUseableTDSAmount; private getUsedTDSAmount; private getRefundedAmount; private getTotalTDSAmount; private getTotalRecieptAmount; private getUseableRecieptAmount; private getUsedRecieptAmount; private getUseableAmount; private getUsedAmount; getTotalAmountRecieved(): number; getTotalRecievableAmount(): number; validateAdvanceBillingId(adjustedBillingTransactions: IBillingTransactionEntity[]): void; getApprovedBillingTransactionsTotalAmount(): number; getCurrentBillingBillingProfile(billingProfiles: BillingProfileEntityModel[]): BillingProfileEntityModel[]; get billingProfileParticulars(): IBillingParticulars; static getLatestBillingEntityModel(billingEntityModels: BillingEntityModel[]): BillingEntityModel | void; static getNextInvoiceNumber(params: { type: BillingInvoiceNumberPrefixEnum; invoiceDate: Date; billingType: BillingTypeEnum; latestBilling?: IBillingEntity; existingEntity?: IBillingEntity; }): string; static getNextInvoiceNumberForCurrentFY(params: { type: BillingInvoiceNumberPrefixEnum; invoiceDate: Date; latestBilling?: IBillingEntity; }): string; static getNextInvoiceNumberForPastFY(params: { type: BillingInvoiceNumberPrefixEnum; invoiceDate: Date; latestBilling?: IBillingEntity; }): string; static getNextDraftInvoiceNumber(params: { invoiceDate: Date; latestBilling?: IBillingEntity; }): string; static getBillingWithHighestInvoiceSequence(billings: IBillingEntity[]): IBillingEntity | undefined; static getInvoiceSequence(invoiceNumber: Nullable): number; getBillingTimesheetUserIds(): number[]; getUserIdsSortedByDesignationOrder(resourceEntities: UserEntityModel[], designationEntities?: DesignationEntityModel[]): number[]; getTimestamp(): string; summarryFolderName(timestamp: string): string; invoiceFileName(timestamp: string): string; timesheetSummarryFileName(timestamp: string): string; OPESummarryFileName(timestamp: string): string; getFileNames(timestamp: string): { invoiceFileName: string; timesheetSummaryFileName: string; opeSummaryFileName: string; }; get billingPhase(): string; get clientName(): string; get projectName(): string; getActiveBillingTransactions(): BillingTransactionEntityModel[] | undefined; hasActiveTranansactions(): boolean | undefined; isClientInvoice(): boolean; get clientAffiliate(): import("./client_affiliate.entity.model").ClientAffiliateEntityModel | undefined; get isForeignBilling(): boolean; get isForeignCurrencyProject(): boolean; get isProformaInvoice(): boolean; get title(): BillingTemplateTitle; get billingProfileName(): string; get billingProfileCode(): BillingProfileCode; get poNumber(): Nullable; get creditNoteTransactions(): BillingTransactionEntityModel[] | undefined; }