[易飞]关于内部备料订单动态跟踪库存和销货量的统计

一 需求

各位销售总:

关于年度会议上提到,希望销售关注备料订单数量动态维护问题, 和IT沟通过, 我们可以在OA提供如下数据, 供各位参考,判断是否有必要调整备料订单的数量, 同时也请提出你们希望还要体现那些信息方便你们判断是否要做备料调整。

客户 料号 品名或规格 备料总数 最近2个月的销量 最新备料时间 公司库存 VMI库存 在制数量

合肥XXX 123 xzm-16187 10000 5000 2015.12.01 10000 10000 3000

数据内容:

1. 客户,品号,产品品名,该产品所有备料订单的合计备料数量,最后一次备料订单的下单时间。

2. 该客户最近2个月的出货数量。(VMI客户按销售对账数量统计)—客户的销售数量时间段, 1个月,2个月还是3个月?请销售确认一下多长比较合适,比较能贴近客户的近期需求。

3. 备料订单产品在公司和VMI仓的实时库存数量, 在途生产工单的数量。

以上信息,希望对你们评估备料数量是否合理有帮助。请在这两天回复一下, 以便IT可以着手做程序设计。

另:

一旦你们确认要减低或取消备料订单数量, 若这些备料订单是我们销售内部申请的, 发出通知后,让销售助理第一时间取消或减少。 同时让物控确认在途相关材料,生产计划,库存等情况, 能调整的及时调整, 造成库存的那也没办法, 做个库存报备,秋后再算,这样能及时将所有库存,含材料库存释放出来, 供其他订单使用, 降低呆滞风险, 同时也减产产能挤压。

若是客户下的备料订单, 任何的数量变动, 必须严格按公司的订单变更流程走。

可用库存函数:

-- =============================================
-- Author: <David Gong>
-- Create date: <>
-- Description: <可用库存>
-- =============================================
ALTER function [dbo].[GetCurrentInvQty](
@ITEM AS VARCHAR(20)
)returns decimal(15,2)
as
begin
declare @qty decimal(15,2), --固定仓库现有库存
@qty1 as decimal(15,2),     --未审核销货单据数量
@qty2 as decimal(15,2),     --未审核领料单数量
@MB025 AS char(1)           --品号属性
set @qty1=0
set @qty2=0

select @MB025=MB025 from INVMB WHERE [email protected]

select @qty=sum(MC007) from INVMC
where [email protected]  and MC002 in(‘01‘,‘02‘,‘03‘,‘04‘,‘05‘)
group by MC001

select @qty1=isnull(sum(TH008),0) from COPTH  WITH(NOLOCK) INNER JOIN COPTG ON TH001=TG001 AND TG002=TH002
where [email protected] AND TG023=‘N‘

--if (@MB025=‘P‘)  --采购件,则计入未审核领料单数量
--BEGIN
select @qty2=isnull(sum(TE005),0) from MOCTE  WITH(NOLOCK) inner join MOCTC ON TE001=TC001 AND TE002=TC002
where [email protected] AND TC009=‘N‘
--END

return @[email protected]@qty2
end

WIP数量

-- =============================================
-- Author: <David Gong>
-- Create date: <2016-01-22>
-- Description: <WIP Qty>
-- =============================================
ALTER function [dbo].[WIPQty](
@Item AS VARCHAR(20)
)returns decimal(18,4)
as
begin

declare @qty as decimal(18,4)

SELECT @qty=SUM(TA015-TA017) from MOCTA
WHERE TA013=‘Y‘ AND TA011 IN (‘2‘,‘3‘) AND [email protected]

return @qty

end

VMI仓数量

– =============================================

– Author:

– Create date: <2016-01-22>

– Description:

– =============================================

ALTER function [dbo].[VMIQty](

@CustomerNo as nvarchar(20),

@Item AS VARCHAR(20)

)returns decimal(18,4)

as

begin

declare @qty as decimal(18,4)

select @qty=sum(INVMC.MC007) from INVMC inner join CMSMC ON INVMC.MC002=CMSMC.MC001

where [email protected] and [email protected]

group by INVMC.MC001

return @qty

end

最近销货数量函数:

-- =============================================
-- Author: <David Gong>
-- Create date: <2016-01-22>
-- Description: <指定客户 品号 最近 销货数量>
-- =============================================
ALTER function [dbo].[RecentlyDaySaleQty](
@CustomerNo as nvarchar(10),
@Item AS VARCHAR(20),
@Day as int
)returns decimal(18,4)
as
begin

declare @qty as decimal(18,4)

SELECT @qty=sum(TH008) FROM COPTG INNER JOIN COPTH ON TG001=TH001 AND TG002=TH002
WHERE TG023=‘Y‘ AND [email protected] AND [email protected]
AND DATEDIFF(DAY,TG003,GETDATE())<[email protected]Day AND DATEDIFF(DAY,TG003,GETDATE())>=0

return @qty

end

最近备料日期

