Foxtable(狐表)用户栏目专家坐堂 → [求助] 负库存问题


  共有2179人关注过本帖树形打印复制链接

主题:[求助] 负库存问题

帅哥哟,离线,有人找我吗?
有点蓝
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/8 10:14:00 [显示全部帖子]

没看懂。正确的数据应该是怎么样的?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/8 14:40:00 [显示全部帖子]

5楼的项目一样有问题,父层一样无法计算,4楼项目是单件出货,其实也就相当是父层了。

其次4楼项目qty列根本就没有数据

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:109720 积分:558310 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/8/8 14:42:00 [显示全部帖子]

不知道负库存的计算逻辑是怎么样的,随便蒙一下,细节自己理解更改

DataTables("物料需求").datarows.clear
Dim dic1 As new Dictionary(of String, Double)
For Each dr As DataRow In DataTables("库存表").Select("part is not null")
    dic1.add(dr("part"), dr("qty"))
Next
vars("dic1") = dic1

Dim dic2 As new Dictionary(of String, Double)
For Each dr As DataRow In DataTables("待检产品").Select("part is not null")
    dic2.add(dr("part"), dr("qty"))
Next
vars("dic2") = dic2

Dim dic3 As new Dictionary(of String, Double)
For Each dr As DataRow In DataTables("采购订单").Select("part is not null")
    dic3.add(dr("part"), dr("qty"))
Next
vars("dic3") = dic3

Dim dic4 As new Dictionary(of String, Double)
vars("dic4") = dic4
For Each Ary As String() In DataTables("OrderList").GetValues("PartNo|ETD|批号","PartNo is not null")
    Dim dr As DataRow = DataTables("物料需求").AddNew
    dr("PartNo") = ary(0)
    dr("ETD") = ary(1)
    dr("批号") = ary(2)
    Dim qty As Decimal = DataTables("OrderList").Compute("sum(Qty)","PartNo='" & ary(0) & "' And ETD='" & ary(1) & "' and 批号 ='" & ary(2) & "'")
    dr("Demand") = qty
    
    Dim flag As Boolean = True
    If dic1.ContainsKey(dr("PartNo")) Then
        If dic1(dr("PartNo")) >= qty Then
            dr("Stock") = qty
            dic1(dr("PartNo")) -= dr("Stock")
            flag = False
        Else
            If dic1(dr("PartNo")) < 0 Then
                If dic1(dr("PartNo"))*-1 > qty
                    dr("Stock") = -1 * qty
                    dic1(dr("PartNo")) += qty
                Else
                    dr("Stock") = dic1(dr("PartNo"))
                    dic1(dr("PartNo")) = 0
                End If
            Else
                dr("Stock") = dic1(dr("PartNo"))
                dic1(dr("PartNo")) -= dr("Stock")
            End If
            
        End If
    End If
    If dic2.ContainsKey(dr("PartNo")) Then
        
        Dim qty1 = dr("Demand") - dr("stock")
        If qty1 > 0 Then
            If dic2(dr("PartNo")) >= qty1 Then
                dr("QC") = qty1
                
                
                dic2(dr("PartNo")) -= dr("QC")
            ElseIf dic2(dr("PartNo")) > 0 Then
                dr("QC") = dic2(dr("PartNo"))
                dic2(dr("PartNo")) -= dr("QC")
            End If
        End If
    End If
    
    Dim drr As DataRow = DataTables("BOM").find("Fnumber =" &"'"& dr("PartNo")&"'")
    If drr IsNot Nothing
        dr("层次") = "父层"
    Else
        dr("层次") = "单件出货"
        
    End If
    Functions.Execute("sumChild",ary(0),qty, ary(0), ary(1),ary(2), flag, dr("Stock"),dr("QC"),1,dr("Stock")+dr("QC")-qty)
    
    If dic3.ContainsKey(dr("PartNo")) Then
        If dic3(dr("PartNo")) >= qty Then
            dr("purchasingorder") = qty
            dic3(dr("PartNo")) -= dr("purchasingorder")
        ElseIf dic3(dr("PartNo")) > 0 Then
            dr("purchasingorder") = dic3(dr("PartNo"))
            dic3(dr("PartNo")) -= dr("purchasingorder")
        End If
    End If
    If flag = True Then
        dr("MissingQty") = dr("Stock")+dr("QC") -dr("Demand")
    Else
        dr("MissingQty") = Nothing
    End If
    If dic4.ContainsKey(dr("PartNo")) = False Then
        dic4.add(dr("PartNo"), dr("MissingQty"))
    Else
        dic4(dr("PartNo")) += dr("MissingQty")
    End If
    dr("SumMissing") = dic4(dr("partno"))
Next

msgbox("Updated !!!")

 回到顶部