Option Explicit On Option Strict On Imports System.Data Imports Extensiones Imports Extensiones.ModExtensiones Partial Class Boletos Inherits ClsPaginas #Region "Propiedades" Private Property AsientoSeleccionado As String Get Return ViewState("AsientoSeleccionado").ToString() End Get Set(value As String) ViewState("AsientoSeleccionado") = value End Set End Property Private Property Importe As Decimal Get Return If(IsNothing(ViewState("Importe")), 0, ViewState("Importe")).ToString().ToDecimal() End Get Set(value As Decimal) ViewState("Importe") = value End Set End Property Private Property CveViaje As Integer Get Return ViewState("CveViaje").ToString().ToEntero End Get Set(value As Integer) ViewState("CveViaje") = value End Set End Property Private Property Contrato As DataTable Get Return CType(ViewState("Contrato"), DataTable) End Get Set(value As DataTable) ViewState("Contrato") = value End Set End Property Private Property DtPasajeros As DataTable Get Return CType(ViewState("DtPasajeros"), DataTable) End Get Set(value As DataTable) ViewState("DtPasajeros") = value End Set End Property #End Region Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load If Not IsPostBack Then If Request.QueryString("CveViaje") Is Nothing Then Response.Redirect("/Transportes/RepViajes.aspx") End If AsientoSeleccionado = "" CveViaje = Request.QueryString("CveViaje").ToEntero If CveViaje > 0 Then CargaDatos() End If End If End Sub Private Sub CargaDatos() Dim ObjContratos As New ClsContratos Dim ObjViaje As New ClsTransportes If ObjContratos.GetContratos(CveViaje, UsuarioActual.CveEmpresa) Then Contrato = ObjContratos.DtResultados If ObjContratos.DtResultados IsNot Nothing AndAlso ObjContratos.DtResultados.Rows.Count > 0 Then TxtRuta.Text = Contrato.Rows(0)("Ruta").ToString TxtFecha.Text = Contrato.Rows(0)("FechaInicial").ToString.ToDate.ToShortDateString DtPasajeros = New DataTable DtPasajeros.Columns.Add("Numero", GetType(Integer)) DtPasajeros.Columns.Add("Nombre", GetType(String)) DtPasajeros.Columns.Add("Visa", GetType(String)) DtPasajeros.Columns.Add("Partida", GetType(String)) DtPasajeros.Columns.Add("Destino", GetType(String)) DtPasajeros.Columns.Add("Asiento", GetType(String)) DtPasajeros.Columns.Add("Celular", GetType(String)) DtPasajeros.Columns.Add("Importe", GetType(Decimal)) DtPasajeros.Columns.Add("Observaciones", GetType(String)) InicializaCombos() 'Boletos Vendidos Dim dt As DataTable If ObjViaje.GetViajesPasajeros(CveViaje, Estatus:=1) Then 'Poner párametro para estatus y cancelado de viajes dt = ObjViaje.DtResultados Dim cph As ContentPlaceHolder = CType(Me.Master.FindControl("C"), ContentPlaceHolder) For Each dr As DataRow In dt.Rows Dim lnk As LinkButton = CType(cph.FindControl($"A{dr("Asiento")}"), LinkButton) If lnk IsNot Nothing Then lnk.Enabled = False lnk.CssClass = "nodisponible" lnk.ToolTip = dr("Nombre").ToString End If Next End If End If Else ObjContratos.Dispose() ObjViaje.Dispose() Response.Redirect($"~/Transportes/RepContratos.aspx") End If ObjContratos.Dispose() ObjViaje.Dispose() 'Boletos Vendidos End Sub Protected Sub InicializaCombos() Dim CveRuta As Integer = Contrato.Rows(0)("CveRuta").ToString.ToEntero 'Lista Destinos''carga específicos Dim ObjDestinos As New ClsTransportes() If ObjDestinos.GetDestinos(CveRuta:=CveRuta) Then If ObjDestinos.DtResultados.Rows.Count > 0 Then DdlPartida.DataSource = ObjDestinos.DtResultados DdlPartida.DataBind() DdlPartida.Items.Insert(0, New ListItem("Seleccione Partida", "-1")) DdlDestino.DataSource = ObjDestinos.DtResultados DdlDestino.DataBind() DdlDestino.Items.Insert(0, New ListItem("Seleccione Destino", "-1")) End If End If ObjDestinos.Dispose() End Sub Protected Sub CotizarTarifa() If DdlDestino.SelectedValue <> "-1" And DdlPartida.SelectedValue <> "-1" Then Dim ImporteR As Decimal = 0 Dim ObjDestinos As New ClsTransportes() Try If ObjDestinos.GetDestinosTarifas(DdlPartida.SelectedValue.ToEntero, DdlDestino.SelectedValue.ToEntero) Then ImporteR = ObjDestinos.DtResultados.FiltroPrimeroValor("Importe").ToDecimal.RoundSQL End If If ImporteR > 0 Then ViewState("Importe") = ImporteR LbCostos.Text = $"El precio de su boleto es ${ImporteR.FormatoNumero}" LbCostos.Visible = True BtnAgregarPasajero.Visible = True Else ViewState("Importe") = 0 BtnAgregarPasajero.Visible = False LbCostos.Visible = False Alert("No se encontro una tarifa para esta ruta", TipoMensaje.MsgAdvertencia) End If Catch ex As Exception Alert("No se encontro una tarifa para esta ruta", TipoMensaje.MsgAdvertencia) ObjDestinos.RollBack() Finally ObjDestinos.Dispose() End Try End If End Sub Protected Sub OnLinkButtonClick(sender As Object, e As EventArgs) 'quitamos la selección anterior, en caso de existir. If AsientoSeleccionado <> "" Then Dim cph As ContentPlaceHolder = CType(Me.Master.FindControl("C"), ContentPlaceHolder) Dim lnk As LinkButton = CType(cph.FindControl(AsientoSeleccionado), LinkButton) lnk.CssClass = "disponible" End If Dim linkButton As LinkButton = DirectCast(sender, LinkButton) Dim buttonID As String = linkButton.ID linkButton.CssClass += " activo" AsientoSeleccionado = buttonID UpPanel.Update() End Sub 'Protected Sub FinalizarVenta(sender As Object, e As EventArgs) ' Dim SbAlert As New StringBuilder() ' Dim Retorno As New Modelos.Factura.MMensajeFactura() ' Dim ObjTransporte As New ClsTransportes() ' ObjTransporte.IniciaTransacSQL() ' Dim TieneError As Boolean = False ' Try ' For Each dr As DataRow In DtPasajeros.Rows 'gvr As GridViewRow In GvB.Rows ' Dim Nombre, Visa, Celular, Obs, Asiento As String ' Dim Sexo As Boolean = False ' Dim Importe As Decimal = 0 ' Nombre = dr("Nombre").ToString ' Visa = dr("Visa").ToString ' Celular = dr("Celular").ToString ' Obs = dr("Observaciones").ToString ' Asiento = dr("Asiento").ToString ' Importe = dr("Importe").ToString.ToDecimal ' '.Text, TxtVisa.Text, TxtCelular.Text, CBool(RblSexo.SelectedValue), TxtObservaciones.Text ' If Not ObjTransporte.AddViajesPasajeros(CveViaje, DdlPartida.SelectedValue.ToEntero, DdlDestino.SelectedValue.ToEntero, Importe, Asiento.ToEntero, Nombre, Visa, Celular, Sexo, Obs, UsuarioActual.CveUsuario, UsuarioActual.CveVendedor) > 1 Then ' TieneError = True ' SbAlert.Append("Ocurrió un error al generar el viaje") ' End If ' Next ' If Not TieneError Then ' Retorno = CrearRemision(ObjTransporte) ' End If ' If Retorno IsNot Nothing Then ' TieneError = Retorno.TieneError ' If Not TieneError Then ' If Retorno.CveVenta > 0 AndAlso Not Retorno.TieneError Then ' SbAlert.AppendFormat("{0}", Retorno.Mensajes(Retorno.Mensajes.Count - 1)) ' Else ' TieneError = True ' SbAlert.Append("Ocurrió un error al generar la factura") ' End If ' If Retorno.Mensajes IsNot Nothing AndAlso Retorno.Mensajes.Count > 0 Then ' For Each Mensaje As String In Retorno.Mensajes ' SbAlert.AppendFormat("{0}
", Mensaje) ' Next ' Else ' TieneError = True ' End If ' End If ' Else ' TieneError = True ' SbAlert.Append("Ocurrió un error al generar la factura") ' End If ' If SbAlert.Length = 0 Then ' SbAlert.Append("Ocurrió un error al generar la factura") ' End If ' Catch ex As Exception ' TieneError = True ' SbAlert.Append("Ocurrió un error al generar la factura." + ex.ToString()) ' GuardaLog(ex.ToString()) ' Finally ' If TieneError Then ' ObjTransporte.RollBack() ' ObjTransporte.Dispose() ' Else ' SbAlert.Append("El boleto se genero correctamente") ' ObjTransporte.Commit() ' ObjTransporte.Dispose() ' DdlPartida.SelectedValueExist("-1") ' DdlDestino.SelectedValueExist("-1") ' AsientoSeleccionado = "" ' CargaDatos() ' End If ' Alert(SbAlert.ToString(), If(TieneError, TipoMensaje.MsgError, TipoMensaje.MsgInformacion), ShowCloseButton:=False) ' UpPanel.Update() ' End Try 'End Sub Protected Sub DdlPartida_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlPartida.SelectedIndexChanged CotizarTarifa() End Sub Protected Sub DdlDestino_SelectedIndexChanged(sender As Object, e As EventArgs) Handles DdlDestino.SelectedIndexChanged CotizarTarifa() End Sub Protected Sub BtnNumPasajeros_Click(sender As Object, e As EventArgs) ' GeneraPasajeros(TxtNumPasajeros.Text.ToEntero) End Sub Private Sub GeneraPasajeros(Cantidad As Integer) DtPasajeros.Clear() For i As Integer = 1 To Cantidad Dim Dr1 As DataRow = DtPasajeros.NewRow Dr1("Numero") = i 'asiento DtPasajeros.Rows.Add(Dr1) Next GvB.DataSource = DtPasajeros GvB.DataBind() End Sub Protected Sub AgregarPasajero(sender As Object, e As EventArgs) If AsientoSeleccionado = "" Then Alert("No se ha seleccionado el asiento.") Exit Sub End If If Me.Importe <= 0 Then Alert("No hay un importe asignado.") Exit Sub End If Dim Dr1 As DataRow = DtPasajeros.NewRow Dr1("Asiento") = AsientoSeleccionado.Replace("A", "") Dr1("Nombre") = TxtNombre.Text.Trim Dr1("Visa") = TxtVisa.Text.Trim Dr1("Importe") = Me.Importe Dr1("Partida") = DdlPartida.SelectedTextExist Dr1("Destino") = DdlPartida.Text 'asiento DtPasajeros.Rows.Add(Dr1) AsientoSeleccionado = "" GvB.DataSource = DtPasajeros GvB.DataBind() 'identifico los asientos seleccionados para la venta Dim cph As ContentPlaceHolder = CType(Me.Master.FindControl("C"), ContentPlaceHolder) For Each dr As DataRow In DtPasajeros.Rows Dim lnk As LinkButton = CType(cph.FindControl($"A{dr("Asiento")}"), LinkButton) If lnk IsNot Nothing Then lnk.Enabled = False lnk.CssClass = "seleccionado" lnk.ToolTip = dr("Nombre").ToString End If Next UpPanel.Update() End Sub 'Private Function CrearRemision(ByRef objTrans As ClsTransportes) As Modelos.Factura.MMensajeFactura ' Dim Retorno As Modelos.Factura.MMensajeFactura = Nothing ' Dim CveCliente As Integer = 1154164 ' Dim CveMoneda As Integer = 2 ' Dim CveSubProyecto As Integer = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto").ToEntero() ' If CveCliente <= 0 Then ' Retorno.Mensajes.Add("No se pudo cargar el cliente") ' Return Retorno ' End If ' If CveSubProyecto <= 0 Then ' Retorno.Mensajes.Add("No se pudo cargar el subproyecto") ' Return Retorno ' End If ' Dim ObjFactura = Modelos.Factura.CrearVentaNueva(UsuarioActual, CveSubProyecto, CveCliente, CveMoneda, "Rem") ' Dim CvePSBoleto As Integer = 912720 ' For Each Dr As DataRow In DtPasajeros.Rows ' Dim Obs = Dr("Nombre").ToString ' Dim Importe = Dr("Importe").ToString.ToDecimal() ' If Importe <= 0 Then ' Retorno.Mensajes.Add("El importe debe ser mayor a 0") ' Return Retorno ' End If ' ObjFactura.AgregarPS(CvePSBoleto, 1, Importe, 0, Obs, CveSubProyecto:=CveSubProyecto, PorcentajeIVA:=0) ' Next ' ObjFactura.CalculaTotales() ' Try ' Retorno = ObjFactura.EmitirFactura(False, Transac:=objTrans.IniciaTransacSQL()) ' Catch ex As Exception ' Retorno = Nothing ' GuardaLog(ex.ToString()) ' End Try ' If ObjFactura IsNot Nothing Then ' ObjFactura.Dispose() ' End If ' Return Retorno 'End Function End Class