-- =============================================
-- Author: <David Gong>
-- Create date: <2016-01-22>
-- Description: <最近一次备料时间>
-- =============================================
ALTER function [dbo].[RecentlyBLDate](
@CustomerNo as nvarchar(20),
@Item AS VARCHAR(20)
)returns nvarchar(10)
as
begin

declare @TC003 as nvarchar(10)

select @TC003=TC003 from (
SELECT TOP 1 TC003  FROM COPTC INNER JOIN COPTD ON TC001=TD001 AND TC002=TD002
WHERE TC027=‘Y‘ and [email protected] and  [email protected]
order by TC003 DESC ) as A

return @TC003

end

SQL:


with 备料订单 as(
SELECT TC004 客户编码,MA002 客户简称,TD004 品号,MB002 品名,MB003 规格,sum(TD008-TD009) 备料数量
FROM COPTC  WITH(NOLOCK) INNER JOIN COPTD ON TC001=TD001 AND TC002=TD002
      left join INVMB ON TD004=MB001
      left join COPMA ON TC004=MA001
WHERE TC027=‘Y‘  and TC001=‘2207‘ and (TD008-TD009)<>0

GROUP BY TC004,TD004,MB002,MB003,MA002)

SELECT 客户编码,客户简称,品号,品名,规格,备料数量,
dbo.[RecentlyDaySaleQty](客户编码,品号,60) as 最近2月销量,[dbo].[RecentlyBLDate](客户编码,品号) as 最近备料日期,
dbo.GetCurrentInvQty(品号) as 可用库存,[dbo].[WIPQty](品号) as  在制数量,[dbo].[VMIQty](客户编码,品号) as  VMI数量

FROM 备料订单 

9秒钟的运行速度:

可用库存开销占用79%。

若备料比较多,运行速度会快速下降

可用库存改进成视图,表与表关联,减少可用库存的全扫描的次数。


Create View [dbo].[AvailableQty]
as
with A as
(
select MC001 as Item,sum(MC007) InvQty from INVMC WITH(NOLOCK)
where  MC002 in(‘01‘,‘02‘,‘03‘,‘04‘,‘05‘)
group by MC001
),
B as (
select TH004 as Item,isnull(sum(TH008),0) ShippedQty from COPTH  WITH(NOLOCK) INNER JOIN COPTG ON TH001=TG001 AND TG002=TH002
where  TG023=‘N‘
GROUP BY TH004
),
C as (
select TE004 as Item,sum(isnull(TE005,0)) requisitionQty from MOCTE  WITH(NOLOCK) inner join MOCTC ON TE001=TC001 AND TE002=TC002
where  TC009=‘N‘
Group by TE004)

select * from (
select A.Item,A.InvQty-isnull(B.ShippedQty,0)-isnull(C.requisitionQty,0) as AvailableQty from A LEFT JOIN B ON A.Item=B.Item
                LEFT JOIN C ON A.Item=C.Item) AS D
WHERE D.AvailableQty<>0

GO

改进后SQL:

with 备料订单 as(
SELECT TC004 客户编码,MA002 客户简称,TD004 品号,MB002 品名,MB003 规格,sum(TD008-TD009) 备料数量
FROM COPTC  WITH(NOLOCK) INNER JOIN COPTD ON TC001=TD001 AND TC002=TD002
      left join INVMB ON TD004=MB001
      left join COPMA ON TC004=MA001

WHERE TC027=‘Y‘  and TC001=‘2207‘ and (TD008-TD009)<>0

GROUP BY TC004,TD004,MB002,MB003,MA002)

SELECT 客户编码,客户简称,品号,品名,规格,备料数量,
dbo.[RecentlyDaySaleQty](客户编码,品号,60) as 最近2月销量,[dbo].[RecentlyBLDate](客户编码,品号) as 最近备料日期,
AvailableQty 可用库存,
[dbo].[WIPQty](品号) as  在制数量,[dbo].[VMIQty](客户编码,品号) as  VMI数量,b.区域

FROM 备料订单    left join AvailableQty ON 品号=Item
                 left join COPMA ON 客户编码=MA001
                 left join (select MR002,ltrim(MR003) as 区域  from CMSMR where MR001=‘2‘) AS b on COPMA.MA076=b.MR002

速度下降到1秒内完成:

在实际开发过程中,函数若涉及到多表的全扫描,数据量大的时候,资源开销会占用比较大,若能改成一次性获取结果集,最后关联的方式会提高运行效率。

时间: 2024-10-15 19:05:12

[易飞]关于内部备料订单动态跟踪库存和销货量的统计的相关文章

易飞ERP客户问题集合之一

导读:若不为空则抓取得是录入科目/部门限制里单身的部门区间,客户的科目没有做部门管理自, [问题]录入采购发票, [问题]应付子系统中税控接口在哪儿?, [问题]应收账款实时核销怎么处理?, [问题]损益结转后生成的凭证无法反过账,客户将其设置成别的凭证单别后, [问题]录入报表格式中%项都改为%了, [问题]资产负债表直接查询资产总计及负债和所有者权益或股东权益总计都跑到中间行显, [问题]在[现金流量表]中能 [解答] 单身会计科目若为空,开窗抓取得就是所有部门信息,若不为空则抓取得是录入科

