[TITLE]
Sendcloud 与 Odoo 集成指南:设置、配置与使用教程

[DESCRIPTION]
本文详细介绍如何在 Odoo 中集成 Sendcloud 包裹服务,包括账号创建、仓库地址配置、获取 API 凭证、安装与配置 Odoo 模块、设置取货点、加载运输产品、生成标签及常见问题,帮助企业实现欧洲物流自动化。

[KEYWORDS]
Sendcloud, Odoo, 物流集成, 船运标签, 仓库配置, 运输规则, 取货点, 费用计算, 合同价格, 体积重量

[TRANSLATED_CONTENT]

# Sendcloud 集成

Sendcloud 是一个航运服务聚合平台,可帮助 Odoo 与欧洲各大物流承运商对接。完成集成后,用户可以在 Odoo 库存操作中选择相应的航运承运商。

## 在 Sendcloud 中的设置

### 创建账号并激活承运商

要开始使用,请 [创建或登录 Sendcloud 账号](https://account.sendcloud.com/signup/?utm_source=odoo&utm_medium=partnerships&utm_campaign=partner_integrations_page)。

在 Sendcloud 平台,按照 [Sendcloud 集成文档](https://support.sendcloud.com/hc/en-us/articles/360059470491-Odoo-Native-integration) 配置账号并生成连接器凭证。

::: note
**注意**  
新建账号时,Sendcloud 会要求提供 `VAT(增值税号)``EORI(经济运营者登记号)`。完成账号设置后,激活(或停用)将在 Odoo 数据库中使用的航运承运商。
:::

::: important
**重要**  
在免费版 Sendcloud 计划中,仅当绑定银行账户后才可使用 Odoo 集成,因为 Sendcloud 不提供免费发货服务。若要使用运输规则或自定义承运商联系人,必须使用付费计划。
:::

### 仓库配置 {#inventory/shipping_receiving/sendcloud-warehouse-config}

登录 Sendcloud 账号后,进入 `Settings --> Shipping --> Addresses`,填写 `Warehouse address`(仓库地址)字段。

![在 Sendcloud 设置中添加地址。](sendcloud_shipping/settings-shipping.png){.align-center}

若希望 Sendcloud 也能处理退货,需要提供 `Return Address`(退货地址)。在 `Miscellaneous`(杂项)部分,有 `Address Name (optional)`(地址名称,可选)字段,需填写 Odoo 仓库名称,且字符必须完全一致。

::: example
**Sendcloud 配置**  
- `Miscellaneous`  
- `Address Name (optional)`: `[Warehouse #1]`  
- `Brand`: `[Default]`

**Odoo 仓库配置**  
- `Warehouse`: `[Warehouse #1]`  
- `Short Name`: `[WH]`  
- `Company`: `[My company (San Francisco)]`  
- `Address`: `[My Company (San Francisco)]`

> 注意:Odoo 与 Sendcloud 中的 `Warehouse` 字段输入必须完全相同。  
:::

### 生成 Sendcloud 凭证

在 Sendcloud 账户中,进入 `Settings --> Integrations`,右侧菜单搜索 `Odoo Native`,点击 `Connect`
点击 `Connect` 后页面会跳转到 `Sendcloud API` 设置页,生成 `Public and Secret Keys`(公钥与私钥)。下一步为该集成命名,命名规则为 `[Odoo CompanyName]`,将用户公司名称替换 `[CompanyName]`(如 `[Odoo StealthyWood]`)。

勾选 `Service Points`(服务点)并选择本次集成所需的航运服务,保存后即可生成公钥和私钥。

![配置 Sendcloud 集成并获取凭证。](sendcloud_shipping/public-secret-keys.png){.align-center}

## 在 Odoo 中的设置

为确保 Sendcloud 与 Odoo 的无缝对接,`install <inventory/shipping_receiving/sendcloud-module>` 并 `link <inventory/shipping_receiving/link-sendcloud-module>` Sendcloud 航运连接器到对应的 Sendcloud 账户。随后 `configure Odoo fields <inventory/shipping_receiving/sendcloud-shipping-info>`,使 Sendcloud 能准确拉取航运数据并生成标签。

::: seealso
`在网站上启用取货点 <inventory/shipping_receiving/sendcloud-pickups>`  
:::

### 安装 Sendcloud 航运模块 {#inventory/shipping_receiving/sendcloud-module}

在完成 Sendcloud 账户的设置后,进入 Odoo 的 `Apps` 模块,搜索 **Sendcloud Shipping** 集成并安装。

![Odoo Apps 中的 Sendcloud Shipping 模块。](sendcloud_shipping/sendcloud-mod.png){.align-center}

### Sendcloud 航运连接器配置 {#inventory/shipping_receiving/link-sendcloud-module}

安装完成后,在 `Inventory --> Configuration --> Settings` 中激活 `Sendcloud Shipping` 模块。`Sendcloud Connector` 设置位于 `Shipping Connectors`(航运连接器)区域。

激活后,点击列出的 `Sendcloud Shipping Methods` 链接,进入 `Shipping Methods` 页面后点击 `New`(新建)。

::: tip
**提示**  
`Shipping Methods` 也可以通过 `Inventory --> Configuration --> Delivery --> Shipping Methods` 进入。  
:::

**新建航运方式** 表单中填写以下字段:

- `Shipping Method`(航运方式):填写 `[Sendcloud DPD]`- `Provider`(提供商):从下拉列表选择 `Sendcloud`- `Delivery Product`(交付产品):选择已为该航运方式配置的产品,或新建产品。  
-`SendCloud Configuration`(Sendcloud 配置)标签页,填写 `Sendcloud Public Key`(公钥)和 `Sendcloud Secret Key`(私钥)。

#### 取货点 {#inventory/shipping_receiving/sendcloud-pickups}

Sendcloud 的 [服务点配送](https://support.sendcloud.com/hc/en-us/articles/360026097951-FAQ-Service-Points) 允许客户在结账时选择附近的门店或柜子作为收货地点,而不是填写私人收货地址。

要启用此功能,打开航运方式表单,在 `SendCloud Configuration` 标签页的 `Options`(选项)区勾选 `Use Sendcloud Locations`(使用 Sendcloud 位置)功能。

::: important
**重要**  
取货点仅在 **Website**(网站)应用的线上结账页面可用,**Sales**(销售)应用的内部视图目前不支持手动选择取货点。  
例如,若客户选择 `Sendcloud Mondial Relay` 方式,则必须在网站结账时选择取货点,否则该交付订单无法在 Odoo 中验证。  
:::

#### 加载航运产品

表单保存后,按以下步骤加载航运产品:

1.`New Shipping Method` 表单的 `SendCloud Configuration` 标签页,点击 `Load your SendCloud shipping products` 链接。  
2. 选择公司希望用于发货和退货的航运产品。  
3. 点击 `Select`(选择)。

::: example
**在 Odoo 中配置的示例 Sendcloud 航运产品**

| 类型 | 字段 | 示例 |
|------|------|------|
| **DELIVERY** | `Shipping Product` | `[DPD Home 0-31.5kg]` |
| | `Carrier` | `[DPD]` |
| | `Minimum Weight` | `[0.00]` |
| | `Maximum Weight` | `[31.50]` |
| | `Countries` | `[Austria] [Belgium] … [Switzerland]` |
| **RETURN** | `Return Shipping Product` | `[DPD Return 0-20kg]` |
| | `Return Carrier` | `[DPD]` |
| | `Return Minimum Weight` | `[0.00]` |
| | `Return Maximum Weight` | `[20.00]` |
| | `Return Countries` | `[Belgium] [Netherlands]` |

![Odoo 中配置的航运产品示例。](sendcloud_shipping/sendcloud-example.png){.align-center}
:::

::: tip
**提示**  
Sendcloud 不提供测试密钥,若在 Odoo 中创建包裹会直接计费,除非在 24 小时内手动取消。Odoo 在测试环境下会自动在创建标签后立即取消,以防止产生费用。测试与生产环境的切换可通过各自的智能按钮完成。  
:::

### 航运信息 {#inventory/shipping_receiving/sendcloud-shipping-info}

使用 Sendcloud 生成航运标签时,必须在 Odoo 中准确完整地填写以下信息:

1. **客户信息**:在创建报价单时,确保所选 `Customer`(客户)拥有有效的手机号码、电子邮件以及收货地址。可在客户页面的 `Contact`(联系人)字段填写收货地址,并填写 `Mobile`(手机)和 `Email`(邮箱)。  
2. **产品重量**:确保订单中所有产品的 `Weight`(重量)已在其 `Inventory`(库存)标签页中填写。参考本文的 `配置重量` 章节获取详细操作。  
3. **仓库地址**:确保 Odoo 中的仓库名称和地址与前文在 Sendcloud 中定义的仓库信息完全一致。有关 Odoo 仓库配置的详细说明,请参阅第三方航运文档中的 `仓库配置` 部分。

## 使用 Sendcloud 生成标签

在 Odoo 中创建报价单时,添加航运并选择 `Sendcloud shipping product`,随后 `Validate`(验证)交付。系统会在 chatter(聊天记录)中自动生成标签文件,内容包括:

1. **Shipping label(s)**(航运标签),数量取决于包裹数。  
2. **Return label(s)**(退货标签),若 Sendcloud 连接器已配置退货功能。  
3. **Customs document(s)**(海关单证),如目的国需要。  

同时,追踪号码也会同步显示。

::: important
**重要**  
生成退货标签时,Sendcloud 会自动向配置的 Sendcloud 账户收取费用。  
:::

### 航运规则

可选地创建航运规则,以自动生成符合不同产品需求的标签。例如,可为运送贵重珠宝的客户创建需要保险的航运规则。

::: note
**注意**  
航运规则不影响 **运费计算**,仅用于优化 **生成标签** 的流程。  
:::

使用航运规则的步骤:

1. 进入 `Inventory app --> Configuration --> Delivery: Shipping Methods`,选择相应的 [Sendcloud] 航运方式。  
2.`Sendcloud Configuration` 标签页的 `OPTIONS`(选项)区,选择 `Use Sendcloud shipping rules`(使用 Sendcloud 航运规则)字段,并指定规则适用范围:`Shipping`(发货)、`Returns`(退货)或 `Both`(两者)。  

![使用航运规则字段。](sendcloud_shipping/enable-shipping-rules.png){.align-center}

3. 登录 Sendcloud 网站,进入 `Settings --> Shipping rules`,点击 `Create New` 新建规则。  
4.`Actions`(动作)区设置 `Condition`(条件)以及满足条件时的处理方式。

::: seealso
[在 Sendcloud 上创建航运规则](https://support.sendcloud.com/hc/en-us/articles/10274470454292-How-to-create-shipping-rules#examples-smart-shipping-rules)  
:::

## 常见问题

### 货物过重

若货物重量超过所选 Sendcloud 服务的限制,系统会将重量拆分为多个包裹进行模拟。需要在不同的 `Packages`(包裹)中放置产品后再 `Validate`(验证)以生成标签。也可以在 Sendcloud 中设置规则,自动切换至其他承运商,但此类规则不会影响销售订单的运费计算。

### 个人承运商合同

通过 CSV 上传自定义价格:登录 Sendcloud,进入 `Settings --> Carriers --> My contracts`,选择目标合同。  

`Contract prices`(合同价格)区点击 `Download CSV`,在 CSV 模板的 `price`(价格)列填入对应价格。

::: warning
**警告**  
请确保 CSV 文件中的价格准确无误,防止计费错误。  
:::

上传完成后点击 `Save these prices` 保存。

::: seealso
[Sendcloud:如何通过承运商上传合同价格](https://support.sendcloud.com/hc/en-us/articles/5163547066004)  
:::

### 体积重量计算

许多承运商同时考虑实际重量和体积重量(即包裹在运输过程中的体积所对应的重量)。  

::: tip
**提示**  
检查所选承运商是否已在系统中预设体积重量计算公式。  
:::

::: seealso
[Sendcloud:如何计算并自动化包裹体积重量](https://support.sendcloud.com/hc/en-us/articles/360059644051-How-to-calculate-automate-parcel-volumetric-weight)  
:::

### 无法计算运费

首先确认待发货产品的重量在所选航运方式的支持范围内;随后检查收货地址所在国家是否被承运商覆盖;同样,发货仓库所在国家也需在承运商服务范围内。  

---  

[SUMMARY]  
- Sendcloud 集成  
  - 在 Sendcloud 中的设置  
    - 创建账号并激活承运商  
    - 仓库配置  
    - 生成 API 凭证  
  - 在 Odoo 中的设置  
    - 安装 Sendcloud 航运模块  
    - 配置连接器  
    - 设置取货点  
    - 加载航运产品  
    - 填写航运信息  
  - 使用 Sendcloud 生成标签  
  - 航运规则  
  - 常见问题  
    - 货物过重  
    - 个人承运商合同  
    - 体积重量计算  
    - 无法计算运费