Imports System.Data.SqlClient Imports System.Reflection Public Class cRechnungsausgangLIST End Class Public Class cRechnungsausgang Property RK_ID As Integer Property FilialenNr As Integer Property AbfertigungsNr As Integer Property UnterNr As Integer = -1 Property Abfertigungsdatum As Date Property RechnungsNr As Object = Nothing Property RechnungsDatum As Object = Nothing Property Sammelrechnung As Integer Property BelegartenNr As Integer = 70 'Nothing Property BelegartenKz As String = "" Property BelegartenBez As String = "" Property Vorzeichen As String = "" Property BelegNr As Object = Nothing Property AbsenderLandKz As Object = Nothing Property AbsenderKundenNr As Object = Nothing Property AbsenderName_1 As Object = Nothing '!!!! Property AbsenderName_2 As Object = Nothing '!!!! Property AbsenderStraße As Object = Nothing Property AbsenderOrt As Object = Nothing Property AbsenderOffertenNr As Object = Nothing Property EmpfängerLandKz As Object = Nothing Property EmpfängerKundenNr As Object = Nothing Property EmpfängerName_1 As Object = Nothing '!!!! Property EmpfängerName_2 As Object = Nothing '!!!! Property EmpfängerStraße As Object = Nothing Property EmpfängerOrt As Object = Nothing Property EmpfängerOffertenNr As Object = Nothing Property VermittlerLandKz As Object = Nothing Property VermittlerKundenNr As Object = Nothing Property VermittlerName_1 As Object = Nothing '!!!! Property VermittlerName_2 As Object = Nothing '!!!! Property VermittlerStraße As Object = Nothing Property VermittlerOrt As Object = Nothing Property VermittlerOffertenNr As Object = Nothing Property Rechnung_an As Integer Property KundenNrZentrale As Object = Nothing Property RechnungsLandKz As Object = Nothing Property RechnungsKundenNr As Integer Property RechnungsName_1 As Object = Nothing '!!!! Property RechnungsName_2 As Object = Nothing '!!!! Property RechnungsName_AdressZusatz As String = "" Property RechnungsStraße As Object = Nothing Property RechnungsOrt As Object = Nothing Property RechnungsUstIdKz As Object = Nothing Property RechnungsUstIdNr As Object = Nothing Property RechnungsUstIdGeprüft As Object = Nothing 'Date = CDate("01.01.2000") Property Lastschrift As Boolean = False Property Kunden_SVS As Boolean = False Property Steuerschlüssel As Integer Property Steuersatz_Proz As Double Property LKW_Kennzeichen As Object = Nothing '!!!! Property WährungsNr As Object = Nothing Property Wert As Object = Nothing Property Umrechnungskurs As Object = Nothing Property Packstücke_und_Warenbezeichnung As Object = Nothing '!!!! Property Vermerk As Object = Nothing Property Anlage_1 As Object = Nothing '!!!! Property Anlage_2 As Object = Nothing '!!!! Property Anlage_3 As Object = Nothing '!!!! Property Anlage_4 As Object = Nothing '!!!! Property Anlage_5 As Object = Nothing '!!!! Property Anlage_6 As Object = Nothing '!!!! Property OffertenNr As Object = Nothing Property Vorlageprovision_Proz As Object = Nothing '!!!!% Property Kreditaufwendungen_Proz As Object = Nothing '!!!!% Property Besonderheiten As Object = Nothing Property Vorkasse As Boolean = False Property Text As Object = Nothing Property SteuerpflichtigerGesamtbetrag As Decimal = 0 Property SteuerfreierGesamtbetrag As Decimal = 0 Property Status As Integer = 0 Property DruckDatumZeit As Object = Nothing Property Abfertigungskosten As Object = Nothing Property Vorkosten As Object = Nothing Property Erlös As Object = Nothing Property Buchungsjahr As Object = Nothing Property Währungscode As Object = "EUR" Property Sachbearbeiter As Object = Nothing Property Trdin As Boolean = False Property KartenNr As Object = Nothing Property RefFilialenNr As Object = Nothing Property RefAbfertigungsNr As Object = Nothing Property RefUnterNr As Object = Nothing Property Notiz As Object = Nothing Property Zucker_MRN_Nr As Object = Nothing Property Zucker_MRN_Datum As Object = Nothing Property Zucker_Aufschub As Object = Nothing Property ReErfZeitstempel As Object = Nothing Property Nettozahlungsziel As Object = Nothing Property Firma_ID As Integer = 0 Property SpeditionsbuchUnterNr As Object = Nothing Property ErfassungsNr As Object = Nothing 'Property upsize_ts As Object = Nothing Property AvisiererKundenNr As Object = Nothing Property Avisierer As Object = Nothing Property EMailRechnungstext As Object = Nothing Property AvisoID As Object = Nothing Property KdAuftragsNr As Object = Nothing Property Handling As Object = Nothing Property VorschauID As Object = Nothing Property Grenze As Object = Nothing Property RechnungSprache As Object = Nothing Property FakturierungsGruppe As String = "" Property TextZZ As Object = Nothing ' FROM [VERAG as object=nothing.[dbo as object=nothing.[Rechnungsausgang as object=nothing Public POSITIONEN As New List(Of cRechnungsausgangPositionen) Public ANHAENGE As New List(Of cRechnungsausgangANHAENGE) Shared SQL As New SQL Sub New() End Sub Sub New(RK_ID) Me.RK_ID = RK_ID LOAD() : LOAD_POSITIONEN() : LOAD_ANHAENGE() End Sub Sub New(FilialenNr, AbfertigungsNr) Me.FilialenNr = FilialenNr Me.AbfertigungsNr = AbfertigungsNr LOAD(FilialenNr, AbfertigungsNr) End Sub Public Function getMaxRGUnterNr() As Integer Return getMaxRGUnterNr(FilialenNr, AbfertigungsNr, SpeditionsbuchUnterNr) End Function Public Function checkAlreadyPrinted() As Integer 'Rechnung wurde bereits gedruck - evtl. bei überschneidenden Rechnungslauf --> Druck abbrechen! If Me.RK_ID <= 0 Then Return False Dim cnt = SQL.getValueTxtBySql("SELECT COUNT(*) FROM [Rechnungsausgang] WHERE RK_ID='" & Me.RK_ID & "' and DruckDatumZeit is not null", "FMZOLL") Return cnt > 0 End Function Public Function checkRechnungsNrIsSet() As Boolean 'Prüfugn ob Eintrag mit dieser Rechnungsnr in DB existiert If Me.RechnungsNr <= 0 Then Return False Dim cnt = SQL.getValueTxtBySql("SELECT COUNT(*) FROM [Rechnungsausgang] WHERE RechnungsNr='" & Me.RechnungsNr & "' and DruckDatumZeit is not null and Buchungsjahr = " & Me.Buchungsjahr & " and Firma_ID = '" & Me.Firma_ID & "'", "FMZOLL") Return cnt > 0 End Function Public Shared Function getMaxRGUnterNr(FilialenNr As Integer, AbfertigungsNr As Integer, SpeditionsbuchUnterNr As Integer) As Integer ' Dim Nr = SQL.getValueTxtBySql("Select isnull([UnterNr], -1) + 1 FROM [Rechnungsausgang] where [FilialenNr]='" & FilialenNr & "' And AbfertigungsNr='" & AbfertigungsNr & "' And SpeditionsbuchUnterNr='" & SpeditionsbuchUnterNr & "' ORDER BY [UnterNr] desc", "FMZOLL") Dim Nr = SQL.getValueTxtBySql("Select TOP 1 isnull([UnterNr], -1) + 1 FROM [Rechnungsausgang] where [FilialenNr]='" & FilialenNr & "' And AbfertigungsNr='" & AbfertigungsNr & "' ORDER BY [UnterNr] desc", "FMZOLL") Return If(IsNumeric(Nr), Nr, 0) End Function Public Shared Function GET_LIST_WEB(KundenNr As Integer, von As Date, bis As Date, Optional RechnungsNr As Integer = -1, Optional Absender As String = "", Optional Empfänger As String = "", Optional LKW_Kennzeichen As String = "", Optional KdAuftragsNr As String = "") As List(Of cRechnungsausgang) Dim LIST As New List(Of cRechnungsausgang) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Dim sqlWHERE = "" If RechnungsNr > 0 Then sqlWHERE &= " AND RechnungsNr LIKE @RechnungsNr" If Absender <> "" Then sqlWHERE &= " AND Absender LIKE @Absender" If Empfänger <> "" Then sqlWHERE &= " AND Empfänger LIKE @Empfänger" If LKW_Kennzeichen <> "" Then sqlWHERE &= " AND [LKW Kennzeichen] LIKE @LKW_Kennzeichen" If KdAuftragsNr <> "" Then sqlWHERE &= " AND KdAuftragsNr LIKE @KdAuftragsNr" Using cmd As New SqlCommand("SELECT * FROM [Rechnungsausgang] WHERE RechnungsKundenNr=@RechnungsKundenNr and RechnungsDatum BETWEEN @RechnungsDatumVON and @RechnungsDatumBIS ORDER BY RechnungsNr ", conn) cmd.Parameters.AddWithValue("@RechnungsKundenNr", KundenNr) cmd.Parameters.AddWithValue("@RechnungsDatumVON", von) cmd.Parameters.AddWithValue("@RechnungsDatumBIS", bis) cmd.Parameters.AddWithValue("@Absender", Absender & "%") cmd.Parameters.AddWithValue("@Empfänger", Empfänger & "%") cmd.Parameters.AddWithValue("@LKW_Kennzeichen", "%" & LKW_Kennzeichen & "%") cmd.Parameters.AddWithValue("@KdAuftragsNr", "%" & KdAuftragsNr & "%") Dim dr = cmd.ExecuteReader() While dr.Read Dim RG As New cRechnungsausgang For Each li In RG.getParameterList() Dim propInfo As PropertyInfo = RG.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(RG, Nothing) Else propInfo.SetValue(RG, dr.Item(li.Text)) End If Next RG.doVorzeichen() LIST.Add(RG) ' If loadPos Then LOAD_POSITIONEN() End While dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return LIST End Function Public Shared Function GET_LIST_WEB_SR(RK_ID As Integer) As List(Of cRechnungsausgang) Dim LIST As New List(Of cRechnungsausgang) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM [Rechnungsausgang] WHERE RK_ID=@RK_ID ", conn) cmd.Parameters.AddWithValue("@RK_ID", RK_ID) Dim dr = cmd.ExecuteReader() While dr.Read Dim RG As New cRechnungsausgang For Each li In RG.getParameterList() Dim propInfo As PropertyInfo = RG.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(RG, Nothing) Else propInfo.SetValue(RG, dr.Item(li.Text)) End If Next RG.doVorzeichen() LIST.Add(RG) ' If loadPos Then LOAD_POSITIONEN() End While dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return LIST End Function Public Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RK_ID", RK_ID, , True, True)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FilialenNr", FilialenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbfertigungsNr", AbfertigungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UnterNr", UnterNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abfertigungsdatum", Abfertigungsdatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsNr", RechnungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsDatum", RechnungsDatum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sammelrechnung", Sammelrechnung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BelegartenNr", BelegartenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BelegartenKz", BelegartenKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BelegartenBez", BelegartenBez)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vorzeichen", Vorzeichen)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BelegNr", BelegNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderLandKz", AbsenderLandKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderKundenNr", AbsenderKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderName 1", AbsenderName_1, "AbsenderName_1")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderName 2", AbsenderName_2, "AbsenderName_2")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderStraße", AbsenderStraße)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderOrt", AbsenderOrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AbsenderOffertenNr", AbsenderOffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerLandKz", EmpfängerLandKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerKundenNr", EmpfängerKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerName 1", EmpfängerName_1, "EmpfängerName_1")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerName 2", EmpfängerName_2, "EmpfängerName_2")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerStraße", EmpfängerStraße)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerOrt", EmpfängerOrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EmpfängerOffertenNr", EmpfängerOffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerLandKz", VermittlerLandKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerKundenNr", VermittlerKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerName 1", VermittlerName_1, "VermittlerName_1")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerName 2", VermittlerName_2, "VermittlerName_2")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerStraße", VermittlerStraße)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerOrt", VermittlerOrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VermittlerOffertenNr", VermittlerOffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Rechnung an", Rechnung_an, "Rechnung_an")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KundenNrZentrale", KundenNrZentrale)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsLandKz", RechnungsLandKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsKundenNr", RechnungsKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsName 1", RechnungsName_1, "RechnungsName_1")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsName 2", RechnungsName_2, "RechnungsName_2")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsName_AdressZusatz", RechnungsName_AdressZusatz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsStraße", RechnungsStraße)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsOrt", RechnungsOrt)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsUstIdKz", RechnungsUstIdKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsUstIdNr", RechnungsUstIdNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungsUstIdGeprüft", RechnungsUstIdGeprüft)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Lastschrift", Lastschrift)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kunden-SVS", Kunden_SVS, "Kunden_SVS")) '!!!!- list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerschlüssel", Steuerschlüssel)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuersatz %", Steuersatz_Proz, "Steuersatz_Proz")) '!!!! % list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LKW Kennzeichen", LKW_Kennzeichen, "LKW_Kennzeichen")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("WährungsNr", WährungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Wert", Wert)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Umrechnungskurs", Umrechnungskurs)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Packstücke und Warenbezeichnung", Packstücke_und_Warenbezeichnung, "Packstücke_und_Warenbezeichnung")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vermerk", Vermerk)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anlage 1", Anlage_1, "Anlage_1")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anlage 2", Anlage_2, "Anlage_2")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anlage 3", Anlage_3, "Anlage_3")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anlage 4", Anlage_4, "Anlage_4")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anlage 5", Anlage_5, "Anlage_5")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anlage 6", Anlage_6, "Anlage_6")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OffertenNr", OffertenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vorlageprovision %", Vorlageprovision_Proz, "Vorlageprovision_Proz")) '!!!!% list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Kreditaufwendungen %", Kreditaufwendungen_Proz, "Kreditaufwendungen_Proz")) '!!!!% list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Besonderheiten", Besonderheiten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vorkasse", Vorkasse)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Text", Text)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerpflichtigerGesamtbetrag", SteuerpflichtigerGesamtbetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerfreierGesamtbetrag", SteuerfreierGesamtbetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Status", Status)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DruckDatumZeit", DruckDatumZeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Abfertigungskosten", Abfertigungskosten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Vorkosten", Vorkosten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Erlös", Erlös)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Buchungsjahr", Buchungsjahr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Währungscode", Währungscode)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachbearbeiter", Sachbearbeiter)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Trdin", Trdin)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KartenNr", KartenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RefFilialenNr", RefFilialenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RefAbfertigungsNr", RefAbfertigungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RefUnterNr", RefUnterNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Notiz", Notiz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zucker_MRN_Nr", Zucker_MRN_Nr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zucker_MRN_Datum", Zucker_MRN_Datum)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Zucker_Aufschub", Zucker_Aufschub)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ReErfZeitstempel", ReErfZeitstempel)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Nettozahlungsziel", Nettozahlungsziel)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_ID", Firma_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SpeditionsbuchUnterNr", SpeditionsbuchUnterNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ErfassungsNr", ErfassungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AvisiererKundenNr", AvisiererKundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Avisierer", Avisierer)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("EMailRechnungstext", EMailRechnungstext)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AvisoID", AvisoID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("KdAuftragsNr", KdAuftragsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Handling", Handling)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VorschauID", VorschauID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Grenze", Grenze)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RechnungSprache", RechnungSprache)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("FakturierungsGruppe", FakturierungsGruppe)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("TextZZ", TextZZ)) Return list End Function Public Sub LOAD(FilialeNr As Integer, AbfertigungsNr As Integer, Optional loadPos As Boolean = True) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Rechnungsausgang WHERE FilialeNr=@FilialeNr AND AbfertigungsNr=@AbfertigungsNr ", conn) cmd.Parameters.AddWithValue("@FilialeNr", FilialeNr) cmd.Parameters.AddWithValue("@AbfertigungsNr", AbfertigungsNr) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(li.Text)) End If Next If loadPos Then LOAD_POSITIONEN() End If dr.Close() End Using doVorzeichen() End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Shared Function LOADByFilialeAbfNrsssasdssssssssss(FilialeNr As Integer, AbfertigungsNr As Integer) As cVorauskasse Try Dim VK As New cVorauskasse Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Rechnungsausgang WHERE vk_AbfertigungsNr=@vk_AbfertigungsNr AND vk_FilialeNr=@vk_FilialeNr ", conn) cmd.Parameters.AddWithValue("@vk_FilialeNr", FilialeNr) cmd.Parameters.AddWithValue("@vk_AbfertigungsNr", AbfertigungsNr) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each li In VK.getParameterList() Dim propInfo As PropertyInfo = VK.GetType.GetProperty(li.Scalarvariable) If dr.Item(li.Text) Is DBNull.Value Then propInfo.SetValue(VK, Nothing) Else propInfo.SetValue(VK, dr.Item(li.Text)) End If Next dr.Close() Return VK End If dr.Close() End Using 'VOREZEICHENCNENCNECNENCN!!! End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return Nothing End Function Public Function SAVE(Optional saveAll As Boolean = True) As Boolean doVorzeichen() ' Für GS in Minusbeträge umwandeln Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM Rechnungsausgang WHERE RK_ID=@RK_ID) " & " BEGIN " & getUpdateCmd() & " END " & " Else " & " BEGIN " & getInsertCmd() & " END " & " commit tran " RK_ID = SQL.doSQLVarListID(RK_ID, sqlstr, "FMZOLL", , list) If RK_ID > 0 Then doVorzeichenPOS() ' Für GS in Minusbeträge umwandeln If saveAll Then SAVE_POSITIONEN(RK_ID) ' positionen speicehrn doVorzeichenPOS() ' Minusbeträge bei GS zurückumwandeln If saveAll Then SAVE_ANHAENGE(RK_ID) ' positionen speicehrn End If doVorzeichen() ' Minusbeträge bei GS zurückumwandeln Return RK_ID > 0 End Function Public Function SAVE_DruckDatumZeit() As Boolean Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim sqlstr = " UPDATE Rechnungsausgang SET DruckDatumZeit=@DruckDatumZeit WHERE RK_ID=@RK_ID " Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list) End Function Public Sub doVorzeichen() Dim vz = If(Vorzeichen = "-", -1, 1) Me.SteuerfreierGesamtbetrag *= vz Me.SteuerpflichtigerGesamtbetrag *= vz Me.Abfertigungskosten *= vz End Sub Public Sub doVorzeichenPOS() Dim vz = If(Vorzeichen = "-", -1, 1) For Each p In POSITIONEN p.doVorzeichen(Vorzeichen) Next End Sub Public Function CHECK_Validation(ByRef errMsg As String) As Boolean If Firma_ID <= 0 Then errMsg = "ERROR: Firma auswählen!" : Return False If Rechnung_an = 0 OrElse CStr(Rechnung_an) = "" Then errMsg = "ERROR: Rechnungsempfänger auswählen!" : Return False If SpeditionsbuchUnterNr Is Nothing Then errMsg = "ERROR: Speditionsbuch-UnterNr auswählen!" : Return False If RechnungsKundenNr <= 0 Then errMsg = "ERROR: Kunden-Nummer fehlt!" : Return False ' If Steuerschlüssel Then errMsg = "ERROR: Steuerschlüssel muss angegeben werden!" : Return False Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(Firma_ID) If FIRMA.Firma_ID = 26 Then If RechnungsLandKz <> "GB" And RechnungsLandKz <> "UK" Then errMsg = "WARN: Abrechnung außerhalb GB." ' Return False End If If Währungscode <> "GBP" Then errMsg = "ERROR: Es darf nur mit Währung 'GBP' abgerechnet werden!" : Return False End If End If If RechnungsLandKz = FIRMA.Firma_LandKz Then If Steuersatz_Proz = 0 Then If vbYes <> MsgBox("Es wurde kein Steuerschlüssel angegeben." & vbNewLine & vbNewLine & "Sind siw wicher, dass Sie ohne Steuerschlüssel fortfahren möchten.", vbYesNoCancel) Then errMsg = "ERROR: Steuerschlüssel angegeben!" Return False End If End If End If Return True End Function Public Function SAVE_POSITIONEN(RK_ID) As Boolean If DELETE_POSITIONEN() Then ' zuerst Einträge löschen... ORDER_POSITIONEN() ' ... dann ordnen ... For Each p In POSITIONEN If Not p.INSERT(RK_ID) Then Return False ' ... dann insert Next Else : Return False End If Return True End Function Public Function SAVE_ANHAENGE(RK_ID) As Boolean If DELETE_ANHAENGE() Then ' zuerst Einträge löschen... 'ORDER_ANHAENGE() ' ... dann ordnen ... For Each p In ANHAENGE If Not p.INSERT(RK_ID) Then Return False ' ... dann insert Next Else : Return False End If Return True End Function Public Sub LOAD() Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("SELECT * FROM Rechnungsausgang WHERE RK_ID=@RK_ID ", conn) cmd.Parameters.AddWithValue("@RK_ID", RK_ID) Dim dr = cmd.ExecuteReader() If dr.Read Then For Each i In getParameterList() Dim propInfo As PropertyInfo = Me.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(Me, Nothing) Else propInfo.SetValue(Me, dr.Item(i.Text)) End If Next End If dr.Close() End Using doVorzeichen() End Using Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Function getUpdateCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' Return (" UPDATE [Rechnungsausgang] SET " & str & " WHERE RK_ID=@RK_ID ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function Public Function getInsertCmd() As String Try Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO Rechnungsausgang (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function Public Function SET_DruckdatumUhrzeit() As Boolean 'obj As Object, tablename As String, where As String) As Boolean Dim sqlstr = " UPDATE [Rechnungsausgang] SET DruckDatumZeit=GETDATE WHERE RK_ID=" & Me.RK_ID Return SQL.doSQL(sqlstr, "FMZOLL") End Function Public Function setSPEDBUCH_FAKTURIERT(Optional wert As Boolean = True) As Boolean 'obj As Object, tablename As String, where As String) As Boolean Dim sqlstr = " UPDATE Speditionsbuch SET Fakturiert='" & If(wert, 1, 0) & "' WHERE FilialenNr = '" & Me.FilialenNr & "' AND AbfertigungsNr = '" & Me.[AbfertigungsNr] & "' AND UnterNr = '" & Me.[SpeditionsbuchUnterNr] & "'" Return SQL.doSQL(sqlstr, "FMZOLL") End Function Public Function DELETE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean Dim sqlstr = " DELETE FROM [Rechnungsausgang] WHERE RK_ID=" & Me.RK_ID Return SQL.doSQL(sqlstr, "FMZOLL") End Function Public Function DELETE_POSITIONEN() As Boolean 'obj As Object, tablename As String, where As String) As Boolean Dim sqlstr = " DELETE FROM [RechnungsausgangPositionen] WHERE RK_ID=" & Me.RK_ID Return SQL.doSQL(sqlstr, "FMZOLL") End Function Public Function DELETE_ANHAENGE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean Dim sqlstr = " DELETE FROM [RechnungsausgangAnhaenge] WHERE RK_ID=" & Me.RK_ID Return SQL.doSQL(sqlstr, "FMZOLL") End Function Public Sub LOAD_POSITIONEN() Try POSITIONEN.Clear() Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM RechnungsausgangPositionen WHERE RK_ID=@RK_ID ", conn) cmd.Parameters.AddWithValue("@RK_ID", Me.RK_ID) Dim dr = cmd.ExecuteReader() While dr.Read Dim l As New cRechnungsausgangPositionen For Each i In l.getParameterList() Dim propInfo As PropertyInfo = l.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(l, Nothing) Else propInfo.SetValue(l, dr.Item(i.Text)) End If Next POSITIONEN.Add(l) End While dr.Close() End Using End Using doVorzeichenPOS() ' Minus in Plus umwandeln (DB hat Minus, System hat Plus-Beträge) Catch ex As Exception MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Public Sub LOAD_ANHAENGE() Try ANHAENGE.Clear() Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM RechnungsausgangAnhaenge WHERE RK_ID=@RK_ID ", conn) cmd.Parameters.AddWithValue("@RK_ID", Me.RK_ID) Dim dr = cmd.ExecuteReader() While dr.Read Dim l As New cRechnungsausgangAnhaenge For Each i In l.getParameterList() Dim propInfo As PropertyInfo = l.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(l, Nothing) Else propInfo.SetValue(l, dr.Item(i.Text)) End If Next ANHAENGE.Add(l) End While dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub Shared Function LOAD_ANHAENGE_LIST(RK_ID) As List(Of cRechnungsausgangAnhaenge) Dim ANHAENGE As New List(Of cRechnungsausgangAnhaenge) Try Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL() Using cmd As New SqlCommand("Select * FROM RechnungsausgangAnhaenge WHERE RK_ID=@RK_ID ", conn) cmd.Parameters.AddWithValue("@RK_ID", RK_ID) Dim dr = cmd.ExecuteReader() While dr.Read Dim l As New cRechnungsausgangAnhaenge For Each i In l.getParameterList() Dim propInfo As PropertyInfo = l.GetType.GetProperty(i.Scalarvariable) If dr.Item(i.Text) Is DBNull.Value Then propInfo.SetValue(l, Nothing) Else propInfo.SetValue(l, dr.Item(i.Text)) End If Next ANHAENGE.Add(l) End While dr.Close() End Using End Using Catch ex As Exception MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return ANHAENGE End Function Public Sub ORDER_POSITIONEN() Try ' Dim POSITIONEN_Tmp As New List(Of cRechnungsausgangPositionen) Try POSITIONEN = POSITIONEN.OrderByDescending(Function(x) x.Preis).ToList() Catch ex As Exception 'Preis null?? End Try POSITIONEN = POSITIONEN.OrderBy(Function(x) CInt(x.LeistungsNr)).ToList() Catch ex As Exception MsgBox("Fehler In der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try End Sub End Class Public Class cRechnungsausgangPositionen Property RK_ID As Integer Property LeistungsNr As Integer Property Steuerpflichtig As Boolean Property LeistungsBez As String = Nothing Property IndexZkteing As Integer = 0 Property BerechnungsartNr As Integer = 1 Property Preis As Object = Nothing Property Anzahl As Object = Nothing Property SteuerpflichtigerBetrag As Decimal = 0 Property SteuerfreierBetrag As Decimal = 0 Property AufschubkontoNr As Object = Nothing Property Aufschubfälligkeit As Object = Nothing Property Prüfsumme_berechnen As Boolean '!!!! Property DateiNameAufschub As Object = Nothing Property Preisbindung As Boolean '!!!! Property Belegdaten As Object = Nothing Property Fremdwährung As Object = Nothing Property BGebLeistungsNr As Object = Nothing Property BGebProzent As Object = Nothing Property BGebBgl As Object = Nothing Property BGebMinBetrag As Object = Nothing Property RePosZeitstempel As Object = Nothing 'FROM [VERAG].[dbo].[RechnungsausgangPositionen] Dim SQL As New SQL Sub New() End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RK_ID", RK_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsNr", LeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Steuerpflichtig", Steuerpflichtig)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez", LeistungsBez)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("IndexZkteing", IndexZkteing)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartNr", BerechnungsartNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preis", Preis)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anzahl", Anzahl)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerpflichtigerBetrag", SteuerpflichtigerBetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("SteuerfreierBetrag", SteuerfreierBetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("AufschubkontoNr", AufschubkontoNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Aufschubfälligkeit", Aufschubfälligkeit)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Prüfsumme berechnen", Prüfsumme_berechnen, "Prüfsumme_berechnen")) '!!!! list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("DateiNameAufschub", DateiNameAufschub)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preisbindung", Preisbindung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegdaten", Belegdaten)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fremdwährung", Fremdwährung)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebLeistungsNr", BGebLeistungsNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebProzent", BGebProzent)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebBgl", BGebBgl)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebMinBetrag", BGebMinBetrag)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RePosZeitstempel", RePosZeitstempel)) 'list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("upsize_ts", XXXXXXXXXXXXX)) Return list End Function Public Function INSERT(RK_ID) As Boolean Me.RK_ID = RK_ID Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Return SQL.doSQLVarList(getInsertCmd, "FMZOLL", , list) End Function Public Sub doVorzeichen(Vorzeichen) Dim vz = If(Vorzeichen = "-", -1, 1) Me.Preis *= vz Me.SteuerfreierBetrag *= vz Me.SteuerpflichtigerBetrag *= vz End Sub Public Function getInsertCmd() As String Try 'Me.Eingegeben_am = Now Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO RechnungsausgangPositionen (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class Public Class cRechnungsausgangAnhaenge Property RK_ID As Integer Property dsId As Integer Property anhId As Integer Property Bezeichnung As String = "" Dim SQL As New SQL Sub New() End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RK_ID", RK_ID)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("dsId", dsId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("anhId", anhId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Bezeichnung", Bezeichnung)) Return list End Function Public Function INSERT(RK_ID) As Boolean Me.RK_ID = RK_ID Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Return SQL.doSQLVarList(getInsertCmd, "FMZOLL", , list) End Function Public Function getInsertCmd() As String Try 'Me.Eingegeben_am = Now Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList() Dim str As String = "" Dim values As String = "" For Each i In list If Not i.isPrimaryParam Then str &= "[" & i.Text & "]," values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & "," End If Next str = str.Substring(0, str.Length - 1) 'wg. ',' values = values.Substring(0, values.Length - 1) 'wg. ',' Return (" INSERT INTO RechnungsausgangAnhaenge (" & str & ") VALUES(" & values & ") ") Catch ex As Exception MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) End Try Return "" End Function End Class