Exemple #1
0
 public static void SendOrder(StoreDataContext dc, ref OrderInfo order)
 {
     if (order == null)
         throw new ArgumentNullException("order");
     ServiceProxy.Default.SendOrder(dc, order );
     #region старый вариант ориентированный на веб-сервис
     //var handlingInfo = ServiceProxy.Default.SendOrder(order);
     //foreach (var line in order.OrderLines)
     //{
     //    var lineHandling = handlingInfo.LineHandlings
     //        .Single(l => l.WebOrderLineId == line.WebOrderLineId);
     //    line.AcctgOrderLineId = lineHandling.AcctgOrderLineId;
     //    line.OrderLineStatus = lineHandling.OrderLineStatus;
     //}
     #endregion
 }
Exemple #2
0
        private static void SendorderFranch(StoreDataContext dc, ref Order order, string employeeId)
        {
            if (order == null)
                throw new ArgumentNullException("order");
            var acctgOrder = new OrderInfo
            {
                ClientId = order.ClientID,
                OrderNo = order.OrderID.ToString(),
                CustOrderNum = order.CustOrderNum,
                OrderDate = order.OrderDate,
                DeliveryAddress = order.ShippingAddress,
                PaymentType = order.PaymentMethod.ToTextOrName(),
                EmployeeId = employeeId,
                OrderNotes = order.OrderNotes,
                OrderLines = order.OrderLines
                .Select<OrderLine, OrderLineInfo>(
                    l => new OrderLineInfo
                    {
                        WebOrderLineId = l.OrderLineID,
                        Article = new ArticleInfo
                        {
                            PartNumber = l.PartNumber,
                            Manufacturer = l.Manufacturer,
                            SupplierId = l.SupplierID,
                            ReferenceID = l.ReferenceID,
                            DeliveryDaysMin = l.DeliveryDaysMin,
                            DeliveryDaysMax = l.DeliveryDaysMax,
                            Description = l.PartDescription,
                            DescriptionOrig = l.PartName,
                            InternalPartNumber = l.Part.InternalPartNumber,//l.SparePart.InternalPartNumber,
                            SupplierPriceWithMarkup = l.Part.SupplierPriceWithMarkup,//l.SparePart.SupplierPriceWithMarkup,
                            SupplierMarkup = l.Part.PriceConstantTerm.GetValueOrDefault(),//l.SparePart.PriceConstantTerm.GetValueOrDefault(),
                            WeightPhysical = l.WeightPhysical.GetValueOrDefault(),
                            WeightVolume = l.WeightVolume.GetValueOrDefault(),
                            DiscountGroup = l.Part.RgCode//l.SparePart.RgCode
                        },
                        FinalSalePrice = l.UnitPrice,
                        Quantity = l.Qty,
                        StrictlyThisNumber = l.StrictlyThisNumber ? 1 : 0,
                        VinCheckupData = l.VinCheckupData,
                        OrderLineNotes = l.OrderLineNotes
                    }).ToArray()
            };

            //noxml logic!!!
            if (LightBO.IsLight())
            {
                //для лайтовых франчей формируем xml только в случае если у пользователя выставлен признак "автозаказ"
                //в противном случае xml не формируем и выставляем для заказа признак о том, что у него нет xml
                if (LightBO.GetIsAutoOrder(order.UserID))
                {
                    OrderService.SendOrder(dc, ref acctgOrder);

                    foreach (var wl in order.OrderLines)
                    {
                        var al = acctgOrder.OrderLines.Single(l => l.WebOrderLineId == wl.OrderLineID);
                        wl.AcctgOrderLineID = al.AcctgOrderLineId;
                    }
                }
                else
                {
                    LightBO.SetOrderNoXmlSign(order.OrderID);
                }
            }
            else
            {
                //для не лайтовых франчей логика остается старой
                OrderService.SendOrder(dc, ref acctgOrder);

                foreach (var wl in order.OrderLines)
                {
                    var al = acctgOrder.OrderLines.Single(l => l.WebOrderLineId == wl.OrderLineID);
                    wl.AcctgOrderLineID = al.AcctgOrderLineId;
                }

                if (order.OrderLines.FirstOrDefault() != null)
                    throw new BLException("Ошибка отправки заказа. Не принято одна или более позиций заказа");
            }
        }
Exemple #3
0
        private static void SendOrder(StoreDataContext dc, ref Order order, string employeeId)
        {
            if (order == null) throw new ArgumentNullException("order");

            var perm1C = CommonDac.GetPermutations(); //Заполняем словарь перестановок SupplierID

            var acctgOrder = new OrderInfo
            {
                ClientId = order.ClientID,
                OrderNo = order.OrderID.ToString(),
                CustOrderNum = order.CustOrderNum,
                OrderDate = order.OrderDate,
                DeliveryAddress = order.ShippingAddress,
                PaymentType = order.PaymentMethod.ToTextOrName(),
                EmployeeId = employeeId,
                OrderNotes = order.OrderNotes,
                OrderLines = order.OrderLines.Select<OrderLine, OrderLineInfo>(
                    l => new OrderLineInfo
                    {
                        WebOrderLineId = l.OrderLineID,
                        Article = new ArticleInfo
                        {
                            PartNumber = ProcessingPACK(l.PartNumber, l.SupplierID), //обрабатываем PACK
                            Manufacturer = l.Manufacturer,
                            /* Реализована возможность продавать одну и ту же деталь (pn, brand, supplierID) по разным ценам (например если при разной "партионности" разная цена, т.е. 1 шт. - 10р. 10 шт. - 9р.):
                             * в этом случае данная деталь заливается с разными SupplierID (реальный и "виртуальный"). Т.к. УС ничего не знает о данных "виртуальных" SupplierID, то при отправке в УС
                             * должна производиться подмена "виртуальных" SupplierID реальными. */
                            SupplierId = perm1C.ContainsKey(l.SupplierID) ? (int)perm1C[l.SupplierID] : l.SupplierID,
                            ReferenceID = l.ReferenceID,
                            DeliveryDaysMin = l.DeliveryDaysMin,
                            DeliveryDaysMax = l.DeliveryDaysMax,
                            Description = l.PartDescription,
                            DescriptionOrig = l.PartName,
                            InternalPartNumber = l.Part.InternalPartNumber,
                            SupplierPriceWithMarkup = l.Part.SupplierPriceWithMarkup,
                            SupplierMarkup = l.Part.PriceConstantTerm.GetValueOrDefault(),
                            WeightPhysical = l.WeightPhysical.GetValueOrDefault(),
                            WeightVolume = l.WeightVolume.GetValueOrDefault(),
                            DiscountGroup = l.Part.RgCode

                        },
                        FinalSalePrice = l.UnitPrice,
                        Quantity = l.Qty,
                        StrictlyThisNumber = l.StrictlyThisNumber ? 1 : 0,
                        VinCheckupData = l.VinCheckupData,
                        OrderLineNotes = l.OrderLineNotes
                    }).ToArray()
            };

            OrderService.SendOrder(dc, ref acctgOrder);

            foreach (var wl in order.OrderLines)
            {
                var al = acctgOrder.OrderLines.Single(l => l.WebOrderLineId == wl.OrderLineID);
                wl.AcctgOrderLineID = al.AcctgOrderLineId;
            }

            if (order.OrderLines.FirstOrDefault() != null)
                throw new BLException("Ошибка отправки заказа. Не принято одна или более позиций заказа");
        }