--
This commit is contained in:
@@ -79,11 +79,13 @@ Partial Class Boletos
|
||||
Dim ObjViaje As New ClsTransportes
|
||||
|
||||
If ObjContratos.GetContratos(CveViaje, UsuarioActual.CveEmpresa) Then
|
||||
Contrato = ObjContratos.DtResultados
|
||||
Contrato = ObjContratos.DtResultados.Copy()
|
||||
|
||||
If ObjContratos.DtResultados IsNot Nothing AndAlso ObjContratos.DtResultados.Rows.Count > 0 Then
|
||||
TxtRuta.Text = Contrato.Rows(0)("SubProyecto").ToString
|
||||
TxtFecha.Text = Contrato.Rows(0)("FechaInicial").ToString.ToDate.ToShortDateString
|
||||
DtPasajeros = New DataTable
|
||||
DtPasajeros.Columns.Add("CveViajePasajero", GetType(Integer))
|
||||
DtPasajeros.Columns.Add("Numero", GetType(Integer))
|
||||
DtPasajeros.Columns.Add("Nombre", GetType(String))
|
||||
DtPasajeros.Columns.Add("Visa", GetType(String))
|
||||
@@ -115,6 +117,9 @@ Partial Class Boletos
|
||||
End If
|
||||
End If
|
||||
|
||||
ObjContratos.Dispose()
|
||||
ObjViaje.Dispose()
|
||||
|
||||
Else
|
||||
ObjContratos.Dispose()
|
||||
ObjViaje.Dispose()
|
||||
@@ -122,8 +127,6 @@ Partial Class Boletos
|
||||
Response.Redirect($"~/Transportes/RepContratos.aspx")
|
||||
End If
|
||||
|
||||
ObjContratos.Dispose()
|
||||
ObjViaje.Dispose()
|
||||
|
||||
'Boletos Vendidos
|
||||
|
||||
@@ -176,8 +179,6 @@ Partial Class Boletos
|
||||
LbCostos.Text = $"El precio de su boleto es ${ImporteR.FormatoNumero}"
|
||||
LbCostos.Visible = True
|
||||
BtnAgregarPasajero.Visible = True
|
||||
LbAviso.Visible = True
|
||||
|
||||
Else
|
||||
ViewState("Importe") = 0
|
||||
BtnAgregarPasajero.Visible = False
|
||||
@@ -233,11 +234,17 @@ Partial Class Boletos
|
||||
Sexo = dr("CveSexo").ToString.ToBool
|
||||
Obs = dr("Observaciones").ToString
|
||||
|
||||
If ObjTransporte.AddViajesPasajeros(CveViaje, CveDestinoOrigen, CveDestinoFinal, Importe, Asiento.ToEntero, Nombre, Visa, Celular, Sexo, Obs, UsuarioActual.CveUsuario, UsuarioActual.CveVendedor) > 1 Then
|
||||
ObjTransporte.Commit()
|
||||
Dim CveViajePasajero = ObjTransporte.AddViajesPasajeros(CveViaje, CveDestinoOrigen, CveDestinoFinal, Importe, Asiento.ToEntero, Nombre, Visa, Celular, Sexo, Obs, UsuarioActual.CveUsuario, UsuarioActual.CveVendedor)
|
||||
|
||||
If CveViajePasajero < 1 Then
|
||||
TieneError = True
|
||||
SbAlert.Append("Ocurrió un error al generar el viaje")
|
||||
Exit For
|
||||
End If
|
||||
|
||||
dr("CveViajePasajero") = CveViajePasajero
|
||||
Next
|
||||
DtPasajeros.Clear()
|
||||
|
||||
|
||||
If Not TieneError Then
|
||||
Retorno = CrearRemision(ObjTransporte)
|
||||
@@ -247,8 +254,11 @@ Partial Class Boletos
|
||||
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))
|
||||
|
||||
If Not Retorno.TieneError Then
|
||||
If Retorno.CveVenta <= 0 Then
|
||||
Retorno.TieneError = True
|
||||
End If
|
||||
Else
|
||||
TieneError = True
|
||||
SbAlert.Append("Ocurrió un error al generar la factura")
|
||||
@@ -261,6 +271,12 @@ Partial Class Boletos
|
||||
Else
|
||||
TieneError = True
|
||||
End If
|
||||
Else
|
||||
If Retorno.Mensajes IsNot Nothing AndAlso Retorno.Mensajes.Count > 0 Then
|
||||
For Each Mensaje As String In Retorno.Mensajes
|
||||
SbAlert.AppendFormat("{0} <br/>", Mensaje)
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
TieneError = True
|
||||
@@ -280,18 +296,28 @@ Partial Class Boletos
|
||||
ObjTransporte.RollBack()
|
||||
ObjTransporte.Dispose()
|
||||
Else
|
||||
SbAlert.Append("El boleto se genero correctamente")
|
||||
ObjTransporte.Commit()
|
||||
ObjTransporte.Dispose()
|
||||
|
||||
DdlPartida.SelectedValueExist("-1")
|
||||
DdlDestino.SelectedValueExist("-1")
|
||||
SbAlert.Append("El boleto se genero correctamente.")
|
||||
|
||||
DtPasajeros.Clear()
|
||||
GvB.DataSource = DtPasajeros
|
||||
GvB.DataBind()
|
||||
|
||||
DdlPartida.SelectedIndex = -1
|
||||
'DdlPartida.SelectedValueExist("-1")
|
||||
|
||||
DdlDestino.SelectedIndex = -1
|
||||
'DdlDestino.SelectedValueExist("-1")
|
||||
|
||||
AsientoSeleccionado = ""
|
||||
CargaDatos()
|
||||
End If
|
||||
|
||||
Alert(SbAlert.ToString(), If(TieneError, TipoMensaje.MsgError, TipoMensaje.MsgInformacion), ShowCloseButton:=False)
|
||||
|
||||
End Try
|
||||
|
||||
UpPanel.Update()
|
||||
|
||||
End Sub
|
||||
@@ -368,48 +394,89 @@ Partial Class Boletos
|
||||
End Sub
|
||||
|
||||
Private Function CrearRemision(ByRef objTrans As ClsTransportes) As Modelos.Factura.MMensajeFactura
|
||||
Dim Retorno As Modelos.Factura.MMensajeFactura = Nothing
|
||||
Dim Retorno As New Modelos.Factura.MMensajeFactura
|
||||
|
||||
Dim CveCliente As Integer = 1154164
|
||||
Dim CveMoneda As Integer = 2
|
||||
Dim CveSubProyecto As Integer = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa).FiltroPrimeroValor("CveSubProyecto").ToEntero()
|
||||
Dim CveSubProyecto As Integer = -1
|
||||
|
||||
Dim CvePSBoleto As Integer = 912720
|
||||
|
||||
If EsProduccion Then
|
||||
CvePSBoleto = 986337
|
||||
CveCliente = 1172306
|
||||
End If
|
||||
|
||||
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, -1, CveCliente, CveMoneda, "Rem")
|
||||
|
||||
Dim ObjFactura = Modelos.Factura.CrearVentaNueva(UsuarioActual, CveSubProyecto, CveCliente, CveMoneda, "Rem")
|
||||
If ObjFactura IsNot Nothing Then
|
||||
'TOMA EL SUBPROYECTO DEL CLIENTE
|
||||
CveSubProyecto = ObjFactura.Cliente.CveSubProyecto
|
||||
|
||||
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")
|
||||
If CveSubProyecto <= 0 Then
|
||||
Retorno.Mensajes.Add("No se pudo cargar el subproyecto")
|
||||
Return Retorno
|
||||
End If
|
||||
|
||||
ObjFactura.AgregarPS(CvePSBoleto, 1, Importe, 0, Obs, CveSubProyecto:=CveSubProyecto, PorcentajeIVA:=0)
|
||||
Next
|
||||
ObjFactura.CveSubProyecto = CveSubProyecto
|
||||
ObjFactura.CveSubProyectoCobranza = CveSubProyecto
|
||||
ObjFactura.CveSubProyectoEjecucion = CveSubProyecto
|
||||
ObjFactura.SetSubProyecto()
|
||||
ObjFactura.SetSubProyectoMatriz()
|
||||
|
||||
ObjFactura.CalculaTotales()
|
||||
For Each Dr As DataRow In DtPasajeros.Rows
|
||||
Dim Obs = Dr("Observaciones").ToString
|
||||
Dim Importe = Dr("Importe").ToString.ToDecimal()
|
||||
|
||||
Try
|
||||
Retorno = ObjFactura.EmitirFactura(False, Transac:=objTrans.IniciaTransacSQL())
|
||||
Catch ex As Exception
|
||||
Retorno = Nothing
|
||||
GuardaLog(ex.ToString())
|
||||
End Try
|
||||
If Importe <= 0 Then
|
||||
Retorno.Mensajes.Add("El importe debe ser mayor a 0")
|
||||
Return Retorno
|
||||
End If
|
||||
|
||||
If ObjFactura IsNot Nothing Then
|
||||
ObjFactura.Dispose()
|
||||
Dim PorcentajeIVA As Decimal = 0
|
||||
|
||||
Dim DrPS As DataRow = ClsPaginas.GlobalDTPS(UsuarioActual.CveEmpresa, CvePS:=CvePSBoleto).FiltroPrimero("") ' Estado = -1
|
||||
|
||||
If DrPS Is Nothing Then
|
||||
Retorno.Mensajes.Add("No se pudo agregar el producto")
|
||||
Return Retorno
|
||||
End If
|
||||
|
||||
If DrPS("IVA").ToString().Contiene("-1", "") Then
|
||||
PorcentajeIVA = ObjFactura.SubProyecto.IVA
|
||||
Else
|
||||
PorcentajeIVA = DrPS("IVA").ToString().ToDecimal()
|
||||
End If
|
||||
|
||||
If PorcentajeIVA > 0 Then
|
||||
Importe = (Importe / (1D + PorcentajeIVA)).RoundSQL(6)
|
||||
End If
|
||||
|
||||
If Not ObjFactura.AgregarPS(CvePSBoleto, 1D, Importe, 0D, Obs, CveSubProyecto:=CveSubProyecto, PorcentajeIVA:=PorcentajeIVA, CveViajePasajero:=Dr("CveViajePasajero").ToString().ToEntero()) Then
|
||||
Retorno.Mensajes.Add("No se pudo agregar el producto")
|
||||
Return Retorno
|
||||
End If
|
||||
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
|
||||
Else
|
||||
Retorno.Mensajes.Add("No se pudo generar la factura")
|
||||
End If
|
||||
|
||||
Return Retorno
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
Option Explicit On
|
||||
Option Strict On
|
||||
|
||||
Imports System.Data
|
||||
Imports ADSNetLibrary.Helpers
|
||||
Imports ADSNetLibrary.SIGAPI.Helpers
|
||||
@@ -32,16 +33,10 @@ Partial Class ListadoBoletos
|
||||
CveViaje = Request.QueryString("CveViaje").ToEntero
|
||||
Ruta = IfNull(Request("Ruta"), "").ToString
|
||||
LblViaje.Text = Ruta
|
||||
|
||||
InicializaCombos()
|
||||
CargaDatos()
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub InicializaCombos()
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub CargaDatos()
|
||||
Dim ObjTransportes As New ClsTransportes
|
||||
If ObjTransportes.GetViajesPasajeros(CveViaje) Then
|
||||
@@ -82,26 +77,68 @@ Partial Class ListadoBoletos
|
||||
|
||||
Protected Sub BtnCancelar_Click(sender As Object, e As EventArgs)
|
||||
Dim GvRow As GridViewRow = DirectCast(DirectCast(sender, LinkButton).NamingContainer, GridViewRow)
|
||||
Dim CveViajePasajero As String = GvRow.DataKey("CveViajePasajero")
|
||||
Dim CveViajePasajero As Integer = GvRow.DataKey("CveViajePasajero").ToEntero()
|
||||
Dim Estatus As String = GvRow.DataKey("Estatus")
|
||||
Dim cambiarEstatus As Boolean = Not Estatus.ToBool
|
||||
Dim ObjTransportes As New ClsTransportes
|
||||
ObjTransportes.IniciaTransacSQL()
|
||||
Try
|
||||
If ObjTransportes.UpdateViajesPasajeros(CveViajePasajero.ToEntero, Activar:=cambiarEstatus, Estatus:=cambiarEstatus) Then
|
||||
If Not cambiarEstatus Then
|
||||
Alert($"El boleto ha sido cancelado correctamente.")
|
||||
Else
|
||||
Alert($"El boleto ha sido reactivado correctamente.")
|
||||
End If
|
||||
End If
|
||||
ObjTransportes.Commit()
|
||||
Catch ex As Exception
|
||||
ObjTransportes.RollBack()
|
||||
Alert($"No se pudo cambiar el estatus del boleto {ex}", TipoMensaje.MsgError)
|
||||
Dim cambiarEstatus As Boolean = Not Estatus.ToBool
|
||||
|
||||
|
||||
Dim TieneError As Boolean = False
|
||||
Try
|
||||
Dim DtRem As DataTable = Nothing
|
||||
|
||||
Dim ObjTran As New ClsTransportes
|
||||
If ObjTran.GetRemisionBoleto(CveViajePasajero.ToEntero, UsuarioActual.CveEmpresa) Then
|
||||
DtRem = ObjTran.DtResultados.Copy()
|
||||
End If
|
||||
ObjTran.Dispose()
|
||||
|
||||
If DtRem IsNot Nothing Then
|
||||
If DtRem.Rows.Count > 0 Then
|
||||
Dim CveVenta As Integer = DtRem.Rows(0)("CveVenta").ToString().ToEntero()
|
||||
Dim BoletosVigentes As Integer = DtRem.Rows(0)("BoletosVigentes").ToString().ToEntero()
|
||||
|
||||
If CveVenta > 0 Then
|
||||
Dim ObjRem As New Modelos.Factura(UsuarioActual, CveVenta, UsuarioActual.CveEmpresa, VerificaAlmacen:=False)
|
||||
|
||||
If ObjRem.DtDetalle.Rows.Count > 0 Then
|
||||
'SI SOLO TIENE UNA PARTIDA CANCELAR LA REMISION
|
||||
If ObjRem.DtDetalle.Rows.Count = 1 OrElse BoletosVigentes <= 1 Then
|
||||
Dim RespCancelacion = ObjRem.CancelarFactura(False, ValidarSAT:=False, CancelarBoletos:=True, ListaRemisionesCancelar:=New List(Of Integer))
|
||||
If RespCancelacion IsNot Nothing Then
|
||||
TieneError = RespCancelacion.HuboError
|
||||
Else
|
||||
TieneError = True
|
||||
End If
|
||||
Else
|
||||
TieneError = Not ObjRem.CancelarBoleto(CveViajePasajero)
|
||||
End If
|
||||
Else
|
||||
TieneError = True
|
||||
End If
|
||||
|
||||
End If
|
||||
Else
|
||||
'SI NO TIENE VENTA, SOLO CANCELAR EL BOLETO
|
||||
Dim ObjTran2 As New ClsTransportes
|
||||
If Not ObjTran2.UpdateViajesPasajeros(CveViajePasajero, Activar:=cambiarEstatus, Estatus:=cambiarEstatus) Then
|
||||
TieneError = True
|
||||
End If
|
||||
ObjTran2.Dispose()
|
||||
End If
|
||||
|
||||
End If
|
||||
Catch ex As Exception
|
||||
TieneError = True
|
||||
GuardaLog(ex.ToString())
|
||||
Finally
|
||||
ObjTransportes.Dispose()
|
||||
If TieneError Then
|
||||
Alert($"Ocurrió un error al cancelar el boleto.", TipoMensaje.MsgError)
|
||||
Else
|
||||
Alert($"El boleto ha sido cancelado correctamente.")
|
||||
End If
|
||||
|
||||
CargaDatos()
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
End Class
|
||||
@@ -16,8 +16,7 @@
|
||||
}
|
||||
|
||||
.miGrid {
|
||||
color: white;
|
||||
text-align: center;
|
||||
color: white;
|
||||
}
|
||||
</style>
|
||||
</asp:Content>
|
||||
@@ -51,9 +50,9 @@
|
||||
<div class="row" style="height: 32px;">
|
||||
<label class="col-md-1">Tipo Vista: </label>
|
||||
<div class="col-md-2">
|
||||
<asp:RadioButtonList ID="RBTipoVista" runat="server" AutoPostBack="True" RepeatDirection="Horizontal">
|
||||
<asp:ListItem Text="Duración" Value="duracion" />
|
||||
<asp:RadioButtonList ID="RBTipoVista" runat="server" AutoPostBack="True" RepeatDirection="Horizontal">
|
||||
<asp:ListItem Text="Fecha de Salida" Value="fecha" Selected="True" />
|
||||
<asp:ListItem Text="Duración" Value="duracion" />
|
||||
</asp:RadioButtonList>
|
||||
|
||||
</div>
|
||||
@@ -163,8 +162,8 @@
|
||||
<%-- Centro de Costos --%>
|
||||
<label class="col-md-1 truncate ">Centro de Costos</label>
|
||||
<div class="col-md-2">
|
||||
<asp:DropDownList ID="DdlCentroCostos" data-text="Todos" AppendDataBoundItems="true"
|
||||
DataTextField="" DataValueField="" CssClass="form-control ddlFiltros input-sm select2me Widthall"
|
||||
<asp:DropDownList ID="DdlSubProyectos" data-text="Todos" AppendDataBoundItems="true"
|
||||
DataTextField="SubProyecto" DataValueField="CveSubProyecto" CssClass="form-control ddlFiltros input-sm select2me Widthall"
|
||||
Style="width: 100%;" runat="server">
|
||||
</asp:DropDownList>
|
||||
</div>
|
||||
@@ -194,7 +193,7 @@
|
||||
<asp:GridView ID="GvContratos" runat="server" AutoGenerateColumns="false" EmptyDataText="No se Encontró Contrato Registrado"
|
||||
CssClass="table table-striped table-hover Widthall ScrollAD mysmallbtn miGrid"
|
||||
GridLines="None"
|
||||
data-sort="true" DataKeyNames="CveContrato, NumeroContrato, DescripcionContrato, Ubicacion, FechaInicial, FechaFinal, CveCliente,NombreComercial, CveTipoAF, Importe, ImporteMin, ImporteMax, Observaciones, CveAF, CveChofer, CveChofer2, CveContratosEstatus, CantidadPasajeros">
|
||||
data-sort="true" DataKeyNames="CveContrato, NumeroContrato, DescripcionContrato, Ubicacion, FechaInicial, FechaFinal, CveCliente, NombreComercial, CveTipoAF, Importe, ImporteMin, ImporteMax, Observaciones, CveAF, CveChofer, CveChofer2, CveContratosEstatus, CantidadPasajeros,CveMoneda">
|
||||
<Columns>
|
||||
<asp:TemplateField HeaderText="Contrato">
|
||||
<ItemTemplate>
|
||||
@@ -203,7 +202,7 @@
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
||||
<asp:TemplateField ItemStyle-HorizontalAlign="Center" ItemStyle-Width="120px">
|
||||
<asp:TemplateField ItemStyle-Width="120px">
|
||||
<HeaderTemplate>
|
||||
Fecha<br />
|
||||
Salida
|
||||
@@ -219,7 +218,7 @@
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
||||
<asp:TemplateField ItemStyle-HorizontalAlign="Center" HeaderText="Cliente">
|
||||
<asp:TemplateField HeaderText="Cliente">
|
||||
<ItemTemplate>
|
||||
<asp:Literal ID="LtNombreComercial" runat="server" Text='<%# Eval("NombreComercial") %>'></asp:Literal>
|
||||
</ItemTemplate>
|
||||
@@ -243,7 +242,7 @@
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
||||
<asp:TemplateField HeaderText="Fecha Final" ItemStyle-HorizontalAlign="Center" ItemStyle-Width="100px">
|
||||
<asp:TemplateField HeaderText="Fecha Final" ItemStyle-Width="100px">
|
||||
<HeaderTemplate>
|
||||
Fecha<br />
|
||||
Regreso
|
||||
@@ -253,7 +252,7 @@
|
||||
</ItemTemplate>
|
||||
</asp:TemplateField>
|
||||
|
||||
<asp:TemplateField HeaderText="Estatus" ItemStyle-CssClass="bold">
|
||||
<asp:TemplateField HeaderText="Estatus" >
|
||||
<ItemTemplate>
|
||||
<asp:Label ID="LtlContrato" runat="server" Text='<%# Eval("ContratoEstatus") %>'>
|
||||
</asp:Label>
|
||||
|
||||
@@ -47,7 +47,7 @@ Partial Class RepContratosCalendario
|
||||
Dim CveCliente As Integer = DdlCliente.SelectedValue.ToEntero
|
||||
If CveCliente = 0 Then CveCliente = -1
|
||||
|
||||
If ObjContratos.GetContratosReporte(UsuarioActual.CveEmpresa, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, DdlCliente.SelectedValue.ToEntero, CveEstatus:=DdlEstatusConsulta.SelectedValue.ToEntero, CveTipoContrato:=34) Then
|
||||
If ObjContratos.GetContratosReporte(UsuarioActual.CveEmpresa, txtFechaI.Text.ToDate, txtFechaF.Text.ToDate, DdlCliente.SelectedValue.ToEntero, CveSubProyecto:=DdlSubProyectos.SelectedValue.ToEntero, CveEstatus:=DdlEstatusConsulta.SelectedValue.ToEntero, CveTipoContrato:=34) Then
|
||||
GvContratos.DataSource = ObjContratos.DtResultados
|
||||
End If
|
||||
DtAvance = ObjContratos.DtResultados
|
||||
@@ -97,9 +97,11 @@ Partial Class RepContratosCalendario
|
||||
|
||||
DdlEstatusContrato.DataSource = GlobalDTContratosEstatus(UsuarioActual.CveEmpresa)
|
||||
DdlEstatusContrato.DataBind()
|
||||
DdlEstatusContrato.Items.Insert(0, New ListItem("-", ""))
|
||||
|
||||
DdlEstatusContrato.Items.Insert(0, New ListItem("Todos", "-1"))
|
||||
|
||||
DdlSubProyectos.DataSource = GlobalDTSubProyectos(-1, CveEmpresa:=UsuarioActual.CveEmpresa)
|
||||
DdlSubProyectos.DataBind()
|
||||
DdlSubProyectos.Items.Insert(0, New ListItem("Todos", "-1"))
|
||||
|
||||
'CargarCentrosDeCosto(Nothing, DdlSubProyectos, Nothing, LblSubProyecto)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user