您现在的位置是:首页> 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组织,导入全部工序名工序主数据
    2BOS 扩展工艺路线,工序列表加"工序单价"字段(金额 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组织作业混淆。

Tags: #ERP #云星空 #金蝶云星空 #金蝶ERP

随机图文

文章评论

站点信息

  • 站点名称:厦门沐智云科技有限公司
  • 站点关键词:金蝶云,云星空,ERP系统,钉钉OA系统,金蝶ERP,云星空进销存,云星空成本,金蝶云星空多少钱,破解金蝶云星空
  • 栏目数量:81篇文章
  • 标签管理:标签云
  • 微信公众号:扫描二维码,关注我们