K3单据转换流程BOS新单下推老单据的实例(原材料实际领用登记表)

因为公司原材料出库管理一直较乱。K3从生产任务单下推领料出库时,所产生的物料都是事先在BOM中维护好的,但我们公司都是单件或小批量加工的,每次都要去改BOM不现实,于是都是一条条手工去录,但是又无与生产任务单关联,后期统计时无法一一对应。
于是研究了一下,但开发水平太菜,做不了插件,决定先做一张原材料申领表,再通过这张表下推到领料出库单,曲线救国。

1、先在BOS中新增加原材料实际领用登记表
在这里插入图片描述

2、单据转换流程增加如下关联
在这里插入图片描述
生产任务单转原材料表的关联
在这里插入图片描述
原材料表转生产领料单的关联
在这里插入图片描述
3、关联好后,进行测试,发现成本对象只传来零件代码,没有规格和名称;领用物料没有仓库和仓位。这此在手工增加时都有。
参考https://blog.csdn.net/hzfw2008/article/details/84197484?spm=1001.2014.3001.5506https://blog.csdn.net/weixin_30698527/article/details/97566261?spm=1001.2014.3001.5506 的文章
,查出原材料表的ID=257800030,生产领料单的ID=-24,然后查出关联表ICClassLink 中的FFieldName=‘257800030’。
通过测试结果的,查出相关字段的名称,于是在数据库中进行修改:

----原材料实际领用登记表下推生产领料表时,从零件传递成成本对象
–update ICSelbills set FAction=‘(select fitemid from cbCostObj where fnumber=t_4.fnumber)’ where FFieldName=‘257800030’ and FDstCtlField=‘FCostOBJID’ and fdk=0
–update ICSelbills set FAction=‘(select fname from cbCostObj where fnumber=t_4.fnumber)’ where FFieldName=‘257800030’ and FDstCtlField=‘FCostOBJID’ and fdk=1
–update ICSelbills set FAction=‘(select fnumber from cbCostObj where fnumber=t_4.fnumber)’ where FFieldName=‘257800030’ and FDstCtlField=‘FCostOBJID’ and fdk=2

----原材料实际领用登记表下推生产领料表时,从原材料传递默认仓库
–INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
–VALUES(‘B04’,‘257800030’,‘FSCStockID’,0,0,‘S0’,‘Fbase4’,‘t_BOS257800030Entry2’,‘u1’,‘(select A.FITEMID from t_Stock A
–INNER JOIN T_ICITEM B ON A.FItemID=B.FDefaultLoc
–WHERE B.Fitemid=u1.Fbase4)’,0,0)
–INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
–VALUES(‘B04’,‘257800030’,‘FSCStockID’,0,1,‘S1’,‘Fbase4’,‘t_BOS257800030Entry2’,‘u1’,‘(select A.FName from t_Stock A
–INNER JOIN T_ICITEM B ON A.FItemID=B.FDefaultLoc
–WHERE B.Fitemid=u1.Fbase4)’,0,0)
–INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
–VALUES(‘B04’,‘257800030’,‘FSCStockID’,0,2,‘S2’,‘Fbase4’,‘t_BOS257800030Entry2’,‘u1’,‘(select A.FNumber from t_Stock A
–INNER JOIN T_ICITEM B ON A.FItemID=B.FDefaultLoc
–WHERE B.Fitemid=u1.Fbase4)’,0,0)

----原材料实际领用登记表下推生产领料表时,从原材料传递默认仓位
–INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
–VALUES(‘B04’,‘257800030’,‘FDCSPID’,0,0,‘P0’,‘Fbase4’,‘t_BOS257800030Entry2’,‘u1’,‘(select A.FSPID from t_StockPlace a
–inner join T_ICITEM B ON A.FSPID=b.FSPID
–WHERE B.Fitemid=u1.Fbase4)’,0,0)
–INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
–VALUES(‘B04’,‘257800030’,‘FDCSPID’,0,1,‘P1’,‘Fbase4’,‘t_BOS257800030Entry2’,‘u1’,‘(select A.FNAME from t_StockPlace a
–inner join T_ICITEM B ON A.FSPID=b.FSPID
–WHERE B.Fitemid=u1.Fbase4)’,0,0)
–INSERT INTO ICSelbills (FID, FFieldName, FDstCtlField, FSelType, FDK, FColName, FName, FTableName, FTableAlias, FAction, FROB, FAllowEdited)
–VALUES(‘B04’,‘257800030’,‘FDCSPID’,0,2,‘P2’,‘Fbase4’,‘t_BOS257800030Entry2’,‘u1’,‘(select A.FNUMBER from t_StockPlace a
–inner join T_ICITEM B ON A.FSPID=b.FSPID
–WHERE B.Fitemid=u1.Fbase4)’,0,0)

4、BOS中字段的设置
原材料过滤有库存的
在这里插入图片描述

