Files
SDL/SDL/USTV/frmMDM_USTVAntrag.vb
2025-05-27 17:02:52 +02:00

3368 lines
161 KiB
VB.net

Imports System.IO
Imports System.Reflection
Imports System.Windows.Documents
Imports itextsharp.text.pdf
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
Imports VERAG_PROG_ALLGEMEIN.TESTJSON
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] ,[UStVPo_VZ],[UStVPo_VZ_RKID] ,cast(case when isnull([UStVPo_VZ_RKID],0) = 0 then 0 else 1 end as bit) as VZabrechnet
FROM [tblUStVPositionen]
LEFT JOIN [tblUStVLeistender] as leist
ON ([tblUStVPositionen].[UStVPo_LeistenderId] > 0
AND leist.[UStV_LeistenderId] = [tblUStVPositionen].[UStVPo_LeistenderId])
OR ([tblUStVPositionen].[UStVPo_LeistenderId] <= 0
AND leist.[UStV_Leistender] = [tblUStVPositionen].[UStVPo_Leistender])
where UStVAn_ID='" & UStVAn_ID & "' ORDER BY UStVPo_ID", "FMZOLL")
.LOAD()
.RowTemplate.Height = 20
.AllowUserToOrderColumns = False
.AllowUserToResizeRows = False
If .Columns.Count > 0 Then
.Columns("UStVAn_ID").Visible = False
.Columns("UStVPo_ID").HeaderText = "Pos"
.Columns("UStVPo_ID").Width = 40
.Columns("UStVPo_ReDat").HeaderText = "Rg-Datum"
.Columns("UStVPo_ReDat").Width = 80
.Columns("UStVPo_ReNr").HeaderText = "Rechnungs-Nr"
.Columns("UStVPo_ReNr").Width = 120
.Columns("UStVPo_USteuerbetrag").HeaderText = "USt-Betrag"
.Columns("UStVPo_USteuerbetrag").Width = 110
.Columns("UStVPo_USteuerbetrag").DefaultCellStyle.Format = "N2"
.Columns("UStVPo_USteuerbetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns("UStVPo_Leistungsbezeichnung").HeaderText = "Leistungsbezeichnung"
.Columns("UStVPo_Leistungsbezeichnung").Width = 120
.Columns("UStVPo_Leistender").HeaderText = "Leistender"
.Columns("UStVPo_Leistender").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("UstV_Leistender_Strasse").HeaderText = "Strasse"
.Columns("UstV_Leistender_Strasse").Width = 50
.Columns("UstV_Leistender_PLZ").HeaderText = "PLZ"
.Columns("UstV_Leistender_PLZ").Width = 50
.Columns("UstV_Leistender_Land").HeaderText = "Land"
.Columns("UstV_Leistender_Land").Width = 50
.Columns("UstV_Leistender_Stadt").HeaderText = "Stadt"
.Columns("UstV_Leistender_Stadt").Width = 80
.Columns("UstV_Leistender_UstNr").HeaderText = "UID-Nr"
.Columns("UstV_Leistender_UstNr").Width = 100
.Columns("UStVPo_Schnittstelle").HeaderText = "API"
.Columns("UStVPo_Schnittstelle").Width = 30
.Columns("UStVPo_VZ").HeaderText = "VZ"
.Columns("UStVPo_VZ").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter
.Columns("UStVPo_VZ").Width = 40
.Columns("UStVPo_SchnittstellenNr").HeaderText = "API-Nr"
.Columns("UStVPo_SchnittstellenNr").Width = 40
.Columns("VZabrechnet").HeaderText = "abger."
.Columns("VZabrechnet").Width = 40
.Columns("UStVPo_Umrechnungskurs").HeaderText = "Umrechnungskurs"
.Columns("UStVPo_Umrechnungskurs").Width = 60
.Columns("UStVPo_Umrechnungskurs").DefaultCellStyle.Format = "N2"
.Columns("UStVPo_Umrechnungskurs").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns("UStVPo_USteuerbetragEUR").HeaderText = "USt-Betrag EUR"
.Columns("UStVPo_USteuerbetragEUR").Width = 110
.Columns("UStVPo_USteuerbetragEUR").DefaultCellStyle.Format = "N2"
.Columns("UStVPo_USteuerbetragEUR").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns("UStVPo_Sachbearbeiter").HeaderText = "Sachbearbeiter"
.Columns("UStVPo_Sachbearbeiter").MinimumWidth = 100
.Columns("UStVPo_Sachbearbeiter").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("UStVPo_daId").Visible = False
.Columns("UStVPo_VZ_RKID").Visible = False
.Columns("UStVPo_daId_loeschbar").Visible = False
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
dgvErstattungspositionen.VALUE_CHANGED = True
initdgvErstattungen(POSId)
Else
initdgvErstattungen(dgvErstattungspositionen.Rows.Count + 1)
End If
'Dim dgvUSTVPositionen.
'init()
End Sub
Private Sub usrCntlUSTVA_Antrag_Load(sender As Object, e As EventArgs) Handles MyBase.Load
EnableDoubleBuffered(dgvUSTVPositionen)
cboStatus.Items.Clear()
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("-", ""))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("In Bearbeitung", cUSTVStatus.STAT_INBEARBEITUNG))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Unvollständig", cUSTVStatus.STAT_UNVOLLSTAENDIG))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Eingereicht", cUSTVStatus.STAT_EINGEREICHT))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Nachforderung/Berichtigung", cUSTVStatus.STAT_NACHFORDERUNG))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Abgeschlossen/Erstattet", cUSTVStatus.STAT_ERSTATTET))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Teil-Erstattet", cUSTVStatus.STAT_TEILERSTATTET))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Abgelehnt", cUSTVStatus.STAT_ABGELEHNT))
cboStatus.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Storno", cUSTVStatus.STAT_STORNO))
cboStatus.changeItem(cUSTVStatus.STAT_INBEARBEITUNG)
cboAntragArt.Items.Clear()
cboAntragArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("USTV-Antrag", "MWST"))
cboAntragArt.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("MÖST-Antrag", "MOEST"))
cboAntragArt.changeItem("MWST")
cbxWahrung.fillWithSQL("SELECT [Länderverzeichnis für die Außenhandelsstatistik].Währungscode FROM [Länderverzeichnis für die Außenhandelsstatistik] WHERE ((([Länderverzeichnis für die Außenhandelsstatistik].Umsatzsteuervergütungsverfahren)=1)) GROUP BY [Länderverzeichnis für die Außenhandelsstatistik].Währungscode
ORDER BY [Länderverzeichnis für die Außenhandelsstatistik].Währungscode", False, "FMZOLL", True)
cboAntragArt.changeItem(" ")
cbxFiliale.fillWithSQL("SELECT Filialen.FilialenNr, Filialen.Grenzstelle FROM Filialen WHERE Filialen.FilialenNr>=4800 AND Filialen.Fil_Status='A' ORDER BY Filialen.FilialenNr",, "FMZOLL", True)
lbl_EintrageVerarbetiet.Text = ""
If UStVAn_ID > 0 Then
cbxWahrung.Enabled = False
KdSearchBox1.Visible = False
USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(UStVAn_ID)
Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL")
setValue(USTV_ANTRAG)
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 cns_LRE.Items.ContainsKey("plose") Then
Dim plose = New ToolStripMenuItem() With {.Text = "Plose", .Name = "plose", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cns_LRE.Items.Add(plose)
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
End If
If USTV_ANTRAG.UStVAn_ReDatVon.year >= 2025 Then
If Not cns_LRE.Items.ContainsKey("ploseneu") Then
Dim plose = New ToolStripMenuItem() With {.Text = "Plose NEUE LOGIK", .Name = "ploseneu", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cns_LRE.Items.Add(plose)
AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
End If
End If
If Not cns_LRE.Items.ContainsKey("rmc") Then
Dim rmc = New ToolStripMenuItem() With {.Text = "RMC", .Name = "rmc", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
cns_LRE.Items.Add(rmc)
End If
If Not cns_LRE.Items.ContainsKey("mse") Then
Dim rmc = New ToolStripMenuItem() With {.Text = "MSE", .Name = "mse", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
cns_LRE.Items.Add(rmc)
End If
If Not cns_LRE.Items.ContainsKey("uta") Then
Dim uta = New ToolStripMenuItem() With {.Text = "UTA", .Name = "uta", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked
cns_LRE.Items.Add(uta)
End If
If Not cns_LRE.Items.ContainsKey("ids") Then
Dim ids = New ToolStripMenuItem() With {.Text = "IDS", .Name = "ids", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cns_LRE.Items.Add(ids)
End If
If Not cns_LRE.Items.ContainsKey("verag") Then
Dim ids = New ToolStripMenuItem() With {.Text = "VERAG", .Name = "verag", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cns_LRE.Items.Add(ids)
End If
cns_LRE.Show(Cursor.Position)
End Sub
Private Sub mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs)
cns_neAntraege.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then
If item.Name = "plose" Or item.Name = "ploseneu" Then
loadUSTVFrom_PLOSE(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked, IIf(item.Name = "ploseneu", True, False))
init()
ElseIf item.Name = "rmc" Then
loadUSTVFrom_RMC(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked)
init()
ElseIf item.Name = "mse" Then
loadUSTVFrom_MSE(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked)
init()
ElseIf item.Name = "uta" Then
loadUSTVFrom_UTA(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked)
init()
ElseIf item.Name = "ids" Then
loadUSTVFrom_IDS(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked)
init()
ElseIf item.Name = "verag" Then
loadUSTVFrom_VERAG(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked)
init()
End If
End If
End Sub
Shared Function alreadyExists(USTVAn_KuNr As Integer, UStVAn_LandNr As String, USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim cnt = SQL.getValueTxtBySql(" Select count(*) FROM [tblUStVAntrag] inner join [tblUStVPositionen] On tblUStVAntrag.UStVAn_ID= [tblUStVPositionen].UStVAn_ID
WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' /* AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "'*/ AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "'", "FMZOLL")
Return (cnt > 0)
End Function
Shared Function alreadyExistsMitLeistungsBez(USTVAn_KuNr As Integer, UStVAn_LandNr As String, USTV_POS As VERAG_PROG_ALLGEMEIN.cUStVPositionen) As Boolean
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim cnt = SQL.getValueTxtBySql(" SELECT count(*) FROM [tblUStVAntrag] inner join [tblUStVPositionen] on tblUStVAntrag.UStVAn_ID= [tblUStVPositionen].UStVAn_ID
WHERE USTVAn_KuNr='" & USTVAn_KuNr & "' /* AND UStVPo_SchnittstellenNr='" & USTV_POS.UStVPo_SchnittstellenNr & "' */ AND UStVPo_ReNr = '" & USTV_POS.UStVPo_ReNr & "' AND UStVPo_ReDat='" & USTV_POS.UStVPo_ReDat & "' AND UStVAn_LandNr='" & UStVAn_LandNr & "' AND UStVPo_Leistungsbezeichnung = '" & USTV_POS.UStVPo_Leistungsbezeichnung & "'", "FMZOLL")
Return (cnt > 0)
End Function
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_CURTOEUR(r.Cells("total_VAT_amount").Value, r.Cells("total_VAT_currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
ElseIf r.Cells("total_VAT_currency").Value = "EUR" Then
USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_USteuerbetragEUR = USTV_POS.UStVPo_USteuerbetrag
USTV_POS.UStVPo_Umrechnungskurs = 1
End If
Else
'2.1 Antragswährung <> Belegswährung (FREMD zu FREMD)
If r.Cells("total_VAT_currency").Value = "EUR" Then
USTV_POS.UStVPo_USteuerbetragEUR = r.Cells("total_VAT_amount").Value
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
USTV_POS.UStVPo_USteuerbetrag = Math.Round(kurs.EXCHANGE_EURTOCUR(r.Cells("total_VAT_amount").Value, USTV_ANTRAG.UStVAn_Währungscode, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
Else
USTV_POS.UStVPo_USteuerbetrag = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(r.Cells("total_VAT_amount").Value, r.Cells("total_VAT_currency").Value, USTV_ANTRAG.UStVAn_Währungscode)
Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
USTV_POS.UStVPo_USteuerbetragEUR = Math.Round(kurs.EXCHANGE_CURTOEUR(r.Cells("total_VAT_amount").Value, r.Cells("total_VAT_currency").Value, CDate(USTV_POS.UStVPo_ReDat)), 2)
USTV_POS.UStVPo_Umrechnungskurs = Math.Floor((CDbl(USTV_POS.UStVPo_USteuerbetrag) / CDbl(USTV_POS.UStVPo_USteuerbetragEUR) * 100 + 0.5)) / 100
End If
End If
End If
USTV_POS.INSERT()
End If
Next
If Not DS_ORIG_alreadyDeleted Then
DS_ORIG.DELETE_COMPLETE()
End If
End If
Else
MsgBox(resp)
End If
End If
End If
Return True
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Return False
End Try
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If UStVAn_ID > 0 Then
dgvUSTVPositionen.GetOrder()
getValue(USTV_ANTRAG)
If USTV_ANTRAG.SAVE Then
init()
dgvUSTVPositionen.SetOrder()
End If
VERAG_PROG_ALLGEMEIN.cMDMFunctionsAllgemein.Update_UStVASummenNeuBerechnen_USTVA(USTV_ANTRAG.UStVAn_ID)
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 cns_neAntraege.Items.ContainsKey("excel") Then
Dim excel = New ToolStripMenuItem() With {.Text = "Excelauswertung starten", .Name = "excel", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cns_neAntraege.Items.Add(excel)
AddHandler excel.Click, AddressOf mnuItem_Clicked
End If
If Not cns_neAntraege.Items.ContainsKey("mail") Then
Dim mail = New ToolStripMenuItem() With {.Text = "Email generieren", .Name = "mail", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler mail.Click, AddressOf mnuItem_Clicked
cns_neAntraege.Items.Add(mail)
End If
If Not cns_neAntraege.Items.ContainsKey("offeneAntraege") Then
Dim oa = New ToolStripMenuItem() With {.Text = "nicht eingearbeitet USTV-Anträge", .Name = "offeneAntraege", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler oa.Click, AddressOf mnuItem_Clicked
cns_neAntraege.Items.Add(oa)
End If
cns_neAntraege.Show(Cursor.Position)
End Sub
Private Sub mnuItem_Clicked(sender As Object, e As EventArgs)
cns_neAntraege.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then
If item.Name = "excel" Then
excelAuswertung()
ElseIf item.Name = "mail" Then
mailmitExcelauswertung()
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,<br>"
TextHTML &= "<br>"
TextHTML &= "In the attachment we will send you the Excel list and the corresponding invoices for the VAT refund.<br>"
TextHTML &= "Please submit these invoices to the tax office.<br>"
TextHTML &= "We are always available to answer more questions.<br>"
TextHTML &= "Mit freundlichen Grüßen<br>"
TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "<br>"
TextHTML &= "<br>"
Mail.HTMLBody = "<div style=""font-family:Calibri, Arial;font-size:15px;"">" & TextHTML & SDL.cFakturierung.getSignature("DE", VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA_ID) & "</div>"
Mail.Display()
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name,, "Fehler beim Öffnen der Mail!")
End Try
End Sub
Private Sub dgvUSTVPositionen_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvUSTVPositionen.CellContentDoubleClick
Try
If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then
Dim pdf As String = ""
pdf = func.getPDF(dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_SchnittstellenNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReNr").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_ReDat").Value, dgvUSTVPositionen.Rows(e.RowIndex).Cells("UStVPo_daId").Value, False, False, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False)
If IO.File.Exists(pdf) Then
Process.Start(pdf)
End If
End If
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Me.Cursor = Cursors.Default
End Try
Me.Cursor = Cursors.Default
End Sub
'Private Function getDaID_OLD(SchnittstellenNr, reDat, reNr)
' Dim da_id = -1
' Select Case If(SchnittstellenNr, -1)
' Case 1 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) RK_ID FROM Rechnungsausgang where cast(Rechnungsausgang.RechnungsDatum as Date) ='" & reDat & "' and Rechnungsausgang.RechnungsNr='" & reNr & "' AND FilialenNr = 4814 AND RK_ID is not null", "FMZOLL",,, -1)
' 'Case 6, 0 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and isnull(plose_RechnungsNr,plInv_SupplierRechnungsNr)='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1)
' Case 6, 0, 11 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [plInv_daId] FROM [tblPLOSE_Inv_Data] where plInv_SupplierRechnungsDatum='" & reDat & "' and plInv_SupplierRechnungsNr='" & reNr & "' and plInv_SupplierCountry='" & Antrag_LandKz & "' AND [plInv_daId] is not null", "FMZOLL",,, -1)
' Case 4, 9 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblMSEInvoices] as inv inner join tblMSECustomers on inv.customer_number = customer_id where invoice_date='" & reDat & "' and country='" & Antrag_LandKz & "' AND partner_customer_number = " & USTV_ANTRAG.UStVAn_KuNr & " AND daId is not null", "FMZOLL",,, -1)
' Case 10 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [daId] FROM [tblUTAImportNew] where Rechnungsdatum='" & reDat & "' and Abrechnungsnummer='" & reNr & "' and Lieferland_ISO2='" & Antrag_LandKz & "' AND daId is not null", "FMZOLL",,, -1)
' Case 7 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) [rmc_daId] FROM [tblRMCImport] where rmc_reDatum='" & reDat & "' and rmc_reNr='" & reNr & "' and rmc_landKZ='" & Antrag_LandKz & "' AND [rmc_daId] is not null", "FMZOLL",,, -1)
' Case 8 : da_id = SQL.getValueTxtBySql("SELECT TOP(1) tblIDSInvoicesNew.daId FROM [tblIDSTransactionsNew] INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode LEFT JOIN tblIDSInvoicesNew on tblIDSInvoicesNew.CustomerCode = tblIDSTransactionsNew.CustomerCode and tblIDSInvoicesNew.Invoicenumber = Paymentsummarynumber where tblIDSTransactionsNew.[YearMonthDay] ='" & reDat & "' AND ISNULL(tblIDSTransactionsNew.[OBONumber], ISNULL(tblIDSTransactionsNew.[VRNumber], tblIDSTransactionsNew.[Paymentsummarynumber])) ='" & reNr & "' and tbl_IDS_Länder.Lieferland_ISO2='" & Antrag_LandKz & "' AND tblIDSInvoicesNew.daId is not null", "FMZOLL",,, -1)
' End Select
' Return da_id
'End Function
Private Sub cbxLand_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxLand.SelectedValueChanged
lblLand.Text = IIf(cbxLand.SelectedItem IsNot Nothing, cbxLand.SelectedItem.Text, "")
setinfofields()
End Sub
Private Sub picPDF_Click(sender As Object, e As EventArgs) Handles picPDF.Click
If dgvUSTVPositionen.SelectedRows.Count = 0 Then Exit Sub
Try
Dim list As New List(Of String)
If dgvUSTVPositionen.SelectedRows.Count > 0 Then
Dim nummerierung As Boolean = False
Select Case MsgBox("Soll eine Nummerierung auf den PDF Dokumenten angegeben werden?", vbYesNoCancel)
Case vbYes : nummerierung = True
Case vbNo : nummerierung = False
Case Else : Exit Sub
End Select
For Each row As DataGridViewRow In dgvUSTVPositionen.SelectedRows.Cast(Of DataGridViewRow)().OrderBy(Function(dgvr) dgvr.Index)
Dim pdf As String = ""
pdf = func.getPDF(row.Cells("UStVPo_SchnittstellenNr").Value, row.Cells("UStVPo_ReNr").Value, row.Cells("UStVPo_ReDat").Value, row.Cells("UStVPo_daId").Value, IIf(nummerierung, row.Cells("UStVPo_ID").Value, -1), True, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False)
If pdf <> "" Then list.Add(pdf)
Next
End If
If list.Count = 0 Then Me.Cursor = Cursors.Default : Exit Sub
If list.Count > 1 Then
Dim pathPDF = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("RG_" & Now.ToString("ddMMyyyyHHmmss") & ".pdf", ".pdf", False, False)
If FormularManagerNEU.MergePdfFiles(list, pathPDF) Then
Process.Start(pathPDF)
End If
Else
Dim PDFFile As String = ""
PDFFile = list(0)
Process.Start(PDFFile)
End If
Me.Cursor = Cursors.Default
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
Me.Cursor = Cursors.Default
End Try
End Sub
Private Sub dgvUSTVPositionen_Sorted(sender As Object, e As EventArgs) Handles dgvUSTVPositionen.Sorted
For Each r As DataGridViewRow In dgvUSTVPositionen.Rows
Dim da_id
If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then
da_id = r.Cells("UStVPo_daId").Value
Else
da_id = func.getDaID_OLD(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Antrag_LandKz, USTV_ANTRAG)
End If
If da_id > 0 Then DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf
Next
End Sub
'Private Function getPDF(schnittstellenNr, ReNr, ReDat, daId, nummierung, PDFisProtected, LandKZ, USTVA) As String
' Dim schnnittstellenNr = schnittstellenNr
' Dim dsID
' If Not IsDBNull(daId) AndAlso IsNumeric(daId) AndAlso daId > 0 Then
' dsID = daId
' Else
' dsID = func.getDaID_OLD(schnnittstellenNr, ReDat, ReNr, LandKZ, USTVA)
' End If
' If dsID < 0 Then Return ""
' 'Anschrift Nummerierung:
' Dim x = 100
' Dim y = 10
' Dim width = 300
' Dim height = 10
' Dim mSize = 10
' Dim mFont = ""
' Select Case schnnittstellenNr
' Case 1
' If dsID > 0 Then
' Me.Cursor = Cursors.WaitCursor
' Dim path As String
' cFakturierung.doRechnungsDruck_SRorER(dsID,, False, 4, path)
' If nummierung > 0 Then
' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path)
' PdfReader.unethicalreading = True
' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager
' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues)
' For page As Integer = 1 To pdfReader.NumberOfPages
' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page))
' Next
' pdfReader.Close()
' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(path, listTowrite, , , , ,)
' Return PdfTmp
' Else
' Return path
' End If
' End If
' Case 8
' Me.Cursor = Cursors.WaitCursor
' Dim ds As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID)
' Dim path_src As String = ds.OPEN_SINGLE(False)
' If path_src = "" Then Return ""
' Try
' Dim fi As New System.IO.DirectoryInfo(path_src)
' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(path_src)
' Dim TMP_Path_New = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(fi.Name, fi.Extension,, False, "IDS-Rechnungen")
' Dim srcDoc As New itextsharp.text.Document()
' Dim PdfCopyProvider As New itextsharp.text.pdf.PdfCopy(srcDoc, New FileStream(TMP_Path_New, System.IO.FileMode.Create))
' PdfCopyProvider.SetFullCompression()
' srcDoc.Open()
' PdfReader.unethicalreading = True
' Dim pages As New List(Of Integer)()
' For page As Integer = 1 To pdfReader.NumberOfPages
' Dim strategy As ITextExtractionStrategy = New SimpleTextExtractionStrategy()
' Dim currentpagetext As String = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy)
' Dim searchtext As String = ReNr
' Dim impPage As itextsharp.text.pdf.PdfImportedPage = Nothing
' If (currentpagetext.Contains(searchtext)) Then
' If page > pdfReader.NumberOfPages Then
' MsgBox("Seitenanzahl überschritten!")
' srcDoc.Close() : pdfReader.Close()
' Return False
' End If
' Try
' impPage = PdfCopyProvider.GetImportedPage(pdfReader, page)
' ' ----- Ermitteln der Seitenauflösung und setzen für die neue Seite
' PdfCopyProvider.SetPageSize(New itextsharp.text.Rectangle(0.0F, 0.0F, impPage.Width, impPage.Height, pdfReader.GetPageRotation(page)))
' ' ----- PDF Seite in das neue Dokument einfügen
' If impPage IsNot Nothing Then PdfCopyProvider.AddPage(impPage)
' Catch ex As Exception
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
' End Try
' End If
' Next
' srcDoc.Close()
' pdfReader.Close()
' If nummierung > 0 Then
' Dim pdfReadernNew As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(TMP_Path_New)
' pdfReadernNew.unethicalreading = True
' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager
' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues)
' For page As Integer = 1 To pdfReadernNew.NumberOfPages
' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y - 6, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page))
' Next
' pdfReader.Close()
' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(TMP_Path_New, listTowrite, , , , ,)
' Return PdfTmp
' Else
' Return TMP_Path_New
' End If
' Catch ex As Exception
' VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
' End Try
' Case Else
' If dsID > 0 Then
' Me.Cursor = Cursors.WaitCursor
' Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER(dsID)
' If nummierung > 0 Then
' 'wenn PDF nicht beschreibbar, dann mittels Stamp!
' If PDFisProtected Then
' Dim tempPathNew = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(DS.da_name & "_modified", ".pdf", True, False, "USTVA")
' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH)
' PdfReader.unethicalreading = True
' Dim fs = New FileStream(tempPathNew, FileMode.Create, FileAccess.Write, FileShare.None)
' Dim stamper = New PdfStamper(pdfReader, fs)
' For page As Integer = 1 To pdfReader.NumberOfPages
' Dim canvas As PdfContentByte = stamper.GetOverContent(page)
' Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI, BaseFont.EMBEDDED)
' canvas.SetFontAndSize(bf, 12)
' canvas.BeginText()
' 'The origin (0,0) is at the bottom-left corner of the page and represent coordinates in points!!!!!
' Dim _height = pdfReader.GetPageSizeWithRotation(page).GetTop(25) 'oberer Rand
' Dim _width = pdfReader.GetPageSizeWithRotation(page).GetRight(0) / 2 'Mitte
' canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, _width, _height, 0)
' 'canvas.ShowTextAligned(PdfContentByte.ALIGN_CENTER, nummierung, 350, 550, 0)
' canvas.EndText()
' 'listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page))
' Next
' stamper.Close()
' pdfReader.Close()
' Return tempPathNew
' Else
' Dim pdfReader As itextsharp.text.pdf.PdfReader = New itextsharp.text.pdf.PdfReader(DS.GET_TOP1_PATH)
' Dim fm As New VERAG_PROG_ALLGEMEIN.cFormularManager
' Dim listTowrite As New List(Of VERAG_PROG_ALLGEMEIN.cPDFWriteValues)
' For page As Integer = 1 To pdfReader.NumberOfPages
' listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(nummierung, x, y, width, height, mFont, mSize, , itextsharp.text.Element.ALIGN_LEFT, page))
' Next
' pdfReader.Close()
' Dim PdfTmp = fm.fillPDFVorhandenesLokalesPDF_Path(DS.GET_TOP1_PATH, listTowrite, , , , ,)
' Return PdfTmp
' End If
' Else
' Return DS.GET_TOP1_PATH
' End If
' End If
' End Select
'End Function
Private Sub reorderUSTVAPositions(UStVAn_ID As Integer)
If UStVAn_ID < 0 Then Exit Sub
Dim dtUSTVA As DataTable = SQL.loadDgvBySql("SELECT tblUStVPositionen.UStVPo_ID FROM tblUStVPositionen WHERE tblUStVPositionen.UStVAn_ID=" & UStVAn_ID & " ORDER BY tblUStVPositionen.UStVPo_ID ", "FMZOLL")
Dim counter As Integer = 0
For Each row In dtUSTVA.Rows
counter = counter + 1
Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, row("UStVPo_ID"))
If USTV_POS.UStVPo_ID <> counter Then
SQL.doSQL("UPDATE tblUStVPositionen SET UStVPo_ID = " & counter & " WHERE UStVAn_ID=" & UStVAn_ID & " AND UStVPo_ID=" & USTV_POS.UStVPo_ID, "FMZOLL")
End If
Next
End Sub
Private Sub dgvUSTVPositionen_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles dgvUSTVPositionen.PreviewKeyDown
If dgvUSTVPositionen.SelectedRows.Count <> 1 Then Exit Sub
If (e.KeyCode) = Keys.Add AndAlso e.Control Then
Dim id As Integer = dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID").Value
initPosition(id)
dgvUSTVPositionen.GetOrder()
Dim USTV_POS_temp As New cUStVPositionen(UStVAn_ID, id)
Dim USTV_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen
USTV_POS.UStVAn_ID = USTV_POS_temp.UStVAn_ID
USTV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr
USTV_POS.UStVPo_ReDat = USTV_POS_temp.UStVPo_ReDat
USTV_POS.UStVPo_ReNr = USTV_POS_temp.UStVPo_ReNr
USTV_POS.UStVPo_SchnittstellenNr = -1
USTV_POS.UStVPo_Schnittstelle = False
USTV_POS.UStVPo_Leistungsbezeichnung = USTV_POS_temp.UStVPo_Leistungsbezeichnung
USTV_POS.UStVPo_Leistender = USTV_POS_temp.UStVPo_Leistender
USTV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
USTV_POS.UStVPo_USteuerbetragEUR = 0
USTV_POS.UStVPo_USteuerbetrag = 0
USTV_POS.UStVPo_Umrechnungskurs = 1
USTV_POS.UStVPo_Zeitstempel = Now()
If USTV_POS.SAVE() Then
init()
dgvUSTVPositionen.SetOrder()
Else
End If
End If
End Sub
Private Sub TabControl1_SelectedIndexChanged(sender As Object, e As EventArgs) Handles TabControl1.SelectedIndexChanged
If TabControl1.SelectedTab Is TabPage1 Then
init()
posTabisSelected = True
ElseIf TabControl1.SelectedTab Is TabPage2 Then
initdgvErstattungen()
posTabisSelected = False
txtSumme._value = 0
End If
picPDF.Visible = posTabisSelected
btnAntrageeinarbeiten.Enabled = posTabisSelected
cbxArchivierteEintracheNochmalsEinarbetien.Enabled = posTabisSelected
End Sub
Private Sub setinfofields()
Dim dtSteuerNr As DataTable
If Not USTV_ANTRAG Is Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_LandNr) Then
dtSteuerNr = SQL.loadDgvBySql("SELECT * FROM tblSteuernummern WHERE AdressenNr = " & USTV_ANTRAG.UStVAn_KuNr & " and tblSteuernummern.LandNr =" & IIf(USTV_ANTRAG.UStVAn_LandNr Is Nothing, "", USTV_ANTRAG.UStVAn_LandNr), "FMZOLL")
If dtSteuerNr.Rows.Count > 0 Then
txtStNr.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt")), dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt"), "")
txtGueltig.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum")), dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum"), "")
End If
Else
dtSteuerNr = SQL.loadDgvBySql("SELECT * FROM tblSteuernummern WHERE AdressenNr = " & KundenNr & " and tblSteuernummern.LandKz ='" & lblLand.Text & "'", "FMZOLL")
If dtSteuerNr.Rows.Count > 0 Then
txtStNr.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt")), dtSteuerNr.Rows(0).Item("StNrFürRückerstattungUSt"), "")
txtGueltig.Text = IIf(Not IsDBNull(dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum")), dtSteuerNr.Rows(0).Item("StNrGültigkeitsdatum"), "")
End If
End If
' If Not IsNull(Me!UStVAn_LandNr) Then
' strSQL = "SELECT tblSteuernummern.*" &
' " FROM tblSteuernummern" &
' " WHERE (((tblSteuernummern.AdressenNr)=" & Me!lngKundenNr & ") AND ((tblSteuernummern.LandNr)=" & Me!UStVAn_LandNr & "));"
' Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
' If Not rst.EOF Then
' Me!StNrFürRückerstattungUSt = rst!StNrFürRückerstattungUSt
' Me!StNrGültigkeitsdatum = rst!StNrGültigkeitsdatum
' Me!bezVertretungsvollmachtAusgestelltAm.ForeColor = -2147483630
' Me!bezVertretungsvollmachtAusgestelltAm.Caption = "Vertretungsvollmacht ausgestellt am"
' Me!VertretungsvollmachtAusgestelltAm = rst!VertretungsvollmachtAusgestelltAm
' Me!bezVertretungsvollmachtErhaltenAm.ForeColor = -2147483630
' Me!bezVertretungsvollmachtErhaltenAm.Caption = "Vertretungsvollmacht erhalten am"
' Me!VertretungsvollmachtErhaltenAm = rst!VertretungsvollmachtErhaltenAm
' Me!AuszahlungsvollmachtAusgestelltAm = rst!AuszahlungsvollmachtAusgestelltAm
' Me!AuszahlungsvollmachtErhaltenAm = rst!AuszahlungsvollmachtErhaltenAm
' Me!Bemerkung = rst!Bemerkung
' End If
' rst.Close
' ' ab 25.03.2010 Generalvollmacht Eintrag in Tabelle Adressen
' strSQL = "SELECT Adressen.UStV_GVAnfDat, Adressen.UStV_GVAusDat" &
' " FROM Adressen" &
' " WHERE (((Adressen.AdressenNr)=" & Me!lngKundenNr & ") AND" &
' " (((Adressen.UStV_GVAnfDat) Is Not Null) OR ((Adressen.UStV_GVAusDat) Is Not Null)));"
' Set rst = dbs.OpenRecordset(strSQL, dbOpenSnapshot)
' If Not rst.EOF Then
' Me!bezVertretungsvollmachtAusgestelltAm.ForeColor = 16711808
' Me!bezVertretungsvollmachtAusgestelltAm.Caption = "Generalvollmacht angefordert am"
' Me!VertretungsvollmachtAusgestelltAm = rst!UStV_GVAnfDat
' Me!bezVertretungsvollmachtErhaltenAm.ForeColor = 16711808
' Me!bezVertretungsvollmachtErhaltenAm.Caption = "Generalvollmacht ausgestellt am"
' Me!VertretungsvollmachtErhaltenAm = rst!UStV_GVAusDat
' End If
' rst.Close
' Set rst = Nothing
'End If
End Sub
Private Sub Button3_Click_1(sender As Object, e As EventArgs) Handles Button3.Click
UstCntlUSTV_AntragErstattungen1.reset()
UstCntlUSTV_AntragErstattungen1.UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen()
UstCntlUSTV_AntragErstattungen1.UStV_ERS.UStVEr_ID = USTV_ANTRAG.getMaxPosNrErst()
UstCntlUSTV_AntragErstattungen1.Enabled = True
End Sub
Private Sub Button2_Click_1(sender As Object, e As EventArgs) Handles Button2.Click
If dgvErstattungspositionen.Rows.Count = 0 Then Exit Sub
If vbYes = MsgBox("Möchten Sie den Erstattungseintrag wirklich löschen?", vbYesNoCancel) Then
If UstCntlUSTV_AntragErstattungen1.UStV_ERS.DELETE(UstCntlUSTV_AntragErstattungen1.UstV_AN.UStVAn_ID, UstCntlUSTV_AntragErstattungen1.UStV_ERS) Then
initdgvErstattungen()
End If
End If
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
getValue(USTV_ANTRAG)
Dim id = USTV_ANTRAG.SAVEID()
VERAG_PROG_ALLGEMEIN.cMDMFunctionsAllgemein.Update_UStVASummenNeuBerechnen_USTVA(id)
USTV_ANTRAG = New cUSTVAntrag(id)
If IsDBNull(USTV_ANTRAG.FilialenNr) OrElse USTV_ANTRAG.FilialenNr Is Nothing OrElse USTV_ANTRAG.FilialenNr = 0 Then MsgBox("Für das Speditionsbuch muss die Filiale eingegeben werden.") : Exit Sub
If IsDBNull(USTV_ANTRAG.AbfertigungsNr) OrElse USTV_ANTRAG.AbfertigungsNr Is Nothing OrElse USTV_ANTRAG.AbfertigungsNr <= 0 Then MsgBox("Für das Speditionsbuch muss die Abfertigungs-Nr eingegeben werden.") : Exit Sub
Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, 0)
If spedBuch.hasEntry Then
Dim frmNacherfassung As New frmNacherfassungNEU
frmNacherfassung.srchFiliale = USTV_ANTRAG.FilialenNr
frmNacherfassung.srchAbfertigungsnummer = USTV_ANTRAG.AbfertigungsNr
frmNacherfassung.srchUnterNr = 0
frmNacherfassung.ShowDialog(Me)
Exit Sub
End If
If DiffernezbetragEUR = 0 Then
If Not vbYes = MsgBox("Der Erstattungsbetrag beträgt 0 EUR." & vbNewLine & "Fortfahren?", vbYesNo) Then Exit Sub
End If
dTLANDEU = (New SQL).loadDgvBySql("select LandKz, MitgliedslandEU from Währungstabelle where LandKz is not null", "FMZOLL")
Dim isEU As Boolean = dTLANDEU.AsEnumerable().Where(Function(res) res.Field(Of String)("LandKz") = USTV_ANTRAG.UStVAn_LandKz).Select(Function(res) res.Field(Of Boolean)("MitgliedslandEU")).FirstOrDefault()
Dim kunde As New cKunde(USTV_ANTRAG.UStVAn_KuNr)
With spedBuch
.Abfertigungsdatum = Today()
.AvisUhrzeit = Now()
.Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
.ErfassungsNr = USTV_ANTRAG.UStVAn_ID
.AnzahlSonstiges = 1
.Abfertigungsart = IIf(isEU, 114, 115)
.Abfertigungsanzahl = 1
.Packstücke = USTV_ANTRAG.UStVAn_AntragArt & "-Rückerstattung " & Antrag_LandKz & " / " & USTV_ANTRAG.UStVAn_ReDatVon & " - " & USTV_ANTRAG.UStVAn_ReDatBis
.VermittlerKundenNr = IIf(kunde.KundenNrZentrale IsNot Nothing, kunde.KundenNrZentrale, kunde.KundenNr)
If .VermittlerKundenNr = 140000 Or .VermittlerKundenNr = 150000 Then
.EmpfängerKundenNr = USTV_ANTRAG.UStVAn_KuNr
End If
.Rechnungsbetrag = DiffernezbetragEUR * -1
If .SAVE() Then
MsgBox("Sped-Eintrag wurde angelegt")
init()
End If
End With
End Sub
Private Sub picExcel_Click(sender As Object, e As EventArgs) Handles picExcel.Click
'Dim dtNew As DataTable = cProgramFunctions.dgridViewTods(dgvUSTVPositionen, True, IIf(dgvUSTVPositionen.SelectedRows.Count > 0, True, False))
Dim posId As String = ""
Dim counter = 0
For Each dgvRow As DataGridViewRow In dgvUSTVPositionen.SelectedRows
posId &= "'" & dgvRow.Cells("UStVPo_ID").Value & "'"
counter = counter + 1
If (dgvUSTVPositionen.SelectedRows.Count <> 1 And counter <> dgvUSTVPositionen.SelectedRows.Count) Then posId &= ","
Next
func.generatePosList(USTV_ANTRAG, posId, Antrag_LandKz, txtStNr.Text, True, "excel", Nothing)
End Sub
Private Sub initdgvErstattungen(Optional posIndex As Integer = -1)
With dgvErstattungspositionen
.ClearSelection()
If UStVAn_ID <= 0 Then Exit Sub
.SET_SQL("SELECT [UStVAn_ID] ,[UStVEr_ID],[UStVEr_USteuerbetrag],[Belegdatum],[Belegnummer],[GutschriftsDatum],[GutschriftsNr],[Berufungsdatum],[Berufungshöhe],[Berufungsgrund],[Bemerkung],[UStVEr_Umrechnungskurs],[UStVEr_USteuerbetragEUR],[UStVEr_Sachbearbeiter],[UStVEr_Zeitstempel]
FROM [tblUStVErstattung]
where UStVAn_ID=" & UStVAn_ID & " ORDER BY UStVEr_ID", "FMZOLL")
.LOAD()
.RowTemplate.Height = 20
.AllowUserToOrderColumns = False
.AllowUserToResizeRows = False
If .Columns.Count > 0 Then
.Columns("UStVAn_ID").Visible = False
.Columns("UStVEr_ID").HeaderText = "Pos"
.Columns("UStVEr_ID").Width = 40
.Columns("Belegdatum").Width = 80
.Columns("Belegnummer").Width = 130
.Columns("UStVEr_USteuerbetrag").HeaderText = "USt-Betrag"
.Columns("UStVEr_USteuerbetrag").Width = 110
.Columns("UStVEr_USteuerbetrag").DefaultCellStyle.Format = "N2"
.Columns("UStVEr_USteuerbetrag").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns("GutschriftsDatum").HeaderText = "GS-Datum"
.Columns("GutschriftsNr").HeaderText = "GS-Nr"
.Columns("GutschriftsDatum").Width = 80
.Columns("GutschriftsNr").Width = 130
.Columns("Berufungsdatum").HeaderText = "BE-Datum"
.Columns("Berufungshöhe").HeaderText = "BE-Höhe"
.Columns("Berufungsgrund").HeaderText = "BE-Grund"
.Columns("Berufungsdatum").Width = 80
.Columns("Berufungshöhe").Width = 100
.Columns("Berufungsgrund").Width = 150
.Columns("Bemerkung").Width = 200
.Columns("UStVEr_Umrechnungskurs").HeaderText = "Umrechnungskurs"
.Columns("UStVEr_Umrechnungskurs").Width = 60
.Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Format = "N2"
.Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns("UStVEr_USteuerbetragEUR").HeaderText = "USt-Betrag EUR"
.Columns("UStVEr_USteuerbetragEUR").Width = 110
.Columns("UStVEr_USteuerbetragEUR").DefaultCellStyle.Format = "N2"
.Columns("UStVEr_USteuerbetragEUR").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
.Columns("UStVEr_Sachbearbeiter").HeaderText = "Sachbearbeiter"
.Columns("UStVEr_Sachbearbeiter").MinimumWidth = 100
.Columns("UStVEr_Sachbearbeiter").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("UStVEr_Zeitstempel").Visible = False
End If
If .RowCount < 1 Then
initErstsattungsPosition(-1)
Else
If posIndex > 0 Then
posIndex = posIndex - 1
If posIndex > 0 And dgvErstattungspositionen.Rows.Count > posIndex Then
dgvErstattungspositionen.ClearSelection()
dgvErstattungspositionen.Rows(posIndex).Selected = True
For Each c As DataGridViewCell In dgvErstattungspositionen.Rows(posIndex).Cells
If c.Visible Then
dgvErstattungspositionen.CurrentCell = c 'Damit der Cursor in der DGV richtig steht
Exit For
End If
Next
End If
End If
End If
End With
End Sub
Private Sub dgvUSTVPositionen_KeyUp(sender As Object, e As Windows.Forms.KeyEventArgs) Handles dgvUSTVPositionen.KeyUp
If e.KeyCode = Keys.Delete Then
If dgvUSTVPositionen.SelectedRows.Count > 0 Then
If vbYes = MsgBox("Möchten Sie die markierten " & dgvUSTVPositionen.SelectedRows.Count & " Einträge wirklich löschen?", vbYesNoCancel) Then
For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows
If r.Cells("UStVPo_Schnittstelle").Value IsNot Nothing AndAlso r.Cells("UStVPo_SchnittstellenNr").Value IsNot Nothing AndAlso IsNumeric(r.Cells("UStVPo_SchnittstellenNr").Value) Then
If r.Cells("UStVPo_SchnittstellenNr").Value = -1 OrElse r.Cells("UStVPo_daId_loeschbar").Value Then 'nur Dokumente löschen, die nicht über Schnittstellen geladen wurden oder löschbar sind!
If Not IsDBNull(r.Cells("UStVPo_daId").Value) Then
If r.Cells("UStVPo_daId").Value Is Nothing Then
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UStVAn_ID & "_" & r.Cells("UStVPo_ID").Value, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr)
If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
DS.DELETE_COMPLETE()
End If
ElseIf r.Cells("UStVPo_daId").Value > 0 Then
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(r.Cells("UStVPo_daId").Value)
If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
DS.DELETE_COMPLETE()
End If
End If
End If
End If
Dim Leistungsbezeichnung = ""
If r.Cells("UStVPo_SchnittstellenNr").Value = 3 Then Leistungsbezeichnung = r.Cells("UStVPo_Leistungsbezeichnung").Value
If setArchiv(r.Cells("UStVPo_SchnittstellenNr").Value, r.Cells("UStVPo_ReDat").Value, r.Cells("UStVPo_ReNr").Value, Leistungsbezeichnung) Then
Dim sqlstr = " DELETE FROM tblUStVPositionen WHERE UStVAn_ID=" & Me.UStVAn_ID & " AND UStVPo_ID=" & r.Cells("UStVPo_ID").Value
If Not SQL.doSQL(sqlstr, "FMZOLL") Then
Exit Sub
End If
End If
End If
Next
reorderUSTVAPositions(Me.UStVAn_ID)
init()
UstCntlUSTV_AntragPosition1.Enabled = False
End If
End If
e.Handled = True
End If
End Sub
Private Sub txtAbfNr_TextChanged(sender As Object, e As EventArgs) Handles txtAbfNr.TextChanged
If IsNumeric(txtAbfNr.Text) AndAlso CInt(txtAbfNr.Text) > 10000 AndAlso USTV_ANTRAG.AbfertigungsNr <> txtAbfNr.Text AndAlso (Not btnAbfertigungsNrVergeben.Visible) Then
Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, txtAbfNr.Text, 0)
If spedBuch.hasEntry Then
MsgBox("Es existiert bereits ein Speditionsbucheintrag mit dieser Nr!")
Exit Sub
Else
If Not abfNrisSetManually Then
abfNrisSetManually = True
txtAbfNr.Text = CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cbxFiliale._value, Now.Year))
End If
Exit Sub
End If
Else
abfNrisSetManually = False
End If
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles btnAbfertigungsNrVergeben.Click
If Not IsNumeric(cbxFiliale._value) OrElse CInt(cbxFiliale._value) <= 0 Then
MsgBox("Bitte Filiale auswählen!") : Exit Sub
End If
txtAbfNr.Text = CInt(VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cbxFiliale._value, Now.Year))
If txtBezugsNr.Text = "" AndAlso txtAbfNr.Text.ToString.Length >= 6 Then
txtBezugsNr.Text = txtAbfNr.Text.Substring(txtAbfNr.Text.ToString.Length - 6, 6)
txtBezugsNr.Text = txtBezugsNr.Text.TrimStart("0"c)
End If
cbxFiliale.Enabled = False
btnAbfertigungsNrVergeben.Visible = False
End Sub
Private Sub txtAbfNr_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtAbfNr.PreviewKeyDown
If e.KeyValue = 9 Then
If IsNumeric(txtAbfNr.Text) AndAlso CInt(txtAbfNr.Text) > 10000 AndAlso USTV_ANTRAG.AbfertigungsNr <> txtAbfNr.Text Then
Dim spedBuch As New cSpeditionsbuch(USTV_ANTRAG.FilialenNr, txtAbfNr.Text, 0)
If spedBuch.hasEntry Then
MsgBox("Es existiert bereits ein Speditionsbucheintrag mit dieser Nr!")
Exit Sub
End If
If txtBezugsNr.Text = "" AndAlso txtAbfNr.Text.ToString.Length >= 6 Then
txtBezugsNr.Text = txtAbfNr.Text.Substring(txtAbfNr.Text.ToString.Length - 6, 6)
txtBezugsNr.Text = txtBezugsNr.Text.TrimStart("0"c)
End If
End If
End If
End Sub
Private Sub Button5_Click_1(sender As Object, e As EventArgs) Handles Button5.Click
If IsDBNull(USTV_ANTRAG.FilialenNr) OrElse USTV_ANTRAG.FilialenNr Is Nothing OrElse USTV_ANTRAG.FilialenNr = 0 Then MsgBox("Für das Speditionsbuch muss die Filiale eingegeben werden.") : Exit Sub
If IsDBNull(USTV_ANTRAG.AbfertigungsNr) OrElse USTV_ANTRAG.AbfertigungsNr Is Nothing OrElse USTV_ANTRAG.AbfertigungsNr <= 0 Then MsgBox("Für das Speditionsbuch muss die Abfertigungs-Nr eingegeben werden.") : Exit Sub
'Dim RK_ID As Integer = CInt(SQL.getValueTxtBySql("select top(1) RK_ID from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19", "FMZOLL", ,, "0"))
Dim dtRE As DataTable = (New SQL).loadDgvBySql("select RK_ID, RechnungsNr, FilialenNr from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19", "FMZOLL")
Dim hasVZ As Boolean = False
For Each pos In USTV_ANTRAG.POSITIONEN
If pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) Or pos.UStVPo_VZ_RKID Is Nothing) Then 'VZ die noch nicht abgerechnet wurde!
hasVZ = True
Exit For
End If
Next
ncs_Belege.Items.Clear()
Dim reNEW = New ToolStripMenuItem() With {.Text = "NEU", .Name = "NEU" + IIf(hasVZ, "_VZ", ""), .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
ncs_Belege.Items.Add(reNEW)
If dtRE.Rows.Count > 0 Then
Dim RK_ID As String = ""
For Each r As DataRow In dtRE.Rows
Dim re = New ToolStripMenuItem() With {.Text = r.Item("FilialenNr") & " - " & r.Item("RechnungsNr"), .Name = r.Item("RK_ID"), .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
ncs_Belege.Items.Add(re)
AddHandler re.Click, AddressOf mnuItemBelege_Clicked
Next
AddHandler reNEW.Click, AddressOf mnuItemBelege_Clicked
Else
AddHandler reNEW.Click, AddressOf mnuItemBelege_Clicked
End If
ncs_Belege.Show(Cursor.Position)
End Sub
Private Sub cbxWahrung_SelectedValueChanged(sender As Object, e As EventArgs) Handles cbxWahrung.SelectedValueChanged
If USTV_ANTRAG IsNot Nothing Then
If cbxWahrung.SelectedItem IsNot Nothing Then
USTV_ANTRAG.UStVAn_Währungscode = cbxWahrung.SelectedItem.Text
Else
USTV_ANTRAG.UStVAn_Währungscode = ""
End If
End If
End Sub
Private Sub scanUSTVA_FileAdded(id As String, path As String, name As String) Handles scanUSTVA.FileAdded
btnPDFauslesen.Enabled = scanUSTVA.getDS.da_id > 0
cbxKIUploaddelete.Enabled = btnPDFauslesen.Enabled
End Sub
Private Sub scanUSTVA_FileDeleted() Handles scanUSTVA.FileDeleted
btnPDFauslesen.Enabled = False
cbxKIUploaddelete.Enabled = btnPDFauslesen.Enabled
End Sub
Private Sub mnuItemKIUPLOAD_Clicked(sender As Object, e As EventArgs)
cnS_KIUPLOAD.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing AndAlso scanUSTVA IsNot Nothing Then
Dim daid As Integer = 0
If scanUSTVA.getDS() IsNot Nothing Then daid = scanUSTVA.getDS().da_id
If daid > 0 Then
Dim DS As New cDATENSERVER(daid)
If DS.GET_TOP1_PATH <> "" Then
Dim pdfR As New PdfReader(DS.GET_TOP1_PATH)
If atez_api IsNot Nothing Then
If vbYes = MsgBox("Möchten Sie die Rechnungsdaten der " & item.Text & " per ATEZ-API auslesen lassen?", vbYesNoCancel) Then
'document_type = vat_invoice or receipt
loadUSTVFrom_ATEZ_KI(UStVAn_ID, Antrag_LandKz, atez_api, scanUSTVA.getDS().da_id, pdfR.NumberOfPages, item.Name, cbxKIUploaddelete.Checked)
initScanUSTVA()
End If
Else
If cbxKIUploaddelete.Checked Then
DS.DELETE_COMPLETE()
initScanUSTVA()
End If
End If
init()
End If
End If
End If
End Sub
Private Sub btnPDFauslesen_Click(sender As Object, e As EventArgs) Handles btnPDFauslesen.Click
'document_type = vat_invoice or receipt
If Not cnS_KIUPLOAD.Items.ContainsKey("invoice") Then
Dim vat = New ToolStripMenuItem() With {.Text = "MWST-Rechnung(en)", .Name = "invoice", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cnS_KIUPLOAD.Items.Add(vat)
AddHandler vat.Click, AddressOf mnuItemKIUPLOAD_Clicked
End If
If Not cnS_KIUPLOAD.Items.ContainsKey("receipt") Then
Dim receipt = New ToolStripMenuItem() With {.Text = "Quittung(en)", .Name = "receipt", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
cnS_KIUPLOAD.Items.Add(receipt)
AddHandler receipt.Click, AddressOf mnuItemKIUPLOAD_Clicked
End If
cnS_KIUPLOAD.Show(Cursor.Position)
End Sub
Private Sub calcSumme()
Dim countSumme As Double = 0
If posTabisSelected Then
For i As Integer = 0 To dgvUSTVPositionen.SelectedRows.Count - 1
If Not IsDBNull(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetragEUR").Value) AndAlso IsNumeric(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetragEUR").Value) Then
countSumme += CDbl(dgvUSTVPositionen.SelectedRows(i).Cells("UStVPo_USteuerbetragEUR").Value)
End If
Next
End If
txtSumme._value = countSumme.ToString
End Sub
Private Sub pb_Beleg_Click(sender As Object, e As EventArgs) Handles pb_Beleg.Click
Dim dtRE As DataTable = (New SQL).loadDgvBySql("select RK_ID, RechnungsNr, FilialenNr from Rechnungsausgang where FilialenNr = " & USTV_ANTRAG.FilialenNr & " and AbfertigungsNr = " & USTV_ANTRAG.AbfertigungsNr & " and Firma_ID = 19", "FMZOLL")
ncs_Belege.Items.Clear()
If dtRE.Rows.Count > 0 Then
Dim RK_ID As String = ""
For Each r As DataRow In dtRE.Rows
Dim re = New ToolStripMenuItem() With {.Text = r.Item("FilialenNr") & " - " & r.Item("RechnungsNr"), .Name = r.Item("RK_ID"), .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
ncs_Belege.Items.Add(re)
AddHandler re.Click, AddressOf mnuItemBelegeOpenPDF_Clicked
Next
End If
ncs_Belege.Show(Cursor.Position)
End Sub
Private Sub cbxRGretour_CheckedChanged(sender As Object, e As EventArgs) Handles cbxRGretour.CheckedChanged
If cbxRGretour.Checked Then
cbxRGretour.ForeColor = Color.Red
Else
cbxRGretour.ForeColor = Color.White
End If
End Sub
Private Sub dgvUSTVPositionen_CellMouseClick(sender As Object, e As DataGridViewCellMouseEventArgs) Handles dgvUSTVPositionen.CellMouseClick
If e.RowIndex < 0 Then Exit Sub 'Es wurde außerhalb einer gültigen Datenzeile geklickt
If e.ColumnIndex < 0 Then Exit Sub
DirectCast(sender, DataGridView).Rows(e.RowIndex).Selected = True
If e.Button = MouseButtons.Right Then
If sender Is dgvUSTVPositionen Then
If dgvUSTVPositionen.SelectedRows.Count > 0 Then
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
cns_vorauszahlen.Show(Cursor.Position)
End If
End If
End If
End If
End Sub
Private Sub AktivierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles AktivierenToolStripMenuItem.Click
If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen setzen?", vbYesNoCancel) Then
For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows
If IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) OrElse r.Cells("UStVPo_VZ_RKID").Value Is Nothing Then
Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, r.Cells("UStVPo_ID").Value)
If IsDBNull(USTV_POS.UStVPo_VZ) OrElse USTV_POS.UStVPo_VZ = False Then
USTV_POS.UStVPo_VZ = True
USTV_POS.SAVE()
End If
End If
Next
SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1 WHERE [UStVAn_ID] IN (SELECT [UStVAn_ID] FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL")
init()
End If
End Sub
Private Sub DeaktivierenToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles DeaktivierenToolStripMenuItem.Click
If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen deaktiveren?", vbYesNoCancel) Then
For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows
If IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) OrElse r.Cells("UStVPo_VZ_RKID").Value Is Nothing Then 'nur noch nicht abgerech. dürfen gesetzt werden!
Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, r.Cells("UStVPo_ID").Value)
If IsDBNull(USTV_POS.UStVPo_VZ) OrElse USTV_POS.UStVPo_VZ = True Then
USTV_POS.UStVPo_VZ = False
USTV_POS.SAVE()
End If
End If
Next
'würde prüfung nochmals für alle machen, performance allerdings nicht gut....
'SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0 WHERE [UStVAn_ID] IN (SELECT [UStVAn_ID] FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZDatetime],0) = 0 )")
Dim count_nichtAbgerVZ As Integer = -1
count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL"))
If count_nichtAbgerVZ = 0 Then
SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0 WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL")
End If
init()
End If
End Sub
Private Sub initScanUSTVA()
If USTV_ANTRAG IsNot Nothing Then
scanUSTVA.INIT(USTV_ANTRAG.UStVAn_KuNr, "MDM", "USTVA_KI_" & USTV_ANTRAG.UStVAn_ID)
btnPDFauslesen.Enabled = scanUSTVA.getDS().da_id > 0
cbxKIUploaddelete.Enabled = btnPDFauslesen.Enabled
Else
cbxKIUploaddelete.Enabled = False
End If
End Sub
Private Sub mnuItemBelege_Clicked(sender As Object, e As EventArgs)
ncs_Belege.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then
If item.Name <> "" Then
If IsNumeric(item.Name) Then
Dim f As New SDL.frmAbrechnungsMaskeEinzeln(item.Name)
f.Show(Me)
Else
Dim hasVZ = IIf(item.Name.Contains("_VZ"), True, False)
Dim f As New SDL.frmAbrechnungsMaskeEinzeln(USTV_ANTRAG.FilialenNr, USTV_ANTRAG.AbfertigungsNr, IIf(USTV_ANTRAG.UStVAn_ErstattungsbetragEUR >= 0, "AG", "AR"), hasVZ)
f.Show(Me)
End If
End If
End If
End Sub
Private Sub mnuItemBelegeOpenPDF_Clicked(sender As Object, e As EventArgs)
ncs_Belege.Hide()
Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
If item IsNot Nothing Then
If item.Name <> "" Then
If IsNumeric(item.Name) Then
Dim RG_PATH = ""
cFakturierung.doRechnungsDruck_SRorER(item.Name,, False, 4, RG_PATH,,, True)
Process.Start(RG_PATH)
End If
End If
End If
End Sub
End Class