protected void Page_Load(object sender, System.EventArgs e) { Response.CacheControl = "private"; Response.Expires = 0; Response.AddHeader("pragma", "no-cache"); TargetCustomer = new Customer(CommonLogic.QueryStringUSInt("CustomerID"), true); if (TargetCustomer.CustomerID == 0) { AppLogic.AdminLinkUrl("Customers.aspx"); } if (TargetCustomer.IsAdminSuperUser && !ThisCustomer.IsAdminSuperUser) { throw new ArgumentException(AppLogic.GetString("admin.common.SecurityException", SkinID, LocaleSetting)); } if (CommonLogic.QueryStringUSInt("DeleteID") != 0) { DB.ExecuteSQL("delete from ShoppingCart where CustomerID=" + TargetCustomer.CustomerID.ToString() + " and ShoppingCartRecID=" + CommonLogic.QueryStringUSInt("DeleteID").ToString()); DB.ExecuteSQL("delete from kitcart where CustomerID=" + TargetCustomer.CustomerID.ToString() + " and ShoppingCartRecID=" + CommonLogic.QueryStringUSInt("DeleteID").ToString()); } if (CommonLogic.FormUSInt("OriginalRecurringOrderNumber") != 0) { int OriginalRecurringOrderNumber = CommonLogic.FormUSInt("OriginalRecurringOrderNumber"); int NewRecurringInterval = CommonLogic.FormUSInt("RecurringInterval"); DateIntervalTypeEnum NewRecurringIntervalType = (DateIntervalTypeEnum)CommonLogic.FormUSInt("RecurringIntervalType"); DateTime SetNextShipDate = System.DateTime.MinValue; if (CommonLogic.FormCanBeDangerousContent("NextRecurringShipDate").Length != 0) { try { SetNextShipDate = CommonLogic.FormNativeDateTime("NextRecurringShipDate"); } catch { } if (SetNextShipDate != System.DateTime.MinValue && OriginalRecurringOrderNumber != 0) { DB.ExecuteSQL(String.Format("update shoppingcart set NextRecurringShipDate={0} where customerid={1} and originalrecurringordernumber={2}", DB.DateQuote(Localization.ToDBShortDateString(SetNextShipDate)), TargetCustomer.CustomerID.ToString(), OriginalRecurringOrderNumber.ToString())); } } if (CommonLogic.FormUSInt("RecurringInterval") != 0) { DateTime CreatedOnDate = System.DateTime.MinValue; DateTime LastRecurringShipDate = System.DateTime.MinValue; int RecurringIndex = 1; int CurrentRecurringInterval = 0; DateIntervalTypeEnum CurrentRecurringIntervalType = DateIntervalTypeEnum.Monthly; using (SqlConnection dbconn = DB.dbConn()) { dbconn.Open(); using (IDataReader rs2 = DB.GetRS("select CreatedOn, NextRecurringShipDate,RecurringIndex,RecurringInterval,RecurringIntervalType from ShoppingCart with (NOLOCK) where CustomerID=" + TargetCustomer.CustomerID.ToString() + " and CartType=" + ((int)CartTypeEnum.RecurringCart).ToString() + " and OriginalRecurringOrderNumber=" + OriginalRecurringOrderNumber.ToString(), dbconn)) { if (rs2.Read()) { CurrentRecurringInterval = DB.RSFieldInt(rs2, "RecurringInterval"); CurrentRecurringIntervalType = (DateIntervalTypeEnum)DB.RSFieldInt(rs2, "RecurringIntervalType"); RecurringIndex = DB.RSFieldInt(rs2, "RecurringIndex"); CreatedOnDate = DB.RSFieldDateTime(rs2, "CreatedOn"); LastRecurringShipDate = DB.RSFieldDateTime(rs2, "NextRecurringShipDate"); // this must be "fixed" up below...we need the PRIOR ship date, not the date of next schedule ship } } } LastRecurringShipDate = System.DateTime.Now; DateTime NewShipDate = System.DateTime.MinValue; if (LastRecurringShipDate != System.DateTime.MinValue) { switch (CurrentRecurringIntervalType) { case DateIntervalTypeEnum.Day: NewShipDate = LastRecurringShipDate.AddDays(NewRecurringInterval); break; case DateIntervalTypeEnum.Week: NewShipDate = LastRecurringShipDate.AddDays(7 * NewRecurringInterval); break; case DateIntervalTypeEnum.Month: NewShipDate = LastRecurringShipDate.AddMonths(NewRecurringInterval); break; case DateIntervalTypeEnum.Year: NewShipDate = LastRecurringShipDate.AddYears(NewRecurringInterval); break; case DateIntervalTypeEnum.Weekly: NewShipDate = LastRecurringShipDate.AddDays(7); break; case DateIntervalTypeEnum.BiWeekly: NewShipDate = LastRecurringShipDate.AddDays(14); break; case DateIntervalTypeEnum.EveryFourWeeks: NewShipDate = LastRecurringShipDate.AddDays(28); break; case DateIntervalTypeEnum.Monthly: NewShipDate = LastRecurringShipDate.AddMonths(1); break; case DateIntervalTypeEnum.Quarterly: NewShipDate = LastRecurringShipDate.AddMonths(3); break; case DateIntervalTypeEnum.SemiYearly: NewShipDate = LastRecurringShipDate.AddMonths(6); break; case DateIntervalTypeEnum.Yearly: NewShipDate = LastRecurringShipDate.AddYears(1); break; default: NewShipDate = LastRecurringShipDate.AddMonths(NewRecurringInterval); break; } DB.ExecuteSQL("update ShoppingCart set RecurringInterval=" + NewRecurringInterval.ToString() + ", RecurringIntervalType=" + ((int)NewRecurringIntervalType).ToString() + ", NextRecurringShipDate=" + DB.DateQuote(Localization.ToDBDateTimeString(NewShipDate)) + " where CustomerID=" + TargetCustomer.CustomerID.ToString() + " and CartType=" + ((int)CartTypeEnum.RecurringCart).ToString() + " and OriginalRecurringOrderNumber=" + OriginalRecurringOrderNumber.ToString()); } } } SectionTitle = "<a href=\"" + AppLogic.AdminLinkUrl("Customers.aspx") + "?searchfor=" + TargetCustomer.CustomerID.ToString() + "\">" + AppLogic.GetString("admin.menu.Customers", SkinID, LocaleSetting) + "</a> - <a href=\"" + AppLogic.AdminLinkUrl("cst_history.aspx") + "?customerid=" + TargetCustomer.CustomerID.ToString() + "\">" + AppLogic.GetString("admin.cst_recurring.OrderHistory", SkinID, LocaleSetting) + "</a> - " + AppLogic.GetString("admin.cst_recurring.RecurringShipmentsFor", SkinID, LocaleSetting) + " " + TargetCustomer.FullName() + " (" + TargetCustomer.EMail + ")"; RenderMarkup(); }