一张发票的大部分内容,都能从你已经记下的工作里自己写出来——哪个客户、哪些任务、多少小时。唯一没法从秒表里来的数字,是你的一小时值多少钱。把这个数字填进去一次,此后每一条由记录的工作生成的发票明细行都会带着价格送达。
Ceum 在三个位置保存小时费率:品牌上的默认值、客户上的覆盖值,以及项目上的覆盖值。每一处都是选填,同样这三级也保存着一个开票货币。当某条明细行需要费率时,Ceum 从最具体的一级开始读,遇到第一个已设置的就停下。
这篇演练按合理的顺序把三级都设好——先设默认值,好让覆盖值保持罕见——再跟着一个费率一路走到发票明细行,看清这个数字究竟从哪里来。
目标
一个覆盖你大部分工作的费率、一份经过斟酌的短短的例外清单,以及再也不用手工定价的发票明细行。
1. 在品牌上设置默认值
打开品牌与开票,填写默认小时费率。这是你今后创建的每个客户与每个项目的起始费率——是其余一切最终回落到的那一级。
在同一个地方设置开票货币:开具发票所用的货币。保留自动它就跟随你的账户货币,并随该货币变化而变化。而常规设置里的那项账户设置,只决定金额在应用中如何显示给你——如果你用一种货币思考、却用另一种货币收款,这个字段回答的正是第二个问题。
两个字段起初都没有值。一个没人挑过的费率会悄悄变成你记录的每一小时的价格,因此新品牌在你亲手填入之前没有默认值。
2. 为某一个客户覆盖费率
按不同约定合作的客户有自己的数字。从客户打开该客户,在表单的内部信息部分找到小时费率与开票货币,在那里设置它们。
费率字段留空不是空缺——它的意思是“继承”。字段在输入框下方就写着:留空时继承 85,来自品牌设置。 货币选择器的第一个选项写着 自动(EUR,来自品牌设置)。两者都点明值来自哪一级,因此留空的字段绝不是靠猜的。
客户的详情侧边栏则以另一种方式显示这一对值:它显示当前生效的值,无论是该客户自己设的还是继承来的,并附一行说明来自哪一级。按继承费率计费的客户,不该看起来像一个没有费率的客户。
写入按客户的覆盖值属于 Plus 和 Pro 方案。读取则不是——见第 6 步。
3. 为某一个项目覆盖费率
项目上有同样的一对字段,位于项目下的项目表单里,并且比客户低一级。项目的覆盖值胜过客户的,客户的胜过品牌默认值。
它适用于在一段本来寻常的合作关系里、定价却不一样的工作——打折的预付酬金、加价的加班开发、你想定为零的固定费用阶段。
有一条规则值得知道:一个项目可以关联多个客户,因此“这个项目之上的客户”只有在恰好关联一个时才有明确所指。关联一个客户时,项目表单会显示该客户的费率作为它所继承的值;没有客户或关联多个时,它会跳过客户这一级,改为点名品牌默认值。这只是显示规则——开票不受影响,因为一张发票只指名一个客户。
4. 弄清留空、零和什么都没有各自的含义
三种状态在屏幕上看着相近,行为却完全不同。
- 留空表示继承。这一级被跳过,链条继续向上。
0是一个真实的、已设置的费率,含义是不按小时计费。它会像85一样终止链条。设为0的客户按零计费,而不是按你的品牌默认值——这是有意为之,因为落到一个你几个月前设的费率上,就会对你告诉过客户是免费的工作收费。- 任何层级都没有费率解析出来的是“什么都没有”,而不是零。品牌之下并不存在账户级别的小时费率,因此链条真的可能走空。由记录的工作生成的明细行随后会以空白价格送达,由你自己填,而不是定价为零。
货币不会以同样的方式走空:品牌之下还有你的账户货币,它总是已设置的,因此货币总能解析出一个真实的代码。
保存时不会向下复制任何东西。没有自己费率的客户每次都会去读品牌默认值,因此更改那个默认值,所有继承它的客户与项目都会随之改变。
5. 看一个费率如何抵达发票明细行
选中一些任务或时间记录并使用发票操作——完整流程见直接从任务和已记录时间开具发票。每一条明细行都按你刚设好的链条定价:
- 货币为整张发票解析一次,绝不逐行解析。一张发票以一种货币开具,因此各行不可能各执一词。只有当所有计费的明细行同属一个项目时,项目这一级才参与这次解析。
- 每一行的费率各自解析,因此横跨两个项目的发票可以带两个费率。为某一行提供费率的项目,是真正抵达被开票客户的那一个。
- 小时数成为数量,四舍五入到两位小数;没有记录时间的任务从一个单位起算。
手工添加明细行的方式相同。把任务关联到某一行会把它切换为按小时计,从任务记录的时间填入数量,并从解析出的费率填入单价——但只在该行还没有价格时才填,因为你亲手填的数字属于你。
两个数字都在明细行被关联的那一刻捕获一次,此后不再变动。已经发出去的发票,不该因为有人又在那个任务上记了一小时就发生变化。当任务往前走了,该行会长出一个琥珀色的从任务刷新控件,它的提示文字会说该任务在明细行被捕获之后有过变化。按下它会把任务当前的小时数带过来,而把捕获的单价原样留在那里,因此在费率变更之后刷新,更新的是时间,不是价格。若你想要的正是改价,请自己重新填写单价。
6. 如果你的方案不涵盖覆盖值
这里的方案限制比看起来要窄。品牌默认值、整条解析链,以及据此为发票明细行定价的方式,在所有方案中都可用。Plus 和 Pro 增加的是在客户或项目上写入覆盖值。
正是这个区分让降级是可恢复的,而不是一个陷阱:
- 此前保存的覆盖值继续生效。以 95 保存的客户仍按 95 计费。
- 两个字段都留在屏幕上并显示已保存的值,因此你随时都能看到某个客户按什么计费。它们会变为不可操作,并带一个提示文字点名涵盖它们的方案。
- 清除始终允许。 确实持有覆盖值的锁定字段旁会出现一个重置控件,把该字段交还给上一级,并像其他任何编辑一样在你保存表单时生效。两者各自独立清除,因此你可以放掉货币覆盖值而保留费率。
- 无关的编辑照样能保存。 重命名一个你无法更改其费率的客户不会被拒绝。
只有当一次保存会把已存储的覆盖值改成另一个值时,它才会被拒绝。
你最终得到什么
顶层一个覆盖寻常情况的费率、若干设在恰当位置的例外,以及一种按同样方式解析的货币。从此定价的问题在你打开发票表单之前就已经有了答案——选中工作,明细行就带着小时数和正确的费率出来。逐字段的参考请见小时费率与开票货币。