Frachtkostenberechnung und ATEZ-API
This commit is contained in:
325
Aviso/usrcntlFrachtkostenberechnung.vb
Normal file
325
Aviso/usrcntlFrachtkostenberechnung.vb
Normal file
@@ -0,0 +1,325 @@
|
||||
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
|
||||
Reference in New Issue
Block a user