新闻中心

联系我们

了解更多详细信息,请致电4006-630-603

或给我们留言给我留言

公司新闻

当前位置:首页>新闻中心 > 公司新闻

通过ICSelBills表实现专业版销售报价单的数量带到销售订单

发布者:江山软件    发布时间:2018-06-14 11:21:44

    专业版销售报价单单据体中的数量是报价的数量段,不符合客户的应用场景,客户希望通过自定义字段“数量”来实现直接按具体的数量报价,如果下图:

 
上图中的数量是个自定义的字段,后台的字段名是  FEntrySelfG0119
 
需要把这个字段的值在生成销售订单的时候带过去,对应到单据体的数量字段,如下图:
 

 
由于销售订单的“数量”字段是系统的内置字段,无法通过单据自定义来指定字段之间的关系,只能通过修改单据流转表ICSelBills中的选单关系来实现。
 
 
实现步骤:
1、从ICClassType表中查询 销售报价单 和 销售订单的 单据类型
SELECT FID ,* FROM ICClassType WHERE FName_CHS LIKE '%销售订单%' or  FName_CHS LIKE '%销售报价单%'
查询的结果是销售订单的ID是 -81,销售报价单的ID是-84
 
2、从ICTransactionType 表总查询 销售报价单 和 销售订单 的 单据模板
SELECT FTemplateID,* FROM ICTransactionType WHERE FName LIKE '%销售订单%' or  FName LIKE '%销售报价单%'-
查询结果是销售订单的ID是 S01,销售报价单的ID 是G01
 
3、从 ICClassLink 表中 查询销售报价单到销售订单的对应流程的 FFieldName
SELECT FFieldName,* FROM ICClassLink WHERE FSourClassTypeID =-84 AND FDestClassTypeID =-81--
查询结果表明对应流程的FFieldName 是FPORFQInterID
 
4、通过ICTemplateEntry 表确认自定义字段的名称
SELECT FFieldName,* FROM ICTemplateEntry WHERE FID ='G01' AND FHeadCaption  LIKE '%数量%'
查询得知自定义字段 “数量” 的字段名 FEntrySelfG0119
 
5、选单关系是通过 ICSelBills 表中的记录来定义的,所以在ICSelBills 表中插入如下记录:
 
Insert Into ICSelBills(FID,FFieldName,FDstCtlField,FDK,FSelType,FColName,FName,FTableName,FTableAlias,FAction) values
('S01','FPORFQInterID','FQty',0,0,'FEntrySelfG01190','FEntrySelfG0119','PORFQEntry','u1','')
Insert Into ICSelBills(FID,FFieldName,FDstCtlField,FDK,FSelType,FColName,FName,FTableName,FTableAlias,FAction) values
('S01','FPORFQInterID','FAuxQty',0,0,'FEntrySelfG01190','FEntrySelfG0119','PORFQEntry','u1','')
 
因为数量有两个字段,所以需要插入两条记录,分别定义字段 FQty和FAuxQty。
 
注意:源字段和目标字段的数据类型必须一致!
第二种方法:可以通过系统的自定义字段来先定义选单关系,然后修改ICSelBills 表中的FDstCtlField字段来实现同样的结果。
 
 
ICSelBills字段名称 解释
 
FID 单据内码,这个内码是在ICTransactionType中定义的,只的是目标单据的单据内码,通过单据名称FName可以查询到,本例中,销售订单的单据内码是S01
 
FFieldName 字段名称,这个字段名称是流程字段名称,是系统在ICClassLink表中定义的,通过源单据的ID字段FSourClassTypeID和目标字段的ID字段 FDestClassTypeID来查询,本例中销售订单是目标单据,ID是 -81,销售报价单是源单据,ID是-84,查询出来的流程字段名称FPORFQInterID
 
FDstCtlField 目标字段名称,就是要携带过去的字段的名称,本例中,销售报价单中的数量要携带到销售订单中的数量字段,所以,此处的字段名称应该是FQty和FAuxQty
 
FSelType 目标字段的类型,0表示目标字段是表体字段,2表示目标字段是表头字段,1表示该字段的当前值会作为选单序时簿的过滤值
 
FDK 字段类别,用于表头,表示对于同一个字段,该返回值是0 FID, 2 FNumber还是1 FName
FColName 字段名称 源字段的名称,跟上一个字段有关系,如果返回值是FID,则源字段后面加0,本例中是FEntrySelfG0119后面加一个0变成FEntrySelfG01190;如果返回值是FName,则源字段后面加1,本例中是FEntrySelfG0119后面加一个1变成FEntrySelfG01191;如果返回值是FNumber,则源字段后面加2,本例中是FEntrySelfG0119后面加一个2变成FEntrySelfG01192
 
FName 源字段名称,即要携带的值在原表中的字段名称,本例中是 “数量”在销售报价单中的名称FEntrySelfG0119
 
FTableName 表名称,源表的名称,本例中是销售报价单,携带值来源于表体,所以是PORFQEntry
 
FTableAlias 原表的别名,不解释
 
FAction 动作,如果需要对携带过来的值做一些判断处理,则可以在此处写一个语句,对携带过来的值做一些处理。
 
 
【以下无正文】