- 摩杰斯
- 2026-10-31
机加工厂工单成本怎么算:外协加工费为什么不能叠加进去
![]()
有家做精密件的厂,去年把外协对账的金额加进了工单成本,加了大半年。加完之后看着不对劲:明明这一年订单不少,账面毛利却一直很低,有几张单甚至是亏的。
老板以为是报价报低了,把报价往上提了一成。提完丢了两家老客户——对方只说了一句“你们比去年贵不少”。
后来发现问题不在报价,在成本。他们把外协费又算了一遍:外发那道工序的计划工时早就按费率计进了加工费,对账金额再加一次,同一道工序被算了两次。成本虚高,毛利就虚低,然后拿虚低的毛利去指导提价,价格一提就出问题。
这个错误的可怕之处不在于它难,恰恰在于它太顺手——“我付给外协厂的钱,当然是成本”。逻辑上没错,错在它已经算过一次了。
一、先把两笔钱分开:成本和应付
工单成本回答的问题是:这张单我赚不赚钱。
外协应付回答的问题是:这张单我要给外协厂多少钱。
这是两个不同的问题,服务两个不同的场景。前者用来看单张盈亏、指导报价;后者用来结账、付款、对账。它们可以互相参考,但不能相加。
混在一起最典型的症状就是上面那家厂:毛利低得不像话,但又说不出钱亏在哪。因为成本里有一笔本来不该在这儿。
反过来也有错在另一头的:有些厂为了“成本好看”,干脆把外协费完全不记,成本只算料和自己的人工。这样算出来的毛利虚高,报价时以为赚得多,实际结完外协账才发现薄得很。
两种错法方向相反,根子一样:没把“成本”和“应付”这两个口袋分开。
二、料这一笔,是算出来的不是填出来的
先把成本的两摊说清楚,才知道外协费为什么挤不进去。
材料费不是一个手填的数字,它有公式:长 × 宽 × 高 × 密度 × 单价 ÷ 1000000 × 损耗系数。
长宽高是零件毛坯的三维尺寸,单位毫米;密度按材质来,单位克每立方厘米;单价是材料单价,按公斤算;除以一百万是把立方毫米换算成立方米那一档的量纲;最后乘一个损耗系数,把下料时的锯缝、夹持余量、报废算进去。
举个具体数:一个 200×150×50 毫米的毛坯,材质密度 7.85,单价 6 元每公斤,损耗系数 1.05。体积 150 万立方毫米,乘密度乘单价除一百万,材料费 70.65 元,再乘损耗系数是 74.18 元。
这个公式的好处是可复现:同样的尺寸、同样的材质、同样的损耗系数,算出来一定是同一个数。坏处是它只对“按尺寸下料”的件成立——如果买的是标准型材按支算,或者毛坯是锻件按件报价,那材料费就得手工填。
所以材料费这一摊,系统做的是“能算的算、算不了的手填”,而不是全部都让人填。这一点很重要:凡是能算的让人手填,现场就会填一个“大概”,成本就永远不准。
还有一个常被忽略的变量:材料单价取哪个数。
同一个牌号的钢,去年是 5.2 元一公斤,今年可能是 6 元。材料单价用一个旧数,算出来的成本就偏低,报价也跟着偏低。这种偏差不会报错,只会悄悄吃掉利润。
合理的取法是“最近一次实际采购价”,并且定期更新。不建议用加权平均——加权平均会把几个月前的低价拉进来,反映不了当前的市场。也不建议用报价时的市场价,除非你真的在那个价位上买得到。
损耗系数同理。系数定下来之后,同一类件应当保持一致;如果某个件的系数被单独调高,要么是工艺确实不同,要么是有人在“调成本”——两种情况都该能解释清楚。
三、工这一笔,关键在“计划工时”和“费率”
加工费也不是手填的,它是把每道工序的计划工时乘以这道工序的费率,加起来。
一道工序的计划工时是排产时定的:这道车工要做 2.5 小时。费率是这道工序每小时多少钱:车工 45 元每小时。这一道就是 112.5 元。十道工序加起来,就是这张单的加工费。
这里有个必须说清的口径问题:工时是按件算还是按批算。
同样是“车工 2.5 小时”,如果按件算,一张一百件的工单就是 2.5 × 45 × 100 = 11250 元;如果按批算,就是 2.5 × 45 = 112.5 元。
两种算法都有人用。习惯按件报价的厂,计划工时填的是“单件工时”,成本要乘数量;习惯按整批派活的厂,计划工时填的是“这批一共多少小时”,成本就不再乘数量。
系统里这个口径是一个租户级开关,两个值:单件工时、整批总工时。默认是单件。
这个开关有个坑要提醒:一经设定,中途不要改。 因为改了之后,已经存在的工时记录不会按新口径重算——前面按单件记的还在,后面按整批记的也进来了,两边混在一起,成本统计就永久性地错了。要改,得先把历史数据想清楚怎么办。
四、费率这个数,比工时更容易糊弄
工时好歹是排产时排出来的,费率往往是拍脑袋定的。
见过的典型情况:一个厂十几道工序,费率表上只有三个数——车工 40、铣工 40、磨工 50。问这三个数怎么来的,答“几年前参考同行定的”。之后再没人动过。
这就埋了两个问题。
一是费率没有反映设备差别。一台普通车床和一台加工中心,一小时该摊的成本能差三倍。都按 40 算,加工中心的活会显得便宜,报价时就会报低;普通车床的活反而显得贵,客户一比就走。
二是费率没有反映该摊什么。一道工序每小时的成本,理想情况下应当包含:这一小时的人工、设备折旧、能耗、以及场地分摊。很多厂的费率只算了人工,等于把设备折旧和电费都漏在工单外面——每张单看着都赚,年底一算利润很薄,差的就是这一块。
费率怎么定,有个能落地的粗算办法:
把一台设备的月折旧、操作工月工资、月电费、按面积摊的场地费加起来,除以这台设备一个月真正能干活的小时数(不是 22 天 × 8 小时,要扣掉待料、维修、没单的空转),得到的就是这台设备的小时成本。这个数比拍脑袋准得多,而且能说清“为什么是 40 不是 55”。
还有个更省事的反推法:拿外协厂的报价当参照。外协厂车工一小时报多少,说明市场上这个工序的成本大概在那个位置,自己定费率时不会偏离太远——除非你的设备明显更好或更差。
不管用哪种办法,有一条必须守住:同一道工序的费率,全厂统一,不能一张单一个价。 一张单一个价,等于每张单的成本口径都不一样,横向比较就完全失效了。
五、外发的那道工序,工时也算了一遍
现在说到关键处。
一张工单十道工序,其中热处理那道外发。这道工序在系统里有计划工时吗?有。排产的时候它和别的工序一样要排——什么时候发出去、什么时候该回来、给多少时间。
有工时,就有费率,就进了加工费。
所以这张单的加工费里,已经包含了“热处理这道工序按计划工时和费率算出来的钱”。这笔钱的逻辑是:这道工序占用了工期、占用了工段负荷,即使不在自己车间做,它也是这张单的成本构成之一。
然后月底外协厂来对账,热处理做了多少件、单价多少、合计多少,这笔钱付出去。
如果把这笔对账金额再加进工单成本,就等于:热处理这道工序,一次按工时算了钱,一次按外协单算了钱。
六、“我付出去的钱不是成本吗”——是,但它已经在里面了
这个疑问值得正面回答,因为它是最容易绕进去的地方。
付给外协厂的钱,当然是这张单的花费。但它进入成本的方式,是“外发工序的工时成本”,不是“外协对账金额”。
用一个更直白的类比:你厂里的车工,你付他工资,工资进成本的方式是“这道工序 2.5 小时 × 45 元”。你不是把车工整月的工资单贴到这张工单上。外协厂也一样——你付它的对账金额,进成本的方式是那道工序的计划工时乘费率。
那两者的数会不会差很远?会。计划工时是排产时估的,外协单价是对账时谈的,一个按小时算、一个按件或按公斤算,天然对不上。
这个差额恰恰是有用信息:它告诉你这道外发工序是“估高了还是估低了”。如果长期是外协实际支出高于工时估算,说明费率定低了,报价时该往上调;反过来则说明这道工序外包是划算的。
但要看到这个差额,前提是两笔钱分开记。混在一起,这个信息就永远消失了。
七、外协厂降价了,费率要不要跟着降
这一节回答一个必然会被问到的问题:既然外协费不单独加进去,那外协市场的价格变了,成本怎么跟着变?
答案在费率的定义里。
一道外发工序进成本的算法是:计划工时 × 工段费率。这个费率,本来指的就是“这道工序一小时值多少钱”。设想一台磨床,外协一直按 80 元一小时结算,那磨床这个工段的费率就该定 80。可这半年外协厂产能过剩,报价掉到 70,费率的数还留在 80,工单成本就按 80 算——每张单的成本都虚高出一成二,报价跟着虚高。
所以调费率不是“随手改个数字”,它是外协价格变化进入成本的唯一入口。不调,成本就停在旧价格上。而且它不会报错、不会告警、不会有人来找你,只是悄悄让你在报价上失去竞争力。
反方向更凶险。外协涨价了不调费率,成本虚低,报价看着有利润,做完才发现赔了。这种错不让你丢单,它让你接一堆不该接的单。
那怎么知道该调了?
用上一章那个差额。把某道外发工序的“工时成本”和“外协实付”摆在一起比:连续三个月实付都高于工时成本一成以上,说明费率该往上走;连续三个月实付都低于工时成本,说明该往下走。这个比较不用另外做统计,两个数系统里本来就有。
有两件事得提前想明白。
别调得太勤。 费率一动,重算之后所有引用这道工序的工单成本都跟着变,包括上个月的(后面会细说这件事)。所以合理的节奏是按季度或半年看一次,改之前把要留存的期间成本导一份出来。按单调整等于让历史数据失去意义——上个月那张单赚了多少,你再也答不出来。
同一道工序只有一个费率。 如果这道工序一半自制、一半外发,费率取哪个值就有讲究:取自制成本,外发那部分成本会偏高;取外协价,自制那部分会偏低。折中的做法是按哪种方式占多数来定,另一种方式的偏差当成已知偏差留着。这比两边都想要、结果改来改去强,至少口径是稳定的。
最后说一句可能反直觉的:外协降价,不一定马上跟着降。
如果是短期波动——某家外协厂这季度缺单、临时让价,下季度可能就回去了——费率不动反而是对的。判断标准不是“现在多少钱”,是“这个价格稳没稳住”。问一句就够:下个季度还能按这个价给我做吗?对方的回答比任何行情判断都准。
八、重复计算之后,错的不只是数字
成本算错的直接后果好理解,间接后果更麻烦。
最直接的后果是报价失真。 报价通常是在成本上加一个毛利。成本虚高,报出来的价就偏高。上面那家厂提价一成丢客户,就是这个链条。反过来,成本虚低则报价偏低,单子接得多但每张都薄。
更要紧的后果是单张盈亏失去意义。 老板看板上的“这张单赚了多少”,如果成本里有一笔重复的,这个数就是错的。错得还不均匀:外协占比高的单错得多,外协占比低的单错得少。于是一批单排在一起看,会得出“外协多的单不赚钱”这种结论——而实际可能正好相反。
最难查的那个后果是它会自我强化。 因为成本错了,报价跟着错;报价错了,接单结构变了;接单结构变了,下一轮的成本估算又跟着偏。半年之后回头看,已经说不清哪一步开始错的。
九、哪些不算工单成本,但必须算进整体盈亏
工单成本只有两摊:料和工。所以有些钱,进不了工单,但要进整体账。
不进工单成本的:厂房租金、水电(若未计入费率)、管理人员工资(厂长、跟单、财务)、运费与包装、税费、销售费用。
这些钱真实存在,只是它们不专属某一张单。硬摊到单张工单上,会让“这张单赚不赚钱”这个问题失真——因为一张单赚不赚,取决于它自己的料和工,不取决于这个月的房租。
但反过来,如果只看工单成本,会得出一个危险的结论:每张单都赚钱,公司却不赚钱。 差的就是这些不专属任何单的钱。
所以两张表要一起看:
一张是单张工单的成本与毛利,回答“这张单值不值得接、报多少合适”;一张是整体的收支,回答“这个月到底赚没赚”。
很多小厂的问题出在只有后面那张表——会计那里有总账,但没有单张成本,于是不知道哪类单赚钱、哪类单亏钱,只能凭感觉接单。也有厂反过来,只看单张成本,不看整体,结果每张单都算得挺赚,年底一算没剩多少。
设备折旧这件事要单独说一句:它进不进工单成本,取决于费率怎么定。如果费率里已经包含设备折旧,那折旧就已经在成本里了,不能再单独加一次——这又是一次“同一笔钱进两次”的陷阱,与外协费的性质完全一样。
十、三个自查动作,今晚就能做
不用等系统,用现有的数就能判断自己有没有算重。
第一,拿一张外协占比高的单,把外协对账金额和工单成本放在一起看。 如果工单成本里已经有一笔明显和“工序工时×费率”对不上的大数,很可能就是外协金额被加进去了。
第二,反推一道外发工序。 挑一道外发工序,用它的计划工时乘费率,得到一个数;再用外协单价乘数量,得到另一个数。两个数应该在同一量级,差个两三成正常。如果工单成本里这两个数都在,就是算了两次。
第三,看毛利分布。 把今年所有单按“外协占比”排一排,如果外协占比越高毛利越低、而且低得离谱,八成是外协费被重复计入了。
十一、三种常见算法,只有一种是对的
把小厂里见过的做法摆一摆,对比就清楚了。
算法一:成本 = 料 + 工,外协金额单独记应付。 这是对的。工单成本只回答“赚不赚钱”,应付回答“付多少”。
算法二:成本 = 料 + 工 + 外协对账金额。 这是重复计算。外发工序的工时已经进了工,再加一遍就是两次。
算法三:成本 = 料 + 自加工工时,外协那道工序的工时不算。 这也是一种算法,但它要求外协金额必须加进来,否则这道工序完全不在成本里。问题是:这样一来,“外发”和“自制”就没法比了——你想知道一道工序是自己做划算还是外发划算,两边口径不一致,永远比不出来。
所以关键不在于“加不加外协费”,而在于口径必须自洽:工时要算全(含外发工序),外协金额就只作应付;工时不算外发工序,外协金额才进成本。两条路都能走通,但只能选一条,而且选了就不能混。
Moges PMS5 走的是第一条:工单成本只有材料费和加工费两项,加工费覆盖全部工序(含外发工序的计划工时),外协对账金额只体现为应付,不进工单成本。
拿一张具体的单算一遍,差别就看得见了。
设这张单一千件,材料费 5000 元,全部工序的计划工时成本 3000 元,其中热处理外发那道工序是 2 小时 × 费率 80 元 = 160 元;热处理外协对账实际付了 1800 元。
算法一(料+工,外协另记应付):工单成本 5000 + 3000 = 8000 元,应付 1800 元单列。算法二(料+工+外协金额):5000 + 3000 + 1800 = 9800 元,比算法一高 22.5%。算法三(料+不含外发的工时+外协金额):5000 + 2840 + 1800 = 9640 元。
算法二和算法三看起来差不多,都错在同一个地方:热处理这道工序被计了两次。
再往前推一步。如果按成本加三成毛利报价:
算法一报 10400 元,算法二报 12740 元,算法三报 12532 元。
同一张单,报价差了两千多。客户手里拿着两家的报价单比价,你比同行贵两成,理由说不出来——因为你自己的成本表上,确实写着这个数。
十二、改了费率之后,历史成本会跟着变
这一节说一个容易被忽略、但会影响判断的事实。
工单成本是“算出来的”,不是“记下来的”。它的两个输入——计划工时和费率——任何一个变了,重算之后成本就变了。而重算的逻辑是按当前数据重新计算并覆盖,不保留历史版本。
这带来一个具体后果:如果你在十月份调整了某道工序的费率,然后把九月份的单也重算一遍,九月份的成本会按新费率算出来。 你回头再看九月那张单赚了多少,看到的已经不是当时的数。
这不是缺陷,是一种取舍:不留历史版本,系统简单、查询快、不会因为版本堆叠而产生“到底以哪版为准”的争议。代价是历史不可追。
所以有两件事需要提前做:
一是调费率之前,先把要留存的期间成本导出来。 比如年底想分析全年单张盈亏,就在调费率前把当前成本表导一份存档。
二是调费率这件事本身要有记录。 什么时候调的、从多少调到多少、为什么调——这三条写下来。否则半年后回头看“为什么三月的成本比二月高一截”,没人说得清。
同一件事在计划工时上也成立。工单变更改了工序或数量,重算之后成本跟着变,这也是对的——因为活确实变了。但要能区分“因为活变了而变”和“因为费率变了而变”,靠的就是那条改动记录。
十三、难的从来不是算术,是取舍
成本这件事,难点从来不是算术,是“哪些该进来、哪些不该进来”。
一道外发工序,它的工时是一笔,它的外协账单是另一笔。两笔都真实存在,但只有一笔属于工单成本。搞清楚这一条,报价才有依据;搞不清楚,就会像开头那家厂一样——拿着一份算错的成本去改价,改完还不知道错在哪。
---




