员工携带岗位或者部门

栏目:云星空知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

员工携带岗位或者部门

【应用场景】

业务单据上有申请人,申请人来源数据为员工,需要在单据上携带申请人对应的部门或者岗位。

以采购订单为列:

场景一:申请人是单任岗,携带采购组织下,在申请人任岗中,携带未禁用且已审核任岗的岗位或部门。

场景二:申请人是多任岗,携带采购组织下,在申请人任岗中,携带未禁用且已审核任岗且是主任岗的岗位或部门。

场景三:申请人是多任岗,携带采购组织下,在申请人任岗中,携带未禁用且已审核任岗且是主任岗且(这里是客户二开的字段逻辑判断)的岗位或部门。


【背景】

产品端在8.0.100.202203版本,增加了函数GetStaffInfo来获取员工对用的岗位或部门,逻辑:有主任岗就默认带主任岗(不区分单据的组织),如果没有主任岗,就带员工在这个组织(单据主业务组织)下的第一个任岗 岗位,在使用中发现有场景不满足,函数使用参考:https://vip.kingdee.com/article/308578805650860800?productLineId=1&lang=zh-CN。

另外,员工信息包含任岗信息,考虑使用表达式去做,但任岗分录里,部分字段名称为空,导致表达式取不到值。

以下解决思路,是对员工单据扩展,增加员工任岗扩展分录,将需要的字段信息放到分录里,用表达式方式取部门或者岗位。以采购订单单据为例。


【案例演示】

场景一:申请人是单任岗,携带采购组织下,在申请人任岗中,携带未禁用且已审核任岗的岗位或部门。

步骤1:增加视图:

create view [view_empinfo_post] as select M.FID, M.FENTRYID, M.FWORKORGID, M.FDEPTID, M.FPOSTID, D.FDOCUMENTSTATUS, D.FFORBIDSTATUS, F.FISFIRSTPOST from t_bd_stafftemp M inner join t_bd_staff D on D.FSTAFFID = M.FSTAFFID left join T_BD_STAFFPOSTINFO F on F.FSTAFFID = D.FSTAFFID

步骤2:扩展员工,并新增员工任岗扩展分录。分录表关联步骤一视图。

分录表名:view_empinfo_post,表类型:视图,分录主键:orm实体名:PostEntityExt。

分录每个字段,字段名,绑定实体属性

工作组织    FWORKORGID  WorkOrgId

部门  FDEPTID    PostDept

岗位  FPOSTID    PostId

单据状态  FDOCUMENTSTATUS    DocumentStatus

禁用状态  FFORBIDSTATUS   ForbidStatus

主任岗  FISFIRSTPOST isFirstPost

备注:字段名来源视图字段,绑定实体属性用于表达式

步骤3:在采购订单增加字段。基础资料_员工,基础资料_部门,基础资料_岗位。基础资料_员工需要引入以下字段

步骤4:设置基础资料_员工,值更新事件。

部门:

F_UNW_Base_zc5 = 0 if FBase.ActiveObject == null else( map(lambda x:0 if x.PostDept == null else x.PostDept.Id, filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A' and x.DocumentStatus == 'C', FBase.ActiveObject.PostEntityExt))[0] if len(filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A'  and x.DocumentStatus == 'C', FBase.ActiveObject.PostEntityExt)) > 0 else 0)


岗位

F_UNW_Base_imu =0 if FBase.ActiveObject == null else( map(lambda x:0 if x.PostId == null else x.PostId.Id, filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A' and x.DocumentStatus == 'C', FBase.ActiveObject.PostEntityExt))[0] if len(filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and x.ForbidStatus=='A'  and x.DocumentStatus == 'C', FBase.ActiveObject.PostEntityExt)) > 0 else 0)


备注:FBase 为单据中的基础资料_员工,F_UNW_Base_zc5为基础资料_部门,F_UNW_Base_imu为基础资料_岗位。

要用实际使用中单据字段标识。

步骤5:实际效果:


场景二:申请人是多任岗,携带采购组织下,在申请人任岗中,携带未禁用且已审核任岗且是主任岗的岗位或部门。

步骤1,2,3 参考场景一

步骤4.基础资料_员工,值更新事件。

部门: 

F_UNW_Base_zc5 = 0 if FBase.ActiveObject == null else( map(lambda x:0 if x.PostDept == null else x.PostDept.Id, filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A' and x.DocumentStatus == 'C' and  x.IsFirstPost==True, FBase.ActiveObject.PostEntityExt))[0] if len(filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A'  and x.DocumentStatus == 'C' and  x.IsFirstPost==True, FBase.ActiveObject.PostEntityExt)) > 0 else 0)

岗位:

 F_UNW_Base_imu =0 if FBase.ActiveObject == null else( map(lambda x:0 if x.PostId == null else x.PostId.Id, filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A' and x.DocumentStatus == 'C' and  x.IsFirstPost==True, FBase.ActiveObject.PostEntityExt))[0] if len(filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and x.ForbidStatus=='A'  and x.DocumentStatus == 'C' and  x.IsFirstPost==True, FBase.ActiveObject.PostEntityExt)) > 0 else 0)

步骤5:实际效果

场景三:申请人是多任岗,携带采购组织下,在申请人任岗中,携带未禁用且已审核任岗且是主人干且(这里是客户二开的字段逻辑判断)的岗位或部门。一人在多个组织下,任多个岗位,携带出一个组织下,一个任岗。

步骤1:员工任岗增加字段,字段名“选中此条任岗”

步骤2:增加视图

create view [view_empinfo_post] as select M.FID, M.FENTRYID, M.FWORKORGID, M.FDEPTID, M.FPOSTID, D.FDOCUMENTSTATUS, D.FFORBIDSTATUS, F.FISFIRSTPOST, D.FSELECTED from t_bd_stafftemp M inner join t_bd_staff D on D.FSTAFFID = M.FSTAFFID left join T_BD_STAFFPOSTINFO F on F.FSTAFFID = D.FSTAFFID

备注:D.FSELECTED 二开字段名

步骤3:参考场景一中步骤2,在分录里多加了字段

分录每个字段,字段名,绑定实体属性

选中此条任岗   FSELECTED  Selected

步骤4:在采购订单增加字段。基础资料_员工,基础资料_部门,基础资料_岗位。基础资料_员工需要引入以下字段

步骤5:设置基础资料_员工,值更新事件。

部门: 

F_UNW_Base_zc5 = 0 if FBase.ActiveObject == null else( map(lambda x:0 if x.PostDept == null else x.PostDept.Id, filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A' and x.DocumentStatus == 'C' and  x.Selected==True, FBase.ActiveObject.PostEntityExt))[0] if len(filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A'  and x.DocumentStatus == 'C' and  x.Selected==True, FBase.ActiveObject.PostEntityExt)) > 0 else 0)

 岗位:

 F_UNW_Base_imu =0 if FBase.ActiveObject == null else( map(lambda x:0 if x.PostId == null else x.PostId.Id, filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and  x.ForbidStatus=='A' and x.DocumentStatus == 'C' and  x.Selected==True, FBase.ActiveObject.PostEntityExt))[0] if len(filter(lambda x:x.WorkOrgId.id == FPurchaseOrgId.Id and x.ForbidStatus=='A'  and x.DocumentStatus == 'C' and  x.Selected==True, FBase.ActiveObject.PostEntityExt)) > 0 else 0)

步骤6:效果





员工携带岗位或者部门

【应用场景】业务单据上有申请人,申请人来源数据为员工,需要在单据上携带申请人对应的部门或者岗位。以采购订单为列:场景一:申请人是单...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息