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 = "