库存管理API扩展

为Microsoft Dynamics 365 Business Central提供的自定义API扩展,支持仓库/库存查询和预留管理。

  • by mschristiansen
  • AL
  • 本地部署
  • 更新于
在 GitHub 查看 mschristiansen/bc-extra-api

使用说明

商务中心额外API

为Microsoft Dynamics 365 Business Central定制API扩展,专为与MCP服务器和人工智能助手集成而设计。

应用程序编程接口

此扩展为仓库/库存查询提供了两个只读API端点:

API 目的
lotInventory 按仓位分类的批量库存
lotReservations 预订批号

API配置

  • 出版商: mschristiansen
  • 组: warehouseAgent
  • 版本: v1.0

端点URL

https://api.businesscentral.dynamics.com/v2.0/{tenant}/{environment}/api/mschristiansen/warehouseAgent/v1.0/companies({companyId})/lotInventory

https://api.businesscentral.dynamics.com/v2.0/{tenant}/{environment}/api/mschristiansen/warehouseAgent/v1.0/companies({companyId})/lotReservations

批量库存API

当库存数量大于0时,每个(批次、仓位)组合返回一行。

领域

字段 类型 可筛选 描述
项目编号 代码[20] ✅ 项目编号
项目描述 文本[100] ❌ 项目描述
批号 代码[50] ✅ 批号
批次描述 文本[100] ❌ 批次描述/注释
证书编号 代码[20] ❌ FSC证书编号
balHeight 十进制 ❌ 厚度(mm)
balLengthInterval 文本[30] ❌ 长度间隔
balWidthInterval 文本[30] ❌ 宽度间隔
binCode 代码[20] ✅ 储物箱位置
位置代码 代码[10] ✅ 位置代码
数量 十进制 ❌ 累计库存数量
baseUnitOfMeasure 代码[10] ❌ 计量单位(M3、M、STK)
blocked 布尔值 ❌ 如果批次被封锁/隔离,则为真

查询示例

# Get all lots in a specific bin
GET .../lotInventory?$filter=binCode eq 'HAL5'

# Get lots for items starting with 'SA' (Sapelli)
GET .../lotInventory?$filter=startswith(itemNo, 'SA')

# Get details for a specific lot
GET .../lotInventory?$filter=lotNo eq '105427'

地块预订API

显示对批号的保留-为销售订单、生产订单等保留的内容。

领域

字段 类型 可筛选 描述
项目编号 代码[20] ✅ 项目编号
批号 代码[50] ✅ 批号
位置代码 代码[10] ✅ 位置代码
源类型 整数 ✅ 源表ID
sourceId 代码[20] ❌ 文件编号
数量 十进制 ❌ 预留数量(负数=出库)
预期日期 日期 ❌ 预计日期

源类型

源类型 含义
37 销售线
5406 产品订单行
5407 产品订单组件
32 项目分类账条目

查询示例

# Get reservations for a specific lot
GET .../lotReservations?$filter=lotNo eq '105427'

# Get all sales order reservations
GET .../lotReservations?$filter=sourceType eq 37

用例

这些API使AI助手能够回答以下问题:

  • “我们有多少萨佩利?”
  • “哈尔5号有什么?”
  • “105427号地块预订了吗?”
  • “预订后实际可用的价格是多少?”
  • “这个地块被封锁了吗?”
  • “这个地块的面积是多少?”

实现注意事项

API使用基于页面的实现和临时缓冲表(不是基于查询),以与BC MCP服务器兼容。数据汇总在 OnOpenPage:

  • lotInventory:骨料 Warehouse Entry 按项目/批次/箱/位置,连接到 Item 和 Lot No. Information
  • lot预订:骨料 Reservation Entry 按项目/批次/位置/来源

依赖项

此扩展需要:

  • DHS-基础 (v1.0.0.17)由Aktiesselskabet balance.as提供

发展

该项目使用AL Go for GitHub Actions基于CI/CD。

地方发展

# Create local Docker-based dev environment
.\.AL-Go\localDevEnv.ps1

# Create cloud-based Business Central Sandbox
.\.AL-Go\cloudDevEnv.ps1

构建和部署

所有构建都通过GitHub Actions运行。按下主按钮,释放/,或功能/ 分支以触发CI/CD管道。

项目结构

appLotApi/
  src/
    Page/
      LotInventoryAPI.Page.al      # Lot inventory API endpoint
      LotReservationsAPI.Page.al   # Lot reservations API endpoint
    Table/
      LotInventoryBuffer.Table.al  # Temporary buffer for inventory
      LotReservationBuffer.Table.al # Temporary buffer for reservations
  app.json                         # App manifest

贡献

请阅读 贡献指南 AL Go项目。