/// <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); } }
public void TestIsEntityShopFilialeByFilialeId() { using (ShimsContext.Create()) { //模拟返回结果 ShimFilialeSao.GetAllFiliale = () => new List <FilialeInfo> { new FilialeInfo { ID = new Guid("6E677868-AE98-4932-B4DB-0000020DC859"), Type = (int)FilialeType.EntityShop } }; var result1 = FilialeManager.IsEntityShopFiliale(new Guid("6E677868-AE98-4932-B4DB-0000020DC859")); Assert.IsTrue(result1); var result2 = FilialeManager.IsEntityShopFiliale(new Guid("00000000-0000-0000-0000-000000000000")); Assert.IsFalse(result2); } }
/// <summary>添加往来帐到实体店系统中 /// </summary> /// <param name="reckoningInfo"></param> /// <param name="errorMsg"></param> /// <returns></returns> private bool AddReckoningToEntityShop(ReckoningInfo reckoningInfo, out string errorMsg) { errorMsg = string.Empty; var info = new ReckoningRecordDTO { AccountReceivable = reckoningInfo.AccountReceivable, JoinTotalPrice = reckoningInfo.JoinTotalPrice, AuditingState = true, CompanyID = reckoningInfo.ThirdCompanyID, DateCreated = reckoningInfo.DateCreated, Description = reckoningInfo.Description, ShopID = reckoningInfo.FilialeId, NonceTotalled = reckoningInfo.NonceTotalled, OriginalTradeCode = reckoningInfo.LinkTradeCode, ID = reckoningInfo.ReckoningId, ReckoningType = reckoningInfo.ReckoningType, TradeCode = reckoningInfo.TradeCode }; if (info.CompanyID == info.ShopID) { errorMsg = ("往来公司ID和账目公司ID一样,故无法插入往来帐!"); return(false); } if (!FilialeManager.IsEntityShopFiliale(info.ShopID)) { errorMsg = ("往来公司ID不是门店公司,故无法插入往来帐!"); return(false); } var headFililaleId = FilialeManager.GetShopHeadFilialeId(info.ShopID); var result = PushManager.AddToShop(headFililaleId, "InsertReckoningWithPush", info.TradeCode, info); if (!result) { errorMsg = ("插入门店对ERP应付帐失败!"); return(false); } return(true); }
public void TestIsEntityShopFilialeByFilialeIdAndErrorMessage() { using (ShimsContext.Create()) { string outMessage1; //模拟返回结果 ShimFilialeSao.GetAllFiliale = () => new List <FilialeInfo> { new FilialeInfo { ID = new Guid("6E677868-AE98-4932-B4DB-0000020DC859"), Type = (int)FilialeType.EntityShop } }; var expect1 = String.Empty; var result1 = FilialeManager.IsEntityShopFiliale(new Guid("6E677868-AE98-4932-B4DB-0000020DC859"), out outMessage1); Assert.IsTrue(result1); Assert.AreEqual(expect1, outMessage1); string outMessage2; var expect2 = "公司信息未获取到"; var result2 = FilialeManager.IsEntityShopFiliale(new Guid("00000000-0000-0000-0000-000000000000"), out outMessage2); Assert.IsFalse(result2); Assert.AreEqual(expect2, outMessage2); } }