Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
 public static void GoodsOrderUpdateAffirm(Guid saleFilialeId, GoodsOrderInfo goodsOrderInfo)
 {
     using (var client = ClientProxy.CreateB2CWcfClient(saleFilialeId))
     {
         client.Instance.GoodsOrderUpdateAffirm(Guid.NewGuid(), ConvertToB2CModel(goodsOrderInfo));
     }
 }
Esempio n. 3
0
        /// <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);
        }
Esempio n. 4
0
        /// <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);
            }
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        public void TestNewCreateReckoningInfoList()
        {
            var goodsOrderInfo    = new GoodsOrderInfo();
            var goodsOrderDetails = new List <GoodsOrderDetailInfo>();

            _reckoningManager = new ReckoningManager(_stubIGoodsCenterSao, _stubIReckoning, _stubIExpress, _stubICompanyCussent, _stubGoodsPriceVerificationDao, _stubIGoodsOrder,
                                                     _stubIGoodsOrderDetail, _stubIGoodsOrderDeliver, _stubICode);
        }
Esempio n. 7
0
 /// <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
     });
 }
Esempio n. 8
0
        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;
        }
Esempio n. 9
0
    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);
    }
Esempio n. 10
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);
            }
        }
Esempio n. 11
0
        /// <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);
        }
Esempio n. 12
0
        /// <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));
            }
        }
Esempio n. 13
0
 /// <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);
     }
 }
Esempio n. 14
0
    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);
    }
Esempio n. 15
0
        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 });
        }
Esempio n. 16
0
    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);
    }
Esempio n. 17
0
    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);
    }
Esempio n. 18
0
 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));
 }
Esempio n. 19
0
        /// <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);
        }
Esempio n. 20
0
    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);
    }
Esempio n. 21
0
        /// <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));
        }
Esempio n. 22
0
        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);
        }
Esempio n. 24
0
        /// <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);
        }
Esempio n. 25
0
        /// <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);
                    }
                }
            }
        }
Esempio n. 26
0
        /// <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);
            }
        }
Esempio n. 27
0
 /// <summary> 财务修改订单信息  独立后台或总后台字段区别:独---Weight,总--ReturnTime
 /// </summary>
 internal void SyncGoodsOrderUpdateAffirm(Guid saleFilialeId, GoodsOrderInfo goodsOrderInfo)
 {
     OrderSao.GoodsOrderUpdateAffirm(saleFilialeId, goodsOrderInfo);
 }
Esempio n. 28
0
 /// <summary>发送短信和邮件
 /// </summary>
 internal void SyncSendMessage(GoodsOrderInfo goodsOrderInfo, MailType mailType, SMSType smsType, RefundmentMode refundmentMode)
 {
     
 }
Esempio n. 29
0
 /// <summary>修改订单信息
 /// </summary>
 /// <param name="goodsOrderInfo"></param>
 /// <param name="saleFilialeId"></param>
 internal void SyncGoodsOrderModify(Guid saleFilialeId, GoodsOrderInfo goodsOrderInfo)
 {
     OrderSao.GoodsOrderModify(saleFilialeId, goodsOrderInfo);
 }