public void NotifyPaid(OPC_Sale saleOrder, bool enbaleCashingTimeRange, TimeSpan bein, TimeSpan end) { if (enbaleCashingTimeRange && !IsInCashingTimeRange(bein, end)) { return; } Logger.InfoFormat("Notify paid to it sale order no:{0}", saleOrder.SaleOrderNo); var apiClient = new DefaultApiClient(); var rsp = apiClient.Post(new OrderNotifyRequest() { Data = new PaidOrderNotificationEntity(saleOrder).CreateNotifiedEntity() }, true); if (rsp == null) { NotifyFailed(saleOrder, SaleOrderNotificationStatus.PaidFailed, apiClient.ErrorList()); return; } if (!rsp.Status) { Logger.Error(rsp.Data); Logger.Error(rsp.Message); var errors = new List <string> { rsp.Data, rsp.Message }; errors.AddRange(apiClient.ErrorList().Where(x => !string.IsNullOrEmpty(x))); NotifyFailed(saleOrder, SaleOrderNotificationStatus.PaidFailed, errors); return; } SaleOrderNotified(saleOrder, SaleOrderNotificationStatus.Paid); }
private void NotifyFailed(OPC_Sale saleOrder, SaleOrderNotificationStatus create, IEnumerable <string> errorList) { using (var db = new YintaiHZhouContext()) { using (var scope = new TransactionScope()) { db.OPC_SaleOrderNotificationLog.Add(new OPC_SaleOrderNotificationLog { CreateDate = DateTime.Now, CreateUser = JobUserId, SaleOrderNo = saleOrder.SaleOrderNo, Status = (int)create, Message = string.Join(";", errorList) }); var trade = db.OPC_Sale.FirstOrDefault(x => x.SaleOrderNo == saleOrder.SaleOrderNo); if (trade != null) { trade.CashStatus = (int)EnumCashStatus.CashingFailed; trade.CashDate = DateTime.Now; trade.UpdatedDate = DateTime.Now; trade.UpdatedUser = JobUserId; db.Entry(trade).State = EntityState.Modified; } db.SaveChanges(); scope.Complete(); } } }
private void ProcessSaleOrderStatus(OPC_Sale saleOrder, OrderStatusResultDto saleStatus) { if (saleStatus == null) { Log.Error("Sale Order has no return info!"); return; } var processor = SaleOrderStatusProcessorFactory.Create(int.Parse(saleStatus.Status)); processor.Process(saleOrder.SaleOrderNo, saleStatus); }
public bool Save(IEnumerable <Models.SaleOrderModel> saleOrders) { // 遍历保存销售单 foreach (var saleOrderModel in saleOrders) { using (var db = new YintaiHZhouContext()) { using (var ts = new TransactionScope()) { var saleOrder = new OPC_Sale() { OrderNo = saleOrderModel.OrderNo, SaleOrderNo = saleOrderModel.SaleOrderNo, SalesType = 0, Status = saleOrderModel.Status, SellDate = saleOrderModel.SellDate, SalesAmount = saleOrderModel.SalesAmount, //是明细累加出的总金额 SalesCount = saleOrderModel.SalesCount, SectionId = saleOrderModel.SectionId, CreatedDate = saleOrderModel.CreatedDate, CreatedUser = saleOrderModel.CreatedUser, UpdatedDate = saleOrderModel.CreatedDate, UpdatedUser = saleOrderModel.CreatedUser, CashDate = SplitOrderUtils.GetDefaultDateTime(), RemarkDate = SplitOrderUtils.GetDefaultDateTime() }; db.OPC_Sale.Add(saleOrder); // 保存销售单详情 foreach (var saleDetail in saleOrderModel.Items) { saleDetail.UpdatedDate = DateTime.UtcNow; saleDetail.Remark = String.Empty; saleDetail.UpdatedUser = SystemDefine.SysUserId; db.OPC_SaleDetail.Add(saleDetail); } // 检查销售是否已经存在,防止重复拆单, // 处理方式:发现销售单存继续其他销售单处理,放弃当前的修改,不进行保存 if (db.OPC_Sale.Any(s => s.SaleOrderNo == saleOrderModel.SaleOrderNo)) { SaveSplitOrderLog(saleOrderModel.OrderNo.ToString(CultureInfo.InvariantCulture), "已经拆单完成,重复拆单", -999); continue; } db.SaveChanges(); ts.Complete(); } } } return(true); }
public OPC_ShippingSale GetBySaleOrderNo(string saleOrderNo) { using (var db = new YintaiHZhouContext()) { OPC_Sale sale = db.OPC_Sales.FirstOrDefault(t => t.SaleOrderNo == saleOrderNo); if (sale == null) { throw new SaleOrderNotExistsException(saleOrderNo); } return(db.OPC_ShippingSales.FirstOrDefault(t => t.ShippingCode == sale.ShippingCode)); } }
private void Process(OPC_Sale opc_Sale) { OrderStatusResultDto saleStatus = null; try { saleStatus = _remoteRepository.GetOrderStatusById(opc_Sale); ProcessSaleOrderStatus(opc_Sale, saleStatus); } catch (Exception e) { Log.Error(e); } }
public void GetSaleByOrderId() { if (SelectOrder == null || string.IsNullOrEmpty(SelectOrder.Id.ToString())) { return; } string orderNo = string.Format("orderID={0}&pageIndex={1}&pageSize={2}", SelectOrder.OrderNo, 1, 300); //这个工作状态 SaleList = AppEx.Container.GetInstance <ICustomerInquiryService>().GetSaleByOrderNo(orderNo).Result.ToList(); if (SaleList != null && SaleList.Any()) { OPC_Sale sale = SaleList.ToList()[0]; SaleDetailList = AppEx.Container.GetInstance <ILogisticsService>().SelectSaleDetail(sale.SaleOrderNo).Result.ToList(); } }
public void QuerySalesOrderByOrderId() { if (SelectOrder == null || string.IsNullOrEmpty(SelectOrder.Id.ToString())) { return; } string orderNo = string.Format("orderID={0}&pageIndex={1}&pageSize={2}", SelectOrder.OrderNo, 1, 30); SaleList = AppEx.Container.GetInstance <ICustomerInquiryService>().GetSaleByOrderNo(orderNo).Result; MvvmUtility.WarnIfEmpty(SaleList, "销售单"); if (SaleList != null && SaleList.Count() > 0) { OPC_Sale sale = SaleList.ToList()[0]; SaleDetailList = AppEx.Container.GetInstance <ILogisticsService>().SelectSaleDetail(sale.SaleOrderNo).Result; MvvmUtility.WarnIfEmpty(SaleDetailList, "销售单明细"); } }
private void SaleOrderNotified(OPC_Sale saleOrder, SaleOrderNotificationStatus status) { using (var scope = new TransactionScope()) { using (var db = new YintaiHZhouContext()) { var order = db.OPC_Sale.FirstOrDefault(x => x.Id == saleOrder.Id); if (order == null) { Logger.Error(string.Format("Invalid order ({0})", saleOrder.OrderNo)); return; } if (order.Status != (int)EnumSaleOrderStatus.NotifyProduct && order.Status != (int)EnumSaleOrderStatus.None) { Logger.Error(string.Format("Invalid order status ({0})", saleOrder.OrderNo)); return; } if (order.Status == (int)EnumSaleOrderStatus.None) { order.Status = (int)EnumSaleOrderStatus.NotifyProduct; order.UpdatedDate = DateTime.Now; order.UpdatedUser = JobUserId; db.Entry(order).State = EntityState.Modified; } db.OPC_SaleOrderNotificationLog.Add(new OPC_SaleOrderNotificationLog { CreateDate = DateTime.Now, CreateUser = JobUserId, SaleOrderNo = saleOrder.SaleOrderNo, Status = (int)status, Message = string.Empty, }); db.SaveChanges(); scope.Complete(); } } }
public OrderStatusResultDto GetOrderStatusById(OPC_Sale saleOrder) { string storeno; using (var db = new YintaiHZhouContext()) { storeno = db.Map4Store.Where(x => x.Channel == "intime") .Join(db.Sections.Where(x => x.Id == saleOrder.SectionId), m => m.StoreId, s => s.StoreId, (m, s) => m.ChannelStoreId) .FirstOrDefault(); } if (string.IsNullOrEmpty(storeno)) { throw new StockNotExistsException(string.Format("")); } var result = _apiClient.Post(new GetOrderStatusByIdRequest() { Data = new { id = saleOrder.SaleOrderNo, storeno } }, true); if (result == null) { Log.Error(string.Join(";", _apiClient.ErrorList())); return(null); } if (!result.Status) { Log.ErrorFormat("查询订单信息失败,message:{0}", result.Message); return(null); } return(AutoMapper.Mapper.Map <OrderStatusResult, OrderStatusResultDto>(result.Data)); }
public void NotifyCreate(OPC_Sale saleOrder) { var entity = new CreateOrderNotificationEntity(saleOrder).CreateNotifiedEntity(); var apiClient = new DefaultApiClient(); try { var rsp = apiClient.Post(new OrderNotifyRequest() { Data = entity }, true); if (rsp == null) { Logger.Error("通知订单失败,信息部返回NULL"); NotifyFailed(saleOrder, SaleOrderNotificationStatus.CreateFailed, apiClient.ErrorList()); return; } if (!rsp.Status) { Logger.Error(rsp.Data); Logger.Error(rsp.Message); var errors = new List <string> { rsp.Data, rsp.Message }; errors.AddRange(apiClient.ErrorList().Where(x => !string.IsNullOrEmpty(x))); NotifyFailed(saleOrder, SaleOrderNotificationStatus.CreateFailed, errors); return; } } catch (Exception e) { Logger.Error(e); NotifyFailed(saleOrder, SaleOrderNotificationStatus.ExceptionThrow, new[] { e.Message }); return; } SaleOrderNotified(saleOrder, SaleOrderNotificationStatus.Create); }
public PaidOrderNotificationEntity(OPC_Sale saleOrder) : base(saleOrder) { }
protected AbstractOrderNotificationEntity(OPC_Sale saleOrder) { this._saleOrder = saleOrder; }
public CreateOrderNotificationEntity(OPC_Sale saleOrder) : base(saleOrder) { }