Ejemplo n.º 1
0
        //[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("Ответ уже был отправлен");
                //}
            }
        }
Ejemplo n.º 2
0
 public ChangeReactionEventArgs( int orderLineId, OrderLineChangeReaction reaction )
 {
     OrderLineId = orderLineId;
     Reaction = reaction;
 }