Exemple #1
0
        private TInvt Do2(int whId, int custId, string rcvCode, TInInboundD t)
        {
            //这是新增的情况
            var h = new TInvt
            {
                WhId        = whId,
                SkuId       = t.SkuId,
                Sku         = t.Sku,
                Barcode     = t.Barcode,
                CreatedBy   = DefaultUser.UserName,
                IsDeleted   = false,
                Qty         = t.Qty,
                CreatedTime = DateTime.UtcNow
            };
            var bin = GetDefalutBin(whId);
            var d2  = new TInvtD
            {
                HId         = h.Id,
                WhId        = whId,
                SkuId       = t.SkuId,
                Sku         = t.Sku,
                Barcode     = t.Barcode,
                ZoneId      = bin.Item1,
                ZoneCode    = bin.Item2,
                BinId       = bin.Item3,
                BinCode     = bin.Item4,
                CreatedBy   = "rick.li",
                IsDeleted   = 0,
                Qty         = t.Qty,
                CreatedTime = DateTime.UtcNow
            };

            var log = new TInvtChangeLog
            {
                OrderId     = t.HId,
                OrderType   = Enum.GetName(typeof(EnumOrderType), EnumOrderType.RCV),
                OrderCode   = rcvCode,
                WhId        = whId,
                InvtDId     = d2.Id,
                CustId      = custId,
                SkuId       = t.SkuId,
                Barcode     = t.Barcode,
                BinId       = d2.BinId,
                ZoneId      = d2.ZoneId,
                Qty         = t.Qty,
                CreatedBy   = DefaultUser.UserName,
                CreatedTime = DateTime.UtcNow,
            };

            d2.TInvtChangeLog = log;
            h.DetailList.Add(d2);
            h.Qty = d2.Qty;
            return(h);
        }
        private void DoDeliveryLog(long shpId, string shpCode, int whId, int custId, TInvtD invtd, int qty)
        {
            var log = new TInvtChangeLog
            {
                OrderId     = shpId,
                OrderType   = Enum.GetName(typeof(EnumOrderType), EnumOrderType.SHP),
                OrderCode   = shpCode,
                WhId        = whId,
                CustId      = custId,
                InvtDId     = invtd.Id,
                SkuId       = invtd.SkuId,
                Barcode     = invtd.Barcode,
                BinId       = invtd.BinId,
                ZoneId      = invtd.ZoneId,
                Qty         = qty,
                CreatedBy   = DefaultUser.UserName,
                CreatedTime = DateTime.UtcNow,
            };

            wmsinventory.TInvtChangeLogs.Add(log);
        }
Exemple #3
0
        public void UnlockAndMove(long oId, string oCode, int oWhId, int oCustId,
                                  VInvtData fromData, VInvtData toData)
        {
            //首先查询库存,然后循环扣减
            var invts = wmsinventory.TInvtDs
                        .Where(x => x.ZoneId == fromData.ZoneId && x.BinId == fromData.BinId &&
                               x.SkuId == fromData.SkuId && x.Qty - x.AllotQty - x.LockedQty > 0 && x.LockedQty > 0)
                        .ToList();

            var totalQty  = fromData.Qty;
            var detaiList = new List <TInvtD>();

            foreach (var invt in invts)
            {
                var invtDetail = new TInvtD
                {
                    HId         = invt.HId,
                    ZoneId      = toData.ZoneId,
                    ZoneCode    = toData.ZoneCode,
                    BinId       = toData.BinId,
                    BinCode     = toData.BinCode,
                    SkuId       = toData.SkuId,
                    Sku         = toData.Sku,
                    Barcode     = toData.Barcode,
                    CreatedBy   = DefaultUser.UserName,
                    CreatedTime = DateTime.UtcNow
                };

                var invtLog = new TInvtChangeLog
                {
                    OrderId     = oId,
                    OrderType   = Enum.GetName(typeof(EnumOrderType), EnumOrderType.RCV),
                    OrderCode   = oCode,
                    WhId        = oWhId,
                    InvtDId     = invtDetail.Id,
                    CustId      = oCustId,
                    SkuId       = toData.SkuId,
                    Barcode     = toData.Barcode,
                    BinId       = toData.BinId,
                    ZoneId      = toData.ZoneId,
                    CreatedBy   = DefaultUser.UserName,
                    CreatedTime = DateTime.UtcNow,
                };

                var invtLog2 = new TInvtChangeLog
                {
                    OrderId     = oId,
                    OrderType   = Enum.GetName(typeof(EnumOrderType), EnumOrderType.RCV),
                    OrderCode   = oCode,
                    WhId        = oWhId,
                    InvtDId     = invt.Id,
                    CustId      = oCustId,
                    SkuId       = toData.SkuId,
                    Barcode     = toData.Barcode,
                    BinId       = toData.BinId,
                    ZoneId      = toData.ZoneId,
                    CreatedBy   = DefaultUser.UserName,
                    CreatedTime = DateTime.UtcNow,
                };

                if (totalQty > 0)
                {
                    var canQty = invt.LockedQty;
                    if (canQty >= totalQty)
                    {
                        invt.LockedQty -= totalQty;
                        totalQty        = 0;

                        invtLog2.Qty        = totalQty;
                        invt.TInvtChangeLog = invtLog2;

                        invtDetail.Qty            = totalQty;
                        invtLog.Qty               = totalQty;
                        invtDetail.TInvtChangeLog = invtLog;
                        detaiList.Add(invtDetail);
                    }
                    else
                    {
                        invt.LockedQty -= canQty;
                        totalQty       -= canQty;

                        invtLog2.Qty        = canQty;
                        invt.TInvtChangeLog = invtLog2;

                        invtDetail.Qty = canQty;
                        invtLog.Qty    = canQty;

                        invtDetail.TInvtChangeLog = invtLog;
                        detaiList.Add(invtDetail);
                    }
                }
            }

            wmsinventory.TInvtDs.AddRange(detaiList);

            wmsinventory.SaveChanges();
        }