Files
AVISO/Aviso/frmGesamtsicherheitenMenuNEU.vb

437 lines
16 KiB
VB.net

Imports System.Reflection
Imports SDL
Public Class frmGesamtsicherheitenMenuNEU
Public SQL As New VERAG_PROG_ALLGEMEIN.SQL
Dim GesSichRef As VERAG_PROG_ALLGEMEIN.cGesamtsicherheitsReferenz
Public dt As DataTable
Public Property Standort As String = ""
Private Sub frmGesamtsicherheitenNEU_Menu_Load(sender As Object, e As EventArgs) Handles MyBase.Load
cbxStandort.fillWithSQL("SELECT FilialenNr, cast(FilialenNr as varchar(4)) + ' ' + Grenzstelle FROM Filialen WHERE Fil_Status='A' ORDER BY FilialenNr ", True, "FMZOLL", True)
cbxWarenort.fillWithSQL("SELECT [grz_Grenzstelle], [grz_Bezeichnung] FROM [tblGrenzstelle] WHERE [grz_Aktiv] ='1' AND [grz_Warenort] ='1' ORDER BY [grz_Reihenfolge] ", True, "AVISO", True)
Me.Text = "Gesamtsicherheiten " & Standort
frmHauptfenster.EnableDoubleBuffered(dgvListe)
GesSichRef = New VERAG_PROG_ALLGEMEIN.cGesamtsicherheitsReferenz(Standort)
lblSaldo.Text = "Saldo: €" & Decimal.Parse(GesSichRef.CalcSaldo()).ToString("N")
txtDatVon.Text = Now.ToShortDateString
txtDatBis.Text = Now.ToShortDateString
btnMonat.Text = MONAT.ToString("MMMM")
btnJahr.Text = JAHR.Year
If GesSichRef.gsr_ATR = True Then
Dim anzahlOffenerGSUeber85Tage As Integer = checkOpenATBs()
If anzahlOffenerGSUeber85Tage > 0 Then
btnOpenOver85Days.Visible = True
End If
End If
'txtDatVon.Text = Date.Today.AddDays(-30).ToString("dd.MM.yyyy")
'txtDatBis.Text = Date.Today.ToString("dd.MM.yyyy")
ShowStandort()
LoadDGV()
End Sub
Public Function LoadDGV()
Dim sqladdon As String = ""
If chkOffen.Checked Then sqladdon &= " AND gs_SicherheitsSaldo != '0,00 €'"
If cbxStandort._value <> "" Then sqladdon &= " AND gs_filialenNr = '" & cbxStandort._value.ToString & "'"
If cbxWarenort._value <> "" Then sqladdon &= " AND gs_warenort = '" & cbxWarenort._value.ToString & "'"
Dim sqlstring As String =
" select * from (Select gs_gsnr as gs_gsnr, MIN(gs_standort) as gs_standort, MIN(gs_warenort) as gs_warenort, MIN(gs_filialenNr) as gs_filialenNr, min(gs_abfertigungsNr) as gs_abfertigungsNr,
max(gs_LKWKZ) as gs_LKWKZ, min (gs_datum) as gs_datum, FORMAT(
(Select SUM( Case
when gs_art = 'Open' then (gs_sicherheitsbetrag * -1)
when gs_art = 'Close' then gs_sicherheitsbetrag
End) As gs_SicherheitsSaldo FROM [tblGesamtsicherheit] where gs_gsnr = meh.gs_gsnr
)
+
(Select SUM( Case
when gsp_art = 'Open' then (gsp_sicherheitsbetrag * -1)
when gsp_art = 'Close' then gsp_sicherheitsbetrag
End) As gs_SicherheitsSaldo FROM [tblGesamtsicherheitsPositionen] where gsp_gsnr = meh.gs_gsnr
) , 'C', 'de-DE') as gs_SicherheitsSaldo
From (select * from (select gs_gsnr as ding from [tblGesamtsicherheit] where
gs_freitext like '%" & txtSuchbegriff.Text & "%' OR
gs_abfertigungsNr like '%" & txtSuchbegriff.Text & "%' OR
gs_ATBNr like '%" & txtSuchbegriff.Text & "%' OR
gs_LKWKZ like '%" & txtSuchbegriff.Text & "%' OR
gs_warenort like '%" & txtSuchbegriff.Text & "%'
) as tb1 left join [tblGesamtsicherheit] as tb2 on tb1.ding = tb2.gs_gsnr) as meh group by gs_gsnr) as meh2
Where gs_standort = '" & Standort & "' " & sqladdon & "
AND gs_datum > '" & Date.Parse(txtDatVon.Text) & "'
AND gs_datum < '" & Date.Parse(txtDatBis.Text).AddDays(1).AddSeconds(-1) & "'"
dgvListe.SET_SQL(sqlstring, "AVISO")
dgvListe.LOAD()
With dgvListe
.SelectionMode = DataGridViewSelectionMode.FullRowSelect
.RowHeadersWidth = 6
.Columns("gs_standort").Visible = False
.Columns("gs_gsnr").HeaderText = "#"
.Columns("gs_gsnr").Width = 36
.Columns("gs_filialenNr").HeaderText = "Filiale"
.Columns("gs_filialenNr").Width = 43
.Columns("gs_abfertigungsNr").HeaderText = "Abfert.Nr."
.Columns("gs_abfertigungsNr").Width = 107
.Columns("gs_datum").Width = 112
.Columns("gs_datum").HeaderText = "Datum"
.Columns("gs_SicherheitsSaldo").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("gs_SicherheitsSaldo").HeaderText = "Sicherheitssaldo"
.Columns("gs_Warenort").Width = 96
.Columns("gs_Warenort").HeaderText = "Warenort"
.Columns("gs_LKWKZ").HeaderText = "LKW-KZ"
End With
If dgvListe.Rows.Count = 0 Then Exit Function
dt = New DataTable()
dt.Columns.Add("gs_gsnr", GetType(Integer))
dt.Columns.Add("gs_isOpen", GetType(Boolean))
For Each row As DataGridViewRow In dgvListe.Rows
If row.Cells("gs_SicherheitsSaldo").Value <> 0 Then
dt.Rows.Add(row.Cells("gs_gsnr").Value, True)
Else
dt.Rows.Add(row.Cells("gs_gsnr").Value, False)
End If
Next
'Debug
'For i As Integer = 0 To dt.Rows.Count - 1
' MsgBox("gs_nr: " & dt.Rows(i).Item("gs_gsnr").ToString & " " & "gs_isOpen: " & dt.Rows(i).Item("gs_isOpen").ToString)
'Next
For Each row As DataGridViewRow In dgvListe.Rows
If row.Cells("gs_SicherheitsSaldo").Value <> 0 Then
row.DefaultCellStyle.BackColor = Color.Red
Else
row.DefaultCellStyle.BackColor = Color.Green
End If
Next
End Function
Public Sub ShowStandort()
'lblReferenzwert.Text = "Referenzwert: €" & GesSichRef.gsr_referenzwert.ToString("N")
lblReferenzwert.Text = "Referenzwert: €" & GesSichRef.gsr_referenzwert.ToString()
lblZollsatz.Text = "Zollsatz: " & GesSichRef.gsr_zollsatz & "%"
lblSaldo.Text = "Saldo: €" & Decimal.Parse(GesSichRef.CalcSaldo()).ToString("N")
End Sub
Private Sub OpenFRM(sender As Object, e As DataGridViewCellEventArgs) Handles dgvListe.CellDoubleClick
Dim frm As New frmGesamtsicherheitenNEU
With frm
.currentGesSichRef = GesSichRef
.gessicherheitID = dgvListe.CurrentRow.Cells("gs_gsnr").Value
.Standort = Me.Standort
.datum = dgvListe.CurrentRow.Cells("gs_datum").Value
.LKWKZ = dgvListe.CurrentRow.Cells("gs_LKWKZ").Value
.FilialNummer = dgvListe.CurrentRow.Cells("gs_filialenNr").Value
.Abfertigungsnummer = dgvListe.CurrentRow.Cells("gs_abfertigungsNr").Value
.warenortID = dgvListe.CurrentRow.Cells("gs_warenort").Value
.dt = Me.dt
End With
AddHandler frm.FormClosing, Function()
GesSichRef.CalcSaldo()
ShowStandort()
LoadDGV()
Me.BringToFront()
End Function
frm.Show()
End Sub
Private Sub btnNeu_Click(sender As Object, e As EventArgs) Handles btnNeu.Click
Dim frm As New frmGesamtsicherheitenNEU
With frm
.currentGesSichRef = GesSichRef
.Standort = Me.Standort
.datum = Date.Now
.Neu = True
.dt = Me.dt
End With
AddHandler frm.FormClosing, Function()
GesSichRef.CalcSaldo()
ShowStandort()
LoadDGV()
Me.BringToFront()
End Function
frm.Show()
End Sub
Private Sub lblSaldo_Click(sender As Object, e As EventArgs) Handles lblSaldo.Click
lblSaldo.Text = "Saldo: €" & Decimal.Parse(GesSichRef.CalcSaldo()).ToString("N")
LoadDGV()
End Sub
Private Sub chkOffen_CheckedChanged(sender As Object, e As EventArgs)
If Me.Visible Then LoadDGV()
End Sub
Private Sub Keypresses(sender As Object, e As System.Windows.Forms.KeyPressEventArgs)
Select Case Asc(e.KeyChar)
Case 48 To 57, 8, 46, 58, 32, 44, 65 To 90, 97 To 122
' Zahlen, Backspace, . und : zulassen
Case Else
' alle anderen Eingaben unterdrücken
e.Handled = True
End Select
End Sub
Private Sub resetSearchfields_Click(sender As Object, e As EventArgs) Handles btnResetFilter.Click
txtSuchbegriff.Text = "" : chkOffen.Checked = True
txtDatVon.Text = Date.Today.AddDays(-30).ToString("dd.MM.yyyy")
txtDatBis.Text = Date.Today.ToString("dd.MM.yyyy")
cbxStandort._value = ""
cbxWarenort._value = ""
btnSucheStarten_Click(sender, e)
End Sub
Private Sub btnSucheStarten_Click(sender As Object, e As EventArgs) Handles btnSucheStarten.Click
Try
Date.Parse(txtDatVon.Text)
Date.Parse(txtDatBis.Text)
If Me.Visible Then LoadDGV()
Catch ex As Exception
MsgBox("Datum VON und/oder BIS konnte nicht konvertiert werden.")
End Try
End Sub
'Private Sub FlatButton2_Click(sender As Object, e As EventArgs)
' txtDatVon.Text = Date.Parse("01.01.1970")
' txtDatBis.Text = Date.Today.ToString("dd.MM.yyyy")
'End Sub
Private Sub ExportCSVToolStripMenuItem_Click(sender As Object, e As EventArgs)
csvexport(dgvListe)
End Sub
Public Shared Function csvexport(quelldgv As DataGridView)
Dim savefiledialog As New SaveFileDialog
Dim firstin As String
Dim out As String
Dim in2 As String
Dim header As String
savefiledialog.Filter = "CSV files (*.csv)|*.CSV"
savefiledialog.InitialDirectory = "C:\Verag"
savefiledialog.ShowDialog()
Try
For r As Integer = 0 To quelldgv.Rows.Count - 1
For c As Integer = 0 To quelldgv.Columns.Count
'test &= r & c & vbCrLf
Try
'test &= Replace(quelldgv.Rows(r).Cells(c).Value.ToString, vbCrLf, "vbCrlLf")
firstin = quelldgv.Rows(r).Cells(c).Value.ToString
'in2 = """" & firstin & """" & ";"
in2 = firstin & ";"
out &= Replace(in2, vbCrLf, "##vbCrLf##")
out = Replace(out, "", "")
Catch ex As Exception
out &= ""
End Try
Next
out &= "nZ"
Next
For c As Integer = 0 To quelldgv.Columns.Count - 1
header &= quelldgv.Columns(c).Name & ";"
Next
out = Replace(out, "nZ", vbCrLf)
'MsgBox(out)
Using sw As New IO.StreamWriter(savefiledialog.FileName)
sw.WriteLine(header)
sw.WriteLine(out)
End Using
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Function
Dim MONAT As Date = CDate("01." & Now.Month & "." & Now.Year) '.AddMonths(-1)
Dim TAG As Date = CDate(Now.ToShortDateString)
Dim JAHR As Date = CDate("01.01." & Now.Year)
Sub initBtns(MonatJahr)
btnMonat.Text = MONAT.ToString("MMMM")
btnJahr.Text = JAHR.Year
Select Case MonatJahr
Case "Monat"
DateTimePicker1.Value = MONAT
DateTimePicker2.Value = MONAT.AddMonths(1).AddDays(-1)
Case "Jahr"
DateTimePicker1.Value = JAHR
DateTimePicker2.Value = JAHR.AddYears(1).AddDays(-1)
'End If
Case "Tag"
DateTimePicker1.Value = TAG
DateTimePicker2.Value = TAG
If TAG = Now.ToShortDateString Then
btnTag.Text = "Heute"
ElseIf TAG = Now.AddDays(-1).ToShortDateString Then
btnTag.Text = "Gestern"
ElseIf TAG = Now.AddDays(-2).ToShortDateString Then
btnTag.Text = "Vorgestern"
ElseIf TAG = Now.AddDays(1).ToShortDateString Then
btnTag.Text = "Morgen"
Else
btnTag.Text = TAG.ToString("dd.MM")
End If
'End If
Case ""
DateTimePicker1.Value = ("01." & Now.Month & "." & Now.Year)
DateTimePicker2.Value = Now
End Select
End Sub
Private Sub btnJahr_Click(sender As Object, e As EventArgs) Handles btnJahr.Click
initBtns("Jahr")
End Sub
Private Sub btnPlusJahr_Click(sender As Object, e As EventArgs) Handles btnBisJahr.Click
JAHR = JAHR.AddYears(1)
initBtns("Jahr")
End Sub
Private Sub btnMinusJahr_Click(sender As Object, e As EventArgs) Handles btnVonJahr.Click
JAHR = JAHR.AddYears(-1)
initBtns("Jahr")
End Sub
Private Sub btnMonat_Click(sender As Object, e As EventArgs) Handles btnMonat.Click
initBtns("Monat")
End Sub
Private Sub btnPlusMonat_Click(sender As Object, e As EventArgs) Handles btnBisMonat.Click
MONAT = MONAT.AddMonths(1)
initBtns("Monat")
End Sub
Private Sub btnMinusMonat_Click(sender As Object, e As EventArgs) Handles btnVonMonat.Click
MONAT = MONAT.AddMonths(-1)
initBtns("Monat")
End Sub
Private Sub btnTag_Click(sender As Object, e As EventArgs) Handles btnTag.Click
initBtns("Tag")
End Sub
Private Sub btnMinusTag_Click(sender As Object, e As EventArgs) Handles btnVonTag.Click
TAG = TAG.AddDays(-1)
initBtns("Tag")
End Sub
Private Sub btnPlusTag_Click(sender As Object, e As EventArgs) Handles btnBisTag.Click
TAG = TAG.AddDays(1)
initBtns("Tag")
End Sub
Private Sub DateTimePicker1_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker1.ValueChanged
txtDatVon._value = CDate(sender.value).ToShortDateString
btnSucheStarten_Click(sender, e)
End Sub
Private Sub DateTimePicker2_ValueChanged(sender As Object, e As EventArgs) Handles DateTimePicker2.ValueChanged
txtDatBis._value = CDate(sender.value).ToShortDateString
btnSucheStarten_Click(sender, e)
End Sub
Function setNullToZero(s As String, Optional type As String = "")
If s = "" Then
Dim zero As Double = 0
Return zero
Else
Return s
End If
End Function
Private Sub btnOpenOver85Days_Click(sender As Object, e As EventArgs) Handles btnOpenOver85Days.Click
resetSearchfields_Click(sender, e)
chkOffen.Checked = True
DateTimePicker1.Value = Now.AddYears(-20)
DateTimePicker2.Value = Now.AddDays(-85)
btnSucheStarten_Click(sender, e)
End Sub
Private Function checkOpenATBs() As Integer
Dim anzahlOffenerGSUeber85Tage As Integer
Dim dtNew As New DataTable
Dim sqlstring As String = "select count(*) as anzahlOffeneATBs from (Select gs_gsnr as gs_gsnr, MIN(gs_standort) as gs_standort,min (gs_datum) as gs_datum,
(Select SUM( Case
when gs_art = 'Open' then (gs_sicherheitsbetrag * -1)
when gs_art = 'Close' then gs_sicherheitsbetrag
End) As gs_SicherheitsSaldo FROM [tblGesamtsicherheit] where gs_gsnr = meh.gs_gsnr
)
+
(Select SUM( Case
when gsp_art = 'Open' then (gsp_sicherheitsbetrag * -1)
when gsp_art = 'Close' then gsp_sicherheitsbetrag
End) As gs_SicherheitsSaldo FROM [tblGesamtsicherheitsPositionen] where gsp_gsnr = meh.gs_gsnr
) as Sicherheitssaldo
From [tblGesamtsicherheit] as meh group by gs_gsnr) as meh2
Where gs_standort = '" & Standort & "' AND Sicherheitssaldo != '0' AND gs_datum < '" & Date.Now().AddDays(-85) & "'"
dtNew = SQL.loadDgvBySql(sqlstring, "AVISO", 100, True)
If (dtNew.Rows(0).Item(0) IsNot DBNull.Value) Then
anzahlOffenerGSUeber85Tage = dtNew.Rows(0).Item(0)
If anzahlOffenerGSUeber85Tage > 0 Then
MsgBox("Es sind " & anzahlOffenerGSUeber85Tage & " ATBs offen, die älter als 85 Tage sind!")
End If
Return anzahlOffenerGSUeber85Tage
End If
End Function
Private Sub ExportCSVToolStripMenuItem_Click_1(sender As Object, e As EventArgs) Handles ExportCSVToolStripMenuItem.Click
csvexport(dgvListe)
End Sub
End Class