protected string GetSparePartDetailsUrl(SparePartFranch sparePart) { SparePartPriceKey key = new SparePartPriceKey( sparePart.Manufacturer, sparePart.PartNumber, sparePart.SupplierID); return UrlManager.GetSparePartDetailsUrl(key.ToUrlString()); }
internal void AssignSparePart(SparePartFranch part, RmsAuto.Acctg.ClientGroup clientGroup, decimal personalMarkup) { _issues = ShoppingCartItemIssues.NoIssues; if (part != null) { if( UnitPrice != part.GetFinalSalePrice( clientGroup, personalMarkup ) ) _issues |= ShoppingCartItemIssues.FinalPartPriceChanged; UpdateQtyIssues( part ); //if (Qty < part.DefaultOrderQty) // _issues |= ShoppingCartItemIssues.QtyBelowRequiredMinimum; //else if (Qty % part.DefaultOrderQty != 0) // _issues |= ShoppingCartItemIssues.QtyMultiplicityViolation; //if (part.QtyInStock.GetValueOrDefault() > 0 && Qty > part.QtyInStock) // _issues |= ShoppingCartItemIssues.QtyAboveAvailableInStock; // deas 25.05.2011 task4218 запрет заказа товаров по нулевой цене if ( UnitPrice == 0 ) _issues |= ShoppingCartItemIssues.FinalPartPriceNoSet; } else _issues |= ShoppingCartItemIssues.SparePartDiscontinued; _part = part; //Здесь не нужно использовать фабрику так как using (var dc = new StoreDataContext()) { try { var resList = dc.spSelSuppliersWithoutAnalogs().ToList().Select( s => s.SupplierID ).ToList<int>(); _isAnalogsNotSupported = resList.Contains( part.SupplierID ); //TODO: дописать запрос IEnumerable<int> resList2 = dc.ExecuteQuery<int>("Select [SupplierID] From SuppliersWithOnlyAnalogs"); if (resList2.Contains(part.SupplierID)) { _isAnalogsNotSupported = null; }; } catch { //просто не падаем } finally { if (dc.Connection.State == System.Data.ConnectionState.Open) dc.Connection.Close(); } } }
// deas 01.03.2011 task2401 // для расчета ограничений по итоговым данным public void UpdateQtyIssues( SparePartFranch part ) { if ( Qty < part.DefaultOrderQty ) _issues |= ShoppingCartItemIssues.QtyBelowRequiredMinimum; else if ( Qty % part.DefaultOrderQty != 0 ) _issues |= ShoppingCartItemIssues.QtyMultiplicityViolation; if ( part.QtyInStock.GetValueOrDefault() > 0 && Qty > part.QtyInStock ) _issues |= ShoppingCartItemIssues.QtyAboveAvailableInStock; }
/// <summary> /// Возвращает строковое представление кол-ва на складе (остатков) /// </summary> /// <param name="qtyInStock">кол-во на складе</param> /// <returns>строковое представление</returns> public static string GetQtyInStockString(SparePartFranch sp) { if (!sp.QtyInStock.HasValue) { return string.Empty; } //эта проверка на всякий случай, т.к. по бизнес-логике не должно быть такого else if (StoreRefCatalog.RefSearchOwnStores.Items.Select(x => x.SupplierID).Contains(sp.SupplierID)) { if (sp.QtyInStock.Value < 10) return sp.QtyInStock.Value.ToString(); if (sp.QtyInStock.Value <= 30) { return ">10"; } if (sp.QtyInStock.Value <= 100) { return ">30"; } if (sp.QtyInStock.Value <= 1000) { return ">100"; } return ">1000"; //Всех остальных случаях } else { return sp.QtyInStock.Value.ToString(); } }