示例#1
0
        public void GetShopCheckRefundInfoTest()
        {
            var             refundId = new Guid("0CE38518-754C-4408-8BC4-55965C4BF2F8");
            CheckRefundInfo actual   = _target.GetShopCheckRefundInfo(refundId);

            Assert.AreEqual(refundId, actual.RefundId);
            //Assert.Inconclusive("验证此测试方法的正确性。");
        }
示例#2
0
 /// <summary>
 /// 供前台使用修改退换检查物流信息
 /// </summary>
 /// <param name="checkRefund"></param>
 /// <returns></returns>
 public int ModifyCheckRefundExpress(CheckRefundInfo checkRefund)
 {
     const string SQL = @"UPDATE lmShop_CheckRefund SET ExpressNo=@ExpressNo,ExpressName=@ExpressName WHERE RefundId=@RefundId ";
     using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
     {
         return conn.Execute(SQL, new
         {
             ExpressNo = checkRefund.ExpressNo ?? string.Empty,
             ExpressName = checkRefund.ExpressName ?? string.Empty,
             RefundId = checkRefund.RefundId
         });
     }
 }
示例#3
0
 /// <summary>
 /// 修改退换货检查信息
 /// </summary>
 /// <param name="refundInfo">退换货检查信息</param>
 /// <returns></returns>
 public bool UpdateCheckRefund_Server(CheckRefundInfo refundInfo)
 {
     const string SQL = @"UPDATE lmShop_CheckRefund SET CheckState=@CheckState,ReStartReason=@ReStartReason WHERE RefundId=@RefundId";
     using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
     {
         return conn.Execute(SQL, new
         {
             CheckState = refundInfo.CheckState,
             ReStartReason = refundInfo.ReStartReason ?? string.Empty,
             RefundId = refundInfo.RefundId
         }) > 0;
     }
 }
示例#4
0
 /// <summary>
 /// 总后台修改退换货检查记录检查状态,不通过原因,退货仓库,重启原因(分后台编辑)
 /// </summary>
 /// <param name="refundInfo"></param>
 /// <returns></returns>
 public bool UpdateCheckRefund(CheckRefundInfo refundInfo)
 {
     using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
     {
         return conn.Execute(SQL_UPDATE_CHECKREFUND, new
         {
             RefundId = refundInfo.RefundId,
             CheckState = refundInfo.CheckState,
             Remark = refundInfo.Remark,
             WarehouseId = refundInfo.WarehouseId,
             ReStartReason = refundInfo.ReStartReason,
             CheckFilialeId = refundInfo.CheckFilialeId,
         }) > 0;
     }
 }
示例#5
0
 /// <summary>
 /// 获取退换货检查信息
 /// </summary>
 /// <param name="refundId"></param>
 /// <returns></returns>
 public CheckRefundInfo GetCheckRefundInfo(Guid refundId)
 {
     var checkRefund = new CheckRefundInfo();
     try
     {
         var strbSql = new StringBuilder(SQL_SELECT_CHECKREFUND);
         strbSql.Append(string.Format(" AND RefundId='{0}'", refundId));
         using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
         {
             return conn.QueryFirstOrDefault<CheckRefundInfo>(strbSql.ToString());
         }
     }
     catch (Exception ex)
     {
         throw new ApplicationException("获取退换货检查信息失败!", ex);
     }
 }
示例#6
0
 /// <summary>
 /// 添加退换货检查记录
 /// </summary>
 /// <param name="refundInfo"></param>
 /// <returns></returns>
 public bool InsertCheckRefund(CheckRefundInfo refundInfo)
 {
     using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
     {
         return conn.Execute(SQL_INSERT_CHECKREFUND_SERVER, new
         {
             RefundId = refundInfo.RefundId,
             RefundNo = refundInfo.RefundNo,
             OrderId = refundInfo.OrderId,
             ExpressNo = refundInfo.ExpressNo,
             ExpressName = refundInfo.ExpressName,
             CreateDate = refundInfo.CreateTime,
             CheckState = refundInfo.CheckState,
             Remark = refundInfo.Remark,
             WarehouseId = refundInfo.WarehouseId,
             ReStartReason = refundInfo.ReStartReason,
         }) > 0;
     }
 }
示例#7
0
 /// <summary>
 /// 修改退货检查明细(for 联盟店退货检查)
 /// </summary>
 /// <param name="checkRefundInfo"></param>
 /// <param name="checkRefundDetailInfos"></param>
 /// <param name="msg"></param>
 /// <returns></returns>
 public bool UpdateCheckRefund(CheckRefundInfo checkRefundInfo, IList <CheckRefundDetailInfo> checkRefundDetailInfos, out string msg)
 {
     try
     {
         using (var scope = new TransactionScope())
         {
             _refundDal.InsertCheckRefund(checkRefundInfo);
             foreach (var item in checkRefundDetailInfos)
             {
                 _refundDal.InsertCheckDetails(item);
             }
             scope.Complete();
         }
     }
     catch (Exception e)
     {
         msg = e.Message;
         return(false);
     }
     msg = string.Empty;
     return(true);
 }
