Imports System.Globalization Imports System.IO Imports System.Reflection Imports System.Web.UI.WebControls.Expressions Imports System.Windows.Documents Imports itextsharp.text.pdf Imports Microsoft.Office.Interop Imports VERAG_PROG_ALLGEMEIN Public Class frmMDM_USTVAntrag Dim UStVAn_ID As Integer Dim KundenNr As Integer Dim USTV_ANTRAG As VERAG_PROG_ALLGEMEIN.cUSTVAntrag = Nothing Dim Antrag_LandKz As String = "" Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim posTabisSelected As Boolean = True Dim atez_api = New cATEZ_NCTS_IN("ATEZ_VAT", False) Dim abfNrisSetManually As Boolean = False Dim von, bis As Date Dim func As New cMDMFunctionsAllgemein Dim dTLANDEU As New DataTable Dim DiffernezbetragEUR As Double Dim GesamtUSteuerEUR As Double Dim GesamtUSteuer As Double Dim looked As Boolean = False Sub New(UStVAn_ID) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Me.UStVAn_ID = UStVAn_ID Me.Text = "USTV Antrag " & UStVAn_ID End Sub Sub New(Antrag_KundenNr As Integer, Antrag_LandKz As String, von As Date, bis As Date) ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu. Me.KundenNr = Antrag_KundenNr Me.Antrag_LandKz = Antrag_LandKz Me.von = von Me.bis = bis Me.Text = "USTV Antrag " End Sub Sub init(Optional posIndex As Integer = -1, Optional Lieferant As String = "") pnlBody.AutoScroll = False lblGesamtUSteuerFW.Text = "-" lblGesamtErstattungFW.Text = "-" lblDiffernezbetragFW.Text = "-" lblGesamtUSteuer.Text="-" lblGesamtErstattung.Text = "-" lblDiffernezbetrag.Text = "-" btnAntrageeinarbeiten.Enabled = Not UStVAn_ID <= 0 FlowLayoutPanel.Enabled= Not UStVAn_ID <= 0 btnEintragloeschen.Enabled= Not UStVAn_ID <= 0 btnNeuerEintrag.Enabled= Not UStVAn_ID <= 0 UstCntlUSTV_AntragPosition1.Enabled= Not UStVAn_ID <= 0 cbxLand.Visible= UStVAn_ID <= 0 With dgvUSTVPositionen .ClearSelection() If UStVAn_ID <= 0 Then Exit Sub .SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] " & IIf(cbxInterneNr.Checked, ",[UStVPo_interneNr] as intNr", "") & " ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Nettobetrag],[UStVPo_NettobetragEUR],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_Strasse] as StrasseOnly,leist.[UstV_Leistender_StrasseNr] as StrassenNrOnly,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] ,[UStVPo_VZ],[UStVPo_VZ_RKID] ,cast(case when isnull([UStVPo_VZ_RKID],0) = 0 then 0 else 1 end as bit) as VZabrechnet FROM [tblUStVPositionen] LEFT JOIN [tblUStVLeistender] as leist ON ([tblUStVPositionen].[UStVPo_LeistenderId] > 0 AND leist.[UStV_LeistenderId] = [tblUStVPositionen].[UStVPo_LeistenderId]) OR ([tblUStVPositionen].[UStVPo_LeistenderId] <= 0 AND leist.[UStV_Leistender] = [tblUStVPositionen].[UStVPo_Leistender]) where UStVAn_ID='" & UStVAn_ID & "' ORDER BY UStVPo_ID", "FMZOLL") .LOAD() .RowTemplate.Height = 20 .AllowUserToOrderColumns = False .AllowUserToResizeRows = False If .Columns.Count > 0 Then .Columns("UStVAn_ID").Visible = False .Columns("StrassenNrOnly").Visible = False .Columns("StrasseOnly").Visible = False .Columns("UStVPo_ID").HeaderText = "Pos" .Columns("UStVPo_ID").Width = 40 .Columns("UStVPo_ReDat").HeaderText = "Rg-Datum" .Columns("UStVPo_ReDat").Width = 80 .Columns("UStVPo_ReNr").HeaderText = "Rechnungs-Nr" .Columns("UStVPo_ReNr").Width = 120 .Columns("UStVPo_USteuerbetrag").HeaderText = "USt-Betrag" .Columns("UStVPo_USteuerbetrag").Width = 110 .Columns("UStVPo_USteuerbetrag").DefaultCellStyle.Format = "N2" .Columns("UStVPo_USteuerbetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVPo_Leistungsbezeichnung").HeaderText = "Leistungsbezeichnung" .Columns("UStVPo_Leistungsbezeichnung").Width = 120 .Columns("UStVPo_Leistender").HeaderText = "Leistender" .Columns("UStVPo_Leistender").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("UstV_Leistender_Strasse").HeaderText = "Strasse" .Columns("UstV_Leistender_Strasse").Width = 50 .Columns("UstV_Leistender_PLZ").HeaderText = "PLZ" .Columns("UstV_Leistender_PLZ").Width = 50 .Columns("UstV_Leistender_Land").HeaderText = "Land" .Columns("UstV_Leistender_Land").Width = 50 .Columns("UstV_Leistender_Stadt").HeaderText = "Stadt" .Columns("UstV_Leistender_Stadt").Width = 80 .Columns("UstV_Leistender_UstNr").HeaderText = "UID-Nr" .Columns("UstV_Leistender_UstNr").Width = 100 .Columns("UStVPo_Schnittstelle").HeaderText = "API" .Columns("UStVPo_Schnittstelle").Width = 30 .Columns("UStVPo_VZ").HeaderText = "VZ" .Columns("UStVPo_VZ").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter .Columns("UStVPo_VZ").Width = 40 .Columns("UStVPo_SchnittstellenNr").HeaderText = "API-Nr" .Columns("UStVPo_SchnittstellenNr").Width = 40 .Columns("VZabrechnet").HeaderText = "abger." .Columns("VZabrechnet").Width = 40 .Columns("UStVPo_Umrechnungskurs").HeaderText = "Umrechnungskurs" .Columns("UStVPo_Umrechnungskurs").Width = 60 .Columns("UStVPo_Umrechnungskurs").DefaultCellStyle.Format = "N2" .Columns("UStVPo_Umrechnungskurs").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVPo_USteuerbetragEUR").HeaderText = "USt-Betrag EUR" .Columns("UStVPo_USteuerbetragEUR").Width = 110 .Columns("UStVPo_USteuerbetragEUR").DefaultCellStyle.Format = "N2" .Columns("UStVPo_USteuerbetragEUR").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVPo_Sachbearbeiter").HeaderText = "Sachbearbeiter" .Columns("UStVPo_Sachbearbeiter").MinimumWidth = 100 .Columns("UStVPo_Sachbearbeiter").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("UStVPo_daId").Visible = False .Columns("UStVPo_VZ_RKID").Visible = False .Columns("UStVPo_daId_loeschbar").Visible = False .Columns("UStVPo_NettobetragEUR").Visible = False .Columns("UStVPo_Nettobetrag").Visible = False Dim c As New DataGridViewImageColumn c.Name = "clmnPDF" : c.HeaderText = "RE" ' c.Image = Nothing c.DefaultCellStyle.NullValue = Nothing c.ImageLayout = DataGridViewImageCellLayout.Zoom c.Width = 40 : c.DefaultCellStyle.Padding = New Padding(2) : c.DefaultCellStyle.BackColor = Color.White 'c.DefaultCellStyle.Tag = "Therefore anzeigen" If Not .Columns.Contains("clmnPDF") Then .Columns.Add(c) Dim invoiceNumbers As New HashSet(Of String) For Each r As DataGridViewRow In .Rows Dim da_id As Integer = -1 If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then da_id = r.Cells("UStVPo_daId").Value Else da_id = func.getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Antrag_LandKz, USTV_ANTRAG) End If If da_id > 0 Then DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = Nothing DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf End If If Not (r.Cells("UStVPo_SchnittstellenNr").Value = 4 OrElse r.Cells("UStVPo_SchnittstellenNr").Value = 9) AndAlso Not r.Cells("UStVPo_ReNr").Value.ToString.ToLower.StartsWith("bis") Then 'MSE und "SAMMELBERIFF" ausnehmen Dim rechnungsNr = CStr(r.Cells("UStVPo_ReNr").Value) If Not String.IsNullOrWhiteSpace(rechnungsNr) Then If Not invoiceNumbers.Add(rechnungsNr) Then r.Cells("UStVPo_ReNr").Style.BackColor = Color.IndianRed End If End If End If Next If .Columns.Count > 1 Then btnSortNachLeist.Visible = True Else btnSortNachLeist.Visible = False End If End If End With GesamtUSteuerEUR = SQL.DLookup("isnull(sum(UStVPo_USteuerbetragEUR),0)", "tblUStVPositionen", "UStVAn_ID='" & UStVAn_ID & "'", "FMZOLL", "0") Dim GesamtErstattungEUR As Double = SQL.DLookup("isnull(sum(UStVEr_USteuerbetragEUR),0)", "tblUStVErstattung", "UStVAn_ID='" & UStVAn_ID & "'", "FMZOLL", "0") DiffernezbetragEUR = GesamtUSteuerEUR - GesamtErstattungEUR GesamtUSteuer = SQL.DLookup("isnull(sum(UStVPo_USteuerbetrag),0)", "tblUStVPositionen", "UStVAn_ID='" & UStVAn_ID & "'", "FMZOLL", "0") Dim GesamtErstattung As Double = SQL.DLookup("isnull(sum(UStVEr_USteuerbetrag),0)", "tblUStVErstattung", "UStVAn_ID='" & UStVAn_ID & "'", "FMZOLL", "0") Dim Differnezbetrag As Double = GesamtUSteuer - GesamtErstattung Dim FW As String = cbxWahrung._value lblGesamtUSteuerFW.Text = GesamtUSteuer.ToString("C2") lblGesamtErstattungFW.Text = GesamtErstattung.ToString("C2") lblDiffernezbetragFW.Text = Differnezbetrag.ToString("C2") If FW <> "EUR" Then lblGesamtUSteuerFW.Text = lblGesamtUSteuerFW.Text.Replace("€", FW) lblGesamtErstattungFW.Text = lblGesamtErstattungFW.Text.Replace("€", FW) lblDiffernezbetragFW.Text = lblDiffernezbetragFW.Text.Replace("€", FW) End If lblGesamtUSteuer.Text = GesamtUSteuerEUR.ToString("C2") lblGesamtErstattung.Text = GesamtErstattungEUR.ToString("C2") lblDiffernezbetrag.Text = DiffernezbetragEUR.ToString("C2") Dim GET_Antraege Dim antraegeVearbeitet = False Select Case Lieferant.ToLower Case "plose", "ploseneu" GET_Antraege = MDM_Worker.cPLOSE.GET_Antraege(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, False, IIf(Lieferant.ToLower = "ploseneu", True, False)) antraegeVearbeitet = True Case "rmc" Dim dt As New DataTable GET_Antraege = cRMC.GET_Antraege_RMC(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, False) antraegeVearbeitet = True Case "mse" Dim dt As New DataTable GET_Antraege = cMSEAPI.GET_Antraege_MSE(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, USTV_ANTRAG.UStVAn_Währungscode, False) antraegeVearbeitet = True Case "uta" Dim dt As New DataTable GET_Antraege = cUTA.GET_Antraege_UTA(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, USTV_ANTRAG.UStVAn_Währungscode, False) antraegeVearbeitet = True Case "ids" Dim dt As New DataTable GET_Antraege = cIDS.GET_Antraege_IDS(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, False) antraegeVearbeitet = True End Select If antraegeVearbeitet Then If GET_Antraege IsNot Nothing AndAlso GET_Antraege.Count > 0 Then lbl_EintrageVerarbetiet.Text = "aussehende Einträge: " & GET_Antraege.Count Else lbl_EintrageVerarbetiet.Text = "alle Einträge verarbeitet" End If End If If UStVAn_ID > 0 Then KdSearchBox1.Visible = False USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL") setValue(USTV_ANTRAG) Dim KUNDE As New cKunde(USTV_ANTRAG.UStVAn_KuNr) Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) If KUNDE IsNot Nothing Then pnlHeader.BackColor = Color.FromArgb(0, 54, 128) If KUNDE.Abfertigungsverbot Then pnlHeader.BackColor = Color.IndianRed Else pnlHeader.BackColor = Color.FromArgb(0, 54, 128) End If If USTV_ANTRAG.UStVAn_AntragEingereichtAm IsNot Nothing AndAlso IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then looked = True Else looked = False End If lookFields(looked) If KUNDE_ERW IsNot Nothing Then If KUNDE_ERW.kde_MWStAbrechnung <> "" Then lblMWSTAntrag.Text = KUNDE_ERW.kde_MWStAbrechnung Else lblMWSTAntrag.Text = "" End If If KUNDE_ERW.kde_AnmerkungAntrag IsNot Nothing AndAlso KUNDE_ERW.kde_AnmerkungAntrag <> "" Then lblMWSTAntrag.Text &= " - " & KUNDE_ERW.kde_AnmerkungAntrag End If If USTV_ANTRAG.FilialenNr IsNot Nothing AndAlso USTV_ANTRAG.FilialenNr > 0 AndAlso USTV_ANTRAG.AbfertigungsNr IsNot Nothing AndAlso USTV_ANTRAG.AbfertigungsNr > 0 Then Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) If spedBuch.hasEntry Then If CInt(SQL.getValueTxtBySql("select COUNT(*) from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19 and DruckDatumZeit is not null", "FMZOLL",,, "0")) > 0 Then pb_Beleg.Visible = True Else pb_Beleg.Visible = False End If Button4.Text = "Sped.-Buch anzeigen" Button5.Visible = True Else Button4.Text = "Sped.-Buch eintragen" Button5.Visible = False End If Else Button4.Text = "Sped.-Buch eintragen" Button5.Visible = False End If End If If posIndex > 0 Then posIndex = posIndex - 1 If posIndex > 0 And dgvUSTVPositionen.Rows.Count > posIndex Then dgvUSTVPositionen.ClearSelection() dgvUSTVPositionen.Rows(posIndex).Selected = True For Each c As DataGridViewCell In dgvUSTVPositionen.Rows(posIndex).Cells If c.Visible Then dgvUSTVPositionen.CurrentCell = c 'Damit der Cursor in der DGV richtig steht Exit For End If Next End If End If End Sub Sub setValue(USTV_ANTRAG As VERAG_PROG_ALLGEMEIN.cUSTVAntrag) lblFirma.Text = USTV_ANTRAG.UStVAn_Name lblKdNr.Text = USTV_ANTRAG.UStVAn_KuNr lblLand.Text = Antrag_LandKz txtVon._value = CDate(USTV_ANTRAG.UStVAn_ReDatVon) txtBis._value = CDate(USTV_ANTRAG.UStVAn_ReDatBis) 'lblZeitraum.Text = CDate(USTV_ANTRAG.UStVAn_ReDatVon).ToString("dd.MM.yyyy") & " - " & CDate(USTV_ANTRAG.UStVAn_ReDatBis).ToString("dd.MM.yyyy") cboStatus.changeItem(If(USTV_ANTRAG.UStVAn_Status, "")) If If(USTV_ANTRAG.UStVAn_AntragArt, "") = "" Then cboAntragArt.changeItem("MWST") cboAntragArt.changeItem(If(USTV_ANTRAG.UStVAn_AntragArt, "")) rtbStatusText.Text = If(USTV_ANTRAG.UStVAn_StatusText, "") txt3470.Text = If(USTV_ANTRAG.UStVAn_3470, "") txtVZ.Text = If(USTV_ANTRAG.UStVAn_VZBetrag, "") txtVZam._value = If(USTV_ANTRAG.UStVAn_VZDatum, "") txtRZ.Text = If(USTV_ANTRAG.UStVAn_RZBetragVZ, "") txtRZam._value = If(USTV_ANTRAG.UStVAn_RZDatumVZ, "") txtBezugsNr.Text = If(USTV_ANTRAG.UStVAn_BezugsNr, "") txtAbfNr.Text = If(USTV_ANTRAG.AbfertigungsNr, "") txtEingereichtAm.Text = If(USTV_ANTRAG.UStVAn_AntragEingereichtAm, "") cbxFiliale.changeItem(If(USTV_ANTRAG.FilialenNr, "")) cbxWahrung.changeItem(If(USTV_ANTRAG.UStVAn_Währungscode, "")) cbxRGretour.Checked = USTV_ANTRAG.UStVAn_RGRetour cbxSicherheit.Checked = USTV_ANTRAG.UStVAn_Sicherheit End Sub Sub getValue(ByRef USTV_ANTRAG As VERAG_PROG_ALLGEMEIN.cUSTVAntrag, Optional ADR As cAdressen = Nothing, Optional FIRMA As cFirmen = Nothing) If Me_Validate() Then If IsDate(txtVon._value) Then USTV_ANTRAG.UStVAn_ReDatVon = CDate(txtVon._value) If IsDate(txtBis._value) Then USTV_ANTRAG.UStVAn_ReDatBis = CDate(txtBis._value) USTV_ANTRAG.UStVAn_Status = cboStatus._value USTV_ANTRAG.UStVAn_AntragArt = cboAntragArt._value USTV_ANTRAG.UStVAn_StatusText = rtbStatusText.Text If USTV_ANTRAG.UStVAn_MWSTEingang_offen Is Nothing Then USTV_ANTRAG.UStVAn_MWSTEingang_offen = False End If USTV_ANTRAG.UStVAn_RGRetour = cbxRGretour.Checked USTV_ANTRAG.FilialenNr = cbxFiliale._value USTV_ANTRAG.UStVAn_Sicherheit = cbxSicherheit.Checked If txt3470.Text <> "" AndAlso IsNumeric(txt3470.Text) Then USTV_ANTRAG.UStVAn_3470 = CDbl(txt3470.Text) Else USTV_ANTRAG.UStVAn_3470 = Nothing End If If txtVZ.Text <> "" AndAlso IsNumeric(txtVZ.Text) Then USTV_ANTRAG.UStVAn_VZBetrag = CDbl(txtVZ.Text) Else USTV_ANTRAG.UStVAn_VZBetrag = Nothing End If If txtVZam.Text <> "" AndAlso IsDate(txtVZam.Text) Then USTV_ANTRAG.UStVAn_VZDatum = CDate(txtVZam.Text) Else USTV_ANTRAG.UStVAn_VZDatum = Nothing End If If txtRZ.Text <> "" AndAlso IsNumeric(txtRZ.Text) Then USTV_ANTRAG.UStVAn_RZBetragVZ = CDbl(txtRZ.Text) Else USTV_ANTRAG.UStVAn_RZBetragVZ = Nothing End If If txtRZam.Text <> "" AndAlso IsDate(txtRZam.Text) Then USTV_ANTRAG.UStVAn_RZDatumVZ = CDate(txtRZam.Text) Else USTV_ANTRAG.UStVAn_RZDatumVZ = Nothing End If USTV_ANTRAG.UStVAn_BezugsNr = txtBezugsNr.Text USTV_ANTRAG.AbfertigungsNr = txtAbfNr.Text If txtEingereichtAm.Text <> "" AndAlso IsDate(txtEingereichtAm.Text) Then USTV_ANTRAG.UStVAn_AntragEingereichtAm = txtEingereichtAm.Text ElseIf txtEingereichtAm.Text = "" Then USTV_ANTRAG.UStVAn_AntragEingereichtAm = Nothing End If If ADR IsNot Nothing Then USTV_ANTRAG.UStVAn_KuNr = ADR.AdressenNr USTV_ANTRAG.UStVAn_Name = ADR.Name_1 & IIf(ADR.Name_2 <> "", " " & ADR.Name_2, "") USTV_ANTRAG.UStVAn_Straße = ADR.Straße USTV_ANTRAG.UStVAn_LandKz = ADR.LandKz USTV_ANTRAG.UStVAn_Ort = ADR.Ort USTV_ANTRAG.UStVAn_Steuernummer = ADR.Steuernummer End If If FIRMA IsNot Nothing Then USTV_ANTRAG.UStVAn_Kontoinhaber = FIRMA.Firma_Bez & "; " & FIRMA.Firma_Straße & ";" & FIRMA.Firma_Ort USTV_ANTRAG.UStVAn_Bankverbindung = FIRMA.Firma_Bankverbindung1 USTV_ANTRAG.UStVAn_BLZ = FIRMA.Firma_BLZ1 USTV_ANTRAG.UStVAn_KTO = FIRMA.Firma_KTO1 'fallback laut FM-ZOLL If USTV_ANTRAG.UStVAn_Kontoinhaber Is Nothing Then USTV_ANTRAG.UStVAn_Kontoinhaber = "VERAG 360 GmbH; 4975 Suben" If USTV_ANTRAG.UStVAn_Bankverbindung Is Nothing Then USTV_ANTRAG.UStVAn_Bankverbindung = "Raiba Suben" If USTV_ANTRAG.UStVAn_KTO Is Nothing Then USTV_ANTRAG.UStVAn_KTO = "4210225" If USTV_ANTRAG.UStVAn_BLZ Is Nothing Then USTV_ANTRAG.UStVAn_BLZ = "34620" If USTV_ANTRAG.UStVAn_Gewerbe Is Nothing Then USTV_ANTRAG.UStVAn_Gewerbe = "Transportunternehmer" If USTV_ANTRAG.UStVAn_Erklärung_9_a Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_a = "Warentransport" If USTV_ANTRAG.UStVAn_Ausstellungsort Is Nothing Then USTV_ANTRAG.UStVAn_Ausstellungsort = "Suben" If USTV_ANTRAG.UStVAn_Erklärung_9_b_1 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_1 = False If USTV_ANTRAG.UStVAn_Erklärung_9_b_2 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_2 = False If USTV_ANTRAG.UStVAn_Erklärung_9_b_3 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_3 = False End If End If End Sub Function Me_Validate() As Boolean If Not IsDate(txtVon._value) Then MsgBox("Datumsformat: Von") : Return False If Not IsDate(txtBis._value) Then MsgBox("Datumsformat: Bis") : Return False Return True End Function Public Shared Sub EnableDoubleBuffered(ByRef dgv As DataGridView) Dim dgvType As Type = dgv.[GetType]() Dim pi As PropertyInfo = dgvType.GetProperty("DoubleBuffered", BindingFlags.Instance Or BindingFlags.NonPublic) pi.SetValue(dgv, True, Nothing) End Sub Private Sub UsrCntlDatenDetails1_Changed(POSId) Handles UstCntlUSTV_AntragPosition1.CHANGED 'refreshDgv(kdNr, SDLNr, Kfz, History)'?????????????? ausgebelndet,was das ein VErsuch? 31.07.2017 Dim posIdinDGV As Boolean = False For Each r As DataGridViewRow In dgvUSTVPositionen.Rows If r.Cells("UStVPo_ID").Value = POSId Then posIdinDGV = True Exit For End If Next If posIdinDGV Then dgvUSTVPositionen.VALUE_CHANGED = True init(POSId) Else init(dgvUSTVPositionen.Rows.Count + 1) End If 'Dim dgvUSTVPositionen. 'init() End Sub Private Sub UstCntlUSTV_AntragErstattungen1_Changed(POSId) Handles UstCntlUSTV_AntragErstattungen1.CHANGED Dim posIdinDGV As Boolean = False For Each r As DataGridViewRow In dgvErstattungspositionen.Rows If r.Cells("UStVEr_ID").Value = POSId Then posIdinDGV = True Exit For End If Next If posIdinDGV Then dgvErstattungspositionen.VALUE_CHANGED = True initdgvErstattungen(POSId) Else initdgvErstattungen(dgvErstattungspositionen.Rows.Count + 1) End If 'Dim dgvUSTVPositionen. 'init() End Sub Private Sub usrCntlUSTVA_Antrag_Load(sender As Object, e As EventArgs) Handles MyBase.Load EnableDoubleBuffered(dgvUSTVPositionen) cboStatus.Items.Clear() cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("-", "")) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("In Bearbeitung", cUSTVStatus.STAT_INBEARBEITUNG)) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Unvollständig", cUSTVStatus.STAT_UNVOLLSTAENDIG)) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Eingereicht", cUSTVStatus.STAT_EINGEREICHT)) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Nachforderung/Berichtigung", cUSTVStatus.STAT_NACHFORDERUNG)) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Abgeschlossen/Erstattet", cUSTVStatus.STAT_ERSTATTET)) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Teil-Erstattet", cUSTVStatus.STAT_TEILERSTATTET)) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Abgelehnt", cUSTVStatus.STAT_ABGELEHNT)) cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Storno", cUSTVStatus.STAT_STORNO)) cboStatus.changeItem(cUSTVStatus.STAT_INBEARBEITUNG) cboAntragArt.Items.Clear() cboAntragArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("USTV-Antrag", "MWST")) cboAntragArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MÖST-Antrag", "MOEST")) cboAntragArt.changeItem("MWST") cbxWahrung.fillWithSQL("SELECT [Länderverzeichnis für die Außenhandelsstatistik].Währungscode FROM [Länderverzeichnis für die Außenhandelsstatistik] WHERE ((([Länderverzeichnis für die Außenhandelsstatistik].Umsatzsteuervergütungsverfahren)=1)) GROUP BY [Länderverzeichnis für die Außenhandelsstatistik].Währungscode ORDER BY [Länderverzeichnis für die Außenhandelsstatistik].Währungscode", False, "FMZOLL", True) cboAntragArt.changeItem(" ") cbxFiliale.fillWithSQL("SELECT Filialen.FilialenNr, Filialen.Grenzstelle FROM Filialen WHERE Filialen.FilialenNr>=4800 AND Filialen.Fil_Status='A' ORDER BY Filialen.FilialenNr",, "FMZOLL", True) lbl_EintrageVerarbetiet.Text = "" If UStVAn_ID > 0 Then cbxWahrung.Enabled = False KdSearchBox1.Visible = False USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL") setValue(USTV_ANTRAG) If (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 150000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) <160000) Or (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 180000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) <190000) Then btnRMCQuartal.Visible = True Else btnRMCQuartal.Visible = False End If 'If USTV_ANTRAG.UStVAn_AntragEingereichtAm IsNot Nothing AndAlso IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then ' looked = True 'Else ' looked = False 'End If 'lookFields(looked) Else Dim sqlWhere As String = "" 'neuer USTVA-Antrag KdSearchBox1.Visible = True cbxWahrung.Enabled = True btnRMCQuartal.Visible = False For i As Integer = 0 To cbxFiliale.Items.Count - 1 If cbxFiliale.Items(i).ToString().Contains("MWST Rückerstattung") Then cbxFiliale.SelectedIndex = i Exit For End If Next KdSearchBox1.initKdBox(Me) AddHandler KdSearchBox1.PropertyChanged, Sub() Try lblKdNr.Text = KdSearchBox1.KdNr KundenNr = KdSearchBox1.KdNr Dim ADR As New cAdressen(KdSearchBox1.KdNr) lblFirma.Text = ADR.Name_1 cbxLand.fillWithSQL("SELECT [Länderverzeichnis für die Außenhandelsstatistik].LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz FROM [Länderverzeichnis für die Außenhandelsstatistik] INNER JOIN tblSteuernummern On [Länderverzeichnis für die Außenhandelsstatistik].LandNr = tblSteuernummern.LandNr WHERE[Länderverzeichnis für die Außenhandelsstatistik].Umsatzsteuervergütungsverfahren = 1 And (tblSteuernummern.AdressenNr)=" & KdSearchBox1.KdNr & " And tblSteuernummern.UStV = 1 group by [Länderverzeichnis für die Außenhandelsstatistik].LandKz,[Länderverzeichnis für die Außenhandelsstatistik].LandNr order by [Länderverzeichnis für die Außenhandelsstatistik].LandKz,[Länderverzeichnis für die Außenhandelsstatistik].LandNr", False, "FMZOLL") Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub If KundenNr > 0 Then KdSearchBox1.KdNr = KundenNr sqlWhere = "And tblSteuernummern.AdressenNr=" & KundenNr End If cbxLand.Visible = True cbxLand.fillWithSQL("SELECT [Länderverzeichnis für die Außenhandelsstatistik].LandNr, [Länderverzeichnis für die Außenhandelsstatistik].LandKz FROM [Länderverzeichnis für die Außenhandelsstatistik] INNER JOIN tblSteuernummern On [Länderverzeichnis für die Außenhandelsstatistik].LandNr = tblSteuernummern.LandNr WHERE[Länderverzeichnis für die Außenhandelsstatistik].Umsatzsteuervergütungsverfahren = 1 And tblSteuernummern.UStV = 1 " & sqlWhere & "group by [Länderverzeichnis für die Außenhandelsstatistik].LandKz,[Länderverzeichnis für die Außenhandelsstatistik].LandNr order by [Länderverzeichnis für die Außenhandelsstatistik].LandKz,[Länderverzeichnis für die Außenhandelsstatistik].LandNr", False, "FMZOLL") cbxLand.changeItem(Antrag_LandKz) txtVon._value = von txtBis._value = bis If cbxLand.SelectedValue IsNot Nothing AndAlso Antrag_LandKz <> cbxLand.SelectedValue.ToString Then lblWarnung.Text = "keine StNr für " & Antrag_LandKz Else lblWarnung.Text = "" End If End If If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then btnAntrageeinarbeiten.Enabled = False FlowLayoutPanel.Enabled = False btnEintragloeschen.Enabled = False btnNeuerEintrag.Enabled = False UstCntlUSTV_AntragPosition1.Enabled = False End If init() setinfofields() If VERAG_PROG_ALLGEMEIN.cAllgemein.AUTO_ABF_NR Then btnAbfertigungsNrVergeben.Visible = True initScanUSTVA() End Sub Private Sub Button14_Click(sender As Object, e As EventArgs) Handles btnAntrageeinarbeiten.Click If Not cns_LRE.Items.ContainsKey("plose") Then Dim plose = New ToolStripMenuItem() With {.Text = "Plose", .Name = "plose", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cns_LRE.Items.Add(plose) AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked End If If USTV_ANTRAG.UStVAn_ReDatVon.year >= 2025 Then If Not cns_LRE.Items.ContainsKey("ploseneu") Then Dim plose = New ToolStripMenuItem() With {.Text = "Plose NEUE LOGIK", .Name = "ploseneu", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cns_LRE.Items.Add(plose) AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked End If End If If Not cns_LRE.Items.ContainsKey("rmc") Then Dim rmc = New ToolStripMenuItem() With {.Text = "RMC", .Name = "rmc", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked cns_LRE.Items.Add(rmc) End If If Not cns_LRE.Items.ContainsKey("mse") Then Dim rmc = New ToolStripMenuItem() With {.Text = "MSE", .Name = "mse", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked cns_LRE.Items.Add(rmc) End If If Not cns_LRE.Items.ContainsKey("uta") Then Dim uta = New ToolStripMenuItem() With {.Text = "UTA", .Name = "uta", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked cns_LRE.Items.Add(uta) End If If Not cns_LRE.Items.ContainsKey("ids") Then Dim ids = New ToolStripMenuItem() With {.Text = "IDS", .Name = "ids", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cns_LRE.Items.Add(ids) End If If Not cns_LRE.Items.ContainsKey("verag") Then Dim ids = New ToolStripMenuItem() With {.Text = "VERAG", .Name = "verag", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked cns_LRE.Items.Add(ids) End If cns_LRE.Show(Cursor.Position) End Sub Private Sub mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs) cns_neAntraege.Hide() Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) If item IsNot Nothing Then If item.Name = "plose" Or item.Name = "ploseneu" Then loadUSTVFrom_PLOSE(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked, IIf(item.Name = "ploseneu", True, False)) init() ElseIf item.Name = "rmc" Then loadUSTVFrom_RMC(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked) init() ElseIf item.Name = "mse" Then loadUSTVFrom_MSE(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked) init() ElseIf item.Name = "uta" Then loadUSTVFrom_UTA(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked) init() ElseIf item.Name = "ids" Then loadUSTVFrom_IDS(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked) init() ElseIf item.Name = "verag" Then loadUSTVFrom_VERAG(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked) init() End If End If End Sub Shared Function alreadyExists(USTVAn_KuNr As Integer, UStVAn_LandNr As String, USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim cnt = SQL.getValueTxtBySql(" Select count(*) FROM [tblUStVAntrag] inner join [tblUStVPositionen] On tblUStVAntrag.UStVAn_ID= [tblUStVPositionen].UStVAn_ID WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' /* AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "'*/ AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "'", "FMZOLL") Return (cnt > 0) End Function Shared Function alreadyExistsMitLeistungsBez(USTVAn_KuNr As Integer, UStVAn_LandNr As String, USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Dim cnt = SQL.getValueTxtBySql(" SELECT count(*) FROM [tblUStVAntrag] inner join [tblUStVPositionen] on tblUStVAntrag.UStVAn_ID= [tblUStVPositionen].UStVAn_ID WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' /* AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "' */ AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "' AND UStVPo_Leistungsbezeichnung = '" & USTV_POS.UStVPo_Leistungsbezeichnung & "'", "FMZOLL") Return (cnt > 0) End Function 'Shared Function alreadyExistsWithNettobetrag(USTVAn_KuNr As Integer, UStVAn_LandNr As String, USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean ' Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL ' Dim cnt = SQL.getValueTxtBySql(" Select count(*) FROM [tblUStVAntrag] inner join [tblUStVPositionen] On tblUStVAntrag.UStVAn_ID= [tblUStVPositionen].UStVAn_ID ' WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' /* AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "'*/ AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "' and UStVPo_Nettobetrag is not null ", "FMZOLL") ' Return (cnt > 0) 'End Function Function alreadyExists_InAntrag(USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean For Each row As DataGridViewRow In dgvUSTVPositionen.Rows If row.Cells("UStVPo_SchnittstellenNr").Value = USTV_POS.UStVPo_SchnittstellenNr Then If row.Cells("UStVPo_ReNr").Value = USTV_POS.UStVPo_ReNr.ToString And row.Cells("UStVPo_ReDat").Value = USTV_POS.UStVPo_ReDat Then Return True End If End If Next Return False End Function Shared Function loadUSTVFrom_PLOSE(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean, MWSTSummenAusBeleg As Boolean) As Boolean Try Dim bytSchnittstellenNr = IIf(MWSTSummenAusBeleg, 11, 6) Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim GET_Antraege = MDM_Worker.cPLOSE.GET_Antraege(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien, MWSTSummenAusBeleg) If GET_Antraege IsNot Nothing Then For Each ANTRAG In GET_Antraege Dim USTVA_Nettobetragchanged As Boolean = False Dim sql As New SQL Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID] USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = ANTRAG.plose_RechnungsDatum USTV_POS.UStVPo_ReNr = ANTRAG.plose_RechnungsNr.ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr If USTV_POS.UStVPo_Nettobetrag Is Nothing Then USTVA_Nettobetragchanged = True If Not MWSTSummenAusBeleg Then USTV_POS.UStVPo_Nettobetrag = ANTRAG.plose_NettobetragWaehrungAbbuchung 'IMMER IN EUR USTV_POS.UStVPo_NettobetragEUR = ANTRAG.plose_NettobetragWaehrungAbbuchung Else 'TODO - hier Umrechnungslogik von FRMDW und EUR und EUR/FRMDWR für Belegsebene Dim umrechKurs As Double = 1 If USTV_ANTRAG.UStVAn_Währungscode = ANTRAG.plose_WaehrungAbbuchung And USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then USTV_POS.UStVPo_Nettobetrag = ANTRAG.plose_NettobetragWaehrungAbbuchung USTV_POS.UStVPo_NettobetragEUR = ANTRAG.plose_NettobetragWaehrungAbbuchung Else Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) Dim NETTOBETRAG_EUR = ANTRAG.plose_NettobetragWaehrungAbbuchung Dim NETTOBETRAG = ANTRAG.plose_NettobetragTransaktion If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung = "EUR" Then NETTOBETRAG = Math.Round(kurs.EXCHANGE_EURTOCUR(NETTOBETRAG_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) ElseIf USTV_ANTRAG.UStVAn_Währungscode = "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung <> "EUR" Then NETTOBETRAG_EUR = Math.Round(kurs.EXCHANGE_CURTOEUR(NETTOBETRAG, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) ElseIf USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung <> "EUR" Then NETTOBETRAG_EUR = Math.Round(kurs.EXCHANGE_CURTOEUR(NETTOBETRAG, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) End If If NETTOBETRAG <> 0 Then USTV_POS.UStVPo_NettobetragEUR = NETTOBETRAG_EUR USTV_POS.UStVPo_Nettobetrag = NETTOBETRAG End If End If End If End If If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then If MWSTSummenAusBeleg AndAlso ANTRAG.plose_daId IsNot Nothing Then USTV_POS.UStVPo_daId = ANTRAG.plose_daId Else USTV_POS.UStVPo_daId = sql.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & USTV_POS.UStVPo_ReDat & "' and plInv_SupplierRechnungsNr='" & USTV_POS.UStVPo_ReNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL") End If USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = "Maut" Dim leistenderName As String = "" Select Case Antrag_LandKz Case "DK" If IsDBNull(ANTRAG.plose_Lieferant) Then leistenderName = "A/S Storebealt" Else leistenderName = ANTRAG.plose_Lieferant End If Case "SE" If IsDBNull(ANTRAG.plose_Lieferant) Then leistenderName = "Oresundsbro konsortiet I/S" Else leistenderName = ANTRAG.plose_Lieferant End If Case Else If Not IsDBNull(ANTRAG.plose_Lieferant) Then If ANTRAG.plose_Lieferant IsNot Nothing AndAlso ANTRAG.plose_Lieferant = "SOFICO BELGIO" Then leistenderName = "Sofico" Else leistenderName = ANTRAG.plose_Lieferant End If End If End Select Dim leistender As New cUStVLeistender(leistenderName & " " & Antrag_LandKz, Antrag_LandKz) If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender(leistenderName) End If USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender USTV_POS.UStVPo_LeistenderId = leistender.UStV_LeistenderId 'If ANTRAG.plose_Lieferant = "PLOSE Sistem Service" Then ' USTV_POS.UStVPo_Leistender = "PLOSE SISTEM SERVICE SPA" 'End If USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False Else USTV_POS.UStVPo_daId_loeschbar = True End If ' USTV_POS.UStVPo_daId = ANTRAG.plose_daId ' Berechnungen If Not MWSTSummenAusBeleg Then USTV_POS.UStVPo_USteuerbetragEUR = ANTRAG.plose_MWSTBetragWaehrungAbbuchung 'IMMER IN EUR USTV_POS.UStVPo_Umrechnungskurs = ANTRAG.plose_MWSTBetrag / ANTRAG.plose_MWSTBetragWaehrungAbbuchung USTV_POS.UStVPo_USteuerbetrag = ANTRAG.plose_MWSTBetrag Else 'TODO - hier Umrechnungslogik von FRMDW und EUR und EUR/FRMDWR für Belegsebene Dim umrechKurs As Double = 1 If USTV_ANTRAG.UStVAn_Währungscode = ANTRAG.plose_WaehrungAbbuchung And USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then USTV_POS.UStVPo_USteuerbetragEUR = ANTRAG.plose_MWSTBetragWaehrungAbbuchung USTV_POS.UStVPo_Umrechnungskurs = ANTRAG.plose_MWSTBetrag / ANTRAG.plose_MWSTBetragWaehrungAbbuchung USTV_POS.UStVPo_USteuerbetrag = ANTRAG.plose_MWSTBetrag Else Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) Dim UST_EUR = ANTRAG.plose_MWSTBetrag Dim UST_org = ANTRAG.plose_MWSTBetrag If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung = "EUR" Then UST_org = Math.Round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) ElseIf USTV_ANTRAG.UStVAn_Währungscode = "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung <> "EUR" Then UST_EUR = Math.Round(kurs.EXCHANGE_CURTOEUR(UST_org, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) ElseIf USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso ANTRAG.plose_WaehrungAbbuchung <> "EUR" Then UST_EUR = Math.Round(kurs.EXCHANGE_CURTOEUR(UST_org, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) End If If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100 End If If UST_org <> 0 Then USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR USTV_POS.UStVPo_Umrechnungskurs = umrechKurs USTV_POS.UStVPo_USteuerbetrag = UST_org End If End If End If If USTV_POS.INSERT() Then USTVA_Nettobetragchanged = False If bytSchnittstellenNr = 11 Then 'egal bei welcher Einlesselogik, sollen immer [tblPLOSE_Details] und [tblPLOSE_Inv_Data] aktualisiert werden! MDM_Worker.cPLOSE.UPDATE_ARCHIV_NEULOGIK(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID, USTV_POS.UStVPo_ReNr, True) MDM_Worker.cPLOSE.UPDATE_ARCHIV(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID, USTV_POS.UStVPo_ReNr, True) Else MDM_Worker.cPLOSE.UPDATE_ARCHIV(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID, USTV_POS.UStVPo_ReNr, True) MDM_Worker.cPLOSE.UPDATE_ARCHIV_NEULOGIK(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID, USTV_POS.UStVPo_ReNr, True) End If End If ElseIf USTVA_Nettobetragchanged Then updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) End If Next 'Einträge als archivert setzen ' vormals wichtig 'MDM_Worker.cPLOSE.UPDATE_ARCHIV(USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_ID) End If Return True Catch ex As Exception Return False End Try End Function Shared Function loadUSTVFrom_VERAG(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean Try If Antrag_LandKz <> "AT" Then Return False End If Dim bytSchnittstellenNr = 1 Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim dt_RE As New DataTable Dim GET_Rechnungen = cTrdInvoice.GET_RECHNUNGEN(dt_RE, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, ArchivierteEintracheNochmalsEinarbetien) Dim verarbeitet As Boolean = True If GET_Rechnungen Then For Each r As DataRow In dt_RE.Rows Dim USTVA_Nettobetragchanged As Boolean = False Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID] USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = r.Item("Rechnungsdatum") USTV_POS.UStVPo_ReNr = r.Item("Rechnungsnummer") USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr If USTV_POS.UStVPo_Nettobetrag Is Nothing Then USTV_POS.UStVPo_NettobetragEUR = r.Item("Nettobetrag") USTV_POS.UStVPo_Nettobetrag = r.Item("Nettobetrag") USTVA_Nettobetragchanged = True End If If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then Dim sql As New SQL USTV_POS.UStVPo_Schnittstelle = True Dim leistender As New cUStVLeistender("VERAG 360 GmbH" & " " & Antrag_LandKz, Antrag_LandKz) If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender("VERAG 360 GmbH") End If USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() USTV_POS.UStVPo_daId = 0 '0 weil immer autom. vom System vergeben (bei SchnittstellenNr 1 wird das Feld daid als Info für die RK_ID verwendet!) Dim rkID = sql.getValueTxtBySql("SELECT TOP(1) isnull(RK_ID,0) FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & USTV_POS.UStVPo_ReDat & "' and Rechnungsausgang.RechnungsNr='" & USTV_POS.UStVPo_ReNr & "' AND FilialenNr = " & r.Item("FilialenNr") & " AND RK_ID is not null", "FMZOLL") If rkID <> "" AndAlso IsNumeric(rkID) Then USTV_POS.UStVPo_daId = rkID If USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False Else USTV_POS.UStVPo_daId_loeschbar = False 'bei Schnittstelle Nr1 gehe ich immer davon aus, das eine Rechnung im System existiert!!! End If Dim dt_Prod As New DataTable Dim GET_Positionen = cTrdProduct.GET_PRODUCTS(dt_Prod, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr) If GET_Positionen Then For Each pos As DataRow In dt_Prod.Rows Select Case pos.Item("Leistungsnummer") Case 135 To 139, 141, 654, 655, 658 To 668, 670 To 678 If USTV_POS.UStVPo_Leistungsbezeichnung Is Nothing Then USTV_POS.UStVPo_Leistungsbezeichnung = pos.Item("Leistungsbezeichnung") Else Dim result As String = Microsoft.VisualBasic.Strings.Left(pos.Item("Leistungsbezeichnung") & vbCrLf & USTV_POS.UStVPo_Leistungsbezeichnung, 255) USTV_POS.UStVPo_Leistungsbezeichnung = result End If Case Else ' Sonstige Kosten If USTV_POS.UStVPo_Leistungsbezeichnung Is Nothing Then USTV_POS.UStVPo_Leistungsbezeichnung = pos.Item("Leistungsbezeichnung") Else Dim result As String = Microsoft.VisualBasic.Strings.Left(USTV_POS.UStVPo_Leistungsbezeichnung & vbCrLf & pos.Item("Leistungsbezeichnung"), 255) USTV_POS.UStVPo_Leistungsbezeichnung = result End If End Select Next End If 'Berechnungen - Beträge IMMER in EUR! Dim umrechKurs As Double = 1 Dim UST_EUR = CDbl(r.Item("SteuerbetragLokal")) UST_EUR = Math.Round(UST_EUR, 2) USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR USTV_POS.UStVPo_Umrechnungskurs = umrechKurs USTV_POS.UStVPo_USteuerbetrag = UST_EUR If USTV_POS.INSERT() Then verarbeitet = sql.doSQL("Update tblTrdinInvoice SET tblTrdinInvoice.UStVAn_ID = " & USTV_POS.UStVAn_ID & " WHERE tblTrdinInvoice.Rechnungsdatum = '" & USTV_POS.UStVPo_ReDat & "' And tblTrdinInvoice.Rechnungsnummer = " & USTV_POS.UStVPo_ReNr, "FMZOLL") If Not verarbeitet Then MsgBox("Fehler beim Setzen der UStVAn_ID") Return verarbeitet End If End If ElseIf USTVA_Nettobetragchanged Then updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) End If Next Return verarbeitet End If Return True Catch ex As Exception Return False End Try End Function Shared Function loadUSTVFrom_RMC(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean Try Dim bytSchnittstellenNr = 7 Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim dt As New DataTable Dim GET_Antraege = cRMC.GET_Antraege_RMC(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) If GET_Antraege Then For Each r As DataRow In dt.Rows Dim USTVA_Nettobetragchanged As Boolean = False Dim kdNr = r.Item("rmc_kdNr") Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID] USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = r.Item("rmc_reDatum") USTV_POS.UStVPo_ReNr = r.Item("rmc_reNr").ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_daId = r.Item("rmc_daId") If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False Else USTV_POS.UStVPo_daId_loeschbar = True End If If USTV_POS.UStVPo_Nettobetrag Is Nothing Then If Not IsDBNull(r.Item("rmc_betragNetto")) AndAlso IsNumeric(r.Item("rmc_betragNetto")) Then USTV_POS.UStVPo_Nettobetrag = CDbl(r.Item("rmc_betragNetto")) If r.Item("rmc_waehrung") = "EUR" Then USTV_POS.UStVPo_NettobetragEUR = CDbl(r.Item("rmc_betragNetto")) End If USTVA_Nettobetragchanged = True End If End If If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = "Diesel" Dim leist As String = "RMC Service GmbH" If USTV_POS.UStVPo_ReNr.ToString.ToLower.StartsWith("fit") Then leist = "Con.Tir Scar" USTV_POS.UStVPo_Leistungsbezeichnung = "Maut" End If Dim leistender As New cUStVLeistender(leist & " " & Antrag_LandKz, Antrag_LandKz) If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender(leist) End If USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() If Not IsDBNull(r.Item("rmc_daId_InvAtt")) AndAlso IsNumeric(r.Item("rmc_daId_InvAtt")) AndAlso r.Item("rmc_daId_InvAtt") > 0 Then Dim DS_ATT_ID As Integer = r.Item("rmc_daId_InvAtt") If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then 'merge current daId and invatt-daid Dim DS_NEW As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "RMC_MERGED", Now.Year, Now.ToString("yyyyMMdd"), USTV_POS.UStVPo_ReNr & "_INVOICE_RMC_ATT.pdf", kdNr, True) Dim DS_ATT = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(DS_ATT_ID) Dim DS_ORG = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(USTV_POS.UStVPo_daId) Dim DS_ATT_PATH = DS_ATT.GET_TOP1_PATH Dim DS_ORG_PATH = DS_ORG.GET_TOP1_PATH If DS_ATT_PATH <> "" AndAlso DS_ORG_PATH <> "" Then If DS_NEW.uploadDataToDATENSERVER(DS_ORG_PATH) AndAlso DS_NEW.uploadDataToDATENSERVER(DS_ATT_PATH) Then USTV_POS.UStVPo_daId = DS_NEW.da_id USTV_POS.UStVPo_daId_loeschbar = True 'nach merge wird nicht mehr orig.ID verwendet und daher ist löschbar!!! End If End If End If End If ' Berechnungen 'von RMC bekommen wir Fremdwährung und EUR, d.b. wir können und den Umrechnungskurs selbst berechnen! 'EasyTrip können wir nicht auslesen, deshalb geben wir immer 0,1 als Betrag mit! Dim umrechKurs As Double = 1 If (CDbl(r.Item("rmc_betragBrutto")) <> 0 AndAlso CDbl(r.Item("rmc_euroBrutto")) <> 0) Then Dim Brutto_EUR As Double = CDbl(r.Item("rmc_euroBrutto")) Dim Brutto_org As Double = CDbl(r.Item("rmc_betragBrutto")) 'umrechKurs = frmdw / eur umrechKurs = Math.Floor((Brutto_org / Brutto_EUR * 100 + 0.5)) / 100 End If If CDbl(r.Item("rmc_betragMWST")) <> 0 Then USTV_POS.UStVPo_USteuerbetragEUR = Math.Round((r.Item("rmc_betragMWST") / umrechKurs), 2) USTV_POS.UStVPo_Umrechnungskurs = umrechKurs USTV_POS.UStVPo_USteuerbetrag = r.Item("rmc_betragMWST") If USTV_POS.UStVPo_NettobetragEUR Is Nothing Then USTV_POS.UStVPo_NettobetragEUR = Math.Round((r.Item("rmc_betragNetto") / umrechKurs), 2) End If End If If USTV_POS.INSERT() Then cRMC.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr.ToString, kdNr, USTV_POS.UStVAn_ID) End If ElseIf USTVA_Nettobetragchanged Then updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) End If Next End If Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Shared Function loadUSTVFrom_MSE(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean Try Dim bytSchnittstellenNr = 9 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim dt As New DataTable Dim GET_Antraege = cMSEAPI.GET_Antraege_MSE(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, USTV_ANTRAG.UStVAn_Währungscode, ArchivierteEintracheNochmalsEinarbetien) If GET_Antraege Then For Each r As DataRow In dt.Rows Dim USTVA_Nettobetragchanged As Boolean = False Dim kdNr = r.Item("customer_id") Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID] USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = r.Item("invoice_date") USTV_POS.UStVPo_ReNr = r.Item("invoice_number") & " - " & kdNr & IIf(Antrag_LandKz = "BE", "/Belgium", "") USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_daId = r.Item("daId") USTV_POS.UStVPo_Leistungsbezeichnung = r.Item("specification_page_name") If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False Else USTV_POS.UStVPo_daId_loeschbar = True End If If USTV_POS.UStVPo_Nettobetrag Is Nothing Then If Not IsDBNull(r.Item("NETTO")) AndAlso IsNumeric(r.Item("NETTO")) Then USTV_POS.UStVPo_Nettobetrag = CDbl(r.Item("NETTO")) If r.Item("original_currency") = "EUR" Then USTV_POS.UStVPo_NettobetragEUR = CDbl(r.Item("NETTO")) End If USTVA_Nettobetragchanged = True End If End If If Not alreadyExistsMitLeistungsBez(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True Dim leistender As New cUStVLeistender("MS Europe BV" & " " & Antrag_LandKz, Antrag_LandKz) If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender("MS Europe BV") End If USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() ' Berechnungen 'von MSE bekommen wir Fremdwährung und EUR, d.b. wir können den Umrechnungskurs selbst berechnen! Dim umrechKurs As Double = 1 Dim UST_EUR = CDbl(r.Item("UST_EUR")) Dim UST_org = CDbl(r.Item("UST")) If (UST_EUR <> 0 AndAlso UST_org <> 0 AndAlso UST_org <> UST_EUR) Then 'umrechKurs = UST_org / UST_EUR umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100 End If If UST_org <> 0 Then USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR 'Math.Round((UST_org / umrechKurs), 2) USTV_POS.UStVPo_Umrechnungskurs = umrechKurs USTV_POS.UStVPo_USteuerbetrag = UST_org If USTV_POS.UStVPo_NettobetragEUR Is Nothing Then USTV_POS.UStVPo_NettobetragEUR = Math.Round((r.Item("NETTO") / umrechKurs), 2) End If End If If USTV_POS.INSERT() Then cMSEAPI.UPDATE_ARCHIV(r.Item("invoice_date"), r.Item("invoice_number"), r.Item("customer_id"), Antrag_LandKz, USTV_POS.UStVAn_ID) End If ElseIf USTVA_Nettobetragchanged Then updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) End If Next End If Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Shared Function loadUSTVFrom_UTA(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean Try Dim bytSchnittstellenNr = 10 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim dt As New DataTable Dim GET_Antraege = cUTA.GET_Antraege_UTA(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, USTV_ANTRAG.UStVAn_Währungscode, ArchivierteEintracheNochmalsEinarbetien) If GET_Antraege Then For Each r As DataRow In dt.Rows Dim USTVA_Nettobetragchanged As Boolean = False Dim kdnr = r.Item("Kundennummer") Dim kdnrUTA = r.Item("KundennummerUTA") Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID] USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = r.Item("Rechnungsdatum") USTV_POS.UStVPo_ReNr = r.Item("Rechnungsnummer").ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_daId = r.Item("daId") If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False Else USTV_POS.UStVPo_daId_loeschbar = True End If If USTV_POS.UStVPo_Nettobetrag Is Nothing Then If Not IsDBNull(r.Item("Gesamtbetrag_Netto_in_Lieferlandwährung")) AndAlso IsNumeric(r.Item("Gesamtbetrag_Netto_in_Lieferlandwährung")) Then USTV_POS.UStVPo_Nettobetrag = CDbl(r.Item("Gesamtbetrag_Netto_in_Lieferlandwährung")) USTVA_Nettobetragchanged = True End If If Not IsDBNull(r.Item("Gesamtbetrag_Netto_in_Darstellwährung")) AndAlso IsNumeric(r.Item("Gesamtbetrag_Netto_in_Darstellwährung")) Then USTV_POS.UStVPo_NettobetragEUR = CDbl(r.Item("Gesamtbetrag_Netto_in_Darstellwährung")) USTVA_Nettobetragchanged = True End If End If If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True Dim Leistender As New cUStVLeistender("Union Tank Eckstein Gmbh&Co KG" & " " & Antrag_LandKz, Antrag_LandKz) If Leistender IsNot Nothing Then USTV_POS.UStVPo_LeistenderId = Leistender.UStV_LeistenderId USTV_POS.UStVPo_Leistender = Leistender.UStV_Leistender Else USTV_POS.UStVPo_Leistender = "Union Tank Eckstein Gmbh&Co KG" End If USTV_POS.UStVPo_Leistungsbezeichnung = "MAUT, DIESEL oder KFZ-Zubehör" USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() ' Berechnungen 'UTA liefert Beträge immer in EUR und in FREMDW! Dim umrechKurs As Double = 1 Dim UST_org = CDbl(r.Item("Umsatzsteuerbetrag_in_Lieferlandwährung")) Dim UST_EUR = CDbl(r.Item("Umsatzsteuerbetrag_in_Darstellwährung")) 'ist immer EUR If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100 End If If UST_org <> 0 Then USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR USTV_POS.UStVPo_Umrechnungskurs = umrechKurs USTV_POS.UStVPo_USteuerbetrag = UST_org End If If USTV_POS.INSERT() Then cUTA.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr, kdnrUTA, USTV_POS.UStVAn_ID) End If ElseIf USTVA_Nettobetragchanged Then updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) End If Next End If Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Shared Function loadUSTVFrom_IDS(UStVAn_ID As Integer, Antrag_LandKz As String, ArchivierteEintracheNochmalsEinarbetien As Boolean) As Boolean Try 'Dim bytSchnittstellenNr = 8 'damit von alter Schnittstelle und neue Schnittstelle keine Daten doppelt importiert werden Dim bytSchnittstellenNr = 12 Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim dt As New DataTable Dim GET_Antraege = cIDS.GET_Antraege_IDS(dt, USTV_ANTRAG.UStVAn_ReDatVon, USTV_ANTRAG.UStVAn_ReDatBis, USTV_ANTRAG.UStVAn_KuNr, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) If GET_Antraege Then For Each r As DataRow In dt.Rows Dim sql As New SQL Dim kdnr = r.Item("Kundennummer") Dim USTVA_Nettobetragchanged As Boolean = False Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID] USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = r.Item("Rechnungsdatum") USTV_POS.UStVPo_ReNr = r.Item("Rechnungsnummer").ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr 'OLD - Gesammelte Rechnung 'USTV_POS.UStVPo_daId = sql.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNew.daId FROM [tblIDSTransactionsNew] INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode LEFT JOIN tblIDSInvoicesNew on tblIDSInvoicesNew.CustomerCode = tblIDSTransactionsNew.CustomerCode and tblIDSInvoicesNew.Invoicenumber = Paymentsummarynumber where tblIDSTransactionsNew.[YearMonthDay] ='" & USTV_POS.UStVPo_ReDat & "' AND ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & USTV_POS.UStVPo_ReNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL") 'NEW-Einzelrechnung USTV_POS.UStVPo_daId = sql.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNewSplittedByCountry.daId FROM [tblIDSInvoicesNewSplittedByCountry] where tblIDSInvoicesNewSplittedByCountry.[YearMonthDay] ='" & USTV_POS.UStVPo_ReDat & "' AND tblIDSInvoicesNewSplittedByCountry.Invoicenumber ='" & USTV_POS.UStVPo_ReNr.ToString.Replace("/", "") & "' and tblIDSInvoicesNewSplittedByCountry.Country='" & Antrag_LandKz & "' AND tblIDSInvoicesNewSplittedByCountry.daId is not null", "FMZOLL") If IsNumeric(USTV_POS.UStVPo_daId) AndAlso USTV_POS.UStVPo_daId > 0 Then USTV_POS.UStVPo_daId_loeschbar = False Else USTV_POS.UStVPo_daId_loeschbar = True End If If USTV_POS.UStVPo_Nettobetrag Is Nothing Then If Not IsDBNull(r.Item("Nettobetrag")) AndAlso IsNumeric(r.Item("Nettobetrag")) Then USTV_POS.UStVPo_NettobetragEUR = CDbl(r.Item("Nettobetrag")) If USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then USTV_POS.UStVPo_Nettobetrag = CDbl(r.Item("Nettobetrag")) 'dann ist die "Fremdwährung" EURO USTVA_Nettobetragchanged = True End If End If If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = "Diesel" 'sonderfälle vom leistenden bei IDS, leider nicht in der Importtabelle, daher hardcoded: Dim leistenderName As String = "" Dim useNewAdress As Boolean = False If CDate(USTV_POS.UStVPo_ReDat) >= New Date("2025", "09", "30") Then useNewAdress = True Select Case Antrag_LandKz Case "RO" leistenderName = "Kuwait Petroleum Romania S.R.L" Case "SE" leistenderName = "OK-Q8 AB" Case "DK" leistenderName = "Q8 Danmark A/S" Case "PL" leistenderName = "Kuwait Petroleum Sp. Z.o.o" Case "DE" leistenderName = "Kuwait Petroleum Gmbh" Case "IT" leistenderName = "Kuwait Petroleum Italie Spa" Case "ES" leistenderName = "Fuel Iberia S.L.U" Case Else leistenderName = IIf(Not useNewAdress, "IDS EUROPE B.V.", "Q8Truck International B.V.") End Select Dim leistender As New cUStVLeistender(leistenderName & " " & Antrag_LandKz, Antrag_LandKz) If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender(leistenderName) End If USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() Dim umrechKurs As Double = 1 'TODO: IDS liefert Beträge immer in EUR, wir müssen allerdings die Beträge in FREMDW umrechnen, ev. bei IDS nachfragen, ob wir den Fremdwährungsbetrag bekommen können (würde uns einige manuelle Arbeit ersparen oder zumindest den Umrechnungskurs, das IDS einen Mischsatz verwendet und nicht den Umrechnungskurs vom Rechnungsdatum)!! Dim UST_EUR = CDbl(r.Item("Steuerbetrag")) 'ist immer EUR Dim UST_org = CDbl(r.Item("Steuerbetrag")) If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) UST_org = Math.Round(kurs.EXCHANGE_EURTOCUR(UST_EUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) End If If (UST_org <> 0 AndAlso UST_org <> UST_EUR) Then umrechKurs = Math.Floor((UST_org / UST_EUR * 100 + 0.5)) / 100 End If If UST_org <> 0 Then USTV_POS.UStVPo_USteuerbetragEUR = UST_EUR USTV_POS.UStVPo_Umrechnungskurs = umrechKurs USTV_POS.UStVPo_USteuerbetrag = UST_org If USTV_POS.UStVPo_Nettobetrag Is Nothing Then USTV_POS.UStVPo_Nettobetrag = Math.Round((r.Item("Nettobetrag") * umrechKurs), 2) If USTV_POS.INSERT() Then cIDS.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr, kdnr, Antrag_LandKz, USTV_POS.UStVAn_ID) End If End If ElseIf USTVA_Nettobetragchanged Then updateNettobetrag(USTV_POS.UStVPo_ReNr, USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_SchnittstellenNr, USTV_POS) End If Next End If Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Shared Function loadUSTVFrom_ATEZ_KI(UStVAn_ID As Integer, Antrag_LandKz As String, atez_api As cATEZ_NCTS_IN, daid As Integer, pageCount As Integer, documentType As String, deleteOrigPDF As Boolean) As Boolean Try Dim bytSchnittstellenNr = -1 Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim dt As New DataTable dt = atez_api.createVATDatatable(documentType) Dim failreDesc As String Dim authResp = atez_api.authenticate("VAT", "client1", "password", documentType) Dim resp If authResp <> "200" Then MsgBox("Authentifizierung fehlgeschlagen" & vbNewLine & authResp) Return False Else 'If API.SendRequestWithAuthHeader("application/json", failreDesc, "/health", "GET") = "200" Then If atez_api.setJsonVAT(documentType, daid) Then Dim pageCounter = 0 resp = atez_api.SendRequestWithAuthHeader("application/json", failreDesc, "/process", "POST", dt, documentType) If dt.Rows.Count > 0 Then Dim f As New frmVAT_ATEZ() f.usrcntlVAT_ATEZ1.initDGV(dt) f.usrcntlVAT_ATEZ1.setColorIndgv() If f.ShowDialog = DialogResult.OK Then Dim DS_ORIG_alreadyDeleted = Not deleteOrigPDF 'ist wirklich so richtig! Dim DS_ORIG As New cDATENSERVER(daid) Dim fi_orig As New FileInfo(DS_ORIG.GET_TOP1_PATH()) For Each r As DataGridViewRow In f.usrcntlVAT_ATEZ1.dgvVAT.SelectedRows Dim sql As New SQL 'Dim kdnr = r.Cells("Kundennummer").Value Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen Dim reDat As Date = IIf(Not IsDBNull(r.Cells("invoice_date").Value) AndAlso IsDate(r.Cells("invoice_date").Value), r.Cells("invoice_date").Value, Nothing) USTV_POS.UStVAn_ID = USTV_ANTRAG.[UStVAn_ID] USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = reDat.ToShortDateString USTV_POS.UStVPo_ReNr = r.Cells("invoice_id").Value.ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr USTV_POS.UStVPo_Leistungsbezeichnung = "Maut/Diesel" USTV_POS.UStVPo_Schnittstelle = True If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then If pageCount = r.Cells("page_count").Value Then USTV_POS.UStVPo_daId_loeschbar = True Dim DS_NEW As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "ATEZ_KI", Now.Year, Now.ToString("ddMMyy_HHmmss.ffff"), fi_orig.Name, USTV_ANTRAG.UStVAn_KuNr, False) If Not DS_NEW.uploadDataToDATENSERVER(fi_orig.FullName) Then MsgBox("Fehler beim Speichern: Datenserver!") : Return False If DS_NEW.da_id <= 0 Then MsgBox("Keine DocId!") : Return False USTV_POS.UStVPo_daId = DS_NEW.da_id 'gesamtePDF wird gespeichert, alte DS kann gelscht werden: If DS_ORIG.DELETE_COMPLETE() Then DS_ORIG_alreadyDeleted = True Else USTV_POS.UStVPo_daId_loeschbar = True 'todo: Logik Aufsplittung des PDF in Teilpdfs Dim pagestart = 0 For Each pages As DataRow In dt.Rows pagestart += CInt(pages.Item("page_count")) If pages.Item("doc_index") = r.Cells("doc_index").Value Then Exit For Next Dim TMP_Path_Old = fi_orig.FullName Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(fi_orig.Name, fi_orig.Extension,, True, "USTVA_POS") VERAG_PROG_ALLGEMEIN.cAllgemein.ExtractPdfPages(TMP_Path_Old, TMP_Path_New, r.Cells("start_page").Value, r.Cells("end_page").Value) Dim DS_NEW As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "MDM_DATEN", "ATEZ_KI", Now.Year, Now.ToString("ddMMyy_HHmmss.ffff"), fi_orig.Name, USTV_ANTRAG.UStVAn_KuNr, False) If Not DS_NEW.uploadDataToDATENSERVER(TMP_Path_New) Then MsgBox("Fehler beim Speichern: Datenserver!") If DS_NEW.da_id <= 0 Then MsgBox("Keine DocId!") USTV_POS.UStVPo_daId = DS_NEW.da_id End If Dim leistenderName As String = r.Cells("seller_name").Value Dim leistenderUID As String = r.Cells("seller_VAT_id").Value Dim leistender As New cUStVLeistender(leistenderUID, True) If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender(leistenderName & " " & Antrag_LandKz, Antrag_LandKz) End If If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender(leistenderName) End If USTV_POS.UStVPo_Leistender = leistender.UStV_Leistender.ToString USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() '1. Antragswährung = Belegswährung (EUR zu FREMD und FREMD zu EUR) If r.Cells("total_VAT_currency").Value = USTV_ANTRAG.UStVAn_Währungscode Then Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) If USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then USTV_POS.UStVPo_USteuerbetragEUR = r.Cells("total_VAT_amount").Value 'If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then ' USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) ' USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100 'Else USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value USTV_POS.UStVPo_Umrechnungskurs = 1 'End If Else USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, r.Cells("total_VAT_currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2) USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100 End If Else '2. Antragswährung <> Belegswährung (EUR zu FREMD und FREMD zu EUR) If USTV_ANTRAG.UStVAn_Währungscode = "EUR" Then Dim kurs As New cEZB_Waehrungskurse(r.Cells("total_VAT_currency").Value) If r.Cells("total_VAT_currency").Value <> "EUR" Then USTV_POS.UStVPo_USteuerbetrag = r.Cells("total_VAT_amount").Value USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, r.Cells("total_VAT_currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2) USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100 ElseIf r.Cells("total_VAT_currency").Value = "EUR" Then USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) USTV_POS.UStVPo_USteuerbetragEUR = USTV_POS.UStVPo_USteuerbetrag USTV_POS.UStVPo_Umrechnungskurs = 1 End If Else '2.1 Antragswährung <> Belegswährung (FREMD zu FREMD) If r.Cells("total_VAT_currency").Value = "EUR" Then USTV_POS.UStVPo_USteuerbetragEUR = r.Cells("total_VAT_amount").Value Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2) USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100 Else USTV_POS.UStVPo_USteuerbetrag = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(r.Cells("total_VAT_amount").Value, r.Cells("total_VAT_currency").Value, USTV_ANTRAG.UStVAn_Währungscode) Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode) USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, r.Cells("total_VAT_currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2) USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100 End If End If End If USTV_POS.INSERT() End If Next If Not DS_ORIG_alreadyDeleted Then DS_ORIG.DELETE_COMPLETE() End If End If Else MsgBox(resp) End If End If End If Return True Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Return False End Try End Function Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click If UStVAn_ID > 0 Then dgvUSTVPositionen.GetOrder() getValue(USTV_ANTRAG) If USTV_ANTRAG.SAVE Then init() dgvUSTVPositionen.SetOrder() End If VERAG_PROG_ALLGEMEIN.cMDMFunctionsAllgemein.Update_UStVASummenNeuBerechnen_USTVA(USTV_ANTRAG.UStVAn_ID) Dim invoiceNumbers As New HashSet(Of String) For Each r In dgvUSTVPositionen.Rows Dim rechnungsNr = CStr(r.Cells("UStVPo_ReNr").Value) If Not String.IsNullOrWhiteSpace(rechnungsNr) Then If Not invoiceNumbers.Add(rechnungsNr) Then MessageBox.Show($"Doppelt erfasste RechnungsNr vorhanden: {rechnungsNr}") Exit For End If End If Next If USTV_ANTRAG.UStVAn_Währungscode IsNot Nothing AndAlso USTV_ANTRAG.UStVAn_Währungscode <> "EUR" AndAlso USTV_ANTRAG.UStVAn_Währungscode <> "" Then Dim averageUmrechnungskurs As Double = 1 Dim invoicedateOK As Boolean = True Dim PosNr As Integer = -1 If dgvUSTVPositionen.Rows.Count > 0 Then For Each row In dgvUSTVPositionen.Rows averageUmrechnungskurs += row.Cells("UStVPo_Umrechnungskurs").Value Dim reDat As Date = IIf(Not IsDBNull(row.Cells("UStVPo_ReDat").Value) AndAlso IsDate(row.Cells("UStVPo_ReDat").Value), row.Cells("UStVPo_ReDat").Value, Nothing) If reDat > USTV_ANTRAG.UStVAn_ReDatBis Or reDat < USTV_ANTRAG.UStVAn_ReDatVon Then invoicedateOK = False PosNr = row.Cells("UStVPo_ID").Value End If Next averageUmrechnungskurs = averageUmrechnungskurs / dgvUSTVPositionen.Rows.Count End If Dim abw As Double = Math.Abs(Math.Round(GesamtUSteuer / averageUmrechnungskurs, 2) - Math.Round(GesamtUSteuerEUR, 2)) If abw >= 250 Then MsgBox("Bitte Umrechnungskurs in den Antragspositionen kontrollieren!" & vbNewLine & "Der Steuerbetrag weicht um " & Math.Round(abw, 2) & "€ vom FW-Steuerbetrag ab! ") End If If Not invoicedateOK Then MsgBox("Rechnungsdatum der Position " & PosNr & " befindet sich außerhalb der Antragsperiode, bitte korrigieren!") End If End If Else 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) 'Nr 1 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 End If USTV_ANTRAG.UStVAn_LandNr = cbxLand._value If USTV_ANTRAG.UStVAn_LandNr = "" Then MsgBox("Land muss gesetzt werden!") Exit Sub End If If cbxWahrung.SelectedItem Is Nothing Then USTV_ANTRAG.UStVAn_Währungscode = SQL.DLookup("Währungscode", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL") Else USTV_ANTRAG.UStVAn_Währungscode = cbxWahrung.SelectedItem.Text End If If Not (IsDate(txtVon._value) AndAlso IsDate(txtBis._value)) Then MsgBox("Zeitraum muss gesetzt werden!") Exit Sub End If 'Start neue Version 'check if already existing 'überschneidungen prüfen!!!! -> jz wieder doch nicht.......... Dim StringSQL As String = "SELECT UStVAn_ID, UStVAn_ReDatVon, UStVAn_ReDatBis, UStVAn_AntragEingereichtAm FROM tblUStVAntrag b WHERE b.UStvAN_KuNr = " & KundenNr & " AND (ISNULL(b.UStVAn_AntragArt,'MWST') = '" & cboAntragArt._value & "' OR b.UStVAn_AntragArt = '') AND b.UStVAn_LandNr = " & USTV_ANTRAG.UStVAn_LandNr & " -- Überschneidungstest (inklusive Grenzen) AND NOT ( COALESCE(CAST(b.UStVAn_ReDatBis AS date), '9999-12-31') < '" & CDate(txtVon._value).ToShortDateString & "' OR COALESCE(CAST(b.UStVAn_ReDatVon AS date), '1900-01-01') > '" & CDate(txtBis._value).ToShortDateString & "' ) -- optional: die exakt gleiche Periode ausschließen (wenn gewünscht) AND NOT ( COALESCE(CAST(b.UStVAn_ReDatVon AS date),'1900-01-01') = '" & CDate(txtVon._value).ToShortDateString & "' AND COALESCE(CAST(b.UStVAn_ReDatBis AS date),'9999-12-31') = '" & CDate(txtBis._value).ToShortDateString & "') order by UStVAn_ReDatVon" Dim dt_existingUSTVA As DataTable = SQL.loadDgvBySql(StringSQL, "FMZOLL") 'Ende neue Version 'alte Version wieder aktiviert. 'Start alte Version -------------------------------------- 'Dim dt_existingUSTVA As DataTable = SQL.loadDgvBySql("Select UStVAn_ID,UStVAn_ReDatvon, UStVAn_ReDatBis, UStVAn_AntragEingereichtAm 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(txtVon._value).ToShortDateString & "' ) and (cast(UStVAn_ReDatBis as date) < '" & CDate(txtBis._value).ToShortDateString & "' or cast(UStVAn_ReDatvon as date) >= '" & CDate(txtBis._value).ToShortDateString & "'))", "FMZOLL") 'Ende alte Version -------------------------------------- If dt_existingUSTVA.Rows.Count = 1 Then Dim eingereicht As String = IIf(Not IsDBNull(dt_existingUSTVA.Rows(0).Item("UStVAn_AntragEingereichtAm")) AndAlso IsDate(dt_existingUSTVA.Rows(0).Item("UStVAn_AntragEingereichtAm")), " EINGEREICHTER ", "") Dim result As MsgBoxResult = MsgBox("Es existiert bereits ein " & eingereicht & cboAntragArt._value & "-Eintrag von " & dt_existingUSTVA.Rows(0).Item("UStVAn_ReDatvon") & " - " & dt_existingUSTVA.Rows(0).Item("UStVAn_ReDatbis") & " von " & ADR.Name_1 & " für " & cbxLand.SelectedItem.ToString & vbNewLine & "Ja = Antrag speichern" & vbNewLine & "Nein = existierenden Antrag öffnen", vbYesNoCancel) Select Case result Case MsgBoxResult.Cancel : Exit Sub Case MsgBoxResult.No Me.Close() Dim frm = New frmMDM_USTVAntrag(dt_existingUSTVA.Rows(0).Item("UStVAn_ID")) frm.ShowDialog() Exit Sub End Select ElseIf dt_existingUSTVA.Rows.Count > 1 Then Dim testInfo As String = "Es existieren bereits " & dt_existingUSTVA.Rows.Count & " " & cboAntragArt._value & "-Einträge in diesem Zeitbereich von " & vbNewLine Dim IDnichteingereicht As Integer = -1 For Each r In dt_existingUSTVA.Rows testInfo &= vbNewLine & r.Item("UStVAn_ReDatvon") & " - " & r.Item("UStVAn_ReDatbis") & IIf(Not IsDBNull(r.Item("UStVAn_AntragEingereichtAm")) AndAlso IsDate(r.Item("UStVAn_AntragEingereichtAm")), " bereits eingereicht! ", "") If IsDBNull(r.Item("UStVAn_AntragEingereichtAm")) OrElse IsDate(r.Item("UStVAn_AntragEingereichtAm")) Then IDnichteingereicht = (r.Item("UStVAn_ID")) End If Next testInfo &= vbNewLine & vbNewLine & "von " & ADR.Name_1 & " für " & cbxLand.SelectedItem.ToString Dim result As MsgBoxResult = MsgBox(testInfo & vbNewLine & "Ja = Antrag speichern" & vbNewLine & "Nein = existierenden Antrag öffnen", vbYesNoCancel) Select Case result Case MsgBoxResult.Cancel : Exit Sub Case MsgBoxResult.No Me.Close() If IDnichteingereicht > 0 Then Dim frm = New frmMDM_USTVAntrag(IDnichteingereicht) frm.ShowDialog() Exit Sub Else 'Exit Sub End If End Select End If USTV_ANTRAG.UStVAn_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_ANTRAG.UStVAn_Zeitstempel = Now() getValue(USTV_ANTRAG, ADR, FIRMA) Me.UStVAn_ID = USTV_ANTRAG.SAVEID() VERAG_PROG_ALLGEMEIN.cMDMFunctionsAllgemein.Update_UStVASummenNeuBerechnen_USTVA(USTV_ANTRAG.UStVAn_ID) init() End If initScanUSTVA() End Sub Sub initPosition(UStVPo_ID) If UStVPo_ID > 0 Then Dim ANTR_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen(USTV_ANTRAG.UStVAn_ID, UStVPo_ID) Dim ANTR_Leistender As New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_Leistender) If Not IsDBNull(ANTR_POS.UStVPo_LeistenderId) AndAlso ANTR_POS.UStVPo_LeistenderId > 0 Then ANTR_Leistender = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_LeistenderId) End If UstCntlUSTV_AntragPosition1.Enabled = True UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, ANTR_Leistender, atez_api) Else UstCntlUSTV_AntragPosition1.reset() UstCntlUSTV_AntragPosition1.Enabled = False End If End Sub Sub initErstsattungsPosition(UStVEr_ID) If UStVEr_ID > 0 Then Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, UStVEr_ID) UstCntlUSTV_AntragErstattungen1.Enabled = True UstCntlUSTV_AntragErstattungen1.setValues(USTV_ANTRAG, ANTR_ERSTATTUNG, USTV_ANTRAG.UStVAn_KuNr) Else UstCntlUSTV_AntragErstattungen1.reset() UstCntlUSTV_AntragErstattungen1.Enabled = False UstCntlUSTV_AntragErstattungen1.setValues(USTV_ANTRAG) End If End Sub Private Sub dgvUSTVPositionen_SelectionChanged(sender As Object, e As EventArgs) Handles dgvUSTVPositionen.SelectionChanged If dgvUSTVPositionen.SelectedRows.Count > 0 Then initPosition(dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID").Value) calcSumme() End If End Sub Private Sub dgvErstattungspositionen_SelectionChanged(sender As Object, e As EventArgs) Handles dgvErstattungspositionen.SelectionChanged If dgvErstattungspositionen.SelectedRows.Count > 0 Then initErstsattungsPosition(dgvErstattungspositionen.SelectedRows(0).Cells("UStVEr_ID").Value) End If End Sub Private Sub UstCntlUSTV_AntragPosition1_EV_NEXT() Handles UstCntlUSTV_AntragPosition1.EV_NEXT If dgvUSTVPositionen.SelectedRows.Count > 0 Then If dgvUSTVPositionen.RowCount > dgvUSTVPositionen.SelectedRows(0).Index + 1 Then UstCntlUSTV_AntragPosition1.Enabled = True Dim selIndex = dgvUSTVPositionen.SelectedRows(0).Index + 1 dgvUSTVPositionen.ClearSelection() dgvUSTVPositionen.Rows(selIndex).Selected = True dgvUSTVPositionen.CurrentCell = dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID") End If End If End Sub Private Sub UstCntlUSTV_AntragErstattungen1_EV_NEXT() Handles UstCntlUSTV_AntragErstattungen1.EV_NEXT If dgvErstattungspositionen.SelectedRows.Count > 0 Then If dgvErstattungspositionen.RowCount > dgvErstattungspositionen.SelectedRows(0).Index + 1 Then UstCntlUSTV_AntragErstattungen1.Enabled = True Dim selIndex = dgvErstattungspositionen.SelectedRows(0).Index + 1 dgvErstattungspositionen.ClearSelection() dgvErstattungspositionen.Rows(selIndex).Selected = True dgvErstattungspositionen.CurrentCell = dgvErstattungspositionen.SelectedRows(0).Cells("UStVEr_ID") End If End If End Sub Private Sub UstCntlUSTV_AntragPosition1_EV_PREV() Handles UstCntlUSTV_AntragPosition1.EV_PREV If dgvUSTVPositionen.SelectedRows.Count > 0 Then If dgvUSTVPositionen.SelectedRows(0).Index > 0 Then UstCntlUSTV_AntragPosition1.Enabled = True Dim selIndex = dgvUSTVPositionen.SelectedRows(0).Index - 1 dgvUSTVPositionen.ClearSelection() dgvUSTVPositionen.Rows(selIndex).Selected = True dgvUSTVPositionen.CurrentCell = dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID") End If End If End Sub Private Sub UstCntlUSTV_AntragErstattungen1_EV_PREV() Handles UstCntlUSTV_AntragErstattungen1.EV_PREV If dgvErstattungspositionen.SelectedRows.Count > 0 Then If dgvErstattungspositionen.SelectedRows(0).Index > 0 Then UstCntlUSTV_AntragErstattungen1.Enabled = True Dim selIndex = dgvErstattungspositionen.SelectedRows(0).Index - 1 dgvErstattungspositionen.ClearSelection() dgvErstattungspositionen.Rows(selIndex).Selected = True dgvErstattungspositionen.CurrentCell = dgvErstattungspositionen.SelectedRows(0).Cells("UStVEr_ID") End If End If End Sub Private Sub ustCntlUSTV_AntragPosition_KeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown If posTabisSelected = True Then If e.KeyValue = Keys.PageDown Then UstCntlUSTV_AntragPosition1_EV_NEXT() End If If e.KeyValue = Keys.PageUp Then UstCntlUSTV_AntragPosition1_EV_PREV() End If Else If e.KeyValue = Keys.PageDown Then UstCntlUSTV_AntragErstattungen1_EV_NEXT() End If If e.KeyValue = Keys.PageUp Then UstCntlUSTV_AntragErstattungen1_EV_PREV() End If End If End Sub Private Sub frmMDM_USTVAntrag_Shown(sender As Object, e As EventArgs) Handles Me.Shown If IsNumeric(txtAbfNr.Text) AndAlso CInt(txtAbfNr.Text) > 0 Then btnAbfertigungsNrVergeben.Visible = False Me.Top = 0 Me.Height = Screen.FromRectangle(Me.Bounds).WorkingArea.Size.Height End Sub Private Sub cboStatus_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboStatus.SelectedIndexChanged For Each b In FlowLayoutPanel.Controls b.visible = False Next Panel5.BackColor = Color.FromArgb(255, 255, 192) Panel5.ForeColor = Color.Black Select Case cboStatus._value Case cUSTVStatus.STAT_INBEARBEITUNG btnEingereicht.Visible = True btnStorno.Visible = True btnUnvollst.Visible = True Panel5.BackColor = Color.LightGray Case cUSTVStatus.STAT_UNVOLLSTAENDIG btnBearb.Visible = True btnEingereicht.Visible = True btnStorno.Visible = True Panel5.BackColor = Color.FromArgb(255, 192, 128) Case cUSTVStatus.STAT_EINGEREICHT 'btnBearb.Visible = True btnStorno.Visible = True btnTeilerstattung.Visible = True btnErstettel.Visible = True btnAbgelehnt.Visible = True btnNachforderung.Visible = True Panel5.BackColor = Color.SteelBlue Panel5.ForeColor = Color.White If USTV_ANTRAG.UStVAn_AntragEingereichtAm Is Nothing OrElse Not IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then Dim f As New frmDatumsabfrage("Bitte Einreichdatum eingeben", False) f.ShowDialog() If f.DialogResult = DialogResult.OK Then Dim pruefdatum As Date = CDate(f.Datum) USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) USTV_ANTRAG.UStVAn_AntragEingereichtAm = pruefdatum USTV_ANTRAG.SAVE() cboStatus.changeItem(cUSTVStatus.STAT_EINGEREICHT) init() End If End If Case cUSTVStatus.STAT_ABGELEHNT btnBearb.Visible = True btnEingereicht.Visible = True btnUnvollst.Visible = True btnStorno.Visible = True Panel5.BackColor = Color.Red Panel5.ForeColor = Color.White Case cUSTVStatus.STAT_NACHFORDERUNG btnBearb.Visible = True btnEingereicht.Visible = True 'btnUnvollst.Visible = True btnStorno.Visible = True Panel5.BackColor = Color.FromArgb(255, 192, 128) Case cUSTVStatus.STAT_ERSTATTET ' btnStorno.Visible = True Panel5.BackColor = Color.Green Panel5.ForeColor = Color.White lblAntragAbgeschlossen.Visible = True lblAntragAbgeschlossen.ForeColor = Color.DarkGreen Case cUSTVStatus.STAT_TEILERSTATTET ' btnErstettel.Visible = True ' btnStorno.Visible = True Panel5.BackColor = Color.Green Panel5.ForeColor = Color.White lblAntragAbgeschlossen.Visible = True lblAntragAbgeschlossen.ForeColor = Color.DarkGreen Case cUSTVStatus.STAT_STORNO ' btnStorno.Visible = True Panel5.BackColor = Color.IndianRed Panel5.ForeColor = Color.White lblAntragAbgeschlossen.Visible = True lblAntragAbgeschlossen.ForeColor = Color.IndianRed End Select cboStatus.BackColor = Panel5.BackColor cboStatus.ForeColor = Panel5.ForeColor Label5.BackColor = Panel5.BackColor Label5.ForeColor = Panel5.ForeColor Label6.ForeColor = Panel5.ForeColor Label6.ForeColor = Panel5.ForeColor End Sub Private Sub btnBearb_Click(sender As Object, e As EventArgs) Handles btnBearb.Click cboStatus.changeItem(cUSTVStatus.STAT_INBEARBEITUNG) End Sub Private Sub btnTeilerstattung_Click(sender As Object, e As EventArgs) Handles btnTeilerstattung.Click cboStatus.changeItem(cUSTVStatus.STAT_TEILERSTATTET) End Sub Private Sub btnUnvollst_Click(sender As Object, e As EventArgs) Handles btnUnvollst.Click cboStatus.changeItem(cUSTVStatus.STAT_UNVOLLSTAENDIG) End Sub Private Sub btnEingereicht_Click(sender As Object, e As EventArgs) Handles btnEingereicht.Click If USTV_ANTRAG.UStVAn_AntragEingereichtAm Is Nothing OrElse Not IsDate(USTV_ANTRAG.UStVAn_AntragEingereichtAm) Then Dim f As New frmDatumsabfrage("Bitte Einreichdatum eingeben", False) f.ShowDialog() If f.DialogResult = DialogResult.OK Then Dim pruefdatum As Date = CDate(f.Datum) USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) USTV_ANTRAG.UStVAn_AntragEingereichtAm = pruefdatum USTV_ANTRAG.SAVE() cboStatus.changeItem(cUSTVStatus.STAT_EINGEREICHT) init() End If End If End Sub Private Sub btnAbgelehnt_Click(sender As Object, e As EventArgs) Handles btnAbgelehnt.Click cboStatus.changeItem(cUSTVStatus.STAT_ABGELEHNT) End Sub Private Sub btnNachforderung_Click(sender As Object, e As EventArgs) Handles btnNachforderung.Click cboStatus.changeItem(cUSTVStatus.STAT_NACHFORDERUNG) End Sub Private Sub btnErstettel_Click(sender As Object, e As EventArgs) Handles btnErstettel.Click cboStatus.changeItem(cUSTVStatus.STAT_ERSTATTET) End Sub Private Sub btnStorno_Click(sender As Object, e As EventArgs) Handles btnStorno.Click cboStatus.changeItem(cUSTVStatus.STAT_STORNO) End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnNeuerEintrag.Click UstCntlUSTV_AntragPosition1.reset() UstCntlUSTV_AntragPosition1.UStV_POS = New cUStVPositionen(UStVAn_ID) UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr UstCntlUSTV_AntragPosition1.Enabled = True End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles btnEintragloeschen.Click If dgvUSTVPositionen.Rows.Count = 0 Then Exit Sub If vbYes = MsgBox("Möchten Sie den Eintrag wirklich löschen?", vbYesNoCancel) Then If UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID > 0 Then Dim POS As New cUStVPositionen(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) If POS.UStVPo_VZ_RKID IsNot Nothing AndAlso Not IsDBNull(POS.UStVPo_VZ_RKID) AndAlso IsNumeric(POS.UStVPo_VZ_RKID) Then MsgBox("Diese Position kann nicht gelöscht werden, sie wurde bereits abgerechnet und es existiert bereits ein Beleg dazu!") Exit Sub End If End If If UstCntlUSTV_AntragPosition1.cbxAPI IsNot Nothing AndAlso UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value IsNot Nothing Then 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 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId Is Nothing 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_interneNr, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr) If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then If DS.DELETE_COMPLETE() Then 'löschen nicht vorhandenen Verweis! SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL") End If 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 If DS.DELETE_COMPLETE() Then 'löschen nicht vorhandenen Verweis! SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL") End If End If End If End If Dim Leistungsbezeichnung = "" If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = 3 Then Leistungsbezeichnung = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, 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 Private Sub btnMail_Click(sender As Object, e As EventArgs) Handles btnMail.Click If Not cns_neAntraege.Items.ContainsKey("excel") Then Dim excel = New ToolStripMenuItem() With {.Text = "Excelauswertung starten", .Name = "excel", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cns_neAntraege.Items.Add(excel) AddHandler excel.Click, AddressOf mnuItem_Clicked End If If Not cns_neAntraege.Items.ContainsKey("mail") Then Dim mail = New ToolStripMenuItem() With {.Text = "Email (POS-Liste) generieren", .Name = "mail", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler mail.Click, AddressOf mnuItem_Clicked cns_neAntraege.Items.Add(mail) End If If Not cns_neAntraege.Items.ContainsKey("mailPDF") Then Dim mailPDF = New ToolStripMenuItem() With {.Text = "Email (PDF-RE) generieren", .Name = "mailPDF", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler mailPDF.Click, AddressOf mnuItem_Clicked cns_neAntraege.Items.Add(mailPDF) End If If Not cns_neAntraege.Items.ContainsKey("offeneAntraege") Then Dim oa = New ToolStripMenuItem() With {.Text = "nicht eingearbeitet USTV-Anträge", .Name = "offeneAntraege", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler oa.Click, AddressOf mnuItem_Clicked cns_neAntraege.Items.Add(oa) End If If Not cns_neAntraege.Items.ContainsKey("zuwenig") Then Dim oa = New ToolStripMenuItem() With {.Text = "zu wenig Email", .Name = "zuwenig", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler oa.Click, AddressOf mnuItem_Clicked cns_neAntraege.Items.Add(oa) End If cns_neAntraege.Show(Cursor.Position) End Sub Private Sub mnuItem_Clicked(sender As Object, e As EventArgs) cns_neAntraege.Hide() Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) If item IsNot Nothing Then If item.Name = "excel" Then excelAuswertung() ElseIf item.Name = "mail" Then mailmitExcelauswertung(False) ElseIf item.Name = "mailPDF" Then mailmitExcelauswertung(True) ElseIf item.Name = "zuwenig" Then zuwenigMail() ElseIf item.Name = "offeneAntraege" Then Dim USTV_ANTRAG As New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID) Dim frm As New frmUSTVoffeneAntraege(CDate(USTV_ANTRAG.UStVAn_ReDatVon), CDate(USTV_ANTRAG.UStVAn_ReDatBis), USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_Name) frm.Show() Else MsgBox("Funktion nicht implementiert!") End If End If End Sub Private Function setArchiv(SchnittstellenNr As Integer, RechnungsDatum As Date, RechnungsNr As String, Leistungsbez As String) As Boolean Dim updated As Boolean = False Dim sqlText = "" Dim test As Boolean = False Select Case SchnittstellenNr Case 1 'VERAG 360 GmbH; 4975 Suben 'UStV-Antragsnummer im Buchungssatz löschen. sqlText = "Update tblTrdinInvoice SET tblTrdinInvoice.UStVAn_ID = NULL WHERE tblTrdinInvoice.Rechnungsdatum = '" & RechnungsDatum.ToShortDateString & "' And tblTrdinInvoice.Rechnungsnummer = " & RechnungsNr If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 2 ' UStV-Antragsnummer im IDSDieseldatenArchiv löschen 'IDS alte Schnittstelle - OK sqlText = "UPDATE tblDieselArchiv SET tblDieselArchiv.UStVAn_ID = NULL FROM tblDieselArchiv INNER JOIN tbl_IDS_Länder ON tblDieselArchiv.[Outlet Country Code] = tbl_IDS_Länder.OutletCountryCode WHERE (((tblDieselArchiv.[Year Month Day])='" & RechnungsDatum.ToShortDateString & "') AND ((ISNULL([OBO Number],ISNULL([VR Number],[Payment summary number])))='" & RechnungsNr & "') AND ((tblDieselArchiv.KdNrVERAG)=" & USTV_ANTRAG.UStVAn_KuNr & ") AND ((tbl_IDS_Länder.LandNr)=" & USTV_ANTRAG.UStVAn_LandNr & "))" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 3 'Telepass ' UStV-Antragsnummer in tblMautITArchiv löschen.- NICHT MEHR AKTIV sqlText = "UPDATE tblMautITArchiv SET tblMautITArchiv.UStVAn_ID = NULL WHERE tblMautITArchiv.Verrechnungsdatum='" & RechnungsDatum.ToShortDateString & "' AND tblMautITArchiv.Code_Adressat_des_Kontoauszugs='" & RechnungsNr & "' AND ([Betrag_mit_Preisnachlass_oder_Preisnachlass]-[Nicht_mehrwertsteuerpflichtiger_Betrag])<>0" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 4 'MS Europe BV; GC Rijswijk alte Schnittstelle UStV-Antragsnummer in tblMSETransactionsArchiv löschen. - OK sqlText = "UPDATE tblMSETransactionsArchiv SET tblMSETransactionsArchiv.UStVAn_ID = NULL FROM tblMSETransactionsArchiv INNER JOIN Adressen ON tblMSETransactionsArchiv.[Customer ID] = Adressen.MSEKundenNr WHERE (((tblMSETransactionsArchiv.[Invoice Date])='" & RechnungsDatum.ToShortDateString & "') AND ((tblMSETransactionsArchiv.[Invoice ID])='" & RechnungsNr & "') AND ((tblMSETransactionsArchiv.[Specification Page])='" & Leistungsbez & "') AND ((Adressen.AdressenNr)=" & USTV_ANTRAG.UStVAn_KuNr & ") AND ((tblMSETransactionsArchiv.[Transaction Country])='" & Antrag_LandKz & "') AND ((tblMSETransactionsArchiv.[Original Currency])='" & USTV_ANTRAG.UStVAn_Währungscode & "') AND ((tblMSETransactionsArchiv.[Original VAT Amount])<>0))" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 5 'UNIONTANK - UTA - OK ' UStV-Antragsnummer in tblUTAArchiv löschen. sqlText = "UPDATE tblUTAArchiv SET tblUTAArchiv.UStVAn_ID = NULL FROM tblUTAArchiv INNER JOIN Adressen ON tblUTAArchiv.Kundennummer = Adressen.UTAKundenNr WHERE tblUTAArchiv.Rechnungsdatum='" & RechnungsDatum.ToShortDateString & "' AND tblUTAArchiv.Rechnungsnummer_pro_Lieferland=" & RechnungsNr & " AND tblUTAArchiv.Lieferland='" & VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO3LandFromLandNr(USTV_ANTRAG.UStVAn_LandNr) & "' AND tblUTAArchiv.Lieferlandwährung_ISO='" & USTV_ANTRAG.UStVAn_Währungscode & "' AND Adressen.AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr & " AND ([Gesamtbetrag_Brutto_in_Lieferlandwährung]-[Gesamtbetrag_Netto_in_Lieferlandwährung])<>0" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 6, 11 'PLOSE-alte Logik -> aus Transaktionen und neue Logik -> aus Rechnungsdaten (immer beide Ausführen!) sqlText = "Update [tblPLOSE_Details] set plose_Archiv=0, [plose_ArchiviertDatum]=NULL, UStVAn_ID = NULL From [tblPLOSE_Details] INNER Join Adressen On PLOSEKundenNr=plose_POLSEKundennummer INNER Join [tblPLOSE_Produktbeschreibung] ON [plp_ProductCode]=[plose_ProduktCode] WHERE cast(plose_RechnungsDatum As Date) = '" & RechnungsDatum.ToShortDateString & "' And AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr & " AND plose_RechnungsNr = '" & RechnungsNr & "' And plose_LieferantCode IN (0,1,7,9) " If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") sqlText = "Update [tblPLOSE_Inv_Data] set plInv_Archiv=0, [plInv_ArchiviertDatum]=NULL, plInv_UStVAn_ID = NULL From [tblPLOSE_Inv_Data] INNER Join Adressen On PLOSEKundenNr=plInv_PLOSEKundennummer WHERE cast(plInv_SupplierRechnungsDatum As Date) = '" & RechnungsDatum.ToShortDateString & "' And AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr & " AND [plInv_SupplierRechnungsNr] = '" & RechnungsNr & "'" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 7 'RMC - neue Schnittstelle - OK sqlText = "Update [tblRMCImport] Set rmc_archiv=0, [rmc_archiviertDatum] = NULL, UStVAn_ID = NULL FROM [tblRMCImport] inner join adressen on adressen.WölflKundenNr = tblRMCImport.rmc_kdNr Where cast(rmc_reDatum as date) = '" & RechnungsDatum.ToShortDateString & "' And rmc_reNr = '" & RechnungsNr & "' AND adressen.AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") sqlText = "Update [tblRMCImport] Set rmc_archiv=0, [rmc_archiviertDatum] = NULL, UStVAn_ID = NULL FROM [tblRMCImport] inner join adressen on adressen.weitereWölflKundenNr = tblRMCImport.rmc_kdNr Where cast(rmc_reDatum as date) = '" & RechnungsDatum.ToShortDateString & "' And rmc_reNr = '" & RechnungsNr & "' AND adressen.AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 8, 12 'IDS neue Schnittstelle - OK sqlText = "update tblIDSTransactionsNew set UStVAn_ID = NULL From tblIDSTransactionsNew INNER Join tbl_IDS_Länder On tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode Where tblIDSTransactionsNew.[YearMonthDay] = '" & RechnungsDatum.ToShortDateString & "' And ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) = '" & RechnungsNr & "' And tblIDSTransactionsNew.KdNrVERAG = " & USTV_ANTRAG.UStVAn_KuNr & " And tbl_IDS_Länder.[Lieferland_ISO2] = '" & Antrag_LandKz & "'" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 9 'MSE neue Schnitttelle - OK If RechnungsNr.ToString.Length >= 15 Then Dim invoiceNo = RechnungsNr.ToString.Substring(0, 7) Dim customerNo = RechnungsNr.ToString.Substring(10, 5) sqlText = "UPDATE [tblMSEInvoices] set UStVAn_ID = NULL, archiv = 0, archiviertDatum = NULL FROM [tblMSEInvoices] inner join [tblMSECustomers] on tblMSEInvoices.customer_number = tblMSECustomers.customer_id WHERE cast(invoice_date as date) = '" & RechnungsDatum.ToShortDateString & "' And invoice_id = " & invoiceNo & " And tblMSECustomers.partner_customer_number= " & USTV_ANTRAG.UStVAn_KuNr & " And country = '" & Antrag_LandKz & "' and tblMSEInvoices.customer_number = " & customerNo If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") End If Case 10 ' UTA neue Schnittstelle - OK sqlText = "UPDATE [tblUTAImportNew] set UStVAn_ID = NULL, archiv = 0, archiviertDatum = NULL from [tblUTAImportNew] INNER JOIN Adressen ON [tblUTAImportNew].Kundennummer = Adressen.UTAKundenNr WHERE cast(Rechnungsdatum as date) = '" & RechnungsDatum.ToShortDateString & "' And Rechnungsnummer_pro_Lieferland = " & RechnungsNr & " And Adressen.AdressenNr= " & USTV_ANTRAG.UStVAn_KuNr & " AND Lieferland_ISO2 = '" & Antrag_LandKz & "'" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") End Select If (SchnittstellenNr > 0 And SchnittstellenNr < 13) Then If Not updated Then If Not vbYes = MsgBox("Fehler beim zurücksetzen der USTVA-ID!" & vbNewLine & "Möchten Sie den Eintrag trotzdem löschen?", vbYesNoCancel) Then Return updated Else Return True End If Else Return updated End If Else Return True End If End Function Private Function excelAuswertung(ByRef Optional filepath As String = "", Optional feedback As Boolean = False, Optional openExcel As Boolean = True) As Boolean Dim sqlStr = "Select [UStVPo_ReDat] As InvoiceDate , [UStVPo_ReNr] As InvoiceNumber, antr.UStVAn_Name As Company, LandKz as CountryOfRefund ,UStVAn_Währungscode as Currency ,[UStVPo_Leistender] as SupplierName, leist.[UstV_Leistender_Strasse] AS SupplierStreet, leist.[UstV_Leistender_StrasseNr] as SupplierStreetNumber, leist.[UstV_Leistender_PLZ] as SupplierPostalCode, leist.[UstV_Leistender_Stadt] as SupplierCity, leist.[UstV_Leistender_Land] as SupplierCountry, leist.[UstV_Leistender_UstNr] as SupplierVAT_TaxNumber, [UStVPo_Leistungsbezeichnung] as ExpenseCategory ,Round((100 *[UStVPo_USteuerbetrag] / (isnull([Länderverzeichnis für die Außenhandelsstatistik].Steuersatz,1) * 100) ),2) as ExpenseNetAmount, [UStVPo_USteuerbetrag] as ExpenseVATAmount,Round(Round((100 *[UStVPo_USteuerbetrag] / (isnull([Länderverzeichnis für die Außenhandelsstatistik].Steuersatz,1) * 100) ),2) + [UStVPo_USteuerbetrag],2) as ExpenseGrossAmount, [Länderverzeichnis für die Außenhandelsstatistik].Steuersatz * 100 as TaxRate From [tblUStVPositionen] inner Join [tblUStVLeistender] as leist on leist.UStV_Leistender = [tblUStVPositionen].[UStVPo_Leistender] inner Join [tblUStVAntrag] as antr on antr.UStVAn_ID = [tblUStVPositionen].UStVAn_ID inner join [Länderverzeichnis für die Außenhandelsstatistik] on UStVAn_LandNr=Landnr Where [tblUStVPositionen].UStVAn_ID =" & UStVAn_ID & " ORDER BY UStVPo_ID" Dim dt = SQL.loadDgvBySql(sqlStr, "FMZOLL") If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then filepath = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW_(dt, {"N1:N" & (dt.Rows.Count + 1), "O1:O" & (dt.Rows.Count + 1), "P1:P" & (dt.Rows.Count + 1)},,,, IIf(USTV_ANTRAG.UStVAn_Währungscode = "EUR", "€", ""), True,,,, openExcel) Return True Else If feedback Then MsgBox("keine Daten vorhanden!") Return False End If End Function Private Sub mailmitExcelauswertung(Optional withPDF As Boolean = False) Try Dim outl As New Outlook.Application Dim Mail As Microsoft.Office.Interop.Outlook.MailItem Mail = outl.CreateItem(0) Dim filepath = "" If excelAuswertung(filepath, False, False) Then Mail.Attachments.Add(filepath, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) End If If withPDF Then Mail.Attachments.Add(PDFInvoicesPath(""), Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) Dim subject As String = "" subject &= IIf(USTV_ANTRAG.UStVAn_Name <> "", USTV_ANTRAG.UStVAn_Name & "_", "") subject &= IIf(Antrag_LandKz <> "", Antrag_LandKz & "_", "") subject &= IIf(USTV_ANTRAG.UStVAn_ReDatVon IsNot Nothing AndAlso USTV_ANTRAG.UStVAn_ReDatBis IsNot Nothing, CDate(USTV_ANTRAG.UStVAn_ReDatVon).ToShortDateString & "-" & CDate(USTV_ANTRAG.UStVAn_ReDatBis).ToShortDateString, "") Mail.Subject = subject Dim TextHTML = "" TextHTML &= "Ladies and Gentlemen,
" TextHTML &= "
" TextHTML &= "In the attachment we will send you the Excel list and the corresponding invoices for the VAT refund.
" TextHTML &= "Please submit these invoices to the tax office.
" TextHTML &= "We are always available to answer more questions.
" TextHTML &= "Mit freundlichen Grüßen
" TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
" TextHTML &= "
" Mail.HTMLBody = "
" & TextHTML & SDL.cFakturierung.getSignature("DE", VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA_ID) & "
" Mail.Display() Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler beim Öffnen der Mail!") End Try End Sub Private Sub zuwenigMail() Try Dim spracheMail = "" Dim listOfTextconserven = New cTextkonserve_LIST(6, "", 19) Select Case USTV_ANTRAG.UStVAn_LandKz Case "HR", "SRB" : spracheMail = "SRB" Case "A", "AT", "D", "DE", "CH" : spracheMail = "DE" Case "RO" : spracheMail = "RO" Case Else spracheMail = "DE" End Select If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheMail) Then Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheMail) If r IsNot Nothing Then Dim Mail_Subject = "" Dim Mail_HTMLBody = "" Dim Mail_To = "" Dim Mail_CC = "" Dim Mail_BCC = "" Mail_Subject = r.txt_betreff Dim TextHTML = "" TextHTML &= r.txt_text 'Mail_Subject = Mail_Subject.Replace("%BelegNr%", (USTV_ANTRAG.UStVAn_ReDatVon) ' Mail_Subject = Mail_Subject.Replace("%Belegdatum%", row.Item("Belegdatum")) ' Mail_Subject = Mail_Subject.Replace("%Name%", row.Item("Name")) ' Mail_Subject = Mail_Subject.Replace("%AbfertigungsNr%", row.Item("AbfertigungsNr")) ' Mail_Subject = Mail_Subject.Replace("%FilialenNr%", row.Item("FilialenNr")) ' Mail_Subject = Mail_Subject.Replace("%MWST%", row.Item("MWST")) ' Mail_Subject = Mail_Subject.Replace("%Betrag%", row.Item("Betrag")) ' TextHTML = TextHTML.Replace("%BelegNr%", row.Item("Belegnummer")) ' TextHTML = TextHTML.Replace("%Belegdatum%", row.Item("Belegdatum")) ' TextHTML = TextHTML.Replace("%Betrag%", row.Item("Betrag")) ' TextHTML = TextHTML.Replace("%Name%", row.Item("Name")) ' TextHTML = TextHTML.Replace("%AbfertigungsNr%", row.Item("AbfertigungsNr")) ' TextHTML = TextHTML.Replace("%MWST%", row.Item("MWST")) ' TextHTML = TextHTML.Replace("%FilialenNr%", row.Item("FilialenNr")) Mail_HTMLBody = "
" & TextHTML & "
" Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(USTV_ANTRAG.UStVAn_KuNr) If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then Mail_To &= AD.E_Mail & ";" If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then Mail_To &= AD.E_Mail2 & ";" Mail_HTMLBody &= "


