From f0e9eb8867df5b08b3da1fb5268ca2071c7edeba Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 23 Nov 2022 17:02:15 +0100 Subject: [PATCH] =?UTF-8?q?Gesamtsicherheiten:=20Hinweis=20bei=20=C3=9Cber?= =?UTF-8?q?schreitung=20von=20Referenzwert!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Aviso/frmGesamtsicherheitenNEU.vb | 82 ++++++++++++++++++++++++++++--- 1 file changed, 76 insertions(+), 6 deletions(-) diff --git a/Aviso/frmGesamtsicherheitenNEU.vb b/Aviso/frmGesamtsicherheitenNEU.vb index 55c4e12..0e70032 100644 --- a/Aviso/frmGesamtsicherheitenNEU.vb +++ b/Aviso/frmGesamtsicherheitenNEU.vb @@ -20,7 +20,7 @@ Public Class frmGesamtsicherheitenNEU Public Zollsatz As Double - Public Saldo As Integer = 0 + Public SaldoNew As Double = 0 Public Neu As Boolean = False @@ -50,6 +50,7 @@ Public Class frmGesamtsicherheitenNEU Private Sub frmGesamtsicherheitNEU_Load(sender As Object, e As EventArgs) Handles MyBase.Load currentGesSichRef = New VERAG_PROG_ALLGEMEIN.cAufschubKonten(Standort) + SaldoNew = Decimal.Parse(currentGesSichRef.CalcSaldo()) lblSaldo.Text = "Saldo: €" & Decimal.Parse(currentGesSichRef.CalcSaldo()).ToString("N") Me.Text = "Gesamtsicherheit " & Standort @@ -319,7 +320,7 @@ Public Class frmGesamtsicherheitenNEU Me.warenortID = setNullToZero(dt.Rows(0).Item("gs_warenort")) End If - If Me.avisoID.ToString.Length > 0 Then lblGestellungNr.Text &= "Aviso-ID: " & Me.LKWKZ & " " + If Me.avisoID.ToString.Length > 0 Then lblGestellungNr.Text &= "Aviso-ID: " & Me.avisoID & " " If Me.LKWKZ.ToString.Length > 0 Then lblGestellungNr.Text &= "LKW-ID: " & Me.LKWKZ & " " If Me.FilialNummer.ToString.Length > 0 Then lblGestellungNr.Text &= "FilialNr: " & Me.FilialNummer & " " If Me.Abfertigungsnummer.Length > 0 Then lblGestellungNr.Text &= "AbfNr: " & Me.Abfertigungsnummer & " " @@ -419,6 +420,11 @@ Public Class frmGesamtsicherheitenNEU Private Sub btnAddSicherheit_Click(sender As Object, e As EventArgs) Handles btnAddSicherheit.Click + If checkNothingValue(txtSicherheitSicherheitsbetrag.Text, "Double") IsNot Nothing Then + Dim sichBetr As Double = Double.Parse(txtSicherheitSicherheitsbetrag.Text) + If checkSaldo(sichBetr, True) = False Then Exit Sub + End If + Dim attachPosNrToExistingATB As Boolean = False Try @@ -691,8 +697,16 @@ Public Class frmGesamtsicherheitenNEU If obj Is Nothing Then Return Nothing Else - Return Integer.Parse(obj.value) + Return Integer.Parse(CStr(obj.value)) End If + + Case "Double" + If obj Is Nothing Or obj Is DBNull.Value Then + Return Nothing + Else + Return Double.Parse(CStr(obj)) + End If + End Select @@ -719,6 +733,13 @@ Public Class frmGesamtsicherheitenNEU End Sub Private Sub btnUpdateSicherheit_Click(sender As Object, e As EventArgs) Handles btnUpdateSicherheit.Click + + If checkNothingValue(txtSicherheitSicherheitsbetrag.Text, "Double") IsNot Nothing Then + Dim sichBetr As Double = Double.Parse(txtSicherheitSicherheitsbetrag.Text) + If checkSaldo(sichBetr - Double.Parse(currentSicherheit.gs_sicherheitsbetrag)) = False Then Exit Sub + End If + + With currentSicherheit .gs_ATBNr = txtSicherheitATBNr.Text .gs_posNr = Integer.Parse(setNullToZero(txtAnzahlPos.Text)) @@ -733,6 +754,7 @@ Public Class frmGesamtsicherheitenNEU '.saldo = currentGesSichRef.Saldo .gs_atr = setNullToZero(cboSicherheitATR.SelectedItem) End With + If checkSicherheitsbetrag() = False Then Exit Sub currentSicherheit.SAVE() txtAnzahlPos.Enabled = True @@ -903,8 +925,9 @@ Public Class frmGesamtsicherheitenNEU Dim offenerSicherheitsbetragPos As Double Try - - offenerSicherheitsbetrag = calcOffenerSicherheitsbetrag() + 'If checkSaldo() = False Then + ' Return False + 'End If If (offenerSicherheitsbetrag < 0 Or offenerSicherheitsbetrag < offenerSicherheitsbetragPos) Then If vbYes = MsgBox("Der Warenwert der Positionen übersteigt den Warenwert der Gestellung!" & vbCrLf & "Trotzdem speichen?", vbYesNo) Then @@ -922,6 +945,53 @@ Public Class frmGesamtsicherheitenNEU Return ok End Function + + Private Function checkSaldo(Optional currentSBetrag As Double = 0, Optional newPosition As Boolean = False) As Boolean + + Try + + 'Dim currentSaldo As Double = Decimal.Parse(currentGesSichRef.CalcSaldo()).ToString("N") + + Dim SaldoNewTemp = SaldoNew + Dim calcSicherheiten As Double = calcSicherheitsbetragGestelle() + Dim calcSicherheitenPos As Double = calcSicherheitsbetragPos() + Dim newCalcSaldo As Double + + + If newPosition Then + newCalcSaldo = SaldoNewTemp - currentSBetrag + Else + newCalcSaldo = SaldoNewTemp - currentSBetrag + End If + + Dim referenzbetrag As Double = currentGesSichRef.brgakto_betrag + + + If SaldoNewTemp < 0 Then + MsgBox("Achtung!" & vbCrLf & " Saldo ist NEGATIV") + Return True 'Saldo ist bereits negativ! + End If + + Dim diffAbs As Double = Math.Abs(SaldoNewTemp - currentSBetrag) + + If (referenzbetrag - newCalcSaldo < 0) Then + If vbNo = MsgBox("ACHTUNG! " & vbCrLf & " Dieser Sicherheitsbetrag würde den jezigen Saldo um " & diffAbs & " übersteigen !" & vbCrLf & "Trotzdem speichen?", vbYesNo) Then + Return False + Else + Return True + End If + Return True + End If + Return True + Catch ex As Exception + MsgBox(ex.Message) + End Try + + + End Function + + + Private Function calcSicherheitsbetragPos() As Double Dim sicherheitsbetragSumPositionen As Double @@ -943,12 +1013,12 @@ Public Class frmGesamtsicherheitenNEU If currentSicherheit Is Nothing Then Exit Function sicherheitsbetragSumGestelle = CDbl(SQL.DLookup("SUM(gs_sicherheitsbetrag)", "[tblGesamtsicherheit]", "gs_gsnr ='" & currentSicherheit.gs_gsNr & "'", "AVISO")) + Return sicherheitsbetragSumGestelle End Function - Private Function calcOffenerSicherheitsbetrag() As Double Dim diff As Double = -10000