金蝶K3 WISE BOM多级展开_物料齐套表

简介: /****** Object: StoredProcedure [dbo].[pro_bobang_ICItemQiTao] Script Date: 07/29/2015 16:12:10 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO alter PROC [dbo].
/****** Object:  StoredProcedure [dbo].[pro_bobang_ICItemQiTao]    Script Date: 07/29/2015 16:12:10 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
alter PROC [dbo].[pro_bobang_ICItemQiTao]
@FBomNumber1 varchar(50),  --bom单号
@FBomNumber2 varchar(50)   --bom单号
as
begin
set nocount on

  --1.--业务员查找某个BOM单,包含所有BOM(已使用,未使用,已审核,未审核)
  with cte as (
  select convert(varchar(100),'') as cen,Finterid,convert(varchar(50),'') as fpbomnumber,Fbomnumber AS FCbomnumber,fitemid,fitemid as fpitemid,0 as fpinterid,convert(decimal(18,4),1) as FBomQty,convert(varchar(500),RIGHT('000000'+CONVERT(varchar(10),Finterid),6)) as code  from ICBOM 
  where (1=1)
  and FBOMNumber >= @FBomNumber1
  and FBOMNumber <= case when @FBomNumber2='' then (select MAX(FBOMNumber) from ICBOM) else @FBomNumber2 end
  union all
  select convert(varchar(100),cen+'------'),a.finterid,convert(varchar(50),c.FCbomnumber) as fpbomnumber,a.fbomnumber as fcbomnumber,a.fitemid,c.fpitemid,a.fpinterid,convert(decimal(18,4),a.FAuxQty) as FBomQty,convert(varchar(500),c.code+RIGHT('000000'+convert(varchar(10),a.finterid),6)) as code
  from ( 
  select t1.finterid as fpinterid,t2.FInterID,t1.FItemID,t2.FBOMNumber,t1.FAuxQty 
  from  ICBOMChild t1 inner join ICBOM t2 on t1.FItemID=t2.FItemID
  where  t2.FParentID=1038
  union all 
  select t1.finterid as fpinterid,0,t1.fitemid,'',t1.FAuxQty from ICBOMChild t1 where not exists (select * from ICBOM where FItemID=t1.FItemID)) a 
  inner join cte c on a.fpinterid=c.FInterID
  )
  select  cen,finterid,fpbomnumber,fcbomnumber,fitemid,fpitemid,fpinterid,FBomQty,code into #tmp1 from cte order by code
  OPTION (MAXRECURSION 0)
  
  --2.--获取成品库存(因为明细材料的需求量,还要减去现有成品库存隐形消耗的材料,才能体现真实需求量)
  declare @kc decimal(18,6)
  declare @fitemid int 
  select @kc=isnull(SUM(t1.FQty),0),@fitemid=t1.FItemID from ICInventory t1 
  inner join (select FItemID from ICBOM where FBOMNumber=@FBomNumber1) t2 on t1.FItemID=t2.FItemID
  group by t1.FItemID;
  
  --3.--所有正在使用的BOM单(已使用,已审核),为了检索明细物料在哪些bom(成品)中使用,进而计算需求数量
  with cte as (
  select convert(varchar(100),'') as cen,Finterid,convert(varchar(50),FBOMNumber) as fpbomnumber,Fbomnumber AS FCbomnumber,fitemid,fitemid as fpitemid,0 as fpinterid,convert(decimal(18,4),1) as FBomQty,convert(varchar(500),RIGHT('000000'+CONVERT(varchar(10),Finterid),6)) as code  from ICBOM 
  where (1=1) and FParentID=1038
  union all
  select convert(varchar(100),cen+'------'),a.finterid,convert(varchar(50),c.fpbomnumber),a.fbomnumber as fcbomnumber,a.fitemid,c.fpitemid,a.fpinterid,convert(decimal(18,4),a.FAuxQty) as FBomQty,convert(varchar(500),c.code+RIGHT('000000'+convert(varchar(10),a.finterid),6)) as code
  from ( 
  select t1.finterid as fpinterid,t2.FInterID,t1.FItemID,t2.FBOMNumber,t1.FAuxQty 
  from  ICBOMChild t1 inner join ICBOM t2 on t1.FItemID=t2.FItemID
  where  FParentID=1038
  union all 
  select t1.finterid as fpinterid,0,t1.fitemid,'',t1.FAuxQty from ICBOMChild t1 where not exists (select * from ICBOM where FItemID=t1.FItemID)) a 
  inner join cte c on a.fpinterid=c.FInterID
  )
  select  fpbomnumber,fitemid,fpitemid,sum(FBomQty) as FBomQty into #tmp2 
  from cte group by fpbomnumber,FItemID,fpitemid 
  OPTION (MAXRECURSION 0)
  
  --4.--取采购价格管理物料最新日期的价格(已审核,可使用)
SELECT distinct u1.FSupID,u1.FItemID,case when u1.fcyid=1 then u1.FPrice*t3.FExchangeRate/(1+v1.FValueAddRate/100) else u1.FPrice*t3.FExchangeRate end as FPrice,
t3.FName AS FCyName,u1.FQuoteTime,u1.FDisableDate
into #tmp3 FROM t_SupplyEntry  u1 
     INNER JOIN t_ICItem t1 ON u1.FItemID=t1.FItemID
     INNER JOIN t_Supply u2 ON u1.FSupID=u2.FSupID AND u1.FItemID=u2.FItemID AND u1.FPType=u2.FPType
     INNER JOIN t_Currency t3 ON t3.FCurrencyID=u1.FCyID
     INNER JOIN t_Currency u3 ON u3.FCurrencyID=u2.FCurrencyID
     INNER JOIN t_Supplier v1 ON u1.FSupID=v1.FItemID
     inner join 
     (
     select MAX(fquotetime) as fquotetime,FItemID from t_SupplyEntry where FCheckerID>0 group by FItemID
     ) bb on bb.FItemID=u1.FItemID and bb.fquotetime=u1.FQuoteTime
 WHERE t1.FErpClsID not in (6,8) and u1.FCheckerID>0 and u1.FUsed=1

select w.cen+w2.FNumber as FTree,w2.FName,w2.FModel,w3.FName as FUnitName,w.FBomQty,
--需求量=产品预测量+销售订单量-已发货量-即时库存量-该BOM成品耗费材料库存(仅明细材料)
--w.FKCQty,w.FPRQty,w.FPOQty,w.FPPQty,w.FXSQty1,w.FXSQty2,w.FPPQty+w.FXSQty1-w.FXSQty2-w.FKCQty-(case when w.FItemID=@fitemid then 0 else @kc*w.FBomQty end) as XQSL,(case when w.FItemID=@fitemid then 0 else @kc*w.FBomQty end)
--需求量改为生产需求
--需求量=产品预测量+销售订单量-已发货量-该BOM成品库存及耗费材料库存
w.FKCQty,w.FPRQty,w.FPOQty,w.FStockQty,w.FPPQty,w.FXSQty1,w.FXSQty2,isnull(@kc*w.FBomQty,0) as cbkc,isnull(w.FPPQty,0)+isnull(w.FXSQty1,0)-isnull(w.FXSQty2,0)-isnull(@kc*w.FBomQty,0) as XQSL,w5.FName as FSupName
from
(
select t1.code,t1.cen,t1.FItemID,t1.FBomQty,isnull(t4.FKCQty,0) as FKCQty,isnull(t5.FPRQty1,0)-isnull(t6.FPRQty2,0) as FPRQty,t11.FStockQty,
isnull(t7.FPOQty1,0)-isnull(t7.FPOQty2,0) as FPOQty,isnull(sum(t8.FPPQty1*t3.FBomQty),0)-isnull(sum(t9.FPPQty2*t3.FBomQty),0) as FPPQty,
isnull(sum(t10.FXSQty1*t3.FBomQty),0) as FXSQty1,isnull(sum(t10.FXSQty2*t3.FBomQty),0) as FXSQty2,t2.FErpClsID
from #tmp1 t1
left join t_ICItem t2 on t1.FItemID=t2.FItemID
left join #tmp2 t3 on t1.FItemID=t3.FItemID
left join (select SUM(FQty) as FKCQty,FItemID from ICInventory group by FItemID) t4 on t1.FItemID=t4.FItemID
--采购申请单的数量
left join 
(
select SUM(t2.FQty) as FPRQty1,t2.FItemID from PORequest t1 
inner join  PORequestEntry t2 on t1.FInterID=t2.FInterID
where t1.FStatus>0 and t1.FCancellation=0 
group by t2.FItemID
) t5 on t1.FItemID=t5.FItemID
--PR下推采购订单或委外订单
left join
(
--采购申请单下推采购订单
select SUM(t2.FQty) as FPRQty2,t2.FItemID from POOrder t1
inner join POOrderEntry t2 on t1.FInterID=t2.FInterID
inner join t_ICItem t3 on t2.FItemID=t3.FItemID
where t1.FCancellation=0 and t2.FSourceTranType=70 and t3.FErpClsID<>3
group by t2.FItemID
--采购申请单下推委外订单
union all
select SUM(t2.FQty) as FPRQty2,t2.FItemID from ICSubContract t1
inner join ICSubContractEntry t2 on t1.FInterID=t2.FInterID
inner join t_ICItem t3 on t2.FItemID=t3.FItemID
where t1.FCancellation=0 and t2.FClassTypeID_SRC=-70 and t3.FErpClsID=3
group by t2.FItemID
) t6 on t1.FItemID=t6.FItemID
--PO
left join
(
--采购订单的数量、入库数量(外购件下推采购订单)
select SUM(t2.FQty) as FPOQty1,SUM(t2.FStockQty) as FPOQty2,t2.FItemID from POOrder t1
inner join POOrderEntry t2 on t1.FInterID=t2.FInterID
inner join t_ICItem t3 on t2.FItemID=t3.FItemID
where t1.FCancellation=0 and t3.FErpClsID<>3
group by t2.FItemID
--委外订单的数量、入库数量(委外加工件下推委外订单)
union all
select SUM(t2.FQty) as FPOQty1,SUM(t2.FStockQty) as FPOQty2,t2.FItemID from ICSubContract t1
inner join ICSubContractEntry t2 on t1.FInterID=t2.FInterID
inner join t_ICItem t3 on t2.FItemID=t3.FItemID
where t1.FCancellation=0 and t2.FClassTypeID_SRC=-70 and t3.FErpClsID=3
group by t2.FItemID
) t7 on t1.FItemID=t7.FItemID
--产品预测单的数量
left join
(
select sum(t2.FQty) as FPPQty1,t2.FItemID from PPOrder t1
inner join PPOrderEntry t2 on t1.FInterID=t2.FInterID
where t1.FStatus=1 and t1.FCancellation=0 and t2.FNeedDateEnd>GETDATE()                                                                   
group by t2.FItemID
) t8 on t3.FPItemID=t8.FItemID
--产品预测单下推销售订单的数量
left join
(
select SUM(t2.FQty) as FPPQty2,t2.FItemID from SEOrder t1
inner join SEOrderEntry t2 on t1.FInterID=t2.FInterID
where t1.FCancellation=0 and t2.FSourceTranType=87 
group by t2.FItemID
) t9 on t3.FPItemID=t9.FItemID
--销售订单的数量,销售订单下推销售出库的数量
left join 
(
select SUM(t2.FQty) as FXSQty1,SUM(t2.FStockQty) as FXSQty2,t2.FItemID from SEOrder t1
inner join SEOrderEntry t2 on t1.FInterID=t2.FInterID
where t1.FCancellation=0  
group by t2.FItemID
) t10 on t3.FPItemID=t10.FItemID
--采购入库数量,委外加工入库数量
left join 
(
select t1.FItemID,SUM(FQty) as FStockQty from ICStockBillEntry t1 inner join ICStockBill t2 on t1.FInterID=t2.FInterID
where (t2.FTranType=1 or t2.FTranType=5) and t2.FCancellation=0
group by t1.FItemID
) t11 on t1.FItemID=t11.FItemID
group by t1.code,t1.cen,t1.FItemID,t1.FBomQty,t4.FKCQty,t5.FPRQty1,t6.FPRQty2,t7.FPOQty1,t7.FPOQty2,t11.FStockQty,t2.FErpClsID
) w
inner join t_ICItem w2 on w.FItemID=w2.FItemID
inner join t_MeasureUnit w3 on w2.FUnitID=w3.FItemID
left join #tmp3 w4 on w4.FItemID=w.FItemID
left join t_Supplier w5 on w4.FSupID=w5.FItemID
order by w.code,w2.FNumber

drop table #tmp1
drop table #tmp2
set nocount off
end 
--select * from ICBOM
--select * from ICBOMChild
--exec pro_bobang_ICItemQiTao 'BOM000080','BOM000080'
--exec pro_bobang_ICItemQiTao '*FBomNumber*','#FBomNumber#'

 

网名:浩秦; 邮箱:root#landv.pw; 只要我能控制一個國家的貨幣發行,我不在乎誰制定法律。金錢一旦作響,壞話隨之戛然而止。
目录
相关文章
|
存储 缓存 算法
哈希函数:保护数据完整性的关键
哈希函数:保护数据完整性的关键
|
5月前
|
JavaScript 调度
BOM如何编制与管理?
BOM英文全称 Bill of Material,即“物料清单”,也称产品结构表。在制造业管理信息系统中,经常会提到BOM。物料清单是指产品所需零部件明细表及其结构。在ERP系统中,“物料”一词有着广泛的含义,它是所有产品、半成品、在制品、原材料、配套件、协作件、易耗品等与生产有关的物料的统称。
|
11月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
896 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
数据挖掘 Python
🚀告别繁琐!Python I/O管理实战,文件读写效率飙升的秘密
在日常编程中,高效的文件I/O管理对提升程序性能至关重要。Python通过内置的`open`函数及丰富的库简化了文件读写操作。本文从基本的文件读写入手,介绍了使用`with`语句自动管理文件、批量读写以减少I/O次数、调整缓冲区大小、选择合适编码格式以及利用第三方库(如pandas和numpy)等技巧,帮助你显著提升文件处理效率,让编程工作更加高效便捷。
288 0
|
Prometheus 监控 Cloud Native
如何优化Java应用的内存使用
如何优化Java应用的内存使用
|
人工智能 JavaScript 前端开发
通义灵码 2.0 全新升级,阿里云正式推出繁星计划
在上午的通义灵码 2.0 发布会上,阿里云正式推出通义灵码繁星计划。通义灵码繁星计划希望为每位开发者送一个智能编码助手,为职场、校园开发者提供不同维度的产品免费使用、体系化课程学习、人才认证考试等权益,同时长期建设通义灵码MVP、校园大使体系,激活创新潜力,培养创新明星,点亮追梦之旅。
|
开发者
鸿蒙next版开发:ArkTS组件通用属性(Popup控制)
在HarmonyOS 5.0中,ArkTS提供了灵活的Popup控制属性,允许开发者创建和管理弹出窗口,用于显示额外信息、提示、表单等,增强用户交互体验。本文详解了Popup控制的通用属性,并提供了示例代码。通过bindPopup方法,可以将弹出窗口绑定到组件上,支持多种用途,如显示额外信息、表单提交和交互反馈。
749 1
|
前端开发 JavaScript API
React、Vue.js 和 Angular前端三大框架对比与选择
前端框架是用于构建用户界面的工具和库,它提供组件化结构、数据绑定、路由管理和状态管理等功能,帮助开发者高效地创建和维护 web 应用的前端部分。常见的前端框架如 React、Vue.js 和 Angular,能够提高开发效率并促进团队协作。
1380 4
|
存储 关系型数据库 数据库
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
迎峰而上:汇联易依托阿里云RDS通用云盘,加速业务智能化升级
超1/3中国500强企业都在用的「汇联易」,为什么选用阿里云RDS?
|
运维 Cloud Native 前端开发
GIAC | KCL:声明式的云原生配置策略语言
大家好,我是来自蚂蚁集团的同学,很高兴能在GIAC的编程语言新范式板块和大家分享《KCL配置策略语言》。KCL语言是蚂蚁内部的Kusion解决方案中针对云原生基础设施配置代码化自研的DSL语言,目前已经在建站场景等一些场景开始小范围推广试用。
GIAC | KCL:声明式的云原生配置策略语言