Public Class usrcntlFrachtkostenberechnung Dim absenderID As Integer = -1 Dim empfaengerID As Integer = -1 Dim origin As String Dim destination As String Dim ware As String Public EUAnteil As Double Public nichtEUAnteil As Double Dim gewicht As Double Dim gesamtFrachtkosten As Double Dim sql As New VERAG_PROG_ALLGEMEIN.SQL Sub New() InitializeComponent() ware = "Test" End Sub Sub New(absID As String, empfID As String, gewichtInput As String, gesamtfrachtkostenInput As String, ware As String) InitializeComponent() Try If gesamtfrachtkostenInput IsNot Nothing AndAlso gesamtfrachtkostenInput.ToString <> "" AndAlso IsNumeric(gesamtfrachtkostenInput) Then gesamtFrachtkosten = CDbl(gesamtfrachtkostenInput) tbxGesamtfrachtkosten._value = gesamtFrachtkosten Else gesamtFrachtkosten = 0 End If If gewichtInput IsNot Nothing AndAlso gewichtInput.ToString <> "" AndAlso IsNumeric(gewichtInput) Then gewicht = CDbl(gewichtInput) Else gewicht = 0 End If If absID IsNot Nothing AndAlso absID.ToString <> "" AndAlso IsNumeric(absID) Then absenderID = CInt(absID) Else absenderID = -1 End If If empfID IsNot Nothing AndAlso empfID.ToString <> "" AndAlso IsNumeric(empfID) Then empfaengerID = Int(empfID) Else empfaengerID = -1 End If txtZoll2._value = ware.ToString Label5.Text = gewicht.ToString Catch ex As Exception VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name) End Try End Sub Private Sub usrcntlFrachtkostenberechnung(sender As Object, e As EventArgs) Handles MyBase.Load 'cbxLandVon.fillWithSQL("SELECT Distinct(ISNULL([LandKz],'')) as LandKZ FROM [Adressen] order by LandKz asc", False, "FMZOLL", True, True) cbxLandVon.fillWithSQL(" select distinct landkz, Währungstabelle.Land from Währungstabelle where landkz is not null order by LandKz", True, "FMZOLL", True) cbxLandVon.changeItem(sql.DLookup("[LandKz]", "[Adressen]", "[AdressenNr]='" & absenderID & "'", "FMZOLL", "")) txbVonPLZ.fillWithSQL("SELECT ISNULL([PLZ],'') FROM [Adressen] where AdressenNr = '" & absenderID & "'", "FMZOLL") txbVonOrt.fillWithSQL("SELECT ISNULL([Ort],'') FROM [Adressen] where AdressenNr = '" & absenderID & "'", "FMZOLL") cbxLandNach.Items.AddRange(cbxLandVon.Items.Cast(Of VERAG_PROG_ALLGEMEIN.MyListItem).ToArray()) cbxLandNach.changeItem(sql.DLookup("[LandKz]", "[Adressen]", "[AdressenNr]='" & empfaengerID & "'", "FMZOLL", "")) txbNachPLZ.fillWithSQL("SELECT ISNULL([PLZ],'-') FROM [Adressen] where AdressenNr = '" & empfaengerID & "'", "FMZOLL") txbNachOrt.fillWithSQL("SELECT ISNULL([Ort],'') FROM [Adressen] where AdressenNr = '" & empfaengerID & "'", "FMZOLL") 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(cbxLandVon._value <> "", cbxLandVon.Text.Replace(cbxLandVon._value & " -", "").Trim(), "") & " " & IIf(txbVonPLZ._value <> "", txbVonPLZ._value, "") & " " & IIf(txbVonOrt._value <> "", txbVonOrt._value, "") destination = IIf(cbxLandNach._value <> "", cbxLandNach.Text.Replace(cbxLandNach._value & " -", "").Trim(), "") & " " & 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 cbxLandVon._value = "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 cbxLandVon._value = "SRB" AndAlso ckbManAnteilsermittlung.Checked Then twoRouteRequest = True 'Horgoš ist EU Grenze für Lieferungen von Serbien VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance(origin, "Horgoš", duration, distance,, getValues) VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance("Horgoš", destination, durationEU, distanceEU,, getValues) ElseIf cbxLandNach._value = "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) ElseIf cbxLandNach._value = "GB" AndAlso ckbManAnteilsermittlung.Checked Then twoRouteRequest = True 'Dover ist EU Grenze für Lieferungen nach England VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance(origin, "Dover", durationEU, distanceEU,, getValues) VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance("Dover", destination, duration, distance,, getValues) ElseIf cbxLandVon._value = "GB" AndAlso ckbManAnteilsermittlung.Checked Then twoRouteRequest = True 'Dover ist EU Grenze für Lieferungen aus England VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance(origin, "Dover", duration, distance,, getValues) VERAG_PROG_ALLGEMEIN.cGoogleAPI.GoogleDistance("Dover", 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 If distance = "0" Or distance = "" Then MsgBox("Standort vom Abgangsort/Bestimmungsort kann nicht ermittelt werden!" & vbCr & "Bitte Eingabe prüfen") End If 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 If gesamtFrachtkosten = 0 Then gesamtFrachtkosten = gewicht * CDbl(txbFactor._value) tbxGesamtfrachtkosten._value = gesamtFrachtkosten End If 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 = "" And txbVonPLZ._value = "") Then lblWarningAbgangort.Visible = True btnOK.DialogResult = DialogResult.OK isFilled = False End If If (txbNachOrt._value = "" And 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 txbCalcDistanceEU_TextChanged(sender As Object, e As EventArgs) Handles txbCalcDistanceEU.TextChanged, txbCalcDistanceNichtEU.TextChanged, txbCalcDistanceNichtEU.TextChanged, tbNichtEUAnteilberechnet.TextChanged, tbEUAnteil.TextChanged, tbNichtEUAnteil.TextChanged txbCalcDistanceEU2.Text = txbCalcDistanceEU.Text txbCalcDistanceNichtEU2.Text = txbCalcDistanceNichtEU.Text tbEUAnteilberechnet2.Text = txbCalcDistanceNichtEU.Text tbNichtEUAnteilberechnet22.Text = tbNichtEUAnteilberechnet.Text tbEUAnteil2.Text = tbEUAnteil.Text tbNichtEUAnteil2.Text = tbNichtEUAnteil.Text End Sub End Class