材料出库单补料选生产加工单选不到产品

分享到:

2023-05-31 09:27:48

材料出库单补料选生产加工单选不到产品

问题现象:

材料出库单业务类型为生产补料,选择生产加工单时,产品明细选不到某个产品,过滤条件中也勾选了包含已执行完领料。

见下图,生产加工单产品明细有22行,材料出库单选择生产加工单时产品明细只有21行,

经过查看缺少的产品明细是00020013

问题分析:

1、用事件探查跟踪器跟踪完后复制下面跟踪过后的脚本到数据库中执行。

select TOP 10000 [ManufactureOrderDetail].isManualFinish, [ManufactureOrderDetail.ManufactureOrder].code AS

ManufactureOrderDetail_ManufactureOrder_Code,[ManufactureOrderDetail.Inventory].code AS

ManufactureOrderDetail_Inventory_Code,[ManufactureOrderDetail.Inventory].name AS ManufactureOrderDetail_Inventory_Name,[ManufactureOrderDetail].freeItem0 AS ManufactureOrderDetail_freeItem0,[ManufactureOrderDetail].freeItem1 AS ManufactureOrderDetail_freeItem1,[ManufactureOrderDetail].freeItem2 AS ManufactureOrderDetail_freeItem2,[Inventory].code AS Inventory_Code,[Inventory].name AS Inventory_Name,[Inventory].specification AS Inventory_Specification,[SubstituteMainInventory].code AS SubstituteMainInventory_Code,[SubstituteMainInventory].name AS SubstituteMainInventory_Name,[ManufactureOrderMaterialDetailDTO].freeItem0 AS freeItem0,[ManufactureOrderMaterialDetailDTO].freeItem1 AS freeItem1,[ManufactureOrderMaterialDetailDTO].freeItem2 AS freeItem2,[Process].name AS Process_Name,[Unit].name AS Unit_Name,[ManufactureOrderMaterialDetailDTO].quantity AS Quantity,[ManufactureOrderMaterialDetailDTO].totalRequisitionedQuantity AS TotalRequisitionedQuantity,[ManufactureOrderMaterialDetailDTO].totalAdditionalMaterialQuantity AS TotalAdditionalMaterialQuantity,case when [ManufactureOrderMaterialDetailDTO].quantity-IsNull([ManufactureOrderMaterialDetailDTO].totalRequisitionedQuantity,0)<0 then 0 else [ManufactureOrderMaterialDetailDTO].quantity-IsNull([ManufactureOrderMaterialDetailDTO].totalRequisitionedQuantity,0)end AS HavePickingQuantity,[ManufactureOrderMaterialDetailDTO].id AS ID,[ManufactureOrderMaterialDetailDTO].idManufactureOrderDetailDTO AS

IdmanufactureOrderDetailDTO,[ManufactureOrderMaterialDetailDTO].voucherId AS VoucherId,[ManufactureOrderDetail].code AS ManufactureOrderDetail_Code,[ManufactureOrderMaterialDetailDTO].code AS Code,[Inventory].id as Inventory_id,[Unit].id as Unit_id,[ManufactureOrderDetail].id as ManufactureOrderDetail_id,[ManufactureOrderDetail.Inventory].id as ManufactureOrderDetail_Inventory_id,[ManufactureOrderDetail.ManufactureOrder].id as ManufactureOrderDetail_ManufactureOrder_id,[Process].id as Process_id,[SubstituteMainInventory].id as SubstituteMainInventory_id

from [MP_ManufactureOrder_Material] [ManufactureOrderMaterialDetailDTO]

LEFT OUTER JOIN [V_AA_Inventory] [Inventory] on [ManufactureOrderMaterialDetailDTO].idinventory=[Inventory].id

LEFT OUTER JOIN [AA_Unit] [Unit] on [ManufactureOrderMaterialDetailDTO].idunit=[Unit].id

LEFT OUTER JOIN [MP_ManufactureOrder_b] [ManufactureOrderDetail] on [ManufactureOrderMaterialDetailDTO].idManufactureOrderDetailDTO=[ManufactureOrderDetail].id

LEFT OUTER JOIN [V_AA_Inventory] [ManufactureOrderDetail.Inventory] on [ManufactureOrderDetail].idinventory=[ManufactureOrderDetail.Inventory].id

LEFT OUTER JOIN [MP_ManufactureOrder] [ManufactureOrderDetail.ManufactureOrder] on [ManufactureOrderDetail].idManufactureOrderDTO=[ManufactureOrderDetail.ManufactureOrder].id

LEFT OUTER JOIN [AA_Department] [ManufactureOrderDetail.ManufactureOrder.Department] on [ManufactureOrderDetail.ManufactureOrder].iddepartment=[ManufactureOrderDetail.ManufactureOrder.Department].id

LEFT OUTER JOIN [AA_Process] [Process] on [ManufactureOrderMaterialDetailDTO].idProcess=[Process].id

LEFT OUTER JOIN [V_AA_Inventory] [SubstituteMainInventory] on [ManufactureOrderMaterialDetailDTO].idSubstituteMainInventory=[SubstituteMainInventory].id

where 1=1 And (([ManufactureOrderDetail.Inventory].Code>= N'00020013' AND [ManufactureOrderDetail.Inventory].Code<= N'00020013')

And ([ManufactureOrderDetail.ManufactureOrder].Code>= N'MO-2022-09-0002' AND [ManufactureOrderDetail.ManufactureOrder].Code<= N'MO-2022-09-0002')) AND [ManufactureOrderDetail.ManufactureOrder].VoucherState = N'189'

AND [ManufactureOrderDetail.ManufactureOrder.Department].Disabled = 0 AND [ManufactureOrderDetail.Inventory].Disabled = 0

AND isnull([ManufactureOrderDetail].isManualFinish,0) <> 1

AND [Inventory].Disabled = 0

AND isnull(ManufactureOrderMaterialDetailDTO.TotalDispatchingCount,0) <= 0 AND ISNULL(ManufactureOrderMaterialDetailDTO.IsClose,0) = 0

AND ISNULL(ManufactureOrderMaterialDetailDTO.SubstituteGroupID, N'') = N'' AND IsNull(ManufactureOrderMaterialDetailDTO.IsInvertedMaterial,0) = 0

AND 1=1 order by [ManufactureOrderDetail.ManufactureOrder].Code,[ManufactureOrderDetail].Code,ManufactureOrderMaterialDetailDTO.Code

2、执行发现是语句isnull([ManufactureOrderDetail].isManualFinish,0) <> 1 引起的问题。

3、执行下面语句查询该字段在软件中代表的字段意思,可以发现该字段表示的是【是否手动完工】

select*from eap_DTOProperty where Name='isManualFinish'

 

  1. 在软件中生产加工但单产品明细勾选显示手动完工字段,可以看到产品00020013已手动完工,所以在生产补料时选不到。

解决方案:

1、取消生产加工单上该产品手工完工的勾选

声明:此篇为用友服务中心文章,转载请标明出处链接:
  • 相关文章
  • 热门下载
  • 数据修复
  • 热门标签
合作伙伴