
/* !!! This is code generated by Prisma. Do not edit directly. !!! */
/* eslint-disable */
// biome-ignore-all lint: generated file
// @ts-nocheck 
/*
 * This file exports the `ExpensesArchive` model and its related types.
 *
 * 🟢 You can import this file directly.
 */
import type * as runtime from "@prisma/client/runtime/client"
import type * as $Enums from "../enums"
import type * as Prisma from "../internal/prismaNamespace"

/**
 * Model ExpensesArchive
 * 
 */
export type ExpensesArchiveModel = runtime.Types.Result.DefaultSelection<Prisma.$ExpensesArchivePayload>

export type AggregateExpensesArchive = {
  _count: ExpensesArchiveCountAggregateOutputType | null
  _avg: ExpensesArchiveAvgAggregateOutputType | null
  _sum: ExpensesArchiveSumAggregateOutputType | null
  _min: ExpensesArchiveMinAggregateOutputType | null
  _max: ExpensesArchiveMaxAggregateOutputType | null
}

export type ExpensesArchiveAvgAggregateOutputType = {
  id: number | null
  expense_id: number | null
  timesheet_id: number | null
  amount: runtime.Decimal | null
  bank_code_id: number | null
  attachment: number | null
  mileage: runtime.Decimal | null
}

export type ExpensesArchiveSumAggregateOutputType = {
  id: number | null
  expense_id: number | null
  timesheet_id: number | null
  amount: runtime.Decimal | null
  bank_code_id: number | null
  attachment: number | null
  mileage: runtime.Decimal | null
}

export type ExpensesArchiveMinAggregateOutputType = {
  id: number | null
  expense_id: number | null
  timesheet_id: number | null
  archived_at: Date | null
  date: Date | null
  amount: runtime.Decimal | null
  is_approved: boolean | null
  supervisor_comment: string | null
  bank_code_id: number | null
  comment: string | null
  attachment: number | null
  mileage: runtime.Decimal | null
}

export type ExpensesArchiveMaxAggregateOutputType = {
  id: number | null
  expense_id: number | null
  timesheet_id: number | null
  archived_at: Date | null
  date: Date | null
  amount: runtime.Decimal | null
  is_approved: boolean | null
  supervisor_comment: string | null
  bank_code_id: number | null
  comment: string | null
  attachment: number | null
  mileage: runtime.Decimal | null
}

export type ExpensesArchiveCountAggregateOutputType = {
  id: number
  expense_id: number
  timesheet_id: number
  archived_at: number
  date: number
  amount: number
  is_approved: number
  supervisor_comment: number
  bank_code_id: number
  comment: number
  attachment: number
  mileage: number
  _all: number
}


export type ExpensesArchiveAvgAggregateInputType = {
  id?: true
  expense_id?: true
  timesheet_id?: true
  amount?: true
  bank_code_id?: true
  attachment?: true
  mileage?: true
}

export type ExpensesArchiveSumAggregateInputType = {
  id?: true
  expense_id?: true
  timesheet_id?: true
  amount?: true
  bank_code_id?: true
  attachment?: true
  mileage?: true
}

export type ExpensesArchiveMinAggregateInputType = {
  id?: true
  expense_id?: true
  timesheet_id?: true
  archived_at?: true
  date?: true
  amount?: true
  is_approved?: true
  supervisor_comment?: true
  bank_code_id?: true
  comment?: true
  attachment?: true
  mileage?: true
}

export type ExpensesArchiveMaxAggregateInputType = {
  id?: true
  expense_id?: true
  timesheet_id?: true
  archived_at?: true
  date?: true
  amount?: true
  is_approved?: true
  supervisor_comment?: true
  bank_code_id?: true
  comment?: true
  attachment?: true
  mileage?: true
}

export type ExpensesArchiveCountAggregateInputType = {
  id?: true
  expense_id?: true
  timesheet_id?: true
  archived_at?: true
  date?: true
  amount?: true
  is_approved?: true
  supervisor_comment?: true
  bank_code_id?: true
  comment?: true
  attachment?: true
  mileage?: true
  _all?: true
}

export type ExpensesArchiveAggregateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Filter which ExpensesArchive to aggregate.
   */
  where?: Prisma.ExpensesArchiveWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of ExpensesArchives to fetch.
   */
  orderBy?: Prisma.ExpensesArchiveOrderByWithRelationInput | Prisma.ExpensesArchiveOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the start position
   */
  cursor?: Prisma.ExpensesArchiveWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` ExpensesArchives from the position of the cursor.
   */
  take?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Skip the first `n` ExpensesArchives.
   */
  skip?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Count returned ExpensesArchives
  **/
  _count?: true | ExpensesArchiveCountAggregateInputType
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Select which fields to average
  **/
  _avg?: ExpensesArchiveAvgAggregateInputType
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Select which fields to sum
  **/
  _sum?: ExpensesArchiveSumAggregateInputType
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Select which fields to find the minimum value
  **/
  _min?: ExpensesArchiveMinAggregateInputType
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/aggregations Aggregation Docs}
   * 
   * Select which fields to find the maximum value
  **/
  _max?: ExpensesArchiveMaxAggregateInputType
}

export type GetExpensesArchiveAggregateType<T extends ExpensesArchiveAggregateArgs> = {
      [P in keyof T & keyof AggregateExpensesArchive]: P extends '_count' | 'count'
    ? T[P] extends true
      ? number
      : Prisma.GetScalarType<T[P], AggregateExpensesArchive[P]>
    : Prisma.GetScalarType<T[P], AggregateExpensesArchive[P]>
}




export type ExpensesArchiveGroupByArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  where?: Prisma.ExpensesArchiveWhereInput
  orderBy?: Prisma.ExpensesArchiveOrderByWithAggregationInput | Prisma.ExpensesArchiveOrderByWithAggregationInput[]
  by: Prisma.ExpensesArchiveScalarFieldEnum[] | Prisma.ExpensesArchiveScalarFieldEnum
  having?: Prisma.ExpensesArchiveScalarWhereWithAggregatesInput
  take?: number
  skip?: number
  _count?: ExpensesArchiveCountAggregateInputType | true
  _avg?: ExpensesArchiveAvgAggregateInputType
  _sum?: ExpensesArchiveSumAggregateInputType
  _min?: ExpensesArchiveMinAggregateInputType
  _max?: ExpensesArchiveMaxAggregateInputType
}

export type ExpensesArchiveGroupByOutputType = {
  id: number
  expense_id: number
  timesheet_id: number
  archived_at: Date
  date: Date
  amount: runtime.Decimal | null
  is_approved: boolean
  supervisor_comment: string | null
  bank_code_id: number
  comment: string | null
  attachment: number | null
  mileage: runtime.Decimal | null
  _count: ExpensesArchiveCountAggregateOutputType | null
  _avg: ExpensesArchiveAvgAggregateOutputType | null
  _sum: ExpensesArchiveSumAggregateOutputType | null
  _min: ExpensesArchiveMinAggregateOutputType | null
  _max: ExpensesArchiveMaxAggregateOutputType | null
}

type GetExpensesArchiveGroupByPayload<T extends ExpensesArchiveGroupByArgs> = Prisma.PrismaPromise<
  Array<
    Prisma.PickEnumerable<ExpensesArchiveGroupByOutputType, T['by']> &
      {
        [P in ((keyof T) & (keyof ExpensesArchiveGroupByOutputType))]: P extends '_count'
          ? T[P] extends boolean
            ? number
            : Prisma.GetScalarType<T[P], ExpensesArchiveGroupByOutputType[P]>
          : Prisma.GetScalarType<T[P], ExpensesArchiveGroupByOutputType[P]>
      }
    >
  >



export type ExpensesArchiveWhereInput = {
  AND?: Prisma.ExpensesArchiveWhereInput | Prisma.ExpensesArchiveWhereInput[]
  OR?: Prisma.ExpensesArchiveWhereInput[]
  NOT?: Prisma.ExpensesArchiveWhereInput | Prisma.ExpensesArchiveWhereInput[]
  id?: Prisma.IntFilter<"ExpensesArchive"> | number
  expense_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  timesheet_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  archived_at?: Prisma.DateTimeFilter<"ExpensesArchive"> | Date | string
  date?: Prisma.DateTimeFilter<"ExpensesArchive"> | Date | string
  amount?: Prisma.DecimalNullableFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFilter<"ExpensesArchive"> | boolean
  supervisor_comment?: Prisma.StringNullableFilter<"ExpensesArchive"> | string | null
  bank_code_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  comment?: Prisma.StringNullableFilter<"ExpensesArchive"> | string | null
  attachment?: Prisma.IntNullableFilter<"ExpensesArchive"> | number | null
  mileage?: Prisma.DecimalNullableFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  attachment_record?: Prisma.XOR<Prisma.AttachmentsNullableScalarRelationFilter, Prisma.AttachmentsWhereInput> | null
  expense?: Prisma.XOR<Prisma.ExpensesScalarRelationFilter, Prisma.ExpensesWhereInput>
}

export type ExpensesArchiveOrderByWithRelationInput = {
  id?: Prisma.SortOrder
  expense_id?: Prisma.SortOrder
  timesheet_id?: Prisma.SortOrder
  archived_at?: Prisma.SortOrder
  date?: Prisma.SortOrder
  amount?: Prisma.SortOrderInput | Prisma.SortOrder
  is_approved?: Prisma.SortOrder
  supervisor_comment?: Prisma.SortOrderInput | Prisma.SortOrder
  bank_code_id?: Prisma.SortOrder
  comment?: Prisma.SortOrderInput | Prisma.SortOrder
  attachment?: Prisma.SortOrderInput | Prisma.SortOrder
  mileage?: Prisma.SortOrderInput | Prisma.SortOrder
  attachment_record?: Prisma.AttachmentsOrderByWithRelationInput
  expense?: Prisma.ExpensesOrderByWithRelationInput
}

export type ExpensesArchiveWhereUniqueInput = Prisma.AtLeast<{
  id?: number
  AND?: Prisma.ExpensesArchiveWhereInput | Prisma.ExpensesArchiveWhereInput[]
  OR?: Prisma.ExpensesArchiveWhereInput[]
  NOT?: Prisma.ExpensesArchiveWhereInput | Prisma.ExpensesArchiveWhereInput[]
  expense_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  timesheet_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  archived_at?: Prisma.DateTimeFilter<"ExpensesArchive"> | Date | string
  date?: Prisma.DateTimeFilter<"ExpensesArchive"> | Date | string
  amount?: Prisma.DecimalNullableFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFilter<"ExpensesArchive"> | boolean
  supervisor_comment?: Prisma.StringNullableFilter<"ExpensesArchive"> | string | null
  bank_code_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  comment?: Prisma.StringNullableFilter<"ExpensesArchive"> | string | null
  attachment?: Prisma.IntNullableFilter<"ExpensesArchive"> | number | null
  mileage?: Prisma.DecimalNullableFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  attachment_record?: Prisma.XOR<Prisma.AttachmentsNullableScalarRelationFilter, Prisma.AttachmentsWhereInput> | null
  expense?: Prisma.XOR<Prisma.ExpensesScalarRelationFilter, Prisma.ExpensesWhereInput>
}, "id">

export type ExpensesArchiveOrderByWithAggregationInput = {
  id?: Prisma.SortOrder
  expense_id?: Prisma.SortOrder
  timesheet_id?: Prisma.SortOrder
  archived_at?: Prisma.SortOrder
  date?: Prisma.SortOrder
  amount?: Prisma.SortOrderInput | Prisma.SortOrder
  is_approved?: Prisma.SortOrder
  supervisor_comment?: Prisma.SortOrderInput | Prisma.SortOrder
  bank_code_id?: Prisma.SortOrder
  comment?: Prisma.SortOrderInput | Prisma.SortOrder
  attachment?: Prisma.SortOrderInput | Prisma.SortOrder
  mileage?: Prisma.SortOrderInput | Prisma.SortOrder
  _count?: Prisma.ExpensesArchiveCountOrderByAggregateInput
  _avg?: Prisma.ExpensesArchiveAvgOrderByAggregateInput
  _max?: Prisma.ExpensesArchiveMaxOrderByAggregateInput
  _min?: Prisma.ExpensesArchiveMinOrderByAggregateInput
  _sum?: Prisma.ExpensesArchiveSumOrderByAggregateInput
}

export type ExpensesArchiveScalarWhereWithAggregatesInput = {
  AND?: Prisma.ExpensesArchiveScalarWhereWithAggregatesInput | Prisma.ExpensesArchiveScalarWhereWithAggregatesInput[]
  OR?: Prisma.ExpensesArchiveScalarWhereWithAggregatesInput[]
  NOT?: Prisma.ExpensesArchiveScalarWhereWithAggregatesInput | Prisma.ExpensesArchiveScalarWhereWithAggregatesInput[]
  id?: Prisma.IntWithAggregatesFilter<"ExpensesArchive"> | number
  expense_id?: Prisma.IntWithAggregatesFilter<"ExpensesArchive"> | number
  timesheet_id?: Prisma.IntWithAggregatesFilter<"ExpensesArchive"> | number
  archived_at?: Prisma.DateTimeWithAggregatesFilter<"ExpensesArchive"> | Date | string
  date?: Prisma.DateTimeWithAggregatesFilter<"ExpensesArchive"> | Date | string
  amount?: Prisma.DecimalNullableWithAggregatesFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolWithAggregatesFilter<"ExpensesArchive"> | boolean
  supervisor_comment?: Prisma.StringNullableWithAggregatesFilter<"ExpensesArchive"> | string | null
  bank_code_id?: Prisma.IntWithAggregatesFilter<"ExpensesArchive"> | number
  comment?: Prisma.StringNullableWithAggregatesFilter<"ExpensesArchive"> | string | null
  attachment?: Prisma.IntNullableWithAggregatesFilter<"ExpensesArchive"> | number | null
  mileage?: Prisma.DecimalNullableWithAggregatesFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveCreateInput = {
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  attachment_record?: Prisma.AttachmentsCreateNestedOneWithoutExpenses_archiveInput
  expense: Prisma.ExpensesCreateNestedOneWithoutArchiveInput
}

export type ExpensesArchiveUncheckedCreateInput = {
  id?: number
  expense_id: number
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  attachment?: number | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveUpdateInput = {
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  attachment_record?: Prisma.AttachmentsUpdateOneWithoutExpenses_archiveNestedInput
  expense?: Prisma.ExpensesUpdateOneRequiredWithoutArchiveNestedInput
}

export type ExpensesArchiveUncheckedUpdateInput = {
  id?: Prisma.IntFieldUpdateOperationsInput | number
  expense_id?: Prisma.IntFieldUpdateOperationsInput | number
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  attachment?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveCreateManyInput = {
  id?: number
  expense_id: number
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  attachment?: number | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveUpdateManyMutationInput = {
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveUncheckedUpdateManyInput = {
  id?: Prisma.IntFieldUpdateOperationsInput | number
  expense_id?: Prisma.IntFieldUpdateOperationsInput | number
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  attachment?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveListRelationFilter = {
  every?: Prisma.ExpensesArchiveWhereInput
  some?: Prisma.ExpensesArchiveWhereInput
  none?: Prisma.ExpensesArchiveWhereInput
}

export type ExpensesArchiveOrderByRelationAggregateInput = {
  _count?: Prisma.SortOrder
}

export type ExpensesArchiveCountOrderByAggregateInput = {
  id?: Prisma.SortOrder
  expense_id?: Prisma.SortOrder
  timesheet_id?: Prisma.SortOrder
  archived_at?: Prisma.SortOrder
  date?: Prisma.SortOrder
  amount?: Prisma.SortOrder
  is_approved?: Prisma.SortOrder
  supervisor_comment?: Prisma.SortOrder
  bank_code_id?: Prisma.SortOrder
  comment?: Prisma.SortOrder
  attachment?: Prisma.SortOrder
  mileage?: Prisma.SortOrder
}

export type ExpensesArchiveAvgOrderByAggregateInput = {
  id?: Prisma.SortOrder
  expense_id?: Prisma.SortOrder
  timesheet_id?: Prisma.SortOrder
  amount?: Prisma.SortOrder
  bank_code_id?: Prisma.SortOrder
  attachment?: Prisma.SortOrder
  mileage?: Prisma.SortOrder
}

export type ExpensesArchiveMaxOrderByAggregateInput = {
  id?: Prisma.SortOrder
  expense_id?: Prisma.SortOrder
  timesheet_id?: Prisma.SortOrder
  archived_at?: Prisma.SortOrder
  date?: Prisma.SortOrder
  amount?: Prisma.SortOrder
  is_approved?: Prisma.SortOrder
  supervisor_comment?: Prisma.SortOrder
  bank_code_id?: Prisma.SortOrder
  comment?: Prisma.SortOrder
  attachment?: Prisma.SortOrder
  mileage?: Prisma.SortOrder
}

export type ExpensesArchiveMinOrderByAggregateInput = {
  id?: Prisma.SortOrder
  expense_id?: Prisma.SortOrder
  timesheet_id?: Prisma.SortOrder
  archived_at?: Prisma.SortOrder
  date?: Prisma.SortOrder
  amount?: Prisma.SortOrder
  is_approved?: Prisma.SortOrder
  supervisor_comment?: Prisma.SortOrder
  bank_code_id?: Prisma.SortOrder
  comment?: Prisma.SortOrder
  attachment?: Prisma.SortOrder
  mileage?: Prisma.SortOrder
}

export type ExpensesArchiveSumOrderByAggregateInput = {
  id?: Prisma.SortOrder
  expense_id?: Prisma.SortOrder
  timesheet_id?: Prisma.SortOrder
  amount?: Prisma.SortOrder
  bank_code_id?: Prisma.SortOrder
  attachment?: Prisma.SortOrder
  mileage?: Prisma.SortOrder
}

export type ExpensesArchiveCreateNestedManyWithoutExpenseInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput> | Prisma.ExpensesArchiveCreateWithoutExpenseInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput | Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyExpenseInputEnvelope
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
}

export type ExpensesArchiveUncheckedCreateNestedManyWithoutExpenseInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput> | Prisma.ExpensesArchiveCreateWithoutExpenseInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput | Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyExpenseInputEnvelope
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
}

export type ExpensesArchiveUpdateManyWithoutExpenseNestedInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput> | Prisma.ExpensesArchiveCreateWithoutExpenseInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput | Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput[]
  upsert?: Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutExpenseInput | Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutExpenseInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyExpenseInputEnvelope
  set?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  disconnect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  delete?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  update?: Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutExpenseInput | Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutExpenseInput[]
  updateMany?: Prisma.ExpensesArchiveUpdateManyWithWhereWithoutExpenseInput | Prisma.ExpensesArchiveUpdateManyWithWhereWithoutExpenseInput[]
  deleteMany?: Prisma.ExpensesArchiveScalarWhereInput | Prisma.ExpensesArchiveScalarWhereInput[]
}

export type ExpensesArchiveUncheckedUpdateManyWithoutExpenseNestedInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput> | Prisma.ExpensesArchiveCreateWithoutExpenseInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput | Prisma.ExpensesArchiveCreateOrConnectWithoutExpenseInput[]
  upsert?: Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutExpenseInput | Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutExpenseInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyExpenseInputEnvelope
  set?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  disconnect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  delete?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  update?: Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutExpenseInput | Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutExpenseInput[]
  updateMany?: Prisma.ExpensesArchiveUpdateManyWithWhereWithoutExpenseInput | Prisma.ExpensesArchiveUpdateManyWithWhereWithoutExpenseInput[]
  deleteMany?: Prisma.ExpensesArchiveScalarWhereInput | Prisma.ExpensesArchiveScalarWhereInput[]
}

export type ExpensesArchiveCreateNestedManyWithoutAttachment_recordInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput> | Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput | Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyAttachment_recordInputEnvelope
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
}

export type ExpensesArchiveUncheckedCreateNestedManyWithoutAttachment_recordInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput> | Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput | Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyAttachment_recordInputEnvelope
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
}

export type ExpensesArchiveUpdateManyWithoutAttachment_recordNestedInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput> | Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput | Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput[]
  upsert?: Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutAttachment_recordInput | Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutAttachment_recordInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyAttachment_recordInputEnvelope
  set?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  disconnect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  delete?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  update?: Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutAttachment_recordInput | Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutAttachment_recordInput[]
  updateMany?: Prisma.ExpensesArchiveUpdateManyWithWhereWithoutAttachment_recordInput | Prisma.ExpensesArchiveUpdateManyWithWhereWithoutAttachment_recordInput[]
  deleteMany?: Prisma.ExpensesArchiveScalarWhereInput | Prisma.ExpensesArchiveScalarWhereInput[]
}

export type ExpensesArchiveUncheckedUpdateManyWithoutAttachment_recordNestedInput = {
  create?: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput> | Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput[] | Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput[]
  connectOrCreate?: Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput | Prisma.ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput[]
  upsert?: Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutAttachment_recordInput | Prisma.ExpensesArchiveUpsertWithWhereUniqueWithoutAttachment_recordInput[]
  createMany?: Prisma.ExpensesArchiveCreateManyAttachment_recordInputEnvelope
  set?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  disconnect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  delete?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  connect?: Prisma.ExpensesArchiveWhereUniqueInput | Prisma.ExpensesArchiveWhereUniqueInput[]
  update?: Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutAttachment_recordInput | Prisma.ExpensesArchiveUpdateWithWhereUniqueWithoutAttachment_recordInput[]
  updateMany?: Prisma.ExpensesArchiveUpdateManyWithWhereWithoutAttachment_recordInput | Prisma.ExpensesArchiveUpdateManyWithWhereWithoutAttachment_recordInput[]
  deleteMany?: Prisma.ExpensesArchiveScalarWhereInput | Prisma.ExpensesArchiveScalarWhereInput[]
}

export type ExpensesArchiveCreateWithoutExpenseInput = {
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  attachment_record?: Prisma.AttachmentsCreateNestedOneWithoutExpenses_archiveInput
}

export type ExpensesArchiveUncheckedCreateWithoutExpenseInput = {
  id?: number
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  attachment?: number | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveCreateOrConnectWithoutExpenseInput = {
  where: Prisma.ExpensesArchiveWhereUniqueInput
  create: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput>
}

export type ExpensesArchiveCreateManyExpenseInputEnvelope = {
  data: Prisma.ExpensesArchiveCreateManyExpenseInput | Prisma.ExpensesArchiveCreateManyExpenseInput[]
  skipDuplicates?: boolean
}

export type ExpensesArchiveUpsertWithWhereUniqueWithoutExpenseInput = {
  where: Prisma.ExpensesArchiveWhereUniqueInput
  update: Prisma.XOR<Prisma.ExpensesArchiveUpdateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedUpdateWithoutExpenseInput>
  create: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedCreateWithoutExpenseInput>
}

export type ExpensesArchiveUpdateWithWhereUniqueWithoutExpenseInput = {
  where: Prisma.ExpensesArchiveWhereUniqueInput
  data: Prisma.XOR<Prisma.ExpensesArchiveUpdateWithoutExpenseInput, Prisma.ExpensesArchiveUncheckedUpdateWithoutExpenseInput>
}

export type ExpensesArchiveUpdateManyWithWhereWithoutExpenseInput = {
  where: Prisma.ExpensesArchiveScalarWhereInput
  data: Prisma.XOR<Prisma.ExpensesArchiveUpdateManyMutationInput, Prisma.ExpensesArchiveUncheckedUpdateManyWithoutExpenseInput>
}

export type ExpensesArchiveScalarWhereInput = {
  AND?: Prisma.ExpensesArchiveScalarWhereInput | Prisma.ExpensesArchiveScalarWhereInput[]
  OR?: Prisma.ExpensesArchiveScalarWhereInput[]
  NOT?: Prisma.ExpensesArchiveScalarWhereInput | Prisma.ExpensesArchiveScalarWhereInput[]
  id?: Prisma.IntFilter<"ExpensesArchive"> | number
  expense_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  timesheet_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  archived_at?: Prisma.DateTimeFilter<"ExpensesArchive"> | Date | string
  date?: Prisma.DateTimeFilter<"ExpensesArchive"> | Date | string
  amount?: Prisma.DecimalNullableFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFilter<"ExpensesArchive"> | boolean
  supervisor_comment?: Prisma.StringNullableFilter<"ExpensesArchive"> | string | null
  bank_code_id?: Prisma.IntFilter<"ExpensesArchive"> | number
  comment?: Prisma.StringNullableFilter<"ExpensesArchive"> | string | null
  attachment?: Prisma.IntNullableFilter<"ExpensesArchive"> | number | null
  mileage?: Prisma.DecimalNullableFilter<"ExpensesArchive"> | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveCreateWithoutAttachment_recordInput = {
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  expense: Prisma.ExpensesCreateNestedOneWithoutArchiveInput
}

export type ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput = {
  id?: number
  expense_id: number
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveCreateOrConnectWithoutAttachment_recordInput = {
  where: Prisma.ExpensesArchiveWhereUniqueInput
  create: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput>
}

export type ExpensesArchiveCreateManyAttachment_recordInputEnvelope = {
  data: Prisma.ExpensesArchiveCreateManyAttachment_recordInput | Prisma.ExpensesArchiveCreateManyAttachment_recordInput[]
  skipDuplicates?: boolean
}

export type ExpensesArchiveUpsertWithWhereUniqueWithoutAttachment_recordInput = {
  where: Prisma.ExpensesArchiveWhereUniqueInput
  update: Prisma.XOR<Prisma.ExpensesArchiveUpdateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedUpdateWithoutAttachment_recordInput>
  create: Prisma.XOR<Prisma.ExpensesArchiveCreateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedCreateWithoutAttachment_recordInput>
}

export type ExpensesArchiveUpdateWithWhereUniqueWithoutAttachment_recordInput = {
  where: Prisma.ExpensesArchiveWhereUniqueInput
  data: Prisma.XOR<Prisma.ExpensesArchiveUpdateWithoutAttachment_recordInput, Prisma.ExpensesArchiveUncheckedUpdateWithoutAttachment_recordInput>
}

export type ExpensesArchiveUpdateManyWithWhereWithoutAttachment_recordInput = {
  where: Prisma.ExpensesArchiveScalarWhereInput
  data: Prisma.XOR<Prisma.ExpensesArchiveUpdateManyMutationInput, Prisma.ExpensesArchiveUncheckedUpdateManyWithoutAttachment_recordInput>
}

export type ExpensesArchiveCreateManyExpenseInput = {
  id?: number
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  attachment?: number | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveUpdateWithoutExpenseInput = {
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  attachment_record?: Prisma.AttachmentsUpdateOneWithoutExpenses_archiveNestedInput
}

export type ExpensesArchiveUncheckedUpdateWithoutExpenseInput = {
  id?: Prisma.IntFieldUpdateOperationsInput | number
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  attachment?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveUncheckedUpdateManyWithoutExpenseInput = {
  id?: Prisma.IntFieldUpdateOperationsInput | number
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  attachment?: Prisma.NullableIntFieldUpdateOperationsInput | number | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveCreateManyAttachment_recordInput = {
  id?: number
  expense_id: number
  timesheet_id: number
  archived_at?: Date | string
  date: Date | string
  amount?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved: boolean
  supervisor_comment?: string | null
  bank_code_id: number
  comment?: string | null
  mileage?: runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveUpdateWithoutAttachment_recordInput = {
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  expense?: Prisma.ExpensesUpdateOneRequiredWithoutArchiveNestedInput
}

export type ExpensesArchiveUncheckedUpdateWithoutAttachment_recordInput = {
  id?: Prisma.IntFieldUpdateOperationsInput | number
  expense_id?: Prisma.IntFieldUpdateOperationsInput | number
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}

export type ExpensesArchiveUncheckedUpdateManyWithoutAttachment_recordInput = {
  id?: Prisma.IntFieldUpdateOperationsInput | number
  expense_id?: Prisma.IntFieldUpdateOperationsInput | number
  timesheet_id?: Prisma.IntFieldUpdateOperationsInput | number
  archived_at?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  date?: Prisma.DateTimeFieldUpdateOperationsInput | Date | string
  amount?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
  is_approved?: Prisma.BoolFieldUpdateOperationsInput | boolean
  supervisor_comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  bank_code_id?: Prisma.IntFieldUpdateOperationsInput | number
  comment?: Prisma.NullableStringFieldUpdateOperationsInput | string | null
  mileage?: Prisma.NullableDecimalFieldUpdateOperationsInput | runtime.Decimal | runtime.DecimalJsLike | number | string | null
}



export type ExpensesArchiveSelect<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
  id?: boolean
  expense_id?: boolean
  timesheet_id?: boolean
  archived_at?: boolean
  date?: boolean
  amount?: boolean
  is_approved?: boolean
  supervisor_comment?: boolean
  bank_code_id?: boolean
  comment?: boolean
  attachment?: boolean
  mileage?: boolean
  attachment_record?: boolean | Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs>
  expense?: boolean | Prisma.ExpensesDefaultArgs<ExtArgs>
}, ExtArgs["result"]["expensesArchive"]>

export type ExpensesArchiveSelectCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
  id?: boolean
  expense_id?: boolean
  timesheet_id?: boolean
  archived_at?: boolean
  date?: boolean
  amount?: boolean
  is_approved?: boolean
  supervisor_comment?: boolean
  bank_code_id?: boolean
  comment?: boolean
  attachment?: boolean
  mileage?: boolean
  attachment_record?: boolean | Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs>
  expense?: boolean | Prisma.ExpensesDefaultArgs<ExtArgs>
}, ExtArgs["result"]["expensesArchive"]>

export type ExpensesArchiveSelectUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetSelect<{
  id?: boolean
  expense_id?: boolean
  timesheet_id?: boolean
  archived_at?: boolean
  date?: boolean
  amount?: boolean
  is_approved?: boolean
  supervisor_comment?: boolean
  bank_code_id?: boolean
  comment?: boolean
  attachment?: boolean
  mileage?: boolean
  attachment_record?: boolean | Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs>
  expense?: boolean | Prisma.ExpensesDefaultArgs<ExtArgs>
}, ExtArgs["result"]["expensesArchive"]>

export type ExpensesArchiveSelectScalar = {
  id?: boolean
  expense_id?: boolean
  timesheet_id?: boolean
  archived_at?: boolean
  date?: boolean
  amount?: boolean
  is_approved?: boolean
  supervisor_comment?: boolean
  bank_code_id?: boolean
  comment?: boolean
  attachment?: boolean
  mileage?: boolean
}

export type ExpensesArchiveOmit<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = runtime.Types.Extensions.GetOmit<"id" | "expense_id" | "timesheet_id" | "archived_at" | "date" | "amount" | "is_approved" | "supervisor_comment" | "bank_code_id" | "comment" | "attachment" | "mileage", ExtArgs["result"]["expensesArchive"]>
export type ExpensesArchiveInclude<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  attachment_record?: boolean | Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs>
  expense?: boolean | Prisma.ExpensesDefaultArgs<ExtArgs>
}
export type ExpensesArchiveIncludeCreateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  attachment_record?: boolean | Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs>
  expense?: boolean | Prisma.ExpensesDefaultArgs<ExtArgs>
}
export type ExpensesArchiveIncludeUpdateManyAndReturn<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  attachment_record?: boolean | Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs>
  expense?: boolean | Prisma.ExpensesDefaultArgs<ExtArgs>
}

export type $ExpensesArchivePayload<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  name: "ExpensesArchive"
  objects: {
    attachment_record: Prisma.$AttachmentsPayload<ExtArgs> | null
    expense: Prisma.$ExpensesPayload<ExtArgs>
  }
  scalars: runtime.Types.Extensions.GetPayloadResult<{
    id: number
    expense_id: number
    timesheet_id: number
    archived_at: Date
    date: Date
    amount: runtime.Decimal | null
    is_approved: boolean
    supervisor_comment: string | null
    bank_code_id: number
    comment: string | null
    attachment: number | null
    mileage: runtime.Decimal | null
  }, ExtArgs["result"]["expensesArchive"]>
  composites: {}
}

export type ExpensesArchiveGetPayload<S extends boolean | null | undefined | ExpensesArchiveDefaultArgs> = runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload, S>

export type ExpensesArchiveCountArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> =
  Omit<ExpensesArchiveFindManyArgs, 'select' | 'include' | 'distinct' | 'omit'> & {
    select?: ExpensesArchiveCountAggregateInputType | true
  }

export interface ExpensesArchiveDelegate<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> {
  [K: symbol]: { types: Prisma.TypeMap<ExtArgs>['model']['ExpensesArchive'], meta: { name: 'ExpensesArchive' } }
  /**
   * Find zero or one ExpensesArchive that matches the filter.
   * @param {ExpensesArchiveFindUniqueArgs} args - Arguments to find a ExpensesArchive
   * @example
   * // Get one ExpensesArchive
   * const expensesArchive = await prisma.expensesArchive.findUnique({
   *   where: {
   *     // ... provide filter here
   *   }
   * })
   */
  findUnique<T extends ExpensesArchiveFindUniqueArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveFindUniqueArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "findUnique", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

  /**
   * Find one ExpensesArchive that matches the filter or throw an error with `error.code='P2025'`
   * if no matches were found.
   * @param {ExpensesArchiveFindUniqueOrThrowArgs} args - Arguments to find a ExpensesArchive
   * @example
   * // Get one ExpensesArchive
   * const expensesArchive = await prisma.expensesArchive.findUniqueOrThrow({
   *   where: {
   *     // ... provide filter here
   *   }
   * })
   */
  findUniqueOrThrow<T extends ExpensesArchiveFindUniqueOrThrowArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveFindUniqueOrThrowArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

  /**
   * Find the first ExpensesArchive that matches the filter.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {ExpensesArchiveFindFirstArgs} args - Arguments to find a ExpensesArchive
   * @example
   * // Get one ExpensesArchive
   * const expensesArchive = await prisma.expensesArchive.findFirst({
   *   where: {
   *     // ... provide filter here
   *   }
   * })
   */
  findFirst<T extends ExpensesArchiveFindFirstArgs>(args?: Prisma.SelectSubset<T, ExpensesArchiveFindFirstArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "findFirst", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>

  /**
   * Find the first ExpensesArchive that matches the filter or
   * throw `PrismaKnownClientError` with `P2025` code if no matches were found.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {ExpensesArchiveFindFirstOrThrowArgs} args - Arguments to find a ExpensesArchive
   * @example
   * // Get one ExpensesArchive
   * const expensesArchive = await prisma.expensesArchive.findFirstOrThrow({
   *   where: {
   *     // ... provide filter here
   *   }
   * })
   */
  findFirstOrThrow<T extends ExpensesArchiveFindFirstOrThrowArgs>(args?: Prisma.SelectSubset<T, ExpensesArchiveFindFirstOrThrowArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "findFirstOrThrow", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

  /**
   * Find zero or more ExpensesArchives that matches the filter.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {ExpensesArchiveFindManyArgs} args - Arguments to filter and select certain fields only.
   * @example
   * // Get all ExpensesArchives
   * const expensesArchives = await prisma.expensesArchive.findMany()
   * 
   * // Get first 10 ExpensesArchives
   * const expensesArchives = await prisma.expensesArchive.findMany({ take: 10 })
   * 
   * // Only select the `id`
   * const expensesArchiveWithIdOnly = await prisma.expensesArchive.findMany({ select: { id: true } })
   * 
   */
  findMany<T extends ExpensesArchiveFindManyArgs>(args?: Prisma.SelectSubset<T, ExpensesArchiveFindManyArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "findMany", GlobalOmitOptions>>

  /**
   * Create a ExpensesArchive.
   * @param {ExpensesArchiveCreateArgs} args - Arguments to create a ExpensesArchive.
   * @example
   * // Create one ExpensesArchive
   * const ExpensesArchive = await prisma.expensesArchive.create({
   *   data: {
   *     // ... data to create a ExpensesArchive
   *   }
   * })
   * 
   */
  create<T extends ExpensesArchiveCreateArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveCreateArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "create", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

  /**
   * Create many ExpensesArchives.
   * @param {ExpensesArchiveCreateManyArgs} args - Arguments to create many ExpensesArchives.
   * @example
   * // Create many ExpensesArchives
   * const expensesArchive = await prisma.expensesArchive.createMany({
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   *     
   */
  createMany<T extends ExpensesArchiveCreateManyArgs>(args?: Prisma.SelectSubset<T, ExpensesArchiveCreateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>

  /**
   * Create many ExpensesArchives and returns the data saved in the database.
   * @param {ExpensesArchiveCreateManyAndReturnArgs} args - Arguments to create many ExpensesArchives.
   * @example
   * // Create many ExpensesArchives
   * const expensesArchive = await prisma.expensesArchive.createManyAndReturn({
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * 
   * // Create many ExpensesArchives and only return the `id`
   * const expensesArchiveWithIdOnly = await prisma.expensesArchive.createManyAndReturn({
   *   select: { id: true },
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * 
   */
  createManyAndReturn<T extends ExpensesArchiveCreateManyAndReturnArgs>(args?: Prisma.SelectSubset<T, ExpensesArchiveCreateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "createManyAndReturn", GlobalOmitOptions>>

  /**
   * Delete a ExpensesArchive.
   * @param {ExpensesArchiveDeleteArgs} args - Arguments to delete one ExpensesArchive.
   * @example
   * // Delete one ExpensesArchive
   * const ExpensesArchive = await prisma.expensesArchive.delete({
   *   where: {
   *     // ... filter to delete one ExpensesArchive
   *   }
   * })
   * 
   */
  delete<T extends ExpensesArchiveDeleteArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveDeleteArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "delete", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

  /**
   * Update one ExpensesArchive.
   * @param {ExpensesArchiveUpdateArgs} args - Arguments to update one ExpensesArchive.
   * @example
   * // Update one ExpensesArchive
   * const expensesArchive = await prisma.expensesArchive.update({
   *   where: {
   *     // ... provide filter here
   *   },
   *   data: {
   *     // ... provide data here
   *   }
   * })
   * 
   */
  update<T extends ExpensesArchiveUpdateArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveUpdateArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "update", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>

  /**
   * Delete zero or more ExpensesArchives.
   * @param {ExpensesArchiveDeleteManyArgs} args - Arguments to filter ExpensesArchives to delete.
   * @example
   * // Delete a few ExpensesArchives
   * const { count } = await prisma.expensesArchive.deleteMany({
   *   where: {
   *     // ... provide filter here
   *   }
   * })
   * 
   */
  deleteMany<T extends ExpensesArchiveDeleteManyArgs>(args?: Prisma.SelectSubset<T, ExpensesArchiveDeleteManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>

  /**
   * Update zero or more ExpensesArchives.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {ExpensesArchiveUpdateManyArgs} args - Arguments to update one or more rows.
   * @example
   * // Update many ExpensesArchives
   * const expensesArchive = await prisma.expensesArchive.updateMany({
   *   where: {
   *     // ... provide filter here
   *   },
   *   data: {
   *     // ... provide data here
   *   }
   * })
   * 
   */
  updateMany<T extends ExpensesArchiveUpdateManyArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveUpdateManyArgs<ExtArgs>>): Prisma.PrismaPromise<Prisma.BatchPayload>

  /**
   * Update zero or more ExpensesArchives and returns the data updated in the database.
   * @param {ExpensesArchiveUpdateManyAndReturnArgs} args - Arguments to update many ExpensesArchives.
   * @example
   * // Update many ExpensesArchives
   * const expensesArchive = await prisma.expensesArchive.updateManyAndReturn({
   *   where: {
   *     // ... provide filter here
   *   },
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * 
   * // Update zero or more ExpensesArchives and only return the `id`
   * const expensesArchiveWithIdOnly = await prisma.expensesArchive.updateManyAndReturn({
   *   select: { id: true },
   *   where: {
   *     // ... provide filter here
   *   },
   *   data: [
   *     // ... provide data here
   *   ]
   * })
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * 
   */
  updateManyAndReturn<T extends ExpensesArchiveUpdateManyAndReturnArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveUpdateManyAndReturnArgs<ExtArgs>>): Prisma.PrismaPromise<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "updateManyAndReturn", GlobalOmitOptions>>

  /**
   * Create or update one ExpensesArchive.
   * @param {ExpensesArchiveUpsertArgs} args - Arguments to update or create a ExpensesArchive.
   * @example
   * // Update or create a ExpensesArchive
   * const expensesArchive = await prisma.expensesArchive.upsert({
   *   create: {
   *     // ... data to create a ExpensesArchive
   *   },
   *   update: {
   *     // ... in case it already exists, update
   *   },
   *   where: {
   *     // ... the filter for the ExpensesArchive we want to update
   *   }
   * })
   */
  upsert<T extends ExpensesArchiveUpsertArgs>(args: Prisma.SelectSubset<T, ExpensesArchiveUpsertArgs<ExtArgs>>): Prisma.Prisma__ExpensesArchiveClient<runtime.Types.Result.GetResult<Prisma.$ExpensesArchivePayload<ExtArgs>, T, "upsert", GlobalOmitOptions>, never, ExtArgs, GlobalOmitOptions>


  /**
   * Count the number of ExpensesArchives.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {ExpensesArchiveCountArgs} args - Arguments to filter ExpensesArchives to count.
   * @example
   * // Count the number of ExpensesArchives
   * const count = await prisma.expensesArchive.count({
   *   where: {
   *     // ... the filter for the ExpensesArchives we want to count
   *   }
   * })
  **/
  count<T extends ExpensesArchiveCountArgs>(
    args?: Prisma.Subset<T, ExpensesArchiveCountArgs>,
  ): Prisma.PrismaPromise<
    T extends runtime.Types.Utils.Record<'select', any>
      ? T['select'] extends true
        ? number
        : Prisma.GetScalarType<T['select'], ExpensesArchiveCountAggregateOutputType>
      : number
  >

  /**
   * Allows you to perform aggregations operations on a ExpensesArchive.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {ExpensesArchiveAggregateArgs} args - Select which aggregations you would like to apply and on what fields.
   * @example
   * // Ordered by age ascending
   * // Where email contains prisma.io
   * // Limited to the 10 users
   * const aggregations = await prisma.user.aggregate({
   *   _avg: {
   *     age: true,
   *   },
   *   where: {
   *     email: {
   *       contains: "prisma.io",
   *     },
   *   },
   *   orderBy: {
   *     age: "asc",
   *   },
   *   take: 10,
   * })
  **/
  aggregate<T extends ExpensesArchiveAggregateArgs>(args: Prisma.Subset<T, ExpensesArchiveAggregateArgs>): Prisma.PrismaPromise<GetExpensesArchiveAggregateType<T>>

  /**
   * Group by ExpensesArchive.
   * Note, that providing `undefined` is treated as the value not being there.
   * Read more here: https://pris.ly/d/null-undefined
   * @param {ExpensesArchiveGroupByArgs} args - Group by arguments.
   * @example
   * // Group by city, order by createdAt, get count
   * const result = await prisma.user.groupBy({
   *   by: ['city', 'createdAt'],
   *   orderBy: {
   *     createdAt: true
   *   },
   *   _count: {
   *     _all: true
   *   },
   * })
   * 
  **/
  groupBy<
    T extends ExpensesArchiveGroupByArgs,
    HasSelectOrTake extends Prisma.Or<
      Prisma.Extends<'skip', Prisma.Keys<T>>,
      Prisma.Extends<'take', Prisma.Keys<T>>
    >,
    OrderByArg extends Prisma.True extends HasSelectOrTake
      ? { orderBy: ExpensesArchiveGroupByArgs['orderBy'] }
      : { orderBy?: ExpensesArchiveGroupByArgs['orderBy'] },
    OrderFields extends Prisma.ExcludeUnderscoreKeys<Prisma.Keys<Prisma.MaybeTupleToUnion<T['orderBy']>>>,
    ByFields extends Prisma.MaybeTupleToUnion<T['by']>,
    ByValid extends Prisma.Has<ByFields, OrderFields>,
    HavingFields extends Prisma.GetHavingFields<T['having']>,
    HavingValid extends Prisma.Has<ByFields, HavingFields>,
    ByEmpty extends T['by'] extends never[] ? Prisma.True : Prisma.False,
    InputErrors extends ByEmpty extends Prisma.True
    ? `Error: "by" must not be empty.`
    : HavingValid extends Prisma.False
    ? {
        [P in HavingFields]: P extends ByFields
          ? never
          : P extends string
          ? `Error: Field "${P}" used in "having" needs to be provided in "by".`
          : [
              Error,
              'Field ',
              P,
              ` in "having" needs to be provided in "by"`,
            ]
      }[HavingFields]
    : 'take' extends Prisma.Keys<T>
    ? 'orderBy' extends Prisma.Keys<T>
      ? ByValid extends Prisma.True
        ? {}
        : {
            [P in OrderFields]: P extends ByFields
              ? never
              : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
          }[OrderFields]
      : 'Error: If you provide "take", you also need to provide "orderBy"'
    : 'skip' extends Prisma.Keys<T>
    ? 'orderBy' extends Prisma.Keys<T>
      ? ByValid extends Prisma.True
        ? {}
        : {
            [P in OrderFields]: P extends ByFields
              ? never
              : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
          }[OrderFields]
      : 'Error: If you provide "skip", you also need to provide "orderBy"'
    : ByValid extends Prisma.True
    ? {}
    : {
        [P in OrderFields]: P extends ByFields
          ? never
          : `Error: Field "${P}" in "orderBy" needs to be provided in "by"`
      }[OrderFields]
  >(args: Prisma.SubsetIntersection<T, ExpensesArchiveGroupByArgs, OrderByArg> & InputErrors): {} extends InputErrors ? GetExpensesArchiveGroupByPayload<T> : Prisma.PrismaPromise<InputErrors>
/**
 * Fields of the ExpensesArchive model
 */
readonly fields: ExpensesArchiveFieldRefs;
}

/**
 * The delegate class that acts as a "Promise-like" for ExpensesArchive.
 * Why is this prefixed with `Prisma__`?
 * Because we want to prevent naming conflicts as mentioned in
 * https://github.com/prisma/prisma-client-js/issues/707
 */
export interface Prisma__ExpensesArchiveClient<T, Null = never, ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs, GlobalOmitOptions = {}> extends Prisma.PrismaPromise<T> {
  readonly [Symbol.toStringTag]: "PrismaPromise"
  attachment_record<T extends Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.ExpensesArchive$attachment_recordArgs<ExtArgs>>): Prisma.Prisma__AttachmentsClient<runtime.Types.Result.GetResult<Prisma.$AttachmentsPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | null, null, ExtArgs, GlobalOmitOptions>
  expense<T extends Prisma.ExpensesDefaultArgs<ExtArgs> = {}>(args?: Prisma.Subset<T, Prisma.ExpensesDefaultArgs<ExtArgs>>): Prisma.Prisma__ExpensesClient<runtime.Types.Result.GetResult<Prisma.$ExpensesPayload<ExtArgs>, T, "findUniqueOrThrow", GlobalOmitOptions> | Null, Null, ExtArgs, GlobalOmitOptions>
  /**
   * Attaches callbacks for the resolution and/or rejection of the Promise.
   * @param onfulfilled The callback to execute when the Promise is resolved.
   * @param onrejected The callback to execute when the Promise is rejected.
   * @returns A Promise for the completion of which ever callback is executed.
   */
  then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | undefined | null): runtime.Types.Utils.JsPromise<TResult1 | TResult2>
  /**
   * Attaches a callback for only the rejection of the Promise.
   * @param onrejected The callback to execute when the Promise is rejected.
   * @returns A Promise for the completion of the callback.
   */
  catch<TResult = never>(onrejected?: ((reason: any) => TResult | PromiseLike<TResult>) | undefined | null): runtime.Types.Utils.JsPromise<T | TResult>
  /**
   * Attaches a callback that is invoked when the Promise is settled (fulfilled or rejected). The
   * resolved value cannot be modified from the callback.
   * @param onfinally The callback to execute when the Promise is settled (fulfilled or rejected).
   * @returns A Promise for the completion of the callback.
   */
  finally(onfinally?: (() => void) | undefined | null): runtime.Types.Utils.JsPromise<T>
}




/**
 * Fields of the ExpensesArchive model
 */
export interface ExpensesArchiveFieldRefs {
  readonly id: Prisma.FieldRef<"ExpensesArchive", 'Int'>
  readonly expense_id: Prisma.FieldRef<"ExpensesArchive", 'Int'>
  readonly timesheet_id: Prisma.FieldRef<"ExpensesArchive", 'Int'>
  readonly archived_at: Prisma.FieldRef<"ExpensesArchive", 'DateTime'>
  readonly date: Prisma.FieldRef<"ExpensesArchive", 'DateTime'>
  readonly amount: Prisma.FieldRef<"ExpensesArchive", 'Decimal'>
  readonly is_approved: Prisma.FieldRef<"ExpensesArchive", 'Boolean'>
  readonly supervisor_comment: Prisma.FieldRef<"ExpensesArchive", 'String'>
  readonly bank_code_id: Prisma.FieldRef<"ExpensesArchive", 'Int'>
  readonly comment: Prisma.FieldRef<"ExpensesArchive", 'String'>
  readonly attachment: Prisma.FieldRef<"ExpensesArchive", 'Int'>
  readonly mileage: Prisma.FieldRef<"ExpensesArchive", 'Decimal'>
}
    

// Custom InputTypes
/**
 * ExpensesArchive findUnique
 */
export type ExpensesArchiveFindUniqueArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * Filter, which ExpensesArchive to fetch.
   */
  where: Prisma.ExpensesArchiveWhereUniqueInput
}

/**
 * ExpensesArchive findUniqueOrThrow
 */
export type ExpensesArchiveFindUniqueOrThrowArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * Filter, which ExpensesArchive to fetch.
   */
  where: Prisma.ExpensesArchiveWhereUniqueInput
}

/**
 * ExpensesArchive findFirst
 */
export type ExpensesArchiveFindFirstArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * Filter, which ExpensesArchive to fetch.
   */
  where?: Prisma.ExpensesArchiveWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of ExpensesArchives to fetch.
   */
  orderBy?: Prisma.ExpensesArchiveOrderByWithRelationInput | Prisma.ExpensesArchiveOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the position for searching for ExpensesArchives.
   */
  cursor?: Prisma.ExpensesArchiveWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` ExpensesArchives from the position of the cursor.
   */
  take?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Skip the first `n` ExpensesArchives.
   */
  skip?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
   * 
   * Filter by unique combinations of ExpensesArchives.
   */
  distinct?: Prisma.ExpensesArchiveScalarFieldEnum | Prisma.ExpensesArchiveScalarFieldEnum[]
}

