固定总价不是把范围焊死,而是把“基准范围”和“超出基准的单价”同时写进合同。范围变化时,先判断它属于基准内的细化还是基准外的追加,再按事先约定的计价单位算增减,而不是按对方报价的百分比整体上浮。下面用一个假设情境说明决策过程。
假设你签了一份固定总价合同,基准范围写的是“企业展示站,含首页、产品列表、详情页、联系页,适配手机端,交付源码与后台账号”。这个描述里,页面类型明确,但页面数量、语言版本、内容录入量都没有写死。范围变化时,第一件事不是问“加多少钱”,而是问“这属于基准里的哪一种页面”。
把基准范围拆成可计数的单位,是后续所有增减项的地基。常见的计数单位包括:独立页面模板数、页面实例数、语言版本数、表单字段数、第三方接口数、内容录入条数。基准里写“产品列表页”是一个模板,写“录入两百条产品”是另一回事,两者计价逻辑完全不同。
如果基准只写了“含产品页”,没写模板数和实例数,那么新增一个产品分类页时,双方会各自解释:你说属于产品页的自然延伸,对方说属于新增模板。这类争议的根源不在价格,而在基准范围没有拆到可计数。
范围变化可以分成三类,每类的增减计算逻辑不一样。
替换是最容易算错的一类。假设原基准的联系页报价是八百元,改成动态表单后新增开发量折合一千二百元,合理增减是四百元,而不是一千二百元。前提是合同里写明了原基准中该项的拆分价格,否则替换就只能靠协商。
这里有一个实际动作:在合同附件里为基准范围内的每个模块标注拆分价。这个动作的结果是,后续任何替换都有减法依据,避免“加了新功能,旧功能的钱却不退”的争议。
假设合同固定总价五万元,基准范围是中文站、五个页面模板、不含多语言、不含在线支付。合同附件写明:每新增一个页面模板三千元,每新增一个语言版本按模板总价的百分之四十计算,接入一个第三方支付接口两千元,内容录入每百条五百元。
项目进行到一半,需求变成:增加英文版,增加两个页面模板,接入一个支付接口。按约定计算:
这个例子说明,增减项的计算依赖两个前提:单价事先约定,且计价基数的口径事先约定。缺任何一个,计算都会变成谈判。
再看一个反向变化:客户决定砍掉英文版。如果英文版还没开工,减项就是原报价中的英文版部分;如果已经完成翻译和开发,减项可能为零,因为成本已经发生。所以增减项不只看“要不要”,还要看“在哪个阶段变”。
上面的算法在单个项目里成立,是因为模板数量少、语言版本少、接口少,每个增减项都能单独识别。当页面模板达到几十个、语言版本达到十几种时,情况会变。
假设一个站有四十个模板、八种语言。如果仍按“每个语言版本按模板总价百分之四十”计算,新增一种语言的费用会变得很高,因为基数被模板数量放大了。但实际上,新增语言版本的边际成本并不随模板数量线性增长,部分模板可能共用同一套翻译和排版逻辑。这时按百分比计算就会偏离实际工作量。
更合理的做法是分层计价:前几个模板或前几种语言按单价计算,超过一定数量后改用打包价或按实际工时估算。这个边界必须在合同里写清楚,否则规模化之后,双方都会觉得对方的算法不公平。
还有一个容易忽略的例外:第三方接口。单个支付接口两千元,看起来可以线性叠加。但接入五个支付接口时,可能涉及统一支付路由、对账逻辑、退款流程的共用开发,这些共用部分只在第一个接口时发生,后续接口的边际成本会下降。如果每个接口都按两千元叠加,总价会偏高。
无论算法多清楚,范围变化都必须落到书面变更单上。变更单至少包含四项:变化描述、属于基准内还是基准外、计价依据、对总价和工期的影响。没有这四项,口头确认的范围变化在结算时很容易被重新解释。
一个可执行的动作是:每次需求变化后,先由提出方写一句话描述变化,再由执行方标注计价依据和金额,双方确认后才动工。这个动作的结果是,项目结束时总价等于合同价加减所有已确认变更单之和,不需要回头翻聊天记录。
如果对方拒绝在动工前确认计价依据,只愿意“先做再说”,那么固定总价的风险就从范围变化转移到了结算争议。这种情况下,要么把变更单流程写进合同作为付款前提,要么接受总价可能上浮的结果。选择哪一种,取决于你对范围稳定性的判断,而不是取决于对方的口头承诺。