/// <summary> /// 订单导入 /// </summary> /// <param name="dt"></param> /// <param name="dataResult"></param> /// <param name="errMessage"></param> /// <param name="importFile"></param> /// <returns></returns> public bool ImportOrder(SaleOrderImportFileEntity importFile, DataTable dt, out DataTable dataResult, out string errMessage) { string userId = ManageProvider.Provider.Current().UserId; //构造导入返回结果表 DataTable resultTable = new DataTable("Result"); resultTable.Columns.Add("rowid", typeof(string)); //行号 resultTable.Columns.Add("locate", typeof(string)); //位置 resultTable.Columns.Add("reason", typeof(string)); //原因 errMessage = string.Empty; bool isSuccess = false; if (dt != null && dt.Rows.Count > 0) { IDatabase database = DataFactory.Database(); try { List <SaleOrderImportItemEntity> lstEntities = new List <SaleOrderImportItemEntity>(); foreach (DataRow item in dt.Rows) { var importEntity = new SaleOrderImportItemEntity(); importEntity.Create(); // importEntity.FileId = importFile.FileId; importEntity.ProductCode = item["商品编码"].ToString(); if (string.IsNullOrWhiteSpace(importEntity.ProductCode)) { throw new Exception("商品编码不能为空"); } importEntity.SourceOrderNo = item["外部单号"].ToString(); if (string.IsNullOrWhiteSpace(importEntity.SourceOrderNo)) { throw new Exception("外部订单号不能为空"); } //string OrderDate = item["制单日期"].ToString(); importEntity.OrderDate = DateTime.Now; importEntity.ReceiveContact = item["联系人"].ToString(); importEntity.ReceivePhone = item["固定电话"].ToString(); importEntity.ReceiveCellPhone = item["联系电话"].ToString(); importEntity.ReceiveZip = item["邮编"].ToString(); importEntity.ExpressNum = item["快递单号"].ToString(); importEntity.Province = item["所在省"].ToString(); importEntity.City = item["所在市"].ToString(); importEntity.County = item["所在县/区"].ToString(); importEntity.ReceiveAddress = item["详细地址"].ToString(); importEntity.Qty = int.Parse(item["数量"].ToString()); importEntity.SellerNote = item["卖家留言"].ToString(); importEntity.BuyerNote = item["买家留言"].ToString(); importEntity.ShipTypeName = item["物流方式"].ToString(); importEntity.Remark = item["备注"].ToString(); bool flag = _saleOrderBLL.IsExistSourceOrderNo(importEntity.SourceOrderNo); if (flag) { throw new Exception(string.Format("外部单号{0}已存在,请作废后重新导入", importEntity.SourceOrderNo)); } lstEntities.Add(importEntity); } lstEntities = lstEntities.OrderBy(a => a.SourceOrderNo).ToList(); var shipTypeList = _shipTypeBLL.GetList(); DbTransaction isOpenTrans = database.BeginTrans(); string sourceOrderNo = string.Empty; string orderNo = string.Empty; List <SaleOrderEntity> orderEntities = new List <SaleOrderEntity>(); List <SaleOrderItemEntity> orderItemEntities = new List <SaleOrderItemEntity>(); foreach (SaleOrderImportItemEntity orderImportEntity in lstEntities) { var shipType = shipTypeList.Find(a => a.ShipTypeName == orderImportEntity.ShipTypeName); if (shipType == null) { throw new Exception(string.Format("物流方式{0}不存在", orderImportEntity.ShipTypeName)); } SaleOrderEntity orderEntity = new SaleOrderEntity(); var select = orderEntities.Where(i => i.ReceiveContact == orderImportEntity.ReceiveContact && i.ReceivePhone == orderImportEntity.ReceivePhone && i.ReceiveCellPhone == orderImportEntity.ReceiveCellPhone && i.ReceiveZip == orderImportEntity.ReceiveZip && i.Province == orderImportEntity.Province && i.City == orderImportEntity.City && i.County == orderImportEntity.County && i.ReceiveAddress == orderImportEntity.ReceiveAddress && i.WarehouseId == importFile.WarehouseId && i.ShipTypeId == shipType.ShipTypeId && i.ExpressNum == orderImportEntity.ExpressNum && i.SellerNote == orderImportEntity.SellerNote && i.BuyerNote == orderImportEntity.BuyerNote && i.Remark == orderImportEntity.Remark); if (select.Any()) { orderEntity = select.First(); var otherSourceOrderNos = orderEntity.SourceOrderNo.Split(',').ToList(); if (!otherSourceOrderNos.Contains(orderImportEntity.SourceOrderNo)) { otherSourceOrderNos.Add(orderImportEntity.SourceOrderNo); } orderEntity.SourceOrderNo = String.Join(",", otherSourceOrderNos.ToArray()); } else { orderEntity.Create(); orderEntity.OrderId = orderImportEntity.ItemId; orderEntity.OrderNo = _codeRuleBll.GetBillCode(userId, SaleOrderCodeName); orderEntity.SourceOrderNo = orderImportEntity.SourceOrderNo; orderEntity.OrderDate = DateTime.Now; orderEntity.WarehouseId = importFile.WarehouseId; orderEntity.MerchantId = importFile.MerchantId; orderEntity.MerchantMallId = importFile.MerchantMallId; orderEntity.ShipTypeId = shipType.ShipTypeId; orderEntity.Province = orderImportEntity.Province; orderEntity.City = orderImportEntity.City; orderEntity.County = orderImportEntity.County; orderEntity.ReceiveAddress = orderImportEntity.ReceiveAddress; orderEntity.ReceiveContact = orderImportEntity.ReceiveContact; orderEntity.ReceivePhone = orderImportEntity.ReceivePhone; orderEntity.ReceiveCellPhone = orderImportEntity.ReceiveCellPhone; orderEntity.ReceiveZip = orderImportEntity.ReceiveZip; orderEntity.SellerNote = orderImportEntity.SellerNote; orderEntity.BuyerNote = orderImportEntity.BuyerNote; orderEntity.ExpressNum = orderImportEntity.ExpressNum; orderEntity.City = orderImportEntity.City; orderEntity.Remark = orderImportEntity.Remark; orderEntities.Add(orderEntity); _codeRuleBll.OccupyBillCode(ManageProvider.Provider.Current().UserId, SaleOrderCodeName, isOpenTrans); sourceOrderNo = orderImportEntity.SourceOrderNo; orderNo = orderEntity.OrderNo; } var product = _productBLL.GetProductByCode(orderImportEntity.ProductCode); if (product == null) { throw new Exception(string.Format("商品编号{0}不存在", orderImportEntity.ProductCode)); } var saleOrderItem = new SaleOrderItemEntity(); saleOrderItem.Create(); saleOrderItem.OrderId = orderEntity.OrderId; saleOrderItem.OrderNo = orderNo; saleOrderItem.ProductId = product.ProductId; saleOrderItem.Code = product.Code; saleOrderItem.ProductName = product.ProductName; saleOrderItem.Weight = product.Weight; saleOrderItem.Volume = product.Volume; saleOrderItem.Specification = product.Specification; saleOrderItem.BaseUnit = product.BaseUnit; saleOrderItem.BarCode = product.BarCode; saleOrderItem.Price = product.Price; saleOrderItem.Qty = orderImportEntity.Qty; orderItemEntities.Add(saleOrderItem); } database.Insert(importFile); foreach (SaleOrderImportItemEntity orderImportEntity in lstEntities) { database.Insert(orderImportEntity, isOpenTrans); } foreach (SaleOrderEntity orderImportEntity in orderEntities) { database.Insert(orderImportEntity, isOpenTrans); } foreach (SaleOrderItemEntity orderImportEntity in orderItemEntities) { database.Insert(orderImportEntity, isOpenTrans); } database.Commit(); isSuccess = true; } catch (Exception ex) { database.Rollback(); BaseSysLogBll.Instance.WriteLog("", OperationType.Add, "-1", "异常错误:" + ex.Message); isSuccess = false; errMessage = ex.Message; } } dataResult = resultTable; return(isSuccess); }
/// <summary> /// 提交订单表单(新增、编辑) /// </summary> /// <param name="orderId">订单主键</param> /// <param name="entity">订单实体</param> /// <param name="saleOrderItemJson">订单明细</param> /// <returns></returns> public ActionResult SubmitOrderForm(string orderId, SaleOrderEntity entity, string saleOrderItemJson) { SaleOrderEntity oldEntity = null; IDatabase database = DataFactory.Database(); if (!string.IsNullOrEmpty(orderId)) { oldEntity = database.FindEntity <SaleOrderEntity>("OrderId", orderId); } if (oldEntity != null && oldEntity.Status != (int)OrderStatus.Initial && oldEntity.Status != (int)OrderStatus.WaitAudit) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:只有初始和待审核订单才能修改" }.ToString())); } DbTransaction isOpenTrans = database.BeginTrans(); try { string message = orderId == "" ? "新增成功。" : "修改成功。"; if (oldEntity != null) { database.Delete <SaleOrderEntity>("OrderId", oldEntity.OrderId, isOpenTrans); database.Delete <SaleOrderItemEntity>("OrderId", oldEntity.OrderId, isOpenTrans); entity.Create(); entity.OrderDate = oldEntity.OrderDate; entity.Status = oldEntity.Status; entity.Modify(orderId); database.Insert(entity, isOpenTrans); } else { entity.Create(); entity.OrderDate = DateTime.Now; database.Insert(entity, isOpenTrans); _codeRuleBll.OccupyBillCode(ManageProvider.Provider.Current().UserId, SaleOrderCodeName, isOpenTrans); } List <SaleOrderItemViewModel> orderItemList = saleOrderItemJson.JonsToList <SaleOrderItemViewModel>(); foreach (SaleOrderItemViewModel item in orderItemList) { if (!string.IsNullOrEmpty(item.ProductId)) { ProductEntity product = _productBll.GetProduct(item.ProductId); var orderItem = new SaleOrderItemEntity(); orderItem.Create(); orderItem.OrderId = entity.OrderId; orderItem.OrderNo = entity.OrderNo; orderItem.ProductId = product.ProductId; orderItem.Code = product.Code; orderItem.ProductName = product.ProductName; orderItem.Volume = product.Volume; orderItem.Weight = product.Weight; orderItem.BarCode = product.BarCode; orderItem.BaseUnit = product.BaseUnit; orderItem.Price = product.Price; orderItem.Specification = product.Specification; orderItem.Qty = int.Parse(item.Qty); database.Insert(orderItem, isOpenTrans); } } database.Commit(); if (oldEntity == null) { try { _orderBll.ExecSPOrderAllocInventory(); } catch { } } return(Content(new JsonMessage { Success = true, Code = entity.OrderId, Message = message }.ToString())); } catch (Exception ex) { database.Rollback(); return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:" + ex.Message }.ToString())); } }
public ActionResult SubmitSplitOrder(string splitOrderNo, SaleOrderEntity entity, string saleOrderItemJson) { SaleOrderEntity oldEntity = null; IDatabase database = DataFactory.Database(); try { oldEntity = database.FindEntity <SaleOrderEntity>("OrderId", entity.OrderId); if (oldEntity != null && oldEntity.Status != (int)OrderStatus.OutOfStock && oldEntity.Status != (int)OrderStatus.Initial && oldEntity.Status != (int)OrderStatus.WaitAudit) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:只有初始或缺货或待审核订单才能拆分订单" }.ToString())); } List <SplitSaleOrderItemViewModel> splitItemList = saleOrderItemJson.JonsToList <SplitSaleOrderItemViewModel>(); var orderItemList = _orderBll.GetOrderItemListByOrderId(oldEntity.OrderId); if (splitItemList.Sum(i => int.Parse(i.SplitQty)) == orderItemList.Sum(i => i.Qty)) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:不能将所有商品都拆分出去" }.ToString())); } foreach (var item in splitItemList) { var whereItem = orderItemList.Where(i => i.ItemId == item.ItemId); if (whereItem.Count() > 0) { if (int.Parse(item.SplitQty) > whereItem.First().Qty) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = string.Format("操作失败:商品[{0}]拆分数据数量{1}大于可拆分数量{2}", whereItem.First().ProductId, item.SplitQty, whereItem.First().Qty) }.ToString())); } } else { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:商品明细数据不存在,请刷新重试" }.ToString())); } } DbTransaction isOpenTrans = database.BeginTrans(); try { string message = "拆分订单成功。"; entity.Create(); entity.OrderNo = splitOrderNo; entity.OrderDate = DateTime.Now; database.Insert(entity, isOpenTrans); _codeRuleBll.OccupyBillCode(ManageProvider.Provider.Current().UserId, SaleOrderCodeName, isOpenTrans); foreach (var item in splitItemList) { var oldItem = orderItemList.Where(i => i.ItemId == item.ItemId).First(); var orderItem = new SaleOrderItemEntity(); orderItem.Create(); orderItem.OrderId = entity.OrderId; orderItem.OrderNo = entity.OrderNo; orderItem.ProductId = oldItem.ProductId; orderItem.Code = oldItem.Code; orderItem.ProductName = oldItem.ProductName; orderItem.Volume = oldItem.Volume; orderItem.Weight = oldItem.Weight; orderItem.BarCode = oldItem.BarCode; orderItem.BaseUnit = oldItem.BaseUnit; orderItem.Price = oldItem.Price; orderItem.Specification = oldItem.Specification; orderItem.Qty = int.Parse(item.SplitQty); database.Insert(orderItem, isOpenTrans); database.Delete <SaleOrderItemEntity>("ItemId", oldItem.ItemId, isOpenTrans); if (int.Parse(item.SplitQty) != oldItem.Qty) { var oldOrderItem = new SaleOrderItemEntity(); oldOrderItem.Create(); oldOrderItem.OrderId = oldEntity.OrderId; oldOrderItem.OrderNo = oldEntity.OrderNo; oldOrderItem.ProductId = oldItem.ProductId; oldOrderItem.Code = oldItem.Code; oldOrderItem.ProductName = oldItem.ProductName; oldOrderItem.Volume = oldItem.Volume; oldOrderItem.Weight = oldItem.Weight; oldOrderItem.BarCode = oldItem.BarCode; oldOrderItem.BaseUnit = oldItem.BaseUnit; oldOrderItem.Price = oldItem.Price; oldOrderItem.Specification = oldItem.Specification; oldOrderItem.Qty = oldItem.Qty - int.Parse(item.SplitQty); database.Insert(oldOrderItem, isOpenTrans); } } database.Commit(); return(Content(new JsonMessage { Success = true, Code = "1", Message = message }.ToString())); } catch (Exception ex) { database.Rollback(); return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:" + ex.Message }.ToString())); } } catch (Exception ex) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:" + ex.Message }.ToString())); } }
public ActionResult SubmitMergeOrder(string orderIds, string mergeOrderNo, SaleOrderEntity entity) { IDatabase database = DataFactory.Database(); try { string[] aryOrderId = orderIds.Split(','); var sourceOrderNo = string.Empty; List <SaleOrderEntity> orderList = new List <SaleOrderEntity>(); List <SaleOrderItemEntity> itemList = new List <SaleOrderItemEntity>(); foreach (var orderId in aryOrderId) { SaleOrderEntity oldEntity = database.FindEntity <SaleOrderEntity>("OrderId", orderId); if (oldEntity != null && oldEntity.Status != (int)OrderStatus.OutOfStock && oldEntity.Status != (int)OrderStatus.Initial && oldEntity.Status != (int)OrderStatus.WaitAudit) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:只有初始或缺货或待审核订单才能合并订单" }.ToString())); } orderList.Add(entity); var orderItemList = _orderBll.GetOrderItemListByOrderId(oldEntity.OrderId); foreach (var item in orderItemList) { itemList.Add(item); } } //判断是否一致,不一致则不通过 var group = orderList.GroupBy(i => new { Province = i.Province, City = i.City, County = i.County, ReceiveAddress = i.ReceiveAddress, ReceiveContact = i.ReceiveContact, ReceiveCellPhone = i.ReceiveCellPhone, ReceivePhone = i.ReceivePhone }); if (group.Count() > 1) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:不符合订单合并条件( 省/市/区/地址/手机/电话/联系人相同)" }.ToString())); } DbTransaction isOpenTrans = database.BeginTrans(); try { string message = "合并订单成功。"; entity.Create(); entity.OrderNo = mergeOrderNo; entity.OrderDate = DateTime.Now; database.Insert(entity, isOpenTrans); _codeRuleBll.OccupyBillCode(ManageProvider.Provider.Current().UserId, SaleOrderCodeName, isOpenTrans); foreach (var item in itemList) { var orderItem = new SaleOrderItemEntity(); orderItem.Create(); orderItem.OrderId = entity.OrderId; orderItem.OrderNo = entity.OrderNo; orderItem.ProductId = item.ProductId; orderItem.Code = item.Code; orderItem.ProductName = item.ProductName; orderItem.Volume = item.Volume; orderItem.Weight = item.Weight; orderItem.BarCode = item.BarCode; orderItem.BaseUnit = item.BaseUnit; orderItem.Price = item.Price; orderItem.Specification = item.Specification; orderItem.Qty = item.Qty; database.Insert(orderItem, isOpenTrans); } foreach (var orderId in aryOrderId) { database.Delete <SaleOrderEntity>("OrderId", orderId, isOpenTrans); database.Delete <SaleOrderItemEntity>("OrderId", orderId, isOpenTrans); } database.Commit(); return(Content(new JsonMessage { Success = true, Code = "1", Message = message }.ToString())); } catch (Exception ex) { database.Rollback(); return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:" + ex.Message }.ToString())); } } catch (Exception ex) { return(Content(new JsonMessage { Success = false, Code = "-1", Message = "操作失败:" + ex.Message }.ToString())); } }