/**
 * ExpensesArchive findFirstOrThrow
 */
export type ExpensesArchiveFindFirstOrThrowArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * Filter, which ExpensesArchive to fetch.
   */
  where?: Prisma.ExpensesArchiveWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of ExpensesArchives to fetch.
   */
  orderBy?: Prisma.ExpensesArchiveOrderByWithRelationInput | Prisma.ExpensesArchiveOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the position for searching for ExpensesArchives.
   */
  cursor?: Prisma.ExpensesArchiveWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` ExpensesArchives from the position of the cursor.
   */
  take?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Skip the first `n` ExpensesArchives.
   */
  skip?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/distinct Distinct Docs}
   * 
   * Filter by unique combinations of ExpensesArchives.
   */
  distinct?: Prisma.ExpensesArchiveScalarFieldEnum | Prisma.ExpensesArchiveScalarFieldEnum[]
}

/**
 * ExpensesArchive findMany
 */
export type ExpensesArchiveFindManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * Filter, which ExpensesArchives to fetch.
   */
  where?: Prisma.ExpensesArchiveWhereInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/sorting Sorting Docs}
   * 
   * Determine the order of ExpensesArchives to fetch.
   */
  orderBy?: Prisma.ExpensesArchiveOrderByWithRelationInput | Prisma.ExpensesArchiveOrderByWithRelationInput[]
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination#cursor-based-pagination Cursor Docs}
   * 
   * Sets the position for listing ExpensesArchives.
   */
  cursor?: Prisma.ExpensesArchiveWhereUniqueInput
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Take `±n` ExpensesArchives from the position of the cursor.
   */
  take?: number
  /**
   * {@link https://www.prisma.io/docs/concepts/components/prisma-client/pagination Pagination Docs}
   * 
   * Skip the first `n` ExpensesArchives.
   */
  skip?: number
  distinct?: Prisma.ExpensesArchiveScalarFieldEnum | Prisma.ExpensesArchiveScalarFieldEnum[]
}

/**
 * ExpensesArchive create
 */
export type ExpensesArchiveCreateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * The data needed to create a ExpensesArchive.
   */
  data: Prisma.XOR<Prisma.ExpensesArchiveCreateInput, Prisma.ExpensesArchiveUncheckedCreateInput>
}

/**
 * ExpensesArchive createMany
 */
export type ExpensesArchiveCreateManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * The data used to create many ExpensesArchives.
   */
  data: Prisma.ExpensesArchiveCreateManyInput | Prisma.ExpensesArchiveCreateManyInput[]
  skipDuplicates?: boolean
}

/**
 * ExpensesArchive createManyAndReturn
 */
export type ExpensesArchiveCreateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelectCreateManyAndReturn<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * The data used to create many ExpensesArchives.
   */
  data: Prisma.ExpensesArchiveCreateManyInput | Prisma.ExpensesArchiveCreateManyInput[]
  skipDuplicates?: boolean
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveIncludeCreateManyAndReturn<ExtArgs> | null
}

/**
 * ExpensesArchive update
 */
export type ExpensesArchiveUpdateArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * The data needed to update a ExpensesArchive.
   */
  data: Prisma.XOR<Prisma.ExpensesArchiveUpdateInput, Prisma.ExpensesArchiveUncheckedUpdateInput>
  /**
   * Choose, which ExpensesArchive to update.
   */
  where: Prisma.ExpensesArchiveWhereUniqueInput
}

/**
 * ExpensesArchive updateMany
 */
export type ExpensesArchiveUpdateManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * The data used to update ExpensesArchives.
   */
  data: Prisma.XOR<Prisma.ExpensesArchiveUpdateManyMutationInput, Prisma.ExpensesArchiveUncheckedUpdateManyInput>
  /**
   * Filter which ExpensesArchives to update
   */
  where?: Prisma.ExpensesArchiveWhereInput
  /**
   * Limit how many ExpensesArchives to update.
   */
  limit?: number
}

/**
 * ExpensesArchive updateManyAndReturn
 */
export type ExpensesArchiveUpdateManyAndReturnArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelectUpdateManyAndReturn<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * The data used to update ExpensesArchives.
   */
  data: Prisma.XOR<Prisma.ExpensesArchiveUpdateManyMutationInput, Prisma.ExpensesArchiveUncheckedUpdateManyInput>
  /**
   * Filter which ExpensesArchives to update
   */
  where?: Prisma.ExpensesArchiveWhereInput
  /**
   * Limit how many ExpensesArchives to update.
   */
  limit?: number
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveIncludeUpdateManyAndReturn<ExtArgs> | null
}

/**
 * ExpensesArchive upsert
 */
export type ExpensesArchiveUpsertArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * The filter to search for the ExpensesArchive to update in case it exists.
   */
  where: Prisma.ExpensesArchiveWhereUniqueInput
  /**
   * In case the ExpensesArchive found by the `where` argument doesn't exist, create a new ExpensesArchive with this data.
   */
  create: Prisma.XOR<Prisma.ExpensesArchiveCreateInput, Prisma.ExpensesArchiveUncheckedCreateInput>
  /**
   * In case the ExpensesArchive was found with the provided `where` argument, update it with this data.
   */
  update: Prisma.XOR<Prisma.ExpensesArchiveUpdateInput, Prisma.ExpensesArchiveUncheckedUpdateInput>
}

/**
 * ExpensesArchive delete
 */
export type ExpensesArchiveDeleteArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
  /**
   * Filter which ExpensesArchive to delete.
   */
  where: Prisma.ExpensesArchiveWhereUniqueInput
}

/**
 * ExpensesArchive deleteMany
 */
export type ExpensesArchiveDeleteManyArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Filter which ExpensesArchives to delete
   */
  where?: Prisma.ExpensesArchiveWhereInput
  /**
   * Limit how many ExpensesArchives to delete.
   */
  limit?: number
}

/**
 * ExpensesArchive.attachment_record
 */
export type ExpensesArchive$attachment_recordArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the Attachments
   */
  select?: Prisma.AttachmentsSelect<ExtArgs> | null
  /**
   * Omit specific fields from the Attachments
   */
  omit?: Prisma.AttachmentsOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.AttachmentsInclude<ExtArgs> | null
  where?: Prisma.AttachmentsWhereInput
}

/**
 * ExpensesArchive without action
 */
export type ExpensesArchiveDefaultArgs<ExtArgs extends runtime.Types.Extensions.InternalArgs = runtime.Types.Extensions.DefaultArgs> = {
  /**
   * Select specific fields to fetch from the ExpensesArchive
   */
  select?: Prisma.ExpensesArchiveSelect<ExtArgs> | null
  /**
   * Omit specific fields from the ExpensesArchive
   */
  omit?: Prisma.ExpensesArchiveOmit<ExtArgs> | null
  /**
   * Choose, which related nodes to fetch as well
   */
  include?: Prisma.ExpensesArchiveInclude<ExtArgs> | null
}
