326 lines
12 KiB
VB.net
326 lines
12 KiB
VB.net
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
|