public Inbound.Файл ЗаказНаРазмещениеДокумент(Inbound.Документ документ) { try { var result = new Inbound.Файл(); result.Документ = new ДокументКоллекция(); ProcessInbound(документ); result.Документ.Add(документ); Dme.Core.Helper.Entities.SaveChanges(_Context); return(result); } catch (Exception e) { StringBuilder sb = new StringBuilder(); for (Exception err = e; err != null; err = err.InnerException) { sb .Append(err.Message) .AppendLine(err.StackTrace) .AppendLine("===========================") .AppendLine(); } throw new Exception(sb.ToString()); } }
public void ProcessInbound(Inbound.Документ s) { var userID = Helper.GetUserName(); var userB2B = _Context.B2BUser.First(r => r.B2BUserID == userID); // Заказ var o = new Dme.Core.Order(); o.UserID = userID; o.DT = DateTime.Now; o.CustOrderID = s.Номер; o.CustOrderDT = s.Дата; string orderTypeName = GetParameter(s, "Тип") ?? "Поставка"; o.OrderType = _Context.OrderType.Where(ot => ot.Name == orderTypeName && ot.Sign == "+").FirstOrDefault(); if (o.OrderType == null) { throw new Exception("Неизвестный тип документа"); } o.CustomerID = userB2B.CustomerID; var t = s.ТаблДок.First(); // Отправитель o.Supplier = GetSupplier(s.Отправитель.First().СвЮЛ.First()); // Строки int rowNo = 1; foreach (var r in t.СтрТабл) { var i = new Core.OrderDocRow(); i.Partm = GetPartm(r); i.BatchNo = r.Серия; i.InvQual = r.Качество ?? "N"; i.SpecInvID = r.Маркер; i.ExpireDT = r.СрокГодности; i.Qty = r.Кол_во; i.Price = r.Цена; i.RowNo = rowNo; o.OrderDocRow.Add(i); rowNo++; } // сохраняем изменения _Context.Order.Add(o); }
string GetParameter(Inbound.Документ s, string name, bool throwException = false) { var par = s.Параметр == null ? null : s.Параметр.FirstOrDefault(p => p.Имя == name); if (par == null) { if (throwException) { throw new Exception(String.Format("Ожидается параметр документа \"{0}\"", name)); } else { return(null); } } string result = par.Значение; return(result); }