export type RawMaterialQuery = {
  page?: string;
  pageSize?: string;
  search?: string;
  categoryId?: string;
  vendorId?: string;
  uomId?: string;
  stockType?: string;
  status?: string;
  fromDate?: string;
  toDate?: string;
  sortBy?: string;
  sortOrder?: string;
};

export type RawMaterialWriteDto = {
  materialCode?: string;
  materialName?: string;
  categoryId?: string;
  subType?: string;
  description?: string;
  uomId?: string;
  hsnCode?: string;
  taxCategory?: string;
  gstPercent?: number | string;
  vendorId?: string;
  costPerUnit?: number | string;
  currency?: string;
  batchNumber?: string;
  qualityGrade?: string;
  specificationStandard?: string;
  storageConditions?: string;
  currentStock?: number | string;
  reorderLevel?: number | string;
  reorderQuantity?: number | string;
  stockType?: string;
  lossWastePercent?: number | string;
  accountLevelLink?: string;
  imagePath?: string;
  imageData?: string;
  imageName?: string;
  status?: string;
  updatedBy?: string;
  remarks?: string;
};

export type RawMaterialCategoryWriteDto = {
  categoryCode?: string;
  categoryName?: string;
  description?: string;
  status?: string;
};

export type UnitOfMeasureWriteDto = {
  uomName?: string;
  uomCode?: string;
  measureType?: string;
  conversionFactor?: number | string;
  status?: string;
};

export type RawMaterialVendorWriteDto = {
  vendorCode?: string;
  vendorName?: string;
  address?: string;
  phoneNumber?: string;
  whatsappNumber?: string;
  email?: string;
  gstNumber?: string;
  mapLocationUrl?: string;
  locationPlace?: string;
  locationPincode?: string;
  latitude?: number | string;
  longitude?: number | string;
  status?: string;
};

export type PurchaseOrderItemWriteDto = {
  rawMaterialId?: string;
  uomId?: string;
  description?: string;
  quantity?: number | string;
  rate?: number | string;
  gstPercent?: number | string;
};

export type PurchaseOrderWriteDto = {
  poNumber?: string;
  vendorId?: string;
  orderDate?: string;
  expectedDate?: string;
  status?: string;
  transportationCost?: number | string;
  transportDetails?: string;
  epassFilePath?: string;
  epassData?: string;
  epassName?: string;
  notes?: string;
  createdBy?: string;
  items?: PurchaseOrderItemWriteDto[];
};

export type RawMaterialSettingsWriteDto = {
  smtpHost?: string;
  smtpPort?: number | string;
  smtpSecure?: boolean | string;
  smtpUsername?: string;
  smtpPassword?: string;
  defaultSenderEmail?: string;
  defaultSenderName?: string;
  defaultCc?: string;
  billHeader?: string;
  billFooter?: string;
  logoPath?: string;
  logoData?: string;
  logoName?: string;
  processCodeAutoGenerate?: boolean | string;
  processCodePrefix?: string;
};

export type PurchaseOrderEmailDto = {
  subject?: string;
  to?: string;
  cc?: string;
  message?: string;
};

export type ImportPreviewDto = {
  fileName?: string;
  content?: string;
};

export type ImportCommitDto = {
  rows?: Record<string, unknown>[];
};
