如何将 FGO 连接到 easySales:完整设置指南
把 FGO 连接到 easySales:先在 FGO 里完成的三个步骤、每一项连接设置、发票是怎么开出来的、每条 FGO 错误信息的含义,以及把 FGO 用作库存来源。
接入 FGO 能给你带来什么
FGO 是一家罗马尼亚的开票服务。与 easySales 连接之后,它会为订单开出发票,你不用重新录入任何东西——可以从订单列表开、从订单页面开、批量开,也可以由流程自动开。同一个 FGO API 用户还可以再用一次,作为一条独立的连接,把 FGO 里的库存数量读回 easySales。
开始之前
一个开通了 API 的 FGO 账户
第 1 步里的 API 用户只能在包含 API 访问的 FGO 套餐上创建。开始之前请先在 FGO 里确认你的套餐。
在 FGO 中创建的 API 用户
这不是你平时登录用的账号。FGO 会为它生成一个密码,那个密码就是 easySales 里所说的私钥。
你的 CUI
FGO 在 Setări → Firmă 中显示的罗马尼亚税号。它要填进「公司注册号码」这个字段。
一个可以直接使用的发票系列
要有 API 权限、在有效期内,并且还有剩余号码。这一步是最常被漏掉的。
第 1 到第 3 步都在 FGO 里完成,而不是在 easySales 里。每一步都对应一种不同的故障,漏掉任何一步都会得到一条只有知道它指什么才看得懂的错误信息——所以最好在打开 easySales 之前就把这三步做完。
第 1 步 — 在 FGO 中创建 API 用户
在 FGO 管理后台打开 Setări → Utilizatori(设置 → 用户),添加一个 API 用户。FGO 会为它生成一个密码:请立刻把这个值复制下来,因为它就是 easySales 里所说的 私钥。
第 2 步 — 让 FGO 接受来自 easySales 的调用
在 FGO 中打开 Setări → eCommerce → Setări API(设置 → 电商 → API 设置),把 https://easy-sales.com 加入允许通过 API 连接的站点列表。
第 3 步 — 准备好发票系列
在 FGO 中打开 Setări → Serii Documente(设置 → 单据系列),检查你打算用来开票的那个系列。它需要有 User API 权限——API 用户本身和「所有用户」那一条都要有——并且起止日期区间要覆盖今天,号段里还得有剩余号码。
第 4 步 — 在 easySales 中连接 FGO
进入 配置 → 整合方式 → 计费软件,找到 FGO 卡片。
点击 连接,然后填写表单。
| 字段 | 作用 |
|---|---|
| 连接名称 | 必填。你自己的标签。如果你连接了不止一个 FGO 账户,它会成为标签页的名称。 |
| 公司注册号码 | 必填。填你的 CUI,写法与 FGO 在 Setări → Firmă 中显示的一致。尽管字段名叫注册号码,要填的是税号。 |
| 私钥 | 必填。第 1 步中 FGO 为 API 用户生成的那个密码。它在本表单上是明文显示的,不做掩码。 |
| 发票类型 | 要开哪一种 FGO 单据——普通发票选 Factura,共有十一个选项,其中包括 Proforma、Aviz、反向征收和差额征税。 |
| 产品关联方法 | easySales 用什么方式告诉 FGO 某一行对应哪个商品。SKU 发送产品的库存代号,没有时退回用 SKU。名称 不发送任何编码,由 FGO 按商品名称匹配。 |
| 用作产品的库存来源 | 必填,但对 FGO 来说不起任何作用。真正让 FGO 扣减库存的是下面的 Saga仓库编号。 |
| Saga仓库编号 | 每一行发票记账所对应的 FGO 仓库——正是它让 FGO 把货从库存里扣掉。请按它在 FGO 中的名称原样填写。如果你不在那里管库存,就留空。 |
| 模板 | 打印在发票备注里的自由文本。上方的按钮可以插入占位符——订单号、运单号、快递、支付方式,或者已订购产品的清单。 |
第 5 步 — 高级选项
显示高级选项 这一块默认是收起的,里面没有任何必填项,但其中两项设置能解决一些否则很难排查的问题。
| 设置 | 作用 |
|---|---|
| 费用识别码 | 把运费、折扣和手续费这些行映射到你在 FGO 中使用的商品编码上。每一条要填一个 slug、费用名称中包含的文字,以及 FGO 的商品编码。不设置的话,这些行到了 FGO 就是匹配不上的商品。 |
| 使用产品描述 | 决定发票描述列里放什么——不放、产品代码、产品名称、产品属性或产品 EAN。 |
| 选择产品名称 | 打印 easySales 保存的三个名称中的哪一个:仓库产品名称、产品名称还是报价名称。 |
| 将赠品作为单独的折扣显示 | 把赠品在发票上作为一行折扣列出,而不是作为价格为零的产品。 |
| 移除特殊字符 | 发送前把客户姓名和地址中的特殊字符去掉。当 FGO 拒绝某个变音符号或符号时很有用。 |
| 开票时生成保修 | 同时按你选定的模板生成一份保修单,并且可以把它与发票合并到同一个 PDF 中。 |
| 从发票中排除折扣 | 让折扣行完全不出现在单据上。 |
第 6 步 — 告诉 easySales 该用哪个系列
连接本身并不带系列。easySales 会按这个顺序为每一笔订单确定系列:先看订单来源的那条市场平台连接上设置的系列,然后是网站上设置的,最后是订单自身已经带着的。
开具发票
| 位置 | 操作 | 系列 |
|---|---|---|
| 订单列表 | 发票那一列的 快速创建 | 取自订单 |
| 订单自己的页面 | 创建发票 | 取自订单 |
| 订单列表,一次多笔 | 生成发票 — 最多 50 笔订单,每笔一张发票 | 逐笔订单确定 |
| 处理组 | 创建发票 | 逐笔订单确定 |
| 自动化流程 | 创建发票 动作 | 逐笔订单确定 |
发票开不出来的时候
FGO 的拒绝信息会被原样透传,以罗马尼亚语显示,无论你把 easySales 设成哪种语言。只要读得懂,它们其实非常精确。
| FGO 返回的内容 | 该怎么处理 |
|---|---|
Platforma https://easy-sales.com nu este inregistrata in FGO
|
第 2 步被跳过了。请在 FGO 的 Setări → eCommerce → Setări API 中加入这个地址。 |
Registrul pentru seria … nu este definit sau a expirat.
|
该系列没有 API 权限、有效期已过,或者号码已用完。请在 Setări → Serii Documente 中把三点都查一遍。 |
Campul 'Serie' este obligatoriu.
|
根本没有系列传到 FGO。请在市场平台连接或网站上设置一个。 |
Hash-ul transmis nu este corect.
|
私钥不对,或者已经在 FGO 里被更换过。请重新粘贴当前的私钥。 |
Utilizatorul nu exista sau nu are drepturi de acces.
|
API 用户被删除了,或者失去了权限。请在 Setări → Utilizatori 中重新创建。 |
Codul unic nu exista sau nu este asociat.
|
公司注册号码字段里的值与 FGO 账户上的 CUI 不一致。 |
Campul Client[CodUnic] este obligatoriu.
|
客户是企业,但订单上没有 CUI。请把它补进订单的开票信息里。 |
Judetul … nu exista in nomenclator
|
开票地址没有填县,或者填的是 FGO 不认识的县。请在订单上选择县。 |
CotaTVA … nu exista in nomenclator.
|
某一行的增值税税率在 FGO 中不存在。请在 FGO 中添加该税率,或在订单上改正。 |
Factura este deja stornata.
|
这张发票已经有一张红字发票了。 |
Factura a fost transmisa in SPV. Nu se poate anula.
|
发票已经报送 ANAF,无法再作废——请改为开具红字发票。 |
可选 — 把 FGO 用作库存来源
FGO 还可以把你的库存数量告诉 easySales。这是第二条独立的连接,位于 配置 → 整合方式 → 库存源,使用同一个 CUI 和同一个 API 用户密码,而且必须关联到某个网站,才会开始同步。