/// <summary> /// Возвращает ссылку на balance либо созданный либо найденный /// </summary> /// <param name="date">дата остатка</param> /// <param name="stock">склад</param> /// <param name="cost">Себестоимость</param> /// <param name="item">Запчасть</param> /// <param name="count">Количество на складе</param> /// <param name="context"></param> /// <returns></returns> private static balance GetBalance(DateTime date, stock stock, decimal cost, item item, decimal count, OrderAssistantEntities context) { // Проверяем есть такая запись или нет var balance = (from b in context.balances.Local where b.stock.id == stock.id && b.dateCount == date && b.item.id1C == item.id1C select b).FirstOrDefault(); // Если нет создаем if (balance == null) { var newBalance = new balance() { dateCount = date, stock = stock, cost = cost, item = item, count = count }; balance = context.balances.Add(newBalance); } // Или обновляем else { balance.cost = cost; balance.count = count; } return(balance); }
/// <summary> /// Возвращает ссылку на item либо созданный либо найденный /// </summary> /// <param name="name">Название ЗЧ</param> /// <param name="id1C">Код 1С</param> /// <param name="manufacturerStr">Производитель название</param> /// <param name="brendStr">Название бренда</param> /// <param name="catNumber">Артикул</param> /// <param name="context"></param> /// <returns>Ссылка на item</returns> private static item GetItem(string name, string id1C, string manufacturerStr, string brendStr, string catNumber, OrderAssistantEntities context) { // Проверяем есть ли такой item var item = (from i in context.items.Local where i.id1C == id1C select i).FirstOrDefault(); // Если такого item нет, создаем if (item == null) { var newItem = new item() { id1C = id1C, manufacturer = GetManufacturer(manufacturerStr, context), brand = GetBrand(brendStr, context), catNumber = catNumber, name = name, ABCgroup = "D" //TODO должно само в базе подставляться. но почемуто не хочет }; item = context.items.Add(newItem); return(item); } // Иначе обновляем item.manufacturer = GetManufacturer(manufacturerStr, context); item.brand = GetBrand(brendStr, context); item.catNumber = catNumber; item.name = name; return(item); }
/// <summary> /// Возвращает Stock который подходит под определенную сигнатуру, без учета регистра /// </summary> /// <param name="stockStr">строка с описанием скалада</param> /// <param name="context"></param> /// <returns></returns> private static stock TakeStock(string stockStr, OrderAssistantEntities context) { if (String.IsNullOrEmpty(stockStr)) { throw new Exception("Строка пуста или NULL."); } return(Enumerable.FirstOrDefault(context.stocks, stock => stockStr.ToLower().Contains(stock.signature))); }
/// <summary> /// Возвращает ссылку на производителя либо созданого либо найденного, ищет без учета регистра. /// </summary> /// <param name="nameStr">Название производителя</param> /// <param name="context"></param> /// <returns>Ссылка на производителя</returns> private static manufacturer GetManufacturer(string nameStr, OrderAssistantEntities context) { // Проверяем, есть ли такой бренд var manufacturer = (from m in context.manufacturers.Local where m.name.ToLower().Contains(nameStr.ToLower()) select m).FirstOrDefault(); if (manufacturer == null) { var newManufacturer = new manufacturer() { name = nameStr }; manufacturer = context.manufacturers.Add(newManufacturer); } return(manufacturer); }
/// <summary> /// Возвращает ссылку на бренд либо созданый либо найденный, ищет без учета регистра. /// </summary> /// <param name="nameStr">Название</param> /// <param name="context"></param> /// <returns>Ссылка на бренд</returns> private static brand GetBrand(string nameStr, OrderAssistantEntities context) { // Проверяем, есть ли такой бренд var brend = (from b in context.brands.Local where b.name.ToLower().Contains(nameStr.ToLower()) select b).FirstOrDefault(); if (brend == null) { var newBrend = new brand() { name = nameStr }; brend = context.brands.Add(newBrend); } return(brend); }