Imports System.IO Imports System.Reflection Imports System.Windows.Documents Imports com.sun.org.apache.xml.internal.resolver Imports com.sun.tools.internal.ws.wsdl.framework Imports DocumentFormat.OpenXml.Office2010.Drawing.Charts Imports iTextSharp.text.pdf Imports iTextSharp.text.pdf.parser Imports java.text.Normalizer Imports jdk.nashorn.internal.objects.annotations 'Imports DocumentFormat.OpenXml.Drawing.Charts Imports Microsoft.Office.Interop Imports Org.BouncyCastle.Pqc.Crypto Imports sun.swing 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 von, bis As Date 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 Lieferant As String = "") pnlFilter.AutoScroll = False 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") .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 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 If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then da_id = r.Cells("UStVPo_daId").Value Else da_id = getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value) End If If da_id > 0 Then DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf End If Next End If End With Dim GesamtUSteuer As Double = SQL.DLookup("isnull(sum(UStVPo_USteuerbetragEUR),0)", "tblUStVPositionen", "UStVAn_ID='" & UStVAn_ID & "'", "FMZOLL", "0") Dim GesamtErstattung As Double = SQL.DLookup("isnull(sum(UStVEr_USteuerbetragEUR),0)", "tblUStVErstattung", "UStVAn_ID='" & UStVAn_ID & "'", "FMZOLL", "0") Dim Differnezbetrag As Double = GesamtUSteuer - GesamtErstattung lblGesamtUSteuer.Text = GesamtUSteuer.ToString("C2") lblGesamtErstattung.Text = GesamtErstattung.ToString("C2") lblDiffernezbetrag.Text = Differnezbetrag.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) 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, "") txtBezugsNr.Text = If(USTV_ANTRAG.UStVAn_BezugsNr, "") txtAbfNr.Text = If(USTV_ANTRAG.AbfertigungsNr, "") cbxFiliale.changeItem(If(USTV_ANTRAG.FilialenNr, "")) cbxWahrung.changeItem(If(USTV_ANTRAG.UStVAn_Währungscode, "")) 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 'lblFirma.Text = USTV_ANTRAG.UStVAn_Name 'lblLand.Text = Antrag_LandKz If IsDate(txtVon._value) Then USTV_ANTRAG.UStVAn_ReDatVon = CDate(txtVon._value) If IsDate(txtBis._value) Then USTV_ANTRAG.UStVAn_ReDatBis = CDate(txtBis._value) 'lblZeitraum.Text = CDate(USTV_ANTRAG.UStVAn_ReDatVon).ToString("dd.MM.yyyy") & " - " & CDate(USTV_ANTRAG.UStVAn_ReDatBis).ToString("dd.MM.yyyy") USTV_ANTRAG.UStVAn_Status = cboStatus._value USTV_ANTRAG.UStVAn_AntragArt = cboAntragArt._value USTV_ANTRAG.UStVAn_StatusText = rtbStatusText.Text 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_RZBetragVZ = CDbl(txtVZ.Text) Else USTV_ANTRAG.UStVAn_RZBetragVZ = Nothing End If USTV_ANTRAG.UStVAn_BezugsNr = txtBezugsNr.Text USTV_ANTRAG.AbfertigungsNr = txtAbfNr.Text If ADR IsNot Nothing Then USTV_ANTRAG.UStVAn_KuNr = ADR.AdressenNr USTV_ANTRAG.UStVAn_Name = ADR.Name_1 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 dgvUSTVPositionen.VALUE_CHANGED = True End Sub Private Sub usrCntlVERAGCard_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() 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 'wenn INFO von PLOSE WÄHRUNGSCODE IN INV_DATA, dann freischalten 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, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien, MWSTSummenAusBeleg) As Boolean Try Dim bytSchnittstellenNr = 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" USTV_POS.UStVPo_Leistender = ANTRAG.plose_Lieferant If ANTRAG.plose_Lieferant = "PLOSE Sistem Service" Then USTV_POS.UStVPo_Leistender = USTV_POS.UStVPo_Leistender 'USTV_POS.UStVPo_Leistender.ToString.Replace("", "PLOSE Sistem Service") End If USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() USTV_POS.UStVPo_daId = ANTRAG.plose_daId ' Berechnungen If Not MWSTSummenAusBeleg Then USTV_POS.UStVPo_USteuerbetragEUR = ANTRAG.plose_MWSTBetragWaehrungAbbuchung 'VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(ANTRAG.plose_MWSTBetragWaehrungAbbuchung, USTV_ANTRAG.UStVAn_Währungscode, "EUR") 'USTV_POS.UStVPo_Umrechnungskurs = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuroKurs(ANTRAG.plose_WaehrungAbbuchung, ANTRAG.plose_RechnungsDatum) USTV_POS.UStVPo_Umrechnungskurs = ANTRAG.plose_MWSTBetrag / ANTRAG.plose_MWSTBetragWaehrungAbbuchung USTV_POS.UStVPo_USteuerbetrag = ANTRAG.plose_MWSTBetrag ' MsgBox(ANTRAG.plose_Lieferant & " - " & ANTRAG.plose_RechnungsDatum & " - " & ANTRAG.plose_RechnungsNr & " :::::::::: " & CDbl(ANTRAG.plose_MWSTBetrag).ToString("C2")) 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 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) 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 USTV_POS.INSERT() 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, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) 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) 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 USTV_POS.UStVPo_Leistender = "VERAG 360 GmbH; 4975 Suben" USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() USTV_POS.UStVPo_daId = sql.getValueTxtBySql("SELECT TOP(1) RK_ID FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & USTV_POS.UStVPo_ReDat & "' and Rechnungsausgang.RechnungsNr='" & USTV_POS.UStVPo_ReNr & "' AND FilialenNr = 4814 AND RK_ID is not null", "FMZOLL") 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")) 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 = NULL 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, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) 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 Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = "Diesel" USTV_POS.UStVPo_Leistender = "RMC Service GmbH" 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, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) 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 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") USTV_POS.UStVPo_Leistender = "MS Europe BV" 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, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) 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 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 Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = "MAUT, DIESEL oder KFZ-Zubehör" USTV_POS.UStVPo_Leistender = "Union Tank Eckstein Gmbh&Co KG, Kleinostheim" 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, kdnr, 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_IDS(UStVAn_ID, Antrag_LandKz, ArchivierteEintracheNochmalsEinarbetien) As Boolean Try Dim bytSchnittstellenNr = 8 '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 = 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 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") If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then USTV_POS.UStVPo_Schnittstelle = True USTV_POS.UStVPo_Leistungsbezeichnung = "Diesel" USTV_POS.UStVPo_Leistender = "IDS EUROPE BV" USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME USTV_POS.UStVPo_Zeitstempel = Now() Dim umrechKurs As Double = 1 'IDS liefert Beträge immer in EUR, wir müssen allerdings die Beträge in FREMDW umrechnen! 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 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 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) If ERW.kde_keineMWSt Then If Not vbYes = MsgBox("Der ausgewählte Kunde " & ADR.Name_1 & " ist als KEIN MWST-Kunde deklariert!" & vbNewLine & "Trotzdem den Antrag speichern?", vbYesNoCancel) Then Exit Sub End If USTV_ANTRAG.UStVAn_LandNr = cbxLand._value If cbxWahrung.SelectedValue 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.SelectedValue 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() init() End If 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) UstCntlUSTV_AntragPosition1.Enabled = True UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, ANTR_Leistender) Else UstCntlUSTV_AntragPosition1.reset() UstCntlUSTV_AntragPosition1.Enabled = False 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) 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_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_AntragPosition_KeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown If e.KeyValue = Keys.PageDown Then UstCntlUSTV_AntragPosition1_EV_NEXT() End If If e.KeyValue = Keys.PageUp Then UstCntlUSTV_AntragPosition1_EV_PREV() End If End Sub Private Sub frmMDM_USTVAntrag_Shown(sender As Object, e As EventArgs) Handles Me.Shown 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 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 cboStatus.changeItem(cUSTVStatus.STAT_EINGEREICHT) 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 = Nothing 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 Dim updated As Boolean = False Dim sqlText = "" Dim test As Boolean = False Select Case UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value Case 1 'VERAG 360 GmbH; 4975 Suben 'UStV-Antragsnummer im Buchungssatz löschen. sqlText = "Update tblTrdinInvoice SET tblTrdinInvoice.UStVAn_ID = NULL WHERE tblTrdinInvoice.Rechnungsdatum = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And tblTrdinInvoice.Rechnungsnummer = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr 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])='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "') AND ((ISNULL([OBO Number],ISNULL([VR Number],[Payment summary number])))='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & "') 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='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' AND tblMautITArchiv.Code_Adressat_des_Kontoauszugs='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & "' 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])='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "') AND ((tblMSETransactionsArchiv.[Invoice ID])='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & "') AND ((tblMSETransactionsArchiv.[Specification Page])='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung & "') AND ((Adressen.AdressenNr)=" & USTV_ANTRAG.UStVAn_KuNr & ") AND ((tblMSETransactionsArchiv.[Transaction Country])='" & UstCntlUSTV_AntragPosition1.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='" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' AND tblUTAArchiv.Rechnungsnummer_pro_Lieferland=" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & " 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 'PLOSE 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) = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr & " AND plose_RechnungsNr = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & "' And plose_LieferantCode IN (0,1,7) " 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) = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And rmc_reNr = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & " AND adressen.AdressenNr=" & USTV_ANTRAG.UStVAn_KuNr If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") Case 8 '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] = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & "' 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 UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr.ToString.Length >= 15 Then Dim invoiceNo = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr.ToString.Substring(0, 7) Dim customerNo = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr.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) = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And invoice_id = " & invoiceNo & " And tblMSECustomers.partner_customer_number= " & USTV_ANTRAG.UStVAn_KuNr & " And country = '" & UstCntlUSTV_AntragPosition1.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) = '" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat & "' And Rechnungsnummer_pro_Lieferland = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr & " And Adressen.AdressenNr= " & USTV_ANTRAG.UStVAn_KuNr & " AND Lieferland_ISO2 = '" & UstCntlUSTV_AntragPosition1.Antrag_LandKz & "'" If Not test Then updated = SQL.doSQL(sqlText, "FMZOLL") End Select If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value IsNot Nothing AndAlso (UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value > 0 And UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value < 11) 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 Exit Sub End If End If End If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) init() 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 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 ,[UStVPo_Leistender] as SupplierName, leist.[UstV_Leistender_Strasse] AS SupplierStreet, leist.[UstV_Leistender_StrasseNr] as SupplierStreetNumber, leist.[UstV_Leistender_PLZ] as SupplierPostalCode, leist.[UstV_Leistender_Stadt] as SupplierCity, leist.[UstV_Leistender_Land] as SupplierCountry, leist.[UstV_Leistender_UstNr] as SupplierVAT_TaxNumber, [UStVPo_Leistungsbezeichnung] as ExpenseCategory ,Round((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") & "
" 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 schnnittstellenNr = dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_SchnittstellenNr").Value Dim ReNr = dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReNr").Value Dim ReDat = dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReDat").Value Dim dsID If Not IsDBNull(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value) AndAlso IsNumeric(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value) AndAlso dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value > 0 Then dsID = dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value Else dsID = getDaID_OLD(schnnittstellenNr, ReDat, ReNr) End If Select Case schnnittstellenNr Case 1 If dsID > 0 Then Me.Cursor = Cursors.WaitCursor cFakturierung.doRechnungsDruck_SRorER(dsID,, False, 3) End If Case 8 Me.Cursor = Cursors.WaitCursor Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID) 'If Not IsDBNull(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value) Then ' ds.OPEN_SINGLE() ' Exit Sub 'End If Dim path_src As String = ds.OPEN_SINGLE(False) If path_src = "" Then Exit Sub 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,, True, "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() Exit Sub 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 IO.File.Exists(TMP_Path_New) Then Process.Start(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) DS.OPEN_SINGLE() End If End Select 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 : 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 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, "") 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 = getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value) End If If da_id > 0 Then DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf Next End Sub End Class