示例#8
0
 private CheckRefundInfo ShopReaderCheckRefund(SqlDataReader rdr)
 {
     var checkRefundInfo = new CheckRefundInfo
     {
         RefundId = rdr["RefundId"] == DBNull.Value ? Guid.Empty : new Guid(rdr["RefundId"].ToString()),
         RefundNo = rdr["RefundNo"] == DBNull.Value ? string.Empty : rdr["RefundNo"].ToString(),
         OrderId = rdr["OrderId"] == DBNull.Value ? Guid.Empty : new Guid(rdr["OrderId"].ToString()),
         OrderNo = rdr["ApplyNo"] == DBNull.Value ? string.Empty : rdr["ApplyNo"].ToString(),
         Consignee = rdr["ShopName"] == DBNull.Value ? string.Empty : rdr["ShopName"].ToString(),
         ExpressNo = rdr["ExpressNo"] == DBNull.Value ? string.Empty : rdr["ExpressNo"].ToString(),
         ExpressName = rdr["ExpressName"] == DBNull.Value ? string.Empty : rdr["ExpressName"].ToString(),
         CreateTime = rdr["CreateDate"] == DBNull.Value ? DateTime.MinValue : DateTime.Parse(rdr["CreateDate"].ToString()),
         CheckState = rdr["CheckState"] == DBNull.Value ? 0 : int.Parse(rdr["CheckState"].ToString()),
         Remark = rdr["Remark"] == DBNull.Value ? string.Empty : rdr["Remark"].ToString(),
         WarehouseId = rdr["WarehouseId"] == DBNull.Value ? Guid.Empty : new Guid(rdr["WarehouseId"].ToString()),
         Amount = rdr["Amount"] == DBNull.Value ? 0 : decimal.Parse(rdr["Amount"].ToString()),
         ReStartReason = rdr["ReStartReason"] == DBNull.Value ? string.Empty : rdr["ReStartReason"].ToString(),
         CheckFilialeId = rdr["CheckFilialeId"] == DBNull.Value ? Guid.Empty : new Guid(rdr["CheckFilialeId"].ToString()),
         IsTransfer = rdr["IsTransfer"] != DBNull.Value && bool.Parse(rdr["IsTransfer"].ToString()),
         SaleFilialeId = rdr["SaleFilialeId"] == DBNull.Value ? Guid.Empty : new Guid(rdr["SaleFilialeId"].ToString())
     };
     return checkRefundInfo;
 }
示例#9
0
        /// <summary>
        /// 修改退货检查
        /// </summary>
        /// <param name="checkRefundInfo"></param>
        /// <param name="checkRefundDetailInfos"></param>
        /// <returns></returns>
        public bool UpdateCheckRefundList(CheckRefundInfo checkRefundInfo, IList <CheckRefundDetailInfo> checkRefundDetailInfos)
        {
            string msg;

            return(_refundDalWrite.UpdateCheckRefund(checkRefundInfo, checkRefundDetailInfos, out msg));
        }
