Imports System.IO Imports System.Reflection Imports System.Windows.Documents Imports com.sun.org.apache.xpath.internal.objects Imports com.sun.xml.internal.bind.v2 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 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 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 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] ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId] ' FROM [tblUStVPositionen] ' left join [tblUStVLeistender] as leist on leist.UStV_Leistender = [tblUStVPositionen].[UStVPo_Leistender] ' where UStVAn_ID='" & UStVAn_ID & "' ORDER BY UStVPo_ID", "FMZOLL") .SET_SQL("SELECT [UStVAn_ID] ,[UStVPo_ID] ,[UStVPo_ReDat],[UStVPo_ReNr],[UStVPo_Leistungsbezeichnung],[UStVPo_Leistender],leist.[UstV_Leistender_Strasse] + ' ' + leist.[UstV_Leistender_StrasseNr] as [UstV_Leistender_Strasse],leist.[UstV_Leistender_PLZ],leist.[UstV_Leistender_Stadt],leist.[UstV_Leistender_Land],leist.[UstV_Leistender_UstNr],[UStVPo_USteuerbetrag],[UStVPo_Schnittstelle],[UStVPo_SchnittstellenNr],[UStVPo_Umrechnungskurs],[UStVPo_USteuerbetragEUR],[UStVPo_Sachbearbeiter], [UStVPo_daId], [UStVPo_daId_loeschbar] 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("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 = 180 .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 = 150 .Columns("UStVPo_Leistender").HeaderText = "Leistender" .Columns("UStVPo_Leistender").Width = 100 .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 = 100 .Columns("UstV_Leistender_UstNr").HeaderText = "UID-Nr" .Columns("UstV_Leistender_UstNr").Width = 150 .Columns("UStVPo_Schnittstelle").HeaderText = "API" .Columns("UStVPo_Schnittstelle").Width = 30 .Columns("UStVPo_SchnittstellenNr").HeaderText = "API-Nr" .Columns("UStVPo_SchnittstellenNr").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_daId_loeschbar").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) 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 Next 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 lblGesamtUSteuerFW.Text = GesamtUSteuer.ToString("C2") lblGesamtErstattungFW.Text = GesamtErstattung.ToString("C2") lblDiffernezbetragFW.Text = Differnezbetrag.ToString("C2") 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 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 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 USTV_ANTRAG.UStVAn_RGRetour = cbxRGretour.Checked USTV_ANTRAG.FilialenNr = cbxFiliale._value USTV_ANTRAG.FilialenNr = cbxFiliale._value 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 dgvUSTVPositionen.VALUE_CHANGED = True initdgvErstattungen(POSId) Else initdgvErstattungen(dgvUSTVPositionen.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) Else Dim sqlWhere As String = "" 'neuer USTVA-Antrag KdSearchBox1.Visible = True cbxWahrung.Enabled = True 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 ContextMenuStrip2.Items.ContainsKey("plose") Then Dim plose = New ToolStripMenuItem() With {.Text = "Plose", .Name = "plose", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} ContextMenuStrip2.Items.Add(plose) AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked End If If USTV_ANTRAG.UStVAn_ReDatVon.year >= 2025 Then If Not ContextMenuStrip2.Items.ContainsKey("ploseneu") Then Dim plose = New ToolStripMenuItem() With {.Text = "Plose NEUE LOGIK", .Name = "ploseneu", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} ContextMenuStrip2.Items.Add(plose) AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked End If End If If Not ContextMenuStrip2.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 ContextMenuStrip2.Items.Add(rmc) End If If Not ContextMenuStrip2.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 ContextMenuStrip2.Items.Add(rmc) End If If Not ContextMenuStrip2.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 ContextMenuStrip2.Items.Add(uta) End If If Not ContextMenuStrip2.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 ContextMenuStrip2.Items.Add(ids) End If If Not ContextMenuStrip2.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 ContextMenuStrip2.Items.Add(ids) End If ContextMenuStrip2.Show(Cursor.Position) End Sub Private Sub mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs) ContextMenuStrip1.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 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 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_ReDat = ANTRAG.plose_RechnungsDatum USTV_POS.UStVPo_ReNr = ANTRAG.plose_RechnungsNr.ToString USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr 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 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 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 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_ReDat = r.Item("Rechnungsdatum") USTV_POS.UStVPo_ReNr = r.Item("Rechnungsnummer") USTV_POS.UStVPo_SchnittstellenNr = bytSchnittstellenNr 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 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 = True 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 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 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_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 Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = "Diesel" Dim leistender As New cUStVLeistender("RMC Service GmbH" & " " & Antrag_LandKz, Antrag_LandKz) If leistender.UStV_LeistenderId < 1 Then leistender = New cUStVLeistender("RMC Service 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() ' Berechnungen 'von RMC bekommen wir Fremdwährung und EUR, d.b. wir können und den Umrechnungskurs selbst berechnen! Dim umrechKurs As Double = 1 If (CDbl(r.Item("rmc_betragBrutto")) <> 0 AndAlso CDbl(r.Item("rmc_euroBrutto")) <> 0) Then Dim UST_EUR As Double = CDbl(r.Item("rmc_euroBrutto")) Dim UST_org As Double = CDbl(r.Item("rmc_betragBrutto")) 'umrechKurs = frmdw / eur umrechKurs = Math.Floor((UST_org / UST_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") End If If USTV_POS.INSERT() Then cRMC.UPDATE_ARCHIV(USTV_POS.UStVPo_ReDat, USTV_POS.UStVPo_ReNr, kdNr, USTV_POS.UStVAn_ID) End If 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 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_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") 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 Not alreadyExistsMitLeistungsBez(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = r.Item("specification_page_name") 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 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 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 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_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 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 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 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_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 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 = "" 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 = "IDS EUROPE 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 End If 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 'tblUStVPositionen 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) 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_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, pagestart, r.Cells("page_count").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_EURTOCUR(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) 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, 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 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) 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 If dgvUSTVPositionen.Rows.Count > 0 Then For Each row In dgvUSTVPositionen.Rows averageUmrechnungskurs += row.Cells("UStVPo_Umrechnungskurs").Value 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 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 'check if already existing 'überschneidungen prüfen!!!! 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") 'Dim anzUSTVA = CInt((New SQL).getValueTxtBySql("Select count(*) from tblUStVAntrag where UStvAN_KuNr = " & KundenNr & " and (isnull(UStVAn_AntragArt,'MWST') = '" & cboAntragArt._value & "' or UStVAn_AntragArt = '') and UStVAn_LandNr = " & USTV_ANTRAG.UStVAn_LandNr & " ' AND not ((cast(UStVAn_ReDatvon as date) > '" & CDate(txtVon._value).ToShortDateString & "' and cast(UStVAn_ReDatBis as date) <= '" & CDate(txtVon._value).ToShortDateString & "') or (cast(UStVAn_ReDatvon as date) < '" & CDate(txtBis._value).ToShortDateString & "' and cast(UStVAn_ReDatBis as date) >= '" & CDate(txtBis._value).ToShortDateString & "'))", "FMZOLL")) 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 If Not vbYes = MsgBox("Es existiert bereits mind. ein " & cboAntragArt._value & "-Eintrag in diesem Zeitbereich von " & ADR.Name_1 & " für " & cbxLand.SelectedItem.ToString & vbNewLine & "Trotzdem Antrag speichern?", vbYesNoCancel) Then Exit Sub 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.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.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 Then Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & "_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr) If DS IsNot Nothing Then DS.DELETE_COMPLETE() End If ElseIf UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId > 0 Then Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId) If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then DS.DELETE_COMPLETE() End If End If 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 ContextMenuStrip1.Items.ContainsKey("excel") Then Dim excel = New ToolStripMenuItem() With {.Text = "Excelauswertung starten", .Name = "excel", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} ContextMenuStrip1.Items.Add(excel) AddHandler excel.Click, AddressOf mnuItem_Clicked End If If Not ContextMenuStrip1.Items.ContainsKey("mail") Then Dim mail = New ToolStripMenuItem() With {.Text = "Email generieren", .Name = "mail", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)} AddHandler mail.Click, AddressOf mnuItem_Clicked ContextMenuStrip1.Items.Add(mail) End If If Not ContextMenuStrip1.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 ContextMenuStrip1.Items.Add(oa) End If ContextMenuStrip1.Show(Cursor.Position) End Sub Private Sub mnuItem_Clicked(sender As Object, e As EventArgs) ContextMenuStrip1.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() 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") 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, 'FR' as CountryOfRefund ,'EUR' as Currency ,replace([UStVPo_Leistender],'FR','') 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((1119/19*[UStVPo_USteuerbetragEUR]),2) as ExpenseGrossAmount, [UStVPo_USteuerbetragEUR] as ExpenseVATAmount,Round((100/19*[UStVPo_USteuerbetragEUR]),2) as ExpenseNetAmount 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 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)},,,, openExcel) Return True Else If feedback Then MsgBox("keine Daten vorhanden!") Return False End If End Function Private Sub mailmitExcelauswertung() 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 Dim subject As String = "" subject &= IIf(USTV_ANTRAG.UStVAn_Name <> "", USTV_ANTRAG.UStVAn_Name & "_", "") subject &= IIf(USTV_ANTRAG.UStVAn_LandKz <> "", USTV_ANTRAG.UStVAn_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 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 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 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_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 txtSumme._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 ' If Not IsNull(Me!UStVAn_LandNr) Then ' strSQL = "SELECT tblSteuernummern.*" & ' " FROM tblSteuernummern" & ' " WHERE (((tblSteuernummern.AdressenNr)=" & Me!lngKundenNr & ") AND ((tblSteuernummern.LandNr)=" & Me!UStVAn_LandNr & "));" ' Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot) ' If Not rst.EOF Then ' Me!StNrFürRückerstattungUSt = rst!StNrFürRückerstattungUSt ' Me!StNrGültigkeitsdatum = rst!StNrGültigkeitsdatum ' Me!bezVertretungsvollmachtAusgestelltAm.ForeColor = -2147483630 ' Me!bezVertretungsvollmachtAusgestelltAm.Caption = "Vertretungsvollmacht ausgestellt am" ' Me!VertretungsvollmachtAusgestelltAm = rst!VertretungsvollmachtAusgestelltAm ' Me!bezVertretungsvollmachtErhaltenAm.ForeColor = -2147483630 ' Me!bezVertretungsvollmachtErhaltenAm.Caption = "Vertretungsvollmacht erhalten am" ' Me!VertretungsvollmachtErhaltenAm = rst!VertretungsvollmachtErhaltenAm ' Me!AuszahlungsvollmachtAusgestelltAm = rst!AuszahlungsvollmachtAusgestelltAm ' Me!AuszahlungsvollmachtErhaltenAm = rst!AuszahlungsvollmachtErhaltenAm ' Me!Bemerkung = rst!Bemerkung ' End If ' rst.Close ' ' ab 25.03.2010 Generalvollmacht Eintrag in Tabelle Adressen ' strSQL = "SELECT Adressen.UStV_GVAnfDat, Adressen.UStV_GVAusDat" & ' " FROM Adressen" & ' " WHERE (((Adressen.AdressenNr)=" & Me!lngKundenNr & ") AND" & ' " (((Adressen.UStV_GVAnfDat) Is Not Null) OR ((Adressen.UStV_GVAusDat) Is Not Null)));" ' Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot) ' If Not rst.EOF Then ' Me!bezVertretungsvollmachtAusgestelltAm.ForeColor = 16711808 ' Me!bezVertretungsvollmachtAusgestelltAm.Caption = "Generalvollmacht angefordert am" ' Me!VertretungsvollmachtAusgestelltAm = rst!UStV_GVAnfDat ' Me!bezVertretungsvollmachtErhaltenAm.ForeColor = 16711808 ' Me!bezVertretungsvollmachtErhaltenAm.Caption = "Generalvollmacht ausgestellt am" ' Me!VertretungsvollmachtErhaltenAm = rst!UStV_GVAusDat ' End If ' rst.Close ' Set rst = Nothing '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 = UstCntlUSTV_AntragErstattungen1.UStV_ERS.getMaxPosNr() 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.DELETE(UstCntlUSTV_AntragErstattungen1.UstV_AN.UStVAn_ID, UstCntlUSTV_AntragErstattungen1.UStV_ERS) Then initdgvErstattungen() End If 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) 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) 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 = "MWSt-Rückerstattung " & 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.generateExcelPosList(USTV_ANTRAG, posId, Antrag_LandKz, txtStNr.Text, True) 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_USteuerbetrag],[Belegdatum],[Belegnummer],[GutschriftsDatum],[GutschriftsNr],[Berufungsdatum],[Berufungshöhe],[Berufungsgrund],[Bemerkung],[UStVEr_Umrechnungskurs],[UStVEr_USteuerbetragEUR],[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 = 80 .Columns("GutschriftsNr").Width = 130 .Columns("Berufungsdatum").HeaderText = "BE-Datum" .Columns("Berufungshöhe").HeaderText = "BE-Höhe" .Columns("Berufungsgrund").HeaderText = "BE-Grund" .Columns("Berufungsdatum").Width = 80 .Columns("Berufungshöhe").Width = 100 .Columns("Berufungsgrund").Width = 150 .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 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_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")) If RK_ID > 0 Then Dim f As New SDL.frmAbrechnungsMaskeEinzeln(RK_ID) f.Show(Me) Else Dim f As New SDL.frmAbrechnungsMaskeEinzeln(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, IIf(USTV_ANTRAG.UStVAn_ErstattungsbetragEUR >= 0, "AG", "AR")) f.Show(Me) End If 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 countSumme As Double = 0 If posTabisSelected Then For i As Integer = 0 To dgvUSTVPositionen.SelectedRows.Count - 1 countSumme += CDbl(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetragEUR").Value) Next End If txtSumme._value = countSumme.ToString End Sub Private Sub pb_Beleg_Click(sender As Object, e As EventArgs) Handles pb_Beleg.Click 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 DruckDatumZeit is not null and Firma_ID = 19", "FMZOLL", ,, "0")) If RK_ID > 0 Then Dim RG_PATH = "" cFakturierung.doRechnungsDruck_SRorER(RK_ID,, False, 4, RG_PATH,,, True) Process.Start(RG_PATH) End If 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 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 Else cbxKIUploaddelete.Enabled = False End If End Sub End Class