Files
SDL/SDL/kassenbuch/frmNacherfassungLeihgeld.vb

805 lines
39 KiB
VB.net

Imports GrapeCity.ActiveReports
Public Class frmNacherfassungLeihgeld
Dim cOptionenDAL As New cOptionenDAL
Public FMZollPersID As Integer = -1
Dim PERSONAL As cPersonal
Dim PERSONAL_LG As cPersonal
Public BELEG As EABeleg
Public KASSE As cRKSV_Kasse
Public AvisoID = Nothing
Public Event LOADED()
Dim formLoaded = False
' Dim allowPrint = False
Dim newEntry = True
Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal)
Me.PERSONAL = PERSONAL
Me.PERSONAL_LG = PERSONAL_LG
InitializeComponent()
End Sub
Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, Mandant As String, Niederlassung As String, Benutzer As Integer, BelegNr As Integer, BelegDat As Date)
InitializeComponent()
Me.PERSONAL = PERSONAL
Me.PERSONAL_LG = PERSONAL_LG
Me.BELEG = New EABeleg("LOAD", Mandant, Niederlassung, Benutzer, BelegNr, BelegDat)
End Sub
Dim SQL As New SQL
Private Sub frmNacherfassungLeihgeld_Load(sender As Object, e As EventArgs) Handles MyBase.Load
txtDatum.Text = Now.ToShortDateString
cProgramFunctions.initDrucker(cboPrinter)
cProgramFunctions.initBONDrucker(cboPrinterProvisionBeleg, "EPSON")
cboProvisionStaffelArt.fillWithSQL("SELECT [PreislistenNr],[PreislistenBez] FROM [VERAG].[dbo].[tblPreislisten] WHERE Art='E' ORDER BY Preislistenbez", False, "FMZOLL", False)
'cbxProvision.Checked = True
If BELEG Is Nothing Then
BELEG = New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID)
BELEG.Beleg_TYP = "L"
BELEG.Belegart = "2" 'AUSGANG
Else
If IsNumeric(BELEG.rksv_id) Then KASSE = New cRKSV_Kasse(BELEG.rksv_id)
' If BELEG.gebucht Then
btnPrint.Text = "Beleg-Kopie" & vbNewLine & "drucken"
init()
cboFiliale.Enabled = False
txtAbfertigungsnummer.Enabled = False
' txtUnterNr.Enabled = False
txtAuftraggeber.Enabled = False
MyTextBoxLKWKz.Enabled = False
txtFahrer.Enabled = False
txtPassnummer.Enabled = False
txtBarzahlungsbetrag.Enabled = False
' cboSachbearbeiter.Enabled = False
' txtBemerkung.Enabled = False
Panel1.Enabled = False
txtKdAuftragsnummer.Enabled = False
'End If
newEntry = False
End If
cboProvisionStaffelArt.changeItem("5")
' Dim filialen = "4806"
Dim stammfiliale = "4803"
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "IMEX"
cboProvisionStaffelArt.changeItem("14")
stammfiliale = "5501"
cboFiliale.fillWithSQL("SELECT FilialenNr, cast(FilialenNr as varchar(4)) + ' ' + Grenzstelle FROM Filialen WHERE Fil_Status='A' AND FilialenNr IN (5501) ORDER BY FilialenNr ", False, "FMZOLL", True)
Case "ATILLA"
stammfiliale = "4801"
cboFiliale.fillWithSQL("SELECT FilialenNr, cast(FilialenNr as varchar(4)) + ' ' + Grenzstelle FROM Filialen WHERE Fil_Status='A' AND FilialenNr IN (4801) ORDER BY FilialenNr ", False, "FMZOLL", True)
Case Else
cboFiliale.fillWithSQL("SELECT FilialenNr, cast(FilialenNr as varchar(4)) + ' ' + Grenzstelle FROM Filialen WHERE Fil_Status='A' AND FilialenNr IN (4803,5103,5003,5303) ORDER BY FilialenNr ", False, "FMZOLL", True)
Select Case PERSONAL.Niederlassung
Case "SUA" : stammfiliale = "4801" ' "4801,4803,4806,5103,5003,5303" : stammfiliale = 4801
Case "SUB" : stammfiliale = "4803" '"4801,4803,4806,5103,5003,5303" : stammfiliale = 4806
Case "WAI" : stammfiliale = "5103" '"4801,4803,4806,5103,5003,5303" : stammfiliale = 4806
Case "NKD" : stammfiliale = "5303" '"4801,4803,4806,5103,5003,5303" : stammfiliale = 4806
Case "SBG" : stammfiliale = "5003" '"4801,4803,4806,5103,5003,5303" : stammfiliale = 4806
Case "NEU" : stammfiliale = "4819" '"4801,4803,4806,5103,5003,5303" : stammfiliale = 4806
' Case Else : filialen = "4806" '"4801,4803,4806,5103,5003,5303" : stammfiliale = 4806
End Select
End Select
'If AvisoId <= 0 Then MsgBox("Fehler") : Me.Close() : Exit Sub
'cboFiliale.fillWithSQL("SELECT FilialenNr, cast(FilialenNr as varchar(4)) + ' ' + Grenzstelle FROM Filialen WHERE Fil_Status='A' AND FilialenNr IN (" & filialen & ") ORDER BY FilialenNr ", False, "FMZOLL", True)
' cboSachbearbeiter.fillWithSQL("SELECT ID,cast(ID as nvarchar(3)) +' ' + Name as Name FROM Personal WHERE [Status]<>'L' ORDER BY Name ", False, "FMZOLL", True)
' If cboSachbearbeiter.Text = "" Then
' If FMZollPersID > 0 Then cboSachbearbeiter._value = FMZollPersID
' End If
cboFiliale.changeItem(stammfiliale)
'If stammfiliale <> "" Then
' cboFiliale.changeItem(CStr(stammfiliale))
' End If
txtAuftraggeber.initKdBox(Me, txtAuftraggeberKdNr)
kdFrachtführer.initKdBox(Me, ksFrachtführerKdNr)
AddHandler txtAuftraggeber.PropertyChanged, Sub()
Label11.ForeColor = Color.Black
Label11.Font = New Font(Me.Font, FontStyle.Regular)
If newEntry Then
If txtAuftraggeber.KdData_KUNDE_ERW IsNot Nothing Then
' If txtAuftraggeber.KdData_KUNDE_ERW.kde_VerwendetAuftragsNr IsNot Nothing Then
If txtAuftraggeber.KdData_KUNDE_ERW.kde_VerwendetAuftragsNr Then
Label11.ForeColor = Color.Red
Label11.Font = New Font(Me.Font, FontStyle.Bold)
' End If
End If
If txtAuftraggeber.KdData_KUNDE_ERW.kde_VerwendetAuftragsNr Then
If txtKdAuftragsnummer.Text = "" Then txtKdAuftragsnummer.Text = If(txtAuftraggeber.KdData_KUNDE_ERW.kde_FixeAuftragsNr, "")
End If
If txtAuftraggeber.KdData_KUNDE_ERW.kde_Leihgeld_Provision IsNot Nothing Then
cbxProvision.Checked = True
cboProvisionStaffelArt.changeItem(If(txtAuftraggeber.KdData_KUNDE_ERW.kde_Leihgeld_ProvisionPreisstaffel, ""))
cboProvisionStaffel.changeItem(If(txtAuftraggeber.KdData_KUNDE_ERW.kde_Leihgeld_Provision, ""))
If txtAuftraggeber.KdData_KUNDE_ERW.kde_Leihgeld_ProvisionAuftraggeber IsNot Nothing Then
txtAuftrProvision._value = If(txtAuftraggeber.KdData_KUNDE_ERW.kde_Leihgeld_ProvisionAuftraggeber, "")
cbxProvisionAuftraggeber.Checked = True
End If
End If
End If
End If
End Sub
End Sub
Sub init()
If BELEG.FilialenNr > 0 Then cboFiliale.Text = BELEG.FilialenNr
If BELEG.AbfertigungsNr > 0 Then txtAbfertigungsnummer.Text = BELEG.AbfertigungsNr
'txtUnterNr.Text =
txtDatum.Text = BELEG.BelegDat.ToShortDateString
btnNeueAbfertigungNrVergeben.Visible = False
MyTextBoxLKWKz.Text = BELEG.LKW_Kennzeichen
txtFahrer.Text = BELEG.Fahrer
txtPassnummer.Text = BELEG.Passnummer
Dim sum As Double = 0
For Each p In BELEG.POS : sum += p.Betrag : Next
txtBarzahlungsbetrag.Text = sum
txtKdAuftragsnummer.Text = If(BELEG.Auftraggeber_KdAuftragsnummer, "")
txtAuftrProvision._value = If(BELEG.Auftraggeber_Provision, "")
' cboSachbearbeiter.changeItem(BELEG.Benutzer)
'txtBemerkung.Text = BELEG
If BELEG.FrachtführerKundenNr = BELEG.KundenNr Then cbxFrachter.Checked = True
txtAuftraggeber.Text = BELEG.Ordnungsbegriff
If BELEG.KundenNr > 0 Then txtAuftraggeber.KdNr = BELEG.KundenNr
kdFrachtführer.Text = BELEG.Frachtführer
If BELEG.FrachtführerKundenNr > 0 Then kdFrachtführer.KdNr = BELEG.FrachtführerKundenNr
End Sub
Function validValues() As Boolean
If Not IsNumeric(cboFiliale._value) Then MsgBox("Bitte die Filiale angeben!") : Return False
If cboFiliale._value <= 0 Then MsgBox("Bitte die Filiale angeben!") : Return False
If Not IsNumeric(txtAbfertigungsnummer.Text) Then MsgBox("Bitte die Abfertigungsnummer angeben!") : Return False
If txtAbfertigungsnummer.Text <= 0 Then MsgBox("Bitte die Abfertigungsnummer angeben!") : Return False
If txtAuftraggeber.Text = "" Then MsgBox("Bitte den Auftraggeber angeben!") : Return False
If MyTextBoxLKWKz.Text = "" Then MsgBox("Bitte das LKW-Kennzeichen angeben!") : Return False
If txtBarzahlungsbetrag.Text = "" Then MsgBox("Bitte den Betrag angeben!") : Return False
If cbxProvision.Checked Then
If Not IsNumeric(cboProvisionStaffelArt._value) Then MsgBox("Provision: Preisliste auswählen!") : Return False
If Not IsNumeric(cboProvisionStaffel._value) Then MsgBox("Provision: Leistung auswählen!") : Return False
If Not IsNumeric(cboProvisionBetrag._value) Then MsgBox("Provision: Betrag auswählen!") : Return False
If IsNumeric(cboProvisionBetrag._value) AndAlso cboProvisionBetrag._value <= 0 Then MsgBox("Bitte Provisionsbetrag angeben!") : Return False
If IsNumeric(cboProvisionBetrag._value) AndAlso cboProvisionBetrag._value < 10 Then Return (vbYes = MsgBox("Provision: Betrag ist kleiner als 10€. Möchten Sie fortfahren?", vbYesNoCancel))
End If
' If cboSachbearbeiter.Text = "" Then MsgBox("Bitte den Sachbearbeiter angeben!") : Return False
Return True
End Function
Sub datatoBeleg()
BELEG.BelegDat = Now
BELEG.KundenNr = IIf(txtAuftraggeber.KdNr > 0, txtAuftraggeber.KdNr, Nothing)
BELEG.Ordnungsbegriff = (txtAuftraggeber.Text).Trim
BELEG.LKW_Id = AvisoID
BELEG.LKW_Beleg = False
If BELEG.Ordnungsbegriff.Length > 40 Then
BELEG.Name1 = BELEG.Ordnungsbegriff.Substring(0, 40)
Else
BELEG.Name1 = BELEG.Ordnungsbegriff
End If
BELEG.Name2 = ""
If txtAuftraggeber.KdNr > 0 AndAlso txtAuftraggeber.KdData_ADRESSEN IsNot Nothing Then ' Überschreiben wenn vorhanden
Try
BELEG.Name1 = IIf(txtAuftraggeber.KdData_ADRESSEN.Name_1 IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.Name_1, BELEG.Ordnungsbegriff)
BELEG.Name2 = IIf(txtAuftraggeber.KdData_ADRESSEN.Name_2 IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.Name_2, "")
BELEG.Straße = IIf(txtAuftraggeber.KdData_ADRESSEN.Straße IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.Straße, "")
BELEG.LandKz = IIf(txtAuftraggeber.KdData_ADRESSEN.LandKz IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.LandKz, "")
BELEG.Ort = IIf(txtAuftraggeber.KdData_ADRESSEN.Ort IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.Ort, "")
BELEG.PLZ = IIf(txtAuftraggeber.KdData_ADRESSEN.PLZ IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.PLZ, "")
BELEG.UstIdKz = IIf(txtAuftraggeber.KdData_ADRESSEN.UstIdKz IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.UstIdKz, "")
BELEG.UstIdNr = IIf(txtAuftraggeber.KdData_ADRESSEN.UstIdNr IsNot Nothing, txtAuftraggeber.KdData_ADRESSEN.UstIdNr, "")
Catch ex As Exception
End Try
End If
BELEG.LKW_Kennzeichen = MyTextBoxLKWKz.Text.Trim.ToUpper
BELEG.Fahrer = txtFahrer.Text
BELEG.Passnummer = txtPassnummer.Text
BELEG.FrachtführerKundenNr = IIf(kdFrachtführer.KdNr > 0, kdFrachtführer.KdNr, Nothing)
BELEG.Frachtführer = (kdFrachtführer.Text).Trim
BELEG.Auftraggeber_KdAuftragsnummer = If(txtKdAuftragsnummer.Text <> "", txtKdAuftragsnummer.Text, Nothing)
BELEG.Auftraggeber_Provision = If(txtAuftrProvision._value <> "", CDbl(txtAuftrProvision._value), Nothing)
BELEG.Steuerschlüssel = 0
BELEG.SgutKompl = Nothing
BELEG.FilialenNr = IIf(IsNumeric(cboFiliale._value), cboFiliale._value, -1)
BELEG.AbfertigungsNr = IIf(IsNumeric(txtAbfertigungsnummer.Text), txtAbfertigungsnummer.Text, -1)
If PERSONAL.isLeihgeldkasse AndAlso PERSONAL_LG IsNot Nothing Then
BELEG.Benutzer_LG = PERSONAL_LG.ID
End If
End Sub
Public Sub AddPOS()
' Dim anz = IIf(IsNumeric(txtAnzahl.Text), txtAnzahl.Text, 1)
Dim p As EABelegPositionen
' cboSteuerschlüssel.changeItem(2512)
p = New EABelegPositionen
p.Mandant = PERSONAL.Mandant
p.Niederlassung = PERSONAL.Niederlassung
p.Benutzer = PERSONAL.ID
'p.Benutzer = BenutzerNr
p.BelegDat = BELEG.BelegDat
p.BelegNr = BELEG.BelegNr
p.PreislistenNr = 7
p.PreislistenPos = 1
p.LeistungsNr = 110
p.LeistungsBez = "AUSZAHLUNG"
p.Leistungsbeschreibung = "Leihgeld Auszahlungsbeleg mit Pos.Nr."
p.Preis = IIf(IsNumeric(txtBarzahlungsbetrag._value), txtBarzahlungsbetrag._value, 0)
p.Abfertigungsart = 9
p.Anzahl = 1
p.Betrag = p.Anzahl * p.Preis
BELEG.POS.Add(p)
' cntr.BackColor = Color.Yellow
End Sub
Private Sub btnPrint_Click(sender As Object, e As EventArgs) Handles btnPrint.Click
Try
If BELEG.gebucht Or BELEG.gebuchtStorno Then
If BELEG.rksv_id > 0 Then KASSE.LOAD(BELEG.rksv_id)
cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG")
If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT")
Else
If cRKSV.isforbiddenDate Then
MsgBox("Die Kasse wird am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte veruchen Sie den Vorgang nach Mitternacht erneut.")
Exit Sub
End If
If btnNeueAbfertigungNrVergeben.Visible Then btnNeueAbfertigungNrVergeben.PerformClick()
Me.Cursor = Cursors.WaitCursor
If PERSONAL.cRKSV_KasseID <= 0 Then MsgBox("Keine Stamm-Kasse gefunden!") : Me.Cursor = Cursors.Default : Exit Sub
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
KASSE = New cRKSV_Kasse(6)
Else
KASSE = New cRKSV_Kasse(PERSONAL.cRKSV_KasseID)
'Laden der Kasse anhand der Auswahlbox
End If
If Not validValues() Then Me.Cursor = Cursors.Default : Exit Sub
datatoBeleg() 'Daten werden in "BELEG" geldaen
BELEG.POS.Clear()
AddPOS()
' If Not allowPrint Then Me.Cursor = Cursors.Default : Exit Sub
If Not vbYes = MsgBox("Beim Druckvorgang werden die Beleg-Daten ins Kassenbuch eingetragen. Danach sind keine Änderungen mehr möglich." & vbNewLine & vbNewLine & "Soll der Vorgang gestartet werden?", vbYesNoCancel) Then Me.Cursor = Cursors.Default : Exit Sub
Dim summeNETTO As Double = 0
For Each p In BELEG.POS : summeNETTO += p.Betrag : Next
Dim summeBRUTTO = summeNETTO
Dim steuersatz As Double = SQL.getValueTxtBySql("SELECT isnull(tblSteuersätze.Steuersatz,0) FROM tblSteuersätze WHERE tblSteuersätze.Nr='" & BELEG.Steuerschlüssel & "' ", "FMZOLL")
If IsNumeric(steuersatz) Then summeBRUTTO += (summeNETTO * steuersatz)
Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler
Dim TESTBUCHUNG = False
Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, summeBRUTTO))
Dim JournalNr = 0
If Not cRKSV.insertKB(PERSONAL, BELEG, KASSE.rksv_id, RKSV_Beleg_Id, (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv), JournalNr, KASSE.rksv_firma, -1) Then
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
If RKSV_Beleg_Id < 0 Then
BELEG = cRKSV.STORNO(BELEG, "Programmfehler bei der Erstellung der RKSV-Beleg-Id.", KASSE.rksv_firma)
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
' QR_Image = Nothing
Dim QR_CodeString As String = ""
Dim LastJWS As String = ""
If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt
Dim answer = ""
If Not cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
' Me.Cursor = Cursors.Default
'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
' MsgBox("Programmfehler bei der digitalen Signatur.")
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
End If
If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV gilt
Dim answer = ""
If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
If Not TESTBUCHUNG Then
KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
' Me.Cursor = Cursors.Default
'BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
' MsgBox("Programmfehler bei der digitalen Signatur.")
Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
If KASSE.rksv_KassaGuid = "KASSE_01" Then
BELEG.rksv_jws = Nothing
BELEG.rksv_qr = Nothing
End If
'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
End If
'RKSV-Daten beim Beleg ergänzen:
BELEG.rksv_jws = LastJWS
BELEG.rksv_qr = QR_CodeString
BELEG.rksv_BelegId = RKSV_Beleg_Id
BELEG.rksv_id = KASSE.rksv_id
BELEG.rksv_umsatz = summeBRUTTO
BELEG.rksv_aktiv = (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv)
BELEG.SAVE()
'Zuerst, damit Provisionsbetrag auf Aktendeckel gedruckt wird...
Dim barbetrag As Double = 0
Dim BelegNrProvision = 0
If cbxProvision.Checked Then
printProvision(barbetrag, BelegNrProvision)
End If
'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken
cRKSV.printKundenBelegLG(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString, "LG") 'Beleg drucken
If cboPrintAktendeckel.Checked Then printLGAktendeckel("PRINT", barbetrag, BelegNrProvision)
'nur bei VERAG die fragen
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" OrElse vbYes = MsgBox("Daten ins Speditionsbuch eintragen?", vbYesNoCancel) Then
Dim abbruch As Boolean = False
If cRKSV.SpedBuchExists(BELEG) Then
If vbYes = MsgBox("Speditionsbuch Eintrag existiert bereits - Daten überschreiben?", vbYesNoCancel) Then
abbruch = True
End If
End If
If Not abbruch Then
cRKSV.insertToSpedBuch(PERSONAL, PERSONAL_LG, BELEG, AvisoID, , barbetrag, BelegNrProvision)
If Not cRKSV.SpedBuchExists(BELEG) Then
MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!")
Else
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then 'nur bei VERAG
If vbYes = MsgBox("Speditionsbuch anzeigen?", vbYesNoCancel) Then
Dim frmNacherfassung As New frmNacherfassungNEU()
frmNacherfassung.srchFiliale = BELEG.FilialenNr
frmNacherfassung.srchAbfertigungsnummer = BELEG.AbfertigungsNr
frmNacherfassung.srchUnterNr = 0
frmNacherfassung.ShowDialog(Me)
End If
End If
End If
End If
End If
Me.Close()
Me.DialogResult = Windows.Forms.DialogResult.OK
Me.Cursor = Cursors.Default
End If
Catch ex As Exception
Me.Cursor = Cursors.Default
MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!" & If(BELEG.rksv_BelegId > 0, "ACHTUNG: BELEG BEREITS SIGNIERT!!!", "") & vbNewLine & vbNewLine & ex.Message & ex.StackTrace)
Me.Close()
End Try
End Sub
Function printProvision(ByRef barBetrag As Double, ByRef BelegNrProvision As Integer) As Boolean
printProvision = False
Dim BELEG_Prov As New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID)
'lblRgNr.Text = "12345 / TR"
BELEG_Prov.BelegDat = BELEG.BelegDat
BELEG_Prov.Beleg_TYP = "K"
BELEG_Prov.KundenNr = BELEG.FrachtführerKundenNr
BELEG_Prov.Ordnungsbegriff = BELEG.Frachtführer
BELEG_Prov.LandKz = BELEG.LandKz
BELEG_Prov.Ort = BELEG.Ort
BELEG_Prov.PLZ = BELEG.PLZ
BELEG_Prov.UstIdKz = BELEG.UstIdKz
BELEG_Prov.UstIdNr = BELEG.UstIdNr
BELEG_Prov.Frachtführer = BELEG.Frachtführer
BELEG_Prov.FrachtführerKundenNr = BELEG.FrachtführerKundenNr
BELEG_Prov.Fahrer = BELEG.Fahrer
BELEG_Prov.LKW_Kennzeichen = BELEG.LKW_Kennzeichen
BELEG_Prov.Steuerschlüssel = 0 'BELEG.Steuerschlüssel
BELEG_Prov.FilialenNr = BELEG.FilialenNr
BELEG_Prov.AbfertigungsNr = BELEG.AbfertigungsNr
BELEG_Prov.LKW_Id = BELEG.LKW_Id
'BELEG_Prov.LKW_Beleg = BELEG.LKW_Beleg
BELEG_Prov.LKW_Beleg = True ' Sonst Problem mit AbfertigungsNr
If PERSONAL.isLeihgeldkasse AndAlso PERSONAL_LG IsNot Nothing Then
BELEG_Prov.Benutzer_LG = PERSONAL_LG.ID
End If
Dim BELEG_Prov_POS = New List(Of EABelegPositionen)
Dim p = New EABelegPositionen
p.Mandant = PERSONAL.Mandant
p.Niederlassung = PERSONAL.Niederlassung
p.Benutzer = PERSONAL.ID
'p.Benutzer = BenutzerNr
p.BelegDat = Now
p.BelegNr = BELEG.BelegNr
p.PreislistenNr = cboProvisionStaffelArt._value
p.PreislistenPos = cboProvisionStaffel._value
Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [VERAG].[dbo].[tblPreislistenpositionen] where PreislistenNr='" & p.PreislistenNr & "' and PreislistenPos='" & p.PreislistenPos & "'", "FMZOLL")
If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then
p.LeistungsNr = dt.Rows(0)("LeistungsNr")
p.LeistungsBez = dt.Rows(0)("LeistungsBez")
p.Leistungsbeschreibung = dt.Rows(0)("Leistungsbeschreibung")
End If
p.Preis = cboProvisionBetrag._value
p.Abfertigungsart = 9
p.Anzahl = 1
p.Betrag = p.Anzahl * p.Preis
BELEG_Prov_POS.Add(p)
Dim f As New frmBelegNeu(PERSONAL, Nothing, "E")
's f.Visible = False
f.defaultPrinter = cboPrinterProvisionBeleg.Text
f.warnClose = False
AddHandler f.Shown, Sub()
If f.AddLeihgeld(True, BELEG_Prov, BELEG_Prov_POS) Then
End If
End Sub
f.WindowState = FormWindowState.Minimized
If f.ShowDialog() Then
barBetrag = f.BELEG.rksv_umsatz
BelegNrProvision = f.BELEG.rksv_BelegId
printProvision = f.printErfolgreich
End If
' f.Close()
End Function
Sub printLGAktendeckel(art, Optional barbetrag = Nothing, Optional BelegNrProvision = Nothing)
Try
Dim imgpath = ""
Dim resPath As String = System.IO.Path.GetFullPath(Application.StartupPath & "\Resources\")
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "IMEX" : imgpath = resPath & "IMEX.png"
Case "ATILLA" : imgpath = resPath & "SUB.png"
Case Else
Select Case PERSONAL.Niederlassung
Case "SUB" : imgpath = resPath & "SUB.png"
Case "WAI" : imgpath = resPath & "WAI.png"
Case "NKD" : imgpath = resPath & "NKD.png"
Case "SBG" : imgpath = resPath & "SBG.png"
Case Else
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_niederlassung
Case "SUB" : imgpath = resPath & "SUB.png"
Case "WAI" : imgpath = resPath & "WAI.png"
Case "NKD" : imgpath = resPath & "NKD.png"
Case "SBG" : imgpath = resPath & "SBG.png"
Case Else : imgpath = resPath & "SUB.png"
End Select
End Select
End Select
Dim VALUES As New Gemeinsames.rptSendungenValues
VALUES.Abfertigungsart = "LEIHGELD Auszahlung"
VALUES.FilialeNr = BELEG.FilialenNr
VALUES.Abfertigungsnummer = BELEG.AbfertigungsNr
VALUES.Auftraggeber_KdNr = BELEG.KundenNr
VALUES.Auftraggeber_Firma = BELEG.Name1 & " " & BELEG.Name2
VALUES.Frachtfuehrer_KdNr = BELEG.FrachtführerKundenNr
VALUES.Frachtfuehrer_Firma = BELEG.Frachtführer
VALUES.KdAuftrNr = If(BELEG.Auftraggeber_KdAuftragsnummer, "")
VALUES.Auftraggeber_Leistung1 = "Leihgeld"
Dim betrag As Double = 0
For Each p In BELEG.POS
betrag += p.Preis
Next
VALUES.Auftraggeber_Betrag = CDbl(betrag).ToString("N2")
If If(BELEG.Auftraggeber_Provision, 0) > 0 Then
VALUES.Auftraggeber_Leistung2 = "Provision Erstattung"
VALUES.Auftraggeber_Betrag2 = CDbl(-1 * betrag * BELEG.Auftraggeber_Provision).ToString("N2")
End If
VALUES.LKWKennzeichen = BELEG.LKW_Kennzeichen
VALUES.Anmerkungen = "Fahrername: " & BELEG.Fahrer & vbNewLine & "Passnummer: " & BELEG.Passnummer & vbNewLine & (If(BELEG.DruckDatumUhrzeit IsNot Nothing, vbNewLine & "Beleg-Datum: " & BELEG.DruckDatumUhrzeit, "Beleg-Datum: " & BELEG.BelegDat.ToShortDateString))
' VALUES.Ankunft = BELEG.BelegDat.ToShortDateString
' If BELEG.DruckDatumUhrzeit IsNot Nothing Then VALUES.Abfahrt = (BELEG.DruckDatumUhrzeit)
VALUES.Frachtfuehrer_Bar_BelegNr = BELEG.rksv_BelegId
VALUES.Frachtfuehrer_Bar_Betrag = (betrag * -1).ToString("N2")
If barbetrag IsNot Nothing AndAlso IsNumeric(barbetrag) Then VALUES.Frachtfuehrer_Bar_Betrag2 = CDbl(barbetrag).ToString("N2")
If BelegNrProvision IsNot Nothing AndAlso IsNumeric(BelegNrProvision) Then VALUES.Frachtfuehrer_Bar_BelegNr2 = CInt(BelegNrProvision) '& "/"
Dim barcode As Image = Code128Rendering.MakeBarcodeImage("/" & BELEG.FilialenNr & "-" & BELEG.AbfertigungsNr & "-0/", 1, True, 25)
barcode.RotateFlip(RotateFlipType.Rotate90FlipNone)
Dim barcodeLKW As Image = Nothing
If AvisoID IsNot Nothing Then barcodeLKW = Code128Rendering.MakeBarcodeImage("/" & AvisoID & "/", 1, True, 20)
If barcodeLKW IsNot Nothing Then VALUES.barcodeLKW = barcodeLKW
If barcode IsNot Nothing Then VALUES.barcodeSendung = barcode
Dim rpt As New Gemeinsames.rptSendungen(VALUES, imgpath, Nothing, Nothing, Nothing)
' rpt.Document.CacheToDisk = True
'rpt.Document.CacheToDiskLocation = "C:\\Temp"
' rpt.Run()
' System.Diagnostics.Process pc = System.Diagnostics.Process.GetCurrentProcess();
'pc.MaxWorkingSet = pc.MinWorkingSet;
If art = "" Or art = "PDF" Then ' Wird angezeigt, nicht gedruckt
Dim printForm As New SDL.frmPrintLayout
printForm.Viewer.LoadDocument(rpt)
printForm.Viewer.ViewType = GrapeCity.Viewer.Common.Model.ViewType.Continuous
printForm.Show()
' printForm.BringToFront()
ElseIf art = "PRINT" Or art = "DIALOG" Then
rpt.Run(False)
' If Printername = "" Then rpt.Dispose() : Exit Sub
rpt.Document.Printer.PrinterName = cboPrinter.SelectedItem.ToString
rpt.Document.Print((art = "DIALOG"), False)
rpt.Dispose()
'rpt.Document.Dispose()
' rpt.Dispose()
' rpt = Nothing
End If
Catch ex As Exception
MsgBox(ex.Message & ex.StackTrace)
End Try
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs)
Me.Close()
End Sub
Private Sub FillByToolStripButton_Click(sender As Object, e As EventArgs)
End Sub
Private Sub btnNeueAbfertigungNrVergeben_Click(sender As Object, e As EventArgs) Handles btnNeueAbfertigungNrVergeben.Click
If Not IsNumeric(cboFiliale._value) OrElse CInt(cboFiliale._value) <= 0 Then
MsgBox("Bitte Filiale auswählen!") : Exit Sub
End If
txtAbfertigungsnummer.Enabled = True
txtAbfertigungsnummer.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.getMaxPosNrIncrement(cboFiliale._value, Now.Year)
cboFiliale.Enabled = False
btnNeueAbfertigungNrVergeben.Visible = False
txtAuftraggeber.Focus()
End Sub
Private Sub cboFiliale_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboFiliale.SelectedIndexChanged
'btnNeueAbfertigungNrVergeben.PerformClick()
If Not formLoaded Then Exit Sub
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "VERAG" Then
txtAbfertigungsnummer.Text = ""
txtAbfertigungsnummer.Enabled = False
btnNeueAbfertigungNrVergeben.Visible = True
End If
End Sub
Private Sub txtBetrag_TextChanged(sender As Object, e As KeyEventArgs) Handles txtBarzahlungsbetrag.KeyDown
If e.KeyCode = Keys.Return Then
btnPrint.Focus() 'damit txtBetrag._value passt
btnPrint.PerformClick()
End If
End Sub
Private Sub frmNacherfassungLeihgeld_Shown(sender As Object, e As EventArgs) Handles Me.Shown
RaiseEvent LOADED()
cboFiliale.Focus()
If cboFiliale._value <> "" Then txtAuftraggeberKdNr.Focus()
If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" Then
btnNeueAbfertigungNrVergeben.Visible = False
txtAbfertigungsnummer.Enabled = True
Else
If Not VERAG_PROG_ALLGEMEIN.cAllgemein.AUTO_ABF_NR Then
btnNeueAbfertigungNrVergeben.Visible = False
cboFiliale.Enabled = True
txtAbfertigungsnummer.Enabled = True
End If
End If
' btnNeueAbfertigungNrVergeben.Visible = Not (BELEG.gebucht Or BELEG.gebuchtStorno)
kdFrachtführer.Focus()
formLoaded = True
End Sub
Private Sub txtAbfertigungsnummer_Leave(sender As Object, e As EventArgs) Handles txtAbfertigungsnummer.Leave
If txtAbfertigungsnummer.Text.Length > 8 Then Exit Sub
If txtAbfertigungsnummer.Text.Length <= 6 Then
If IsNumeric(txtAbfertigungsnummer.Text) Then
txtAbfertigungsnummer.Text = Now.ToString("yy") & CInt(txtAbfertigungsnummer.Text).ToString("000000")
End If
End If
End Sub
Private Sub cbxFrachter_CheckedChanged(sender As Object, e As EventArgs) Handles cbxFrachter.CheckedChanged
txtAuftraggeber.Enabled = Not sender.checked
kdFrachtführer_TextChanged(kdFrachtführer, New EventArgs)
End Sub
Private Sub kdFrachtführer_Leave(sender As Object, e As EventArgs) Handles kdFrachtführer.Leave
If cbxFrachter.Checked Then
If kdFrachtführer.KdNr = "" Or (IsNumeric(kdFrachtführer.KdNr) AndAlso kdFrachtführer.KdNr <= 0) Then
txtAuftraggeber.KdNr = ""
txtAuftraggeber.Text = kdFrachtführer.Text
End If
End If
End Sub
Private Sub kdFrachtführer_TextChanged(sender As Object, e As EventArgs) Handles kdFrachtführer.PropertyChanged
If cbxFrachter.Checked Then
If kdFrachtführer.KdNr <> "" AndAlso (IsNumeric(kdFrachtführer.KdNr) AndAlso kdFrachtführer.KdNr > 0) Then
txtAuftraggeber.KdNr = kdFrachtführer.KdNr
Else
txtAuftraggeber.Text = kdFrachtführer.Text
End If
End If
Select Case VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
Case "IMEX"
Dim op_tmp = ""
If kdFrachtführer.KdNr <> "" AndAlso (IsNumeric(kdFrachtführer.KdNr) AndAlso kdFrachtführer.KdNr > 0) Then
Label44.Visible = True
txtOpLeihgeld.Visible = True
op_tmp = SQL.getValueTxtBySql("SELECT isnull(sum(Saldo),0) as OP FROM [Offene_Posten_DVO] where KundenNr=" & kdFrachtführer.KdNr & " AND konto like '5%'", "FMZOLL")
End If
If IsNumeric(op_tmp) Then
txtOpLeihgeld.Text = CDbl(op_tmp).ToString("C2")
Else
txtOpLeihgeld.Text = ""
End If
End Select
End Sub
Private Sub kdFrachtführer_TextChanged2(sender As Object, e As EventArgs) Handles kdFrachtführer.TextChanged
txtOpLeihgeld.Text = ""
End Sub
Private Sub cbxProvision_CheckedChanged(sender As Object, e As EventArgs) Handles cbxProvision.CheckedChanged
cboProvisionStaffel.Enabled = cbxProvision.Checked
cboProvisionBetrag.Enabled = cbxProvision.Checked
cboPrinterProvisionBeleg.Enabled = cbxProvision.Checked
cboProvisionStaffelArt.Enabled = cbxProvision.Checked
txtProvisionProzent.Enabled = cbxProvision.Checked
End Sub
Private Sub cboProvisionStaffelArt_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboProvisionStaffelArt.SelectedIndexChanged
cboProvisionStaffel.Items.Clear()
If IsNumeric(cboProvisionStaffelArt._value) Then
cboProvisionStaffel.fillWithSQL("SELECT [PreislistenPos],[Leistungsbeschreibung] FROM [VERAG].[dbo].[tblPreislistenpositionen] where LeistungsNr IN (357,355) AND PreislistenNr='" & cboProvisionStaffelArt._value & "'", False, "FMZOLL", False)
End If
End Sub
Private Function getProvFromString(str As String) As Double
Try
Dim cnt = 0
For Each s In str
If IsNumeric(s) Then
For i = cnt + 1 To str.Length
If IsNumeric(str.Substring(cnt, i - cnt)) Then
getProvFromString = CDbl(str.Substring(cnt, i - cnt).Trim)
End If
Next
Return getProvFromString
End If
cnt += 1
Next
Catch ex As Exception
MsgBox(ex.Message)
End Try
getProvFromString = 0
End Function
Private Sub cboProvisionStaffel_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboProvisionStaffel.SelectedIndexChanged, txtBarzahlungsbetrag.TextChanged, txtBarzahlungsbetrag.Leave, txtProvisionProzent.TextChanged
initProv()
End Sub
Sub initProv()
cboProvisionBetrag._value = 0
If cboProvisionStaffel.Text.Trim.EndsWith("%") Then
txtProvisionProzent._value = getProvFromString(cboProvisionStaffel.Text) / 100
End If
If IsNumeric(txtBarzahlungsbetrag._value) And IsNumeric(txtProvisionProzent._value) Then
cboProvisionBetrag._value = txtBarzahlungsbetrag._value * txtProvisionProzent._value
End If
End Sub
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles cbxProvisionAuftraggeber.CheckedChanged
txtAuftrProvision.Enabled = sender.checked
End Sub
Private Sub cboPrintAktendeckel_CheckedChanged(sender As Object, e As EventArgs) Handles cboPrintAktendeckel.CheckedChanged
End Sub
Private Sub kdFrachtführer_TextChanged(sender As Object, e As System.ComponentModel.PropertyChangedEventArgs) Handles kdFrachtführer.PropertyChanged
End Sub
End Class