功能

如何将 FGO 连接到 easySales:完整设置指南

如何将 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 卡片。

easySales 的计费软件页面按 FGO 筛选,显示已连接的 FGO 卡片、罗马尼亚国旗以及编辑操作。
整合方式 → 计费软件 下的 FGO。

点击 连接,然后填写表单。

easySales 中的 FGO 连接表单,显示连接名称、公司注册号码、私钥、发票类型、产品关联方法、用作产品的库存来源、Saga仓库编号,以及带占位符按钮的发票备注模板。
整条连接的全貌。私钥就是 FGO 为你的 API 用户生成的那个密码。
字段 作用
连接名称 必填。你自己的标签。如果你连接了不止一个 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 中的名称原样填写。如果你不在那里管库存,就留空。
模板 打印在发票备注里的自由文本。上方的按钮可以插入占位符——订单号、运单号、快递、支付方式,或者已订购产品的清单。
FGO 连接表单

第 5 步 — 高级选项

显示高级选项 这一块默认是收起的,里面没有任何必填项,但其中两项设置能解决一些否则很难排查的问题。

FGO 连接展开后的高级选项,显示把运费映射到 TRANSP、把折扣映射到 DISC 的费用识别码,移除特殊字符、保修相关设置和从发票中排除折扣,下方是克隆、删除和保存按钮。
费用识别码是最值得设置的一项:它告诉 FGO 一行运费或折扣属于哪个商品。
设置 作用
费用识别码 把运费、折扣和手续费这些行映射到你在 FGO 中使用的商品编码上。每一条要填一个 slug、费用名称中包含的文字,以及 FGO 的商品编码。不设置的话,这些行到了 FGO 就是匹配不上的商品。
使用产品描述 决定发票描述列里放什么——不放、产品代码、产品名称、产品属性或产品 EAN。
选择产品名称 打印 easySales 保存的三个名称中的哪一个:仓库产品名称、产品名称还是报价名称。
将赠品作为单独的折扣显示 把赠品在发票上作为一行折扣列出,而不是作为价格为零的产品。
移除特殊字符 发送前把客户姓名和地址中的特殊字符去掉。当 FGO 拒绝某个变音符号或符号时很有用。
开票时生成保修 同时按你选定的模板生成一份保修单,并且可以把它与发票合并到同一个 PDF 中。
从发票中排除折扣 让折扣行完全不出现在单据上。
值得设置的高级选项

第 6 步 — 告诉 easySales 该用哪个系列

连接本身并不带系列。easySales 会按这个顺序为每一笔订单确定系列:先看订单来源的那条市场平台连接上设置的系列,然后是网站上设置的,最后是订单自身已经带着的。

开具发票

位置 操作 系列
订单列表 发票那一列的 快速创建 取自订单
订单自己的页面 创建发票 取自订单
订单列表,一次多笔 生成发票 — 最多 50 笔订单,每笔一张发票 逐笔订单确定
处理组 创建发票 逐笔订单确定
自动化流程 创建发票 动作 逐笔订单确定
可以在哪些地方开出 FGO 发票

发票开不出来的时候

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 用作库存来源

FGO 还可以把你的库存数量告诉 easySales。这是第二条独立的连接,位于 配置 → 整合方式 → 库存源,使用同一个 CUI 和同一个 API 用户密码,而且必须关联到某个网站,才会开始同步。

easySales 的库存源页面,FGO 被配置为库存来源,是与计费软件那条连接相互独立的另一条连接。
从 FGO 读取库存是第二条连接,它有自己的一份相同凭据。

常见问题

在全新的 FGO 连接上,第一次保存可能不会保留凭据下方的设置——发票类型、关联方法和高级选项。请重新打开连接,再设置一遍,然后第二次保存。即使你觉得已经保存成功,也值得检查一下:大约每五条 FGO 连接就有一条跑在没人选过的默认值上。

FGO 对每个账户每秒只接受一张发票,所以一批请求会被拉开节奏发送,挤不进去的会进入队列并重试大约 45 分钟。超时之后就被放弃,原因记录在订单上——而且没有任何提醒。每次批量开票之后,请用「发票错误」筛选订单列表;它们都在那里。

不能。批量开票、处理组和自动化流程都是一笔订单开一张 FGO 发票。要开一张涵盖多笔订单的合并发票,只能直接在 FGO 里开。

easySales 先看订单来源的那条市场平台连接,然后看网站,最后看订单本身,用找到的第一个系列。如果哪里都没设置,它会发送 INV,而你的 FGO 账户里几乎肯定没有这个系列。开票的那一刻是选不了系列的,所以请在市场平台连接和网站上把它设好。

它指定每一行发票记账所对应的 FGO 仓库,正是它让 FGO 在开票时把货从库存里扣掉。如果你在 FGO 里管库存就要填,写法与仓库在那边的名称完全一致;不管的话就留空。请注意,同一个表单上的「用作产品的库存来源」下拉框并不控制这件事,尽管名字看起来像。

两条 FGO 连接都会坏,如果你有两条的话。请在计费软件那条连接上更新私钥,如果你还把 FGO 用作库存来源,库存源那条连接上也要更新。开票会立刻报错「Hash-ul transmis nu este corect」;库存连接则是无声失败,还可能继续显示上一次成功读取到的数字。

可以,在 整合方式 → 库存源 下建一条独立的连接,用同一个 CUI 和 API 密码,并关联到某个网站。它是只读的:库存从 FGO 流向 easySales,永远不会反向,而且会覆盖 easySales 里的数据。产品按名称或按库存代号匹配,代号在 FGO 里匹配不到任何东西的产品会被置为库存零。

本指南对你有帮助吗?