Imports BVSoftware.BVC.Core Imports BVSoftware.BVC.Interfaces Imports System.Text Public Class orders_ship Inherits BaseAdminPage #Region " Web Form Designer Generated Code " 'This call is required by the Web Form Designer. Private Sub InitializeComponent() End Sub Protected WithEvents MetaDescriptionControl As BVSoftware.WebControls.MetaTag Protected WithEvents MetaKeywordsControl As BVSoftware.WebControls.MetaTag Protected WithEvents msg As BVSoftware.WebControls.WebPageMessage Protected WithEvents lblUsername As System.Web.UI.WebControls.Label Protected WithEvents lblInstructions As System.Web.UI.WebControls.Label Protected WithEvents lblStatus As System.Web.UI.WebControls.Label Protected WithEvents lnkPackingSlip As System.Web.UI.WebControls.HyperLink Protected WithEvents StatusField As System.Web.UI.WebControls.Label Protected WithEvents btnContinue As System.Web.UI.WebControls.ImageButton Protected WithEvents lblPaymentStatus As System.Web.UI.WebControls.Label Protected WithEvents lnkInvoice As System.Web.UI.WebControls.HyperLink Protected WithEvents lblOrderNumber As System.Web.UI.WebControls.Label Protected WithEvents PackageList As System.Web.UI.WebControls.DataList Protected WithEvents btnSubmit As System.Web.UI.WebControls.ImageButton Protected WithEvents TrackByField As BVSoftware.WebControls.SelectDropDownList 'NOTE: The following placeholder declaration is required by the Web Form Designer. 'Do not delete or move it. Private designerPlaceholderDeclaration As System.Object Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init 'CODEGEN: This method call is required by the Web Form Designer 'Do not modify it using the code editor. InitializeComponent() End Sub #End Region Public Property OrderID() As Integer Get If ViewState("OrderID") Is Nothing Then Return 0 Else Return ViewState("OrderID") End If End Get Set(ByVal Value As Integer) ViewState("OrderID") = Value End Set End Property Public Property RedirectURL() As String Get If ViewState("RedirectURL") Is Nothing Then Return String.Empty Else Return ViewState("RedirectURL") End If End Get Set(ByVal Value As String) ViewState("RedirectURL") = Value End Set End Property Private thisOrder As Orders.Order Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load BVC2004Store.CheckThisPage(Security.RolePermission.LoginToAdmin) BVC2004Store.CheckThisPage(Security.RolePermission.AccessOrderArea) If Not Page.IsPostBack Then MetaKeywordsControl.Content = WebAppSettings.MetaKeywords MetaDescriptionControl.Content = WebAppSettings.MetaDescription If Request.Params("id") <> Nothing Then Me.OrderID = Request.Params("id") End If If Request.Params("ReturnURL") <> Nothing Then Me.RedirectURL = Request.Params("ReturnURL") End If LoadOrder() End If End Sub Private Sub LoadOrder() thisOrder = OrderServices.GetExistingOrder(OrderID) If OrderID > 0 Then Try Me.lblOrderNumber.Text = thisOrder.CompletedOrderID Me.lblInstructions.Text = thisOrder.Instructions Dim subjectline As String = WebAppSettings.SiteName subjectline += " Order " & thisOrder.CompletedOrderID Me.lblUsername.Text = "" & thisOrder.UserName & "" Me.lnkPackingSlip.NavigateUrl = "orders_packingslip.aspx?start=" & thisOrder.CompletedOrderID & "&end=" & thisOrder.CompletedOrderID Me.lnkInvoice.NavigateUrl = "orders_printinvoice.aspx?start=" & thisOrder.CompletedOrderID & "&end=" & thisOrder.CompletedOrderID LoadPaymentInformation() LoadOrderStatusImages() ' Shipping Items If thisOrder.Packages.Length > 0 Then PackageList.Visible = True PackageList.DataSource = thisOrder.Packages PackageList.DataBind() End If 'LoadPackages() Catch Ex As Exception msg.ShowException(Ex) End Try If Request.Params("OK") = 1 Then msg.ShowOK("Package Shipped!") End If Else msg.ShowError("No Order ID to Load!") End If End Sub Private Sub LoadPaymentInformation() Dim sb As New StringBuilder Dim grandTotal As Decimal = thisOrder.GrandTotal Dim totalAuthorized As Decimal = thisOrder.PaymentTotalAuthorized Dim totalReceived As Decimal = thisOrder.PaymentTotalRecieved Dim totalRefunded As Decimal = thisOrder.PaymentTotalRefunded Dim totalRemaining As Decimal = grandTotal - totalReceived + totalRefunded sb.Append("") Dim masterID As Integer = OrderServices.FindPaymentMethodIndex(thisOrder) If masterID >= 0 Then If thisOrder.Payments.Length > masterID Then sb.Append("") End If End If sb.Append("") sb.Append("") sb.Append("") sb.Append("") sb.Append("") sb.Append("
") Select Case thisOrder.Payments(masterID).PaymentMethod Case BVSoftware.BVC.Interfaces.PaymentMethod.CreditCard Select Case thisOrder.Payments(masterID).CreditCardType Case BVSoftware.BVC.Interfaces.CreditCardType.Amex sb.Append("Amex ") Case BVSoftware.BVC.Interfaces.CreditCardType.DinersClub sb.Append("Diner's Club ") Case BVSoftware.BVC.Interfaces.CreditCardType.Discover sb.Append("Discover ") Case BVSoftware.BVC.Interfaces.CreditCardType.JCB sb.Append("JCB ") Case BVSoftware.BVC.Interfaces.CreditCardType.MasterCard sb.Append("Mastercard ") Case BVSoftware.BVC.Interfaces.CreditCardType.Visa sb.Append("Visa ") End Select If thisOrder.Payments(masterID).CreditCardNumber.Length > 14 Then sb.Append("-" & thisOrder.Payments(masterID).CreditCardNumber.Substring(thisOrder.Payments(masterID).CreditCardNumber.Length - 4, 4) & " ") End If sb.Append("
") sb.Append("Authorized for: ") sb.Append("") sb.Append(String.Format("{0:c}", totalAuthorized)) Case Else sb.Append("Pay By: ") sb.Append(OrderServices.TranslatePaymentMethodCodeToString(thisOrder.Payments(masterID).PaymentMethod)) End Select sb.Append("
Total:") sb.Append(String.Format("{0:c}", grandTotal)) sb.Append("
Received:") sb.Append(String.Format("{0:c}", totalReceived)) sb.Append("
Refunded:") sb.Append(String.Format("{0:c}", totalRefunded)) sb.Append("

