void CreateOrder() { GoodsOrderInfo goi = GetOrder(); Guid cmdid = Guid.NewGuid(); EyeseeLog.Log(Name + ":" + goi.OrderId + "" + "----------SucceCount:" + LoadTest.SucceCount + "----Execute.Count:" + LoadTest.ExecuteCount); try { LoadTest.ExecuteCount++; var s = client.Insert(goi, GetOrderDetail(goi), cmdid); if (!s.IsSuccess) { EyeseeLog.Log("server error:" + s.ErrorMessage); } else { LoadTest.SucceCount++; } } catch (Exception ex) { EyeseeLog.Log("local error : " + ex.Message + ex.GetType().FullName); } }
public static void GoodsOrderUpdateAffirm(Guid saleFilialeId, GoodsOrderInfo goodsOrderInfo) { using (var client = ClientProxy.CreateB2CWcfClient(saleFilialeId)) { client.Instance.GoodsOrderUpdateAffirm(Guid.NewGuid(), ConvertToB2CModel(goodsOrderInfo)); } }
/// <summary> /// 得到订单详情 /// </summary> /// <param name="GoodsNo">订单号</param> /// <returns></returns> public List <GoodsOrderInfo> getGoodsOrderInfo(string GoodsNo) { List <GoodsOrderInfo> returnVal = new List <GoodsOrderInfo>(); string ConnString = ConfigurationManager.AppSettings["Sngoo"]; //string inputPs, readPS; string ConnQuery = " select * from yl_GoodsOrderInfo where OrderNo='" + GoodsNo + "' "; SqlConnection connection = new SqlConnection(ConnString); connection.Open(); SqlCommand lo_cmd = new SqlCommand(ConnQuery, connection); SqlDataReader reader = lo_cmd.ExecuteReader(); while (reader.Read()) { GoodsOrderInfo item = new GoodsOrderInfo(); item.GoodsName = reader["GoodsName"].ToString(); item.GoodsNum = Convert.ToInt32(reader["GoodsNum"]); returnVal.Add(item); } reader.Close(); connection.Close(); connection.Dispose(); //ConnString = "Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=sngoo712;Data Source=(local)"; return(returnVal); }
/// <summary> /// 系统自动执行订单完成发货的最后数据操作(适合批量完成订单操作) /// </summary> /// <param name="orderInfo"></param> /// <param name="operatorName"></param> /// <param name="errorMessage"></param> public bool FinishConsignmentOrder(GoodsOrderInfo orderInfo, string operatorName, out string errorMessage) { if (orderInfo.OrderState != (int)OrderState.Consignmented) { errorMessage = "当前订单:" + orderInfo.OrderNo + ",状态:" + orderInfo.OrderState + ",无法完成!"; return(false); } using (var tran = new TransactionScope(TransactionScopeOption.Required)) { errorMessage = String.Empty; #region -- 插入出入库待执行异步表 var asyncStorageInfo = new ASYNStorageRecordInfo { CreateTime = DateTime.Now, ID = Guid.NewGuid(), IdentifyId = orderInfo.OrderId, IdentifyKey = orderInfo.OrderNo, IsValidateStock = false, StorageState = (int)StorageRecordState.Finished, StorageType = (int)StorageRecordType.SellStockOut, WarehouseId = orderInfo.DeliverWarehouseId }; var successStorage = _asynStorageRecordDao.Insert(asyncStorageInfo); if (!successStorage) { errorMessage = "添加出入库待执行异步表失败"; return(false); } #endregion #region -- 插入往来帐待执行异步表 var asynReckoningInfo = new ASYNReckoningInfo { CreateTime = DateTime.Now, ID = Guid.NewGuid(), IdentifyId = orderInfo.OrderId, IdentifyKey = orderInfo.OrderNo, ReckoningFromType = ASYNReckoningFromType.CompleteOrder.ToString() }; var successReckoning = _reckoning.InsertAsyn(asynReckoningInfo); if (!successReckoning) { errorMessage = ("添加往来帐待执行异步表失败!"); return(false); } #endregion //删除待完成订单列表数据 var successDelete = _goodsOrderDal.DeleteWaitConsignmentOrder(orderInfo.OrderId); if (!successDelete) { errorMessage = ("删除待完成订单列表数据发生错误!"); return(false); } tran.Complete(); return(true); } }
static GoodsOrderInfo GetOrder() { GoodsOrderInfo goi = new GoodsOrderInfo(); goi.BankAccountsId = Guid.NewGuid(); goi.BankTradeNo = string.Empty; goi.Consignee = "TestForEyesee"; goi.CountryId = Guid.NewGuid(); goi.CancleReason = string.Empty; goi.Carriage = 5; goi.Clew = string.Empty; goi.CommissionFailure = false; goi.ConsignTime = DateTime.MaxValue; goi.CouponList = null; goi.CityId = Guid.NewGuid(); goi.Direction = "TestForEyesee"; goi.EffectiveTime = DateTime.MaxValue; goi.Express = ""; goi.ExpressNo = string.Empty; goi.ExpressId = Guid.NewGuid(); goi.FilialeId = Guid.NewGuid(); goi.InvoiceState = 1; goi.LatencyDay = 0; goi.MemberId = Guid.NewGuid(); goi.Memo = string.Empty; goi.Mobile = "159000000000"; goi.OrderId = Guid.NewGuid(); goi.OrderNo = GetCode(); goi.OrderTime = DateTime.Now; goi.OldCustomer = 0; goi.OrderTime = DateTime.Now; goi.OrderState = 2; goi.PaidUp = 0; goi.PaymentByBalance = 0; goi.Phone = string.Empty; goi.PickNo = "";// goi.PostalCode = string.Empty; goi.PromotionDescription = string.Empty; goi.PromotionValue = 0; goi.ProvinceId = Guid.NewGuid(); goi.PayMode = 0; goi.PayState = 0; goi.PayType = 0; goi.RefundmentMode = 0; goi.RealTotalPrice = 500; goi.TotalPrice = 500; goi.WarehouseId = Guid.NewGuid(); return(goi); }
public void TestNewCreateReckoningInfoList() { var goodsOrderInfo = new GoodsOrderInfo(); var goodsOrderDetails = new List <GoodsOrderDetailInfo>(); _reckoningManager = new ReckoningManager(_stubIGoodsCenterSao, _stubIReckoning, _stubIExpress, _stubICompanyCussent, _stubGoodsPriceVerificationDao, _stubIGoodsOrder, _stubIGoodsOrderDetail, _stubIGoodsOrderDeliver, _stubICode); }
/// <summary>ERP订单模型转换成B2C订单模型 /// </summary> /// <param name="goodsOrderInfo"></param> /// <returns></returns> public static B2C.Model.ERPExtensionModel.GoodsOrderInfo ConvertToB2CModel(GoodsOrderInfo goodsOrderInfo) { return(new B2C.Model.ERPExtensionModel.GoodsOrderInfo { BankAccountsId = goodsOrderInfo.BankAccountsId, BankTradeNo = goodsOrderInfo.BankTradeNo, Carriage = goodsOrderInfo.Carriage, CarriageSubsidy = goodsOrderInfo.CarriageSubsidy, CityId = goodsOrderInfo.CityId, CommissionFailure = goodsOrderInfo.CommissionFailure, Consignee = goodsOrderInfo.Consignee, ConsignTime = goodsOrderInfo.ConsignTime, CountryId = goodsOrderInfo.CountryId, DeliverWarehouseId = goodsOrderInfo.DeliverWarehouseId, Direction = goodsOrderInfo.Direction, DistrictId = goodsOrderInfo.DistrictID, EffectiveTime = goodsOrderInfo.EffectiveTime, Express = goodsOrderInfo.Express, ExpressId = goodsOrderInfo.ExpressId, ExpressNo = goodsOrderInfo.ExpressNo, InvoiceState = goodsOrderInfo.InvoiceState, IsOut = goodsOrderInfo.IsOut, MemberId = goodsOrderInfo.MemberId, Memo = goodsOrderInfo.Memo, Mobile = goodsOrderInfo.Mobile, OldCustomer = goodsOrderInfo.OldCustomer, OrderId = goodsOrderInfo.OrderId, OrderNo = goodsOrderInfo.OrderNo, OrderState = goodsOrderInfo.OrderState, OrderTime = goodsOrderInfo.OrderTime, PaidUp = goodsOrderInfo.PaidUp, PaymentByBalance = goodsOrderInfo.PaymentByBalance, PayMode = goodsOrderInfo.PayMode, PayState = goodsOrderInfo.PayState, PayType = goodsOrderInfo.PayType, Phone = goodsOrderInfo.Phone, PickNo = goodsOrderInfo.PickNo, PostalCode = goodsOrderInfo.PostalCode, PromotionDescription = goodsOrderInfo.PromotionDescription, PromotionValue = goodsOrderInfo.PromotionValue, ProvinceId = goodsOrderInfo.ProvinceId, RealTotalPrice = goodsOrderInfo.RealTotalPrice, RefundId = goodsOrderInfo.RefundId, RefundmentMode = goodsOrderInfo.RefundmentMode, ReturnOrder = goodsOrderInfo.ReturnOrder, ReturnTime = goodsOrderInfo.ReturnTime, SaleFilialeId = goodsOrderInfo.SaleFilialeId, SalePlatformId = goodsOrderInfo.SalePlatformId, ScoreDeduction = goodsOrderInfo.ScoreDeduction, ScoreDeductionProportion = goodsOrderInfo.ScoreDeductionProportion, SendType = goodsOrderInfo.SendType, TotalPrice = goodsOrderInfo.TotalPrice }); }
protected void Page_Load(object sender, EventArgs e) { if (!string.IsNullOrEmpty(Request.QueryString["OrderId"])) { OrderId = new Guid(Request.QueryString["OrderId"]); } GoodsOrderInfo goodsOrderInfo = _goodsOrder.GetGoodsOrder(OrderId); goodsOrderInfo.ExpressNo = goodsOrderInfo.ExpressNo; //TODO WMS 老业务有展示物流信息。 NonceGoodsOrderInfo = goodsOrderInfo; }
public GoodsOrderInfo GetGoodsOrderInfo(string tid) { SqlParameter param = new SqlParameter("@tid", tid); GoodsOrderInfo info = null; DataTable dt = DBHelper.ExecuteDataTable(SQL_SELECT_GOODSORDER, param); foreach (DataRow dr in dt.Rows) { info = new GoodsOrderInfo(); info.created = DateTime.Parse(dr["created"].ToString()); } return(info); }
/// <summary>异步完成订单生成往来账 /// </summary> /// <param name="orderInfo">订单</param> /// <param name="orderDetailList">订单明细</param> /// <param name="errorMessage">异常信息</param> /// <returns></returns> public bool AddByCompleteOrder(GoodsOrderInfo orderInfo, IList <GoodsOrderDetailInfo> orderDetailList, out string errorMessage) { GoodsOrderDeliverInfo goodsOrderDeliverInfo; var reckoningList = NewCreateReckoningInfoList(orderInfo, orderDetailList, out goodsOrderDeliverInfo, out errorMessage).ToList(); if (reckoningList.Count == 0) { errorMessage = "此订单无需生成往来帐!"; return(true); } using (var tran = new System.Transactions.TransactionScope()) { //增加往来帐 foreach (var reckoning in reckoningList) { if (FilialeManager.IsEntityShopFiliale(reckoning.FilialeId)) { if (!AddReckoningToEntityShop(reckoning, out errorMessage)) { errorMessage = "插入门店往来帐失败," + errorMessage + "\r\n数据:" + new Framework.Core.Serialize.JsonSerializer().Serialize(reckoning); return(false); } } else { var success = _reckoningDao.Insert(reckoning, out errorMessage); if (!success) { errorMessage = "插入往来帐失败," + errorMessage + "\r\n数据:" + new Framework.Core.Serialize.JsonSerializer().Serialize(reckoning); return(false); } } } if (goodsOrderDeliverInfo != null) { _goodsOrderDeliver.DeleteOrderDeliver(goodsOrderDeliverInfo.OrderId); var result = _goodsOrderDeliver.InsertOrderDeliver(goodsOrderDeliverInfo); if (!result) { errorMessage = "插入订单快递运费信息失败," + errorMessage + "\r\n数据:" + new Framework.Core.Serialize.JsonSerializer().Serialize(goodsOrderDeliverInfo); return(false); } } tran.Complete(); return(true); } }
/// <summary>添加日销售量 /// </summary> /// <param name="orderInfo"></param> /// <param name="detailList"></param> /// <param name="dicAvgSettlePrice"></param> public void SaveGoodsDaySalesStatistics(GoodsOrderInfo orderInfo, IList <GoodsOrderDetailInfo> detailList, IDictionary <Guid, decimal> dicAvgSettlePrice) { if (orderInfo.HostingFilialeId == Guid.Empty) { orderInfo.HostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(orderInfo.DeliverWarehouseId, orderInfo.SaleFilialeId, detailList.Select(ent => ent.GoodsType).Distinct()); } var goodsSeriesList = _goodsCenterSao.GetGoodsSeriesList(orderInfo.SaleFilialeId, detailList.Select(w => w.GoodsID).Distinct().ToList()); //根据订单Id获取实际商品价格(参加促销活动的商品要抵扣相应的促销价,从而得到新的实际商品价格) Dictionary <Guid, decimal> dicGoodsPriceDict = _promotionSao.GetGoodsPriceDict(orderInfo.OrderId); var list = new List <GoodsDaySalesStatisticsInfo>(); foreach (var goodsOrderDetailInfo in detailList) { var gdsinfo = new GoodsDaySalesStatisticsInfo { DeliverWarehouseId = orderInfo.DeliverWarehouseId, SaleFilialeId = orderInfo.SaleFilialeId, SalePlatformId = orderInfo.SalePlatformId, GoodsId = goodsOrderDetailInfo.GoodsID, RealGoodsId = goodsOrderDetailInfo.RealGoodsID, GoodsSales = goodsOrderDetailInfo.Quantity, DayTime = orderInfo.OrderTime, Specification = goodsOrderDetailInfo.PurchaseSpecification, SellPrice = ((dicGoodsPriceDict != null && dicGoodsPriceDict.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicGoodsPriceDict[goodsOrderDetailInfo.GoodsID] : goodsOrderDetailInfo.SellPrice) * (decimal)goodsOrderDetailInfo.Quantity, GoodsName = goodsOrderDetailInfo.GoodsName, GoodsCode = goodsOrderDetailInfo.GoodsCode, ClassId = Guid.Empty, AvgSettlePrice = ((dicAvgSettlePrice != null && dicAvgSettlePrice.Any() && dicAvgSettlePrice.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicAvgSettlePrice[goodsOrderDetailInfo.GoodsID] : 0) * (decimal)goodsOrderDetailInfo.Quantity, HostingFilialeId = orderInfo.HostingFilialeId }; if (goodsSeriesList != null && goodsSeriesList.Count > 0) { var result = goodsSeriesList.FirstOrDefault(p => p.GoodsID.Equals(goodsOrderDetailInfo.GoodsID)); if (result != null) { gdsinfo.GoodsName = result.GoodsName; gdsinfo.GoodsCode = result.GoodsCode; gdsinfo.ClassId = result.ClassID; gdsinfo.BrandId = result.BrandId; gdsinfo.SeriesId = result.SeriesId; } } list.Add(gdsinfo); } _goodsOrderDetail.SaveGoodsSales(list); }
/// <summary>订单导入 /// </summary> /// <param name="pushDataId">推送数据ID</param> /// <param name="orderInfo">订单信息</param> /// <param name="orderDetailList">订单明细信息</param> /// <param name="invoiceInfo">发票信息</param> /// <returns></returns> public WCFReturnInfo AddOrderAndInvoice(Guid pushDataId, GoodsOrderInfo orderInfo, IList <GoodsOrderDetailInfo> orderDetailList, InvoiceInfo invoiceInfo) { if (pushDataId == Guid.Empty) { SAL.LogCenter.LogService.LogError("方法:AddOrderAndInvoice,推送数据ID不能为空!", "ERP.Service.AddOrderAndInvoice", null); return(new WCFReturnInfo(false, false, pushDataId, null, "方法:AddOrderAndInvoice,推送数据ID不能为空!")); } lock (this) { //如果commandid存在,且已执行成功,则直接返回true,表示该命令已经被执行;否则操作 if (PUSH.Core.Instance.ExistExecuted(pushDataId)) { return(new WCFReturnInfo(true, true, pushDataId, null, "服务验证方法已经执行!")); } } string errorMsg; try { if (orderDetailList != null && orderDetailList.Count > 0) { var success = _goodsOrder.AddOrderAndInvoice(orderInfo, orderDetailList, invoiceInfo, out errorMsg); if (!success) { SAL.LogCenter.LogService.LogError(string.Format("订单号 {0} 处理失败:{1}", orderInfo.OrderNo, errorMsg), "ERP.Service.AddOrderAndInvoice", null); return(new WCFReturnInfo(true, false, pushDataId, false, errorMsg)); } PUSH.Core.Instance.AddExecuted(pushDataId); return(new WCFReturnInfo(true, true, pushDataId, true, "操作成功")); } return(new WCFReturnInfo(true, false, pushDataId, false, "订单详细中,没有下单商品信息,无法添加订单")); } catch (Exception exp) { errorMsg = exp.Message; if (exp.InnerException != null) { errorMsg += @"\r\n" + exp.InnerException.Message; } SAL.LogCenter.LogService.LogError(errorMsg, "ERP.Service.AddOrderAndInvoice", exp); return(new WCFReturnInfo(false, false, pushDataId, null, errorMsg)); } }
/// <summary>作废订单 /// </summary> /// <param name="operatorId"></param> /// <param name="operatorName"></param> /// <param name="orderNos"></param> /// <returns></returns> public Boolean CancelOrder(Guid operatorId, string operatorName, List <String> orderNos) { using (var ts = new TransactionScope(TransactionScopeOption.Required, TimeSpan.FromMinutes(3))) { foreach (var orderNo in orderNos) { GoodsOrderInfo orderInfo = null; IList <GoodsOrderDetailInfo> orderDetails = null; InvoiceInfo invoiceinfo = null; using (var tss = new TransactionScope(TransactionScopeOption.Suppress, TimeSpan.FromMinutes(3))) { orderInfo = _goodsOrderDal.GetGoodsOrder(orderNo); if (orderInfo == null) { continue; } orderDetails = _goodsOrderDetail.GetGoodsOrderDetailByOrderId(orderInfo.OrderId); invoiceinfo = _invoice.GetInvoiceByGoodsOrder(orderInfo.OrderId); } var result = _goodsOrderDal.SetGoodsOrderToCancellation(orderNo); if (invoiceinfo != null && invoiceinfo.InvoiceId != Guid.Empty) { //已开发票,发票状态更改为作废申请 if (invoiceinfo.InvoiceState == (int)InvoiceState.Success) { result = _invoice.UpdateInvoiceStateByinvoiceId(orderInfo.OrderId, InvoiceState.WasteRequest); } //申请发票,发票状态更改为取消 else if (invoiceinfo.InvoiceState == (int)InvoiceState.Request) { result = _invoice.UpdateInvoiceStateByinvoiceId(orderInfo.OrderId, InvoiceState.Cancel); } } if (!result) { return(false); } } ts.Complete(); return(true); } }
public List <GoodsOrderInfo> GetHourOrderTotal(DateTime start, DateTime end, string nick) { SqlParameter[] param = new[] { new SqlParameter("@start", start), new SqlParameter("@end", end), new SqlParameter("@nick", nick) }; List <GoodsOrderInfo> list = new List <GoodsOrderInfo>(); DataTable dt = DBHelper.ExecuteDataTable(SQL_SELECT_ORDERTOTAL_BYHOUR, param); foreach (DataRow dr in dt.Rows) { GoodsOrderInfo info = new GoodsOrderInfo(); info.payment = decimal.Parse(dr["OrderCount"].ToString()); info.OrderTotal = int.Parse(dr["chour"].ToString()); list.Add(info); } return(list); }
static GoodsOrderDetailInfo[] GetOrderDetail(GoodsOrderInfo goi) { GoodsOrderDetailInfo temp = new GoodsOrderDetailInfo { CompGoodsId = Guid.Empty, CompIndex = 0, CurrencyId = Guid.NewGuid(), GoodsCode = "", GoodsId = Guid.NewGuid(), GoodsName = "GoodsName", MarketPrice = 50, OrderId = goi.OrderId, Quantity = 1, SellPrice = 40, Specification = string.Empty, SubScore = 40, Subtotal = 40 }; return(new[] { temp }); }
public IList <GoodsOrderInfo> GetOrderList(string nick, DateTime start, DateTime end, int page, int count) { int snum = 1; if (page != 1) { snum = (page - 1) * count + 1; } int endnum = page * count; List <GoodsOrderInfo> list = new List <GoodsOrderInfo>(); SqlParameter[] param = new[] { new SqlParameter("@nick", nick), new SqlParameter("@start", start), new SqlParameter("@end", end), new SqlParameter("@snum", snum), new SqlParameter("@enum", endnum) }; DataTable dt = DBHelper.ExecuteDataTable(SQL_SELECT_ORDER_LIST, param); foreach (DataRow dr in dt.Rows) { GoodsOrderInfo info = new GoodsOrderInfo(); info.buyer_nick = dr["buy_nick"].ToString(); info.payment = decimal.Parse(dr["payment"].ToString()); info.receiver_city = dr["receiver_city"].ToString(); info.receiver_state = dr["receiver_state"].ToString(); info.tid = dr["tid"].ToString(); info.post_fee = decimal.Parse(dr["post_fee"].ToString()); info.total_fee = decimal.Parse(dr["total_fee"].ToString()); list.Add(info); } return(list); }
public IList <GoodsOrderInfo> GetSellCityTop(DateTime start, DateTime end, string nick) { SqlParameter[] param = new[] { new SqlParameter("@start", start), new SqlParameter("@end", end), new SqlParameter("@nick", nick) }; IList <GoodsOrderInfo> list = new List <GoodsOrderInfo>(); DataTable dt = DBHelper.ExecuteDataTable(SQL_SELECT_SELLCITY, param); foreach (DataRow dr in dt.Rows) { GoodsOrderInfo info = new GoodsOrderInfo(); info.payment = decimal.Parse(dr["paytotal"].ToString()); info.OrderTotal = int.Parse(dr["ototal"].ToString()); info.receiver_state = dr["receiver_state"].ToString(); info.receiver_city = dr["receiver_city"].ToString(); list.Add(info); } IList <GoodsOrderInfo> rlist = list.OrderByDescending(o => o.OrderTotal).ToList(); return(rlist); }
public int InsertTaoBaoGoodsOrder(GoodsOrderInfo info) { SqlParameter[] param = new[] { new SqlParameter("@tid", info.tid), new SqlParameter("@seller_nick", info.seller_nick), new SqlParameter("@total_fee", info.total_fee), new SqlParameter("@post_fee", info.post_fee), new SqlParameter("@payment", info.payment), new SqlParameter("@cod_fee", info.cod_fee), new SqlParameter("@commission_fee", info.commission_fee), new SqlParameter("@created", info.created), new SqlParameter("@pay_time", info.pay_time == DateTime.MinValue?DateTime.Parse("1990-1-1"):info.pay_time), new SqlParameter("@end_time", info.end_time == DateTime.MinValue?DateTime.Parse("1990-1-1"):info.end_time), new SqlParameter("@receiver_state", info.receiver_state), new SqlParameter("@receiver_city", info.receiver_city), new SqlParameter("@UsePromotion", info.UsePromotion), new SqlParameter("@pingjiacreated", info.PingInfo.created), new SqlParameter("@result", info.PingInfo.result), new SqlParameter("@pingjiacontent", info.PingInfo.content), new SqlParameter("@buy_nick", info.buyer_nick) }; return(DBHelper.ExecuteNonQuery(SQL_ORDER_INSERT, param)); }
/// <summary>新架构完成订单创建所需往来账 2015-01-19 陈重文 /// </summary> /// <param name="goodsOrderInfo">订单信息</param> /// <param name="goodsOrderDetailInfoList">订单明细</param> /// <param name="goodsOrderDeliverInfo">订单运费信息</param> /// <param name="errorMsg">错误信息</param> /// <returns></returns> public IEnumerable <ReckoningInfo> NewCreateReckoningInfoList(GoodsOrderInfo goodsOrderInfo, IList <GoodsOrderDetailInfo> goodsOrderDetailInfoList, out GoodsOrderDeliverInfo goodsOrderDeliverInfo, out string errorMsg) { if (goodsOrderInfo.HostingFilialeId == Guid.Empty) { goodsOrderInfo.HostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(goodsOrderInfo.DeliverWarehouseId, goodsOrderInfo.SaleFilialeId, goodsOrderDetailInfoList.Select(ent => ent.GoodsType).Distinct()); } //所需添加的往来帐集合 IList <ReckoningInfo> reckoningList = new List <ReckoningInfo>(); goodsOrderDeliverInfo = null; var orderCarriageInfo = _wmsSao.GetOrderNoCarriage(goodsOrderInfo.OrderNo, out errorMsg); if (orderCarriageInfo == null) { return(reckoningList); } var carriage = orderCarriageInfo.Carriage; if (carriage != 0) { goodsOrderDeliverInfo = new GoodsOrderDeliverInfo { OrderId = goodsOrderInfo.OrderId, TotalWeight = orderCarriageInfo.PackageWeight == 0 ? 0 : Convert.ToDouble(orderCarriageInfo.PackageWeight) / 1000, CarriageFee = Convert.ToDouble(orderCarriageInfo.Carriage), ExpressId = goodsOrderInfo.ExpressId, ExpressNo = goodsOrderInfo.ExpressNo, MaxWrongValue = 0, ProvinceName = orderCarriageInfo.Province, CityName = orderCarriageInfo.City }; } #region [检查快递往来单位信息] Guid companyId = Express.Instance.Get(goodsOrderInfo.ExpressId).CompanyId; CompanyCussentInfo expressCompanyInfo = _companyCussent.GetCompanyCussent(companyId); if (expressCompanyInfo == null) { errorMsg = "快递公司的往来对账信息没有建立!"; return(new List <ReckoningInfo>()); } #endregion //获取销售公司名称 string saleFilialeName = FilialeManager.GetName(goodsOrderInfo.SaleFilialeId); string hostingFilialeName = FilialeManager.GetName(goodsOrderInfo.HostingFilialeId); #region [运费往来帐] if (carriage > 0) { #region [销售公司对快递公司应付快递运费帐] //销售公司对快递公司的应付快递运费帐 var saleFilialeToCarriage = new ReckoningInfo { ContructType = ContructType.Insert, ReckoningId = Guid.NewGuid(), TradeCode = _codeManager.GetCode(CodeType.PY), DateCreated = DateTime.Now, ReckoningType = (int)ReckoningType.Defray, State = (int)ReckoningStateType.Currently, IsChecked = (int)CheckType.NotCheck, AuditingState = (int)AuditingState.Yes, LinkTradeCode = goodsOrderInfo.ExpressNo, WarehouseId = goodsOrderInfo.DeliverWarehouseId, FilialeId = goodsOrderInfo.HostingFilialeId, ThirdCompanyID = expressCompanyInfo.CompanyId, Description = string.Format("[完成订单,{0}对快递公司{1}运费应付款]", hostingFilialeName, expressCompanyInfo.CompanyName), AccountReceivable = -carriage, JoinTotalPrice = -carriage, ReckoningCheckType = (int)ReckoningCheckType.Carriage, IsOut = goodsOrderInfo.IsOut, LinkTradeType = (int)ReckoningLinkTradeType.Express, }; reckoningList.Add(saleFilialeToCarriage); #endregion } #endregion #region 销售公司对快递公司的订单代收帐 if (goodsOrderInfo.PayMode == (int)PayMode.COD || goodsOrderInfo.PayMode == (int)PayMode.COM) { #region [销售公司对快递公司的订单代收帐] //销售公司对快递公司的订单代收帐 var saleFilialeToRealTotalPrice = new ReckoningInfo { ContructType = ContructType.Insert, ReckoningId = Guid.NewGuid(), TradeCode = _codeManager.GetCode(CodeType.GT), DateCreated = DateTime.Now, ReckoningType = (int)ReckoningType.Income, State = (int)ReckoningStateType.Currently, IsChecked = (int)CheckType.NotCheck, AuditingState = (int)AuditingState.Yes, LinkTradeCode = goodsOrderInfo.ExpressNo, WarehouseId = goodsOrderInfo.DeliverWarehouseId, FilialeId = goodsOrderInfo.SaleFilialeId, ThirdCompanyID = expressCompanyInfo.CompanyId, Description = string.Format("[完成订单,{0}对快递公司{1}的订单应收货款]", saleFilialeName, expressCompanyInfo.CompanyName), AccountReceivable = WebRudder.ReadInstance.CurrencyValue(goodsOrderInfo.RealTotalPrice), ReckoningCheckType = (int)ReckoningCheckType.Collection, IsOut = goodsOrderInfo.IsOut, LinkTradeType = (int)ReckoningLinkTradeType.GoodsOrder, }; reckoningList.Add(saleFilialeToRealTotalPrice); #endregion } #endregion return(reckoningList); }
public static void UpdateSiteTotal(string nick, string session, DateTime now, SiteTotalService taoDal) { RefundService refDal = new RefundService(); TaoBaoGoodsOrderService tbgoDal = new TaoBaoGoodsOrderService(); List <RefundInfo> refundList = (List <RefundInfo>)TaoBaoAPI.GetRefundInfoList(now.AddDays(-2), now, nick, session, "SUCCESS"); //所有有订单的用户 TopSiteTotalInfo stinfo = taoDal.GetOrderTotalPay(DateTime.Parse(now.ToShortDateString()), DateTime.Parse(now.AddDays(1).ToShortDateString()), nick); //所有表名(添加过统计代码到网页的) List <string> tableList = taoDal.GetTableName(); string tablename = GetTableName(nick); List <string> mytablelist = tableList.Where(o => o == tablename).ToList(); TopSiteTotalInfo addup = new TopSiteTotalInfo(); addup.SiteNick = nick; addup.SiteTotalDate = now.ToString("yyyyMMdd"); //给询单数赋值 addup.AskOrder = new TalkRecodService().GetCustomerList(DateTime.Parse(now.ToShortDateString()), DateTime.Parse(now.AddDays(1).ToShortDateString()), nick).Count; //有添加统计代码 if (mytablelist.Count > 0) { //有订单 if (stinfo != null) { addup.SiteOrderCount = stinfo.SiteOrderCount; addup.SiteOrderPay = stinfo.SiteOrderPay; addup.PostFee = stinfo.PostFee; addup.SiteBuyCustomTotal = stinfo.SiteBuyCustomTotal; addup.SiteSecondBuy = taoDal.GetSecondBuyTotal(DateTime.Parse(now.ToShortDateString()), DateTime.Parse(now.AddDays(1).ToShortDateString()), nick); } TopSiteTotalInfo puvinfo = taoDal.GetPvUvTotal(DateTime.Parse(now.ToShortDateString()), DateTime.Parse(now.AddDays(1).ToShortDateString()), tablename); addup.SiteUVCount = puvinfo.SiteUVCount; addup.SitePVCount = puvinfo.SitePVCount; addup.ZhiTongFlow = taoDal.GetZhiTongTotal(now, now.AddDays(1), tablename); addup.SiteZuanZhan = taoDal.GetZuanZhanTotal(now, now.AddDays(1), tablename); addup.SiteUVBack = taoDal.GetBackTotal(DateTime.Parse(now.ToShortDateString()), DateTime.Parse(now.AddDays(1).ToShortDateString()), tablename); } else { //有订单 if (stinfo != null) { addup.SiteOrderCount = stinfo.SiteOrderCount; addup.SiteOrderPay = stinfo.SiteOrderPay; addup.PostFee = stinfo.PostFee; addup.SiteBuyCustomTotal = stinfo.SiteBuyCustomTotal; addup.SiteSecondBuy = taoDal.GetSecondBuyTotal(DateTime.Parse(now.ToShortDateString()), DateTime.Parse(now.AddDays(1).ToShortDateString()), nick); } } IList <string> tidList = taoDal.GetOrderIds(DateTime.Parse(now.ToShortDateString()), DateTime.Parse(now.AddDays(1).ToShortDateString()), nick); if (tidList.Count > 0) { addup.GoodsCount = taoDal.GetGoodsCount(tidList); } List <RefundInfo> hadReList = refDal.GetAllRefund(nick, now.AddDays(-2), now); //退款情况 List <RefundInfo> trefundList = refundList.Where(o => o.modified.ToShortDateString() == now.ToShortDateString()).ToList(); if (trefundList.Count > 0) { int rorderCount = 0; decimal rpay = 0; foreach (RefundInfo refund in new List <RefundInfo>(trefundList)) { if (!tidList.Contains(refund.tid)) { GoodsOrderInfo roinfo = tbgoDal.GetGoodsOrderInfo(refund.tid); if (roinfo == null) { continue; } else { if (hadReList.Where(o => o.tid == refund.tid).ToList().Count > 0) { continue; } if (roinfo.pay_time != DateTime.Parse("1990-1-1")) { refund.OrderTime = roinfo.pay_time; } else { refund.OrderTime = roinfo.created; } refund.seller_nick = nick; refDal.AddRefund(refund); //需要查询这一天有多少订单 RefundInfo newrefund = refDal.GetRefundTotal(nick, DateTime.Parse(refund.OrderTime.ToShortDateString()), DateTime.Parse(refund.OrderTime.ToShortDateString()).AddDays(1)); taoDal.UpdateGoodsOrderInfo(nick, refund.OrderTime.ToString("yyyyMMdd"), newrefund.total_fee, newrefund.num); } continue; } rorderCount++; rpay += (refund.total_fee - refund.payment); } addup.RefundOrderCount = rorderCount; addup.RefundMoney = rpay; } taoDal.AddOrUp(addup); }
/// <summary>库存中心匹配订单加入推送 /// </summary> /// <returns></returns> public static bool AddToStockCenterForMatchOrder(GoodsOrderInfo orderInfo, IList <GoodsOrderDetailInfo> detailInfos) { var pushDataInfo = PushDataInfo.Create(GlobalConfig.ERPFilialeID, ServiceType.ERP.ToString(), orderInfo.SaleFilialeId, ServiceType.StockCenter.ToString(), "MatchOrder", orderInfo.OrderNo, orderInfo, detailInfos); return(PUSH.Core.Instance.Add(pushDataInfo)); }
public static void RunWaitConsignmentOrderTask() { try { lock (_lockObj) { if (_isRunningCompleteOrder) { return; } } //验证时间 var hour = DateTime.Now.Hour; if (!GlobalConfig.SecondConsignmentOrderHour.Contains(hour.ToString())) { return; } //开始继续完成订单数据 var waitConsignmentOrderList = _goodsOrder.GetWaitConsignmentOrder(GlobalConfig.ReadWaitConsignmentOrder); if (waitConsignmentOrderList.Count > 0) { LogMessage("读取数据:" + waitConsignmentOrderList.Count); } lock (_lockObj) { _isRunningCompleteOrder = true; } foreach (var waitInfo in waitConsignmentOrderList) { GoodsOrderInfo orderInfo = null; try { orderInfo = _goodsOrder.GetGoodsOrder(waitInfo.OrderId); string errorMessage; var success = _orderManager.FinishConsignmentOrder(orderInfo, waitInfo.Operator, out errorMessage); if (!success) { LogMessage("订单号:" + orderInfo.OrderNo + ",完成失败! 》》 " + errorMessage); } } catch (Exception exp) { if (orderInfo != null) { LogMessage("订单号:" + orderInfo.OrderNo + ",完成失败! 》》 " + exp.Message, exp); } else { LogMessage("获取订单失败:" + waitInfo.OrderId + " ! 》》 " + exp.Message, exp); } } } lock (_lockObj) { _isRunningCompleteOrder = false; } } catch (Exception exp) { LogMessage("发生错误异常" + exp.Message); } }
static void JsonDeserialize(ASYN_GoodsDaySalesStatisticsInfo asynGoodsDaySalesStatisticsInfo, out GoodsOrderInfo orderInfo, out List <GoodsOrderDetailInfo> orderDetail, out List <GoodsOrderDetailInfo> oldOrderDetails) { var serrializer = new JsonSerializer(); orderInfo = serrializer.Deserialize <GoodsOrderInfo>(asynGoodsDaySalesStatisticsInfo.OrderJsonStr); orderDetail = serrializer.Deserialize <List <GoodsOrderDetailInfo> >(asynGoodsDaySalesStatisticsInfo.OrderDetailJsonStr); oldOrderDetails = serrializer.Deserialize <List <GoodsOrderDetailInfo> >(asynGoodsDaySalesStatisticsInfo.OldOrderDetailJsonStr); }
/// <summary>修改日销量 /// </summary> /// <param name="orderInfo">订单</param> /// <param name="goodsOrderDetailInfos"></param> /// <param name="isUpdate">false、作废,true、修改</param> ///<param name="oldDetailInfos"></param> /// <param name="dicAvgSettlePrice"></param> public void UpdateGoodsDaySalesStatistics(GoodsOrderInfo orderInfo, IList <GoodsOrderDetailInfo> goodsOrderDetailInfos, bool isUpdate, IList <GoodsOrderDetailInfo> oldDetailInfos, IDictionary <Guid, decimal> dicAvgSettlePrice) { var list = new List <GoodsDaySalesStatisticsInfo>(); if (orderInfo.HostingFilialeId == Guid.Empty) { orderInfo.HostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(orderInfo.DeliverWarehouseId, orderInfo.SaleFilialeId, goodsOrderDetailInfos.Select(ent => ent.GoodsType).Distinct()); } var goodsSeriesList = _goodsCenterSao.GetGoodsSeriesList(orderInfo.SaleFilialeId, goodsOrderDetailInfos.Select(w => w.GoodsID).Distinct().ToList()); //根据订单Id获取实际商品价格(参加促销活动的商品要抵扣相应的促销价,从而得到新的实际商品价格) Dictionary <Guid, decimal> dicGoodsPriceDict = _promotionSao.GetGoodsPriceDict(orderInfo.OrderId); #region 作废 if (!isUpdate) //作废 { foreach (var goodsOrderDetailInfo in goodsOrderDetailInfos) { var goodsDaySalesStatisticsInfo = new GoodsDaySalesStatisticsInfo { DeliverWarehouseId = orderInfo.DeliverWarehouseId, SaleFilialeId = orderInfo.SaleFilialeId, SalePlatformId = orderInfo.SalePlatformId, GoodsId = goodsOrderDetailInfo.GoodsID, RealGoodsId = goodsOrderDetailInfo.RealGoodsID, GoodsSales = -goodsOrderDetailInfo.Quantity, DayTime = orderInfo.OrderTime, Specification = goodsOrderDetailInfo.PurchaseSpecification, SellPrice = ((dicGoodsPriceDict != null && dicGoodsPriceDict.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicGoodsPriceDict[goodsOrderDetailInfo.GoodsID] : goodsOrderDetailInfo.SellPrice) * (decimal) - goodsOrderDetailInfo.Quantity, GoodsName = goodsOrderDetailInfo.GoodsName, GoodsCode = goodsOrderDetailInfo.GoodsCode, HostingFilialeId = orderInfo.HostingFilialeId, AvgSettlePrice = ((dicAvgSettlePrice != null && dicAvgSettlePrice.Any() && dicAvgSettlePrice.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicAvgSettlePrice[goodsOrderDetailInfo.GoodsID] : 0) * (decimal) - goodsOrderDetailInfo.Quantity }; if (goodsSeriesList != null && goodsSeriesList.Count > 0) { var result = goodsSeriesList.FirstOrDefault(p => p.GoodsID.Equals(goodsOrderDetailInfo.GoodsID)); if (result != null) { goodsDaySalesStatisticsInfo.GoodsName = result.GoodsName; goodsDaySalesStatisticsInfo.GoodsCode = result.GoodsCode; goodsDaySalesStatisticsInfo.ClassId = result.ClassID; goodsDaySalesStatisticsInfo.BrandId = result.BrandId; goodsDaySalesStatisticsInfo.SeriesId = result.SeriesId; } } list.Add(goodsDaySalesStatisticsInfo); } } #endregion #region [修改] else //修改 { if (orderInfo.OrderState == (int)OrderState.StockUp) { var oldGoodsDaySalesStatistics = new List <GoodsDaySalesStatisticsInfo>(); //修改前订单销量明细 var newGoodsDaySalesStatistics = new List <GoodsDaySalesStatisticsInfo>(); //修改后的订单销量明细 foreach (var goodsOrderDetailInfo in oldDetailInfos) //原始订单明细 { var goodsDaySalesInfo = oldGoodsDaySalesStatistics.FirstOrDefault(act => act.RealGoodsId == goodsOrderDetailInfo.RealGoodsID); if (goodsDaySalesInfo != null) { goodsDaySalesInfo.GoodsSales += goodsOrderDetailInfo.Quantity; goodsDaySalesInfo.SellPrice += ((dicGoodsPriceDict != null && dicGoodsPriceDict.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicGoodsPriceDict[goodsOrderDetailInfo.GoodsID] : goodsOrderDetailInfo.SellPrice) * (decimal)goodsOrderDetailInfo.Quantity; goodsDaySalesInfo.AvgSettlePrice += ((dicAvgSettlePrice != null && dicAvgSettlePrice.Any() && dicAvgSettlePrice.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicAvgSettlePrice[goodsOrderDetailInfo.GoodsID] : 0) * (decimal)goodsOrderDetailInfo.Quantity; } else { var gdsinfo = new GoodsDaySalesStatisticsInfo { DeliverWarehouseId = orderInfo.DeliverWarehouseId, SaleFilialeId = orderInfo.SaleFilialeId, SalePlatformId = orderInfo.SalePlatformId, GoodsId = goodsOrderDetailInfo.GoodsID, RealGoodsId = goodsOrderDetailInfo.RealGoodsID, GoodsSales = goodsOrderDetailInfo.Quantity, DayTime = orderInfo.OrderTime, Specification = goodsOrderDetailInfo.PurchaseSpecification, SellPrice = ((dicGoodsPriceDict != null && dicGoodsPriceDict.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicGoodsPriceDict[goodsOrderDetailInfo.GoodsID] : goodsOrderDetailInfo.SellPrice) * (decimal)goodsOrderDetailInfo.Quantity, GoodsName = goodsOrderDetailInfo.GoodsName, GoodsCode = goodsOrderDetailInfo.GoodsCode, ClassId = Guid.Empty, HostingFilialeId = orderInfo.HostingFilialeId, AvgSettlePrice = ((dicAvgSettlePrice != null && dicAvgSettlePrice.Any() && dicAvgSettlePrice.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicAvgSettlePrice[goodsOrderDetailInfo.GoodsID] : 0) * (decimal)goodsOrderDetailInfo.Quantity }; oldGoodsDaySalesStatistics.Add(gdsinfo); } } foreach (var goodsOrderDetailInfo in goodsOrderDetailInfos) //当前销量 { var goodsDaySalesInfo = newGoodsDaySalesStatistics.FirstOrDefault(act => act.RealGoodsId == goodsOrderDetailInfo.RealGoodsID); if (goodsDaySalesInfo != null) { goodsDaySalesInfo.GoodsSales += goodsOrderDetailInfo.Quantity; goodsDaySalesInfo.SellPrice += ((dicGoodsPriceDict != null && dicGoodsPriceDict.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicGoodsPriceDict[goodsOrderDetailInfo.GoodsID] : goodsOrderDetailInfo.SellPrice) * (decimal)goodsOrderDetailInfo.Quantity; goodsDaySalesInfo.AvgSettlePrice += ((dicAvgSettlePrice != null && dicAvgSettlePrice.Any() && dicAvgSettlePrice.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicAvgSettlePrice[goodsOrderDetailInfo.GoodsID] : 0) * (decimal)goodsOrderDetailInfo.Quantity; } else { goodsDaySalesInfo = new GoodsDaySalesStatisticsInfo { DeliverWarehouseId = orderInfo.DeliverWarehouseId, SaleFilialeId = orderInfo.SaleFilialeId, SalePlatformId = orderInfo.SalePlatformId, GoodsId = goodsOrderDetailInfo.GoodsID, RealGoodsId = goodsOrderDetailInfo.RealGoodsID, GoodsSales = goodsOrderDetailInfo.Quantity, DayTime = orderInfo.OrderTime, Specification = goodsOrderDetailInfo.PurchaseSpecification, SellPrice = ((dicGoodsPriceDict != null && dicGoodsPriceDict.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicGoodsPriceDict[goodsOrderDetailInfo.GoodsID] : goodsOrderDetailInfo.SellPrice) * (decimal)goodsOrderDetailInfo.Quantity, GoodsName = goodsOrderDetailInfo.GoodsName, GoodsCode = goodsOrderDetailInfo.GoodsCode, ClassId = Guid.Empty, HostingFilialeId = orderInfo.HostingFilialeId, AvgSettlePrice = ((dicAvgSettlePrice != null && dicAvgSettlePrice.Any() && dicAvgSettlePrice.ContainsKey(goodsOrderDetailInfo.GoodsID)) ? dicAvgSettlePrice[goodsOrderDetailInfo.GoodsID] : 0) * (decimal)goodsOrderDetailInfo.Quantity }; newGoodsDaySalesStatistics.Add(goodsDaySalesInfo); } } //修改后删除的商品 foreach (var goodsDaySalesStatisticsInfo in oldGoodsDaySalesStatistics) { var info = newGoodsDaySalesStatistics.All(act => act.RealGoodsId != goodsDaySalesStatisticsInfo.RealGoodsId); if (info) { goodsDaySalesStatisticsInfo.GoodsSales = -goodsDaySalesStatisticsInfo.GoodsSales; goodsDaySalesStatisticsInfo.SellPrice = -goodsDaySalesStatisticsInfo.SellPrice; goodsDaySalesStatisticsInfo.AvgSettlePrice = -goodsDaySalesStatisticsInfo.AvgSettlePrice; //_goodsOrderDetail.SaveGoodsSales(goodsDaySalesStatisticsInfo); list.Add(goodsDaySalesStatisticsInfo); //newGoodsDaySalesStatistics.Add(goodsDaySalesStatisticsInfo); } } foreach (var goodsDaySalesStatisticsInfo in newGoodsDaySalesStatistics) { var info = oldGoodsDaySalesStatistics.FirstOrDefault(act => act.RealGoodsId == goodsDaySalesStatisticsInfo.RealGoodsId); if (info != null) { goodsDaySalesStatisticsInfo.GoodsSales -= info.GoodsSales; goodsDaySalesStatisticsInfo.SellPrice -= info.SellPrice; goodsDaySalesStatisticsInfo.AvgSettlePrice -= info.AvgSettlePrice; } if (Math.Abs(goodsDaySalesStatisticsInfo.GoodsSales) > 0 || Math.Abs(goodsDaySalesStatisticsInfo.SellPrice) > 0) { if (oldGoodsDaySalesStatistics.All(act => act.RealGoodsId != goodsDaySalesStatisticsInfo.RealGoodsId)) { if (goodsSeriesList != null && goodsSeriesList.Count > 0) { var result = goodsSeriesList.FirstOrDefault(p => p.GoodsID.Equals(goodsDaySalesStatisticsInfo.GoodsId)); if (result != null) { goodsDaySalesStatisticsInfo.GoodsName = result.GoodsName; goodsDaySalesStatisticsInfo.GoodsCode = result.GoodsCode; goodsDaySalesStatisticsInfo.ClassId = result.ClassID; goodsDaySalesStatisticsInfo.BrandId = result.BrandId; goodsDaySalesStatisticsInfo.SeriesId = result.SeriesId; } } } //_goodsOrderDetail.SaveGoodsSales(goodsDaySalesStatisticsInfo); list.Add(goodsDaySalesStatisticsInfo); } } } } #endregion _goodsOrderDetail.SaveGoodsSales(list); }
/// <summary> /// 添加订单明细 /// </summary> /// <param name="goodsOrderDetailList"></param> /// <param name="goodsOrder"></param> /// <param name="errorMsg"></param> /// <returns></returns> public bool Insert(IList <GoodsOrderDetailInfo> goodsOrderDetailList, GoodsOrderInfo goodsOrder, out string errorMsg) { errorMsg = string.Empty; if (goodsOrderDetailList == null) { errorMsg = "订单详细商品不能空"; return(false); } using (SqlConnection conn = Databases.GetSqlConnection(GlobalConfig.ERP_DB_NAME, false)) { conn.Open(); using (var trans = conn.BeginTransaction()) { try { foreach (GoodsOrderDetailInfo goodsOrderDetail in goodsOrderDetailList) { goodsOrderDetail.PurchaseSpecification = goodsOrderDetail.PurchaseSpecification ?? string.Empty; if (!string.IsNullOrEmpty(goodsOrderDetail.Specification)) { goodsOrderDetail.Specification = goodsOrderDetail.Specification.Trim().Replace(" ", " ") + " "; } if (!string.IsNullOrEmpty(goodsOrderDetail.PurchaseSpecification)) { goodsOrderDetail.PurchaseSpecification = goodsOrderDetail.PurchaseSpecification.Trim().Replace(" ", " ") + " "; } decimal promotionDeductionAmount = 0; decimal pointsDeductionAmount = 0; if (goodsOrder.TotalPrice.Equals(0) || goodsOrderDetail.TotalPrice.Equals(0)) { promotionDeductionAmount = 0; } else { promotionDeductionAmount = Math.Round((goodsOrderDetail.TotalPrice / goodsOrder.TotalPrice) * goodsOrder.PromotionValue, 2); if (goodsOrder.ScoreDeduction.Equals(0) || goodsOrder.ScoreDeductionProportion.Equals(0)) { pointsDeductionAmount = 0; } else { pointsDeductionAmount = Math.Round((goodsOrderDetail.TotalPrice / goodsOrder.TotalPrice) * Convert.ToDecimal(goodsOrder.ScoreDeduction / goodsOrder.ScoreDeductionProportion), 2); } } goodsOrderDetail.PromotionDeductionAmount = promotionDeductionAmount + pointsDeductionAmount; conn.Execute(SQL_INSERT_GOODSORDERDETAIL, new { OrderId = goodsOrderDetail.OrderId, GoodsID = goodsOrderDetail.GoodsID, RealGoodsID = goodsOrderDetail.RealGoodsID, CompGoodsId = goodsOrderDetail.CompGoodsId, CompIndex = goodsOrderDetail.CompIndex, GoodsName = goodsOrderDetail.GoodsName, GoodsCode = goodsOrderDetail.GoodsCode, Specification = goodsOrderDetail.Specification, MarketPrice = goodsOrderDetail.MarketPrice, SellPrice = goodsOrderDetail.SellPrice, Quantity = goodsOrderDetail.Quantity, TotalPrice = goodsOrderDetail.TotalPrice, GiveScore = goodsOrderDetail.GiveScore, PurchaseSpecification = goodsOrderDetail.PurchaseSpecification, IsProcess = goodsOrderDetail.IsProcess, BuyType = goodsOrderDetail.BuyType, GoodsScore = goodsOrderDetail.GoodsScore, TotalGoodsScore = goodsOrderDetail.TotalGoodsScore, SellType = goodsOrderDetail.SellType, GoodsType = goodsOrderDetail.GoodsType, ScoreDeductionMoneyUpper = goodsOrderDetail.ScoreDeductionMoneyUpper, OriginalSellPrice = goodsOrderDetail.OriginalSellPrice, PromotionId = goodsOrderDetail.PromotionId, PromotionDeductionAmount = goodsOrderDetail.PromotionDeductionAmount }, trans); } trans.Commit(); return(true); } catch (Exception ex) { trans.Rollback(); errorMsg = ex.Message; return(false); } } } }
/// <summary>订单导入 /// </summary> public bool AddOrderAndInvoice(GoodsOrderInfo goodsOrder, IList <GoodsOrderDetailInfo> goodsOrderDetailList, InvoiceInfo invoiceInfo, out string errorMessage) { errorMessage = string.Empty; if (goodsOrderDetailList.Count == 0) { errorMessage = "订单明细没有数据!"; return(false); } Boolean isEdit = false; #region 验证B2C订单信息 (订单目前是走推送服务) var filialeList = FilialeManager.GetB2CFilialeList(); if (filialeList.Any(act => act.ID == goodsOrder.SaleFilialeId)) { try { var info = OrderSao.GetGoodsOrderInfo(goodsOrder.SaleFilialeId, goodsOrder.OrderId); if (info == null) { errorMessage = "获取B2C订单信息不存在"; return(false); } if (info.OrderState == (int)OrderState.Cancellation) { return(true); } } catch (Exception ex) { errorMessage = "获取B2C订单信息异常" + ex.Message; throw ex; } } #endregion var localGoodsOrderInfo = _goodsOrderDao.GetGoodsOrder(goodsOrder.OrderId); goodsOrder.HostingFilialeId = WMSSao.GetHostingFilialeIdByWarehouseIdGoodsTypes(goodsOrder.DeliverWarehouseId, goodsOrder.SaleFilialeId, goodsOrderDetailList.Select(ent => ent.GoodsType).Distinct()); IList <GoodsOrderDetailInfo> localGoodsOrderDetails = new List <GoodsOrderDetailInfo>(); if (localGoodsOrderInfo != null && localGoodsOrderInfo.OrderId != Guid.Empty) { isEdit = true; if (localGoodsOrderInfo.OrderState == (int)OrderState.Cancellation) { return(true); } localGoodsOrderDetails = _goodsOrderDetailDao.GetGoodsOrderDetailList(goodsOrder.OrderId); } using (var ts = new TransactionScope(TransactionScopeOption.Required)) { //1.订单导入,先删后插 if (isEdit) { var success = _goodsOrderDao.Delete(goodsOrder.OrderId); if (!success) { errorMessage = "删除订单失败"; return(false); } } //2.插入订单和订单明细 var insertSuccess = _goodsOrderDao.Insert(goodsOrder, out errorMessage); if (!insertSuccess) { errorMessage = string.Format("添加订单信息失败:{0}", errorMessage); return(false); } var insertDetailSuccess = _goodsOrderDetailDao.Insert(goodsOrderDetailList, goodsOrder, out errorMessage); if (!insertDetailSuccess) { errorMessage = string.Format("添加订单商品明细失败:{0}", errorMessage); return(false); } //3.记录销量 //异步销量 if (goodsOrder.OrderState == (int)OrderState.WaitOutbound || goodsOrder.OrderState == (int)OrderState.StockUp || goodsOrder.OrderState == (int)OrderState.RequirePurchase || goodsOrder.OrderState == (int)OrderState.Redeploy) { var orderJsonStr = new Framework.Core.Serialize.JsonSerializer().Serialize(goodsOrder); var orderDetailJsonStr = new Framework.Core.Serialize.JsonSerializer().Serialize(goodsOrderDetailList); var asynGoodsDaySalesStatisticsInfo = isEdit ? ASYN_GoodsDaySalesStatisticsInfo.EditGoodsDaySale(goodsOrder.OrderNo, orderJsonStr, orderDetailJsonStr, new Framework.Core.Serialize.JsonSerializer().Serialize(localGoodsOrderDetails)) : ASYN_GoodsDaySalesStatisticsInfo.AddGoodsDaySale(goodsOrder.OrderNo, orderJsonStr, orderDetailJsonStr); var asynResult = _goodsOrderDetailDao.InsertASYN_GoodsDaySalesStatisticsInfo(asynGoodsDaySalesStatisticsInfo); if (!asynResult) { errorMessage = "销量记录到异步失败!"; return(false); } } //4.发票插入 if (invoiceInfo != null && invoiceInfo.InvoiceId != Guid.Empty) { invoiceInfo.DeliverWarehouseId = goodsOrder.DeliverWarehouseId; var insertInvoiceSuccess = _invoiceDao.Insert(invoiceInfo, new Dictionary <Guid, string> { { goodsOrder.OrderId, goodsOrder.OrderNo } }); if (!insertInvoiceSuccess) { errorMessage = "插入发票失败"; return(false); } } //5.配货中,会员中心交互 MemberCenterSao.OrderAllocateGoods(goodsOrder.SalePlatformId, goodsOrder.OrderId); //提交事务 ts.Complete(); return(true); } }
/// <summary> 财务修改订单信息 独立后台或总后台字段区别:独---Weight,总--ReturnTime /// </summary> internal void SyncGoodsOrderUpdateAffirm(Guid saleFilialeId, GoodsOrderInfo goodsOrderInfo) { OrderSao.GoodsOrderUpdateAffirm(saleFilialeId, goodsOrderInfo); }
/// <summary>发送短信和邮件 /// </summary> internal void SyncSendMessage(GoodsOrderInfo goodsOrderInfo, MailType mailType, SMSType smsType, RefundmentMode refundmentMode) { }
/// <summary>修改订单信息 /// </summary> /// <param name="goodsOrderInfo"></param> /// <param name="saleFilialeId"></param> internal void SyncGoodsOrderModify(Guid saleFilialeId, GoodsOrderInfo goodsOrderInfo) { OrderSao.GoodsOrderModify(saleFilialeId, goodsOrderInfo); }