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 }
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("Ошибка отправки заказа. Не принято одна или более позиций заказа"); } }
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("Ошибка отправки заказа. Не принято одна или более позиций заказа"); }