/// <summary> /// Gets the active shipping calculation per store /// </summary> /// <param name="storeId"></param> /// <returns></returns> private static ShippingCalculationEnum GetActiveShippingCalculationID(int storeId) { ShippingCalculationEnum calcId = ShippingCalculationEnum.Unknown; string query = "SELECT ShippingCalculationID FROM ShippingCalculationStore WITH (NOLOCK) WHERE StoreId = {0}".FormatWith(storeId); using (SqlConnection conn = new SqlConnection(DB.GetDBConn())) { conn.Open(); using (IDataReader rs = DB.GetRS(query, conn)) { if (rs.Read()) { calcId = (ShippingCalculationEnum)DB.RSFieldInt(rs, "ShippingCalculationID"); } rs.Close(); rs.Dispose(); } conn.Close(); conn.Dispose(); } return(calcId); }
/// <summary> /// Gets the active shiping calculation, multi-store aware /// </summary> /// <returns></returns> static public Shipping.ShippingCalculationEnum GetActiveShippingCalculationID() { // default from the appconfig ShippingCalculationEnum calcMode = (ShippingCalculationEnum)AppLogic.AppConfigUSInt("DefaultShippingCalculationID"); // let's try for a store specific shipping calculation int storeId = AppLogic.StoreID(); ShippingCalculationEnum storeCalcMode = GetActiveShippingCalculationID(storeId); // unknown means we didn't find any for that store if (storeCalcMode == ShippingCalculationEnum.Unknown) { // let's fallback to the default store storeId = AppLogic.DefaultStoreID(); storeCalcMode = GetActiveShippingCalculationID(storeId); } // if we did find a store specific calc mode use that, which will be almost always unless not configured if (storeCalcMode != ShippingCalculationEnum.Unknown) { calcMode = storeCalcMode; } return(calcMode); }