This commit is contained in:
2021-01-19 20:27:19 +01:00
parent 1c8b5afac9
commit 595851ec3c
37 changed files with 1293 additions and 479 deletions

View File

@@ -6,6 +6,14 @@ Public Class cFakturierung
Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL
Public Shared Function fktSVSRVS(firmaId As Integer, varWert As Object, Optional varWährungscode As Object = "EUR") As Object
Select Case firmaId
Case 21, 22, 23
fktSVSRVS_UNISPED(varWert, varWährungscode)
Case Else
fktSVSRVS(varWert, varWährungscode)
End Select
End Function
Public Shared Function fktSVSRVS(varWert As Object, Optional varWährungscode As Object = "EUR") As Object
Dim varVersicherungssumme As Object
@@ -180,6 +188,65 @@ Public Class cFakturierung
End Function
Public Shared Function fktSVSRVS_UNISPED(varWert As Object, Optional varWährungscode As Object = "EUR") As Object
Dim varVersicherungssumme As Object
Dim varRechnungswährung As Object
' Versicherungssumme prüfen
varVersicherungssumme = varWert
If varVersicherungssumme Is Nothing OrElse varVersicherungssumme = 0 Then
MsgBox("Die SVS/RVS-Prämie kann nicht ermittelt werden. Der Warenwert zur Bestimmung der Versicherungssumme ist nicht bekannt.", , "fktSVSRVS")
fktSVSRVS_UNISPED = Nothing
Exit Function
ElseIf varVersicherungssumme < 0 Then
varVersicherungssumme = 0 - varVersicherungssumme
End If
' Die SVS/RVS-Tabelle ist in der Währung ATS geführt.
' Wenn der Wert zur Bestimmung der Versicherungssumme auf einer anderen Währung basiert,
' wird der Wert in ATS umgerechnet.
' Die Versicherungsprämie ist in der Währung ATS angegeben. Lautet die Rechnung auf eine
' andere Währung, wird die Versicherungsprämie auf diese Währung umgerechnet.
varRechnungswährung = varWährungscode
Select Case VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(varVersicherungssumme, varRechnungswährung, "EUR")
Case Is <= 2500
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(2.91, "EUR", varRechnungswährung)
Case Is <= 3750
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(4.42, "EUR", varRechnungswährung)
Case Is <= 5000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(5.82, "EUR", varRechnungswährung)
Case Is <= 6250
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(7.1, "EUR", varRechnungswährung)
Case Is <= 7500
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(8.67, "EUR", varRechnungswährung)
Case Is <= 10000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(11.34, "EUR", varRechnungswährung)
Case Is <= 15000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(16.24, "EUR", varRechnungswährung)
Case Is <= 20000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(21.13, "EUR", varRechnungswährung)
Case Is <= 25000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(25.3, "EUR", varRechnungswährung)
Case Is <= 50000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(44.73, "EUR", varRechnungswährung)
Case Is <= 100000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(73.8, "EUR", varRechnungswährung)
Case Is <= 150000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(104.87, "EUR", varRechnungswährung)
Case Is <= 200000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(134, "EUR", varRechnungswährung)
Case Is <= 300000
fktSVSRVS_UNISPED = VERAG_PROG_ALLGEMEIN.cProgramFunctions.fktEuro(160.85, "EUR", varRechnungswährung)
Case Is <= 1500000
fktSVSRVS_UNISPED = Int((varVersicherungssumme * 0.00055) * 100 + 0.5) / 100
Case Else
fktSVSRVS_UNISPED = Int((1500000 * 0.00055) * 100 + 0.5) / 100
End Select
End Function
Shared Sub setGesamtBetraege(ByRef RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Optional Steuersatz_Proz As Object = Nothing)
Dim steuerPflichtigerBetrag As Double = 0
@@ -235,12 +302,16 @@ Public Class cFakturierung
' Dim Nettozahlungsziel
Dim ZZTage = 10
If RECHNUNG.RechnungsKundenNr > 0 Then
Dim RECHNUNG_AD As New VERAG_PROG_ALLGEMEIN.cAdressen(RECHNUNG.RechnungsKundenNr)
Dim RECHNUNG_KD As New VERAG_PROG_ALLGEMEIN.cKunde(RECHNUNG.RechnungsKundenNr)
If RECHNUNG_KD.Zahlungsziel IsNot Nothing AndAlso IsNumeric(RECHNUNG_KD.Zahlungsziel) Then
ZZTage = RECHNUNG_KD.Zahlungsziel
End If
Select Case RECHNUNG.[BelegartenNr]
Case 70 'RECHNUNG
@@ -249,10 +320,10 @@ Public Class cFakturierung
strText = strText & "Der Rechnungsbetrag wurde durch erteilten Abbuchungsauftrag eingezogen." & vbCrLf
Else
If checkIfKreditaufwendungen(RECHNUNG) Then
strZahlbar = "Zahlbar innerhalb 10 Tagen abzüglich Pos. 750; ab 10 Tagen netto fällig."
strZahlbar = "Zahlbar innerhalb " & ZZTage & " Tagen abzüglich Pos. 750; ab 10 Tagen netto fällig."
Else
'Zahlungsziel allgemein.
strZahlbar = "Zahlbar innerhalb 10 Tagen ab Rechnungsdatum."
strZahlbar = "Zahlbar innerhalb " & ZZTage & " Tagen ab Rechnungsdatum."
End If
'Zahlungsziel bei Maut/Diesel.
@@ -296,38 +367,54 @@ Public Class cFakturierung
End If
End Select
' Informations- und Werbetexte drucken
Dim sqlStr = "SELECT * FROM Rechnungstexte WHERE 1=1"
If RECHNUNG.Firma_ID > 0 Then sqlStr &= " AND (Firma_ID='" & RECHNUNG.Firma_ID & "' or Firma_ID is null) "
If If(RECHNUNG_AD.LandKz, "") <> "" Then sqlStr &= " AND (LandKz='" & RECHNUNG_AD.LandKz & "' or LandKz is null) "
If If(RECHNUNG.OffertenNr, 0) > 0 Then sqlStr &= " AND (OffertenNr='" & RECHNUNG.OffertenNr & "' or OffertenNr is null) "
'Wennn Rechnung als Email geschickt werden sollte Rechnungsdruck=2
If If(RECHNUNG_AD.Rechnungsdruck, -1) = 2 And If(RECHNUNG_AD.E_Mail, "") <> "" Then sqlStr &= " AND EMailRechnung=1 "
Select Case RECHNUNG.[BelegartenNr]
Case 70
sqlStr &= " AND (DrucksteuerungsKz='R' OR DrucksteuerungsKz='') "
Case 71
sqlStr &= " AND (DrucksteuerungsKz='G' OR DrucksteuerungsKz='') "
End Select
Dim dt_RechnungsTexte As DataTable = SQL.loadDgvBySql(sqlStr & " order by Firma_ID desc,LandKz desc,Offertennr desc", "FMZOLL")
If dt_RechnungsTexte.Rows.Count > 0 Then
strText &= dt_RechnungsTexte.Rows(0)("Text") & vbCrLf
' MsgBox(dt_RechnungsTexte.Rows(0)("Text") & vbCrLf)
If getRTXT_SQL(strText, RECHNUNG, RECHNUNG_AD, RECHNUNG.Firma_ID, RECHNUNG.RechnungsLandKz, RECHNUNG.OffertenNr, True) Then
ElseIf getRTXT_SQL(strText, RECHNUNG, RECHNUNG_AD, RECHNUNG.Firma_ID, RECHNUNG.RechnungsLandKz, , True) Then
ElseIf getRTXT_SQL(strText, RECHNUNG, RECHNUNG_AD, RECHNUNG.Firma_ID, ,, True) Then
ElseIf getRTXT_SQL(strText, RECHNUNG, RECHNUNG_AD, ,,, True) Then
ElseIf getRTXT_SQL(strText, RECHNUNG, RECHNUNG_AD, ,,, False) Then
End If
'' Informations- und Werbetexte drucken
'Dim sqlStr = "SELECT * FROM Rechnungstexte WHERE 1=1"
'If RECHNUNG.Firma_ID > 0 Then sqlStr &= " AND (Firma_ID='" & RECHNUNG.Firma_ID & "' or Firma_ID is null) "
'If If(RECHNUNG_AD.LandKz, "") <> "" Then sqlStr &= " AND (LandKz='" & RECHNUNG_AD.LandKz & "' or LandKz is null) "
'If If(RECHNUNG.OffertenNr, 0) > 0 Then sqlStr &= " AND (OffertenNr='" & RECHNUNG.OffertenNr & "' or OffertenNr is null) "
strText = strZahlbar & vbNewLine & strText
' Text in Rechnungskopfsatz übernehmen.
If strText = "" Then
''Wennn Rechnung als Email geschickt werden sollte Rechnungsdruck=2
'If If(RECHNUNG_AD.Rechnungsdruck, -1) = 2 And If(RECHNUNG_AD.E_Mail, "") <> "" Then sqlStr &= " AND EMailRechnung=1 "
'Select Case RECHNUNG.[BelegartenNr]
' Case 70
' sqlStr &= " AND (DrucksteuerungsKz='R' OR DrucksteuerungsKz='') "
' Case 71
' sqlStr &= " AND (DrucksteuerungsKz='G' OR DrucksteuerungsKz='') "
'End Select
'Dim dt_RechnungsTexte As DataTable = SQL.loadDgvBySql(sqlStr & " order by Firma_ID desc,LandKz desc,Offertennr desc", "FMZOLL")
'If dt_RechnungsTexte.Rows.Count > 0 Then
' strText &= dt_RechnungsTexte.Rows(0)("Text") & vbCrLf
' ' MsgBox(dt_RechnungsTexte.Rows(0)("Text") & vbCrLf)
'End If
Select Case RECHNUNG.Firma_ID
Case 21, 22, 23
Dim VORL = RECHNUNG.POSITIONEN.FindAll(Function(x) (x.LeistungsNr = 700 Or x.LeistungsNr = 710))
If VORL IsNot Nothing AndAlso VORL.Count > 0 Then
strText = strText.Replace("<Vorlageprovision>", "Bei Zahlungseingang bis zum <Rechnungsdatum+10T> können Sie die verrechnete Vorlageprovision in Abzug bringen. " & vbCrLf)
End If
End Select
strText = strZahlbar & vbNewLine & strText
' Text in Rechnungskopfsatz übernehmen.
strText = strText.Replace("<Vorlageprovision>", "")
If strText = "" Then
RECHNUNG.Text = Nothing
Else
strText.Replace("<EMailAdresse>", If(RECHNUNG_AD.E_Mail, " - "))
' varPos = InStr(1, strText, "<EMailAdresse>")
' If varPos > 0 And Not rstAdr.EOF And Not IsNull(rstAdr![E-Mail]) Then
'If Len(strText) > (varPos - 1 + Len("<EMailAdresse>")) Then
@@ -338,9 +425,18 @@ Public Class cFakturierung
' End If
' Me![Text] = strText
RECHNUNG.Text = strText
End If
End If
End If
'Select Case RECHNUNG.Firma_ID
' Case "21", "22", "23"
' strText = strText.Replace("", "")
'End Select
'MsgBox("Firma:" & RECHNUNG.Firma_ID & " - Land:" & "" & RECHNUNG.RechnungsLandKz & " - OffertenNr:" & RECHNUNG.OffertenNr & " - TXT: " & strText)
Return strText
@@ -348,6 +444,47 @@ Public Class cFakturierung
End Function
Shared Function getRTXT_SQL(ByRef strText, RECHNUNG, RECHNUNG_AD, Optional FIRMA_ID = Nothing, Optional LandKz = Nothing, Optional OffertenNr = Nothing, Optional EMailRechnung = Nothing) As Boolean
' Informations- und Werbetexte drucken
Dim sqlStr = "SELECT * FROM Rechnungstexte WHERE 1=1"
If FIRMA_ID IsNot Nothing Then
sqlStr &= " AND Firma_ID='" & RECHNUNG.Firma_ID & "' "
Else
sqlStr &= " AND Firma_ID is null"
End If
If LandKz IsNot Nothing Then
sqlStr &= " AND LandKz='" & LandKz & "' "
Else
sqlStr &= " AND LandKz is null"
End If
If OffertenNr IsNot Nothing Then
sqlStr &= " AND OffertenNr='" & OffertenNr & "' "
Else
sqlStr &= " AND OffertenNr is null"
End If
If EMailRechnung IsNot Nothing Then
'Wennn Rechnung als Email geschickt werden sollte Rechnungsdruck=2
If If(RECHNUNG_AD.Rechnungsdruck, -1) = 2 And If(RECHNUNG_AD.E_Mail, "") <> "" Then sqlStr &= " AND EMailRechnung=1 "
End If
Select Case RECHNUNG.[BelegartenNr]
Case 70
sqlStr &= " AND (DrucksteuerungsKz='R' OR DrucksteuerungsKz='') "
Case 71
sqlStr &= " AND (DrucksteuerungsKz='G' OR DrucksteuerungsKz='') "
End Select
' MsgBox(sqlStr & " order by Firma_ID desc,LandKz desc,Offertennr desc")
Dim dt_RechnungsTexte As DataTable = SQL.loadDgvBySql(sqlStr & " order by Firma_ID desc,LandKz desc,Offertennr desc", "FMZOLL")
If dt_RechnungsTexte.Rows.Count > 0 Then
strText &= dt_RechnungsTexte.Rows(0)("Text") & vbCrLf
Return True
End If
Return False
End Function
Shared Function checkIfcheckIfZollbelege(RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang) As Boolean
For Each POS In RECHNUNG.POSITIONEN
If (POS.LeistungsNr = 10 Or POS.LeistungsNr = 60 Or POS.LeistungsNr = 70) Then
@@ -746,6 +883,9 @@ Public Class cFakturierung
rpt.txtKdAuftragsNr_Ueberschrift.Visible = (rpt.txtKdAuftragsNr.Text <> String.Empty)
rpt.txtVermerk.Text = (If(RECHNUNG.Text, "").ToString.Trim & vbNewLine & vbNewLine & If(RECHNUNG.Notiz, "").ToString.Trim).ToString.Trim
If RECHNUNG.RechnungsDatum IsNot Nothing Then
rpt.txtVermerk.Text = rpt.txtVermerk.Text.Replace("<Rechnungsdatum+10T>", CDate(RECHNUNG.RechnungsDatum).AddDays(10).ToShortDateString)
End If
' REVERSE CHARGE (Übergang der Steuerschuld in EU-Ländern).
' Dies hat zur Folge, dass steuerfreie Rechnungsbeträge für Leistungen,
@@ -949,6 +1089,31 @@ Public Class cFakturierung
End Try
'-------------------------------------------------------------------------------
'ABRECHNUNGS API:
'-------------------------------------------------------------------------------
If Not Kopie Then
Try
Dim KUNDE_ERW As New VERAG_PROG_ALLGEMEIN.cKundenErweitert(RECHNUNG.RechnungsKundenNr)
If KUNDE_ERW IsNot Nothing Then
'TRADESHIFT:
Try
If KUNDE_ERW.kde_API_Tradeshift Then
Select Case RECHNUNG.Firma_ID
Case 21, 22, 23
System.IO.File.Copy(tmpPath, "\\srv01.unisu.at\Unisped\___AR_PDF\" & RG_Bezeichnung, True)
End Select
End If
Catch ex As Exception
MsgBox("Tradeshift Export fehlgeschlagen! " & ex.Message & ex.StackTrace)
End Try
End If
Catch ex As Exception
MsgBox("API Fehler!" & ex.Message & ex.StackTrace)
End Try
End If
'-------------------------------------------------------------------------------
Select Case If(Rechnugnsdruck > 0, Rechnugnsdruck, If(AD.Rechnungsdruck, 0))'If(AD.Rechnungsdruck, 0)
Case 0, 1 'DRUCKEN
@@ -1116,6 +1281,31 @@ Public Class cFakturierung
End Select
getSignature &= "<br>"
'BREXIT
If True Then
Select Case firma
Case 21 'UNISPED
getSignature &= "<br>"
getSignature &= "<div style=""font-size:14px"">"
getSignature &= "Sind Sie bereits auf den BREXIT vorbereitet?<br/>"
getSignature &= "Weiter Infos finden Sie unter: <a href=""http://www.brexit.at"">http://www.brexit.at<br/>"
getSignature &= "<img width=""250"" height=""80"" src=""" & imgsrc & "bexit.png""/></a><br/>"
getSignature &= "<b>BREXIT Hotline:</b> +43 7711 2677 - 27| <b>@</b> <a href=""mailto:brexit@unisped.at"">brexit@unisped.at</a> <br/>"
getSignature &= "</div>"
getSignature &= "<br>"
getSignature &= "<br>"
Case Else
getSignature &= "<br>"
getSignature &= "<div style=""font-size:14px"">"
getSignature &= "Sind Sie bereits auf den BREXIT vorbereitet?<br/>"
getSignature &= "Weiter Infos finden Sie unter: <a href=""http://www.brexit.at"">http://www.brexit.at<br/>"
getSignature &= "<img width=""250"" height=""80"" src=""" & imgsrc & "brexit.png""/></a><br/>"
getSignature &= "<b>BREXIT Hotline:</b> +43 7711 2777 - 885 | <b>@</b> <a href=""mailto:brexit@verag.ag"">brexit@verag.ag</a> <br/>"
getSignature &= "</div>"
getSignature &= "<br>"
getSignature &= "<br>"
End Select
End If
Select Case landKz
Case "D", "A", "DE", "AT", "CH"
getSignature &= "<span style=""font-size:9px"">Wir arbeiten ausschließlich auf Grund der Allgemeinen Österreichischen Spediteurbedingungen in der jeweils geltenden Fassung. Zahlungen werden zunächst auf Frachten,<br>
@@ -1450,6 +1640,32 @@ Public Class cFakturierung
End Try
'-------------------------------------------------------------------------------
'ABRECHNUNGS API:
'-------------------------------------------------------------------------------
Try
If Not SRDruckWiederholen Then
Dim KUNDE_ERW As New VERAG_PROG_ALLGEMEIN.cKundenErweitert(dt.Rows(0)("RechnungsKundenNr"))
If KUNDE_ERW IsNot Nothing Then
'TRADESHIFT:
Try
If KUNDE_ERW.kde_API_Tradeshift Then
Select Case dt.Rows(0)("Firma_ID")
Case 21, 22, 23
System.IO.File.Copy(pathPDF, "\\srv01.unisu.at\Unisped\___AR_PDF\Sammelrechnung_" & RechnungsNr & ".pdf", True)
End Select
End If
Catch ex As Exception
MsgBox("Tradeshift Export fehlgeschalgen! " & ex.Message & ex.StackTrace)
End Try
End If
End If
Catch ex As Exception
MsgBox("API Fehler!" & ex.Message & ex.StackTrace)
End Try
'-------------------------------------------------------------------------------
End If
'-------------- ENDE --------------
End Function