diff --git a/.gitignore b/.gitignore
index 5028f7b4..37414890 100644
--- a/.gitignore
+++ b/.gitignore
@@ -261,4 +261,3 @@ __pycache__/
*.pyc
/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente
/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj
-/SDL/SDL.vbproj
diff --git a/SDL/Classes/cEABeleg.vb b/SDL/Classes/cEABeleg.vb
index dbf7ec60..76246071 100644
--- a/SDL/Classes/cEABeleg.vb
+++ b/SDL/Classes/cEABeleg.vb
@@ -283,8 +283,9 @@ Public Class EABeleg
Property ECTerminalreturnCode As Object = Nothing
Property EC_daid As Integer = 0
Property FT_ReceiptReference As Object = Nothing
-
Property FT_ReceiptReference_Storno As Object = Nothing
+ Property FT_MissingSignature As Boolean = False
+ Property FT_setMissingSignatureFailed As Boolean = False
Property POS As New List(Of EABelegPositionen)
@@ -365,8 +366,13 @@ Public Class EABeleg
Me.ECZahlungsPerAPI = cSqlDb.checkNullReturnValue(dr.Item("ECZahlungsPerAPI"), Nothing)
Me.ECTerminalreturnCode = cSqlDb.checkNullReturnValue(dr.Item("ECTerminalreturnCode"), Nothing)
Me.EC_daid = cSqlDb.checkNullReturnValue(dr.Item("EC_daid"), Nothing)
+
+ 'Fiskaltrust
+
Me.FT_ReceiptReference = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference"), Nothing)
Me.FT_ReceiptReference_Storno = cSqlDb.checkNullReturnValue(dr.Item("FT_ReceiptReference_Storno"), Nothing)
+ Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_MissingSignature"), False)
+ Me.FT_MissingSignature = cSqlDb.checkNullReturnValue(dr.Item("FT_setMissingSignatureFailed"), False)
If loadPosAswell Then POS = LOAD_POS_List(Mandant, Niederlassung, Benutzer, BelegNr, BelegDat)
' MsgBox(POS.Count)
@@ -552,8 +558,12 @@ Public Class EABeleg
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECZahlungsPerAPI", ECZahlungsPerAPI))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("ECTerminalreturnCode", ECTerminalreturnCode))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("EC_daid", EC_daid))
+
+ 'FISKALTRUST
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference", FT_ReceiptReference))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_ReceiptReference_Storno", FT_ReceiptReference_Storno))
+ list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_MissingSignature", FT_MissingSignature))
+ list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("FT_setMissingSignatureFailed", FT_setMissingSignatureFailed))
'For Each p As System.Reflection.PropertyInfo In Me.GetType().GetProperties()
'If p.CanRead Then
diff --git a/SDL/Classes/cFiskaltrustClient.vb b/SDL/Classes/cFiskaltrustClient.vb
index a1aacac8..eb3a39a3 100644
--- a/SDL/Classes/cFiskaltrustClient.vb
+++ b/SDL/Classes/cFiskaltrustClient.vb
@@ -740,6 +740,7 @@ Public Class cFiskaltrustSignatures
Property ftCashBoxID As Object = Nothing
Property cbTerminalID As Object = Nothing
Property cbReceiptReference As Object = Nothing
+ Property ftBeleg_ID As Object = Nothing
Public hasEntry = False
@@ -767,6 +768,7 @@ Public Class cFiskaltrustSignatures
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftCashBoxID", ftCashBoxID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cbTerminalID", cbTerminalID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("cbReceiptReference", cbReceiptReference))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("ftBeleg_ID", ftBeleg_ID))
Return list
End Function
diff --git a/SDL/Classes/cFiskaltrustClient_chilkat.vb b/SDL/Classes/cFiskaltrustClient_chilkat.vb
index 87785ae8..a9ff87db 100644
--- a/SDL/Classes/cFiskaltrustClient_chilkat.vb
+++ b/SDL/Classes/cFiskaltrustClient_chilkat.vb
@@ -1,13 +1,7 @@
-
-Imports System.Data.SqlClient
-Imports System.IO
-Imports System.Reflection
-Imports Chilkat
-Imports Gma.QrCodeNet.Encoding
-Imports GrapeCity.DataVisualization.Chart
-Imports itextsharp.text.pdf.qrcode
-Imports Newtonsoft.Json
+Imports Chilkat
+Imports io.konik.zugferd.unqualified
Imports QRCoder
+Imports VERAG_PROG_ALLGEMEIN
Public Class FtReceiptCases
@@ -17,6 +11,7 @@ Public Class FtReceiptCases
' Test-/Nullbeleg
Public Const ZeroReceipt As Long = &H4445000000000002L
+ ' Kassenlebenszyklus
Public Const InitialOperation As Long = &H4445000000000003L
Public Const OutOfOperation As Long = &H4445000000000004L
@@ -25,18 +20,48 @@ Public Class FtReceiptCases
Public Const YearlyClosing As Long = &H4445000000000006L
Public Const DailyClosing As Long = &H4445000000000007L
+ ' Kasseneinzahlung / Kassenauszahlung / Geldtransfer
+ Public Const CashDepositOrWithdrawal As Long = &H4445000000000011L
+
+
' Flags
Public Const ImplicitTransaction As Long = &H100000000L
Public Const ReversalReceipt As Long = &H40000L
Public Const TrainingReceipt As Long = &H20000L
+ ' aktiviert den Late-Signing-Modus
+ Public Const FailedReceipt As Long = &H10000L
+
+ ' Receipt-Request:
+ ' bereits verarbeiteten Beleg anhand cbReceiptReference abrufen
+ Public Const ReceiptRequest As Long = &H800000000000L
End Class
Public Class FtChargeItemCase
- Public Const RevenueNormal As Long = &H4445000000000001L ' 19 %
- Public Const RevenueReduced As Long = &H4445000000000002L ' 7 %
- Public Const RevenueTaxFree As Long = &H4445000000000005L ' 0 %
+ ' DE – Verkaufsbelege
+ Public Const RevenueNormal As Long = &H4445000000000001L ' 19 % Regelsteuersatz
+
+ Public Const RevenueReduced As Long = &H4445000000000002L ' 7 % ermäßigter Steuersatz
+
+ Public Const RevenueNotTaxable As Long = &H4445000000000005L ' Nicht steuerbar
+
+ Public Const RevenueTaxFree As Long = &H4445000000000006L ' Umsatzsteuerfrei, 0 %
+
+ ' DE – Kassenbewegungen
+ Public Const Anfangsbestand As Long = &H4445000000000090L ' Anfangsbestand
+
+ Public Const Privatentnahme As Long = &H4445000000000091L ' Privatentnahme
+
+ Public Const Privateinlage As Long = &H4445000000000092L ' Privateinlage
+
+ Public Const Geldtransit As Long = &H4445000000000093L ' Geldtransit
+
+ Public Const Lohnzahlung As Long = &H4445000000000094L ' Lohnzahlung
+
+ Public Const Einzahlung As Long = &H4445000000000095L ' Einzahlung
+
+ Public Const Auszahlung As Long = &H4445000000000096L ' Auszahlung
End Class
@@ -49,8 +74,37 @@ Public Class FtJournalType
End Class
+Public Class ReceiptCaseIntern
+
+ Public Const STORNO As String = "Storno"
+ Public Const VERKAUF As String = "Verkauf"
+ Public Const EINGANG As String = "Eingang"
+ Public Const AUSGANG As String = "Ausgang"
+ Public Const WIEDERHOLUNG As String = "Retry"
+ Public Const NULLBELEG As String = "NULL-BELEG"
+ Public Const STARTBELEG As String = "START-BELEG"
+ Public Const OUTOFOPERATIONBELEG As String = "END-BELEG"
+ Public Const TEMP_OUTOFOPERATIONBELEG As String = "TEMP-AUSFALL"
+ Public Const DAILYCLOSING As String = "TAGESABSCHLUSS"
+
+End Class
+
+
+Public Class PayItemCasesIntern
+
+ Public Const Cash As String = "Cash"
+ Public Const DebitCard As String = "DebitCard"
+ Public Const Kasseneinzahlungen_Auszahlungen As String = "Kasseneinzahlungen_Auszahlungen"
+
+
+End Class
+
+
+
Public Class FtPayItemCases
+ 'DE
+
' Barzahlung
Public Const Cash As Long = &H4445000000000001L
@@ -64,7 +118,10 @@ Public Class FtPayItemCases
Public Const OnlinePayment As Long = &H4445000000000006L
' Gutschein
- Public Const Voucher As Long = &H444500000000000DL
+ Public Const Voucher As Long = &H4445000000000007L
+
+ 'Cash transfer from/to cash book
+ Public Const Kasseineinzahlung_Auszahlung As Long = &H4445000000000016L
End Class
@@ -74,23 +131,31 @@ Public Class cFiskaltrustClient_chilkat
Private ReadOnly _cashboxId As String
Private ReadOnly _accessToken As String
Private ReadOnly _country As String
+ Private ReadOnly _isFiskaltrust As Boolean = False
Public Sub New(baseUrl As String, cashboxId As String, accessToken As String, country As String)
_baseUrl = baseUrl.TrimEnd("/"c)
_cashboxId = cashboxId
_accessToken = accessToken
_country = country
+
+ If _cashboxId <> "" AndAlso baseUrl <> "" AndAlso _accessToken <> "" AndAlso _country <> "" Then
+ _isFiskaltrust = True
+ Else
+ _isFiskaltrust = False
+ End If
+
End Sub
- Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As String
-
- Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "")
-
- Return SendChilkat(GetEndpoint("payment"), payload.Emit())
-
+ Public Function isFiskaltrust() As Boolean
+ Return _isFiskaltrust
End Function
- Public Function SignReceipt_test(posSystemId As String) As String
+
+
+
+
+ Public Function SignReceipt_test(posSystemId As String, TSEisOnline As Boolean) As String
Dim LIST = New List(Of EABelegPositionen)
Dim p = New EABelegPositionen
@@ -104,105 +169,161 @@ Public Class cFiskaltrustClient_chilkat
p.LeistungsNr = 300
p.LeistungsBez = "TEST"
p.Preis = 10
- p.Anzahl = 1
+ p.Anzahl = 10
LIST.Add(p)
Dim amount = 100
Dim vat = 0
Dim POS = LIST
Dim kindOfPayment = "Cash"
+ Try
+ Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "", TSEisOnline)
- Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Verkauf", "")
-
- Return SendChilkat(GetEndpoint("payment"), payload.Emit())
+ Return SendChilkat(GetEndpoint("payment"), payload.Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End Function
- Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String) As String
- Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference)
- Return SendChilkat(GetEndpoint("storno"), payload.Emit())
+ Public Function ChancelReceipt_test(reference As String, posSystemId As String, TSEisOnline As Boolean) As String
+
+ Try
+ Dim LIST = New List(Of EABelegPositionen)
+ Dim p = New EABelegPositionen
+ p.Mandant = "VERA"
+ p.Niederlassung = "SUB"
+ p.Benutzer = 74
+ p.BelegDat = Now
+ p.BelegNr = 1
+ p.PreislistenNr = 1
+ p.PreislistenPos = 1
+ p.LeistungsNr = 300
+ p.LeistungsBez = "TEST"
+ p.Preis = 10
+ p.Anzahl = 1
+ LIST.Add(p)
+
+ Dim amount = 100
+ Dim vat = 0
+ Dim POS = LIST
+ Dim kindOfPayment = "Cash"
+
+ Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline)
+
+ Return SendChilkat(GetEndpoint("storno"), payload.Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End Function
- Public Function ChancelReceipt_test(reference As String, posSystemId As String) As String
+ Public Function SignReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, typOfReceiptCase As String, reference As String, TESisOnline As Boolean) As String
+ Try
+ Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, typOfReceiptCase, reference, TESisOnline)
- Dim LIST = New List(Of EABelegPositionen)
- Dim p = New EABelegPositionen
- p.Mandant = "VERA"
- p.Niederlassung = "SUB"
- p.Benutzer = 74
- p.BelegDat = Now
- p.BelegNr = 1
- p.PreislistenNr = 1
- p.PreislistenPos = 1
- p.LeistungsNr = 300
- p.LeistungsBez = "TEST"
- p.Preis = 10
- p.Anzahl = 1
- LIST.Add(p)
+ Return SendChilkat(GetEndpoint("payment"), payload.Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
- Dim amount = 100
- Dim vat = 0
- Dim POS = LIST
- Dim kindOfPayment = "Cash"
-
- Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference)
-
- Return SendChilkat(GetEndpoint("storno"), payload.Emit())
End Function
-
Public Function SignNullReceipt(posSystemId As String) As String
- Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit())
+ Try
+ Return SendChilkat(GetEndpoint("payment"), BuildPayloadNullReceipt(posSystemId, _country).Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
+ End Function
+
+ Public Function ChancelReceipt(reference As String, amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, TSEisOnline As Boolean) As String
+ Try
+ Dim payload As JsonObject = BuildPayloadReceipt(amount, vat, POS, kindOfPayment, posSystemId, "Storno", reference, TSEisOnline)
+
+ Return SendChilkat(GetEndpoint("storno"), payload.Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
+ End Function
+
+ Public Function SignOutOfOrderReceipt(posSystemId As String) As String
+ Try
+ Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
+ End Function
+
+ Public Function SignTempOutOfOrderReceipt(posSystemId As String) As String
+ Try
+ Return SendChilkat(GetEndpoint("payment"), BuildPayloadOutOfOperationReceipt(posSystemId, _country).Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
+ End Function
+
+ Public Function SignInitialOperationReceipt(posSystemId As String) As String
+ Try
+ Return SendChilkat(GetEndpoint("payment"), BuildPayloadInitialOperationReceipt(posSystemId, _country).Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End Function
Public Function SignClosingReceipt(receiptType As String, posSystemId As String, kind As String) As String
-
- Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit())
+ Try
+ Return SendChilkat(GetEndpoint("payment"), BuildPayloadClosingReceipt(receiptType, posSystemId, kind).Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End Function
Public Function Echo(kassenName As String) As String
+ Try
+ Dim json As New JsonObject()
+ json.UpdateString("Message", kassenName & " - VERBINDUNG OK")
- Dim json As New JsonObject()
- json.UpdateString("Message", kassenName & " - VERBINDUNG OK")
-
- Return SendChilkat(GetEndpoint("test"), json.Emit())
-
+ Return SendChilkat(GetEndpoint("test"), json.Emit())
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End Function
Public Function Journal(ftJournalType As Integer) As String
+ Try
- Dim endpoint = GetEndpoint("journal")
+ Dim endpoint = GetEndpoint("journal")
- endpoint &= "?type=" & ftJournalType
+ endpoint &= "?type=" & ftJournalType
- Return SendChilkat(endpoint, "")
+ Return SendChilkat(endpoint, "")
+
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End Function
+
Private Function SendChilkat(endpoint As String, payload As String, Optional isGet As Boolean = False) As String
Dim retries As Integer = 3
Dim lastEx As Exception = Nothing
- VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
- Dim rest As New Chilkat.Rest
- Dim failureDesc As String
- rest.VerboseLogging = True
+ VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat()
+
+ Dim rest As New Chilkat.Rest
+ rest.VerboseLogging = True
For i As Integer = 1 To retries
Try
-
Dim uri As New Uri(_baseUrl)
If Not rest.Connect(uri.Host, uri.Port, uri.Scheme = "https", True) Then
-
Throw New Exception(rest.LastErrorText)
- failureDesc = rest.LastErrorText
- Return failureDesc
-
End If
rest.AddHeader("cashboxid", _cashboxId)
@@ -211,41 +332,88 @@ Public Class cFiskaltrustClient_chilkat
Dim response As String
If isGet Then
- response = rest.FullRequestNoBody("GET", uri.AbsoluteUri & endpoint)
- Else
+ response = rest.FullRequestNoBody(
+ "GET",
+ uri.AbsoluteUri & endpoint
+ )
+
+ Else
If _country = "AT" Then
rest.AddHeader("Content-Type", "text/plain")
- response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
Else
rest.AddHeader("Content-Type", "application/json")
- response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
End If
+ response = rest.FullRequestString("POST", uri.AbsoluteUri & endpoint, payload)
End If
- If rest.ResponseStatusCode >= 200 AndAlso rest.ResponseStatusCode < 300 Then
+ Dim statusCode As Integer = rest.ResponseStatusCode
+
+ ' SUCCESS
+ If statusCode >= 200 AndAlso statusCode < 300 Then
Return response
- Else
- failureDesc = rest.LastErrorText
End If
- Throw New Exception("HTTP " & rest.ResponseStatusCode & ": " & response)
+ ' 4xx = client/request error -> DO NOT RETRY
+ If statusCode >= 400 AndAlso statusCode < 500 Then
+ Throw New Exception(
+ "HTTP " & statusCode & ": " & response
+ )
+ End If
+
+ ' 5xx = server error -> retry
+ If statusCode >= 500 AndAlso statusCode < 600 Then
+
+ lastEx = New Exception(
+ "HTTP " & statusCode & ": " & response
+ )
+
+ If i < retries Then
+ Threading.Thread.Sleep(500)
+ Continue For
+ End If
+
+ Throw lastEx
+ End If
+
+ ' Unexpected status code
+ Throw New Exception(
+ "HTTP " & statusCode & ": " & response
+ )
Catch ex As Exception
+
lastEx = ex
- Threading.Thread.Sleep(500)
+
+ ' If this was an HTTP 4xx, don't retry.
+ If rest.ResponseStatusCode >= 400 AndAlso
+ rest.ResponseStatusCode < 500 Then
+
+ Throw
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name, ERROR_OP.MAIL)
+
+ End If
+
+ ' Connection/transport error -> retry
+ If i < retries Then
+ Threading.Thread.Sleep(500)
+ End If
+
End Try
Next
Throw lastEx
+
+
+
End Function
- Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String) As JsonObject
+ Private Function BuildPayloadReceipt(amount As Decimal, vat As Decimal, POS As List(Of EABelegPositionen), kindOfPayment As String, posSystemId As String, _receiptCase As String, _reference As String, TSEisOnline As Boolean) As JsonObject
Dim json As New JsonObject()
@@ -261,70 +429,162 @@ Public Class cFiskaltrustClient_chilkat
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
- Dim receipCase As Long
- Select Case _receiptCase
-
- Case "Storno"
- receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction 'Storno
-
- Case Else
- receipCase = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction 'Verkauf
-
- End Select
+ Dim receiptCaseValue As Long
- json.UpdateString("ftReceiptCase", receipCase)
+ If _receiptCase = ReceiptCaseIntern.STORNO Then
+
+ ' Neue Referenz für den Stornobeleg
+ json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
+ ' Referenz auf den ursprünglichen Beleg
+ json.UpdateString("cbPreviousReceiptReference", _reference)
+
+ If TSEisOnline Then
+ receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.ImplicitTransaction
+ Else
+ receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReversalReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
+ End If
+ json.UpdateString("cbUser", VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME)
+
+ ElseIf _receiptCase = ReceiptCaseIntern.WIEDERHOLUNG Then
+
+ 'Receipt-Request nach Kommunikationsfehler
+ 'dieselbe cbReceiptReference verwenden
+ 'dieselben cbChargeItems und cbPayItems mitsenden
+ 'optional dieselbe cbTerminalID
+
+ json.UpdateString("cbReceiptReference", _reference)
+ receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ReceiptRequest
+
+ ' Kasseneinzahlung (ohne Positionen) / Kassenauszahlung (ohne Positionen)
+ ElseIf (_receiptCase = ReceiptCaseIntern.EINGANG OrElse _receiptCase = ReceiptCaseIntern.AUSGANG) Then
+ kindOfPayment = PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen
+ json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
+
+ If TSEisOnline Then
+ receiptCaseValue = FtReceiptCases.CashDepositOrWithdrawal Or FtReceiptCases.ImplicitTransaction
+ Else
+ receiptCaseValue = FtReceiptCases.CashDepositOrWithdrawal Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
+ End If
+
+
+ Else
+
+ ' New reference for a normal receipt
+ json.UpdateString("cbReceiptReference", Guid.NewGuid().ToString())
+ If TSEisOnline Then
+ receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.ImplicitTransaction
+ Else
+ receiptCaseValue = FtReceiptCases.PosReceipt Or FtReceiptCases.FailedReceipt Or FtReceiptCases.ImplicitTransaction
+ End If
+
+
+ End If
+
+ json.UpdateString("ftReceiptCase", receiptCaseValue.ToString())
Dim chargeItems = json.AppendArray("cbChargeItems")
- For Each p In POS
+ If POS.Count > 0 Then
- If chargeItems.AddObjectAt(-1) Then
- Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
- item.UpdateInt("Quantity", p.Anzahl)
- item.UpdateNumber("Amount", p.Preis.ToString().Replace(",", "."))
- item.UpdateNumber("VATRate", vat.ToString().Replace(",", "."))
- item.UpdateString("Description", p.LeistungsBez)
+ For Each p In POS
- Dim ChargeItemCase As Long
- Select Case vat
-
- Case 19D
- ChargeItemCase = FtChargeItemCase.RevenueNormal
-
- Case 7D
- ChargeItemCase = FtChargeItemCase.RevenueReduced
-
- Case 0D
- ChargeItemCase = FtChargeItemCase.RevenueTaxFree
-
- Case Else
- Throw New Exception("Unbekannter Steuersatz")
- End Select
+ If chargeItems.AddObjectAt(-1) Then
- item.UpdateString("ftChargeItemCase", ChargeItemCase)
- End If
+ Dim quantity As Double = p.Anzahl
+ Dim unitPrice As Double = p.Preis
+ Dim lineAmount As Double = p.Betrag
+
+ 'bei Storno negieren (BEI DE nur einen Teil)! -> im V1 Beispiel sind beide negativ!!!
+ 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)'
+ 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase
+
+ If _receiptCase = ReceiptCaseIntern.STORNO Then
+ quantity = quantity * -1
+ lineAmount = lineAmount * -1
+ End If
+
+ Dim item As Chilkat.JsonObject = chargeItems.ObjectAt(chargeItems.Size - 1)
+ item.UpdateInt("Quantity", quantity)
+ item.UpdateNumber("Amount", lineAmount)
+ item.UpdateNumber("VATRate", vat)
+ item.UpdateString("Description", p.LeistungsBez)
+
+ Dim ChargeItemCase As Long
+ Select Case vat
+
+ Case 19D
+ ChargeItemCase = FtChargeItemCase.RevenueNormal
+
+ Case 7D
+ ChargeItemCase = FtChargeItemCase.RevenueReduced
+
+ Case 0D
+ ChargeItemCase = FtChargeItemCase.RevenueTaxFree
+
+ Case Else
+ Throw New Exception("Unbekannter Steuersatz")
+ End Select
+
+
+ item.UpdateString("ftChargeItemCase", ChargeItemCase)
+ End If
+
+
+ Next
+
+ End If
+
+
+ Dim paidAmount As Double = amount
+ Dim paidQuantity As Integer = 1
+
+ 'bei Storno negieren (BEI DE nur einen Teil)! -> im V1 Beispiel sind beide negativ!!!
+ 'To cancel a receipt, resend it with this flag added to the ftReceiptCase and inverse the cbPayItems OR cbChargeItems (This is not the same behavior as described in the general part — in Germany, this flag requires only one of cbPayItems or cbChargeItems to be negative, and both must not be negative at the same time)'
+ 'https://docs.fiskaltrust.cloud/docs/poscreators/middleware-doc/germany/reference-tables/ftreceiptcase
+
+ If PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen Then
+
+ End If
+
+
+
+ If _receiptCase = ReceiptCaseIntern.STORNO Then
+ paidAmount = paidAmount * -1
+ paidQuantity = paidQuantity * -1
+ End If
- Next
Dim payItems = json.AppendArray("cbPayItems")
payItems.AddObjectAt(-1)
Dim pay As Chilkat.JsonObject = payItems.ObjectAt(payItems.Size - 1)
- pay.UpdateInt("Quantity", 1)
- pay.UpdateNumber("Amount", amount.ToString().Replace(",", "."))
- pay.UpdateString("Description", kindOfPayment)
+ pay.UpdateInt("Quantity", paidQuantity)
+ pay.UpdateNumber("Amount", paidAmount)
+ Dim Description As String = ""
Select Case kindOfPayment
- Case "Cash"
+ Case PayItemCasesIntern.Cash
pay.UpdateString("ftPayItemCase", FtPayItemCases.Cash)
- Case "Card"
+ Description = "Bar"
+ Case PayItemCasesIntern.DebitCard
pay.UpdateString("ftPayItemCase", FtPayItemCases.DebitCard)
+ Description = "ECKarte"
+ Case PayItemCasesIntern.Kasseneinzahlungen_Auszahlungen
+ pay.UpdateString("ftPayItemCase", FtPayItemCases.Kasseineinzahlung_Auszahlung)
+ If amount > 0 Then
+ Description = "Kasseneingang"
+ ElseIf amount < 0 Then
+ Description = "Kassenausgang"
+ End If
End Select
+ pay.UpdateString("Description", Description)
+
+
Return json
End Function
@@ -354,14 +614,12 @@ Public Class cFiskaltrustClient_chilkat
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
json.UpdateString("cbTerminalID", posSystemId)
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
- json.UpdateString("ftReceiptCase", (FtReceiptCases.InitialOperation).ToString())
+ json.UpdateString("ftReceiptCase", (FtReceiptCases.InitialOperation Or FtReceiptCases.ImplicitTransaction).ToString())
json.UpdateString("cbReceiptReference", "INIT")
json.UpdateString("cbUser", "Admin")
json.UpdateString("ftReceiptCaseData", "")
-
-
Dim chargeItems = json.AppendArray("cbChargeItems")
Dim payItems = json.AppendArray("cbPayItems")
@@ -376,9 +634,8 @@ Public Class cFiskaltrustClient_chilkat
json.UpdateString("ftPosSystemId", getVersion(posSystemId))
json.UpdateString("cbTerminalID", posSystemId)
json.UpdateString("cbReceiptMoment", DateTime.UtcNow.ToString("o"))
- json.UpdateString("ftReceiptCase", (FtReceiptCases.OutOfOperation).ToString())
+ json.UpdateString("ftReceiptCase", (FtReceiptCases.OutOfOperation Or FtReceiptCases.ImplicitTransaction).ToString())
json.UpdateString("cbReceiptReference", "OutOfOperation")
-
json.UpdateString("cbUser", "Admin")
json.UpdateString("ftReceiptCaseData", "")
@@ -442,7 +699,7 @@ Public Class cFiskaltrustClient_chilkat
Case "journal"
Select Case _country
- Case "DE" : Return "/json/v0/Journal"
+ Case "DE" : Return "/json/v1/Journal"
Case "AT" : Return "/json/Journal"
End Select
@@ -461,13 +718,17 @@ Public Class cFiskaltrustClient_chilkat
End Function
Private Function getVersion(Terminal_ID As String) As String
- Return Terminal_ID & "_" & Application.ProductVersion
+ Return Terminal_ID '& "_" & Application.ProductVersion
End Function
Public Function saveRKSV_FT(ByRef result_zahlung As String, ByRef QR_CodeString As String, ByRef beleg_temp As EABeleg, ByRef isStorno As Boolean) As Boolean
- If result_zahlung <> "" Then
- Dim json As New Chilkat.JsonObject
+ If String.IsNullOrWhiteSpace(result_zahlung) Then
+ Return False
+ End If
+
+
+ Dim json As New Chilkat.JsonObject
Dim success As Boolean = json.Load(result_zahlung)
If (success <> True) Then
Debug.WriteLine(json.LastErrorText)
@@ -499,17 +760,26 @@ Public Class cFiskaltrustClient_chilkat
.ftCashBoxIdentification = json.StringOf("ftCashBoxIdentification")
.ftReceiptIdentification = json.StringOf("ftReceiptIdentification")
.ftReceiptMoment = ftReceiptMoment.GetAsTimestamp(getAsLocal)
- .ftState = json.StringOf("ftState")
- saved = .SAVE()
+ .ftState = json.StringOf("ftState")
- If saved AndAlso beleg_temp IsNot Nothing Then
+ If beleg_temp Is Nothing Then
+ .ftBeleg_ID = -1
+ Else
+ .ftBeleg_ID = beleg_temp.BelegNr
+ End If
+
+
+ saved = .SAVE()
+
+ If saved AndAlso beleg_temp IsNot Nothing Then
If isStorno Then
beleg_temp.FT_ReceiptReference_Storno = .cbReceiptReference
beleg_temp.SAVE()
Else
- beleg_temp.FT_ReceiptReference = .cbReceiptReference
- End If
+ beleg_temp.FT_ReceiptReference = .cbReceiptReference
+ beleg_temp.SAVE()
+ End If
End If
@@ -518,64 +788,60 @@ Public Class cFiskaltrustClient_chilkat
Dim num As Integer = json.SizeOfArray("ftSignatures")
- If num = 0 Then
- Return False
- End If
+ If num = 0 Then
+ MsgBox("Signatureinheit liefert keine (gültige) Signatur, Signatureinheit ausgefallen" & vbNewLine & "Beleg kann nachträglich signiert werden!")
+ Return False
+ End If
- Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures")
+ Dim Signatures As Chilkat.JsonArray = json.ArrayOf("ftSignatures")
If (json.LastMethodSuccess = False) Then
Return False
End If
Dim numSignatures As Integer = Signatures.Size
- For i = 0 To numSignatures - 1
+ For i = 0 To numSignatures - 1
- Dim SignObj As Chilkat.JsonObject = Signatures.ObjectAt(i)
- Dim ftSigPos As New cFiskaltrustSignaturPositions()
+ Dim SignObj As Chilkat.JsonObject = Signatures.ObjectAt(i)
+ Dim ftSigPos As New cFiskaltrustSignaturPositions()
- With ftSigPos
- .ftSignatures = ftSig.ft_id
- .ftData = SignObj.StringOf("Data")
- .ftSignatureFormat = SignObj.StringOf("ftSignatureFormat")
- .ftSignatureType = SignObj.StringOf("ftSignatureType")
- saved = .SAVE()
- 'If IsNumeric(.ftSignatureType) AndAlso CInt(.ftSignatureType) = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True, 0, 3) Then
- ' QR_CodeString = .ftData
- 'End If
-
- 'https://receipts.fiskaltrust.eu/{ftQueueID}/{ftQueueItemID}
- Dim URL_FT As String = ""
- If Not String.IsNullOrWhiteSpace(ftSig.ftQueueID) AndAlso Not String.IsNullOrWhiteSpace(ftSig.ftQueueItemID) Then
- URL_FT = $"https://receipts.fiskaltrust.eu/{ftSig.ftQueueID}/{ftSig.ftQueueItemID}"
-
- Using qrGenerator As New QRCodeGenerator()
- Using qrData As QRCodeData = qrGenerator.CreateQrCode(URL_FT, QRCodeGenerator.ECCLevel.Q)
-
- Dim qrCode As New PngByteQRCode(qrData)
- Dim qrBytes As Byte() = qrCode.GetGraphic(20)
- Dim qrBase64 As String = Convert.ToBase64String(qrBytes)
-
- QR_CodeString = qrBase64
-
- End Using
- End Using
+ With ftSigPos
+ .ftSignatures = ftSig.ft_id
+ .ftData = SignObj.StringOf("Data")
+ .ftSignatureFormat = SignObj.StringOf("ftSignatureFormat")
+ .ftSignatureType = SignObj.StringOf("ftSignatureType")
+ saved = .SAVE()
- End If
- End With
- Next
+ End With
+ Next
- Return saved
+ 'https://receipts.fiskaltrust.eu/{ftQueueID}/{ftQueueItemID}
+ Dim URL_FT As String = ""
+ If Not String.IsNullOrWhiteSpace(ftSig.ftQueueID) AndAlso Not String.IsNullOrWhiteSpace(ftSig.ftQueueItemID) Then
+ URL_FT = $"https://receipts.fiskaltrust.eu/{ftSig.ftQueueID}/{ftSig.ftQueueItemID}"
+ Using qrGenerator As New QRCodeGenerator()
+ Using qrData As QRCodeData = qrGenerator.CreateQrCode(URL_FT, QRCodeGenerator.ECCLevel.Q)
+ Dim qrCode As New PngByteQRCode(qrData)
+ Dim qrBytes As Byte() = qrCode.GetGraphic(20)
+ Dim qrBase64 As String = Convert.ToBase64String(qrBytes)
+
+ QR_CodeString = qrBase64
+
+ End Using
+ End Using
End If
+ Return saved
+
+
End Function
@@ -625,7 +891,7 @@ Public Class cFiskaltrustClient_chilkat
R("ftQueueId") = .StringOf("ftQueueId")
R("ftQueueItemId") = .StringOf("ftQueueItemId")
R("ftReceiptHash") = .StringOf("ftReceiptHash")
- R("TimeStamp") = tmstmp.GetAsTimestamp(getAsLocal)
+ R("TimeStamp") = .StringOf("ftReceiptMoment")
End With
@@ -643,15 +909,8 @@ Public Class cFiskaltrustClient_chilkat
End If
-
-
End Function
-
- Private Sub Log(message As String)
- Console.WriteLine(message)
- End Sub
-
Public Function PrettyPrintJson(jsonText As String) As String
Dim json As New Chilkat.JsonObject()
diff --git a/SDL/Classes/cRKSV.vb b/SDL/Classes/cRKSV.vb
index fb781b8e..7ba65c43 100644
--- a/SDL/Classes/cRKSV.vb
+++ b/SDL/Classes/cRKSV.vb
@@ -1,4 +1,5 @@
-Imports GrapeCity.ActiveReports
+
+Imports GrapeCity.ActiveReports
Imports SDL.RKSVServer
Imports VERAG_PROG_ALLGEMEIN.DSFinVKService
Imports VERAG_PROG_ALLGEMEIN.RKSV_DE_DSFinVKService
@@ -89,7 +90,7 @@ Public Class cRKSV
End Function
- Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String) As Boolean
+ Shared Function insertRKSVFiskaltrustAsync(ByVal kasse As cRKSV_Kasse, beleg_temp As EABeleg, ByVal RKSV_Beleg_Id As Integer, ByVal summeBRUTTO As Double, TEST As Boolean, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef typOfReceiptCase As String, Optional reference As String = "", Optional TSEisOnline As Boolean = True) As Boolean
Try
@@ -122,25 +123,37 @@ Public Class cRKSV
Dim kindOfPayment As String = getKindOfPayment(beleg_temp)
- If False Then
- 'Dim client As New cFiskaltrustClient(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
- 'Dim result = Await client.SignReceiptAsync(summeBRUTTO, steuersatz, POS, "Cash", kasse.rksv_id)
- 'If result <> "" Then
- ' Return client.saveRKSV_FT(result, QR_CodeString)
- 'Else
- ' Return False
- 'End If
- Else
- Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
- Dim result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id)
- If result <> "" Then
+ Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
+
+ Dim result As String = ""
+
+ Select Case typOfReceiptCase
+ Case ReceiptCaseIntern.NULLBELEG
+ result = client.SignNullReceipt(kasse.rksv_id)
+
+ Case ReceiptCaseIntern.STARTBELEG
+ result = client.SignInitialOperationReceipt(kasse.rksv_id)
+
+ Case ReceiptCaseIntern.OUTOFOPERATIONBELEG
+ result = client.SignOutOfOrderReceipt(kasse.rksv_id)
+
+ Case ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG
+ result = client.SignTempOutOfOrderReceipt(kasse.rksv_id)
+
+ Case ReceiptCaseIntern.DAILYCLOSING
+ result = client.SignClosingReceipt("daily", kasse.rksv_id, "daily")
+ Case Else
+ result = client.SignReceipt(summeBRUTTO, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, typOfReceiptCase, reference, TSEisOnline)
+ End Select
+
+ If result <> "" Then
Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, False)
Else
Return False
End If
- End If
+
Catch ex As Exception
@@ -968,7 +981,7 @@ Public Class cRKSV
End Try
Return False
End Function
- Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String) As Boolean
+ Shared Function stornoRKSV_FT(ByVal kasse As cRKSV_Kasse, ByVal beleg_temp As EABeleg, ByRef QR_CodeString As String, ByRef LastJWS As String, ByRef answer As String, TSEisOnline As Boolean) As Boolean
Try
If beleg_temp.rksv_BelegId <= 0 Then
@@ -1013,9 +1026,9 @@ Public Class cRKSV
Else
Dim client As New cFiskaltrustClient_chilkat(kasse.rksv_FT_RestServiceURL, kasse.rksv_FT_CashboxID, kasse.rksv_FT_AccessToken, kasse.rksv_FT_Country)
- Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id)
+ Dim result = client.ChancelReceipt(beleg_temp.FT_ReceiptReference, beleg_temp.rksv_umsatz, steuersatz, beleg_temp.POS, kindOfPayment, kasse.rksv_id, TSEisOnline)
If result <> "" Then
- Return client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True)
+ client.saveRKSV_FT(result, QR_CodeString, beleg_temp, True)
Else
Return False
End If
@@ -1325,6 +1338,11 @@ Public Class cRKSV
rpt.picVERAG.Image = My.Resources.FrontOfficeSUB
rpt.lblFirma_Name.Text = "Front-Office Suben eG"
rpt.lblFirma_Details.Text = "A 4975 Suben | Suben 14" & vbNewLine & "UID: ATU74813856 "
+ Case "FT DE-KLIPPHAUSEN", "TEST-KASSE FT DE"
+ 'Default Werte:
+ rpt.picVERAG.Image = My.Resources.Klipphausen_Logo
+ rpt.lblFirma_Name.Text = "Front-Office Klipphausen GmbH"
+ rpt.lblFirma_Details.Text = "D 01665 Klipphausen | Am Bahndamm 3"
End Select
If KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv Then
@@ -1821,6 +1839,188 @@ Public Class cRKSV
End Function
+ Public Shared Function printStatusBelegFiskaltrust(KASSE As cRKSV_Kasse, PERSONAL As cPersonal, AUTODRUCK As Boolean, Firma As String, fiskaltrustReceiptCasTypIntern As String) As Boolean
+ Try
+
+ If PERSONAL Is Nothing Then
+ Dim FMZOLL_SQL As New FMZOLL_SQL
+ PERSONAL = FMZOLL_SQL.getPersonalById(274)
+ End If
+
+ Dim ib = ""
+
+ Dim TESTBUCHUNG = False
+ Dim oldBelegZaehler = KASSE.rksv_BelegIdZaehler
+ Dim summe As Double = 0
+ Dim RKSV_Beleg_Id = KASSE.INCREASE_BELEG_UMSATZ(If(TESTBUCHUNG, 0, summe))
+ If RKSV_Beleg_Id < 0 Then
+ 'Exit Function
+ Return False
+ End If
+
+
+ Dim belegBez As String = fiskaltrustReceiptCasTypIntern
+
+
+ Dim BELEG As New EABeleg(PERSONAL.Mandant, PERSONAL.Niederlassung, PERSONAL.ID)
+ ' Dim GJ = New cGeschaeftsjahr(BELEG.Mandant, BELEG.Niederlassung, BELEG.Benutzer, cRKSV.getGJ(BELEG.BelegDat))
+
+ BELEG.Ordnungsbegriff = "*** " & belegBez & " ***"
+ BELEG.Beleg_TYP = "0"
+ BELEG.Belegart = "0"
+ BELEG.Name1 = "*** " & belegBez & " ***"
+ BELEG.Steuerschlüssel = 3510
+ BELEG.BelegNr = cRKSV.getNewBelegNr(BELEG, Firma) 'GJ.INCREASE_BELEG() 'Vergabe der Belegnummer '
+ ' Beleg noch nicht gespeichert.... BELEG.DEL_POS_List()' Positionen löschen, da BelegNr Neu vergeben
+ For Each p In BELEG.POS
+ p.BelegNr = BELEG.BelegNr
+ Next
+ BELEG.gebucht = True
+ BELEG.SAVE()
+
+
+ ' QR_Image = Nothing
+ Dim QR_CodeString As String = ""
+ Dim LastJWS As String = ""
+ Dim isFiskaltrust As Boolean = False
+ Dim verarbeitet As Boolean = False
+ If KASSE.rksv_aktiv Then ' WENN für die Kasse die RKSV gilt
+ Dim answer = ""
+
+ If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then
+ Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
+ isFiskaltrust = client_chilkat.isFiskaltrust()
+ End If
+
+ If isFiskaltrust Then
+ Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, 0, TESTBUCHUNG, QR_CodeString, LastJWS, fiskaltrustReceiptCasTypIntern)
+ verarbeitet = result
+ End If
+
+
+ If Not verarbeitet Then
+
+ If Not TESTBUCHUNG Then
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summe * -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.")
+
+ Return False
+ End If
+ ' If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+ End If
+
+ If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die DEUTSCHLAND gilt
+ Dim answer = ""
+
+ '*Nullbelg-POS*
+ Dim POS As New EABelegPositionen
+ POS.Abfertigungsart = 10 '"Sonstiges"
+ POS.Mandant = BELEG.Mandant
+ POS.Niederlassung = BELEG.Niederlassung
+ POS.Benutzer = BELEG.Benutzer
+ POS.BelegDat = BELEG.BelegDat
+ POS.BelegNr = BELEG.BelegNr
+ POS.PreislistenPos = -1
+ POS.LeistungsNr = 499
+ POS.LeistungsBez = belegBez
+ POS.Leistungsbeschreibung = belegBez
+ POS.PreislistenNr = -1
+ POS.PreistabellenNr = -1
+ POS.Preis = 0
+ POS.Anzahl = 1
+ POS.Anzahlmultiplikator = 1
+ POS.Betrag = 0
+ POS.Preisbindung = 0
+ ' POS.AbfertigungsNr = 000
+ BELEG.POS.Add(POS)
+
+ If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, 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, summe * -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.")
+
+ Return False
+ 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 = summe
+ BELEG.rksv_aktiv = (KASSE.rksv_aktiv Or KASSE.rksvDE_aktiv)
+ BELEG.SAVE()
+
+ Dim rksv As New cRKSV_Kasse(PERSONAL.cRKSV_Kasse.rksv_id)
+
+ Select Case fiskaltrustReceiptCasTypIntern
+ Case ReceiptCaseIntern.NULLBELEG
+ rksv.SET_NULLBELEG()
+ Case ReceiptCaseIntern.STARTBELEG
+ rksv.SET_INITIALSTARTBELEG()
+ Case ReceiptCaseIntern.OUTOFOPERATIONBELEG
+ rksv.SET_OUTOFORDERBELEG()
+ Case ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG
+ rksv.SET_OUTOFORDERBELEG()
+ Case ReceiptCaseIntern.DAILYCLOSING
+ SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfDayReceipt = getDate() where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL")
+ End Select
+
+
+ If isFiskaltrust Then
+
+
+ End If
+
+ 'printBeleg(BELEG, KASSE, PERSONAL, cboPrinter.SelectedItem.ToString) 'Beleg drucken
+
+
+ If AUTODRUCK Then
+ Dim pName = ""
+ For Each sPrinter As String In System.Drawing.Printing.PrinterSettings.InstalledPrinters
+ If sPrinter = "AUTODRUCK_MAIL" Then pName = sPrinter : Exit For
+ Next
+ If pName = "" Then
+ Dim oPS As New System.Drawing.Printing.PrinterSettings
+ pName = oPS.PrinterName
+ End If
+ cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, pName, False) 'Beleg drucken
+ Else
+ cRKSV.printKundenBeleg(BELEG, KASSE, PERSONAL, "", False) 'Beleg drucken
+ End If
+
+ Return True
+ ' End If
+
+ Catch ex As Exception
+ MsgBox(ex.Message & ex.StackTrace)
+ End Try
+ Return False
+
+ End Function
+
+
+
Public Shared Function getCardSerialInReader(kasse_id As Integer, reader As String)
Try
diff --git a/SDL/Classes/cRKSV_Kasse.vb b/SDL/Classes/cRKSV_Kasse.vb
index f76d0f02..18c17044 100644
--- a/SDL/Classes/cRKSV_Kasse.vb
+++ b/SDL/Classes/cRKSV_Kasse.vb
@@ -30,6 +30,12 @@ Public Class cRKSV_Kasse
Property rksv_FT_RestServiceURL As Object = Nothing
Property rksv_FT_Country As Object = Nothing
+ Property rksv_FT_ZeroReceiptCreated As Object = Nothing
+
+ Property rksv_FT_InitialStartCreated As Object = Nothing
+
+ Property rksv_FT_OutOfOrderCreated As Object = Nothing
+
Dim SQL As New SQL
@@ -184,6 +190,54 @@ Public Class cRKSV_Kasse
Return False
End Function
+ Public Function SET_NULLBELEG() As Boolean
+ Try
+ Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL()
+ Using cmd As New SqlCommand(" UPDATE [tblRKSV_Kassen] SET rksv_FT_ZeroReceiptCreated = getDate() WHERE rksv_id=@rksv_id", conn)
+ cmd.Parameters.AddWithValue("@rksv_id", rksv_id)
+ Dim dr = cmd.ExecuteReader()
+ dr.Close()
+ End Using
+ End Using
+ Return True
+ Catch ex As Exception
+ MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
+ End Try
+ Return False
+ End Function
+
+ Public Function SET_OUTOFORDERBELEG() As Boolean
+ Try
+ Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL()
+ Using cmd As New SqlCommand(" UPDATE [tblRKSV_Kassen] SET rksv_FT_OutOfOrderCreated = getDate() WHERE rksv_id=@rksv_id", conn)
+ cmd.Parameters.AddWithValue("@rksv_id", rksv_id)
+ Dim dr = cmd.ExecuteReader()
+ dr.Close()
+ End Using
+ End Using
+ Return True
+ Catch ex As Exception
+ MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
+ End Try
+ Return False
+ End Function
+
+ Public Function SET_INITIALSTARTBELEG() As Boolean
+ Try
+ Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL()
+ Using cmd As New SqlCommand(" UPDATE [tblRKSV_Kassen] SET rksv_FT_InitialStartCreated = getDate() WHERE rksv_id=@rksv_id", conn)
+ cmd.Parameters.AddWithValue("@rksv_id", rksv_id)
+ Dim dr = cmd.ExecuteReader()
+ dr.Close()
+ End Using
+ End Using
+ Return True
+ Catch ex As Exception
+ MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
+ End Try
+ Return False
+ End Function
+
Public Function SAVE() As Boolean 'obj As Object, tablename As String, where As String) As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.MyListItem2) = getParameterList()
@@ -208,7 +262,6 @@ Public Class cRKSV_Kasse
Me.rksv_id = cSqlDb.checkNullReturnValue(dr.Item("rksv_id"), Nothing)
Me.rksv_bez = cSqlDb.checkNullReturnValue(dr.Item("rksv_bez"), Nothing)
Me.rksv_CompanyGUID = cSqlDb.checkNullReturnValue(dr.Item("rksv_CompanyGUID"), Nothing)
-
Me.rksv_firma = cSqlDb.checkNullReturnValue(dr.Item("rksv_firma"), Nothing)
Me.rksv_startdatum = cSqlDb.checkNullReturnValue(dr.Item("rksv_startdatum"), Nothing)
Me.rksv_aktiv = cSqlDb.checkNullReturnValue(dr.Item("rksv_aktiv"), Nothing)
@@ -232,6 +285,9 @@ Public Class cRKSV_Kasse
Me.rksv_FT_AccessToken = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_AccessToken"), Nothing)
Me.rksv_FT_RestServiceURL = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_RestServiceURL"), Nothing)
Me.rksv_FT_Country = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_Country"), Nothing)
+ Me.rksv_FT_ZeroReceiptCreated = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_ZeroReceiptCreated"), Nothing)
+ Me.rksv_FT_OutOfOrderCreated = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_OutOfOrderCreated"), Nothing)
+ Me.rksv_FT_InitialStartCreated = cSqlDb.checkNullReturnValue(dr.Item("rksv_FT_InitialStartCreated"), Nothing)
End If
dr.Close()
@@ -273,6 +329,9 @@ Public Class cRKSV_Kasse
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_AccessToken", rksv_FT_AccessToken))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_RestServiceURL", rksv_FT_RestServiceURL))
list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_Country", rksv_FT_Country))
+ list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_ZeroReceiptCreated", rksv_FT_ZeroReceiptCreated))
+ list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_InitialStartCreated", rksv_FT_InitialStartCreated))
+ list.Add(New VERAG_PROG_ALLGEMEIN.MyListItem2("rksv_FT_OutOfOrderCreated", rksv_FT_OutOfOrderCreated))
Return list
diff --git a/SDL/Fakturierung/cAutomailversand.vb b/SDL/Fakturierung/cAutomailversand.vb
index a1fbbf64..bbc88c3f 100644
--- a/SDL/Fakturierung/cAutomailversand.vb
+++ b/SDL/Fakturierung/cAutomailversand.vb
@@ -404,6 +404,12 @@ Public Class cAutomailversand
Subject = Subject.Replace("%Belegtyp%", belegtyp)
Subject = Subject.Replace("%BelegNr%", txtRgNr)
+ If RECHNUNG IsNot Nothing Then
+ Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", RECHNUNG.FilialenNr & "-" & RECHNUNG.AbfertigungsNr & "-" & RECHNUNG.UnterNr)
+ Else
+ Subject = Subject.Replace("%FilialNr%%AbfertigungsNr%-%UnterNr%", "")
+ End If
+
TextHTML &= r.txt_text
TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp)
@@ -1414,7 +1420,7 @@ Public Class cAutomailversand
End Function
- Private Function setAccountToSend(FIRMA_ID As Integer) As String
+ Public Function setAccountToSend(FIRMA_ID As Integer) As String
Dim tmpFirma = New VERAG_PROG_ALLGEMEIN.cFirmen(FIRMA_ID)
@@ -1529,7 +1535,7 @@ Public Class cAutomailversand
End Function
- Public Shared Function automRechnungsversand_aktivieren(showMessage As Boolean, Optional isEinzelrechnung As Boolean = False)
+ Public Shared Function automRechnungsversand_aktivieren(showMessage As Boolean, datum As Date, Optional isEinzelrechnung As Boolean = False)
Dim RE_Text = ""
@@ -1542,7 +1548,7 @@ Public Class cAutomailversand
If Not showMessage Then
Return True
Else
- If vbYes = MsgBox("Möchten Sie für " & RE_Text & " den automatischen Emailversand aktivieren?" & vbNewLine & "Die Rechnungen werden automatisch im Nachtlauf per EMail verschickt!", vbYesNoCancel) Then
+ If vbYes = MsgBox("Möchten Sie für " & RE_Text & " den automatischen Emailversand aktivieren?" & vbNewLine & "Die Rechnungen werden automatisch im Nachtlauf per EMail verschickt!" & vbNewLine & "Rechungsdatum: " & datum.ToShortDateString, vbYesNoCancel) Then
Return True
Else
Return False
diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb
index 7000b6fe..22b04357 100644
--- a/SDL/Fakturierung/cFakturierung.vb
+++ b/SDL/Fakturierung/cFakturierung.vb
@@ -945,7 +945,7 @@ Public Class cFakturierung
Case 1
rpt.picVERAG.Image = My.Resources.Verag_AG_Logo
- rpt.Picture1.Image = My.Resources.aeo_AT_imex
+ rpt.Picture1.Image = My.Resources.aeo
Case 4
rpt.picVERAG.Image = My.Resources.Verag_AG_Logo
@@ -2627,12 +2627,20 @@ Public Class cFakturierung
If listVZMonth.Count > 0 Then
If listVZMonth.Count = 1 Then
- MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString
+ MonthStart = IIf(listVZMonth(0) < 10, "0", "") & listVZMonth(0).ToString
MonthEnd = ""
Else
- MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString
- MonthEnd = IIf(CDate(MWSTAntrag.UStVAn_ReDatBis).Month < 10, "0", "") & listVZMonth(listVZMonth.Count - 1).ToString
+ MonthStart = IIf(listVZMonth(0) < 10, "0", "") & listVZMonth(0).ToString
+ MonthEnd = IIf(listVZMonth(listVZMonth.Count - 1) < 10, "0", "") & listVZMonth(listVZMonth.Count - 1).ToString
End If
+
+ 'If listVZMonth.Count = 1 Then
+ ' MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString
+ ' MonthEnd = ""
+ 'Else
+ ' MonthStart = IIf(CDate(MWSTAntrag.UStVAn_ReDatVon).Month < 10, "0", "") & listVZMonth(0).ToString
+ ' MonthEnd = IIf(CDate(MWSTAntrag.UStVAn_ReDatBis).Month < 10, "0", "") & listVZMonth(listVZMonth.Count - 1).ToString
+ 'End If
End If
@@ -3050,6 +3058,9 @@ Public Class cFakturierung
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(RECHNUNG.Firma_ID)
Dim desc As InvoiceDescriptor = InvoiceDescriptor.CreateInvoice(addYeartoRgNr(FIRMA.Firma_ID, RECHNUNG.Buchungsjahr) & RECHNUNG.RechnungsNr, RECHNUNG.RechnungsDatum, IIf(FIRMA.Firma_ID = 26, CurrencyCodes.GBP, CurrencyCodes.EUR))
+
+
+
Select Case RECHNUNG.BelegartenKz
Case "AR"
desc.Name = "SPEDITIONSRECHNUNG"
@@ -3100,29 +3111,34 @@ Public Class cFakturierung
' Optionally, to support Peppol-----------------------------
+ If RECHNUNG.FilialenNr > 0 AndAlso RECHNUNG.AbfertigungsNr > 0 Then
+ Dim lrn = RECHNUNG.FilialenNr & "/" & RECHNUNG.AbfertigungsNr
+ desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument)
+
+ End If
If Not IsDBNull(RECHNUNG.RechnungsUstIdNr) AndAlso RECHNUNG.RechnungsUstIdNr IsNot Nothing AndAlso Not IsDBNull(RECHNUNG.RechnungsUstIdKz) AndAlso RECHNUNG.RechnungsUstIdKz IsNot Nothing Then
- desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA)
- If vatBuyer Then
- desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer)
- desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller)
+ desc.AddBuyerTaxRegistration(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, TaxRegistrationSchemeID.VA)
+ If vatBuyer Then
+ desc.SetBuyerElectronicAddress(RECHNUNG.RechnungsUstIdKz & RECHNUNG.RechnungsUstIdNr, vatBuyer)
+ desc.SetSellerElectronicAddress(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), vatSeller)
+ End If
+
+ End If
+ '-----------------------------
+ desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum)
+
+ Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0)
+ Dim steuerProzenFaktor As Double = 0
+ If steuerProzent > 0 AndAlso steuerProzent < 1 Then
+ steuerProzenFaktor = steuerProzent * 100
End If
- End If
- '-----------------------------
- desc.ActualDeliveryDate = (RECHNUNG.Abfertigungsdatum)
- Dim steuerProzent As Double = SQL.DLookup(" isnull([Steuersatz %],0)", "[Steuertabelle] ", "[Steuerschlüssel]='" & checkNull(RECHNUNG.Steuerschlüssel) & "'", "FMZOLL", 0)
- Dim steuerProzenFaktor As Double = 0
- If steuerProzent > 0 AndAlso steuerProzent < 1 Then
- steuerProzenFaktor = steuerProzent * 100
- End If
+ Dim sumNetto As Double = 0
+ For Each p In RECHNUNG.POSITIONEN
-
- Dim sumNetto As Double = 0
- For Each p In RECHNUNG.POSITIONEN
-
- Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem(
+ Dim tradeLineItemNew As TradeLineItem = desc.AddTradeLineItem(
name:=p.LeistungsBez,
billedQuantity:=Convert.ToDecimal(p.Anzahl),
unitCode:=QuantityCodes.C62, ' immer in Stück
@@ -3132,27 +3148,27 @@ Public Class cFakturierung
taxPercent:=IIf(p.Steuerpflichtig, Convert.ToDecimal(RECHNUNG.Steuersatz_Proz * 100), 0),
taxType:=IIf(p.Steuerpflichtig, TaxTypes.VAT, TaxTypes.VAT)
)
- Dim netUnitPrice = Convert.ToDecimal(p.Preis)
- Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis))
- Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl)
- sumNetto += netPricePos
- Next
+ Dim netUnitPrice = Convert.ToDecimal(p.Preis)
+ Dim grossUnitPrice = IIf(p.Steuerpflichtig, Convert.ToDecimal(p.Preis * (1 + RECHNUNG.Steuersatz_Proz)), Convert.ToDecimal(p.Preis))
+ Dim netPricePos = netUnitPrice * Convert.ToDecimal(p.Anzahl)
+ sumNetto += netPricePos
+ Next
- 'Summe aller Rechnungspositions-Nettobeträge der Rechnung
- Dim lineTotalAmont = sumNetto
- 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung,
- 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ??????????????????
- Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0)
- ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0
- Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount)
- 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer
- 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
- Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
- 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag
- 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
- Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
+ 'Summe aller Rechnungspositions-Nettobeträge der Rechnung
+ Dim lineTotalAmont = sumNetto
+ 'Der Gesamtbetrag der Umsatzsteuer für die Rechnung,
+ 'IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2), 0) ??????????????????
+ Dim taxTotalAmount = IIf(RECHNUNG.SteuerpflichtigerGesamtbetrag <> 0, Math.Round(Convert.ToDecimal(RECHNUNG.SteuerpflichtigerGesamtbetrag) / (100 + steuerProzenFaktor) * steuerProzenFaktor, 2, MidpointRounding.AwayFromZero), 0)
+ ' Die Gesamtsumme der Rechnung ohne Umsatzsteuer ' RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0
+ Dim taxBasisAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + 0 - 0 - taxTotalAmount)
+ 'Der Gesamtbetrag der Rechnung mit Umsatzsteuer
+ 'Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
+ Dim grandTotalAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
+ 'Der ausstehende Betrag, um dessen Zahlung gebeten wird. Dieser Betrag ist der Rechnungsgesamtbetrag einschließlich Umsatzsteuer abzüglich des im Voraus gezahlten Betrages.Im Falle einer vollständig beglichenen Rechnung ist dieser Betrag gleich null. Der Betrag kann negativ sein; In diesem Fall schuldet der Verkäufer dem Käufer den Betrag
+ 'Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag + taxTotalAmount)
+ Dim duePayableAmount = Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag + RECHNUNG.SteuerpflichtigerGesamtbetrag)
- desc.SetTotals(
+ desc.SetTotals(
lineTotalAmount:=Convert.ToDecimal(lineTotalAmont),
chargeTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Zuschläge der Dokumentenebene
allowanceTotalAmount:=0, 'Summe aller in der Rechnung enthaltenen Abschläge der Dokumenteneben
@@ -3165,96 +3181,96 @@ Public Class cFakturierung
)
- desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum)
+ desc.AddTradePaymentTerms(RECHNUNG.TextZZ, zahlungszieldatum)
- 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then
- ' desc.SetPaymentMeansSepaDirectDebit("", "")
- 'Else
- desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ)
- 'End If
+ 'If RECHNUNG.TextZZ.ToString.Contains("Abbuchungsauftrag") Then
+ ' desc.SetPaymentMeansSepaDirectDebit("", "")
+ 'Else
+ desc.SetPaymentMeans(PaymentMeansTypeCodes.SEPACreditTransfer, RECHNUNG.TextZZ)
+ 'End If
- Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG)
- If isReverseCharge Then
- Select Case RECHNUNG.RechnungSprache
- Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI)
- Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI)
- End Select
- End If
+ Dim isReverseCharge = isReverseChargeSumme(FIRMA, RECHNUNG)
+ If isReverseCharge Then
+ Select Case RECHNUNG.RechnungSprache
+ Case "EN" : desc.AddNote("The VAT liability is transferred to the recipient of the service (reverse charge system).", SubjectCodes.AAI)
+ Case Else : desc.AddNote("Die Umsatzsteuerschuld geht auf den Leistungsempfänger über (Reverse Charge Verfahren).", SubjectCodes.AAI)
+ End Select
+ End If
- If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then
- desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z)
- End If
+ If RECHNUNG.SteuerfreierGesamtbetrag > 0 Then
+ desc.AddApplicableTradeTax(Convert.ToDecimal(RECHNUNG.SteuerfreierGesamtbetrag), 0, 0, TaxTypes.VAT, TaxCategoryCodes.Z)
+ End If
- If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then
- desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S))
- End If
+ If RECHNUNG.SteuerpflichtigerGesamtbetrag > 0 Then
+ desc.AddApplicableTradeTax(Convert.ToDecimal(taxBasisAmount - RECHNUNG.SteuerfreierGesamtbetrag), Convert.ToDecimal(steuerProzenFaktor), Convert.ToDecimal(taxTotalAmount), TaxTypes.VAT, IIf(isReverseCharge, TaxCategoryCodes.AE, TaxCategoryCodes.S))
+ End If
- Select Case FIRMA.Firma_ID
- Case 21, 22, 23 '"UNISPED"
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ Select Case FIRMA.Firma_ID
+ Case 21, 22, 23 '"UNISPED"
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- Case 26 'VERAG-UNISPED"
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ Case 26 'VERAG-UNISPED"
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- Case 24 'AMBAR"
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- 'Änderung Ticket_Nr.: 6983
- 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
- desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
+ Case 24 'AMBAR"
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ 'Änderung Ticket_Nr.: 6983
+ 'desc.AddCreditorFinancialAccount("TR90 0006 2001 6040 0009 0804 66", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
+ desc.AddCreditorFinancialAccount("TR67 0006 2000 5440 0009 0513 57", "TGBATRISXXX",,, "Garanti Bank Türkei – Euro Konto")
- Case 20 '"IMEX"
- If RECHNUNG.RechnungsLandKz = "TR" Then
- desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank")
- Else
- If hasVK(RECHNUNG) Then
- desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG")
+ Case 20 '"IMEX"
+ If RECHNUNG.RechnungsLandKz = "TR" Then
+ desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "",,, "Garanti Bank")
Else
- If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then
- desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", )
+ If hasVK(RECHNUNG) Then
+ desc.AddCreditorFinancialAccount("AT35 4480 0365 7822 0002", "VBOEATWWOOE",,, "Volksbank Oberösterreich AG")
Else
- desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG")
+ If hasEUSTZOLL(RECHNUNG.RechnungsNr) Then
+ desc.AddCreditorFinancialAccount("AT62 4480 0365 7822 0001", "VBOEATWWOOE", )
+ Else
+ desc.AddCreditorFinancialAccount("TR84 0006 2001 6040 0009 0987 13", "VBOEATWWOOE", ,, "Volksbank Oberösterreich AG")
+ End If
End If
End If
- End If
- Case 19
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ Case 19
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- Case Else 'VERAG,ATILLA
- If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
- If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
+ Case Else 'VERAG,ATILLA
+ If FIRMA.Firma_IBAN1 IsNot Nothing AndAlso FIRMA.Firma_BIC1 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung1 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN1 IsNot Nothing, FIRMA.Firma_IBAN1.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC1 IsNot Nothing, FIRMA.Firma_BIC1.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung1 IsNot Nothing, FIRMA.Firma_Bankverbindung1, ""))
+ If FIRMA.Firma_IBAN2 IsNot Nothing AndAlso FIRMA.Firma_BIC2 IsNot Nothing AndAlso FIRMA.Firma_Bankverbindung2 IsNot Nothing Then desc.AddCreditorFinancialAccount(IIf(FIRMA.Firma_IBAN2 IsNot Nothing, FIRMA.Firma_IBAN2.ToString.Replace("IBAN: ", ""), ""), IIf(FIRMA.Firma_BIC2 IsNot Nothing, FIRMA.Firma_BIC2.ToString.Replace("BIC: ", ""), ""),,, IIf(FIRMA.Firma_Bankverbindung2 IsNot Nothing, FIRMA.Firma_Bankverbindung2, ""))
- End Select
+ End Select
- Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False)
+ Dim tmpPathZugpferd = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("ZUGFeRD_Invoice_" & RECHNUNG.RechnungsNr, ".xml", True, False)
- Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None)
- desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
- End Using
+ Using stream As New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write, FileShare.None)
+ desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
+ End Using
- Return tmpPathZugpferd
+ Return tmpPathZugpferd
- 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write)
- 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
+ 'Dim stream As FileStream = New FileStream(tmpPathZugpferd, FileMode.Create, FileAccess.Write)
+ 'desc.Save(stream, ZUGFeRDVersion.Version20, Profile.Comfort)
- 'stream.Flush()
- 'stream.Close()
- 'Return tmpPathZugpferd
+ 'stream.Flush()
+ 'stream.Close()
+ 'Return tmpPathZugpferd
- ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then
+ ElseIf Not einzelrechnung AndAlso SR_DT IsNot Nothing Then
- '---------------------------------------------------------------------------------
- '--------------------------------SAMMELRECHNUNG-----------------------------------
- '---------------------------------------------------------------------------------
+ '---------------------------------------------------------------------------------
+ '--------------------------------SAMMELRECHNUNG-----------------------------------
+ '---------------------------------------------------------------------------------
- Dim ROW As DataRow = SR_DT.Rows(0)
+ Dim ROW As DataRow = SR_DT.Rows(0)
Dim FIRMA As New VERAG_PROG_ALLGEMEIN.cFirmen(ROW("Firma_ID"))
Dim RECHNUNG_AD As New VERAG_PROG_ALLGEMEIN.cAdressen(ROW("RechnungsKundenNr"))
@@ -3289,6 +3305,17 @@ Public Class cFakturierung
End Select
+ If Not IsDBNull(ROW("FilialenNr")) AndAlso Not IsDBNull(ROW("AbfertigungsNr")) Then
+
+ Dim filialenNr As String = ROW("FilialenNr").ToString().Trim()
+ Dim abfertigungsNr As String = ROW("AbfertigungsNr").ToString().Trim()
+
+ If filialenNr <> String.Empty AndAlso abfertigungsNr <> String.Empty Then
+ Dim lrn As String = filialenNr & "/" & abfertigungsNr
+ desc.AddAdditionalReferencedDocument(lrn, AdditionalReferencedDocumentTypeCode.ReferenceDocument)
+ End If
+ End If
+
'Die „Berechnung BT-10“ bezieht sich auf das Feld BT-10 „Buyer reference“ (Käuferreferenz) in der elektronischen Rechnung, speziell im XRechnung-Standard. Dieses Feld dient zur Angabe der Leitweg-ID
'für öffentliche Auftraggeber oder anderer Referenzinformationen für interne Zuordnungsprozesse.
'Die Leitweg-ID ist in Deutschland eine Pflichtangabe für elektronische Rechnungen an die Bundesverwaltung und muss vom Rechnungssteller vom Auftraggeber erhalten werden.
@@ -4458,16 +4485,18 @@ Public Class cFakturierung
End Function
- Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False, Optional RechnungsanhangPDF As Boolean = False, Optional RechnugnskopieMDMSammelrechnung As Boolean = False, Optional AnhList As List(Of String) = Nothing, Optional RechnungsanhangCSV As Boolean = False, Optional onlyAsfinagAnhang As Boolean = False, Optional saveInTherefore As Boolean = True) As Boolean
+ Public Shared Function doSAMMELRechnungsDruck_Abschnitt(ByRef RechnungsNr As Integer, Firma_ID As Integer, Buchungsjahr As Integer, DruckdatumUhrzeit As DateTime, PrinterName As String, Optional AnlageEinzelRg As Boolean = True, Optional Sammelrechnungsbericht As Boolean = True, Optional RechnungsdruckArt As Integer = -1, Optional ByRef pathPDF As String = "", Optional SRDruckWiederholen As Boolean = False, Optional SB As String = "", Optional AnlageExcelEvolog As Boolean = False, Optional ByRef SonstAnlagen As List(Of String) = Nothing, Optional VorschauID As String = "", Optional AnlageExcelTransferry360 As Boolean = False, Optional FakturierungsGruppe As String = "", Optional Abfertigungsart As String = "", Optional mergePDF As Boolean = False, Optional RechnungsanhangPDF As Boolean = False, Optional RechnugnskopieMDMSammelrechnung As Boolean = False, Optional AnhList As List(Of String) = Nothing, Optional RechnungsanhangCSV As Boolean = False, Optional onlyAsfinagAnhang As Boolean = False, Optional saveInTherefore As Boolean = True, Optional dt_temp As DataTable = Nothing) As Boolean
'SB Nicht mehr benötigt, da RG-Nr und DruckdatumUhrzeit
Dim dt As DataTable
If SRDruckWiederholen Then
dt = getSAMMELRechnung_Dt(RechnungsNr, DruckdatumUhrzeit, "3,4,5", ) ' 3,4,5-_> irgendebbs
+ dt_temp = dt
Else
'Dim RG_NR = New VERAG_PROG_ALLGEMEIN.cRechnungsnummern(Firma_ID, Buchungsjahr)
'RG_NR.INCREASE_RGNR() 'für die nächste Rechnung
dt = getSAMMELRechnung_Dt(RechnungsNr, DruckdatumUhrzeit, IIf(RechnungsdruckArt = 7, "2", "2, 3, 4"), [VorschauID])
+ dt_temp = dt
End If
' 3-_> Anlagen gedruckt
@@ -5581,6 +5610,7 @@ Public Class cFakturierung
End If
+
AddHandler rpt.Detail.Format, Sub()
' rpt.lblVon.Text = CDate(rpt.Fields.Item("von").Value).ToShortDateString
' rpt.lblLKWNr.Text = CDate(rpt.Fields.Item("bis").Value).ToShortDateString
@@ -5648,18 +5678,33 @@ Public Class cFakturierung
Dim KUNDE_ERW As New VERAG_PROG_ALLGEMEIN.cKundenErweitert(RECHNUNG.RechnungsKundenNr)
If KUNDE_ERW.kde_FakturierungSR_Details OrElse isMDMRechnungsdruck Then
- Dim subRpt = New rptSammelRechnungAnlagenDruck_Leistungen(rpt._LAN, RECHNUNG, VorschauID)
+ Dim isZNB As Boolean = False
+ Dim Anzahl = 0
+ Dim SteuerfreierBetrag As Double = 0
+ Dim SteuerpflichtigerBetrag As Double = 0
+ Dim LeistungsText As String = ""
+ If RECHNUNG.FilialenNr = 8001 AndAlso RECHNUNG.OffertenNr = 95 Then 'dann ist es eine Zinsnachberechnungs-Rechnung
+ isZNB = True
+ LeistungsText = "Nachberechnung von VZ "
+ 'LeistungsText = System.Text.RegularExpressions.Regex.Replace(LeistungsText, "\r\n|\r|\n", " ")
+ Anzahl = 1
+ SteuerfreierBetrag = RECHNUNG.SteuerfreierGesamtbetrag
+ SteuerpflichtigerBetrag = RECHNUNG.SteuerpflichtigerGesamtbetrag
+ End If
+
+
+ Dim subRpt = New rptSammelRechnungAnlagenDruck_Leistungen(rpt._LAN, RECHNUNG, VorschauID, isZNB, LeistungsText, Anzahl, SteuerpflichtigerBetrag, SteuerfreierBetrag)
rpt.SubReport.Report = subRpt
- rpt.lblSteuerfrei.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold)
- rpt.lblSteuerpflichtig.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold)
+ rpt.lblSteuerfrei.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold)
+ rpt.lblSteuerpflichtig.Font = New Font(rpt.lblSteuerfrei.Font, FontStyle.Bold)
- 'txtPackstuecke.Top += SubReport.Height
- 'txtKdAuftragsnummer.Top += SubReport.Height
- 'txtSendungsdetails.Top += SubReport.Height
- Else
- rpt.SubReport.Report = Nothing
+ 'txtPackstuecke.Top += SubReport.Height
+ 'txtKdAuftragsnummer.Top += SubReport.Height
+ 'txtSendungsdetails.Top += SubReport.Height
+ Else
+ rpt.SubReport.Report = Nothing
End If
' rpt.Line10.AnchorBottom = True
' rpt.Line10.Height = rpt.Detail.Height
@@ -6249,7 +6294,7 @@ Public Class cFakturierung
Else
- If RG_AH.Bezeichnung.ToUpper.Contains("MAUT") Or RG_AH.Bezeichnung.ToUpper.Contains("DIESEL") Or RG_AH.Bezeichnung.ToUpper.Contains("INVOICE") Then
+ If RG_AH.Bezeichnung.ToUpper.Contains("MAUT") Or RG_AH.Bezeichnung.ToUpper.Contains("DIESEL") Or RG_AH.Bezeichnung.ToUpper.Contains("INVOICE") Or RG_AH.Bezeichnung.ToUpper.Contains("VERZUGSZINSEN") Then
Dim Path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(RG_AH.dsId)
If Not listAnh.Contains(Path) Then
diff --git a/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb b/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb
index 5edfdcf5..6b1a8a01 100644
--- a/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb
+++ b/SDL/Fakturierung/frmAbrechnungHandling.Designer.vb
@@ -27,6 +27,7 @@
Me.Button2 = New System.Windows.Forms.Button()
Me.dgvHandling = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.btnPreisliste = New System.Windows.Forms.Button()
+ Me.cbxDivers = New System.Windows.Forms.CheckBox()
CType(Me.dgvHandling, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
@@ -82,11 +83,23 @@
Me.btnPreisliste.Text = "Preisliste"
Me.btnPreisliste.UseVisualStyleBackColor = True
'
+ 'cbxDivers
+ '
+ Me.cbxDivers.AutoSize = True
+ Me.cbxDivers.Location = New System.Drawing.Point(134, 421)
+ Me.cbxDivers.Name = "cbxDivers"
+ Me.cbxDivers.Size = New System.Drawing.Size(81, 17)
+ Me.cbxDivers.TabIndex = 5
+ Me.cbxDivers.Text = "CheckBox1"
+ Me.cbxDivers.UseVisualStyleBackColor = True
+ Me.cbxDivers.Visible = False
+ '
'frmAbrechnungHandling
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(800, 450)
+ Me.Controls.Add(Me.cbxDivers)
Me.Controls.Add(Me.btnPreisliste)
Me.Controls.Add(Me.dgvHandling)
Me.Controls.Add(Me.Button2)
@@ -97,6 +110,7 @@
Me.Text = "Handling"
CType(Me.dgvHandling, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
+ Me.PerformLayout()
End Sub
@@ -104,4 +118,5 @@
Friend WithEvents Button2 As Button
Friend WithEvents dgvHandling As VERAG_PROG_ALLGEMEIN.MyDatagridview
Friend WithEvents btnPreisliste As Button
+ Friend WithEvents cbxDivers As CheckBox
End Class
diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb
index bda671a5..5b744c90 100644
--- a/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb
+++ b/SDL/Fakturierung/frmAbrechnungsMaske.Designer.vb
@@ -32,6 +32,8 @@ Partial Class frmAbrechnungsMaske
Me.Label12 = New System.Windows.Forms.Label()
Me.dgvRechnungen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.Panel2 = New System.Windows.Forms.Panel()
+ Me.txtMailanzeigen = New System.Windows.Forms.TextBox()
+ Me.cbxMailoeffnen = New System.Windows.Forms.CheckBox()
Me.btn_doMailAutoversand = New System.Windows.Forms.Button()
Me.Button11 = New System.Windows.Forms.Button()
Me.cbxOriginalDrucken = New System.Windows.Forms.CheckBox()
@@ -52,10 +54,12 @@ Partial Class frmAbrechnungsMaske
Me.Label2 = New System.Windows.Forms.Label()
Me.Label10 = New System.Windows.Forms.Label()
Me.Panel1 = New System.Windows.Forms.Panel()
+ Me.txtRechnungsdatumAutomail = New VERAG_PROG_ALLGEMEIN.MyTextBox()
+ Me.dtp_RD_automail = New System.Windows.Forms.DateTimePicker()
Me.KdSearchBox1 = New VERAG_PROG_ALLGEMEIN.KdSearchBox()
+ Me.lblRechnungsdatumAUTOMAIL = New System.Windows.Forms.Label()
Me.lblKunde = New System.Windows.Forms.Label()
Me.PictureBox5 = New System.Windows.Forms.PictureBox()
- Me.cbxGutschriftenAnVerag = New System.Windows.Forms.CheckBox()
Me.cboRechnungsdruck = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.Label14 = New System.Windows.Forms.Label()
Me.cbx = New System.Windows.Forms.CheckBox()
@@ -87,10 +91,9 @@ Partial Class frmAbrechnungsMaske
Me.btnMonat = New System.Windows.Forms.Button()
Me.btnBisJahr = New System.Windows.Forms.Button()
Me.btnVonJahr = New System.Windows.Forms.Button()
+ Me.cbxGutschriftenAnVerag = New System.Windows.Forms.CheckBox()
Me.UsrCntlFaktAbrechnung1 = New SDL.usrCntlFaktAbrechnung()
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
- Me.cbxMailoeffnen = New System.Windows.Forms.CheckBox()
- Me.txtMailanzeigen = New System.Windows.Forms.TextBox()
Me.pnl.SuspendLayout()
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainer.Panel1.SuspendLayout()
@@ -111,7 +114,7 @@ Partial Class frmAbrechnungsMaske
Me.pnl.Dock = System.Windows.Forms.DockStyle.Fill
Me.pnl.Location = New System.Drawing.Point(0, 0)
Me.pnl.Name = "pnl"
- Me.pnl.Size = New System.Drawing.Size(1442, 615)
+ Me.pnl.Size = New System.Drawing.Size(1442, 646)
Me.pnl.TabIndex = 0
'
'SplitContainer
@@ -130,7 +133,7 @@ Partial Class frmAbrechnungsMaske
'SplitContainer.Panel2
'
Me.SplitContainer.Panel2.Controls.Add(Me.UsrCntlFaktAbrechnung1)
- Me.SplitContainer.Size = New System.Drawing.Size(1442, 615)
+ Me.SplitContainer.Size = New System.Drawing.Size(1442, 646)
Me.SplitContainer.SplitterDistance = 575
Me.SplitContainer.TabIndex = 0
'
@@ -138,10 +141,10 @@ Partial Class frmAbrechnungsMaske
'
Me.tbcntr.Controls.Add(Me.TabPage1)
Me.tbcntr.Dock = System.Windows.Forms.DockStyle.Fill
- Me.tbcntr.Location = New System.Drawing.Point(0, 170)
+ Me.tbcntr.Location = New System.Drawing.Point(0, 187)
Me.tbcntr.Name = "tbcntr"
Me.tbcntr.SelectedIndex = 0
- Me.tbcntr.Size = New System.Drawing.Size(575, 445)
+ Me.tbcntr.Size = New System.Drawing.Size(575, 459)
Me.tbcntr.TabIndex = 3
'
'TabPage1
@@ -153,7 +156,7 @@ Partial Class frmAbrechnungsMaske
Me.TabPage1.Location = New System.Drawing.Point(4, 22)
Me.TabPage1.Name = "TabPage1"
Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage1.Size = New System.Drawing.Size(567, 419)
+ Me.TabPage1.Size = New System.Drawing.Size(567, 433)
Me.TabPage1.TabIndex = 0
Me.TabPage1.Text = "Rechnungen"
Me.TabPage1.UseVisualStyleBackColor = True
@@ -197,7 +200,7 @@ Partial Class frmAbrechnungsMaske
Me.dgvRechnungen.RowHeadersVisible = False
Me.dgvRechnungen.RowTemplate.Height = 28
Me.dgvRechnungen.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect
- Me.dgvRechnungen.Size = New System.Drawing.Size(561, 316)
+ Me.dgvRechnungen.Size = New System.Drawing.Size(561, 334)
Me.dgvRechnungen.TabIndex = 1
'
'Panel2
@@ -225,12 +228,34 @@ Partial Class frmAbrechnungsMaske
Me.Panel2.Controls.Add(Me.Label2)
Me.Panel2.Controls.Add(Me.Label10)
Me.Panel2.Dock = System.Windows.Forms.DockStyle.Bottom
- Me.Panel2.Location = New System.Drawing.Point(3, 319)
+ Me.Panel2.Location = New System.Drawing.Point(3, 337)
Me.Panel2.Margin = New System.Windows.Forms.Padding(2)
Me.Panel2.Name = "Panel2"
- Me.Panel2.Size = New System.Drawing.Size(561, 97)
+ Me.Panel2.Size = New System.Drawing.Size(561, 93)
Me.Panel2.TabIndex = 0
'
+ 'txtMailanzeigen
+ '
+ Me.txtMailanzeigen.BorderStyle = System.Windows.Forms.BorderStyle.None
+ Me.txtMailanzeigen.Location = New System.Drawing.Point(327, 51)
+ Me.txtMailanzeigen.Multiline = True
+ Me.txtMailanzeigen.Name = "txtMailanzeigen"
+ Me.txtMailanzeigen.Size = New System.Drawing.Size(57, 34)
+ Me.txtMailanzeigen.TabIndex = 33
+ Me.txtMailanzeigen.Text = "Mail anzeigen"
+ '
+ 'cbxMailoeffnen
+ '
+ Me.cbxMailoeffnen.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
+ Me.cbxMailoeffnen.AutoSize = True
+ Me.cbxMailoeffnen.Checked = True
+ Me.cbxMailoeffnen.CheckState = System.Windows.Forms.CheckState.Checked
+ Me.cbxMailoeffnen.Location = New System.Drawing.Point(306, 54)
+ Me.cbxMailoeffnen.Name = "cbxMailoeffnen"
+ Me.cbxMailoeffnen.Size = New System.Drawing.Size(15, 14)
+ Me.cbxMailoeffnen.TabIndex = 32
+ Me.cbxMailoeffnen.UseVisualStyleBackColor = True
+ '
'btn_doMailAutoversand
'
Me.btn_doMailAutoversand.BackgroundImage = Global.SDL.My.Resources.Resources.auto_mailversand_small
@@ -463,10 +488,12 @@ Partial Class frmAbrechnungsMaske
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.White
+ Me.Panel1.Controls.Add(Me.txtRechnungsdatumAutomail)
+ Me.Panel1.Controls.Add(Me.dtp_RD_automail)
Me.Panel1.Controls.Add(Me.KdSearchBox1)
+ Me.Panel1.Controls.Add(Me.lblRechnungsdatumAUTOMAIL)
Me.Panel1.Controls.Add(Me.lblKunde)
Me.Panel1.Controls.Add(Me.PictureBox5)
- Me.Panel1.Controls.Add(Me.cbxGutschriftenAnVerag)
Me.Panel1.Controls.Add(Me.cboRechnungsdruck)
Me.Panel1.Controls.Add(Me.Label14)
Me.Panel1.Controls.Add(Me.cbx)
@@ -477,13 +504,52 @@ Partial Class frmAbrechnungsMaske
Me.Panel1.Controls.Add(Me.lblSachbearbeiter)
Me.Panel1.Controls.Add(Me.cboFirma)
Me.Panel1.Controls.Add(Me.MyPanel1)
+ Me.Panel1.Controls.Add(Me.cbxGutschriftenAnVerag)
Me.Panel1.Dock = System.Windows.Forms.DockStyle.Top
Me.Panel1.Location = New System.Drawing.Point(0, 0)
Me.Panel1.Margin = New System.Windows.Forms.Padding(2)
Me.Panel1.Name = "Panel1"
- Me.Panel1.Size = New System.Drawing.Size(575, 170)
+ Me.Panel1.Size = New System.Drawing.Size(575, 187)
Me.Panel1.TabIndex = 0
'
+ 'txtRechnungsdatumAutomail
+ '
+ Me.txtRechnungsdatumAutomail._DateTimeOnly = False
+ Me.txtRechnungsdatumAutomail._numbersOnly = False
+ Me.txtRechnungsdatumAutomail._numbersOnlyKommastellen = ""
+ Me.txtRechnungsdatumAutomail._numbersOnlyTrennzeichen = True
+ Me.txtRechnungsdatumAutomail._Prozent = False
+ Me.txtRechnungsdatumAutomail._ShortDateNew = True
+ Me.txtRechnungsdatumAutomail._ShortDateOnly = False
+ Me.txtRechnungsdatumAutomail._TimeOnly = False
+ Me.txtRechnungsdatumAutomail._TimeOnly_Seconds = False
+ Me.txtRechnungsdatumAutomail._value = ""
+ Me.txtRechnungsdatumAutomail._Waehrung = False
+ Me.txtRechnungsdatumAutomail._WaehrungZeichen = True
+ Me.txtRechnungsdatumAutomail.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.txtRechnungsdatumAutomail.ForeColor = System.Drawing.Color.Black
+ Me.txtRechnungsdatumAutomail.Location = New System.Drawing.Point(442, 42)
+ Me.txtRechnungsdatumAutomail.MaxLength = 10
+ Me.txtRechnungsdatumAutomail.MaxLineLength = -1
+ Me.txtRechnungsdatumAutomail.MaxLines_Warning = ""
+ Me.txtRechnungsdatumAutomail.MaxLines_Warning_Label = Nothing
+ Me.txtRechnungsdatumAutomail.Name = "txtRechnungsdatumAutomail"
+ Me.txtRechnungsdatumAutomail.Size = New System.Drawing.Size(73, 20)
+ Me.txtRechnungsdatumAutomail.TabIndex = 58
+ Me.txtRechnungsdatumAutomail.Visible = False
+ '
+ 'dtp_RD_automail
+ '
+ Me.dtp_RD_automail.CustomFormat = "''"
+ Me.dtp_RD_automail.Format = System.Windows.Forms.DateTimePickerFormat.Custom
+ Me.dtp_RD_automail.Location = New System.Drawing.Point(442, 42)
+ Me.dtp_RD_automail.Margin = New System.Windows.Forms.Padding(0)
+ Me.dtp_RD_automail.Name = "dtp_RD_automail"
+ Me.dtp_RD_automail.RightToLeft = System.Windows.Forms.RightToLeft.No
+ Me.dtp_RD_automail.Size = New System.Drawing.Size(106, 20)
+ Me.dtp_RD_automail.TabIndex = 59
+ Me.dtp_RD_automail.Visible = False
+ '
'KdSearchBox1
'
Me.KdSearchBox1._AlleFirmenCLUSTER = False
@@ -512,6 +578,16 @@ Partial Class frmAbrechnungsMaske
Me.KdSearchBox1.TIMER_SEARCH = True
Me.KdSearchBox1.usrcntl = Nothing
'
+ 'lblRechnungsdatumAUTOMAIL
+ '
+ Me.lblRechnungsdatumAUTOMAIL.AutoSize = True
+ Me.lblRechnungsdatumAUTOMAIL.Location = New System.Drawing.Point(331, 45)
+ Me.lblRechnungsdatumAUTOMAIL.Name = "lblRechnungsdatumAUTOMAIL"
+ Me.lblRechnungsdatumAUTOMAIL.Size = New System.Drawing.Size(74, 13)
+ Me.lblRechnungsdatumAUTOMAIL.TabIndex = 60
+ Me.lblRechnungsdatumAUTOMAIL.Text = "ReDat.-AUTO"
+ Me.lblRechnungsdatumAUTOMAIL.Visible = False
+ '
'lblKunde
'
Me.lblKunde.AutoSize = True
@@ -531,16 +607,6 @@ Partial Class frmAbrechnungsMaske
Me.PictureBox5.TabIndex = 133
Me.PictureBox5.TabStop = False
'
- 'cbxGutschriftenAnVerag
- '
- Me.cbxGutschriftenAnVerag.AutoSize = True
- Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(332, 44)
- Me.cbxGutschriftenAnVerag.Name = "cbxGutschriftenAnVerag"
- Me.cbxGutschriftenAnVerag.Size = New System.Drawing.Size(128, 17)
- Me.cbxGutschriftenAnVerag.TabIndex = 54
- Me.cbxGutschriftenAnVerag.Text = "nicht an Verag abger."
- Me.cbxGutschriftenAnVerag.UseVisualStyleBackColor = True
- '
'cboRechnungsdruck
'
Me.cboRechnungsdruck._allowedValuesFreiText = Nothing
@@ -568,11 +634,11 @@ Partial Class frmAbrechnungsMaske
Me.cbx.AutoSize = True
Me.cbx.Checked = True
Me.cbx.CheckState = System.Windows.Forms.CheckState.Checked
- Me.cbx.Location = New System.Drawing.Point(332, 61)
+ Me.cbx.Location = New System.Drawing.Point(313, 65)
Me.cbx.Name = "cbx"
- Me.cbx.Size = New System.Drawing.Size(181, 17)
+ Me.cbx.Size = New System.Drawing.Size(139, 17)
Me.cbx.TabIndex = 34
- Me.cbx.Text = "Gedruckte Rechnugen anzeigen"
+ Me.cbx.Text = "gedruckte Rechnungen"
Me.cbx.UseVisualStyleBackColor = True
'
'cboER_SR
@@ -662,9 +728,9 @@ Partial Class frmAbrechnungsMaske
Me.MyPanel1.Controls.Add(Me.btnBisJahr)
Me.MyPanel1.Controls.Add(Me.btnVonJahr)
Me.MyPanel1.Dock = System.Windows.Forms.DockStyle.Bottom
- Me.MyPanel1.Location = New System.Drawing.Point(0, 80)
+ Me.MyPanel1.Location = New System.Drawing.Point(0, 100)
Me.MyPanel1.Name = "MyPanel1"
- Me.MyPanel1.Size = New System.Drawing.Size(575, 90)
+ Me.MyPanel1.Size = New System.Drawing.Size(575, 87)
Me.MyPanel1.TabIndex = 51
Me.MyPanel1.Visible = False
'
@@ -979,6 +1045,16 @@ Partial Class frmAbrechnungsMaske
Me.btnVonJahr.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.btnVonJahr.UseVisualStyleBackColor = True
'
+ 'cbxGutschriftenAnVerag
+ '
+ Me.cbxGutschriftenAnVerag.AutoSize = True
+ Me.cbxGutschriftenAnVerag.Location = New System.Drawing.Point(454, 65)
+ Me.cbxGutschriftenAnVerag.Name = "cbxGutschriftenAnVerag"
+ Me.cbxGutschriftenAnVerag.Size = New System.Drawing.Size(118, 17)
+ Me.cbxGutschriftenAnVerag.TabIndex = 54
+ Me.cbxGutschriftenAnVerag.Text = "offene VERAG-Abr."
+ Me.cbxGutschriftenAnVerag.UseVisualStyleBackColor = True
+ '
'UsrCntlFaktAbrechnung1
'
Me.UsrCntlFaktAbrechnung1.BackColor = System.Drawing.Color.White
@@ -988,7 +1064,7 @@ Partial Class frmAbrechnungsMaske
Me.UsrCntlFaktAbrechnung1.Location = New System.Drawing.Point(0, 0)
Me.UsrCntlFaktAbrechnung1.Margin = New System.Windows.Forms.Padding(4, 5, 4, 5)
Me.UsrCntlFaktAbrechnung1.Name = "UsrCntlFaktAbrechnung1"
- Me.UsrCntlFaktAbrechnung1.Size = New System.Drawing.Size(863, 615)
+ Me.UsrCntlFaktAbrechnung1.Size = New System.Drawing.Size(863, 646)
Me.UsrCntlFaktAbrechnung1.TabIndex = 0
'
'ContextMenuStrip1
@@ -996,33 +1072,11 @@ Partial Class frmAbrechnungsMaske
Me.ContextMenuStrip1.Name = "ContextMenuStrip1"
Me.ContextMenuStrip1.Size = New System.Drawing.Size(61, 4)
'
- 'cbxMailoeffnen
- '
- Me.cbxMailoeffnen.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
- Me.cbxMailoeffnen.AutoSize = True
- Me.cbxMailoeffnen.Checked = True
- Me.cbxMailoeffnen.CheckState = System.Windows.Forms.CheckState.Checked
- Me.cbxMailoeffnen.Location = New System.Drawing.Point(306, 58)
- Me.cbxMailoeffnen.Name = "cbxMailoeffnen"
- Me.cbxMailoeffnen.Size = New System.Drawing.Size(15, 14)
- Me.cbxMailoeffnen.TabIndex = 32
- Me.cbxMailoeffnen.UseVisualStyleBackColor = True
- '
- 'txtMailanzeigen
- '
- Me.txtMailanzeigen.BorderStyle = System.Windows.Forms.BorderStyle.None
- Me.txtMailanzeigen.Location = New System.Drawing.Point(327, 51)
- Me.txtMailanzeigen.Multiline = True
- Me.txtMailanzeigen.Name = "txtMailanzeigen"
- Me.txtMailanzeigen.Size = New System.Drawing.Size(57, 34)
- Me.txtMailanzeigen.TabIndex = 33
- Me.txtMailanzeigen.Text = "Mail anzeigen"
- '
'frmAbrechnungsMaske
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(1442, 615)
+ Me.ClientSize = New System.Drawing.Size(1442, 646)
Me.Controls.Add(Me.pnl)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.KeyPreview = True
@@ -1114,4 +1168,7 @@ Partial Class frmAbrechnungsMaske
Friend WithEvents btn_doMailAutoversand As Button
Friend WithEvents txtMailanzeigen As TextBox
Friend WithEvents cbxMailoeffnen As CheckBox
+ Friend WithEvents txtRechnungsdatumAutomail As VERAG_PROG_ALLGEMEIN.MyTextBox
+ Friend WithEvents dtp_RD_automail As DateTimePicker
+ Friend WithEvents lblRechnungsdatumAUTOMAIL As Label
End Class
diff --git a/SDL/Fakturierung/frmAbrechnungsMaske.vb b/SDL/Fakturierung/frmAbrechnungsMaske.vb
index e5ccdcaf..e15174be 100644
--- a/SDL/Fakturierung/frmAbrechnungsMaske.vb
+++ b/SDL/Fakturierung/frmAbrechnungsMaske.vb
@@ -1,6 +1,8 @@
Imports System.IO
Imports GrapeCity.ActiveReports.PageReportModel
+Imports iText.IO.Util
Imports Microsoft.Office.Interop
+Imports sun.net.www.protocol
Imports VERAG_PROG_ALLGEMEIN
Public Class frmAbrechnungsMaske
@@ -12,6 +14,8 @@ Public Class frmAbrechnungsMaske
Dim FilialNrRestriction As Integer = -1
+ Dim setDefaultAutoMailversand As Boolean = VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("AUTOMAILVERSAND", "SDL")
+
Private Sub frmAbrechnungsMaske_Load(sender As Object, e As EventArgs) Handles Me.Load
'Größe anpassen:
@@ -49,6 +53,8 @@ Public Class frmAbrechnungsMaske
cboSort.Items.Add(New VERAG_PROG_ALLGEMEIN.MyListItem("Pos.Nr", "POS"))
cboSort.changeItem("EZ")
+
+ txtRechnungsdatumAutomail.Text = Today.ToShortDateString
'BERECHTIGUNG 90 = FAKTURIERUNG!!!
Dim FirmaTmp = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
@@ -56,6 +62,12 @@ Public Class frmAbrechnungsMaske
FirmaTmp = "VERAGIMEX"
End If
+
+ txtRechnungsdatumAutomail.Visible = setDefaultAutoMailversand
+ dtp_RD_automail.Visible = setDefaultAutoMailversand
+ lblRechnungsdatumAUTOMAIL.Visible = setDefaultAutoMailversand
+
+
'FirmaTmp = "AMBAR"
cboSachbearbeiter.Items.Clear()
@@ -357,7 +369,6 @@ Public Class frmAbrechnungsMaske
Button8.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
Button9.Visible = Not (enableAUTOMAIL_BTN AndAlso enableAUTOMAIL)
-
' sqlstr &= " AND (SteuerpflichtigerGesamtbetrag<>0 OR SteuerfreierGesamtbetrag<>0)"
Return sqlstr
End Function
@@ -909,15 +920,17 @@ Public Class frmAbrechnungsMaske
If IsNumeric(RK_ID) Then
Dim RG_TMP As New VERAG_PROG_ALLGEMEIN.cRechnungsausgang(RK_ID)
Dim sammelrechnungskopieMDM As Boolean = False
- Dim sammelrechnungMDMmitAnhang As Boolean = False
+ Dim sammelrechnungmitAnhang As Boolean = False
If RG_TMP IsNot Nothing Then
- 'id mitübergeben (1_> drucken, 2 Email, 3 PDF)
+
+ Dim tempPDF As String = ""
+ Dim listOfCSV As New List(Of String)
+
If RG_TMP.Sammelrechnung = 6 Then
If RG_TMP.Status = 4 Then sammelrechnungskopieMDM = True
- Dim tempPDF As String = ""
- Dim listOfCSV As New List(Of String)
- sammelrechnungMDMmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNoCancel)
- cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungMDMmitAnhang, sammelrechnungskopieMDM, listOfCSV, True)
+
+ sammelrechnungmitAnhang = MsgBox("Soll die MDM Sammelrechnung mit Anhang angezeigt werden?", vbYesNo)
+ cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 8, tempPDF, True,,,,,,,,, sammelrechnungmitAnhang, sammelrechnungskopieMDM, listOfCSV, True)
Select Case id
Case 1
@@ -948,16 +961,246 @@ Public Class frmAbrechnungsMaske
Else
- cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, id,, True,,,,,,,,,)
+
+ 'sammelrechnungmitAnhang = MsgBox("Soll die Sammelrechnung mit Anhang angezeigt werden?", vbYesNo)
+
+
+ Select Case id
+ Case 1
+ cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 3, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,)
+ Case 2
+ Try
+ Dim dt_temp As New DataTable
+ cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,, listOfCSV,,,, dt_temp)
+
+
+ Dim AD = New VERAG_PROG_ALLGEMEIN.cAdressen(RG_TMP.RechnungsKundenNr)
+
+ Dim outl As New Outlook.Application
+ Dim Mail As Microsoft.Office.Interop.Outlook.MailItem
+ Mail = outl.CreateItem(0)
+ Dim auto As New cAutomailversand
+ Dim oAccount As Outlook.Account
+ Dim accountToSent = ""
+
+ accountToSent = auto.setAccountToSend(RG_TMP.Firma_ID)
+
+ If accountToSent <> "" Then
+ If outl.Session.Accounts.Count > 0 Then
+ For Each oAccount In outl.Session.Accounts
+ If oAccount.SmtpAddress.ToLower = accountToSent.ToLower Then
+ Mail.SendUsingAccount = oAccount
+ Exit For
+ End If
+ Next
+ End If
+ End If
+
+ setEmailText(RG_TMP.RechnungsLandKz, RG_TMP.Firma_ID, RG_TMP.RechnungsNr, Mail.Subject, Mail.HTMLBody, RG_TMP.Sammelrechnung, RG_TMP.BelegartenNr)
+ setandcheckEmpfaengerMail_SR(dt_temp, AD, Mail.To, Mail.CC, Mail.BCC, RG_TMP.Firma_ID, RG_TMP.Sammelrechnung)
+ Dim anhangbezeichnung = getAnhangbezeichnung(AD.LandKz, RG_TMP, RG_TMP.BelegartenNr)
+ Mail.Attachments.Add(tempPDF, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , RG_TMP.RechnungsNr & "_" & anhangbezeichnung)
+ If listOfCSV.Count > 0 Then
+ For Each r In listOfCSV
+ Dim file As New FileInfo(r)
+ Mail.Attachments.Add(r, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , file.Name)
+ Next
+ End If
+ Mail.Display()
+
+ Catch ex As Exception
+ MsgBox("Fehler bim Öffnen des Mail-Programmes. PDF wird geladen!")
+ Process.Start(tempPDF)
+ End Try
+
+ Case 3 'PDF + öffnen
+ cFakturierung.doSAMMELRechnungsDruck_Abschnitt(RG_TMP.RechnungsNr, -1, -1, RG_TMP.DruckDatumZeit, "", False, True, 4, tempPDF, True,,,,,,,, True, sammelrechnungmitAnhang,,)
+ Process.Start(tempPDF)
+
+ End Select
+
+
+
+
+
End If
End If
+ Else
+
+ MsgBox("Bei " & cboFirma.SelectedItem.Text & " existiert keine Sammelrechnung mit der Nr: " & SR_RechnungsNr & "")
+
End If
+
+
+
End If
End Sub
+
+
+
+ Private Sub setEmailText(RechnungsLandKz As String, Firma_ID As Integer, RechnungsNr As Integer, ByRef Subject As String, ByRef TextHTML As String, ByRef SammelrechungArt As Integer, ByRef BelegartenNr As Integer)
+
+ Dim txtRgNr As String = IIf(RechnungsNr < 0, -1, RechnungsNr)
+ Dim Mailtext As String
+
+ Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
+ Dim listOfTextconserven As cTextkonserve_LIST = New cTextkonserve_LIST(4, "", Firma_ID)
+
+ Dim spracheRechnung As String = "EN" 'Defaultsprache
+
+ Dim belegtyp As String = If(BelegartenNr = 71, "credit note", "invoice")
+
+
+
+ Select Case RechnungsLandKz
+ Case "TR" : spracheRechnung = "TR" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "Kredi", "Fatura")
+ Case "RO"
+ If Firma_ID = 19 Then
+ spracheRechnung = "RO" : spracheRechnung = RechnungsLandKz : belegtyp = If(BelegartenNr = 71, "nota de credit", "factura")
+ End If
+
+ Case "DE", "A", "AT", "D", "CH" : spracheRechnung = "DE" : belegtyp = If(BelegartenNr = 71, "Gutschrift", "Rechnung")
+
+ Case "SRB", "HR", "SLO", "BIH", "MNE", "MK", "MO"
+ If Firma_ID = 19 Then
+ spracheRechnung = "SRB" : belegtyp = If(BelegartenNr = 71, "credit note", "invoice") 'Belegarten auf Englisch!
+ End If
+
+ End Select
+
+
+
+ If listOfTextconserven.LIST.Any(Function(c) c.txt_sprache = spracheRechnung) Then
+
+
+ Dim r As cTextkonserve = listOfTextconserven.LIST.Find(Function(c) c.txt_sprache = spracheRechnung)
+ If r IsNot Nothing Then
+ Subject = r.txt_betreff
+ Subject = Subject.Replace("%BelegNr%", txtRgNr)
+ Subject = Subject.Replace("%Belegtyp%", belegtyp)
+ TextHTML &= r.txt_text
+ If Mailtext <> "" Then TextHTML &= Mailtext
+ TextHTML &= vbNewLine & vbNewLine
+
+ TextHTML = TextHTML.Replace("%Belegtyp%", belegtyp)
+
+
+
+ End If
+ End If
+
+ TextHTML &= "
"
+ TextHTML &= "
"
+
+ Select Case RechnungsLandKz
+ Case "TR"
+ TextHTML &= "Saygilarimizla
"
+ Case "A", "AT", "D", "DE", "CH"
+ TextHTML &= "Mit freundlichen Grüßen
"
+ Case Else
+ TextHTML &= "Best regards
"
+ End Select
+
+
+
+ TextHTML &= VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME & "
"
+ TextHTML &= cFakturierung.getSignature(RechnungsLandKz, Firma_ID, True, True,,,,,, True)
+
+
+
+
+
+ End Sub
+
+ Private Function getAnhangbezeichnung(sprache As String, RECHNUNG As cRechnungsausgang, BelegartenNr As Integer, Optional onlyBelegsuebersetzung As Boolean = False)
+
+ Dim Anhangsbez = ""
+ If RECHNUNG IsNot Nothing Then
+
+ Select Case sprache
+ Case "A", "AT", "D", "DE", "CH"
+
+ If BelegartenNr = 71 Then
+ If onlyBelegsuebersetzung Then
+ Anhangsbez = "Gutschrift.pdf"
+ Else
+ Anhangsbez = "Gutschriftsanhaenge.pdf"
+ End If
+ Else
+ If onlyBelegsuebersetzung Then
+ Anhangsbez = "Rechnung.pdf"
+ Else
+ Anhangsbez = "Rechnungsanhaenge.pdf"
+ End If
+ End If
+
+ Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Kredi.pdf" Else Anhangsbez = "Fatura.pdf"
+ Case Else : If BelegartenNr = 71 Then Anhangsbez = "Creditnote.pdf" Else Anhangsbez = "Invoice.pdf"
+ End Select
+
+ Else
+
+
+ Select Case sprache
+ Case "A", "AT", "D", "DE", "CH" : If BelegartenNr = 71 Then Anhangsbez = "Sammelgutschrift.pdf" Else Anhangsbez = "Sammelrechnung.pdf"
+ Case "TR" : If BelegartenNr = 71 Then Anhangsbez = "Toplukredi.pdf" Else Anhangsbez = "Toplufatura.pdf"
+ Case Else : If BelegartenNr = 71 Then Anhangsbez = "Collectivecreditnote.pdf" Else Anhangsbez = "Collectiveinvoice.pdf"
+ End Select
+
+ End If
+
+ Return Anhangsbez
+
+
+ End Function
+
+ Public Shared Function setandcheckEmpfaengerMail_SR(ByRef SR_DT As DataTable, ByRef AD As cAdressen, ByRef EMAILTMP As String, ByRef EMAILTMPCC As String, ByRef EMAILTMPBCC As String, ByRef FirmaID As Integer, ByRef SammelrechungArt As String) As String
+
+ If SammelrechungArt <> 6 Then
+
+
+ Dim email_receipt As String = ""
+
+ Dim allAtilla = IIf(FirmaID = 7, True, False)
+ If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then
+ For Each r In SR_DT.Rows
+ If "4801" <> r("FilialenNr") And "4802" <> r("FilialenNr") Then
+ allAtilla = False
+ Exit For
+ End If
+ Next
+ End If
+
+ email_receipt = IIf(allAtilla, VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an (ATILLA)"), "")
+
+ EMAILTMP = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an"), email_receipt) 'VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an")
+ EMAILTMPCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressCC(AD.AdressenNr, "Rechnung an (ATILLA)"))
+ EMAILTMPBCC = IIf(email_receipt = "", VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an"), VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdressBCC(AD.AdressenNr, "Rechnung an (ATILLA)"))
+
+ Else
+
+ If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";"
+ If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";"
+
+
+ End If
+
+ If EMAILTMP = "" And EMAILTMPCC = "" And EMAILTMPBCC = "" Then
+
+ If AD.E_Mail IsNot Nothing AndAlso AD.E_Mail <> "" Then EMAILTMP &= AD.E_Mail & ";"
+ If AD.E_Mail2 IsNot Nothing AndAlso AD.E_Mail2 <> "" Then EMAILTMP &= AD.E_Mail2 & ";"
+
+ End If
+
+
+ Return EMAILTMP & EMAILTMPCC
+
+ End Function
+
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim f As New frmFaktAufschubSuche(False)
f.Show(Me)
@@ -1059,5 +1302,31 @@ Public Class frmAbrechnungsMaske
End If
+ End Sub
+
+ Private Sub txtRechnungsdatumAutomail_TextChanged(sender As Object, e As EventArgs) Handles txtRechnungsdatumAutomail.TextChanged
+ If txtRechnungsdatumAutomail._value <> "" AndAlso IsDate(txtRechnungsdatumAutomail._value) Then
+
+
+ UsrCntlFaktAbrechnung1.automail_rechnungsdatum = CDate(txtRechnungsdatumAutomail._value)
+
+
+
+ End If
+ End Sub
+
+ Private Sub dtp_RD_automail_ValueChanged(sender As Object, e As EventArgs) Handles dtp_RD_automail.ValueChanged
+
+ If CDate(sender.value).AddDays(-4) > Today() Then
+ MsgBox("Rechnungen können max. 4 Tage vordatiert werden!")
+ txtRechnungsdatumAutomail._value = Today
+ Else
+
+ txtRechnungsdatumAutomail._value = CDate(sender.value).ToShortDateString
+
+ End If
+
+
+
End Sub
End Class
\ No newline at end of file
diff --git a/SDL/Fakturierung/frmFaktEmail.vb b/SDL/Fakturierung/frmFaktEmail.vb
index 3f14e874..bc8046d9 100644
--- a/SDL/Fakturierung/frmFaktEmail.vb
+++ b/SDL/Fakturierung/frmFaktEmail.vb
@@ -1,5 +1,4 @@
-Imports GrapeCity.DataVisualization.TypeScript
-Imports Microsoft.Office.Interop
+Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
Public Class frmFaktEmail
@@ -196,7 +195,9 @@ Public Class frmFaktEmail
If RECHNUNG.FilialenNr = "4801" Or RECHNUNG.FilialenNr = "4802" Then email_receipt = VERAG_PROG_ALLGEMEIN.cKundenKontakte.getMailAdress(AD.AdressenNr, "Rechnung an (ATILLA)")
End If
-
+ If Firma_ID = 24 Then
+ cbxMergeRg.Checked = False
+ End If
Dim EMAILTMP = ""
Dim EMAILTMPCC = ""
@@ -575,85 +576,85 @@ Public Class frmFaktEmail
'Mail-Adressen eintragen
'-----------------------------------------------------------------
For Each r In dgvEmail.Rows
- If r.cells(0).value <> "" Then Mail.To &= r.cells(0).value & ";"
- Next
- For Each r In dgvEmailCC.Rows
- If r.cells(0).value <> "" Then Mail.CC &= r.cells(0).value & ";"
- Next
- For Each r In dgvEmailBCC.Rows
- If r.cells(0).value <> "" Then Mail.BCC &= r.cells(0).value & ";"
- Next
+ If r.cells(0).value <> "" Then Mail.To &= r.cells(0).value & ";"
+ Next
+ For Each r In dgvEmailCC.Rows
+ If r.cells(0).value <> "" Then Mail.CC &= r.cells(0).value & ";"
+ Next
+ For Each r In dgvEmailBCC.Rows
+ If r.cells(0).value <> "" Then Mail.BCC &= r.cells(0).value & ";"
+ Next
- RichTextBox.Text = RichTextBox.Text.Replace("%RgNr%", lastAktuelle_RgNr)
- txtSubject.Text = txtSubject.Text.Replace("%RgNr%", lastAktuelle_RgNr)
+ RichTextBox.Text = RichTextBox.Text.Replace("%RgNr%", lastAktuelle_RgNr)
+ txtSubject.Text = txtSubject.Text.Replace("%RgNr%", lastAktuelle_RgNr)
- Dim TextHTML = "
" & RichTextBox.Text.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, Firma_ID,,,, additionalLine,, IIf(Firma_ID = "24", True, False)) & "
"
+ Dim TextHTML = "" & RichTextBox.Text.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, Firma_ID,,,, additionalLine,, IIf(Firma_ID = "24", True, False)) & "
"
- Mail.HTMLBody = TextHTML
- Mail.Subject = txtSubject.Text
+ Mail.HTMLBody = TextHTML
+ Mail.Subject = txtSubject.Text
- ATTACHMENTS.Clear()
- '-----------------------------------------------------------------
- 'Rechnungen anfügen
- '-----------------------------------------------------------------
- For Each l In listPDFs
- ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
+ ATTACHMENTS.Clear()
+ '-----------------------------------------------------------------
+ 'Rechnungen anfügen
+ '-----------------------------------------------------------------
+ For Each l In listPDFs
+ ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
- ATTACHMENTS.Add(New cFakt_MailATTach(l, ""))
+ ATTACHMENTS.Add(New cFakt_MailATTach(l, ""))
- Next
- For Each l In SonstAnlagen
- ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
+ Next
+ For Each l In SonstAnlagen
+ ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
- ATTACHMENTS.Add(New cFakt_MailATTach(l, ""))
+ ATTACHMENTS.Add(New cFakt_MailATTach(l, ""))
- Next
- addAttachments(Mail, lastAktuelle_RgNr, cbxMergeRg.Checked)
+ Next
+ addAttachments(Mail, lastAktuelle_RgNr, cbxMergeRg.Checked)
- '-----------------------------------------------------------------
- 'Steuerbescheid/VDB anfügen
- '-----------------------------------------------------------------
- getAnhaenge()
- 'For Each l In listPDFs
- ' ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
- ' ATTACHMENTS.Add(New cFakt_MailATTach(l, ""))
- 'Next
+ '-----------------------------------------------------------------
+ 'Steuerbescheid/VDB anfügen
+ '-----------------------------------------------------------------
+ getAnhaenge()
+ 'For Each l In listPDFs
+ ' ' Mail.Attachments.Add(l, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue)
+ ' ATTACHMENTS.Add(New cFakt_MailATTach(l, ""))
+ 'Next
- 'Rechnungsanhänge anfügen
- '-----------------------------------------------------------------
- If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then
- For Each r In SR_DT.Rows
- Dim RG_ANH = VERAG_PROG_ALLGEMEIN.cRechnungsausgang.LOAD_ANHAENGE_LIST(r("RK_ID"))
- If RG_ANH IsNot Nothing Then
- For Each ANH In RG_ANH
- ATTACHMENTS.Add(New cFakt_MailATTach(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId), ANH.Bezeichnung))
- Next
- End If
+ 'Rechnungsanhänge anfügen
+ '-----------------------------------------------------------------
+ If SR_DT IsNot Nothing AndAlso SR_DT.Rows.Count > 0 Then
+ For Each r In SR_DT.Rows
+ Dim RG_ANH = VERAG_PROG_ALLGEMEIN.cRechnungsausgang.LOAD_ANHAENGE_LIST(r("RK_ID"))
+ If RG_ANH IsNot Nothing Then
+ For Each ANH In RG_ANH
+ ATTACHMENTS.Add(New cFakt_MailATTach(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(ANH.dsId), ANH.Bezeichnung))
Next
End If
- '-----------------------------------------------------------------
+ Next
+ End If
+ '-----------------------------------------------------------------
- addAttachments(Mail, lastAktuelle_RgNr, cbxMergePDF.Checked)
+ addAttachments(Mail, lastAktuelle_RgNr, cbxMergePDF.Checked)
- If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
- Try
- Mail.SentOnBehalfOfName = "buchhaltung@ambarlog.com"
- Catch ex2 As Exception
- MsgBox(ex2.Message)
- End Try
- End If
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
+ Try
+ Mail.SentOnBehalfOfName = "buchhaltung@ambarlog.com"
+ Catch ex2 As Exception
+ MsgBox(ex2.Message)
+ End Try
+ End If
- Mail.Display()
- '------------------------------------------------------------------------------------------
- ' STB /FA SR: ABFRAGE FISKAL-VZ
- If isFiskal Then
- send_StbFAMail(AD.AdressenNr, " Rg-Nr.: " & lastAktuelle_RgNr, lastAktuelle_RgNr)
- End If
+ Mail.Display()
+ '------------------------------------------------------------------------------------------
+ ' STB /FA SR: ABFRAGE FISKAL-VZ
+ If isFiskal Then
+ send_StbFAMail(AD.AdressenNr, " Rg-Nr.: " & lastAktuelle_RgNr, lastAktuelle_RgNr)
+ End If
'------------------------------------------------------------------------------------------
End If
@@ -793,65 +794,87 @@ Public Class frmFaktEmail
If Firma_ID = 19 AndAlso RECHNUNG IsNot Nothing AndAlso RECHNUNG.FilialenNr = 4817 AndAlso RECHNUNG.DruckDatumZeit IsNot Nothing Then
- Dim SPEDBUCH = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(RECHNUNG.FilialenNr, RECHNUNG.AbfertigungsNr, RECHNUNG.UnterNr)
+ Dim SPEDBUCH = New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(RECHNUNG.FilialenNr, RECHNUNG.AbfertigungsNr, 0)
If SPEDBUCH.hasEntry AndAlso (SPEDBUCH.Abfertigungsart = 114 Or SPEDBUCH.Abfertigungsart = 115) Then
Dim USTV_ANTRAG As New cUSTVAntrag(RECHNUNG.ErfassungsNr)
- Dim bearbGeb As Double = 0
- Dim hasVZ As Boolean = False
+ Dim GUBetrag_ohneBearbeitung As Double = 0
+ Dim hatNichtAbgerechneteVZ As Boolean = False
+ Dim durchREWurdeVZAbgerechnet As Boolean = False
- 'todo_Prüfung ist zu spät -> früher (vor dem eintragen in die DB)!!!!
For Each pos In USTV_ANTRAG.POSITIONEN
If pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) OrElse pos.UStVPo_VZ_RKID Is Nothing) Then 'VZ die noch nicht abgerechnet wurde!
- hasVZ = True
+ hatNichtAbgerechneteVZ = True
+ Exit For
+ End If
+ Next
+
+ For Each pos In USTV_ANTRAG.POSITIONEN
+ If pos.UStVPo_VZ AndAlso pos.UStVPo_VZ_RKID = RECHNUNG.RK_ID Then 'VZ wurde durch diese RE abgerechnet
+ durchREWurdeVZAbgerechnet = True
Exit For
End If
Next
For Each r As cRechnungsausgangPositionen In RECHNUNG.POSITIONEN
- If r.BerechnungsartNr = 8 AndAlso (r.LeistungsBez.ToLower.Contains("mwst") Or r.LeistungsBez.ToLower.Contains("moest") Or r.LeistungsBez.ToLower.Contains("vat") Or r.LeistungsBez.ToLower.Contains("excise duty") Or r.LeistungsBez.ToLower.Contains("tva")) Then bearbGeb += r.Preis
+ If r.BerechnungsartNr = 8 AndAlso (r.LeistungsBez.ToLower.Contains("mwst") Or r.LeistungsBez.ToLower.Contains("moest") Or r.LeistungsBez.ToLower.Contains("vat") Or r.LeistungsBez.ToLower.Contains("excise duty") Or r.LeistungsBez.ToLower.Contains("tva")) Then GUBetrag_ohneBearbeitung += r.Preis
Next
- 'nur bei NICHT VZ!
- If Not hasVZ Then
- 'Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.UnterNr + 1)
- 'If Not ANTR_ERSTATTUNG.hasEntry Then
- ' ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum
- ' ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr
- ' ANTR_ERSTATTUNG.UStVEr_Umrechnungskurs = 1
- ' ANTR_ERSTATTUNG.UStVEr_USteuerbetrag = bearbGeb
- ' ANTR_ERSTATTUNG.UStVEr_USteuerbetragEUR = bearbGeb
- ' ANTR_ERSTATTUNG.SAVE()
- 'End If
+ Dim SQL As New SQL
+ If Not hatNichtAbgerechneteVZ Then
+ Dim count_offene_importierteErstattungen As Integer = -1
+ count_offene_importierteErstattungen = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVErstattung] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVEr_Importfilename] is not null and [GutschriftsNr] is null and [GutschriftsDatum] is null ", "FMZOLL"))
- If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) AndAlso IsDBNull(USTV_ANTRAG.UStVAn_VZDatum) Then
+ If count_offene_importierteErstattungen > 0 Then
+ SQL.doSQL("UPDATE [tblUStVErstattung] SET GutschriftsNr = " & RECHNUNG.RechnungsNr & ",GutschriftsDatum = '" & CDate(RECHNUNG.RechnungsDatum).ToShortDateString & "', UStVEr_RK_ID = " & RECHNUNG.RK_ID & " WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVEr_Importfilename] is not null and [GutschriftsNr] is null and [GutschriftsDatum] is null ", "FMZOLL")
- USTV_ANTRAG.UStVAn_VZBetrag = bearbGeb
- USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum
- USTV_ANTRAG.SAVE()
+ Else
+ insertNewErstattungsPos(USTV_ANTRAG)
End If
+
+
+ If durchREWurdeVZAbgerechnet Then
+
+ USTV_ANTRAG.UStVAn_VZDatum = RECHNUNG.RechnungsDatum
+
+ If IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) OrElse USTV_ANTRAG.UStVAn_VZBetrag Is Nothing Then
+
+ USTV_ANTRAG.UStVAn_VZBetrag = GUBetrag_ohneBearbeitung
+
+ ElseIf IsNumeric(USTV_ANTRAG.UStVAn_VZBetrag) Then
+
+ USTV_ANTRAG.UStVAn_VZBetrag += GUBetrag_ohneBearbeitung
+
+ End If
+
+ USTV_ANTRAG.SAVE()
+ End If
+
+ Else
+ insertNewErstattungsPos(USTV_ANTRAG)
+
End If
- If hasVZ Then
- Dim SQL As New SQL
+ If hatNichtAbgerechneteVZ Then
- For Each pos As cUStVPositionen In USTV_ANTRAG.POSITIONEN
- If Not IsDBNull(pos.UStVPo_VZ) AndAlso pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) Or pos.UStVPo_VZ_RKID Is Nothing) Then
- pos.UStVPo_VZ_RKID = RECHNUNG.RK_ID
- pos.SAVE()
- End If
+ For Each pos As cUStVPositionen In USTV_ANTRAG.POSITIONEN
- Next
+ If Not IsDBNull(pos.UStVPo_VZ) AndAlso pos.UStVPo_VZ AndAlso (IsDBNull(pos.UStVPo_VZ_RKID) Or pos.UStVPo_VZ_RKID Is Nothing) Then
+ pos.UStVPo_VZ_RKID = RECHNUNG.RK_ID
+ pos.SAVE()
+ End If
- Dim count_nichtAbgerVZ As Integer = -1
- count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL"))
- If count_nichtAbgerVZ = 0 Then
+ Next
+
+ Dim count_nichtAbgerVZ As Integer = -1
+ count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL"))
+ If count_nichtAbgerVZ = 0 Then
SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0 WHERE [UStVAn_ID] IN (SELECT [UStVAn_ID] FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 AND [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " )", "FMZOLL")
End If
@@ -859,11 +882,11 @@ Public Class frmFaktEmail
End If
- End If
-
-
End If
+
+ End If
+
'------------------------------------------------------------------------------------------
' STB /FA
send_StbFAMail(RECHNUNG.RechnungsKundenNr, " Rg-Nr.: " & RechnungsNr & abfNr, RECHNUNG.RechnungsNr)
@@ -883,6 +906,21 @@ Public Class frmFaktEmail
End Sub
+ Private Sub insertNewErstattungsPos(USTV_ANTRAG As cUSTVAntrag)
+
+
+ Dim ANTR_ERSTATTUNG As New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(USTV_ANTRAG.UStVAn_ID, RECHNUNG.RechnungsNr, CDate(RECHNUNG.RechnungsDatum))
+ If Not ANTR_ERSTATTUNG.hasEntry Then
+ ANTR_ERSTATTUNG.UStVEr_ID = ANTR_ERSTATTUNG.getMaxPosNr()
+ ANTR_ERSTATTUNG.GutschriftsDatum = RECHNUNG.RechnungsDatum
+ ANTR_ERSTATTUNG.GutschriftsNr = RECHNUNG.RechnungsNr
+ ANTR_ERSTATTUNG.UStVEr_RK_ID = RECHNUNG.RK_ID
+ ANTR_ERSTATTUNG.UStVEr_USteuerbetrag = 0
+ ANTR_ERSTATTUNG.UStVEr_USteuerbetragEUR = 0
+ ANTR_ERSTATTUNG.SAVE()
+ End If
+ End Sub
+
Function addRgData_ZF_Passau(RechnungsLandKz) As String
addRgData_ZF_Passau = vbNewLine & vbNewLine
@@ -1194,7 +1232,7 @@ Public Class frmFaktEmail
If cbxMDMAnh.Checked Then
Mail.Attachments.Add(a.Pfad, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , a.MailName)
Else
- If a.Pfad.ToString.toLowerCase.EndsWith("maut_at.pdf") Or a.Pfad.ToString.toLowerCase.EndsWith("maut_uta.pdf") Or a.Pfad.ToString.toLowerCase.EndsWith("maut_mse.pdf") Then
+ If a.Pfad.ToString.ToLower.EndsWith("maut_at.pdf") Or a.Pfad.ToString.ToLower.EndsWith("maut_uta.pdf") Or a.Pfad.ToString.ToLower.EndsWith("maut_mse.pdf") Then
'NICHT ANFÜGEN!
Else
Mail.Attachments.Add(a.Pfad, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , a.MailName)
diff --git a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb
index 949cf579..57b04f5d 100644
--- a/SDL/Fakturierung/frmFaktSammelRgDrucken.vb
+++ b/SDL/Fakturierung/frmFaktSammelRgDrucken.vb
@@ -660,7 +660,11 @@ Public Class frmFaktSammelRgDrucken
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If MyDatagridview1.SelectedRows.Count > 0 Then
- If cAutomailversand.automRechnungsversand_aktivieren(True) Then
+ If txtRechnungsdatum.Text = "" Then MsgBox("Bitte Rechnungsdatum angeben!") : Exit Sub
+
+ If CDate(txtRechnungsdatum.Text).AddDays(-4) > Today() Then MsgBox("Rechnungen können max. 4 Tage vordatiert werden!") : Exit Sub
+
+ If cAutomailversand.automRechnungsversand_aktivieren(True, CDate(txtRechnungsdatum.Text).ToShortDateString) Then
Dim onlyEMAIL As Boolean = True
@@ -670,7 +674,7 @@ Public Class frmFaktSammelRgDrucken
If cboFirma._value = "" Then MsgBox("Bitte Firma angeben!") : Exit Sub
If txtZeitraumBis.Text = "" Then MsgBox("Bitte Zeitraum-Bis angeben!") : Exit Sub
- If txtRechnungsdatum.Text = "" Then MsgBox("Bitte Rechnungsdatum angeben!") : Exit Sub
+
If Not onlyEMAIL Then MsgBox("Sammelrechnungen die per POST/FAX verschickt werden, können nicht gesetzt werden!") : Exit Sub
If vbYes = MsgBox("Es wird eine Beleg-NR vergeben, die Belege gelten somit als gedruckt und können nicht mehr bearbeitet werden.", vbYesNoCancel) Then
diff --git a/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb b/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb
index c98b0ada..ce9c3f2c 100644
--- a/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb
+++ b/SDL/Fakturierung/rptSammelRechnungAnlagenDruck_Leistungen.vb
@@ -6,12 +6,23 @@ Public Class rptSammelRechnungAnlagenDruck_Leistungen
Dim _LAN = ""
Dim RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang = Nothing
Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
- Sub New(_LAN As String, RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, VorschauID As String)
+ Dim isZNB As Boolean
+ Dim LeistungsText As String
+ Dim Anzahl As Integer
+ Dim SteuerpflichtigerBetrag As Double
+ Dim SteuerfreierBetrag As Double
+
+ Sub New(_LAN As String, RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, VorschauID As String, Optional isZNB As Boolean = False, Optional LeistungsText As String = "", Optional Anzahl As Integer = 0, Optional SteuerpflichtigerBetrag As Double = 0, Optional SteuerfreierBetrag As Double = 0)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
Me._LAN = _LAN
Me.RECHNUNG = RECHNUNG
Me.VorschauID = VorschauID
+ Me.isZNB = isZNB
+ Me.LeistungsText = LeistungsText
+ Me.Anzahl = Anzahl
+ Me.SteuerpflichtigerBetrag = SteuerpflichtigerBetrag
+ Me.SteuerfreierBetrag = SteuerfreierBetrag
' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
End Sub
Private Sub rptRechnungDruck_ReportStart(sender As Object, e As EventArgs) Handles MyBase.ReportStart
@@ -52,16 +63,22 @@ Public Class rptSammelRechnungAnlagenDruck_Leistungen
dt.Columns.Add("clmnLeistungsNr")
RECHNUNG.ORDER_POSITIONEN()
-
- For Each POS In RECHNUNG.POSITIONEN
- If VorschauID = "PROVISIONSABRECHNUNG" Then
- If CBool(SQL.DLookup("Abfertigungskosten", "Leistungen", "LeistungsNr='" & POS.LeistungsNr & "'", "FMZOLL")) Then
+ If Not isZNB Then
+ For Each POS In RECHNUNG.POSITIONEN
+ If VorschauID = "PROVISIONSABRECHNUNG" Then
+ If CBool(SQL.DLookup("Abfertigungskosten", "Leistungen", "LeistungsNr='" & POS.LeistungsNr & "'", "FMZOLL")) Then
+ dt.Rows.Add(POS.LeistungsBez, POS.SteuerfreierBetrag, POS.SteuerpflichtigerBetrag, POS.Anzahl, POS.LeistungsNr)
+ End If
+ Else
dt.Rows.Add(POS.LeistungsBez, POS.SteuerfreierBetrag, POS.SteuerpflichtigerBetrag, POS.Anzahl, POS.LeistungsNr)
End If
- Else
- dt.Rows.Add(POS.LeistungsBez, POS.SteuerfreierBetrag, POS.SteuerpflichtigerBetrag, POS.Anzahl, POS.LeistungsNr)
- End If
- Next
+ Next
+
+ Else
+
+ dt.Rows.Add(LeistungsText, SteuerfreierBetrag, SteuerpflichtigerBetrag, Anzahl, 950)
+ End If
+
Me.DataSource = dt
diff --git a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb
index 75a47310..31ec40fc 100644
--- a/SDL/Fakturierung/usrCntlFaktAbrechnung.vb
+++ b/SDL/Fakturierung/usrCntlFaktAbrechnung.vb
@@ -21,6 +21,8 @@ Public Class usrCntlFaktAbrechnung
Public Event EVENT_DELETED()
Public Event SOMETHING_CHANGED(RK_ID)
+ Public automail_rechnungsdatum As Date = Today()
+
Dim vorherige_RK_ID = 0
Dim nachstehende_RK_ID = 0
Dim veragKunde As Integer = -1
@@ -39,7 +41,7 @@ Public Class usrCntlFaktAbrechnung
End Sub
- Sub New(RK_ID)
+ Sub New(RK_ID As Integer)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
@@ -49,6 +51,7 @@ Public Class usrCntlFaktAbrechnung
End Sub
+
Public Sub newRECHNUNG(Optional Firma = Nothing)
RECHNUNG = Nothing
@@ -3512,7 +3515,7 @@ Public Class usrCntlFaktAbrechnung
If RECHNUNG IsNot Nothing AndAlso RECHNUNG.Sammelrechnung = 0 Then 'nur bei ER
If cbxAUTOMailversand.Checked AndAlso (Not RECHNUNG.Automailversand Or RECHNUNG.RechnungsDatum Is Nothing) Then
- If cAutomailversand.automRechnungsversand_aktivieren(showMessageBox, RECHNUNG.Sammelrechnung = 0) Then
+ If cAutomailversand.automRechnungsversand_aktivieren(showMessageBox, automail_rechnungsdatum, RECHNUNG.Sammelrechnung = 0) Then
Dim fun As New cAutomailversand
Dim AD As VERAG_PROG_ALLGEMEIN.cAdressen = kdFirmaRechnungAn.KdData_ADRESSEN
@@ -3522,8 +3525,8 @@ Public Class usrCntlFaktAbrechnung
If RECHNUNG.RechnungsDatum Is Nothing Then
- 'LAUT AUSSAGE VON VERR. IMMER HEUTIGES DATUM!
- RECHNUNG.RechnungsDatum = Today()
+ 'LAUT AUSSAGE VON VERR. IMMER HEUTIGES DATUM! - NUN DOCH WIEDER NICHT!!!!!!!!!!!!!!!!!
+ RECHNUNG.RechnungsDatum = automail_rechnungsdatum
'If Not cFakturierung.getRgDatInput("", RECHNUNG.[RechnungsDatum]) Then 'Now.ToShortDateString
' cbxAUTOMailversand.Checked = False
' Exit Sub
@@ -5258,13 +5261,19 @@ mwst:
r.Cells("Preis").Value = sumVZAntrag
Else
- Dim GesamtUSteuerEUR As Double = SQL.DLookup("isnull(sum(UStVPo_USteuerbetragEUR),0)", "tblUStVPositionen", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0")
- Dim GesamtErstattungEUR As Double = SQL.DLookup("isnull(sum(UStVEr_USteuerbetragEUR),0)", "tblUStVErstattung", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0")
- Dim DiffernezbetragEUR As Double = GesamtUSteuerEUR - GesamtErstattungEUR
+ 'vorher wurde der Differenzbetrag zuerst verrechnet und dann erst ausgetragen, nun umgekehrt!
+ 'Dim GesamtUSteuerEUR As Double = SQL.DLookup("isnull(sum(UStVPo_USteuerbetragEUR),0)", "tblUStVPositionen", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0")
+ 'Dim GesamtErstattungEUR As Double = SQL.DLookup("isnull(sum(UStVEr_USteuerbetragEUR),0)", "tblUStVErstattung", "UStVAn_ID='" & antrag.UStVAn_ID & "'", "FMZOLL", "0")
+ 'Dim DiffernezbetragEUR As Double = GesamtUSteuerEUR - GesamtErstattungEUR
+
+ 'If DiffernezbetragEUR <> 0 Then
+ ' r.Cells("Preis").Value = DiffernezbetragEUR
+ 'Else
+ ' r.Cells("Preis").Value = 0
+ 'End If
+ 'quickfix!
+ r.Cells("Preis").Value = sumFremdAntrag + sumRMCAntrag
- If DiffernezbetragEUR <> 0 Then
- r.Cells("Preis").Value = DiffernezbetragEUR
- End If
End If
@@ -5283,6 +5292,8 @@ mwst:
If Not IsDBNull(r.Cells("Preis").Value) Then
Dim OFFERTE As New VERAG_PROG_ALLGEMEIN.cOfferte(IIf(RECHNUNG.RechnungsKundenNr > 0, RECHNUNG.RechnungsKundenNr, kdFirmaRechnungAn.KdNr), OffertNr, True)
Call prBearbGeb_NEW(r, OFFERTE, RECHNUNG, r.Cells("BGebLeistungsNr").Value, r.Cells("BGebProzent").Value, IIf(Not IsDBNull(r.Cells("BGebMinBetrag").Value), r.Cells("BGebMinBetrag").Value, 0), r.Cells("Preis").Value * If(RECHNUNG.Vorzeichen = "-", -1, 1), summeRMC, summeFremd, OFFERT_RMC, OFFERT_FREMD, FremdUndRMC, changed, sumRMCAntrag, sumOffertRMC, sumFremdAntrag, sumOffertFremd, sumVZAntrag, POSChanged)
+ Else
+ 'MsgBox("kein Preis im Offert hinterlegt!")
End If
End If
@@ -5683,7 +5694,6 @@ mwst:
' 'Button16.Enabled = Not enableAUTOMAIL
'End If
-
Return enableAUTOMAIL
diff --git a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb
index 985cd7b3..a8092587 100644
--- a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb
+++ b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.Designer.vb
@@ -33,6 +33,7 @@ Partial Public Class rptPreislisten
Me.lblAGB = New GrapeCity.ActiveReports.SectionReportModel.Label()
Me.lblDetails = New GrapeCity.ActiveReports.SectionReportModel.Label()
Me.Line2 = New GrapeCity.ActiveReports.SectionReportModel.Line()
+ Me.Label1 = New GrapeCity.ActiveReports.SectionReportModel.Label()
Me.ReportHeader1 = New GrapeCity.ActiveReports.SectionReportModel.ReportHeader()
Me.txtFirmaInfo_IMEX = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
Me.txtFirmaInfo_ATILLA = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
@@ -60,13 +61,14 @@ Partial Public Class rptPreislisten
Me.txtFirmenkennung = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
Me.SubReport = New GrapeCity.ActiveReports.SectionReportModel.SubReport()
Me.SubReport2 = New GrapeCity.ActiveReports.SectionReportModel.SubReport()
- Me.Label1 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.txtHinweis = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
CType(Me.txtLeistung, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.TextBox3, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtNr, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtPreis, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.lblAGB, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.lblDetails, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtFirmaInfo_IMEX, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtFirmaInfo_ATILLA, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtFirmaInfo_VERAG, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -86,7 +88,7 @@ Partial Public Class rptPreislisten
CType(Me.txtClearing, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtEnding, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.txtFirmenkennung, System.ComponentModel.ISupportInitialize).BeginInit()
- CType(Me.Label1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtHinweis, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
'
'PageHeader
@@ -266,6 +268,17 @@ Partial Public Class rptPreislisten
Me.Line2.Y1 = 0.02519685!
Me.Line2.Y2 = 0.02527889!
'
+ 'Label1
+ '
+ Me.Label1.Height = 0.2!
+ Me.Label1.HyperLink = Nothing
+ Me.Label1.Left = 0.005488008!
+ Me.Label1.Name = "Label1"
+ Me.Label1.Style = "font-size: 8pt"
+ Me.Label1.Text = ""
+ Me.Label1.Top = 0.01250004!
+ Me.Label1.Width = 3.120079!
+ '
'ReportHeader1
'
Me.ReportHeader1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtFirmaInfo_IMEX, Me.txtFirmaInfo_ATILLA, Me.txtFirmaInfo_VERAG, Me.picVERAG, Me.Shape8, Me.txtHeader1, Me.txtHeader2, Me.txtLeistungUeberschrift, Me.txtPosUeberschrift, Me.txtPreisUeberschrift, Me.Line9, Me.TextBox6, Me.TextBox7})
@@ -426,8 +439,8 @@ Partial Public Class rptPreislisten
'ReportFooter1
'
Me.ReportFooter1.CanShrink = True
- Me.ReportFooter1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtOrtDatum, Me.Line, Me.txtUnterschrift, Me.Line1, Me.txtVorlageKredit, Me.txtZahlungsziel, Me.txtZahlungsziel2, Me.txtClearing, Me.txtEnding, Me.txtFirmenkennung, Me.SubReport, Me.SubReport2})
- Me.ReportFooter1.Height = 4.128265!
+ Me.ReportFooter1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtOrtDatum, Me.Line, Me.txtUnterschrift, Me.Line1, Me.txtVorlageKredit, Me.txtZahlungsziel, Me.txtZahlungsziel2, Me.txtClearing, Me.txtEnding, Me.txtFirmenkennung, Me.SubReport, Me.SubReport2, Me.txtHinweis})
+ Me.ReportFooter1.Height = 4.128347!
Me.ReportFooter1.KeepTogether = True
Me.ReportFooter1.Name = "ReportFooter1"
'
@@ -494,20 +507,19 @@ Partial Public Class rptPreislisten
Me.txtZahlungsziel.Height = 0.2720473!
Me.txtZahlungsziel.Left = 0.01102362!
Me.txtZahlungsziel.Name = "txtZahlungsziel"
- Me.txtZahlungsziel.Style = "font-size: 14pt; font-weight: bold; text-align: left; ddo-char-set: 1"
- Me.txtZahlungsziel.Text = "Wir haben %ZAHLUNGSZIEL% Tage Zahlungsziel"
+ Me.txtZahlungsziel.Style = "font-size: 12pt; font-weight: bold; text-align: left; ddo-char-set: 1"
+ Me.txtZahlungsziel.Text = "Wir haben %ZAHLUNGSZIEL% Tage Zahlungsziel*"
Me.txtZahlungsziel.Top = 0.6728347!
- Me.txtZahlungsziel.Width = 4.88189!
+ Me.txtZahlungsziel.Width = 6.68189!
'
'txtZahlungsziel2
'
- Me.txtZahlungsziel2.Height = 0.8244092!
+ Me.txtZahlungsziel2.Height = 0.3972438!
Me.txtZahlungsziel2.Left = 0.01102362!
Me.txtZahlungsziel2.Name = "txtZahlungsziel2"
Me.txtZahlungsziel2.Style = "font-size: 10pt; font-weight: normal; text-align: left; ddo-char-set: 1"
Me.txtZahlungsziel2.Text = "Bei Zahlung innerhalb %ZAHLUNGSZIEL% Tagen kann die Kreditaufwendung (%POSKREDIT%" &
- ") in Abzug gebracht werden (ausgenommen bei Vorkassenberechnungen)." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Wir behal" &
- "ten uns Preisanpassungen vor."
+ ") in Abzug gebracht werden.* " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10)
Me.txtZahlungsziel2.Top = 1.011024!
Me.txtZahlungsziel2.Width = 6.68189!
'
@@ -526,12 +538,12 @@ Partial Public Class rptPreislisten
'txtEnding
'
Me.txtEnding.Height = 0.9830709!
- Me.txtEnding.Left = 0!
+ Me.txtEnding.Left = 0.01102362!
Me.txtEnding.Name = "txtEnding"
Me.txtEnding.Style = "font-size: 10pt; font-weight: normal; text-align: left; ddo-char-set: 1"
Me.txtEnding.Text = "Wir bedanken uns für Ihren Auftrag und freuen uns auf eine gute Zusammenarbeit." & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) &
"" & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Mit freundlichen Grüßen"
- Me.txtEnding.Top = 1.835433!
+ Me.txtEnding.Top = 1.814567!
Me.txtEnding.Width = 6.692914!
'
'txtFirmenkennung
@@ -566,16 +578,20 @@ Partial Public Class rptPreislisten
Me.SubReport2.Top = 0.5192913!
Me.SubReport2.Width = 6.722048!
'
- 'Label1
+ 'txtHinweis
'
- Me.Label1.Height = 0.2!
- Me.Label1.HyperLink = Nothing
- Me.Label1.Left = 0.005488008!
- Me.Label1.Name = "Label1"
- Me.Label1.Style = "font-size: 8pt"
- Me.Label1.Text = ""
- Me.Label1.Top = 0.01250004!
- Me.Label1.Width = 3.120079!
+ Me.txtHinweis.DataField = ""
+ Me.txtHinweis.DistinctField = ""
+ Me.txtHinweis.Height = 0.7035433!
+ Me.txtHinweis.Left = 0.01102362!
+ Me.txtHinweis.Name = "txtHinweis"
+ Me.txtHinweis.Style = "color: Black; font-size: 10pt; font-weight: normal; text-align: left; ddo-char-se" &
+ "t: 1"
+ Me.txtHinweis.SummaryGroup = ""
+ Me.txtHinweis.Text = "*ausgenommen bei Vorkassenberechnungen " & Global.Microsoft.VisualBasic.ChrW(10) & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "Wir behalten uns Preisanpassungen vor. " &
+ ""
+ Me.txtHinweis.Top = 1.314567!
+ Me.txtHinweis.Width = 6.68189!
'
'rptPreislisten
'
@@ -588,7 +604,7 @@ Partial Public Class rptPreislisten
Me.PageSettings.PaperHeight = 11.69291!
Me.PageSettings.PaperKind = GrapeCity.ActiveReports.Printing.PaperKind.A4
Me.PageSettings.PaperWidth = 8.267716!
- Me.PrintWidth = 6.733071!
+ Me.PrintWidth = 6.775591!
Me.Sections.Add(Me.ReportHeader1)
Me.Sections.Add(Me.PageHeader)
Me.Sections.Add(Me.Detail)
@@ -606,6 +622,7 @@ Partial Public Class rptPreislisten
CType(Me.txtPreis, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.lblAGB, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.lblDetails, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.txtFirmaInfo_IMEX, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.txtFirmaInfo_ATILLA, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.txtFirmaInfo_VERAG, System.ComponentModel.ISupportInitialize).EndInit()
@@ -625,7 +642,7 @@ Partial Public Class rptPreislisten
CType(Me.txtClearing, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.txtEnding, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.txtFirmenkennung, System.ComponentModel.ISupportInitialize).EndInit()
- CType(Me.Label1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtHinweis, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
End Sub
@@ -671,4 +688,5 @@ Partial Public Class rptPreislisten
Public WithEvents TextBox6 As GrapeCity.ActiveReports.SectionReportModel.TextBox
Public WithEvents TextBox7 As GrapeCity.ActiveReports.SectionReportModel.TextBox
Private WithEvents Label1 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents txtHinweis As GrapeCity.ActiveReports.SectionReportModel.TextBox
End Class
diff --git a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx
index 2821a777..ce843a33 100644
--- a/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx
+++ b/SDL/Formulare/KDFormulare/FormulareBaukasten/rptPreislisten.resx
@@ -124,9 +124,6 @@
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
-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
-
0, 0
diff --git a/SDL/Formulare/KDFormulare/frmFormulare.vb b/SDL/Formulare/KDFormulare/frmFormulare.vb
index 573396c6..ee05eec8 100644
--- a/SDL/Formulare/KDFormulare/frmFormulare.vb
+++ b/SDL/Formulare/KDFormulare/frmFormulare.vb
@@ -5,7 +5,9 @@ Imports System.Reflection
Imports System.Text.RegularExpressions
Imports System.Windows.Documents
Imports com.sun.tools.internal.ws.wsdl.document.mime
+Imports DAKOSY_Worker.Abgabenbescheid_008
Imports GrapeCity.ActiveReports
+Imports GrapeCity.DataVisualization.TypeScript
Imports itextsharp.text.pdf
Imports Microsoft.Office.Interop
Imports VERAG_PROG_ALLGEMEIN
@@ -1135,6 +1137,8 @@ Public Class frmFormulare
Dim listMail As New List(Of FormMangagerEmail)
+ Dim listofFormulare As New List(Of String)
+ Dim attachmentName As String = ""
Try
@@ -1143,7 +1147,7 @@ Public Class frmFormulare
Dim hassValidErr = False
For Each c In MyFlowLayoutPanel1.Controls
Dim err = ""
- If Not FormularManagerNEU.validFormulare(c, err) Then
+ If Not FormularManagerNEU.validFormulare(c, err, listofFormulare) Then
txtErr.Text &= err
hassValidErr = True
End If
@@ -1154,6 +1158,11 @@ Public Class frmFormulare
Exit Sub
End If
+ attachmentName = createAttachmentName(listofFormulare, KdNr)
+
+ If attachmentName = "" Then
+ attachmentName = "_Formular"
+ End If
If isSingleForm And sender Is btnPrint Then 'Sofortdruck --> wir bei ActiveRepots benötigt --> schneller, als zuerst pdf....
If Not MyFlowLayoutPanel1.Controls.Count = 1 Then Me.Cursor = Cursors.Default : Exit Sub 'funkt. nur bei genau 1 Control
@@ -1162,6 +1171,7 @@ Public Class frmFormulare
Dim list As New List(Of String) ' Sammlung PDFs
+
For Each c In MyFlowLayoutPanel1.Controls
Dim pfadList As List(Of String) = FormularManagerNEU.genPDF(c,,,,, listMail)
For Each pfad In pfadList
@@ -1176,7 +1186,7 @@ Public Class frmFormulare
If list.Count = 1 Then
dest_path = list(0)
Else
- dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Formular.pdf", ".pdf", False, False)
+ dest_path = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf", ".pdf", False, False)
If Not FormularManagerNEU.MergePdfFiles(list, dest_path) Then
dest_path = "" : MsgBox("Fehler PDF")
End If
@@ -1189,98 +1199,6 @@ Public Class frmFormulare
'System.Diagnostics.Process.Start("mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&attachment=" & dest_path)
Try
-
-
-
- 'Dim Mail As New MailMessage
-
- 'Try
- ' Dim SMTP As New SmtpClient("smtp.gmail.com")
- ' SMTP.EnableSsl = True
- ' SMTP.Credentials = New System.Net.NetworkCredential("[your gmail address@gmail.com]", "[the associated password]")
- ' SMTP.Port = 587
-
- ' Mail.From = New MailAddress("""[Friendly Name]"" <[your gmail address@gmail.com>")
-
-
- ' Mail.Subject = ""
- ' Mail.Body = ""
- ' If dest_path <> "" Then Mail.Attachments.Add(New Mail.Attachment(dest_path))
- ' Mail.IsBodyHtml = True
-
- ' ' SMTP.Send(Mail)
-
- ' 'Clear Mail Object
- ' Mail.Dispose()
-
- ' 'Function Return
- ' Return True
-
- 'Catch ex As Exception
-
- ' 'Function Return
- ' Return False
-
- 'End Try
-
-
-
- If False Then
- Dim mapi As New VERAG_PROG_ALLGEMEIN.SendFileTo.MAPI
-
- mapi.AddAttachment(dest_path)
- mapi.SendMailPopup("testing", "body text")
- Exit Sub
- End If
-
- If False Then
-
-
-
-
- Call ShellExecute(Me.Handle, "open", "mailto:" & "" & "?subject=" & "?" & "&body=" & "?" & "&Attach=""" & dest_path & """", vbNullString, vbNullString, SW_SHOW)
- ' Call ShellExecute(Me.Handle, "open", "mailto:" & "" & "?subject=" & "?" & "&body=" & "?", "", "", SW_SHOW)
-
-
- Exit Sub
-
-
- Dim MailMessage As New System.Net.Mail.MailMessage()
- ' MailMessage.From = New MailAddress("someone@yourdomain.com")
- MailMessage.Subject = "" ' "Your subject here"
- MailMessage.IsBodyHtml = True
- ' MailMessage.Body = MailHTMLText '"My HTML formatted body"
-
- MailMessage.Attachments.Add(New Attachment(dest_path))
-
- Dim filename = "C://Temp/mymessage.eml"
-
- 'save the MailMessage to the filesystem
- ' MailMessage.save(filename)
- Save(MailMessage, filename)
- 'Open the file with the default associated application registered on the local machine
-
-
-
-
- Process.Start(filename)
-
- 'Dim mapi As New VERAG_PROG_ALLGEMEIN.SendFileTo.cSendMailAttach
-
- 'mapi.AddAttachment(dest_path)
- ''mapi.AddRecipientTo("person1@somewhere.com")
- ''mapi.AddRecipientTo("person2@somewhere.com")
- 'mapi.SendMailPopup("", "")
- Exit Sub
- End If
-
- 'Dim Mail As Outlook.MailItem = CType(Application.CreateItem(Outlook.OlItemType.olMailItem), Outlook.MailItem)
-
- ' If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "IMEX" Then
- ' Else
- ' Dim outl = CreateObject("Outlook.Application")
- ' Dim Mail = CreateObject("Microsoft.Office.Interop.Outlook.MailItem")
-
If listMail IsNot Nothing AndAlso listMail.Count > 0 Then
For Each l In listMail
Dim outl As New Outlook.Application
@@ -1306,7 +1224,7 @@ Public Class frmFormulare
End Try
End If
- Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Formular.pdf")
+ Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf")
Mail.Display()
Next
@@ -1359,7 +1277,7 @@ Public Class frmFormulare
- Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & "_Formular.pdf")
+ Mail.Attachments.Add(dest_path, Microsoft.Office.Interop.Outlook.OlAttachmentType.olByValue, , VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA & attachmentName & ".pdf")
Mail.Display()
End If
@@ -1393,6 +1311,43 @@ Public Class frmFormulare
' If list.Count > 0 Then
End Sub
+ Private Function createAttachmentName(listOfFormular As List(Of String), KundenNr As Integer) As String
+
+ Dim Bez As String = ""
+ If KundenNr > 0 Then
+ Dim ADR As New cAdressen(KundenNr)
+
+ If ADR.Name_1 IsNot Nothing AndAlso ADR.Name_1 <> "" Then
+
+ Bez = "_" & ADR.Name_1.ToString
+ Bez = VERAG_PROG_ALLGEMEIN.cDATENSERVER.replaceInvalidCahr(Bez)
+ Bez = Regex.Replace(Bez, "[" & Regex.Escape(New String(System.IO.Path.GetInvalidFileNameChars())) & "]", "_")
+ End If
+
+
+ End If
+
+ If listOfFormular.Count = 1 Then
+
+ Bez &= "_" & listOfFormular(0).ToString.Replace("SDL.usrcntl", "")
+
+ Return Bez
+
+ ElseIf listOfFormular.Count > 1 Then
+
+ For Each r In listOfFormular
+ Bez &= "_" & r.ToString.Replace("SDL.usrcntl", "")
+
+ Next
+
+ Return Bez
+
+ Else
+ Return ""
+ End If
+
+ End Function
+
Const SW_SHOW = 5
Declare Function ShellExecute Lib "shell32.dll" _
Alias "ShellExecuteA" (
@@ -1684,52 +1639,61 @@ Public Class FormularManagerNEU
Return striList
End Function
- Shared Function validFormulare(c As Control, ByRef err As String) As Boolean
+ Shared Function validFormulare(c As Control, ByRef err As String, listOfFormulare As List(Of String)) As Boolean
validFormulare = True
Dim striList As New List(Of String)
Select Case c.GetType.ToString
Case GetType(usrcntlVollmacht_DE).ToString
- ' retStr = FormularManagerNEU.VM_De(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_DE).ToString())
+ Case GetType(usrcntlVollmacht_GB_IE).ToString
+ listOfFormulare.Add(GetType(usrcntlVollmacht_GB_IE).ToString())
+ Case GetType(usrcntlVollmacht_GB_indirekt).ToString
+ listOfFormulare.Add(GetType(usrcntlVollmacht_GB_indirekt).ToString())
Case GetType(usrcntlVollmacht_DE_indirekt).ToString
- ' retStr = FormularManagerNEU.VM_De(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_DE_indirekt).ToString)
Case GetType(usrcntlVollmacht_AT).ToString
- ' retStr = FormularManagerNEU.VM_AT(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_AT).ToString)
Case GetType(usrcntlFormOhneFelder).ToString
- ' retStr = FormularManagerNEU.SimplePDF(c)
Case GetType(usrcntlVollmacht_DE_Fiskal).ToString
- ' retStr = FormularManagerNEU.VM_DE_Fiskal(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_DE_Fiskal).ToString)
Case GetType(usrcntlVollmacht_AT_EV).ToString
- ' retStr = FormularManagerNEU.VM_AT_EV(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_AT_EV).ToString)
Case GetType(usrcntlVollmacht_AT_Fiskal).ToString
- ' retStr = FormularManagerNEU.VM_AT_Fiskal(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_AT_EV).ToString)
Case GetType(usrcntlVollmacht_ATILLA_EXPORT).ToString
- ' retStr = FormularManagerNEU.VM_ATILLA_EXPORT(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_AT_EV).ToString)
Case GetType(usrcntlVollmacht_VERAG_EXPORT).ToString
- ' retStr = FormularManagerNEU.VM_VERAG_EXPORT(c)
+ listOfFormulare.Add(GetType(usrcntlVollmacht_VERAG_EXPORT).ToString)
Case GetType(usrcntlVorauskasse).ToString
+ listOfFormulare.Add(GetType(usrcntlVorauskasse).ToString)
If Not DirectCast(c, usrcntlVorauskasse).ValidValues(err) Then validFormulare = False
Case GetType(usrcntlGestellungsgarantie).ToString
- ' retStr = FormularManagerNEU.Gestellungsgarantie(c)
+ listOfFormulare.Add(GetType(usrcntlGestellungsgarantie).ToString)
+
Case GetType(usrcntlVerzollungspreise).ToString
- ' retStr = FormularManagerNEU.Verzollungspreise(c)
+ listOfFormulare.Add(GetType(usrcntlVerzollungspreise).ToString)
Case GetType(usrcntlCreditreformBoniAuskunft).ToString
- 'retStr = FormularManagerNEU.Bonitaetsauskunft(c)
+ listOfFormulare.Add(GetType(usrcntlCreditreformBoniAuskunft).ToString)
Case GetType(usrcntlSonstigesPDF).ToString
- ' retStr = FormularManagerNEU.SonstPDF(c)
+ listOfFormulare.Add(GetType(usrcntlSonstigesPDF).ToString)
Case GetType(usrCntlDispoliste).ToString
- 'retStr = FormularManagerNEU.DispoListe(c)
+ listOfFormulare.Add(GetType(usrCntlDispoliste).ToString)
Case GetType(usrCntlVerpflichtungserklärungFahrer).ToString
- ' striList = FormularManagerNEU.VerpflichtungserklärungFahrer(c)
+ listOfFormulare.Add(GetType(usrCntlVerpflichtungserklärungFahrer).ToString)
Case GetType(usrcntlFiskalInfoschreiben).ToString
- ' retStr = FormularManagerNEU.FiskalInfoschreiben(c)
+ listOfFormulare.Add(GetType(usrcntlFiskalInfoschreiben).ToString)
Case GetType(usrcntlVerzollungsunterlagen).ToString
+ listOfFormulare.Add(GetType(usrcntlVerzollungsunterlagen).ToString)
If Not DirectCast(c, usrcntlVerzollungsunterlagen).ValidValues(err) Then validFormulare = False
Case GetType(usrcntlVUB).ToString
- ' retStr = FormularManagerNEU.VUB(c)
+ listOfFormulare.Add(GetType(usrcntlVUB).ToString)
+
+ Case GetType(usrcntlImportaviso).ToString
+ listOfFormulare.Add(GetType(usrcntlImportaviso).ToString)
End Select
@@ -1907,7 +1871,7 @@ Public Class FormularManagerNEU
listTowrite.Add(New VERAG_PROG_ALLGEMEIN.cPDFWriteValues(formatAmountEUR(usrCntl.txtCBAM_jeZertBest_Paket_1._value, True), 168, Top + 114.5, 25, 6, "bold", 10, , iTextSharp.text.Element.ALIGN_RIGHT, 2))
-
+ 'Dim ohneOnboarding As String = IIf(usrCntl.cbxOnboardingVerrechnen.Checked, "", "ohne_Onboarding_")
' Dim firma=getUO2()
Select Case usrCntl.cboSprache._value
Case "TR", "EN"
diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb
index 873308bc..0049ddf9 100644
--- a/SDL/My Project/AssemblyInfo.vb
+++ b/SDL/My Project/AssemblyInfo.vb
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
' übernehmen, indem Sie "*" eingeben:
'
-
-
+
+
diff --git a/SDL/My Project/Resources.Designer.vb b/SDL/My Project/Resources.Designer.vb
index 067d6a67..5873bba6 100644
--- a/SDL/My Project/Resources.Designer.vb
+++ b/SDL/My Project/Resources.Designer.vb
@@ -1104,6 +1104,16 @@ Namespace My.Resources
End Get
End Property
+ '''
+ ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap.
+ '''
+ Friend ReadOnly Property Klipphausen_Logo() As System.Drawing.Bitmap
+ Get
+ Dim obj As Object = ResourceManager.GetObject("Klipphausen_Logo", resourceCulture)
+ Return CType(obj,System.Drawing.Bitmap)
+ End Get
+ End Property
+
'''
''' Sucht eine lokalisierte Ressource vom Typ System.Byte[].
'''
diff --git a/SDL/My Project/Resources.resx b/SDL/My Project/Resources.resx
index acabd60d..83fe8fd8 100644
--- a/SDL/My Project/Resources.resx
+++ b/SDL/My Project/Resources.resx
@@ -997,4 +997,7 @@
..\Resources\Ustveu_Rechnungsanlagen_BE.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ ..\Resources\Klipphausen_Logo.jpg;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
+
\ No newline at end of file
diff --git a/SDL/Resources/Klipphausen_Logo.jpg b/SDL/Resources/Klipphausen_Logo.jpg
new file mode 100644
index 00000000..aacb8048
Binary files /dev/null and b/SDL/Resources/Klipphausen_Logo.jpg differ
diff --git a/SDL/SDL.vbproj b/SDL/SDL.vbproj
index b1be67fd..337ae810 100644
--- a/SDL/SDL.vbproj
+++ b/SDL/SDL.vbproj
@@ -449,8 +449,10 @@
True
..\..\..\..\..\..\..\Windows\assembly\GAC_MSIL\Microsoft.Office.Interop.Excel\15.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Excel.dll
-
+
+ False
True
+ ..\..\..\..\..\..\..\Program Files (x86)\Microsoft Visual Studio\Shared\Visual Studio Tools for Office\PIA\Office15\Microsoft.Office.Interop.Outlook.dll
True
@@ -1253,6 +1255,12 @@
Component
+
+ rptPOS_ZNB.vb
+
+
+ Component
+
usrcntlFremdrechnungen.vb
@@ -3881,6 +3889,9 @@
rptIDS_Anhang.vb
+
+ rptPOS_ZNB.vb
+
rptPLOSE_CustomerConsortio.vb
@@ -5519,6 +5530,7 @@
Always
+
Always
diff --git a/SDL/SMS/frmSendSMS.vb b/SDL/SMS/frmSendSMS.vb
index 73aadd78..24fe5528 100644
--- a/SDL/SMS/frmSendSMS.vb
+++ b/SDL/SMS/frmSendSMS.vb
@@ -226,7 +226,7 @@ Public Class frmSendSMS
End Try
End Sub
- Sub fillTXT(s, Sprache, Optional lkwTxt = "LKW/TIR: ", Optional templateID = "", Optional template_ParamMFGAdditional = "", Optional useNewTemplate = False)
+ Sub fillTXT(s, Sprache, Optional lkwTxt = "LKW/TIR: ", Optional templateID = "", Optional template_ParamMFGAdditional = "")
Dim FirmaTmp = cboFirma._value
If FirmaTmp <> "VERAG" Then
txtNachricht.Text = s.ToString.Replace("VERAG", FirmaTmp.Replace("FRONTOFFICE", "FRONT-OFFICE SUBEN"))
@@ -245,7 +245,7 @@ Public Class frmSendSMS
'WENN WHATSAPP
Me.templateID = getTemplateID(templateID, Sprache)
- If useNewTemplate Then
+ If useNewTemplates Then
template_ParamMFGAdditional = ""
End If
Me.template_ParamMFGAdditional = template_ParamMFGAdditional
@@ -374,55 +374,55 @@ Public Class frmSendSMS
End Sub
Private Sub Button16_Click(sender As Object, e As EventArgs) Handles Button16.Click
- fillTXT("Va rog sa va prezentati la sediul firmei VERAG!", "TRUCK: ", template_RO, "")
+ fillTXT("Va rog sa va prezentati la sediul firmei VERAG!", "RO", "TRUCK: ", template_RO, "")
End Sub
Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click
- fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Buletin/ Pasaport!", "TRUCK: ", template_RO, " cu Buletin/ Pasaport")
+ fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Buletin/ Pasaport!", "RO", "TRUCK: ", template_RO, " cu Buletin/ Pasaport")
End Sub
Private Sub Button14_Click(sender As Object, e As EventArgs) Handles Button14.Click
- fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Stampila firmei!", "TRUCK: ", template_RO, " cu Stampila firmei")
+ fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu Stampila firmei!", "RO", "TRUCK: ", template_RO, " cu Stampila firmei")
End Sub
Private Sub Button13_Click(sender As Object, e As EventArgs) Handles Button13.Click
- fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu suma in Cash: € ", "TRUCK: ", template_RO, " cu suma in Cash: € ")
+ fillTXT("Va rog sa va prezentati la sediul firmei VERAG cu suma in Cash: € ", "RO", "TRUCK: ", template_RO, " cu suma in Cash: € ")
End Sub
Private Sub Button20_Click(sender As Object, e As EventArgs) Handles Button20.Click
- fillTXT("Моля, елате във VERAG!", "TRUCK: ", template_BG)
+ fillTXT("Моля, елате във VERAG!", "BG", "TRUCK: ", template_BG)
End Sub
Private Sub Button19_Click(sender As Object, e As EventArgs) Handles Button19.Click
- fillTXT("Моля, елате във VERAG и вземете паспорта си!", "TRUCK: ", template_BG, " и вземете паспорта си")
+ fillTXT("Моля, елате във VERAG и вземете паспорта си!", "BG", "TRUCK: ", template_BG, " и вземете паспорта си")
End Sub
Private Sub Button18_Click(sender As Object, e As EventArgs) Handles Button18.Click
- fillTXT("Моля, елате във VERAG и вземете печата си!", "TRUCK: ", template_BG, " и вземете печата си")
+ fillTXT("Моля, елате във VERAG и вземете печата си!", "BG", "TRUCK: ", template_BG, " и вземете печата си")
End Sub
Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
- fillTXT("Моля, елате във VERAG и вземете пари в борй в размер на: € ", "TRUCK: ", template_BG, " и вземете пари в борй в размер на: € ")
+ fillTXT("Моля, елате във VERAG и вземете пари в борй в размер на: € ", "BG", "TRUCK: ", template_BG, " и вземете пари в борй в размер на: € ")
End Sub
Private Sub Button25_Click(sender As Object, e As EventArgs) Handles Button25.Click
- fillTXT("Bitte Kuvert beim Zoll holen und zu VERAG kommen!", "LKW: ", template_DE, "Bitte Kuvert beim Zoll holen!")
+ fillTXT("Bitte Kuvert beim Zoll holen und zu VERAG kommen!", "DE", "LKW: ", template_DE, "Bitte Kuvert beim Zoll holen!")
End Sub
Private Sub Button24_Click(sender As Object, e As EventArgs) Handles Button24.Click
- fillTXT("Gümrükten zarfini al VERAG'a gel lütfen", "TIR: ", template_TR, "Gümrükten zarfini al gel lütfen")
+ fillTXT("Gümrükten zarfini al VERAG'a gel lütfen", "TR", "TIR: ", template_TR, "Gümrükten zarfini al gel lütfen")
End Sub
Private Sub Button23_Click(sender As Object, e As EventArgs) Handles Button23.Click
- fillTXT("Idi na carinu, uzmi kovertu, i dodji u verag", "TRUCK: ", template_YU, "Idi na carinu, uzmi kovertu")
+ fillTXT("Idi na carinu, uzmi kovertu, i dodji u verag", "YU", "TRUCK: ", template_YU, "Idi na carinu, uzmi kovertu")
End Sub
Private Sub Button22_Click(sender As Object, e As EventArgs) Handles Button22.Click
- fillTXT("Vă rugăm să ridicați plicul de la vamă și să veniți la VERAG", "TRUCK: ", template_RO, "Vă rugăm să ridicați plicul de la vamă și să veniți la ")
+ fillTXT("Vă rugăm să ridicați plicul de la vamă și să veniți la VERAG", "RO", "TRUCK: ", template_RO, "Vă rugăm să ridicați plicul de la vamă și să veniți la ")
End Sub
Private Sub Button21_Click(sender As Object, e As EventArgs) Handles Button21.Click
- fillTXT("Molya, vzemete plika ot mitnitsata i elate vŭv VERAG", "TRUCK: ", template_BG, "Molya, vzemete plika ot mitnitsata i elate vŭv")
+ fillTXT("Molya, vzemete plika ot mitnitsata i elate vŭv VERAG", "BG", "TRUCK: ", template_BG, "Molya, vzemete plika ot mitnitsata i elate vŭv")
End Sub
Private Sub btnSndWhatsApp_Click(sender As Object, e As EventArgs) Handles btnSndWhatsApp.Click
@@ -458,128 +458,128 @@ Public Class frmSendSMS
End Sub
Private Sub Button31_Click(sender As Object, e As EventArgs) Handles Button31.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("Bitte zu VERAG kommen " & MyRichTextBox1.Text, "", template_DE, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("Bitte zu VERAG kommen " & MyRichTextBox1.Text, "DE", "", template_DE, MyRichTextBox1.Text)
End Sub
Private Sub Button30_Click(sender As Object, e As EventArgs) Handles Button30.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("VERAG ofise geliniz " & MyRichTextBox1.Text, "", template_TR, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("VERAG ofise geliniz " & MyRichTextBox1.Text, "TR", "", template_TR, MyRichTextBox1.Text)
End Sub
Private Sub Button29_Click(sender As Object, e As EventArgs) Handles Button29.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("BMolim Vas dođite u VERAG " & MyRichTextBox1.Text, "", template_YU, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("Molim Vas dođite u VERAG " & MyRichTextBox1.Text, "YU", "", template_YU, MyRichTextBox1.Text)
End Sub
Private Sub Button28_Click(sender As Object, e As EventArgs) Handles Button28.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("Va rog sa va prezentati la sediul firmei VERAG " & MyRichTextBox1.Text, "", template_RO, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("Va rog sa va prezentati la sediul firmei VERAG " & MyRichTextBox1.Text, "RO", "", template_RO, MyRichTextBox1.Text)
End Sub
Private Sub Button27_Click(sender As Object, e As EventArgs) Handles Button27.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("Моля, елате във VERAG " & MyRichTextBox1.Text, "", template_BG, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("Моля, елате във VERAG " & MyRichTextBox1.Text, "BG", "", template_BG, MyRichTextBox1.Text)
End Sub
Private Sub Button35_Click(sender As Object, e As EventArgs) Handles Button35.Click
- fillTXT("Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!", "TIR: ", template_TR, "Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!")
+ fillTXT("Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!", "TR", "TIR: ", template_TR, "Lütfen Mühür/Mühürleri söküp VERAG ofise getiriniz!")
End Sub
Private Sub Button36_Click(sender As Object, e As EventArgs) Handles Button36.Click
- fillTXT("Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!", "LKW: ", template_DE, "Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!")
+ fillTXT("Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!", "DE", "LKW: ", template_DE, "Bitte entfernen Sie das Siegel bzw. die Siegel und bringen Sie sie zum VERAG-Büro!")
End Sub
Private Sub Button34_Click(sender As Object, e As EventArgs) Handles Button34.Click
- fillTXT("Molimo uklonite pečat i odnesite ga u VERAG!", "TIR: ", template_YU, "Molimo uklonite pečat i odnesite ga u VERAG!")
+ fillTXT("Molimo uklonite pečat i odnesite ga u VERAG!", "YU", "TIR: ", template_YU, "Molimo uklonite pečat i odnesite ga u VERAG!")
End Sub
Private Sub Button33_Click(sender As Object, e As EventArgs) Handles Button33.Click
- fillTXT("Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!", "TIR: ", template_RO, "Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!")
+ fillTXT("Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!", "RO", "TIR: ", template_RO, "Vă rugăm să îndepărtați sigiliul și să îl duceți la VERAG!")
End Sub
Private Sub Button32_Click(sender As Object, e As EventArgs) Handles Button32.Click
- fillTXT("Моля, махнете печата и го занесете в VERAG!", "TIR: ", template_BG, "Моля, махнете печата и го занесете в VERAG!")
+ fillTXT("Моля, махнете печата и го занесете в VERAG!", "BG", "TIR: ", template_BG, "Моля, махнете печата и го занесете в VERAG!")
End Sub
Private Sub Button37_Click(sender As Object, e As EventArgs) Handles Button37.Click
- fillTXT("Ве молиме дојдете во VERAG!", "LKW: ", template_MK)
+ fillTXT("Ве молиме дојдете во VERAG!", "MK", "LKW: ", template_MK)
End Sub
Private Sub Button38_Click(sender As Object, e As EventArgs) Handles Button38.Click
- fillTXT("Ве молиме дојдете во VERAG и понесете го вашиот пасош!", "LKW: ", template_MK)
+ fillTXT("Ве молиме дојдете во VERAG и понесете го вашиот пасош!", "MK", "LKW: ", template_MK)
End Sub
Private Sub Button39_Click(sender As Object, e As EventArgs) Handles Button39.Click
- fillTXT("Ве молиме дојдете во VERAG и подигнете го печатот!", "LKW: ", template_MK, " и земи го печатот со себе!")
+ fillTXT("Ве молиме дојдете во VERAG и подигнете го печатот!", "MK", "LKW: ", template_MK, " и земи го печатот со себе!")
End Sub
Private Sub Button40_Click(sender As Object, e As EventArgs) Handles Button40.Click
- fillTXT("ВВе молиме дојдете во VERAG и понесете готовина со себе: € ", "LKW: ", template_MK, " и понесете готовина со себе: € ")
+ fillTXT("Ве молиме дојдете во VERAG и понесете готовина со себе: € ", "MK", "LKW: ", template_MK, " и понесете готовина со себе: € ")
End Sub
Private Sub Button41_Click(sender As Object, e As EventArgs) Handles Button41.Click
- fillTXT("Ве молиме подигнете го пликот од царината и дојдете во VERAG!", "LKW: ", template_MK, "Ве молиме подигнете го пликот од царината!")
+ fillTXT("Ве молиме подигнете го пликот од царината и дојдете во VERAG!", "MK", "LKW: ", template_MK, "Ве молиме подигнете го пликот од царината!")
End Sub
Private Sub Button42_Click(sender As Object, e As EventArgs) Handles Button42.Click
- fillTXT("Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG!", "LKW: ", template_MK, "Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG.")
+ fillTXT("Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG!", "MK", "LKW: ", template_MK, "Ве молиме отстранете ги пломбите и однесете ги во канцеларијата на VERAG.")
End Sub
Private Sub Button43_Click(sender As Object, e As EventArgs) Handles Button43.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("Ве молиме дојдете во VERAG " & MyRichTextBox1.Text, "", template_DE, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("Ве молиме дојдете во VERAG " & MyRichTextBox1.Text, "MK", "", template_MK, MyRichTextBox1.Text)
End Sub
Private Sub Button44_Click(sender As Object, e As EventArgs) Handles Button44.Click
- fillTXT("Please come to VERAG!", "LKW: ", template_EN)
+ fillTXT("Please come to VERAG!", "EN", "LKW: ", template_EN)
End Sub
Private Sub Button47_Click(sender As Object, e As EventArgs) Handles Button47.Click
- fillTXT("Please come to VERAG and bring your passport!", "LKW: ", template_EN, " and bring your passport!")
+ fillTXT("Please come to VERAG and bring your passport!", "EN", "LKW: ", template_EN, " and bring your passport!")
End Sub
Private Sub Button49_Click(sender As Object, e As EventArgs) Handles Button49.Click
- fillTXT("Please come to VERAG and collect the STAMP!", "LKW: ", template_EN, " and collect the STAMP!")
+ fillTXT("Please come to VERAG and collect the STAMP!", "EN", "LKW: ", template_EN, " and collect the STAMP!")
End Sub
Private Sub Button51_Click(sender As Object, e As EventArgs) Handles Button51.Click
- fillTXT("Please come to VERAG and bring cash with you: € ", "LKW: ", template_EN, " and bring cash with you: € ")
+ fillTXT("Please come to VERAG and bring cash with you: € ", "EN", "LKW: ", template_EN, " and bring cash with you: € ")
End Sub
Private Sub Button53_Click(sender As Object, e As EventArgs) Handles Button53.Click
- fillTXT("Please collect the envelope from customs and come to VERAG!", "LKW: ", template_EN, "Please collect the envelope from customs!")
+ fillTXT("Please collect the envelope from customs and come to VERAG!", "EN", "LKW: ", template_EN, "Please collect the envelope from customs!")
End Sub
Private Sub Button55_Click(sender As Object, e As EventArgs) Handles Button55.Click
- fillTXT("Please remove the seal(s) and take them to the VERAG office!", "LKW: ", template_EN, "Please remove the seal(s) and take them to the VERAG office!")
+ fillTXT("Please remove the seal(s) and take them to the VERAG office!", "EN", "LKW: ", template_EN, "Please remove the seal(s) and take them to the VERAG office!")
End Sub
Private Sub Button56_Click(sender As Object, e As EventArgs) Handles Button56.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("Please come to VERAG " & MyRichTextBox1.Text, "", template_EN, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("Please come to VERAG " & MyRichTextBox1.Text, "EN", "", template_EN, MyRichTextBox1.Text)
End Sub
Private Sub Button57_Click(sender As Object, e As EventArgs) Handles Button57.Click
- If MyRichTextBox1.Text <> "" Then fillTXT("Si prega di recarsi presso VERAG " & MyRichTextBox1.Text, "", template_EN, MyRichTextBox1.Text)
+ If MyRichTextBox1.Text <> "" Then fillTXT("Si prega di recarsi presso VERAG " & MyRichTextBox1.Text, "IT", "", template_IT, MyRichTextBox1.Text)
End Sub
Private Sub Button45_Click(sender As Object, e As EventArgs) Handles Button45.Click
- fillTXT("Si prega di recarsi presso VERAG!", "LKW: ", template_IT)
+ fillTXT("Si prega di recarsi presso VERAG!", "IT", "LKW: ", template_IT)
End Sub
Private Sub Button46_Click(sender As Object, e As EventArgs) Handles Button46.Click
- fillTXT("Ti preghiamo di recarti presso VERAG e di portare con te il passaporto!", "LKW: ", template_IT, " e porta con te il passaporto!")
+ fillTXT("Ti preghiamo di recarti presso VERAG e di portare con te il passaporto!", "IT", "LKW: ", template_IT, " e porta con te il passaporto!")
End Sub
Private Sub Button48_Click(sender As Object, e As EventArgs) Handles Button48.Click
- fillTXT("Ti preghiamo di recarti presso VERAG e ritirare il TIMBRO!", "LKW: ", template_IT, " e ritira il TIMBRO!")
+ fillTXT("Ti preghiamo di recarti presso VERAG e ritirare il TIMBRO!", "IT", "LKW: ", template_IT, " e ritira il TIMBRO!")
End Sub
Private Sub Button50_Click(sender As Object, e As EventArgs) Handles Button50.Click
- fillTXT("Ti preghiamo di venire da VERAG e di portare con te dei contanti: € ", "LKW: ", template_IT, " e portate con voi dei contanti: € ")
+ fillTXT("Ti preghiamo di venire da VERAG e di portare con te dei contanti: € ", "IT", "LKW: ", template_IT, " e portate con voi dei contanti: € ")
End Sub
Private Sub Button52_Click(sender As Object, e As EventArgs) Handles Button52.Click
- fillTXT("Ti preghiamo di ritirare la busta presso la dogana e di recarti presso VERAG!", "LKW: ", template_IT, "Si prega di ritirare la busta presso la dogana!")
+ fillTXT("Ti preghiamo di ritirare la busta presso la dogana e di recarti presso VERAG!", "IT", "LKW: ", template_IT, "Si prega di ritirare la busta presso la dogana!")
End Sub
Private Sub Button54_Click(sender As Object, e As EventArgs) Handles Button54.Click
- fillTXT("Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!", "LKW: ", template_IT, "Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!")
+ fillTXT("Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!", "IT", "LKW: ", template_IT, "Si prega di rimuovere i sigilli e di consegnarli all'ufficio VERAG!")
End Sub
End Class
diff --git a/SDL/SMS/usrCntlSMS.Designer.vb b/SDL/SMS/usrCntlSMS.Designer.vb
index 7a1bbe55..e498600d 100644
--- a/SDL/SMS/usrCntlSMS.Designer.vb
+++ b/SDL/SMS/usrCntlSMS.Designer.vb
@@ -33,6 +33,7 @@ Partial Class usrCntlSMS
Me.Button6 = New System.Windows.Forms.Button()
Me.Button5 = New System.Windows.Forms.Button()
Me.pnloptions = New System.Windows.Forms.Panel()
+ Me.Button3 = New System.Windows.Forms.Button()
Me.Button1 = New System.Windows.Forms.Button()
Me.Button2 = New System.Windows.Forms.Button()
Me.FlatButton7 = New System.Windows.Forms.Button()
@@ -56,13 +57,16 @@ Partial Class usrCntlSMS
Me.Label12 = New System.Windows.Forms.Label()
Me.DateTimePicker1 = New System.Windows.Forms.DateTimePicker()
Me.pnl = New System.Windows.Forms.Panel()
+ Me.Label5 = New System.Windows.Forms.Label()
+ Me.lblgesendetOK = New System.Windows.Forms.Label()
+ Me.Label3 = New System.Windows.Forms.Label()
Me.cboAbsedner = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label8 = New System.Windows.Forms.Label()
Me.cntxtOptionen = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.AbgeholtToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.StornoToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
- Me.Button3 = New System.Windows.Forms.Button()
+ Me.lblFehlerhaft = New System.Windows.Forms.Label()
Me.pnloptions.SuspendLayout()
Me.pnlTop.SuspendLayout()
Me.Panel1.SuspendLayout()
@@ -80,7 +84,7 @@ Partial Class usrCntlSMS
Me.cboSachbearbeiter.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.ListItems
Me.cboSachbearbeiter.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.cboSachbearbeiter.FormattingEnabled = True
- Me.cboSachbearbeiter.Location = New System.Drawing.Point(435, 78)
+ Me.cboSachbearbeiter.Location = New System.Drawing.Point(444, 77)
Me.cboSachbearbeiter.Name = "cboSachbearbeiter"
Me.cboSachbearbeiter.Size = New System.Drawing.Size(168, 24)
Me.cboSachbearbeiter.TabIndex = 21
@@ -90,10 +94,12 @@ Partial Class usrCntlSMS
Me.txtAbfertDatBis._DateTimeOnly = False
Me.txtAbfertDatBis._numbersOnly = False
Me.txtAbfertDatBis._numbersOnlyKommastellen = ""
+ Me.txtAbfertDatBis._numbersOnlyTrennzeichen = True
Me.txtAbfertDatBis._Prozent = False
Me.txtAbfertDatBis._ShortDateNew = True
Me.txtAbfertDatBis._ShortDateOnly = False
Me.txtAbfertDatBis._TimeOnly = False
+ Me.txtAbfertDatBis._TimeOnly_Seconds = False
Me.txtAbfertDatBis._value = ""
Me.txtAbfertDatBis._Waehrung = False
Me.txtAbfertDatBis._WaehrungZeichen = True
@@ -113,10 +119,12 @@ Partial Class usrCntlSMS
Me.txtAbfertDat._DateTimeOnly = False
Me.txtAbfertDat._numbersOnly = False
Me.txtAbfertDat._numbersOnlyKommastellen = ""
+ Me.txtAbfertDat._numbersOnlyTrennzeichen = True
Me.txtAbfertDat._Prozent = False
Me.txtAbfertDat._ShortDateNew = True
Me.txtAbfertDat._ShortDateOnly = False
Me.txtAbfertDat._TimeOnly = False
+ Me.txtAbfertDat._TimeOnly_Seconds = False
Me.txtAbfertDat._value = ""
Me.txtAbfertDat._Waehrung = False
Me.txtAbfertDat._WaehrungZeichen = True
@@ -148,16 +156,18 @@ Partial Class usrCntlSMS
Me.txtHandyNr._DateTimeOnly = False
Me.txtHandyNr._numbersOnly = False
Me.txtHandyNr._numbersOnlyKommastellen = ""
+ Me.txtHandyNr._numbersOnlyTrennzeichen = True
Me.txtHandyNr._Prozent = False
Me.txtHandyNr._ShortDateNew = False
Me.txtHandyNr._ShortDateOnly = False
Me.txtHandyNr._TimeOnly = False
+ Me.txtHandyNr._TimeOnly_Seconds = False
Me.txtHandyNr._value = ""
Me.txtHandyNr._Waehrung = False
Me.txtHandyNr._WaehrungZeichen = True
Me.txtHandyNr.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.txtHandyNr.ForeColor = System.Drawing.Color.Black
- Me.txtHandyNr.Location = New System.Drawing.Point(435, 57)
+ Me.txtHandyNr.Location = New System.Drawing.Point(444, 52)
Me.txtHandyNr.MaxLineLength = -1
Me.txtHandyNr.MaxLines_Warning = ""
Me.txtHandyNr.MaxLines_Warning_Label = Nothing
@@ -225,6 +235,19 @@ Partial Class usrCntlSMS
Me.pnloptions.Size = New System.Drawing.Size(1111, 59)
Me.pnloptions.TabIndex = 2
'
+ 'Button3
+ '
+ Me.Button3.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
+ Me.Button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button3.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.Button3.Location = New System.Drawing.Point(226, 5)
+ Me.Button3.Margin = New System.Windows.Forms.Padding(0)
+ Me.Button3.Name = "Button3"
+ Me.Button3.Size = New System.Drawing.Size(104, 45)
+ Me.Button3.TabIndex = 10
+ Me.Button3.Text = "Status Link"
+ Me.Button3.UseVisualStyleBackColor = True
+ '
'Button1
'
Me.Button1.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
@@ -284,10 +307,12 @@ Partial Class usrCntlSMS
Me.txtMaxSrch._DateTimeOnly = False
Me.txtMaxSrch._numbersOnly = True
Me.txtMaxSrch._numbersOnlyKommastellen = ""
+ Me.txtMaxSrch._numbersOnlyTrennzeichen = True
Me.txtMaxSrch._Prozent = False
Me.txtMaxSrch._ShortDateNew = False
Me.txtMaxSrch._ShortDateOnly = False
Me.txtMaxSrch._TimeOnly = False
+ Me.txtMaxSrch._TimeOnly_Seconds = False
Me.txtMaxSrch._value = ""
Me.txtMaxSrch._Waehrung = False
Me.txtMaxSrch._WaehrungZeichen = True
@@ -523,6 +548,10 @@ Partial Class usrCntlSMS
'
Me.pnl.BackColor = System.Drawing.Color.WhiteSmoke
Me.pnl.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
+ Me.pnl.Controls.Add(Me.lblFehlerhaft)
+ Me.pnl.Controls.Add(Me.Label5)
+ Me.pnl.Controls.Add(Me.lblgesendetOK)
+ Me.pnl.Controls.Add(Me.Label3)
Me.pnl.Controls.Add(Me.cboAbsedner)
Me.pnl.Controls.Add(Me.Label1)
Me.pnl.Controls.Add(Me.Label8)
@@ -553,6 +582,36 @@ Partial Class usrCntlSMS
Me.pnl.Size = New System.Drawing.Size(1111, 140)
Me.pnl.TabIndex = 0
'
+ 'Label5
+ '
+ Me.Label5.AutoSize = True
+ Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Label5.Location = New System.Drawing.Point(631, 109)
+ Me.Label5.Name = "Label5"
+ Me.Label5.Size = New System.Drawing.Size(61, 13)
+ Me.Label5.TabIndex = 39
+ Me.Label5.Text = "fehlerhaft"
+ '
+ 'lblgesendetOK
+ '
+ Me.lblgesendetOK.AutoSize = True
+ Me.lblgesendetOK.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblgesendetOK.Location = New System.Drawing.Point(787, 92)
+ Me.lblgesendetOK.Name = "lblgesendetOK"
+ Me.lblgesendetOK.Size = New System.Drawing.Size(11, 13)
+ Me.lblgesendetOK.TabIndex = 38
+ Me.lblgesendetOK.Text = "."
+ '
+ 'Label3
+ '
+ Me.Label3.AutoSize = True
+ Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Label3.Location = New System.Drawing.Point(631, 87)
+ Me.Label3.Name = "Label3"
+ Me.Label3.Size = New System.Drawing.Size(95, 13)
+ Me.Label3.TabIndex = 37
+ Me.Label3.Text = "erfolgreich ges."
+ '
'cboAbsedner
'
Me.cboAbsedner._allowedValuesFreiText = Nothing
@@ -607,18 +666,15 @@ Partial Class usrCntlSMS
Me.StornoToolStripMenuItem.Size = New System.Drawing.Size(123, 22)
Me.StornoToolStripMenuItem.Text = "Storno"
'
- 'Button3
+ 'lblFehlerhaft
'
- Me.Button3.Anchor = CType((System.Windows.Forms.AnchorStyles.Bottom Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
- Me.Button3.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.Button3.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.Button3.Location = New System.Drawing.Point(226, 5)
- Me.Button3.Margin = New System.Windows.Forms.Padding(0)
- Me.Button3.Name = "Button3"
- Me.Button3.Size = New System.Drawing.Size(104, 45)
- Me.Button3.TabIndex = 10
- Me.Button3.Text = "Status Link"
- Me.Button3.UseVisualStyleBackColor = True
+ Me.lblFehlerhaft.AutoSize = True
+ Me.lblFehlerhaft.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblFehlerhaft.Location = New System.Drawing.Point(787, 113)
+ Me.lblFehlerhaft.Name = "lblFehlerhaft"
+ Me.lblFehlerhaft.Size = New System.Drawing.Size(11, 13)
+ Me.lblFehlerhaft.TabIndex = 42
+ Me.lblFehlerhaft.Text = "."
'
'usrCntlSMS
'
@@ -680,4 +736,8 @@ Partial Class usrCntlSMS
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents Button1 As Button
Friend WithEvents Button3 As Button
+ Friend WithEvents lblgesendetOK As Label
+ Friend WithEvents Label3 As Label
+ Friend WithEvents Label5 As Label
+ Friend WithEvents lblFehlerhaft As Label
End Class
diff --git a/SDL/SMS/usrCntlSMS.vb b/SDL/SMS/usrCntlSMS.vb
index 9d08e644..660d4e8b 100644
--- a/SDL/SMS/usrCntlSMS.vb
+++ b/SDL/SMS/usrCntlSMS.vb
@@ -1,4 +1,5 @@
Imports com.esendex.sdk.sent
+Imports java.rmi.dgc
Public Class usrCntlSMS
@@ -175,6 +176,19 @@ Public Class usrCntlSMS
End With
showDGV()
+ Dim OK As Integer = 0
+ Dim failed As Integer = 0
+ For Each r As DataGridViewRow In MyDatagridview1.Rows
+ If r.Cells("Status").Value = "OK" Then
+ OK += 1
+ ElseIf r.Cells("Status").Value = "FEHLER" Then
+ failed += 1
+ End If
+ Next
+
+ lblgesendetOK.Text = OK & " / " & MyDatagridview1.Rows.Count
+ lblFehlerhaft.Text = failed & " / " & MyDatagridview1.Rows.Count
+
Me.Cursor = Cursors.Default
End Sub
@@ -399,5 +413,7 @@ Public Class usrCntlSMS
End If
End Sub
+
+
End Class
diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb
index 62637f16..1a20f447 100644
--- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb
+++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.Designer.vb
@@ -23,12 +23,12 @@ Partial Class usrCntlSpeditionsBuchSuche
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
+ Dim DataGridViewCellStyle4 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+ Dim DataGridViewCellStyle5 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+ Dim DataGridViewCellStyle6 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle7 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle8 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle9 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
- Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
- Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
- Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(usrCntlSpeditionsBuchSuche))
Me.TabPage1 = New System.Windows.Forms.TabPage()
Me.cntxtCntxtSpeditionsbuch = New System.Windows.Forms.ContextMenuStrip(Me.components)
@@ -48,6 +48,10 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.lblAbfertigungsarten = New System.Windows.Forms.Label()
Me.Label17 = New System.Windows.Forms.Label()
Me.pnlAnzeige = New System.Windows.Forms.Panel()
+ Me.btnHandling = New System.Windows.Forms.Button()
+ Me.cboHandlingssatz = New VERAG_PROG_ALLGEMEIN.MyComboBox()
+ Me.cboHandlingssatz_AMBAR = New VERAG_PROG_ALLGEMEIN.MyComboBox()
+ Me.btnHandling_AMBAR = New System.Windows.Forms.Button()
Me.txtFiskalEndempfaenger = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.DataGridView = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.dgvLKW = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
@@ -76,11 +80,6 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.btnSpedBuchEinnahmen = New System.Windows.Forms.Button()
Me.pnlBerichte = New System.Windows.Forms.Panel()
Me.CheckBox5 = New System.Windows.Forms.CheckBox()
- Me.FlowLayoutPanel1 = New System.Windows.Forms.FlowLayoutPanel()
- Me.btnHandling = New System.Windows.Forms.Button()
- Me.cboHandlingssatz = New VERAG_PROG_ALLGEMEIN.MyComboBox()
- Me.btnHandling_AMBAR = New System.Windows.Forms.Button()
- Me.cboHandlingssatz_AMBAR = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.cbxHandlingAbrechnen = New System.Windows.Forms.CheckBox()
Me.cbxDetailbericht = New System.Windows.Forms.CheckBox()
Me.Button24 = New System.Windows.Forms.Button()
@@ -218,6 +217,8 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.Label45 = New System.Windows.Forms.Label()
Me.cboFilialeHandling = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.SplitContainer = New System.Windows.Forms.SplitContainer()
+ Me.pnlHandling = New System.Windows.Forms.Panel()
+ Me.pnlHandlingAmbar = New System.Windows.Forms.Panel()
Me.cntxtCntxtSpeditionsbuch.SuspendLayout()
Me.pnlRechts.SuspendLayout()
Me.pnlAnzeige.SuspendLayout()
@@ -227,7 +228,6 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.Panel3.SuspendLayout()
Me.Panel1.SuspendLayout()
Me.pnlBerichte.SuspendLayout()
- Me.FlowLayoutPanel1.SuspendLayout()
Me.MenuStrip1.SuspendLayout()
Me.pnl.SuspendLayout()
Me.MenuStrip2.SuspendLayout()
@@ -243,6 +243,8 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.SplitContainer.Panel1.SuspendLayout()
Me.SplitContainer.Panel2.SuspendLayout()
Me.SplitContainer.SuspendLayout()
+ Me.pnlHandling.SuspendLayout()
+ Me.pnlHandlingAmbar.SuspendLayout()
Me.SuspendLayout()
'
'TabPage1
@@ -428,6 +430,59 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.pnlAnzeige.Size = New System.Drawing.Size(1239, 452)
Me.pnlAnzeige.TabIndex = 0
'
+ 'btnHandling
+ '
+ Me.btnHandling.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.btnHandling.Image = Global.SDL.My.Resources.Resources.statistik_small
+ Me.btnHandling.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.btnHandling.Location = New System.Drawing.Point(1, 2)
+ Me.btnHandling.Margin = New System.Windows.Forms.Padding(0)
+ Me.btnHandling.Name = "btnHandling"
+ Me.btnHandling.Size = New System.Drawing.Size(159, 28)
+ Me.btnHandling.TabIndex = 59
+ Me.btnHandling.Text = "Handling an Außenstellen"
+ Me.btnHandling.TextAlign = System.Drawing.ContentAlignment.MiddleRight
+ Me.btnHandling.UseVisualStyleBackColor = True
+ '
+ 'cboHandlingssatz
+ '
+ Me.cboHandlingssatz._allowedValuesFreiText = Nothing
+ Me.cboHandlingssatz._allowFreiText = False
+ Me.cboHandlingssatz._value = ""
+ Me.cboHandlingssatz.DropDownWidth = 300
+ Me.cboHandlingssatz.FormattingEnabled = True
+ Me.cboHandlingssatz.Location = New System.Drawing.Point(1, 32)
+ Me.cboHandlingssatz.Name = "cboHandlingssatz"
+ Me.cboHandlingssatz.Size = New System.Drawing.Size(159, 21)
+ Me.cboHandlingssatz.TabIndex = 60
+ '
+ 'cboHandlingssatz_AMBAR
+ '
+ Me.cboHandlingssatz_AMBAR._allowedValuesFreiText = Nothing
+ Me.cboHandlingssatz_AMBAR._allowFreiText = False
+ Me.cboHandlingssatz_AMBAR._value = ""
+ Me.cboHandlingssatz_AMBAR.DropDownWidth = 250
+ Me.cboHandlingssatz_AMBAR.Font = New System.Drawing.Font("Microsoft Tai Le", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.cboHandlingssatz_AMBAR.FormattingEnabled = True
+ Me.cboHandlingssatz_AMBAR.Location = New System.Drawing.Point(10, 38)
+ Me.cboHandlingssatz_AMBAR.Name = "cboHandlingssatz_AMBAR"
+ Me.cboHandlingssatz_AMBAR.Size = New System.Drawing.Size(128, 22)
+ Me.cboHandlingssatz_AMBAR.TabIndex = 53
+ '
+ 'btnHandling_AMBAR
+ '
+ Me.btnHandling_AMBAR.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.btnHandling_AMBAR.Image = Global.SDL.My.Resources.Resources.statistik_small
+ Me.btnHandling_AMBAR.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.btnHandling_AMBAR.Location = New System.Drawing.Point(10, 9)
+ Me.btnHandling_AMBAR.Margin = New System.Windows.Forms.Padding(0)
+ Me.btnHandling_AMBAR.Name = "btnHandling_AMBAR"
+ Me.btnHandling_AMBAR.Size = New System.Drawing.Size(128, 28)
+ Me.btnHandling_AMBAR.TabIndex = 94
+ Me.btnHandling_AMBAR.Text = "Handling (AMBAR)"
+ Me.btnHandling_AMBAR.TextAlign = System.Drawing.ContentAlignment.MiddleRight
+ Me.btnHandling_AMBAR.UseVisualStyleBackColor = True
+ '
'txtFiskalEndempfaenger
'
Me.txtFiskalEndempfaenger._DateTimeOnly = False
@@ -462,35 +517,35 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.DataGridView.AllowUserToDeleteRows = False
Me.DataGridView.AllowUserToOrderColumns = True
Me.DataGridView.AllowUserToResizeRows = False
- DataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
- DataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control
- DataGridViewCellStyle7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- DataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText
- DataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight
- DataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText
- DataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
- Me.DataGridView.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle7
+ DataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+ DataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control
+ DataGridViewCellStyle4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ DataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText
+ DataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight
+ DataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+ DataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+ Me.DataGridView.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle4
Me.DataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.DataGridView.ContextMenuStrip = Me.cntxtCntxtSpeditionsbuch
- DataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
- DataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window
- DataGridViewCellStyle8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- DataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText
- DataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight
- DataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText
- DataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
- Me.DataGridView.DefaultCellStyle = DataGridViewCellStyle8
+ DataGridViewCellStyle5.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+ DataGridViewCellStyle5.BackColor = System.Drawing.SystemColors.Window
+ DataGridViewCellStyle5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ DataGridViewCellStyle5.ForeColor = System.Drawing.SystemColors.ControlText
+ DataGridViewCellStyle5.SelectionBackColor = System.Drawing.SystemColors.Highlight
+ DataGridViewCellStyle5.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+ DataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
+ Me.DataGridView.DefaultCellStyle = DataGridViewCellStyle5
Me.DataGridView.Dock = System.Windows.Forms.DockStyle.Fill
Me.DataGridView.Location = New System.Drawing.Point(450, 0)
Me.DataGridView.Name = "DataGridView"
- DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
- DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control
- DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText
- DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight
- DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText
- DataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
- Me.DataGridView.RowHeadersDefaultCellStyle = DataGridViewCellStyle9
+ DataGridViewCellStyle6.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+ DataGridViewCellStyle6.BackColor = System.Drawing.SystemColors.Control
+ DataGridViewCellStyle6.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ DataGridViewCellStyle6.ForeColor = System.Drawing.SystemColors.WindowText
+ DataGridViewCellStyle6.SelectionBackColor = System.Drawing.SystemColors.Highlight
+ DataGridViewCellStyle6.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+ DataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+ Me.DataGridView.RowHeadersDefaultCellStyle = DataGridViewCellStyle6
Me.DataGridView.Size = New System.Drawing.Size(789, 262)
Me.DataGridView.TabIndex = 0
'
@@ -502,35 +557,35 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.dgvLKW.AllowUserToOrderColumns = True
Me.dgvLKW.AllowUserToResizeRows = False
Me.dgvLKW.BackgroundColor = System.Drawing.Color.WhiteSmoke
- DataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
- DataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Control
- DataGridViewCellStyle1.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- DataGridViewCellStyle1.ForeColor = System.Drawing.SystemColors.WindowText
- DataGridViewCellStyle1.SelectionBackColor = System.Drawing.SystemColors.Highlight
- DataGridViewCellStyle1.SelectionForeColor = System.Drawing.SystemColors.HighlightText
- DataGridViewCellStyle1.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
- Me.dgvLKW.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle1
+ DataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+ DataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control
+ DataGridViewCellStyle7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ DataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText
+ DataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight
+ DataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+ DataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+ Me.dgvLKW.ColumnHeadersDefaultCellStyle = DataGridViewCellStyle7
Me.dgvLKW.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize
Me.dgvLKW.ContextMenuStrip = Me.cntxtCntxtSpeditionsbuch
- DataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
- DataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Window
- DataGridViewCellStyle2.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- DataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.ControlText
- DataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight
- DataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText
- DataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
- Me.dgvLKW.DefaultCellStyle = DataGridViewCellStyle2
+ DataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+ DataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Window
+ DataGridViewCellStyle8.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ DataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.ControlText
+ DataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight
+ DataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+ DataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.[False]
+ Me.dgvLKW.DefaultCellStyle = DataGridViewCellStyle8
Me.dgvLKW.Dock = System.Windows.Forms.DockStyle.Left
Me.dgvLKW.Location = New System.Drawing.Point(0, 0)
Me.dgvLKW.Name = "dgvLKW"
- DataGridViewCellStyle3.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
- DataGridViewCellStyle3.BackColor = System.Drawing.SystemColors.Control
- DataGridViewCellStyle3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- DataGridViewCellStyle3.ForeColor = System.Drawing.SystemColors.WindowText
- DataGridViewCellStyle3.SelectionBackColor = System.Drawing.SystemColors.Highlight
- DataGridViewCellStyle3.SelectionForeColor = System.Drawing.SystemColors.HighlightText
- DataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
- Me.dgvLKW.RowHeadersDefaultCellStyle = DataGridViewCellStyle3
+ DataGridViewCellStyle9.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft
+ DataGridViewCellStyle9.BackColor = System.Drawing.SystemColors.Control
+ DataGridViewCellStyle9.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ DataGridViewCellStyle9.ForeColor = System.Drawing.SystemColors.WindowText
+ DataGridViewCellStyle9.SelectionBackColor = System.Drawing.SystemColors.Highlight
+ DataGridViewCellStyle9.SelectionForeColor = System.Drawing.SystemColors.HighlightText
+ DataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.[True]
+ Me.dgvLKW.RowHeadersDefaultCellStyle = DataGridViewCellStyle9
Me.dgvLKW.Size = New System.Drawing.Size(450, 262)
Me.dgvLKW.TabIndex = 35
Me.dgvLKW.Visible = False
@@ -851,8 +906,9 @@ Partial Class usrCntlSpeditionsBuchSuche
'
Me.pnlBerichte.Anchor = CType(((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left), System.Windows.Forms.AnchorStyles)
+ Me.pnlBerichte.Controls.Add(Me.pnlHandlingAmbar)
+ Me.pnlBerichte.Controls.Add(Me.pnlHandling)
Me.pnlBerichte.Controls.Add(Me.CheckBox5)
- Me.pnlBerichte.Controls.Add(Me.FlowLayoutPanel1)
Me.pnlBerichte.Controls.Add(Me.cbxHandlingAbrechnen)
Me.pnlBerichte.Controls.Add(Me.cbxDetailbericht)
Me.pnlBerichte.Controls.Add(Me.Button24)
@@ -890,76 +946,12 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.CheckBox5.Text = "mit DL-Kosten"
Me.CheckBox5.UseVisualStyleBackColor = False
'
- 'FlowLayoutPanel1
- '
- Me.FlowLayoutPanel1.Controls.Add(Me.btnHandling)
- Me.FlowLayoutPanel1.Controls.Add(Me.cboHandlingssatz)
- Me.FlowLayoutPanel1.Controls.Add(Me.btnHandling_AMBAR)
- Me.FlowLayoutPanel1.Controls.Add(Me.cboHandlingssatz_AMBAR)
- Me.FlowLayoutPanel1.Location = New System.Drawing.Point(3, 123)
- Me.FlowLayoutPanel1.Name = "FlowLayoutPanel1"
- Me.FlowLayoutPanel1.Size = New System.Drawing.Size(319, 60)
- Me.FlowLayoutPanel1.TabIndex = 97
- '
- 'btnHandling
- '
- Me.btnHandling.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.btnHandling.Image = Global.SDL.My.Resources.Resources.statistik_small
- Me.btnHandling.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.btnHandling.Location = New System.Drawing.Point(0, 0)
- Me.btnHandling.Margin = New System.Windows.Forms.Padding(0)
- Me.btnHandling.Name = "btnHandling"
- Me.btnHandling.Size = New System.Drawing.Size(159, 28)
- Me.btnHandling.TabIndex = 59
- Me.btnHandling.Text = "Handling an Außenstellen"
- Me.btnHandling.TextAlign = System.Drawing.ContentAlignment.MiddleRight
- Me.btnHandling.UseVisualStyleBackColor = True
- '
- 'cboHandlingssatz
- '
- Me.cboHandlingssatz._allowedValuesFreiText = Nothing
- Me.cboHandlingssatz._allowFreiText = False
- Me.cboHandlingssatz._value = ""
- Me.cboHandlingssatz.DropDownWidth = 300
- Me.cboHandlingssatz.FormattingEnabled = True
- Me.cboHandlingssatz.Location = New System.Drawing.Point(3, 31)
- Me.cboHandlingssatz.Name = "cboHandlingssatz"
- Me.cboHandlingssatz.Size = New System.Drawing.Size(159, 21)
- Me.cboHandlingssatz.TabIndex = 60
- '
- 'btnHandling_AMBAR
- '
- Me.btnHandling_AMBAR.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.btnHandling_AMBAR.Image = Global.SDL.My.Resources.Resources.statistik_small
- Me.btnHandling_AMBAR.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.btnHandling_AMBAR.Location = New System.Drawing.Point(165, 28)
- Me.btnHandling_AMBAR.Margin = New System.Windows.Forms.Padding(0)
- Me.btnHandling_AMBAR.Name = "btnHandling_AMBAR"
- Me.btnHandling_AMBAR.Size = New System.Drawing.Size(128, 28)
- Me.btnHandling_AMBAR.TabIndex = 94
- Me.btnHandling_AMBAR.Text = "Handling (AMBAR)"
- Me.btnHandling_AMBAR.TextAlign = System.Drawing.ContentAlignment.MiddleRight
- Me.btnHandling_AMBAR.UseVisualStyleBackColor = True
- '
- 'cboHandlingssatz_AMBAR
- '
- Me.cboHandlingssatz_AMBAR._allowedValuesFreiText = Nothing
- Me.cboHandlingssatz_AMBAR._allowFreiText = False
- Me.cboHandlingssatz_AMBAR._value = ""
- Me.cboHandlingssatz_AMBAR.DropDownWidth = 250
- Me.cboHandlingssatz_AMBAR.Font = New System.Drawing.Font("Microsoft Tai Le", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.cboHandlingssatz_AMBAR.FormattingEnabled = True
- Me.cboHandlingssatz_AMBAR.Location = New System.Drawing.Point(3, 59)
- Me.cboHandlingssatz_AMBAR.Name = "cboHandlingssatz_AMBAR"
- Me.cboHandlingssatz_AMBAR.Size = New System.Drawing.Size(128, 22)
- Me.cboHandlingssatz_AMBAR.TabIndex = 53
- '
'cbxHandlingAbrechnen
'
Me.cbxHandlingAbrechnen.AutoSize = True
Me.cbxHandlingAbrechnen.BackColor = System.Drawing.Color.WhiteSmoke
Me.cbxHandlingAbrechnen.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.cbxHandlingAbrechnen.Location = New System.Drawing.Point(4, 107)
+ Me.cbxHandlingAbrechnen.Location = New System.Drawing.Point(4, 102)
Me.cbxHandlingAbrechnen.Name = "cbxHandlingAbrechnen"
Me.cbxHandlingAbrechnen.Size = New System.Drawing.Size(140, 17)
Me.cbxHandlingAbrechnen.TabIndex = 96
@@ -3017,6 +3009,25 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.SplitContainer.SplitterWidth = 2
Me.SplitContainer.TabIndex = 3
'
+ 'pnlHandling
+ '
+ Me.pnlHandling.Controls.Add(Me.cboHandlingssatz)
+ Me.pnlHandling.Controls.Add(Me.btnHandling)
+ Me.pnlHandling.Location = New System.Drawing.Point(3, 126)
+ Me.pnlHandling.Name = "pnlHandling"
+ Me.pnlHandling.Size = New System.Drawing.Size(163, 58)
+ Me.pnlHandling.TabIndex = 99
+ '
+ 'pnlHandlingAmbar
+ '
+ Me.pnlHandlingAmbar.Controls.Add(Me.cboHandlingssatz_AMBAR)
+ Me.pnlHandlingAmbar.Controls.Add(Me.btnHandling_AMBAR)
+ Me.pnlHandlingAmbar.Location = New System.Drawing.Point(3, 122)
+ Me.pnlHandlingAmbar.Name = "pnlHandlingAmbar"
+ Me.pnlHandlingAmbar.Size = New System.Drawing.Size(159, 62)
+ Me.pnlHandlingAmbar.TabIndex = 36
+ Me.pnlHandlingAmbar.Visible = False
+ '
'usrCntlSpeditionsBuchSuche
'
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None
@@ -3040,7 +3051,6 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.Panel1.PerformLayout()
Me.pnlBerichte.ResumeLayout(False)
Me.pnlBerichte.PerformLayout()
- Me.FlowLayoutPanel1.ResumeLayout(False)
Me.MenuStrip1.ResumeLayout(False)
Me.MenuStrip1.PerformLayout()
Me.pnl.ResumeLayout(False)
@@ -3063,6 +3073,8 @@ Partial Class usrCntlSpeditionsBuchSuche
Me.SplitContainer.Panel2.ResumeLayout(False)
CType(Me.SplitContainer, System.ComponentModel.ISupportInitialize).EndInit()
Me.SplitContainer.ResumeLayout(False)
+ Me.pnlHandling.ResumeLayout(False)
+ Me.pnlHandlingAmbar.ResumeLayout(False)
Me.ResumeLayout(False)
End Sub
@@ -3250,8 +3262,9 @@ Partial Class usrCntlSpeditionsBuchSuche
Friend WithEvents cbxfehlZahlung_AVISOID As CheckBox
Friend WithEvents cbxfehlZahlung_SENDUNG As CheckBox
Friend WithEvents cbxHandlingAbrechnen As CheckBox
- Friend WithEvents FlowLayoutPanel1 As FlowLayoutPanel
Friend WithEvents CheckBox5 As CheckBox
Friend WithEvents ToolStripMenuItem3 As ToolStripMenuItem
Friend WithEvents btnnachLeistungsNr As Button
+ Friend WithEvents pnlHandling As Panel
+ Friend WithEvents pnlHandlingAmbar As Panel
End Class
diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx
index b5d92bf9..3a799283 100644
--- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx
+++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.resx
@@ -129,9 +129,6 @@
546, 17
-
- 431, 17
-
diff --git a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb
index 2c499c72..b6145670 100644
--- a/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb
+++ b/SDL/Speditionsbuch/usrCntlSpeditionsBuchSuche.vb
@@ -577,20 +577,24 @@ Public Class usrCntlSpeditionsBuchSuche
Button16.Visible = True
Button17.Visible = True
btnnachLeistungsNr.Visible = True
- ElseIf VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
- pnlBerichte.Visible = True
- For Each p In pnlBerichte.Controls
- p.Visible = False
- Next
- btnHandling_AMBAR.Visible = True
- cboHandlingssatz_AMBAR.Visible = True
- btnHandling.Visible = False
- cboHandlingssatz.Visible = False
+ 'darf nur angezeigt werden, wenn Berechtigung: ZOLL_Auswertungen
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
+ pnlBerichte.Visible = True
+ For Each p In pnlBerichte.Controls
+ p.Visible = False
+ Next
+ cbxHandlingAbrechnen.Visible = True
+ pnlHandling.Visible = False
+ pnlHandlingAmbar.Visible = True
+
+ End If
End If
+
+
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ZOLL_Auswertungen_Erlöse", "SDL") Then
btnSpedBuchEinnahmen.Visible = True
End If
@@ -2930,10 +2934,9 @@ Public Class usrCntlSpeditionsBuchSuche
If cbxHandlingAbrechnen.Checked Then
- Select Case lstFiliale.SelectedItems.Count
- Case 0 : MsgBox("Es muss mind. eine Filiale ausgewählt werden!") : Exit Sub
-
- End Select
+ 'Select Case lstFiliale.SelectedItems.Count
+ ' Case 0 : MsgBox("Es muss mind. eine Filiale ausgewählt werden!") : Exit Sub
+ 'End Select
createHandlingAbrechnung(dtAbrechnung, cboHandlingssatz_AMBAR._value, cboHandlingssatz_AMBAR._value, CDate(txtAbfertDat.Text), CDate(txtAbfertDatBis.Text), anhang_path, HandlingList)
End If
@@ -2978,14 +2981,27 @@ Public Class usrCntlSpeditionsBuchSuche
If frm.ShowDialog() = DialogResult.OK Then
Dim kdNr As Integer = -1
- Select Case anFirma.Trim()
- Case "UNISPED" : kdNr = 704028
- Case "IMEX" : kdNr = 550574
- Case "AMBAR" : kdNr = 725012
- Case Else
- MsgBox("falscher Kunde!")
- Return False
- End Select
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "AMBAR" Then
+ Select Case anFirma.Trim()
+ Case "UNISPED" : kdNr = 3013303
+ Case "IMEX" : kdNr = 3011904
+ Case "VERAG" : kdNr = 3013401
+ Case Else
+ MsgBox("falscher Kunde!")
+ Return False
+ End Select
+ Else
+ Select Case anFirma.Trim()
+ Case "UNISPED" : kdNr = 704028
+ Case "IMEX" : kdNr = 550574
+ Case "AMBAR" : kdNr = 725012
+ Case Else
+ MsgBox("falscher Kunde!")
+ Return False
+ End Select
+
+ End If
+
Dim counter = 0
diff --git a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb
index 3121ab26..ecfaa7fb 100644
--- a/SDL/USTV/frmMDM_USTVAntrag.Designer.vb
+++ b/SDL/USTV/frmMDM_USTVAntrag.Designer.vb
@@ -24,9 +24,11 @@ Partial Class frmMDM_USTVAntrag
Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMDM_USTVAntrag))
- Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
- Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+ Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
+ Dim DataGridViewCellStyle4 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Me.pnlBottom = New System.Windows.Forms.Panel()
+ Me.lblVZAenderungsdatum = New System.Windows.Forms.Label()
+ Me.Label20 = New System.Windows.Forms.Label()
Me.pbXMLExport = New System.Windows.Forms.PictureBox()
Me.btnRMCQuartal = New System.Windows.Forms.Button()
Me.Label18 = New System.Windows.Forms.Label()
@@ -56,6 +58,8 @@ Partial Class frmMDM_USTVAntrag
Me.cbxLand = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.lblLand = New System.Windows.Forms.Label()
Me.Panel8 = New System.Windows.Forms.Panel()
+ Me.Label21 = New System.Windows.Forms.Label()
+ Me.txtErstattung = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.txtVZOffen = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.Label19 = New System.Windows.Forms.Label()
Me.btnSortNachLeist = New System.Windows.Forms.Button()
@@ -122,7 +126,6 @@ Partial Class frmMDM_USTVAntrag
Me.dgvUSTVPositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.pnlAntragsPosDetails = New System.Windows.Forms.Panel()
Me.Panel2 = New System.Windows.Forms.Panel()
- Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition()
Me.Panel4 = New System.Windows.Forms.Panel()
Me.cbxKIUploaddelete = New System.Windows.Forms.CheckBox()
Me.scanUSTVA = New VERAG_PROG_ALLGEMEIN.usrcntlPDFScan()
@@ -133,7 +136,6 @@ Partial Class frmMDM_USTVAntrag
Me.Panel3 = New System.Windows.Forms.Panel()
Me.dgvErstattungspositionen = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
Me.pnlErstattungsdetails = New System.Windows.Forms.Panel()
- Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.Button2 = New System.Windows.Forms.Button()
Me.Button3 = New System.Windows.Forms.Button()
@@ -150,6 +152,8 @@ Partial Class frmMDM_USTVAntrag
Me.ToolStripMenuItem2 = New System.Windows.Forms.ToolStripMenuItem()
Me.ToolStripMenuItem3 = New System.Windows.Forms.ToolStripMenuItem()
Me.FakturiertToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
+ Me.UstCntlUSTV_AntragPosition1 = New SDL.ustCntlUSTV_AntragPosition()
+ Me.UstCntlUSTV_AntragErstattungen1 = New SDL.ustCntlUSTV_ErstattungPosition()
Me.pnlBottom.SuspendLayout()
CType(Me.pbXMLExport, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.pbMail, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -182,6 +186,8 @@ Partial Class frmMDM_USTVAntrag
'
Me.pnlBottom.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
Me.pnlBottom.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
+ Me.pnlBottom.Controls.Add(Me.lblVZAenderungsdatum)
+ Me.pnlBottom.Controls.Add(Me.Label20)
Me.pnlBottom.Controls.Add(Me.pbXMLExport)
Me.pnlBottom.Controls.Add(Me.btnRMCQuartal)
Me.pnlBottom.Controls.Add(Me.Label18)
@@ -200,11 +206,33 @@ Partial Class frmMDM_USTVAntrag
Me.pnlBottom.Controls.Add(Me.Button1)
Me.pnlBottom.Controls.Add(Me.lbl_EintrageVerarbetiet)
Me.pnlBottom.Dock = System.Windows.Forms.DockStyle.Bottom
- Me.pnlBottom.Location = New System.Drawing.Point(0, 667)
+ Me.pnlBottom.Location = New System.Drawing.Point(0, 663)
Me.pnlBottom.Name = "pnlBottom"
Me.pnlBottom.Size = New System.Drawing.Size(1444, 100)
Me.pnlBottom.TabIndex = 3
'
+ 'lblVZAenderungsdatum
+ '
+ Me.lblVZAenderungsdatum.ForeColor = System.Drawing.Color.Black
+ Me.lblVZAenderungsdatum.Location = New System.Drawing.Point(186, 75)
+ Me.lblVZAenderungsdatum.Name = "lblVZAenderungsdatum"
+ Me.lblVZAenderungsdatum.Size = New System.Drawing.Size(216, 19)
+ Me.lblVZAenderungsdatum.TabIndex = 58
+ Me.lblVZAenderungsdatum.Text = "-"
+ Me.lblVZAenderungsdatum.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.lblVZAenderungsdatum.Visible = False
+ '
+ 'Label20
+ '
+ Me.Label20.ForeColor = System.Drawing.Color.Black
+ Me.Label20.Location = New System.Drawing.Point(9, 75)
+ Me.Label20.Name = "Label20"
+ Me.Label20.Size = New System.Drawing.Size(171, 19)
+ Me.Label20.TabIndex = 57
+ Me.Label20.Text = "letzte Änderung (VZ) am:"
+ Me.Label20.TextAlign = System.Drawing.ContentAlignment.MiddleRight
+ Me.Label20.Visible = False
+ '
'pbXMLExport
'
Me.pbXMLExport.Image = Global.SDL.My.Resources.Resources.xml
@@ -383,7 +411,7 @@ Partial Class frmMDM_USTVAntrag
Me.btnAntrageeinarbeiten.ForeColor = System.Drawing.Color.Black
Me.btnAntrageeinarbeiten.Image = CType(resources.GetObject("btnAntrageeinarbeiten.Image"), System.Drawing.Image)
Me.btnAntrageeinarbeiten.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.btnAntrageeinarbeiten.Location = New System.Drawing.Point(12, 29)
+ Me.btnAntrageeinarbeiten.Location = New System.Drawing.Point(12, 23)
Me.btnAntrageeinarbeiten.Name = "btnAntrageeinarbeiten"
Me.btnAntrageeinarbeiten.Size = New System.Drawing.Size(168, 38)
Me.btnAntrageeinarbeiten.TabIndex = 1
@@ -395,7 +423,7 @@ Partial Class frmMDM_USTVAntrag
'
Me.cbxArchivierteEintracheNochmalsEinarbetien.AutoSize = True
Me.cbxArchivierteEintracheNochmalsEinarbetien.ForeColor = System.Drawing.Color.Black
- Me.cbxArchivierteEintracheNochmalsEinarbetien.Location = New System.Drawing.Point(12, 8)
+ Me.cbxArchivierteEintracheNochmalsEinarbetien.Location = New System.Drawing.Point(12, 2)
Me.cbxArchivierteEintracheNochmalsEinarbetien.Name = "cbxArchivierteEintracheNochmalsEinarbetien"
Me.cbxArchivierteEintracheNochmalsEinarbetien.Size = New System.Drawing.Size(203, 17)
Me.cbxArchivierteEintracheNochmalsEinarbetien.TabIndex = 0
@@ -418,7 +446,7 @@ Partial Class frmMDM_USTVAntrag
'lbl_EintrageVerarbetiet
'
Me.lbl_EintrageVerarbetiet.ForeColor = System.Drawing.Color.Black
- Me.lbl_EintrageVerarbetiet.Location = New System.Drawing.Point(12, 70)
+ Me.lbl_EintrageVerarbetiet.Location = New System.Drawing.Point(12, 61)
Me.lbl_EintrageVerarbetiet.Name = "lbl_EintrageVerarbetiet"
Me.lbl_EintrageVerarbetiet.Size = New System.Drawing.Size(168, 19)
Me.lbl_EintrageVerarbetiet.TabIndex = 3
@@ -607,6 +635,8 @@ Partial Class frmMDM_USTVAntrag
'
Me.Panel8.BackColor = System.Drawing.Color.WhiteSmoke
Me.Panel8.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
+ Me.Panel8.Controls.Add(Me.Label21)
+ Me.Panel8.Controls.Add(Me.txtErstattung)
Me.Panel8.Controls.Add(Me.txtVZOffen)
Me.Panel8.Controls.Add(Me.Label19)
Me.Panel8.Controls.Add(Me.btnSortNachLeist)
@@ -648,6 +678,45 @@ Partial Class frmMDM_USTVAntrag
Me.Panel8.Size = New System.Drawing.Size(963, 144)
Me.Panel8.TabIndex = 19
'
+ 'Label21
+ '
+ Me.Label21.AutoSize = True
+ Me.Label21.BackColor = System.Drawing.Color.Transparent
+ Me.Label21.Cursor = System.Windows.Forms.Cursors.Hand
+ Me.Label21.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Label21.ForeColor = System.Drawing.Color.Black
+ Me.Label21.Location = New System.Drawing.Point(524, 119)
+ Me.Label21.Name = "Label21"
+ Me.Label21.Size = New System.Drawing.Size(77, 17)
+ Me.Label21.TabIndex = 62
+ Me.Label21.Text = "Erstattung:"
+ '
+ 'txtErstattung
+ '
+ Me.txtErstattung._DateTimeOnly = False
+ Me.txtErstattung._numbersOnly = True
+ Me.txtErstattung._numbersOnlyKommastellen = "2"
+ Me.txtErstattung._numbersOnlyTrennzeichen = True
+ Me.txtErstattung._Prozent = False
+ Me.txtErstattung._ShortDateNew = False
+ Me.txtErstattung._ShortDateOnly = False
+ Me.txtErstattung._TimeOnly = False
+ Me.txtErstattung._TimeOnly_Seconds = False
+ Me.txtErstattung._value = ""
+ Me.txtErstattung._Waehrung = True
+ Me.txtErstattung._WaehrungZeichen = True
+ Me.txtErstattung.Enabled = False
+ Me.txtErstattung.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
+ Me.txtErstattung.ForeColor = System.Drawing.Color.Black
+ Me.txtErstattung.Location = New System.Drawing.Point(654, 114)
+ Me.txtErstattung.MaxLength = 10
+ Me.txtErstattung.MaxLineLength = -1
+ Me.txtErstattung.MaxLines_Warning = ""
+ Me.txtErstattung.MaxLines_Warning_Label = Nothing
+ Me.txtErstattung.Name = "txtErstattung"
+ Me.txtErstattung.Size = New System.Drawing.Size(125, 23)
+ Me.txtErstattung.TabIndex = 61
+ '
'txtVZOffen
'
Me.txtVZOffen._DateTimeOnly = False
@@ -665,13 +734,13 @@ Partial Class frmMDM_USTVAntrag
Me.txtVZOffen.Enabled = False
Me.txtVZOffen.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!)
Me.txtVZOffen.ForeColor = System.Drawing.Color.Black
- Me.txtVZOffen.Location = New System.Drawing.Point(654, 116)
+ Me.txtVZOffen.Location = New System.Drawing.Point(884, 116)
Me.txtVZOffen.MaxLength = 10
Me.txtVZOffen.MaxLineLength = -1
Me.txtVZOffen.MaxLines_Warning = ""
Me.txtVZOffen.MaxLines_Warning_Label = Nothing
Me.txtVZOffen.Name = "txtVZOffen"
- Me.txtVZOffen.Size = New System.Drawing.Size(125, 23)
+ Me.txtVZOffen.Size = New System.Drawing.Size(78, 23)
Me.txtVZOffen.TabIndex = 60
'
'Label19
@@ -681,7 +750,7 @@ Partial Class frmMDM_USTVAntrag
Me.Label19.Cursor = System.Windows.Forms.Cursors.Hand
Me.Label19.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label19.ForeColor = System.Drawing.Color.Black
- Me.Label19.Location = New System.Drawing.Point(524, 117)
+ Me.Label19.Location = New System.Drawing.Point(800, 122)
Me.Label19.Name = "Label19"
Me.Label19.Size = New System.Drawing.Size(66, 17)
Me.Label19.TabIndex = 59
@@ -1602,7 +1671,7 @@ Partial Class frmMDM_USTVAntrag
Me.pnlBody.Controls.Add(Me.TabControl1)
Me.pnlBody.Location = New System.Drawing.Point(0, 230)
Me.pnlBody.Name = "pnlBody"
- Me.pnlBody.Size = New System.Drawing.Size(1444, 437)
+ Me.pnlBody.Size = New System.Drawing.Size(1444, 433)
Me.pnlBody.TabIndex = 1
'
'TabControl1
@@ -1613,7 +1682,7 @@ Partial Class frmMDM_USTVAntrag
Me.TabControl1.Location = New System.Drawing.Point(0, 0)
Me.TabControl1.Name = "TabControl1"
Me.TabControl1.SelectedIndex = 0
- Me.TabControl1.Size = New System.Drawing.Size(1442, 435)
+ Me.TabControl1.Size = New System.Drawing.Size(1442, 431)
Me.TabControl1.TabIndex = 1
'
'TabPage1
@@ -1623,7 +1692,7 @@ Partial Class frmMDM_USTVAntrag
Me.TabPage1.Location = New System.Drawing.Point(4, 22)
Me.TabPage1.Name = "TabPage1"
Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage1.Size = New System.Drawing.Size(1434, 409)
+ Me.TabPage1.Size = New System.Drawing.Size(1434, 405)
Me.TabPage1.TabIndex = 0
Me.TabPage1.Text = "Antragspositionen"
Me.TabPage1.UseVisualStyleBackColor = True
@@ -1633,8 +1702,8 @@ Partial Class frmMDM_USTVAntrag
Me.dgvUSTVPositionen.AKTUALISIERUNGS_INTERVALL = 500
Me.dgvUSTVPositionen.AllowUserToAddRows = False
Me.dgvUSTVPositionen.AllowUserToDeleteRows = False
- DataGridViewCellStyle1.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
- Me.dgvUSTVPositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle1
+ DataGridViewCellStyle3.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.dgvUSTVPositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle3
Me.dgvUSTVPositionen.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
@@ -1646,14 +1715,14 @@ Partial Class frmMDM_USTVAntrag
Me.dgvUSTVPositionen.RowHeadersVisible = False
Me.dgvUSTVPositionen.RowHeadersWidth = 62
Me.dgvUSTVPositionen.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect
- Me.dgvUSTVPositionen.Size = New System.Drawing.Size(1428, 134)
+ Me.dgvUSTVPositionen.Size = New System.Drawing.Size(1428, 130)
Me.dgvUSTVPositionen.TabIndex = 0
'
'pnlAntragsPosDetails
'
Me.pnlAntragsPosDetails.Controls.Add(Me.Panel2)
Me.pnlAntragsPosDetails.Dock = System.Windows.Forms.DockStyle.Bottom
- Me.pnlAntragsPosDetails.Location = New System.Drawing.Point(3, 143)
+ Me.pnlAntragsPosDetails.Location = New System.Drawing.Point(3, 139)
Me.pnlAntragsPosDetails.Name = "pnlAntragsPosDetails"
Me.pnlAntragsPosDetails.Size = New System.Drawing.Size(1428, 263)
Me.pnlAntragsPosDetails.TabIndex = 2
@@ -1670,14 +1739,6 @@ Partial Class frmMDM_USTVAntrag
Me.Panel2.Size = New System.Drawing.Size(1428, 263)
Me.Panel2.TabIndex = 1
'
- 'UstCntlUSTV_AntragPosition1
- '
- Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill
- Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0)
- Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1"
- Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261)
- Me.UstCntlUSTV_AntragPosition1.TabIndex = 0
- '
'Panel4
'
Me.Panel4.BackColor = System.Drawing.Color.WhiteSmoke
@@ -1773,7 +1834,7 @@ Partial Class frmMDM_USTVAntrag
Me.TabPage2.Location = New System.Drawing.Point(4, 22)
Me.TabPage2.Name = "TabPage2"
Me.TabPage2.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage2.Size = New System.Drawing.Size(1434, 409)
+ Me.TabPage2.Size = New System.Drawing.Size(1434, 405)
Me.TabPage2.TabIndex = 1
Me.TabPage2.Text = "Erstattungspositionen"
Me.TabPage2.UseVisualStyleBackColor = True
@@ -1787,7 +1848,7 @@ Partial Class frmMDM_USTVAntrag
Me.Panel3.Dock = System.Windows.Forms.DockStyle.Fill
Me.Panel3.Location = New System.Drawing.Point(3, 3)
Me.Panel3.Name = "Panel3"
- Me.Panel3.Size = New System.Drawing.Size(1428, 403)
+ Me.Panel3.Size = New System.Drawing.Size(1428, 399)
Me.Panel3.TabIndex = 3
'
'dgvErstattungspositionen
@@ -1795,8 +1856,8 @@ Partial Class frmMDM_USTVAntrag
Me.dgvErstattungspositionen.AKTUALISIERUNGS_INTERVALL = 500
Me.dgvErstattungspositionen.AllowUserToAddRows = False
Me.dgvErstattungspositionen.AllowUserToDeleteRows = False
- DataGridViewCellStyle2.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
- Me.dgvErstattungspositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle2
+ DataGridViewCellStyle4.BackColor = System.Drawing.Color.FromArgb(CType(CType(240, Byte), Integer), CType(CType(245, Byte), Integer), CType(CType(255, Byte), Integer))
+ Me.dgvErstattungspositionen.AlternatingRowsDefaultCellStyle = DataGridViewCellStyle4
Me.dgvErstattungspositionen.Anchor = CType((((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Bottom) _
Or System.Windows.Forms.AnchorStyles.Left) _
Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
@@ -1808,7 +1869,7 @@ Partial Class frmMDM_USTVAntrag
Me.dgvErstattungspositionen.RowHeadersVisible = False
Me.dgvErstattungspositionen.RowHeadersWidth = 62
Me.dgvErstattungspositionen.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect
- Me.dgvErstattungspositionen.Size = New System.Drawing.Size(1428, 137)
+ Me.dgvErstattungspositionen.Size = New System.Drawing.Size(1428, 133)
Me.dgvErstattungspositionen.TabIndex = 1
'
'pnlErstattungsdetails
@@ -1818,19 +1879,11 @@ Partial Class frmMDM_USTVAntrag
Me.pnlErstattungsdetails.Controls.Add(Me.UstCntlUSTV_AntragErstattungen1)
Me.pnlErstattungsdetails.Controls.Add(Me.Panel1)
Me.pnlErstattungsdetails.Dock = System.Windows.Forms.DockStyle.Bottom
- Me.pnlErstattungsdetails.Location = New System.Drawing.Point(0, 140)
+ Me.pnlErstattungsdetails.Location = New System.Drawing.Point(0, 136)
Me.pnlErstattungsdetails.Name = "pnlErstattungsdetails"
Me.pnlErstattungsdetails.Size = New System.Drawing.Size(1426, 261)
Me.pnlErstattungsdetails.TabIndex = 0
'
- 'UstCntlUSTV_AntragErstattungen1
- '
- Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill
- Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0)
- Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1"
- Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259)
- Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2
- '
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.WhiteSmoke
@@ -1902,13 +1955,13 @@ Partial Class frmMDM_USTVAntrag
'AktivierenToolStripMenuItem
'
Me.AktivierenToolStripMenuItem.Name = "AktivierenToolStripMenuItem"
- Me.AktivierenToolStripMenuItem.Size = New System.Drawing.Size(180, 22)
+ Me.AktivierenToolStripMenuItem.Size = New System.Drawing.Size(138, 22)
Me.AktivierenToolStripMenuItem.Text = "aktivieren"
'
'DeaktivierenToolStripMenuItem
'
Me.DeaktivierenToolStripMenuItem.Name = "DeaktivierenToolStripMenuItem"
- Me.DeaktivierenToolStripMenuItem.Size = New System.Drawing.Size(180, 22)
+ Me.DeaktivierenToolStripMenuItem.Size = New System.Drawing.Size(138, 22)
Me.DeaktivierenToolStripMenuItem.Text = "deaktivieren"
'
'FakturiertZurücksetzenToolStripMenuItem
@@ -1921,7 +1974,7 @@ Partial Class frmMDM_USTVAntrag
'
Me.ncs_Belege.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.ToolStripMenuItem1, Me.FakturiertToolStripMenuItem})
Me.ncs_Belege.Name = "cns_vorauszahlen"
- Me.ncs_Belege.Size = New System.Drawing.Size(196, 70)
+ Me.ncs_Belege.Size = New System.Drawing.Size(196, 48)
'
'ToolStripMenuItem1
'
@@ -1949,11 +2002,27 @@ Partial Class frmMDM_USTVAntrag
Me.FakturiertToolStripMenuItem.Text = "Fakturiert zurücksetzen"
Me.FakturiertToolStripMenuItem.Visible = False
'
+ 'UstCntlUSTV_AntragPosition1
+ '
+ Me.UstCntlUSTV_AntragPosition1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.UstCntlUSTV_AntragPosition1.Location = New System.Drawing.Point(154, 0)
+ Me.UstCntlUSTV_AntragPosition1.Name = "UstCntlUSTV_AntragPosition1"
+ Me.UstCntlUSTV_AntragPosition1.Size = New System.Drawing.Size(1272, 261)
+ Me.UstCntlUSTV_AntragPosition1.TabIndex = 0
+ '
+ 'UstCntlUSTV_AntragErstattungen1
+ '
+ Me.UstCntlUSTV_AntragErstattungen1.Dock = System.Windows.Forms.DockStyle.Fill
+ Me.UstCntlUSTV_AntragErstattungen1.Location = New System.Drawing.Point(154, 0)
+ Me.UstCntlUSTV_AntragErstattungen1.Name = "UstCntlUSTV_AntragErstattungen1"
+ Me.UstCntlUSTV_AntragErstattungen1.Size = New System.Drawing.Size(1270, 259)
+ Me.UstCntlUSTV_AntragErstattungen1.TabIndex = 2
+ '
'frmMDM_USTVAntrag
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
- Me.ClientSize = New System.Drawing.Size(1444, 767)
+ Me.ClientSize = New System.Drawing.Size(1444, 763)
Me.Controls.Add(Me.pnlHeader)
Me.Controls.Add(Me.pnlBody)
Me.Controls.Add(Me.pnlBottom)
@@ -2123,4 +2192,8 @@ Partial Class frmMDM_USTVAntrag
Friend WithEvents btnSortNachLeist As Button
Friend WithEvents txtVZOffen As VERAG_PROG_ALLGEMEIN.MyTextBox
Friend WithEvents Label19 As Label
+ Friend WithEvents lblVZAenderungsdatum As Label
+ Friend WithEvents Label20 As Label
+ Friend WithEvents Label21 As Label
+ Friend WithEvents txtErstattung As VERAG_PROG_ALLGEMEIN.MyTextBox
End Class
diff --git a/SDL/USTV/frmMDM_USTVAntrag.vb b/SDL/USTV/frmMDM_USTVAntrag.vb
index 9019b349..7c979ecd 100644
--- a/SDL/USTV/frmMDM_USTVAntrag.vb
+++ b/SDL/USTV/frmMDM_USTVAntrag.vb
@@ -24,6 +24,8 @@ Public Class frmMDM_USTVAntrag
Dim GesamtUSteuerEUR As Double
Dim GesamtUSteuer As Double
Dim looked As Boolean = False
+ Dim suppressSelectionChanged = False
+ Dim suppressSelectionFirstTime = True
Sub New(UStVAn_ID)
@@ -51,23 +53,29 @@ Public Class frmMDM_USTVAntrag
End Sub
Sub init(Optional posIndex As Integer = -1, Optional Lieferant As String = "")
+
+
+ If Not suppressSelectionFirstTime Then suppressSelectionChanged = True
+ suppressSelectionFirstTime = False
+
+
pnlBody.AutoScroll = False
lblGesamtUSteuerFW.Text = "-"
lblGesamtErstattungFW.Text = "-"
lblDiffernezbetragFW.Text = "-"
- lblGesamtUSteuer.Text="-"
+ lblGesamtUSteuer.Text = "-"
lblGesamtErstattung.Text = "-"
lblDiffernezbetrag.Text = "-"
+ lblVZAenderungsdatum.Text = "-"
btnAntrageeinarbeiten.Enabled = Not UStVAn_ID <= 0
- FlowLayoutPanel.Enabled= Not UStVAn_ID <= 0
- btnEintragloeschen.Enabled= Not UStVAn_ID <= 0
- btnNeuerEintrag.Enabled= Not UStVAn_ID <= 0
- UstCntlUSTV_AntragPosition1.Enabled= Not UStVAn_ID <= 0
- cbxLand.Visible= UStVAn_ID <= 0
-
+ FlowLayoutPanel.Enabled = Not UStVAn_ID <= 0
+ btnEintragloeschen.Enabled = Not UStVAn_ID <= 0
+ btnNeuerEintrag.Enabled = Not UStVAn_ID <= 0
+ UstCntlUSTV_AntragPosition1.Enabled = Not UStVAn_ID <= 0
+ cbxLand.Visible = UStVAn_ID <= 0
With dgvUSTVPositionen
.ClearSelection()
@@ -289,6 +297,14 @@ Public Class frmMDM_USTVAntrag
Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL")
setValue(USTV_ANTRAG)
+
+ If USTV_ANTRAG.UStVAn_letzteAenderung IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderung) AndAlso USTV_ANTRAG.UStVAn_letzteAenderungUser IsNot Nothing AndAlso Not IsDBNull(USTV_ANTRAG.UStVAn_letzteAenderungUser) Then
+ lblVZAenderungsdatum.Text = CDate(USTV_ANTRAG.UStVAn_letzteAenderung).ToString
+ lblVZAenderungsdatum.Text &= " (" & USTV_ANTRAG.UStVAn_letzteAenderungUser & ")"
+ Label20.Visible = True
+ lblVZAenderungsdatum.Visible = True
+ End If
+
Dim KUNDE As New cKunde(USTV_ANTRAG.UStVAn_KuNr)
Dim KUNDE_ERW As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr)
If KUNDE IsNot Nothing Then
@@ -340,21 +356,21 @@ Public Class frmMDM_USTVAntrag
End If
If posIndex > 0 Then
- posIndex = posIndex - 1
- If posIndex > 0 And dgvUSTVPositionen.Rows.Count > posIndex Then
+ Dim idx As Integer = posIndex - 1
+ If idx >= 0 AndAlso dgvUSTVPositionen.Rows.Count > idx Then
dgvUSTVPositionen.ClearSelection()
- dgvUSTVPositionen.Rows(posIndex).Selected = True
- For Each c As DataGridViewCell In dgvUSTVPositionen.Rows(posIndex).Cells
+ dgvUSTVPositionen.Rows(idx).Selected = True
+ For Each c As DataGridViewCell In dgvUSTVPositionen.Rows(idx).Cells
If c.Visible Then
- dgvUSTVPositionen.CurrentCell = c 'Damit der Cursor in der DGV richtig steht
+ dgvUSTVPositionen.CurrentCell = c
Exit For
End If
Next
-
End If
-
End If
+ suppressSelectionChanged = False
+
End Sub
Sub setValue(USTV_ANTRAG As VERAG_PROG_ALLGEMEIN.cUSTVAntrag)
@@ -385,6 +401,8 @@ Public Class frmMDM_USTVAntrag
cbxRGretour.Checked = USTV_ANTRAG.UStVAn_RGRetour
cbxSicherheit.Checked = USTV_ANTRAG.UStVAn_Sicherheit
+ txtErstattung.Text = CDbl(SQL.getValueTxtBySql("SELECT SUM(dbo.tblUStVErstattung.UStVEr_USteuerbetragEUR) FROM dbo.tblUStVErstattung WHERE dbo.tblUStVErstattung.UStVAn_ID = " & USTV_ANTRAG.UStVAn_ID, "FMZOLL",,, "0"))
+
End Sub
Sub getValue(ByRef USTV_ANTRAG As VERAG_PROG_ALLGEMEIN.cUSTVAntrag, Optional ADR As cAdressen = Nothing, Optional FIRMA As cFirmen = Nothing)
@@ -473,7 +491,6 @@ Public Class frmMDM_USTVAntrag
If USTV_ANTRAG.UStVAn_Gewerbe Is Nothing Then USTV_ANTRAG.UStVAn_Gewerbe = "Transportunternehmer"
If USTV_ANTRAG.UStVAn_Erklärung_9_a Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_a = "Warentransport"
If USTV_ANTRAG.UStVAn_Ausstellungsort Is Nothing Then USTV_ANTRAG.UStVAn_Ausstellungsort = "Suben"
-
If USTV_ANTRAG.UStVAn_Erklärung_9_b_1 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_1 = False
If USTV_ANTRAG.UStVAn_Erklärung_9_b_2 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_2 = False
If USTV_ANTRAG.UStVAn_Erklärung_9_b_3 Is Nothing Then USTV_ANTRAG.UStVAn_Erklärung_9_b_3 = False
@@ -497,7 +514,6 @@ Public Class frmMDM_USTVAntrag
End Sub
Private Sub UsrCntlDatenDetails1_Changed(POSId) Handles UstCntlUSTV_AntragPosition1.CHANGED
- 'refreshDgv(kdNr, SDLNr, Kfz, History)'?????????????? ausgebelndet,was das ein VErsuch? 31.07.2017
Dim posIdinDGV As Boolean = False
@@ -579,7 +595,7 @@ Public Class frmMDM_USTVAntrag
Antrag_LandKz = SQL.DLookup("LandKz", "[Länderverzeichnis für die Außenhandelsstatistik]", "Landnr='" & USTV_ANTRAG.UStVAn_LandNr & "'", "FMZOLL")
setValue(USTV_ANTRAG)
- If (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 150000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) <160000) Or (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 180000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) <190000) Then
+ If (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 150000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) < 160000) Or (CInt(USTV_ANTRAG.UStVAn_KuNr) >= 180000 AndAlso CInt(USTV_ANTRAG.UStVAn_KuNr) < 190000) Then
btnRMCQuartal.Visible = True
Else
btnRMCQuartal.Visible = False
@@ -745,6 +761,7 @@ Public Class frmMDM_USTVAntrag
loadUSTVFrom_PLOSE(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked, IIf(item.Name = "ploseneu", True, False))
init()
ElseIf item.Name = "rmc" Then
+ VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = False
loadUSTVFrom_RMC(UStVAn_ID, Antrag_LandKz, cbxArchivierteEintracheNochmalsEinarbetien.Checked)
init()
ElseIf item.Name = "mse" Then
@@ -1180,7 +1197,7 @@ Public Class frmMDM_USTVAntrag
End If
-
+ VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM = True
If Not alreadyExists(USTV_ANTRAG.UStVAn_KuNr, USTV_ANTRAG.UStVAn_LandNr, USTV_POS) Then
USTV_POS.UStVPo_Schnittstelle = True
@@ -1835,7 +1852,7 @@ Public Class frmMDM_USTVAntrag
dgvUSTVPositionen.GetOrder()
getValue(USTV_ANTRAG)
- USTV_ANTRAG.UStVAn_letzteAenderung = Now()
+ 'USTV_ANTRAG.UStVAn_letzteAenderung = Now()
If USTV_ANTRAG.SAVE Then
init()
@@ -1890,7 +1907,7 @@ Public Class frmMDM_USTVAntrag
End If
-
+ checkIfMWSTEingangAbrechung()
Else
@@ -1956,7 +1973,7 @@ Public Class frmMDM_USTVAntrag
'Ende neue Version
- 'alte Version wieder aktiviert.
+
'Start alte Version --------------------------------------
'Dim dt_existingUSTVA As DataTable = SQL.loadDgvBySql("Select UStVAn_ID,UStVAn_ReDatvon, UStVAn_ReDatBis, UStVAn_AntragEingereichtAm from tblUStVAntrag where UStvAN_KuNr = " & KundenNr & " and (isnull(UStVAn_AntragArt,'MWST') = '" & cboAntragArt._value & "' or UStVAn_AntragArt = '') and UStVAn_LandNr = " & USTV_ANTRAG.UStVAn_LandNr & "
@@ -2032,15 +2049,21 @@ Public Class frmMDM_USTVAntrag
If UStVPo_ID > 0 Then
Dim ANTR_POS As New VERAG_PROG_ALLGEMEIN.cUStVPositionen(USTV_ANTRAG.UStVAn_ID, UStVPo_ID)
- Dim ANTR_Leistender As New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_Leistender)
- If Not IsDBNull(ANTR_POS.UStVPo_LeistenderId) AndAlso ANTR_POS.UStVPo_LeistenderId > 0 Then
- ANTR_Leistender = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_LeistenderId)
+ If ANTR_POS.UStVPo_Leistender IsNot Nothing Then
+ Dim ANTR_Leistender As New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_Leistender)
+ If Not IsDBNull(ANTR_POS.UStVPo_LeistenderId) AndAlso ANTR_POS.UStVPo_LeistenderId > 0 Then
+ ANTR_Leistender = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(ANTR_POS.UStVPo_LeistenderId)
+ End If
+ UstCntlUSTV_AntragPosition1.Enabled = True
+ UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, ANTR_Leistender, atez_api)
+ Else
+ UstCntlUSTV_AntragPosition1.Enabled = True
+ UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, Nothing, atez_api)
End If
- UstCntlUSTV_AntragPosition1.Enabled = True
- UstCntlUSTV_AntragPosition1.setValues(USTV_ANTRAG.UStVAn_KuNr, ANTR_POS, Antrag_LandKz, ANTR_Leistender, atez_api)
+
Else
- UstCntlUSTV_AntragPosition1.reset()
+ UstCntlUSTV_AntragPosition1.reset(Antrag_LandKz)
UstCntlUSTV_AntragPosition1.Enabled = False
End If
@@ -2061,6 +2084,7 @@ Public Class frmMDM_USTVAntrag
Private Sub dgvUSTVPositionen_SelectionChanged(sender As Object, e As EventArgs) Handles dgvUSTVPositionen.SelectionChanged
+ If suppressSelectionChanged Then Exit Sub
If dgvUSTVPositionen.SelectedRows.Count > 0 Then
initPosition(dgvUSTVPositionen.SelectedRows(0).Cells("UStVPo_ID").Value)
@@ -2296,11 +2320,14 @@ Public Class frmMDM_USTVAntrag
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles btnNeuerEintrag.Click
- UstCntlUSTV_AntragPosition1.reset()
+ UstCntlUSTV_AntragPosition1.reset(Antrag_LandKz)
UstCntlUSTV_AntragPosition1.UStV_POS = New cUStVPositionen(UStVAn_ID)
UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID = USTV_ANTRAG.getMaxPosNr
UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr = USTV_ANTRAG.getMaxPosinterneNr
UstCntlUSTV_AntragPosition1.Enabled = True
+ UstCntlUSTV_AntragPosition1.txtRgDatum.Focus()
+ UstCntlUSTV_AntragPosition1.initUsrCntlPDF()
+
End Sub
@@ -2320,53 +2347,57 @@ Public Class frmMDM_USTVAntrag
End If
- If UstCntlUSTV_AntragPosition1.cbxAPI IsNot Nothing AndAlso UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value IsNot Nothing Then
+ If UstCntlUSTV_AntragPosition1.cbxAPI IsNot Nothing AndAlso UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value IsNot Nothing Then
- If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = -1 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId_loeschbar Then 'nur Dokumente löschen, die nicht über Schnittstellen geladen wurden!
+ If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = -1 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId_loeschbar Then 'nur Dokumente löschen, die nicht über Schnittstellen geladen wurden!
- If UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId < 0 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId Is Nothing Then
+ If UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId < 0 OrElse UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId Is Nothing Then
- Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & "_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr)
+ Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & "_" & UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_interneNr, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr)
- If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
- If DS.DELETE_COMPLETE() Then
- 'löschen nicht vorhandenen Verweis!
- SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL")
+ 'Datenarchiv/Dokumente/MDM/kdNr/MDM/MDM_Daten/Ustva_id_PosNr
- End If
- End If
- ElseIf UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId > 0 Then
-
- Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId)
-
- If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
- If DS.DELETE_COMPLETE() Then
- 'löschen nicht vorhandenen Verweis!
- SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL")
- End If
+ If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
+ If DS.DELETE_COMPLETE() Then
+ 'löschen nicht vorhandenen Verweis!
+ SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL")
End If
-
End If
-
-
End If
- Dim Leistungsbezeichnung = ""
- If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = 3 Then Leistungsbezeichnung = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung
+ ElseIf UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId > 0 Then
- If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, Leistungsbezeichnung) Then
- If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) Then
- reorderUSTVAPositions(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID)
+ Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER(UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_daId)
+
+ If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
+ If DS.DELETE_COMPLETE() Then
+ 'löschen nicht vorhandenen Verweis!
+ SQL.doSQL("update tblUStVPositionen set UStVPo_daId = NULL where UStVAn_ID = " & UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID & " and UStVPo_daId > 0 and isnull(UStVPo_daId, 0) not in (select da_id from tblDatenarchiv) ", "FMZOLL")
End If
- init()
+
End If
End If
- UstCntlUSTV_AntragPosition1.Enabled = False
-
End If
+
+
+ End If
+
+ Dim Leistungsbezeichnung = ""
+ If UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value = 3 Then Leistungsbezeichnung = UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_Leistungsbezeichnung
+
+ If setArchiv(UstCntlUSTV_AntragPosition1.cboSchnittstellennr._value, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReDat, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ReNr, Leistungsbezeichnung) Then
+ If UstCntlUSTV_AntragPosition1.UStV_POS.DELETE(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID, UstCntlUSTV_AntragPosition1.UStV_POS.UStVPo_ID) Then
+ reorderUSTVAPositions(UstCntlUSTV_AntragPosition1.UStV_POS.UStVAn_ID)
+ End If
+ init()
+ End If
+ init()
+
+ UstCntlUSTV_AntragPosition1.Enabled = False
+
End Sub
Private Sub btnMail_Click(sender As Object, e As EventArgs) Handles btnMail.Click
@@ -3244,8 +3275,8 @@ Public Class frmMDM_USTVAntrag
Dim count_nichtMWSTOffen As Integer = -1
- count_nichtMWSTOffen = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVErstattung] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and isnull([GutschriftsDatum],0) = 0 and UStVEr_Importfilename is not null", "FMZOLL"))
- If count_nichtMWSTOffen = 0 Then
+ count_nichtMWSTOffen = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVErstattung] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [GutschriftsDatum] is null and UStVEr_Importfilename is not null", "FMZOLL"))
+ If count_nichtMWSTOffen = 0 AndAlso USTV_ANTRAG.UStVAn_MWSTEingang_offen Then
SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_MWSTEingang_offen = 0 WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL")
End If
@@ -3294,25 +3325,27 @@ Public Class frmMDM_USTVAntrag
Dim kunde As New cKunde(USTV_ANTRAG.UStVAn_KuNr)
Dim kunde_erw As New cKundenErweitert(USTV_ANTRAG.UStVAn_KuNr)
- Dim BezAntrag = USTV_ANTRAG.UStVAn_AntragArt & "-Rückerstattung "
+ Dim BezAntrag = USTV_ANTRAG.UStVAn_AntragArt & "-Rückerstattung " & IIf(kunde_erw.kde_VZ, "VZ ", "")
If kunde_erw IsNot Nothing Then
- If USTV_ANTRAG.UStVAn_AntragArt = "MÖST" Then
+ 'NICHT ÜBERSETZEN
- Select Case kunde_erw.kde_Fakturierung_Sprache
- Case "EN", "TR" : BezAntrag = "Excise duty "
- Case "RO" : BezAntrag = "Rambursare acciza "
- End Select
+ 'If USTV_ANTRAG.UStVAn_AntragArt = "MÖST" Then
- Else
+ ' Select Case kunde_erw.kde_Fakturierung_Sprache
+ ' Case "EN", "TR" : BezAntrag = "Excise duty "
+ ' Case "RO" : BezAntrag = "Rambursare acciza "
+ ' End Select
- Select Case kunde_erw.kde_Fakturierung_Sprache
- Case "EN", "TR" : BezAntrag = "VAT refund "
- Case "RO" : BezAntrag = "Rambursare TVA "
- End Select
+ 'Else
- End If
+ ' Select Case kunde_erw.kde_Fakturierung_Sprache
+ ' Case "EN", "TR" : BezAntrag = "VAT refund "
+ ' Case "RO" : BezAntrag = "Rambursare TVA "
+ ' End Select
+
+ 'End If
End If
@@ -3368,7 +3401,7 @@ Public Class frmMDM_USTVAntrag
If UStVAn_ID <= 0 Then Exit Sub
- .SET_SQL("SELECT [UStVAn_ID] ,[UStVEr_ID],[UStVEr_USteuerbetragEUR],[Belegdatum],[Belegnummer],[GutschriftsDatum],[GutschriftsNr],UStVEr_VZ,UStVEr_RZVZ,UStVEr_Bank,UStVEr_Differenz,[Berufungsdatum],[Berufungshöhe],[Berufungsgrund],[Bemerkung],[UStVEr_Umrechnungskurs],[UStVEr_USteuerbetrag],[UStVEr_Sachbearbeiter],[UStVEr_Zeitstempel]
+ .SET_SQL("SELECT [UStVAn_ID] ,[UStVEr_ID],[UStVEr_USteuerbetragEUR],[Belegdatum],[Belegnummer],[GutschriftsDatum],[GutschriftsNr],UStVEr_VZ,UStVEr_RZVZ,UStVEr_Bank,UStVEr_Differenz,[Berufungsdatum],[Berufungshöhe],[Berufungsgrund],[Bemerkung],[UStVEr_Umrechnungskurs],[UStVEr_USteuerbetrag],[UStVEr_Sachbearbeiter],[UStVEr_Zeitstempel],[UStVEr_RK_ID]
FROM [tblUStVErstattung]
where UStVAn_ID=" & UStVAn_ID & " ORDER BY UStVEr_ID", "FMZOLL")
.LOAD()
@@ -3385,6 +3418,9 @@ Public Class frmMDM_USTVAntrag
.Columns("Belegdatum").Width = 80
.Columns("Belegnummer").Width = 130
+ '.Columns("Belegdatum").Visible = False
+ '.Columns("Belegnummer").Visible = False
+
.Columns("UStVEr_USteuerbetrag").HeaderText = "USt-Betrag"
.Columns("UStVEr_USteuerbetrag").Width = 110
.Columns("UStVEr_USteuerbetrag").DefaultCellStyle.Format = "N2"
@@ -3400,6 +3436,9 @@ Public Class frmMDM_USTVAntrag
.Columns("Berufungsdatum").HeaderText = "BE-Datum"
.Columns("Berufungshöhe").HeaderText = "BE-Höhe"
.Columns("Berufungsgrund").HeaderText = "BE-Grund"
+ .Columns("Berufungsdatum").Visible = False
+ .Columns("Berufungshöhe").Visible = False
+ .Columns("Berufungsgrund").Visible = False
.Columns("UStVEr_VZ").HeaderText = "VZ"
.Columns("UStVEr_RZVZ").HeaderText = "RZVZ"
@@ -3423,8 +3462,8 @@ Public Class frmMDM_USTVAntrag
.Columns("Berufungsgrund").Width = 100
.Columns("Bemerkung").Width = 200
- .Columns("UStVEr_Umrechnungskurs").HeaderText = "Umrechnungskurs"
- .Columns("UStVEr_Umrechnungskurs").Width = 60
+ .Columns("UStVEr_Umrechnungskurs").HeaderText = "Kurs"
+ .Columns("UStVEr_Umrechnungskurs").Width = 30
.Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Format = "N2"
.Columns("UStVEr_Umrechnungskurs").DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight
@@ -3438,9 +3477,40 @@ Public Class frmMDM_USTVAntrag
.Columns("UStVEr_Sachbearbeiter").AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
.Columns("UStVEr_Zeitstempel").Visible = False
+ .Columns("UStVEr_RK_ID").Visible = False
End If
+
+ Dim c As New DataGridViewImageColumn
+ c.Name = "clmnPDF" : c.HeaderText = "GS"
+ ' c.Image = Nothing
+ c.DefaultCellStyle.NullValue = Nothing
+ c.ImageLayout = DataGridViewImageCellLayout.Zoom
+ c.Width = 40 : c.DefaultCellStyle.Padding = New Padding(2) : c.DefaultCellStyle.BackColor = Color.White
+ 'c.DefaultCellStyle.Tag = "Therefore anzeigen"
+
+
+ If Not .Columns.Contains("clmnPDF") Then .Columns.Add(c)
+
+
+
+ For Each r As DataGridViewRow In .Rows
+
+ Dim rk_id As Integer = -1
+
+ If Not IsDBNull(r.Cells("UStVEr_RK_ID").Value) Then
+ rk_id = r.Cells("UStVEr_RK_ID").Value
+ End If
+
+
+ If rk_id > 0 Then
+ DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = Nothing
+ DirectCast(r.Cells("clmnPDF"), DataGridViewImageCell).Value = My.Resources.pdf
+ End If
+
+ Next
+
If .RowCount < 1 Then
initErstsattungsPosition(-1)
@@ -3450,9 +3520,9 @@ Public Class frmMDM_USTVAntrag
If posIndex > 0 And dgvErstattungspositionen.Rows.Count > posIndex Then
dgvErstattungspositionen.ClearSelection()
dgvErstattungspositionen.Rows(posIndex).Selected = True
- For Each c As DataGridViewCell In dgvErstattungspositionen.Rows(posIndex).Cells
- If c.Visible Then
- dgvErstattungspositionen.CurrentCell = c 'Damit der Cursor in der DGV richtig steht
+ For Each co As DataGridViewCell In dgvErstattungspositionen.Rows(posIndex).Cells
+ If co.Visible Then
+ dgvErstattungspositionen.CurrentCell = co 'Damit der Cursor in der DGV richtig steht
Exit For
End If
Next
@@ -3506,6 +3576,9 @@ Public Class frmMDM_USTVAntrag
Dim DS = New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "MDM", "MDM", "MDM_DATEN", "USTVA_" & UStVAn_ID & "_" & r.Cells("UStVPo_ID").Value, "SONSTIGE", USTV_ANTRAG.UStVAn_KuNr)
+ '
+ ' 'Datenarchiv/Dokumente/MDM/kdNr/MDM/MDM_Daten/Ustva_id_PosNr
+
If DS IsNot Nothing AndAlso DS.da_id IsNot Nothing Then
DS.DELETE_COMPLETE()
End If
@@ -3870,7 +3943,7 @@ Public Class frmMDM_USTVAntrag
Next
- If setUSTVA Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate() WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung
+ If setUSTVA Then SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung
init()
End If
@@ -3884,10 +3957,11 @@ Public Class frmMDM_USTVAntrag
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
- If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen deaktiveren?", vbYesNoCancel) Then
-
+ If vbYes = MsgBox("Möchten Sie die Vorauszahlung der markierten Positionen deaktivieren?", vbYesNoCancel) Then
+ Dim setUSTVA As Boolean = False
For Each r As DataGridViewRow In dgvUSTVPositionen.SelectedRows
+
If IsDBNull(r.Cells("UStVPo_VZ_RKID").Value) OrElse r.Cells("UStVPo_VZ_RKID").Value Is Nothing Then 'nur noch nicht abgerech. dürfen gesetzt werden!
Dim USTV_POS = New VERAG_PROG_ALLGEMEIN.cUStVPositionen(UStVAn_ID, r.Cells("UStVPo_ID").Value)
@@ -3895,6 +3969,7 @@ Public Class frmMDM_USTVAntrag
If IsDBNull(USTV_POS.UStVPo_VZ) OrElse USTV_POS.UStVPo_VZ = True Then
USTV_POS.UStVPo_VZ = False
USTV_POS.SAVE()
+ setUSTVA = True
End If
End If
@@ -3906,7 +3981,11 @@ Public Class frmMDM_USTVAntrag
Dim count_nichtAbgerVZ As Integer = -1
count_nichtAbgerVZ = CInt(SQL.getValueTxtBySql("SELECT COUNT(*) FROM [tblUStVPositionen] WHERE [UStVAn_ID] = " & USTV_ANTRAG.UStVAn_ID & " and [UStVPo_VZ] = 1 and isnull(UStVPo_VZ_RKID,0) = 0", "FMZOLL"))
If count_nichtAbgerVZ = 0 Then
- SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0, UStVAn_letzteAenderung = getDate() WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL")
+ SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 0, UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL")
+ End If
+
+ If setUSTVA Then
+ SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL")
End If
init()
@@ -4000,12 +4079,17 @@ Public Class frmMDM_USTVAntrag
Next
- SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1, UStVAn_letzteAenderung = getDate() WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung
+ SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_VZoffen = 1 WHERE [UStVAn_ID] IN (SELECT distinct([UStVAn_ID]) FROM [tblUStVPositionen] WHERE isnull([UStVPo_VZ],0) = 1 and isnull([UStVPo_VZ_RKID],0) = 0)", "FMZOLL") 'Aktualisierung
+
+
+ If isSet Then
+ SQL.doSQL("UPDATE [tblUStVAntrag] SET UStVAn_letzteAenderung = getDate(), UStVAn_letzteAenderungUser = '" & VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & "' WHERE [UStVAn_ID] =" & USTV_ANTRAG.UStVAn_ID, "FMZOLL") 'Aktualisierung
+ End If
init()
- End If
+ End If
- Else
+ Else
MsgBox("NICHT BERECHTIGT")
@@ -4107,7 +4191,7 @@ Public Class frmMDM_USTVAntrag
Dim TextHTML = ""
If mailText <> "" Then
- TextHTML = "" & mailText.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, 19,,,,,, ) & "
"
+ TextHTML = "" & mailText.Replace(ControlChars.Lf, "
") & cFakturierung.getSignature(AD.LandKz, 19,,,,,, ) & "
"
Mail.HTMLBody = TextHTML
End If
@@ -4632,7 +4716,8 @@ Public Class frmMDM_USTVAntrag
BANK_OWNER = FIRMA.Firma_Bez
BANK_IBAN = FIRMA.Firma_IBAN1
BANK_BIC = FIRMA.Firma_BIC1
- BankOwnerType = "applicant"
+
+ BankOwnerType = "representative"
If BANK_BIC.ToString.Contains("BIC:") Then
BANK_BIC = BANK_BIC.ToString.Replace("BIC:", "")
BANK_BIC = BANK_BIC.Trim()
@@ -4656,7 +4741,7 @@ Public Class frmMDM_USTVAntrag
BANK_BIC = dtBank.Rows(0).Item("bnk_bic")
End If
'wenn nicht hinterlegt, dann leer lassen!
- BankOwnerType = "representative"
+ BankOwnerType = "applicant"
End Select
Dim app As New GlobalVATRefundApplication_HR() With {
@@ -4873,7 +4958,7 @@ Public Class frmMDM_USTVAntrag
ElseIf SchnittstellenNr = 9 Then
LeistungsBez = "maut" 'MSE immer MAUT
Else
- If LeistungsBez.Contains("maut") Or LeistungsBez.Contains("toll") Then
+ If LeistungsBez.Contains("maut") Or LeistungsBez.Contains("toll") Or LeistungsBez.Contains("abgasplakette") Then
list.Add("maut")
End If
If LeistungsBez.Contains("diesel") Or LeistungsBez.Contains("fuel") Then
@@ -5373,21 +5458,53 @@ Public Class frmMDM_USTVAntrag
End Function
- Private Sub txtRZ_ValueChanged() Handles txtRZ.TextChanged, txtVZ.TextChanged
+ Private Sub txtRZ_ValueChanged() Handles txtRZ.TextChanged, txtVZ.TextChanged, txtErstattung.TextChanged
+
Dim VZ As Double = 0
Dim RZ As Double = 0
+ Dim ERST As Double = 0
+
If txtVZ.Text <> "" AndAlso IsNumeric(txtVZ.Text) Then
VZ = CDbl(txtVZ.Text)
- If txtRZ.Text <> "" AndAlso IsNumeric(txtRZ.Text) Then
- RZ = CDbl(txtRZ.Text)
- End If
-
- txtVZOffen.Text = VZ - RZ
-
End If
+ If txtRZ.Text <> "" AndAlso IsNumeric(txtRZ.Text) Then
+ RZ = CDbl(txtRZ.Text)
+ End If
+
+ If txtErstattung.Text <> "" AndAlso IsNumeric(txtErstattung.Text) Then
+ ERST = CDbl(txtErstattung.Text)
+ End If
+
+ Dim offenerBetrag As Double = VZ - RZ - ERST
+ If offenerBetrag < 0 Then offenerBetrag = 0
+
+ txtVZOffen.Text = offenerBetrag.ToString
+
End Sub
+ Private Sub dgvErstattungspositionen_CellContentDoubleClick(sender As Object, e As DataGridViewCellEventArgs) Handles dgvErstattungspositionen.CellContentDoubleClick
+
+ Try
+ If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 Then
+
+ Dim pdf As String = ""
+ pdf = func.getPDF(1, Nothing, Nothing, dgvErstattungspositionen.Rows(e.RowIndex).Cells("UStVEr_RK_ID").Value, False, False, Antrag_LandKz, USTV_ANTRAG, New cFakturierung, False)
+
+ If System.IO.File.Exists(pdf) Then
+ Process.Start(pdf)
+ End If
+
+ End If
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ Me.Cursor = Cursors.Default
+ End Try
+ Me.Cursor = Cursors.Default
+
+
+
+ End Sub
Public Shared Function rearangePosNrByLeistender(UStVAn_ID As Integer)
diff --git a/SDL/USTV/usrCntlUSTV.vb b/SDL/USTV/usrCntlUSTV.vb
index f29d8c7d..8c8f7024 100644
--- a/SDL/USTV/usrCntlUSTV.vb
+++ b/SDL/USTV/usrCntlUSTV.vb
@@ -394,7 +394,7 @@ Public Class usrCntlUSTV
If Not col.ColumnName.Contains(colName) Then col.ColumnName = col.ColumnName.Replace("UStVAn_", "")
Next
- cProgramFunctions.genExcelFromDT_NEW(dtNew, {"K1:K" & (dtNew.Rows.Count + 1), "O1:T" & (dtNew.Rows.Count + 1)},,,,, True)
+ cProgramFunctions.genExcelFromDT_NEW(dtNew, {"K1:K" & (dtNew.Rows.Count + 1), "O1:T" & (dtNew.Rows.Count + 1)},,,, "", True)
End If
@@ -1203,7 +1203,7 @@ Public Class usrCntlUSTV
If dtVorschau.Columns.Contains("LandNr") Then dtVorschau.Columns.Remove("LandNr")
- cProgramFunctions.genExcelFromDT_NEW(dtVorschau, {"G1:G" & (dtVorschau.Rows.Count + 1)},,,,, True)
+ cProgramFunctions.genExcelFromDT_NEW(dtVorschau, {"G1:G" & (dtVorschau.Rows.Count + 1)},,,, "", True)
@@ -1320,7 +1320,7 @@ Public Class usrCntlUSTV
If dtVorschau.Columns.Contains("E-Mail") Then dtVorschau.Columns.Remove("E-Mail")
If dtVorschau.Columns.Contains("E-Mail2") Then dtVorschau.Columns.Remove("E-Mail2")
- cProgramFunctions.genExcelFromDT_NEW(dtVorschau,,,,,, True)
+ cProgramFunctions.genExcelFromDT_NEW(dtVorschau,,,,, "", True)
ElseIf item.Name = "mail" Then
@@ -1482,7 +1482,7 @@ Public Class usrCntlUSTV
If item.Name = "excel" Then
- cProgramFunctions.genExcelFromDT_NEW(dtVorschau_3470, {"F1:F" & (dtVorschau_3470.Rows.Count + 1)}, False,,,, True)
+ cProgramFunctions.genExcelFromDT_NEW(dtVorschau_3470, {"F1:F" & (dtVorschau_3470.Rows.Count + 1)}, False,,, "", True)
ElseIf item.Name = "mail" Then
@@ -1750,7 +1750,7 @@ Public Class usrCntlUSTV
End If
- cProgramFunctions.genExcelFromDT_NEW(dtVorauszahlung,,,,,, True)
+ cProgramFunctions.genExcelFromDT_NEW(dtVorauszahlung,,,,, "", True)
End Sub
@@ -1968,8 +1968,8 @@ Public Class usrCntlUSTV
Dim letzteZeile As Integer = Blatt.UsedRange.Rows.Count
Dim input = Convert.ToString(Blatt.Cells(1, 1).Value).Trim()
- If input <> "" AndAlso input.StartsWith("MWST-Eingang") Then
- BelegdatumInput = input.Replace("MWST-Eingang", "")
+ If input <> "" AndAlso input.StartsWith("MWST Eingänge ") Then
+ BelegdatumInput = input.Replace("MWST Eingänge ", "")
BelegdatumInput = BelegdatumInput.Trim
End If
@@ -2065,7 +2065,8 @@ Public Class usrCntlUSTV
.btnPreisliste.Visible = False
.dgvHandling.RowHeadersVisible = False
.Button2.Text = "Importieren"
-
+ '.cbxDivers.Visible = True
+ '.cbxDivers.Text = "VZ und RZ-Beträge im Antrag erhöhen"
End With
frm.ShowDialog()
@@ -2073,108 +2074,120 @@ Public Class usrCntlUSTV
If frm.DialogResult = DialogResult.OK Then
- For Each r As DataRow In dt.Rows
+ For Each r As DataGridViewRow In frm.dgvHandling.SelectedRows
- Dim BelegNr = r.Item("BelegNr")
- Dim USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(r.Item("AntragID"))
+ Dim BelegNr = r.Cells("BelegNr").Value
+ Dim USTV_ANTRAG = New VERAG_PROG_ALLGEMEIN.cUSTVAntrag(r.Cells("AntragID").Value)
- If USTV_ANTRAG.hasEntry Then
+ If USTV_ANTRAG.hasEntry Then
- If r.Item("3470").ToString.ToLower = "ja" Then
+ If r.Cells("3470").Value.ToString.ToLower = "ja" Then
USTV_ANTRAG.UStVAn_Sicherheit = True
End If
+ Dim updateVURZ As Boolean = False
+ updateVURZ = False 'frm.cbxDivers.Checked
- Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(Belegdatum, BelegNr, fd.FileName)
- If Not UStV_ERS.hasEntry Then
+ Dim UStV_ERS = New VERAG_PROG_ALLGEMEIN.cUStVErstattungPositionen(Belegdatum, BelegNr, fd.SafeFileName, USTV_ANTRAG.UStVAn_ID)
+ If Not UStV_ERS.hasEntry Then
Dim isVZ As Boolean = False
UStV_ERS.UStVEr_ID = USTV_ANTRAG.getMaxPosNrErst()
UStV_ERS.UStVEr_interneNr = USTV_ANTRAG.getMaxinternePosNrErst()
- UStV_ERS.UStVAn_ID = USTV_ANTRAG.UStVAn_ID
- UStV_ERS.Belegnummer = BelegNr
- UStV_ERS.UStVEr_USteuerbetragEUR = r.Item("BetragEUR")
- UStV_ERS.UStVEr_Importfilename = fd.SafeFileName
- UStV_ERS.UStVEr_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
- UStV_ERS.UStVEr_Zeitstempel = Now
+ UStV_ERS.UStVAn_ID = USTV_ANTRAG.UStVAn_ID
+ UStV_ERS.Belegnummer = BelegNr
+ UStV_ERS.UStVEr_USteuerbetragEUR = r.Cells("Bank").Value
+ UStV_ERS.UStVEr_Importfilename = fd.SafeFileName
+ UStV_ERS.UStVEr_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
+ UStV_ERS.UStVEr_Zeitstempel = Now
- If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then
- Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
- UStV_ERS.UStVEr_USteuerbetrag = System.Math.Round(kurs.EXCHANGE_EURTOCUR(UStV_ERS.UStVEr_USteuerbetragEUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(Belegdatum)), 2)
- UStV_ERS.UStVEr_Umrechnungskurs = Math.floor((CDbl(UStV_ERS.UStVEr_USteuerbetrag) / CDbl(UStV_ERS.UStVEr_USteuerbetragEUR) * 100 + 0.5)) / 100
- Else
- UStV_ERS.UStVEr_USteuerbetrag = r.Item("BetragEUR")
- UStV_ERS.UStVEr_Umrechnungskurs = 1
- End If
+ If USTV_ANTRAG.UStVAn_Währungscode <> "EUR" Then
+ Dim kurs As New cEZB_Waehrungskurse(USTV_ANTRAG.UStVAn_Währungscode)
+ UStV_ERS.UStVEr_USteuerbetrag = System.Math.Round(kurs.EXCHANGE_EURTOCUR(UStV_ERS.UStVEr_USteuerbetragEUR, USTV_ANTRAG.UStVAn_Währungscode, CDate(Belegdatum)), 2)
+ UStV_ERS.UStVEr_Umrechnungskurs = Math.floor((CDbl(UStV_ERS.UStVEr_USteuerbetrag) / CDbl(UStV_ERS.UStVEr_USteuerbetragEUR) * 100 + 0.5)) / 100
+ Else
+ UStV_ERS.UStVEr_USteuerbetrag = r.Cells("Bank").Value
+ UStV_ERS.UStVEr_Umrechnungskurs = 1
+ End If
- Dim Bemerkung As String = ""
+ Dim Bemerkung As String = ""
- If Not String.IsNullOrWhiteSpace(r.Item("VZ")) AndAlso IsNumeric(r.Item("VZ")) AndAlso Not IsDBNull(r.Item("VZ")) AndAlso CDbl(r.Item("VZ")) <> 0 Then
- Bemerkung &= "VZ: " & CDbl(r.Item("VZ")).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode
+ If Not String.IsNullOrWhiteSpace(r.Cells("VZ").Value) AndAlso IsNumeric(r.Cells("VZ").Value) AndAlso Not IsDBNull(r.Cells("VZ").Value) AndAlso CDbl(r.Cells("VZ").Value) <> 0 Then
+ Bemerkung &= "VZ: " & CDbl(r.Cells("VZ").Value).ToString("N2") & " EUR "
isVZ = True
- UStV_ERS.UStVEr_VZ = CDbl(r.Item("VZ"))
+ UStV_ERS.UStVEr_VZ = CDbl(r.Cells("VZ").Value)
- If USTV_ANTRAG.UStVAn_VZBetrag Is Nothing OrElse IsNothing(USTV_ANTRAG.UStVAn_VZBetrag) Then
+ If updateVURZ Then
+ If USTV_ANTRAG.UStVAn_VZBetrag Is Nothing OrElse IsDBNull(USTV_ANTRAG.UStVAn_VZBetrag) Then
USTV_ANTRAG.UStVAn_VZBetrag = UStV_ERS.UStVEr_VZ
+ Else
+ USTV_ANTRAG.UStVAn_VZBetrag += UStV_ERS.UStVEr_VZ
End If
-
End If
- If Not String.IsNullOrWhiteSpace(r.Item("Bank")) AndAlso IsNumeric(r.Item("Bank")) AndAlso Not IsDBNull(r.Item("Bank")) AndAlso CDbl(r.Item("Bank")) <> 0 Then
- Bemerkung &= ", a.K. : " & CDbl(r.Item("Bank")).ToString("N2") & " " & USTV_ANTRAG.UStVAn_Währungscode
- UStV_ERS.UStVEr_Bank = CDbl(r.Item("Bank"))
- End If
+
+ End If
+
+ If Not String.IsNullOrWhiteSpace(r.Cells("Bank").Value) AndAlso IsNumeric(r.Cells("Bank").Value) AndAlso Not IsDBNull(r.Cells("Bank").Value) AndAlso CDbl(r.Cells("Bank").Value) <> 0 Then
+ Bemerkung &= ", a.K. : " & CDbl(r.Cells("Bank").Value).ToString("N2") & " EUR"
+ UStV_ERS.UStVEr_Bank = CDbl(r.Cells("Bank").Value)
+ End If
If isVZ Then
- If Not String.IsNullOrWhiteSpace(r.Item("VZDiff")) AndAlso IsNumeric(r.Item("VZDiff")) AndAlso Not IsDBNull(r.Item("VZDiff")) AndAlso CDbl(r.Item("VZDiff")) <> 0 Then
- Bemerkung &= ", VZDiff: " & CDbl(r.Item("VZDiff")).ToString("N2")
- UStV_ERS.UStVEr_Differenz = CDbl(r.Item("VZDiff"))
+ If Not String.IsNullOrWhiteSpace(r.Cells("VZDiff").Value) AndAlso IsNumeric(r.Cells("VZDiff").Value) AndAlso Not IsDBNull(r.Cells("VZDiff").Value) AndAlso CDbl(r.Cells("VZDiff").Value) <> 0 Then
+ Bemerkung &= ", VZDiff: " & CDbl(r.Cells("VZDiff").Value).ToString("N2")
+ UStV_ERS.UStVEr_Differenz = CDbl(r.Cells("VZDiff").Value)
End If
Else
- If Not String.IsNullOrWhiteSpace(r.Item("Diff")) AndAlso IsNumeric(r.Item("Diff")) AndAlso Not IsDBNull(r.Item("Diff")) AndAlso CDbl(r.Item("Diff")) <> 0 Then
- Bemerkung &= ", Diff: " & CDbl(r.Item("Diff")).ToString("N2")
- UStV_ERS.UStVEr_Differenz = CDbl(r.Item("Diff"))
+ If Not String.IsNullOrWhiteSpace(r.Cells("Diff").Value) AndAlso IsNumeric(r.Cells("Diff").Value) AndAlso Not IsDBNull(r.Cells("Diff").Value) AndAlso CDbl(r.Cells("Diff").Value) <> 0 Then
+ Bemerkung &= ", Diff: " & CDbl(r.Cells("Diff").Value).ToString("N2")
+ UStV_ERS.UStVEr_Differenz = CDbl(r.Cells("Diff").Value)
End If
End If
- If Not String.IsNullOrWhiteSpace(r.Item("RZVZ")) AndAlso IsNumeric(r.Item("RZVZ")) AndAlso Not IsDBNull(r.Item("RZVZ")) AndAlso CDbl(r.Item("RZVZ")) <> 0 Then
- UStV_ERS.UStVEr_RZVZ = CDbl(r.Item("RZVZ")).ToString("N2")
- If USTV_ANTRAG.UStVAn_RZBetragVZ Is Nothing OrElse IsDBNull(USTV_ANTRAG.UStVAn_RZBetragVZ) Then
- USTV_ANTRAG.UStVAn_RZBetragVZ = UStV_ERS.UStVEr_RZVZ
+ If Not String.IsNullOrWhiteSpace(r.Cells("RZVZ").Value) AndAlso IsNumeric(r.Cells("RZVZ").Value) AndAlso Not IsDBNull(r.Cells("RZVZ").Value) AndAlso CDbl(r.Cells("RZVZ").Value) <> 0 Then
+ UStV_ERS.UStVEr_RZVZ = CDbl(r.Cells("RZVZ").Value).ToString("N2")
+ If updateVURZ Then
+ If USTV_ANTRAG.UStVAn_RZBetragVZ Is Nothing OrElse IsDBNull(USTV_ANTRAG.UStVAn_RZBetragVZ) Then
+ USTV_ANTRAG.UStVAn_RZBetragVZ = UStV_ERS.UStVEr_RZVZ
+ Else
+ USTV_ANTRAG.UStVAn_RZBetragVZ += UStV_ERS.UStVEr_RZVZ
+ End If
End If
+
End If
If Bemerkung <> "" Then
- If Bemerkung.StartsWith(", ") Then
- Bemerkung = Bemerkung.Remove(0, 2)
- End If
-
- UStV_ERS.Bemerkung = Bemerkung
-
+ If Bemerkung.StartsWith(", ") Then
+ Bemerkung = Bemerkung.Remove(0, 2)
End If
-
- If UStV_ERS.SAVE() Then
- USTV_ANTRAG.UStVAn_MWSTEingang_offen = True
- USTV_ANTRAG.SAVE()
- counter += 1
- End If
+ UStV_ERS.Bemerkung = Bemerkung
End If
+ If UStV_ERS.SAVE() Then
+ USTV_ANTRAG.UStVAn_MWSTEingang_offen = True
+ USTV_ANTRAG.SAVE()
+ counter += 1
+ End If
+
End If
- Next
- importiert = True
+ End If
+
+ Next
+
+ importiert = True
MsgBox(counter & " von " & dt.Rows.Count & " erfolgreich importiert!")
End If
diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb
index 23052ca0..2f50bf5c 100644
--- a/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb
+++ b/SDL/USTV/ustCntlUSTV_AntragPosition.Designer.vb
@@ -541,6 +541,8 @@ Partial Class ustCntlUSTV_AntragPosition
Me.cbxAntragsfilter._showdate = False
Me.cbxAntragsfilter._value = ""
Me.cbxAntragsfilter.AutoSize = True
+ Me.cbxAntragsfilter.Checked = True
+ Me.cbxAntragsfilter.CheckState = System.Windows.Forms.CheckState.Checked
Me.cbxAntragsfilter.Location = New System.Drawing.Point(779, 29)
Me.cbxAntragsfilter.Name = "cbxAntragsfilter"
Me.cbxAntragsfilter.Size = New System.Drawing.Size(134, 17)
diff --git a/SDL/USTV/ustCntlUSTV_AntragPosition.vb b/SDL/USTV/ustCntlUSTV_AntragPosition.vb
index 3ec96229..47ccd0bd 100644
--- a/SDL/USTV/ustCntlUSTV_AntragPosition.vb
+++ b/SDL/USTV/ustCntlUSTV_AntragPosition.vb
@@ -5,12 +5,14 @@ Public Class ustCntlUSTV_AntragPosition
Public UStV_Leist As VERAG_PROG_ALLGEMEIN.cUStVLeistender = Nothing
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
Public Antrag_LandKz = ""
- Dim kdnr = ""
Public Event EV_PREV()
Public Event EV_NEXT()
Public Event CHANGED(UStVPo_ID)
- Dim gridAktiv = False
- Dim txtChanged As Boolean = False
+
+ Private _kundenNr As Integer
+ Private _gridAktiv As Boolean
+ Private _txtChanged As Boolean
+
Dim API As cATEZ_NCTS_IN
Private Sub btnBildAuf_Click(sender As Object, e As EventArgs) Handles btnBildAuf.Click
RaiseEvent EV_PREV()
@@ -20,13 +22,12 @@ Public Class ustCntlUSTV_AntragPosition
RaiseEvent EV_NEXT()
End Sub
- Sub reset()
+ Sub reset(Antrag_LandKz As String)
txtRgDatum._value = ""
txtRgNr._value = ""
btnLeistenderSave.Visible = False
- txtUmrechnungskurs._value = 1
+ txtUmrechnungskurs._value = ""
txtLeistungsbezeichnung._value = ""
- txtUmrechnungskurs._value = 1
txtUSTBetrag._value = 0
txtUSTBetragEUR._value = 0
txtNettobetrag._value = 0
@@ -45,16 +46,22 @@ Public Class ustCntlUSTV_AntragPosition
txtOrt.Text = ""
txtLand.Text = ""
txtUIDNr.Text = ""
+ Me.Antrag_LandKz = Antrag_LandKz
- gridAktiv = True
- Dim filter As String = "UstV_aktiv = 1"
- If Antrag_LandKz <> "" AndAlso cbxAntragsfilter.Checked Then
- filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'"
- sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
- Else
- sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
- End If
+
+ _gridAktiv = True
+
+ InitLeistenderSearchBox()
+
+ End Sub
+
+ Sub initUsrCntlPDF()
+
+ scanSonstiges.INIT(_kundenNr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_interneNr)
+ 'scanSonstiges.INIT_daId(da_id)
+ scanSonstiges.Enabled = True
+ btnAPIUbload.Enabled = False
End Sub
@@ -62,26 +69,46 @@ Public Class ustCntlUSTV_AntragPosition
initSchnittstellenNr()
- gridAktiv = False
+ _gridAktiv = False
btnLeistenderSave.Visible = False
Me.Antrag_LandKz = Antrag_LandKz
+
Me.UStV_POS = UStV_POS
- Me.kdnr = kdnr
+ Me._kundenNr = kdnr
cbxAPI.Checked = If(UStV_POS.UStVPo_Schnittstelle, False)
cboSchnittstellennr.changeItem(If(UStV_POS.UStVPo_SchnittstellenNr, ""))
- txtRgDatum._value = If(UStV_POS.UStVPo_ReDat, "")
- txtRgNr._value = If(UStV_POS.UStVPo_ReNr, "")
- lblSachbearbeiter.Text = If(UStV_POS.UStVPo_Sachbearbeiter, "")
+
+
If UStV_POS.UStVPo_Zeitstempel IsNot Nothing Then lblAenderungsdatum.Text = CDate(UStV_POS.UStVPo_Zeitstempel).ToString("dd.MM.yyyy HH:mm")
cboLeistungsgeber.Text = If(UStV_POS.UStVPo_Leistender, "")
- txtLeistungsbezeichnung.Text = If(UStV_POS.UStVPo_Leistungsbezeichnung, "")
- txtUSTBetrag.Text = If(UStV_POS.UStVPo_USteuerbetrag, "")
- txtUmrechnungskurs.Text = If(UStV_POS.UStVPo_Umrechnungskurs, "")
- txtUSTBetragEUR.Text = If(UStV_POS.UStVPo_USteuerbetragEUR, "")
- txtNettobetrag.Text = If(UStV_POS.UStVPo_Nettobetrag, "")
- txtNettobetragEUR.Text = If(UStV_POS.UStVPo_NettobetragEUR, "")
- sbLeistender.Text = UStV_Leitender.UStV_Leistender
+
+ txtRgDatum._value = ValueOrEmpty(UStV_POS.UStVPo_ReDat)
+ txtRgNr._value = ValueOrEmpty(UStV_POS.UStVPo_ReNr)
+ txtLeistungsbezeichnung.Text = ValueOrEmpty(UStV_POS.UStVPo_Leistungsbezeichnung)
+ txtUSTBetrag.Text = ValueOrEmpty(UStV_POS.UStVPo_USteuerbetrag)
+ txtUmrechnungskurs.Text = ValueOrEmpty(UStV_POS.UStVPo_Umrechnungskurs)
+ txtUSTBetragEUR.Text = ValueOrEmpty(UStV_POS.UStVPo_USteuerbetragEUR)
+ txtNettobetrag.Text = ValueOrEmpty(UStV_POS.UStVPo_Nettobetrag)
+ txtNettobetragEUR.Text = ValueOrEmpty(UStV_POS.UStVPo_NettobetragEUR)
+ lblSachbearbeiter.Text = ValueOrEmpty(UStV_POS.UStVPo_Sachbearbeiter)
+
+ If UStV_Leitender IsNot Nothing Then
+ sbLeistender.Text = UStV_Leitender.UStV_Leistender
+ If IsNumeric(UStV_Leitender.UStV_LeistenderId) AndAlso UStV_Leitender.UStV_LeistenderId > 0 Then
+ sbLeistender._value = UStV_Leitender.UStV_LeistenderId
+ sbLeistender_VALUE_CHANGED()
+ Else
+ 'sbLeistender._value = ""
+ End If
+ 'sbLeistender._value = ""
+ Else
+ sbLeistender._value = ""
+ sbLeistender.Text = ""
+ End If
+
+
+
loadChangedDSToPanel(UStV_Leitender, True)
API = atez_api
@@ -115,10 +142,11 @@ Public Class ustCntlUSTV_AntragPosition
scanSonstiges.Enabled = UStV_POS.UStVPo_daId_loeschbar 'Not UStV_POS.UStVPo_SchnittstellenNr > 0
btnAPIUbload.Enabled = True 'hochladbar aber nicht einfügen lassen! UStV_POS.UStVPo_daId_loeschbar
Else
- scanSonstiges.INIT(kdnr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_interneNr)
- 'scanSonstiges.INIT_daId(da_id)
- scanSonstiges.Enabled = True
- btnAPIUbload.Enabled = False
+ initUsrCntlPDF()
+ 'scanSonstiges.INIT(kdnr, "MDM", "MDM_DATEN", "USTVA_" & UStV_POS.UStVAn_ID & "_" & UStV_POS.UStVPo_interneNr)
+ ''scanSonstiges.INIT_daId(da_id)
+ 'scanSonstiges.Enabled = True
+ 'btnAPIUbload.Enabled = False
End If
If txtNettobetrag.Text = "" AndAlso txtNettobetragEUR.Text <> "" Then
@@ -131,17 +159,9 @@ Public Class ustCntlUSTV_AntragPosition
scanUSTVFABest.INIT(kdnr, "KUNDENDATEN", "FA_Bestaetigungen")
scanUSTVVollmachten.INIT(kdnr, "KUNDENDATEN", "USTV_Vollmachten")
- Dim filter As String = "UstV_aktiv = 1"
- If Antrag_LandKz <> "" AndAlso cbxAntragsfilter.Checked Then
- filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'"
- sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender] ) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
- Else
- sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
- End If
+ InitLeistenderSearchBox()
- 'sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender] + ' ' + isnull([UstV_Leistender_UstNr],'')) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, "UstV_aktiv = 1", "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
-
- gridAktiv = True
+ _gridAktiv = True
End Sub
Sub getValues(ByRef UStV_POS As cUStVPositionen, ByRef save As Boolean)
@@ -163,27 +183,45 @@ Public Class ustCntlUSTV_AntragPosition
lblWarning.Text = "Rechnungsdatum muss ausgefüllt werden."
save = False
End If
- If txtUSTBetrag.Text <> "" Then
- UStV_POS.UStVPo_USteuerbetrag = txtUSTBetrag.Text.Replace(",", ".")
- Else
- lblWarning.Text = "UST-Betrag muss ausgefüllt werden."
+
+
+
+ Dim ustBetrag As Decimal
+
+ If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then
+ lblWarning.Text = "UST-Betrag ist ungültig."
save = False
- End If
-
- If txtUSTBetragEUR.Text <> "" Then
- UStV_POS.UStVPo_USteuerbetragEUR = txtUSTBetragEUR.Text.Replace(",", ".")
Else
+ UStV_POS.UStVPo_USteuerbetrag = ustBetrag
+ End If
+
+
+ Dim ustBetragEUR As Decimal
+
+ If Not TryGetDecimal(txtUSTBetragEUR.Text, ustBetragEUR) Then
+ lblWarning.Text = "UST-Betrag ist ungültig."
save = False
+ Else
+ UStV_POS.UStVPo_USteuerbetragEUR = ustBetragEUR
End If
- If txtNettobetrag.Text <> "" Then
- UStV_POS.UStVPo_Nettobetrag = txtNettobetrag.Text.Replace(",", ".")
+
+
+ Dim Nettobetrag As Decimal
+
+ If TryGetDecimal(txtNettobetrag.Text, Nettobetrag) Then
+ UStV_POS.UStVPo_Nettobetrag = Nettobetrag
End If
- If txtNettobetragEUR.Text <> "" Then
- UStV_POS.UStVPo_NettobetragEUR = txtNettobetragEUR.Text.Replace(",", ".")
+ Dim NettobetragEUR As Decimal
+
+ If TryGetDecimal(txtNettobetragEUR.Text, NettobetragEUR) Then
+ UStV_POS.UStVPo_NettobetragEUR = NettobetragEUR
End If
+
+
+
If txtLeistungsbezeichnung.Text <> "" Then
UStV_POS.UStVPo_Leistungsbezeichnung = txtLeistungsbezeichnung.Text
Else
@@ -192,7 +230,12 @@ Public Class ustCntlUSTV_AntragPosition
End If
If Not txtUmrechnungskurs.Text = "" Then
If txtUmrechnungskurs.Text <> "" Then
- UStV_POS.UStVPo_Umrechnungskurs = txtUmrechnungskurs.Text.Replace(",", ".")
+
+ Dim Umrechnungskurs As Decimal
+ If TryGetDecimal(txtUmrechnungskurs.Text, Umrechnungskurs) Then
+ UStV_POS.UStVPo_Umrechnungskurs = Umrechnungskurs
+ End If
+
End If
Else
lblWarning.Text = "Umrechnungskurs muss ausgefüllt werden."
@@ -210,18 +253,28 @@ Public Class ustCntlUSTV_AntragPosition
UStV_POS.UStVPo_Leistender = UStV_Leist.UStV_Leistender
If UStV_Leist.UStV_LeistenderId > 0 Then UStV_POS.UStVPo_LeistenderId = UStV_Leist.UStV_LeistenderId
Else
- 'save = False
+ UStV_POS.UStVPo_Leistender = Nothing
End If
UStV_POS.UStVPo_Schnittstelle = cbxAPI.Checked
-
- UStV_POS.UStVPo_SchnittstellenNr = IIf(cboSchnittstellennr.SelectedItem IsNot Nothing, cboSchnittstellennr._value, -1)
-
+ UStV_POS.UStVPo_SchnittstellenNr = If(cboSchnittstellennr.SelectedItem IsNot Nothing, cboSchnittstellennr._value, -1)
UStV_POS.UStVPo_Sachbearbeiter = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
UStV_POS.UStVPo_Zeitstempel = Now
End Sub
+ Private Sub InitLeistenderSearchBox()
+
+ Dim filter As String = "UstV_aktiv = 1"
+
+ If cbxAntragsfilter.Checked AndAlso Not String.IsNullOrWhiteSpace(Antrag_LandKz) Then
+ filter &= " AND LEFT(UstV_Leistender_UstNr, 2) = '" & Antrag_LandKz.Replace("'", "''") & "'"
+ End If
+
+ sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender],[UStV_Leistender] AS Leistender,[UstV_Leistender_PLZ] AS PLZ,([UstV_Leistender_Strasse] + ' ' + [UstV_Leistender_StrasseNr]) AS Strasse,[UstV_Leistender_Stadt] AS Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
+
+ End Sub
+
Private Sub ustCntlUSTV_AntragPosition_KeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles Me.PreviewKeyDown
If e.KeyValue = Keys.PageDown Then
RaiseEvent EV_NEXT()
@@ -239,29 +292,35 @@ Public Class ustCntlUSTV_AntragPosition
Return False
End Function
- Private Sub txtBestellung_TextChanged(sender As Object, e As EventArgs) Handles txtLeistungsbezeichnung.TextChanged, txtRgDatum.TextChanged, txtRgNr.TextChanged, txtUSTBetrag.TextChanged, txtUmrechnungskurs.TextChanged, txtUSTBetragEUR.TextChanged
-
- If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub
-
- If gridAktiv And Me.FindForm IsNot Nothing Then
-
- 'If sender Is txtLieferung Then
- ' If Not PROG.checkSDLNrPartnerKdNr(kdNr, SDLNr) Then MsgBox("Bitte geben Sie die Partner-Kundennummer im Kundenblatt oder im FM-ZOLL ein!")
- 'End If
-
- If sender Is cboLeistungsgeber AndAlso cboLeistungsgeber.SelectedItem <> "" Then
- 'UStV_POS.UStVPo_Leistender = cboLeistungsgeber.SelectedItem
- 'values_changed()
-
- Else
- 'txtChanged = True
- End If
+ Private Shared Function ValueOrEmpty(value As Object) As String
+ If value Is Nothing OrElse IsDBNull(value) Then
+ Return String.Empty
End If
+ Return Convert.ToString(value)
+ End Function
+ Private Function RoundCurrency(value As Decimal) As Decimal
+ Return Decimal.Round(value, 2, MidpointRounding.AwayFromZero)
+ End Function
- End Sub
+ Private Function TryGetDecimal(text As String, ByRef value As Decimal) As Boolean
+
+ text = text.Trim()
+
+ If text = "" Then
+ Return False
+ End If
+
+ Return Decimal.TryParse(
+ text,
+ Globalization.NumberStyles.Number,
+ Globalization.CultureInfo.CurrentCulture,
+ value
+ )
+
+ End Function
Sub values_changed()
lblSachbearbeiter.Text = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
@@ -307,25 +366,9 @@ Public Class ustCntlUSTV_AntragPosition
End If
- If Not initial Then
- 'Listener für Änderungen im Detail-Panel
- If Not adressLoadedByLeistender Then
- For Each c As Control In pnlAdresse.Controls
-
- If TypeOf (c) Is TextBox Then
- AddHandler CType(c, TextBox).TextChanged, AddressOf SomethingChanged
- End If
- If TypeOf (c) Is MyComboBox Then
- AddHandler CType(c, MyComboBox).TextChanged, AddressOf SomethingChanged
- End If
-
-
- Next
- Else
- btnLeistenderSave.Visible = False
- End If
- Else
+ SetAddressChangeHandlers(Not initial AndAlso Not adressLoadedByLeistender)
+ If initial OrElse adressLoadedByLeistender Then
btnLeistenderSave.Visible = False
End If
@@ -410,10 +453,6 @@ Public Class ustCntlUSTV_AntragPosition
End If
- End Sub
-
- Private Sub cboLeistungsgeber_Enter(sender As Object, e As EventArgs) Handles cboLeistungsgeber.Enter
-
End Sub
Private Sub cboLeistungsgeber_DropDown(sender As Object, e As EventArgs) Handles cboLeistungsgeber.DropDown
@@ -463,179 +502,466 @@ Public Class ustCntlUSTV_AntragPosition
End Sub
Private Sub txtUSTBetrag_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtUSTBetrag.PreviewKeyDown, txtUSTBetragEUR.PreviewKeyDown, txtRgDatum.PreviewKeyDown, txtRgNr.PreviewKeyDown, txtUmrechnungskurs.PreviewKeyDown, sbLeistender.PreviewKeyDown, txtLeistungsbezeichnung.PreviewKeyDown
- If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub
- If gridAktiv And Me.FindForm IsNot Nothing Then
+ If e.KeyValue <> Keys.Tab Then Return
+ If Not CanEdit() Then Return
+ If Not _gridAktiv OrElse Me.FindForm Is Nothing Then Return
- ' Eingabeprüfung
- If e.KeyValue = 9 Then
+ lblWarning.Text = ""
- lblWarning.Text = ""
- If sender Is txtUSTBetrag Or sender Is txtUSTBetragEUR Or sender Is txtUmrechnungskurs Then
+ Select Case True
- If txtUSTBetrag.Text = "" Then
- lblWarning.Text = "Bitte Umsatzsteuerbetrag eingeben."
- Exit Sub
- End If
+ Case sender Is txtUSTBetrag
+ HandleVatAmountChanged()
- End If
+ Case sender Is txtUSTBetragEUR
+ HandleVatAmountEurChanged()
+
+ Case sender Is txtUmrechnungskurs
+ HandleExchangeRateChanged()
+
+ Case sender Is txtRgDatum
+ HandleInvoiceDateChanged()
+
+ Case sender Is txtLeistungsbezeichnung
+ HandleServiceDescriptionChanged()
+
+ Case sender Is sbLeistender
+ HandleSupplierChanged()
+
+ End Select
+
+ SaveIfChanged()
+
+ 'If Not VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm) Then Exit Sub
+
+ 'If _gridAktiv And Me.FindForm IsNot Nothing Then
+
+ ' ' Eingabeprüfung
+ ' If e.KeyValue = 9 Then
+
+ ' lblWarning.Text = ""
+ ' If sender Is txtUSTBetrag Or sender Is txtUSTBetragEUR Or sender Is txtUmrechnungskurs Then
+
+ ' If txtUSTBetrag.Text = "" Then
+ ' lblWarning.Text = "Bitte Umsatzsteuerbetrag eingeben."
+ ' Exit Sub
+ ' End If
+
+ ' End If
- If sender Is txtUSTBetrag Then
- If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs.Text) Then
+ ' If sender Is txtUSTBetrag Then
+ ' If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs.Text) Then
- If CDbl(UStV_POS.UStVPo_USteuerbetrag) <> CDbl(txtUSTBetrag.Text) OrElse UStV_POS.UStVPo_USteuerbetrag Is Nothing Then
- 'Umrechnung bei Währung <> EUR im Antrag!
+ ' If UStV_POS.UStVPo_USteuerbetrag Is Nothing OrElse CDbl(UStV_POS.UStVPo_USteuerbetrag) <> CDbl(txtUSTBetrag.Text) Then
+ ' 'Umrechnung bei Währung <> EUR im Antrag!
- Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID)
+ ' Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID)
- If antr.UStVAn_Währungscode <> "EUR" AndAlso (IsDate(UStV_POS.UStVPo_ReDat) OrElse (txtRgDatum.Text <> "" AndAlso IsDate(txtRgDatum.Text))) Then
- If txtUmrechnungskurs.Text = 1 Or txtUmrechnungskurs.Text = "" Then
- Dim kurs As New cEZB_Waehrungskurse(antr.UStVAn_Währungscode)
+ ' If antr.UStVAn_Währungscode <> "EUR" AndAlso (IsDate(UStV_POS.UStVPo_ReDat) OrElse (txtRgDatum.Text <> "" AndAlso IsDate(txtRgDatum.Text))) Then
+ ' If txtUmrechnungskurs.Text = 1 Or txtUmrechnungskurs.Text = "" Then
+ ' Dim kurs As New cEZB_Waehrungskurse(antr.UStVAn_Währungscode)
- If IsDate(UStV_POS.UStVPo_ReDat) Then
- txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(UStV_POS.UStVPo_ReDat))
- ElseIf IsDate(txtRgDatum.Text) Then
- txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(txtRgDatum.Text))
- Else
- txtUmrechnungskurs.Text = kurs.ezb_kurs
- End If
+ ' If IsDate(UStV_POS.UStVPo_ReDat) Then
+ ' txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(UStV_POS.UStVPo_ReDat))
+ ' ElseIf IsDate(txtRgDatum.Text) Then
+ ' txtUmrechnungskurs.Text = kurs.GET_KURS(antr.UStVAn_Währungscode, CDate(txtRgDatum.Text))
+ ' Else
+ ' txtUmrechnungskurs.Text = kurs.ezb_kurs
+ ' End If
- End If
+ ' End If
- End If
+ ' End If
- txtUSTBetragEUR.Text = Math.Floor((txtUSTBetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100
+ ' txtUSTBetragEUR.Text = RoundCurrency(txtUSTBetrag.Text / txtUmrechnungskurs.Text).ToString()
- If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100
+ ' If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = RoundCurrency(txtNettobetrag.Text / txtUmrechnungskurs.Text).ToString() 'Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100
- txtChanged = True
- End If
+ ' _txtChanged = True
+ ' End If
- End If
+ ' End If
- ElseIf sender Is txtUSTBetragEUR Then
+ ' ElseIf sender Is txtUSTBetragEUR Then
- 'so herum nicht umrechnen!!!!
- 'If IsNumeric(txtUSTBetragEUR._value) AndAlso IsNumeric(txtUmrechnungskurs._value) Then
- ' txtUSTBetrag.Text = Math.Floor((txtUSTBetragEUR._value * txtUmrechnungskurs._value) * 100 + 0.5) / 100
- ' 'values_changed()
- 'End If
+ ' 'so herum nicht umrechnen!!!!
+ ' 'If IsNumeric(txtUSTBetragEUR._value) AndAlso IsNumeric(txtUmrechnungskurs._value) Then
+ ' ' txtUSTBetrag.Text = Math.Floor((txtUSTBetragEUR._value * txtUmrechnungskurs._value) * 100 + 0.5) / 100
+ ' ' 'values_changed()
+ ' 'End If
- If IsNumeric(txtUSTBetragEUR.Text) AndAlso IsNumeric(txtUSTBetrag.Text) Then
+ ' If IsNumeric(txtUSTBetragEUR.Text) AndAlso IsNumeric(txtUSTBetrag.Text) Then
- If CDbl(UStV_POS.UStVPo_USteuerbetragEUR) <> CDbl(txtUSTBetragEUR.Text) OrElse UStV_POS.UStVPo_USteuerbetragEUR Is Nothing Then
+ ' If UStV_POS.UStVPo_USteuerbetragEUR Is Nothing OrElse CDbl(UStV_POS.UStVPo_USteuerbetragEUR) <> CDbl(txtUSTBetragEUR.Text) Then
- Dim zahl1 = CDbl(txtUSTBetrag.Text) / CDbl(txtUSTBetragEUR.Text)
+ ' 'If CDbl(UStV_POS.UStVPo_USteuerbetragEUR) <> CDbl(txtUSTBetragEUR.Text) OrElse UStV_POS.UStVPo_USteuerbetragEUR Is Nothing Then
- txtUmrechnungskurs.Text = Math.Round(zahl1, 2)
- txtChanged = True
- End If
- End If
+ ' Dim zahl1 = CDbl(txtUSTBetrag.Text) / CDbl(txtUSTBetragEUR.Text)
- ElseIf sender Is txtUmrechnungskurs Then
+ ' txtUmrechnungskurs.Text = Math.Round(zahl1, 2)
+ ' _txtChanged = True
+ ' End If
+ ' End If
+
+ ' ElseIf sender Is txtUmrechnungskurs Then
- If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs._value) Then
+ ' If IsNumeric(txtUSTBetrag.Text) AndAlso IsNumeric(txtUmrechnungskurs._value) Then
- If UStV_POS.UStVPo_Umrechnungskurs <> txtUmrechnungskurs.Text.Replace(",", ".") OrElse UStV_POS.UStVPo_Umrechnungskurs Is Nothing Then
+ ' If UStV_POS.UStVPo_Umrechnungskurs <> txtUmrechnungskurs.Text.Replace(",", ".") OrElse UStV_POS.UStVPo_Umrechnungskurs Is Nothing Then
- txtUSTBetragEUR.Text = Math.Floor((txtUSTBetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100
- If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100
- txtChanged = True
- End If
- End If
+ ' txtUSTBetragEUR.Text = RoundCurrency(txtUSTBetrag.Text / txtUmrechnungskurs.Text).ToString() ' Math.Floor((txtUSTBetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100
+ ' If IsNumeric(txtNettobetrag.Text) Then txtNettobetragEUR.Text = RoundCurrency(txtNettobetrag.Text / txtUmrechnungskurs.Text).ToString() 'Math.Floor((txtNettobetrag.Text / txtUmrechnungskurs.Text) * 100 + 0.5) / 100
+ ' _txtChanged = True
+ ' End If
+ ' End If
- 'ElseIf sender Is sbLeistender Then
+ ' 'ElseIf sender Is sbLeistender Then
- ' If UStV_Leist.hasEntry Then
+ ' ' If UStV_Leist.hasEntry Then
- ' UStV_POS.UStVPo_Leistender = UStV_Leist.UStV_Leistender
- ' If UStV_Leist.UStV_LeistenderId > 0 Then UStV_POS.UStVPo_LeistenderId = UStV_Leist.UStV_LeistenderId
- ' txtChanged = True
+ ' ' UStV_POS.UStVPo_Leistender = UStV_Leist.UStV_Leistender
+ ' ' If UStV_Leist.UStV_LeistenderId > 0 Then UStV_POS.UStVPo_LeistenderId = UStV_Leist.UStV_LeistenderId
+ ' ' txtChanged = True
- ' End If
+ ' ' End If
- ElseIf sender Is txtRgDatum Then
+ ' ElseIf sender Is txtRgDatum Then
- If txtRgDatum.Text <> "" Then
- txtRgDatum.Text = txtRgDatum.Text.Replace("-", ".")
- txtRgDatum.Text = txtRgDatum.Text.Replace(",", ".")
+ ' If txtRgDatum.Text <> "" Then
+ ' txtRgDatum.Text = txtRgDatum.Text.Replace("-", ".")
+ ' txtRgDatum.Text = txtRgDatum.Text.Replace(",", ".")
- Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID)
+ ' Dim antr As New cUSTVAntrag(UStV_POS.UStVAn_ID)
- If IsDate(txtRgDatum.Text) AndAlso ((CDate(txtRgDatum.Text) > antr.UStVAn_ReDatBis) OrElse (CDate(txtRgDatum.Text) < antr.UStVAn_ReDatVon)) Then
- MsgBox("Rechnungsdatum " & CDate(txtRgDatum.Text) & " darf nicht außerhalb der Antragsperiode liegen!")
- Else
- txtChanged = True
- End If
- End If
+ ' If IsDate(txtRgDatum.Text) AndAlso ((CDate(txtRgDatum.Text) > antr.UStVAn_ReDatBis) OrElse (CDate(txtRgDatum.Text) < antr.UStVAn_ReDatVon)) Then
+ ' MsgBox("Rechnungsdatum " & CDate(txtRgDatum.Text) & " darf nicht außerhalb der Antragsperiode liegen!")
+ ' Else
+ ' _txtChanged = True
+ ' End If
+ ' End If
- ElseIf sender Is txtLeistungsbezeichnung Then
+ ' ElseIf sender Is txtLeistungsbezeichnung Then
- 'If UStV_POS.UStVPo_Leistungsbezeichnung <> txtLeistungsbezeichnung.Text Then
- 'UStV_POS.UStVPo_Leistungsbezeichnung = txtLeistungsbezeichnung.Text
- txtChanged = True
- 'End If
+ ' 'If UStV_POS.UStVPo_Leistungsbezeichnung <> txtLeistungsbezeichnung.Text Then
+ ' 'UStV_POS.UStVPo_Leistungsbezeichnung = txtLeistungsbezeichnung.Text
+ ' _txtChanged = True
+ ' 'End If
- ElseIf sender Is sbLeistender Then
- If sbLeistender.Text <> "" Then
- If sbLeistender.Text IsNot Nothing AndAlso sbLeistender.Text <> "" Then
- If IsNumeric(sbLeistender.Text) Then
- If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_POS.UStVPo_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_LeistenderId <> sbLeistender.Text) Then
- 'speichern der Änderung nur, wenn 1. Leistender gelöscht wird.
- txtChanged = True
- ElseIf UStV_Leist Is Nothing Then
- txtChanged = True
- End If
+ ' ElseIf sender Is sbLeistender Then
+ ' If sbLeistender.Text <> "" Then
+ ' If sbLeistender.Text IsNot Nothing AndAlso sbLeistender.Text <> "" Then
+ ' If IsNumeric(sbLeistender.Text) Then
+ ' If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_POS.UStVPo_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_LeistenderId <> sbLeistender.Text) Then
+ ' 'speichern der Änderung nur, wenn 1. Leistender gelöscht wird.
+ ' _txtChanged = True
+ ' ElseIf UStV_Leist Is Nothing Then
+ ' _txtChanged = True
+ ' End If
- UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(CInt(sbLeistender.Text))
- Else
- If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_Leist.UStV_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_Leistender <> sbLeistender.Text) Then
- txtChanged = True
- ElseIf UStV_Leist Is Nothing Then
- txtChanged = True
- End If
- End If
+ ' UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(CInt(sbLeistender.Text))
+ ' Else
+ ' If UStV_Leist IsNot Nothing AndAlso UStV_Leist.UStV_Leistender <> "" AndAlso (UStV_Leist.UStV_Leistender <> sbLeistender.Text OrElse UStV_POS.UStVPo_Leistender <> sbLeistender.Text) Then
+ ' _txtChanged = True
+ ' ElseIf UStV_Leist Is Nothing Then
+ ' _txtChanged = True
+ ' End If
+ ' End If
- UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(sbLeistender.Text)
- loadChangedDSToPanel(UStV_Leist)
- Else
- If UStV_POS.UStVPo_Leistender <> "" OrElse UStV_POS.UStVPo_LeistenderId <> 0 Then
- loadChangedDSToPanel(Nothing, True)
- End If
+ ' UStV_Leist = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(sbLeistender.Text)
+ ' loadChangedDSToPanel(UStV_Leist)
+ ' Else
+ ' If UStV_POS.UStVPo_Leistender <> "" OrElse UStV_POS.UStVPo_LeistenderId <> 0 Then
+ ' loadChangedDSToPanel(Nothing, True)
+ ' End If
- End If
- End If
- 'MsgBox()
- End If
+ ' End If
+ ' End If
+ ' 'MsgBox()
+ ' End If
+ ' End If
+
+ ' If _txtChanged Then
+ ' values_changed()
+ ' _txtChanged = False
+ ' End If
+
+
+ 'End If
+
+ End Sub
+
+ Private Function CanEdit() As Boolean
+
+ Return VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("MDM_USTVA_bearbeiten", Me.FindForm)
+
+ End Function
+
+ Private Sub HandleVatAmountChanged()
+
+ If String.IsNullOrWhiteSpace(txtUSTBetrag.Text) Then
+ lblWarning.Text = "Bitte Umsatzsteuerbetrag eingeben."
+ Return
+ End If
+
+ Dim ustBetrag As Decimal
+ Dim umrechnungskurs As Decimal
+
+ If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then
+ lblWarning.Text = "USt-Betrag ist ungültig."
+ Return
+ End If
+
+ If Not TryGetDecimal(txtUmrechnungskurs.Text, umrechnungskurs) OrElse
+ umrechnungskurs <= 0 Then
+
+ LoadExchangeRate()
+
+ If Not TryGetDecimal(txtUmrechnungskurs.Text, umrechnungskurs) OrElse
+ umrechnungskurs <= 0 Then
+
+ lblWarning.Text = "Umrechnungskurs ist ungültig."
+ Return
+
End If
- If txtChanged Then
- values_changed()
- txtChanged = False
- End If
-
-
End If
+ Dim oldValueChanged As Boolean =
+ UStV_POS Is Nothing OrElse
+ UStV_POS.UStVPo_USteuerbetrag Is Nothing OrElse
+ Convert.ToDecimal(UStV_POS.UStVPo_USteuerbetrag) <> ustBetrag
+
+ If Not oldValueChanged Then Return
+
+ txtUSTBetragEUR.Text =
+ RoundCurrency(ustBetrag / umrechnungskurs).ToString()
+
+ Dim nettoBetrag As Decimal
+
+ If TryGetDecimal(txtNettobetrag.Text, nettoBetrag) Then
+ txtNettobetragEUR.Text =
+ RoundCurrency(nettoBetrag / umrechnungskurs).ToString()
+ End If
+
+ _txtChanged = True
+
+ End Sub
+
+ Private Sub HandleVatAmountEurChanged()
+
+ Dim ustBetragEUR As Decimal
+ Dim ustBetrag As Decimal
+
+ If Not TryGetDecimal(txtUSTBetragEUR.Text, ustBetragEUR) Then
+ Return
+ End If
+
+ If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then
+ Return
+ End If
+
+ If ustBetragEUR = 0 Then
+ lblWarning.Text = "USt-Betrag EUR darf nicht 0 sein."
+ Return
+ End If
+
+ Dim oldValueChanged As Boolean = UStV_POS Is Nothing OrElse UStV_POS.UStVPo_USteuerbetragEUR Is Nothing OrElse Convert.ToDecimal(UStV_POS.UStVPo_USteuerbetragEUR) <> ustBetragEUR
+
+ If Not oldValueChanged Then Return
+
+ Dim kurs As Decimal = RoundCurrency(ustBetrag / ustBetragEUR)
+
+ txtUmrechnungskurs.Text = kurs.ToString()
+
+ _txtChanged = True
+
+ End Sub
+
+ Private Sub HandleExchangeRateChanged()
+
+ Dim ustBetrag As Decimal
+ Dim umrechnungskurs As Decimal
+
+ If Not TryGetDecimal(txtUSTBetrag.Text, ustBetrag) Then
+ Return
+ End If
+
+ If Not TryGetDecimal(txtUmrechnungskurs.Text, umrechnungskurs) Then
+ lblWarning.Text = "Umrechnungskurs ist ungültig."
+ Return
+ End If
+
+ If umrechnungskurs <= 0 Then
+ lblWarning.Text = "Umrechnungskurs muss größer als 0 sein."
+ Return
+ End If
+
+ Dim oldKurs As Decimal
+
+ If UStV_POS IsNot Nothing AndAlso UStV_POS.UStVPo_Umrechnungskurs IsNot Nothing AndAlso TryGetDecimal(Convert.ToString(UStV_POS.UStVPo_Umrechnungskurs), oldKurs) Then
+
+ If oldKurs = umrechnungskurs Then
+ Return
+ End If
+
+ End If
+
+ txtUSTBetragEUR.Text =
+ RoundCurrency(ustBetrag / umrechnungskurs).ToString()
+
+ Dim nettoBetrag As Decimal
+
+ If TryGetDecimal(txtNettobetrag.Text, nettoBetrag) Then
+ txtNettobetragEUR.Text =
+ RoundCurrency(nettoBetrag / umrechnungskurs).ToString()
+ End If
+
+ _txtChanged = True
+
+ End Sub
+
+ Private Sub HandleInvoiceDateChanged()
+
+ If String.IsNullOrWhiteSpace(txtRgDatum.Text) Then
+ Return
+ End If
+
+ txtRgDatum.Text =
+ txtRgDatum.Text.Replace("-", ".").Replace(",", ".")
+
+ Dim rechnungsDatum As DateTime
+
+ If Not DateTime.TryParse(txtRgDatum.Text, rechnungsDatum) Then
+ lblWarning.Text = "Rechnungsdatum ist ungültig."
+ Return
+ End If
+
+ Dim antrag As New cUSTVAntrag(UStV_POS.UStVAn_ID)
+
+ If rechnungsDatum > antrag.UStVAn_ReDatBis OrElse
+ rechnungsDatum < antrag.UStVAn_ReDatVon Then
+
+ MsgBox("Rechnungsdatum " & rechnungsDatum.ToString("dd.MM.yyyy") & " darf nicht außerhalb der Antragsperiode liegen!")
+
+ Return
+ End If
+
+ _txtChanged = True
+
+ End Sub
+
+ Private Sub HandleServiceDescriptionChanged()
+
+ If String.IsNullOrWhiteSpace(txtLeistungsbezeichnung.Text) Then
+ lblWarning.Text = "Leistungsbez. muss ausgefüllt werden."
+ Return
+ End If
+
+ _txtChanged = True
+
+ End Sub
+
+ Private Sub HandleSupplierChanged()
+
+ Dim supplierText As String = sbLeistender.Text.Trim()
+
+ If String.IsNullOrWhiteSpace(supplierText) Then
+
+ If UStV_POS IsNot Nothing AndAlso (UStV_POS.UStVPo_Leistender <> "" OrElse UStV_POS.UStVPo_LeistenderId <> 0) Then
+
+ UStV_Leist = Nothing
+ loadChangedDSToPanel(Nothing, True)
+ _txtChanged = True
+
+ End If
+
+ Return
+
+ End If
+
+ Dim supplier As VERAG_PROG_ALLGEMEIN.cUStVLeistender
+
+ If IsNumeric(supplierText) Then
+ supplier = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(CInt(supplierText))
+ Else
+ supplier = New VERAG_PROG_ALLGEMEIN.cUStVLeistender(supplierText)
+ End If
+
+ If supplier Is Nothing Then Return
+
+ Dim changed As Boolean = False
+
+ If UStV_Leist Is Nothing Then
+ changed = True
+ ElseIf UStV_POS Is Nothing Then
+ changed = True
+ ElseIf UStV_POS.UStVPo_Leistender <> supplier.UStV_Leistender Then
+ changed = True
+ ElseIf UStV_POS.UStVPo_LeistenderId <> supplier.UStV_LeistenderId Then
+ changed = True
+ End If
+
+ UStV_Leist = supplier
+
+ loadChangedDSToPanel(UStV_Leist)
+
+ If changed Then
+ _txtChanged = True
+ End If
+
+ End Sub
+
+ Private Sub LoadExchangeRate()
+
+ If UStV_POS Is Nothing Then Return
+
+ Dim antrag As New cUSTVAntrag(UStV_POS.UStVAn_ID)
+
+ If antrag.UStVAn_Währungscode = "EUR" Then
+ txtUmrechnungskurs.Text = "1"
+ Return
+ End If
+
+ Dim rechnungsDatum As DateTime
+
+ If DateTime.TryParse(txtRgDatum.Text, rechnungsDatum) Then
+
+ Dim kurs As New cEZB_Waehrungskurse(antrag.UStVAn_Währungscode)
+
+ txtUmrechnungskurs.Text = kurs.GET_KURS(antrag.UStVAn_Währungscode, rechnungsDatum).ToString()
+
+ End If
+
+ End Sub
+
+ Private Sub SaveIfChanged()
+
+ If Not _txtChanged Then Return
+
+ _txtChanged = False
+
+ values_changed()
+
End Sub
Private Sub scanSonstiges_FileAdded(id As String, path As String, name As String) Handles scanSonstiges.FileAdded
@@ -659,12 +985,8 @@ Public Class ustCntlUSTV_AntragPosition
Private Sub cbxAntragsfilter_CheckedChanged(sender As Object, e As EventArgs) Handles cbxAntragsfilter.CheckedChanged
- Dim filter As String = "UstV_aktiv = 1"
- If Antrag_LandKz <> "" Then
- If cbxAntragsfilter.Checked Then filter &= " and left(UstV_Leistender_UstNr,2)='" & Antrag_LandKz & "'"
- sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender]) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
- 'sbLeistender.initSearchBox(Me.FindForm, "[UStV_LeistenderId],[UStV_Leistender], ([UStV_Leistender] + ' ' + isnull([UstV_Leistender_UstNr],'')) as Leistender,[UstV_Leistender_PLZ] as PLZ, ([UstV_Leistender_Strasse] + ' ' +[UstV_Leistender_StrasseNr]) as Strasse, [UstV_Leistender_Stadt] as Stadt FROM [tblUStVLeistender]", {"UStV_Leistender", "UstV_Leistender_UstNr"}, filter, "UStV_Leistender", "UStV_LeistenderId", "Leistender", "FMZOLL",, 400, 200, {"UStV_Leistender", "UStV_LeistenderId"})
- End If
+ InitLeistenderSearchBox()
+
End Sub
Private Sub mnuItemKIUPLOAD_Clicked(sender As Object, e As EventArgs)
@@ -716,7 +1038,7 @@ Public Class ustCntlUSTV_AntragPosition
f.usrcntlVAT_ATEZ1.btnUebernehmen.Enabled = UStV_POS.UStVPo_daId_loeschbar 'NUR ÜBERNEHMEN WENN LÖSCHBAR!
f.usrcntlVAT_ATEZ1.initDGV(dt)
f.usrcntlVAT_ATEZ1.setColorIndgv()
- f.usrcntlVAT_ATEZ1.setAmountOnly = IIf(UStV_POS.UStVPo_SchnittstellenNr = 7, True, False)
+ f.usrcntlVAT_ATEZ1.setAmountOnly = UStV_POS.UStVPo_SchnittstellenNr = 7
If f.ShowDialog = DialogResult.OK Then
@@ -826,6 +1148,36 @@ Public Class ustCntlUSTV_AntragPosition
+ End Sub
+
+ Private Sub SetAddressChangeHandlers(enabled As Boolean)
+
+ For Each c As Control In pnlAdresse.Controls
+
+ If TypeOf c Is TextBox Then
+
+ Dim tb As TextBox = DirectCast(c, TextBox)
+
+ RemoveHandler tb.TextChanged, AddressOf SomethingChanged
+
+ If enabled Then
+ AddHandler tb.TextChanged, AddressOf SomethingChanged
+ End If
+
+ ElseIf TypeOf c Is MyComboBox Then
+
+ Dim cb As MyComboBox = DirectCast(c, MyComboBox)
+
+ RemoveHandler cb.TextChanged, AddressOf SomethingChanged
+
+ If enabled Then
+ AddHandler cb.TextChanged, AddressOf SomethingChanged
+ End If
+
+ End If
+
+ Next
+
End Sub
Private Sub btnAPIUbload_Click(sender As Object, e As EventArgs) Handles btnAPIUbload.Click
@@ -852,7 +1204,7 @@ Public Class ustCntlUSTV_AntragPosition
Private Sub txtStrasse_PreviewKeyDown(sender As Object, e As PreviewKeyDownEventArgs) Handles txtStrasse.PreviewKeyDown, txtPLZ.PreviewKeyDown, txtOrt.PreviewKeyDown, txtLand.PreviewKeyDown, txtStrassenNr.PreviewKeyDown, txtUIDNr.PreviewKeyDown
- If gridAktiv And Me.FindForm IsNot Nothing Then
+ If _gridAktiv And Me.FindForm IsNot Nothing Then
' Eingabeprüfung
If e.KeyValue = 9 Then
@@ -913,11 +1265,11 @@ Public Class ustCntlUSTV_AntragPosition
Else
If IsNumeric(txtNettobetragEUR.Text) Then
txtNettobetrag.Text = Math.Floor((txtNettobetragEUR.Text * txtUmrechnungskurs.Text) * 100 + 0.5) / 100
- txtChanged = True
+ _txtChanged = True
- If txtChanged Then
+ If _txtChanged Then
values_changed()
- txtChanged = False
+ _txtChanged = False
End If
End If
diff --git a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb
index fc4c1b3d..5fcabf14 100644
--- a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb
+++ b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/EXGestellung/usrCntlATLAS_EXGestellung.vb
@@ -139,7 +139,7 @@ Public Class usrCntlATLAS_EXGestellung
For Each l In rtbMRN.Lines
If l.Trim <> "" Then
- If Not sendEXP_MRN(l.Trim.ToUpper, sbAbgangZollstelle._value, cnt, exg_list) Then
+ If Not sendEXP_MRN(l.Trim.ToUpper, sbAbgangZollstelle._value, cnt, exg_list, FIRMA_DY) Then
MsgBox("Sendefehler bei " & l)
err = True
End If
@@ -254,7 +254,7 @@ Public Class usrCntlATLAS_EXGestellung
Me.Cursor = Cursors.Default
End Sub
- Function sendEXP_MRN(MRN As String, Zollstelle As String, zeile As String, ByRef exg_list As List(Of Integer)) As Boolean
+ Function sendEXP_MRN(MRN As String, Zollstelle As String, zeile As String, ByRef exg_list As List(Of Integer), Optional FIRMA_DY_TEMP As String = "") As Boolean
Me.Refresh()
@@ -284,8 +284,15 @@ Public Class usrCntlATLAS_EXGestellung
'EXG.exg_ObjectName = AVISO.AvisoID & "_EXP_" & EXG.exg_MRN.ToString().Substring(0, 4) & EXG.exg_MRN.ToString.Substring(14) & zusatz '---> >>> MRN KÜRZEN!!!!
'EXG.exg_ObjectName = AVISO.AvisoID & "_EXP_" & EXG.exg_MRN
+
+
Dim FIRMA_DY = VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA
- FIRMA_DY = DAKOSY_Worker.cDakosyFunftions.getFirma_DY(SENDUNG.FilialenNr, Me.FindForm, "EXG")
+ FIRMA_DY = DAKOSY_Worker.cDakosyFunftions.getFirma_DY(SENDUNG.FilialenNr, Me.FindForm, "EXG") ' -> hier liegt vermutlich der Fehler, die Firma wird hier nochmals gesetzt
+
+ If FIRMA_DY_TEMP <> "" Then
+ FIRMA_DY = FIRMA_DY_TEMP
+ End If
+
Dim saveFile = ""
If EXG.SAVE_ALL Then
diff --git a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb
index cd9d4f34..b6cd762b 100644
--- a/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb
+++ b/SDL/ZOLLSYSTEM/DAKOSY/ATLAS/Verwahrung/usrCntlATLAS_AnkunftsAnzeige.vb
@@ -352,7 +352,7 @@ Public Class usrCntlATLAS_AnkunftsAnzeige
CLOSED_DUMMY.SAVE()
- GesSichRef.CalcSaldo()
+ GesSichRef.CalcSaldo_new()
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
diff --git a/SDL/buchhaltung/usrCntlBH.Designer.vb b/SDL/buchhaltung/usrCntlBH.Designer.vb
index 03a2355e..610d0d46 100644
--- a/SDL/buchhaltung/usrCntlBH.Designer.vb
+++ b/SDL/buchhaltung/usrCntlBH.Designer.vb
@@ -76,6 +76,9 @@ Partial Class usrCntlBH
Me.Label1 = New System.Windows.Forms.Label()
Me.btnWord = New System.Windows.Forms.Button()
Me.GroupBox2 = New System.Windows.Forms.GroupBox()
+ Me.cboFirma_FIBUFilialen = New VERAG_PROG_ALLGEMEIN.MyComboBox()
+ Me.Label67 = New System.Windows.Forms.Label()
+ Me.Button16 = New System.Windows.Forms.Button()
Me.txtMonateSyskavergleich = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.Label61 = New System.Windows.Forms.Label()
Me.Button15 = New System.Windows.Forms.Button()
@@ -166,6 +169,11 @@ Partial Class usrCntlBH
Me.btn_Erloeskkonten = New System.Windows.Forms.Button()
Me.Label62 = New System.Windows.Forms.Label()
Me.GroupBox11 = New System.Windows.Forms.GroupBox()
+ Me.txtPloseAnh_Einarbeitung = New System.Windows.Forms.TextBox()
+ Me.Label71 = New System.Windows.Forms.Label()
+ Me.pbPloseAnh_Proz = New System.Windows.Forms.ProgressBar()
+ Me.lblPloseAnh_Proz = New System.Windows.Forms.Label()
+ Me.cbxZBalsSR = New System.Windows.Forms.CheckBox()
Me.Label57 = New System.Windows.Forms.Label()
Me.btnDel_ = New VERAG_PROG_ALLGEMEIN.FlatButton()
Me.btnWikiStatusmails = New System.Windows.Forms.Button()
@@ -190,9 +198,8 @@ Partial Class usrCntlBH
Me.txtZRbis = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.Label51 = New System.Windows.Forms.Label()
Me.txtJahr_FIBU = New VERAG_PROG_ALLGEMEIN.MyTextBox()
- Me.Button16 = New System.Windows.Forms.Button()
- Me.Label67 = New System.Windows.Forms.Label()
- Me.cboFirma_FIBUFilialen = New VERAG_PROG_ALLGEMEIN.MyComboBox()
+ Me.Button17 = New System.Windows.Forms.Button()
+ Me.cbxPOSBNZerstellen = New System.Windows.Forms.CheckBox()
Me.pnl.SuspendLayout()
Me.TabPage1.SuspendLayout()
Me.GroupBox13.SuspendLayout()
@@ -906,6 +913,41 @@ Partial Class usrCntlBH
Me.GroupBox2.TabIndex = 4
Me.GroupBox2.TabStop = False
'
+ 'cboFirma_FIBUFilialen
+ '
+ Me.cboFirma_FIBUFilialen._allowedValuesFreiText = Nothing
+ Me.cboFirma_FIBUFilialen._allowFreiText = False
+ Me.cboFirma_FIBUFilialen._value = ""
+ Me.cboFirma_FIBUFilialen.DropDownWidth = 150
+ Me.cboFirma_FIBUFilialen.FormattingEnabled = True
+ Me.cboFirma_FIBUFilialen.Location = New System.Drawing.Point(406, 57)
+ Me.cboFirma_FIBUFilialen.Name = "cboFirma_FIBUFilialen"
+ Me.cboFirma_FIBUFilialen.Size = New System.Drawing.Size(54, 21)
+ Me.cboFirma_FIBUFilialen.TabIndex = 43
+ '
+ 'Label67
+ '
+ Me.Label67.AutoSize = True
+ Me.Label67.Location = New System.Drawing.Point(145, 87)
+ Me.Label67.Name = "Label67"
+ Me.Label67.Size = New System.Drawing.Size(105, 13)
+ Me.Label67.TabIndex = 45
+ Me.Label67.Text = "Vergleich UID-Syska"
+ '
+ 'Button16
+ '
+ Me.Button16.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
+ Me.Button16.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button16.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
+ Me.Button16.Image = Global.SDL.My.Resources.Resources.Excel_logo
+ Me.Button16.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.Button16.Location = New System.Drawing.Point(6, 81)
+ Me.Button16.Name = "Button16"
+ Me.Button16.Size = New System.Drawing.Size(121, 23)
+ Me.Button16.TabIndex = 44
+ Me.Button16.Text = " Excel"
+ Me.Button16.UseVisualStyleBackColor = True
+ '
'txtMonateSyskavergleich
'
Me.txtMonateSyskavergleich._DateTimeOnly = False
@@ -1949,6 +1991,7 @@ Partial Class usrCntlBH
'
'GroupBox14
'
+ Me.GroupBox14.Controls.Add(Me.Button17)
Me.GroupBox14.Controls.Add(Me.Label63)
Me.GroupBox14.Controls.Add(Me.Label66)
Me.GroupBox14.Controls.Add(Me.txtLand)
@@ -1959,7 +2002,7 @@ Partial Class usrCntlBH
Me.GroupBox14.Controls.Add(Me.btn_ZV)
Me.GroupBox14.Controls.Add(Me.btn_Laender)
Me.GroupBox14.Controls.Add(Me.btn_Erloeskkonten)
- Me.GroupBox14.Location = New System.Drawing.Point(20, 153)
+ Me.GroupBox14.Location = New System.Drawing.Point(14, 227)
Me.GroupBox14.Name = "GroupBox14"
Me.GroupBox14.Size = New System.Drawing.Size(841, 123)
Me.GroupBox14.TabIndex = 38
@@ -2115,7 +2158,7 @@ Partial Class usrCntlBH
Me.Label62.AutoSize = True
Me.Label62.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label62.ForeColor = System.Drawing.SystemColors.ControlDarkDark
- Me.Label62.Location = New System.Drawing.Point(17, 133)
+ Me.Label62.Location = New System.Drawing.Point(11, 207)
Me.Label62.Name = "Label62"
Me.Label62.Size = New System.Drawing.Size(145, 17)
Me.Label62.TabIndex = 37
@@ -2123,6 +2166,12 @@ Partial Class usrCntlBH
'
'GroupBox11
'
+ Me.GroupBox11.Controls.Add(Me.cbxPOSBNZerstellen)
+ Me.GroupBox11.Controls.Add(Me.txtPloseAnh_Einarbeitung)
+ Me.GroupBox11.Controls.Add(Me.Label71)
+ Me.GroupBox11.Controls.Add(Me.pbPloseAnh_Proz)
+ Me.GroupBox11.Controls.Add(Me.lblPloseAnh_Proz)
+ Me.GroupBox11.Controls.Add(Me.cbxZBalsSR)
Me.GroupBox11.Controls.Add(Me.Label57)
Me.GroupBox11.Controls.Add(Me.btnDel_)
Me.GroupBox11.Controls.Add(Me.btnWikiStatusmails)
@@ -2147,10 +2196,57 @@ Partial Class usrCntlBH
Me.GroupBox11.Controls.Add(Me.txtZRbis)
Me.GroupBox11.Location = New System.Drawing.Point(14, 30)
Me.GroupBox11.Name = "GroupBox11"
- Me.GroupBox11.Size = New System.Drawing.Size(847, 88)
+ Me.GroupBox11.Size = New System.Drawing.Size(847, 149)
Me.GroupBox11.TabIndex = 36
Me.GroupBox11.TabStop = False
'
+ 'txtPloseAnh_Einarbeitung
+ '
+ Me.txtPloseAnh_Einarbeitung.BackColor = System.Drawing.Color.White
+ Me.txtPloseAnh_Einarbeitung.BorderStyle = System.Windows.Forms.BorderStyle.None
+ Me.txtPloseAnh_Einarbeitung.Location = New System.Drawing.Point(80, 121)
+ Me.txtPloseAnh_Einarbeitung.Name = "txtPloseAnh_Einarbeitung"
+ Me.txtPloseAnh_Einarbeitung.Size = New System.Drawing.Size(106, 13)
+ Me.txtPloseAnh_Einarbeitung.TabIndex = 80
+ '
+ 'Label71
+ '
+ Me.Label71.AutoSize = True
+ Me.Label71.Location = New System.Drawing.Point(13, 121)
+ Me.Label71.Name = "Label71"
+ Me.Label71.Size = New System.Drawing.Size(56, 13)
+ Me.Label71.TabIndex = 77
+ Me.Label71.Text = "Fortschritt:"
+ '
+ 'pbPloseAnh_Proz
+ '
+ Me.pbPloseAnh_Proz.Location = New System.Drawing.Point(16, 92)
+ Me.pbPloseAnh_Proz.Name = "pbPloseAnh_Proz"
+ Me.pbPloseAnh_Proz.Size = New System.Drawing.Size(245, 23)
+ Me.pbPloseAnh_Proz.TabIndex = 78
+ '
+ 'lblPloseAnh_Proz
+ '
+ Me.lblPloseAnh_Proz.Location = New System.Drawing.Point(192, 121)
+ Me.lblPloseAnh_Proz.Name = "lblPloseAnh_Proz"
+ Me.lblPloseAnh_Proz.Size = New System.Drawing.Size(69, 13)
+ Me.lblPloseAnh_Proz.TabIndex = 79
+ Me.lblPloseAnh_Proz.Text = "0%"
+ Me.lblPloseAnh_Proz.TextAlign = System.Drawing.ContentAlignment.TopRight
+ '
+ 'cbxZBalsSR
+ '
+ Me.cbxZBalsSR.AutoSize = True
+ Me.cbxZBalsSR.Checked = True
+ Me.cbxZBalsSR.CheckState = System.Windows.Forms.CheckState.Checked
+ Me.cbxZBalsSR.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.cbxZBalsSR.Location = New System.Drawing.Point(524, 67)
+ Me.cbxZBalsSR.Name = "cbxZBalsSR"
+ Me.cbxZBalsSR.Size = New System.Drawing.Size(177, 17)
+ Me.cbxZBalsSR.TabIndex = 76
+ Me.cbxZBalsSR.Text = "als Sammelrechnung fakturieren"
+ Me.cbxZBalsSR.UseVisualStyleBackColor = True
+ '
'Label57
'
Me.Label57.AutoSize = True
@@ -2519,7 +2615,7 @@ Partial Class usrCntlBH
Me.txtJahr_FIBU._Waehrung = False
Me.txtJahr_FIBU._WaehrungZeichen = True
Me.txtJahr_FIBU.ForeColor = System.Drawing.Color.Black
- Me.txtJahr_FIBU.Location = New System.Drawing.Point(175, 133)
+ Me.txtJahr_FIBU.Location = New System.Drawing.Point(169, 207)
Me.txtJahr_FIBU.MaxLineLength = -1
Me.txtJahr_FIBU.MaxLines_Warning = ""
Me.txtJahr_FIBU.MaxLines_Warning_Label = Nothing
@@ -2528,40 +2624,29 @@ Partial Class usrCntlBH
Me.txtJahr_FIBU.TabIndex = 76
Me.txtJahr_FIBU.Text = "0"
'
- 'Button16
+ 'Button17
'
- Me.Button16.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Center
- Me.Button16.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.Button16.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
- Me.Button16.Image = Global.SDL.My.Resources.Resources.Excel_logo
- Me.Button16.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.Button16.Location = New System.Drawing.Point(6, 81)
- Me.Button16.Name = "Button16"
- Me.Button16.Size = New System.Drawing.Size(121, 23)
- Me.Button16.TabIndex = 44
- Me.Button16.Text = " Excel"
- Me.Button16.UseVisualStyleBackColor = True
+ Me.Button17.BackgroundImage = Global.SDL.My.Resources.Resources.fragezeichen
+ Me.Button17.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.Button17.FlatAppearance.BorderSize = 0
+ Me.Button17.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button17.Location = New System.Drawing.Point(816, 19)
+ Me.Button17.Name = "Button17"
+ Me.Button17.Size = New System.Drawing.Size(25, 20)
+ Me.Button17.TabIndex = 81
+ Me.Button17.UseVisualStyleBackColor = True
'
- 'Label67
+ 'cbxPOSBNZerstellen
'
- Me.Label67.AutoSize = True
- Me.Label67.Location = New System.Drawing.Point(145, 87)
- Me.Label67.Name = "Label67"
- Me.Label67.Size = New System.Drawing.Size(105, 13)
- Me.Label67.TabIndex = 45
- Me.Label67.Text = "Vergleich UID-Syska"
- '
- 'cboFirma_FIBUFilialen
- '
- Me.cboFirma_FIBUFilialen._allowedValuesFreiText = Nothing
- Me.cboFirma_FIBUFilialen._allowFreiText = False
- Me.cboFirma_FIBUFilialen._value = ""
- Me.cboFirma_FIBUFilialen.DropDownWidth = 150
- Me.cboFirma_FIBUFilialen.FormattingEnabled = True
- Me.cboFirma_FIBUFilialen.Location = New System.Drawing.Point(406, 57)
- Me.cboFirma_FIBUFilialen.Name = "cboFirma_FIBUFilialen"
- Me.cboFirma_FIBUFilialen.Size = New System.Drawing.Size(54, 21)
- Me.cboFirma_FIBUFilialen.TabIndex = 43
+ Me.cbxPOSBNZerstellen.AutoSize = True
+ Me.cbxPOSBNZerstellen.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.cbxPOSBNZerstellen.Location = New System.Drawing.Point(524, 90)
+ Me.cbxPOSBNZerstellen.Name = "cbxPOSBNZerstellen"
+ Me.cbxPOSBNZerstellen.Size = New System.Drawing.Size(115, 17)
+ Me.cbxPOSBNZerstellen.TabIndex = 81
+ Me.cbxPOSBNZerstellen.Text = "POS-BNZ erstellen"
+ Me.cbxPOSBNZerstellen.UseVisualStyleBackColor = True
+ Me.cbxPOSBNZerstellen.Visible = False
'
'usrCntlBH
'
@@ -2788,4 +2873,11 @@ Partial Class usrCntlBH
Friend WithEvents cboFirma_FIBUFilialen As VERAG_PROG_ALLGEMEIN.MyComboBox
Friend WithEvents Label67 As Label
Friend WithEvents Button16 As Button
+ Friend WithEvents cbxZBalsSR As CheckBox
+ Friend WithEvents txtPloseAnh_Einarbeitung As TextBox
+ Friend WithEvents Label71 As Label
+ Friend WithEvents pbPloseAnh_Proz As ProgressBar
+ Friend WithEvents lblPloseAnh_Proz As Label
+ Friend WithEvents Button17 As Button
+ Friend WithEvents cbxPOSBNZerstellen As CheckBox
End Class
diff --git a/SDL/buchhaltung/usrCntlBH.vb b/SDL/buchhaltung/usrCntlBH.vb
index 17e1d9a3..929ebe67 100644
--- a/SDL/buchhaltung/usrCntlBH.vb
+++ b/SDL/buchhaltung/usrCntlBH.vb
@@ -1,7 +1,10 @@
Imports System.Globalization
Imports System.Text
+Imports System.Web.UI.WebControls.Expressions
Imports ClosedXML.Excel
+Imports com.sun.xml.internal.rngom
Imports VERAG_PROG_ALLGEMEIN
+Imports VERAG_PROG_ALLGEMEIN.TESTJSON
Public Class usrCntlBH
Dim GrenzeVersicherung = 50000
@@ -67,6 +70,13 @@ Public Class usrCntlBH
Dim isMDM As Boolean = False
If VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_abteilung = "MDM" OrElse VERAG_PROG_ALLGEMEIN.cAllgemein.MITARBEITER.mit_nname = "Breimaier" Then isMDM = True
If isMDM Then
+
+ If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMIN", "SDL") Then
+
+ cbxPOSBNZerstellen.Visible = True
+
+ End If
+
txtnichtabrechneteKunden.Text = SQL.getValueTxtBySql("SELECT count(distinct(kundenNr)) FROM [VERAG].[dbo].[tblMDM_Zinsberechnung] where verrechnet is null", "FMZOLL",,, "0")
If IsNumeric(txtnichtabrechneteKunden.Text) AndAlso CInt(txtnichtabrechneteKunden.Text) > 0 Then
btnDel_.Visible = True
@@ -901,6 +911,7 @@ Public Class usrCntlBH
Else
Dim counter As Integer = 0
+ Dim cnt As Integer = 0
For Each r As DataRow In dt.Rows
@@ -936,6 +947,15 @@ Public Class usrCntlBH
End If
End If
+ txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt.Rows.Count
+ Dim proz As Double = (cnt / dt.Rows.Count) * 100
+ pbPloseAnh_Proz.Value = proz
+ lblPloseAnh_Proz.Text = proz.ToString("N2") & " %"
+ 'GroupBox12.Refresh()
+ My.Application.DoEvents()
+
+ cnt += 1
+
Next
@@ -987,6 +1007,10 @@ Public Class usrCntlBH
End If
+ pbPloseAnh_Proz.Value = 100
+ txtPloseAnh_Einarbeitung.Text = dt.Rows.Count & " / " & dt.Rows.Count
+ lblPloseAnh_Proz.Text = "100.00 %"
+
End If
@@ -1042,7 +1066,7 @@ Public Class usrCntlBH
End Function
- Function gen_RECHNUNG_BySPEDBUCH(KdNr As String, SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, ByRef RK_ID As Integer, ByRef Fusstext As String, ZahlungszielAusDebitor As Integer)
+ Function gen_RECHNUNG_BySPEDBUCH(KdNr As String, SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch, ByRef RK_ID As Integer, ByRef Fusstext As String, ZahlungszielAusDebitor As Integer, sammelrechnung As Boolean, POSBNZ As Boolean)
Try
If KdNr = "" Then Return False
@@ -1055,7 +1079,7 @@ Public Class usrCntlBH
Dim Abfertigungsart As Integer
'TODO. Setzen!
- OffertenNr = 95 : Abfertigungsart = 10 : RG.Anlage_1 = ""
+ OffertenNr = 95 : Abfertigungsart = 10
RG.Firma_ID = 19
@@ -1067,7 +1091,13 @@ Public Class usrCntlBH
RG.Buchungsjahr = cRKSV.getGJ(SPEDBUCH.Abfertigungsdatum, RG.Firma_ID) 'If(Now.Month = 1, Now.Year - 1, Now.Year)
RG.FilialenNr = SPEDBUCH.FilialenNr
RG.Abfertigungsdatum = SPEDBUCH.Abfertigungsdatum
- RG.Sammelrechnung = 0
+
+ If sammelrechnung Then
+ RG.Sammelrechnung = 6
+ Else
+ RG.Sammelrechnung = 0
+ End If
+
RG.BelegartenKz = "AR"
RG.BelegartenNr = 70
RG.BelegartenBez = "Rechnung"
@@ -1180,6 +1210,32 @@ Public Class usrCntlBH
RG.Text = (cFakturierung.przRechnungstextTXT(RG, SPEDBUCH) & vbNewLine & cFakturierung.przRechnungstextZZ(RG)).Trim
+ If POSBNZ Then
+
+ Dim path As String = createZNBReport(dt, KdNr, CDate(SPEDBUCH.Abfertigungsdatum), RG)
+
+ Dim fi As New System.IO.FileInfo(path)
+ Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "ZNB", RG.KundenNrZentrale, CDate(SPEDBUCH.Abfertigungsdatum).ToShortDateString, "", fi.Name & fi.Extension)
+
+ If Not DS.uploadDataToDATENSERVER(path, fi.Name, fi.Extension,,,, True) Then
+ MsgBox("Fehler beim Speichern: Datenserver! :" & RG.Firma_ID)
+ End If
+
+ Dim ANH As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge
+ ANH.dsId = CInt(DS.da_id)
+ ANH.Bezeichnung = "POS-Liste VERZUGSZINSEN " & CDate(SPEDBUCH.Abfertigungsdatum).ToShortDateString & fi.Extension
+ RG.ANHAENGE.Add(ANH)
+
+ If Not ANH.INSERT(RG.RK_ID, False) Then
+ MsgBox("Fehler beim Anlegen des Anhangs für RK_ID " & RG.RK_ID)
+ Else
+ RG.Anlage_1 = "POS-Liste VERZUGSZINSEN"
+ End If
+
+
+ End If
+
+
If RG.SAVE Then
RK_ID = RG.RK_ID
Return True
@@ -1194,6 +1250,54 @@ Public Class usrCntlBH
End Function
+ Private Function createZNBReport(dtZNBList As DataTable, KDNr As Integer, rechnungsdatum As Date, RG As cRechnungsausgang) As String
+
+
+ Dim rpt As New rptPOS_ZNB(RG, RG.SteuerfreierGesamtbetrag + RG.SteuerpflichtigerGesamtbetrag)
+
+ rpt.DataSource = dtZNBList
+
+ rpt.lblRgDatum.Text = rechnungsdatum
+ rpt.txtKunde.Text = KDNr & " " & New VERAG_PROG_ALLGEMEIN.cAdressen(KDNr).FullName
+ rpt.Label2.Visible = False
+ rpt.TextBox1.Visible = False
+ rpt.Label4.Text = rechnungsdatum
+
+ rpt.lblHeader.Text &= " " & RG.Vermerk
+
+ If rpt.DataSource.rows.count = 0 Then Return ""
+
+ Dim AD As New cAdressen(KDNr)
+ Dim sum As Double = 0
+
+ rpt.txtKunde.Text = AD.FullName
+
+ AddHandler rpt.Detail.Format, Sub()
+
+ If Not IsDBNull(rpt.Fields.Item("clmnZinsen").Value) AndAlso Not IsNothing(rpt.Fields.Item("clmnZinsen").Value) AndAlso IsNumeric(rpt.Fields.Item("clmnZinsen").Value) Then
+ sum += CDbl(rpt.Fields.Item("clmnZinsen").Value)
+ End If
+
+
+ End Sub
+
+
+ AddHandler rpt.ReportFooter1.Format, Sub()
+ rpt.txtBruttoGesSum.Text = sum.ToString("N2")
+ End Sub
+
+
+ Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG.AbfertigungsNr & ".pdf", ".pdf", , False)
+ Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
+ rpt.Run(False)
+ p.NeverEmbedFonts = ""
+ p.Export(rpt.Document, tmpPath)
+ rpt.Dispose()
+
+ Return tmpPath
+
+ End Function
+
Function allPos(ByRef RG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, OFFERTE As VERAG_PROG_ALLGEMEIN.cOfferte, LeistungsNr As Integer, NettoBetrag As Double, BruttoBetrag As Double, Optional UstBetrag As Double = 0, Optional leistungsBez As String = "", Optional nachzahlungsID As Integer = -1)
@@ -1238,6 +1342,8 @@ Public Class usrCntlBH
Return False
End Function
+
+
Private Sub Button13_Click_1(sender As Object, e As EventArgs) Handles Button13.Click
Dim frm As New frmZinsnachberechnung("tblMDM_Zinsberechnung", "FMZOLL")
frm.ShowDialog(Me)
@@ -1330,7 +1436,7 @@ Public Class usrCntlBH
If vbYes = MsgBox("Möchten Sie für " & dt_Main.Rows.Count & " Kunden die Zinsbelastung mit Abrechnungsdatum " & CDate(txtZRbis.Text).ToShortDateString & " verrechnen?" & vbNewLine & "Es werden nur Rechnungen erstellt, deren Gesamtbelastung über " & LimitBEtrag & " EUR liegt!", vbYesNoCancel) Then
-
+ Dim cnt As Integer = 0
For Each R In dt_Main.Rows
@@ -1353,18 +1459,31 @@ Public Class usrCntlBH
Dim SPEDBUCH As VERAG_PROG_ALLGEMEIN.cSpeditionsbuch = Nothing
Dim RK_ID As Integer = -1
If Not gen_SPEDBUCH_ByKdNr(R("kundenNr"), SPEDBUCH, CDate(txtZRbis.Text).ToShortDateString, vermerk) Then verarbOK = False
- If Not gen_RECHNUNG_BySPEDBUCH(R("kundenNr"), SPEDBUCH, RK_ID, Fußtext, R("belegZahlungsziel")) Then verarbOK = False
+ If Not gen_RECHNUNG_BySPEDBUCH(R("kundenNr"), SPEDBUCH, RK_ID, Fußtext, R("belegZahlungsziel"), cbxZBalsSR.Checked, cbxPOSBNZerstellen.Checked) Then verarbOK = False
If verarbOK Then
SQL.doSQL("UPDATE [tblMDM_Zinsberechnung] SET [verrechnet]=GETDATE(), RK_ID = " & RK_ID & " WHERE [verrechnet] Is null And kundenNr='" & R("kundenNr") & "' ", "FMZOLL")
End If
+ txtPloseAnh_Einarbeitung.Text = cnt & " / " & dt_Main.Rows.Count
+ Dim proz As Double = (cnt / dt_Main.Rows.Count) * 100
+ pbPloseAnh_Proz.Value = proz
+ lblPloseAnh_Proz.Text = proz.ToString("N2") & " %"
+ 'GroupBox12.Refresh()
+ My.Application.DoEvents()
+
+ cnt += 1
+
Next
txtnichtabrechneteKunden.Text = SQL.getValueTxtBySql("SELECT count(distinct(kundenNr)) FROM [VERAG].[dbo].[tblMDM_Zinsberechnung] where verrechnet is null", "FMZOLL",,, "0")
End If
+
+ pbPloseAnh_Proz.Value = 100
+ txtPloseAnh_Einarbeitung.Text = dt_Main.Rows.Count & " / " & dt_Main.Rows.Count
+ lblPloseAnh_Proz.Text = "100.00 %"
End If
@@ -2077,5 +2196,9 @@ Public Class usrCntlBH
End If
+ End Sub
+
+ Private Sub Button18_Click(sender As Object, e As EventArgs)
+
End Sub
End Class
diff --git a/SDL/frmEssensbestellungenAdministration.vb b/SDL/frmEssensbestellungenAdministration.vb
index 1f613c17..589d5d69 100644
--- a/SDL/frmEssensbestellungenAdministration.vb
+++ b/SDL/frmEssensbestellungenAdministration.vb
@@ -45,7 +45,7 @@ Public Class frmEssensbestellungenAdministration
Dim SQLString As String = "SELECT [eb_mitid] , [eb_mitname] ,[eb_firma] , [eb_kw] , [eb_gebaeude],[eb_abteilung],[eb_montag],[eb_dienstag],[eb_mittwoch],
- [eb_donnerstag] ,[eb_freitag],[eb_datum],[eb_preis], [eb_anmerkung],[eb_storniert],[eb_storniert_am],[eb_abgerechnet],[eb_abgerechnet_am], [eb_gesendet], [eb_gesendet_am]
+ [eb_donnerstag] ,[eb_freitag],[eb_datum],[eb_preis], [eb_anmerkung],[eb_storniert],[eb_storniert_am],[eb_abgerechnet],[eb_abgerechnet_am], [eb_gesendet], cast([eb_gesendet_am] as Date) as eb_gesendet_am
FROM
[tblEssensbestellungen] WHERE 1=1 "
@@ -328,6 +328,11 @@ Public Class frmEssensbestellungenAdministration
End If
+ dgvBestellungen.GetOrder()
+ dgvBestellungen.LOAD()
+ dgvBestellungen.SetOrder()
+
+
End Select
@@ -348,6 +353,11 @@ Public Class frmEssensbestellungenAdministration
End If
+ dgvBestellungen.GetOrder()
+ dgvBestellungen.LOAD()
+ dgvBestellungen.SetOrder()
+
+
End Select
@@ -355,7 +365,7 @@ Public Class frmEssensbestellungenAdministration
Select Case dgvBestellungen.SelectedRows.Count
Case 1
If vbYes = MsgBox("Möchten Sie die Essensbestellung '" & dgvBestellungen.SelectedRows(0).Cells("eb_kw").Value & " von Mitarbeiter " & dgvBestellungen.SelectedRows(0).Cells("eb_mitname").Value & " abschicken?", vbYesNoCancel) Then
- bestellungenSenden(True)
+ bestellungenSenden(True, "SEL")
generateEMailforHighway(sender, e)
Else
Exit Sub
@@ -363,7 +373,7 @@ Public Class frmEssensbestellungenAdministration
Case Else
If vbYes = MsgBox("Möchten Sie diese " & dgvBestellungen.SelectedRows.Count & " Essensbestellungen abschicken", vbYesNoCancel) Then
- bestellungenSenden(True)
+ bestellungenSenden(True, "ALL")
generateEMailforHighway(sender, e)
Else
Exit Sub
@@ -387,6 +397,7 @@ Public Class frmEssensbestellungenAdministration
bestellung.eb_storniert = True
If stornieren Then
bestellung.eb_storniert_am = Now
+ bestellung.eb_storniertVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
Else
bestellung.eb_storniert_am = DBNull.Value
@@ -399,10 +410,6 @@ Public Class frmEssensbestellungenAdministration
Next
- dgvBestellungen.GetOrder()
- dgvBestellungen.LOAD()
- dgvBestellungen.SetOrder()
-
End Sub
Private Sub bestellungenAbrechnen(abrechnen As Boolean)
@@ -415,6 +422,7 @@ Public Class frmEssensbestellungenAdministration
bestellung.eb_abgerechnet = abrechnen
If abrechnen Then
bestellung.eb_abgerechnet_am = Now
+ bestellung.eb_abgerechnetVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
Else
bestellung.eb_abgerechnet_am = DBNull.Value
@@ -425,14 +433,9 @@ Public Class frmEssensbestellungenAdministration
Next
-
- dgvBestellungen.GetOrder()
- dgvBestellungen.LOAD()
- dgvBestellungen.SetOrder()
-
End Sub
- Private Sub bestellungenSenden(senden As Boolean)
+ Private Sub bestellungenSenden(senden As Boolean, anmerkung As String)
For Each row As DataGridViewRow In dgvBestellungen.SelectedRows
@@ -442,6 +445,8 @@ Public Class frmEssensbestellungenAdministration
bestellung.eb_gesendet = senden
If senden Then
bestellung.eb_gesendet_am = Now
+ bestellung.eb_gesendetVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME & " " & anmerkung
+ If IsDBNull(bestellung.eb_gesendetFirst_am) OrElse bestellung.eb_gesendetFirst_am Is Nothing Then bestellung.eb_gesendetFirst_am = bestellung.eb_gesendet_am
Else
bestellung.eb_gesendet_am = DBNull.Value
@@ -451,13 +456,7 @@ Public Class frmEssensbestellungenAdministration
Next
- If dgvBestellungen.RowCount > 0 Then
- dgvBestellungen.GetOrder()
- dgvBestellungen.LOAD()
- dgvBestellungen.SetOrder()
-
- End If
End Sub
@@ -500,6 +499,8 @@ Public Class frmEssensbestellungenAdministration
bestellung.eb_gesendet = True
bestellung.eb_gesendet_am = Now
+ If IsDBNull(bestellung.eb_gesendetFirst_am) OrElse bestellung.eb_gesendetFirst_am Is Nothing Then bestellung.eb_gesendetFirst_am = bestellung.eb_gesendet_am
+ bestellung.eb_gesendetVon = VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME
bestellung.SAVE()
End If
Next
@@ -543,6 +544,14 @@ Public Class frmEssensbestellungenAdministration
Me.Cursor = Cursors.Default
+ If dgvBestellungen.RowCount > 0 Then
+
+ dgvBestellungen.GetOrder()
+ dgvBestellungen.LOAD()
+ dgvBestellungen.SetOrder()
+
+ End If
+
End Sub
diff --git a/SDL/kassenbuch/frmBelegNeu.Designer.vb b/SDL/kassenbuch/frmBelegNeu.Designer.vb
index 22caeabb..79dcd172 100644
--- a/SDL/kassenbuch/frmBelegNeu.Designer.vb
+++ b/SDL/kassenbuch/frmBelegNeu.Designer.vb
@@ -147,6 +147,7 @@ Partial Class frmBelegNeu
Me.FlowLayoutPanel2 = New System.Windows.Forms.FlowLayoutPanel()
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components)
+ Me.lblTSEisOffline = New System.Windows.Forms.Label()
CType(Me.dgvBelegPos, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnl.SuspendLayout()
Me.pnlData.SuspendLayout()
@@ -648,6 +649,7 @@ Partial Class frmBelegNeu
'pnlData
'
Me.pnlData.BackColor = System.Drawing.Color.FromArgb(CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer), CType(CType(244, Byte), Integer))
+ Me.pnlData.Controls.Add(Me.lblTSEisOffline)
Me.pnlData.Controls.Add(Me.cboBuchungsoforterzeugen)
Me.pnlData.Controls.Add(Me.lblErr_Fahrer)
Me.pnlData.Controls.Add(Me.lblErr_Pass)
@@ -1256,7 +1258,7 @@ Partial Class frmBelegNeu
Me.Button4.Padding = New System.Windows.Forms.Padding(0, 0, 5, 0)
Me.Button4.Size = New System.Drawing.Size(70, 21)
Me.Button4.TabIndex = 49
- Me.Button4.Text = "TEST FT"
+ Me.Button4.Text = "Fiskaltrust"
Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleRight
Me.Button4.UseVisualStyleBackColor = True
Me.Button4.Visible = False
@@ -1782,7 +1784,21 @@ Partial Class frmBelegNeu
'cm_FT
'
Me.cm_FT.Name = "ContextMenuStrip1"
- Me.cm_FT.Size = New System.Drawing.Size(181, 26)
+ Me.cm_FT.Size = New System.Drawing.Size(61, 4)
+ '
+ 'lblTSEisOffline
+ '
+ Me.lblTSEisOffline.AutoSize = True
+ Me.lblTSEisOffline.BackColor = System.Drawing.Color.Red
+ Me.lblTSEisOffline.Cursor = System.Windows.Forms.Cursors.Default
+ Me.lblTSEisOffline.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblTSEisOffline.ForeColor = System.Drawing.Color.White
+ Me.lblTSEisOffline.Location = New System.Drawing.Point(154, 35)
+ Me.lblTSEisOffline.Name = "lblTSEisOffline"
+ Me.lblTSEisOffline.Size = New System.Drawing.Size(125, 20)
+ Me.lblTSEisOffline.TabIndex = 50
+ Me.lblTSEisOffline.Text = "TSE ist Offline"
+ Me.lblTSEisOffline.Visible = False
'
'frmBelegNeu
'
@@ -1935,4 +1951,5 @@ Partial Class frmBelegNeu
Friend WithEvents cboBuchungsoforterzeugen As CheckBox
Friend WithEvents Button4 As Button
Friend WithEvents cm_FT As ContextMenuStrip
+ Friend WithEvents lblTSEisOffline As Label
End Class
diff --git a/SDL/kassenbuch/frmBelegNeu.vb b/SDL/kassenbuch/frmBelegNeu.vb
index 7c9f8cf0..b9551008 100644
--- a/SDL/kassenbuch/frmBelegNeu.vb
+++ b/SDL/kassenbuch/frmBelegNeu.vb
@@ -45,6 +45,7 @@ Public Class frmBelegNeu
Public aktFiliale As Integer = 0
Public aktAbfertigungsNr As Integer = 0
+ Dim tseIsOnline As Boolean = False
Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal, EA As String)
@@ -231,9 +232,8 @@ Public Class frmBelegNeu
' Case "WAI" : cboFiliale.changeItem(5103)
' End Select
- If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("ADMINFUNCTIONS", "SDL") Then
- Button4.Visible = True
- End If
+
+ Button4.Visible = checkFiskaltrust()
If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
cboKassen.Enabled = True
@@ -420,6 +420,7 @@ Public Class frmBelegNeu
End If
If PERSONAL.Niederlassung = "SBG" Then where = "Preislisten_visibleSBG = 1"
If PERSONAL.Niederlassung = "WAI" Then where = "Preislisten_visibleWAI = 1"
+ If PERSONAL.Niederlassung = "KLP" Then where = "Preislisten_visibleWAI = 1"
If PERSONAL.Niederlassung = "NKD" Then where = "Preislisten_visibleNKD = 1"
If PERSONAL.Niederlassung = "IME" Then
where = "Preislisten_visibleIMEX = 1"
@@ -1703,47 +1704,59 @@ Public Class frmBelegNeu
Dim answer = ""
Dim verarbeitet As Boolean = False
- If KASSE.rksv_FT_RestServiceURL <> "" Then
- Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS)
- 'result.Wait()
- verarbeitet = result
- Else
- verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
- End If
+ Dim isFiskaltrust = checkFiskaltrust()
- If Not verarbeitet Then
- If Not TESTBUCHUNG Then
-
- KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO))
- cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+ If isFiskaltrust Then
+ Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF)
+ verarbeitet = result
+ Else
+ verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
End If
- Dim Errmsg = "Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer
- MsgBox(Errmsg, MsgBoxStyle.Critical)
- VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name)
- Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
+
+ If Not verarbeitet Then
+
+ If Not isFiskaltrust Then
+
+ If Not TESTBUCHUNG Then
+
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, If(EA = "E", summeBRUTTO * -1, summeBRUTTO))
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+
+ End If
+ Dim Errmsg = "Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer
+ MsgBox(Errmsg, MsgBoxStyle.Critical)
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(Errmsg, "", System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ Me.Cursor = Cursors.Default : warnClose = False : Me.Close() : Exit Sub
+ Else
+ BELEG.FT_MissingSignature = True
+ End If
+
+ If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+
+
+ End If
+
+
End If
- KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
-
- End If
- 'If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, 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, summe * -1)
- ' cRKSV.DELETE(BELEG)
- ' 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.")
+ 'If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, 0, 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, summe * -1)
+ ' cRKSV.DELETE(BELEG)
+ ' 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.")
- ' Return False
- 'End If
- 'KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+ ' Return False
+ 'End If
+ 'KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
- ' Dim TEST_KASSE = (BELEG.Niederlassung = "WAI")
- If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV DEUTSCHLAND gilt
+ ' Dim TEST_KASSE = (BELEG.Niederlassung = "WAI")
+ If KASSE.rksvDE_aktiv Then ' WENN für die Kasse die RKSV DEUTSCHLAND gilt
Dim answer = ""
If Not cRKSV_DE.insertRKSV_DE(PERSONAL, BELEG, KASSE, RKSV_Beleg_Id, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), QR_CodeString, LastJWS, TESTBUCHUNG, answer) Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
@@ -1870,6 +1883,21 @@ Public Class frmBelegNeu
+ End Function
+
+ Private Function checkFiskaltrust()
+
+ If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then
+
+
+ Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
+ Return client_chilkat.isFiskaltrust()
+
+ Else
+ Return False
+
+ End If
+
End Function
Private Sub openZahlungsbeleg(daid As Integer)
@@ -1893,74 +1921,29 @@ Public Class frmBelegNeu
Private Sub cboKassen_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cboKassen.SelectedIndexChanged
KASSE.LOAD(cboKassen._value)
- Button4.Visible = KASSE.rksv_FT_RestServiceURL <> ""
+
+ If KASSE IsNot Nothing AndAlso KASSE.rksv_aktiv AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing Then
+
+ Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
+ If client_chilkat.isFiskaltrust() Then
+ Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
+
+ If result IsNot Nothing AndAlso result.Contains("VERBINDUNG OK") Then
+ tseIsOnline = True
+ End If
+
+ lblTSEisOffline.Visible = Not tseIsOnline
+
+ End If
+ End If
+
End Sub
Private Sub Button4_ClickAsync(sender As Object, e As EventArgs) Handles Button4.Click
- If Not cm_FT.Items.ContainsKey("null") Then
- Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- cm_FT.Items.Add(plose)
- AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
- End If
-
- If Not cm_FT.Items.ContainsKey("monthly") Then
- Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(rmc)
- End If
-
- If Not cm_FT.Items.ContainsKey("daily") Then
- Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(rmc)
- End If
-
- If Not cm_FT.Items.ContainsKey("yearly") Then
- Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(uta)
- End If
-
- If Not cm_FT.Items.ContainsKey("bar") Then
- Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(ids)
- End If
-
- If Not cm_FT.Items.ContainsKey("storno") Then
- Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(ids)
- End If
-
- If Not cm_FT.Items.ContainsKey("test") Then
- Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "test", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(ids)
- End If
-
- If Not cm_FT.Items.ContainsKey("version") Then
- Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(ids)
- End If
-
- If Not cm_FT.Items.ContainsKey("signatures") Then
- Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(ids)
- End If
-
- If Not cm_FT.Items.ContainsKey("action") Then
- Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
- AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
- cm_FT.Items.Add(ids)
- End If
-
- If Not cm_FT.Items.ContainsKey("queueitem") Then
- Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ If Not cm_FT.Items.ContainsKey("ft_neusignierung") AndAlso BELEG IsNot Nothing AndAlso (BELEG.gebucht Or BELEG.gebuchtStorno) AndAlso BELEG.FT_setMissingSignatureFailed Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Beleg neu signieren", .Name = "ft_neusignierung", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
cm_FT.Items.Add(ids)
End If
@@ -1979,125 +1962,67 @@ Public Class frmBelegNeu
KASSE.LOAD(cboKassen._value)
- 'Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
- If item.Name = "null" Then
- 'beide
- 'Dim result As String = Await client.SignNullReceiptAsync(KASSE.rksv_id)
+ If item.Name = "ft_neusignierung" Then
- Dim result As String = client_chilkat.SignNullReceipt(KASSE.rksv_id)
+ If BELEG IsNot Nothing Then
+ If vbYes = MsgBox("Möchten den nicht signierten Beleg " & BELEG.BelegNr & " an die TSE schicken?", vbYesNoCancel) Then
+
+ Dim result As Boolean = False
+
+ If BELEG.gebucht Or BELEG.gebuchtStorno Then
+
+ Dim summeBRUTTO As Double = BELEG.rksv_umsatz
+ Dim QR_CodeString As String = ""
+ Dim LastJWS As String = ""
+ Dim EA As String = ""
+ Dim kindOfReceiptCase As String = ""
+
+ Select Case BELEG.Beleg_TYP
+ Case "0"
+ Return False 'null Belege nicht senden!
+ Case "E" 'Eingang/Ausgang
+ If BELEG.Belegart = "1" Then
+ EA = "E"
+ Else
+ EA = "A"
+ End If
+ Case "L"
+ If BELEG.Belegart = "1" Then
+ EA = "E"
+ Else
+ EA = "A"
+ End If
+
+ Case Else
+ If BELEG.Belegart = "1" Then
+ EA = "E"
+ Else
+ EA = "A"
+ End If
+ End Select
- If result <> "" Then
+ result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, "", "", tseIsOnline) 'receiptCase leer und Reference leer!!!!!
- MsgBox(client_chilkat.PrettyPrintJson(result))
+ If result Then
+ BELEG.FT_setMissingSignatureFailed = False
+ BELEG.SAVE()
+ MsgBox("Beleg erfolgreich gesendet!")
+ End If
- End If
+ End If
- ElseIf item.Name = "test" Then
- 'beide
- 'Dim result As String = Await client.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
- Dim result As String = client_chilkat.Echo(KASSE.rksv_bez & " " & KASSE.rksv_FT_Country & " - ")
-
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
-
- End If
-
-
- ElseIf item.Name = "storno" Then
- 'beide
- 'Dim result As String = Await client.CancelReceiptAsync_test("-1", 100, "Cash", KASSE.rksv_id)
- Dim result As String = client_chilkat.ChancelReceipt_test("-1", KASSE.rksv_id)
-
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
-
- End If
-
- ElseIf item.Name = "bar" Then
- 'beide
- 'Dim result As String = Await client.SignReceiptAsync_test(KASSE.rksv_id)
- Dim result As String = client_chilkat.SignReceipt_test(KASSE.rksv_id)
-
- If result <> "" Then
-
- If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then
- Dim QR_CodeString As String = ""
- client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False)
- End If
- Else
- Return False
- End If
-
-
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
-
- End If
-
- ElseIf item.Name = "monthly" Then
- 'beide
- 'Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
- Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name)
-
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
-
- End If
-
- ElseIf item.Name = "daily" Then
- 'Nur DE
- If KASSE.rksv_FT_Country = "DE" Then
- 'Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
- Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name)
-
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
+ If result Then
+ init()
+ End If
End If
- Else
- MsgBox("nicht für AT-Kassen möglich!")
- End If
-
-
- ElseIf item.Name = "yearly" Then
-
- ' Dim result As String = Await client.SignClosinglReceiptAsync(item.Name, KASSE.rksv_id)
- Dim result As String = client_chilkat.SignClosingReceipt(item.Name, KASSE.rksv_id, item.Name)
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
End If
- ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem") Then
-
- 'Dim result As String = Await client.Journal(2)
-
- Dim result As String = ""
- Select Case item.Name
- Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation)
- Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal)
- Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal)
- Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal)
- End Select
-
- If result <> "" Then
-
- MsgBox(client_chilkat.PrettyPrintJson(result))
-
- End If
-
-
-
End If
diff --git a/SDL/kassenbuch/frmFremdbeleg.vb b/SDL/kassenbuch/frmFremdbeleg.vb
index 265e444a..68f2b1e7 100644
--- a/SDL/kassenbuch/frmFremdbeleg.vb
+++ b/SDL/kassenbuch/frmFremdbeleg.vb
@@ -139,7 +139,7 @@ Public Class frmFremdbeleg
Else
If cRKSV.isforbiddenDate Then
- MsgBox("Die Kasse wir am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte veruchen Sie den Vorgang nach Mitternacht erneut.")
+ MsgBox("Die Kasse wir am Monatsende abgeschlossen. Es dürfen keine weiteren Belege erstellt werden. Bitte versuchen Sie den Vorgang nach Mitternacht erneut.")
Exit Sub
End If
@@ -224,55 +224,83 @@ Public Class frmFremdbeleg
End If
Dim answer = ""
+
+ Dim isFiskaltrust = False
+
+ If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then
+ Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
+ isFiskaltrust = client_chilkat.isFiskaltrust()
+ End If
+
+
If KASSE.rksv_aktiv Then
- 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, BELEG.rksv_umsatz * -1)
- cRKSV.DELETE(BELEG, KASSE.rksv_firma)
- End If
- MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
- ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
- 'MsgBox("Programmfehler bei der digitalen Signatur.")
- Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
- End If
- End If
- If KASSE.rksvDE_aktiv Then
- 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, BELEG.rksv_umsatz * -1)
- cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+ Dim verarbeitet As Boolean = False
+
+ If isFiskaltrust Then
+ Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, IIf(Art = 1, ReceiptCaseIntern.EINGANG, ReceiptCaseIntern.AUSGANG))
+ 'result.Wait()
+ verarbeitet = result
+ Else
+ verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
+ End If
+
+
+ If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
+
+ If Not isFiskaltrust Then
+
+ If Not TESTBUCHUNG Then
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, BELEG.rksv_umsatz * -1)
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+ End If
+ MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
+ ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
+ 'MsgBox("Programmfehler bei der digitalen Signatur.")
+ Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
+ Else
+ BELEG.FT_MissingSignature = True 'nachträgliche Signierung, Beleg NICHT löschen!!
+ End If
+
End If
- MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
- ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
- 'MsgBox("Programmfehler bei der digitalen Signatur.")
- Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
End If
- 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
- If KASSE.rksv_KassaGuid = "KASSE_01" Then
- BELEG.rksv_jws = Nothing
- BELEG.rksv_qr = Nothing
+
+ If KASSE.rksvDE_aktiv Then
+ 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, BELEG.rksv_umsatz * -1)
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
+ End If
+ MsgBox("Programmfehler bei der digitalen Signatur." & vbNewLine & vbNewLine & answer, MsgBoxStyle.Critical)
+ ' BELEG = cRKSV.STORNO(BELEG, "Programmfehler")
+ 'MsgBox("Programmfehler bei der digitalen Signatur.")
+ Me.Cursor = Cursors.Default : Me.Close() : Exit Sub
+ End If
+ 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+ If KASSE.rksv_KassaGuid = "KASSE_01" Then
+ BELEG.rksv_jws = Nothing
+ BELEG.rksv_qr = Nothing
+ End If
+ 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
End If
- 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
+
+
+ If Not isFiskaltrust Then KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
+
+ '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.SAVE()
+
+ If cbxBelegDrucken.Checked Then cRKSV.printFremdBeleg(BELEG, KASSE, PERSONAL, KBEntry, KBEntryGB, cboPrinter.SelectedItem.ToString)
+
+ Me.Cursor = Cursors.Default
End If
-
-
- KASSE.SET_LAST_QR_JWS(LastJWS, QR_CodeString)
-
- '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.SAVE()
-
- If cbxBelegDrucken.Checked Then cRKSV.printFremdBeleg(BELEG, KASSE, PERSONAL, KBEntry, KBEntryGB, cboPrinter.SelectedItem.ToString)
-
- Me.Cursor = Cursors.Default
-
- End If
- Me.Close()
+ Me.Close()
Catch ex As Exception
Me.Cursor = Cursors.Default
MsgBox("Allgemeiner Programmfehler - Belegerfassung wird geschlossen!")
diff --git a/SDL/kassenbuch/frmKassenbuch.Designer.vb b/SDL/kassenbuch/frmKassenbuch.Designer.vb
index eb297dcd..1a54abd4 100644
--- a/SDL/kassenbuch/frmKassenbuch.Designer.vb
+++ b/SDL/kassenbuch/frmKassenbuch.Designer.vb
@@ -66,6 +66,23 @@ Partial Class frmKassenbuch
Me.Label14 = New System.Windows.Forms.Label()
Me.Label13 = New System.Windows.Forms.Label()
Me.pnlMain = New System.Windows.Forms.Panel()
+ Me.pbInitialStart = New System.Windows.Forms.PictureBox()
+ Me.lblInitStart = New System.Windows.Forms.Label()
+ Me.lblFiskaltrustHeader = New System.Windows.Forms.Label()
+ Me.picTSEOnline = New System.Windows.Forms.PictureBox()
+ Me.lblTSEOnline = New System.Windows.Forms.Label()
+ Me.picNULLbeleg = New System.Windows.Forms.PictureBox()
+ Me.lblNullBeleg = New System.Windows.Forms.Label()
+ Me.lblJahres = New System.Windows.Forms.Label()
+ Me.lblMonats = New System.Windows.Forms.Label()
+ Me.lblTages = New System.Windows.Forms.Label()
+ Me.picJahres = New System.Windows.Forms.PictureBox()
+ Me.picMonats = New System.Windows.Forms.PictureBox()
+ Me.picTages = New System.Windows.Forms.PictureBox()
+ Me.lblWarning = New System.Windows.Forms.Label()
+ Me.Button11 = New System.Windows.Forms.Button()
+ Me.Button17 = New System.Windows.Forms.Button()
+ Me.lbldailyCashboxClosing = New System.Windows.Forms.Label()
Me.Button10 = New System.Windows.Forms.Button()
Me.btnBelegGSKunde = New System.Windows.Forms.Button()
Me.pnl = New System.Windows.Forms.Panel()
@@ -79,6 +96,7 @@ Partial Class frmKassenbuch
Me.btnBelegLeihgeld = New System.Windows.Forms.Button()
Me.UsrCntlTestsystem1 = New VERAG_PROG_ALLGEMEIN.usrCntlTestsystem()
Me.Button1 = New System.Windows.Forms.Button()
+ Me.cm_FT = New System.Windows.Forms.ContextMenuStrip(Me.components)
CType(Me.DataGridView1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.DataGridView2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnlTop.SuspendLayout()
@@ -86,6 +104,12 @@ Partial Class frmKassenbuch
Me.pnlSuche.SuspendLayout()
Me.pnlSearch.SuspendLayout()
Me.pnlMain.SuspendLayout()
+ CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.picJahres, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.picMonats, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.picTages, System.ComponentModel.ISupportInitialize).BeginInit()
Me.pnl.SuspendLayout()
Me.SuspendLayout()
'
@@ -130,7 +154,7 @@ Partial Class frmKassenbuch
Me.Label5.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label5.ForeColor = System.Drawing.Color.White
- Me.Label5.Location = New System.Drawing.Point(603, 31)
+ Me.Label5.Location = New System.Drawing.Point(613, 31)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(151, 20)
Me.Label5.TabIndex = 1
@@ -184,7 +208,7 @@ Partial Class frmKassenbuch
Me.DataGridView2.ReadOnly = True
Me.DataGridView2.RowHeadersVisible = False
Me.DataGridView2.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect
- Me.DataGridView2.Size = New System.Drawing.Size(766, 145)
+ Me.DataGridView2.Size = New System.Drawing.Size(776, 158)
Me.DataGridView2.TabIndex = 5
'
'datVon
@@ -307,7 +331,7 @@ Partial Class frmKassenbuch
Me.Label9.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
Me.Label9.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label9.ForeColor = System.Drawing.Color.White
- Me.Label9.Location = New System.Drawing.Point(451, 9)
+ Me.Label9.Location = New System.Drawing.Point(461, 9)
Me.Label9.Name = "Label9"
Me.Label9.Size = New System.Drawing.Size(305, 20)
Me.Label9.TabIndex = 9
@@ -419,7 +443,7 @@ Partial Class frmKassenbuch
Me.Button5.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Button5.ForeColor = System.Drawing.Color.Black
Me.Button5.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.Button5.Location = New System.Drawing.Point(458, 36)
+ Me.Button5.Location = New System.Drawing.Point(394, 36)
Me.Button5.Name = "Button5"
Me.Button5.Size = New System.Drawing.Size(184, 42)
Me.Button5.TabIndex = 19
@@ -477,7 +501,7 @@ Partial Class frmKassenbuch
Me.btnStorno.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.btnStorno.ForeColor = System.Drawing.Color.Black
Me.btnStorno.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.btnStorno.Location = New System.Drawing.Point(458, 84)
+ Me.btnStorno.Location = New System.Drawing.Point(394, 84)
Me.btnStorno.Name = "btnStorno"
Me.btnStorno.Size = New System.Drawing.Size(184, 42)
Me.btnStorno.TabIndex = 420
@@ -498,7 +522,7 @@ Partial Class frmKassenbuch
Me.pnlTop.Dock = System.Windows.Forms.DockStyle.Top
Me.pnlTop.Location = New System.Drawing.Point(0, 0)
Me.pnlTop.Name = "pnlTop"
- Me.pnlTop.Size = New System.Drawing.Size(768, 60)
+ Me.pnlTop.Size = New System.Drawing.Size(778, 60)
Me.pnlTop.TabIndex = 421
'
'Label15
@@ -526,7 +550,7 @@ Partial Class frmKassenbuch
'
Me.Label7.AutoSize = True
Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.Label7.Location = New System.Drawing.Point(455, 20)
+ Me.Label7.Location = New System.Drawing.Point(391, 20)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(58, 13)
Me.Label7.TabIndex = 422
@@ -542,9 +566,9 @@ Partial Class frmKassenbuch
Me.pnlSuche.Controls.Add(Me.Label8)
Me.pnlSuche.Controls.Add(Me.DataGridView1)
Me.pnlSuche.Dock = System.Windows.Forms.DockStyle.Fill
- Me.pnlSuche.Location = New System.Drawing.Point(0, 470)
+ Me.pnlSuche.Location = New System.Drawing.Point(0, 493)
Me.pnlSuche.Name = "pnlSuche"
- Me.pnlSuche.Size = New System.Drawing.Size(768, 205)
+ Me.pnlSuche.Size = New System.Drawing.Size(778, 218)
Me.pnlSuche.TabIndex = 423
'
'pnlSearch
@@ -566,7 +590,7 @@ Partial Class frmKassenbuch
Me.pnlSearch.Dock = System.Windows.Forms.DockStyle.Top
Me.pnlSearch.Location = New System.Drawing.Point(0, 0)
Me.pnlSearch.Name = "pnlSearch"
- Me.pnlSearch.Size = New System.Drawing.Size(766, 58)
+ Me.pnlSearch.Size = New System.Drawing.Size(776, 58)
Me.pnlSearch.TabIndex = 420
'
'btnExcel
@@ -602,6 +626,23 @@ Partial Class frmKassenbuch
'
'pnlMain
'
+ Me.pnlMain.Controls.Add(Me.pbInitialStart)
+ Me.pnlMain.Controls.Add(Me.lblInitStart)
+ Me.pnlMain.Controls.Add(Me.lblFiskaltrustHeader)
+ Me.pnlMain.Controls.Add(Me.picTSEOnline)
+ Me.pnlMain.Controls.Add(Me.lblTSEOnline)
+ Me.pnlMain.Controls.Add(Me.picNULLbeleg)
+ Me.pnlMain.Controls.Add(Me.lblNullBeleg)
+ Me.pnlMain.Controls.Add(Me.lblJahres)
+ Me.pnlMain.Controls.Add(Me.lblMonats)
+ Me.pnlMain.Controls.Add(Me.lblTages)
+ Me.pnlMain.Controls.Add(Me.picJahres)
+ Me.pnlMain.Controls.Add(Me.picMonats)
+ Me.pnlMain.Controls.Add(Me.picTages)
+ Me.pnlMain.Controls.Add(Me.lblWarning)
+ Me.pnlMain.Controls.Add(Me.Button11)
+ Me.pnlMain.Controls.Add(Me.Button17)
+ Me.pnlMain.Controls.Add(Me.lbldailyCashboxClosing)
Me.pnlMain.Controls.Add(Me.Button10)
Me.pnlMain.Controls.Add(Me.btnBelegGSKunde)
Me.pnlMain.Controls.Add(Me.pnl)
@@ -624,9 +665,204 @@ Partial Class frmKassenbuch
Me.pnlMain.Dock = System.Windows.Forms.DockStyle.Top
Me.pnlMain.Location = New System.Drawing.Point(0, 60)
Me.pnlMain.Name = "pnlMain"
- Me.pnlMain.Size = New System.Drawing.Size(768, 410)
+ Me.pnlMain.Size = New System.Drawing.Size(778, 433)
Me.pnlMain.TabIndex = 425
'
+ 'pbInitialStart
+ '
+ Me.pbInitialStart.BackgroundImage = Global.SDL.My.Resources.Resources.ok
+ Me.pbInitialStart.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.pbInitialStart.Location = New System.Drawing.Point(614, 67)
+ Me.pbInitialStart.Name = "pbInitialStart"
+ Me.pbInitialStart.Size = New System.Drawing.Size(27, 20)
+ Me.pbInitialStart.TabIndex = 452
+ Me.pbInitialStart.TabStop = False
+ Me.pbInitialStart.Visible = False
+ '
+ 'lblInitStart
+ '
+ Me.lblInitStart.AutoSize = True
+ Me.lblInitStart.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblInitStart.ForeColor = System.Drawing.Color.Black
+ Me.lblInitStart.Location = New System.Drawing.Point(655, 71)
+ Me.lblInitStart.Name = "lblInitStart"
+ Me.lblInitStart.Size = New System.Drawing.Size(70, 16)
+ Me.lblInitStart.TabIndex = 451
+ Me.lblInitStart.Text = "Initial Start "
+ Me.lblInitStart.Visible = False
+ '
+ 'lblFiskaltrustHeader
+ '
+ Me.lblFiskaltrustHeader.AutoSize = True
+ Me.lblFiskaltrustHeader.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblFiskaltrustHeader.Location = New System.Drawing.Point(611, 20)
+ Me.lblFiskaltrustHeader.Name = "lblFiskaltrustHeader"
+ Me.lblFiskaltrustHeader.Size = New System.Drawing.Size(65, 13)
+ Me.lblFiskaltrustHeader.TabIndex = 450
+ Me.lblFiskaltrustHeader.Text = "Fiskaltrust"
+ '
+ 'picTSEOnline
+ '
+ Me.picTSEOnline.BackgroundImage = Global.SDL.My.Resources.Resources.ok
+ Me.picTSEOnline.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.picTSEOnline.Location = New System.Drawing.Point(614, 42)
+ Me.picTSEOnline.Name = "picTSEOnline"
+ Me.picTSEOnline.Size = New System.Drawing.Size(27, 20)
+ Me.picTSEOnline.TabIndex = 449
+ Me.picTSEOnline.TabStop = False
+ Me.picTSEOnline.Visible = False
+ '
+ 'lblTSEOnline
+ '
+ Me.lblTSEOnline.AutoSize = True
+ Me.lblTSEOnline.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblTSEOnline.ForeColor = System.Drawing.Color.Black
+ Me.lblTSEOnline.Location = New System.Drawing.Point(655, 46)
+ Me.lblTSEOnline.Name = "lblTSEOnline"
+ Me.lblTSEOnline.Size = New System.Drawing.Size(75, 16)
+ Me.lblTSEOnline.TabIndex = 448
+ Me.lblTSEOnline.Text = "TSE Online"
+ Me.lblTSEOnline.Visible = False
+ '
+ 'picNULLbeleg
+ '
+ Me.picNULLbeleg.BackgroundImage = Global.SDL.My.Resources.Resources.ok
+ Me.picNULLbeleg.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.picNULLbeleg.Location = New System.Drawing.Point(614, 93)
+ Me.picNULLbeleg.Name = "picNULLbeleg"
+ Me.picNULLbeleg.Size = New System.Drawing.Size(27, 20)
+ Me.picNULLbeleg.TabIndex = 447
+ Me.picNULLbeleg.TabStop = False
+ Me.picNULLbeleg.Visible = False
+ '
+ 'lblNullBeleg
+ '
+ Me.lblNullBeleg.AutoSize = True
+ Me.lblNullBeleg.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblNullBeleg.ForeColor = System.Drawing.Color.Black
+ Me.lblNullBeleg.Location = New System.Drawing.Point(655, 97)
+ Me.lblNullBeleg.Name = "lblNullBeleg"
+ Me.lblNullBeleg.Size = New System.Drawing.Size(81, 16)
+ Me.lblNullBeleg.TabIndex = 446
+ Me.lblNullBeleg.Text = "NULL-Beleg"
+ Me.lblNullBeleg.Visible = False
+ '
+ 'lblJahres
+ '
+ Me.lblJahres.AutoSize = True
+ Me.lblJahres.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblJahres.ForeColor = System.Drawing.Color.Black
+ Me.lblJahres.Location = New System.Drawing.Point(655, 177)
+ Me.lblJahres.Name = "lblJahres"
+ Me.lblJahres.Size = New System.Drawing.Size(109, 16)
+ Me.lblJahres.TabIndex = 445
+ Me.lblJahres.Text = "Jahresabschluss"
+ Me.lblJahres.Visible = False
+ '
+ 'lblMonats
+ '
+ Me.lblMonats.AutoSize = True
+ Me.lblMonats.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblMonats.ForeColor = System.Drawing.Color.Black
+ Me.lblMonats.Location = New System.Drawing.Point(655, 151)
+ Me.lblMonats.Name = "lblMonats"
+ Me.lblMonats.Size = New System.Drawing.Size(112, 16)
+ Me.lblMonats.TabIndex = 444
+ Me.lblMonats.Text = "Monatsabschluss"
+ Me.lblMonats.Visible = False
+ '
+ 'lblTages
+ '
+ Me.lblTages.AutoSize = True
+ Me.lblTages.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblTages.ForeColor = System.Drawing.Color.Black
+ Me.lblTages.Location = New System.Drawing.Point(655, 125)
+ Me.lblTages.Name = "lblTages"
+ Me.lblTages.Size = New System.Drawing.Size(108, 16)
+ Me.lblTages.TabIndex = 443
+ Me.lblTages.Text = "Tagesabschluss"
+ Me.lblTages.Visible = False
+ '
+ 'picJahres
+ '
+ Me.picJahres.BackgroundImage = Global.SDL.My.Resources.Resources.ok
+ Me.picJahres.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.picJahres.Location = New System.Drawing.Point(614, 173)
+ Me.picJahres.Name = "picJahres"
+ Me.picJahres.Size = New System.Drawing.Size(27, 20)
+ Me.picJahres.TabIndex = 442
+ Me.picJahres.TabStop = False
+ Me.picJahres.Visible = False
+ '
+ 'picMonats
+ '
+ Me.picMonats.BackgroundImage = Global.SDL.My.Resources.Resources.ok
+ Me.picMonats.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.picMonats.Location = New System.Drawing.Point(614, 147)
+ Me.picMonats.Name = "picMonats"
+ Me.picMonats.Size = New System.Drawing.Size(27, 20)
+ Me.picMonats.TabIndex = 441
+ Me.picMonats.TabStop = False
+ Me.picMonats.Visible = False
+ '
+ 'picTages
+ '
+ Me.picTages.BackgroundImage = Global.SDL.My.Resources.Resources.ok
+ Me.picTages.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.picTages.Location = New System.Drawing.Point(614, 121)
+ Me.picTages.Name = "picTages"
+ Me.picTages.Size = New System.Drawing.Size(27, 20)
+ Me.picTages.TabIndex = 440
+ Me.picTages.TabStop = False
+ Me.picTages.Visible = False
+ '
+ 'lblWarning
+ '
+ Me.lblWarning.AutoSize = True
+ Me.lblWarning.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lblWarning.ForeColor = System.Drawing.Color.Red
+ Me.lblWarning.Location = New System.Drawing.Point(368, 175)
+ Me.lblWarning.Name = "lblWarning"
+ Me.lblWarning.Size = New System.Drawing.Size(0, 16)
+ Me.lblWarning.TabIndex = 439
+ '
+ 'Button11
+ '
+ Me.Button11.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button11.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Button11.ForeColor = System.Drawing.Color.Black
+ Me.Button11.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.Button11.Location = New System.Drawing.Point(394, 130)
+ Me.Button11.Name = "Button11"
+ Me.Button11.Size = New System.Drawing.Size(184, 42)
+ Me.Button11.TabIndex = 438
+ Me.Button11.Text = "Fiskaltrust"
+ Me.Button11.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.Button11.UseVisualStyleBackColor = True
+ '
+ 'Button17
+ '
+ Me.Button17.BackgroundImage = Global.SDL.My.Resources.Resources.fragezeichen
+ Me.Button17.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.Button17.FlatAppearance.BorderSize = 0
+ Me.Button17.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button17.Location = New System.Drawing.Point(742, 24)
+ Me.Button17.Name = "Button17"
+ Me.Button17.Size = New System.Drawing.Size(25, 20)
+ Me.Button17.TabIndex = 437
+ Me.Button17.UseVisualStyleBackColor = True
+ '
+ 'lbldailyCashboxClosing
+ '
+ Me.lbldailyCashboxClosing.AutoSize = True
+ Me.lbldailyCashboxClosing.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.lbldailyCashboxClosing.ForeColor = System.Drawing.Color.Red
+ Me.lbldailyCashboxClosing.Location = New System.Drawing.Point(363, 5)
+ Me.lbldailyCashboxClosing.Name = "lbldailyCashboxClosing"
+ Me.lbldailyCashboxClosing.Size = New System.Drawing.Size(410, 16)
+ Me.lbldailyCashboxClosing.TabIndex = 436
+ Me.lbldailyCashboxClosing.Text = "Täglicher Kassenabschluss dieser Kasse ist verpflichtend!"
+ '
'Button10
'
Me.Button10.FlatStyle = System.Windows.Forms.FlatStyle.Flat
@@ -669,7 +905,7 @@ Partial Class frmKassenbuch
Me.pnl.Controls.Add(Me.Button8)
Me.pnl.Controls.Add(Me.cboKassen)
Me.pnl.Controls.Add(Me.Label18)
- Me.pnl.Location = New System.Drawing.Point(442, 132)
+ Me.pnl.Location = New System.Drawing.Point(378, 201)
Me.pnl.Name = "pnl"
Me.pnl.Size = New System.Drawing.Size(287, 223)
Me.pnl.TabIndex = 430
@@ -759,7 +995,7 @@ Partial Class frmKassenbuch
'lblRKSV_KASSEN_Bez
'
Me.lblRKSV_KASSEN_Bez.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
- Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(463, 3)
+ Me.lblRKSV_KASSEN_Bez.Location = New System.Drawing.Point(542, 3)
Me.lblRKSV_KASSEN_Bez.Name = "lblRKSV_KASSEN_Bez"
Me.lblRKSV_KASSEN_Bez.Size = New System.Drawing.Size(231, 13)
Me.lblRKSV_KASSEN_Bez.TabIndex = 426
@@ -799,7 +1035,7 @@ Partial Class frmKassenbuch
Me.Button1.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Button1.ForeColor = System.Drawing.Color.Black
Me.Button1.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.Button1.Location = New System.Drawing.Point(458, 197)
+ Me.Button1.Location = New System.Drawing.Point(400, 197)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(260, 42)
Me.Button1.TabIndex = 434
@@ -807,12 +1043,17 @@ Partial Class frmKassenbuch
Me.Button1.TextAlign = System.Drawing.ContentAlignment.MiddleLeft
Me.Button1.UseVisualStyleBackColor = True
'
+ 'cm_FT
+ '
+ Me.cm_FT.Name = "ContextMenuStrip1"
+ Me.cm_FT.Size = New System.Drawing.Size(61, 4)
+ '
'frmKassenbuch
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
- Me.ClientSize = New System.Drawing.Size(768, 675)
+ Me.ClientSize = New System.Drawing.Size(778, 711)
Me.Controls.Add(Me.pnlSuche)
Me.Controls.Add(Me.pnlMain)
Me.Controls.Add(Me.pnlTop)
@@ -831,6 +1072,12 @@ Partial Class frmKassenbuch
Me.pnlSearch.PerformLayout()
Me.pnlMain.ResumeLayout(False)
Me.pnlMain.PerformLayout()
+ CType(Me.pbInitialStart, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.picTSEOnline, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.picNULLbeleg, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.picJahres, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.picMonats, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.picTages, System.ComponentModel.ISupportInitialize).EndInit()
Me.pnl.ResumeLayout(False)
Me.pnl.PerformLayout()
Me.ResumeLayout(False)
@@ -891,4 +1138,22 @@ Partial Class frmKassenbuch
Friend WithEvents Button7 As System.Windows.Forms.Button
Friend WithEvents Button10 As Button
Friend WithEvents btnPosTerminal As Button
+ Friend WithEvents lbldailyCashboxClosing As Label
+ Friend WithEvents Button17 As Button
+ Friend WithEvents Button11 As Button
+ Friend WithEvents cm_FT As ContextMenuStrip
+ Friend WithEvents lblWarning As Label
+ Friend WithEvents lblJahres As Label
+ Friend WithEvents lblMonats As Label
+ Friend WithEvents lblTages As Label
+ Friend WithEvents picJahres As PictureBox
+ Friend WithEvents picMonats As PictureBox
+ Friend WithEvents picTages As PictureBox
+ Friend WithEvents picNULLbeleg As PictureBox
+ Friend WithEvents lblNullBeleg As Label
+ Friend WithEvents picTSEOnline As PictureBox
+ Friend WithEvents lblTSEOnline As Label
+ Friend WithEvents lblFiskaltrustHeader As Label
+ Friend WithEvents pbInitialStart As PictureBox
+ Friend WithEvents lblInitStart As Label
End Class
diff --git a/SDL/kassenbuch/frmKassenbuch.resx b/SDL/kassenbuch/frmKassenbuch.resx
index 66ac4fbc..a293f9f1 100644
--- a/SDL/kassenbuch/frmKassenbuch.resx
+++ b/SDL/kassenbuch/frmKassenbuch.resx
@@ -142,6 +142,9 @@
SNw4kn9U62ALlUplLU5qtVoaZwrCC9FnbaaC0/EHAAAAAElFTkSuQmCC
+
+ 25, 8
+
AAABAAEAgIAAAAEAGAAoyAAAFgAAACgAAACAAAAAAAEAAAEAGAAAAAAAAMgAAMQOAADEDgAAAAAAAAAA
diff --git a/SDL/kassenbuch/frmKassenbuch.vb b/SDL/kassenbuch/frmKassenbuch.vb
index 63020d7b..c8a78c83 100644
--- a/SDL/kassenbuch/frmKassenbuch.vb
+++ b/SDL/kassenbuch/frmKassenbuch.vb
@@ -1,4 +1,4 @@
-Imports SDL.RKSVServer
+Imports DocumentFormat.OpenXml.Drawing
Public Class frmKassenbuch
Dim SQL As New SQL
@@ -14,6 +14,17 @@ Public Class frmKassenbuch
Public master_Kasse As Boolean = False
Dim FMZOLL_SQL As New FMZOLL_SQL
+ Dim tagesabschlussIsSet As Boolean = False
+ Dim monatsabschlussIsSet As Boolean = False
+ Dim jahresabschlussIsSet As Boolean = False
+ Dim NULLBelegIsCreated As Boolean = True
+ Dim InitialStartIsCreated As Boolean = True
+ Dim OutOfOrderIsCreated As Boolean = False
+ Dim TSEIsOnline As Boolean = False
+ Dim MiddlewareIsOnline As Boolean = False
+
+ Dim isADMIN As Boolean = False
+
Public Sub New(PERSONAL As cPersonal, PERSONAL_LG As cPersonal)
' Dieser Aufruf ist für den Designer erforderlich.
InitializeComponent()
@@ -59,7 +70,8 @@ Public Class frmKassenbuch
If PERSONAL.ID = 274 Then master_Kasse = True
If VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "ADMIN" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "SIENER" Or VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME = "DANIEL" Then
- Button6.Visible = True
+ isADMIN = True
+
End If
KennwortTime = Now
initDgv() 'nur set
@@ -87,10 +99,54 @@ Public Class frmKassenbuch
End If
+ If isADMIN Then
+ Button6.Visible = True
+ End If
+
+
+ End Sub
+
+ Private Sub InitFiskaltrust(TSEisOnline As Boolean, tagesabschluss As Boolean, Montagsabschluss As Boolean, Jahresabschluss As Boolean, NULLBeleg As Boolean, initialStart As Boolean)
+
+ lblTSEOnline.Visible = True
+ lblTages.Visible = True
+ lblMonats.Visible = True
+ lblJahres.Visible = True
+ lblNullBeleg.Visible = True
+ lblInitStart.Visible = True
+
+
+ picJahres.Visible = True
+ picMonats.Visible = True
+ picTages.Visible = True
+ picNULLbeleg.Visible = True
+ picTSEOnline.Visible = True
+ pbInitialStart.Visible = True
+
+ showPic(TSEisOnline, picTSEOnline)
+ showPic(tagesabschluss, picTages)
+ showPic(monatsabschlussIsSet, picMonats)
+ showPic(Jahresabschluss, picJahres)
+ showPic(NULLBeleg, picNULLbeleg)
+ showPic(initialStart, pbInitialStart)
+
+
+ End Sub
+
+ Sub showPic(ok As Boolean, pic As PictureBox)
+ pic.Visible = True
+ If ok Then
+ pic.BackgroundImage = My.Resources.ok
+ Else
+ pic.BackgroundImage = My.Resources.del
+ End If
+
End Sub
Sub init()
Dim sqlstr = ""
+ lblWarning.Text = ""
+
If master_Kasse Then
Label9.Text = "ADMIN"
pnlTop.BackColor = Color.Red
@@ -102,9 +158,6 @@ Public Class frmKassenbuch
btnBelegAusgang.Enabled = False
pnl.Visible = True
-
-
-
'sqlstr = "SELECT Sum(tblKassenbuch.Soll) AS Soll, Sum(tblKassenbuch.Haben) AS Haben, (Sum(tblKassenbuch.Soll)-Sum(tblKassenbuch.Haben)) AS Saldo " &
' " FROM Personal INNER JOIN tblKassenbuch ON Personal.ID = tblKassenbuch.Benutzer " &
' " WHERE tblKassenbuch.Mandant='" & PERSONAL.Mandant & "' AND tblKassenbuch.Niederlassung='" & PERSONAL.Niederlassung & "' " &
@@ -153,10 +206,128 @@ Public Class frmKassenbuch
End If
+ If PERSONAL.cRKSV_Kasse IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken IsNot Nothing AndAlso PERSONAL.cRKSV_Kasse.rksv_FT_Country IsNot Nothing Then
+
+ Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country)
+ If client_chilkat.isFiskaltrust() Then
+
+ resetFIskaltrust()
+
+ lbldailyCashboxClosing.Visible = True
+ Button11.Visible = True
+
+ Dim tagesabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Day(ftReceiptMoment) = Day(GETDATE()) and ftEndOfDayReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
+ If tagesabschluss > 0 Then tagesabschlussIsSet = True
+
+ Dim monatsabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
+ If monatsabschluss > 0 Then monatsabschlussIsSet = True
+
+ Dim jahresabschluss As Integer = CInt(SQL.getValueTxtBySql("SELECT count(*) FROM [VERAG].[dbo].[tblRKSV_FT] where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is not null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "'", "FMZOLL"))
+ If jahresabschluss > 0 Then jahresabschlussIsSet = True
+ If PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_ZeroReceiptCreated) Then
+ NULLBelegIsCreated = False
+ End If
+
+ If Not (PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_OutOfOrderCreated)) Then
+ OutOfOrderIsCreated = True
+ End If
+
+
+ If PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated Is Nothing OrElse IsDBNull(PERSONAL.cRKSV_Kasse.rksv_FT_InitialStartCreated) Then
+ InitialStartIsCreated = False
+ End If
+
+ Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ")
+
+ If result IsNot Nothing Then
+ If result.Contains("VERBINDUNG OK") Then
+ TSEIsOnline = True
+ MiddlewareIsOnline = True
+ Else
+ TSEIsOnline = False
+ MiddlewareIsOnline = True
+ End If
+ Else
+ TSEIsOnline = False
+ MiddlewareIsOnline = False
+
+ End If
+
+ InitFiskaltrust(TSEIsOnline, tagesabschlussIsSet, monatsabschlussIsSet, jahresabschlussIsSet, NULLBelegIsCreated, InitialStartIsCreated)
+
+ If Not MiddlewareIsOnline Then
+ diasableBarverkauf("MIDDLEWARE")
+ ElseIf Not InitialStartIsCreated Then
+ diasableBarverkauf("INITIALSTART")
+ ElseIf tagesabschlussIsSet Then
+ diasableBarverkauf("TAGESABSCHLUSS")
+ ElseIf OutOfOrderIsCreated Then
+ diasableBarverkauf("OUTOFORDER")
+ Else
+
+ If Not TSEIsOnline Then
+ lbldailyCashboxClosing.Text = "TSE ist OFFLINE: Belege werden nachträglich signiert!"
+ End If
+
+ If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG_bool("KASSE", Me) Then
+ btnBelegKunde.Enabled = True
+ btnBelegAusgang.Enabled = True
+ btnBelegEingang.Enabled = True
+ btnBelegGSKunde.Enabled = True
+ btnBelegLeihgeld.Enabled = True
+ btnStorno.Enabled = True
+ End If
+
+
+ End If
+
+ End If
+
+ Else
+ lbldailyCashboxClosing.Text = ""
+ Button11.Visible = False
+ lblFiskaltrustHeader.Visible = False
+ End If
+
+
+
+
' Label9.Text = PERSONAL.Name
DataGridView2.ClearSelection()
End Sub
+
+ Private Sub diasableBarverkauf(status)
+
+ Select Case status
+ ' Case "NULLBELEG" : lbldailyCashboxClosing.Text = "Es wurde kein 0-Beleg erstellt (OPTIONAL)"
+ Case "INITIALSTART" : lbldailyCashboxClosing.Text = "Kasse wurde noch nicht gestartet!"
+ Case "TAGESABSCHLUSS" : lbldailyCashboxClosing.Text = "Tagesabschluss wurde bereits durchgeführt!"
+ Case "OUTOFORDER" : lbldailyCashboxClosing.Text = "STATUS: INAKTIV!"
+ Case "MIDDLEWARE" : lbldailyCashboxClosing.Text = "Middleware ist OFFLINE!"
+ End Select
+
+ btnBelegKunde.Enabled = False
+ btnBelegAusgang.Enabled = False
+ btnBelegEingang.Enabled = False
+ btnBelegGSKunde.Enabled = False
+ btnBelegLeihgeld.Enabled = False
+ btnStorno.Enabled = False
+
+
+ End Sub
+
+ Private Sub resetFIskaltrust()
+
+ tagesabschlussIsSet = False
+ monatsabschlussIsSet = False
+ jahresabschlussIsSet = False
+ NULLBelegIsCreated = True
+ InitialStartIsCreated = True
+ OutOfOrderIsCreated = False
+ TSEIsOnline = False
+
+ End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
searchdate = searchdate.AddMonths(1)
initDate()
@@ -175,7 +346,7 @@ Public Class frmKassenbuch
End Sub
Dim searchdate As Date = CDate("01." & Now.Month & "." & Now.Year)
- Sub initDgv()
+ Sub initDgv(Optional isFiskaltrust As Boolean = False)
With DataGridView2
.Columns.Clear()
@@ -197,9 +368,10 @@ Public Class frmKassenbuch
If PERSONAL.isLeihgeldkasse Then
lgTxt = ",[Fahrer],[Passnummer] "
End If
+
.SET_SQL("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " &
" CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP & lgTxt & ", b.ECZahlungsPerAPI as EC,b.ECZahlungsNr as ECNr, mit_username as kassiert" &
- " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' " &
+ " FROM tblEABelegnummer as b LEFT JOIN " & VERAG_PROG_ALLGEMEIN.cAllgemein.AVISO_SERVER & " .[ADMIN].[dbo].[tblMitarbeiter] on durchfuehrender_Benutzer = mit_id WHERE b.Mandant='" & PERSONAL.Mandant & "' AND b.Niederlassung='" & PERSONAL.Niederlassung & "' " & benutzerTMP & " AND BelegDat BETWEEN '" & datVon.Value.ToShortDateString & "' AND '" & datBis.Value.ToShortDateString & "' and b.rksv_BelegId >= 0 " &
" ORDER BY b.rksv_BelegId DESC, b.[upsize_ts] desc;", "FMZOLL")
' .DataSource = SQL.loadDgvBySql("SELECT b.rksv_BelegId, b.BelegDat, CASE WHEN b.Belegart=1 THEN 'E' ELSE 'A' END as Belegart,CASE WHEN b.Beleg_TYP='E' THEN rksv_umsatz ELSE (SELECT sum( betrag ) FROM tblEABelegposition WHERE (b.BelegNr = tblEABelegposition.BelegNr) AND (b.BelegDat = tblEABelegposition.BelegDat) AND (b.Benutzer = tblEABelegposition.Benutzer) AND (b.Niederlassung = tblEABelegposition.Niederlassung) AND (b.Mandant = tblEABelegposition.Mandant ) ) END as Betrag, b.Ordnungsbegriff, b.BelegNr, b.Frachtführer, " &
' " CASE WHEN b.storniert=1 THEN 'JA' ELSE '' END as [storniert], b.Beleg_TYP ,b.Benutzer " & benutzerBezTMP &
@@ -239,10 +411,22 @@ Public Class frmKassenbuch
.Columns("Passnummer").Visible = False
End If
+ If .Columns.Contains("FT_MissingSignature") Then
+ .Columns("FT_MissingSignature").HeaderText = "fehl Sig."
+ .Columns("FT_MissingSignature").Width = 45
+ For Each r As DataGridViewRow In .Rows
+ If Not IsDBNull(r.Cells("FT_MissingSignature").Value) AndAlso r.Cells("FT_MissingSignature").Value Then
+ r.DefaultCellStyle.ForeColor = Color.Red
+ End If
+ Next
+ End If
+
If master_Kasse Then
.Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master
+ .Columns("BenutzerBez").HeaderText = "Benutzer" 'gibts bei bei master
End If
+
For Each r As DataGridViewRow In .Rows
If r.Cells("storniert").Value = "JA" Then
r.DefaultCellStyle.ForeColor = Color.Red
@@ -1014,9 +1198,11 @@ Public Class frmKassenbuch
If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso IsNumeric(KASSETmp.rksv_FT_CashboxID) AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country)
- If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then
+ If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then
MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
+ Else
+ BELEGTmp.rksv_qr = QRQString
End If
Else
@@ -1096,7 +1282,7 @@ Public Class frmKassenbuch
If KASSETmp.rksv_FT_CashboxID IsNot Nothing AndAlso KASSETmp.rksv_FT_CashboxID <> "" AndAlso BELEGTmp.FT_ReceiptReference IsNot Nothing Then
Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSETmp.rksv_FT_RestServiceURL, KASSETmp.rksv_FT_CashboxID, KASSETmp.rksv_FT_AccessToken, KASSETmp.rksv_FT_Country)
- If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer) Then
+ If Not cRKSV.stornoRKSV_FT(KASSETmp, BELEGTmp, QRQString, LastJWS, answer, TSEIsOnline) Then
MessageBox.Show("Fehler bei der RKSV-FT-Stornierung:" & vbNewLine & vbNewLine & answer, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
@@ -1177,16 +1363,17 @@ Public Class frmKassenbuch
Dim KASSE As New cRKSV_Kasse(cboKassen._value) 'Laden der Kasse anhand der Auswahlbox
- If KASSE.rksv_FT_RestServiceURL <> "" Then
- Dim client As New cFiskaltrustClient(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
- Dim result = Await client.SignNullReceiptAsync(RKSV.rksv_id)
- Dim QR_CodeString As String = ""
- client.saveRKSV_FT(result, QR_CodeString)
+ If KASSE.rksv_FT_Country IsNot Nothing AndAlso KASSE.rksv_FT_Country = "DE" Then
+
+ cRKSV.printStatusBelegFiskaltrust(KASSE, PERSONAL, True, KASSE.rksv_firma, ReceiptCaseIntern.NULLBELEG)
Else
cRKSV.printNULLBeleg(KASSE, PERSONAL, True, KASSE.rksv_firma)
-
End If
+
+ init()
+
+
' End If
End Sub
@@ -1217,7 +1404,7 @@ Public Class frmKassenbuch
End If
End Sub
-
+
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim f As New frmKassenbuchPWD(PERSONAL)
If f.ShowDialog() = Windows.Forms.DialogResult.OK Then
@@ -1391,4 +1578,393 @@ Public Class frmKassenbuch
f.Show()
End Sub
+
+ Private Sub Button17_Click(sender As Object, e As EventArgs) Handles Button17.Click
+
+ Dim webAddress As String = "https://wiki.verag.ag/e/de/software/aviso/howtos/Barverkauf"
+ Process.Start(webAddress)
+ End Sub
+
+ Private Sub Button11_Click_1(sender As Object, e As EventArgs) Handles Button11.Click
+
+ cm_FT.Items.Clear()
+
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM Then
+ 'nur im Testsystem!
+ If Not cm_FT.Items.ContainsKey("bar") AndAlso isADMIN Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Barverkauf", .Name = "bar", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("storno") AndAlso isADMIN Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Storno", .Name = "storno", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ End If
+
+ 'If Not cm_FT.Items.ContainsKey("null") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then
+ ' Dim plose = New ToolStripMenuItem() With {.Text = "Nullbeleg", .Name = "null", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ ' cm_FT.Items.Add(plose)
+ ' AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
+ 'End If
+
+ If Not cm_FT.Items.ContainsKey("outoforder") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated Then
+ Dim plose = New ToolStripMenuItem() With {.Text = "Out Of Order", .Name = "outoforder", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ cm_FT.Items.Add(plose)
+ AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
+ End If
+
+ If Not cm_FT.Items.ContainsKey("initialstart") AndAlso isADMIN AndAlso Not OutOfOrderIsCreated AndAlso Not InitialStartIsCreated Then
+ Dim plose = New ToolStripMenuItem() With {.Text = "Initial Start", .Name = "initialstart", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ cm_FT.Items.Add(plose)
+ AddHandler plose.Click, AddressOf mnuItemAuftrauege_Clicked
+ End If
+
+ If Not cm_FT.Items.ContainsKey("monthly") AndAlso Not monatsabschlussIsSet AndAlso Not OutOfOrderIsCreated Then
+ Dim rmc = New ToolStripMenuItem() With {.Text = "Monatabschluss", .Name = "monthly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(rmc)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("daily") AndAlso Not tagesabschlussIsSet AndAlso Not OutOfOrderIsCreated Then
+ Dim rmc = New ToolStripMenuItem() With {.Text = "Tagesabschluss", .Name = "daily", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler rmc.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(rmc)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("yearly") AndAlso Not jahresabschlussIsSet AndAlso Not OutOfOrderIsCreated Then
+ Dim uta = New ToolStripMenuItem() With {.Text = "Jahresabschluss", .Name = "yearly", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler uta.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(uta)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("verbindungstest") Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Verbindungstest", .Name = "verbindungstest", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("version") Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Version", .Name = "version", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("signatures") AndAlso isADMIN Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Signaturen", .Name = "signatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("action") AndAlso isADMIN Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Action", .Name = "action", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("queueitem") AndAlso isADMIN Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Journal - Queue", .Name = "queueitem", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ If Not cm_FT.Items.ContainsKey("exportJournal") Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "Journal - EXPORT", .Name = "exportJournal", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+
+ If Not cm_FT.Items.ContainsKey("setMissingSignatures") Then
+ Dim ids = New ToolStripMenuItem() With {.Text = "fehlende Signaturen nachtragen", .Name = "setMissingSignatures", .Font = New Font(Me.Font.FontFamily, Me.Font.Size)}
+ AddHandler ids.Click, AddressOf mnuItemAuftrauege_Clicked
+ cm_FT.Items.Add(ids)
+ End If
+
+ cm_FT.Show(Cursor.Position)
+
+ End Sub
+
+
+ Private Async Function mnuItemAuftrauege_Clicked(sender As Object, e As EventArgs) As Task(Of Object)
+
+ cm_FT.Hide()
+ Dim item As ToolStripMenuItem = TryCast(sender, ToolStripMenuItem)
+
+ If item IsNot Nothing Then
+
+ 'PERSONAL.cRKSV_Kasse.LOAD(cboKassen._value)
+
+ Dim client_chilkat As New cFiskaltrustClient_chilkat(PERSONAL.cRKSV_Kasse.rksv_FT_RestServiceURL, PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID, PERSONAL.cRKSV_Kasse.rksv_FT_AccessToken, PERSONAL.cRKSV_Kasse.rksv_FT_Country)
+
+ If item.Name = "setMissingSignatures" Then
+
+ Dim dt As DataTable = SQL.loadDgvBySql("SELECT * FROM [tblEABelegnummer] WHERE [rksv_id]='" & PERSONAL.cRKSV_KasseID & "' AND isnull(FT_MissingSignature,0)=1", "FMZOLL")
+
+ If dt.Rows.Count = 0 Then
+ MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " existieren keine unsignierten Belege!")
+ Return False
+ End If
+
+ If vbYes = MsgBox("Möchten die " & dt.Rows.Count & " nicht signierten Belege an die TSE schicken?", vbYesNoCancel) Then
+
+ Dim result As Boolean = False
+ For Each r As DataRow In dt.Rows
+
+ Dim BELEG = New EABeleg("LOAD", r("Mandant"), r("Niederlassung"), r("Benutzer"), r("BelegNr"), r("BelegDat"))
+ Dim summeBRUTTO As Double = BELEG.rksv_umsatz
+ Dim QR_CodeString As String = ""
+ Dim LastJWS As String = ""
+ Dim EA As String = ""
+ Dim kindOfReceiptCase As String = ""
+
+ Select Case BELEG.Beleg_TYP
+ Case "0"
+ Continue For 'null Belege nicht senden!
+ Case "E" 'Eingang/Ausgang
+ If BELEG.Belegart = "1" Then
+ EA = "E"
+ Else
+ EA = "A"
+ End If
+ Case "L"
+ If BELEG.Belegart = "1" Then
+ EA = "E"
+ Else
+ EA = "A"
+ End If
+
+ Case Else
+ If BELEG.Belegart = "1" Then
+ EA = "E"
+ Else
+ EA = "A"
+ End If
+ End Select
+
+ kindOfReceiptCase = ReceiptCaseIntern.WIEDERHOLUNG
+
+ result = cRKSV.insertRKSVFiskaltrustAsync(PERSONAL.cRKSV_Kasse, BELEG, BELEG.rksv_BelegId, If(EA = "E", summeBRUTTO, summeBRUTTO * -1), False, QR_CodeString, LastJWS, kindOfReceiptCase, BELEG.FT_ReceiptReference)
+
+ If result Then
+ BELEG.FT_MissingSignature = False
+ BELEG.SAVE()
+ Else
+ MsgBox("Fehler bei der nachträglichen Signierung von BelegNr: " & BELEG.BelegNr & vbNewLine & "Beleg wurde nicht in der QUEUE gefunden!" & vbNewLine & "Beleg muss erneut an Fiskaltrust gesendet werden!")
+ BELEG.FT_MissingSignature = False
+ BELEG.FT_setMissingSignatureFailed = True
+ BELEG.SAVE()
+ End If
+
+ Next
+
+ If result Then
+ init()
+ End If
+
+ End If
+
+
+
+ ElseIf item.Name = "tempoutoforder" Then
+
+
+ If vbYes = MsgBox("Möchten Sie einen temp. Ausfall an die TSE schicken?" & vbNewLine & "Falls die TSE zwar Online ist, jedoch ein technischer Fehler beim Signieren besteht", vbYesNoCancel) Then
+
+ cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.TEMP_OUTOFOPERATIONBELEG)
+ init()
+
+ End If
+
+
+
+ ElseIf item.Name = "outoforder" Then
+
+
+ If vbYes = MsgBox("Möchten Sie einen OutOfOrder an die TSE schicken?" & vbNewLine & "Die Queue wird dauerhaft geschlossen und kann NICHT reaktiviert werden!", vbYesNoCancel) Then
+ cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.OUTOFOPERATIONBELEG)
+ init()
+
+
+ End If
+
+
+ ElseIf item.Name = "initialstart" Then
+
+
+ If vbYes = MsgBox("Möchten Sie einen Start an die TSE schicken?", vbYesNoCancel) Then
+
+ cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.STARTBELEG)
+ init()
+
+ End If
+
+
+
+ ElseIf item.Name = "verbindungstest" Then
+
+ Dim result As String = client_chilkat.Echo(PERSONAL.cRKSV_Kasse.rksv_bez & " " & PERSONAL.cRKSV_Kasse.rksv_FT_Country & " - ")
+
+ If result <> "" Then
+
+ MsgBox(client_chilkat.PrettyPrintJson(result))
+
+ End If
+
+
+ ElseIf item.Name = "storno" Then
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then
+
+ If vbYes = MsgBox("Möchten Sie wirklich einen Teststorno durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then
+
+ Dim result As String = client_chilkat.ChancelReceipt_test("-1", PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline)
+
+ If result <> "" Then
+
+ MsgBox(client_chilkat.PrettyPrintJson(result))
+
+ End If
+
+ End If
+
+ Else
+ MsgBox("ACHTUNG, im Produktivsystem nicht möglich!")
+ End If
+
+
+ ElseIf item.Name = "bar" Then
+
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.TESTSYSTEM AndAlso isADMIN Then
+
+ If vbYes = MsgBox("Möchten Sie wirklich einen Testzahlung durchführen?" & vbNewLine & "NIEMALS auf einer produktiven TSE durchführen!", vbYesNoCancel) Then
+
+ Dim result As String = client_chilkat.SignReceipt_test(PERSONAL.cRKSV_Kasse.rksv_id, TSEIsOnline)
+
+ If result <> "" Then
+
+ If vbYes = MsgBox(result & vbNewLine & vbNewLine & "Testdaten in DB speichern?", vbYesNoCancel) Then
+ Dim QR_CodeString As String = ""
+ client_chilkat.saveRKSV_FT(result, QR_CodeString, Nothing, False)
+ End If
+ Else
+ Return False
+ End If
+
+
+ If result <> "" Then
+
+ MsgBox(client_chilkat.PrettyPrintJson(result))
+
+ End If
+ End If
+ Else
+ MsgBox("ACHTUNG, im Produktivsystem nicht möglich!")
+
+ End If
+
+
+
+ ElseIf item.Name = "monthly" Then
+
+ If Not monatsabschlussIsSet Then
+ If vbYes = MsgBox("Möchten Sie einen Monatsbeleg an die TSE schicken, anschließend kann in diesem Monat kein Beleg mehr signiert werden!", vbYesNoCancel) Then
+
+ Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name)
+
+ If result <> "" Then
+
+ MsgBox(client_chilkat.PrettyPrintJson(result))
+
+ SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfMonthReceipt = getDate() where Month(ftReceiptMoment) = Month(GETDATE()) and ftEndOfMonthReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL")
+
+ End If
+
+ End If
+ Else
+ MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Monatsabschluss erstellt!")
+ End If
+
+
+ ElseIf item.Name = "daily" And Not tagesabschlussIsSet Then
+ 'Nur DE
+
+ If Not tagesabschlussIsSet Then
+
+ If vbYes = MsgBox("Möchten Sie einen Tagesabschluss durchführen, anschließend kann heute kein Beleg mehr signiert werden!", vbYesNoCancel) Then
+ If PERSONAL.cRKSV_Kasse.rksv_FT_Country = "DE" Then
+
+ cRKSV.printStatusBelegFiskaltrust(PERSONAL.cRKSV_Kasse, PERSONAL, True, PERSONAL.cRKSV_Kasse.rksv_firma, ReceiptCaseIntern.DAILYCLOSING)
+
+ init()
+
+ Else
+ MsgBox("nicht für AT-Kassen möglich!")
+ End If
+ End If
+
+
+ MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Tagesabschluss erstellt!")
+
+ End If
+
+ ElseIf item.Name = "yearly" Then
+
+ If Not jahresabschlussIsSet Then
+
+ If vbYes = MsgBox("Möchten Sie einen Jahresbeleg an die TSE schicken, anschließend kann in diesem Jahr kein Beleg mehr signiert werden!", vbYesNoCancel) Then
+
+
+ Dim result As String = client_chilkat.SignClosingReceipt(item.Name, PERSONAL.cRKSV_Kasse.rksv_id, item.Name)
+ If result <> "" Then
+
+ MsgBox(client_chilkat.PrettyPrintJson(result))
+
+ SQL.doSQL("UPDATE [tblRKSV_FT] set ftEndOfYearReceipt = getDate() where Year(ftReceiptMoment) = Year(GETDATE()) and ftEndOfYearReceipt is null and ftCashBoxID = '" & PERSONAL.cRKSV_Kasse.rksv_FT_CashboxID & "' ", "FMZOLL")
+
+ End If
+
+ End If
+ Else
+ MsgBox("Für die Kasse " & PERSONAL.cRKSV_Kasse.rksv_bez & " wurde bereits ein Jahresabschluss erstellt!")
+
+ End If
+
+
+
+ ElseIf (item.Name = "version" Or item.Name = "action" Or item.Name = "signatures" Or item.Name = "queueitem" Or item.Name = "exportJournal") Then
+
+ Dim result As String = ""
+ Select Case item.Name
+ Case "version" : result = client_chilkat.Journal(FtJournalType.VersionInformation)
+ Case "action" : result = client_chilkat.Journal(FtJournalType.ActionJournal)
+ Case "signatures" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal)
+ Case "queueitem" : result = client_chilkat.Journal(FtJournalType.QueueItemJournal)
+ Case "exportJournal" : result = client_chilkat.Journal(FtJournalType.ReceiptJournal)
+ End Select
+
+ If result <> "" Then
+
+ MsgBox(client_chilkat.PrettyPrintJson(result))
+
+ If item.Name = "exportJournal" Then
+ client_chilkat.exportJournal(result)
+ End If
+
+ End If
+
+
+
+ End If
+
+
+ End If
+
+
+
+ End Function
+
+
End Class
\ No newline at end of file
diff --git a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb
index 1f5c2d35..5db23dd8 100644
--- a/SDL/kassenbuch/frmNacherfassungLeihgeld.vb
+++ b/SDL/kassenbuch/frmNacherfassungLeihgeld.vb
@@ -1,5 +1,6 @@
Imports GrapeCity.ActiveReports
+Imports java.security.acl
Imports VERAG_PROG_ALLGEMEIN
Public Class frmNacherfassungLeihgeld
@@ -362,133 +363,159 @@ Public Class frmNacherfassungLeihgeld
' QR_Image = Nothing
Dim QR_CodeString As String = ""
Dim LastJWS As String = ""
+ Dim isFiskaltrust As Boolean = False
+ If KASSE IsNot Nothing AndAlso KASSE.rksv_FT_RestServiceURL IsNot Nothing AndAlso KASSE.rksv_FT_CashboxID IsNot Nothing AndAlso KASSE.rksv_FT_AccessToken IsNot Nothing AndAlso KASSE.rksv_FT_Country IsNot Nothing Then
+ Dim client_chilkat As New cFiskaltrustClient_chilkat(KASSE.rksv_FT_RestServiceURL, KASSE.rksv_FT_CashboxID, KASSE.rksv_FT_AccessToken, KASSE.rksv_FT_Country)
+ isFiskaltrust = client_chilkat.isFiskaltrust()
+ End If
+
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
+ Dim answer = ""
-
- 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, cbxProvinMAKassa.Checked)
- 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)
- Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG)
- If Not spedBuchExisting Then
- MsgBox("Speditionsbuch-Eintrag fehlgeschlagen!!")
+ Dim verarbeitet As Boolean = False
+ If isFiskaltrust Then
+ Dim result = cRKSV.insertRKSVFiskaltrustAsync(KASSE, BELEG, RKSV_Beleg_Id, summeBRUTTO, TESTBUCHUNG, QR_CodeString, LastJWS, ReceiptCaseIntern.VERKAUF)
+ 'result.Wait()
+ verarbeitet = result
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
+ verarbeitet = cRKSV.insertRKSV(KASSE, KASSE.rksv_CompanyGUID, KASSE.rksv_Umsatzzaehler, BELEG.BelegDat, BELEG.Steuerschlüssel, RKSV_Beleg_Id, summeBRUTTO, QR_CodeString, LastJWS, TESTBUCHUNG, answer) 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
End If
+ If Not verarbeitet Then 'Digitale Signierung und Erfassung in die RKSV-Datenbank mittels ITG-Service
+ If Not isFiskaltrust Then
-
- If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then
- Dim verarbOK As Boolean = True
- Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr)
- SPEDBUCH.BelegNr = BelegNrFIBU
- Dim RK_ID As Integer = -1
-
- If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False
- If RK_ID > 0 Then
- Dim RECHNUNG As New cRechnungsausgang(RK_ID)
- RECHNUNG.KdAuftragsNr = BelegNrFIBU
- If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False
- If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then
- RECHNUNG.[DruckDatumZeit] = Nothing
- RECHNUNG.SAVE_DruckDatumZeit()
+ If Not TESTBUCHUNG Then
+ KASSE.DECREASE_BELEG_UMSATZ(oldBelegZaehler, summeBRUTTO * -1)
+ cRKSV.DELETE(BELEG, KASSE.rksv_firma)
End If
- 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
- If verarbOK Then
- 'MsgBox("Rechnung erstellt!")
Else
- MsgBox("Fehler bei Rechnungserstellung!")
+ BELEG.FT_MissingSignature = True
End If
+
End If
+ If Not isFiskaltrust Then 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
+ If Not isFiskaltrust Then 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, cbxProvinMAKassa.Checked)
+ 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)
+ Dim spedBuchExisting As Boolean = cRKSV.SpedBuchExists(BELEG)
+ If Not spedBuchExisting 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
+
+
+
+
+ If VERAG_PROG_ALLGEMEIN.cAllgemein.FIRMA = "ATILLA" AndAlso spedBuchExisting Then
+ Dim verarbOK As Boolean = True
+ Dim SPEDBUCH As New VERAG_PROG_ALLGEMEIN.cSpeditionsbuch(BELEG.FilialenNr, BELEG.AbfertigungsNr)
+ SPEDBUCH.BelegNr = BelegNrFIBU
+ Dim RK_ID As Integer = -1
+
+ If Not gen_RECHNUNG_BySPEDBUCH(BELEG.KundenNr, SPEDBUCH, RK_ID, cbxOP_sofort_buchen.Checked, summeBRUTTO, summeNETTO, BELEG) Then verarbOK = False
+ If RK_ID > 0 Then
+ Dim RECHNUNG As New cRechnungsausgang(RK_ID)
+ RECHNUNG.KdAuftragsNr = BelegNrFIBU
+ If Not cFakturierung.doRechnungsDruck(RECHNUNG, Today(),, 4) Then verarbOK = False
+ If RECHNUNG.[DruckDatumZeit] IsNot Nothing Then
+ RECHNUNG.[DruckDatumZeit] = Nothing
+ RECHNUNG.SAVE_DruckDatumZeit()
+ End If
+ End If
+
+ If verarbOK Then
+ 'MsgBox("Rechnung erstellt!")
+ Else
+ MsgBox("Fehler bei Rechnungserstellung!")
+
+ End If
+ End If
+
+ End If
+ End If
+
+
+ Me.Close()
+ Me.DialogResult = Windows.Forms.DialogResult.OK
+ Me.Cursor = Cursors.Default
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)
diff --git a/SDL/kunden/Newsletter/frmNewsletter.Designer.vb b/SDL/kunden/Newsletter/frmNewsletter.Designer.vb
index 2a94f416..bb53f2a2 100644
--- a/SDL/kunden/Newsletter/frmNewsletter.Designer.vb
+++ b/SDL/kunden/Newsletter/frmNewsletter.Designer.vb
@@ -53,6 +53,7 @@ Partial Class frmNewsletter
Me.EmpfängerName = New System.Windows.Forms.DataGridViewTextBoxColumn()
Me.ListBox1 = New System.Windows.Forms.ListBox()
Me.Label8 = New System.Windows.Forms.Label()
+ Me.Button8 = New System.Windows.Forms.Button()
CType(Me.MyDatagridview1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
@@ -290,6 +291,7 @@ Partial Class frmNewsletter
Me.MyDatagridview1.Columns.AddRange(New System.Windows.Forms.DataGridViewColumn() {Me.Email, Me.EmailCC, Me.EmailBCC, Me.EmpfängerTitel, Me.EmpfängerName})
Me.MyDatagridview1.Location = New System.Drawing.Point(892, 119)
Me.MyDatagridview1.Name = "MyDatagridview1"
+ Me.MyDatagridview1.SelectionMode = System.Windows.Forms.DataGridViewSelectionMode.FullRowSelect
Me.MyDatagridview1.Size = New System.Drawing.Size(537, 498)
Me.MyDatagridview1.TabIndex = 0
'
@@ -338,6 +340,15 @@ Partial Class frmNewsletter
Me.Label8.TabIndex = 24
Me.Label8.Text = "Anhänge:"
'
+ 'Button8
+ '
+ Me.Button8.Location = New System.Drawing.Point(1230, 90)
+ Me.Button8.Name = "Button8"
+ Me.Button8.Size = New System.Drawing.Size(105, 23)
+ Me.Button8.TabIndex = 25
+ Me.Button8.Text = "aus Clipboard imp."
+ Me.Button8.UseVisualStyleBackColor = True
+ '
'frmNewsletter
'
Me.AllowDrop = True
@@ -345,6 +356,7 @@ Partial Class frmNewsletter
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.White
Me.ClientSize = New System.Drawing.Size(1441, 720)
+ Me.Controls.Add(Me.Button8)
Me.Controls.Add(Me.Label8)
Me.Controls.Add(Me.ListBox1)
Me.Controls.Add(Me.MyTextBox2)
@@ -408,4 +420,5 @@ Partial Class frmNewsletter
Friend WithEvents EmpfängerName As DataGridViewTextBoxColumn
Friend WithEvents ListBox1 As ListBox
Friend WithEvents Label8 As Label
+ Friend WithEvents Button8 As Button
End Class
diff --git a/SDL/kunden/Newsletter/frmNewsletter.vb b/SDL/kunden/Newsletter/frmNewsletter.vb
index b951c360..364e11e8 100644
--- a/SDL/kunden/Newsletter/frmNewsletter.vb
+++ b/SDL/kunden/Newsletter/frmNewsletter.vb
@@ -14,12 +14,12 @@ Public Class frmNewsletter
Try
ProgressBar1.Minimum = 0
- ProgressBar1.Maximum = MyDatagridview1.SelectedRows.Count
+ ProgressBar1.Maximum = MyDataGridView1.SelectedRows.Count
ProgressBar1.Value = 0
ProgressBar1.Visible = True
ProgressBar1.Style = ProgressBarStyle.Continuous
- If MyDatagridview1.SelectedRows.Count = 0 Then
+ If MyDataGridView1.SelectedRows.Count = 0 Then
MsgBox("Bitte mindestens einen Eintrag auswählen.")
Exit Sub
End If
@@ -29,10 +29,10 @@ Public Class frmNewsletter
Dim Absender = getAbsender()
Dim Subject = getSubject()
- If MsgBox("Wirklich " & MyDatagridview1.SelectedRows.Count & " Mails senden?", vbYesNoCancel) = vbYes Then
+ If MsgBox("Wirklich " & MyDataGridView1.SelectedRows.Count & " Mails senden?", vbYesNoCancel) = vbYes Then
VERAG_PROG_ALLGEMEIN.cProgramFunctions.sendMail(Absender, Subject, mailText, Absender,, False, "", "", ANHAENGE)
- For Each row As DataGridViewRow In MyDatagridview1.SelectedRows
+ For Each row As DataGridViewRow In MyDataGridView1.SelectedRows
Dim mail As String = getValidEmail(If(row.Cells("Email").Value, "").ToString())
Dim mailCC As String = getValidEmail(If(row.Cells("EmailCC").Value, "").ToString())
Dim mailBCC As String = getValidEmail(If(row.Cells("EmailBCC").Value, "").ToString())
@@ -305,18 +305,343 @@ Public Class frmNewsletter
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
- MyDatagridview1.Rows.Clear()
+ MyDataGridView1.Rows.Clear()
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
- MyDatagridview1.SelectAll()
+ MyDataGridView1.SelectAll()
End Sub
Private Sub Button5_Click(sender As Object, e As EventArgs) Handles Button5.Click
- MyDatagridview1.ClearSelection()
+ MyDataGridView1.ClearSelection()
+ End Sub
+
+ Private Sub MyDatagridview1_KeyDown(sender As Object, e As KeyEventArgs) Handles MyDataGridView1.KeyDown
+ If e.Control AndAlso e.KeyCode = Keys.C Then
+ CopyEntireDGV()
+ e.SuppressKeyPress = True
+
+ ElseIf e.Control AndAlso e.KeyCode = Keys.V Then
+ PasteIntoDGV()
+ e.SuppressKeyPress = True
+ End If
+
End Sub
+ Private Sub CopyEntireDGV()
+
+ Dim sb As New Text.StringBuilder()
+
+ 'Headers
+ For col As Integer = 0 To MyDataGridView1.ColumnCount - 1
+ If col > 0 Then sb.Append(vbTab)
+
+ sb.Append(MyDataGridView1.Columns(col).HeaderText)
+ Next
+
+ sb.AppendLine()
+
+ 'All rows
+ For row As Integer = 0 To MyDataGridView1.Rows.Count - 1
+
+ 'Skip the "new row" at the bottom
+ If MyDataGridView1.Rows(row).IsNewRow Then Continue For
+
+ For col As Integer = 0 To MyDataGridView1.ColumnCount - 1
+
+ If col > 0 Then sb.Append(vbTab)
+
+ Dim value = MyDataGridView1.Rows(row).Cells(col).Value
+
+ If value IsNot Nothing Then
+ sb.Append(value.ToString())
+ End If
+
+ Next
+
+ sb.AppendLine()
+ Next
+
+ Clipboard.SetText(sb.ToString())
+
+ End Sub
+
+
+ Private Sub PasteIntoDGV()
+ If Not Clipboard.ContainsText() Then Return
+
+ Dim text As String = Clipboard.GetText()
+
+ If String.IsNullOrWhiteSpace(text) Then Return
+
+ Dim lines() As String =
+ text.Split({vbCrLf, vbLf}, StringSplitOptions.RemoveEmptyEntries)
+
+ '==========================================================
+ ' IMMER bei Zeile 0 beginnen
+ '==========================================================
+
+ Dim targetRow As Integer = 0
+ Dim startCol As Integer = 0
+
+
+ '==========================================================
+ ' Prüfen auf Pipe-/Markdown-Tabelle
+ '==========================================================
+
+ Dim isPipeTable As Boolean = False
+
+ If lines.Length >= 2 Then
+
+ If lines(0).Trim().StartsWith("|") Then
+ isPipeTable = True
+ End If
+
+ End If
+
+
+ '==========================================================
+ ' PIPE-TABELLE
+ '==========================================================
+
+ If isPipeTable Then
+
+ For i As Integer = 0 To lines.Length - 1
+
+ Dim line As String = lines(i).Trim()
+
+ If String.IsNullOrWhiteSpace(line) Then
+ Continue For
+ End If
+
+
+ '--------------------------------------------------
+ ' Header überspringen
+ '--------------------------------------------------
+
+ If i = 0 Then
+ Continue For
+ End If
+
+
+ '--------------------------------------------------
+ ' Trennzeile überspringen
+ '--------------------------------------------------
+
+ If IsMarkdownSeparator(line) Then
+ Continue For
+ End If
+
+
+ '--------------------------------------------------
+ ' | entfernen
+ '--------------------------------------------------
+
+ If line.StartsWith("|") Then
+ line = line.Substring(1)
+ End If
+
+ If line.EndsWith("|") Then
+ line = line.Substring(0, line.Length - 1)
+ End If
+
+
+ '--------------------------------------------------
+ ' Spalten zerlegen
+ '--------------------------------------------------
+
+ Dim values() As String =
+ line.Split("|"c)
+
+
+ '--------------------------------------------------
+ ' Sicherstellen, dass eine beschreibbare Zeile
+ ' vorhanden ist
+ '--------------------------------------------------
+
+ Dim row As DataGridViewRow =
+ GetWritableRow(targetRow)
+
+ If row Is Nothing Then
+ Exit For
+ End If
+
+
+ '--------------------------------------------------
+ ' Werte schreiben
+ '--------------------------------------------------
+
+ For col As Integer = 0 To values.Length - 1
+
+ Dim targetCol As Integer =
+ startCol + col
+
+ If targetCol >= MyDataGridView1.ColumnCount Then
+ Exit For
+ End If
+
+
+ Dim value As String =
+ values(col).Trim()
+
+ ' \@ aus deinem Clipboard entfernen
+ value = value.Replace("\@", "@")
+
+
+ row.Cells(targetCol).Value = value
+
+ Next
+
+
+ targetRow += 1
+
+ Next
+
+ Return
+
+ End If
+
+
+ '==========================================================
+ ' NORMALES EXCEL / TAB-SEPARATED
+ '==========================================================
+
+ For Each line As String In lines
+
+ If String.IsNullOrEmpty(line) Then
+ Continue For
+ End If
+
+
+ Dim values() As String =
+ line.Split(ControlChars.Tab)
+
+
+ Dim row As DataGridViewRow =
+ GetWritableRow(targetRow)
+
+ If row Is Nothing Then
+ Exit For
+ End If
+
+
+ For col As Integer = 0 To values.Length - 1
+
+ Dim targetCol As Integer =
+ startCol + col
+
+ If targetCol >= MyDataGridView1.ColumnCount Then
+ Exit For
+ End If
+
+
+ row.Cells(targetCol).Value =
+ values(col)
+
+ Next
+
+
+ targetRow += 1
+
+ Next
+
+
+ End Sub
+
+ Private Function GetWritableRow(rowIndex As Integer) _
+ As DataGridViewRow
+
+ '----------------------------------------------------------
+ ' Gibt es die Zeile bereits?
+ '----------------------------------------------------------
+
+ If rowIndex < MyDataGridView1.Rows.Count Then
+
+ Dim row As DataGridViewRow =
+ MyDataGridView1.Rows(rowIndex)
+
+ 'Normale Zeile
+ If Not row.IsNewRow Then
+ Return row
+ End If
+
+ End If
+
+
+ '----------------------------------------------------------
+ ' Neue Zeile hinzufügen
+ '----------------------------------------------------------
+
+ If MyDataGridView1.AllowUserToAddRows Then
+
+ Dim newIndex As Integer =
+ MyDatagridview1.Rows.Add()
+
+ Return MyDatagridview1.Rows(newIndex)
+
+ End If
+
+
+ Return Nothing
+
+End Function
+
+
+
+ Private Function IsMarkdownSeparator(line As String) As Boolean
+
+ Dim value As String = line.Trim()
+
+ If value.StartsWith("|") Then
+ value = value.Substring(1)
+ End If
+
+ If value.EndsWith("|") Then
+ value = value.Substring(0, value.Length - 1)
+ End If
+
+
+ Dim columns() As String =
+ value.Split("|"c)
+
+
+ For Each column As String In columns
+
+ Dim cell As String =
+ column.Trim()
+
+ If cell = "" Then
+ Continue For
+ End If
+
+
+ cell = cell.Replace(":", "").Trim()
+
+
+ If cell.Length = 0 Then
+ Continue For
+ End If
+
+
+ For Each ch As Char In cell
+
+ If ch <> "-" Then
+ Return False
+ End If
+
+ Next
+
+ Next
+
+
+ Return True
+
+End Function
+
+ Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
+ PasteIntoDGV()
+ End Sub
End Class
diff --git a/SDL/kunden/frmKundenblatt.vb b/SDL/kunden/frmKundenblatt.vb
index 6fefa980..ae95d5ca 100644
--- a/SDL/kunden/frmKundenblatt.vb
+++ b/SDL/kunden/frmKundenblatt.vb
@@ -469,23 +469,28 @@ Public Class frmKundenblatt
End Sub
Private Sub initFIBU()
+
+ txtZinsbelastungTolInTagen.Enabled = False
+ txtZinsbelastungNew.Enabled = False
+
+ If kdNr > 0 Then
+ rtbGespreachsbericht.Text = checkNullStr(KUNDE.Gesprächsbericht)
+ txtFIBUKuerzel.Text = checkNullStr(KUNDE_ERW.kde_BezFIBU)
+ txtZinsbelastungNew.Text = checkNullStr(KUNDE_ERW.kde_zinssatz)
+ txtZinsbelastungTolInTagen.Text = checkNullStr(KUNDE_ERW.kde_abwToleranzTage)
+
+ initZNB()
+
+ End If
+
If VERAG_PROG_ALLGEMEIN.cBerechtignunen.CHECK_BERECHTIGUNG("BH_Hauptmenü", Me) = 0 Then
- If kdNr > 0 Then
- rtbGespreachsbericht.Text = checkNullStr(KUNDE.Gesprächsbericht)
- txtFIBUKuerzel.Text = checkNullStr(KUNDE_ERW.kde_BezFIBU)
- txtZinsbelastungNew.Text = checkNullStr(KUNDE_ERW.kde_zinssatz)
- txtZinsbelastungTolInTagen.Text = checkNullStr(KUNDE_ERW.kde_abwToleranzTage)
+ txtZinsbelastungTolInTagen.Enabled = True
+ txtZinsbelastungNew.Enabled = True
- initZNB()
-
- End If
-
- Else
-
- setInfo("info", "Sie sind für den Bereich FIBU nicht freigeschaltet.", 3)
- tbcntrMain.SelectedIndex = 0
End If
+
+
End Sub
Sub initTABLKW(Optional kz As String = "")
diff --git a/SDL/kunden/frmKundenlogin.vb b/SDL/kunden/frmKundenlogin.vb
index c1c54eb7..dab39640 100644
--- a/SDL/kunden/frmKundenlogin.vb
+++ b/SDL/kunden/frmKundenlogin.vb
@@ -115,9 +115,10 @@
Select Case txtPortal.Text
Case "Q8-TRUCK" : link.AccessibleDescription = "https://iaccount.q8.com/" : link.Text = cboLieferant.Text & "-Link"
- Case "UTA PORTAL" : link.AccessibleDescription = "https://meinedenred.at/login" : link.Text = cboLieferant.Text & "-Link"
+ 'Case "UTA PORTAL" : link.AccessibleDescription = "https://meinedenred.at/login" : link.Text = cboLieferant.Text & "-Link"
Case "PLOSE APR" : link.AccessibleDescription = "https://www.apr.plose.it/login" : link.Text = cboLieferant.Text & "-Link"
Case "MSTSTTOLLS" : link.AccessibleDescription = "https://iaccount.q8.com/" : link.Text = cboLieferant.Text & "-Link"
+ Case "UTA PORTAL" : link.AccessibleDescription = "https://sso.eu.edenred.io/web/session/step/password?returnUrl=%2Fconnect%2Fauthorize%2Fcallback%3Fscope%3Dopenid%2520uta-service-center-api%26acr_values%3Dtenant%253Auta-service-center%26state%3Dauthoauth2%257C_29893002dacb85543f3e1a66a7f91556dc1792c392%253Ahttps%253A%252F%252Fssoprod.uta.com%252Fsimplesamlphp%252Fsaml2%252Fidp%252FSSOService.php%253Fspentityid%253Dhttps%25253A%25252F%25252Fwww.uta.com%25252Fsamlsps%25252Fedenredproxy%2526cookieTime%253D1788790826%26response_type%3Dcode%26approval_prompt%3Dauto%26redirect_uri%3Dhttps%253A%252F%252Fssoprod.uta.com%252Fsimplesamlphp%252Fmodule.php%252Fauthoauth2%252Flinkback.php%26client_id%3De8d6c5eab5c64fc38f7f0764c0114083" : link.Text = cboLieferant.Text & "-Link"
Case "HUB4TRUCKS" : link.AccessibleDescription = "https://truck.telepass.com/api/uaa/login" : link.Text = cboLieferant.Text & "-Link"
Case Else : link.AccessibleDescription = "" : link.Text = cboLieferant.Text & ""
diff --git a/SDL/kunden/usrcntlFiskaluebersicht.vb b/SDL/kunden/usrcntlFiskaluebersicht.vb
index e46eaa9f..98bfa2b6 100644
--- a/SDL/kunden/usrcntlFiskaluebersicht.vb
+++ b/SDL/kunden/usrcntlFiskaluebersicht.vb
@@ -2,6 +2,7 @@
Imports System.Text.RegularExpressions
Imports VERAG_PROG_ALLGEMEIN
+
Public Class usrcntlFiskaluebersicht
Public kdNr As Integer = -1
@@ -362,8 +363,33 @@ Public Class usrcntlFiskaluebersicht
If BA IsNot Nothing Then
If BA.ba_datenarchivId > 0 Then files.Add(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(BA.ba_datenarchivId))
End If
+
+
For Each r As DataGridViewRow In dgvUnterlagen.Rows
- files.Add(VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(r.Cells("fka_docId").Value))
+
+ Dim Path = VERAG_PROG_ALLGEMEIN.cDATENSERVER.GET_PDFPath_BY_DocID(r.Cells("fka_docId").Value)
+
+ Dim extension As String = System.IO.Path.GetExtension(Path).ToLowerInvariant()
+
+ Select Case extension
+
+ Case ".pdf"
+
+ files.Add(Path)
+
+ Case ".png", ".jpg", ".jpeg", ".bmp", ".gif", ".tif", ".tiff"
+
+ Dim PathTemp As String = VERAG_PROG_ALLGEMEIN.cFormularManager.convertPictureToPDF(Path)
+
+ If Not String.IsNullOrEmpty(PathTemp) Then
+ files.Add(PathTemp)
+ End If
+
+ End Select
+
+
+
+
Next
VERAG_PROG_ALLGEMEIN.cFormularManager.mergePDFs(files, outputFile)
@@ -1065,7 +1091,7 @@ Public Class usrcntlFiskaluebersicht
Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("DOKUMENTE", "FISKALKUNDENANHAENGE", fk.FK_Datum, "", "", ArtId, kdNr)
- If DS.uploadDataToDATENSERVERFileDialog(, ".pdf", , "PDF") Then
+ If DS.uploadDataToDATENSERVERFileDialog() <> "" Then
Dim ANH = New VERAG_PROG_ALLGEMEIN.cFiskalkundenAnhaenge()
ANH.fka_Art = ArtId
diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb
index 12faa4a8..3b6e3ea6 100644
--- a/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb
+++ b/SDL/kunden/usrcntlKundeBearbeitenFull.Designer.vb
@@ -22,7 +22,6 @@ Partial Class usrcntlKundeBearbeitenFull
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
Private Sub InitializeComponent()
- Me.components = New System.ComponentModel.Container()
Dim DataGridViewCellStyle1 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle2 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
Dim DataGridViewCellStyle3 As System.Windows.Forms.DataGridViewCellStyle = New System.Windows.Forms.DataGridViewCellStyle()
@@ -115,7 +114,7 @@ Partial Class usrcntlKundeBearbeitenFull
Me.btnAddKundeUID = New System.Windows.Forms.Button()
Me.cboUSt_UstIdNrLand2 = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.txtUSt_UstIdNr2 = New VERAG_PROG_ALLGEMEIN.MyTextBox()
- Me.dgvKundenUID = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
+ Me.dgvKundenUID = New VERAG_PROG_ALLGEMEIN.MyDatagridview()
Me.Label117 = New System.Windows.Forms.Label()
Me.Panel2 = New System.Windows.Forms.Panel()
Me.Label115 = New System.Windows.Forms.Label()
@@ -291,6 +290,7 @@ Partial Class usrcntlKundeBearbeitenFull
Me.txtUSt_GVAusgestelltAm = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.txtUSt_GVAngefordertAm = New VERAG_PROG_ALLGEMEIN.MyTextBox()
Me.tbSonstiges = New System.Windows.Forms.TabPage()
+ Me.cbxIDSMautberichtNachOrt = New System.Windows.Forms.CheckBox()
Me.txtSonst_weitereKdNrWOELFL = New System.Windows.Forms.TextBox()
Me.lblIDS_Rabatte = New System.Windows.Forms.Label()
Me.PictureBox7 = New System.Windows.Forms.PictureBox()
@@ -441,13 +441,14 @@ Partial Class usrcntlKundeBearbeitenFull
Me.txtERROR = New System.Windows.Forms.TextBox()
Me.btnDatevExport = New System.Windows.Forms.Button()
Me.Label98 = New System.Windows.Forms.Label()
- Me.cnsBankverbindungen = New System.Windows.Forms.ContextMenuStrip(Me.components)
+ Me.cnsBankverbindungen = New System.Windows.Forms.ContextMenuStrip()
Me.ArchivierenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.DokumentHinzufügenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.DokumentLöschenToolStripMenuItem = New System.Windows.Forms.ToolStripMenuItem()
Me.cboFirma = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.cboAuswahl = New VERAG_PROG_ALLGEMEIN.MyComboBox()
Me.DataGridViewTextBoxColumn2 = New System.Windows.Forms.DataGridViewTextBoxColumn()
+ Me.PictureBox1 = New System.Windows.Forms.PictureBox()
Me.tbcntrDetails.SuspendLayout()
Me.tbAbfertigung.SuspendLayout()
Me.tbcntrAbf.SuspendLayout()
@@ -497,6 +498,7 @@ Partial Class usrcntlKundeBearbeitenFull
Me.TabPage11.SuspendLayout()
Me.pnlNeukunde.SuspendLayout()
Me.cnsBankverbindungen.SuspendLayout()
+ CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'tbcntrDetails
@@ -4162,6 +4164,8 @@ Partial Class usrcntlKundeBearbeitenFull
'
'tbSonstiges
'
+ Me.tbSonstiges.Controls.Add(Me.PictureBox1)
+ Me.tbSonstiges.Controls.Add(Me.cbxIDSMautberichtNachOrt)
Me.tbSonstiges.Controls.Add(Me.txtSonst_weitereKdNrWOELFL)
Me.tbSonstiges.Controls.Add(Me.lblIDS_Rabatte)
Me.tbSonstiges.Controls.Add(Me.PictureBox7)
@@ -4212,6 +4216,16 @@ Partial Class usrcntlKundeBearbeitenFull
Me.tbSonstiges.Text = "Sonstiges"
Me.tbSonstiges.UseVisualStyleBackColor = True
'
+ 'cbxIDSMautberichtNachOrt
+ '
+ Me.cbxIDSMautberichtNachOrt.AutoSize = True
+ Me.cbxIDSMautberichtNachOrt.Location = New System.Drawing.Point(119, 194)
+ Me.cbxIDSMautberichtNachOrt.Name = "cbxIDSMautberichtNachOrt"
+ Me.cbxIDSMautberichtNachOrt.Size = New System.Drawing.Size(164, 17)
+ Me.cbxIDSMautberichtNachOrt.TabIndex = 149
+ Me.cbxIDSMautberichtNachOrt.Text = "IDS-Mautbericht AT nach Ort"
+ Me.cbxIDSMautberichtNachOrt.UseVisualStyleBackColor = True
+ '
'txtSonst_weitereKdNrWOELFL
'
Me.txtSonst_weitereKdNrWOELFL.Location = New System.Drawing.Point(179, 53)
@@ -4597,9 +4611,9 @@ Partial Class usrcntlKundeBearbeitenFull
Me.cbxSonst_CsvMautbericht.AutoSize = True
Me.cbxSonst_CsvMautbericht.Location = New System.Drawing.Point(428, 141)
Me.cbxSonst_CsvMautbericht.Name = "cbxSonst_CsvMautbericht"
- Me.cbxSonst_CsvMautbericht.Size = New System.Drawing.Size(82, 17)
+ Me.cbxSonst_CsvMautbericht.Size = New System.Drawing.Size(106, 17)
Me.cbxSonst_CsvMautbericht.TabIndex = 2
- Me.cbxSonst_CsvMautbericht.Text = "Mautbericht"
+ Me.cbxSonst_CsvMautbericht.Text = "CSV-Mautbericht"
Me.cbxSonst_CsvMautbericht.UseVisualStyleBackColor = True
'
'txtSonst_KdNrUTA
@@ -6151,6 +6165,17 @@ Partial Class usrcntlKundeBearbeitenFull
Me.DataGridViewTextBoxColumn2.HeaderText = "E-Mail"
Me.DataGridViewTextBoxColumn2.Name = "DataGridViewTextBoxColumn2"
'
+ 'PictureBox1
+ '
+ Me.PictureBox1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.None
+ Me.PictureBox1.Image = Global.SDL.My.Resources.Resources.pdf_s
+ Me.PictureBox1.Location = New System.Drawing.Point(290, 191)
+ Me.PictureBox1.Name = "PictureBox1"
+ Me.PictureBox1.Size = New System.Drawing.Size(20, 20)
+ Me.PictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom
+ Me.PictureBox1.TabIndex = 150
+ Me.PictureBox1.TabStop = False
+ '
'usrcntlKundeBearbeitenFull
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -6260,6 +6285,7 @@ Partial Class usrcntlKundeBearbeitenFull
Me.pnlNeukunde.ResumeLayout(False)
Me.pnlNeukunde.PerformLayout()
Me.cnsBankverbindungen.ResumeLayout(False)
+ CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -6661,4 +6687,6 @@ Partial Class usrcntlKundeBearbeitenFull
Friend WithEvents cbxSammelrechnung_IM_EX As CheckBox
Friend WithEvents cbxPDFMerge As CheckBox
Friend WithEvents cbxHR_autoselect As CheckBox
+ Friend WithEvents cbxIDSMautberichtNachOrt As CheckBox
+ Friend WithEvents PictureBox1 As PictureBox
End Class
diff --git a/SDL/kunden/usrcntlKundeBearbeitenFull.vb b/SDL/kunden/usrcntlKundeBearbeitenFull.vb
index eeb51e8e..45bb9998 100644
--- a/SDL/kunden/usrcntlKundeBearbeitenFull.vb
+++ b/SDL/kunden/usrcntlKundeBearbeitenFull.vb
@@ -1,4 +1,7 @@
-Imports MDM_Worker
+Imports com.sun.xml.internal.rngom
+Imports DAKOSY_Worker
+Imports MDM_Worker
+Imports Tamir.SharpSsh.jsch
Imports VERAG_PROG_ALLGEMEIN
Public Class usrcntlKundeBearbeitenFull
@@ -402,8 +405,10 @@ Public Class usrcntlKundeBearbeitenFull
cbxSonst_CsvMautbericht.Checked = loadValue(ADRESSE.ExportMautberichtCSV, False)
cbxSonst_CsvMSE.Checked = loadValue(ADRESSE.MSEExportCSV, False)
cbxSonst_CsvUTA.Checked = loadValue(ADRESSE.UTAExportCSV, False)
+ cbxSonst_CsvUTA.Checked = loadValue(ADRESSE.UTAExportCSV, False)
cbxUIDMehrfachverwendung.Checked = KUNDE_ERW.kde_UIDMehrfachverwendung
cbxkeineMWSt.Checked = loadValue(KUNDE_ERW.kde_keineMWSt, False)
+ cbxIDSMautberichtNachOrt.Checked = loadValue(ADRESSE.IDSMautbericht_nachOrt, False)
' ----- Provision Dienstleistungen -----
cbxProvDL.Checked = KUNDE_ERW.kde_Provisionsverguetung
@@ -860,6 +865,7 @@ Public Class usrcntlKundeBearbeitenFull
ADRESSE.ExportMautberichtCSV = cbxSonst_CsvMautbericht.Checked
ADRESSE.MSEExportCSV = cbxSonst_CsvMSE.Checked
ADRESSE.UTAExportCSV = cbxSonst_CsvUTA.Checked
+ ADRESSE.IDSMautbericht_nachOrt = cbxIDSMautberichtNachOrt.Checked
KUNDE_ERW.kde_betreuer = isLeerNothing(cbxBetreuer.Text)
@@ -2369,7 +2375,7 @@ Public Class usrcntlKundeBearbeitenFull
lblIDS_Rabatte.Text = "IDS-Rabatte/Preise" & IIf(KundeOhneRabatt > 0, " - KUNDE OHNE RABATT", "")
- Dim dt_IDS As DataTable = sql.loadDgvBySql("SELECT P.ProductDescription, C.OutletCountry,S.OutletCode, S.OutletName, RW.Rechenwert, Kz, RW.KategorieNr as KatNr FROM [VERAG].[dbo].[tbl_IDS_Rechenwerte] as RW
+ Dim dt_IDS As DataTable = sql.loadDgvBySql("SELECT P.ProductDescription, C.OutletCountry,S.OutletCode, S.OutletName,S.OutletOrt, RW.Rechenwert, Kz, RW.KategorieNr as KatNr FROM [VERAG].[dbo].[tbl_IDS_Rechenwerte] as RW
left join [VERAG].[dbo].[tbl_IDS_Produkte] as P on P.ProductTypeCode = RW.ProductTypeCode
left join [VERAG].[dbo].[tbl_IDS_Länder] as C on C.OutletCountryCode = RW.OutletCountryCode
left join [VERAG].[dbo].[tbl_IDS_Stationen] as S on S.[OutletCode] = RW.OutletCode and S.OutletCountryCode = RW.OutletCountryCode where CustomerCode is null order by KZ", "FMZOLL")
@@ -2387,8 +2393,10 @@ Public Class usrcntlKundeBearbeitenFull
.Columns(2).HeaderText = "S-Nr"
.Columns(2).Width = 50
.Columns(3).HeaderText = "Station"
- .Columns(4).HeaderText = "Rab-/Pr."
- .Columns(6).Width = 50
+ .Columns(4).HeaderText = "Ort"
+ .Columns(4).Width = 50
+ .Columns(5).HeaderText = "Rab-/Pr."
+ .Columns(7).Width = 50
.Columns(3).AutoSizeMode = DataGridViewAutoSizeColumnMode.Fill
End With
@@ -2824,8 +2832,8 @@ Public Class usrcntlKundeBearbeitenFull
End If
Button6.Enabled = True
- Else
- Button6.Enabled = False
+ Else
+ Button6.Enabled = False
End If
End Sub
@@ -2839,7 +2847,7 @@ Public Class usrcntlKundeBearbeitenFull
For Each r As DataGridViewRow In dgvKundenUID.SelectedRows
Dim UID_KUNDE As New cKundenveranlagungUID(KUNDE.KundenNr, r.Cells("UstIdKz").Value)
- UID_KUNDE.DELETE
+ UID_KUNDE.DELETE()
Next
initdgvKUNDENUID(KUNDE.KundenNr)
@@ -2850,5 +2858,216 @@ Public Class usrcntlKundeBearbeitenFull
End If
+ End Sub
+
+ Private Sub PictureBox1_Click(sender As Object, e As EventArgs) Handles PictureBox1.Click
+ Dim ids As New cIDS
+ Dim gruppierungNachOrt As Boolean = False
+ If ADRESSE.IDSMautbericht_nachOrt IsNot Nothing AndAlso Not IsDBNull(ADRESSE.IDSMautbericht_nachOrt) Then
+ gruppierungNachOrt = ADRESSE.IDSMautbericht_nachOrt
+ End If
+
+ Dim rechnungsdatum = ids.getCurrentInvoicedate(KUNDE.KundenNr)
+
+ If rechnungsdatum <> "" AndAlso IsDate(rechnungsdatum) Then
+
+ Dim f As New frmDatumsabfrage("IDS-Mautbericht Datum ", True)
+ f.dtp_date.Value = CDate(rechnungsdatum)
+ f.ShowDialog()
+ If f.DialogResult = DialogResult.OK Then
+
+
+ Dim dt_ids = ids.genIDSMautberichtDatatByKdNr(KUNDE.KundenNr, CDate(rechnungsdatum), "IDS", False) '
+ Dim dt_ids_at = ids.genIDSMautberichtDatatByKdNr(KUNDE.KundenNr, CDate(rechnungsdatum), "IDS_AT", gruppierungNachOrt)
+
+ If dt_ids.Rows.Count = 0 AndAlso dt_ids_at.Rows.Count = 0 Then
+ MsgBox("Zum eingegebenen Datum existieren keine Daten!")
+ Exit Sub
+ End If
+
+
+ If dt_ids.Rows.Count > 0 Then createBericht(dt_ids, KUNDE.KundenNr, -1, CDate(rechnungsdatum), False)
+ If dt_ids_at.Rows.Count > 0 Then createBericht(dt_ids_at, KUNDE.KundenNr, -1, CDate(rechnungsdatum), gruppierungNachOrt)
+
+ End If
+
+ Else
+
+ End If
+
+
+
+
+
+
+
+
+ End Sub
+
+ Private Sub createBericht(dt As DataTable, kdnr As String, idsKdnr As String, rechnungsdatum As Date, Gruppierung_nach_Ort As Boolean)
+ Try
+
+ Dim sql As New VERAG_PROG_ALLGEMEIN.SQL
+
+ Dim rpt As New rptIDS_Anhang
+
+ rpt.DataSource = dt
+
+ rpt.txtKunde.Text = kdnr & " " & New VERAG_PROG_ALLGEMEIN.cAdressen(kdnr).FullName
+
+ rpt.lblIDSKdNr.Text = idsKdnr
+
+ rpt.lblRgDatum.Text = rechnungsdatum.ToShortDateString
+
+ rpt.GroupHeaderKz.DataField = "OutletCountry"
+
+ rpt.Label4.Text = rechnungsdatum.ToShortDateString
+
+
+ Dim curRabattbetragProLiter As Double = 0
+ Dim curRabattbetrag As Double = 0
+ Dim curGesamtbetrag As Double = 0
+
+
+ Dim sumLiter As Double = 0
+
+ Dim sumBrutto As Double = 0
+
+ Dim sumLiterLand As Double = 0
+
+ Dim sumLiterKat As Double = 0
+
+ Dim sumBruttoLand As Double = 0
+
+ Dim sumBruttoKat As Double = 0
+
+ Dim sumLiterGes As Double = 0
+
+ Dim sumBruttoGes As Double = 0
+
+ Dim cntKat = 0
+ Dim cnt = 0
+
+ rpt.GroupFooterKat.Visible = False
+
+ AddHandler rpt.Detail.Format, Sub()
+ ' If cnt = 0 Then
+ curRabattbetrag = 0 - sql.isDbnullEmptyDbl(rpt.Fields.Item("SummevonRabattbetrag").Value, 2, "") '=0-[Summe von Rabattbetrag]
+ curRabattbetragProLiter = 0 - IIf(sql.isDbnullEmpty(rpt.Fields.Item("KZ").Value, "") = "P", sql.isDbnullEmptyDbl(rpt.Fields.Item("RabattbetragProLiter").Value, 4, 0), sql.isDbnullEmptyDbl(rpt.Fields.Item("Rechenwert").Value, 4, 0)) '=0-Wenn([Kz]="P";[RabattbetragProLiter];[Rechenwert])
+ curGesamtbetrag = CDbl(sql.isDbnullEmptyDbl(rpt.Fields.Item("Nettobetrag").Value, 2, 0) + curRabattbetrag + sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuerbetrag").Value, 2, 0)) '=[Nettobetrag]+[curRabattbetrag]+[Steuerbetrag]
+
+ rpt.txtKunde.Text = sql.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "")
+ rpt.txtKunde.Text &= " " & sql.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "")
+
+ Dim Station As String = ""
+ If Gruppierung_nach_Ort Then
+ Station = sql.isDbnullEmpty(rpt.Fields.Item("OutletOrt").Value, "")
+ If Station <> "" Then
+ Station = " (" & Station & ")"
+ End If
+ End If
+
+
+ rpt.txtProduktBeschreibung.Text = sql.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") & Station
+
+ rpt.txtLiter.Text = sql.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "")
+ rpt.txtPreis.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "")
+ rpt.txtBetrag.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("Nettobetrag").Value, 2, "")
+
+ rpt.txtRabattPreis.Text = curRabattbetragProLiter
+ rpt.txtRabattBetrag.Text = curRabattbetrag
+
+ rpt.lblMWST.Text = "zuzüglich MWST "
+
+ 'SPANIEN, POLEN : für alle Produkte gilt eine Reduzierung der MwSt. auf 10 % bzw. 8%, mit Ausnahme von AdBlue (bleibt bei 21 % MwSt.) -> Regelung der MWST-Anzeige erfolgt über IDS-Länder, allerdings wird auf Datenbasis hier kein Unterschied zw. ProductCode gemacht, daher hardcodiert -> weil es nur um Anzeige geht!
+
+ '20.07.2026 -> Änderungen wieder deaktivert!
+
+ 'If (SQL.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "") = "Spain" Or SQL.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "") = "Poland") And SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") <> "Ad Blue" Then
+
+ ' Select Case SQL.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "")
+ ' Case "Spain" : rpt.lblMWST.Text &= "10 %"
+ ' Case "Poland" : rpt.lblMWST.Text &= "8 %"
+ ' End Select
+
+ 'Else
+
+ rpt.lblMWST.Text &= IIf(sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuersatz").Value, 2, "") <> "", sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuersatz").Value, 2, "") * 100 & " %", "")
+
+ 'End If
+
+ rpt.txtMWST.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("Steuerbetrag").Value, 2, "")
+
+ rpt.txtPreisProLiter.Text = sql.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, 0) + curRabattbetragProLiter '=[NettopreisProLiter]+[curRabattbetragProLiter]
+
+ rpt.txtGesamtbetrag.Text = curGesamtbetrag
+
+ sumLiter += sql.isDbnullEmptyDbl(rpt.Fields.Item("Liter").Value, 2, 0)
+
+ sumBrutto += curGesamtbetrag
+
+ cnt += 1
+ End Sub
+
+
+
+ AddHandler rpt.GroupHeaderKz.Format, Sub()
+ rpt.txtOutletCountry.Text = sql.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, "")
+ End Sub
+
+ AddHandler rpt.GroupFooterKz.Format, Sub()
+
+ sumLiterLand += sumLiter
+ sumBruttoLand += sumBrutto
+
+
+ rpt.txtNettoKzSum.Text = sumLiterLand.ToString("N2")
+ rpt.txtMWSTKzSum.Text = ""
+ rpt.txtBruttoKzSum.Text = sumBruttoLand.ToString("N2")
+ cntKat += 1
+
+ sumLiter = 0
+ sumBrutto = 0
+
+ sumLiterGes += sumLiterLand
+ sumBruttoGes += sumBruttoLand
+
+ sumLiterLand = 0
+ sumBruttoLand = 0
+
+ rpt.txtOutletCountry.Text = rpt.txtOutletCountry.Text.Replace("Land", sql.isDbnullEmpty(rpt.Fields.Item("OutletCountry").Value, ""))
+
+ End Sub
+
+
+
+ AddHandler rpt.ReportFooter1.Format, Sub()
+
+ rpt.txtNettoGesSum.Text = sumLiterGes.ToString("N2")
+ rpt.txtBruttoGesSum.Text = sumBruttoGes.ToString("N2")
+
+ If cntKat <= 1 Then
+ rpt.GroupFooterKat.Visible = False
+ End If
+ End Sub
+
+
+
+ Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("IDS_ " & kdnr & "_IDS_Mautbericht.pdf", ".pdf", , False)
+ Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
+ rpt.Run(False)
+ p.Export(rpt.Document, tmpPath)
+ Process.Start(tmpPath)
+ rpt.Dispose()
+
+
+
+
+
+ Catch ex As System.Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
+
+
End Sub
End Class
diff --git a/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb b/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb
index daf4027c..e174fa5f 100644
--- a/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb
+++ b/SDL/mdm/frmMDMDatenverarbetiung.Designer.vb
@@ -25,6 +25,7 @@ Partial Class frmMDMDatenverarbetiung
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(frmMDMDatenverarbetiung))
Me.pnl = New System.Windows.Forms.Panel()
+ Me.btnImportdet = New System.Windows.Forms.Button()
Me.pb_importOK = New System.Windows.Forms.PictureBox()
Me.cbxIDSmitVerag = New System.Windows.Forms.CheckBox()
Me.Panel5 = New System.Windows.Forms.Panel()
@@ -52,7 +53,7 @@ Partial Class frmMDMDatenverarbetiung
Me.pnlAsfinag = New System.Windows.Forms.Panel()
Me.bntDatumzuruecksetzen = New System.Windows.Forms.Button()
Me.bntDatumsetzen = New System.Windows.Forms.Button()
- Me.Panel3 = New System.Windows.Forms.Panel()
+ Me.pnlMDMDetailberichte = New System.Windows.Forms.Panel()
Me.Button6 = New System.Windows.Forms.Button()
Me.pnlIDS = New System.Windows.Forms.Panel()
Me.Button10 = New System.Windows.Forms.Button()
@@ -85,7 +86,6 @@ Partial Class frmMDMDatenverarbetiung
Me.Button2 = New System.Windows.Forms.Button()
Me.ContextMenuStrip1 = New System.Windows.Forms.ContextMenuStrip(Me.components)
Me.MyDatagridview1 = New VERAG_PROG_ALLGEMEIN.MyDatagridview(Me.components)
- Me.btnImportdet = New System.Windows.Forms.Button()
Me.pnl.SuspendLayout()
CType(Me.pb_importOK, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel5.SuspendLayout()
@@ -94,7 +94,7 @@ Partial Class frmMDMDatenverarbetiung
Me.FlowLayoutPanel.SuspendLayout()
Me.Panel1.SuspendLayout()
Me.pnlAsfinag.SuspendLayout()
- Me.Panel3.SuspendLayout()
+ Me.pnlMDMDetailberichte.SuspendLayout()
Me.pnlIDS.SuspendLayout()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.pic, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -124,6 +124,17 @@ Partial Class frmMDMDatenverarbetiung
Me.pnl.Size = New System.Drawing.Size(1163, 100)
Me.pnl.TabIndex = 1
'
+ 'btnImportdet
+ '
+ Me.btnImportdet.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
+ Me.btnImportdet.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.btnImportdet.Location = New System.Drawing.Point(985, 8)
+ Me.btnImportdet.Name = "btnImportdet"
+ Me.btnImportdet.Size = New System.Drawing.Size(166, 23)
+ Me.btnImportdet.TabIndex = 132
+ Me.btnImportdet.Text = "Einarbeitungsdetails"
+ Me.btnImportdet.UseVisualStyleBackColor = True
+ '
'pb_importOK
'
Me.pb_importOK.BackgroundImage = Global.SDL.My.Resources.Resources.ok
@@ -371,7 +382,7 @@ Partial Class frmMDMDatenverarbetiung
'Panel1
'
Me.Panel1.Controls.Add(Me.pnlAsfinag)
- Me.Panel1.Controls.Add(Me.Panel3)
+ Me.Panel1.Controls.Add(Me.pnlMDMDetailberichte)
Me.Panel1.Controls.Add(Me.pnlIDS)
Me.Panel1.Controls.Add(Me.lblTTRSum)
Me.Panel1.Controls.Add(Me.txtTTRSum)
@@ -427,14 +438,14 @@ Partial Class frmMDMDatenverarbetiung
Me.bntDatumsetzen.Text = "Abr-datum setzen"
Me.bntDatumsetzen.UseVisualStyleBackColor = True
'
- 'Panel3
+ 'pnlMDMDetailberichte
'
- Me.Panel3.BackColor = System.Drawing.Color.White
- Me.Panel3.Controls.Add(Me.Button6)
- Me.Panel3.Location = New System.Drawing.Point(603, 9)
- Me.Panel3.Name = "Panel3"
- Me.Panel3.Size = New System.Drawing.Size(313, 139)
- Me.Panel3.TabIndex = 48
+ Me.pnlMDMDetailberichte.BackColor = System.Drawing.Color.White
+ Me.pnlMDMDetailberichte.Controls.Add(Me.Button6)
+ Me.pnlMDMDetailberichte.Location = New System.Drawing.Point(603, 9)
+ Me.pnlMDMDetailberichte.Name = "pnlMDMDetailberichte"
+ Me.pnlMDMDetailberichte.Size = New System.Drawing.Size(313, 139)
+ Me.pnlMDMDetailberichte.TabIndex = 48
'
'Button6
'
@@ -826,17 +837,6 @@ Partial Class frmMDMDatenverarbetiung
Me.MyDatagridview1.Size = New System.Drawing.Size(1163, 547)
Me.MyDatagridview1.TabIndex = 0
'
- 'btnImportdet
- '
- Me.btnImportdet.Anchor = CType((System.Windows.Forms.AnchorStyles.Top Or System.Windows.Forms.AnchorStyles.Right), System.Windows.Forms.AnchorStyles)
- Me.btnImportdet.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.btnImportdet.Location = New System.Drawing.Point(985, 8)
- Me.btnImportdet.Name = "btnImportdet"
- Me.btnImportdet.Size = New System.Drawing.Size(166, 23)
- Me.btnImportdet.TabIndex = 132
- Me.btnImportdet.Text = "Einarbeitungsdetails"
- Me.btnImportdet.UseVisualStyleBackColor = True
- '
'frmMDMDatenverarbetiung
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -862,7 +862,7 @@ Partial Class frmMDMDatenverarbetiung
Me.Panel1.ResumeLayout(False)
Me.Panel1.PerformLayout()
Me.pnlAsfinag.ResumeLayout(False)
- Me.Panel3.ResumeLayout(False)
+ Me.pnlMDMDetailberichte.ResumeLayout(False)
Me.pnlIDS.ResumeLayout(False)
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.pic, System.ComponentModel.ISupportInitialize).EndInit()
@@ -905,7 +905,7 @@ Partial Class frmMDMDatenverarbetiung
Friend WithEvents btnKunde As Button
Friend WithEvents Button1 As Button
Friend WithEvents Button5 As Button
- Friend WithEvents Panel3 As Panel
+ Friend WithEvents pnlMDMDetailberichte As Panel
Friend WithEvents PictureBox1 As PictureBox
Friend WithEvents pic As PictureBox
Friend WithEvents Button6 As Button
diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb
index b148f700..61fc1262 100644
--- a/SDL/mdm/frmMDMDatenverarbetiung.vb
+++ b/SDL/mdm/frmMDMDatenverarbetiung.vb
@@ -1239,7 +1239,7 @@ Public Class frmMDMDatenverarbetiung
Sub initLieferant(l As String, btn As Button)
MyDatagridview1.DataSource = Nothing
Me.LIEFERANT = l
- Panel3.Controls.Clear()
+ pnlMDMDetailberichte.Controls.Clear()
For Each c As Button In FlowLayoutPanel.Controls
If c Is btn Then
@@ -1264,12 +1264,12 @@ Public Class frmMDMDatenverarbetiung
Case "PLOSE"
Panel4.Visible = True
Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT)
- Panel3.Controls.Add(c)
+ pnlMDMDetailberichte.Controls.Add(c)
c.Dock = DockStyle.Fill
Case "UTA"
Panel5.Visible = True
Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT)
- Panel3.Controls.Add(c)
+ pnlMDMDetailberichte.Controls.Add(c)
c.Dock = DockStyle.Fill
Case "ASFINAG"
cbxASFINAGAbgerechnet.Visible = True
@@ -1280,7 +1280,7 @@ Public Class frmMDMDatenverarbetiung
Case "IDS"
Panel5.Visible = True
Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT)
- Panel3.Controls.Add(c)
+ pnlMDMDetailberichte.Controls.Add(c)
c.Dock = DockStyle.Fill
pnlIDS.Visible = True
cbxKopie.Visible = True
@@ -1289,7 +1289,7 @@ Public Class frmMDMDatenverarbetiung
Case "MSE"
Panel5.Visible = True
Dim c As New usrCntlMDMDatenverarbeitungAuswertungen_divers(Me, Me.LIEFERANT)
- Panel3.Controls.Add(c)
+ pnlMDMDetailberichte.Controls.Add(c)
c.Dock = DockStyle.Fill
End Select
@@ -1686,7 +1686,8 @@ Public Class frmMDMDatenverarbetiung
distinct(tblIDSTransactionsNew.KdNrVERAG),
tblIDSTransactionsNew.CustomerCode,
Adressen.Rechnungsdruck,
- isNULL(tblIDSInvoicesNew.daId,0) as InvoiceID
+ isNULL(tblIDSInvoicesNew.daId,0) as InvoiceID,
+ isnull(IDSMautbericht_nachOrt,0) as IDSMautbericht_nachOrt
FROM
tblIDSTransactionsNew
INNER JOIN
@@ -1737,7 +1738,7 @@ Public Class frmMDMDatenverarbetiung
If IDS("Rechnungsdruck") = 2 Then
- Dim pathfile = genIDSAttachmentByKdNr(IDS("KdNrVERAG"), IDS("CustomerCode"), dir, datPloseAnhang.Value, art)
+ Dim pathfile = genIDSAttachmentByKdNr(IDS("KdNrVERAG"), IDS("CustomerCode"), dir, datPloseAnhang.Value, art, IDS("IDSMautbericht_nachOrt"))
If Not AddAttachementToRE(pathfile, IDS("KdNrVERAG"), RECHNUNG, "IDS") Then verarbOK = False
End If
@@ -3126,35 +3127,47 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
End Function
- Function genIDSAttachmentByKdNr(KdNr As String, IDSKdNr As String, dir As String, von As Date, art As String)
+ Function genIDSAttachmentByKdNr(KdNr As String, IDSKdNr As String, dir As String, von As Date, art As String, Gruppierung_nach_Ort As Boolean)
Try
Dim displayFilter = False
Dim sqlstr As String = ""
- Dim sqlWhere As String = ""
- Dim sqlSelect As String = ""
- Dim sqlGroup As String = ""
+
+ Dim sqljoin_nachOrt As String = ""
+ Dim sqlgroup_nachOrt = ""
+ Dim sqlselect_nachOrt = ""
+ If Gruppierung_nach_Ort Then
+ sqljoin_nachOrt = "INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode and tbl_IDS_Stationen.[OutletCountryCode]=740543"
+ sqlgroup_nachOrt = ",tbl_IDS_Stationen.OutletOrt"
+ sqlselect_nachOrt = "tbl_IDS_Stationen.OutletOrt,"
+ End If
+
Select Case art
Case "IDS" 'Offert17
- sqlWhere = " AND tblIDSTransactionsNew.[OutletCountryCode]<>740543"
- sqlSelect = " tblIDSTransactionsNew.[OutletCountry]"
- sqlGroup = " tblIDSTransactionsNew.[OutletCountry]"
+
+ sqlstr = "SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
+ Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag],
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
+ FROM((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode ) INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
+ Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.[OutletCountryCode]<>740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & "
+ GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz"
+
+
Case "IDS_AT" 'Offert21
- sqlWhere = " AND tblIDSTransactionsNew.[OutletCountryCode]=740543"
- sqlSelect = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END AS OutletCountry"
- sqlGroup = " CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END"
+
+ sqlstr = " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 And 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END AS OutletCountry, tbl_IDS_Produkte.ProductDescription," & sqlselect_nachOrt & " tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
+ Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag],
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
+ FROM tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode " & sqljoin_nachOrt & " INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
+ Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' And tblIDSTransactionsNew.[OutletCountryCode]=740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & "
+ GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END, tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz" & sqlgroup_nachOrt
+
End Select
- sqlstr &= " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlSelect & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
- case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
- Sum(tblIDSTransactionsNew.Rabattbetrag) AS [SummevonRabattbetrag],
- case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
- FROM ((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte ON tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode) INNER JOIN Adressen ON tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
- WHERE cast(tblIDSTransactionsNew.YearMonthDay as Date) = '" & DateTimePicker2.Text & "' AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & sqlWhere & "
- GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], " & sqlGroup & ", tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz;
- "
Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL")
If dt Is DBNull.Value Then Return ""
@@ -3210,7 +3223,16 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
rpt.txtKunde.Text = SQL.isDbnullEmpty(rpt.Fields.Item("AdressenNr").Value, "")
rpt.txtKunde.Text &= " " & SQL.isDbnullEmpty(rpt.Fields.Item("Name 1").Value, "")
- rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "")
+ Dim Station As String = ""
+ If Gruppierung_nach_Ort Then
+ Station = SQL.isDbnullEmpty(rpt.Fields.Item("OutletOrt").Value, "")
+ If Station <> "" Then
+ Station = " (" & Station & ")"
+ End If
+ End If
+
+
+ rpt.txtProduktBeschreibung.Text = SQL.isDbnullEmpty(rpt.Fields.Item("ProductDescription").Value, "") & Station
rpt.txtLiter.Text = SQL.isDbnullEmpty(rpt.Fields.Item("Liter").Value, "")
rpt.txtPreis.Text = SQL.isDbnullEmptyDbl(rpt.Fields.Item("NettopreisProLiter").Value, 4, "")
@@ -4715,6 +4737,27 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
+
+ Dim IDSfehlendeStationen_AUSTRIA As Integer = 0
+
+ IDSfehlendeStationen_AUSTRIA = CInt((New SQL).getValueTxtBySql("select COUNT(*) from (
+ select tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName
+ from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' and OutletCountry = 'Austria' and tblIDSTransactionsNew.OutletCode not in (select tbl_IDS_Stationen.OutletCode from tbl_IDS_Stationen)
+ group by tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName ) as temp", "FMZOLL"))
+
+ If IDSfehlendeStationen_AUSTRIA >= 1 Then
+ pruefData_IDS = False
+ Dim hint As String = ""
+ ' If IDSfehlendeStationen_AUSTRIA <= 10 Then
+ ' hint &= SQL.getValueTxtBySql("select tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry
+ 'from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & DateTimePicker2.Text & "' and OutletCountry = 'Austria' and tblIDSTransactionsNew.OutletCode not in (select tbl_IDS_Stationen.OutletCode from tbl_IDS_Stationen)
+ 'group by tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry ", "FMZOLL")
+ ' End If
+ MsgBox("Es befinden sich unter den Transaktionen " & IDSfehlendeStationen_AUSTRIA & " österrreichische Stationen, die nicht in der Tabelle IDS_STATIONEN angelegt wurden " & vbNewLine & "Diese STATIONEN müssen nachgetragen werden, um den AT Mautbericht korrekt zu erstellen (bitte an Administrator wenden)." & IIf(hint <> "", vbNewLine & hint, ""))
+ End If
+
+
+
Dim fehlendeRechnungen As Integer = 0
fehlendeRechnungen = CInt((New SQL).getValueTxtBySql("select count(*) from tblIDSInvoicesNew where DocumentName is null and cast(YearMonthDay as Date) = '" & DateTimePicker2.Text & "'", "FMZOLL"))
@@ -4841,7 +4884,7 @@ LEFT JOIN VERAG.dbo.tbl_IDS_Länder land
If Not vbYes = MsgBox("Aktuell ist der Testlauf aktiviert, wirklich fortfahren?", vbYesNoCancel) Then Exit Sub
End If
- If vbYes = MsgBox("Möchten Sie den Vorgang wirklich manuell ausgeführen (wird bei Rechnungserstellung automatisch ausgeführt)", vbYesNoCancel) Then
+ If vbYes = MsgBox("Möchten Sie den Vorgang wirklich manuell ausführen (wird bei Rechnungserstellung automatisch ausgeführt)", vbYesNoCancel) Then
If Not checkAbrechnungsdatum(datPloseAnhang.Value) Then Exit Sub
diff --git a/SDL/mdm/rptPOS_ZNB.Designer.vb b/SDL/mdm/rptPOS_ZNB.Designer.vb
new file mode 100644
index 00000000..435b4878
--- /dev/null
+++ b/SDL/mdm/rptPOS_ZNB.Designer.vb
@@ -0,0 +1,758 @@
+
+Partial Public Class rptPOS_ZNB
+ Inherits GrapeCity.ActiveReports.SectionReport
+
+ 'Form overrides dispose to clean up the component list.
+ Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
+ If disposing Then
+ End If
+ MyBase.Dispose(disposing)
+ End Sub
+
+ 'NOTE: The following procedure is required by the ActiveReports Designer
+ 'It can be modified using the ActiveReports Designer.
+ 'Do not modify it using the code editor.
+ Private WithEvents PageHeader As GrapeCity.ActiveReports.SectionReportModel.PageHeader
+ Private WithEvents PageFooter As GrapeCity.ActiveReports.SectionReportModel.PageFooter
+
+ Private Sub InitializeComponent()
+ Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(rptPOS_ZNB))
+ Me.PageHeader = New GrapeCity.ActiveReports.SectionReportModel.PageHeader()
+ Me.lblReNr = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblReDat = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblReBetrag = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblZahlungsdat = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblTage = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblZinsen = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblVZ = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Label5 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Detail = New GrapeCity.ActiveReports.SectionReportModel.Detail()
+ Me.txt_Anmerkung = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtREnr = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtReDat = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtZE = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtReBetrag = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtTage = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtZinsen = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtVZ = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.txtFaellig = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.PageFooter = New GrapeCity.ActiveReports.SectionReportModel.PageFooter()
+ Me.Line2 = New GrapeCity.ActiveReports.SectionReportModel.Line()
+ Me.ReportInfo2 = New GrapeCity.ActiveReports.SectionReportModel.ReportInfo()
+ Me.ReportHeader1 = New GrapeCity.ActiveReports.SectionReportModel.ReportHeader()
+ Me.lblRgDatum = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.txtKunde = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.Label16 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Picture1 = New GrapeCity.ActiveReports.SectionReportModel.Picture()
+ Me.picVERAG = New GrapeCity.ActiveReports.SectionReportModel.Picture()
+ Me.lblUeberschriftRG_GS = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Line3 = New GrapeCity.ActiveReports.SectionReportModel.Line()
+ Me.lblFirmaOrt = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblFirmaStrasse = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblFirmaTel = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblFirmaFax = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblFirmaEmail = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblFirmaWeb = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Label18 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Label1 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.TextBox1 = New GrapeCity.ActiveReports.SectionReportModel.TextBox()
+ Me.Label2 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Label3 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Label4 = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblHeader = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.ReportFooter1 = New GrapeCity.ActiveReports.SectionReportModel.ReportFooter()
+ Me.txtBruttoGesSum = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.lblGessumme = New GrapeCity.ActiveReports.SectionReportModel.Label()
+ Me.Line7 = New GrapeCity.ActiveReports.SectionReportModel.Line()
+ Me.Line8 = New GrapeCity.ActiveReports.SectionReportModel.Line()
+ CType(Me.lblReNr, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblReDat, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblReBetrag, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblZahlungsdat, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblTage, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblZinsen, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblVZ, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label5, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txt_Anmerkung, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtREnr, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtReDat, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtZE, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtReBetrag, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtTage, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtZinsen, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtVZ, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtFaellig, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.ReportInfo2, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblRgDatum, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtKunde, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label16, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Picture1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.picVERAG, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblUeberschriftRG_GS, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblFirmaOrt, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblFirmaStrasse, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblFirmaTel, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblFirmaFax, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblFirmaEmail, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblFirmaWeb, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label18, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.TextBox1, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label2, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label3, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.Label4, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblHeader, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.txtBruttoGesSum, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me.lblGessumme, System.ComponentModel.ISupportInitialize).BeginInit()
+ CType(Me, System.ComponentModel.ISupportInitialize).BeginInit()
+ '
+ 'PageHeader
+ '
+ Me.PageHeader.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.lblReNr, Me.lblReDat, Me.lblReBetrag, Me.lblZahlungsdat, Me.lblTage, Me.lblZinsen, Me.lblVZ, Me.Label5})
+ Me.PageHeader.Height = 0.1458333!
+ Me.PageHeader.Name = "PageHeader"
+ '
+ 'lblReNr
+ '
+ Me.lblReNr.Height = 0.1433071!
+ Me.lblReNr.HyperLink = Nothing
+ Me.lblReNr.Left = 0.01417351!
+ Me.lblReNr.Name = "lblReNr"
+ Me.lblReNr.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" &
+ "har-set: 0"
+ Me.lblReNr.Text = "RENR"
+ Me.lblReNr.Top = 0!
+ Me.lblReNr.Width = 0.9220473!
+ '
+ 'lblReDat
+ '
+ Me.lblReDat.Height = 0.1433071!
+ Me.lblReDat.HyperLink = Nothing
+ Me.lblReDat.Left = 0.9362205!
+ Me.lblReDat.Name = "lblReDat"
+ Me.lblReDat.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" &
+ "har-set: 0"
+ Me.lblReDat.Text = "RE Datum"
+ Me.lblReDat.Top = 0!
+ Me.lblReDat.Width = 0.9842521!
+ '
+ 'lblReBetrag
+ '
+ Me.lblReBetrag.Height = 0.1433071!
+ Me.lblReBetrag.HyperLink = Nothing
+ Me.lblReBetrag.Left = 4.343308!
+ Me.lblReBetrag.Name = "lblReBetrag"
+ Me.lblReBetrag.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" &
+ "har-set: 0"
+ Me.lblReBetrag.Text = "RE Betrag"
+ Me.lblReBetrag.Top = 0!
+ Me.lblReBetrag.Width = 1.181102!
+ '
+ 'lblZahlungsdat
+ '
+ Me.lblZahlungsdat.Height = 0.1433071!
+ Me.lblZahlungsdat.HyperLink = Nothing
+ Me.lblZahlungsdat.Left = 2.64252!
+ Me.lblZahlungsdat.Name = "lblZahlungsdat"
+ Me.lblZahlungsdat.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" &
+ "har-set: 0"
+ Me.lblZahlungsdat.Text = "Zahlung"
+ Me.lblZahlungsdat.Top = 0!
+ Me.lblZahlungsdat.Width = 0.9661417!
+ '
+ 'lblTage
+ '
+ Me.lblTage.Height = 0.1433071!
+ Me.lblTage.HyperLink = Nothing
+ Me.lblTage.Left = 3.608661!
+ Me.lblTage.Name = "lblTage"
+ Me.lblTage.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" &
+ "har-set: 0"
+ Me.lblTage.Text = "VZ Tage"
+ Me.lblTage.Top = 0!
+ Me.lblTage.Width = 0.7346458!
+ '
+ 'lblZinsen
+ '
+ Me.lblZinsen.Height = 0.1433071!
+ Me.lblZinsen.HyperLink = Nothing
+ Me.lblZinsen.Left = 5.936615!
+ Me.lblZinsen.Name = "lblZinsen"
+ Me.lblZinsen.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" &
+ "har-set: 0"
+ Me.lblZinsen.Text = "Zinsen p.a."
+ Me.lblZinsen.Top = 0.002362205!
+ Me.lblZinsen.Width = 0.7374014!
+ '
+ 'lblVZ
+ '
+ Me.lblVZ.Height = 0.1433071!
+ Me.lblVZ.HyperLink = Nothing
+ Me.lblVZ.Left = 6.674016!
+ Me.lblVZ.Name = "lblVZ"
+ Me.lblVZ.Style = "font-size: 6.75pt; font-weight: bold; text-align: right; text-justify: auto; ddo-" &
+ "char-set: 0"
+ Me.lblVZ.Text = "Verzugszinsen"
+ Me.lblVZ.Top = 0!
+ Me.lblVZ.Width = 0.8169292!
+ '
+ 'Label5
+ '
+ Me.Label5.Height = 0.1433071!
+ Me.Label5.HyperLink = Nothing
+ Me.Label5.Left = 1.920473!
+ Me.Label5.Name = "Label5"
+ Me.Label5.Style = "font-size: 6.75pt; font-weight: bold; text-align: left; text-justify: auto; ddo-c" &
+ "har-set: 0"
+ Me.Label5.Text = "Fällig"
+ Me.Label5.Top = 0!
+ Me.Label5.Width = 0.7220473!
+ '
+ 'Detail
+ '
+ Me.Detail.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txt_Anmerkung, Me.txtREnr, Me.txtReDat, Me.txtZE, Me.txtReBetrag, Me.txtTage, Me.txtZinsen, Me.txtVZ, Me.txtFaellig})
+ Me.Detail.Height = 0.1338583!
+ Me.Detail.KeepTogether = True
+ Me.Detail.Name = "Detail"
+ '
+ 'txt_Anmerkung
+ '
+ Me.txt_Anmerkung.Height = 0.1338583!
+ Me.txt_Anmerkung.Left = 1.903543!
+ Me.txt_Anmerkung.Name = "txt_Anmerkung"
+ Me.txt_Anmerkung.Padding = New GrapeCity.ActiveReports.PaddingEx(6, 0, 0, 0)
+ Me.txt_Anmerkung.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: center; ddo-ch" &
+ "ar-set: 0"
+ Me.txt_Anmerkung.Text = "-"
+ Me.txt_Anmerkung.Top = 0!
+ Me.txt_Anmerkung.Visible = False
+ Me.txt_Anmerkung.Width = 3.620866!
+ '
+ 'txtREnr
+ '
+ Me.txtREnr.Height = 0.1338583!
+ Me.txtREnr.Left = 0.01417323!
+ Me.txtREnr.Name = "txtREnr"
+ Me.txtREnr.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" &
+ "-set: 0"
+ Me.txtREnr.Text = "-"
+ Me.txtREnr.Top = 0!
+ Me.txtREnr.Width = 0.9220473!
+ '
+ 'txtReDat
+ '
+ Me.txtReDat.Height = 0.1338583!
+ Me.txtReDat.Left = 0.9362202!
+ Me.txtReDat.Name = "txtReDat"
+ Me.txtReDat.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" &
+ "-set: 0"
+ Me.txtReDat.Text = "-"
+ Me.txtReDat.Top = 0!
+ Me.txtReDat.Width = 0.9842521!
+ '
+ 'txtZE
+ '
+ Me.txtZE.Height = 0.1338583!
+ Me.txtZE.Left = 2.64252!
+ Me.txtZE.Name = "txtZE"
+ Me.txtZE.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" &
+ "-set: 0"
+ Me.txtZE.Text = "-"
+ Me.txtZE.Top = 0!
+ Me.txtZE.Width = 0.9661417!
+ '
+ 'txtReBetrag
+ '
+ Me.txtReBetrag.Height = 0.1338583!
+ Me.txtReBetrag.Left = 4.343308!
+ Me.txtReBetrag.Name = "txtReBetrag"
+ Me.txtReBetrag.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" &
+ "-set: 0"
+ Me.txtReBetrag.Text = "-"
+ Me.txtReBetrag.Top = 0!
+ Me.txtReBetrag.Width = 0.8267722!
+ '
+ 'txtTage
+ '
+ Me.txtTage.Height = 0.1338583!
+ Me.txtTage.Left = 3.608661!
+ Me.txtTage.Name = "txtTage"
+ Me.txtTage.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" &
+ "-set: 0"
+ Me.txtTage.Text = "-"
+ Me.txtTage.Top = 0!
+ Me.txtTage.Width = 0.6618112!
+ '
+ 'txtZinsen
+ '
+ Me.txtZinsen.Height = 0.1338583!
+ Me.txtZinsen.Left = 6.753544!
+ Me.txtZinsen.Name = "txtZinsen"
+ Me.txtZinsen.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: right; ddo-cha" &
+ "r-set: 0"
+ Me.txtZinsen.Text = "-"
+ Me.txtZinsen.Top = 0!
+ Me.txtZinsen.Width = 0.7374014!
+ '
+ 'txtVZ
+ '
+ Me.txtVZ.Height = 0.1338583!
+ Me.txtVZ.Left = 5.936615!
+ Me.txtVZ.Name = "txtVZ"
+ Me.txtVZ.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: center; ddo-ch" &
+ "ar-set: 0"
+ Me.txtVZ.Text = "-"
+ Me.txtVZ.Top = 0!
+ Me.txtVZ.Width = 0.7492127!
+ '
+ 'txtFaellig
+ '
+ Me.txtFaellig.Height = 0.1338583!
+ Me.txtFaellig.Left = 1.920472!
+ Me.txtFaellig.Name = "txtFaellig"
+ Me.txtFaellig.Style = "color: #202020; font-size: 6.75pt; font-style: italic; text-align: left; ddo-char" &
+ "-set: 0"
+ Me.txtFaellig.Text = "-"
+ Me.txtFaellig.Top = 0!
+ Me.txtFaellig.Width = 0.7220473!
+ '
+ 'PageFooter
+ '
+ Me.PageFooter.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.Line2, Me.ReportInfo2})
+ Me.PageFooter.Height = 0.2503937!
+ Me.PageFooter.Name = "PageFooter"
+ '
+ 'Line2
+ '
+ Me.Line2.Height = 0!
+ Me.Line2.Left = 0!
+ Me.Line2.LineWeight = 1.0!
+ Me.Line2.Name = "Line2"
+ Me.Line2.Top = 0.07401575!
+ Me.Line2.Width = 7.480313!
+ Me.Line2.X1 = 0!
+ Me.Line2.X2 = 7.480313!
+ Me.Line2.Y1 = 0.07401575!
+ Me.Line2.Y2 = 0.07401575!
+ '
+ 'ReportInfo2
+ '
+ Me.ReportInfo2.FormatString = "Seite {PageNumber} von {PageCount} Seiten "
+ Me.ReportInfo2.Height = 0.1330709!
+ Me.ReportInfo2.Left = 5.480315!
+ Me.ReportInfo2.Name = "ReportInfo2"
+ Me.ReportInfo2.Style = "font-size: 8pt; text-align: right"
+ Me.ReportInfo2.Top = 0.1173228!
+ Me.ReportInfo2.Width = 1.994928!
+ '
+ 'ReportHeader1
+ '
+ Me.ReportHeader1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.lblRgDatum, Me.txtKunde, Me.Label16, Me.Picture1, Me.picVERAG, Me.lblUeberschriftRG_GS, Me.Line3, Me.lblFirmaOrt, Me.lblFirmaStrasse, Me.lblFirmaTel, Me.lblFirmaFax, Me.lblFirmaEmail, Me.lblFirmaWeb, Me.Label18, Me.Label1, Me.TextBox1, Me.Label2, Me.Label3, Me.Label4, Me.lblHeader})
+ Me.ReportHeader1.Height = 1.405906!
+ Me.ReportHeader1.Name = "ReportHeader1"
+ '
+ 'lblRgDatum
+ '
+ Me.lblRgDatum.Height = 0.1574803!
+ Me.lblRgDatum.HyperLink = Nothing
+ Me.lblRgDatum.Left = 6.674016!
+ Me.lblRgDatum.Name = "lblRgDatum"
+ Me.lblRgDatum.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" &
+ "-char-set: 1"
+ Me.lblRgDatum.Text = "01.01.2019"
+ Me.lblRgDatum.Top = 0.6716536!
+ Me.lblRgDatum.Width = 0.7921257!
+ '
+ 'txtKunde
+ '
+ Me.txtKunde.Height = 0.1574802!
+ Me.txtKunde.HyperLink = Nothing
+ Me.txtKunde.Left = 5.111811!
+ Me.txtKunde.Name = "txtKunde"
+ Me.txtKunde.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" &
+ "-char-set: 1"
+ Me.txtKunde.Text = "1000000 TEST"
+ Me.txtKunde.Top = 0.8291339!
+ Me.txtKunde.Width = 2.354331!
+ '
+ 'Label16
+ '
+ Me.Label16.Height = 0.1574803!
+ Me.Label16.HyperLink = Nothing
+ Me.Label16.Left = 4.304331!
+ Me.Label16.Name = "Label16"
+ Me.Label16.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.Label16.Text = "Kunde:"
+ Me.Label16.Top = 0.8291339!
+ Me.Label16.Width = 0.8114175!
+ '
+ 'Picture1
+ '
+ Me.Picture1.Height = 0.6102362!
+ Me.Picture1.HyperLink = Nothing
+ Me.Picture1.ImageBase64String = resources.GetString("Picture1.ImageBase64String")
+ Me.Picture1.Left = 3.244882!
+ Me.Picture1.Name = "Picture1"
+ Me.Picture1.SizeMode = GrapeCity.ActiveReports.SectionReportModel.SizeModes.Zoom
+ Me.Picture1.Top = 0!
+ Me.Picture1.Visible = False
+ Me.Picture1.Width = 1.059449!
+ '
+ 'picVERAG
+ '
+ Me.picVERAG.Height = 0.4169292!
+ Me.picVERAG.HyperLink = Nothing
+ Me.picVERAG.ImageBase64String = resources.GetString("picVERAG.ImageBase64String")
+ Me.picVERAG.Left = 0.01023622!
+ Me.picVERAG.Name = "picVERAG"
+ Me.picVERAG.SizeMode = GrapeCity.ActiveReports.SectionReportModel.SizeModes.Zoom
+ Me.picVERAG.Top = 0.1220473!
+ Me.picVERAG.Width = 2.198425!
+ '
+ 'lblUeberschriftRG_GS
+ '
+ Me.lblUeberschriftRG_GS.Height = 0.2311024!
+ Me.lblUeberschriftRG_GS.HyperLink = Nothing
+ Me.lblUeberschriftRG_GS.Left = 4.500394!
+ Me.lblUeberschriftRG_GS.Name = "lblUeberschriftRG_GS"
+ Me.lblUeberschriftRG_GS.Style = "font-size: 12pt; font-weight: bold; text-align: right; ddo-char-set: 1"
+ Me.lblUeberschriftRG_GS.Text = "Anlage zur Sammelrechnung"
+ Me.lblUeberschriftRG_GS.Top = 0.3870079!
+ Me.lblUeberschriftRG_GS.Width = 2.969686!
+ '
+ 'Line3
+ '
+ Me.Line3.Height = 0!
+ Me.Line3.Left = 0.002755864!
+ Me.Line3.LineColor = System.Drawing.Color.DimGray
+ Me.Line3.LineWeight = 1.0!
+ Me.Line3.Name = "Line3"
+ Me.Line3.Top = 0.6102362!
+ Me.Line3.Width = 7.475196!
+ Me.Line3.X1 = 0.002755864!
+ Me.Line3.X2 = 7.477952!
+ Me.Line3.Y1 = 0.6102362!
+ Me.Line3.Y2 = 0.6102362!
+ '
+ 'lblFirmaOrt
+ '
+ Me.lblFirmaOrt.Height = 0.1181102!
+ Me.lblFirmaOrt.HyperLink = Nothing
+ Me.lblFirmaOrt.Left = 0.01417317!
+ Me.lblFirmaOrt.Name = "lblFirmaOrt"
+ Me.lblFirmaOrt.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.lblFirmaOrt.Text = "A-4975 Suben"
+ Me.lblFirmaOrt.Top = 0.7503937!
+ Me.lblFirmaOrt.Width = 1.19685!
+ '
+ 'lblFirmaStrasse
+ '
+ Me.lblFirmaStrasse.Height = 0.1181102!
+ Me.lblFirmaStrasse.HyperLink = Nothing
+ Me.lblFirmaStrasse.Left = 0.01417319!
+ Me.lblFirmaStrasse.Name = "lblFirmaStrasse"
+ Me.lblFirmaStrasse.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.lblFirmaStrasse.Text = "Suben Nr. 100"
+ Me.lblFirmaStrasse.Top = 0.8685039!
+ Me.lblFirmaStrasse.Width = 1.19685!
+ '
+ 'lblFirmaTel
+ '
+ Me.lblFirmaTel.Height = 0.1181103!
+ Me.lblFirmaTel.HyperLink = Nothing
+ Me.lblFirmaTel.Left = 1.211024!
+ Me.lblFirmaTel.Name = "lblFirmaTel"
+ Me.lblFirmaTel.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.lblFirmaTel.Text = "Tel. +43 7711 2777 - 0"
+ Me.lblFirmaTel.Top = 0.7503937!
+ Me.lblFirmaTel.Width = 1.28189!
+ '
+ 'lblFirmaFax
+ '
+ Me.lblFirmaFax.Height = 0.1181103!
+ Me.lblFirmaFax.HyperLink = Nothing
+ Me.lblFirmaFax.Left = 1.211024!
+ Me.lblFirmaFax.Name = "lblFirmaFax"
+ Me.lblFirmaFax.Style = "font-size: 7pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.lblFirmaFax.Text = "Fax +43 7711 31600"
+ Me.lblFirmaFax.Top = 0.868504!
+ Me.lblFirmaFax.Width = 1.28189!
+ '
+ 'lblFirmaEmail
+ '
+ Me.lblFirmaEmail.Height = 0.1181103!
+ Me.lblFirmaEmail.HyperLink = Nothing
+ Me.lblFirmaEmail.Left = 2.492913!
+ Me.lblFirmaEmail.Name = "lblFirmaEmail"
+ Me.lblFirmaEmail.Style = "font-size: 7pt; font-weight: normal; text-align: right; vertical-align: middle; d" &
+ "do-char-set: 1"
+ Me.lblFirmaEmail.Text = "s.kriegner@verag.ag"
+ Me.lblFirmaEmail.Top = 0.868504!
+ Me.lblFirmaEmail.Width = 1.436614!
+ '
+ 'lblFirmaWeb
+ '
+ Me.lblFirmaWeb.Height = 0.1181102!
+ Me.lblFirmaWeb.HyperLink = Nothing
+ Me.lblFirmaWeb.Left = 2.492913!
+ Me.lblFirmaWeb.Name = "lblFirmaWeb"
+ Me.lblFirmaWeb.Style = "font-size: 7pt; font-weight: normal; text-align: right; vertical-align: middle; d" &
+ "do-char-set: 1"
+ Me.lblFirmaWeb.Text = "www.verag.ag"
+ Me.lblFirmaWeb.Top = 0.7503937!
+ Me.lblFirmaWeb.Width = 1.436614!
+ '
+ 'Label18
+ '
+ Me.Label18.Height = 0.1574803!
+ Me.Label18.HyperLink = Nothing
+ Me.Label18.Left = 6.237402!
+ Me.Label18.Name = "Label18"
+ Me.Label18.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.Label18.Text = "Datum:"
+ Me.Label18.Top = 0.6716536!
+ Me.Label18.Width = 0.436614!
+ '
+ 'Label1
+ '
+ Me.Label1.Height = 0.2311024!
+ Me.Label1.HyperLink = Nothing
+ Me.Label1.Left = 4.496457!
+ Me.Label1.Name = "Label1"
+ Me.Label1.Style = "font-size: 12pt; font-weight: bold; text-align: right; ddo-char-set: 1"
+ Me.Label1.Text = "-"
+ Me.Label1.Top = 0.0523622!
+ Me.Label1.Width = 2.969686!
+ '
+ 'TextBox1
+ '
+ Me.TextBox1.Height = 0.1574803!
+ Me.TextBox1.Left = 5.0!
+ Me.TextBox1.Name = "TextBox1"
+ Me.TextBox1.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" &
+ "-char-set: 1"
+ Me.TextBox1.Text = "1000000"
+ Me.TextBox1.Top = 0.9866142!
+ Me.TextBox1.Width = 0.8688979!
+ '
+ 'Label2
+ '
+ Me.Label2.Height = 0.1574803!
+ Me.Label2.HyperLink = Nothing
+ Me.Label2.Left = 4.304331!
+ Me.Label2.Name = "Label2"
+ Me.Label2.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.Label2.Text = "Partner-Kunden-Nr:"
+ Me.Label2.Top = 0.9866142!
+ Me.Label2.Width = 1.020079!
+ '
+ 'Label3
+ '
+ Me.Label3.Height = 0.1574803!
+ Me.Label3.HyperLink = Nothing
+ Me.Label3.Left = 5.983465!
+ Me.Label3.Name = "Label3"
+ Me.Label3.Style = "font-size: 8pt; font-weight: normal; text-align: left; vertical-align: middle; dd" &
+ "o-char-set: 1"
+ Me.Label3.Text = "Zeitraum bis:"
+ Me.Label3.Top = 0.9866142!
+ Me.Label3.Width = 0.6905512!
+ '
+ 'Label4
+ '
+ Me.Label4.Height = 0.1574803!
+ Me.Label4.HyperLink = Nothing
+ Me.Label4.Left = 6.670079!
+ Me.Label4.Name = "Label4"
+ Me.Label4.Style = "font-size: 8pt; font-weight: bold; text-align: right; vertical-align: middle; ddo" &
+ "-char-set: 1"
+ Me.Label4.Text = "01.01.2019"
+ Me.Label4.Top = 0.9866142!
+ Me.Label4.Width = 0.7960634!
+ '
+ 'lblHeader
+ '
+ Me.lblHeader.Height = 0.2094488!
+ Me.lblHeader.HyperLink = Nothing
+ Me.lblHeader.Left = 0!
+ Me.lblHeader.Name = "lblHeader"
+ Me.lblHeader.Padding = New GrapeCity.ActiveReports.PaddingEx(6, 0, 0, 0)
+ Me.lblHeader.Style = "background-color: #003680; color: White; font-size: 10pt; font-weight: bold; text" &
+ "-align: left; text-justify: auto; vertical-align: middle; ddo-char-set: 1"
+ Me.lblHeader.Text = "VERZUGSZINSEN"
+ Me.lblHeader.Top = 1.196457!
+ Me.lblHeader.Width = 7.466146!
+ '
+ 'ReportFooter1
+ '
+ Me.ReportFooter1.Controls.AddRange(New GrapeCity.ActiveReports.SectionReportModel.ARControl() {Me.txtBruttoGesSum, Me.lblGessumme, Me.Line7, Me.Line8})
+ Me.ReportFooter1.Height = 0.6578248!
+ Me.ReportFooter1.KeepTogether = True
+ Me.ReportFooter1.Name = "ReportFooter1"
+ '
+ 'txtBruttoGesSum
+ '
+ Me.txtBruttoGesSum.Height = 0.1417323!
+ Me.txtBruttoGesSum.HyperLink = Nothing
+ Me.txtBruttoGesSum.Left = 6.563386!
+ Me.txtBruttoGesSum.Name = "txtBruttoGesSum"
+ Me.txtBruttoGesSum.Style = "font-size: 8pt; font-weight: bold; text-align: right; ddo-char-set: 1"
+ Me.txtBruttoGesSum.Text = "Betrag"
+ Me.txtBruttoGesSum.Top = 0.1098426!
+ Me.txtBruttoGesSum.Width = 0.9169284!
+ '
+ 'lblGessumme
+ '
+ Me.lblGessumme.Height = 0.1417323!
+ Me.lblGessumme.HyperLink = Nothing
+ Me.lblGessumme.Left = 3.244878!
+ Me.lblGessumme.Name = "lblGessumme"
+ Me.lblGessumme.Style = "font-size: 8pt; font-weight: bold; text-align: right; ddo-char-set: 1; ddo-font-v" &
+ "ertical: none"
+ Me.lblGessumme.Text = "Gesamtsumme:"
+ Me.lblGessumme.Top = 0.1098426!
+ Me.lblGessumme.Width = 1.484645!
+ '
+ 'Line7
+ '
+ Me.Line7.Height = 0!
+ Me.Line7.Left = 0.002752304!
+ Me.Line7.LineWeight = 2.0!
+ Me.Line7.Name = "Line7"
+ Me.Line7.Top = 0!
+ Me.Line7.Width = 7.475196!
+ Me.Line7.X1 = 0.002752304!
+ Me.Line7.X2 = 7.477948!
+ Me.Line7.Y1 = 0!
+ Me.Line7.Y2 = 0!
+ '
+ 'Line8
+ '
+ Me.Line8.Height = 0!
+ Me.Line8.Left = 0.002752304!
+ Me.Line8.LineWeight = 2.0!
+ Me.Line8.Name = "Line8"
+ Me.Line8.Top = 0.03543304!
+ Me.Line8.Width = 7.475196!
+ Me.Line8.X1 = 0.002752304!
+ Me.Line8.X2 = 7.477948!
+ Me.Line8.Y1 = 0.03543304!
+ Me.Line8.Y2 = 0.03543304!
+ '
+ 'rptPOS_ZNB
+ '
+ Me.MasterReport = False
+ Me.PageSettings.Margins.Bottom = 0.3937008!
+ Me.PageSettings.Margins.Left = 0.3937008!
+ Me.PageSettings.Margins.Right = 0.3937008!
+ Me.PageSettings.Margins.Top = 0.3937008!
+ Me.PageSettings.PaperHeight = 11.0!
+ Me.PageSettings.PaperWidth = 8.5!
+ Me.PrintWidth = 7.490945!
+ Me.Sections.Add(Me.ReportHeader1)
+ Me.Sections.Add(Me.PageHeader)
+ Me.Sections.Add(Me.Detail)
+ Me.Sections.Add(Me.PageFooter)
+ Me.Sections.Add(Me.ReportFooter1)
+ Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: Arial; font-style: normal; text-decoration: none; font-weight: norma" &
+ "l; font-size: 10pt; color: Black; ddo-char-set: 204", "Normal"))
+ Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-size: 16pt; font-weight: bold", "Heading1", "Normal"))
+ Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-family: Times New Roman; font-size: 14pt; font-weight: bold; font-style: ita" &
+ "lic", "Heading2", "Normal"))
+ Me.StyleSheet.Add(New DDCssLib.StyleSheetRule("font-size: 13pt; font-weight: bold", "Heading3", "Normal"))
+ CType(Me.lblReNr, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblReDat, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblReBetrag, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblZahlungsdat, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblTage, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblZinsen, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblVZ, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label5, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txt_Anmerkung, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtREnr, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtReDat, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtZE, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtReBetrag, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtTage, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtZinsen, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtVZ, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtFaellig, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.ReportInfo2, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblRgDatum, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtKunde, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label16, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Picture1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.picVERAG, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblUeberschriftRG_GS, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblFirmaOrt, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblFirmaStrasse, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblFirmaTel, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblFirmaFax, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblFirmaEmail, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblFirmaWeb, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label18, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.TextBox1, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label2, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label3, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.Label4, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblHeader, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.txtBruttoGesSum, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me.lblGessumme, System.ComponentModel.ISupportInitialize).EndInit()
+ CType(Me, System.ComponentModel.ISupportInitialize).EndInit()
+
+ End Sub
+ Private WithEvents ReportHeader1 As GrapeCity.ActiveReports.SectionReportModel.ReportHeader
+ Private WithEvents Line2 As GrapeCity.ActiveReports.SectionReportModel.Line
+ Public WithEvents Detail As GrapeCity.ActiveReports.SectionReportModel.Detail
+ Public WithEvents lblUeberschriftRG_GS As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents ReportInfo2 As GrapeCity.ActiveReports.SectionReportModel.ReportInfo
+ Public WithEvents ReportFooter1 As GrapeCity.ActiveReports.SectionReportModel.ReportFooter
+ Private WithEvents Line3 As GrapeCity.ActiveReports.SectionReportModel.Line
+ Private WithEvents Label18 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents txtKunde As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents lblRgDatum As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents Picture1 As GrapeCity.ActiveReports.SectionReportModel.Picture
+ Public WithEvents picVERAG As GrapeCity.ActiveReports.SectionReportModel.Picture
+ Public WithEvents lblFirmaOrt As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents lblFirmaStrasse As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents lblFirmaTel As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents lblFirmaFax As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents lblFirmaEmail As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents lblFirmaWeb As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents Label16 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents Line7 As GrapeCity.ActiveReports.SectionReportModel.Line
+ Private WithEvents Line8 As GrapeCity.ActiveReports.SectionReportModel.Line
+ Public WithEvents txtBruttoGesSum As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents lblGessumme As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents Label1 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents TextBox1 As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents Label2 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents Label3 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents Label4 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents lblHeader As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents lblReNr As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents lblReDat As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents lblReBetrag As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents lblZahlungsdat As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents lblTage As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents lblZinsen As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents lblVZ As GrapeCity.ActiveReports.SectionReportModel.Label
+ Private WithEvents Label5 As GrapeCity.ActiveReports.SectionReportModel.Label
+ Public WithEvents txt_Anmerkung As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtREnr As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtReDat As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtZE As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtReBetrag As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtTage As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtZinsen As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtVZ As GrapeCity.ActiveReports.SectionReportModel.TextBox
+ Public WithEvents txtFaellig As GrapeCity.ActiveReports.SectionReportModel.TextBox
+End Class
diff --git a/SDL/mdm/rptPOS_ZNB.resx b/SDL/mdm/rptPOS_ZNB.resx
new file mode 100644
index 00000000..d44ec9f5
--- /dev/null
+++ b/SDL/mdm/rptPOS_ZNB.resx
@@ -0,0 +1,132 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ text/microsoft-resx
+
+
+ 2.0
+
+
+ System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ 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
+
+
+ 0, 0
+
+
+ 0, 0
+
+
\ No newline at end of file
diff --git a/SDL/mdm/rptPOS_ZNB.vb b/SDL/mdm/rptPOS_ZNB.vb
new file mode 100644
index 00000000..f909f366
--- /dev/null
+++ b/SDL/mdm/rptPOS_ZNB.vb
@@ -0,0 +1,120 @@
+Imports GrapeCity.ActiveReports
+Imports GrapeCity.ActiveReports.Document
+
+Public Class rptPOS_ZNB
+
+ Dim RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang = Nothing
+ Dim Betrag As Double
+ Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL
+ Sub New(RECHNUNG As VERAG_PROG_ALLGEMEIN.cRechnungsausgang, Betrag As Double)
+
+ ' Dieser Aufruf ist für den Designer erforderlich.
+ InitializeComponent()
+ Me.RECHNUNG = RECHNUNG
+ Me.Betrag = Betrag
+ ' Fügen Sie Initialisierungen nach dem InitializeComponent()-Aufruf hinzu.
+ End Sub
+
+
+ Private Sub Detail_Format(sender As Object, e As EventArgs) Handles Detail.Format
+ If Me.DataSource IsNot Nothing AndAlso Me.Fields IsNot Nothing Then
+ txtREnr.Text = ""
+ txtReDat.Text = ""
+ txtReBetrag.Text = ""
+
+ txtZE.Text = ""
+ txtTage.Text = ""
+ txtZinsen.Text = ""
+ txtVZ.Text = ""
+ txtFaellig.Text = ""
+ txt_Anmerkung.Text = ""
+
+ If Me.Fields.Item("clmnReNr") IsNot Nothing AndAlso Me.Fields.Item("clmnReNr").Value IsNot Nothing Then txtREnr.Text &= Me.Fields.Item("clmnReNr").Value.ToString
+ If Me.Fields.Item("clmnReDatum") IsNot Nothing AndAlso Me.Fields.Item("clmnReDatum").Value IsNot Nothing AndAlso IsDate(Me.Fields.Item("clmnReDatum").Value) Then txtReDat.Text &= CDate(Me.Fields.Item("clmnReDatum").Value).ToShortDateString
+ If Me.Fields.Item("clmnReBetrag") IsNot Nothing AndAlso Me.Fields.Item("clmnReBetrag").Value IsNot Nothing AndAlso IsNumeric(Me.Fields.Item("clmnReBetrag").Value) AndAlso CDbl(Me.Fields.Item("clmnReBetrag").Value) <> 0 Then txtReBetrag.Text &= Math.Abs(CDbl(Me.Fields.Item("clmnReBetrag").Value)).ToString("N2")
+ If Me.Fields.Item("clmnFaellig") IsNot Nothing AndAlso Me.Fields.Item("clmnFaellig").Value IsNot Nothing AndAlso IsDate(Me.Fields.Item("clmnFaellig").Value) Then txtFaellig.Text &= CDate(Me.Fields.Item("clmnFaellig").Value).ToShortDateString
+ If Me.Fields.Item("clmnZE") IsNot Nothing AndAlso Me.Fields.Item("clmnZE").Value IsNot Nothing Then
+ If IsDate(Me.Fields.Item("clmnZE").Value) Then
+ txtZE.Text &= CDate(Me.Fields.Item("clmnZE").Value).ToShortDateString
+ txt_Anmerkung.Visible = False
+ txtZE.Visible = True
+ txtFaellig.Visible = True
+ txtTage.Visible = True
+ txtReBetrag.Visible = True
+ Else
+ txt_Anmerkung.Text &= Me.Fields.Item("clmnZE").Value
+ txt_Anmerkung.Visible = True
+ txtZE.Visible = False
+ txtFaellig.Visible = False
+ txtTage.Visible = False
+ txtReBetrag.Visible = False
+ End If
+ End If
+ If Me.Fields.Item("clmnTage") IsNot Nothing AndAlso Me.Fields.Item("clmnTage").Value IsNot Nothing Then txtTage.Text &= Me.Fields.Item("clmnTage").Value.ToString
+ If Me.Fields.Item("clmnZinsen") IsNot Nothing AndAlso Me.Fields.Item("clmnZinsen").Value IsNot Nothing AndAlso IsNumeric(Me.Fields.Item("clmnZinsen").Value) AndAlso CDbl(Me.Fields.Item("clmnZinsen").Value) <> 0 Then txtZinsen.Text &= CDbl(Me.Fields.Item("clmnZinsen").Value).ToString("N2")
+ If Me.Fields.Item("clmnVZ") IsNot Nothing AndAlso Me.Fields.Item("clmnVZ").Value IsNot Nothing AndAlso IsNumeric(Me.Fields.Item("clmnVZ").Value) Then txtVZ.Text &= Me.Fields.Item("clmnVZ").Value.ToString() & "%"
+
+ End If
+ End Sub
+
+
+ Private Sub rptAuswertung_ReportStart(sender As System.Object, e As System.EventArgs) Handles MyBase.ReportStart
+
+
+ Dim dt As New DataTable
+ dt.Columns.Add("clmnID")
+ dt.Columns.Add("clmnReNr")
+ dt.Columns.Add("clmnReDatum")
+ dt.Columns.Add("clmnAbfNr")
+ dt.Columns.Add("clmnReBetrag")
+ dt.Columns.Add("clmnZE")
+ dt.Columns.Add("clmnTage")
+ dt.Columns.Add("clmnZinsen")
+ dt.Columns.Add("clmnVZ")
+ dt.Columns.Add("clmnFaellig")
+
+
+ If Betrag < 0 Then
+
+ Dim Rabatt As String = "Rabatt"
+
+ Select Case RECHNUNG.RechnungSprache
+ Case "EN" : Rabatt = "Discount"
+ Case "RO" : Rabatt = "Reducere"
+ Case "TR" : Rabatt = "İndirim"
+ Case Else
+ Rabatt = "Rabatt"
+
+ End Select
+
+
+ dt.Rows.Add("0", Rabatt, RECHNUNG.Abfertigungsdatum.ToShortDateString, "", "", "", "", Betrag.ToString, "", "")
+ 'dt.Rows.Add(rg.Item("clmnID"), rg.Item("clmnReNr"), rg.Item("clmnReDatum"), rg.Item("clmnAbfNr"), rg.Item("clmnReBetrag"), rg.Item("clmnZE"), rg.Item("clmnTage"), rg.Item("clmnZinsen"), rg.Item("clmnVZ"), rg.Item("clmnFaellig"))
+
+ Else
+
+
+ If RECHNUNG.BelegartenKz <> "AG" Then
+
+ ' Dim dtTemp As DataTable
+ ' dtTemp = SQL.loadDgvBySql_Param("select [id] as clmnID,[belegNr] as clmnReNr,[buchungstext] as clmnAbfNr,[zinssatz] clmnVZ,[belegZahlungsziel],[ueberschreitungInTagen] clmnTage,[zinsbetrag] clmnZinsen,[belegDatum] as clmnReDatum,[zahlungsBetrag] as clmnReBetrag,[zahlungDatum] as clmnZE, [faelligkeitsDatum] as clmnFaellig from tblMDM_Zinsberechnung where RK_ID =" & RECHNUNG.RK_ID, "FMZOLL")
+
+ For Each rg As DataRow In Me.DataSource.Rows
+ dt.Rows.Add(rg.Item("id"), rg.Item("belegNr"), rg.Item("belegDatum"), rg.Item("buchungstext"), rg.Item("zahlungsBetrag"), rg.Item("zahlungDatum"), rg.Item("ueberschreitungInTagen"), rg.Item("zinsbetrag"), rg.Item("zinssatz"), rg.Item("faelligkeitsDatum"))
+ Next
+ Else
+ dt.Rows.Add("0", "", RECHNUNG.Abfertigungsdatum.ToShortDateString, "", "", "", "", Betrag.ToString, "", "")
+
+ End If
+
+ End If
+
+
+
+ Me.DataSource = dt
+
+ End Sub
+
+
+
+End Class
diff --git a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb
index aaf70db4..d957d703 100644
--- a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb
+++ b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.Designer.vb
@@ -1,9 +1,9 @@
- _
+
Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers
Inherits System.Windows.Forms.UserControl
'UserControl überschreibt den Löschvorgang, um die Komponentenliste zu bereinigen.
- _
+
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
@@ -20,9 +20,9 @@ Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers
'Hinweis: Die folgende Prozedur ist für den Windows Form-Designer erforderlich.
'Das Bearbeiten ist mit dem Windows Form-Designer möglich.
'Das Bearbeiten mit dem Code-Editor ist nicht möglich.
- _
+
Private Sub InitializeComponent()
- Me.Button6 = New System.Windows.Forms.Button()
+ Me.Button4 = New System.Windows.Forms.Button()
Me.Button1 = New System.Windows.Forms.Button()
Me.cbxNurEULander = New System.Windows.Forms.CheckBox()
Me.Button2 = New System.Windows.Forms.Button()
@@ -30,19 +30,19 @@ Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers
Me.Button3 = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
- 'Button6
+ 'Button4
'
- Me.Button6.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.Button6.Image = Global.SDL.My.Resources.Resources.statistik_small
- Me.Button6.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.Button6.Location = New System.Drawing.Point(6, 3)
- Me.Button6.Name = "Button6"
- Me.Button6.Padding = New System.Windows.Forms.Padding(0, 0, 2, 0)
- Me.Button6.Size = New System.Drawing.Size(149, 41)
- Me.Button6.TabIndex = 48
- Me.Button6.Text = "Auswertung IT Maut " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "(Konsortium)"
- Me.Button6.TextAlign = System.Drawing.ContentAlignment.MiddleRight
- Me.Button6.UseVisualStyleBackColor = True
+ Me.Button4.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button4.Image = Global.SDL.My.Resources.Resources.statistik_small
+ Me.Button4.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.Button4.Location = New System.Drawing.Point(6, 3)
+ Me.Button4.Name = "Button4"
+ Me.Button4.Padding = New System.Windows.Forms.Padding(0, 0, 2, 0)
+ Me.Button4.Size = New System.Drawing.Size(149, 41)
+ Me.Button4.TabIndex = 48
+ Me.Button4.Text = "Auswertung IT Maut " & Global.Microsoft.VisualBasic.ChrW(13) & Global.Microsoft.VisualBasic.ChrW(10) & "(Konsortium)"
+ Me.Button4.TextAlign = System.Drawing.ContentAlignment.MiddleRight
+ Me.Button4.UseVisualStyleBackColor = True
'
'Button1
'
@@ -120,15 +120,15 @@ Partial Class usrCntlMDMDatenverarbeitungAuswertungen_divers
Me.Controls.Add(Me.Button2)
Me.Controls.Add(Me.cbxNurEULander)
Me.Controls.Add(Me.Button1)
- Me.Controls.Add(Me.Button6)
+ Me.Controls.Add(Me.Button4)
Me.Name = "usrCntlMDMDatenverarbeitungAuswertungen_divers"
- Me.Size = New System.Drawing.Size(295, 104)
+ Me.Size = New System.Drawing.Size(295, 114)
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
- Friend WithEvents Button6 As Button
+ Friend WithEvents Button4 As Button
Friend WithEvents Button1 As Button
Friend WithEvents cbxNurEULander As CheckBox
Friend WithEvents Button2 As Button
diff --git a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb
index 736f032c..9dc1ee18 100644
--- a/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb
+++ b/SDL/mdm/usrCntlMDMDatenverarbeitungAuswertungen_divers.vb
@@ -27,41 +27,81 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers
Sub init()
+ Button1.Visible = True
+ Button2.Visible = True
+ Button3.Visible = True
+ Button4.Visible = True
+
+
Select Case Lieferant
Case "PLOSE"
- Button6.Text = "Auswertung IT Maut (Konsortium)"
- Button2.Text = "Auswert. Kunden (Konsortium)"
- Button1.Text = "Auswertung nach Länder EU Kunden"
+
+ Button1.Text = "nach Länder EU Kunden"
+ Button1.Image = My.Resources.statistik_small
Button1.Visible = False
+
+ Button2.Text = "Kunden (Konsortium)"
+ Button2.Image = My.Resources.statistik_small
+
+ Button3.Visible = False
+
+ Button4.Text = "IT Maut (Konsortium)"
+ Button4.Image = My.Resources.statistik_small
+
cbxConsFakt.Visible = True
cbxNurEULander.Visible = True
- Case "UTA"
+ Case "UTA" 'alles excel
+
+ Button4.Text = "fehl. KdNr"
+ Button4.Image = My.Resources.Excel_logo
+
+ Button2.Text = "fehl. Fakt-warenart"
+ Button2.Image = My.Resources.Excel_logo
+
+
+
+ Button1.Text = "fehl Offertenpos."
+ Button1.Image = My.Resources.Excel_logo
+
- Button6.Text = "fehlende KdNr"
- Button2.Text = "fehlende Fakt.warenart"
- Button1.Text = "fehlende Offertenpos."
Button3.Text = "Vergleich Bericht"
- Button3.Visible = True
+ Button3.Image = My.Resources.Excel_logo
- Case "MSE"
- Button6.Text = "Nach Spezifikation"
- Button2.Text = "Leistungsnummern"
+ Case "MSE" 'alles excel
+
Button1.Text = "Kunden"
- Button3.Text = "fehlende Transakt."
- Button3.Visible = True
+ Button1.Image = My.Resources.Excel_logo
+
+ Button2.Text = "Leistung-Nr."
+ Button2.Image = My.Resources.Excel_logo
+
+ Button3.Text = "fehl. Transakt."
+ Button3.Image = My.Resources.Excel_logo
+
+ Button4.Text = "Nach Spezifikation"
+ Button4.Image = My.Resources.Excel_logo
+
+
+
+
+ Case "IDS" 'alles excel
- Case "IDS"
- Button2.Visible = False
- Button6.Visible = True
- Button2.Text = "Nach Spezifikation"
- Button6.Text = "fehl. Offerten"
Button1.Text = "Kunden"
+ Button1.Image = My.Resources.Excel_logo
+
+ Button2.Text = "fehl. Stationen AT"
+ Button2.Image = My.Resources.Excel_logo
+
Button3.Text = "Ländercodes"
- Button3.Visible = True
+ Button3.Image = My.Resources.Excel_logo
+
+ Button4.Text = "fehl. Offerten"
+ Button4.Image = My.Resources.Excel_logo
+
Case Else
@@ -87,7 +127,7 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers
End Function
- Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button6.Click
+ Private Sub Button6_Click(sender As Object, e As EventArgs) Handles Button4.Click
Select Case Lieferant
@@ -154,6 +194,9 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers
Case "MSE"
genMSEBericht("LENR")
+ Case "IDS"
+ genIDSBericht("STATIONEN_AT")
+
End Select
@@ -608,6 +651,14 @@ Public Class usrCntlMDMDatenverarbeitungAuswertungen_divers
ORDER BY
tblIDSTransactionsNew.[CustomerCode];"
+
+ Case "STATIONEN_AT"
+
+ sqlstr = "select tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName
+ from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & MAIN.DateTimePicker2.Text & "' and OutletCountry = 'Austria' and tblIDSTransactionsNew.OutletCode not in (select tbl_IDS_Stationen.OutletCode from tbl_IDS_Stationen)
+ group by tblIDSTransactionsNew.OutletCode, tblIDSTransactionsNew.OutletCountry, tblIDSTransactionsNew.OutletName "
+
+
Case "OFFERTEN"
Dim dtKunden = SQL.loadDgvBySql("Select distinct(tblIDSTransactionsNew.KdNrVERAG) from tblIDSTransactionsNew where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & MAIN.DateTimePicker2.Text & "'", "FMZOLL")
diff --git a/SDL/seriendruck/usrCntlFakturierung.Designer.vb b/SDL/seriendruck/usrCntlFakturierung.Designer.vb
index 565cfdc7..906be5f9 100644
--- a/SDL/seriendruck/usrCntlFakturierung.Designer.vb
+++ b/SDL/seriendruck/usrCntlFakturierung.Designer.vb
@@ -25,9 +25,9 @@ Partial Class usrcntlFakturierung
Me.components = New System.ComponentModel.Container()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(usrcntlFakturierung))
Me.gb_fakturierung = New System.Windows.Forms.GroupBox()
- Me.btnLieferantenrechnungen = New System.Windows.Forms.Button()
Me.btnMDMSammelrechnung = New System.Windows.Forms.Button()
Me.btnFakturierung = New System.Windows.Forms.Button()
+ Me.btnLieferantenrechnungen = New System.Windows.Forms.Button()
Me.btnRechnugnsdaten = New System.Windows.Forms.Button()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label61 = New System.Windows.Forms.Label()
@@ -107,6 +107,8 @@ Partial Class usrcntlFakturierung
Me.btnWikiStatusmails = New System.Windows.Forms.Button()
Me.gb_MDM_Rechnungen = New System.Windows.Forms.GroupBox()
Me.Label14 = New System.Windows.Forms.Label()
+ Me.PictureBox13 = New System.Windows.Forms.PictureBox()
+ Me.Label15 = New System.Windows.Forms.Label()
Me.gb_fakturierung.SuspendLayout()
Me.GBMautberichte.SuspendLayout()
CType(Me.dgvMautbericht, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -124,6 +126,7 @@ Partial Class usrcntlFakturierung
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.gb_MDM_Rechnungen.SuspendLayout()
+ CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'gb_fakturierung
@@ -136,18 +139,6 @@ Partial Class usrcntlFakturierung
Me.gb_fakturierung.TabIndex = 0
Me.gb_fakturierung.TabStop = False
'
- 'btnLieferantenrechnungen
- '
- Me.btnLieferantenrechnungen.Enabled = False
- Me.btnLieferantenrechnungen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
- Me.btnLieferantenrechnungen.ForeColor = System.Drawing.Color.Black
- Me.btnLieferantenrechnungen.Location = New System.Drawing.Point(230, 16)
- Me.btnLieferantenrechnungen.Name = "btnLieferantenrechnungen"
- Me.btnLieferantenrechnungen.Size = New System.Drawing.Size(175, 44)
- Me.btnLieferantenrechnungen.TabIndex = 52
- Me.btnLieferantenrechnungen.Text = "MDM Lieferantenrechnungen"
- Me.btnLieferantenrechnungen.UseVisualStyleBackColor = True
- '
'btnMDMSammelrechnung
'
Me.btnMDMSammelrechnung.Enabled = False
@@ -172,6 +163,18 @@ Partial Class usrcntlFakturierung
Me.btnFakturierung.Text = "Fakturierung"
Me.btnFakturierung.UseVisualStyleBackColor = True
'
+ 'btnLieferantenrechnungen
+ '
+ Me.btnLieferantenrechnungen.Enabled = False
+ Me.btnLieferantenrechnungen.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.btnLieferantenrechnungen.ForeColor = System.Drawing.Color.Black
+ Me.btnLieferantenrechnungen.Location = New System.Drawing.Point(230, 16)
+ Me.btnLieferantenrechnungen.Name = "btnLieferantenrechnungen"
+ Me.btnLieferantenrechnungen.Size = New System.Drawing.Size(175, 44)
+ Me.btnLieferantenrechnungen.TabIndex = 52
+ Me.btnLieferantenrechnungen.Text = "MDM Lieferantenrechnungen"
+ Me.btnLieferantenrechnungen.UseVisualStyleBackColor = True
+ '
'btnRechnugnsdaten
'
Me.btnRechnugnsdaten.Enabled = False
@@ -352,6 +355,8 @@ Partial Class usrcntlFakturierung
'
'GBSammelrechnung
'
+ Me.GBSammelrechnung.Controls.Add(Me.PictureBox13)
+ Me.GBSammelrechnung.Controls.Add(Me.Label15)
Me.GBSammelrechnung.Controls.Add(Me.PictureBox12)
Me.GBSammelrechnung.Controls.Add(Me.Label13)
Me.GBSammelrechnung.Controls.Add(Me.PictureBox11)
@@ -535,7 +540,7 @@ Partial Class usrcntlFakturierung
'
'Label8
'
- Me.Label8.Location = New System.Drawing.Point(168, 239)
+ Me.Label8.Location = New System.Drawing.Point(168, 245)
Me.Label8.Name = "Label8"
Me.Label8.Size = New System.Drawing.Size(151, 16)
Me.Label8.TabIndex = 120
@@ -545,7 +550,7 @@ Partial Class usrcntlFakturierung
'
Me.PictureBox10.BackgroundImage = Global.SDL.My.Resources.Resources.ok
Me.PictureBox10.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
- Me.PictureBox10.Location = New System.Drawing.Point(148, 239)
+ Me.PictureBox10.Location = New System.Drawing.Point(148, 245)
Me.PictureBox10.Name = "PictureBox10"
Me.PictureBox10.Size = New System.Drawing.Size(14, 14)
Me.PictureBox10.TabIndex = 119
@@ -604,7 +609,7 @@ Partial Class usrcntlFakturierung
'
Me.PictureBox9.BackgroundImage = Global.SDL.My.Resources.Resources.ok
Me.PictureBox9.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
- Me.PictureBox9.Location = New System.Drawing.Point(148, 221)
+ Me.PictureBox9.Location = New System.Drawing.Point(148, 227)
Me.PictureBox9.Name = "PictureBox9"
Me.PictureBox9.Size = New System.Drawing.Size(14, 14)
Me.PictureBox9.TabIndex = 113
@@ -613,7 +618,7 @@ Partial Class usrcntlFakturierung
'
'Label2
'
- Me.Label2.Location = New System.Drawing.Point(168, 221)
+ Me.Label2.Location = New System.Drawing.Point(168, 227)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(224, 17)
Me.Label2.TabIndex = 112
@@ -623,7 +628,7 @@ Partial Class usrcntlFakturierung
'
Me.PictureBox8.BackgroundImage = Global.SDL.My.Resources.Resources.ok
Me.PictureBox8.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
- Me.PictureBox8.Location = New System.Drawing.Point(148, 204)
+ Me.PictureBox8.Location = New System.Drawing.Point(148, 210)
Me.PictureBox8.Name = "PictureBox8"
Me.PictureBox8.Size = New System.Drawing.Size(14, 14)
Me.PictureBox8.TabIndex = 111
@@ -632,7 +637,7 @@ Partial Class usrcntlFakturierung
'
'Label1
'
- Me.Label1.Location = New System.Drawing.Point(168, 204)
+ Me.Label1.Location = New System.Drawing.Point(168, 210)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(224, 17)
Me.Label1.TabIndex = 110
@@ -762,8 +767,6 @@ Partial Class usrcntlFakturierung
'cbxVorschau
'
Me.cbxVorschau.AutoSize = True
- Me.cbxVorschau.Checked = True
- Me.cbxVorschau.CheckState = System.Windows.Forms.CheckState.Checked
Me.cbxVorschau.Location = New System.Drawing.Point(491, 310)
Me.cbxVorschau.Name = "cbxVorschau"
Me.cbxVorschau.Size = New System.Drawing.Size(109, 17)
@@ -1038,6 +1041,25 @@ Partial Class usrcntlFakturierung
Me.Label14.TabIndex = 73
Me.Label14.Text = "Rechnungsdaten"
'
+ 'PictureBox13
+ '
+ Me.PictureBox13.BackgroundImage = CType(resources.GetObject("PictureBox13.BackgroundImage"), System.Drawing.Image)
+ Me.PictureBox13.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
+ Me.PictureBox13.Location = New System.Drawing.Point(148, 187)
+ Me.PictureBox13.Name = "PictureBox13"
+ Me.PictureBox13.Size = New System.Drawing.Size(14, 14)
+ Me.PictureBox13.TabIndex = 134
+ Me.PictureBox13.TabStop = False
+ Me.PictureBox13.Visible = False
+ '
+ 'Label15
+ '
+ Me.Label15.Location = New System.Drawing.Point(168, 187)
+ Me.Label15.Name = "Label15"
+ Me.Label15.Size = New System.Drawing.Size(429, 14)
+ Me.Label15.TabIndex = 133
+ Me.Label15.Text = "8. Hängt ZNB-Liste an."
+ '
'usrcntlFakturierung
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -1073,6 +1095,7 @@ Partial Class usrcntlFakturierung
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
Me.gb_MDM_Rechnungen.ResumeLayout(False)
+ CType(Me.PictureBox13, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
@@ -1160,4 +1183,6 @@ Partial Class usrcntlFakturierung
Friend WithEvents Label13 As Label
Friend WithEvents gb_MDM_Rechnungen As GroupBox
Friend WithEvents Label14 As Label
+ Friend WithEvents PictureBox13 As PictureBox
+ Friend WithEvents Label15 As Label
End Class
diff --git a/SDL/seriendruck/usrCntlFakturierung.resx b/SDL/seriendruck/usrCntlFakturierung.resx
index 32e578b1..cac4d60c 100644
--- a/SDL/seriendruck/usrCntlFakturierung.resx
+++ b/SDL/seriendruck/usrCntlFakturierung.resx
@@ -118,6 +118,30 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+
+ iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABGdBTUEAALGPC/xhBQAABGdJREFUSEtj
+ YKAyYOFk4Za0knSzzrXOd8x2jJeUlGRgZ2dHV0YFwMjAKKInomlUYJRl32e/wn+Z/0Gf2T4L9eP1rQRV
+ BQWZ2JnQdVAGBNQEFI2KjHLCj4Qfjz0f+zX+Uvz/iKMR9z2XeU7USdNxENYVFmZkYWRE10c2sGqyKgg/
+ FH4s7mLcPxAGWQhjR5+Pnm5Wa+bAxs/Ggq6PbODQ77Aw5mzMO5BF6DjuYtzDoB1BU5ynO9uh6yMZcIpy
+ Sin5KsX5rva9gMWiP3EX4354LPDYb9VkVWpSZmKIrp8kwMrDyifnLBcUtCPoYfSp6G9oln2PPh39InRf
+ 6EXVYNUYLjEuCXT9JAMFT4UI5+nO22POxPyMuxD3F83CK/4b/CdoJ2hb8CnwiTIyM5Iff8yczNxSVlJu
+ Nm02i8P2h72EJRKwRRfifsScibnts9Kn0yjfyIZfkZ+bhZOFGd0MkgC7ALuIXppeDXq8xZ6L/Rl+MPyR
+ 2xy3iXpperai+qLUyfG4LIw8GvnGY57HVnFDcTk2bjZ0beQBHikeeWV/5QTvpd4nI49FfoRZFnM+5rdd
+ j91KEV0REzY+Ng5GZgJ5nJmDmZtPgU9dwUPBUsZeRoNLgosNXRO7ILsIOKFMdd4adTzqE7Lv/Pf6b9JM
+ 1wxB0YALgFIQrxyvmlacVrHfer/prnNccxW9FWXZBdhZGZCKQEENQUOzKrMpaKnxR9zFuOeWMyy9JDwl
+ WJHNxQk4xTilVAJVkkP2hjyLPhP9NvJE5C7PJZ7J4ibikqw8rPDkjMPCazEXYorkveWVWHiISPnMHMxc
+ qsGqKe7z3Q+Cy75LcSBDXkQcjdjuMMEhStJKUo6JlYmVlZdVQD9Lv8F3je9FeKq8EHvZf5N/j26Grg6P
+ LA8PutlYgYKbQqjzVOdtyK6GuvxD7IXYlea15v5ixmISXBJcsm5z3PZC5X7FXYx7Grg9cKpZlZkzuxA7
+ GxMrE4FUAgXIpTuahWDxmPMx011mudiiWQhyzBKzSjMvQQ1BXnQz8QJpG2lPZX/lKMs6y464i3H34y/F
+ g+syJIsfhh8KPw6yLPxQ+GuQWOSRyNc27Tbd0rbSZizcZJQibHxsvBImEsamFaaVrjNdNwXvDH6A7mMY
+ BlnqNtttj5yrXDAosaGbRTKQdZYNsOu2WxZ9MvpD3IW43/GX4hHl5MW4n75rfI/pZ+kXsouwC6HrJQuw
+ cLPwKngqeLvPc18adTLqRfyl+F9IFt73We0zQTdd14BdkIotI25JbgkZBxkHtVC1JLc5brtjz8f+jL0Q
+ +z1oZ9B6syqzaGEdYX5mdmYqt4qgQDVINcVjocfByBORr63brCulbaW10NVQHYibiNsHbQ+6L24q7oAu
+ RxPAxs8mJG4iDmp1USehIAMuLi4GeXl5NlNTU347OzsRe3t7UWRsZ2cnbG5uzicrK8vKxcVFXOmCD0hK
+ SjJ6enoK1NXVqU6aNMlg2rRpxsh48uTJus3NzYqurq68EhISJGd6ADkzAttxL7feAAAAAElFTkSuQmCC
+
+
iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAYAAAByDd+UAAAABGdBTUEAALGPC/xhBQAABGdJREFUSEtj
diff --git a/SDL/seriendruck/usrCntlFakturierung.vb b/SDL/seriendruck/usrCntlFakturierung.vb
index ed34996f..2c97dc2b 100644
--- a/SDL/seriendruck/usrCntlFakturierung.vb
+++ b/SDL/seriendruck/usrCntlFakturierung.vb
@@ -1,6 +1,7 @@
Imports System.Globalization
Imports System.IO
Imports System.Web.UI.WebControls.Expressions
+Imports com.sun.xml.internal.rngom
Imports VERAG_PROG_ALLGEMEIN
Public Class usrcntlFakturierung
@@ -372,6 +373,12 @@ Public Class usrcntlFakturierung
Dim okMaut As Boolean = False
okMaut = setMautgesamtberichtInRechnung(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen)
+
+ 'Gesamtmautberichte an Sammelrechnung anhängen
+ Dim okEZB As Boolean = False
+ okEZB = setZNBerichtInRechnung(Sachbearbeiter, rechnungsdatum, dtSammelrechnungen)
+
+
showPic(okMaut, PictureBox7)
If Not okMaut Then
@@ -743,7 +750,7 @@ Public Class usrcntlFakturierung
Dim ok As Boolean = False
- Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql("SELECT [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text]
+ Dim dtSelectedSammelrechnungen As DataTable = (New SQL).loadDgvBySql("SELECT [Firma_ID], [Status],[FilialenNr], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], isnull([Steuersatz %],0) as [Steuersatz %], cast([Lastschrift] as bit) as Lastschrift, [RK_ID], [BelegartenNr],cast([Vorkasse] as bit) as Vorkasse, [Nettozahlungsziel], [OffertenNr], [RechnungsLandKz], [Text]
FROM Rechnungsausgang
WHERE " & IIf(setTextifNull, "[Status] = 4 AND Text is null", "[Status] = 0") & " AND [Sammelrechnung] = 6 AND UPPER([Sachbearbeiter]) = '" & Sachbearbeiter & "' AND ([SteuerpflichtigerGesamtbetrag] <> 0 OR [SteuerfreierGesamtbetrag] <> 0) AND cast(Abfertigungsdatum as Date) = '" & rechnungsdatum & "'
ORDER BY [Firma_ID], [Status], [Sammelrechnung], [Sachbearbeiter], [RechnungsKundenNr], [Währungscode], [Steuersatz %], [Lastschrift], [RK_ID]", "FMZOLL")
@@ -1109,6 +1116,145 @@ Public Class usrcntlFakturierung
End Function
+
+
+ Private Function setZNBerichtInRechnung(Sachbearbeiter As String, rechnungsdatum As Date, dtSammelRechnugen As DataTable) As Boolean
+ Try
+ Dim counterAnhang As Integer = 0
+ Dim hatFehler As Boolean = False
+
+ If dtSammelRechnugen.Rows.Count = 0 Then
+ MsgBox("Keine Rechnungen für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.")
+ Return False
+ End If
+
+ Dim dtSammelRechnugen_EZB As DataTable
+
+ Dim rows = dtSammelRechnugen.Select("FilialenNr = 8001 AND OffertenNr = 95")
+
+ If rows.Length > 0 Then
+ dtSammelRechnugen_EZB = rows.CopyToDataTable()
+ Else
+ dtSammelRechnugen_EZB = dtSammelRechnugen.Clone()
+ End If
+
+ If dtSammelRechnugen_EZB.Rows.Count = 0 Then
+ MsgBox("Keine Rechnungen der Filiale 8001 für die Anlage der ZNB-Berichte gefunden!" & vbNewLine & "Vorgang wird abgebrochen.")
+ Return False
+ End If
+
+ For Each row In dtSammelRechnugen_EZB.Rows
+
+ Dim kdNr = row("RechnungsKundenNr")
+ Dim RK_ID = row("RK_ID")
+
+ Dim RG As New cRechnungsausgang(RK_ID)
+
+ If RG Is Nothing Then
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR("Rechnung RK_ID " & RK_ID & " konnte nicht geladen werden.", "", System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ hatFehler = True
+ Continue For
+ End If
+
+ Dim dtZNBList = (New SQL).loadDgvBySql("select [id] ,[belegNr] ,[buchungstext] ,[zinssatz] ,[belegZahlungsziel],[ueberschreitungInTagen] ,[zinsbetrag] ,[belegDatum] ,[zahlungsBetrag] ,[zahlungDatum] , [faelligkeitsDatum] from tblMDM_Zinsberechnung where RK_ID =" & RG.RK_ID, "FMZOLL")
+
+ If dtZNBList.Rows.Count = 0 Then
+ MsgBox("Keine Zinsberechnungsdaten für RK_ID " & RG.RK_ID & " gefunden. Diese Rechnung wird übersprungen.")
+ hatFehler = True
+ Continue For
+ End If
+
+ Dim path As String = createZNBReport(dtZNBList, kdNr, rechnungsdatum, RG)
+
+ If path = "" Then Continue For
+
+ Dim fi As New System.IO.FileInfo(path)
+ Dim DS As New VERAG_PROG_ALLGEMEIN.cDATENSERVER("MDM", "ZNB", RG.KundenNrZentrale, rechnungsdatum.ToShortDateString, "", fi.Name & fi.Extension)
+
+ If Not DS.uploadDataToDATENSERVER(path, fi.Name, fi.Extension,,,, True) Then
+ MsgBox("Fehler beim Speichern: Datenserver! :" & RG.Firma_ID)
+ hatFehler = True
+ Continue For ' kein Anhang ohne gültigen Datenserver-Eintrag anlegen
+ End If
+
+ Dim ANH As New VERAG_PROG_ALLGEMEIN.cRechnungsausgangAnhaenge
+ ANH.dsId = CInt(DS.da_id)
+ ANH.Bezeichnung = "POS-Liste VERZUGSZINSEN " & rechnungsdatum.ToShortDateString & fi.Extension
+ RG.ANHAENGE.Add(ANH)
+
+ If Not ANH.INSERT(RG.RK_ID, False) Then
+ MsgBox("Fehler beim Anlegen des Anhangs für RK_ID " & RG.RK_ID)
+ hatFehler = True
+ Else
+ RG.Anlage_1 = "POS-Liste VERZUGSZINSEN"
+ RG.SAVE()
+ counterAnhang += 1
+ End If
+
+ Next
+
+ Label15.Text = "8. Hängt ZNB-Liste an." & " Anzahl: " & counterAnhang
+ Return Not hatFehler AndAlso counterAnhang > 0
+
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ Label15.Text = "8. Hängt ZNB-Liste an. FEHLER!"
+ Return False
+ End Try
+
+ End Function
+
+ Private Function createZNBReport(dtZNBList As DataTable, KDNr As Integer, rechnungsdatum As Date, RG As cRechnungsausgang) As String
+
+
+ Dim rpt As New rptPOS_ZNB(RG, RG.SteuerfreierGesamtbetrag + RG.SteuerpflichtigerGesamtbetrag)
+
+ rpt.DataSource = dtZNBList
+
+ rpt.lblRgDatum.Text = rechnungsdatum
+ rpt.txtKunde.Text = KDNr & " " & New VERAG_PROG_ALLGEMEIN.cAdressen(KDNr).FullName
+ rpt.Label2.Visible = False
+ rpt.TextBox1.Visible = False
+ rpt.Label4.Text = rechnungsdatum
+
+ rpt.lblHeader.Text &= " " & RG.Vermerk
+
+ If rpt.DataSource.rows.count = 0 Then Return ""
+
+ Dim AD As New cAdressen(KDNr)
+ Dim sum As Double = 0
+
+ rpt.txtKunde.Text = AD.FullName
+
+ AddHandler rpt.Detail.Format, Sub()
+
+ If Not IsDBNull(rpt.Fields.Item("clmnZinsen").Value) AndAlso Not IsNothing(rpt.Fields.Item("clmnZinsen").Value) AndAlso IsNumeric(rpt.Fields.Item("clmnZinsen").Value) Then
+ sum += CDbl(rpt.Fields.Item("clmnZinsen").Value)
+ End If
+
+
+ End Sub
+
+
+ AddHandler rpt.ReportFooter1.Format, Sub()
+ rpt.txtBruttoGesSum.Text = sum.ToString("N2")
+ End Sub
+
+
+ Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath(RG.AbfertigungsNr & ".pdf", ".pdf", , False)
+ Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport
+ rpt.Run(False)
+ p.NeverEmbedFonts = ""
+ p.Export(rpt.Document, tmpPath)
+ rpt.Dispose()
+
+ Return tmpPath
+
+ End Function
+
+
+
+
Private Function AddAttachementToRE(pathFile As String, kdNr As Integer, RECHNUNG As cRechnungsausgang, rechnungsdatum As Date) As Boolean
'TODO: Prüfung, damit anhänge nicht doppelt eingearbeitet werden! -> ist DBteschnisch unterbunden mit PrimaryKey-Einschränkung!!!
@@ -1135,7 +1281,12 @@ Public Class usrcntlFakturierung
ANH.dsId = CInt(DS.da_id)
ANH.Bezeichnung = DS.da_name
RECHNUNG.ANHAENGE.Add(ANH)
- Return RECHNUNG.SAVE_ANHAENGE(RECHNUNG.RK_ID, False, False)
+
+ If Not ANH.INSERT(RECHNUNG.RK_ID, False) Then
+ Return False
+ End If
+
+ Return True
Else
MsgBox("Rechnung nicht initialisiert.")
Return False
diff --git a/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb b/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb
index 13071916..076cf153 100644
--- a/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb
+++ b/SDL/zoll/usrCntlZOLLAuswertungen.Designer.vb
@@ -271,6 +271,10 @@ Partial Class usrCntlZOLLAuswertungen
Me.Label96 = New System.Windows.Forms.Label()
Me.von_CBAM = New System.Windows.Forms.DateTimePicker()
Me.pnl = New System.Windows.Forms.Panel()
+ Me.Label101 = New System.Windows.Forms.Label()
+ Me.Button2 = New System.Windows.Forms.Button()
+ Me.Label102 = New System.Windows.Forms.Label()
+ Me.Label103 = New System.Windows.Forms.Label()
Me.GroupBox1.SuspendLayout()
Me.grpDurmaz.SuspendLayout()
CType(Me.picDurmaz, System.ComponentModel.ISupportInitialize).BeginInit()
@@ -1314,7 +1318,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.tbcntr.Location = New System.Drawing.Point(0, 57)
Me.tbcntr.Name = "tbcntr"
Me.tbcntr.SelectedIndex = 0
- Me.tbcntr.Size = New System.Drawing.Size(1109, 1829)
+ Me.tbcntr.Size = New System.Drawing.Size(1092, 1829)
Me.tbcntr.TabIndex = 22
'
'TabPage1
@@ -1357,7 +1361,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.TabPage1.Location = New System.Drawing.Point(4, 22)
Me.TabPage1.Name = "TabPage1"
Me.TabPage1.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage1.Size = New System.Drawing.Size(1101, 1803)
+ Me.TabPage1.Size = New System.Drawing.Size(1084, 1803)
Me.TabPage1.TabIndex = 0
Me.TabPage1.Text = "Bürgschaften"
Me.TabPage1.UseVisualStyleBackColor = True
@@ -2584,7 +2588,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.TabPage3.Location = New System.Drawing.Point(4, 22)
Me.TabPage3.Name = "TabPage3"
Me.TabPage3.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage3.Size = New System.Drawing.Size(1118, 1803)
+ Me.TabPage3.Size = New System.Drawing.Size(1101, 1803)
Me.TabPage3.TabIndex = 2
Me.TabPage3.Text = "Fiskalvertretung / EV-Veranlagung"
Me.TabPage3.UseVisualStyleBackColor = True
@@ -2619,7 +2623,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.TabPage4.Controls.Add(Me.UsrCntlAuswertungenAufschub_Abgabenliste1)
Me.TabPage4.Location = New System.Drawing.Point(4, 22)
Me.TabPage4.Name = "TabPage4"
- Me.TabPage4.Size = New System.Drawing.Size(1118, 1803)
+ Me.TabPage4.Size = New System.Drawing.Size(1101, 1803)
Me.TabPage4.TabIndex = 3
Me.TabPage4.Text = "Aufschubdaten"
Me.TabPage4.UseVisualStyleBackColor = True
@@ -2648,7 +2652,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.TabPage5.Location = New System.Drawing.Point(4, 22)
Me.TabPage5.Name = "TabPage5"
Me.TabPage5.Padding = New System.Windows.Forms.Padding(3)
- Me.TabPage5.Size = New System.Drawing.Size(1118, 1803)
+ Me.TabPage5.Size = New System.Drawing.Size(1084, 1803)
Me.TabPage5.TabIndex = 4
Me.TabPage5.Text = "UNISPED"
Me.TabPage5.UseVisualStyleBackColor = True
@@ -2852,6 +2856,10 @@ Partial Class usrCntlZOLLAuswertungen
'
'TabPage6
'
+ Me.TabPage6.Controls.Add(Me.Label103)
+ Me.TabPage6.Controls.Add(Me.Label102)
+ Me.TabPage6.Controls.Add(Me.Button2)
+ Me.TabPage6.Controls.Add(Me.Label101)
Me.TabPage6.Controls.Add(Me.cbxCBAM_Detaildaten)
Me.TabPage6.Controls.Add(Me.Label100)
Me.TabPage6.Controls.Add(Me.cbxcbamQuelle)
@@ -2863,7 +2871,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.TabPage6.Controls.Add(Me.von_CBAM)
Me.TabPage6.Location = New System.Drawing.Point(4, 22)
Me.TabPage6.Name = "TabPage6"
- Me.TabPage6.Size = New System.Drawing.Size(1118, 1803)
+ Me.TabPage6.Size = New System.Drawing.Size(1084, 1803)
Me.TabPage6.TabIndex = 5
Me.TabPage6.Text = "CBAM"
Me.TabPage6.UseVisualStyleBackColor = True
@@ -2871,7 +2879,7 @@ Partial Class usrCntlZOLLAuswertungen
'cbxCBAM_Detaildaten
'
Me.cbxCBAM_Detaildaten.AutoSize = True
- Me.cbxCBAM_Detaildaten.Location = New System.Drawing.Point(13, 80)
+ Me.cbxCBAM_Detaildaten.Location = New System.Drawing.Point(13, 102)
Me.cbxCBAM_Detaildaten.Name = "cbxCBAM_Detaildaten"
Me.cbxCBAM_Detaildaten.Size = New System.Drawing.Size(126, 17)
Me.cbxCBAM_Detaildaten.TabIndex = 29
@@ -2881,7 +2889,7 @@ Partial Class usrCntlZOLLAuswertungen
'Label100
'
Me.Label100.AutoSize = True
- Me.Label100.Location = New System.Drawing.Point(10, 37)
+ Me.Label100.Location = New System.Drawing.Point(10, 59)
Me.Label100.Name = "Label100"
Me.Label100.Size = New System.Drawing.Size(37, 13)
Me.Label100.TabIndex = 28
@@ -2897,7 +2905,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.cbxcbamQuelle.DropDownWidth = 100
Me.cbxcbamQuelle.FormattingEnabled = True
Me.cbxcbamQuelle.IntegralHeight = False
- Me.cbxcbamQuelle.Location = New System.Drawing.Point(13, 53)
+ Me.cbxcbamQuelle.Location = New System.Drawing.Point(13, 75)
Me.cbxcbamQuelle.Name = "cbxcbamQuelle"
Me.cbxcbamQuelle.Size = New System.Drawing.Size(85, 21)
Me.cbxcbamQuelle.TabIndex = 27
@@ -2905,7 +2913,7 @@ Partial Class usrCntlZOLLAuswertungen
'Label99
'
Me.Label99.AutoSize = True
- Me.Label99.Location = New System.Drawing.Point(224, 56)
+ Me.Label99.Location = New System.Drawing.Point(224, 78)
Me.Label99.Name = "Label99"
Me.Label99.Size = New System.Drawing.Size(23, 13)
Me.Label99.TabIndex = 26
@@ -2914,7 +2922,7 @@ Partial Class usrCntlZOLLAuswertungen
'bis_CBAM
'
Me.bis_CBAM.Format = System.Windows.Forms.DateTimePickerFormat.[Short]
- Me.bis_CBAM.Location = New System.Drawing.Point(253, 53)
+ Me.bis_CBAM.Location = New System.Drawing.Point(253, 75)
Me.bis_CBAM.Name = "bis_CBAM"
Me.bis_CBAM.Size = New System.Drawing.Size(93, 20)
Me.bis_CBAM.TabIndex = 25
@@ -2936,7 +2944,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.excelCbam.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
Me.excelCbam.Image = Global.SDL.My.Resources.Resources.Excel_logo
Me.excelCbam.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
- Me.excelCbam.Location = New System.Drawing.Point(13, 103)
+ Me.excelCbam.Location = New System.Drawing.Point(13, 125)
Me.excelCbam.Name = "excelCbam"
Me.excelCbam.Padding = New System.Windows.Forms.Padding(0, 0, 25, 0)
Me.excelCbam.Size = New System.Drawing.Size(121, 38)
@@ -2948,7 +2956,7 @@ Partial Class usrCntlZOLLAuswertungen
'Label96
'
Me.Label96.AutoSize = True
- Me.Label96.Location = New System.Drawing.Point(114, 37)
+ Me.Label96.Location = New System.Drawing.Point(114, 59)
Me.Label96.Name = "Label96"
Me.Label96.Size = New System.Drawing.Size(38, 13)
Me.Label96.TabIndex = 21
@@ -2957,7 +2965,7 @@ Partial Class usrCntlZOLLAuswertungen
'von_CBAM
'
Me.von_CBAM.Format = System.Windows.Forms.DateTimePickerFormat.[Short]
- Me.von_CBAM.Location = New System.Drawing.Point(117, 53)
+ Me.von_CBAM.Location = New System.Drawing.Point(117, 75)
Me.von_CBAM.Name = "von_CBAM"
Me.von_CBAM.Size = New System.Drawing.Size(93, 20)
Me.von_CBAM.TabIndex = 20
@@ -2968,9 +2976,53 @@ Partial Class usrCntlZOLLAuswertungen
Me.pnl.Dock = System.Windows.Forms.DockStyle.Top
Me.pnl.Location = New System.Drawing.Point(0, 0)
Me.pnl.Name = "pnl"
- Me.pnl.Size = New System.Drawing.Size(1109, 57)
+ Me.pnl.Size = New System.Drawing.Size(1092, 57)
Me.pnl.TabIndex = 23
'
+ 'Label101
+ '
+ Me.Label101.AutoSize = True
+ Me.Label101.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
+ Me.Label101.ForeColor = System.Drawing.SystemColors.ControlDarkDark
+ Me.Label101.Location = New System.Drawing.Point(10, 176)
+ Me.Label101.Name = "Label101"
+ Me.Label101.Size = New System.Drawing.Size(154, 17)
+ Me.Label101.TabIndex = 30
+ Me.Label101.Text = "CBAM Kundenstatus"
+ '
+ 'Button2
+ '
+ Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat
+ Me.Button2.ForeColor = System.Drawing.Color.FromArgb(CType(CType(0, Byte), Integer), CType(CType(54, Byte), Integer), CType(CType(128, Byte), Integer))
+ Me.Button2.Image = Global.SDL.My.Resources.Resources.Excel_logo
+ Me.Button2.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft
+ Me.Button2.Location = New System.Drawing.Point(13, 229)
+ Me.Button2.Name = "Button2"
+ Me.Button2.Padding = New System.Windows.Forms.Padding(0, 0, 25, 0)
+ Me.Button2.Size = New System.Drawing.Size(121, 38)
+ Me.Button2.TabIndex = 31
+ Me.Button2.Text = "Excel"
+ Me.Button2.TextAlign = System.Drawing.ContentAlignment.MiddleRight
+ Me.Button2.UseVisualStyleBackColor = True
+ '
+ 'Label102
+ '
+ Me.Label102.AutoSize = True
+ Me.Label102.Location = New System.Drawing.Point(10, 200)
+ Me.Label102.Name = "Label102"
+ Me.Label102.Size = New System.Drawing.Size(192, 13)
+ Me.Label102.TabIndex = 32
+ Me.Label102.Text = "Kundenliste mit aktuellem CBAM-Status"
+ '
+ 'Label103
+ '
+ Me.Label103.AutoSize = True
+ Me.Label103.Location = New System.Drawing.Point(10, 35)
+ Me.Label103.Name = "Label103"
+ Me.Label103.Size = New System.Drawing.Size(225, 13)
+ Me.Label103.TabIndex = 33
+ Me.Label103.Text = "Liste der Kunden mit CBAM-pflichtigen Waren "
+ '
'usrCntlZOLLAuswertungen
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
@@ -2980,7 +3032,7 @@ Partial Class usrCntlZOLLAuswertungen
Me.Controls.Add(Me.tbcntr)
Me.Controls.Add(Me.pnl)
Me.Name = "usrCntlZOLLAuswertungen"
- Me.Size = New System.Drawing.Size(1109, 1174)
+ Me.Size = New System.Drawing.Size(1092, 1174)
Me.GroupBox1.ResumeLayout(False)
Me.GroupBox1.PerformLayout()
Me.grpDurmaz.ResumeLayout(False)
@@ -3295,4 +3347,8 @@ Partial Class usrCntlZOLLAuswertungen
Friend WithEvents Label96 As Label
Friend WithEvents von_CBAM As DateTimePicker
Friend WithEvents cbxCBAM_Detaildaten As CheckBox
+ Friend WithEvents Button2 As Button
+ Friend WithEvents Label101 As Label
+ Friend WithEvents Label102 As Label
+ Friend WithEvents Label103 As Label
End Class
diff --git a/SDL/zoll/usrCntlZOLLAuswertungen.vb b/SDL/zoll/usrCntlZOLLAuswertungen.vb
index f769b24b..52b0fbda 100644
--- a/SDL/zoll/usrCntlZOLLAuswertungen.vb
+++ b/SDL/zoll/usrCntlZOLLAuswertungen.vb
@@ -1,4 +1,5 @@
-Imports System.IO
+Imports System.Data.SqlTypes
+Imports System.IO
Imports GrapeCity.DataVisualization.Chart
Public Class usrCntlZOLLAuswertungen
@@ -1218,6 +1219,22 @@ and
End Function
+ Private Sub Button2_Click_2(sender As Object, e As EventArgs) Handles Button2.Click
+
+ Dim sqlString =
+ "select Adressen.Auswahl as Aktiv,KundenNr, [Name 1] as Name, isnull(Adressen.[E-Mail],'') as Mail, isnull(Adressen.[E-Mail2],'') as Mail2 ,isnull(Anrede,'') as Anrede ,isnull(Ansprechpartner,'') as Ansprechpartner, isnull(Adressen.Telefon,'') as Telefon, kde_CBAM_Status as CBAM_Status from Adressen
+ inner join Kunden on Kunden.KundenNr = Adressen.AdressenNr
+ inner join tblKundenErweitert on kde_KundenNr = Adressen.AdressenNr
+ where isnull(kde_CBAM_Status,'') <> ''"
+
+ Dim dt As DataTable = SQL.loadDgvBySql(SqlString, "FMZOLL", 700)
+ If dt IsNot Nothing Then
+ cProgramFunctions.genExcelFromDT_NEW(dt)
+ End If
+
+
+ End Sub
+
diff --git a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb
index a524122f..79227bd2 100644
--- a/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb
+++ b/VERAG_PROG_ALLGEMEIN/Benutzerdefinierte Steuerelemente/usrcntlPDFScanList.vb
@@ -72,6 +72,8 @@ Public Class usrcntlPDFScanList
End Sub
+
+
Private Sub usrcntlPDFScan_Load(sender As Object, e As EventArgs) Handles Me.Load
' Me.txt.Text = _TEXT_PDF
Me.AllowDrop = True
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb b/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb
index 603542da..9d624da8 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/Essensbestellung.vb
@@ -26,6 +26,10 @@ Public Class cEssensbestellung
Property eb_firma As Object = Nothing
Property eb_MenuID As Object = Nothing
Property eb_archiviert As Boolean
+ Property eb_gesendetVon As Object = Nothing
+ Property eb_abgerechnetVon As Object = Nothing
+ Property eb_storniertVon As Object = Nothing
+ Property eb_gesendetFirst_am As Object = Nothing
Public hasEntry = False
@@ -90,6 +94,10 @@ Public Class cEssensbestellung
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_firma", eb_firma))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_archiviert", eb_archiviert))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_MenuID", eb_MenuID))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_gesendetVon", eb_gesendetVon))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_abgerechnetVon", eb_abgerechnetVon))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_storniertVon", eb_storniertVon))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("eb_gesendetFirst_am", eb_gesendetFirst_am))
Return list
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb
index 31992cab..70f4c5e6 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUSTVAntrag.vb
@@ -63,6 +63,7 @@ Public Class cUSTVAntrag
Property UStVAn_MWSTEingang_offen As Object = Nothing
Property POSITIONEN As New List(Of cUStVPositionen) '= Nothing
Property UStVAn_letzteAenderung As Object = Nothing
+ Property UStVAn_letzteAenderungUser As Object = Nothing
Public hasEntry = False
@@ -135,6 +136,7 @@ Public Class cUSTVAntrag
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_Sicherheit", UStVAn_Sicherheit))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_MWSTEingang_offen", UStVAn_MWSTEingang_offen))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_letzteAenderung", UStVAn_letzteAenderung))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_letzteAenderungUser", UStVAn_letzteAenderungUser))
Return list
@@ -602,6 +604,7 @@ Public Class cUStVErstattungPositionen
Property UStVEr_RZVZ As Object = Nothing
Property UStVEr_Bank As Object = Nothing
Property UStVEr_Differenz As Object = Nothing
+ Property UStVEr_RK_ID As Object = Nothing
Public hasEntry = False
@@ -633,30 +636,40 @@ Public Class cUStVErstattungPositionen
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_RZVZ", UStVEr_RZVZ))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_Bank", UStVEr_Bank))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_Differenz", UStVEr_Differenz))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVEr_RK_ID", UStVEr_RK_ID))
Return list
End Function
- Sub New(Belegdatum, Belegnummer, UStVEr_Importfilename)
+ Sub New(Belegdatum As Date, Belegnummer As String, UStVEr_Importfilename As String, antragsid As Integer)
Me.Belegdatum = Belegdatum
Me.Belegnummer = Belegnummer
Me.UStVEr_Importfilename = UStVEr_Importfilename
+ Me.UStVAn_ID = antragsid
- LOAD(Belegdatum, Belegnummer, UStVEr_Importfilename)
+ LOAD(Belegdatum, Belegnummer, UStVEr_Importfilename, antragsid)
End Sub
- Sub New(UStVAn_ID, UStVEr_ID)
+ Sub New(UStVAn_ID As Integer, UStVEr_ID As Integer)
Me.UStVAn_ID = UStVAn_ID
Me.UStVEr_ID = UStVEr_ID
LOAD(UStVAn_ID, UStVEr_ID)
End Sub
+
+ Sub New(UStVAn_ID As Integer, GutschriftsNr As Integer, GutschriftsDatum As Date)
+ Me.UStVAn_ID = UStVAn_ID
+ Me.GutschriftsNr = GutschriftsNr
+ Me.GutschriftsDatum = GutschriftsDatum
+
+ LOAD(UStVAn_ID, GutschriftsDatum, GutschriftsNr)
+ End Sub
Sub New()
End Sub
- Public Sub LOAD(UStVAn_ID, UStVEr_ID)
+ Public Sub LOAD(UStVAn_ID As Integer, UStVEr_ID As Integer)
Try
hasEntry = False
@@ -686,16 +699,48 @@ Public Class cUStVErstattungPositionen
End Try
End Sub
- Public Sub LOAD(Belegdatum, Belegnummer, UStVEr_Importfilename)
+ Public Sub LOAD(Belegdatum As Date, Belegnummer As String, UStVEr_Importfilename As String, UStVAn_ID As Integer)
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
- Using cmd As New SqlCommand("SELECT * FROM tblUStVErstattung WHERE Belegdatum=@Belegdatum AND Belegnummer=@Belegnummer AND UStVEr_Importfilename=@UStVEr_Importfilename ", conn)
+ Using cmd As New SqlCommand("SELECT * FROM tblUStVErstattung WHERE Belegdatum=@Belegdatum AND Belegnummer=@Belegnummer AND UStVEr_Importfilename=@UStVEr_Importfilename AND UStVAn_ID=@UStVAn_ID ", conn)
cmd.Parameters.AddWithValue("@Belegdatum", Belegdatum)
cmd.Parameters.AddWithValue("@Belegnummer", Belegnummer)
cmd.Parameters.AddWithValue("@UStVEr_Importfilename", UStVEr_Importfilename)
+ cmd.Parameters.AddWithValue("@UStVAn_ID", UStVAn_ID)
+ Dim dr = cmd.ExecuteReader()
+ If dr.Read Then
+ 'Dim l As New cOfferte
+ For Each i In getParameterList()
+ Dim propInfo As PropertyInfo = Me.GetType.GetProperty(i.Scalarvariable)
+ If dr.Item(i.Text) Is DBNull.Value Then
+ propInfo.SetValue(Me, Nothing)
+ Else
+ propInfo.SetValue(Me, dr.Item(i.Text))
+ End If
+ Next
+ hasEntry = True
+ End If
+ dr.Close()
+ End Using
+ End Using
+ Catch ex As Exception
+ MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace)
+ End Try
+ End Sub
+
+ Public Sub LOAD(UStVAn_ID As Integer, GutschriftsDatum As Date, GutschriftNr As Integer)
+ Try
+
+ hasEntry = False
+
+ Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
+ Using cmd As New SqlCommand("SELECT * FROM tblUStVErstattung WHERE GutschriftsDatum=@GutschriftsDatum AND GutschriftsNr=@GutschriftsNr AND UStVAn_ID=@UStVAn_ID ", conn)
+ cmd.Parameters.AddWithValue("@GutschriftsDatum", GutschriftsDatum)
+ cmd.Parameters.AddWithValue("@GutschriftsNr", GutschriftsNr)
+ cmd.Parameters.AddWithValue("@UStVAn_ID", UStVAn_ID)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
'Dim l As New cOfferte
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb
index 43af32eb..e84a1917 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/USTV/cUStVLeistender.vb
@@ -19,16 +19,19 @@ Public Class cUStVLeistender
Dim SQL As New SQL
Sub New(UStV_Leistender As String, Optional searchbyUID As Boolean = False)
- If Not searchbyUID Then
- Me.UStV_Leistender = UStV_Leistender
- LOAD()
+ If UStV_Leistender <> "" Then
+ If Not searchbyUID Then
+ Me.UStV_Leistender = UStV_Leistender
+ LOAD()
- Else
- Me.UstV_Leistender_UstNr = UStV_Leistender
- LOADBYUID()
+ Else
+ Me.UstV_Leistender_UstNr = UStV_Leistender
+ LOADByUID()
+ End If
End If
+
End Sub
Sub New(Id As Integer)
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb
index d3bbb16d..bffc9784 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cAdressen.vb
@@ -45,8 +45,8 @@ Public Class cAdressen
'Property SSMA_TimeStamp As Object = Nothing
Property MWSTVorauszahlung As Object = Nothing
Property PLOSEKundenNr As Object = Nothing
-
Property weitereWölflKundenNr As Object = Nothing
+ Property IDSMautbericht_nachOrt As Object = Nothing
Public hasEntry = False
@@ -143,6 +143,7 @@ Public Class cAdressen
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("MWSTVorauszahlung", MWSTVorauszahlung))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PLOSEKundenNr", PLOSEKundenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("weitereWölflKundenNr", weitereWölflKundenNr))
+ list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("IDSMautbericht_nachOrt", IDSMautbericht_nachOrt))
Return list
End Function
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb b/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb
index 33179bdc..9fc84513 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb
@@ -245,6 +245,107 @@ Public Class cAufschubKonten
Return brgakto_gs_aktSaldo
End Function
+ Public Function CalcSaldo_new(Optional dtDate As DataTable = Nothing, Optional Stichtag As Date? = Nothing, Optional showMessage As Boolean = False) As String
+
+ Dim datumBis As Date =
+ If(Stichtag.HasValue, Stichtag.Value.Date, Today.Date)
+
+ Dim datumBisSql As String =
+ datumBis.ToString("yyyy-MM-dd")
+
+ Dim standort As String =
+ brgakto_gs_standort.Replace("'", "''")
+
+
+ Dim saldoSql As String = "DECLARE @Stichtag date = '" & datumBisSql & "'; Declare @Standort varchar(100) = '" & standort & "'; " & "DECLARE @Referenzbetrag decimal(18,2);
+ /* Referenzbetrag vor dem Stichtag */
+SELECT TOP (1)
+ @Referenzbetrag = r.brgarefb_refbetrag
+FROM [ADMIN].[dbo].[tblBrgAufschubKonten] AS k
+INNER JOIN [ADMIN].[dbo].[tblBrgAufschubReferenzberaege] AS r
+ ON r.brgarefb_gsid = k.brgakto_id
+WHERE k.brgakto_gs_standort = @Standort
+ AND ISNULL(r.brgarefb_gs_aktiv, 1) = 1
+ AND r.brgarefb_gueltig_ab < @Stichtag
+ AND (
+ r.brgarefb_gueltig_bis IS NULL
+ OR r.brgarefb_gueltig_bis >= @Stichtag
+ )
+ORDER BY
+ r.brgarefb_gueltig_ab DESC,
+ r.brgarefb_id DESC;
+
+
+/* Bewegungen vor dem Stichtag */
+SELECT
+ ISNULL(@Referenzbetrag, 0)
+ + ISNULL(SUM(Betrag), 0) AS GesamtSicherheitsSaldo
+FROM
+(
+ /* Eingänge vor dem Stichtag */
+ SELECT
+ ISNULL(gs.gs_sicherheitsbetrag, 0) * -1 AS Betrag
+ FROM dbo.tblGesamtsicherheit AS gs
+ WHERE gs.gs_standort = @Standort
+ AND gs.gs_datum < @Stichtag
+ AND ISNULL(gs.gs_ReferenzAenderung, 0) = 0
+
+ UNION ALL
+
+ /* Ausgänge vor dem Stichtag */
+ SELECT
+ ISNULL(gsp.gsp_sicherheitsbetrag, 0) AS Betrag
+ FROM dbo.tblGesamtsicherheitsPositionen AS gsp
+ WHERE gsp.gsp_datum < @Stichtag
+ AND EXISTS
+ (
+ SELECT 1
+ FROM dbo.tblGesamtsicherheit AS gs
+ WHERE gs.gs_gsId = gsp.gsp_gsId
+ AND gs.gs_standort = @Standort
+ AND gs.gs_datum < @Stichtag
+ AND ISNULL(gs.gs_ReferenzAenderung, 0) = 0
+ )
+) AS Bewegungen;"
+
+
+ Dim dt As DataTable =
+ SQL.loadDgvBySql(saldoSql, "AVISO", 100, True)
+
+ Dim saldo As Decimal = 0D
+
+ If dt IsNot Nothing AndAlso
+ dt.Rows.Count > 0 AndAlso
+ Not IsDBNull(dt.Rows(0).Item("GesamtSicherheitsSaldo")) Then
+
+ saldo = Convert.ToDecimal(
+ dt.Rows(0).Item("GesamtSicherheitsSaldo")
+ )
+ End If
+
+
+ brgakto_gs_aktSaldo = CDbl(saldo)
+
+
+ If showMessage Then
+ MsgBox(
+ "Saldo zum Stichtag " &
+ datumBis.ToShortDateString() &
+ ":" & vbNewLine &
+ brgakto_gs_aktSaldo.ToString("N2")
+ )
+ End If
+
+
+ If Not Stichtag.HasValue Then
+ updateSaldo()
+ End If
+
+
+ Return brgakto_gs_aktSaldo.ToString()
+
+ End Function
+
Public Function getReferenzbetrag(nowDate As Date) As Double
Try
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb b/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb
index 6ddd193d..110d9ea9 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cIDS.vb
@@ -3,6 +3,7 @@ Imports System.Data.SqlClient
Imports System.IO
Imports System.Net
Imports System.Reflection
+Imports System.Windows.Forms
Public Class cIDS
@@ -757,6 +758,77 @@ Public Class cIDS
End Function
+
+
+ Function genIDSMautberichtDatatByKdNr(KdNr As String, rechnungsdatum As Date, art As String, Gruppierung_nach_Ort As Boolean) As DataTable
+
+
+ Dim dt As New DataTable
+
+ Dim displayFilter = False
+ Dim sqlstr As String = ""
+
+ Dim sqljoin_nachOrt As String = ""
+ Dim sqlgroup_nachOrt = ""
+ Dim sqlselect_nachOrt = ""
+ If Gruppierung_nach_Ort Then
+ sqljoin_nachOrt = "INNER JOIN tbl_IDS_Stationen ON tblIDSTransactionsNew.OutletCountryCode = tbl_IDS_Stationen.OutletCountryCode and tblIDSTransactionsNew.OutletCode = tbl_IDS_Stationen.OutletCode and tbl_IDS_Stationen.[OutletCountryCode]=740543"
+ sqlgroup_nachOrt = ",tbl_IDS_Stationen.OutletOrt"
+ sqlselect_nachOrt = "tbl_IDS_Stationen.OutletOrt,"
+ End If
+
+
+ Select Case art
+ Case "IDS" 'Offert17
+
+ sqlstr = "SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
+ Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag],
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
+ FROM((tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode) INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode ) INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
+ Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & rechnungsdatum.ToShortDateString & "' AND tblIDSTransactionsNew.[OutletCountryCode]<>740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & "
+ GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], tblIDSTransactionsNew.[OutletCountry], tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz"
+
+
+
+ Case "IDS_AT" 'Offert21
+
+ sqlstr = " SELECT Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 And 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END AS OutletCountry, tbl_IDS_Produkte.ProductDescription," & sqlselect_nachOrt & " tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz, Sum(tblIDSTransactionsNew.[TransactionVolume]) AS Liter, Sum(tblIDSTransactionsNew.[TotalNetAmount]) AS Nettobetrag, Sum(tblIDSTransactionsNew.[VATAmount]) AS Steuerbetrag,
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([TotalNetAmount])/Sum([TransactionVolume]) END AS NettopreisProLiter,
+ Sum(tblIDSTransactionsNew.Rabattbetrag) As [SummevonRabattbetrag],
+ Case when Sum([TransactionVolume]) =0 THEN 0 ELSE Sum([Rabattbetrag])/Sum([TransactionVolume]) END AS RabattbetragProLiter
+ FROM tblIDSTransactionsNew INNER JOIN tbl_IDS_Länder ON tblIDSTransactionsNew.[OutletCountryCode] = tbl_IDS_Länder.OutletCountryCode INNER JOIN tbl_IDS_Produkte On tblIDSTransactionsNew.[ProductTypeCode] = tbl_IDS_Produkte.ProductTypeCode " & sqljoin_nachOrt & " INNER JOIN Adressen On tblIDSTransactionsNew.KdNrVERAG = Adressen.AdressenNr
+ Where cast(tblIDSTransactionsNew.YearMonthDay As Date) = '" & rechnungsdatum.ToShortDateString & "' And tblIDSTransactionsNew.[OutletCountryCode]=740543 AND tblIDSTransactionsNew.KdNrVERAG = " & KdNr & "
+ GROUP BY Adressen.AdressenNr, Adressen.[Name 1], Adressen.[Name 2], Adressen.Straße, Adressen.LandKz, Adressen.PLZ, Adressen.Ort, Adressen.UstIdKz, Adressen.UstIdNr, tblIDSTransactionsNew.[CustomerCode], CASE WHEN tblIDSTransactionsNew.OutletCode BETWEEN 4473 AND 4474 THEN 'Austria Suben' ELSE tblIDSTransactionsNew.OutletCountry END, tbl_IDS_Produkte.ProductDescription, tbl_IDS_Länder.Steuersatz, tblIDSTransactionsNew.Rechenwert, tblIDSTransactionsNew.Kz" & sqlgroup_nachOrt
+
+ End Select
+
+
+ dt = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL")
+
+ Return dt
+
+
+
+ End Function
+
+ Public Function getCurrentInvoicedate(kdNr As String) As String
+
+ Dim datum As String = ""
+
+ If kdNr <> "" AndAlso IsNumeric(kdNr) Then
+ Dim rechnungsdatum As String = SQL.getValueTxtBySql(" select top(1) cast(tblIDSTransactionsNew.YearMonthDay As Date) from tblIDSTransactionsNew Where tblIDSTransactionsNew.KdNrVERAG = " & kdNr & " order by tblIDSTransactionsNew.YearMonthDay desc", "FMZOLL")
+ If rechnungsdatum <> "" AndAlso IsDate(rechnungsdatum) Then
+ datum = rechnungsdatum
+ End If
+ End If
+
+ Return datum
+
+ End Function
+
+
+
Public Class Paramter
Shared apiSettingsloaded As Boolean = False
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb b/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb
index 13b732d4..e4edd066 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cMDMZinsberechnung.vb
@@ -181,7 +181,7 @@ Public Class cMDMZinsberechnung
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
- Using cmd As New SqlCommand("SELECT id,belegNr,belegDatum,buchungstext,zahlungsBetrag,zahlungDatum, ueberschreitungInTagen, zinssatz,zinsbetrag, zahlungsperiode_start,zahlungsperiode_ende
+ Using cmd As New SqlCommand("SELECT id,belegNr,belegDatum,buchungstext,zahlungsBetrag,zahlungDatum, ueberschreitungInTagen, zinssatz,zinsbetrag, zahlungsperiode_start,zahlungsperiode_ende, faelligkeitsDatum
FROM
tblMDM_Zinsberechnung
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb
index 826b029b..17d7e096 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cNCTSGestellungsadressen.vb
@@ -64,6 +64,10 @@ Public Class cNCTSGestellungsadressen
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
+ If Not VERAG_PROG_ALLGEMEIN.cProgramFunctions.ValidateSQLFieldLengths(list, "tblNCTSGestellungsadressen", "", "FMZOLL") Then
+ Return False
+ End If
+
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM tblNCTSGestellungsadressen WITH(updlock,serializable) WHERE nga_id=@nga_id) " &
" BEGIN " & getUpdateCmd() & " END " &
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb
index 6dd11e98..08106028 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cSMS.vb
@@ -481,6 +481,8 @@ Public Class cSMS
If Originator = "" Then Originator = absenderFirma
If Originator.Length > 11 Then Originator = Originator.Substring(0, 11)
+ Message = System.Text.RegularExpressions.Regex.Replace(Message, "\r\n|\r|\n", ", ")
+
Dim json As New Chilkat.JsonObject
'---------------------------------------------
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb b/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb
index 5365e6fc..4983add4 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cTrdInvoice.vb
@@ -201,7 +201,7 @@ Public Class cTrdInvoice
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
- Using cmd As New SqlCommand(" SELECT tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer, tblTrdinInvoice.SteuerbetragLokal,(SteuerpflichtigerBetragLokal+SteuerfreierBetragLokal) as Nettobetrag , tblTrdinInvoice.UStVAn_ID, tblTrdinInvoice.FilialenNr
+ Using cmd As New SqlCommand(" SELECT tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer, tblTrdinInvoice.SteuerbetragLokal,(SteuerpflichtigerBetragLokal) as Nettobetrag , tblTrdinInvoice.UStVAn_ID, tblTrdinInvoice.FilialenNr
FROM tblTrdinInvoice
WHERE tblTrdinInvoice.Rechnungsdatum Between @von And @bis AND tblTrdinInvoice.SteuerbetragLokal<>0 AND tblTrdinInvoice.RechnungsKundenNr=@AdressenNr AND tblTrdinInvoice.WährungLokal='EUR'" & IIf(Archiv, " ", " AND isnull(tblTrdinInvoice.UStVAn_ID,0) = 0 ") & "
ORDER BY tblTrdinInvoice.Rechnungsdatum, tblTrdinInvoice.Rechnungsnummer", conn)
diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb
index e1318c1c..5e4e55e2 100644
--- a/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb
+++ b/VERAG_PROG_ALLGEMEIN/Classes/cUTA.vb
@@ -953,6 +953,16 @@ Public Class cUTA
Sub New()
End Sub
+ Sub New(RechnungsNr, KundenNr, Datum, DocumentTyp)
+ Me.RechnungsNr = RechnungsNr
+ Me.KundenNr = KundenNr
+ Me.Datum = Datum
+ Me.DocumentTyp = DocumentTyp
+ LOAD(RechnungsNr, KundenNr, Datum, DocumentTyp)
+
+ End Sub
+
+
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Id", Id,, True))
@@ -978,6 +988,38 @@ Public Class cUTA
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
+ Public Sub LOAD(RechnungsNr As String, KundenNr As Integer, Datum As Date, DocumentTyp As String)
+ Try
+ hasEntry = False
+ Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
+ Using cmd As New SqlCommand("Select * FROM tblUTADocuments WHERE Datum=@Datum AND KundenNr = @KundenNr AND RechnungsNr=@RechnungsNr AND DocumentTyp = @DocumentTyp ", conn)
+ cmd.Parameters.AddWithValue("@Datum", Datum)
+ cmd.Parameters.AddWithValue("@KundenNr", KundenNr)
+ cmd.Parameters.AddWithValue("@RechnungsNr", RechnungsNr)
+ cmd.Parameters.AddWithValue("@DocumentTyp", DocumentTyp)
+
+ Dim dr = cmd.ExecuteReader()
+ If dr.Read Then
+ For Each li In getParameterList()
+ Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
+
+ If dr.Item(li.Text) Is DBNull.Value Then
+ propInfo.SetValue(Me, Nothing)
+ Else
+ propInfo.SetValue(Me, dr.Item(li.Text))
+ End If
+
+ Next
+ hasEntry = True
+ End If
+ dr.Close()
+ End Using
+ End Using
+ Catch ex As Exception
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name)
+ End Try
+ End Sub
+
Public Sub LOAD()
Try
hasEntry = False
diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
index 3fd10af7..2a04c7c5 100644
--- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
+++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb
@@ -337,8 +337,9 @@ Public Class cDATENSERVER
Public Function insertDataToDATENSERVER(srcPath, Optional bezeichnung = "", Optional endung = "", Optional allowMsg = True, Optional coll_archiv = False) As Boolean
'Datei musss schon am Datenserver liegen, wird nciht mehr kopiert!!!!!
+ Try
- If endung = "" Then Dim fi As New System.IO.DirectoryInfo(srcPath) : endung = fi.Extension
+ If endung = "" Then Dim fi As New System.IO.DirectoryInfo(srcPath) : endung = fi.Extension
' If bezeichnung = "" Then bezeichnung = System.IO.Path.GetFileName(srcPath) : endung = ""
If bezeichnung = "" Then bezeichnung = da_name
replaceInvalidCahr(bezeichnung)
@@ -351,6 +352,13 @@ Public Class cDATENSERVER
If DATA_LIST.ADD_WOcopy(srcPath, bezeichnung, "", coll_archiv) Then
Return True
End If
+
+ Catch ex As Exception
+
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Pfad: " & srcPath & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodBase.GetCurrentMethod.Name, VERAG_PROG_ALLGEMEIN.ERROR_OP.MAIL)
+ Return False
+ End Try
+
Return False
End Function
@@ -1266,6 +1274,48 @@ Public Class cFormularManager
End If
End Sub
+ Public Shared Function convertPictureToPDF(path As String) As String
+
+ If Not File.Exists(path) Then
+ Throw New FileNotFoundException("Picture not found.", path)
+ End If
+
+ Dim outputPath As String = getTMPPath_PDF()
+
+ Dim pdfImage As Spire.Pdf.Graphics.PdfImage = pdfImage.FromFile(path)
+
+ Dim doc As New Spire.Pdf.PdfDocument()
+
+ Try
+ Dim page As PdfPageBase = doc.Pages.Add()
+
+ Dim pageWidth As Single = page.ActualSize.Width
+ Dim pageHeight As Single = page.ActualSize.Height
+
+ 'Seitenverhältnis beibehalten
+ Dim scaleX As Single = pageWidth / pdfImage.Width
+ Dim scaleY As Single = pageHeight / pdfImage.Height
+ Dim scale As Single = Math.Min(scaleX, scaleY)
+
+ Dim imageWidth As Single = pdfImage.Width * scale
+ Dim imageHeight As Single = pdfImage.Height * scale
+
+ 'Bild zentrieren
+ Dim x As Single = (pageWidth - imageWidth) / 2
+ Dim y As Single = (pageHeight - imageHeight) / 2
+
+ page.Canvas.DrawImage(pdfImage, 0, 0)
+
+ doc.SaveToFile(outputPath)
+
+ Finally
+ doc.Close()
+ End Try
+
+
+ Return outputPath
+ End Function
+
@@ -1527,6 +1577,7 @@ Public Class cFormularManager
+
Public Shared Function getPDFViaSpirePDF_FromURL(URL As String, Optional targetPath As String = "") As String
Try
If targetPath = "" Then targetPath = getTMPPath_PDF()
@@ -2377,17 +2428,27 @@ Public Class DATENVERVER_OPTIONS
kdnr_path = kdnr
End If
If kategorie <> "" Then
- Dim dir = ""
- dir &= rootDir
- dir &= kategorie & "\"
- dir &= If(ordner IsNot Nothing AndAlso ordner <> "", ordner & "\", "")
- dir &= If(kdnr_path <> "", kdnr_path & "\", "")
- dir &= If(da_uOrdner1 IsNot Nothing AndAlso da_uOrdner1 <> "", da_uOrdner1 & "\", "")
- dir &= If(da_uOrdner2 IsNot Nothing AndAlso da_uOrdner2 <> "", da_uOrdner2 & "\", "")
- dir &= If(da_uOrdner3 IsNot Nothing AndAlso da_uOrdner3 <> "", da_uOrdner3 & "\", "")
+ Dim dir As String = Path.Combine(
+ rootDir,
+ kategorie,
+ If(String.IsNullOrWhiteSpace(ordner), "", ordner),
+ If(String.IsNullOrWhiteSpace(kdnr_path), "", kdnr_path),
+ If(String.IsNullOrWhiteSpace(da_uOrdner1), "", da_uOrdner1),
+ If(String.IsNullOrWhiteSpace(da_uOrdner2), "", da_uOrdner2),
+ If(String.IsNullOrWhiteSpace(da_uOrdner3), "", da_uOrdner3))
If Not onlyordner Then
If Not System.IO.Directory.Exists(dir) Then
- System.IO.Directory.CreateDirectory(dir)
+ Try
+ If Not Directory.Exists(dir) Then
+ Directory.CreateDirectory(dir)
+ End If
+
+ Catch ex As UnauthorizedAccessException
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & "Keine Berechtigung für den Ordner: " & dir & Environment.NewLine & "Windows-Benutzer: " & System.Security.Principal.WindowsIdentity.GetCurrent().Name & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+
+ Catch ex As IOException
+ VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, "Fehler beim Zugriff auf den Ordner: " & dir & vbNewLine & vbNewLine & ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
+ End Try
End If
Dim zusatz = "" : Dim zusatzcnt = 1
While System.IO.File.Exists(dir & dateiName & zusatz & If(bezeichnung.ToString.EndsWith(endung), "", endung))
@@ -2451,7 +2512,7 @@ Public Class DATENVERVER_OPTIONS
End Function
- Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String) As String
+ Public Shared Function addZugferdXML(pdfPath As String, xmlPath As String, Optional fixedIssuerAssignedID As Boolean = True) As String
Dim tempFile As String = pdfPath & ".tmp"
@@ -2461,6 +2522,12 @@ Public Class DATENVERVER_OPTIONS
Dim xmlBytes = File.ReadAllBytes(xmlPath)
+
+ If fixedIssuerAssignedID Then
+ fixIssuerAssignedID(xmlBytes)
+ End If
+
+
Dim fileName As String = "factur-x.xml"
If HasAttachment(pdf, fileName) Then
@@ -2496,6 +2563,75 @@ Public Class DATENVERVER_OPTIONS
End Function
+
+
+ Public Shared Sub fixIssuerAssignedID(ByRef xmlBytes As Byte())
+
+
+ Dim xmlDoc As New System.Xml.XmlDocument()
+ xmlDoc.PreserveWhitespace = True
+
+ Using ms As New MemoryStream(xmlBytes)
+ xmlDoc.Load(ms)
+ End Using
+
+ Dim ns As New System.Xml.XmlNamespaceManager(xmlDoc.NameTable)
+
+ ns.AddNamespace(
+ "ram",
+ "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ )
+
+ Dim documents = xmlDoc.SelectNodes(
+ "//ram:AdditionalReferencedDocument",
+ ns
+ )
+
+ For Each document As XmlElement In documents
+
+ Dim idNode As XmlNode =
+ document.SelectSingleNode("ram:ID", ns)
+
+ If idNode Is Nothing Then
+ Continue For
+ End If
+
+ ' Wert der bisherigen ID merken
+ Dim idValue As String = idNode.InnerText
+
+ ' Neue IssuerAssignedID erzeugen
+ Dim issuerAssignedID As XmlElement =
+ xmlDoc.CreateElement(
+ "ram",
+ "IssuerAssignedID",
+ "urn:un:unece:uncefact:data:standard:ReusableAggregateBusinessInformationEntity:100"
+ )
+
+ issuerAssignedID.InnerText = idValue
+
+ ' ID entfernen
+ document.RemoveChild(idNode)
+
+ ' IssuerAssignedID an ERSTE Stelle setzen
+ document.InsertBefore(
+ issuerAssignedID,
+ document.FirstChild
+ )
+
+ Next
+
+ Using ms As New MemoryStream()
+ xmlDoc.Save(ms)
+ xmlBytes = ms.ToArray()
+ End Using
+
+
+ End Sub
+
+
+
+
+
Private Shared Function HasAttachment(pdf As iText.Kernel.Pdf.PdfDocument, fileName As String) As Boolean
Dim catalog = pdf.GetCatalog().GetPdfObject()
@@ -2606,7 +2742,7 @@ Public Class DATENVERVER_OPTIONS
xmp.SetStructField(pdfaExt, "schemas[1]", pdfaSchema, "namespaceURI", fxNs)
xmp.SetStructField(pdfaExt, "schemas[1]", pdfaSchema, "prefix", "fx")
- ' 🔥 property MUSS rdf:Seq sein!
+ ' property MUSS rdf:Seq sein!
xmp.SetStructField(
pdfaExt,
"schemas[1]",
@@ -2624,7 +2760,7 @@ Public Class DATENVERVER_OPTIONS
Dim arrayPath = "schemas[1]/pdfaSchema:property"
- ' 🔥 Item in rdf:Seq hinzufügen
+ ' Item in rdf:Seq hinzufügen
xmp.AppendArrayItem(
pdfaExt,
arrayPath,
diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb
index bb0c144b..fffa2e4a 100644
--- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb
+++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/MIC/cMIC.vb
@@ -252,5 +252,13 @@
End Function
+ Public Class Paramter
+
+ Shared SQL As New VERAG_PROG_ALLGEMEIN.SQL
+ Shared Function GET_PARAM_ByName(tcParam_name, TESTSYSTEM) As String
+ Return SQL.getValueTxtBySql("SELECT TOP 1 [Param_value] FROM [tblPartnersystem_Paramter] WHERE Param_system='MIC' AND [Param_name]='" & tcParam_name & "' AND Param_testsystem = " & IIf(TESTSYSTEM, 1, 0), , , SQL.GetNewOpenConnectionFMZOLL_SYSTEM(TESTSYSTEM))
+ End Function
+ End Class
+
End Class
diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb
index ff4b6184..abae6fa0 100644
--- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb
+++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb
@@ -6,15 +6,44 @@ Public Class cSyska_Interface
'STAMMDATEN
Shared Function getStammdaten(FiBuSchnittstelleNr) As DataTable
- Dim sqlStr = " Select KundenNrZentrale As [Konto-Nr],isnull([Name 1],'') as Name,isnull([Name 2],'') as [Name2],(isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer],isnull(UstIdGeprüft,'') as [UID-Datum],[Strasse],Adressen.landkz ,PLZ,LTRIM([Ort]) as Ort,isnull(BLZ,'') as [BLZ],isnull(KTO,'') as [KTO], CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel],/*'' as [SPz],'' as [STg],*/isnull([E-Mail],'') as [mail],'' AS Info1,'' AS Inf2, Zahlungsziel2, Zahlungsziel3,[E-Mail],[Telefon] ,Telefax "
- sqlStr &= " ,Ordnungsbegriff ,Kunden.Währungscode,Anrede,Ansprechpartner,Lastschrift,Kunden.[Eingegeben am] as EingegebenAm"
- sqlStr &= " FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr "
- sqlStr &= " LEFT JOIN tblKundenErweitert ON KundenNr=kde_KundenNr "
- sqlStr &= " LEFT JOIN [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz "
- sqlStr &= " LEFT JOIN Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel "
- sqlStr &= " WHERE FiBuSchnittstelle=1 AND Auswahl='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' "
- sqlStr &= " Order by [Konto-Nr] "
- Return SQL.loadDgvBySql(sqlStr, "FMZOLL")
+
+ Dim SQLString = "Select Top(100)
+ KundenNrZentrale As [Konto-Nr],
+ isnull([Name 1],'') as Name,
+ isnull([Name 2],'') as [Name2],
+ (isnull(UstIdKz,'') + isnull(UstIdNr,'')) as [UST-Id-Nummer],
+ isnull(UstIdGeprüft,'') as [UID-Datum],
+ [Strasse],
+ Adressen.landkz ,
+ PLZ,LTRIM([Ort]) as Ort,
+ isnull(BLZ,'') as [BLZ],
+ isnull(KTO,'') as [KTO],
+ CASE WHEN CAST(Zahlungsziel as VARCHAR(3)) ='0' THEN '' ELSE CAST(Zahlungsziel as VARCHAR(3)) END as [ZZiel],
+ isnull([E-Mail],'') as [mail],
+ '' AS Info1,
+ '' AS Inf2,
+ Zahlungsziel2,
+ Zahlungsziel3,
+ [E-Mail],
+ [Telefon] ,
+ Telefax,Ordnungsbegriff,
+ Kunden.Währungscode,
+ Anrede,
+ Ansprechpartner,
+ Lastschrift,
+ Kunden.[Eingegeben am] as EingegebenAm,
+ isnull(tblKundenErweitert.kde_BezFIBU,'') as [Kürzel],
+ 2811 as [präf. Bank],
+ isnull(tblKundenErweitert.kde_Fakturierung_Sprache,'') as Sprache,
+ isnull(Adressen.Steuernummer,'')as [SteuerNr],
+ isnull(tblKundenErweitert.kde_betreuer,'') as Betreuer
+ FROM Adressen INNER JOIN Kunden ON Kundennr=AdressenNr
+ Left Join tblKundenErweitert ON KundenNr=kde_KundenNr
+ Left Join [Länderverzeichnis für die Außenhandelsstatistik] as St ON St.LandKz=Adressen.LandKz
+ Left Join Währungstabelle ON St.LandNr = Währungstabelle.Währungsschlüssel
+ WHERE FiBuSchnittstelle = 0 And Auswahl ='A' AND FiBuSchnittstelleNr='" & FiBuSchnittstelleNr & "' and KundenNr = 203152 Order by [Konto-Nr]"
+
+ Return SQL.loadDgvBySql(SQLString, "FMZOLL")
End Function
' Shared Function getStammdatenTEST(FiBuSchnittstelleNr) As DataTable
@@ -80,9 +109,6 @@ Public Class cSyska_Interface
Dim cleanStringName As String = Regex.Replace(row("Name"), "[^A-Za-z0-9\-/]", "").Replace(" ", "").ToUpper
Dim Lastschrift = CBool(row("Lastschrift"))
- 'If FormatStringSYS(row("Name2"), 50) <> "" Then
- ' MsgBox(FormatStringSYS(row("Name2"), 50) & vbTab)
- 'End If
getPersonenKto = ""
getPersonenKto &= row("Konto-Nr") & vbTab
getPersonenKto &= FormatStringSYS(cleanStringName, 2) & row("Konto-Nr") & vbTab
@@ -113,7 +139,73 @@ Public Class cSyska_Interface
getPersonenKto &= FormatStringSYS(row("Telefax")) & vbTab
getPersonenKto &= FormatStringSYS(row("E-Mail")) & vbTab
getPersonenKto &= vbTab
- ' getPersonenKto &= vbTab
+
+ End Function
+
+
+ Public Shared Function getPersonenKto_MDM(row As DataRow) As String
+
+ Dim LandKz = row("LandKz")
+ Dim Gegenkontonummer = ""
+ Dim Gegenkontonummer2 = ""
+ If LandKz Is DBNull.Value Or LandKz.trim = "" Or LandKz = "A" Then
+ Gegenkontonummer = "4000" ' Erl. 20%
+ Gegenkontonummer2 = "4000" ' Erl. 20%
+ Else
+ If CBool(SQL.DLookup("[MitgliedslandEU]", "[Währungstabelle]", "[LandKz]='" & LandKz & "'", "FMZOLL", False)) Then
+ Gegenkontonummer = "4020" ' Erl. 0% EU
+ Gegenkontonummer2 = "4020" ' Erl. 0% EU
+ Else
+ Gegenkontonummer = "4021" ' Erl. 0% 3.Land
+ Gegenkontonummer2 = "4021" ' Erl. 0% 3.Land
+ End If
+ End If
+
+ Dim cleanStringName As String = Regex.Replace(row("Name"), "[^A-Za-z0-9\-/]", "").Replace(" ", "").ToUpper
+
+ Dim SteuerNr As String = ""
+
+ If Not IsDBNull(row("SteuerNr")) Then
+ SteuerNr = Regex.Replace(row("SteuerNr").ToString(), "[^0-9]", "")
+ End If
+
+ Dim Lastschrift = CBool(row("Lastschrift"))
+ getPersonenKto_MDM = ""
+ getPersonenKto_MDM &= row("Konto-Nr") & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Kürzel"), 24) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Name"), 50) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Name2"), 50) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Strasse"), 50) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("PLZ"), 20) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Ort"), 50) & vbTab
+ getPersonenKto_MDM &= cProgramFunctions.getISO2Land(FormatStringSYS(LandKz, 5)) & vbTab
+ getPersonenKto_MDM &= CDate(row("EingegebenAm")).ToShortDateString & vbTab 'Eröffnungsdatum
+ 'getPersonenKto_MDM &= Gegenkontonummer & vbTab
+ getPersonenKto_MDM &= vbTab 'Bankname
+ getPersonenKto_MDM &= If(Lastschrift, row("BLZ"), "") & vbTab
+ getPersonenKto_MDM &= If(Lastschrift, row("KTO"), "") & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Name"), 50) & vbTab 'Inhaber
+ getPersonenKto_MDM &= "00" & vbTab 'Skontotage
+ getPersonenKto_MDM &= If(row("ZZiel") IsNot DBNull.Value AndAlso row("ZZiel") <> String.Empty, CDbl(row("ZZiel")).ToString("00"), "") & vbTab
+ getPersonenKto_MDM &= "00,00" & vbTab 'Skonto
+ getPersonenKto_MDM &= "01" & vbTab 'Mahnkennung
+ getPersonenKto_MDM &= FormatStringSYS(row("UST-Id-Nummer"), 50) & vbTab
+ 'getPersonenKto_MDM &= vbTab
+ getPersonenKto_MDM &= row("Währungscode") & vbTab
+ 'getPersonenKto_MDM &= vbTab 'Forderungsonto
+ 'getPersonenKto_MDM &= vbTab
+ 'getPersonenKto_MDM &= Gegenkontonummer2 & vbTab 'Platzhalter??
+ getPersonenKto_MDM &= FormatStringSYS(row("Anrede") & " " & row("Ansprechpartner"), 100) & vbTab
+ 'getPersonenKto_MDM &= vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Telefon")) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Telefax")) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("E-Mail")) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("präf. Bank")) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Sprache")) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(SteuerNr) & vbTab
+ getPersonenKto_MDM &= FormatStringSYS(row("Betreuer")) & vbTab
+
+ getPersonenKto_MDM &= vbTab
End Function
@@ -146,43 +238,50 @@ Public Class cSyska_Interface
If True Then 'boolKunden Then
'----------------- STAMMDATEN -----------------
Dim dt_Stamm As DataTable = getStammdaten(FiBuSchnittstelleNr)
+ Dim postfix As String = ""
If dt_Stamm IsNot Nothing AndAlso dt_Stamm.Rows.Count > 0 Then
-
+ If FiBuSchnittstelleNr = 19 Then postfix = "MDM_"
Dim fileKD As System.IO.StreamWriter
- Dim DateinameKD = "AVISO_DEBI_" & Now.ToString("ddMMyyyy_HHmm") & ".txt"
+ Dim DateinameKD = "AVISO_DEBI_" & Now.ToString("ddMMyyyy_HHmm") & postfix & ".txt"
fileKD = My.Computer.FileSystem.OpenTextFileWriter(pathKD & DateinameKD, True, System.Text.Encoding.GetEncoding("iso-8859-15"))
- 'fileKD.WriteLine(genStammdatenBeginn())
+ 'fileKD.WriteLine(genStammdatenBeginn())
- initKDNr(dt_Stamm)
+ initKDNr(dt_Stamm)
For Each r In dt_Stamm.Rows
- fileKD.WriteLine(getPersonenKto(r))
+ If FiBuSchnittstelleNr = 19 Then
+ fileKD.WriteLine(getPersonenKto_MDM(r))
+ Else
+ fileKD.WriteLine(getPersonenKto(r))
+ End If
+
+
Next
bool_DatenVorhanden = True
- fileKD.Close()
+ fileKD.Close()
+
+ 'In Archiv sichern
+ If pathArchivKD <> "" Then
+ If Not System.IO.Directory.Exists(pathArchivKD) Then System.IO.Directory.CreateDirectory(pathArchivKD)
+ If pathKD <> pathArchivKD Then System.IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD)
+ End If
+
+ If bool_DatenVorhanden Then
+ If OpenFile Then Process.Start(pathKD & DateinameKD)
+ Else
+ System.IO.File.Delete(pathKD & DateinameKD)
+ End If
+
+ 'NOCH NICHT!!!
+ updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0
- 'In Archiv sichern
- If pathArchivKD <> "" Then
- If Not System.IO.Directory.Exists(pathArchivKD) Then System.IO.Directory.CreateDirectory(pathArchivKD)
- If pathKD <> pathArchivKD Then System.IO.File.Copy(pathKD & DateinameKD, pathArchivKD & DateinameKD)
End If
-
- If bool_DatenVorhanden Then
- If OpenFile Then Process.Start(pathKD & DateinameKD)
- Else
- System.IO.File.Delete(pathKD & DateinameKD)
- End If
-
- 'NOCH NICHT!!!
- updateFibu(FiBuSchnittstelleNr) ' UPDATE FiBuSchnittstelle --> 0
-
End If
- End If
diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb
index 845fc7d1..929e53f1 100644
--- a/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb
+++ b/VERAG_PROG_ALLGEMEIN/VERAG_Zollanmeldung/cVERAG_CustomsDeclarations.vb
@@ -225,7 +225,13 @@ Public Class cVERAG_CustomsDeclarations
' CBAM Pattern (HSCode)
' ------------------------------------------------------------
Dim cbamWhere As String = VERAG_PROG_ALLGEMEIN.cGreendeal_CBAM_Trn.BuildCBAMPatternWhereClause("i.zaItem_HSCode")
- Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode")
+ Dim cbamWhereSnd As String = " AND " & cbamWhere.Replace("i.zaItem_HSCode", "zaItem_HSCode") &
+ " AND zaItem_OriginCountry NOT IN (
+ 'EU','AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR',
+ 'DE','GR','HU','IE','IT','LV','LT','LU','MT','NL',
+ 'PL','PT','RO','SK','SI','ES','SE',
+ 'CH','NO','IS','LI','XI'
+ )"
Dim cbamWhereISOCntry As String = " i.zaItem_OriginCountry NOT IN (
/*EU-27 (ISO2)*/
@@ -727,6 +733,12 @@ Public Class cVERAG_CustomsDeclarations
p.zaParty_Role IN ('CZ','EX','EXP','EXPORTER','CONSIGNOR'))") & "
WHERE z.za_ReleaseDate BETWEEN '" & von.ToShortDateString & "' AND '" & bis.ToShortDateString & "'
+ AND i.zaItem_OriginCountry NOT IN (
+ 'EU','AT','BE','BG','HR','CY','CZ','DK','EE','FI','FR',
+ 'DE','GR','HU','IE','IT','LV','LT','LU','MT','NL',
+ 'PL','PT','RO','SK','SI','ES','SE',
+ 'CH','NO','IS','LI','XI'
+ )
AND EXISTS (
SELECT 1
FROM VERAG.dbo.tblGreendeal_CBAM_Trn t
@@ -788,11 +800,19 @@ Public Class cVERAG_CustomsDeclarations
Dim prefixes As HashSet(Of String) =
New HashSet(Of String)(cbamHsCodes)
+ Dim excludedCountries As New HashSet(Of String) From {
+ "EU", "AT", "BE", "BG", "HR", "CY", "CZ", "DK", "EE", "FI", "FR",
+ "DE", "GR", "HU", "IE", "IT", "LV", "LT", "LU", "MT", "NL",
+ "PL", "PT", "RO", "SK", "SI", "ES", "SE",
+ "CH", "NO", "IS", "LI", "XI"
+ }
+
Return Me.Items.
Where(Function(it)
Dim hs As String = If(it.zaItem_HSCode, "").Trim()
If hs = "" Then Return False
- ' linksseitiger Prefix-Abgleich
+ Dim origin As String = If(it.zaItem_OriginCountry, "").Trim().ToUpper()
+ If origin <> "" AndAlso excludedCountries.Contains(origin) Then Return False
For Each p In prefixes
If hs.StartsWith(p) Then
Return True
diff --git a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb
index 1f3a6990..d3c35e40 100644
--- a/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb
+++ b/VERAG_PROG_ALLGEMEIN/cProgramFunktions.vb
@@ -958,15 +958,17 @@ BindingFlags.Instance Or BindingFlags.NonPublic, Nothing, [Control], New Object(
End If
-
-
-
mySmtpsvr.UseDefaultCredentials = False
mySmtpsvr.Credentials = myCredentials
Try
'Msg.BodyEncoding = System.Text.Encoding.GetEncoding("UTF-8")
Msg.BodyEncoding = System.Text.Encoding.UTF8 'System.Text.Encoding.GetEncoding("ISO-8859-1")
- Msg.From = New MailAddress(eMailfrom)
+
+ If myCredentials.UserName.ToLower.Contains("no-reply") AndAlso eMailfrom.ToString.ToLower.Contains("no-reply") Then
+ Msg.From = New MailAddress(myCredentials.UserName)
+ Else
+ Msg.From = New MailAddress(eMailfrom)
+ End If
If eMailTo IsNot Nothing Then
For Each s As String In eMailTo.ToString.Split(";"c)
diff --git a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb
index 2404239b..30090b47 100644
--- a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb
+++ b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.Designer.vb
@@ -235,7 +235,7 @@ Partial Class frmDatumsabfrage
Friend WithEvents btn As Button
Friend WithEvents lbl As Label
Friend WithEvents Label1 As Label
- Friend WithEvents dtp_date As DateTimePicker
+ Public WithEvents dtp_date As DateTimePicker
Friend WithEvents pnlKunde As Panel
Public WithEvents cboKundenkreis As VERAG_PROG_ALLGEMEIN.MyComboBox
Public WithEvents cbxKunden As CheckBox
diff --git a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb
index 1f43963f..b8892d5c 100644
--- a/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb
+++ b/VERAG_PROG_ALLGEMEIN/frmDatumsabfrage.vb
@@ -71,7 +71,10 @@ Public Class frmDatumsabfrage
End Sub
Private Sub frmDatumsabfrage(sender As Object, e As EventArgs) Handles Me.Load
- dtp_date.Value = Now.ToShortDateString
+
+
+
+ 'dtp_date.Value = Now.ToShortDateString
pnlKunde.Visible = panelKunde
MyPanel2.Visible = panelLaender