Esempio n. 1
0
        public VScanResponse MoveUp(long id, string code, VMoveScan request)
        {
            var prodSku = skuService.GetSkuByBarcode(request.Barcode);
            var move    = wmsstock.TInvtMoves.Where(x => x.Id == id).FirstOrDefault();
            var zoneBin = binService.GetBinByCode(move.WhId, request.BinCode);

            TInvtUp up = new TInvtUp();

            up.HId         = id;
            up.Code        = code;
            up.TypeCode    = "RepUp";
            up.Carton      = request.Carton;
            up.Barcode     = request.Barcode;
            up.ToZoneId    = zoneBin.ZoneId;
            up.ToZoneCode  = zoneBin.ZoneCode;
            up.ToBinId     = zoneBin.Id;
            up.ToBinCode   = request.BinCode;
            up.Carton      = request.Carton;
            up.SkuId       = prodSku.Id;
            up.Sku         = prodSku.Code;
            up.Qty         = 1;
            up.CreatedBy   = DefaultUser.UserName;
            up.CreatedTime = DateTime.UtcNow;
            wmsstock.TInvtUps.Add(up);

            wmsstock.SaveChanges();
            return(new VScanResponse());
        }
Esempio n. 2
0
        public VScanResponse MoveUp(long id, VMoveScan request)
        {
            //移货上架会释放锁定数
            var result  = new VScanResponse();
            var prodSku = skuService.GetSkuByBarcode(request.Barcode);
            var move    = wmsstock.TInvtMoves.Where(x => x.Id == id).FirstOrDefault();
            var zoneBin = binService.GetBinByCode(move.WhId, request.BinCode);

            var ups = wmsstock.TInvtUps.Where(x => x.HId == id).Count();

            if (ups + 1 <= move.Qty)
            {
                TInvtUp up = new TInvtUp();
                up.HId         = id;
                up.Code        = move.Code;
                up.TypeCode    = "MoveUp";
                up.Carton      = request.Carton;
                up.Barcode     = request.Barcode;
                up.ToZoneId    = zoneBin.ZoneId;
                up.ToZoneCode  = zoneBin.ZoneCode;
                up.ToBinId     = zoneBin.Id;
                up.ToBinCode   = request.BinCode;
                up.Carton      = request.Carton;
                up.SkuId       = prodSku.Id;
                up.Sku         = prodSku.Code;
                up.Qty         = 1;
                up.CreatedBy   = DefaultUser.UserName;
                up.CreatedTime = DateTime.UtcNow;
                wmsstock.TInvtUps.Add(up);

                move.UpStatus = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Doing);
                wmsstock.SaveChanges();

                if (ups + 1 == move.Qty)
                {
                    result.IsAllFinished = true;
                    result.Message       = string.Format("{0}/{1}", ups + 1, move.Qty);
                    move.UpStatus        = Enum.GetName(typeof(EnumOperateStatus), EnumOperateStatus.Done);

                    //更新上架数量
                    inventoryService.UnlockAndMove(move.Id, move.Code, move.WhId, 0,
                                                   new VInvtData
                    {
                        ZoneId   = move.FromZoneId,
                        ZoneCode = move.FromZoneCode,
                        BinId    = move.FromBinId,
                        BinCode  = move.FromBinCode,
                        SkuId    = move.SkuId,
                        Sku      = move.Sku,
                        Barcode  = move.Barcode,
                        Qty      = move.Qty
                    },
                                                   new VInvtData
                    {
                        ZoneId   = move.ToZoneId,
                        ZoneCode = move.ToZoneCode,
                        BinId    = move.ToBinId,
                        BinCode  = move.ToBinCode,
                        SkuId    = move.SkuId,
                        Sku      = move.Sku,
                        Barcode  = move.Barcode,
                        Qty      = move.Qty
                    }
                                                   );
                }
            }
            else
            {
                result.IsAllFinished = true;
                result.Message       = string.Format("{0}/{1}", move.Qty, move.Qty);
            }
            return(result);
        }