Files
AVISO/Aviso/frmFrachtkostenBerechnen.vb

239 lines
8.5 KiB
VB.net

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