易飞90设计自定义画面新增功能说明

易飞90设计自定义画面作业如下(图1): 图1 对同一程序可以设置多个方案编号 每个方案可以分别应用到:所有用户.以下组和以下用户(可以分组设置) 对于同一人群只能设置一个方案编号,例如所有用户只能设一个方案,组和用户也如此,而自定义方案的调用先后顺序是:用户----组----所有用户 设计定义画面自定义字段-字符型中新增控件类型:组合框和编辑框(图2) 图2 (1).组合框的用法如下(图3.4): 图3 图4 (2).编辑框 ①自定义画面开窗的设置如下适用于易飞70.80和90: 图5 以销售

易飞90设计自己定义画面新增功能说明

易飞90设计自己定义画面作业例如以下(图1): watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvVHJhc3Npb24=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" /> ?? 图1 对同一程序能够设置多个方案编号 每一个方案能够分别应用到:全部用户.下面组和下面用户(能够分组设置) 对于同一人群仅仅能设置一个方案编号,比如全部用户仅仅能设一

如何做易飞数据库跟踪

易飞后台采用SQL SERVER数据库.要跟踪数据库,可以按以下步骤进行. 一.建立BED应用程序名称. 路径:WINDOWS开始菜单|程序|神州数据易飞ERP系统|BDEAMIN. 在database页面中,选中Leader,将右边框中Definition中的APPLICATION NAME设置为"TTT",保存. 二.进行SQL SERVER的SQL事件探查器设置. 路径:WINDOWS开始菜单|程序|Microsoft SQL Server|事件探查器|文件|新建|跟踪. 输入S

VMware 安装易飞的方法

(Oracle VM VirtualBox 虚拟机可以直接安装易飞)VMware 在安装易飞系统管理员时会提示:“此台机器为虚拟机,系统控制员不允许安装在此类机器上,请注意!”其实只需要在安装的虚拟机上修改一个参数即可,找到安装在虚拟机上的以.vmx的文件,用记事本打开,找到SMBIOS.reflectHost = "FALSE" ,此处“FALSE”改为“TRUE”即可安装! —————————————来源:204U软件 VMware 安装易飞的方法

[易飞]凭证设计扩展字段之内容-文字显示格式

与华林在弄百分比的时候注意到这个功能:故做简单测试. 之前我们介绍过如何设计扩展字段,以及显示成条码和二维码.其实在内容设计包含了一些小细节如:文字显示格式. 在9.0以前我们如果要实现字符串显示成日期格式,数值显示百分比形式,数字转化成大写格式.怎么办? 办法1. 写触发器更新自定义字段 办法2  写自定义函数 在9.0后凭证设计增加了扩展字段之后,扩展字段中可以很方便的显示文字格式. 那我们就来做一个简单测试吧: 第一:设计自定义画面,我们取4个字段,2个数值 2个文字型的.我是取:测试日期

易飞报表数据库PostgreSQL改成MSSQL方式

简述步骤 1.在mssql上新增一个数据库,设定如下,编码要选择"chinese_PRC_CI_AL_KS_WS" 2.用sql命令.在report中新增一个View 3.BDE设定.leadertemp50 和 leader一样的设定,但DATABASENAME = report 4.condctors.ini改成报表数据库DBE 相信操作步骤见文档: 主站下载: http://www.qywalk.com/  博客:http://blog.sina.com.cn/qianyuman

易飞-凭证打印异常(字符中含有空格,自动分行导致显示异常)

在打印凭证中通常会显示自定义或者输入的内容.比如:在电子行业中的插件位置,生产人员经常在作业的时候经常会根据领料单显示的插件位置来作业. 至于为何不根据作业指导书或者BOM等其他方式来确认不在今天我们讨论的范围. 解决办法一:直接行高加大.当然可以,但是如果只是为了一张工单中的几个元件的插件位置显示而已,增加了纸张打印.从成本节约角度不太实用 解决办法二:评估了最多字符也可以在两行中显示完毕的情况下,自动分行差一两个字符的话,就把字体设置小点. 现在问题是,为和第二行中CA9,之后就自动分行了呢

易飞9.08整单拆分批号功能

计划物流部陈Sir向公司申请报废一批过期的样品,有990多笔,需要IT进行协助导入系统,其他出库单走账. 易飞9.05设计导入导出规则. TB029才是库位,第一次导入发现后台数据库中存在(TB024),前台 木有.第二次更正,测试OK. TB024是易飞6.0以前的库位. 导出模板,然后填写数据. 导入之后,手工一个个选择批次号太辛苦啦,那么有什么便捷的方法么?有:工具栏上有整批拆分批号功能. 拆分,报错.变量不是一个数组,估计是程序bug,更新小版本试试最新版本是9.08.更新之后测试,成功