示例#1
0
        /// <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);
            }
        }
示例#2
0
        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);
            }
        }
示例#3
0
        /// <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);
        }
示例#4
0
        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);
            }
        }