public OrderHistoryFileReturn ParseMainframeFile(TextReader reader) { OrderHistoryFileReturn retVal = new OrderHistoryFileReturn(); OrderHistoryFile currentFile = null; while (reader.Peek() != -1) { string line = reader.ReadLine(); switch (line.Substring(RECORDTYPE_STARTPOS, RECORDTYPE_LENGTH)) { case "H": SetErrorStatusAndFutureItemsOnFile(currentFile); currentFile = CreateOrderHistoryFileFromHeaderLine(line); retVal.Files.Add(currentFile); break; case "D": var orderDetail = new OrderHistoryDetail(); orderDetail.Parse(line); currentFile.Details.Add(orderDetail); break; default: break; } } // end of while SetErrorStatusAndFutureItemsOnFile(currentFile); return(retVal); }
private EF.OrderHistoryDetail MergeWithCurrentOrderDetail (bool isSpecialOrder, EF.OrderHistoryHeader header, OrderHistoryDetail currentDetail, EF.OrderHistoryDetail detail) { currentDetail.MergeWithEntityFrameworkModel(ref detail); detail.BranchId = header.BranchId; detail.InvoiceNumber = header.InvoiceNumber; if (isSpecialOrder) { detail.ItemStatus = KeithLink.Svc.Core.Constants.SPECIALORDERITEM_REQ_STATUS_TRANSLATED_CODE; } return(detail); }
public async Task <ActionResult <List <OrderHistoryModel> > > GetWXUserOrder(string id) { var wXUserOrder = await _context.WXUserOrder.Where(b => b.WXUserID == id).OrderByDescending(b => b.CreateTime).ToListAsync(); if (wXUserOrder == null) { return(NotFound()); } List <OrderHistoryModel> orderHistories = new List <OrderHistoryModel>(); System.Diagnostics.Debug.WriteLine("正在查询订单:"); foreach (var item in wXUserOrder) { var OrderDetails = await _context.WXUserOrderDetail.Where(b => b.WXUserOrderID == item.WXPayNumber).ToListAsync(); List <OrderHistoryDetail> orderHistoryDetails = new List <OrderHistoryDetail>(); foreach (var item_2 in OrderDetails) { var single_product = _context.CommodityManage.Single(b => b.ProductID == item_2.WXProductID); OrderHistoryDetail detail = new OrderHistoryDetail { ProductName = single_product.ProductName, ImgLink = single_product.ProductImage, Price = single_product.ProductPrice, ProductNumber = item_2.WXProductNumber }; orderHistoryDetails.Add(detail); } OrderHistoryModel orderHistory = new OrderHistoryModel { DeviceName = "西南大学零售柜", OrderDate = item.CreateTime.ToString("F"), OrderDetail = JsonConvert.SerializeObject(orderHistoryDetails), TotalPrice = (float)item.TotalPrice }; System.Diagnostics.Debug.WriteLine("正在查询订单详情:"); orderHistories.Add(orderHistory); } //wXUserOrder.WXPayNumber //List<WXUserOrderDetail> OrderDetails = new List<WXUserOrderDetail>(); //var OrderDetails = await _context.WXUserOrderDetail.Where(b => b.WXUserOrderID == wXUserOrder.WXPayNumber).ToListAsync(); //orderHistory.Add(); return(orderHistories); }
private static OrderHistoryDetail ToOrderHistoryDetail(CS.LineItem lineItem, string branchId, string invoiceNumber) { OrderHistoryDetail detail = new OrderHistoryDetail(); detail.LineNumber = Convert.ToInt16(lineItem.Properties["LinePosition"]); detail.ItemNumber = lineItem.ProductId; detail.OrderQuantity = (short)lineItem.Quantity; detail.ShippedQuantity = lineItem.Properties["QuantityShipped"] == null ? 0 : (int)lineItem.Properties["QuantityShipped"]; detail.UnitOfMeasure = (bool)lineItem.Properties["Each"] ? UnitOfMeasure.Package : UnitOfMeasure.Case; detail.CatchWeight = (bool)lineItem.Properties["CatchWeight"]; //detail.ItemDeleted = detail.UnitCost = lineItem.ListPrice ?? 0; detail.SellPrice = (double)lineItem.PlacedPrice; detail.SubbedOriginalItemNumber = lineItem.Properties["SubstitutedItemNumber"] == null ? null : (string)lineItem.Properties["SubstitutedItemNumber"]; //detail.ReplacedOriginalItemNumber = detail.ItemStatus = lineItem.Properties["MainFrameStatus"] == null ? null : (string)lineItem.Properties["MainFrameStatus"]; return(detail); }
public static OrderHistoryFile ToOrderHistoryFile(this ConfirmationFile confirmation) { OrderHistoryFile history = new OrderHistoryFile(); foreach (ConfirmationDetail confDetail in confirmation.Detail) { OrderHistoryDetail detail = new OrderHistoryDetail() { LineNumber = int.Parse(confDetail.RecordNumber), ItemNumber = confDetail.ItemNumber, OrderQuantity = confDetail.QuantityOrdered, UnitOfMeasure = confDetail.BrokenCase.Equals("Y", StringComparison.InvariantCultureIgnoreCase) ? UnitOfMeasure.Package : UnitOfMeasure.Case, ShippedQuantity = confDetail.QuantityShipped, TotalShippedWeight = confDetail.ShipWeight, SellPrice = (confDetail.BrokenCase.Equals("Y", StringComparison.InvariantCultureIgnoreCase) ? confDetail.SplitPriceNet : confDetail.PriceNet), ItemStatus = confDetail.ReasonNotShipped //CatchWeight, //FutureItem, //ItemDeleted, //ReplacedOriginalItemNumber, //SubbedOriginalItemNumber, }; history.Details.Add(detail); } history.Header.BranchId = confirmation.Header.Branch; history.Header.ControlNumber = confirmation.Header.ConfirmationNumber; history.Header.CustomerNumber = confirmation.Header.CustomerNumber; history.Header.InvoiceNumber = confirmation.Header.InvoiceNumber; history.Header.DeliveryDate = confirmation.Header.ShipDate; //history.Header.ControlNumber = confirmation.Header.RemoteOrderNumber; //history.Header.RouteNumber = confirmation.Header.RouteNumber; //history.Header.StopNumber = confirmation.Header.StopNumber; history.Header.OrderStatus = confirmation.Header.ConfirmationStatus; history.Header.OrderStatus = string.Empty; history.Header.OrderSystem = OrderSource.Entree; //history.Header.PONumber //history.Header.FutureItems //history.Header.ErrorStatus return(history); }
/// <summary> /// Parse an array of strings as a file /// </summary> /// <param name="data"></param> /// <returns></returns> private OrderHistoryFileReturn ParseFile(string[] data) { OrderHistoryFileReturn retVal = new OrderHistoryFileReturn(); OrderHistoryFile currentFile = null; for (int i = 0; i < data.Length; i++) { string line = data[i]; if (line.Contains("END###")) { break; } switch (line.Substring(RECORDTYPE_STARTPOS, RECORDTYPE_LENGTH)) { case "H": SetErrorStatusAndFutureItemsOnFile(currentFile); currentFile = ParseNewOrderHistoryFileFromHeaderLine(line); retVal.Files.Add(currentFile); break; case "D": var orderDetail = new OrderHistoryDetail(); orderDetail.Parse(line); currentFile.Details.Add(orderDetail); break; default: break; } } // end of for loop SetErrorStatusAndFutureItemsOnFile(currentFile); return(retVal); }
public static OrderHistoryDetail ToOrderHistoryDetail(this EF.OrderHistoryDetail value) { OrderHistoryDetail retVal = new OrderHistoryDetail(); retVal.ItemNumber = value.ItemNumber; retVal.LineNumber = value.LineNumber; retVal.OrderQuantity = value.OrderQuantity; retVal.ShippedQuantity = value.ShippedQuantity; retVal.UnitOfMeasure = value.UnitOfMeasure.Equals("C", StringComparison.InvariantCultureIgnoreCase) ? UnitOfMeasure.Case : UnitOfMeasure.Package; retVal.CatchWeight = value.CatchWeight; retVal.ItemDeleted = value.ItemDeleted; retVal.SubbedOriginalItemNumber = value.SubbedOriginalItemNumber; retVal.ReplacedOriginalItemNumber = value.ReplacedOriginalItemNumber; retVal.ItemStatus = value.ItemStatus; retVal.TotalShippedWeight = (double)value.TotalShippedWeight; retVal.SellPrice = (double)value.SellPrice; retVal.Source = value.Source; retVal.ManufacturerId = value.ManufacturerId; retVal.SpecialOrderHeaderId = value.SpecialOrderHeaderId; retVal.SpecialOrderLineNumber = value.SpecialOrderLineNumber; return(retVal); }
public static EF.OrderHistoryDetail ToEntityFrameworkModel(this OrderHistoryDetail value) { EF.OrderHistoryDetail retVal = new EF.OrderHistoryDetail(); retVal.ItemNumber = value.ItemNumber; retVal.LineNumber = value.LineNumber; retVal.OrderQuantity = value.OrderQuantity; retVal.ShippedQuantity = value.ShippedQuantity; retVal.UnitOfMeasure = value.UnitOfMeasure.ToShortString(); retVal.CatchWeight = value.CatchWeight; retVal.ItemDeleted = value.ItemDeleted; retVal.SubbedOriginalItemNumber = value.SubbedOriginalItemNumber; retVal.ReplacedOriginalItemNumber = value.ReplacedOriginalItemNumber; retVal.ItemStatus = value.ItemStatus; retVal.TotalShippedWeight = (decimal)value.TotalShippedWeight; retVal.SellPrice = (decimal)value.SellPrice; retVal.Source = value.Source; retVal.ManufacturerId = value.ManufacturerId; retVal.SpecialOrderHeaderId = value.SpecialOrderHeaderId; retVal.SpecialOrderLineNumber = value.SpecialOrderLineNumber; return(retVal); }
public static void MergeWithEntityFrameworkModel(this OrderHistoryDetail value, ref EF.OrderHistoryDetail entity) { entity.ItemNumber = value.ItemNumber; entity.LineNumber = value.LineNumber; entity.OrderQuantity = value.OrderQuantity; entity.ShippedQuantity = (value.ItemStatus != null && value.ItemStatus.Equals(Constants.CONFIRMATION_DETAIL_ITEM_STATUS_DELETE)) ? 0 : value.ShippedQuantity; entity.UnitOfMeasure = value.UnitOfMeasure.ToShortString(); entity.CatchWeight = value.CatchWeight; entity.ItemDeleted = value.ItemDeleted; // The field in the table is defined as char(6) and will be padded with spaces. // We will avoid extraneous updates by EF if we prevent changing the value when they are equivalent. bool equivalentValues = entity.SubbedOriginalItemNumber != null && value.SubbedOriginalItemNumber != null && entity.SubbedOriginalItemNumber.TrimEnd() == value.SubbedOriginalItemNumber.TrimEnd(); if (equivalentValues == false) { entity.SubbedOriginalItemNumber = value.SubbedOriginalItemNumber; } // The field in the table is defined as char(6) and will be padded with spaces. // We will avoid extraneous updates by EF if we prevent changing the value when they are equivalent. equivalentValues = entity.ReplacedOriginalItemNumber != null && value.ReplacedOriginalItemNumber != null && entity.ReplacedOriginalItemNumber.TrimEnd() == value.ReplacedOriginalItemNumber.TrimEnd(); if (equivalentValues == false) { entity.ReplacedOriginalItemNumber = value.ReplacedOriginalItemNumber; } entity.ItemStatus = value.ItemStatus; entity.TotalShippedWeight = decimal.Parse(value.TotalShippedWeight.ToString()); entity.SellPrice = (decimal)value.SellPrice; }
/// <summary> /// See technique used in GetMPN() /// </summary> /// <param name="html"></param> /// <returns></returns> public static List <OrderHistoryDetail> GetTransactionsFromPage(string html) { string dateSold = null; var transactions = new List <OrderHistoryDetail>(); try { // https://stackoverflow.com/questions/4182594/grab-all-text-from-html-with-html-agility-pack HtmlDocument doc = new HtmlDocument(); doc.LoadHtml(html); int element = 0; foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//text()")) { if (node.InnerText == "Purchase History Section") // string match "Purchase History Section" { string price = null; int qty = 0; var secondTable = node.SelectSingleNode("//table[2]"); // move to 2nd table foreach (HtmlNode nodet in secondTable.SelectNodes("//td[@class='contentValueFont']")) // collect table elements matching class { string value = nodet.InnerText; switch (element) { case 0: price = ParsePrice(value); ++element; break; case 1: qty = Convert.ToInt32(value); ++element; break; case 2: dateSold = value; var tran = new OrderHistoryDetail(); tran.Price = Convert.ToDecimal(price); tran.Qty = qty; tran.DateOfPurchase = GetUTCFromEbayDateStr(dateSold); transactions.Add(tran); element = 0; break; } } var variations = new List <string>(); var variationNode = secondTable.SelectNodes("//td[@class='variationContentValueFont']"); if (variationNode != null) { AddVariations(variationNode, transactions); } } } return(transactions); } catch (Exception exc) { string msg = dsutil.DSUtil.ErrMsg("GetTransactionsFromPage", exc); dsutil.DSUtil.WriteFile(_logfile, msg, ""); return(null); } }
public static void Parse(this OrderHistoryDetail value, string record) { if (record.Length >= DETAIL_STARTPOS_ITEMNUM + DETAIL_LENGTH_ITEMNUM) { value.ItemNumber = record.Substring(DETAIL_STARTPOS_ITEMNUM, DETAIL_LENGTH_ITEMNUM); } if (record.Length >= DETAIL_STARTPOS_LINNUM + DETAIL_LENGTH_LINNUM) { int lineNumber; int.TryParse(record.Substring(DETAIL_STARTPOS_LINNUM, DETAIL_LENGTH_LINNUM), out lineNumber); value.LineNumber = lineNumber; } if (record.Length >= DETAIL_STARTPOS_ORDQTY + DETAIL_LENGTH_ORDQTY) { int ordQty; int.TryParse(record.Substring(DETAIL_STARTPOS_ORDQTY, DETAIL_LENGTH_ORDQTY), out ordQty); value.OrderQuantity = ordQty; } if (record.Length >= DETAIL_STARTPOS_SHIPQTY + DETAIL_LENGTH_SHIPQTY) { int shippedQty; int.TryParse(record.Substring(DETAIL_STARTPOS_SHIPQTY, DETAIL_LENGTH_SHIPQTY), out shippedQty); value.ShippedQuantity = shippedQty; } if (record.Length >= DETAIL_STARTPOS_UOM + DETAIL_LENGTH_UOM) { value.UnitOfMeasure = (record.Substring(DETAIL_STARTPOS_UOM, DETAIL_LENGTH_UOM) == "P" ? UnitOfMeasure.Package : UnitOfMeasure.Case); } if (record.Length >= DETAIL_STARTPOS_SELLPRICE + DETAIL_LENGTH_SELLPRICE) { double sellPrice; double.TryParse(record.Substring(DETAIL_STARTPOS_SELLPRICE, DETAIL_LENGTH_SELLPRICE), out sellPrice); value.SellPrice = sellPrice; } if (record.Length >= DETAIL_STARTPOS_CWT + DETAIL_LENGTH_CWT) { value.CatchWeight = (record.Substring(DETAIL_STARTPOS_CWT, DETAIL_LENGTH_CWT) == "Y"); } if (record.Length >= DETAIL_STARTPOS_ITEMDEL + DETAIL_LENGTH_ITEMDEL) { value.ItemDeleted = (record.Substring(DETAIL_STARTPOS_ITEMDEL, DETAIL_LENGTH_ITEMDEL) == "Y"); } if (record.Length >= DETAIL_STARTPOS_SUBORG + DETAIL_LENGTH_SUBORG) { value.SubbedOriginalItemNumber = record.Substring(DETAIL_STARTPOS_SUBORG, DETAIL_LENGTH_SUBORG).Trim(); } if (record.Length >= DETAIL_STARTPOS_REPLORG + DETAIL_LENGTH_REPLORG) { value.ReplacedOriginalItemNumber = record.Substring(DETAIL_STARTPOS_REPLORG, DETAIL_LENGTH_REPLORG).Trim(); } if (record.Length >= DETAIL_STARTPOS_ITEMSTS + DETAIL_LENGTH_ITEMSTS) { value.ItemStatus = record.Substring(DETAIL_STARTPOS_ITEMSTS, DETAIL_LENGTH_ITEMSTS); } if (record.Length >= DETAIL_STARTPOS_FUTURE + DETAIL_LENGTH_FUTURE) { value.FutureItem = (record.Substring(DETAIL_STARTPOS_FUTURE, DETAIL_LENGTH_FUTURE) == "Y"); } if (record.Length >= DETAIL_STARTPOS_WEIGHT + DETAIL_LENGTH_WEIGHT) { double weight; double.TryParse(record.Substring(DETAIL_STARTPOS_WEIGHT, DETAIL_LENGTH_WEIGHT), out weight); value.TotalShippedWeight = weight; } if (record.Length >= DETAIL_STARTPOS_SOURCE + DETAIL_LENGTH_SOURCE) { value.Source = record.Substring(DETAIL_STARTPOS_SOURCE, DETAIL_LENGTH_SOURCE); } if (record.Length >= DETAIL_STARTPOS_MFGID + DETAIL_LENGTH_MFGID) { value.ManufacturerId = record.Substring(DETAIL_STARTPOS_MFGID, DETAIL_LENGTH_MFGID).Trim(); } if (record.Length >= DETAIL_STARTPOS_REQID + DETAIL_LENGTH_REQID) { value.SpecialOrderHeaderId = record.Substring(DETAIL_STARTPOS_REQID, DETAIL_LENGTH_REQID); } if (record.Length >= DETAIL_STARTPOS_REQLINNUM + DETAIL_LENGTH_REQLINNUM) { value.SpecialOrderLineNumber = record.Substring(DETAIL_STARTPOS_REQLINNUM, DETAIL_LENGTH_REQLINNUM); } }
protected override void LogAuditTrail(RegularOrder order, string action) { if (CurrentUser != null) { action = action.ToUpperInvariant(); if (_orderHistoryRepository == null) { _orderHistoryRepository = new GenericRepository <OrderHistory>(Repository.Context); } if (_orderHistoryDetailRepository == null) { _orderHistoryDetailRepository = new GenericRepository <OrderHistoryDetail>(Repository.Context); } // Logs audit trail OrderHistory orderHistory = new OrderHistory(); orderHistory.id = IDGenerator.NewId <OrderHistory>(true); orderHistory.order_id = order.id; orderHistory.action = action; orderHistory.date_time = DateTime.Now; orderHistory.user_id = SystemParam.CurrentUser.id; _orderHistoryRepository.Insert(orderHistory); switch (order.EntityState) { case EntityState.Added: { foreach (var property in order.GetType().GetProperties()) { OrderHistoryDetail orderHistoryDetail = new OrderHistoryDetail(); orderHistoryDetail.id = Guid.NewGuid().ToString(); orderHistoryDetail.parent_id = orderHistory.id; orderHistoryDetail.property_name = property.Name; orderHistoryDetail.old_value = string.Empty; orderHistoryDetail.new_value = property.GetValue(order, null) != null?property.GetValue(order, null).ToString() : null; _orderHistoryDetailRepository.Insert(orderHistoryDetail); } } break; case EntityState.Modified: { var stateEntry = Repository.Context.ObjectStateManager.GetObjectStateEntry(order); foreach (var propertyName in stateEntry.GetModifiedProperties()) { OrderHistoryDetail orderHistoryDetail = new OrderHistoryDetail(); orderHistoryDetail.id = Guid.NewGuid().ToString(); orderHistoryDetail.parent_id = orderHistory.id; orderHistoryDetail.property_name = propertyName; orderHistoryDetail.old_value = stateEntry.OriginalValues[propertyName] != null ? stateEntry.OriginalValues[propertyName].ToString() : null; orderHistoryDetail.new_value = stateEntry.CurrentValues[propertyName] != null ? stateEntry.CurrentValues[propertyName].ToString() : null; _orderHistoryDetailRepository.Insert(orderHistoryDetail); } } break; default: break; } } }
private EF.OrderHistoryDetail AddNewDetailToOrder(bool isSpecialOrder, EF.OrderHistoryHeader header, OrderHistoryDetail currentDetail) { EF.OrderHistoryDetail tempDetail = currentDetail.ToEntityFrameworkModel(); tempDetail.BranchId = header.BranchId; tempDetail.InvoiceNumber = header.InvoiceNumber; tempDetail.OrderHistoryHeader = header; if (isSpecialOrder) { tempDetail.ItemStatus = KeithLink.Svc.Core.Constants.SPECIALORDERITEM_REQ_STATUS_TRANSLATED_CODE; } header.OrderDetails.Add(tempDetail); return(tempDetail); }
private EF.OrderHistoryDetail SeekMatchingDetail(EF.OrderHistoryHeader header, OrderHistoryDetail currentDetail) { EF.OrderHistoryDetail detail = null; if (header.OrderDetails != null && header.OrderDetails.Count > 0) { detail = header.OrderDetails.Where(d => (d.LineNumber == currentDetail.LineNumber)).FirstOrDefault(); } return(detail); }
private void DetermineDetailOnOrder(bool isSpecialOrder, EF.OrderHistoryHeader header, OrderHistoryDetail currentDetail) { EF.OrderHistoryDetail detail = SeekMatchingDetail(header, currentDetail); if (detail == null) { detail = AddNewDetailToOrder(isSpecialOrder, header, currentDetail); } else { detail = MergeWithCurrentOrderDetail(isSpecialOrder, header, currentDetail, detail); } if (Configuration.DiagnosticsAuditOrderHistoryDetailChanges) { ChangeAuditor.AuditChanges(_unitOfWork.Context, detail, _log); } }