壹佰网|ERP100 - 企业信息化知识门户

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2172|回复: 4

[K/3] 如何 让MRP计算的预计入库量考虑采购合同

[复制链接]
发表于 2011/3/25 10:31:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。如果您注册时有任何问题请联系客服QQ: 83569622  。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我用的是K3 12.1 WISE 版本 ,自定义了一个流程就是MRP计算产生计划订单,审核投放产生采购申请单,由采购申请单下推采购合同流程(目的是为看采购合同金额执行明细及汇总表,方便对帐,系统自带的采购订单执行表不好用),但会产生这样一个问题。描述如下:
1.当采购申请单下推采购合同后自动关闭,MRP的预计入库量就不会考虑这些采购申请单。
2.但是当采购合同未审核 或己审核下推采购订单未审核后,系统再次进行MRP计算时就没有了预计入库了,会再次产生需求,就会出现重复产生需求的现象。


第2个问题是

系统物料的默认的仓库只有一个,我们的管理是事业部制,同一个物料在各事业部的库房都有,且在每个库房的安全库存都不一致,当MRP计算方案考虑安全库存选项时,无法实现针对各个库房安全库存设置,系统无法实现安全库存的自动管理,现只能变通的进行人为管理,请问如何实现,物料的默认库房(可设多个)+安全库存 一起设置?
发表于 2011/3/27 13:13:50 | 显示全部楼层
关注中!~
 楼主| 发表于 2011/4/1 16:07:34 | 显示全部楼层
第2个问题找到一个变通的解决方法,在基础资料--公用资料 ---采购管理--存量管理---设置第个物料针对各个库房的最低存量与最高存量 可通过后台批量设置 update icstorageset 表 在文件那有个进入采购系统提示按钮 设置完后 一进入采购模块 在桌面右下脚会k3图标在闪动,打开可生成采购申请单 存储过程是 getoverflowstorage 但不知在哪能查到
 楼主| 发表于 2011/4/1 16:10:02 | 显示全部楼层
USE [AIS20110310170031]

GO

/****** Object:  StoredProcedure [dbo].[GetOverFlowStorage]    Script Date: 03/24/2011 16:16:01 ******/

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER OFF

GO

/******************************************************************************

* FUNCTION NAME: GetOverFlowStorage                                          *

* CREATED BY:    Tipi                                                        *

* CREATION DATE: 2005-05-31                                                  *

* DESCRIPTION:   存量管理检查存储过程                                        *

* PARAMETERS:                                                                *

******************************************************************************/

ALTER  PROCEDURE [dbo].[GetOverFlowStorage]

    @nFYear        INT,

    @nFPeriod      INT,

    @dtBegin       SMALLDATETIME,

    @dtEnd         SMALLDATETIME,

    @strFromItem   VARCHAR (2048),

    @StrWhereItem  VARCHAR (2048),

    @strFromStock  VARCHAR (2048),

    @StrWhereStock VARCHAR (2048)

