Merge branch 'newMaster2024' of https://dev.azure.com/VeragAG/_git/SDL into newMaster2024
This commit is contained in:
@@ -8,9 +8,6 @@ Public Class cAutomailversand
|
||||
Try
|
||||
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
|
||||
|
||||
|
||||
|
||||
|
||||
Dim rechnungenMailversand = "SELECT RechnungsNr,RechnungsKundenNr,isnull(tblKundenErweitert.kde_keineMWSt,0) as keineMWST, max(Rechnungsausgang.[RechnungsLandKz]) as RechnungsLandKz, MitgliedslandEU, sum(Rechnungsausgang.SteuerpflichtigerGesamtbetrag) AS Steuer FROM Rechnungsausgang
|
||||
LEFT JOIN tblKundenErweitert on tblKundenErweitert.kde_KundenNr = Rechnungsausgang.RechnungsKundenNr
|
||||
INNER JOIN Währungstabelle on LandKz = Rechnungsausgang.RechnungsLandKz
|
||||
@@ -103,7 +100,6 @@ Public Class cAutomailversand
|
||||
|
||||
End If
|
||||
|
||||
'TODO: nach TEST deaktivieren!
|
||||
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
|
||||
MailTo = ""
|
||||
MailtoCC = ""
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
Imports System.IO
|
||||
Imports System.Reflection
|
||||
Imports System.Windows.Documents
|
||||
Imports com
|
||||
Imports itextsharp.text.pdf
|
||||
Imports itextsharp.text.pdf.parser
|
||||
Imports Microsoft.Office.Interop
|
||||
@@ -72,7 +73,7 @@ Public Class frmMDM_USTVAntrag
|
||||
' left join [tblUStVLeistender] as leist on leist.UStV_Leistender = [tblUStVPositionen].[UStVPo_Leistender]
|
||||
' where UStVAn_ID='" & UStVAn_ID & "' ORDER BY UStVPo_ID", "FMZOLL")
|
||||
|
||||
.SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId]
|
||||
.SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId], [UStVPo_daId_loeschbar]
|
||||
FROM [tblUStVPositionen]
|
||||
LEFT JOIN [tblUStVLeistender] as leist
|
||||
ON ([tblUStVPositionen].[UStVPo_LeistenderId] > 0
|
||||
@@ -152,6 +153,8 @@ Public Class frmMDM_USTVAntrag
|
||||
|
||||
.Columns("UStVPo_daId").Visible = False
|
||||
|
||||
.Columns("UStVPo_daId_loeschbar").Visible = False
|
||||
|
||||
|
||||
Dim c As New DataGridViewImageColumn
|
||||
c.Name = "clmnPDF" : c.HeaderText = "RE"
|
||||
@@ -272,10 +275,9 @@ Public Class frmMDM_USTVAntrag
|
||||
Else
|
||||
Button4.Text = "Sped.-Buch eintragen"
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
If posIndex > 0 Then
|
||||
If posIndex > 0 Then
|
||||
posIndex = posIndex - 1
|
||||
If posIndex > 0 And dgvUSTVPositionen.Rows.Count > posIndex Then
|
||||
dgvUSTVPositionen.ClearSelection()
|
||||
@@ -1286,7 +1288,13 @@ Public Class frmMDM_USTVAntrag
|
||||
Dim USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag()
|
||||
Dim ADR As New cAdressen(KundenNr)
|
||||
Dim ERW As New cKundenErweitert(KundenNr)
|
||||
Dim FIRMA As New cFirmen(1)
|
||||
Dim FIRMA As New cFirmen(1) 'Nr 1 weil weil Kontodaten von Verag.....
|
||||
|
||||
If KundenNr < 0 Then
|
||||
MsgBox("Kunde auswählen!")
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
|
||||
If ERW.kde_keineMWSt Then
|
||||
If Not vbYes = MsgBox("Der ausgewählte Kunde " & ADR.Name_1 & " ist als KEIN MWST-Kunde deklariert!" & vbNewLine & "Trotzdem Antrag speichern?", vbYesNoCancel) Then Exit Sub
|
||||
@@ -1312,8 +1320,8 @@ Public Class frmMDM_USTVAntrag
|
||||
|
||||
|
||||
'check if already existing
|
||||
Dim anzUSTVA = CInt((New SQL).getValueTxtBySql("Select count(*) from tblUStVAntrag where UStvAN_KuNr = " & KundenNr & " and isnull(UStVAn_AntragArt,'MWST') = '" & cboAntragArt._value & "' and UStVAn_LandNr = " & USTV_ANTRAG.UStVAn_LandNr & "
|
||||
AND (cast(UStVAn_ReDatvon as date) <= '" & CDate(txtVon._value).ToShortDateString & "' and cast(UStVAn_ReDatBis as date) >= '" & CDate(txtBis._value).ToShortDateString & "' or cast(UStVAn_ReDatvon as date) >= '" & CDate(txtBis._value).ToShortDateString & "' or cast(UStVAn_ReDatbis as date) >= '" & CDate(txtVon._value).ToShortDateString & "')", "FMZOLL"))
|
||||
Dim anzUSTVA = CInt((New SQL).getValueTxtBySql("Select count(*) from tblUStVAntrag where UStvAN_KuNr = " & KundenNr & " and (isnull(UStVAn_AntragArt,'MWST') = '" & cboAntragArt._value & "' or UStVAn_AntragArt = '') and UStVAn_LandNr = " & USTV_ANTRAG.UStVAn_LandNr & "
|
||||
AND not((cast(UStVAn_ReDatvon as date) > '" & CDate(txtVon._value).ToShortDateString & "' or cast(UStVAn_ReDatBis as date) < '" & CDate(txtBis._value).ToShortDateString & "'))", "FMZOLL"))
|
||||
|
||||
If anzUSTVA > 0 Then
|
||||
If Not vbYes = MsgBox("Es existiert bereits mind. ein " & cboAntragArt._value & " -Eintrag in diesem Zeitbereich von " & ADR.Name_1 & " für " & cbxLand.SelectedItem.ToString & vbNewLine & "Trotzdem Antrag speichern?", vbYesNoCancel) Then Exit Sub
|
||||
@@ -1321,15 +1329,15 @@ Public Class frmMDM_USTVAntrag
|
||||
|
||||
|
||||
USTV_ANTRAG.UStVAn_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
|
||||
USTV_ANTRAG.UStVAn_Zeitstempel = Now()
|
||||
USTV_ANTRAG.UStVAn_Zeitstempel = Now()
|
||||
|
||||
getValue(USTV_ANTRAG, ADR, FIRMA)
|
||||
getValue(USTV_ANTRAG, ADR, FIRMA)
|
||||
|
||||
Me.UStVAn_ID = USTV_ANTRAG.SAVEID()
|
||||
Me.UStVAn_ID = USTV_ANTRAG.SAVEID()
|
||||
|
||||
init()
|
||||
init()
|
||||
|
||||
End If
|
||||
End If
|
||||
|
||||
End Sub
|
||||
|
||||
@@ -1616,16 +1624,39 @@ Public Class frmMDM_USTVAntrag
|
||||
|
||||
If UstCntlUSTV_AntragPosition1.cbxAPI IsNot Nothing AndAlso UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value IsNot Nothing Then
|
||||
|
||||
If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung) Then
|
||||
If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) Then
|
||||
reorderUSTVAPositions(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID)
|
||||
If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = -1 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId_loeschbar Then 'nur Dokumente löschen, die nicht über Schnittstellen geladen wurden!
|
||||
|
||||
If UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId < 0 Then
|
||||
|
||||
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & "_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr)
|
||||
|
||||
If DS IsNot Nothing Then
|
||||
DS.DELETE_COMPLETE()
|
||||
End If
|
||||
|
||||
ElseIf UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId > 0 Then
|
||||
|
||||
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId)
|
||||
|
||||
If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
|
||||
DS.DELETE_COMPLETE()
|
||||
End If
|
||||
|
||||
End If
|
||||
init()
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
UstCntlUSTV_AntragPosition1.Enabled = False
|
||||
If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung) Then
|
||||
If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) Then
|
||||
reorderUSTVAPositions(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID)
|
||||
End If
|
||||
init()
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
UstCntlUSTV_AntragPosition1.Enabled = False
|
||||
|
||||
End If
|
||||
End Sub
|
||||
@@ -2533,26 +2564,48 @@ Public Class frmMDM_USTVAntrag
|
||||
|
||||
If r.Cells("UStVPo_Schnittstelle").Value IsNot Nothing AndAlso r.Cells("UStVPo_SchnittstellenNr").Value IsNot Nothing AndAlso IsNumeric(r.Cells("UStVPo_SchnittstellenNr").Value) Then
|
||||
|
||||
'UstCntlUSTV_AntragPosition1.Antrag_LandKz
|
||||
If r.Cells("UStVPo_SchnittstellenNr").Value = -1 OrElse r.Cells("UStVPo_daId_loeschbar").Value Then 'nur Dokumente löschen, die nicht über Schnittstellen geladen wurden oder löschbar sind!
|
||||
|
||||
If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then
|
||||
If r.Cells("UStVPo_daId").Value Is Nothing Then
|
||||
|
||||
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UStVAn_ID & "_" & r.Cells("UStVPo_ID").Value, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr)
|
||||
|
||||
If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
|
||||
DS.DELETE_COMPLETE()
|
||||
End If
|
||||
|
||||
ElseIf r.Cells("UStVPo_daId").Value > 0 Then
|
||||
|
||||
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(r.Cells("UStVPo_daId").Value)
|
||||
|
||||
If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
|
||||
DS.DELETE_COMPLETE()
|
||||
End If
|
||||
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
|
||||
If setArchiv(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, r.Cells("UStVPo_Leistungsbezeichnung").Value) Then
|
||||
Dim sqlstr = " DELETE FROM tblUStVPositionen WHERE UStVAn_ID=" & Me.UStVAn_ID & " AND UStVPo_ID=" & r.Cells("UStVPo_ID").Value
|
||||
If Not SQL.doSQL(sqlstr, "FMZOLL") Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
Dim sqlstr = " DELETE FROM tblUStVPositionen WHERE UStVAn_ID=" & Me.UStVAn_ID & " AND UStVPo_ID=" & r.Cells("UStVPo_ID").Value
|
||||
If Not SQL.doSQL(sqlstr, "FMZOLL") Then
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
reorderUSTVAPositions(Me.UStVAn_ID)
|
||||
init()
|
||||
UstCntlUSTV_AntragPosition1.Enabled = False
|
||||
End If
|
||||
End If
|
||||
e.Handled = True
|
||||
Next
|
||||
reorderUSTVAPositions(Me.UStVAn_ID)
|
||||
init()
|
||||
UstCntlUSTV_AntragPosition1.Enabled = False
|
||||
End If
|
||||
End If
|
||||
e.Handled = True
|
||||
End If
|
||||
|
||||
|
||||
|
||||
@@ -519,6 +519,8 @@ Public Class frmUSTVoffeneAntraege
|
||||
|
||||
Dim SQLPLOSEUMSTELLUNG = ""
|
||||
|
||||
Dim year = CDate(dat_Sum_Von.Value).Year
|
||||
|
||||
If kdnr > 0 Then
|
||||
sqlwherePLOSE &= " and AdressenNr = " & kdnr 'sqlwherePLOSE &= " and plose_POLSEKundennummer = " & kdnr
|
||||
sqlwhereIDS &= " and AdressenNr = " & kdnr 'sqlwhereIDS &= " and tblIDSTransactionsNew.KdNrVERAG = " & kdnr
|
||||
@@ -555,14 +557,12 @@ Public Class frmUSTVoffeneAntraege
|
||||
|
||||
|
||||
|
||||
|
||||
If dtkeineMWST.Rows.Count > 0 AndAlso kundenLandISO2 <> "" Then
|
||||
|
||||
Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = kundenLandISO2).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault()
|
||||
|
||||
'TODO: eig soll nur PLOSE Datensätze bei nicht EU-Kunden angeizeigt werden (also bei NICHT EU -> IDS weg (nur IDS-AT)!!!!!!!!!!
|
||||
|
||||
|
||||
Dim selectString As String = "Land = '" & kundenLandISO2 & "'" & " AND Lieferant <> 'IDS'"
|
||||
|
||||
Dim dtkeineMWST_ohneContraint As DataTable = dtkeineMWST.Select(selectString).CopyToDataTable
|
||||
Dim counter = 0
|
||||
Dim landBez As String = ""
|
||||
@@ -573,8 +573,26 @@ Public Class frmUSTVoffeneAntraege
|
||||
Next
|
||||
sqlwhereLand &= " AND Einreichland not in (" & landBez & ")"
|
||||
|
||||
End If
|
||||
|
||||
'eig soll nur PLOSE Datensätze bei nicht EU-Kunden angezeigt werden (also bei NICHT EU -> IDS weg (nur IDS-AT)!!!!!!!!!!
|
||||
Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = kundenLandISO2).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault()
|
||||
|
||||
If Not isEU Then
|
||||
|
||||
Dim selectStringIDS As String = "Land = '" & kundenLandISO2 & "'" & " AND Lieferant = 'IDS'"
|
||||
Dim dtkeineMWST_ohneContraintIDS As DataTable = dtkeineMWST.Select(selectStringIDS).CopyToDataTable
|
||||
Dim counterIDS = 0
|
||||
Dim landBezIDS As String = ""
|
||||
For Each row As DataRow In dtkeineMWST_ohneContraintIDS.Rows
|
||||
landBezIDS &= "'" & row.Item("Erstattungsland") & "'"
|
||||
counterIDS = counterIDS + 1
|
||||
If (dtkeineMWST_ohneContraintIDS.Rows.Count <> 0 And counterIDS <> dtkeineMWST_ohneContraintIDS.Rows.Count) Then landBezIDS &= ","
|
||||
Next
|
||||
sqlwhereIDS &= " AND tbl_IDS_Länder.Lieferland_ISO2 not in (" & landBezIDS & ")"
|
||||
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
|
||||
@@ -610,9 +628,6 @@ Public Class frmUSTVoffeneAntraege
|
||||
|
||||
|
||||
|
||||
|
||||
Dim year = CDate(dat_Sum_Von.Value).Year
|
||||
|
||||
If year >= 2025 Then
|
||||
|
||||
SQLPLOSEUMSTELLUNG = "
|
||||
|
||||
@@ -814,14 +814,42 @@ Public Class usrCntlUSTV
|
||||
Exit Sub
|
||||
End If
|
||||
|
||||
|
||||
'1. zuerst prüfen ob Pos aus Schnittstelle und ggf. unterbinden
|
||||
For Each pos In del_antrag.POSITIONEN
|
||||
If pos.UStVPo_SchnittstellenNr > 0 Then
|
||||
MsgBox("Antrag enthält Positionen, die über die Schnittstelle geladen wurden." & vbNewLine & "Positionen manuell löschen.")
|
||||
MsgBox("Antrag enthält Positionen, die über die Schnittstelle geladen wurden." & vbNewLine & "Positionen manuell löschen!")
|
||||
Exit Sub
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
'2. nur Dokumente löschen, die nicht über Schnittstellen geladen wurden oder löschbar sind!
|
||||
For Each pos In del_antrag.POSITIONEN
|
||||
If pos.UStVPo_SchnittstellenNr < 0 OrElse pos.UStVPo_daId_loeschbar Then
|
||||
|
||||
If pos.UStVPo_daId < 0 Then
|
||||
|
||||
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & pos.UStVAn_ID & "_" & pos.UStVPo_ID, "SONSTIGE", del_antrag.UStVAn_KuNr)
|
||||
|
||||
If DS IsNot Nothing Then DS.DELETE_COMPLETE()
|
||||
|
||||
ElseIf pos.UStVPo_daId > 0 Then
|
||||
|
||||
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(pos.UStVPo_daId)
|
||||
|
||||
If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
|
||||
DS.DELETE_COMPLETE()
|
||||
End If
|
||||
|
||||
End If
|
||||
|
||||
|
||||
End If
|
||||
|
||||
Next
|
||||
|
||||
|
||||
If del_antrag.DELETE() Then
|
||||
init()
|
||||
End If
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
Imports GrapeCity.DataVisualization.Chart
|
||||
Imports VERAG_PROG_ALLGEMEIN
|
||||
|
||||
Public Class frmLogin
|
||||
Public ConnStrInfo As String
|
||||
@@ -76,20 +77,36 @@ Public Class frmLogin
|
||||
|
||||
ElseIf PARAM = "SAMMELRECHNUNG_AUTOSENT" Then
|
||||
|
||||
Dim REDat
|
||||
|
||||
If Today().Day < 15 Then
|
||||
'vor 15, letzer Monat Monatsletzter!
|
||||
If Today().Month <> 1 Then
|
||||
'Monatsletzter aus Vorjahr
|
||||
REDat = New Date(Today.Year, Today.Month - 1, DateTime.DaysInMonth(Today().Year, Today.Month - 1))
|
||||
Else
|
||||
REDat = New Date(Today.Year - 1, 12, DateTime.DaysInMonth(Today().Year - 1, 12))
|
||||
End If
|
||||
|
||||
ElseIf Today().Day >= 15 Then
|
||||
REDat = New Date(Today.Year, Today.Month, 15)
|
||||
End If
|
||||
|
||||
|
||||
Dim SRT_ART As Integer = 6
|
||||
Dim REDat As New Date(2025, 3, 15)
|
||||
Dim FirmaID As Integer = 19
|
||||
|
||||
If (parameter.Count - 1) >= 4 Then 'Höher als 1 weil der index 0 der Pfad zum programm ist
|
||||
|
||||
If IsNumeric(parameter(2)) Then SRT_ART = parameter(2)
|
||||
If IsDate(parameter(3)) Then REDat = CDate(parameter(3))
|
||||
If IsNumeric(parameter(3)) Then FirmaID = parameter(3)
|
||||
If IsNumeric(parameter(4)) Then VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = IIf(parameter(4) = 0, True, False)
|
||||
|
||||
End If
|
||||
|
||||
|
||||
Dim func As New cAutomailversand
|
||||
|
||||
Dim func As New cAutomailversand
|
||||
func.sendMailSammelrechnung(REDat, SRT_ART, FirmaID)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user