diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb index 62d456cc..1705ed91 100644 --- a/SDL/Fakturierung/cAutomailversand.vb +++ b/SDL/Fakturierung/cAutomailversand.vb @@ -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 = "" diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb index a048d958..b86ab828 100644 --- a/SDL/USTV/frmMDM_USTVAntrag.vb +++ b/SDL/USTV/frmMDM_USTVAntrag.vb @@ -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 diff --git a/SDL/USTV/frmUSTVoffeneAntraege.vb b/SDL/USTV/frmUSTVoffeneAntraege.vb index 47aef502..90134b07 100644 --- a/SDL/USTV/frmUSTVoffeneAntraege.vb +++ b/SDL/USTV/frmUSTVoffeneAntraege.vb @@ -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 = " diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb index fadc3b0a..94d827a7 100644 --- a/SDL/USTV/usrCntlUSTV.vb +++ b/SDL/USTV/usrCntlUSTV.vb @@ -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 diff --git a/SDL/frmLogin.vb b/SDL/frmLogin.vb index e9d21c22..3df3afc7 100644 --- a/SDL/frmLogin.vb +++ b/SDL/frmLogin.vb @@ -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)