Merge branch 'master' of http://agonzalez@192.168.10.111:8383/SIG.git
This commit is contained in:
@@ -191,7 +191,7 @@ Public Class ClsCompras
|
|||||||
AplicaNotaCredito As Boolean, Observaciones As String, CveEstatusCompra As Integer, CvePrePoliza As Integer, CveUsuario As Integer, CveEmpresa As Integer, Optional IdPoliza As Integer = -1,
|
AplicaNotaCredito As Boolean, Observaciones As String, CveEstatusCompra As Integer, CvePrePoliza As Integer, CveUsuario As Integer, CveEmpresa As Integer, Optional IdPoliza As Integer = -1,
|
||||||
Optional CveOC As Integer = -1, Optional CveCajaChica As Integer = -1, Optional CvePersonal As Integer = -1, Optional NumeroReembolso As String = "-1", Optional CveProveedorSucursal As Integer = -1,
|
Optional CveOC As Integer = -1, Optional CveCajaChica As Integer = -1, Optional CvePersonal As Integer = -1, Optional NumeroReembolso As String = "-1", Optional CveProveedorSucursal As Integer = -1,
|
||||||
Optional AplicoPromocion As Boolean = False, Optional PorcentajeIVA As Double = 0, Optional CveMetodoPago As Integer = -1, Optional CveRetIVAConcepto As Integer = -1, Optional CveConceptoContableAlmacen As Integer = -1,
|
Optional AplicoPromocion As Boolean = False, Optional PorcentajeIVA As Double = 0, Optional CveMetodoPago As Integer = -1, Optional CveRetIVAConcepto As Integer = -1, Optional CveConceptoContableAlmacen As Integer = -1,
|
||||||
Optional CveRetISRConcepto As Integer = -1, Optional NoDeducible As Boolean = False, Optional CveTipoCompra As Integer = -1) As Boolean
|
Optional CveRetISRConcepto As Integer = -1, Optional NoDeducible As Boolean = False, Optional CveTipoCompra As Integer = -1, Optional TotalOriginal As Double = 0) As Boolean
|
||||||
|
|
||||||
Dim Retorno As Boolean = False
|
Dim Retorno As Boolean = False
|
||||||
|
|
||||||
@@ -239,6 +239,8 @@ Public Class ClsCompras
|
|||||||
.Add("@CveRetISRConcepto", SqlDbType.Int).Value = CveRetISRConcepto
|
.Add("@CveRetISRConcepto", SqlDbType.Int).Value = CveRetISRConcepto
|
||||||
.Add("@NoDeducible", SqlDbType.Bit).Value = NoDeducible
|
.Add("@NoDeducible", SqlDbType.Bit).Value = NoDeducible
|
||||||
.Add("@CveTipoCompra", SqlDbType.Int).Value = CveTipoCompra
|
.Add("@CveTipoCompra", SqlDbType.Int).Value = CveTipoCompra
|
||||||
|
.Add("@TotalOriginal", SqlDbType.Money).Value = TotalOriginal
|
||||||
|
|
||||||
End With
|
End With
|
||||||
|
|
||||||
Try
|
Try
|
||||||
|
|||||||
@@ -907,6 +907,10 @@
|
|||||||
<td runat="server" id="tdT5" visible="false">
|
<td runat="server" id="tdT5" visible="false">
|
||||||
<asp:Label Text="" ID="LbIVAOriginal" runat="server" />
|
<asp:Label Text="" ID="LbIVAOriginal" runat="server" />
|
||||||
</td>
|
</td>
|
||||||
|
<td runat="server" id="tdIVA6" visible="false">
|
||||||
|
<asp:LinkButton runat="server" ID="LnkActivaIva6" Text="" ToolTip="Ret IVA Servicios" OnClick="LnkActivaIva6_Click"><i class="fa fa-usd" aria-hidden="true"></i></asp:LinkButton>
|
||||||
|
</td>
|
||||||
|
|
||||||
<%--<td align="left" runat="server" id="TdIVA" visible="false">
|
<%--<td align="left" runat="server" id="TdIVA" visible="false">
|
||||||
<asp:DropDownList ID="DdlIVA" AutoPostBack="true" OnSelectedIndexChanged="DdlIVA_SelectedIndexChanged" CssClass="select2me" Style="width: 100%; display: inline-block;" runat="server" Visible="false">
|
<asp:DropDownList ID="DdlIVA" AutoPostBack="true" OnSelectedIndexChanged="DdlIVA_SelectedIndexChanged" CssClass="select2me" Style="width: 100%; display: inline-block;" runat="server" Visible="false">
|
||||||
<asp:ListItem Selected="True" Value="1.08">8%</asp:ListItem>
|
<asp:ListItem Selected="True" Value="1.08">8%</asp:ListItem>
|
||||||
@@ -914,6 +918,7 @@
|
|||||||
<asp:ListItem Value="1">0%</asp:ListItem>
|
<asp:ListItem Value="1">0%</asp:ListItem>
|
||||||
</asp:DropDownList>
|
</asp:DropDownList>
|
||||||
</td>--%>
|
</td>--%>
|
||||||
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr align="right" id="TrRetIVA" runat="server" visible="False">
|
<tr align="right" id="TrRetIVA" runat="server" visible="False">
|
||||||
<td><b>Ret. IVA:</b></td>
|
<td><b>Ret. IVA:</b></td>
|
||||||
|
|||||||
@@ -869,6 +869,9 @@ Partial Class Compras_Compras
|
|||||||
Private Property Fecha As String
|
Private Property Fecha As String
|
||||||
Private Property SubTotal As Decimal
|
Private Property SubTotal As Decimal
|
||||||
Private Property Total As Decimal = 0
|
Private Property Total As Decimal = 0
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Private Property Descuentos As Decimal = 0
|
Private Property Descuentos As Decimal = 0
|
||||||
Private Property EmisorRFC As String
|
Private Property EmisorRFC As String
|
||||||
Private Property ReceptorRFC As String
|
Private Property ReceptorRFC As String
|
||||||
@@ -1047,14 +1050,20 @@ Partial Class Compras_Compras
|
|||||||
ViewState("RetISROriginal") = value
|
ViewState("RetISROriginal") = value
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Private Property TotalOriginal As Double
|
Private Property TotalOriginal As Double
|
||||||
Get
|
Get
|
||||||
Return ViewState("TotalOriginal").ToString.ToDouble
|
If ViewState("TotalOriginal") Is Nothing Then
|
||||||
|
Return 0
|
||||||
|
Else
|
||||||
|
Return ViewState("TotalOriginal").ToString.ToDouble
|
||||||
|
End If
|
||||||
End Get
|
End Get
|
||||||
Set(value As Double)
|
Set(value As Double)
|
||||||
ViewState("TotalOriginal") = value
|
ViewState("TotalOriginal") = value
|
||||||
End Set
|
End Set
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
Private Property ActualizaTotales As Boolean
|
Private Property ActualizaTotales As Boolean
|
||||||
Get
|
Get
|
||||||
Return CBool(ViewState("ActualizaTotales"))
|
Return CBool(ViewState("ActualizaTotales"))
|
||||||
@@ -2052,19 +2061,37 @@ Partial Class Compras_Compras
|
|||||||
End Function
|
End Function
|
||||||
|
|
||||||
Private Sub CargaRetIVAConcepto(Optional Cambio As Boolean = False)
|
Private Sub CargaRetIVAConcepto(Optional Cambio As Boolean = False)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
If TrRetIVA.Visible Then
|
If TrRetIVA.Visible Then
|
||||||
TdRetIVAConcepto.Visible = True
|
TdRetIVAConcepto.Visible = True
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
If Cambio Then
|
If Cambio Then
|
||||||
DdlRetIVAConcepto.Items.Clear()
|
DdlRetIVAConcepto.Items.Clear()
|
||||||
|
|
||||||
If RFCProv.Length = 13 Then
|
If RFCProv.Length = 13 Then
|
||||||
DdlRetIVAConcepto.Items.Insert(0, New ListItem("Honorarios/Serv. Prof.", "1"))
|
DdlRetIVAConcepto.Items.Insert(0, New ListItem("Honorarios/Serv. Prof.", "1"))
|
||||||
DdlRetIVAConcepto.Items.Insert(1, New ListItem("Fletes P.F.", "2"))
|
DdlRetIVAConcepto.Items.Insert(1, New ListItem("Fletes P.F.", "2"))
|
||||||
ElseIf RFCProv.Length = 12 Then
|
ElseIf RFCProv.Length = 12 Then
|
||||||
DdlRetIVAConcepto.Items.Insert(0, New ListItem("Fletes P.M.", "3"))
|
DdlRetIVAConcepto.Items.Insert(0, New ListItem("Fletes P.M.", "3"))
|
||||||
End If
|
End If
|
||||||
|
|
||||||
DdlRetIVAConcepto.Items.Add(New ListItem("Arrendamiento", "4"))
|
DdlRetIVAConcepto.Items.Add(New ListItem("Arrendamiento", "4"))
|
||||||
|
DdlRetIVAConcepto.Items.Add(New ListItem("Ret IVA Servicios", "5"))
|
||||||
|
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
UpPS.Update()
|
UpPS.Update()
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
@@ -2157,6 +2184,10 @@ Partial Class Compras_Compras
|
|||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
Dim MostrarRetIva6 As Boolean = False
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
TxtSubTotal.Text = SubtotalTemp.FormatoNumero
|
TxtSubTotal.Text = SubtotalTemp.FormatoNumero
|
||||||
@@ -2204,6 +2235,25 @@ Partial Class Compras_Compras
|
|||||||
'ASIGNA VALORES ORIGINALES PARA GUARDAR
|
'ASIGNA VALORES ORIGINALES PARA GUARDAR
|
||||||
AsignaValoresOriginales(SubtotalTemp, Subtotal2Temp, IVATemp, RetIVATemp, RetISRTemp, Total)
|
AsignaValoresOriginales(SubtotalTemp, Subtotal2Temp, IVATemp, RetIVATemp, RetISRTemp, Total)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
If RetencionIVA = 0 And IVAOriginal > 0 Then
|
||||||
|
|
||||||
|
For Each dRow As DataRow In TmpDT.Rows
|
||||||
|
|
||||||
|
If dRow("CveTipoPS").ToString.ToEntero = 1 Then
|
||||||
|
tdIVA6.Visible = True
|
||||||
|
Exit For
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
Next
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
''' <summary>
|
''' <summary>
|
||||||
@@ -4347,7 +4397,7 @@ Partial Class Compras_Compras
|
|||||||
TxtRedondeo.Text.ToDouble, TxtTotal.Text.ToDouble, TxtFecha.Text.Trim.ToDate, DdlMoneda.SelectedValue.ToEntero, TipoCambio, TxtFechaPago.Text.Trim.ToDate, ChkAplicaNotaCredito.Checked, TxtObsFact.Text.Trim, CveEstatusFactura,
|
TxtRedondeo.Text.ToDouble, TxtTotal.Text.ToDouble, TxtFecha.Text.Trim.ToDate, DdlMoneda.SelectedValue.ToEntero, TipoCambio, TxtFechaPago.Text.Trim.ToDate, ChkAplicaNotaCredito.Checked, TxtObsFact.Text.Trim, CveEstatusFactura,
|
||||||
CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, IdPoliza, CveCajaChica:=CveCajaChica, CvePersonal:=CvePersonal, NumeroReembolso:=NumeroReembolso, CveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero,
|
CvePrePoliza, UsuarioActual.CveUsuario, UsuarioActual.CveEmpresa, IdPoliza, CveCajaChica:=CveCajaChica, CvePersonal:=CvePersonal, NumeroReembolso:=NumeroReembolso, CveProveedorSucursal:=DdlProveedorSucursal.SelectedValue.ToEntero,
|
||||||
AplicoPromocion:=ChkOCPromocion.Checked, PorcentajeIVA:=PorcentajeIVA, CveMetodoPago:=CveMetodoPago, CveRetIVAConcepto:=If(DdlRetIVAConcepto.Items.Count > 0, DdlRetIVAConcepto.SelectedValue.ToEntero, -1), CveConceptoContableAlmacen:=CveConceptoContableAlmacen,
|
AplicoPromocion:=ChkOCPromocion.Checked, PorcentajeIVA:=PorcentajeIVA, CveMetodoPago:=CveMetodoPago, CveRetIVAConcepto:=If(DdlRetIVAConcepto.Items.Count > 0, DdlRetIVAConcepto.SelectedValue.ToEntero, -1), CveConceptoContableAlmacen:=CveConceptoContableAlmacen,
|
||||||
CveRetISRConcepto:=If(DdlRetISRConcepto.Items.Count > 0, DdlRetISRConcepto.SelectedValue.ToEntero, -1), NoDeducible:=EsNoDeducible, CveTipoCompra:=DdlTipoCompra.SelectedValue.ToEntero) Then
|
CveRetISRConcepto:=If(DdlRetISRConcepto.Items.Count > 0, DdlRetISRConcepto.SelectedValue.ToEntero, -1), NoDeducible:=EsNoDeducible, CveTipoCompra:=DdlTipoCompra.SelectedValue.ToEntero, TotalOriginal:=TotalOriginal) Then
|
||||||
|
|
||||||
ViewState("CveCompra") = ObjCompras.CveCompra
|
ViewState("CveCompra") = ObjCompras.CveCompra
|
||||||
If ObjCompras.DtResultados.Rows.Count > 0 Then ViewState("CompraFolio") = ObjCompras.DtResultados.Rows(0)("vFolio").ToString
|
If ObjCompras.DtResultados.Rows.Count > 0 Then ViewState("CompraFolio") = ObjCompras.DtResultados.Rows(0)("vFolio").ToString
|
||||||
@@ -6087,6 +6137,7 @@ Partial Class Compras_Compras
|
|||||||
End If
|
End If
|
||||||
|
|
||||||
Case 65 'Perdida
|
Case 65 'Perdida
|
||||||
|
|
||||||
If TCPago <> 1 AndAlso TxtFechaPago.Text <> TxtFecha.Text Then
|
If TCPago <> 1 AndAlso TxtFechaPago.Text <> TxtFecha.Text Then
|
||||||
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
|
IdCtaContable = UsuarioActual.Empresa.IdCuentaPerdidaCambiaria
|
||||||
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
|
CveCuenta = UsuarioActual.Empresa.CveCuentaPerdidaCambiaria
|
||||||
@@ -6100,6 +6151,35 @@ Partial Class Compras_Compras
|
|||||||
Else
|
Else
|
||||||
importeMovimiento = 0
|
importeMovimiento = 0
|
||||||
End If
|
End If
|
||||||
|
Case 285 'Perdida
|
||||||
|
|
||||||
|
|
||||||
|
If ObjConta.GetRetCuenta(ConceptoContable, UsuarioActual.CveEmpresa) And Not IdCtaContable > 0 Then
|
||||||
|
If ObjConta.DtResultados.Rows.Count > 0 Then
|
||||||
|
IdCtaContable = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacion").ToString.ToEntero
|
||||||
|
CveCuenta = ObjConta.DtResultados.Rows(0)("IdCuentaRetIVACirculacionSIG").ToString.ToEntero
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
If DdlRetIVAConcepto.SelectedValue.ToEntero = 5 Then
|
||||||
|
|
||||||
|
If CveMoneda = 2 Then
|
||||||
|
importeMN = TmpDT.SUMD("RetIVA") * TxtTC.Text.ToDecimal
|
||||||
|
Else
|
||||||
|
importeMN = TmpDT.SUMD("RetIVA")
|
||||||
|
importeMovimiento = TmpDT.SUMD("RetIVA")
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
Else
|
||||||
|
importeMovimiento = 0
|
||||||
|
End If
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Case 6 'Compra
|
Case 6 'Compra
|
||||||
|
|
||||||
@@ -16290,6 +16370,10 @@ Partial Class Compras_Compras
|
|||||||
CargaRetIVAConcepto()
|
CargaRetIVAConcepto()
|
||||||
CargaRetISRConcepto()
|
CargaRetISRConcepto()
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
Private Sub OriginalesVisible(Accion As Boolean)
|
Private Sub OriginalesVisible(Accion As Boolean)
|
||||||
tdT0.Visible = Accion
|
tdT0.Visible = Accion
|
||||||
@@ -18893,11 +18977,11 @@ Partial Class Compras_Compras
|
|||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
Retorno = False
|
Retorno = False
|
||||||
Exit For
|
Exit For
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
'2018.11.24 se cambia concepto 177, de cargo a abono negativo., petición MALL
|
'2018.11.24 se cambia concepto 177, de cargo a abono negativo., petición MALL
|
||||||
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), ConceptoPartida, Fecha, If(ConceptoSalida = 0, IdCtaContableAlmacen, IdCtaContableRecepcionOCER), -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle) Then
|
If ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, -DiferenciaInvOC, SerieFolio, If(ConceptoSalida = 0, 177, 177), ConceptoPartida, Fecha, If(ConceptoSalida = 0, IdCtaContableAlmacen, IdCtaContableRecepcionOCER), -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=-DiferenciaInvOC, CveCuenta:=CveCuentaAlmacen, CveOCDetalle:=CveOCDetalle) Then
|
||||||
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, ConceptoPartida, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then
|
If Not ObjConta.AddPrePolizasDetalle(CvePrePoliza, True, DiferenciaInvOC, SerieFolio, 176, ConceptoPartida, Fecha, IdCtaContableRecepcionOC, -1, CveProveedor:=CveProveedor, CveMovimientoAlmacen:=CveMovimientoAlmacen, CveOC:=CveOrdenCompra, ImporteMX:=DiferenciaInvOC, CveOCDetalle:=CveOCDetalle) Then
|
||||||
Retorno = False
|
Retorno = False
|
||||||
Exit For
|
Exit For
|
||||||
@@ -19135,4 +19219,77 @@ Partial Class Compras_Compras
|
|||||||
End Sub
|
End Sub
|
||||||
#End Region
|
#End Region
|
||||||
|
|
||||||
|
Protected Sub LnkActivaIva6_Click(sender As Object, e As EventArgs)
|
||||||
|
|
||||||
|
TrRetIVA.Visible = True
|
||||||
|
TdRetIVAConcepto.Visible = True
|
||||||
|
|
||||||
|
TotalOriginal = TxtTotal.Text.ToDecimal
|
||||||
|
|
||||||
|
'For Each dRow As DataRow In TmpDT.Rows
|
||||||
|
' If dRow("CveTipoPS").ToString.ToEntero = 1 Then
|
||||||
|
' tdIVA6.Visible = True
|
||||||
|
' Exit For
|
||||||
|
' End If
|
||||||
|
'Next
|
||||||
|
|
||||||
|
|
||||||
|
For Each dRow As DataRow In TmpDT.Rows
|
||||||
|
If dRow("CvePS").ToString.ToEntero <= 0 Then
|
||||||
|
Alert("Debe de asignar producto a todas las partidas", TipoMensaje.MsgAdvertencia)
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
If RetencionIVA = 0 And IVAOriginal > 0 Then
|
||||||
|
|
||||||
|
For Each dRow As DataRow In TmpDT.Rows
|
||||||
|
|
||||||
|
If dRow("CveTipoPS").ToString.ToEntero = 1 Then
|
||||||
|
|
||||||
|
|
||||||
|
'Dim InternalIVA As Decimal = 0D
|
||||||
|
Dim InternalRETIVA As Decimal = 0D
|
||||||
|
|
||||||
|
'InternalIVA = dRow("Cantidad").ToString.ToDecimal * dRow("PU").ToString.ToDecimal * 0.1D
|
||||||
|
InternalRETIVA = dRow("Cantidad").ToString.ToDecimal * dRow("PU").ToString.ToDecimal * 0.06D
|
||||||
|
|
||||||
|
'dRow("IVA") = InternalIVA
|
||||||
|
'dRow("IVAPorcentaje") = 0.1D
|
||||||
|
dRow("RetIVA") = InternalRETIVA
|
||||||
|
' dRow("IVAPorcentaje") = 0.1D
|
||||||
|
|
||||||
|
End If
|
||||||
|
|
||||||
|
Next
|
||||||
|
End If
|
||||||
|
|
||||||
|
TmpDT.AcceptChanges()
|
||||||
|
|
||||||
|
GvPS.DataSource = TmpDT
|
||||||
|
GvPS.DataBind()
|
||||||
|
|
||||||
|
DdlRetIVAConcepto.SelectedValueExist("5")
|
||||||
|
|
||||||
|
LblRetIVA.Text = "0.06%"
|
||||||
|
|
||||||
|
RetencionIVA = TmpDT.SUMD("RetIVA")
|
||||||
|
TxtRetIVA.Text = RetencionIVA.ToString("###,###,###.00")
|
||||||
|
|
||||||
|
'TrasladoIVA = TmpDT.SUMD("IVA")
|
||||||
|
'TxtIVA.Text = TrasladoIVA.ToString("###,###,###.00")
|
||||||
|
|
||||||
|
|
||||||
|
'Total = Total - RetencionIVA
|
||||||
|
|
||||||
|
TxtTotal.Text = (TxtTotal.Text.ToDecimal - RetencionIVA).ToString("###,###,###.00")
|
||||||
|
|
||||||
|
UpPS.Update()
|
||||||
|
|
||||||
|
|
||||||
|
'ValidacionesTotalesXml()
|
||||||
|
ValidaTotalesGuardar()
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
End Class
|
End Class
|
||||||
Reference in New Issue
Block a user