示例#10
0
        /// <summary>
        /// 添加退换货信息以及清单信息
        /// </summary>
        /// <param name="refundInfo">退换货信息</param>
        /// <param name="refundDetailList">清单信息</param>
        /// <returns></returns>
        public bool InsertCheckRefundAndDetailList(CheckRefundInfo refundInfo, IList<CheckRefundDetailInfo> refundDetailList)
        {
            bool flag;
            try
            {
                using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false))
                {
                    conn.Open();
                    using (SqlTransaction trans = conn.BeginTransaction())
                    {
                        flag = conn.Execute(SQL_INSERT_CHECKREFUND_SERVER, new
                        {
                            RefundId = refundInfo.RefundId,
                            RefundNo = refundInfo.RefundNo,
                            OrderId = refundInfo.OrderId,
                            ExpressNo = refundInfo.ExpressNo,
                            ExpressName = refundInfo.ExpressName,
                            CreateDate = refundInfo.CreateTime,
                            CheckState = refundInfo.CheckState,
                            Remark = refundInfo.Remark,
                            WarehouseId = refundInfo.WarehouseId,
                            ReStartReason = refundInfo.ReStartReason,
                            OrderNo = refundInfo.OrderNo,
                            Consignee = refundInfo.Consignee,
                            SaleFilialeId = refundInfo.SaleFilialeId,
                            SalePlatformId = refundInfo.SalePlatformId,
                        }, trans) > 0;

                        if (flag)
                        {
                            foreach (var detailInfo in refundDetailList)
                            {
                                if (!flag) continue;
                                flag = conn.Execute(SQL_INSERT_CHECKREFUNDDETAIL_SERVER, new
                                {
                                    Id = detailInfo.Id,
                                    RefundId = detailInfo.RefundId,
                                    GoodsId = detailInfo.GoodsId,
                                    RealGoodsId = detailInfo.RealGoodsId,
                                    GoodsCode = detailInfo.GoodsCode ?? string.Empty,
                                    GoodsName = detailInfo.GoodsName ?? string.Empty,
                                    Specification = detailInfo.Specification ?? string.Empty,
                                    Quantity = detailInfo.Quantity,
                                    SellPrice = detailInfo.SellPrice,
                                    ReturnCount = detailInfo.ReturnCount,
                                    ReturnType = detailInfo.ReturnType,
                                    ReturnReason = detailInfo.ReturnReason ?? string.Empty,
                                }, trans) > 0;
                            }
                            if (flag)
                                trans.Commit();
                            else
                                trans.Rollback();
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                throw new ApplicationException("添加退换货商品检查失败!", ex);
            }
            return flag;
        }
        /// <summary>
        /// 是否成功生成退货商品检查
        /// </summary>
        /// <param name="applyId"></param>
        /// <param name="expressNo"> </param>
        /// <param name="expressName"> </param>
        /// <returns></returns>
        public bool IsSuccessCreateCheck(Guid applyId, Guid warehouseId, string expressNo, string expressName)
        {
            //退换货原商品明细
            var applyInfo = _shopRefund.GetShopExchangedApplyInfo(applyId);

            if (applyInfo == null)
            {
                return(false);
            }
            var shopApplyDetailInfos = _shopApplyDetail.GetShopApplyDetailList(applyId).ToList();
            var flag = false;
            //门店传递仓库
            var info = WarehouseManager.Get(warehouseId);

            if (info == null)
            {
                return(false);
            }
            if (shopApplyDetailInfos != null && shopApplyDetailInfos.Count > 0)
            {
                var checkRefund = new CheckRefundInfo
                {
                    RefundId       = Guid.NewGuid(),
                    RefundNo       = applyInfo.ApplyNo,
                    OrderId        = applyId,
                    ExpressNo      = expressNo,
                    ExpressName    = expressName,
                    CreateTime     = DateTime.Now,
                    CheckState     = (int)CheckState.Checking,
                    Remark         = string.Empty,
                    WarehouseId    = warehouseId,
                    Amount         = shopApplyDetailInfos.Sum(act => act.Quantity * act.Price),
                    ReStartReason  = "",
                    CheckFilialeId = info.LogisticFilialeId,
                    IsTransfer     = false
                };
                IList <CheckRefundDetailInfo> checkRefundDetailInfos = (from item in shopApplyDetailInfos
                                                                        select new CheckRefundDetailInfo
                {
                    RefundId = checkRefund.RefundId,
                    Id = item.ID,
                    GoodsId = item.GoodsID,
                    RealGoodsId = item.RealGoodsID,
                    GoodsName = item.GoodsName,
                    GoodsCode = item.GoodsCode,
                    DamageCount = 0,
                    Quantity = item.Quantity,
                    ReturnCount = item.Quantity,
                    ReturnReason = "",
                    ReturnType = applyInfo.IsBarter ? 1 : 0,
                    SellPrice = item.Price,
                    Specification = item.Specification
                }).ToList();
                using (var tran = new TransactionScope(TransactionScopeOption.Required))
                {
                    try
                    {
                        var list = _checkRefund.GetShopCheckRefundList(applyInfo.ShopID, applyId, string.Empty);
                        if (list != null && list.Count > 0)
                        {
                            #region 门店采购退货增加了修改功能,需要二次检查信息;解决方案:删除老的“售后检查表”及“售后检查表明细”的数据,重新插入新的相应的信息;需求号1970(此操作跟伟哥确认过)  zal 2016-03-23
                            var isSuccess = _checkRefund.DeleteCheckRefundInfo(list.First().RefundId);
                            if (!isSuccess)
                            {
                                return(false);
                            }
                            #endregion
                        }
                        var result = _checkRefund.InsertCheckRefundAndDetailList(checkRefund, checkRefundDetailInfos);
                        if (result)
                        {
                            var row = _shopRefund.UpdateExchangeState(applyId, (int)ExchangedState.Checking, "退回商品检查");
                            if (row > 0)
                            {
                                flag = true;
                                tran.Complete();
                            }
                        }
                    }
                    catch (Exception)
                    {
                        flag = false;
                    }
                }
            }
            return(flag);
        }