Remaining:") sb.Append(String.Format("{0:c}", totalRemaining)) sb.Append("
") Me.lblPaymentStatus.Text = sb.ToString End Sub Private Sub LoadOrderStatusImages() Dim sb As New StringBuilder Select Case thisOrder.StatusCode Case Orders.OrderStatusCode.Canceled sb.Append("  ") Case Orders.OrderStatusCode.Completed sb.Append("  ") Case Orders.OrderStatusCode.InProcess sb.Append("  ") Case Orders.OrderStatusCode.OnHold sb.Append("  ") Case Orders.OrderStatusCode.ProblemOrder sb.Append("  ") Case Orders.OrderStatusCode.ShoppingCart sb.Append("  ") Case Orders.OrderStatusCode.Void sb.Append("  ") End Select Select Case thisOrder.PaymentStatus Case Orders.OrderPaymentStatus.Authorized sb.Append(" ") Case Orders.OrderPaymentStatus.Charged sb.Append(" ") Case Orders.OrderPaymentStatus.NoPayment sb.Append(" ") Case Orders.OrderPaymentStatus.PaymentError sb.Append(" ") End Select Select Case thisOrder.ShippingStatus Case Orders.OrderShippingStatus.Unknown sb.Append(" ") Case Orders.OrderShippingStatus.Unshipped sb.Append(" ") Case Orders.OrderShippingStatus.PartiallyShipped sb.Append(" ") Case Orders.OrderShippingStatus.FullyShipped sb.Append(" ") End Select Me.StatusField.Text = sb.ToString End Sub Private Sub PackageList_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataListItemEventArgs) Handles PackageList.ItemDataBound If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then Dim editID As String = PackageList.DataKeys(e.Item.ItemIndex) Dim pak As Shipping.Package = ShippingServices.Packages.GetPackageByID(editID) If Not pak Is Nothing Then Dim ShipToLabel As Label = e.Item.FindControl("PackageShipAddress") If Not ShipToLabel Is Nothing Then ShipToLabel.Text = ContactServices.Addresses.ToHtmlString(pak.DestinationAddress) End If Dim TrackByField As BVSoftware.WebControls.SelectDropDownList = e.Item.FindControl("TrackByField") If Not TrackByField Is Nothing Then Select Case pak.ShippingType Case Shipping.ShippingMethodType2.ByItemCount TrackByField.SelectByValue("3") Case Shipping.ShippingMethodType2.ByPrice TrackByField.SelectByValue("3") Case Shipping.ShippingMethodType2.ByWeight TrackByField.SelectByValue("3") Case Shipping.ShippingMethodType2.CanadaPost TrackByField.SelectByValue("3") Case Shipping.ShippingMethodType2.DHL TrackByField.SelectByValue("3") Case Shipping.ShippingMethodType2.FedEx1DayFreight TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedEx2Day TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedEx2DayFreight TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedEx3DayFrieght TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExExpressSaver TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExFirstOvernight TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExGround TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExGroundHomeDelivery TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExInternationalEconomy TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExInternationalEconomyFreight TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExInternationalFirst TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExInternationalPriority TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExInternationalPriorityFreight TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExPriorityOvernight TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.FedExStandardOvernight TrackByField.SelectByValue("1") Case Shipping.ShippingMethodType2.NoMethodsAvailable TrackByField.SelectByValue("3") Case Shipping.ShippingMethodType2.None TrackByField.SelectByValue("4") Case Shipping.ShippingMethodType2.PerItem TrackByField.SelectByValue("3") Case Shipping.ShippingMethodType2.UPS3DaySelect TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpeditedCanada TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpressCanada TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpressEurope TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpressMexico TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpressPlus TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpressSaverCanada TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpressSaverEurope TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSExpressSaverUS TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSGround TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSNextDayAir TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSNextDayAirEarlyAM TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSNextDayAirSaver TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSSecondDayAir TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSSecondDayAirAM TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSStandard TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSWorldwideExpedited TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSWorldwideExpress TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.UPSWorldwideExpressPlus TrackByField.SelectByValue("0") Case Shipping.ShippingMethodType2.USPostalServiceBoundPrintedMaterial TrackByField.SelectByValue("2") Case Shipping.ShippingMethodType2.USPostalServiceExpress TrackByField.SelectByValue("2") Case Shipping.ShippingMethodType2.USPostalServiceInternational TrackByField.SelectByValue("2") Case Shipping.ShippingMethodType2.USPostalServiceLibrary TrackByField.SelectByValue("2") Case Shipping.ShippingMethodType2.USPostalServiceMedia TrackByField.SelectByValue("2") Case Shipping.ShippingMethodType2.USPostalServiceParcel TrackByField.SelectByValue("2") Case Shipping.ShippingMethodType2.USPostalServicePriority TrackByField.SelectByValue("2") Case Else TrackByField.SelectByValue("4") End Select End If Dim TrackingNumberField As TextBox = e.Item.FindControl("TrackingNumberField") If Not TrackingNumberField Is Nothing Then TrackingNumberField.Text = pak.TrackingNumber End If Dim ShipByUPS As HyperLink = e.Item.FindControl("lnkShipByUPS") If Not ShipByUPS Is Nothing Then 'If pak.TrackingNumber.Trim.Length > 0 Then ' ShipByUPS.Visible = True 'Else ' ShipByUPS.Visible = False 'End If ShipByUPS.NavigateUrl = "orders_ship_UPS.aspx?PackageID=" & pak.ID & "&oID=" & Me.OrderID & "&OrderID=" & lblOrderNumber.Text & "&ReturnURL=" & Server.UrlEncode("orders_ship.aspx?id=" & Me.OrderID & "&returnURL=" & Me.RedirectURL) End If Dim RequestedShippingBy As Label = e.Item.FindControl("RequestedShippingBy") If Not RequestedShippingBy Is Nothing Then RequestedShippingBy.Text = pak.ShippingMethodName End If Dim PackageItems As DataGrid = e.Item.FindControl("PackageItems") If Not PackageItems Is Nothing Then AddHandler PackageItems.ItemDataBound, AddressOf Me.PackageItems_ItemDataBound PackageItems.DataSource = thisOrder.GetItemsForPackage(pak.ID) PackageItems.DataBind() End If End If pak = Nothing End If End Sub Public Sub PackageItems_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) If e.Item.ItemType = ListItemType.Item Or e.Item.ItemType = ListItemType.AlternatingItem Then Dim editID As String = CType(sender, DataGrid).DataKeys(e.Item.ItemIndex) Dim Item As Orders.OrderItem = OrderServices.OrderItems.GetByID(editID) If Not Item Is Nothing Then e.Item.Cells(1).Text = OrderServices.OrderItems.GetDisplaySKUForItem(Item) Dim sDescription As String = Item.DisplayName If Item.DisplayDescription.Trim.Length > 0 Then sDescription += "
" & Item.DisplayDescription End If e.Item.Cells(2).Text = sDescription Dim ActionField As BVSoftware.WebControls.SelectDropDownList = e.Item.FindControl("ActionField") Dim QuantityField As TextBox = e.Item.FindControl("QuantityField") If Item.Qty > Item.QtyShipped Then If Not QuantityField Is Nothing Then QuantityField.Text = Item.Qty - Item.QtyShipped End If Else If Not ActionField Is Nothing Then ActionField.SelectByValue("2") End If End If End If Item = Nothing End If End Sub Private Sub btnContinue_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnContinue.Click If Me.RedirectURL.Length > 0 Then Response.Redirect(Me.RedirectURL) Else If Me.OrderID > 0 Then Response.Redirect("Orders_Details.aspx?id=" & Me.OrderID) Else Response.Redirect("Orders_default.aspx") End If End If End Sub Private Sub btnSubmit_Click(ByVal sender As System.Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles btnSubmit.Click For Each dli As DataListItem In Me.PackageList.Items If dli.ItemType = ListItemType.AlternatingItem Or dli.ItemType = ListItemType.Item Then Dim packageID As Integer = Me.PackageList.DataKeys(dli.ItemIndex) Dim pak As Shipping.Package = ShippingServices.Packages.GetPackageByID(packageID) If Not pak Is Nothing Then pak.ShipDate = DateTime.Now Dim TrackByField As BVSoftware.WebControls.SelectDropDownList = dli.FindControl("TrackByField") Dim TrackingNumberField As TextBox = dli.FindControl("TrackingNumberField") If Not TrackByField Is Nothing Then Dim shipTypeInteger = Convert.ToInt32(pak.ShippingType) Select Case TrackByField.SelectedValue Case 0 'UPS If shipTypeInteger < 2200 Or shipTypeInteger > 2299 Then pak.ShippingType = Shipping.ShippingMethodType2.UPSStandard End If Case 1 'FedEx If shipTypeInteger < 2100 Or shipTypeInteger > 2199 Then pak.ShippingType = Shipping.ShippingMethodType2.FedExGround End If Case 2 'US Postal If shipTypeInteger < 2300 Or shipTypeInteger > 2399 Then pak.ShippingType = Shipping.ShippingMethodType2.USPostalServiceParcel End If Case 3 ' Other pak.ShippingType = Shipping.ShippingMethodType2.None Case 4 pak.ShippingType = Shipping.ShippingMethodType2.None End Select End If If Not TrackingNumberField Is Nothing Then If TrackByField.SelectedValue = 4 Then pak.TrackingNumber = "Non-Trackable" Else pak.TrackingNumber = TrackingNumberField.Text.Trim End If End If ShippingServices.Packages.Update(pak) Dim PackageItems As DataGrid = dli.FindControl("PackageItems") If Not PackageItems Is Nothing Then For Each dgi As DataGridItem In PackageItems.Items If dgi.ItemType = ListItemType.AlternatingItem Or dgi.ItemType = ListItemType.Item Then Dim OrderItemID As Integer = PackageItems.DataKeys(dgi.ItemIndex) Dim oi As Orders.OrderItem = OrderServices.OrderItems.GetByID(OrderItemID) If Not oi Is Nothing Then Dim ActionField As BVSoftware.WebControls.SelectDropDownList = dgi.FindControl("ActionField") Dim QuantityField As TextBox = dgi.FindControl("QuantityField") Dim qtyToShip As Integer = 0 If IsNumeric(QuantityField.Text) = True Then qtyToShip = QuantityField.Text End If Select Case ActionField.SelectedValue Case "1" ' Ship oi.QtyShipped += qtyToShip If oi.QtyShipped > oi.Qty Then oi.QtyShipped = oi.Qty End If Case "2" ' Unship oi.QtyShipped -= qtyToShip If oi.QtyShipped < 0 Then oi.QtyShipped = 0 End If End Select OrderServices.OrderItems.Update(oi) End If End If Next End If End If End If Next OrderServices.EvaluateOrderShippingStatus(Me.OrderID) OrderServices.EvaluateOrderCompleteStatus(Me.OrderID) LoadOrder() End Sub End Class