import type { PageParam, PageResult } from '@vben/request';

import { requestClient } from '#/api/request';

export namespace MesWmTransactionApi {
  /** 库存事务流水 */
  export interface Transaction {
    id?: number;
    type?: number; // 事务类型（1-入库 2-出库）
    typeName?: string; // 事务类型名称
    bizType?: number; // 业务类型编码
    bizTypeName?: string; // 业务类型名称
    bizCode?: string; // 业务单号
    itemId?: number; // 物料ID
    itemCode?: string; // 物料编码
    itemName?: string; // 物料名称
    quantity?: number; // 变动数量
    batchId?: number; // 批次ID
    batchCode?: string; // 批次号
    warehouseId?: number; // 仓库ID
    warehouseName?: string; // 仓库名称
    locationId?: number; // 库区ID
    locationName?: string; // 库区名称
    areaId?: number; // 库位ID
    areaName?: string; // 库位名称
    transactionTime?: string; // 事务发生时间
    createTime?: string; // 创建时间
  }

  /** 分页查询参数 */
  export interface PageParams extends PageParam {
    itemId?: number;
    batchCode?: string;
    warehouseId?: number;
    locationId?: number;
    areaId?: number;
    type?: number;
    bizType?: number;
    bizCode?: string;
    materialStockId?: number;
    startTime?: string;
    endTime?: string;
  }
}

/** 分页查询库存事务流水 */
export function getTransactionPage(params: MesWmTransactionApi.PageParams) {
  return requestClient.get<PageResult<MesWmTransactionApi.Transaction>>(
    '/mes/wm/transaction/page',
    { params },
  );
}