" & cFakturierung.getSignature(USTV_ANTRAG.UStVAn_LandKz, 19) Dim outl As New Outlook.Application Dim Mail As Microsoft.Office.Interop.Outlook.MailItem Mail = outl.CreateItem(0) Mail.Subject = Mail_Subject Mail.HTMLBody = Mail_HTMLBody Mail.To = Mail_To Mail.CC = Mail_CC Mail.BCC = Mail_BCC For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim pdf As String = "" pdf = func.getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, -1, True, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If pdf <> "" Then Mail.Attachments.Add(pdf, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue) End If Next Try Catch ex2 As Exception MsgBox(ex2.Message) End Try Mail.Display() End If End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler beim Öffnen der Mail!") End Try End Sub Private Sub dgvUSTVPositionen_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvUSTVPositionen.CellContentDoubleClick Try If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then Dim pdf As String = "" pdf = func.getPDF(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_SchnittstellenNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReDat").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value, False, False, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If System.IO.File.Exists(pdf) Then Process.Start(pdf) End If End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default End Try Me.Cursor = Cursors.Default End Sub 'Private Function getDaID_OLD(SchnittstellenNr, reDat, reNr) ' Dim da_id = -1 ' Select Case If(SchnittstellenNr, -1) ' Case 1 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) RK_ID FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & reDat & "' and Rechnungsausgang.RechnungsNr='" & reNr & "' AND FilialenNr = 4814 AND RK_ID is not null", "FMZOLL",,, -1) ' 'Case 6, 0 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and isnull(plose_RechnungsNr,plInv_SupplierRechnungsNr)='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) ' Case 6, 0, 11 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and plInv_SupplierRechnungsNr='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1) ' Case 4, 9 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblMSEInvoices] as inv inner join tblMSECustomers on inv.customer_number = customer_id where invoice_date='" & reDat & "' and country='" & Antrag_LandKz & "' AND partner_customer_number = " & USTV_ANTRAG.UStVAn_KuNr & " AND daId is not null", "FMZOLL",,, -1) ' Case 10 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblUTAImportNew] where Rechnungsdatum='" & reDat & "' and Abrechnungsnummer='" & reNr & "' and Lieferland_ISO2='" & Antrag_LandKz & "' AND daId is not null", "FMZOLL",,, -1) ' Case 7 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & reDat & "' and rmc_reNr='" & reNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_daId] is not null", "FMZOLL",,, -1) ' Case 8 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNew.daId FROM [tblIDSTransactionsNew] INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode LEFT JOIN tblIDSInvoicesNew on tblIDSInvoicesNew.CustomerCode = tblIDSTransactionsNew.CustomerCode and tblIDSInvoicesNew.Invoicenumber = Paymentsummarynumber where tblIDSTransactionsNew.[YearMonthDay] ='" & reDat & "' AND ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & reNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL",,, -1) ' End Select ' Return da_id 'End Function Private Sub cbxLand_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxLand.SelectedValueChanged lblLand.Text = IIf(cbxLand.SelectedItem IsNot Nothing, cbxLand.SelectedItem.Text, "") setinfofields() End Sub Private Sub picPDF_Click(sender As Object, e As EventArgs) Handles picPDF.Click If dgvUSTVPositionen.SelectedRows.Count = 0 Then Exit Sub Try Dim list As New List(Of String) If dgvUSTVPositionen.SelectedRows.Count > 0 Then Dim nummerierung As Boolean = False Select Case MsgBox("Soll eine Nummerierung auf den PDF Dokumenten angegeben werden?", vbYesNoCancel) Case vbYes : nummerierung = True Case vbNo : nummerierung = False Case Else : Exit Sub End Select For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim pdf As String = "" pdf = func.getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), True, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If pdf <> "" Then list.Add(pdf) Next End If If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub If list.Count > 1 Then Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("RG_" & Now.ToString("ddMMyyyyHHmmss") & ".pdf", ".pdf", False, False) If FormularManagerNEU.MergePdfFiles(list, pathPDF) Then Process.Start(pathPDF) End If Else Dim PDFFile As String = "" PDFFile = list(0) Process.Start(PDFFile) End If Me.Cursor = Cursors.Default Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default End Try End Sub Private Sub dgvUSTVPositionen_Sorted(sender As Object, e As EventArgs) Handles dgvUSTVPositionen.Sorted For Each r As DataGridViewRow In dgvUSTVPositionen.Rows Dim da_id If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then da_id = r.Cells("UStVPo_daId").Value Else da_id = func.getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Antrag_LandKz, USTV_ANTRAG) End If If da_id > 0 Then DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf Next End Sub 'Private Function getPDF(schnittstellenNr, ReNr, ReDat, daId, nummierung, PDFisProtected, LandKZ, USTVA) As String ' Dim schnnittstellenNr = schnittstellenNr ' Dim dsID ' If Not IsDBNull(daId) AndAlso IsNumeric(daId) AndAlso daId > 0 Then ' dsID = daId ' Else ' dsID = func.getDaID_OLD(schnnittstellenNr, ReDat, ReNr, LandKZ, USTVA) ' End If ' If dsID < 0 Then Return "" ' 'Anschrift Nummerierung: ' Dim x = 100 ' Dim y = 10 ' Dim width = 300 ' Dim height = 10 ' Dim mSize = 10 ' Dim mFont = "" ' Select Case schnnittstellenNr ' Case 1 ' If dsID > 0 Then ' Me.Cursor = Cursors.WaitCursor ' Dim path As String ' cFakturierung.doRechnungsDruck_SRorER(dsID,, False, 4, path) ' If nummierung > 0 Then ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path) ' PdfReader.unethicalreading = True ' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager ' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) ' For page As Integer = 1 To pdfReader.NumberOfPages ' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) ' Next ' pdfReader.Close() ' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(path, listTowrite, , , , ,) ' Return PdfTmp ' Else ' Return path ' End If ' End If ' Case 8 ' Me.Cursor = Cursors.WaitCursor ' Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) ' Dim path_src As String = ds.OPEN_SINGLE(False) ' If path_src = "" Then Return "" ' Try ' Dim fi As New System.IO.DirectoryInfo(path_src) ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path_src) ' Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(fi.Name, fi.Extension,, False, "IDS-Rechnungen") ' Dim srcDoc As New itextsharp.text.Document() ' Dim PdfCopyProvider As New itextsharp.text.pdf.PdfCopy(srcDoc, New FileStream(TMP_Path_New, System.IO.FileMode.Create)) ' PdfCopyProvider.SetFullCompression() ' srcDoc.Open() ' PdfReader.unethicalreading = True ' Dim pages As New List(Of Integer)() ' For page As Integer = 1 To pdfReader.NumberOfPages ' Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy() ' Dim currentpagetext As String = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy) ' Dim searchtext As String = ReNr ' Dim impPage As itextsharp.text.pdf.PdfImportedPage = Nothing ' If (currentpagetext.Contains(searchtext)) Then ' If page > pdfReader.NumberOfPages Then ' MsgBox("Seitenanzahl überschritten!") ' srcDoc.Close() : pdfReader.Close() ' Return False ' End If ' Try ' impPage = PdfCopyProvider.GetImportedPage(pdfReader, page) ' ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite ' PdfCopyProvider.SetPageSize(New itextsharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, pdfReader.GetPageRotation(page))) ' ' ----- PDF Seite in das neue Dokument einfügen ' If impPage IsNot Nothing Then PdfCopyProvider.AddPage(impPage) ' Catch ex As Exception ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) ' End Try ' End If ' Next ' srcDoc.Close() ' pdfReader.Close() ' If nummierung > 0 Then ' Dim pdfReadernNew As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(TMP_Path_New) ' pdfReadernNew.unethicalreading = True ' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager ' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) ' For page As Integer = 1 To pdfReadernNew.NumberOfPages ' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y - 6, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) ' Next ' pdfReader.Close() ' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(TMP_Path_New, listTowrite, , , , ,) ' Return PdfTmp ' Else ' Return TMP_Path_New ' End If ' Catch ex As Exception ' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) ' End Try ' Case Else ' If dsID > 0 Then ' Me.Cursor = Cursors.WaitCursor ' Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) ' If nummierung > 0 Then ' 'wenn PDF nicht beschreibbar, dann mittels Stamp! ' If PDFisProtected Then ' Dim tempPathNew = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(DS.da_name & "_modified", ".pdf", True, False, "USTVA") ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) ' PdfReader.unethicalreading = True ' Dim fs = New FileStream(tempPathNew, FileMode.Create, FileAccess.Write, FileShare.None) ' Dim stamper = New PdfStamper(pdfReader, fs) ' For page As Integer = 1 To pdfReader.NumberOfPages ' Dim canvas As PdfContentByte = stamper.GetOverContent(page) ' Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED) ' canvas.SetFontAndSize(bf, 12) ' canvas.BeginText() ' 'The origin (0,0) is at the bottom-left corner of the page and represent coordinates in points!!!!! ' Dim _height = pdfReader.GetPageSizeWithRotation(page).GetTop(25) 'oberer Rand ' Dim _width = pdfReader.GetPageSizeWithRotation(page).GetRight(0) / 2 'Mitte ' canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, _width, _height, 0) ' 'canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, 350, 550, 0) ' canvas.EndText() ' 'listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) ' Next ' stamper.Close() ' pdfReader.Close() ' Return tempPathNew ' Else ' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH) ' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager ' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues) ' For page As Integer = 1 To pdfReader.NumberOfPages ' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page)) ' Next ' pdfReader.Close() ' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(DS.GET_TOP1_PATH, listTowrite, , , , ,) ' Return PdfTmp ' End If ' Else ' Return DS.GET_TOP1_PATH ' End If ' End If ' End Select 'End Function Private Sub reorderUSTVAPositions(UStVAn_ID As Integer) If UStVAn_ID < 0 Then Exit Sub Dim dtUSTVA As DataTable = SQL.loadDgvBySql("SELECT tblUStVPositionen.UStVPo_ID FROM tblUStVPositionen WHERE tblUStVPositionen.UStVAn_ID=" & UStVAn_ID & " ORDER BY tblUStVPositionen.UStVPo_ID ", "FMZOLL") Dim counter As Integer = 0 For Each row In dtUSTVA.Rows counter = counter + 1 Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, row("UStVPo_ID")) If USTV_POS.UStVPo_ID <> counter Then SQL.doSQL("UPDATE tblUStVPositionen SET UStVPo_ID = " & counter & " WHERE UStVAn_ID=" & UStVAn_ID & " AND UStVPo_ID=" & USTV_POS.UStVPo_ID, "FMZOLL") End If Next End Sub Private Sub reorderUSTVAErstattzungen(UStVAn_ID As Integer) If UStVAn_ID < 0 Then Exit Sub Dim dtUSTVA As DataTable = SQL.loadDgvBySql("SELECT UStVEr_ID FROM tblUStVErstattung WHERE UStVAn_ID=" & UStVAn_ID & " ORDER BY tblUStVErstattung.UStVEr_ID ", "FMZOLL") Dim counter As Integer = 0 For Each row In dtUSTVA.Rows counter = counter + 1 Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(UStVAn_ID, row("UStVEr_ID")) If USTV_POS.UStVEr_ID <> counter Then SQL.doSQL("UPDATE tblUStVErstattung SET UStVEr_ID = " & counter & " WHERE UStVAn_ID=" & UStVAn_ID & " AND UStVEr_ID=" & USTV_POS.UStVEr_ID, "FMZOLL") End If Next End Sub Private Sub dgvUSTVPositionen_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles dgvUSTVPositionen.PreviewKeyDown If dgvUSTVPositionen.SelectedRows.Count <> 1 Then Exit Sub If (e.KeyCode) = Keys.Add AndAlso e.Control Then Dim id As Integer = dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID").Value initPosition(id) dgvUSTVPositionen.GetOrder() Dim USTV_POS_temp As New cUStVPositionen(UStVAn_ID, id) Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen USTV_POS.UStVAn_ID = USTV_POS_temp.UStVAn_ID USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr USTV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr USTV_POS.UStVPo_ReDat = USTV_POS_temp.UStVPo_ReDat USTV_POS.UStVPo_ReNr = USTV_POS_temp.UStVPo_ReNr USTV_POS.UStVPo_SchnittstellenNr = -1 USTV_POS.UStVPo_Schnittstelle = False USTV_POS.UStVPo_Leistungsbezeichnung = USTV_POS_temp.UStVPo_Leistungsbezeichnung USTV_POS.UStVPo_Leistender = USTV_POS_temp.UStVPo_Leistender USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_USteuerbetragEUR = 0 USTV_POS.UStVPo_USteuerbetrag = 0 USTV_POS.UStVPo_Umrechnungskurs = 1 USTV_POS.UStVPo_Zeitstempel = Now() If USTV_POS.SAVE() Then init() dgvUSTVPositionen.SetOrder() Else End If End If End Sub Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged If TabControl1.SelectedTab Is TabPage1 Then init() posTabisSelected = True ElseIf TabControl1.SelectedTab Is TabPage2 Then initdgvErstattungen() posTabisSelected = False txtSummeEUR._value = 0 End If picPDF.Visible = posTabisSelected btnAntrageeinarbeiten.Enabled = posTabisSelected cbxArchivierteEintracheNochmalsEinarbetien.Enabled = posTabisSelected End Sub Private Sub setinfofields() Dim dtSteuerNr As DataTable If Not USTV_ANTRAG Is Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_LandNr) Then dtSteuerNr = SQL.loadDgvBySql("SELECT * FROM tblSteuernummern WHERE AdressenNr = " & USTV_ANTRAG.UStVAn_KuNr & " and tblSteuernummern.LandNr =" & IIf(USTV_ANTRAG.UStVAn_LandNr Is Nothing, "", USTV_ANTRAG.UStVAn_LandNr), "FMZOLL") If dtSteuerNr.Rows.Count > 0 Then txtStNr.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt")), dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt"), "") txtGueltig.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum")), dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum"), "") End If Else dtSteuerNr = SQL.loadDgvBySql("SELECT * FROM tblSteuernummern WHERE AdressenNr = " & KundenNr & " and tblSteuernummern.LandKz ='" & lblLand.Text & "'", "FMZOLL") If dtSteuerNr.Rows.Count > 0 Then txtStNr.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt")), dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt"), "") txtGueltig.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum")), dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum"), "") End If End If End Sub Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click UstCntlUSTV_AntragErstattungen1.reset() UstCntlUSTV_AntragErstattungen1.UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen() UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_ID = USTV_ANTRAG.getMaxPosNrErst() UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_interneNr = USTV_ANTRAG.getMaxinternePosNrErst() UstCntlUSTV_AntragErstattungen1.Enabled = True End Sub Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click If dgvErstattungspositionen.Rows.Count = 0 Then Exit Sub If vbYes = MsgBox("Möchten Sie den Erstattungseintrag wirklich löschen?", vbYesNoCancel) Then If UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_daId IsNot Nothing Then If UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_daId < 0 Then Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVERS_" & UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVAn_ID & "_" & UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_interneNr, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr) If DS IsNot Nothing Then DS.DELETE_COMPLETE() End If ElseIf UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_daId > 0 Then Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_daId) If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then DS.DELETE_COMPLETE() End If End If End If If UstCntlUSTV_AntragErstattungen1.UStV_ERS.DELETE(UstCntlUSTV_AntragErstattungen1.UstV_AN.UStVAn_ID, UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_ID) Then checkIfMWSTEingangAbrechung() reorderUSTVAErstattzungen(UstCntlUSTV_AntragErstattungen1.UstV_AN.UStVAn_ID) initdgvErstattungen() End If End If End Sub Private Sub checkIfMWSTEingangAbrechung() Dim count_nichtMWSTOffen As Integer = -1 count_nichtMWSTOffen = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVErstattung] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and isnull([GutschriftsDatum],0) = 0 and UStVEr_Importfilename is not null", "FMZOLL")) If count_nichtMWSTOffen = 0 Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_MWSTEingang_offen = 0 WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") End If End Sub Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click getValue(USTV_ANTRAG) Dim id = USTV_ANTRAG.SAVEID() VERAG_PROG_ALLGEMEIN.cMDMFunctionsAllgemein.Update_UStVASummenNeuBerechnen_USTVA(id) USTV_ANTRAG = New cUSTVAntrag(id) If IsDBNull(USTV_ANTRAG.FilialenNr) OrElse USTV_ANTRAG.FilialenNr Is Nothing OrElse USTV_ANTRAG.FilialenNr = 0 Then MsgBox("Für das Speditionsbuch muss die Filiale eingegeben werden.") : Exit Sub If IsDBNull(USTV_ANTRAG.AbfertigungsNr) OrElse USTV_ANTRAG.AbfertigungsNr Is Nothing OrElse USTV_ANTRAG.AbfertigungsNr <= 0 Then MsgBox("Für das Speditionsbuch muss die Abfertigungs-Nr eingegeben werden.") : Exit Sub Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) If spedBuch.hasEntry Then Dim frmNacherfassung As New frmNacherfassungNEU() frmNacherfassung.srchFiliale = USTV_ANTRAG.FilialenNr frmNacherfassung.srchAbfertigungsnummer = USTV_ANTRAG.AbfertigungsNr frmNacherfassung.srchUnterNr = 0 frmNacherfassung.ShowDialog(Me) If frmNacherfassung.txtErfassungsnummer.Text = "" Then frmNacherfassung.txtErfassungsnummer.Text = USTV_ANTRAG.UStVAn_ID frmNacherfassung.txtErfassungsnummer.Focus() End If If frmNacherfassung.txtErfassungsnummer.Text = "" OrElse frmNacherfassung.txtErfassungsnummer.Text <> USTV_ANTRAG.UStVAn_ID Then MsgBox("Antrags-ID: " & USTV_ANTRAG.UStVAn_ID & " wurde falsch gesetzt!") End If Exit Sub End If If DiffernezbetragEUR = 0 Then If Not vbYes = MsgBox("Der Erstattungsbetrag beträgt 0 EUR." & vbNewLine & "Fortfahren?", vbYesNo) Then Exit Sub End If dTLANDEU = (New SQL).loadDgvBySql("select LandKz, MitgliedslandEU from Währungstabelle where LandKz is not null", "FMZOLL") Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = USTV_ANTRAG.UStVAn_LandKz).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault() Dim kunde As New cKunde(USTV_ANTRAG.UStVAn_KuNr) Dim kunde_erw As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) Dim BezAntrag = USTV_ANTRAG.UStVAn_AntragArt & "-Rückerstattung " If kunde_erw IsNot Nothing Then If USTV_ANTRAG.UStVAn_AntragArt = "MÖST" Then Select Case kunde_erw.kde_Fakturierung_Sprache Case "EN", "TR" : BezAntrag = "Excise duty " Case "RO" : BezAntrag = "Rambursare acciza " End Select Else Select Case kunde_erw.kde_Fakturierung_Sprache Case "EN", "TR" : BezAntrag = "VAT refund " Case "RO" : BezAntrag = "Rambursare TVA " End Select End If End If With spedBuch .Abfertigungsdatum = Today() .AvisUhrzeit = Now() .Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME .ErfassungsNr = USTV_ANTRAG.UStVAn_ID .AnzahlSonstiges = 1 .Abfertigungsart = IIf(isEU, 114, 115) .Abfertigungsanzahl = 1 .Packstücke = BezAntrag & Antrag_LandKz & " / " & USTV_ANTRAG.UStVAn_ReDatVon & " - " & USTV_ANTRAG.UStVAn_ReDatBis .VermittlerKundenNr = IIf(kunde.KundenNrZentrale IsNot Nothing, kunde.KundenNrZentrale, kunde.KundenNr) If .VermittlerKundenNr = 140000 Or .VermittlerKundenNr = 150000 Then .EmpfängerKundenNr = USTV_ANTRAG.UStVAn_KuNr End If .Rechnungsbetrag = DiffernezbetragEUR * -1 If .SAVE() Then MsgBox("Sped-Eintrag wurde angelegt") init() End If End With End Sub Private Sub picExcel_Click(sender As Object, e As EventArgs) Handles picExcel.Click 'Dim dtNew As DataTable = cProgramFunctions.dgridViewTods(dgvUSTVPositionen, True, IIf(dgvUSTVPositionen.SelectedRows.Count > 0, True, False)) Dim posId As String = "" Dim counter = 0 For Each dgvRow As DataGridViewRow In dgvUSTVPositionen.SelectedRows posId &= "'" & dgvRow.Cells("UStVPo_ID").Value & "'" counter = counter + 1 If (dgvUSTVPositionen.SelectedRows.Count <> 1 And counter <> dgvUSTVPositionen.SelectedRows.Count) Then posId &= "," Next func.generatePosList(USTV_ANTRAG, posId, Antrag_LandKz, txtStNr.Text, True, "excel", Nothing) End Sub Private Sub initdgvErstattungen(Optional posIndex As Integer = -1) With dgvErstattungspositionen .ClearSelection() If UStVAn_ID <= 0 Then Exit Sub .SET_SQL("SELECT [UStVAn_ID] ,[UStVEr_ID],[UStVEr_USteuerbetragEUR],[Belegdatum],[Belegnummer],[GutschriftsDatum],[GutschriftsNr],UStVEr_VZ,UStVEr_RZVZ,UStVEr_Bank,UStVEr_Differenz,[Berufungsdatum],[Berufungshöhe],[Berufungsgrund],[Bemerkung],[UStVEr_Umrechnungskurs],[UStVEr_USteuerbetrag],[UStVEr_Sachbearbeiter],[UStVEr_Zeitstempel] FROM [tblUStVErstattung] where UStVAn_ID=" & UStVAn_ID & " ORDER BY UStVEr_ID", "FMZOLL") .LOAD() .RowTemplate.Height = 20 .AllowUserToOrderColumns = False .AllowUserToResizeRows = False If .Columns.Count > 0 Then .Columns("UStVAn_ID").Visible = False .Columns("UStVEr_ID").HeaderText = "Pos" .Columns("UStVEr_ID").Width = 40 .Columns("Belegdatum").Width = 80 .Columns("Belegnummer").Width = 130 .Columns("UStVEr_USteuerbetrag").HeaderText = "USt-Betrag" .Columns("UStVEr_USteuerbetrag").Width = 110 .Columns("UStVEr_USteuerbetrag").DefaultCellStyle.Format = "N2" .Columns("UStVEr_USteuerbetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("GutschriftsDatum").HeaderText = "GS-Datum" .Columns("GutschriftsNr").HeaderText = "GS-Nr" .Columns("GutschriftsDatum").Width = 70 .Columns("GutschriftsNr").Width = 100 .Columns("Berufungsdatum").HeaderText = "BE-Datum" .Columns("Berufungshöhe").HeaderText = "BE-Höhe" .Columns("Berufungsgrund").HeaderText = "BE-Grund" .Columns("UStVEr_VZ").HeaderText = "VZ" .Columns("UStVEr_RZVZ").HeaderText = "RZVZ" .Columns("UStVEr_Bank").HeaderText = "Bank" .Columns("UStVEr_Differenz").HeaderText = "Diff," .Columns("UStVEr_VZ").DefaultCellStyle.Format = "N2" .Columns("UStVEr_VZ").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVEr_RZVZ").DefaultCellStyle.Format = "N2" .Columns("UStVEr_RZVZ").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVEr_Bank").DefaultCellStyle.Format = "N2" .Columns("UStVEr_Bank").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVEr_Differenz").DefaultCellStyle.Format = "N2" .Columns("UStVEr_Differenz").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("Berufungsdatum").Width = 70 .Columns("Berufungshöhe").Width = 80 .Columns("Berufungsgrund").Width = 100 .Columns("Bemerkung").Width = 200 .Columns("UStVEr_Umrechnungskurs").HeaderText = "Umrechnungskurs" .Columns("UStVEr_Umrechnungskurs").Width = 60 .Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Format = "N2" .Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVEr_USteuerbetragEUR").HeaderText = "USt-Betrag EUR" .Columns("UStVEr_USteuerbetragEUR").Width = 110 .Columns("UStVEr_USteuerbetragEUR").DefaultCellStyle.Format = "N2" .Columns("UStVEr_USteuerbetragEUR").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight .Columns("UStVEr_Sachbearbeiter").HeaderText = "Sachbearbeiter" .Columns("UStVEr_Sachbearbeiter").MinimumWidth = 100 .Columns("UStVEr_Sachbearbeiter").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill .Columns("UStVEr_Zeitstempel").Visible = False End If If .RowCount < 1 Then initErstsattungsPosition(-1) Else If posIndex > 0 Then posIndex = posIndex - 1 If posIndex > 0 And dgvErstattungspositionen.Rows.Count > posIndex Then dgvErstattungspositionen.ClearSelection() dgvErstattungspositionen.Rows(posIndex).Selected = True For Each c As DataGridViewCell In dgvErstattungspositionen.Rows(posIndex).Cells If c.Visible Then dgvErstattungspositionen.CurrentCell = c 'Damit der Cursor in der DGV richtig steht Exit For End If Next End If Else initErstsattungsPosition(.RowCount) End If End If End With End Sub Private Sub dgvUSTVPositionen_KeyUp(sender As Object, e As Windows.Forms.KeyEventArgs) Handles dgvUSTVPositionen.KeyUp If e.KeyCode = Keys.Delete Then If dgvUSTVPositionen.SelectedRows.Count > 0 Then If vbYes = MsgBox("Möchten Sie die markierten " & dgvUSTVPositionen.SelectedRows.Count & " Einträge wirklich löschen?", vbYesNoCancel) Then For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows If r.Cells("UStVPo_VZ_RKID").Value IsNot Nothing AndAlso Not IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) AndAlso IsNumeric(r.Cells("UStVPo_VZ_RKID").Value) Then MsgBox("Es wurde mind. eine Position markiert, die bereits abgerechnet wurden zu der bereits ein Beleg existiert!" & vbNewLine & "Position kann nicht gelöscht werden!") Exit Sub End If Next For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows If r.Cells("UStVPo_Schnittstelle").Value IsNot Nothing AndAlso r.Cells("UStVPo_SchnittstellenNr").Value IsNot Nothing AndAlso IsNumeric(r.Cells("UStVPo_SchnittstellenNr").Value) Then 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 Dim Leistungsbezeichnung = "" If r.Cells("UStVPo_SchnittstellenNr").Value = 3 Then Leistungsbezeichnung = r.Cells("UStVPo_Leistungsbezeichnung").Value If setArchiv(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Leistungsbezeichnung) 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 End If End If Next reorderUSTVAPositions(Me.UStVAn_ID) init() UstCntlUSTV_AntragPosition1.Enabled = False End If End If e.Handled = True End If End Sub Private Sub txtAbfNr_TextChanged(sender As Object, e As EventArgs) Handles txtAbfNr.TextChanged If IsNumeric(txtAbfNr.Text) AndAlso CInt(txtAbfNr.Text) > 10000 AndAlso USTV_ANTRAG.AbfertigungsNr <> txtAbfNr.Text AndAlso (Not btnAbfertigungsNrVergeben.Visible) Then Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, txtAbfNr.Text, 0) If spedBuch.hasEntry Then MsgBox("Es existiert bereits ein Speditionsbucheintrag mit dieser Nr!") Exit Sub Else If Not abfNrisSetManually Then abfNrisSetManually = True txtAbfNr.Text = CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cbxFiliale._value, Now.Year)) End If Exit Sub End If Else abfNrisSetManually = False End If End Sub Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btnAbfertigungsNrVergeben.Click If Not IsNumeric(cbxFiliale._value) OrElse CInt(cbxFiliale._value) <= 0 Then MsgBox("Bitte Filiale auswählen!") : Exit Sub End If txtAbfNr.Text = CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cbxFiliale._value, Now.Year)) If txtBezugsNr.Text = "" AndAlso txtAbfNr.Text.ToString.Length >= 6 Then txtBezugsNr.Text = txtAbfNr.Text.Substring(txtAbfNr.Text.ToString.Length - 6, 6) txtBezugsNr.Text = txtBezugsNr.Text.TrimStart("0"c) End If cbxFiliale.Enabled = False btnAbfertigungsNrVergeben.Visible = False End Sub Private Sub txtAbfNr_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtAbfNr.PreviewKeyDown If e.KeyValue = 9 Then If IsNumeric(txtAbfNr.Text) AndAlso CInt(txtAbfNr.Text) > 10000 AndAlso USTV_ANTRAG.AbfertigungsNr <> txtAbfNr.Text Then Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, txtAbfNr.Text, 0) If spedBuch.hasEntry Then MsgBox("Es existiert bereits ein Speditionsbucheintrag mit dieser Nr!") Exit Sub End If If txtBezugsNr.Text = "" AndAlso txtAbfNr.Text.ToString.Length >= 6 Then txtBezugsNr.Text = txtAbfNr.Text.Substring(txtAbfNr.Text.ToString.Length - 6, 6) txtBezugsNr.Text = txtBezugsNr.Text.TrimStart("0"c) End If End If End If End Sub Private Sub Button5_Click_1(sender As Object, e As EventArgs) Handles Button5.Click If IsDBNull(USTV_ANTRAG.FilialenNr) OrElse USTV_ANTRAG.FilialenNr Is Nothing OrElse USTV_ANTRAG.FilialenNr = 0 Then MsgBox("Für das Speditionsbuch muss die Filiale eingegeben werden.") : Exit Sub If IsDBNull(USTV_ANTRAG.AbfertigungsNr) OrElse USTV_ANTRAG.AbfertigungsNr Is Nothing OrElse USTV_ANTRAG.AbfertigungsNr <= 0 Then MsgBox("Für das Speditionsbuch muss die Abfertigungs-Nr eingegeben werden.") : Exit Sub 'Dim RK_ID As Integer = CInt(SQL.getValueTxtBySql("select top(1) RK_ID from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19", "FMZOLL", ,, "0")) Dim dtRE As DataTable = (New SQL).loadDgvBySql("select RK_ID, RechnungsNr, FilialenNr from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19", "FMZOLL") Dim hasVZ As Boolean = False For Each pos In USTV_ANTRAG.POSITIONEN If pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) Or pos.UStVPo_VZ_RKID Is Nothing) Then 'VZ die noch nicht abgerechnet wurde! hasVZ = True Exit For End If Next ncs_Belege.Items.Clear() Dim reNEW = New ToolStripMenuItem() With {.Text = "NEU", .Name = "NEU" + IIf(hasVZ, "_VZ", ""), .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} ncs_Belege.Items.Add(reNEW) If dtRE.Rows.Count > 0 Then Dim RK_ID As String = "" For Each r As DataRow In dtRE.Rows Dim re = New ToolStripMenuItem() With {.Text = r.Item("FilialenNr") & " - " & r.Item("RechnungsNr"), .Name = r.Item("RK_ID"), .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} ncs_Belege.Items.Add(re) AddHandler re.Click, AddressOf mnuItemBelege_Clicked Next AddHandler reNEW.Click, AddressOf mnuItemBelege_Clicked Else AddHandler reNEW.Click, AddressOf mnuItemBelege_Clicked End If ncs_Belege.Show(Cursor.Position) End Sub Private Sub cbxWahrung_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxWahrung.SelectedValueChanged If USTV_ANTRAG IsNot Nothing Then If cbxWahrung.SelectedItem IsNot Nothing Then USTV_ANTRAG.UStVAn_Währungscode = cbxWahrung.SelectedItem.Text Else USTV_ANTRAG.UStVAn_Währungscode = "" End If End If End Sub Private Sub scanUSTVA_FileAdded(id As String, path As String, name As String) Handles scanUSTVA.FileAdded btnPDFauslesen.Enabled = scanUSTVA.getDS.da_id > 0 cbxKIUploaddelete.Enabled = btnPDFauslesen.Enabled End Sub Private Sub scanUSTVA_FileDeleted() Handles scanUSTVA.FileDeleted btnPDFauslesen.Enabled = False cbxKIUploaddelete.Enabled = btnPDFauslesen.Enabled End Sub Private Sub mnuItemKIUPLOAD_Clicked(sender As Object, e As EventArgs) cnS_KIUPLOAD.Hide() Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) If item IsNot Nothing AndAlso scanUSTVA IsNot Nothing Then Dim daid As Integer = 0 If scanUSTVA.getDS() IsNot Nothing Then daid = scanUSTVA.getDS().da_id If daid > 0 Then Dim DS As New cDATENSERVER(daid) If DS.GET_TOP1_PATH <> "" Then Dim pdfR As New PdfReader(DS.GET_TOP1_PATH) If atez_api IsNot Nothing Then If vbYes = MsgBox("Möchten Sie die Rechnungsdaten der " & item.Text & " per ATEZ-API auslesen lassen?", vbYesNoCancel) Then 'document_type = vat_invoice or receipt loadUSTVFrom_ATEZ_KI(UStVAn_ID, Antrag_LandKz, atez_api, scanUSTVA.getDS().da_id, pdfR.NumberOfPages, item.Name, cbxKIUploaddelete.Checked) initScanUSTVA() End If Else If cbxKIUploaddelete.Checked Then DS.DELETE_COMPLETE() initScanUSTVA() End If End If init() End If End If End If End Sub Private Sub btnPDFauslesen_Click(sender As Object, e As EventArgs) Handles btnPDFauslesen.Click 'document_type = vat_invoice or receipt If Not cnS_KIUPLOAD.Items.ContainsKey("invoice") Then Dim vat = New ToolStripMenuItem() With {.Text = "MWST-Rechnung(en)", .Name = "invoice", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cnS_KIUPLOAD.Items.Add(vat) AddHandler vat.Click, AddressOf mnuItemKIUPLOAD_Clicked End If If Not cnS_KIUPLOAD.Items.ContainsKey("receipt") Then Dim receipt = New ToolStripMenuItem() With {.Text = "Quittung(en)", .Name = "receipt", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} cnS_KIUPLOAD.Items.Add(receipt) AddHandler receipt.Click, AddressOf mnuItemKIUPLOAD_Clicked End If cnS_KIUPLOAD.Show(Cursor.Position) End Sub Private Sub calcSumme() Dim countSummeEUR As Double = 0 Dim countSumme As Double = 0 If posTabisSelected Then For i As Integer = 0 To dgvUSTVPositionen.SelectedRows.Count - 1 If Not IsDBNull(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetragEUR").Value) AndAlso IsNumeric(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetragEUR").Value) Then countSummeEUR += CDbl(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetragEUR").Value) End If If Not IsDBNull(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetrag").Value) AndAlso IsNumeric(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetrag").Value) Then countSumme += CDbl(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetrag").Value) End If Next End If txtSummeEUR._value = countSummeEUR.ToString txtSumme._value = countSumme.ToString End Sub Private Sub pb_Beleg_Click(sender As Object, e As EventArgs) Handles pb_Beleg.Click Dim dtRE As DataTable = (New SQL).loadDgvBySql("select RK_ID, RechnungsNr, FilialenNr from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19", "FMZOLL") ncs_Belege.Items.Clear() If dtRE.Rows.Count > 0 Then Dim RK_ID As String = "" For Each r As DataRow In dtRE.Rows Dim re = New ToolStripMenuItem() With {.Text = r.Item("FilialenNr") & " - " & r.Item("RechnungsNr"), .Name = r.Item("RK_ID"), .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} ncs_Belege.Items.Add(re) AddHandler re.Click, AddressOf mnuItemBelegeOpenPDF_Clicked Next End If ncs_Belege.Show(Cursor.Position) End Sub Private Sub cbxRGretour_CheckedChanged(sender As Object, e As EventArgs) Handles cbxRGretour.CheckedChanged If cbxRGretour.Checked Then cbxRGretour.ForeColor = Color.Red Else cbxRGretour.ForeColor = Color.White End If End Sub Private Sub dgvUSTVPositionen_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvUSTVPositionen.CellMouseClick If e.RowIndex < 0 Then Exit Sub 'Es wurde außerhalb einer gültigen Datenzeile geklickt If e.ColumnIndex < 0 Then Exit Sub DirectCast(sender, DataGridView).Rows(e.RowIndex).Selected = True If e.Button = MouseButtons.Right Then If sender Is dgvUSTVPositionen Then If dgvUSTVPositionen.SelectedRows.Count > 0 Then cns_vorauszahlen.Show(Cursor.Position) End If End If End If End Sub Private Sub AktivierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AktivierenToolStripMenuItem.Click If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen setzen?", vbYesNoCancel) Then For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows If IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) OrElse r.Cells("UStVPo_VZ_RKID").Value Is Nothing Then Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, r.Cells("UStVPo_ID").Value) If IsDBNull(USTV_POS.UStVPo_VZ) OrElse USTV_POS.UStVPo_VZ = False Then USTV_POS.UStVPo_VZ = True USTV_POS.SAVE() End If End If Next SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1 WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung init() End If Else MsgBox("NICHT BERECHTIGT") End If End Sub Private Sub DeaktivierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DeaktivierenToolStripMenuItem.Click If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen deaktiveren?", vbYesNoCancel) Then For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows If IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) OrElse r.Cells("UStVPo_VZ_RKID").Value Is Nothing Then 'nur noch nicht abgerech. dürfen gesetzt werden! Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, r.Cells("UStVPo_ID").Value) If IsDBNull(USTV_POS.UStVPo_VZ) OrElse USTV_POS.UStVPo_VZ = True Then USTV_POS.UStVPo_VZ = False USTV_POS.SAVE() End If End If Next 'würde prüfung nochmals für alle machen, performance allerdings nicht gut.... 'SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0 WHERE [UStVAn_ID] IN (SELECT [UStVAn_ID] FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull(UStVPo_VZ_RKID,0) <> 0)") Dim count_nichtAbgerVZ As Integer = -1 count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL")) If count_nichtAbgerVZ = 0 Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0 WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") End If init() End If Else MsgBox("NICHT BERECHTIGT") End If End Sub Private Sub initScanUSTVA() If USTV_ANTRAG IsNot Nothing Then scanUSTVA.INIT(USTV_ANTRAG.UStVAn_KuNr, "MDM", "USTVA_KI_" & USTV_ANTRAG.UStVAn_ID) btnPDFauslesen.Enabled = scanUSTVA.getDS().da_id > 0 cbxKIUploaddelete.Enabled = btnPDFauslesen.Enabled scanUSTVA.Enabled = Not btnPDFauslesen.Enabled Else cbxKIUploaddelete.Enabled = False scanUSTVA.Enabled = False End If End Sub Private Sub mnuItemBelege_Clicked(sender As Object, e As EventArgs) ncs_Belege.Hide() Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) If item IsNot Nothing Then If item.Name <> "" Then If IsNumeric(item.Name) Then Dim hasVZ As Boolean = False For Each pos In USTV_ANTRAG.POSITIONEN If pos.UStVPo_VZ AndAlso Not IsDBNull(pos.UStVPo_VZ_RKID) AndAlso pos.UStVPo_VZ_RKID = item.Name Then 'VZ die noch nicht abgerechnet wurde! hasVZ = True Exit For End If Next Dim f As New SDL.frmAbrechnungsMaskeEinzeln(item.Name, hasVZ) If f.ShowDialog(Me) = DialogResult.Cancel Then init() End If Else Dim Fehlertext As String = "" If Not checkSpedbuchEintrag(Fehlertext) Then If Fehlertext <> "" Then MsgBox(Fehlertext) Exit Sub End If Dim hasVZ = IIf(item.Name.Contains("_VZ"), True, False) Dim f As New SDL.frmAbrechnungsMaskeEinzeln(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, IIf(USTV_ANTRAG.UStVAn_ErstattungsbetragEUR >= 0, "AG", "AR"), hasVZ) If f.ShowDialog(Me) = DialogResult.Cancel Then init() End If End If End If End If End Sub Private Sub FakturiertZurücksetzenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles FakturiertZurücksetzenToolStripMenuItem.Click If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG("MDM_Fakturierung", Me) = 0 OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then If vbYes = MsgBox("Möchten Sie die bereits " & IIf(dgvUSTVPositionen.SelectedRows.Count > 1, " abgerechneten Positionen ", " abgerechnete Position ") & "zurücksetzen?" & vbNewLine & "Dies darf nur durchgeführt werden wenn der ursprüngliche Beleg storniert wurde!", vbYesNoCancel, "ACHTUNG") Then Dim isSet As Boolean = False For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows If Not IsDBNull(r.Cells("UStVPo_VZ").Value) AndAlso Not IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) AndAlso IsNumeric(r.Cells("UStVPo_VZ_RKID").Value) Then 'nur noch nicht abgerech. dürfen gesetzt werden! Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, r.Cells("UStVPo_ID").Value) If Not IsDBNull(USTV_POS.UStVPo_VZ_RKID) AndAlso USTV_POS.UStVPo_VZ = True Then USTV_POS.UStVPo_VZ_RKID = Nothing isSet = USTV_POS.SAVE() End If End If Next If isSet Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1 WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung init() End If Else MsgBox("NICHT BERECHTIGT") End If End Sub Private Sub mnuItemBelegeOpenPDF_Clicked(sender As Object, e As EventArgs) ncs_Belege.Hide() Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem) If item IsNot Nothing Then If item.Name <> "" Then If IsNumeric(item.Name) Then Dim RG_PATH = "" cFakturierung.doRechnungsDruck_SRorER(item.Name,, False, 4, RG_PATH,,, True,, True) Process.Start(RG_PATH) End If End If End If End Sub Private Sub pbMail_Click(sender As Object, e As EventArgs) Handles pbMail.Click If dgvUSTVPositionen.SelectedRows.Count = 0 Then Exit Sub Try Dim listOfTextconserven As cTextkonserve_LIST = New cTextkonserve_LIST(7, "", 19) Dim mailText As String = "" Dim spracheRechnung As String = "EN" 'Defaultsprache Dim Attachmens_Bez As String = "" Dim Attachmens_Bez_POS As String = "" Dim outl As New Outlook.Application Dim Mail As Microsoft.Office.Interop.Outlook.MailItem Mail = outl.CreateItem(0) Dim posID As String = "" Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) Dim KUNDE As New cKunde(USTV_ANTRAG.UStVAn_KuNr) Dim AD As New cAdressen(USTV_ANTRAG.UStVAn_KuNr) If KUNDE_ERW IsNot Nothing AndAlso KUNDE_ERW.kde_Fakturierung_Sprache <> "" Then spracheRechnung = KUNDE_ERW.kde_Fakturierung_Sprache If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheRechnung) If r IsNot Nothing Then Mail.Subject = r.txt_betreff Mail.Subject = Mail.Subject.Replace("%KdNr%", USTV_ANTRAG.UStVAn_KuNr) Mail.Subject = Mail.Subject.Replace("%KdName%", USTV_ANTRAG.UStVAn_Name) mailText = r.txt_text End If End If Select Case spracheRechnung Case "DE" : Attachmens_Bez = "Lief.-Rechn" : Attachmens_Bez_POS = "POS-Liste" Case "EN", "TR" : Attachmens_Bez = "Supplier-Invoice(s)" : Attachmens_Bez_POS = "Item-List" Case "RO" : Attachmens_Bez = "Factura-furnizorului" : Attachmens_Bez_POS = "Lista-articolelor" End Select Dim path As String = PDFInvoicesPath(posID) Dim fileInfo As New FileInfo(path) If path <> "" Then Mail.Attachments.Add(path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue,, Attachmens_Bez & fileInfo.Extension) End If If vbYes = MsgBox("Möchten Sie die Positionsliste an die Mail hinzufügen?", vbYesNoCancel) Then Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) If Not spedBuch.ErfassungsNr = "" Then Dim pathPosList As String = generatePOSListe(spedBuch, posID, False) If pathPosList <> "" Then Dim fileInfoPos As New FileInfo(pathPosList) If pathPosList <> "" Then Mail.Attachments.Add(pathPosList, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue,, Attachmens_Bez_POS & fileInfoPos.Extension) End If End If End If End If Dim TextHTML = "" If mailText <> "" Then TextHTML = "
" & mailText.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, 19,,,,,, ) & "
" Mail.HTMLBody = TextHTML End If Mail.To = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an") Mail.CC = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an") Mail.BCC = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an") If Mail.To = "" Then Mail.To &= IIf(AD.E_Mail IsNot Nothing, AD.E_Mail, "") End If Mail.Display() Me.Cursor = Cursors.Default Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default End Try End Sub Private Function checkSpedbuchEintrag(ByRef Fehlertext As String) Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0) 'If spedBuch.VermittlerOffertenNr <> spedBuch.Abfertigungsart Then '31 und 14 ist in Ordnung (weil Sonderfall). Dim AbfArt As Integer = (CInt(spedBuch.Abfertigungsart) - 100) If spedBuch.VermittlerOffertenNr <> AbfArt AndAlso Not (spedBuch.VermittlerOffertenNr = 31 AndAlso AbfArt = 14) Then Fehlertext = "Speditionsbucheintrag prüfen!" & vbNewLine & "OffertenNr stimmen nicht überein!" Return False End If If spedBuch.ErfassungsNr = "" Then Fehlertext = "Speditionsbucheintrag prüfen!" & vbNewLine & "Erfassungs-Nr nicht gesetzt!" Return False End If Return True End Function Private Function generatePOSListe(SPEDBUCH As cSpeditionsbuch, pos_id As String, onlyVZ As Boolean) As String Dim func As New cMDMFunctionsAllgemein() Dim dtPOSList As New DataTable Dim prt As String = func.generatePosList(USTV_ANTRAG, pos_id, "", "", False, "prt", dtPOSList, onlyVZ, -1) If prt <> "" Then Try Dim rpt As New rptMWSTListe rpt.DataSource = dtPOSList rpt.GroupHeader1.DataField = "Firma_ID" 'Gruppierung If rpt.DataSource.rows.count > 0 Then Dim AD As New cAdressen(USTV_ANTRAG.UStVAn_KuNr) Dim sum As Double = 0 rpt.lblVatNo.Text = USTV_ANTRAG.UStVAn_Steuernummer rpt.lblCompanyname.Text = AD.Name_1 & " " & AD.Name_2 rpt.lblDat.Text = Now.ToShortDateString AddHandler rpt.Detail.Format, Sub() rpt.lblNumber.Text = rpt.Fields.Item("Number").Value() rpt.lblGoods.Text = rpt.Fields.Item("Name of service").Value() rpt.lblName.Text = rpt.Fields.Item("Name of supplier").Value() rpt.lblTax.Text = CDbl(rpt.Fields.Item("Amount of tax refund").Value()).ToString("N2") rpt.lblDate.Text = CDate((rpt.Fields.Item("Date of Invoice").Value())).ToShortDateString rpt.lblInvoiceNo.Text = rpt.Fields.Item("Number of invoice").Value() sum += CDbl(rpt.Fields.Item("Amount of tax refund").Value()).ToString("N2") End Sub AddHandler rpt.GroupFooter1.Format, Sub() rpt.lblSumme.Text = sum.ToString("N2") rpt.lblWahrung.Text = USTV_ANTRAG.UStVAn_Währungscode End Sub Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(SPEDBUCH.AbfertigungsNr, ".pdf", , False) Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport rpt.Run(False) p.NeverEmbedFonts = "" p.Export(rpt.Document, tmpPath) rpt.Dispose() Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "POS_LISTE", "", "", SPEDBUCH.AbfertigungsNr & ".pdf", USTV_ANTRAG.UStVAn_KuNr, False) If DS.uploadDataToDATENSERVER(tmpPath,,, False,,, True) Then Return tmpPath End If Catch ex As Exception MsgBox(ex.Message & ex.StackTrace) End Try End If Return "" End Function Private Sub btnRMCQuartal_Click(sender As Object, e As EventArgs) Handles btnRMCQuartal.Click Dim input = InputBox("Bitte geben Sie das gewünschte Quartal ein:", "RMC Quartalsgebühren") If input <> "" AndAlso IsNumeric(input) AndAlso CInt(input) < 5 AndAlso CInt(input) > 0 Then Dim rmc As cRMC Dim nurUnter50EurAnzeigen As Boolean = True Select Case MsgBox("Sollen nur Anträge angezeigt werden, deren Bearbeitung pro Quartal unter 50EUR liegt?", vbYesNo) Case vbYes : nurUnter50EurAnzeigen = True Case vbNo : nurUnter50EurAnzeigen = False End Select Dim dt = rmc.getRMCQuartalsAbrechnungen(SQL, CInt(input), Now.Year, "373, 374", USTV_ANTRAG, Antrag_LandKz, nurUnter50EurAnzeigen) If dt.Rows.Count > 0 Then cProgramFunctions.genExcelFromDT_NEW(dt) Else MsgBox("keine Daten für ausgewählten Zeitraum") End If End If End Sub Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles pbXMLExport.Click Me.Cursor = Cursors.WaitCursor If dgvUSTVPositionen.SelectedRows.Count = 0 Then Exit Sub Try Dim dtInvoices As New DataTable Dim FIRMA As New cFirmen(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA_ID) Dim ADR As New cAdressen(USTV_ANTRAG.UStVAn_KuNr) Dim KUNDE As New cKunde(USTV_ANTRAG.UStVAn_KuNr) Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr) Dim BANK_OWNER As String = "" Dim BANK_IBAN As String = "" Dim BANK_BIC As String = "" Dim filePath As String = "" Dim fileName As String = USTV_ANTRAG.UStVAn_KuNr & "_" & Antrag_LandKz & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatVon).Month & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatBis).Month & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatBis).Year & "_VATRefund" dTLANDEU = (New SQL).loadDgvBySql("select LandKz, MitgliedslandEU from Währungstabelle where LandKz is not null", "FMZOLL") Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = USTV_ANTRAG.UStVAn_LandKz).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault() If isEU Then Dim UIDNr As Boolean = True If IsDBNull(ADR.UstIdNr) OrElse ADR.UstIdNr Is Nothing Then Select Case MsgBox("UID-Nr ist nicht im Kunden hinterlegt!" & vbNewLine & "Fortfahren?", vbYesNo) Case vbYes : UIDNr = False Case vbNo : Exit Sub End Select MsgBox("UID-Nr ist nicht im Kunden hinterlegt!") End If Select Case ADR.LandKz Case "RO", "R" : fileName = fileName & ".xml" : createXMLforRO(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath) Case "DE", "D" : fileName = fileName & ".csv" : createCSVforDE(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath) 'ALTERNATIVE: ELMA5-Massendatenschnittstelle allerdings um einiges aufwendiger! Case "HR" : fileName = fileName & ".xml" : createXMLforHR(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath) Case Else MsgBox("Für das Kundenland " & ADR.LandKz & " wurde kein Export definiert") End Select Else Select Case Antrag_LandKz Case "BE" : fileName = fileName & ".xlsx" : createCSVforBE(ADR, KUNDE, KUNDE_ERW, FIRMA, BANK_OWNER, BANK_IBAN, BANK_BIC, fileName, filePath) Case Else MsgBox("Für das Antragsland " & Antrag_LandKz & " wurde kein Export definiert") End Select End If Me.Cursor = Cursors.Default Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default End Try End Sub Private Function createXMLforRO(ADR As cAdressen, KUNDE As cKunde, KUNDE_ERW As cKundenErweitert, FIRMA As cFirmen, BANK_OWNER As String, BANK_IBAN As String, BANK_BIC As String, filename As String, filePath As String) Dim saveDialog As New SaveFileDialog() With { .Title = "XML-Datei speichern", .Filter = "XML-Dateien (*.xml)|*.xml|Alle Dateien (*.*)|*.*", .DefaultExt = "xml", .AddExtension = True, .FileName = filename, .OverwritePrompt = True } If saveDialog.ShowDialog() = DialogResult.OK Then filePath = saveDialog.FileName Else Me.Cursor = Cursors.Default Return False End If Dim fullFilePath As String = saveDialog.FileName Dim directoryPath As String = Path.GetDirectoryName(fullFilePath) If Not Directory.Exists(directoryPath) Then Directory.CreateDirectory(directoryPath) End If Select Case Antrag_LandKz Case "AT", "DE", "CZ", "BE", "SI" BANK_OWNER = FIRMA.Firma_Bez BANK_IBAN = FIRMA.Firma_IBAN1 BANK_BIC = FIRMA.Firma_BIC1 If BANK_BIC.ToString.Contains("BIC:") Then BANK_BIC = BANK_BIC.ToString.Replace("BIC:", "") BANK_BIC = BANK_BIC.Trim() BANK_BIC = BANK_BIC.ToString.Replace(" ", "") End If If BANK_IBAN.ToString.Contains("IBAN:") Then BANK_IBAN = BANK_IBAN.ToString.Replace("IBAN:", "") BANK_IBAN = BANK_IBAN.Trim() BANK_IBAN = BANK_IBAN.ToString.Replace(" ", "") End If Case Else 'Bank aus Kunden! Dim dtBank As New DataTable dtBank = SQL.loadDgvBySql("SELECT isnull(bnk_name,'') as bnk_name ,bnk_anschrift,ISNULL(bnk_iban,'') as bnk_iban,ISNULL(bnk_bic,'') as bnk_bic FROM [tblBankverbindungen] WHERE isnull(bnk_hauptkonto,0) = 0 and isnull(bnk_archiv,0) = 0 and bnk_KundenNr = " & KUNDE.KundenNr, "FMZOLL") If dtBank.Rows.Count > 0 Then BANK_OWNER = ADR.Name_1 BANK_IBAN = dtBank.Rows(0).Item("bnk_iban") BANK_BIC = dtBank.Rows(0).Item("bnk_bic") End If 'wenn nicht hinterlegt, dann leer lassen! End Select Dim app As New VATRefundApplication_RO() With { .CodF1 = New FormInfo With {.FormType = "D318", .FormId = 318, .UniversalCode = "D318_A1.0.0"}, .RefundPeriod = New Period With {.StartDate = CDate(USTV_ANTRAG.UStVAn_ReDatVon).Month, .EndDate = CDate(USTV_ANTRAG.UStVAn_ReDatBis).Month}, .ApplicationReference = New ApplicationReference With { .Year = CDate(USTV_ANTRAG.UStVAn_ReDatBis).Year, .RefundingCountryCode = Antrag_LandKz, .Language = "DE", .Currency = USTV_ANTRAG.UStVAn_Währungscode, .ApplicationType = 1, .ReferenceNumber = "", .Annual = IIf(CDate(USTV_ANTRAG.UStVAn_ReDatVon).Month = 1 And CDate(USTV_ANTRAG.UStVAn_ReDatBis).Month = 12, 1, 0), .an_r = CDate(USTV_ANTRAG.UStVAn_ReDatBis).Year, .d_rec = 0, .luna_r = CDate(USTV_ANTRAG.UStVAn_ReDatBis).Month, .cif = IIf(Not IsDBNull(ADR.UstIdNr) AndAlso ADR.UstIdNr IsNot Nothing, ADR.UstIdNr, 0), .totalPlata_A = 0 }, .ProrateAdjustment = New ProrateAdjustment With {.Year = "", .FinalProrate = ""}, .Applicant = New Party With { .NameFree = ADR.Name_1, .VATIdentificationNumber = IIf(Not IsDBNull(ADR.UstIdNr) AndAlso ADR.UstIdNr IsNot Nothing, ADR.UstIdNr, 0), .AddressFree = ADR.Straße.ToString & vbCrLf & ADR.LandKz.ToString & " - " & ADR.PLZ.ToString & " -" & ADR.Ort.ToString, '"RO - 550270 - MUN. SIBIU", .PostCode = "", .Phone = "", .EmailAddress = "juricevic@verag.ag" }, .BusinessDescription = New BusinessDescription With { .d_caen = 2, .CAEN = "4941--Transp.rutiere de marfuri", .BusinessActivity = 4941 }, .Representative = New Party With { .NameFree = "VERAG 360 GMBH", .RepresentativeID = "ATU76165837", .AddressFree = "SUBEN NR. 100, AT-4975 SUBEN", .PostCode = "4975", .Phone = "00437711277719", .EmailAddress = "juricevic@verag.ag", .CountryCode = "AT", .IdentificationType = "TIN" }, .DetailedBankAccount = New BankAccount With { .Total = txtSummeEUR._value.ToString.Replace(",", "."), .Currency = USTV_ANTRAG.UStVAn_Währungscode, .OwnerType = 1, .OwnerName = BANK_OWNER, .IBAN = BANK_IBAN, .BIC = BANK_BIC }, .NumberOfDocuments = New NumberOfDocuments With {.AtachatedFiles = 0, .PurchaseOrders = dgvUSTVPositionen.SelectedRows.Count, .ImportOrders = 0}, .ApplicantSignature = New Signature With {.NameFree = "LUXBAUER BRIGITTE", .Position = "IMPUTERNICIT"} } Dim counter As Integer = 1 For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim UIDNrLeistender = "" Dim LeistenderName As String = "" Dim listOfLeistungstyp As New List(Of String) If Not IsDBNull(row.Cells("UstV_Leistender_UstNr").Value) AndAlso row.Cells("UstV_Leistender_UstNr").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_UstNr").Value <> "" IsNot Nothing Then UIDNrLeistender = row.Cells("UstV_Leistender_UstNr").Value UIDNrLeistender = UIDNrLeistender.ToString.Replace(Antrag_LandKz, "") End If LeistenderName = row.Cells("UStVPo_Leistender").Value If LeistenderName.ToString.EndsWith(Antrag_LandKz) Then LeistenderName = LeistenderName.ToString.Replace(Antrag_LandKz, "") End If Dim Nettobetrag As Double = 0 If Not IsDBNull(row.Cells("UStVPo_Nettobetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_Nettobetrag").Value) Then Nettobetrag = CDbl(row.Cells("UStVPo_Nettobetrag").Value) If Not IsDBNull(row.Cells("UStVPo_Leistungsbezeichnung").Value) AndAlso row.Cells("UStVPo_Leistungsbezeichnung").Value IsNot Nothing Then listOfLeistungstyp = getLeistungsTyp(row.Cells("UStVPo_Leistungsbezeichnung").Value, CInt(row.Cells("UStVPo_SchnittstellenNr").Value)) End If Dim goods As New GoodsDescription With {.GoodsItem = New List(Of GoodsItem)} If listOfLeistungstyp.Count > 0 Then For Each listEntry In listOfLeistungstyp Dim code As Integer = 0 Dim Subcode = "" getCode(Antrag_LandKz, listEntry, code, Subcode, "RO") goods.GoodsItem.Add(New GoodsItem With {.Code = code, .SubCode = Subcode, .FreeText = ""}) Next End If app.PurchaseInformation.Invoices.Add(New Invoice With { .SequenceNumber = counter, .SimplifiedInvoice = 0, .ReferenceNumber = row.Cells("UStVPo_ReNr").Value, ' "25/000616354/987", .IssuingDate = CDate(row.Cells("UStVPo_ReDat").Value).ToString("yyyy-MM-dd"),'"2025-11-30", .GoodsDescription = goods, .TransactionDescription = New TransactionDescription With {.TaxableAmount = Nothing, .VATAmount = row.Cells("UStVPo_USteuerbetrag").Value.ToString.Replace(",", ".")}, .Deduction = New Deduction With {.ProRataRate = "", .DeductibleVATAmount = row.Cells("UStVPo_USteuerbetrag").Value.ToString.Replace(",", ".")}, .EUSupplier = New Party With { .NameFree = LeistenderName,'"DKV EURO SERVICE GMBH + CO KG", .AddressFree = row.Cells("UstV_Leistender_Strasse").Value & " " & row.Cells("UstV_Leistender_Land").Value & " " & row.Cells("UstV_Leistender_PLZ").Value & " " & row.Cells("UstV_Leistender_Stadt").Value,'"BALCKE DÜRR ALLEE 3 DE 40882 RATINGEN", .VATIdentificationNumber = UIDNrLeistender, .CountryCode = Antrag_LandKz } }) counter += 1 Next Dim list As New List(Of String) Dim pdfPathfinished As String = "" If dgvUSTVPositionen.SelectedRows.Count > 0 Then Dim nummerierung As Boolean = False Select Case MsgBox("Soll eine Nummerierung auf den PDF Dokumenten angegeben werden?", vbYesNoCancel) Case vbYes : nummerierung = True Case vbNo : nummerierung = False Case Else : Return False End Select For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim pdf As String = "" pdf = func.getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), True, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If pdf <> "" Then list.Add(pdf) Next End If If list.Count > 0 Then If list.Count > 1 Then Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("RG_" & Now.ToString("ddMMyyyyHHmmss") & ".pdf", ".pdf", False, False) If FormularManagerNEU.MergePdfFiles(list, pathPDF) Then pdfPathfinished = pathPDF End If Else pdfPathfinished = list(0) End If Dim fileNamePDFAttZIP As String = "RG_" & Antrag_LandKz & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatVon).Month & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatBis).Month & "_" & CDate(USTV_ANTRAG.UStVAn_ReDatBis).Year & ".zip" fileNamePDFAttZIP = directoryPath & "\" & fileNamePDFAttZIP Dim fileZipped As Boolean = True If pdfPathfinished <> "" Then ' Falls ZIP schon existiert → löschen If File.Exists(fileNamePDFAttZIP) Then File.Delete(fileNamePDFAttZIP) End If Dim zipFile As New Chilkat.Zip() Dim success = zipFile.NewZip(fileNamePDFAttZIP) If (success = False) Then Debug.WriteLine(zipFile.LastErrorText) Return False End If Dim saveExtraPath As Boolean = False success = zipFile.AppendFiles(pdfPathfinished, saveExtraPath) If (success = False) Then fileZipped = False End If success = zipFile.WriteZipAndClose() If (success = False) Then fileZipped = False End If If fileZipped Then ' app.DocumentCopy.Add(New DocumentCopy With { '.Bifa_atasament = 1, '.Document = New DocumentFile With { ' .FileName = fileNamePDFAttZIP, ' .FileType = "application/zip", ' .FileDescription = "INVOICES/POA" '} '}) End If End If End If ' ========================= ' 5️⃣ XML erzeugen ' ========================= Dim xml As Chilkat.Xml = app.ToXml() Dim xmlString As String = xml.GetXml() Console.WriteLine(xmlString) System.IO.File.WriteAllText(filePath, xmlString) End Function Private Function createXMLforHR(ADR As cAdressen, KUNDE As cKunde, KUNDE_ERW As cKundenErweitert, FIRMA As cFirmen, BANK_OWNER As String, BANK_IBAN As String, BANK_BIC As String, filename As String, filePath As String) Dim saveDialog As New SaveFileDialog() With { .Title = "XML-Datei speichern", .Filter = "XML-Dateien (*.xml)|*.xml|Alle Dateien (*.*)|*.*", .DefaultExt = "xml", .AddExtension = True, .FileName = filename, .OverwritePrompt = True } If saveDialog.ShowDialog() = DialogResult.OK Then filePath = saveDialog.FileName Else Me.Cursor = Cursors.Default Return False End If Try Dim list As New List(Of String) Dim fullFilePath As String = saveDialog.FileName Dim directoryPath As String = Path.GetDirectoryName(fullFilePath) If Not Directory.Exists(directoryPath) Then Directory.CreateDirectory(directoryPath) End If Dim BankOwnerType = "" Select Case Antrag_LandKz Case "AT", "DE", "CZ", "BE", "SI" BANK_OWNER = FIRMA.Firma_Bez BANK_IBAN = FIRMA.Firma_IBAN1 BANK_BIC = FIRMA.Firma_BIC1 BankOwnerType = "applicant" If BANK_BIC.ToString.Contains("BIC:") Then BANK_BIC = BANK_BIC.ToString.Replace("BIC:", "") BANK_BIC = BANK_BIC.Trim() BANK_BIC = BANK_BIC.ToString.Replace(" ", "") End If If BANK_IBAN.ToString.Contains("IBAN:") Then BANK_IBAN = BANK_IBAN.ToString.Replace("IBAN:", "") BANK_IBAN = BANK_IBAN.Trim() BANK_IBAN = BANK_IBAN.ToString.Replace(" ", "") End If Case Else 'Bank aus Kunden! Dim dtBank As New DataTable dtBank = SQL.loadDgvBySql("SELECT isnull(bnk_name,'') as bnk_name ,bnk_anschrift,ISNULL(bnk_iban,'') as bnk_iban,ISNULL(bnk_bic,'') as bnk_bic FROM [tblBankverbindungen] WHERE isnull(bnk_hauptkonto,0) = 0 and isnull(bnk_archiv,0) = 0 and bnk_KundenNr = " & KUNDE.KundenNr, "FMZOLL") If dtBank.Rows.Count > 0 Then BANK_OWNER = ADR.Name_1 BANK_IBAN = dtBank.Rows(0).Item("bnk_iban") BANK_BIC = dtBank.Rows(0).Item("bnk_bic") End If 'wenn nicht hinterlegt, dann leer lassen! BankOwnerType = "representative" End Select Dim app As New GlobalVATRefundApplication_HR() With { .RefundPeriod = New RefundPeriod_ With {.FromDate = CDate(USTV_ANTRAG.UStVAn_ReDatVon).ToString("yyyy-MM-dd"), .ToDate = CDate(USTV_ANTRAG.UStVAn_ReDatBis).ToString("yyyy-MM-dd")}, .Applicant = New Applicant_ With { .NameType = "legal", .NameFree = ADR.Name_1, .VATId = IIf(Not IsDBNull(ADR.UstIdNr) AndAlso ADR.UstIdNr IsNot Nothing, ADR.UstIdNr, 0), .AddressFree = ADR.Straße.ToString & ", " & ADR.PLZ.ToString & ", " & ADR.Ort.ToString, '"RO - 550270 - MUN. SIBIU", .CountryISOCode = ADR.LandKz, .Telephone = "00", .Email = "juricevic@verag.ag" }, .BusinessDescription = New BusinessDescription_ With { .code = 4941, .name = "Freight transport by road" }, .Representative = New Representative_ With { .Name = "VERAG 360 GMBH", .IdentificationNumber = "AT U76165837", .Address = "Suben 100, 4975 Suben", .Telephone = "00437711277719", .Email = "juricevic@verag.ag", .CountryISOCode = "AT", .IdentificationType = "NVAT" }, .BankAccount = New BankAccount_ With { .CurrencyISO = USTV_ANTRAG.UStVAn_Währungscode, .OwnerType = BankOwnerType, .OwnerName = BANK_OWNER, .IBAN = BANK_IBAN, .BIC = BANK_BIC } } Dim counter As Integer = 1 Dim nummerierung As Boolean = False Dim PDFExportInXML As Boolean = False Select Case MsgBox("Soll eine Nummerierung auf den PDF Dokumenten angegeben werden?", vbYesNoCancel) Case vbYes : nummerierung = True Case vbNo : nummerierung = False Case Else : Return False End Select app.RefundRequest = New RefundRequest_ With { .RefundMemberState = Antrag_LandKz, .State = "N" ' steht für New } For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim UIDNrLeistender = "" Dim LeistenderName As String = "" Dim listOfLeistungstyp As New List(Of String) If Not IsDBNull(row.Cells("UstV_Leistender_UstNr").Value) AndAlso row.Cells("UstV_Leistender_UstNr").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_UstNr").Value <> "" IsNot Nothing Then UIDNrLeistender = row.Cells("UstV_Leistender_UstNr").Value UIDNrLeistender = UIDNrLeistender.ToString.Replace(Antrag_LandKz, "") End If LeistenderName = row.Cells("UStVPo_Leistender").Value If LeistenderName.ToString.EndsWith(Antrag_LandKz) Then LeistenderName = LeistenderName.ToString.Replace(Antrag_LandKz, "") End If Dim Nettobetrag As Double = 0 If Not IsDBNull(row.Cells("UStVPo_Nettobetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_Nettobetrag").Value) Then Nettobetrag = CDbl(row.Cells("UStVPo_Nettobetrag").Value) If Not IsDBNull(row.Cells("UStVPo_Leistungsbezeichnung").Value) AndAlso row.Cells("UStVPo_Leistungsbezeichnung").Value IsNot Nothing Then listOfLeistungstyp = getLeistungsTyp(row.Cells("UStVPo_Leistungsbezeichnung").Value, CInt(row.Cells("UStVPo_SchnittstellenNr").Value)) End If Dim p As New Purchase_ p.Sequence = counter p.SimplifiedInvoice = False p.ReferenceNumber = row.Cells("UStVPo_ReNr").Value p.IssuingDate = CDate(row.Cells("UStVPo_ReDat").Value).ToString("yyyy-MM-dd") p.TransactionDescription = New TransactionDescription_ With { .TaxableAmount = New MoneyAmount_ With { .Amount = Math.Round(Nettobetrag, 2), .CurrencyISO = USTV_ANTRAG.UStVAn_Währungscode }, .VATAmount = New MoneyAmount_ With { .Amount = Math.Round(row.Cells("UStVPo_USteuerbetrag").Value, 2), .CurrencyISO = USTV_ANTRAG.UStVAn_Währungscode } } p.Deduction = New Deduction_ With { .DeductibleAmount = New MoneyAmount_ With { .Amount = Math.Round(row.Cells("UStVPo_USteuerbetrag").Value, 2), .CurrencyISO = USTV_ANTRAG.UStVAn_Währungscode } } Dim code As Integer = 0 Dim Subcode = "" If listOfLeistungstyp.Count > 0 Then getCode(Antrag_LandKz, listOfLeistungstyp(0), code, Subcode) End If p.GoodsDescription = New GoodsDescription_ With {.Code = code, .Subcode = Subcode} Dim UstV_Leistender_Strasse = "" If Not IsDBNull(row.Cells("UstV_Leistender_Strasse").Value) AndAlso row.Cells("UstV_Leistender_Strasse").Value IsNot Nothing Then UstV_Leistender_Strasse = row.Cells("UstV_Leistender_Strasse").Value Dim UstV_Leistender_Land = "" If Not IsDBNull(row.Cells("UstV_Leistender_Land").Value) AndAlso row.Cells("UstV_Leistender_Land").Value IsNot Nothing Then UstV_Leistender_Land = row.Cells("UstV_Leistender_Land").Value Dim UstV_Leistender_Stadt = "" If Not IsDBNull(row.Cells("UstV_Leistender_Stadt").Value) AndAlso row.Cells("UstV_Leistender_Stadt").Value IsNot Nothing Then UstV_Leistender_Stadt = row.Cells("UstV_Leistender_Stadt").Value Dim UstV_Leistender_PLZ = "" If Not IsDBNull(row.Cells("UstV_Leistender_PLZ").Value) AndAlso row.Cells("UstV_Leistender_PLZ").Value IsNot Nothing Then UstV_Leistender_PLZ = row.Cells("UstV_Leistender_PLZ").Value p.EUSupplier = New EUSupplier_ With { .NameFree = LeistenderName, .AddressFree = UstV_Leistender_Strasse & " " & UstV_Leistender_Land & " " & UstV_Leistender_PLZ & " " & UstV_Leistender_Stadt, .CountryISOCode = Antrag_LandKz, .VATId = UIDNrLeistender } app.RefundRequest.PurchaseInformation.Add(p) Dim pdf As String = "" pdf = func.getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), True, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If pdf <> "" Then list.Add(pdf) If pdf <> "" And PDFExportInXML Then Dim dc As New DocumentCopy_ dc.Description = row.Cells("UStVPo_ReNr").Value Dim pdfName As New FileInfo(pdf) dc.FileType = pdfName.Extension.ToUpper.ToString.Replace(".", "") dc.FileName = pdfName.Name Dim bd As New Chilkat.BinData If bd.LoadFile(pdf) Then dc.Base64Content = bd.GetEncoded("base64") dc.Base64Content = dc.Base64Content.Replace(vbCr, "").Replace(vbLf, "").Replace(" ", "") End If app.RefundRequest.DocumentCopy.Add(dc) End If counter += 1 Next ' ========================= ' 5️⃣ XML erzeugen ' ========================= Dim xml As Chilkat.Xml = app.ToXml() Dim xmlString As String = xml.GetXml() Console.WriteLine(xmlString) System.IO.File.WriteAllText(filePath, xmlString) Dim pdfFileName = fullFilePath.Replace(".xml", ".pdf") If File.Exists(pdfFileName) Then File.Delete(pdfFileName) End If If list.Count > 1 Then If FormularManagerNEU.MergePdfFiles(list, pdfFileName) Then Process.Start(pdfFileName) End If ElseIf list.Count = 1 Then Dim PDFFile As String = list(0) System.IO.File.Move(PDFFile, pdfFileName) End If Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Function Private Function getLeistungsTyp(LeistungsBez As String, SchnittstellenNr As Integer) As List(Of String) Dim list As New List(Of String) LeistungsBez = LeistungsBez.ToLower If SchnittstellenNr = 10 Then 'UTA überspringen ElseIf SchnittstellenNr = 9 Then LeistungsBez = "maut" 'MSE immer MAUT Else If LeistungsBez.Contains("maut") Or LeistungsBez.Contains("toll") Then list.Add("maut") End If If LeistungsBez.Contains("diesel") Or LeistungsBez.Contains("fuel") Then list.Add("diesel") End If If LeistungsBez.Contains("parkplatz") Then list.Add("parkplatz") End If If LeistungsBez.Contains("zubeh") Then list.Add("zubehör") End If If LeistungsBez.Contains("übern") Then list.Add("übernachtung") End If If LeistungsBez.Contains("gas") Then list.Add("gas") End If End If Return list End Function Private Sub getCode(ByRef AntragLand As String, ByRef typ As String, ByRef Code As Integer, ByRef SubCode As String, Optional Portal As String = "") Code = 0 SubCode = "" '------------------------------------------------------- ' Portale '------------------------------------------------------- Select Case Portal Case "RO" Select Case typ Case "diesel" : Code = 1 : SubCode = "1.1.2" Case "maut" : Code = 4 : SubCode = "4.1" Case "zubehör" : Code = 3 : SubCode = "3.1.5" Case "parkplatz" : Code = 3 : SubCode = "3.1.4" Case "übernachtung" : Code = 6 : SubCode = "6.5" End Select If {"DE", "CZ", "LU"}.Contains(AntragLand) Then SubCode = "" End If Exit Sub Case "DE" Select Case typ Case "diesel" : Code = 1 : SubCode = "1.1.2" Case "maut" : Code = 4 : SubCode = "4.1" Case "zubehör" : Code = 3 : SubCode = "3.1.3" Case "parkplatz" : Code = 3 : SubCode = "3.1.4" Case "gas" : Code = 1 : SubCode = "1.1.3" Case "übernachtung" : Code = 6 : SubCode = "6.1" End Select Exit Sub End Select '------------------------------------------------------- ' Standardwerte '------------------------------------------------------- Select Case typ Case "diesel" Code = 1 Select Case AntragLand Case "AT" : SubCode = "1.2.7" Case "BE" : SubCode = "1.13" Case "ES" : SubCode = "1.14" Case "SI", "DK" : SubCode = "1.1" Case "PL", "FR", "IT", "HU", "BG", "IE", "PT" : SubCode = "1.1.2" Case "DE", "CZ", "LU" : SubCode = "" End Select Case "maut" Code = 4 Select Case AntragLand Case "PL" : SubCode = "4.2.2" Case "SE" : SubCode = "5" Case "AT", "SI", "HU", "BG", "IE", "PT" : SubCode = "4.1" Case "DE", "CZ", "LU" : SubCode = "" End Select Case "parkplatz" If AntragLand = "AT" Then Code = 3 SubCode = "3.1" End If Case "zubehör" If AntragLand = "AT" Then Code = 3 SubCode = "1.3" End If Case "rest" If AntragLand = "BE" Then Code = 3 SubCode = "3.13" End If End Select End Sub Private Function createCSVforDE(ADR As cAdressen, KUNDE As cKunde, KUNDE_ERW As cKundenErweitert, FIRMA As cFirmen, BANK_OWNER As String, BANK_IBAN As String, BANK_BIC As String, filename As String, filePath As String) Try Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\" If Not My.Computer.FileSystem.DirectoryExists(sPath) Then My.Computer.FileSystem.CreateDirectory(sPath) End If Dim exclApp As Object 'as Application Dim Datei As Object 'as WorkBook Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet exclApp = CreateObject("Excel.Application") With exclApp .Visible = False Try filePath = sPath & filename 'If File.Exists(filePath) Then ' File.Delete(filePath) 'End If My.Computer.FileSystem.WriteAllBytes(filePath, My.Resources.Ustveu_Rechnungsanlagen_DE, False) Catch ex As System.Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default Return False End Try Datei = .Workbooks.Open(filePath) 'Anpassen Blatt = Datei.Worksheets(1) 'Anpassen Dim counter As Integer = 1 Dim counterLeistungen As Integer = 1 For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim UIDNrLeistender = "" Dim LeistenderName As String = "" Dim listOfLeistungstyp As New List(Of String) Dim Strasse As String = "" If Not IsDBNull(row.Cells("UstV_Leistender_Strasse").Value) AndAlso row.Cells("UstV_Leistender_Strasse").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_Strasse").Value <> "" Then Strasse = row.Cells("UstV_Leistender_Strasse").Value Dim Ort As String = "" If Not IsDBNull(row.Cells("UstV_Leistender_Stadt").Value) AndAlso row.Cells("UstV_Leistender_Stadt").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_Stadt").Value <> "" Then Ort = row.Cells("UstV_Leistender_Stadt").Value Dim PLZ As String = "" If Not IsDBNull(row.Cells("UstV_Leistender_PLZ").Value) AndAlso row.Cells("UstV_Leistender_PLZ").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_PLZ").Value <> "" Then PLZ = row.Cells("UstV_Leistender_PLZ").Value If Not IsDBNull(row.Cells("UstV_Leistender_UstNr").Value) AndAlso row.Cells("UstV_Leistender_UstNr").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_UstNr").Value <> "" Then UIDNrLeistender = row.Cells("UstV_Leistender_UstNr").Value 'UIDNrLeistender = UIDNrLeistender.ToString.Replace(Antrag_LandKz, "") DEU wollen das Land dabei! End If LeistenderName = row.Cells("UStVPo_Leistender").Value If LeistenderName.ToString.EndsWith(Antrag_LandKz) Then LeistenderName = LeistenderName.ToString.Replace(Antrag_LandKz, "") End If Dim Nettobetrag As Double = 0 If Not IsDBNull(row.Cells("UStVPo_Nettobetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_Nettobetrag").Value) Then Nettobetrag = CDbl(row.Cells("UStVPo_Nettobetrag").Value) Dim Steuerbetrag As Double = 0 If Not IsDBNull(row.Cells("UStVPo_USteuerbetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_USteuerbetrag").Value) Then Steuerbetrag = CDbl(row.Cells("UStVPo_USteuerbetrag").Value) Dim land = row.Cells("UstV_Leistender_Land").Value Dim iso2Land = "" If land.Length = 2 Then iso2Land = land ElseIf land.Length = 3 Then iso2Land = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(land) ElseIf land.Length = 1 Then iso2Land = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(land) End If Blatt.Range("A" & counter + 1).Value = counter Blatt.Range("B" & counter + 1).Value = CDate(row.Cells("UStVPo_ReDat").Value).ToString("dd.MM.yyyy") Blatt.Range("C" & counter + 1).Value = row.Cells("UStVPo_ReNr").Value Blatt.Range("D" & counter + 1).Value = Nettobetrag.ToString("0.00", CultureInfo.InvariantCulture) Blatt.Range("E" & counter + 1).Value = Steuerbetrag.ToString("0.00", CultureInfo.InvariantCulture) Blatt.Range("F" & counter + 1).Value = Steuerbetrag.ToString("0.00", CultureInfo.InvariantCulture) Blatt.Range("H" & counter + 1).Value = "false" Blatt.Range("I" & counter + 1).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(LeistenderName, False) Blatt.Range("J" & counter + 1).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(Strasse, False) Blatt.Range("M" & counter + 1).Value = PLZ Blatt.Range("N" & counter + 1).Value = Ort Blatt.Range("O" & counter + 1).Value = iso2Land Blatt.Range("P" & counter + 1).Value = UIDNrLeistender Datei.Save Blatt = Datei.Worksheets(2) If Not IsDBNull(row.Cells("UStVPo_Leistungsbezeichnung").Value) AndAlso row.Cells("UStVPo_Leistungsbezeichnung").Value IsNot Nothing Then listOfLeistungstyp = getLeistungsTyp(row.Cells("UStVPo_Leistungsbezeichnung").Value, row.Cells("UStVPo_SchnittstellenNr").Value) If listOfLeistungstyp.Count > 0 Then For Each listEntry In listOfLeistungstyp Dim code As Integer = 0 Dim Subcode = "" getCode(Antrag_LandKz, listEntry, code, Subcode, "DE") Blatt.Range("A" & counterLeistungen + 1).Value = counter Blatt.Range("B" & counterLeistungen + 1).Value = Subcode 'nur Subcodes! counterLeistungen += 1 Next End If End If Datei.Save Blatt = Datei.Worksheets(1) counter += 1 Next Datei.Save .Visible = True End With Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Me.Cursor = Cursors.Default End Function Private Function createCSVforBE(ADR As cAdressen, KUNDE As cKunde, KUNDE_ERW As cKundenErweitert, FIRMA As cFirmen, BANK_OWNER As String, BANK_IBAN As String, BANK_BIC As String, filename As String, filePath As String) Try Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SDL\tmp\" If Not My.Computer.FileSystem.DirectoryExists(sPath) Then My.Computer.FileSystem.CreateDirectory(sPath) End If Dim exclApp As Object 'as Application Dim Datei As Object 'as WorkBook Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet exclApp = CreateObject("Excel.Application") With exclApp .Visible = False Try filePath = sPath & filename 'If File.Exists(filePath) Then ' File.Delete(filePath) 'End If My.Computer.FileSystem.WriteAllBytes(filePath, My.Resources.Ustveu_Rechnungsanlagen_BE, False) Catch ex As System.Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) Me.Cursor = Cursors.Default Return False End Try Datei = .Workbooks.Open(filePath) 'Anpassen Blatt = Datei.Worksheets(1) 'Anpassen Dim counter As Integer = 1 Dim zeile As Integer = 3 Dim counterLeistungen As Integer = 1 For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) Dim UIDNrLeistender = "" Dim LeistenderName As String = "" Dim listOfLeistungstyp As New List(Of String) Dim Strasse As String = "" If Not IsDBNull(row.Cells("StrasseOnly").Value) AndAlso row.Cells("StrasseOnly").Value IsNot Nothing AndAlso row.Cells("StrasseOnly").Value <> "" Then Strasse = row.Cells("StrasseOnly").Value Dim StrasseNR As String = "" If Not IsDBNull(row.Cells("StrassenNrOnly").Value) AndAlso row.Cells("StrassenNrOnly").Value IsNot Nothing AndAlso row.Cells("StrassenNrOnly").Value <> "" Then StrasseNR = row.Cells("StrassenNrOnly").Value Dim Ort As String = "" If Not IsDBNull(row.Cells("UstV_Leistender_Stadt").Value) AndAlso row.Cells("UstV_Leistender_Stadt").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_Stadt").Value <> "" Then Ort = row.Cells("UstV_Leistender_Stadt").Value Dim PLZ As String = "" If Not IsDBNull(row.Cells("UstV_Leistender_PLZ").Value) AndAlso row.Cells("UstV_Leistender_PLZ").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_PLZ").Value <> "" Then PLZ = row.Cells("UstV_Leistender_PLZ").Value If Not IsDBNull(row.Cells("UstV_Leistender_UstNr").Value) AndAlso row.Cells("UstV_Leistender_UstNr").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_UstNr").Value <> "" Then UIDNrLeistender = row.Cells("UstV_Leistender_UstNr").Value 'UIDNrLeistender = UIDNrLeistender.ToString.Replace(Antrag_LandKz, "") DEU wollen das Land dabei! End If LeistenderName = row.Cells("UStVPo_Leistender").Value If LeistenderName.ToString.EndsWith(Antrag_LandKz) Then LeistenderName = LeistenderName.ToString.Replace(Antrag_LandKz, "") End If Dim Nettobetrag As Double = 0 If Not IsDBNull(row.Cells("UStVPo_Nettobetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_Nettobetrag").Value) Then Nettobetrag = CDbl(row.Cells("UStVPo_Nettobetrag").Value) Dim Steuerbetrag As Double = 0 If Not IsDBNull(row.Cells("UStVPo_USteuerbetrag").Value) AndAlso IsNumeric(row.Cells("UStVPo_USteuerbetrag").Value) Then Steuerbetrag = CDbl(row.Cells("UStVPo_USteuerbetrag").Value) Dim land = "" Dim iso2Land = "" If Not IsDBNull(row.Cells("UstV_Leistender_Land").Value) AndAlso row.Cells("UstV_Leistender_Land").Value IsNot Nothing AndAlso row.Cells("UstV_Leistender_Land").Value <> "" Then land = row.Cells("UstV_Leistender_Land").Value If land.Length = 2 Then iso2Land = land ElseIf land.Length = 3 Then iso2Land = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO3Land(land) ElseIf land.Length = 1 Then iso2Land = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getISO2LandFromISO1Land(land) End If Blatt.Range("A" & zeile).Value = counter Blatt.Range("C" & zeile).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(LeistenderName, False) Blatt.Range("D" & zeile).Value = UIDNrLeistender Blatt.Range("E" & zeile).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(Strasse, False) Blatt.Range("F" & zeile).Value = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(StrasseNR, False) Blatt.Range("G" & zeile).Value = PLZ Blatt.Range("H" & zeile).Value = Ort Blatt.Range("I" & zeile).Value = VERAG_PROG_ALLGEMEIN.cProgramFunctions.getLandEnglFromISO2Land(iso2Land) 'Funktion der das Land auf englisch zurückgibt Blatt.Range("J" & zeile).Value = "Purchase" Blatt.Range("K" & zeile).Value = "Normal" Blatt.Range("L" & zeile).Value = CDate(row.Cells("UStVPo_ReDat").Value).ToString("dd.MM.yyyy") Blatt.Range("M" & zeile).Value = row.Cells("UStVPo_ReNr").Value Blatt.Range("N" & zeile).Value = Nettobetrag.ToString("0.00", CultureInfo.InvariantCulture) Blatt.Range("O" & zeile).Value = Steuerbetrag.ToString("0.00", CultureInfo.InvariantCulture) Blatt.Range("P" & zeile).Value = Steuerbetrag.ToString("0.00", CultureInfo.InvariantCulture) If Not IsDBNull(row.Cells("UStVPo_Leistungsbezeichnung").Value) AndAlso row.Cells("UStVPo_Leistungsbezeichnung").Value IsNot Nothing Then listOfLeistungstyp = getLeistungsTyp(row.Cells("UStVPo_Leistungsbezeichnung").Value, row.Cells("UStVPo_SchnittstellenNr").Value) Dim typeOfGoodsAndService As String = "" If listOfLeistungstyp.Count > 0 Then Select Case listOfLeistungstyp(0) Case "maut" : typeOfGoodsAndService = "Road tolls and road user charge" Case "diesel" : typeOfGoodsAndService = "Fuel" Case "rest" : typeOfGoodsAndService = "Other" Case "übernachtung" : typeOfGoodsAndService = "Accommodation" Case "zubehör" : typeOfGoodsAndService = "Other" Case "parkplatz" : typeOfGoodsAndService = "Travel expenses, such as taxi fares, public transport fares" End Select End If Blatt.Range("B" & zeile).Value = typeOfGoodsAndService End If Datei.Save counter += 1 zeile += 1 Next Datei.Save .Visible = True End With Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try Me.Cursor = Cursors.Default End Function Private Function PDFInvoicesPath(ByRef posId As String) As String Dim list As New List(Of String) If dgvUSTVPositionen.SelectedRows.Count > 0 Then Dim nummerierung As Boolean = False Dim counter = 0 For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index) posId &= "'" & row.Cells("UStVPo_ID").Value & "'" counter = counter + 1 If (dgvUSTVPositionen.SelectedRows.Count <> 1 And counter <> dgvUSTVPositionen.SelectedRows.Count) Then posId &= "," Dim pdf As String = "" pdf = func.getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), True, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False) If pdf <> "" Then list.Add(pdf) Next End If If list.Count = 0 Then Me.Cursor = Cursors.Default : Return "" If list.Count > 1 Then Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("RG_" & Now.ToString("ddMMyyyyHHmmss") & ".pdf", ".pdf", False, False) If FormularManagerNEU.MergePdfFiles(list, pathPDF) Then Return pathPDF End If Else Dim PDFFile As String = "" PDFFile = list(0) Return PDFFile End If End Function Private Shared Function updateNettobetrag(RechnungsNr As String, Rechnungsdatum As Date, SchnittstellenNr As Integer, USTV_POS As cUStVPositionen) Dim SQL As New SQL If USTV_POS.UStVPo_ID > 0 AndAlso USTV_POS.UStVAn_ID > 0 Then If USTV_POS.UStVPo_Nettobetrag IsNot Nothing AndAlso USTV_POS.UStVPo_NettobetragEUR IsNot Nothing Then SQL.doSQL("Update [tblUStVPositionen] Set [UStVPo_Nettobetrag] = " & USTV_POS.UStVPo_Nettobetrag.ToString.Replace(",", ".") & ",[UStVPo_NettobetragEUR] = " & USTV_POS.UStVPo_NettobetragEUR.ToString.Replace(",", ".") & " WHERE cast([UStVPo_ReDat] as Date) = '" & Rechnungsdatum.ToShortDateString & "' AND UStVPo_ReNr = '" & RechnungsNr & "' AND UStVPo_SchnittstellenNr = " & SchnittstellenNr, "FMZOLL") Else If USTV_POS.UStVPo_Nettobetrag IsNot Nothing Then SQL.doSQL("Update [tblUStVPositionen] Set [UStVPo_Nettobetrag] = " & USTV_POS.UStVPo_Nettobetrag.ToString.Replace(",", ".") & " WHERE cast([UStVPo_ReDat] as Date) = '" & Rechnungsdatum.ToShortDateString & "' AND UStVPo_ReNr = '" & RechnungsNr & "' AND UStVPo_SchnittstellenNr = " & SchnittstellenNr, "FMZOLL") If USTV_POS.UStVPo_NettobetragEUR IsNot Nothing Then SQL.doSQL("Update [tblUStVPositionen] Set [UStVPo_NettobetragEUR] = " & USTV_POS.UStVPo_NettobetragEUR.ToString.Replace(",", ".") & " WHERE cast([UStVPo_ReDat] as Date) = '" & Rechnungsdatum.ToShortDateString & "' AND UStVPo_ReNr = '" & RechnungsNr & "' AND UStVPo_SchnittstellenNr = " & SchnittstellenNr, "FMZOLL") End If End If End Function Private Sub cbxInterneNr_CheckedChanged(sender As Object, e As EventArgs) Handles cbxInterneNr.CheckedChanged init() End Sub Private Sub Button6_Click(sender As Object, e As EventArgs) Handles btnSortNachLeist.Click If rearangePosNrByLeistender(UStVAn_ID) Then If dgvUSTVPositionen.SelectedRows.Count > 0 Then initPosition(dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID").Value) End If End If End Sub Private Function lookFields(look As Boolean) For Each c As Control In Panel8.Controls If c.Name <> "cbxWahrung" AndAlso c.Name <> "txtEingereichtAm" AndAlso c.Name <> "cbxInterneNr" AndAlso c.Name <> "cbxSicherheit" AndAlso c.Name <> "txt3470" AndAlso c.Name <> "txtVZam" AndAlso c.Name <> "txtRZam" AndAlso c.Name <> "txtRZ" AndAlso c.Name <> "txtVZ" AndAlso c.Name <> "Label1" AndAlso c.Name <> "Label15" AndAlso c.Name <> "Label16" AndAlso c.Name <> "Label17" AndAlso c.Name <> "Label9" Then c.Enabled = Not look End If Next btnEintragloeschen.Enabled = Not look btnNeuerEintrag.Enabled = Not look End Function Private Sub txtRZ_ValueChanged() Handles txtRZ.TextChanged, txtVZ.TextChanged Dim VZ As Double = 0 Dim RZ As Double = 0 If txtVZ.Text <> "" AndAlso IsNumeric(txtVZ.Text) Then VZ = CDbl(txtVZ.Text) If txtRZ.Text <> "" AndAlso IsNumeric(txtRZ.Text) Then RZ = CDbl(txtRZ.Text) End If txtVZOffen.Text = VZ - RZ End If End Sub Public Shared Function rearangePosNrByLeistender(UStVAn_ID As Integer) If UStVAn_ID > 0 Then Dim SQLString = "WITH Ordered AS ( SELECT [UStVAn_ID], [UStVPo_ID], ROW_NUMBER() OVER ( ORDER BY [UStVPo_Leistender], [UStVPo_ReDat], [UStVPo_ReNr] ) AS NewPosNr FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & UStVAn_ID & " ) -- Temporär verschieben UPDATE t SET [UStVPo_ID] = o.NewPosNr + 1000 FROM [tblUStVPositionen] t JOIN Ordered o ON t.[UStVAn_ID] = o.[UStVAn_ID] AND t.[UStVPo_ID] = o.[UStVPo_ID]; -- Endgültige Nummern UPDATE [tblUStVPositionen] SET [UStVPo_ID] = [UStVPo_ID] - 1000 WHERE [UStVAn_ID] = " & UStVAn_ID & ";" If (New SQL).doSQL(SQLString, "FMZOLL") Then Return True Else Return False End If Else Return False End If End Function End Class