AS

    SET NOCOUNT ON

    SET TRANSACTION ISOLATION LEVEL  READ UNCOMMITTED

    DECLARE @StrSql VARCHAR (8000)

    DECLARE @StrItemNumber VARCHAR(50)

    --根据设置表构造检查临时表

    SELECT FItemID,FStockID,0 AS FQty Into #tmp_xia FROM ICstorageSET where FCheck=1

   

    --更新及时库存数量

    --实仓

    Update t1 SET t1.FQty=isnull(t2.FQty,0) FROM #tmp_xia t1 inner join (SELECT FItemid,FStockID,sum(Fqty) AS fqty FROM  icinventory GROUP BY fitemid,fstockid )t2 ON t1.FItemID=t2.FItemID and t1.FStockID=t2.FStockID

    --虚仓

    Update t1 SET t1.FQty=isnull(t2.FQty,0) FROM #tmp_xia t1 inner join ( SELECT FItemid,FStockID,sum(Fqty) AS fqty FROM  POInventory GROUP BY fitemid,fstockid ) t2 ON t1.FItemID=t2.FItemID and t1.FStockID=t2.FStockID

    --====/开始/======统计出非明细仓库中的的所有物料的即时库存(包括设置了检查点的物料和没有设置的物料)的数量==========

    --声明@i保存最大的明细仓库的级数

    declare @i AS int

    SELECT @i=MAX(flevel) FROM t_item where fitemclassid=5

    --如果存在非明细仓库

    if @i>1

    begin

        --声明@j保存倒数第二级的明细仓库的级数

        declare @j int

        SET @j = @i-1

        ----/开始/--从#tmp_xia把所有物料的最下层的明细数量汇总到它的上一级(仅仅上一级)的仓库中

        while @i>1

        begin

            update #tmp_xia SET #tmp_xia.FQty=t3.FQty FROM (

            SELECT t2.fitemid,t1.FParentID,sum(t2.FQty) AS FQty,t2.FStockID

            FROM  #tmp_xia t2 ,t_item t1

            where t1.FLevel = @j and t2.FStockID=t1.FItemID  and t1.FItemClassID=5

            GROUP BY t2.fitemid,t1.FParentID,t2.FStockID ) t3

            where #tmp_xia.FStockId=t3.FStockID and #tmp_xia.FItemID=t3.FItemID

            SET @i = @i-1

        end

    end

    --====/结束/======统计出非明细仓库中的的所有物料的即时库存(包括设置了检查点的物料和没有设置的物料)的数量==========

      

    --====/开始/======================取出所需的数据=======================--

    --====/开始/==少于最低库存====--

    SELECT @StrItemNumber = ISNULL(FValue, '0' ) FROM t_Systemprofile WHERE FKey = 'UseShortNumber' AND FCategory = 'IC'

    IF @StrItemNumber = '1'

        SET @StrItemNumber = 'FShortNumber'

    ELSE

        SET @StrItemNumber = 'FNumber'

    SET @StrSql= 'SELECT t3.' + @StrItemNumber + ' AS FNumber ,t3.FName AS FName,t6.FModel AS FModel,t4.FFullName AS FStockName,t4.' + @StrItemNumber + ' AS FStockNumber,

        t1.FQty AS FQty,t2.FmaxStorage AS FMaxStorage ,t2.FminStorage AS FMinStorage,t1.FQty-t2.FminStorage AS banlance,t5.FQtyDecimal,

        t1.FStockID AS FStockID ,t1.FItemID AS FItemID , t5.FUnitID AS FUnitID ,t7.FName AS FUnitName,t7.' + @StrItemNumber + ' AS FUnitNumber,t5.FLeadTime AS FLeadTime,

        t5.FAuxClassID ,t5.FSecUnitID AS FSecUnitID ,t8.FName AS FSecUnitName ,t8.' + @StrItemNumber + ' AS FSecUnitNumber,ISNULL(t5.FSecCoefficient,0) AS FSecCoefficient,

        t5.FOrderUnitID AS FOrderUnitID ,t9.FName AS FOrderUnitName ,t9.' + @StrItemNumber + ' AS FOrderUnitNumber,ISNULL(t9.FCoefficient,0) AS FOrderCoefficient,

        t5.FStoreUnitID AS FStoreUnitID ,t10.FName AS FStoreUnitName ,t10.' + @StrItemNumber + ' AS FStoreUnitNumber,ISNULL(t10.FCoefficient,0) AS FStoreCoefficient

         FROM #tmp_xia t1 left join

        (SELECT * FROM ICstorageSET where FCheck=1) t2 ON t1.Fitemid=t2.Fitemid and t1.FStockid=t2.FStockid inner join t_Item t3

        ON t3.FItemid=t2.Fitemid LEFT JOIN t_Item t4 ON t4.FItemid=t1.FStockID LEFT JOIN t_ICitem t5 ON  t5.FItemid=t2.Fitemid

        LEFT JOIN t_MeasureUnit t7 ON t5.FUnitID = t7.FItemID

        LEFT JOIN t_MeasureUnit t8 ON t5.FSecUnitID = t8.FItemID

        LEFT JOIN t_MeasureUnit t9 ON t5.FOrderUnitID = t9.FItemID

        LEFT JOIN t_MeasureUnit t10 ON t5.FStoreUnitID = t10.FItemID

        LEFT JOIN (SELECT t_item.FItemID AS FItemID ,t_ICItem.FModel AS FModel FROM  t_Item ,t_ICItem where t_Item.FItemID=t_IcItem.FItemID ) t6

        ON t6.FItemID=t2.Fitemid ' + @StrFromItem +@StrFromStock + ' where t1.FQty < t2.FminStorage and t2.FminStorage>0 '

        + @StrWhereItem + @StrWhereStock + ' order by t3.' + @StrItemNumber + ',t3.FStockID '

   

    --print @StrSql

    exec(@StrSql)

    --====/开始/==超过最高库存====--

    -- 物料代号、  物料名称、所在仓位、             即时存量、最高库存、    差额、采购数量、                           

    SET @StrSql= 'SELECT t3.' + @StrItemNumber + ' AS FNumber,t3.FName AS Fname,t6.FModel AS FModel,t4.FFullName AS FStockName,t4.' + @StrItemNumber + ' AS FStockNumber,

        t1.FQty AS FQty,t2.FmaxStorage AS FMaxStorage,t2.FminStorage AS FMinStorage,t1.FQty-t2.FmaxStorage AS banlance,t1.FStockID AS FStockID ,

        t7.FName AS FUnitName,t7.' + @StrItemNumber + ' AS FUnitNumber, t5.FQtyDecimal

        FROM #tmp_xia t1 LEFT JOIN (SELECT * FROM ICstorageSET where FCheck=1) t2 ON  t1.Fitemid=t2.Fitemid and t1.FStockid=t2.FStockid

        LEFT JOIN t_Item t3 ON t3.FItemid=t2.Fitemid LEFT JOIN t_Item t4 ON t4.FItemid=t1.FStockID  LEFT JOIN t_ICitem t5 ON  t5.FItemid=t2.Fitemid

        LEFT JOIN t_MeasureUnit t7 ON t5.FUnitID = t7.FItemID

        LEFT JOIN (SELECT t1.FItemID AS FItemID ,t2.FModel AS FModel FROM  t_Item t1 ,t_ICItem t2 where t1.FItemID=t2.FItemID ) t6

        ON t6.FItemID=t2.Fitemid ' + @StrFromItem + @StrFromStock + ' where t1.FQty > t2.FmaxStorage and t2.FmaxStorage>0 '

        + @StrWhereItem + @StrWhereStock + ' order by t3.' + @StrItemNumber + ',t3.FStockID '

    exec(@StrSql)

    drop table #tmp_xia
发表于 2011/4/16 14:43:32 | 显示全部楼层
感觉楼主的这两个问题好像金蝶目前的版本都解决不了,关注中。。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|手机版|壹佰网 ERP100 ( 京ICP备19053597号-2 )

Copyright © 2005-2012 北京海之大网络技术有限责任公司 服务器托管由互联互通
手机:13911575376
网站技术点击发送消息给对方83569622   广告&合作 点击发送消息给对方27675401   点击发送消息给对方634043306   咨询及人才点击发送消息给对方138011526

GMT+8, 2025/11/29 07:55 , Processed in 0.013762 second(s), 14 queries , File On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表