import { type ListFrontEndInterface } from '../CommonType'

export interface InvoiceListDataTypeInterface extends InvoiceFormDataInterface {
    key: React.Key
}

export interface InvoiceFormDataInterface {
    clientNumber: string
    referenceName: string
    periodStartDate: string
    periodEndDate: string
    serviceName: string
}

export interface ToBeRaisedInterface {
    record: any
    GetBankInfo?: any
}

export interface PerformInvoiceProps {
    PerformInvoice: PerformFormDataInterface[]
    PerformInvoiceCount: number
    selectedCategoryId: number
    selectedServiceId: number
}

export interface PerformFormDataInterface {
    adhocDescription: string
    businessTypeId: number
    businessTypeName: string
    clientNumber: string
    completeStatus: number
    createdDate: string
    createdUser: string
    currentStatus: string
    deletedDate: string
    deletedUser: string
    description: string
    financeRemarks: string
    isNewChatExist: number
    isPaid: number
    isSent: number
    key: any
    lastUpdateDate: string
    lastUpdateUser: string
    no: number
    paidDate: string
    paidRemarks: string
    paymentOptionId: number
    paymentStatus: string
    periodEndDate: string
    periodStartDate: string
    referenceId: number
    referenceName: string
    sentDate: string
    serviceId: number
    serviceName: string
    serviceProcessId: number
    year: number
}

export interface PerformStateInterface {
    PerformInvoice: PerformFormDataInterface[]
    PerformInvoiceCount: number
}

export interface DataCHAT {
    clientName: string
    clientNumber: string
    periodStartDate: string
    periodEndDate: string
    serviceId: number
    processDetailChatList: ProcessDetailChat[]
}

export interface ProcessDetailChat {
    chatId: number
    createdBy: string
    description: string
    dateInfo: string
    imageUrl: string
    createdUser: number
    userList: string
}

export interface ProspectChatInterface extends ProspectChatStateInterface {
    refernceId: number
    messageTypeId: number
    businessId: number
}

export interface ProspectChatStateInterface {
    userList: ListFrontEndInterface[]
}

export interface ChatMessage {
    chatId: number
    msgType: number
    msgReferenceId: number
    isPinned: number
    description: string
    userIds: number[]
}

export interface PerformColumnDatas {
    clientNumber: string
    referenceName: string
    periodStartDate: string
    periodEndDate: string
    accInvoiceTypeList: string
    serviceProcessId: number
}

export interface InvoiceStateInterface {
    categoryDropDownList: ListFrontEndInterface[]
    serviceDropDownList: ListFrontEndInterface[]
}

export interface ArchivedInvoiceProps {
    ArchivedInvoice: PerformFormDataInterface[]
    ArchivedInvoiceCount: number
    selectedCategoryId: number
    selectedServiceId: number
}
export interface ArchiveInvoiceState {
    ArchivedInvoice: PerformFormDataInterface[]
    ArchivedInvoiceCount: number
}
export interface ArcheivedInvoiceListDataTypeInterface
    extends PerformFormDataInterface {
    key: React.Key
}

export interface ArchivedInvoiceFormDataInterface {
    clientNumber: string
    referenceName: string
    periodStartDate: string
    periodEndDate: string
    serviceName: string
    serviceProcessId: number
}

export interface BankInfo {
    id: number
    displayName: string
    additionalDataOne: string
    displayImageURL: string
}

export interface ToBeRaisedForm {
    record: any
    GetBankInfo?: any
    onTableChange: () => void
}

export interface InvoicePrepartionExpandViewInterface {
    InvoiceData: ArcheivedInvoiceListDataTypeInterface
}
