Imports System.Security.Cryptography Imports DocumentFormat.OpenXml.Drawing Imports DocumentFormat.OpenXml.Office.MetaAttributes Imports VERAG_PROG_ALLGEMEIN Public Class frmFrachtkostenBerechnen Dim absenderID As Integer Dim empfaengerID As Integer Dim origin As String Dim destination As String Public EUAnteil As Double Public nichtEUAnteil As Double Dim gewicht As Double Dim gesamtFrachtkosten As Double Sub New(absID As String, empfID As String, gewichtInput As Double) InitializeComponent() absenderID = CInt(absID) empfaengerID = CInt(empfID) gewicht = gewichtInput End Sub Private Sub frmFrachtkotenBerechnen_Load(sender As Object, e As EventArgs) Handles MyBase.Load txbVonPLZ.fillWithSQL("SELECT ISNULL([LandKz],'') + '-' + ISNULL([PLZ],'') FROM [VERAG].[dbo].[Adressen] where AdressenNr = '" & absenderID & "'") txbVonOrt.fillWithSQL("SELECT ISNULL([Ort],'') FROM [VERAG].[dbo].[Adressen] where AdressenNr = '" & absenderID & "'") txbNachPLZ.fillWithSQL("SELECT ISNULL([LandKz],'') + '-' + ISNULL([PLZ],'-') FROM [VERAG].[dbo].[Adressen] where AdressenNr = '" & empfaengerID & "'") txbNachOrt.fillWithSQL("SELECT ISNULL([Ort],'') FROM [VERAG].[dbo].[Adressen] where AdressenNr = '" & empfaengerID & "'") ckbManAnteilsermittlung.Checked = True tbEUAnteil._value = 0 tbNichtEUAnteil._value = 0 txbGewicht._value = gewicht.ToString txbFactor._value = 0.15 checkInputFields() End Sub Sub calculateFreight() 'resetInputFields() setControlEUAnteile() origin = IIf(txbVonPLZ._value <> "", txbVonPLZ._value, "") & " " & IIf(txbVonOrt._value <> "", txbVonOrt._value, "") destination = IIf(txbNachPLZ._value <> "", txbNachPLZ._value, "") & " " & IIf(txbNachOrt._value <> "", txbNachOrt._value, "") Dim getValues = True Dim twoRouteRequest As Boolean = False Dim duration = "" Dim distance = "" Dim durationEU = "" Dim distanceEU = "" If txbVonPLZ._value.Substring(0, 2) = "TR" AndAlso ckbManAnteilsermittlung.Checked Then twoRouteRequest = True 'Kapitan Andreevo ist EU Grenze für Lieferungen aus der Türkei VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance(origin, "Kapitan Andreevo", duration, distance,, getValues) VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance("Kapitan Andreevo", destination, durationEU, distanceEU,, getValues) ElseIf txbVonPLZ._value.Substring(0, 3) = "SRB" AndAlso ckbManAnteilsermittlung.Checked Then twoRouteRequest = True 'Horgoš ist EU Grenze für Lieferungen aus Serbien VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance(origin, "Horgoš", duration, distance,, getValues) VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance("Horgoš", destination, durationEU, distanceEU,, getValues) End If If twoRouteRequest = True AndAlso ckbManAnteilsermittlung.Checked Then lblDistanzEU.Text = "EU-Distanz" lblDistanzNichtEU.Visible = True txbCalcDistanceNichtEU.Visible = True Try If (IsNumeric(distanceEU)) Then IIf(distanceEU > 1000, Math.Round(distanceEU / 1000, 0), distanceEU) txbCalcDistanceEU._value = IIf(distanceEU > 1000, Math.Round(distanceEU / 1000, 0), distanceEU) Else distanceEU = "0" MsgBox("Standort vom Bestimmungsort kann nicht ermittelt werden!" & vbCr & "Bitte Eingabe " & txbNachPLZ._value & " " & txbNachOrt._value & " prüfen") Exit Sub End If If (IsNumeric(distance)) Then txbCalcDistanceNichtEU._value = IIf(CInt(distance) > 1000, Math.Round(CInt(distance) / 1000, 0), CInt(distance)) Else distance = "0" MsgBox("Standort vom Abgangsort kann nicht ermittelt werden!" & vbCr & "Bitte Eingabe " & txbVonPLZ._value & " " & txbVonOrt._value & " prüfen") Exit Sub End If Dim totalDistance = CDbl(distance) + CDbl(distanceEU) Dim distanceNotEUpercent = CDbl(distance) * 100 / totalDistance Dim distanceEUpercent = CDbl(distanceEU) * 100 / totalDistance Math.Round(distanceNotEUpercent, 2) Math.Round(distanceEUpercent, 2) tbEUAnteil._value = CDbl(distanceEUpercent) / 100 tbNichtEUAnteil._value = CDbl(distanceNotEUpercent) / 100 Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try ElseIf ckbManAnteilsermittlung.Checked Then VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance(origin, destination, duration, distance) tbEUAnteil._value = 0.6 tbNichtEUAnteil._value = 0.4 lblDistanzEU.Text = "Distanz" txbCalcDistanceEU._value = distance lblDistanzNichtEU.Visible = False txbCalcDistanceNichtEU.Visible = False Else lblDistanzEU.Text = "Distanz" txbCalcDistanceEU._value = distance lblDistanzNichtEU.Visible = False txbCalcDistanceNichtEU.Visible = False End If End Sub Sub calculateFreightCosts() Try gesamtFrachtkosten = gewicht * CDbl(txbFactor._value) tbxGesamtfrachtkosten._value = gesamtFrachtkosten EUAnteil = gesamtFrachtkosten * tbEUAnteil._value nichtEUAnteil = gesamtFrachtkosten * CDbl(tbNichtEUAnteil._value) tbEUAnteilberechnet._value = CStr(EUAnteil) tbNichtEUAnteilberechnet._value = CStr(nichtEUAnteil) Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Function checkInputFields() As Boolean Dim isFilled As Boolean = True lblWarningAbgangort.Visible = False lblWarningBestimmungsort.Visible = False lblWarningEUAnteil.Visible = False lblWarningNichtEUAnteil.Visible = False btnOK.DialogResult = DialogResult.OK If (tbEUAnteil._value = "" Or Not IsNumeric(tbEUAnteil._value)) Then lblWarningEUAnteil.Visible = True btnOK.DialogResult = DialogResult.OK isFilled = False End If If (tbNichtEUAnteil._value = "" Or Not IsNumeric(tbNichtEUAnteil._value)) Then lblWarningNichtEUAnteil.Visible = True btnOK.DialogResult = DialogResult.OK isFilled = False End If If (txbFactor._value = "" Or Not IsNumeric(txbFactor._value)) Then 'Hinweis INPUT false End If If (txbVonOrt._value = "" Or txbVonPLZ._value = "") Then lblWarningAbgangort.Visible = True btnOK.DialogResult = DialogResult.OK isFilled = False End If If (txbNachOrt._value = "" Or txbNachPLZ._value = "") Then lblWarningBestimmungsort.Visible = True btnOK.DialogResult = DialogResult.OK isFilled = False End If Return isFilled End Function Private Sub btnCalculate_Click(sender As Object, e As EventArgs) Handles btnCalculate.Click If (checkInputFields() = False) Then Exit Sub calculateFreight() If (checkInputFields() = False) Then Exit Sub calculateFreightCosts() End Sub Private Sub resetInputFields() txbCalcDistanceEU.Clear() txbCalcDistanceNichtEU.Clear() tbEUAnteilberechnet.Clear() tbNichtEUAnteilberechnet.Clear() If tbEUAnteil._value = "" Then tbEUAnteil._value = 0 If tbNichtEUAnteil._value = "" Then tbNichtEUAnteil._value = 0 End Sub Private Sub setControlEUAnteile() If ckbManAnteilsermittlung.Checked Then tbEUAnteil.Enabled = False tbNichtEUAnteil.Enabled = False Else tbEUAnteil.Enabled = True tbNichtEUAnteil.Enabled = True resetInputFields() End If End Sub Private Sub ckbManAnteilsermittlung_CheckStateChanged(sender As Object, e As EventArgs) Handles ckbManAnteilsermittlung.CheckStateChanged setControlEUAnteile() End Sub End Class