# 采购管理

采购管理分类提供供应商查询、采购订单创建、采购入库/退货单等接口，共 **5** 个API。

---

## 接口列表

| 序号 | 接口名称 | Method | 说明 |
|------|----------|--------|------|
| 1 | [供应商查询](#1-供应商查询) | `foonsu.erp.provider.list` | 查询供应商 |
| 2 | [采购订单创建](#2-采购订单创建) | `foonsu.erp.purchaseOrders.addPurchaseOrder` | 创建采购订单 |
| 3 | [采购入库/退货单创建](#3-采购入库退货单创建) | `foonsu.erp.stockInOrders.add` | 创建采购入库或退货单 |
| 4 | [采购入库/退货单查询](#4-采购入库退货单查询) | `foonsu.erp.stockInOrders.list` | 查询采购入库/退货单 |
| 5 | [采购退货单查询](#5-采购退货单查询) | `foonsu.erp.stockOutOrders.list` | 查询采购退货单 |

---

## 1. 供应商查询

**Method：** `foonsu.erp.provider.list`

**请求方式：** POST

**简要描述：** 供应商查询

### 请求参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| pageIndex | 否 | Integer | 当前页码 |
| pageSize | 否 | Integer | 默认 20，最大不超过 50 |
| providerName | 否 | String | 供应商名称 |
| providerCode | 否 | String | 供应商编码 |

### data(Object)返回参数

| 参数名 | 类型 | 说明 |
|--------|------|------|
| total | Integer | 记录总数 |
| data | List[Object] | 集合参数响应 |

### data(List)返回参数

| 参数名 | 类型 | 说明 |
|--------|------|------|
| providerName | String | 供应商名称 |
| providerTypeName | String | 供应商类型 |
| linkMan | String | 联系人 |
| phone | String | 电话号码 |
| mobile | String | 手机号码 |
| fax | String | 传真 |
| province | String | 省份 |
| city | String | 城市 |
| district | String | 区 |
| address | String | 地址 |
| zipCode | String | 邮编 |
| remark | String | 备注 |
| status | String | 状态：0-停用；1-启用 |
| providerCode | String | 供应商编码 |

### 返回示例

```json
{
  "errorCode": null,
  "msg": "操作成功",
  "data": {
    "total": 5,
    "data": [
      {
        "providerName": "cdd",
        "providerCode": "a23",
        "providerTypeName": "一级供应商",
        "linkMan": "**",
        "phone": "",
        "mobile": "13923742665",
        "fax": "*",
        "province": "上海",
        "city": "上海市",
        "district": "嘉定区",
        "address": "*****",
        "zipCode": "***",
        "remark": "无"
      }
    ]
  },
  "date": null,
  "version": null,
  "success": true
}
```

---

## 2. 采购订单创建

**Method：** `foonsu.erp.purchaseOrders.addPurchaseOrder`

**请求方式：** POST

**简要描述：** 采购订单创建

### 请求参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| warehouseName | 是 | String | 仓库名称 |
| purchaseType | 是 | String | 采购类型：1-标准采购；2-新品采购；3-补货采购 |
| provideName | 是 | String | 供应商名称 |
| expectedArrivalTime | 是 | Date | 预计到货时间 |
| theTotalAmountActuallyPaid | 否 | BigDecimal | 实际支付总金额（如果未输入默认取商品总金额） |
| reamrk | 否 | String | 备注（长度不能大于100） |
| ext1 | 否 | String | 自定义字段1 |
| ext2 | 否 | String | 自定义字段2 |
| ext3 | 否 | String | 自定义字段3 |
| externalUniqueCode | 否 | String | 请求的唯一标识，如果传入则需要保证每次请求数据具有唯一性，长度不可超32位 |
| purchaseOrdersGoodsInfoList | 是 | List[Object] | 商品信息列表 |

### PurchaseOrdersGoodsInfo 参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| goodsType | 是 | String | 商品类型：0-普通商品；1-批次商品；2-唯一码商品 |
| goodsCode | 是 | String | 商品编码 |
| goodsName | 是 | String | 商品名称 |
| quantity | 是 | BigDecimal | 商品数量 |
| price | 是 | BigDecimal | 单价 |
| totalAmount | 是 | BigDecimal | 商品总价（商品数量*单价） |
| taxRate | 否 | BigDecimal | 税率（未输入默认为0） |
| taxType | 否 | String | 税率类型：0-含税；1-免税；2-未税，默认为含税 |
| remark | 否 | String | 备注（长度不能大于100） |

### 请求示例

```json
{
  "expectedArrivalTime": "2021-11-11 11:11:11",
  "provideName": "A00001供应商",
  "purchaseOrdersGoodsInfoList": [
    {
      "goodsCode": "sub_01",
      "goodsName": "sub_01",
      "goodsType": "0",
      "price": 10,
      "quantity": 1,
      "totalAmount": 10
    },
    {
      "goodsCode": "pc_01",
      "goodsName": "pc_01",
      "goodsType": "1",
      "price": 10,
      "quantity": 1,
      "totalAmount": 10
    },
    {
      "goodsCode": "wym_01",
      "goodsName": "wym_01",
      "goodsType": "2",
      "price": 10,
      "quantity": 1,
      "totalAmount": 10
    }
  ],
  "purchaseType": "1",
  "reamrk": "测试数据",
  "theTotalAmountActuallyPaid": 30,
  "warehouseName": "仓库01"
}
```

### 返回示例

```json
{
  "errorCode": null,
  "msg": "操作成功",
  "data": null,
  "date": null,
  "version": null,
  "success": true
}
```

---

## 3. 采购入库/退货单创建

**Method：** `foonsu.erp.stockInOrders.add`

**请求方式：** POST

**简要描述：** 采购入库/退货单创建

### 请求参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| warehouseName | 是 | String | 仓库名称 |
| purchaseType | 是 | String | 采购类型：1-标准采购；2-新品采购；3-补货采购（orderFlag=-1时不传） |
| orderFlag | 是 | Integer | 单据类型：1-采购入库；-1-采购退货，默认1 |
| provideName | 是 | String | 供应商名称 |
| expectedArrivalTime | 是 | Date | 预计到货时间 |
| theTotalAmountActuallyPaid | 否 | BigDecimal | 实际支付总金额（如果未输入默认取商品总金额） |
| reamrk | 否 | String | 备注（长度不能大于100） |
| ext1 | 否 | String | 自定义字段1 |
| ext2 | 否 | String | 自定义字段2 |
| ext3 | 否 | String | 自定义字段3 |
| externalUniqueCode | 否 | String | 请求的唯一标识，如果传入则需要保证每次请求数据具有唯一性，长度不可超32位 |
| externalOrderNo | 否 | String | 外部系统单据编号 |
| stockInOrdersGoodsInfoList | 是 | List[Object] | 商品信息列表 |

### StockInOrdersGoodsInfo 参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| goodsType | 是 | String | 商品类型：0-普通商品；1-批次商品；2-唯一码商品 |
| goodsCode | 是 | String | 商品编码 |
| goodsName | 是 | String | 商品名称 |
| quantity | 是 | BigDecimal | 商品数量 |
| price | 是 | BigDecimal | 单价 |
| totalAmount | 是 | BigDecimal | 商品总价（商品数量*单价） |
| taxRate | 否 | BigDecimal | 税率（未输入默认为0） |
| taxType | 否 | String | 税率类型：0-含税；1-免税；2-未税，默认为含税 |
| remark | 否 | String | 备注（长度不能大于100） |
| externalDetailNo | 否 | String | 外部系统单据明细行号 |
| stockInOrdersGoodsBatchInfoList | 是 | List[Object] | 批次/唯一码信息（goodsType为1或2时为必填字段） |

### StockInOrdersGoodsBatchInfo 参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| batchNo | 是 | String | 批次号 |
| batchQuantity | 是 | BigDecimal | 数量（goodsType=2时数量默认必须为1） |
| productionDate | 否 | Date | 生产日期 |
| validDays | 否 | Integer | 保质期天数 |
| distributorsCode | 否 | String | 经销商编码 |

### 请求示例

```json
{
  "expectedArrivalTime": 1596165536758,
  "provideName": "上海供应商",
  "purchaseType": "1",
  "orderFlag": 1,
  "reamrk": "123dhjskhfasf",
  "stockInOrdersGoodsInfoList": [
    {
      "goodsCode": "PC_001",
      "goodsType": "1",
      "price": 15,
      "quantity": 10,
      "stockInOrdersGoodsBatchInfoList": [
        {
          "batchNo": "PC_00000001",
          "batchQuantity": 10,
          "productionDate": 1596165536755,
          "validDays": 50,
          "distributorsCode": 32424
        }
      ],
      "taxRate": 0.1,
      "totalAmount": 150
    },
    {
      "goodsCode": "WYM_001",
      "goodsType": "2",
      "price": 11,
      "quantity": 1,
      "externalDetailNo": "12313213",
      "stockInOrdersGoodsBatchInfoList": [
        {
          "batchNo": "WYM_00000002",
          "batchQuantity": 1,
          "productionDate": 1596165536757,
          "validDays": 50
        }
      ],
      "taxRate": 0.05,
      "totalAmount": 11
    },
    {
      "goodsCode": "SUB_01",
      "goodsType": "0",
      "price": 40,
      "quantity": 5,
      "taxRate": 0.05,
      "totalAmount": 200
    }
  ],
  "warehouseName": "测试仓库"
}
```

### 返回示例

```json
{
  "errorCode": null,
  "msg": "操作成功",
  "data": "SIO1820419963117568",
  "date": null,
  "version": null,
  "success": true
}
```

---

## 4. 采购入库/退货单查询

**Method：** `foonsu.erp.stockInOrders.list`

**请求方式：** POST

**简要描述：** 采购入库/退货单查询

### 请求参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| pageIndex | 否 | Integer | 当前页码 |
| pageSize | 否 | Integer | 默认 20，最大不超过 50 |
| poList | 否 | List[String] | 采购订单编号集合，最多20 |
| orderFlag | 否 | Integer | 单据类型：1-采购入库；-1-采购退货 |
| timeStatus | 否 | String | 时间范围类型：0-创建时间；1-修改时间 |
| modifyDateStart | 是 | Date | 起始时间 |
| modifyDateEnd | 是 | Date | 结束时间（间隔不超过7天） |

### data(List)返回参数

| 参数名 | 类型 | 说明 |
|--------|------|------|
| orderNo | String | 入库单号 |
| orderFlag | Integer | 单据类型：1-采购入库；-1-采购退货 |
| warehouseName | String | 仓库名称 |
| poOrderNo | String | 采购订单编号 |
| createDate | Date | 创建时间 |
| stockDate | Date | 入库日期 |
| orderType | String | 采购类型：1-标准采购；2-新品采购；3-补货采购 |
| providerName | String | 供应商 |
| logisticsCost | BigDecimal | 快递运费 |
| remark | String | 备注 |
| stockPackCount | BigDecimal | 入库数量 |
| taxAmount | BigDecimal | 总含税金额 |
| ext1 | String | 自定义字段1 |
| ext2 | String | 自定义字段2 |
| ext3 | String | 自定义字段3 |
| stockInOrdersGoodsList | List[Object] | 商品明细集合 |

### stockInOrdersGoodsList 商品明细返回参数

| 参数名 | 类型 | 说明 |
|--------|------|------|
| goodsName | String | 商品名称 |
| goodsCode | String | 商品编码 |
| packCount | BigDecimal | 数量 |
| price | BigDecimal | 单价 |
| amount | BigDecimal | 金额 |
| remark | String | 备注 |
| batchList | List[Object] | 批次信息 |

### 返回示例

```json
{
  "errorCode": null,
  "msg": "操作成功",
  "data": {
    "total": 1,
    "data": [{
      "orderNo": "SIO1820419963117568",
      "orderFlag": 1,
      "warehouseName": "测试仓库",
      "providerName": "上海供应商",
      "createDate": "2024-01-01 12:00:00",
      "stockDate": "2024-01-01 12:00:00",
      "orderType": "1",
      "stockPackCount": 16,
      "taxAmount": 371,
      "stockInOrdersGoodsList": [{
        "goodsCode": "PC_001",
        "goodsName": "PC_001",
        "packCount": 10,
        "price": 15,
        "amount": 150
      }]
    }]
  },
  "date": null,
  "version": null,
  "success": true
}
```

---

## 5. 采购退货单查询

**Method：** `foonsu.erp.stockOutOrders.list`

**请求方式：** POST

**简要描述：** 采购退货单查询

### 请求参数

| 参数名 | 必选 | 类型 | 说明 |
|--------|------|------|------|
| pageIndex | 否 | Integer | 当前页码 |
| pageSize | 否 | Integer | 默认 20，最大不超过 50 |
| stockOutOrdersNoList | 否 | List[String] | 采购退货单编号集合，最多20 |
| timeType | 否 | String | 时间范围类型：0-创建时间；1-修改时间 |
| beginDate | 是 | Date | 创建起始时间 |
| endDate | 是 | Date | 创建结束时间（间隔不超过7天） |
| isStorage | 否 | String | 是否包含仓储订单：0-不包含（默认）；1-全部 |

### data(List)返回参数

| 参数名 | 类型 | 说明 |
|--------|------|------|
| orderNo | String | 采购退货单号 |
| poOrderNo | String | 关联采购入库单号 |
| warehouseName | String | 仓库名称 |
| providerName | String | 供应商名称 |
| stockPackCount | BigDecimal | 退货数量 |
| taxAmount | BigDecimal | 总含税金额 |
| createDate | Date | 创建时间 |
| modifyDate | Date | 修改时间 |
| stockDate | Date | 出库时间 |
| stockOutOrdersGoodsList | List[Object] | 商品明细集合 |

### 返回示例

```json
{
  "errorCode": null,
  "msg": "操作成功",
  "data": {
    "total": 1,
    "data": [{
      "orderNo": "SOO1820419963117569",
      "warehouseName": "测试仓库",
      "providerName": "上海供应商",
      "stockPackCount": 5,
      "taxAmount": 200,
      "createDate": "2024-01-01 12:00:00",
      "stockDate": "2024-01-02 12:00:00",
      "stockOutOrdersGoodsList": [{
        "goodsCode": "SUB_01",
        "goodsName": "SUB_01",
        "skCount": 5,
        "price": 40,
        "amount": 200
      }]
    }]
  },
  "date": null,
  "version": null,
  "success": true
}
```
