您现在的位置是:首页> ERP实施维护ERP实施维护
金蝶云星空计件工资实施开发
2026-10-21
ERP实施维护浏览量5
简介业务场景一:工资计算规则:例如返工涉及原材料不良、客户要求返工,是否算钱。是 原材料不良造成损失的,向供应商追偿扣款;客诉返工由品质判定责任,相关人员承担相应赔偿。自己做坏返工:是否扣钱 是 不良品总数扣除20个不扣款,其余以半成品2元/个,成品5元/个进行扣款。生产中途的半成品如何统计 按照单价×数量统计工资一个工序是否可能对应多个单价 是因设备故障、物料短缺导致的停工,这部分时间是否有计时补贴
业务场景
一:工资计算规则:
例如返工涉及原材料不良、客户要求返工,是否算钱。是 原材料不良造成损失的,向供应商追偿扣款;客诉返工由品质判定责任,相关人员承担相应赔偿。
自己做坏返工:是否扣钱 是 不良品总数扣除20个不扣款,其余以半成品2元/个,成品5元/个进行扣款。
生产中途的半成品如何统计 按照单价×数量统计工资
一个工序是否可能对应多个单价 是
因设备故障、物料短缺导致的停工,这部分时间是否有计时补贴 是 以16/H进行补贴
一、业务背景与需求
1.1 业务场景
103组织(示例产品)生产采用工序计件工资制:产品按工艺路线流经多道工序(气嘴、气孔、接下、封边、焊管、焊接、绑皮筋、手柄……),每道工序有独立单价,员工按完成数量计酬。
1.2 管理办法条款与本方案映射
管理办法条款 本方案处理 状态 工序名称对应价格表 工艺路线工序列表 + 扩展"工序单价"字段 本期实现 计件工资 = 单价 × 数量 计件工资单分录公式字段自动计算 本期实现 工序单价来源于工程师定价 工程师在工艺路线中维护单价 本期实现 一个工序可能对应多个单价 同物料同工序在工艺路线建多行,各带各的单价 本期实现 生产中途半成品按单价×数量统计 工艺路线每道工序行即半成品计价,天然支持 本期实现 嘉奖、罚款不参与计件工资计算 不进计件公式,薪资模块独立列示 设计保证 返工扣款(自造不良扣 20 个免赔、半成品 2 元/成品 5 元) 后续在计件工资单加扣款字段或做返工记录单 本期不做 停工补贴(设备故障/物料短缺,16 元/H) 需工时统计,后续扩展 本期不做 新员工保底(工时×16)、老员工满 284H 补足 5000 需考勤工时,后续扩展 本期不做 新产品试产 16 元/H 计时补贴 需工时统计,后续扩展 本期不做 本期聚焦计件主链路:工艺路线定价 → 汇报下推 → 自动带工序 → 员工填数量 → 计件费自动算 → 按月按人汇总。
1.3 核心设计决策
工序清单与单价统一挂在工艺路线上:工艺路线是"物料 → N 道工序"的标准载体,通过 BOS 扩展在工序列表分录增加"工序单价"金额字段,实现单点维护,避免自建基础资料与工艺路线双维护。
汇报单下推自动铺行:下推时按物料 + 生效日期从工艺路线带出全部工序行(工序名称、单价已填好),员工只填数量,从源头防错。
工序名称规范化:启用"作业"基础资料作为工序字典。费用分配使用的是"作业活动"(发生费用/供电),与"作业"是两个独立字典,计件工序建在作业中不影响费用归集。
二、总体方案架构
- 作业(工序字典)气嘴 / 接下 / 封边 / 焊管 / 焊接…… 一次性建立→工艺路线(BOS 扩展)物料 + 工序列表(N 行)
每行:作业、工序单价【扩展】、生效日期→生产汇报单(源单)工单 / 物料 / 数量 - 计件工资单下推自动铺工序行
员工只填数量,计件费=单价×数量→工资汇总报表按姓名 + 月份分组求和 - 说明:汇报单(源单)通过下推规则生成计件工资单,并按物料+生效日期从工艺路线带出全部工序行;计件工资单的分录计件费由公式自动计算,最终在汇总报表按姓名与工资年月归集。
三、基础数据准备
3.1 作业(工序字典)
目的:统一工序主数据,规范工序名称。
与费用分配的关系(重要):费用报销单的费用归集使用的是"作业活动"(发生费用、供电),通过作业数量维护方案按"实际总工时"分配到受益成本中心(103组织产品线等)。"作业活动"与"作业"是两个独立字典——计件工序建在"作业"中,不会进入作业活动列表,不影响费用分配。
组织隔离:作业按组织管理(现有101组织/103组织作业分属各自产品线组织)。103组织作业建在"103组织"组织下,与101组织/103组织作业分开,工艺路线按使用组织引用。
操作路径:基础资料 → 作业列表 → 新增(组织 = 103组织)。
字段 说明 编码 工序编码,建议数字流水码(如 001、002……) 名称 工序名称:气嘴、气孔1、接下、接上、封边、焊管、焊接、绑皮筋、固定片、手柄、按摩头、压毛毡、修边…… 作业类型 加工/组装等,按需 数据准备:从现有工序价格 Excel 中提取全部工序名去重(若干),一次性导入。工序名以工程师现行叫法为准,注意合并同义异写(如"气孔"与"气孔1"是否同一工序,需工程师确认)。
3.2 工艺路线扩展:新增"工序单价"字段
目的:让工艺路线兼做工序计价表。
操作路径:BOS 设计器 → 打开"工艺路线"单据 → 扩展 → 在"工序列表"分录上新增字段。
扩展字段属性 建议值 字段标识 FJGDJ(自定义,避开标准字段) 字段名称 工序单价 数据类型 金额(小数) 小数位数 4 位(单价存在 0.035、0.045、0.115、0.161 等 3~4 位小数) 必填 是 显示位置 工序列表分录,紧随"作业"列 保存并发布扩展。发布后工艺路线工序列表每行可填单价。
3.3 工艺路线建档规范
每个物料建立一条工艺路线,工序列表逐行维护:
列 填写规范 工序号 10、20、30……按工艺顺序 作业 F7 引用作业字典中的工序(组织 = 103组织) 工序单价【扩展】 该工序单价(元/个) 生效日期 / 失效日期 必填;调价时新建版本(改生效日期),不覆盖历史 工作中心/加工车间 按实际填,不影响计价 特殊情形处理:
同物料同工序两个价位(示例数据多例,如 示例物料编码-B 焊管 0.1/0.15):工序列表建两行(工序号不同),各带各的单价,下推时两行都带出,员工按实际做的行填数量。
调价:新建工艺路线版本(新生效日期),旧版本保留,历史汇报单取数仍按当时生效版本。
首批数据导入:物料×工序行建议整理成 Excel 后通过数据交换平台/导入工具批量导入工艺路线(含扩展字段),避免手工逐条录入。
3.4 车间员工档案
操作路径:BOS 设计器 → 基础资料 → 新建"车间员工档案"。
字段 说明 编码 工号 姓名 员工姓名 车间/班组 按需 入职日期 备用(后续保底规则需要) 与标准 HR 员工隔离,避免与行政员工混淆。
四、自定义单据:计件工资单
4.1 单据定位
由生产汇报单下推生成,一张单对应一个工单(一个物料),分录按工序铺开,支持多员工分工序填报。
4.2 表头字段
字段标识 字段名称 类型 来源 FBillNo 单据编号 文本(自动编码) 编码规则自动生成 FDate 业务日期 日期 手工/下推携带 FYearMonth 工资年月 文本或日期 公式:业务日期的年月(用于汇总) FMoNo 工单号 文本 下推携带(源单工单号) FMaterialId 产成品物料 F7 物料 下推携带(源单产品物料) FMaterialName 品名/规格 文本 选物料后联动带出 FQty 产成品数量 数量 下推携带(源单完成数量) FTeam 车间/班组 文本 手工选填 FAmount 计件费合计 金额 分录汇总公式 4.3 分录字段
字段标识 字段名称 类型 来源 FSeq 行号 整数 自动 FEmpId 姓名 F7 车间员工档案 员工手填 FOperName 工序名称 文本 下推自动带出(工艺路线作业名称) FPrice 工序单价 金额(4 位小数) 下推自动带出(工艺路线扩展字段) FQty 工序数量 数量 员工手填 FAmount 计件费 金额 公式 = FPrice × FQty 填报逻辑:下推后分录已铺好该物料的全部工序行(工序名称、单价已填),员工每行只需填"姓名 + 工序数量",计件费自动算出。一道工序多人完成时手工增行(建议复制该工序行改姓名,避免选错工序)。
- 若现场实际是"一人跟完一个工单的所有工序",可将姓名移至表头(一张单一个员工),二选一,按作业方式定。
4.4 计算公式
分录计件费:
FAmount = FPrice × FQty(公式字段,数量或单价变动自动重算)表头合计:
FAmount = SUM(分录.FAmount)(汇总字段)五、下推与自动铺行
5.1 下推字段映射
操作路径:BOS 设计器 → 单据转换/下推规则 → 新建"生产汇报单 → 计件工资单"。
源单字段(生产汇报单) 目标单字段(计件工资单) 级别 工单号 FMoNo 表头 产品物料 FMaterialId 表头 完成数量 FQty 表头 业务日期 FDate 表头 5.2 铺行插件逻辑
标准下推映射只能搬字段,按物料从工艺路线生成多行工序需要插件实现。插件挂在计件工资单表单插件(下推生成目标单后触发):
触发时机:目标单数据加载后(AfterBindData / 下推生成后)
输入:表头物料编码 FMaterialId、业务日期 FDate
处理:
查询工艺路线(FormId 以 BOS 实际为准,标准为 ENG_Route):
过滤条件 = 物料 = FMaterialId 且 生效日期 ≤ FDate ≤ 失效日期 且 使用组织 = 当前组织取该版本工序列表分录:作业名称、工序单价(扩展字段)
在计件工资单分录生成对应行:工序名称 = 作业名称;工序单价 = 工艺路线单价;姓名、工序数量留空待员工填写
若该物料无生效工艺路线,给出提示(防止静默失败)
5.3 插件代码示例(C#)
using Kingdee.BOS; using Kingdee.BOS.Core; using Kingdee.BOS.Core.DynamicForm.PlugIn; using Kingdee.BOS.Core.DynamicForm.PlugIn.Args; using Kingdee.BOS.Orm.DataEntity; using Kingdee.BOS.Util; using System; using System.ComponentModel; public class PieceworkWagePlugin : AbstractFormPlugin { // 工艺路线 FormId 与字段标识以 BOS 设计器实际为准 private const string RouteFormId = "ENG_Route"; public override void AfterBindData(EventArgs e) { base.AfterBindData(e); // 仅下推生成的新单、且分录为空时铺行 bool isFromPush = this.View.OpenParameter?.GetCustomParameter("IsFromPush") == true; if (!isFromPush) return; int rowCount = this.View.Model.GetEntryRowCount("FEntity"); if (rowCount > 0) return; FillRouteRows(); } private void FillRouteRows() { // 1. 取表头物料与日期 DynamicObject materialObj = this.View.Model.GetValue("FMaterialId") as DynamicObject; if (materialObj == null) return; string materialNumber = Convert.ToString(materialObj["Number"]); DateTime billDate = Convert.ToDateTime(this.View.Model.GetValue("FDate")); // 2. 查询生效工艺路线(字段标识以实际为准) string filter = string.Format( "FMATERIALID=@material AND FBEGINDATE<=@date AND FENDDATE>=@date", "material", materialNumber, "date", billDate); DynamicObjectCollection routes = BusinessDataService.Query( this.Context, RouteFormId, null, filter); if (routes == null || routes.Count == 0) { this.View.ShowErrMessage( string.Format("物料 {0} 在 {1:yyyy-MM-dd} 无生效工艺路线,请联系工程师建档!", materialNumber, billDate)); return; } // 3. 取工序列表分录并铺行(分录实体标识以实际为准) DynamicObject route = routes[0]; DynamicObjectCollection routeEntries = route["FEntity"] as DynamicObjectCollection; this.View.Model.BeginInite(); try { foreach (DynamicObject entry in routeEntries) { int row = this.View.Model.GetEntryRowCount("FEntity"); this.View.Model.CreateNewEntryRow("FEntity"); // 工序名称(作业名称) DynamicObject operObj = entry["OperId"] as DynamicObject; this.View.Model.SetValue("FOperName", operObj?["Name"], row); // 工序单价(工艺路线扩展字段) this.View.Model.SetValue("FPrice", entry["FJGDJ"], row); } } finally { this.View.Model.EndInite(); } this.View.UpdateView("FEntity"); } }- 说明:工艺路线 FormId(ENG_Route)、分录实体标识、物料/日期字段标识(FMATERIALID/FBEGINDATE 等)在不同星空版本间可能有差异,以 BOS 设计器中工艺路线的实际标识为准,本示例给出逻辑框架,实施时按实际标识替换。
六、工资汇总
方式一(零开发):计件工资单列表 → 过滤条件"工资年月 = 目标月" → 按"姓名"分组 → 对"计件费"求和。适合月度快速核对。
方式二(报表):用星空报表设计器做一张"月度计件工资汇总表":维度 = 姓名、工资年月;指标 = 计件费合计;过滤 = 工资年月。适合正式工资核算取数。
七、实施步骤(总顺序)
步骤 事项 产出 1 建立/整理作业(工序字典),组织 = 103组织,导入全部工序名 工序主数据 2 BOS 扩展工艺路线,工序列表加"工序单价"字段(金额 4 位小数) 工艺路线可维护单价 3 工艺路线建档:物料 + 工序 + 单价 + 生效日期,首批数据批量导入 物料工序计价清单 4 新建"车间员工档案"基础资料,导入员工 员工主数据 5 新建"计件工资单":表头 + 分录字段 + 计件费公式 + 合计汇总 自定义单据 6 开发铺行插件(按物料+生效日期查工艺路线生成分录行) 下推自动带工序 7 配置下推规则:生产汇报单 → 计件工资单(表头字段映射) 下推链路 8 菜单发布"计件工资单",分配权限给车间人员 功能可用 9 验证测试(见第八节用例) 验收通过 八、验证用例
用例 操作 预期结果 1. 基本计件 物料 示例物料编码-A(示例产品A,工艺路线:接下 0.11、封边 0.08)汇报单下推 计件工资单自动带出 2 行工序;填数量各 100,计件费 = 11 + 8 = 19 2. 多员工分工序 同一单据,接下行填员工甲数量 100,封边行填员工乙数量 100 两行计件费分别归属员工甲、员工乙;按人汇总正确 3. 同工序两价位 物料 示例物料编码-B(焊管 0.1/0.15 两行)下推 带出 2 行焊管,员工按实际做的行填数量 4. 调价版本 工艺路线改版(新生效日期、接下调为 0.12)后新建汇报单下推 新单带出 0.12;历史单据仍显示 0.11 5. 无工艺路线 对未建档物料下推 插件提示"无生效工艺路线",不静默生成空单 6. 公式联动 修改某行工序数量 该行计件费、表头合计自动重算 九、本期范围外事项(后续扩展)
事项 扩展方式 返工扣款(自造不良:扣 20 个免赔后,半成品 2 元/个、成品 5 元/个;原材料不良/客诉不扣员工) 计件工资单加"扣款金额"字段,或做返工记录单,扣款公式按免赔规则实现 停工补贴(16 元/H) 需工时采集,做停工记录单 新员工保底(工时×16)、老员工满 284H 补足 5000 需考勤工时数据,做月度结算单 试产计时补贴(16 元/H) 需工时采集 嘉奖罚款 不进计件公式,在金蝶薪资模块作为独立薪资项目列示 十、风险与注意事项
工艺路线版本管理:调价必须走"新版本 + 新生效日期",禁止直接改旧版本单价,否则历史工资取数会串。
插件取数口径:铺行插件必须同时匹配"物料 + 生效日期区间 + 使用组织",缺一不可。
单价小数位:工艺路线扩展字段与计件工资单单价字段统一设 4 位小数,防止 0.035 这类单价被四舍五入。
工序字典治理:同义工序名(气孔/气孔1/气孔2)需工程师确认是否合并,否则按工序汇总会拆分失真。
首批导入校验:批量工艺路线数据导入后,抽样核对单价与现行价格表一致(重点核对高频工序:气嘴 0.04、接下 0.1、封边 0.04 等)。
下推幂等:防止同一汇报单重复下推生成多张计件工资单(下推规则配"已下推数量"控制或插件校验)。
作业与作业活动区分:费用分配使用"作业活动"(发生费用/供电),计件工序建在"作业"字典,两者互不影响;但作业需按组织隔离(103组织作业建在103组织下),避免与101组织/103组织作业混淆。
随机文章
随机图文

金蝶ERP云星空BOS开发平台平行扩展问题
由于CRM系统升级,造成生产订单自定义字段无法批改。因为CRM升级后对生产订单进行了平行扩展。扩展了2次。现在教你如何删除不需要的BOS平行扩展。因为金蝶BOS开发平台控制了开发商唯一码校验。因此我们需...
金蝶云星空二开单据物料基本单位携带
金蝶云星空二开单据物料的基本单位携带。物料需要引用基本单位属性增加计量单位字段,值更新打钩物料值更新事件配置单位对应关系
金蝶云星空BOS开发计算多个数字相加
BOS二开单据根据每月销售数量计算本年的销售数量合计。在每月销售数量字段上做如下配置。每个月都用一用的公式。保证每个月数值反生改变时,都可以自动更新合销售数量合计。注意销售数量合计字段 即时触发更新事件...
金蝶ERP云星空物料编码加客户名称唯一性检查
金蝶云星空BOS开发单据,多字段唯一性检查。禁止相同客户与相同物料编码输入多次。点保存按钮后最终检查如下
金蝶云星空二开单据显示序号
序号字段标识必须是FSeq
金蝶云星空如何限制组织只能选择库存组织
金蝶云星空如何限制组织只能选择库存组织。打开编辑字段,选择组织右边的组织职能。选择库存职能
金蝶云星空获取当前年份
创建一个整数字段或者文本字段,预测年份。设置预测年份值更新事件。截取创建日期的年份。并且在表单属性的菜单集合,选择保存按钮,调用值更新服务。
金蝶BOS开发平台删除字段后,数据库还有这个字段
很多小伙伴会发现,在金蝶BOS二开过程中,会创建了很多字段。但是后面觉得这些字段不用了。直接在BOS开发界面删除,但是实际上数据库还有这个字段信息。如何彻底删除呢?首先确定好这些字段是无用字段。复制这...
金蝶云星空限制只能选某个组织机构
金蝶云星空在BOS平台如何限制单据只允许某个组织,或者某几个组织。首先去数据库查询组织机构表中字段select*fromT_ORG_Organizations根据查询结果。找到需要的组织机构。去BOS平台找到组织机构字段 设置...
金蝶云星空二开单据使用半年后突然增加一个字段如何把这个字段批量更新
金蝶云星空二开单据已经使用了大半年时间,有很多数据了。但是突然新增一个字段,这个字段以前不存在,所以单据上以前这个字段值就是空的。可以通过字段批改功能批量维护。批改必须保证数据准确性。以下介绍2种方法:...





微信收款码
支付宝收款码