Exemplo n.º 1
0
        public StorageBinResult Save_sku(Int64 wh_id, Int64 locat_id, string sku, int skucount)
        {
            bool             rstNum  = false;
            bool             rstNums = false;
            StorageBinResult result  = new StorageBinResult();

            using (var db = SugarDao.GetInstance(LoginUser.GetConstr()))
            {
                db.BeginTran();
                if (wh_id == 0 || locat_id == 0)
                {
                    db.RollbackTran();
                    result.success = false;
                    result.Msg     = "参数错误!";
                    return(result);
                }

                if (skucount <= 0)
                {
                    db.RollbackTran();
                    result.success = false;
                    result.Msg     = "请填写正确的数量!";
                    return(result);
                }

                if (string.IsNullOrEmpty(sku))
                {
                    db.RollbackTran();
                    result.success = false;
                    result.Msg     = "请填写sku!";
                    return(result);
                }
                var list = db.Queryable <base_prod_code>().Where(a => a.del_flag && a.sku_code == sku).FirstOrDefault();
                if (list == null)
                {
                    db.RollbackTran();
                    result.success = false;
                    result.Msg     = "系统中不存在的sku!";
                    return(result);
                }

                var wh_stock = db.Queryable <base_wh_stock>().Where(a => a.del_flag && a.wh_id == wh_id && a.location_id == locat_id && a.code_id == list.code_id).FirstOrDefault();
                if (wh_stock == null)
                {
                    var           _supp_rel = db.Queryable <base_prod_supp_rel>().Where(a => a.del_flag && a.prod_id == list.prod_id).ToList();
                    long          suppid    = _supp_rel.Find(b => b.lev_purch == _supp_rel.Min(s => s.lev_purch)).supp_id;
                    base_wh_stock _stock    = new base_wh_stock();
                    _stock.prod_id        = list.prod_id;
                    _stock.occupied_qty   = 0;
                    _stock.pallet_id      = 0;
                    _stock.purchase_price = 0;
                    _stock.remark         = "库存采购";
                    _stock.reserve_qty    = 0;
                    _stock.service_life   = "";
                    _stock.stock_barcode  = "";
                    _stock.stock_class    = 3;
                    _stock.stock_code     = "1";
                    _stock.stock_qty      = skucount;
                    _stock.stock_status   = true;
                    _stock.retrieval_time = DateTime.Now;
                    _stock.storage_time   = DateTime.Now;
                    _stock.supplier_id    = suppid;
                    _stock.using_state    = 1;
                    _stock.wh_id          = 1;
                    _stock.location_id    = locat_id;
                    _stock.locking_qty    = 0;
                    _stock.area_id        = 0;
                    _stock.asset_class_id = 0;
                    _stock.code_id        = list.code_id;
                    _stock.consignor_id   = 0;
                    _stock.create_time    = DateTime.Now;
                    _stock.create_user_id = LoginUser.Current.user_id;
                    _stock.del_flag       = true;
                    _stock.del_user_id    = 0;
                    _stock.edit_user_id   = 0;
                    _stock.del_time       = DateTime.Now;
                    _stock.edit_time      = DateTime.Now;
                    _stock.stock_id       = Guid.NewGuid();
                    var id = db.Insert <base_wh_stock>(_stock);
                    if (id.ObjToBool())
                    {
                        rstNums = true;
                    }
                }
                else
                {
                    rstNums = db.Update <base_wh_stock>(new { stock_qty = wh_stock.stock_qty + skucount }, s => s.stock_id == wh_stock.stock_id);
                }
                if (rstNums)
                {
                    db.CommitTran();
                    result.success = true;
                    result.Msg     = "操作成功";
                    return(result);
                }
                else
                {
                    db.RollbackTran();
                    result.success = false;
                    result.Msg     = "操作失败";
                    return(result);
                }
            }
        }
        /// <summary>
        /// 采购收货
        /// </summary>
        /// <param name="model"></param>
        /// <param name="lists"></param>
        /// <param name="purch_type"></param>
        /// <returns></returns>
        public MaterialReceiptResult Save(busi_purchase model, List <MaterialReceiptSaveModel> lists, int?purch_type)
        {
            bool rstNum   = false;
            bool rstNums  = false;
            bool rstNumss = false;
            MaterialReceiptResult result = new MaterialReceiptResult();

            using (var db = SugarDao.GetInstance(LoginUser.GetConstr()))
            {
                try
                {
                    db.BeginTran();
                    #region 判断
                    if (model == null)
                    {
                        result.success = false;
                        result.Msg     = "请填写信息!";
                        return(result);
                    }

                    if (model.purch_id == 0)
                    {
                        result.success = false;
                        result.Msg     = "参数错误!";
                        return(result);
                    }

                    if (!purch_type.HasValue || purch_type < 0)
                    {
                        result.success = false;
                        result.Msg     = "参数错误!";
                        return(result);
                    }
                    #endregion
                    int suc = 0;

                    var list = db.Queryable <busi_purchase>().Where(s => s.del_flag).InSingle(model.purch_id);
                    if (list == null)
                    {
                        result.success = false;
                        result.Msg     = "不存在的采购信息";
                        return(result);
                    }

                    if (list.purch_status == 4)
                    {
                        result.success = false;
                        result.Msg     = "该单号已收货,请勿重复操作!";
                        return(result);
                    }
                    list.edit_time    = DateTime.Now;
                    list.purch_status = 4;
                    list.edit_user_id = 0;
                    rstNum            = db.Update <busi_purchase>(list);
                    if (rstNum)
                    {
                        rstNums = db.Update <busi_purchasedetail>(new { purch_status = 4 }, a => a.purch_id == model.purch_id && a.purch_status == 3);
                        if (lists.Count > 0)
                        {
                            if (purch_type == 1)
                            {
                                foreach (var item in lists)
                                {
                                    var stock = db.Queryable <base_wh_stock>().Where(s => s.del_flag && s.code_id == item.code_id && s.prod_id == item.prod_id && s.location_id == 1 && s.wh_id == 1).FirstOrDefault();
                                    if (stock != null)
                                    {
                                        Decimal oldwh_stock = stock.stock_qty;
                                        Decimal newwh_stock = oldwh_stock + item.prod_num;
                                        rstNumss = db.Update <base_wh_stock>(new { stock_qty = newwh_stock }, s => s.stock_id == stock.stock_id);
                                        if (rstNumss)
                                        {
                                            suc += 1;
                                        }
                                    }
                                    else
                                    {
                                        var wh_warehouse = db.Queryable <base_wh_warehouse>().Where(s => s.del_flag).InSingle(1);
                                        if (wh_warehouse != null)
                                        {
                                            base_wh_stock wh_stock = new base_wh_stock();
                                            wh_stock.prod_id        = item.prod_id;
                                            wh_stock.occupied_qty   = 0;
                                            wh_stock.pallet_id      = 0;
                                            wh_stock.purchase_price = 0;
                                            wh_stock.remark         = "采购收货";
                                            wh_stock.reserve_qty    = 0;
                                            wh_stock.service_life   = "";
                                            wh_stock.stock_barcode  = "";
                                            wh_stock.stock_class    = 3;
                                            wh_stock.stock_code     = "1";
                                            wh_stock.stock_qty      = item.prod_num;
                                            wh_stock.stock_status   = true;
                                            wh_stock.retrieval_time = DateTime.Now;
                                            wh_stock.storage_time   = DateTime.Now;
                                            wh_stock.supplier_id    = item.supp_id;
                                            wh_stock.using_state    = 1;
                                            wh_stock.wh_id          = 1;
                                            wh_stock.location_id    = 1;
                                            wh_stock.locking_qty    = 0;
                                            wh_stock.area_id        = 0;
                                            wh_stock.asset_class_id = 0;
                                            wh_stock.code_id        = item.code_id;
                                            wh_stock.consignor_id   = 0;
                                            wh_stock.create_time    = DateTime.Now;
                                            wh_stock.create_user_id = LoginUser.Current.user_id;
                                            wh_stock.del_flag       = true;
                                            wh_stock.del_user_id    = 0;
                                            wh_stock.edit_user_id   = 0;
                                            wh_stock.del_time       = DateTime.Now;
                                            wh_stock.edit_time      = DateTime.Now;
                                            wh_stock.stock_id       = Guid.NewGuid();
                                            var id = db.Insert <base_wh_stock>(wh_stock);
                                            if (id.ObjToBool())
                                            {
                                                suc += 1;
                                            }
                                        }
                                        else
                                        {
                                            db.RollbackTran();
                                            result.success = false;
                                            result.Msg     = "操作失败! 请先添加<span style=\"color:red;\">金华仓</span>!";
                                            return(result);
                                        }
                                    }
                                }
                            }
                            else if (purch_type == 2)
                            {
                                foreach (var item in lists)
                                {
                                    var stock = db.Queryable <base_wh_stock>().Where(s => s.del_flag && s.code_id == item.code_id && s.prod_id == item.prod_id && s.location_id != 1 && s.wh_id == 1).FirstOrDefault();
                                    if (stock != null)
                                    {
                                        Decimal oldwh_stock = stock.stock_qty;
                                        Decimal newwh_stock = oldwh_stock + item.prod_num;
                                        if (newwh_stock >= 0)
                                        {
                                            rstNumss = db.Update <base_wh_stock>(new { stock_qty = newwh_stock }, s => s.stock_id == stock.stock_id);
                                            if (rstNumss)
                                            {
                                                suc += 1;
                                            }
                                        }
                                    }
                                    else
                                    {
                                        var location = db.Queryable <base_location>().Where(s => s.del_flag && s.wh_id == 1 && s.locat_type == 2).FirstOrDefault();
                                        if (location != null)
                                        {
                                            base_wh_stock wh_stock = new base_wh_stock();
                                            wh_stock.prod_id        = item.prod_id;
                                            wh_stock.occupied_qty   = 0;
                                            wh_stock.pallet_id      = 0;
                                            wh_stock.purchase_price = 0;
                                            wh_stock.remark         = "库存采购";
                                            wh_stock.reserve_qty    = 0;
                                            wh_stock.service_life   = "";
                                            wh_stock.stock_barcode  = "";
                                            wh_stock.stock_class    = 3;
                                            wh_stock.stock_code     = "1";
                                            wh_stock.stock_qty      = item.prod_num;
                                            wh_stock.stock_status   = true;
                                            wh_stock.retrieval_time = DateTime.Now;
                                            wh_stock.storage_time   = DateTime.Now;
                                            wh_stock.supplier_id    = item.supp_id;
                                            wh_stock.using_state    = 1;
                                            wh_stock.wh_id          = 1;
                                            wh_stock.location_id    = location.locat_id;
                                            wh_stock.locking_qty    = 0;
                                            wh_stock.area_id        = 0;
                                            wh_stock.asset_class_id = 0;
                                            wh_stock.code_id        = item.code_id;
                                            wh_stock.consignor_id   = 0;
                                            wh_stock.create_time    = DateTime.Now;
                                            wh_stock.create_user_id = LoginUser.Current.user_id;
                                            wh_stock.del_flag       = true;
                                            wh_stock.del_user_id    = 0;
                                            wh_stock.edit_user_id   = 0;
                                            wh_stock.del_time       = DateTime.Now;
                                            wh_stock.edit_time      = DateTime.Now;
                                            wh_stock.stock_id       = Guid.NewGuid();
                                            var id = db.Insert <base_wh_stock>(wh_stock);
                                            if (id.ObjToBool())
                                            {
                                                suc += 1;
                                            }
                                        }
                                        else
                                        {
                                            db.RollbackTran();
                                            result.success = false;
                                            result.Msg     = "<span style=\"color:red;\">金华仓</span>暂无库位,请先添加<span style=\"color:red;\">金华仓</span>库位,在进行操作!";
                                            return(result);
                                        }
                                    }
                                }
                            }
                        }
                    }
                    if (suc == lists.Count)
                    {
                        db.CommitTran();
                        result.success = true;
                        // result.URL = "/MaterialReceipt/IndexE?id=" + model.purch_id + "";
                        result.Msg = "操作成功";
                        return(result);
                    }
                    else
                    {
                        db.RollbackTran();
                        result.success = false;
                        result.Msg     = "操作失败";
                        return(result);
                    }
                }
                catch (Exception)
                {
                    db.RollbackTran();
                    throw;
                }
            }
        }