X2.Fitemid in (select a.FItemID from  t_ICItem a inner join icinventory b on a.fitemid=b.fitemid where 1=1 and a.FNumber like '3.10%' and b.FQty>0)

后来改了流程只要原料就行,不管是否有库存。(将这个表取代财务原来的登记原料用的EXCEL表格)

X2.Fitemid in (select FItemID from  t_Item where  1=1 and FItemClassID=4  and flevel=4 and FDeleted=0 and  FNumber like '3.10.%')

材料分为方料和圆料,对应不同的公式
在这里插入图片描述
型材的值更新件
当为圆料时,系数为4000000,并且锁定高与宽
当为方料时,系数为1000000,并且锁定直径
在这里插入图片描述

在直径、长、宽、高中,相应的维护公式,将结果赋值给“单重”
条件为圆料时:单重=直径直径3.14密度/系数
条件为方料时:单重=长密度/系数
在这里插入图片描述
在单重中维护公式:
条数为单重>0时
领用数量=单重
数量

5、后期修改
由于选择型材麻烦,改成录入原料代码后自动跟出型材类型
在辅助资料管理中增加型材类型
在这里插入图片描述
物料管理中进行维护
在这里插入图片描述
后台批量更新,从T_ITEM中查出,圆料是84076,方料是84077,管料是84078
原材料代码都是3.10开头的

update  t_icitem  set f_110=84076  where  FNumber like '3.10.%' and (fname like 'Ф%' )  and FModel<>''
update  t_icitem  set f_110=84077  where  FNumber like '3.10.%' and (fname like '%方%' or fname like '%板%') and fname not like '%管%' and FModel<>''

然后在BOS中计算公式的字段的值更新事件,增加一个条件
计算圆料的=84076,方料的=84077
在这里插入图片描述

在操作管理中,对原材料增加按F12查询库存的功能
在这里插入图片描述

最后
在这里插入图片描述

通过以上改造,就先让车间文员先做原材料登记表,审核后仓库直接下推成领料单。增大了原材料领用流程的规范性。

附ICSelBills表各个字段解释:
FID 需要进行关联关系调整的单据内码
FFieldName 关联字段名称
FDstCtlField 需要调整的单据字段内码
FDK 字段类别。0ID,1名称,2代码
FSelType 打开方式:目标字段的类型;0表示单据分录字段,2表示单据头字段,1表示该目标字段的当前值将会作为选单序时簿的过滤条件;
FColName 上游单据携带字段内码+序号,0开始
FName 上游单据携带字段内码
FTableName 上游单据表名
FTableAlias 表范围
FAction 动作
FROB 功能标识
FAllowEdited 是否允许编辑

https://www.cnblogs.com/caipanlong123/p/11065784.html

新单到老单字段的添加分为两种:

一种为文本字段信息的关联,新单与老单字段的信息均为文本字段;

   另一种为基础资料信息的关联,新单与老单均为基础资料字段信息。

  K3 WISE 11.0中存储老单关联字段信息的表为 ICSelbills ,该表的内部结构为:

     FID:表示下推目标单据的类型,其值主要关联在表ICTransActionType中的FID,该表内主要是各种单据的缩写类型;

    FFieldName:原单据在VB层面的标识单据编号的名称,在数据库中一般根据需要变更单据的内容来制定;

   FDstCtlField:目标单据中需要下推过去的目标字段数据库的名称;

   FSelType:目标字段的类型;0表示单据分录字段,2表示单据头字段,1表示该目标字段的当前值将会作为选单序时簿的过滤条件;

    FDK:用于表头控件,对于同一个目标字段,回填值用于区分基础资料与普通文本的方式;基础资料时 0-代表基础资料表中的内码FINTERID 或 FID,1-代表基础资料表中的名称FNAME ,2-代表基础资料中标的FNUMBER字段;

    FColName:源字段的别名,该名称一般为自己定义,对于字段的下推并没有什么太大意义,因为在软件内部的查询结果集中会给它们重新定义临时标准名称;

    FName:源字段的数据库字段名称,该名称需要查询BOS或者数据库找到该值;

    FTableName:源字段所在的表名称;

    FTableAlias:原表别名,在跟踪中并未发现实质性作用,一般根据原有表明进行定义,若没有的自己可定义;

    FAction:用于处理一些简单的字段值判断,或者是字段之间的运算,最为重要的是:基础资料中的查询信息,对应上面的FDK,基础资料的字段需要三类语句:

               SELECT FINTERID FROM t_submessage WHERE FinterID=v1.FBase5

               SELECT FNAME FROM t_submessage WHERE FinterID=v1.FBase5

               SELECT FNUMBER FROM t_submessage WHERE FinterID=v1.FBase5

               普通文本无该语句的要求,直接定义字段关系即可;

    FROB:目前为止并未发现实质性作用;

    FAllowEdited:猜想为应该是控制下推目标单据显示后,字段的可编辑性,目前还未进行求证;
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值