如何将 SmartBill 连接到 easySales:完整设置指南
把 SmartBill 连接到 easySales:CIF、令牌和用户名在哪里找,表单上每一项设置的作用,导致大部分开票失败的那个库存决定,以及每条 SmartBill 报错的含义。
连接 SmartBill 之后你能得到什么
SmartBill 是一家罗马尼亚的开票服务商,也是 easySales 卖家用得最多的一家。连接之后,它可以直接为订单开出发票,你不用重新输入任何内容——可以从订单列表开、在订单里开、批量开,也可以由流程自动开。它还能反过来做一件事:把你在 SmartBill 里的库存读出来,写回 easySales。
这是两条各自独立的连接,各自保存一份相同的凭据。本指南两条都讲,并且每处都会写清楚说的是哪一条。
开始之前
你的 CIF
SmartBill 在 Configurare → Datele firmei → Generale 里显示的税号。
一个 API 令牌
来自 SmartBill 的 Contul Meu → Integrări。你每改一次 SmartBill 密码,它都会重新生成。
账户邮箱
你注册 SmartBill 账户时用的地址。它就是凭据里“用户名”的那一半。
一个关于库存的决定
开票时要不要让 SmartBill 把货从库存里扣掉。这是必填项,也是最常导致开票失败的一项设置。第 4 步会把两种答案都讲清楚。
第 1 步 — 从 SmartBill 里取三个值
easySales 需要的东西,你的 SmartBill 账户里都已经有了。SmartBill 的界面是罗马尼亚文,所以下面这些菜单路径在你的屏幕上就是这个样子,无论你用哪种语言使用 easySales。
- CIF — 在 SmartBill 里打开 Configurare → Datele firmei → Generale(设置 → 公司资料 → 常规),复制 CIF 这一栏。
- Token — 打开 Contul Meu → Integrări(我的账户 → 整合),API 信息在页面底部。
- 用户名 — 你注册 SmartBill 账户时用的电子邮箱地址。
第 2 步 — 在 easySales 里打开 SmartBill 卡片
进入 开票与系统 → 计费软件(旧版布局是 整合方式 → 计费软件),找到 SmartBill。它是页面上的第一张卡片。
点击 连接。
第 3 步 — 填写连接
| 字段 | 该填什么 |
|---|---|
| 连接名称 | 任何能让你认出这个账户的名字。必填。永远不会离开 easySales。 |
| 公司注册号码 | 你的 CIF,来自 SmartBill 的 Configurare → Datele firmei → Generale。别管这个标签怎么写,这里不填工商登记号。 |
| 代币 | 来自 SmartBill 的 Contul Meu → Integrări。你每改一次 SmartBill 密码它就会变。 |
| 用户名(电子邮件) | 你注册 SmartBill 账户时用的电子邮箱地址。 |
第 4 步 — 决定要不要让 SmartBill 扣减库存
用作产品的库存来源 是这个表单上后果最大的一项设置,也是最值得你在保存前想清楚的一项。别被名字带偏了:它跟 库存源 那个页面没有关系,它只决定开票时 SmartBill 要不要从自己的仓库里把货扣掉。
设成 是的,SmartBill 每开一张发票就把货从库存里扣掉。多数卖家要的就是这个效果——但这也意味着,只要有产品扣不动,SmartBill 就会拒开这张发票。
设成 不,发票照开,完全不碰库存,上面这些问题也就都不会发生。
如果你确实用 是的,就在 仓库名称(可选,区分大小写) 里填上 SmartBill 那边仓库的名字,一字不差地照抄。大小写是区分的,而且这个值只会写到产品行上——运费行和折扣行永远不带仓库。
第 5 步 — 表单的其余部分
| 设置 | 作用 | 默认值 |
|---|---|---|
| 用作产品的库存来源 | 开票时 SmartBill 要不要扣减库存。必填——不回答这一项,表单就保存不了。 | 未设置 |
| 仓库名称(可选,区分大小写) | 各行记到 SmartBill 的哪个仓库上。区分大小写。只有在扣减库存打开时才会用到。 | 空 |
| 使用付款税 | 按收款时点计税(TVA la încasare)开票。只有你公司确实这么做时才打开。 | 不 |
| 在术语表中保存产品 | 如果开票的产品在 SmartBill 里还不存在,就把它们建出来。 | 是的 |
| 在术语表中保存产品名称 | 设成不,SmartBill 对它已经认识的产品沿用自己那边的名称。 | 是的 |
| 发送产品时排除税 | 发送不含税价,让 SmartBill 自己加税。 | 不 |
| 通过收据收取发票 | 把订单标记为已付款时,付款一律记成收据(Chitanță),不管订单实际的付款方式是什么。 | 不 |
| 在 easySales 中本地下载发票 | easySales 只取一次 PDF,之后从自己的存储里提供,不必每次都去问 SmartBill。 | 是的 |
| 模板 | 自由文本,会作为提示和备注打印在发票上。文本框上方的按钮用来插入订单和产品的值。 | 空 |
第 6 步 — 高级选项
显示高级选项 这一块默认是收起的,里面没有一项是必填。它一共有二十四项设置;下面这些是真正能解决问题的。
| 选项 | 什么时候用得上 |
|---|---|
| 发票模型 | 让这条连接开形式发票,而不是发票。 |
| 如果公司增值税号缺失,则阻止发票生成 | 订单上没有公司 CUI 时直接拦下这张发票,而不是把它开错。 |
| 发票语言 | SmartBill 用哪种语言写这份单据。不动它就是罗马尼亚文。 |
| 到期日 / 优先使用客户级付款期限 | 以天为单位的付款期限,以及客户层级设置的期限是否优先于这里。 |
| 基于发票创建反向发票 | 让红冲单成为真正基于原始发票生成的反向单据,而不是另起一张新的。 |
| 运输服务名称 和 运输服务代码 |
给发票上的运费行命名。两个都要填——只填一个不起作用,那一行仍然显示 Transport。
|
| 0% 增值税率名称 | 你的零税率在 SmartBill 税率表里的名称。只作用于税率为 0 的行。 |
| 自动检测区域 | 订单本身没带区号时,从地址里推断出布加勒斯特的行政区。 |
| 数据转写 | 把你勾选的那些国家的客户姓名和地址改写成拉丁字符。对保加利亚和希腊的地址很有用。 |
开发票
| 位置 | 作用 |
|---|---|
| 订单列表上的 快速创建 | 为这个订单开一张发票。被 SmartBill 拒绝时会变红并带上错误信息。 |
| 订单页面上的 创建发票 | 同样的事,只是在订单内部完成。 |
| 作为批量操作的 生成发票 | 最多 50 个选中的订单,每单一张发票。 |
| 过程组 | 组内订单在处理时逐一开票。 |
| 自动化流程 | 用 创建发票 这个动作,开票就不需要任何人点按钮了。 |
SmartBill 拒开发票的时候
SmartBill 的拒绝理由会原封不动地以罗马尼亚文透传出来,无论你用哪种语言使用 easySales。只要读得懂,这些提示其实很精确。下面是卖家真正会碰到的那几条。
| SmartBill 的原文 | 该怎么办 |
|---|---|
Cantitate stoc insuficienta la … pentru produsul …
|
扣减库存开着,而指定仓库里这个产品的存量不够。先在 SmartBill 里入库,或者把“用作产品的库存来源”设成不。 |
Nu ai facut nicio achizitie pentru produsul … Incarca mai intai stoc pentru produs sau emite documentul fara descarcare de gestiune.
|
同一个原因:这个产品从来没在 SmartBill 里入过库,所以没有东西可扣。 |
Cota tva a produsului … nu a fost gasita pe server!
|
这个产品的税率在你的 SmartBill 税率表里不存在。要么在那边补上,要么改正订单上的税率。 |
Seria nu a fost gasita! Folositi o serie creata in contul de cloud.
|
easySales 发过去的系列在 SmartBill 里没有。用同样的名称在那边建一个,或者改掉订单来源的市场或网站上设置的系列。 |
Unitatea de masura … nu are factor de conversie setat.
|
这个计量单位在 SmartBill 里没有换算系数。到那边的产品上设置一下。 |
Nu puteti adauga produse cu cote tva diferite daca unul din ele are cota TVA inclusa!
|
有一行是含税价,其他行不是。把整张单据统一成一种。 |
invoiceProducts trebuie specificat si trebuie sa contina cel putin un element
|
所有行都被过滤掉了——最常见的情况是订单上只有折扣,而折扣又被排除了。 |
Firma cu ciful … a expirat la data de …
|
SmartBill 里的公司注册已经过期。到 SmartBill 里续期。 |
Nu poti genera documente prin API. Te rog sa reincarci soldul de credite.
|
在你到 SmartBill 账户里把这件事处理掉之前,SmartBill 不会再通过 API 开出任何单据。这在 easySales 里无法解决。 |
Autentificare esuata. Va rugam verificati datele si incercati din nou.
|
邮箱或令牌不对,通常是改过密码之后。把当前的令牌重新粘贴一次。 |
Firma la care incercati sa va conectati nu mai este disponibila in Cloud.
|
这家公司已经从 SmartBill Cloud 里移除了。 |
取消、删除和红冲
easySales 在订单上提供 取消发票、删除发票 和 创建Storno发票 三个动作。至于哪一个能用,由 SmartBill 说了算。
三者的区别是:取消发票 和 删除发票 都是去动 SmartBill 上那张原始单据,而 创建Storno发票 是另外开一张方向相反的单据,原来那张仍然保留。
红冲单是一张方向相反的单据,任何时候都开得出来——所以只要取消和删除都被拒绝,答案就是它。
可选 — 把 SmartBill 当作库存来源
SmartBill 也能告诉 easySales 你手上有多少库存。这是 第二条、完全独立的连接,位置在 库存源 页面——注意不要和另一个叫 仓库 的页面搞混——它有自己的一份 CIF、令牌和邮箱。这里放 CIF 的那一栏叫 增值税号,放的其实还是同一个值;而这一页的令牌栏叫 令牌,开票那一页叫 代币,两者说的也是同一个 API 令牌。
产品是按产品 库存 标签页上的 库存代号 来匹配的,如果它是空的就退回用 SKU——SmartBill 匹配发票行用的也是同一个值。库存同步模式 决定 easySales 是只读你指定的那一个仓库,还是把所有 SmartBill 仓库加总起来。
同步每 30 分钟跑一次,而且严格单向:SmartBill 覆盖 easySales,绝不反过来。你在 easySales 里改过的库存,下一次同步就会被替换掉。