//[Obsolete] //public static void ReceiveAcctgOrderChanges(DateTime checkpointTime) //{ // using (var context = new StoreDataContext()) // { // var logEntry = new TransferChangesLogEntry // { // CheckpointTime = checkpointTime, // TransferStartTime = DateTime.Now // }; // var stopWatch = new System.Diagnostics.Stopwatch(); // stopWatch.Start(); // var changes = OrderService.GetChanges(checkpointTime).OrderBy(l => l.StatusChangeTime); // logEntry.ChangesReceived = changes.Count(); // if (logEntry.ChangesReceived > 0) // logEntry.MinChangeTime = changes.First().StatusChangeTime; // foreach (var line in changes) // { // try // { // var existing = context.OrderLines.SingleOrDefault( // l => l.AcctgOrderLineID == line.AcctgOrderLineId); // var newStatus = new OrderLineStatusChange // { // OrderLineStatus = OrderLineStatusUtil.StatusByteFromHansa(line.OrderLineStatus), // StatusChangeTime = line.StatusChangeTime.Value // }; // if (existing != null) // { // if (!existing.OrderLineStatusChanges.Any( // olsc => olsc.OrderLineStatus == newStatus.OrderLineStatus && // olsc.StatusChangeTime == newStatus.StatusChangeTime)) // { // existing.OrderLineStatusChanges.Add(newStatus); // logEntry.StatusChangesAdded++; // } // //Обновить статус заказа // existing.CurrentStatus = newStatus.OrderLineStatus; // existing.CurrentStatusDate = newStatus.StatusChangeTime; // //TODO: Может ли прийти пустая дата поставки? // //TODO: должна ли создаваться новая строчка в заказе при изменении ожидаемой даты поставки? // if (line.EstSupplyDate.HasValue) // existing.EstSupplyDate = line.EstSupplyDate.Value; // } // else // { // if (line.ParentAcctgOrderLineId.HasValue) // { // var old = context.OrderLines.SingleOrDefault( // l => l.AcctgOrderLineID == line.ParentAcctgOrderLineId); // if (old == null) // { // logEntry.TransferChangesErrors.Add( // new TransferChangesError // { // ErrorMessage = // string.Format("Строка не найдена.Не найдена замещаемая строка. OrderLineHW = {0}, OldOrderLineHW = {1}", // line.AcctgOrderLineId, line.ParentAcctgOrderLineId.Value) // }); // } // else // { // var newOrderLine = new OrderLine // { // OrderID = old.OrderID, // ParentOrderLineID = old.OrderLineID, // AcctgOrderLineID = line.AcctgOrderLineId, // PartNumber = line.Article.PartNumber, // Manufacturer = line.Article.Manufacturer, // SupplierID = line.Article.SupplierId, // ReferenceID = old.ReferenceID, // DeliveryDaysMin = line.Article.DeliveryDaysMin, // DeliveryDaysMax = line.Article.DeliveryDaysMax, // PartName = line.Article.DescriptionOrig, // PartDescription = line.Article.Description, // WeightPhysical = line.Article.WeightPhysical, // WeightVolume = line.Article.WeightVolume, // UnitPrice = line.FinalSalePrice, // Qty = line.Quantity, // StrictlyThisNumber = line.StrictlyThisNumber == 1, // VinCheckupData = line.VinCheckupData, // OrderLineNotes = line.OrderLineNotes, // EstSupplyDate = line.EstSupplyDate, // CurrentStatus = newStatus.OrderLineStatus, // CurrentStatusDate = newStatus.StatusChangeTime // }; // newOrderLine.OrderLineStatusChanges.Add(newStatus); // logEntry.OrderLinesAdded++; // logEntry.StatusChangesAdded++; // context.OrderLines.InsertOnSubmit(newOrderLine); // } // } // else // { // logEntry.TransferChangesErrors.Add(new TransferChangesError // { // ErrorMessage = "Строка не найдена.Отсутствует идентификатор замещаемой строки. OrderLineHW = " + // line.AcctgOrderLineId.ToString() // }); // } // } // context.SubmitChanges(); // logEntry.MaxChangeTime = line.StatusChangeTime; // } // catch (Exception ex) // { // logEntry.TransferChangesErrors.Add( // new TransferChangesError { ErrorMessage = ex.Message }); // } // } // stopWatch.Stop(); // logEntry.DurationInMilliseconds = (int)stopWatch.ElapsedMilliseconds; // context.TransferChangesLogEntries.InsertOnSubmit(logEntry); // context.SubmitChanges(); // } //} public static void ApplyStatusChangeClientReaction( int orderLineId, OrderLineChangeReaction clientReaction, DateTime clientReactionTime) { using (var context = new DCFactory<StoreDataContext>()) { var line = context.DataContext.OrderLines.Single( l => l.OrderLineID == orderLineId ); /* if ( !line.AcctgOrderLineID.HasValue ) throw new InvalidOperationException( "Строка не имеет идентификатора OrderLineHW. отправка реакции невозможна" );*/ var status = line.OrderLineStatusChanges.OrderBy( olsc => olsc.StatusChangeTime ).Last(); // deas 28.04.2011 task3981 обновление статусов локально без отправки в 1С context.DataContext.spUpdateOrderLinesStatus(false, line.AcctgOrderLineID, line.PartNumber, line.Manufacturer, line.SupplierID, line.UnitPrice, line.Qty, line.EstSupplyDate, line.ReferenceID, status.OrderLineStatuses.NameHansa, line.AcctgOrderLineID, line.PartNumber, line.Manufacturer, line.SupplierID, line.DeliveryDaysMin, line.DeliveryDaysMax, line.PartName, line.PartDescription, line.UnitPrice, line.Qty, line.EstSupplyDate, clientReaction == OrderLineChangeReaction.Accept ? "APPLYCLT" : "CANCEL", DateTime.Now ); //if (status.ClientReactionPending) //{ // if (OrderService // .PostOrderLineChangeRequest( // line.AcctgOrderLineID.Value, // clientReaction) == Acknowledgement.OK) // { // status.ClientReaction = (byte)clientReaction; // status.ClientReactionTime = clientReactionTime; // context.SubmitChanges(); // } //} //else //{ // throw new BLException("Ответ уже был отправлен"); //} } }
public ChangeReactionEventArgs( int orderLineId, OrderLineChangeReaction reaction ) { OrderLineId = orderLineId; Reaction = reaction; }