From 8c4d04703be48123ed3e503fcf3dade2f0e5b25c Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 3 Sep 2025 17:31:59 +0200 Subject: [PATCH 1/9] Bon, kundenubersicht, etc. --- SDL/kunden/frmBonitätsverlauf.vb | 27 +- SDL/kunden/usrCntlKundenuebersicht.vb | 17 +- .../Creditsafe/cCreditSafeAPI.vb | 373 +++++++++++++----- 3 files changed, 299 insertions(+), 118 deletions(-) diff --git a/SDL/kunden/frmBonitätsverlauf.vb b/SDL/kunden/frmBonitätsverlauf.vb index 61cd80d6..45b40759 100644 --- a/SDL/kunden/frmBonitätsverlauf.vb +++ b/SDL/kunden/frmBonitätsverlauf.vb @@ -43,9 +43,10 @@ Public Class frmBonitätsverlauf If KdSearchBox1.KdNr_value > 0 Then With MyDatagridview1 Dim sqlstr As String = "" + Dim KD_ERW As New cKundenErweitert(KdSearchBox1.KdNr_value) - If KD_ERW.kde_CreditSaveId IsNot Nothing AndAlso KD_ERW.kde_CreditSaveId <> "" AndAlso newView Then + If KD_ERW.kde_CreditSaveId IsNot Nothing AndAlso KD_ERW.kde_CreditSaveId <> "" Then Dim sqlIndex As String = "" @@ -55,13 +56,7 @@ Public Class frmBonitätsverlauf sqlIndex = "ba_CreditSaveBonitaetsIndex" End If - sqlstr &= "SELECT * - FROM ( - SELECT ba_Datum," & sqlIndex & " ,ba_GruendundsDatum,ba_Umsatz,ba_Mitarbeiter,ba_Hoechstkredit,ba_Sachbearbeiter,ba_Zahlungsweise,ba_GFName,ba_Risikostufe,ba_CreditSaveRisikoklasse,ba_Pruefungstool,ba_GSName,ba_Geschaeftszweck,ba_datenarchivId - FROM tblBonitaetsauskunft - WHERE ba_KundenNr = " & KdSearchBox1.KdNr_value & " - - UNION ALL + Dim sqlNewViewAdd As String = " UNION ALL SELECT CAST(e.eventDate AS DATE) AS ba_Datum,MAX(e.crValue) AS " & sqlIndex & ",NULL AS ba_GruendundsDatum,NULL AS ba_Umsatz,NULL AS ba_Mitarbeiter,MAX(e.clValue) AS ba_Hoechstkredit,MAX(e.sachbearbeiter) AS ba_Sachbearbeiter,NULL AS ba_Zahlungsweise,NULL AS ba_GFName,NULL AS ba_Risikostufe,NULL AS ba_CreditSaveRisikoklasse,Source AS ba_Pruefungstool,NULL AS ba_GSName,NULL AS ba_Geschaeftszweck,NULL AS ba_datenarchivId @@ -71,7 +66,7 @@ Public Class frmBonitätsverlauf e.portfolioId, e.eventDate, e.sachbearbeiter, - CASE WHEN e.localEventCode = 'CR' OR e.globalEventCode = 'CR' THEN e.newValueCR ELSE 0 END AS crValue, + CASE WHEN e.localEventCode = 'CR' OR e.globalEventCode = 'CR' THEN " & IIf(Not KD_ERW.kde_CreditSaveId.ToLower.Contains("at"), "e.newValueCRIndex", "e.newValueCR") & " ELSE 0 END AS crValue, CASE WHEN e.localEventCode = 'CL' OR e.globalEventCode = 'CL' THEN e.newValueCL ELSE 0 END AS clValue, 'creditsafe API' AS Source FROM [VERAG].[dbo].[tblCreditsafeEvents] e @@ -81,10 +76,20 @@ Public Class frmBonitätsverlauf AND b.ba_Pruefungstool = 'creditsafe API' AND (e.localEventCode IN ('CL','CR') OR e.globalEventCode IN ('CL','CR')) ) e - GROUP BY e.companyId, e.portfolioId, CAST(e.eventDate AS DATE), Source - ) AS Temp + GROUP BY e.companyId, e.portfolioId, CAST(e.eventDate AS DATE), Source" + + + sqlstr &= "SELECT * + FROM ( + SELECT ba_Datum," & sqlIndex & " ,ba_GruendundsDatum,ba_Umsatz,ba_Mitarbeiter,ba_Hoechstkredit,ba_Sachbearbeiter,ba_Zahlungsweise,ba_GFName,ba_Risikostufe,ba_CreditSaveRisikoklasse,ba_Pruefungstool,ba_GSName,ba_Geschaeftszweck,ba_datenarchivId + FROM tblBonitaetsauskunft + WHERE ba_KundenNr = " & KdSearchBox1.KdNr_value & IIf(newView, sqlNewViewAdd, "") & ") AS Temp ORDER BY Temp.ba_Datum DESC;" + Else + + sqlstr = "SELECT * FROM [tblBonitaetsauskunft] where ba_KundenNr=" & KdSearchBox1.KdNr_value & " ORDER BY ba_Datum DESC" + End If diff --git a/SDL/kunden/usrCntlKundenuebersicht.vb b/SDL/kunden/usrCntlKundenuebersicht.vb index 4be5956b..8c71e8e9 100644 --- a/SDL/kunden/usrCntlKundenuebersicht.vb +++ b/SDL/kunden/usrCntlKundenuebersicht.vb @@ -3185,6 +3185,7 @@ Public Class usrCntlKundenuebersicht Exit Sub End If + '#wenn PDF und JSON in einem geht, dann folgende Zeile auskommentieren! pdfObject = cs.getPDF(company, failureDesc) 'cs.AddCompanyToPortfolio(company) @@ -3352,14 +3353,17 @@ Public Class usrCntlKundenuebersicht If cs.authenticate() = "200" Then Dim company As New cCreditSafeAPI.Company("", "", "", "", KUNDE_ERW.kde_CreditSaveNo, KUNDE_ERW.kde_CreditSaveId, Nothing, "", "", "", "", "", "", "", "", "", KUNDE.KundenNr) - company.lastChecked = IIf(IsDate(lastChecked), lastChecked, Today().AddDays(-1)) + company.lastChecked = IIf(IsDate(lastChecked), lastChecked, Today().AddDays(-30)) Dim currentBonID As Integer = SQL.getValueTxtBySql("Select Top(1) isnull(ba_id, -1) FROM [tblBonitaetsauskunft] where ba_KundenNr = " & KUNDE.KundenNr & " AND [ba_Pruefungstool] = 'creditsafe API' ORDER BY ba_Datum DESC", "FMZOLL") If currentBonID > 0 Then company.csBonID = currentBonID Dim dt As New DataTable() - cs.getCompanyEvents(company, dt, checklastDate) + If cs.getCompanyEvents(company, dt, checklastDate, True) = "Error" Then + Exit Sub + End If + If dt.Rows.Count > 0 Then Dim frm As New Form @@ -3387,10 +3391,17 @@ Public Class usrCntlKundenuebersicht frm.Controls.Add(dgv) frm.StartPosition = FormStartPosition.CenterScreen - frm.ShowDialog() + If frm.ShowDialog().Cancel Then + initCreditsave() + setKD(kdNr) End If + + + End If + + Else MsgBox("Keine Creditsafe-Änderungen seit " & lastChecked.ToShortDateString) End If diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb index 8d6238ed..70b6ff72 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb @@ -219,6 +219,7 @@ Public Class cCreditSafeAPI If acceptContentType.Contains("application/pdf") Then + 'If acceptContentType.Contains("application/json+pdf") Or acceptContentType.Contains("application/json") Then responseJson = rest.FullRequestNoBodyBd(method, url, pdfData) If (rest.LastMethodSuccess <> True) Then @@ -419,14 +420,20 @@ Public Class cCreditSafeAPI End Function - Shared Function getCompanyEvents(company As Company, ByRef dtEvents As DataTable, Optional checklastChecked As Boolean = False) As String + Shared Function getCompanyEvents(company As Company, ByRef dtEvents As DataTable, Optional checklastChecked As Boolean = False, Optional updateKunden As Boolean = False) As String VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() + 'rest.AddQueryParam("from", Today().AddDays(-1)) + Dim failureDesc As String - Dim myUrl As String = API_STRING & "/v1/monitoring/companies/" & company.creditSafeId & "/events" & IIf(checklastChecked, "?startDate=" & company.lastChecked, "") + Dim myUrl As String = API_STRING & "/v1/monitoring/companies/" & company.creditSafeId & "/events" & IIf(checklastChecked, "?startDate=" & company.lastChecked.ToString("yyyy-MM-ddTHH:mm:ss"), "") Dim jsonRespString = SendGetRequestWithAuthHeader(myUrl, company, "application/json", "GET", token, failureDesc) + If failureDesc <> "" Then + MsgBox(failureDesc) + Return "Error" + End If Dim json As New Chilkat.JsonObject Dim success As Boolean = json.Load(jsonRespString) @@ -464,116 +471,120 @@ Public Class cCreditSafeAPI Dim CL As Double = -1 Dim CR As Integer = -1 - Dim CL_Date As Date = company.lastChecked - Dim CR_Date As Date = company.lastChecked + Dim CL_Datum As Date = company.lastChecked + Dim CR_Datum As Date = company.lastChecked - For i = 0 To 1 + ' For i = 0 To 1 - Dim j As Integer = 0 - While j < numCompanies + Dim j As Integer = 0 + While j < numCompanies - Dim compObj As Chilkat.JsonObject = companieData.ObjectAt(j) + Dim compObj As Chilkat.JsonObject = companieData.ObjectAt(j) - Dim index = companieData.FindString("eventId", False) + Dim index = companieData.FindString("eventId", False) - Dim dateTime As New Chilkat.CkDateTime - Dim dt As New Chilkat.DtObj - Dim getAsLocal As Boolean = False + Dim dateTime As New Chilkat.CkDateTime + Dim dt As New Chilkat.DtObj + Dim getAsLocal As Boolean = False - success = compObj.DateOf("eventDate", dateTime) - success = compObj.DateOf("createdDate", dateTime) - Debug.WriteLine(dateTime.GetAsTimestamp(getAsLocal)) + success = compObj.DateOf("eventDate", dateTime) + success = compObj.DateOf("createdDate", dateTime) + Debug.WriteLine(dateTime.GetAsTimestamp(getAsLocal)) - Dim R As DataRow = dtEvents.NewRow - R("eventId") = compObj.StringOf("eventId") - R("companyId") = compObj.StringOf("companyId") - R("portfolioId") = compObj.StringOf("portfolioId") - R("ruleName") = compObj.StringOf("ruleName") - R("localEventCode") = compObj.StringOf("localEventCode") - R("globalEventCode") = compObj.StringOf("globalEventCode") - R("oldValue") = compObj.StringOf("oldValue") - R("newValue") = compObj.StringOf("newValue") - R("eventDate") = dateTime.GetAsTimestamp(getAsLocal) - R("createdDate") = dateTime.GetAsTimestamp(getAsLocal) + Dim R As DataRow = dtEvents.NewRow + R("eventId") = compObj.StringOf("eventId") + R("companyId") = compObj.StringOf("companyId") + R("portfolioId") = compObj.StringOf("portfolioId") + R("ruleName") = compObj.StringOf("ruleName") + R("localEventCode") = compObj.StringOf("localEventCode") + R("globalEventCode") = compObj.StringOf("globalEventCode") + R("oldValue") = compObj.StringOf("oldValue") + R("newValue") = compObj.StringOf("newValue") + R("eventDate") = dateTime.GetAsTimestamp(getAsLocal) + R("createdDate") = dateTime.GetAsTimestamp(getAsLocal) - dtEvents.Rows.Add(R) + dtEvents.Rows.Add(R) - Dim cEvent As New cCreditsafeEvent(CLng(R("eventId"))) + Dim cEvent As New cCreditsafeEvent(CLng(R("eventId"))) - cEvent.eventId = R("eventId") - cEvent.companyId = R("companyId") - cEvent.portfolioId = R("portfolioId") - cEvent.ruleName = R("ruleName") - cEvent.localEventCode = R("localEventCode").trim() - cEvent.globalEventCode = R("globalEventCode").trim() - cEvent.eventDate = R("eventDate") - cEvent.createdDate = R("createdDate") - cEvent.importDate = Now() - cEvent.Sachbearbeiter = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME Is Nothing, "AUTO", VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME) - cEvent.oldValue = R("oldValue") - cEvent.newValue = R("newValue") + cEvent.eventId = R("eventId") + cEvent.companyId = R("companyId") + cEvent.portfolioId = R("portfolioId") + cEvent.ruleName = R("ruleName") + cEvent.localEventCode = R("localEventCode").trim() + cEvent.globalEventCode = R("globalEventCode").trim() + cEvent.eventDate = R("eventDate") + cEvent.createdDate = R("createdDate") + cEvent.importDate = Now() + cEvent.Sachbearbeiter = IIf(VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME Is Nothing, "AUTO", VERAG_PROG_ALLGEMEIN.cAllgemein.USRKURZNAME) + cEvent.oldValue = R("oldValue") + cEvent.newValue = R("newValue") - 'OLD-VALUES - If cEvent.oldValue IsNot Nothing AndAlso IsNumeric(cEvent.oldValue) AndAlso Not cEvent.oldValue.ToString.Contains("€") Then - If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then - cEvent.oldValueCL = cEvent.oldValue - ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then - cEvent.oldValueCR = cEvent.oldValue - End If - - Else - If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then - cEvent.oldValue = Regex.Replace(cEvent.oldValue, "\s+", "") - cEvent.oldValue = Regex.Replace(cEvent.oldValue, "[^\d]", "") - cEvent.oldValueCL = cEvent.oldValue - ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then - cEvent.oldValue = Regex.Replace(cEvent.oldValue, "\s+", "") - cEvent.oldValue = Regex.Replace(cEvent.oldValue, "[^\d]", "") - cEvent.oldValueCR = cEvent.oldValue - End If - + 'OLD-VALUES + If cEvent.oldValue IsNot Nothing AndAlso IsNumeric(cEvent.oldValue) AndAlso Not cEvent.oldValue.ToString.Contains("€") Then + If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then + cEvent.oldValueCL = cEvent.oldValue + ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then + cEvent.oldValueCR = cEvent.oldValue + cEvent.oldValueCRIndex = calculatedBonIndexFromBonScore(cEvent.oldValue, cEvent.oldRiskClass) End If - - 'NEW-VALUES - If cEvent.newValue IsNot Nothing AndAlso IsNumeric(cEvent.newValue) AndAlso Not cEvent.newValue.ToString.Contains("€") Then - If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then - cEvent.newValueCL = cEvent.newValue - setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Date, CR_Date) - ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then - cEvent.newValueCR = cEvent.newValue - setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Date, CR_Date) - End If - Else - - If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then - cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "") - cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "") - cEvent.newValueCL = cEvent.newValue - setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Date, CR_Date) - - ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then - cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "") - cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "") - cEvent.newValueCR = cEvent.newValue - setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Date, CR_Date) - End If - + Else + If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then + cEvent.oldValue = Regex.Replace(cEvent.oldValue, "\s+", "") + cEvent.oldValue = Regex.Replace(cEvent.oldValue, "[^\d]", "") + cEvent.oldValueCL = cEvent.oldValue + ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then + cEvent.oldValue = Regex.Replace(cEvent.oldValue, "\s+", "") + cEvent.oldValue = Regex.Replace(cEvent.oldValue, "[^\d]", "") + cEvent.oldValueCR = cEvent.oldValue + cEvent.oldValueCRIndex = calculatedBonIndexFromBonScore(cEvent.oldValue, cEvent.oldRiskClass) End If - If cEvent.bonId Is Nothing AndAlso company.csBonID > 0 Then - cEvent.bonId = company.csBonID + End If + + + 'NEW-VALUES + If cEvent.newValue IsNot Nothing AndAlso IsNumeric(cEvent.newValue) AndAlso Not cEvent.newValue.ToString.Contains("€") Then + If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then + cEvent.newValueCL = cEvent.newValue + setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Datum, CR_Datum) + ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then + cEvent.newValueCR = cEvent.newValue + cEvent.newValueCRIndex = calculatedBonIndexFromBonScore(cEvent.newValue, cEvent.newRiskClass) + setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Datum, CR_Datum) + End If + Else + + If cEvent.localEventCode = "CL" Or cEvent.globalEventCode = "CL" Then + cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "") + cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "") + cEvent.newValueCL = cEvent.newValue + setCL_CR_Entry(CDate(cEvent.eventDate), "CL", cEvent.newValueCL, CL, CR, CL_Datum, CR_Datum) + + ElseIf cEvent.localEventCode = "CR" Or cEvent.globalEventCode = "CR" Then + cEvent.newValue = Regex.Replace(cEvent.newValue, "\s+", "") + cEvent.newValue = Regex.Replace(cEvent.newValue, "[^\d]", "") + cEvent.newValueCR = cEvent.newValue + cEvent.newValueCRIndex = calculatedBonIndexFromBonScore(cEvent.newValue, cEvent.newRiskClass) + setCL_CR_Entry(CDate(cEvent.eventDate), "CR", cEvent.newValueCR, CL, CR, CL_Datum, CR_Datum) End If - cEvent.kundenNr = company.kdNr - cEvent.SAVE() + End If - j = j + 1 - End While - Next + If cEvent.bonId Is Nothing AndAlso company.csBonID > 0 Then + cEvent.bonId = company.csBonID + End If + + cEvent.kundenNr = company.kdNr + cEvent.SAVE() + + j = j + 1 + End While + 'Next @@ -586,19 +597,49 @@ Public Class cCreditSafeAPI 'viewEvents = New DataView(dtEvents, "localEventCode IN ('CL','CR') or e.globalEventCode IN ('CL','CR')", "", DataViewRowState.CurrentRows) End If - If company.kdNr > 0 Then + If company.kdNr > 0 AndAlso updateKunden Then Dim KUNDE As New cKunde(company.kdNr) - If KUNDE.Bonitätsdatum <= CL_Date Or KUNDE.Bonitätsdatum <= CR_Date Then + If KUNDE.Bonitätsdatum <= CL_Datum Or KUNDE.Bonitätsdatum <= CR_Datum Then - If KUNDE.Bonität <> CR Then - KUNDE.Bonität = CR - KUNDE.Bonitätsdatum = CDate(CR_Date) + Dim Index As Double = -1 + Dim ADR As New cAdressen(KUNDE.KundenNr) + Dim riskClass As String = "" + Dim riskClassChanged As Boolean = False + + If Not (ADR.LandKz = "AT" Or ADR.LandKz = "A") Then 'bei nicht österr. den Index nehmen, sonst den Score + Index = calculatedBonIndexFromBonScore(CR, riskClass) + Else + calculatedBonIndexFromBonScore(CR, riskClass) End If - If KUNDE.Höchstkredit <> CL Then - KUNDE.Höchstkredit = CL - KUNDE.Bonitätsdatum = CDate(CL_Date) + If Index <> -1 Then + If KUNDE.Bonität <> Index Then + KUNDE.Bonität = Index + riskClassChanged = True + KUNDE.Bonitätsdatum = CDate(CR_Datum) + End If + Else + If KUNDE.Bonität <> CR AndAlso CR <> 0 Then + KUNDE.Bonität = CR + riskClassChanged = True + KUNDE.Bonitätsdatum = CDate(CR_Datum) + End If + + If KUNDE.Höchstkredit <> CL AndAlso CL <> -1 Then + KUNDE.Höchstkredit = CL + riskClassChanged = True + If KUNDE.Bonitätsdatum <= CDate(CL_Datum) Then + KUNDE.Bonitätsdatum = CDate(CL_Datum) + End If + End If + + End If + + If riskClassChanged Then + Dim KUNDE_ERW As New cKundenErweitert(KUNDE.KundenNr) + KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass + KUNDE_ERW.SAVE() End If KUNDE.SAVE() @@ -613,14 +654,14 @@ Public Class cCreditSafeAPI End Function - Private Shared Sub setCL_CR_Entry(cs_date As Date, type As String, value As Object, CL As Double, CR As Integer, CL_Date As Date, CR_Date As Date) + Private Shared Sub setCL_CR_Entry(ByVal cs_date As Date, ByVal type As String, ByRef value As Object, ByRef CL As Double, ByRef CR As Integer, ByRef CL_Datum As Date, ByRef CR_Datum As Date) Select Case type Case "CR" Dim saveCR As Boolean = False - If CR_Date <= cs_date Then - cs_date = CR_Date + If CR_Datum <= cs_date Then + CR_Datum = cs_date saveCR = True End If @@ -628,8 +669,8 @@ Public Class cCreditSafeAPI Case "CL" Dim saveCL As Boolean = False - If CL_Date <= cs_date Then - cs_date = CL_Date + If CL_Datum <= cs_date Then + CL_Datum = cs_date saveCL = True End If @@ -975,6 +1016,124 @@ Public Class cCreditSafeAPI End Function + Shared Function calculatedBonIndexFromBonScore(score As Integer, ByRef riskClass As String) As Double + + Select Case score + Case 91 To 100 + riskClass = "A" + Case 81 To 90 + riskClass = "A" + Case 71 To 80 + riskClass = "B" + Case 61 To 70 + riskClass = "B" + Case 51 To 60 + riskClass = "C" + Case 35 To 50 + riskClass = "C" + Case 25 To 34 + riskClass = "D" + Case 15 To 24 + riskClass = "D" + Case 1 To 14 + riskClass = "D" + Case Else + riskClass = "E" + End Select + + + Select Case score + Case 0 + Return 6 + Case 1 To 10 + Return 5 + Case 11 To 12 + Return 4.9 + Case 13 To 14 + Return 4.8 + Case 15 To 16 + Return 4.7 + Case 17 To 18 + Return 4.6 + Case 19 To 20 + Return 4.5 + Case 21 To 22 + Return 4.4 + Case 23 To 25 + Return 4.3 + Case 26 To 28 + Return 4.2 + Case 29 To 31 + Return 4.1 + Case 32 To 34 + Return 4 + Case 35 To 38 + Return 3.9 + Case 39 To 41 + Return 3.8 + Case 42 To 44 + Return 3.7 + Case 45 To 47 + Return 3.6 + Case 48 To 50 + Return 3.5 + Case 51 To 52 + Return 3.4 + Case 53 To 54 + Return 3.3 + Case 55 To 56 + Return 3.2 + Case 57 To 58 + Return 3.1 + Case 59 To 60 + Return 3 + Case 61 To 62 + Return 2.9 + Case 63 To 64 + Return 2.8 + Case 65 To 66 + Return 2.7 + Case 67 To 68 + Return 2.6 + Case 69 To 70 + Return 2.5 + Case 71 To 72 + Return 2.4 + Case 73 To 74 + Return 2.3 + Case 75 To 76 + Return 2.2 + Case 77 To 78 + Return 2.1 + Case 79 To 80 + Return 2 + Case 81 To 82 + Return 1.9 + Case 83 To 84 + Return 1.8 + Case 85 To 86 + Return 1.7 + Case 87 To 88 + Return 1.6 + Case 89 To 90 + Return 1.5 + Case 91 To 92 + Return 1.4 + Case 93 To 94 + Return 1.3 + Case 95 To 96 + Return 1.2 + Case 97 To 98 + Return 1.1 + Case 99 To 100 + Return 1 + Case Else + Return 6 + End Select + End Function + + + Public Class CreditSafeUser Public Property username As String @@ -1067,6 +1226,10 @@ Public Class cCreditSafeAPI Property oldValueCL As Object = Nothing Property newValueCL As Object = Nothing Property kundenNr As Integer + Property newValueCRIndex As Object = Nothing + Property oldValueCRIndex As Object = Nothing + Property oldRiskClass As String + Property newRiskClass As String Public hasEntry = False @@ -1095,6 +1258,8 @@ Public Class cCreditSafeAPI list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("oldValueCL", oldValueCL)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("newValueCL", newValueCL)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("kundenNr", kundenNr)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("newValueCRIndex", newValueCRIndex)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("oldValueCRIndex", oldValueCRIndex)) Return list From fb55916a21fa88d98086dff568b0a4dead23dc5a Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 3 Sep 2025 18:03:09 +0200 Subject: [PATCH 2/9] creditsafe --- .../Creditsafe/cCreditSafeAPI.vb | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb index 70b6ff72..460b3cb7 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb @@ -469,8 +469,11 @@ Public Class cCreditSafeAPI Dim numCompanies As Integer = companieData.Size - Dim CL As Double = -1 - Dim CR As Integer = -1 + Dim defaultCL As Double = -10000000 + Dim defaultCR As Integer = -10000000 + + Dim CL As Double = defaultCL + Dim CR As Integer = defaultCR Dim CL_Datum As Date = company.lastChecked Dim CR_Datum As Date = company.lastChecked @@ -597,7 +600,7 @@ Public Class cCreditSafeAPI 'viewEvents = New DataView(dtEvents, "localEventCode IN ('CL','CR') or e.globalEventCode IN ('CL','CR')", "", DataViewRowState.CurrentRows) End If - If company.kdNr > 0 AndAlso updateKunden Then + If company.kdNr > 0 AndAlso updateKunden AndAlso (CR <> -1000000 Or CL <> -1000000) Then Dim KUNDE As New cKunde(company.kdNr) If KUNDE.Bonitätsdatum <= CL_Datum Or KUNDE.Bonitätsdatum <= CR_Datum Then @@ -608,9 +611,9 @@ Public Class cCreditSafeAPI Dim riskClassChanged As Boolean = False If Not (ADR.LandKz = "AT" Or ADR.LandKz = "A") Then 'bei nicht österr. den Index nehmen, sonst den Score - Index = calculatedBonIndexFromBonScore(CR, riskClass) + Index = IIf(CR = defaultCL, -1, calculatedBonIndexFromBonScore(CR, riskClass)) Else - calculatedBonIndexFromBonScore(CR, riskClass) + If CR <> defaultCL Then calculatedBonIndexFromBonScore(CR, riskClass) End If If Index <> -1 Then @@ -620,22 +623,22 @@ Public Class cCreditSafeAPI KUNDE.Bonitätsdatum = CDate(CR_Datum) End If Else - If KUNDE.Bonität <> CR AndAlso CR <> 0 Then + If KUNDE.Bonität <> CR AndAlso CR <> defaultCR Then KUNDE.Bonität = CR riskClassChanged = True KUNDE.Bonitätsdatum = CDate(CR_Datum) End If - - If KUNDE.Höchstkredit <> CL AndAlso CL <> -1 Then - KUNDE.Höchstkredit = CL - riskClassChanged = True - If KUNDE.Bonitätsdatum <= CDate(CL_Datum) Then - KUNDE.Bonitätsdatum = CDate(CL_Datum) - End If - End If - End If + If KUNDE.Höchstkredit <> CL AndAlso CL <> defaultCL Then + KUNDE.Höchstkredit = CL + If KUNDE.Bonitätsdatum <= CDate(CL_Datum) Then + KUNDE.Bonitätsdatum = CDate(CL_Datum) + End If + End If + + + If riskClassChanged Then Dim KUNDE_ERW As New cKundenErweitert(KUNDE.KundenNr) KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass @@ -1260,6 +1263,8 @@ Public Class cCreditSafeAPI list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("kundenNr", kundenNr)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("newValueCRIndex", newValueCRIndex)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("oldValueCRIndex", oldValueCRIndex)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("oldRiskClass", oldRiskClass)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("newRiskClass", newRiskClass)) Return list From 138a39e56742eab11bccd59e3a8ec6af836c63ac Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 4 Sep 2025 08:39:12 +0200 Subject: [PATCH 3/9] creditsafe --- .../Creditsafe/cCreditSafeAPI.vb | 31 +++++++------------ 1 file changed, 11 insertions(+), 20 deletions(-) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb index 460b3cb7..ad9e20c3 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb @@ -590,10 +590,6 @@ Public Class cCreditSafeAPI 'Next - - - - If dtEvents.Rows.Count > 1 Then dtEvents.DefaultView.Sort = "eventDate ASC" dtEvents = dtEvents.DefaultView.ToTable @@ -609,6 +605,7 @@ Public Class cCreditSafeAPI Dim ADR As New cAdressen(KUNDE.KundenNr) Dim riskClass As String = "" Dim riskClassChanged As Boolean = False + Dim KUNDE_ERW As New cKundenErweitert(KUNDE.KundenNr) If Not (ADR.LandKz = "AT" Or ADR.LandKz = "A") Then 'bei nicht österr. den Index nehmen, sonst den Score Index = IIf(CR = defaultCL, -1, calculatedBonIndexFromBonScore(CR, riskClass)) @@ -617,15 +614,15 @@ Public Class cCreditSafeAPI End If If Index <> -1 Then - If KUNDE.Bonität <> Index Then - KUNDE.Bonität = Index - riskClassChanged = True + If KUNDE_ERW.kde_CreditSaveBonitaetsIndex <> Index Then + KUNDE_ERW.kde_CreditSaveBonitaetsIndex = Index + KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass KUNDE.Bonitätsdatum = CDate(CR_Datum) End If Else - If KUNDE.Bonität <> CR AndAlso CR <> defaultCR Then - KUNDE.Bonität = CR - riskClassChanged = True + If KUNDE_ERW.kde_CreditSaveBonitaetsScore <> CR AndAlso CR <> defaultCR Then + KUNDE_ERW.kde_CreditSaveBonitaetsScore = CR + KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass KUNDE.Bonitätsdatum = CDate(CR_Datum) End If End If @@ -637,21 +634,13 @@ Public Class cCreditSafeAPI End If End If - - - If riskClassChanged Then - Dim KUNDE_ERW As New cKundenErweitert(KUNDE.KundenNr) - KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass - KUNDE_ERW.SAVE() + KUNDE_ERW.SAVE() End If KUNDE.SAVE() End If - End If - - Return "Anzahl gefundener Datensätze: " & numCompanies @@ -1019,7 +1008,9 @@ Public Class cCreditSafeAPI End Function - Shared Function calculatedBonIndexFromBonScore(score As Integer, ByRef riskClass As String) As Double + Shared Function calculatedBonIndexFromBonScore(score As Object, ByRef riskClass As String) As Double + + If score Is Nothing OrElse score = "" OrElse Not IsNumeric(score) Then Return -1 Select Case score Case 91 To 100 From c4ae9b6c3dc3aaa22c6a4182bbd7e18214ffc9bc Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 4 Sep 2025 08:55:15 +0200 Subject: [PATCH 4/9] creditsafe --- .../Schnittstellen/Creditsafe/cCreditSafeAPI.vb | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb index ad9e20c3..2b46eaeb 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb @@ -635,12 +635,12 @@ Public Class cCreditSafeAPI End If KUNDE_ERW.SAVE() - End If - - KUNDE.SAVE() - End If + KUNDE.SAVE() + + End If + Return "Anzahl gefundener Datensätze: " & numCompanies @@ -1010,7 +1010,7 @@ Public Class cCreditSafeAPI Shared Function calculatedBonIndexFromBonScore(score As Object, ByRef riskClass As String) As Double - If score Is Nothing OrElse score = "" OrElse Not IsNumeric(score) Then Return -1 + If score Is Nothing OrElse Not IsNumeric(score) Then Return -1 Select Case score Case 91 To 100 From 1fafef10890bbf538c7a2ae50891707dc9f725df Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 4 Sep 2025 11:10:37 +0200 Subject: [PATCH 5/9] CBAM Dakosy --- SDL/My Project/Resources.Designer.vb | 10 ++ SDL/My Project/Resources.resx | 3 + SDL/Resources/CBAM_GP.xlsx | Bin 0 -> 78286 bytes SDL/SDL.vbproj | 1 + SDL/kunden/usrCntlCBAM.Designer.vb | 194 ++++++++++++++++++--------- SDL/kunden/usrCntlCBAM.vb | 194 ++++++++++++++++++++++----- SDL/mdm/frmMDMDatenverarbetiung.vb | 2 +- 7 files changed, 309 insertions(+), 95 deletions(-) create mode 100644 SDL/Resources/CBAM_GP.xlsx diff --git a/SDL/My Project/Resources.Designer.vb b/SDL/My Project/Resources.Designer.vb index c77695a0..2f036aab 100644 --- a/SDL/My Project/Resources.Designer.vb +++ b/SDL/My Project/Resources.Designer.vb @@ -449,6 +449,16 @@ Namespace My.Resources End Get End Property + ''' + ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. + ''' + Friend ReadOnly Property CBAM_GP() As Byte() + Get + Dim obj As Object = ResourceManager.GetObject("CBAM_GP", resourceCulture) + Return CType(obj,Byte()) + End Get + End Property + ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Drawing.Bitmap. ''' diff --git a/SDL/My Project/Resources.resx b/SDL/My Project/Resources.resx index b6fe8715..cf383368 100644 --- a/SDL/My Project/Resources.resx +++ b/SDL/My Project/Resources.resx @@ -958,4 +958,7 @@ ..\Resources\Detailauswertung_divers.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\CBAM_GP.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + \ No newline at end of file diff --git a/SDL/Resources/CBAM_GP.xlsx b/SDL/Resources/CBAM_GP.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..2d1249c6f0394317d0fd012a371da253d2dfd573 GIT binary patch literal 78286 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 + Always diff --git a/SDL/kunden/usrCntlCBAM.Designer.vb b/SDL/kunden/usrCntlCBAM.Designer.vb index 579dd3af..c9a6c6ab 100644 --- a/SDL/kunden/usrCntlCBAM.Designer.vb +++ b/SDL/kunden/usrCntlCBAM.Designer.vb @@ -44,12 +44,12 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DHF_VERAG = New System.Windows.Forms.Button() Me.btnCBAM_DS_DAKOSY = New System.Windows.Forms.Button() Me.Label3 = New System.Windows.Forms.Label() - Me.btnCBAM_DS_DAKOSY_Deteil = New System.Windows.Forms.Button() + Me.btnCBAM_DS_DAKOSY_Detail = New System.Windows.Forms.Button() Me.btnCBAM_DS_DAKOSY_Summe = New System.Windows.Forms.Button() Me.btnCBAM_DS_DHF_VERAG_Summe = New System.Windows.Forms.Button() - Me.btnCBAM_DS_DHF_VERAG_Deteil = New System.Windows.Forms.Button() + Me.btnCBAM_DS_DHF_VERAG_Detail = New System.Windows.Forms.Button() Me.btnCBAM_DS_DHF_UNISPED_Summe = New System.Windows.Forms.Button() - Me.btnCBAM_DS_DHF_UNISPED_Deteil = New System.Windows.Forms.Button() + Me.btnCBAM_DS_DHF_UNISPED_Detail = New System.Windows.Forms.Button() Me.btnCBAM_DS_TELOTEC_Summe = New System.Windows.Forms.Button() Me.btnCBAM_DS_TELOTEC_Detail = New System.Windows.Forms.Button() Me.Label6 = New System.Windows.Forms.Label() @@ -70,6 +70,10 @@ Partial Class usrCntlCBAM Me.txtEori = New VERAG_PROG_ALLGEMEIN.MyTextBox() Me.Button1 = New System.Windows.Forms.Button() Me.btnCBAM_DS_DAKOSY_Spedb = New System.Windows.Forms.Button() + Me.btnCBAM_DS_DAKOSY_GP = New System.Windows.Forms.Button() + Me.btnCBAM_DS_DHF_VERAG_GP = New System.Windows.Forms.Button() + Me.btnCBAM_DS_DHF_UNISPED_GP = New System.Windows.Forms.Button() + Me.btnCBAM_DS_TELOTEC_GP = New System.Windows.Forms.Button() Me.cntxtAddSdl.SuspendLayout() Me.MyPanel1.SuspendLayout() Me.SuspendLayout() @@ -244,7 +248,7 @@ Partial Class usrCntlCBAM 'btnCBAM_DS_DHF_UNISPED ' Me.btnCBAM_DS_DHF_UNISPED.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnCBAM_DS_DHF_UNISPED.Location = New System.Drawing.Point(454, 168) + Me.btnCBAM_DS_DHF_UNISPED.Location = New System.Drawing.Point(454, 167) Me.btnCBAM_DS_DHF_UNISPED.Name = "btnCBAM_DS_DHF_UNISPED" Me.btnCBAM_DS_DHF_UNISPED.Size = New System.Drawing.Size(168, 42) Me.btnCBAM_DS_DHF_UNISPED.TabIndex = 24 @@ -254,7 +258,7 @@ Partial Class usrCntlCBAM 'btnCBAM_DS_TELOTEC ' Me.btnCBAM_DS_TELOTEC.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnCBAM_DS_TELOTEC.Location = New System.Drawing.Point(628, 168) + Me.btnCBAM_DS_TELOTEC.Location = New System.Drawing.Point(628, 167) Me.btnCBAM_DS_TELOTEC.Name = "btnCBAM_DS_TELOTEC" Me.btnCBAM_DS_TELOTEC.Size = New System.Drawing.Size(168, 42) Me.btnCBAM_DS_TELOTEC.TabIndex = 23 @@ -264,7 +268,7 @@ Partial Class usrCntlCBAM 'btnCBAM_DS_DHF_VERAG ' Me.btnCBAM_DS_DHF_VERAG.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnCBAM_DS_DHF_VERAG.Location = New System.Drawing.Point(280, 168) + Me.btnCBAM_DS_DHF_VERAG.Location = New System.Drawing.Point(280, 167) Me.btnCBAM_DS_DHF_VERAG.Name = "btnCBAM_DS_DHF_VERAG" Me.btnCBAM_DS_DHF_VERAG.Size = New System.Drawing.Size(168, 42) Me.btnCBAM_DS_DHF_VERAG.TabIndex = 22 @@ -274,7 +278,7 @@ Partial Class usrCntlCBAM 'btnCBAM_DS_DAKOSY ' Me.btnCBAM_DS_DAKOSY.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnCBAM_DS_DAKOSY.Location = New System.Drawing.Point(106, 168) + Me.btnCBAM_DS_DAKOSY.Location = New System.Drawing.Point(106, 167) Me.btnCBAM_DS_DAKOSY.Name = "btnCBAM_DS_DAKOSY" Me.btnCBAM_DS_DAKOSY.Size = New System.Drawing.Size(168, 42) Me.btnCBAM_DS_DAKOSY.TabIndex = 21 @@ -284,25 +288,25 @@ Partial Class usrCntlCBAM 'Label3 ' Me.Label3.AutoSize = True - Me.Label3.Location = New System.Drawing.Point(5, 183) + Me.Label3.Location = New System.Drawing.Point(5, 182) Me.Label3.Name = "Label3" Me.Label3.Size = New System.Drawing.Size(64, 13) Me.Label3.TabIndex = 25 Me.Label3.Text = "Datensätze:" ' - 'btnCBAM_DS_DAKOSY_Deteil + 'btnCBAM_DS_DAKOSY_Detail ' - Me.btnCBAM_DS_DAKOSY_Deteil.Enabled = False - Me.btnCBAM_DS_DAKOSY_Deteil.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnCBAM_DS_DAKOSY_Deteil.Image = Global.SDL.My.Resources.Resources.Excel_logo - Me.btnCBAM_DS_DAKOSY_Deteil.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DAKOSY_Deteil.Location = New System.Drawing.Point(144, 216) - Me.btnCBAM_DS_DAKOSY_Deteil.Name = "btnCBAM_DS_DAKOSY_Deteil" - Me.btnCBAM_DS_DAKOSY_Deteil.Size = New System.Drawing.Size(130, 42) - Me.btnCBAM_DS_DAKOSY_Deteil.TabIndex = 26 - Me.btnCBAM_DS_DAKOSY_Deteil.Text = "Detailbericht" - Me.btnCBAM_DS_DAKOSY_Deteil.TextAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnCBAM_DS_DAKOSY_Deteil.UseVisualStyleBackColor = True + Me.btnCBAM_DS_DAKOSY_Detail.Enabled = False + Me.btnCBAM_DS_DAKOSY_Detail.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnCBAM_DS_DAKOSY_Detail.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.btnCBAM_DS_DAKOSY_Detail.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnCBAM_DS_DAKOSY_Detail.Location = New System.Drawing.Point(144, 215) + Me.btnCBAM_DS_DAKOSY_Detail.Name = "btnCBAM_DS_DAKOSY_Detail" + Me.btnCBAM_DS_DAKOSY_Detail.Size = New System.Drawing.Size(130, 42) + Me.btnCBAM_DS_DAKOSY_Detail.TabIndex = 26 + Me.btnCBAM_DS_DAKOSY_Detail.Text = "Detailbericht" + Me.btnCBAM_DS_DAKOSY_Detail.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnCBAM_DS_DAKOSY_Detail.UseVisualStyleBackColor = True ' 'btnCBAM_DS_DAKOSY_Summe ' @@ -310,7 +314,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DAKOSY_Summe.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DAKOSY_Summe.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.btnCBAM_DS_DAKOSY_Summe.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DAKOSY_Summe.Location = New System.Drawing.Point(144, 264) + Me.btnCBAM_DS_DAKOSY_Summe.Location = New System.Drawing.Point(144, 301) Me.btnCBAM_DS_DAKOSY_Summe.Name = "btnCBAM_DS_DAKOSY_Summe" Me.btnCBAM_DS_DAKOSY_Summe.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DAKOSY_Summe.TabIndex = 27 @@ -324,7 +328,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DHF_VERAG_Summe.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DHF_VERAG_Summe.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.btnCBAM_DS_DHF_VERAG_Summe.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DHF_VERAG_Summe.Location = New System.Drawing.Point(318, 264) + Me.btnCBAM_DS_DHF_VERAG_Summe.Location = New System.Drawing.Point(318, 301) Me.btnCBAM_DS_DHF_VERAG_Summe.Name = "btnCBAM_DS_DHF_VERAG_Summe" Me.btnCBAM_DS_DHF_VERAG_Summe.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DHF_VERAG_Summe.TabIndex = 29 @@ -332,19 +336,19 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DHF_VERAG_Summe.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnCBAM_DS_DHF_VERAG_Summe.UseVisualStyleBackColor = True ' - 'btnCBAM_DS_DHF_VERAG_Deteil + 'btnCBAM_DS_DHF_VERAG_Detail ' - Me.btnCBAM_DS_DHF_VERAG_Deteil.Enabled = False - Me.btnCBAM_DS_DHF_VERAG_Deteil.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnCBAM_DS_DHF_VERAG_Deteil.Image = Global.SDL.My.Resources.Resources.Excel_logo - Me.btnCBAM_DS_DHF_VERAG_Deteil.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DHF_VERAG_Deteil.Location = New System.Drawing.Point(318, 216) - Me.btnCBAM_DS_DHF_VERAG_Deteil.Name = "btnCBAM_DS_DHF_VERAG_Deteil" - Me.btnCBAM_DS_DHF_VERAG_Deteil.Size = New System.Drawing.Size(130, 42) - Me.btnCBAM_DS_DHF_VERAG_Deteil.TabIndex = 28 - Me.btnCBAM_DS_DHF_VERAG_Deteil.Text = "Detailbericht" - Me.btnCBAM_DS_DHF_VERAG_Deteil.TextAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnCBAM_DS_DHF_VERAG_Deteil.UseVisualStyleBackColor = True + Me.btnCBAM_DS_DHF_VERAG_Detail.Enabled = False + Me.btnCBAM_DS_DHF_VERAG_Detail.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnCBAM_DS_DHF_VERAG_Detail.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.btnCBAM_DS_DHF_VERAG_Detail.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnCBAM_DS_DHF_VERAG_Detail.Location = New System.Drawing.Point(318, 215) + Me.btnCBAM_DS_DHF_VERAG_Detail.Name = "btnCBAM_DS_DHF_VERAG_Detail" + Me.btnCBAM_DS_DHF_VERAG_Detail.Size = New System.Drawing.Size(130, 42) + Me.btnCBAM_DS_DHF_VERAG_Detail.TabIndex = 28 + Me.btnCBAM_DS_DHF_VERAG_Detail.Text = "Detailbericht" + Me.btnCBAM_DS_DHF_VERAG_Detail.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnCBAM_DS_DHF_VERAG_Detail.UseVisualStyleBackColor = True ' 'btnCBAM_DS_DHF_UNISPED_Summe ' @@ -352,7 +356,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DHF_UNISPED_Summe.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DHF_UNISPED_Summe.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.btnCBAM_DS_DHF_UNISPED_Summe.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DHF_UNISPED_Summe.Location = New System.Drawing.Point(492, 264) + Me.btnCBAM_DS_DHF_UNISPED_Summe.Location = New System.Drawing.Point(492, 301) Me.btnCBAM_DS_DHF_UNISPED_Summe.Name = "btnCBAM_DS_DHF_UNISPED_Summe" Me.btnCBAM_DS_DHF_UNISPED_Summe.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DHF_UNISPED_Summe.TabIndex = 31 @@ -360,19 +364,19 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DHF_UNISPED_Summe.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnCBAM_DS_DHF_UNISPED_Summe.UseVisualStyleBackColor = True ' - 'btnCBAM_DS_DHF_UNISPED_Deteil + 'btnCBAM_DS_DHF_UNISPED_Detail ' - Me.btnCBAM_DS_DHF_UNISPED_Deteil.Enabled = False - Me.btnCBAM_DS_DHF_UNISPED_Deteil.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.btnCBAM_DS_DHF_UNISPED_Deteil.Image = Global.SDL.My.Resources.Resources.Excel_logo - Me.btnCBAM_DS_DHF_UNISPED_Deteil.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DHF_UNISPED_Deteil.Location = New System.Drawing.Point(492, 216) - Me.btnCBAM_DS_DHF_UNISPED_Deteil.Name = "btnCBAM_DS_DHF_UNISPED_Deteil" - Me.btnCBAM_DS_DHF_UNISPED_Deteil.Size = New System.Drawing.Size(130, 42) - Me.btnCBAM_DS_DHF_UNISPED_Deteil.TabIndex = 30 - Me.btnCBAM_DS_DHF_UNISPED_Deteil.Text = "Detailbericht" - Me.btnCBAM_DS_DHF_UNISPED_Deteil.TextAlign = System.Drawing.ContentAlignment.MiddleRight - Me.btnCBAM_DS_DHF_UNISPED_Deteil.UseVisualStyleBackColor = True + Me.btnCBAM_DS_DHF_UNISPED_Detail.Enabled = False + Me.btnCBAM_DS_DHF_UNISPED_Detail.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnCBAM_DS_DHF_UNISPED_Detail.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.btnCBAM_DS_DHF_UNISPED_Detail.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnCBAM_DS_DHF_UNISPED_Detail.Location = New System.Drawing.Point(492, 215) + Me.btnCBAM_DS_DHF_UNISPED_Detail.Name = "btnCBAM_DS_DHF_UNISPED_Detail" + Me.btnCBAM_DS_DHF_UNISPED_Detail.Size = New System.Drawing.Size(130, 42) + Me.btnCBAM_DS_DHF_UNISPED_Detail.TabIndex = 30 + Me.btnCBAM_DS_DHF_UNISPED_Detail.Text = "Detailbericht" + Me.btnCBAM_DS_DHF_UNISPED_Detail.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnCBAM_DS_DHF_UNISPED_Detail.UseVisualStyleBackColor = True ' 'btnCBAM_DS_TELOTEC_Summe ' @@ -380,7 +384,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_TELOTEC_Summe.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_TELOTEC_Summe.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.btnCBAM_DS_TELOTEC_Summe.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_TELOTEC_Summe.Location = New System.Drawing.Point(666, 264) + Me.btnCBAM_DS_TELOTEC_Summe.Location = New System.Drawing.Point(666, 301) Me.btnCBAM_DS_TELOTEC_Summe.Name = "btnCBAM_DS_TELOTEC_Summe" Me.btnCBAM_DS_TELOTEC_Summe.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_TELOTEC_Summe.TabIndex = 33 @@ -394,7 +398,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_TELOTEC_Detail.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_TELOTEC_Detail.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.btnCBAM_DS_TELOTEC_Detail.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_TELOTEC_Detail.Location = New System.Drawing.Point(666, 216) + Me.btnCBAM_DS_TELOTEC_Detail.Location = New System.Drawing.Point(666, 215) Me.btnCBAM_DS_TELOTEC_Detail.Name = "btnCBAM_DS_TELOTEC_Detail" Me.btnCBAM_DS_TELOTEC_Detail.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_TELOTEC_Detail.TabIndex = 32 @@ -416,7 +420,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DAKOSY_Copy.Enabled = False Me.btnCBAM_DS_DAKOSY_Copy.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DAKOSY_Copy.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DAKOSY_Copy.Location = New System.Drawing.Point(144, 360) + Me.btnCBAM_DS_DAKOSY_Copy.Location = New System.Drawing.Point(144, 394) Me.btnCBAM_DS_DAKOSY_Copy.Name = "btnCBAM_DS_DAKOSY_Copy" Me.btnCBAM_DS_DAKOSY_Copy.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DAKOSY_Copy.TabIndex = 35 @@ -428,7 +432,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DHF_VERAG_Copy.Enabled = False Me.btnCBAM_DS_DHF_VERAG_Copy.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DHF_VERAG_Copy.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DHF_VERAG_Copy.Location = New System.Drawing.Point(318, 312) + Me.btnCBAM_DS_DHF_VERAG_Copy.Location = New System.Drawing.Point(318, 347) Me.btnCBAM_DS_DHF_VERAG_Copy.Name = "btnCBAM_DS_DHF_VERAG_Copy" Me.btnCBAM_DS_DHF_VERAG_Copy.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DHF_VERAG_Copy.TabIndex = 36 @@ -440,7 +444,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DHF_UNISPED_Copy.Enabled = False Me.btnCBAM_DS_DHF_UNISPED_Copy.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DHF_UNISPED_Copy.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DHF_UNISPED_Copy.Location = New System.Drawing.Point(492, 312) + Me.btnCBAM_DS_DHF_UNISPED_Copy.Location = New System.Drawing.Point(492, 347) Me.btnCBAM_DS_DHF_UNISPED_Copy.Name = "btnCBAM_DS_DHF_UNISPED_Copy" Me.btnCBAM_DS_DHF_UNISPED_Copy.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DHF_UNISPED_Copy.TabIndex = 37 @@ -452,7 +456,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_TELOTEC_Copy.Enabled = False Me.btnCBAM_DS_TELOTEC_Copy.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_TELOTEC_Copy.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_TELOTEC_Copy.Location = New System.Drawing.Point(666, 312) + Me.btnCBAM_DS_TELOTEC_Copy.Location = New System.Drawing.Point(666, 347) Me.btnCBAM_DS_TELOTEC_Copy.Name = "btnCBAM_DS_TELOTEC_Copy" Me.btnCBAM_DS_TELOTEC_Copy.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_TELOTEC_Copy.TabIndex = 38 @@ -465,7 +469,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DAKOSY_XML.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DAKOSY_XML.Image = Global.SDL.My.Resources.Resources.xml Me.btnCBAM_DS_DAKOSY_XML.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DAKOSY_XML.Location = New System.Drawing.Point(144, 477) + Me.btnCBAM_DS_DAKOSY_XML.Location = New System.Drawing.Point(144, 485) Me.btnCBAM_DS_DAKOSY_XML.Name = "btnCBAM_DS_DAKOSY_XML" Me.btnCBAM_DS_DAKOSY_XML.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DAKOSY_XML.TabIndex = 40 @@ -477,7 +481,7 @@ Partial Class usrCntlCBAM Me.Button2.Enabled = False Me.Button2.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.Button2.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.Button2.Location = New System.Drawing.Point(144, 525) + Me.Button2.Location = New System.Drawing.Point(144, 532) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size(130, 42) Me.Button2.TabIndex = 42 @@ -631,7 +635,7 @@ Partial Class usrCntlCBAM 'Button1 ' Me.Button1.FlatStyle = System.Windows.Forms.FlatStyle.Flat - Me.Button1.Location = New System.Drawing.Point(106, 429) + Me.Button1.Location = New System.Drawing.Point(106, 438) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(168, 42) Me.Button1.TabIndex = 44 @@ -644,7 +648,7 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DAKOSY_Spedb.FlatStyle = System.Windows.Forms.FlatStyle.Flat Me.btnCBAM_DS_DAKOSY_Spedb.Image = Global.SDL.My.Resources.Resources.Excel_logo Me.btnCBAM_DS_DAKOSY_Spedb.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft - Me.btnCBAM_DS_DAKOSY_Spedb.Location = New System.Drawing.Point(144, 312) + Me.btnCBAM_DS_DAKOSY_Spedb.Location = New System.Drawing.Point(144, 347) Me.btnCBAM_DS_DAKOSY_Spedb.Name = "btnCBAM_DS_DAKOSY_Spedb" Me.btnCBAM_DS_DAKOSY_Spedb.Size = New System.Drawing.Size(130, 42) Me.btnCBAM_DS_DAKOSY_Spedb.TabIndex = 45 @@ -652,11 +656,71 @@ Partial Class usrCntlCBAM Me.btnCBAM_DS_DAKOSY_Spedb.TextAlign = System.Drawing.ContentAlignment.MiddleRight Me.btnCBAM_DS_DAKOSY_Spedb.UseVisualStyleBackColor = True ' + 'btnCBAM_DS_DAKOSY_GP + ' + Me.btnCBAM_DS_DAKOSY_GP.Enabled = False + Me.btnCBAM_DS_DAKOSY_GP.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnCBAM_DS_DAKOSY_GP.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.btnCBAM_DS_DAKOSY_GP.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnCBAM_DS_DAKOSY_GP.Location = New System.Drawing.Point(144, 258) + Me.btnCBAM_DS_DAKOSY_GP.Name = "btnCBAM_DS_DAKOSY_GP" + Me.btnCBAM_DS_DAKOSY_GP.Size = New System.Drawing.Size(130, 42) + Me.btnCBAM_DS_DAKOSY_GP.TabIndex = 46 + Me.btnCBAM_DS_DAKOSY_GP.Text = "GP Detailbericht" + Me.btnCBAM_DS_DAKOSY_GP.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnCBAM_DS_DAKOSY_GP.UseVisualStyleBackColor = True + ' + 'btnCBAM_DS_DHF_VERAG_GP + ' + Me.btnCBAM_DS_DHF_VERAG_GP.Enabled = False + Me.btnCBAM_DS_DHF_VERAG_GP.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnCBAM_DS_DHF_VERAG_GP.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.btnCBAM_DS_DHF_VERAG_GP.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnCBAM_DS_DHF_VERAG_GP.Location = New System.Drawing.Point(318, 258) + Me.btnCBAM_DS_DHF_VERAG_GP.Name = "btnCBAM_DS_DHF_VERAG_GP" + Me.btnCBAM_DS_DHF_VERAG_GP.Size = New System.Drawing.Size(130, 42) + Me.btnCBAM_DS_DHF_VERAG_GP.TabIndex = 47 + Me.btnCBAM_DS_DHF_VERAG_GP.Text = "GP Detailbericht" + Me.btnCBAM_DS_DHF_VERAG_GP.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnCBAM_DS_DHF_VERAG_GP.UseVisualStyleBackColor = True + ' + 'btnCBAM_DS_DHF_UNISPED_GP + ' + Me.btnCBAM_DS_DHF_UNISPED_GP.Enabled = False + Me.btnCBAM_DS_DHF_UNISPED_GP.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnCBAM_DS_DHF_UNISPED_GP.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.btnCBAM_DS_DHF_UNISPED_GP.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnCBAM_DS_DHF_UNISPED_GP.Location = New System.Drawing.Point(492, 258) + Me.btnCBAM_DS_DHF_UNISPED_GP.Name = "btnCBAM_DS_DHF_UNISPED_GP" + Me.btnCBAM_DS_DHF_UNISPED_GP.Size = New System.Drawing.Size(130, 42) + Me.btnCBAM_DS_DHF_UNISPED_GP.TabIndex = 48 + Me.btnCBAM_DS_DHF_UNISPED_GP.Text = "GP Detailbericht" + Me.btnCBAM_DS_DHF_UNISPED_GP.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnCBAM_DS_DHF_UNISPED_GP.UseVisualStyleBackColor = True + ' + 'btnCBAM_DS_TELOTEC_GP + ' + Me.btnCBAM_DS_TELOTEC_GP.Enabled = False + Me.btnCBAM_DS_TELOTEC_GP.FlatStyle = System.Windows.Forms.FlatStyle.Flat + Me.btnCBAM_DS_TELOTEC_GP.Image = Global.SDL.My.Resources.Resources.Excel_logo + Me.btnCBAM_DS_TELOTEC_GP.ImageAlign = System.Drawing.ContentAlignment.MiddleLeft + Me.btnCBAM_DS_TELOTEC_GP.Location = New System.Drawing.Point(666, 258) + Me.btnCBAM_DS_TELOTEC_GP.Name = "btnCBAM_DS_TELOTEC_GP" + Me.btnCBAM_DS_TELOTEC_GP.Size = New System.Drawing.Size(130, 42) + Me.btnCBAM_DS_TELOTEC_GP.TabIndex = 49 + Me.btnCBAM_DS_TELOTEC_GP.Text = "GP Detailbericht" + Me.btnCBAM_DS_TELOTEC_GP.TextAlign = System.Drawing.ContentAlignment.MiddleRight + Me.btnCBAM_DS_TELOTEC_GP.UseVisualStyleBackColor = True + ' 'usrCntlCBAM ' Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!) Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font Me.BackColor = System.Drawing.Color.White + Me.Controls.Add(Me.btnCBAM_DS_TELOTEC_GP) + Me.Controls.Add(Me.btnCBAM_DS_DHF_UNISPED_GP) + Me.Controls.Add(Me.btnCBAM_DS_DHF_VERAG_GP) + Me.Controls.Add(Me.btnCBAM_DS_DAKOSY_GP) Me.Controls.Add(Me.btnCBAM_DS_DAKOSY_Spedb) Me.Controls.Add(Me.Button1) Me.Controls.Add(Me.Button2) @@ -670,11 +734,11 @@ Partial Class usrCntlCBAM Me.Controls.Add(Me.btnCBAM_DS_TELOTEC_Summe) Me.Controls.Add(Me.btnCBAM_DS_TELOTEC_Detail) Me.Controls.Add(Me.btnCBAM_DS_DHF_UNISPED_Summe) - Me.Controls.Add(Me.btnCBAM_DS_DHF_UNISPED_Deteil) + Me.Controls.Add(Me.btnCBAM_DS_DHF_UNISPED_Detail) Me.Controls.Add(Me.btnCBAM_DS_DHF_VERAG_Summe) - Me.Controls.Add(Me.btnCBAM_DS_DHF_VERAG_Deteil) + Me.Controls.Add(Me.btnCBAM_DS_DHF_VERAG_Detail) Me.Controls.Add(Me.btnCBAM_DS_DAKOSY_Summe) - Me.Controls.Add(Me.btnCBAM_DS_DAKOSY_Deteil) + Me.Controls.Add(Me.btnCBAM_DS_DAKOSY_Detail) Me.Controls.Add(Me.Label3) Me.Controls.Add(Me.btnCBAM_DS_DHF_UNISPED) Me.Controls.Add(Me.btnCBAM_DS_TELOTEC) @@ -735,12 +799,12 @@ Partial Class usrCntlCBAM Friend WithEvents btnCBAM_DS_DHF_VERAG As Button Friend WithEvents btnCBAM_DS_DAKOSY As Button Friend WithEvents Label3 As Label - Friend WithEvents btnCBAM_DS_DAKOSY_Deteil As Button + Friend WithEvents btnCBAM_DS_DAKOSY_Detail As Button Friend WithEvents btnCBAM_DS_DAKOSY_Summe As Button Friend WithEvents btnCBAM_DS_DHF_VERAG_Summe As Button - Friend WithEvents btnCBAM_DS_DHF_VERAG_Deteil As Button + Friend WithEvents btnCBAM_DS_DHF_VERAG_Detail As Button Friend WithEvents btnCBAM_DS_DHF_UNISPED_Summe As Button - Friend WithEvents btnCBAM_DS_DHF_UNISPED_Deteil As Button + Friend WithEvents btnCBAM_DS_DHF_UNISPED_Detail As Button Friend WithEvents btnCBAM_DS_TELOTEC_Summe As Button Friend WithEvents btnCBAM_DS_TELOTEC_Detail As Button Friend WithEvents Label6 As Label @@ -756,4 +820,8 @@ Partial Class usrCntlCBAM Friend WithEvents cbxIMEX As CheckBox Friend WithEvents cbxUNISPED As CheckBox Friend WithEvents btnCBAM_DS_DAKOSY_Spedb As Button + Friend WithEvents btnCBAM_DS_DAKOSY_GP As Button + Friend WithEvents btnCBAM_DS_DHF_VERAG_GP As Button + Friend WithEvents btnCBAM_DS_DHF_UNISPED_GP As Button + Friend WithEvents btnCBAM_DS_TELOTEC_GP As Button End Class diff --git a/SDL/kunden/usrCntlCBAM.vb b/SDL/kunden/usrCntlCBAM.vb index e6d0072b..bfeca966 100644 --- a/SDL/kunden/usrCntlCBAM.vb +++ b/SDL/kunden/usrCntlCBAM.vb @@ -1,7 +1,7 @@ Public Class usrCntlCBAM Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL - Public kdnr = -1 + Public kdnr As Integer = -1 Dim AD As VERAG_PROG_ALLGEMEIN.cAdressen = Nothing Dim KD As VERAG_PROG_ALLGEMEIN.cKunde = Nothing @@ -396,11 +396,13 @@ End Sub Private Sub btnCBAM_DS_DAKOSY_Click(sender As Object, e As EventArgs) Handles btnCBAM_DS_DAKOSY.Click - btnCBAM_DS_DAKOSY_Deteil.Enabled = False + btnCBAM_DS_DAKOSY_Detail.Enabled = False btnCBAM_DS_DAKOSY_Copy.Enabled = False btnCBAM_DS_DAKOSY_Spedb.Enabled = False - btnCBAM_DS_DAKOSY_Deteil.Tag = "" + btnCBAM_DS_DAKOSY_GP.Enabled = False + btnCBAM_DS_DAKOSY_Detail.Tag = "" btnCBAM_DS_DAKOSY_Spedb.Tag = "" + btnCBAM_DS_DAKOSY_GP.Tag = "" Dim SQLSTR_WHERE_FIRMEN = "" @@ -416,9 +418,40 @@ If txtBis._value = "" Then MsgBox("Datum bis eingeben!") : Exit Sub Me.Cursor = Cursors.WaitCursor - - Dim SQLSTR = " - SELECT + Dim SQL_GP As String = "SELECT [Registriernummer_MRN] as 'declaration no' + ,max(Überlassungsdatum) as 'declaration date' + ,isnull(max(Empfänger_CN_EORI),'') as 'importer identification number' + ,'' as 'exporter identification number' + , max(Warentarifnummer) as 'commodity code' + ,max([VersendungsLand]) as 'origin country code' + ,Left(max(Verfahren2),2) as 'requested procedure' + ,'' as 'previous procedure' + ,(max(Eigenmasse) / 1000) as 'net mass' + ,'TONNES' as 'type of measurement unit' + ,'' as 'invoice numbers' + ,'' as 'invoice date' + ,'' as 'member state auth' + ,'' as 'discharge bill waiver' + ,'' as 'authorisation' + ,'' as 'start time' + ,'' as 'end time' + ,'' as 'deadline' + ,isnull(max(Empfänger_CN_EORI),'') as 'reporting declarant EORI number' + ,'' as 'type of representation' + ,isnull(max(CN_Name), '') as 'importer title' + ,'' as 'importer email' + ,'' as 'importer phone' + ,isnull(max(CN_Ländercode), '') as 'importer country code or member state' + ,'' as 'importer subdivision' + ,'' as 'importer city' + ,'' as 'importer street' + ,'' as 'importer street additional' + ,'' as 'importer address number' + ,'' as 'importer post code' + ,'' as 'importer po box' + ,'' as 'importer coordinate longitude (x)' + ,'' as 'importer coordinate latitude (y)'" + Dim SQL_DAKOSY As String = "SELECT [Registriernummer_MRN] RegistriernummerATLAS ,PositionNo PositionsNummer ,max(Überlassungsdatum) Anmeldedatum @@ -433,9 +466,9 @@ ,isnull(max(Empfänger_CN_EORI),'') as EmpfängerEORI ,isnull(max(CN_Name), '') as Empfänger ,isnull(max(Versender_CZ_EORI),'') as AbsenderEORI - ,isnull(max(CZ_Name), '') as Absender - - FROM [tbl_DY_Zollmeldungen_Import] + ,isnull(max(CZ_Name), '') as Absender" + + Dim SQLSTR = " FROM [tbl_DY_Zollmeldungen_Import] where Überlassungsdatum between '" & txtVon._value & "' and '" & txtBis._value & "' and @@ -458,8 +491,6 @@ " - - If SQLSTR_WHERE_FIRMEN <> "" Then SQLSTR &= " and Teilnehmer in ( " & SQLSTR_WHERE_FIRMEN & ")" SQLSTR &= " @@ -479,10 +510,12 @@ SQLSTR &= " group by Registriernummer_MRN,PositionNo" - SQLSTR &= " order by Absender,Registriernummer_MRN, PositionNo" + SQLSTR &= " order by isnull(max(CZ_Name), ''), Registriernummer_MRN, PositionNo" - Dim dt = SQL.loadDgvBySql(SQLSTR, "AVISO", 600) + Dim dt = SQL.loadDgvBySql(SQL_DAKOSY & SQLSTR, "AVISO", 600) + + Dim dtGP = SQL.loadDgvBySql(SQL_GP & SQLSTR, "AVISO", 600) @@ -510,13 +543,21 @@ ' MsgBox(SQLSTR) If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, EORI & "_Detailbericht_" & txtVon._value & "-" & txtBis._value) - btnCBAM_DS_DAKOSY_Deteil.Tag = path - btnCBAM_DS_DAKOSY_Deteil.Enabled = True + btnCBAM_DS_DAKOSY_Detail.Tag = path + btnCBAM_DS_DAKOSY_Detail.Enabled = True btnCBAM_DS_DAKOSY_Copy.Enabled = True End If - Dim dtNew = SQL.loadDgvBySql(sqlNew, "FMZOLL", 600) + If dtGP IsNot Nothing AndAlso dt.Rows.Count > 0 Then + + btnCBAM_DS_DAKOSY_GP.Tag = createExcelForGreenPulse(dtGP, EORI, IIf(AD.Ort <> "", AD.Ort, "")) + btnCBAM_DS_DAKOSY_GP.Enabled = True + + End If + + + Dim dtNew = SQL.loadDgvBySql(sqlNew, "FMZOLL", 600) If dtNew IsNot Nothing AndAlso dtNew.Rows.Count > 0 Then If dtNew.Columns.Contains("Packstücke") Then dtNew.Columns.Remove("Packstücke") Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtNew,,,,, False, EORI & "_Unterschiede zum Sped-Buch_" & txtVon._value & "-" & txtBis._value) @@ -1057,9 +1098,9 @@ End Sub - Private Sub btnCBAM_DS_DAKOSY_Deteil_Click(sender As Object, e As EventArgs) Handles btnCBAM_DS_DAKOSY_Deteil.Click, btnCBAM_DS_DAKOSY_Summe.Click, btnCBAM_DS_DHF_VERAG_Deteil.Click, - btnCBAM_DS_DHF_VERAG_Summe.Click, btnCBAM_DS_DHF_UNISPED_Deteil.Click, btnCBAM_DS_DHF_UNISPED_Summe.Click, btnCBAM_DS_TELOTEC_Detail.Click, btnCBAM_DS_TELOTEC_Summe.Click, - btnCBAM_DS_DAKOSY_XML.Click, btnCBAM_DS_DAKOSY_Spedb.Click + Private Sub btnCBAM_DS_DAKOSY_Deteil_Click(sender As Object, e As EventArgs) Handles btnCBAM_DS_DAKOSY_Detail.Click, btnCBAM_DS_DAKOSY_Summe.Click, btnCBAM_DS_DHF_VERAG_Detail.Click, + btnCBAM_DS_DHF_VERAG_Summe.Click, btnCBAM_DS_DHF_UNISPED_Detail.Click, btnCBAM_DS_DHF_UNISPED_Summe.Click, btnCBAM_DS_TELOTEC_Detail.Click, btnCBAM_DS_TELOTEC_Summe.Click, + btnCBAM_DS_DAKOSY_XML.Click, btnCBAM_DS_DAKOSY_Spedb.Click, btnCBAM_DS_DAKOSY_GP.Click, btnCBAM_DS_DHF_UNISPED_GP.Click, btnCBAM_DS_DHF_VERAG_GP.Click, btnCBAM_DS_TELOTEC_GP.Click If sender.tag <> "" Then Try : Process.Start(sender.tag) : Catch : End Try @@ -1068,7 +1109,7 @@ Private Sub btnCBAM_DS_DAKOSY_Copy_Click(sender As Object, e As EventArgs) Handles btnCBAM_DS_DAKOSY_Copy.Click Dim f As New List(Of String) - If btnCBAM_DS_DAKOSY_Deteil.Tag <> "" Then f.Add(btnCBAM_DS_DAKOSY_Deteil.Tag) + If btnCBAM_DS_DAKOSY_Detail.Tag <> "" Then f.Add(btnCBAM_DS_DAKOSY_Detail.Tag) If btnCBAM_DS_DAKOSY_Summe.Tag <> "" Then f.Add(btnCBAM_DS_DAKOSY_Summe.Tag) If f.Count > 0 Then @@ -1081,7 +1122,7 @@ Private Sub btnCBAM_DS_DHF_VERAG_Copy_Click(sender As Object, e As EventArgs) Handles btnCBAM_DS_DHF_VERAG_Copy.Click Dim f As New List(Of String) - If btnCBAM_DS_DHF_VERAG_Deteil.Tag <> "" Then f.Add(btnCBAM_DS_DHF_VERAG_Deteil.Tag) + If btnCBAM_DS_DHF_VERAG_Detail.Tag <> "" Then f.Add(btnCBAM_DS_DHF_VERAG_Detail.Tag) If btnCBAM_DS_DHF_VERAG_Summe.Tag <> "" Then f.Add(btnCBAM_DS_DHF_VERAG_Summe.Tag) If f.Count > 0 Then @@ -1094,7 +1135,7 @@ Private Sub btnCBAM_DS_DHF_UNISPED_Copy_Click(sender As Object, e As EventArgs) Handles btnCBAM_DS_DHF_UNISPED_Copy.Click Dim f As New List(Of String) - If btnCBAM_DS_DHF_UNISPED_Deteil.Tag <> "" Then f.Add(btnCBAM_DS_DHF_UNISPED_Deteil.Tag) + If btnCBAM_DS_DHF_UNISPED_Detail.Tag <> "" Then f.Add(btnCBAM_DS_DHF_UNISPED_Detail.Tag) If btnCBAM_DS_DHF_UNISPED_Summe.Tag <> "" Then f.Add(btnCBAM_DS_DHF_UNISPED_Summe.Tag) If f.Count > 0 Then @@ -1121,14 +1162,14 @@ Private Sub btnCBAM_DS_DHF_VERAG_Click(sender As Object, e As EventArgs) Handles btnCBAM_DS_DHF_VERAG.Click, btnCBAM_DS_DHF_UNISPED.Click Dim EZOLL_SQL = "EZOLL" If sender Is btnCBAM_DS_DHF_VERAG Then - btnCBAM_DS_DHF_VERAG_Deteil.Enabled = False + btnCBAM_DS_DHF_VERAG_Detail.Enabled = False btnCBAM_DS_DHF_VERAG_Copy.Enabled = False - btnCBAM_DS_DHF_VERAG_Deteil.Tag = "" + btnCBAM_DS_DHF_VERAG_Detail.Tag = "" End If If sender Is btnCBAM_DS_DHF_UNISPED Then - btnCBAM_DS_DHF_UNISPED_Deteil.Enabled = False + btnCBAM_DS_DHF_UNISPED_Detail.Enabled = False btnCBAM_DS_DHF_UNISPED_Copy.Enabled = False - btnCBAM_DS_DHF_UNISPED_Deteil.Tag = "" + btnCBAM_DS_DHF_UNISPED_Detail.Tag = "" EZOLL_SQL = "EZOLL_UNISPED" End If @@ -1193,13 +1234,13 @@ If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, EORI & "_Detailbericht_" & txtVon._value & "-" & txtBis._value) If sender Is btnCBAM_DS_DHF_VERAG Then - btnCBAM_DS_DHF_VERAG_Deteil.Tag = path - btnCBAM_DS_DHF_VERAG_Deteil.Enabled = True + btnCBAM_DS_DHF_VERAG_Detail.Tag = path + btnCBAM_DS_DHF_VERAG_Detail.Enabled = True btnCBAM_DS_DHF_VERAG_Copy.Enabled = True End If If sender Is btnCBAM_DS_DHF_UNISPED Then - btnCBAM_DS_DHF_UNISPED_Deteil.Tag = path - btnCBAM_DS_DHF_UNISPED_Deteil.Enabled = True + btnCBAM_DS_DHF_UNISPED_Detail.Tag = path + btnCBAM_DS_DHF_UNISPED_Detail.Enabled = True btnCBAM_DS_DHF_UNISPED_Copy.Enabled = True End If Me.Cursor = Cursors.Default @@ -1329,7 +1370,7 @@ Private Sub Button3_Click(sender As Object, e As EventArgs) Dim f As New List(Of String) - If btnCBAM_DS_DAKOSY_Deteil.Tag <> "" Then f.Add(btnCBAM_DS_DAKOSY_Deteil.Tag) + If btnCBAM_DS_DAKOSY_Detail.Tag <> "" Then f.Add(btnCBAM_DS_DAKOSY_Detail.Tag) If btnCBAM_DS_DAKOSY_Summe.Tag <> "" Then f.Add(btnCBAM_DS_DAKOSY_Summe.Tag) If btnCBAM_DS_DAKOSY_XML.Tag <> "" Then f.Add(btnCBAM_DS_DAKOSY_XML.Tag) @@ -1532,4 +1573,95 @@ End Sub + Public Function createExcelForGreenPulse(dt As DataTable, EORI As String, Importer_City As String) + + + Dim EORI_Ort As String = "" + If AD IsNot Nothing Then + EORI_Ort = AD.Ort + End If + + Dim Path_GP = "" + + Dim sPath As String = Environment.GetFolderPath(Environment.SpecialFolder.Personal) & "\VERAG\SR\" + If Not My.Computer.FileSystem.DirectoryExists(sPath) Then + My.Computer.FileSystem.CreateDirectory(sPath) + End If + + Dim exclApp As Object 'as Application + Dim Datei As Object 'as WorkBook + Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet + exclApp = CreateObject("Excel.Application") + + + + With exclApp + .Visible = False + + Try + Path_GP = sPath & EORI & "_Detailbericht_GP_" & txtVon._value & "-" & txtBis._value & " .xlsx" + While System.IO.File.Exists(Path_GP) + Path_GP = sPath & EORI & "_Detailbericht_GP_" & txtVon._value & "-" & txtBis._value & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" + End While + My.Computer.FileSystem.WriteAllBytes(Path_GP, My.Resources.CBAM_GP, False) + Catch ex As System.Exception + ' MsgBox(ex.Message) + MsgBox("ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace) + Me.Cursor = Cursors.Default + + Return "" + End Try + + Datei = .Workbooks.Open(Path_GP) 'Anpassen + Blatt = Datei.Worksheets(1) 'Anpassen + + Dim cnt = 2 + + Dim rowcounter As Integer = 0 + + For Each row As DataRow In dt.Rows + Blatt.Range("A" & cnt).Value = row("declaration no") + Blatt.Range("B" & cnt).Value = row("declaration date") + Blatt.Range("C" & cnt).Value = row("importer identification number") + Blatt.Range("D" & cnt).Value = row("exporter identification number") + Blatt.Range("E" & cnt).Value = row("commodity code") + Blatt.Range("F" & cnt).Value = row("origin country code") + Blatt.Range("G" & cnt).Value = row("requested procedure") + Blatt.Range("H" & cnt).Value = row("previous procedure") + Blatt.Range("J" & cnt).Value = row("net mass") + Blatt.Range("J" & cnt).Value = row("type of measurement unit") + Blatt.Range("K" & cnt).Value = row("invoice numbers") + Blatt.Range("L" & cnt).Value = row("invoice date") + Blatt.Range("M" & cnt).Value = row("member state auth") + Blatt.Range("N" & cnt).Value = row("discharge bill waiver") + Blatt.Range("O" & cnt).Value = row("authorisation") + Blatt.Range("P" & cnt).Value = row("start time") + Blatt.Range("Q" & cnt).Value = row("end time") + Blatt.Range("R" & cnt).Value = row("deadline") + Blatt.Range("S" & cnt).Value = row("reporting declarant EORI number") + Blatt.Range("T" & cnt).Value = row("type of representation") + Blatt.Range("U" & cnt).Value = row("importer title") + Blatt.Range("V" & cnt).Value = row("importer email") + Blatt.Range("W" & cnt).Value = row("importer phone") + Blatt.Range("X" & cnt).Value = row("importer country code or member state") + Blatt.Range("Y" & cnt).Value = row("importer subdivision") + Blatt.Range("Z" & cnt).Value = IIf(Importer_City <> "", Importer_City, row("importer city")) + + Blatt.Range("AA" & cnt).Value = row("importer street") + Blatt.Range("AB" & cnt).Value = row("importer street additional") + Blatt.Range("AC" & cnt).Value = row("importer address number") + Blatt.Range("AD" & cnt).Value = row("importer post code") + Blatt.Range("AE" & cnt).Value = row("importer po box") + Blatt.Range("AF" & cnt).Value = row("importer coordinate longitude (x)") + Blatt.Range("AG" & cnt).Value = row("importer coordinate latitude (y)") + cnt += 1 + rowcounter += 1 + Next + + End With + + Return Path_GP + + End Function + End Class diff --git a/SDL/mdm/frmMDMDatenverarbetiung.vb b/SDL/mdm/frmMDMDatenverarbetiung.vb index b0263b3f..fb79079e 100644 --- a/SDL/mdm/frmMDMDatenverarbetiung.vb +++ b/SDL/mdm/frmMDMDatenverarbetiung.vb @@ -2056,7 +2056,7 @@ Public Class frmMDMDatenverarbetiung - Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL") + Dim dt As DataTable = SQL.loadDgvBySql_Param(sqlstr, "FMZOLL", 60) From 410e292b44d4fad1fd6492671eaeca68bc241c59 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 4 Sep 2025 12:03:05 +0200 Subject: [PATCH 6/9] cbam, etc. --- SDL/My Project/Resources.Designer.vb | 4 +- SDL/My Project/Resources.resx | 4 +- SDL/Resources/CBAM_Auswertung_GP.xlsx | Bin 0 -> 9934 bytes SDL/SDL.vbproj | 1 + SDL/kunden/usrCntlCBAM.vb | 52 ++++++++++++------ .../VERAG_PROG_ALLGEMEIN.vbproj | 9 +-- 6 files changed, 42 insertions(+), 28 deletions(-) create mode 100644 SDL/Resources/CBAM_Auswertung_GP.xlsx diff --git a/SDL/My Project/Resources.Designer.vb b/SDL/My Project/Resources.Designer.vb index 2f036aab..4b234d07 100644 --- a/SDL/My Project/Resources.Designer.vb +++ b/SDL/My Project/Resources.Designer.vb @@ -452,9 +452,9 @@ Namespace My.Resources ''' ''' Sucht eine lokalisierte Ressource vom Typ System.Byte[]. ''' - Friend ReadOnly Property CBAM_GP() As Byte() + Friend ReadOnly Property CBAM_Auswertung_GP() As Byte() Get - Dim obj As Object = ResourceManager.GetObject("CBAM_GP", resourceCulture) + Dim obj As Object = ResourceManager.GetObject("CBAM_Auswertung_GP", resourceCulture) Return CType(obj,Byte()) End Get End Property diff --git a/SDL/My Project/Resources.resx b/SDL/My Project/Resources.resx index cf383368..98fba931 100644 --- a/SDL/My Project/Resources.resx +++ b/SDL/My Project/Resources.resx @@ -958,7 +958,7 @@ ..\Resources\Detailauswertung_divers.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\CBAM_GP.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\CBAM_Auswertung_GP.xlsx;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/SDL/Resources/CBAM_Auswertung_GP.xlsx b/SDL/Resources/CBAM_Auswertung_GP.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a9b1fce5bf489ade85b1ad4039aaf335b120dec3 GIT binary patch literal 9934 zcmeHN1y@|z(rsv>afcuQLU4C?4Nf3P%Vd}QXm zH#3>}e!+XU*Scr*>bq<8J*RfnsoF-V; zxlNXBbEIqJm^LzjU11A}ZADuiT}AlV#{E>Dlc=^N{Jd1BFV>o|-Am8Qqn$1~;#}#r z`8lqoA+v6lkUu!!^Bh3QI-(A*g57q^yGIZ=Pj2|Qi+uSz^*T05&nmHLb5=~OsR9AT z8>Y2_{wy&?UT%f}pQ3@mMxGAE0}~Q2+rkOZS2*$O2b@dHo#wL+5sbkOFqL=c!P>wM zpXdJgrf%TjNz#rl`ws*F;NbxXQ2GlkKd7@&o`97)}U4qQzy$6|=cx(Z8u1grV@NiU&)h{~fPUT&u)!B8U#1WNk0 z`rHjIF29W09ROc`;Vh59!r`N=cdZCXzIAX0G0;GgBpk}udoW$5FQzY3C1u>{Tv}ro z${LH`$quekN=%-J)nJUVXc8e|7m$SD@u&Lh^vP?l7++VyOpB-*3JXF*<2xEq?M>uW}W6*&a5GR^%U{Y_91pxR~=!tQ7m| zd+3ORb@YogU=E-2Rbqx_eXSW;R-j#o`_V|h%M};e7a;aUCu4Cq7MusR%@H5G-N@Mp z5YhOc;%R^+JT}(;?q1meGFqA=c9Q^ffGG=yXX~1dnlLo4kV5Rd>2nC@>rpmm_ScT% zq(hHBGhFx8?>0zvzapTnp@BS&-hA_+Np$fNAv?gGY~qX%N%|$KJ78ja3e0%jDSnA~ z+Hz+u?>=hXnRkn_Nm3^Jw3LhAE5wOBbU>2Kmmcc4nVb4i{b=1u)WNX;dp1)J@~oN8o^TKK*NJ_ z#1{%nWfzmB;(-d)uqpF}(&`uOM?@mGamkhXVt39XCrwvR4Ov*w&E73zv(S}^kfJi_ zQ>qWK>%0-YH%}!n(Z|NpBxKPN7rFOGyoa1#4EJW8ET`3EA^;K*FZ709u*t`5<@XqO zyjJly>vnrfEq616!$r%3%?qw&l3T2O`M#&_GhdKjJ1FqYb581KvguH@THtzq2iA5( z#!RjxqO`tBPS);JiSoc}jE9;b^hR?28J zgVj)~5iu{o@;#;ZmSC-1kU{X8{nNlJFfR@5mD=WUPq-(U>1Jkiiv^phHxa6TolXTD zMhkjw6RmB%K-1iKz>>@7X?y*Lo`NB@ch>NDkSt~CS|zg1goD8{_?4;25Imy~%pmt> zUf#i*aBIT(wZd3g3srx_I$ez;qPgN^{<51S$BV*fj%1)pY<;3k#0F1A~Rh^83k8AwpC^ppa`e`j}(^zz}3(PCB2cL7B#q80(fv^ppXBj-g zA=!~O-6wZ+HTo7jXXUiV0iMD`_LOHPg}CO$=!wr)(|p!M?SwVP$MKs!!U|&qr9u7nis+=Bf8xRxqNo_I-D`i8f~s?e1Se)H|4I!)zY$XA}{Yw8~x# zS1lHlpu~|k5oE{m6ksReK8Zr4PFnv&$$4&Ly&F}?jDH57T5k(mQa@X&u_xO?BQA`Q zV5zRIZu;sI(D{j>Y4M2OgK>BS&QwLSOI{4qq9)&fun&Iifv^@1B1M0=MA8w#jMp~N z=v+fo4M$y6D)yqID`(6%Rn1Ka^&e}#Q|%h7!Vl8QOpc#6p&L#hvRv!hRAU&1T@u(f z@~*58^X*(W$p6F>**ak(&?8U$;Q;`g-+AI_`3hoYs_F!>vbAvh8Cet5^kXK4P`o6+ z2x_?pfLP%3u|q#+l-B3SjAudkPg+KrD+=~)=bUA}A2}>+7oR$Gn6R7BW)bo=38ulK zZ3B7vqE}WUDTLDbYjto(zwo?x6?Ql|TLr}+$e#&usIy=Z>~|Qr zvQ%qypwUKhggYkwI3FG2=O_Z5}65 z0!_x~)}&p$O|3zB5?gvXt@I}=tl2quLndFjTEds6Wjl8#4mEcRU@u=Svpx42-HKg05X(iIZtbL`%qTnp|m5mE{qON)KZWaU%jtHr}CM4iWSlKLQT-~9lCmB$GmGUZ1SPu0-`&x~nk(oeEn24CL-6fXq$$VfQNoN-B zPTf0%L+n{2X5&l&2_@VkzQb5Cg&WeYkZ@QZdMJ5=wDY?#+|j-|;hh7*6gf%4y5_6a zBocg6KChS$4Yge3rV{5VRkh+A*RftIThGGWTHCKkSZP>7x@mPKdyP1UTbT~YJq$W% zgw|TFZzRt6K2T1>)XO0096UeLtssh{>mAod4E4&|m`(gLm1$-I$%p!VWepB? zXbUkmEH&?i3SE9dvWOjj!e=2MYU_Cn5>?#}*#zy#9A(8ORl1Fgjtgpp(qN^+) zk29x}&#fsQk}1et&?Lh)rBnWl$hj1%$s}KE9y(4hMX7{HOfw|g8)T+C*~M%h2TFynYhWz?Bp{#sZZJ0!rw$L4dK6 zr#Cy8a^H@1`jUQIAzukdIdqk%(h^NdmV_(9B$f<0LYzoK=ZKs?!B~xNlZ=Z!79D2Y z5o~Ytt_iDW2QzRF5J7fN&K*^h_1)<fmo5@`i%;`obIh>q?mlL=Boy~srQ69te6nJ8%k^QIps&aN z_{!FHM-aMnWUwnLnJ2e43bNB&4EpsBRR|_U5?r`YgQ&Bi1m5uitTKLO;2ZpvtqyjU zwapv-;hFoeF=~fTUR>eKYfnw;x*I29G^h1KLPO6?ce66augP1w&loF&kdy$f|Zlg$z_qCQuMVQ(T<1j4(D%V zAKpSN*SzNWX$8DX_{9$zwcaLQjeE$A-N{U@Ihp@bc#75WFl^K8)Bb&94t9_})8tl7 zZ{-_>jQNRF#fqtw-jrMu&c3;i7pdI=XzAJlV^M8bFlGBjn#TIVE|sO<;E?xsn$0sQ zT;Eo!xR5E%BY0lo(S}+0LkUjg)2f80DyD)}N2Lp9cecmj3@DYZh1+;CA^Lu3luh5$ z>sG>Ion1;S)<m+;+v1_it5P6mWRb?H@X8 z3q!XCQBi0IUsz;na(z>edT6hD{rq6_OlPYliMPs3&(4r6KWT6nzu4xKCFby^hgeqt zTV$tAPpO5`X;!j>c*G45*i2gB2`$50V+yF!4jk-~=l#t7)Z)~UBJUn?B!^3FW@NNv zKus~2+XVK7gohTl@(I#%^ATsv)f~@(Q_^s0S!%Nqd1_2@*EEk)iD`J{^x5IEOzUB& zf^)L7l^>Kp3bW6&9#cIO^J0@+Y~5L6J2CSuu6!siYJm@7sTq!DC16rR*0)YU`O=~lM!JlY(PfJ6@Z`QnG@}id-lErw-yR~l zuRHZWNvI$sX+G=bgp6q3q>*?Iz@;6sm zgAa0akv;~iQ10UgyjEi1>~i@qj@JFUi7ZLBRbdl`go! zcS}n_6PvL^+z#VS?sGlE`DDguMo+t9+b!=Hz|K;YI>N~7_o|GXWe39GZD*oj^M)Dv z^ViEBcH?^?QCn;NN2FHvDi`5o{TbH*%2Ow=iAfw_A zl+1rC!zkwR_-7f0D$^?`gL@2w=w%|!?vU?Yq!XQ(Z*W+AUv)= zK?yY`tdCfD>j%5s3p)twSwKBRBl8wPyalIz!^TANc!`4oKpp~oExPZNeoK1FX<)kJLtW&Q4j^ z6F*_HcG`38ACvre9ks%kEgx!*(*A*z$KHJa{gjgaEa} z8-7b1g*4ArumaDB3to(Eee<*o5^t3?Je0pa{vt3x=q=-_E-x#-#Z&a+A}GR2LKP+#KStgpG3Yj~`}7R9e(FfHW=1VF zbuU&=huag2Nt!I)oag+{iIg&sVsU8SH{G$$i3~*{!N7QNN+G4yz$%yIT!dfB@Jy}U z5vB1e46=i27n0j&D@<#9HwK*j%u%-naEWeStu5*vqGV9|)4icLYvns_c<)E~=|rU> ztK$nQr?dFO;`O!q^6rA3!c1ojoLavqVii*1xpH5pZ*4_J&5+IwMMlIaNpeY^O;?;A zw=>T)DWUn|6z2h+HcyUZ;N%XGdi|?vyAO*wr*e71@Ed#62s%vLGUk=+v=yG!@rB$P zwDOY=QiJ6KCodvGdemK`csIThV?YV*U{`At)XHogE-zu=>Xs4Q7M=a<<9F)eHm6JK z*K8Mz=5YPiP+0qtKF-1zd}*jX1WQ2zXpewM;?UWtI}>3dLtdSi>oUFUgl>ir{A*pT z;U7%G3XJwdw=4-Cnm!e!^q00xJ=xP0{y|F3TE@gmnnW7!rH}R*bXP_3-CKj~-pS{- zaQ!HMpmt0HEnlBBG8lAP?JCxy*taa+!n*5>QiC41Htzo(*c1U$@TB~nyTbZDF7vxo zzp7u7NX~p4YqmWj&n8WC`b1VbQvlh6n%jErG-*pI4s36XMzC2~TWv`K!D*bCr9df2 zBdfkPeg~@L7VY+~8CGqwv}CsU8!XuHr8>1mH|RAN{pdI}ylABV-F)4HQm`E&>P30` z00(w>&$!J(wwd!X>ZUG?9*;n>5=!VpA2j~m%~AI?OS5knf7!Q4&m`XnAmfw1D~&b9 zzN;&TuWqAX+h;!R!B^H%G~zcjENAkO5XN&QY>D2_RIO z^fp9W-+*_uTaTYtf9be56!pEs=n+QtwBOn*H~CoU^DS{Lu#KFzFkfr$b;Y|&Iy$80 zDw{3?>n_`sHOa>&`9DNF!!j=1lgD3tQ2+pf-y`17j*g?HnVFL#>uU4QvuMceblWM4)(PYfK|otnwP zu{U_WEQ>{~m=FN@_2InF_*{w5SU2SEsoON^!CLJmgq zjX+pD$c?Ska+9-UK*m%sp;*8Bf?@V0KPkvAP8QMkrFm;CHKCMEE)TS-so08Y{i|^{ zyTbElU+;}QsW=UIy!ehcvbw&yF{)q%XCT$bdn?t4b2Lm|F|Sg*Dw!I6kY}&AaJa=O zfz?nMT_qiSnxvyZz4fDDt{6wvL!sw@mzTxQw!|2)8b;#GN7NeSNc!Rae{fUK3 zJ&PUG`{{=*ujZ(nE(XTH$>mQd`_lG1DKlPa+~eM2+2RKuz=K;MeVhq60ds}#ZXLVl z@+b@doB-)K?1cR5V6h4nXMqZXY>M(TmbNc_A&AYUC!%$UAVlC~Z2=!7a+AwbplIR; zISi>teW^ap;w&yM_?$lIh_Czfn2}=8YiRyG3|Hv;@W^7MTG~oGqNbo#5T<)rS3kTe zG&B4V1M(zMB1a5D6bqlDc-A@P5uheAqJc?i@?Hmj0wzU zJ8lB#ZEE;@9(IAaa5S-MZ7?EKvK^xWXLBomG4^EdiYrr(K$N z7KhHV#5j+)b)4i{-9hQ2uTA!>M8!=>W?fXveK}?4vYxoeVOMbaD&qyXIv03x6UcQlB`t{8E01?KfEh&0>s7{^_X4EtRm6L7=^WdCm8NQE1aiL{ z$3=F(Yh}b^zmZHvgWMEtO@(#}KL-g5Lv}|F$@2omL4)E7AP*j58J5}?<7e|!;3^=0 zt~?ey-?-`m6}SP&U!>rTsBh|;)8Fq;RW{#Y@frA)69Exdyn^XkaPem!0yJhsQF$0wV)i23Tz| zDzAE+lB?*)M_cAh5WJ@sm{f;{uWj~G_t)pnB3KC`QRAW1zHVoL2!Y^U({YfiOXT1r z*)HN{JKEVlH-6n=>5e5H`~MD)O)bnvt-#dILbZ^Qh#8{8yyx9>3AECH2Ib;nDB8U@Q=vME6d>`s&Vz7lSVYNX(1gtdQ zkbLyz3UPSNhNsde>dtq8jTPm_0wf1$#C?MEXvbl(^criaMp^3!1nF5}3R0b(`8Ty@ z$QUG|NKfiqdE`~@_AZPPKfV}e02V=iSc(*>E`fEA750}ww4NsVv(o&wCP8=fK8Av= zb?PQ1>G}>r;xs&)cqvsjHKsZugv?A*y;O53=so6f)Q&!+E^UeAc>Rn&WEIyMoSP+u z#K7bSyBUcMCmWFWBE4aehsNv?gQlY9oSC0bzUI9>wrE3I(l1txeZW4Vmj?B4ftP3@hfx_WbRj|- z%K4-oS~UO%PYcr*m^88>Jw(#k7IwAx#BcK6PF~g#4`%-sHeKx;_{49Hu zLex&g?7kjDaWf|3h(Z>w4Ho|;-j_#Jbi2xMiXjA#Qd^Et_gXECRQY2pdn)PkSaT*% zja>|4a)k|zkmh=XqX2iS@%WZcXVz~$MGRj#Pdr8K-EQ38_LVO)@@PBPd#ZylQ;Gst zS%jFxyEyYGycEsG%=E;H$j{%ekCSxrymii(2G2is0xu!`6F2l1POUxeYkd}h1)oJMqiK}>nI4^>Bo`05HB zQ-Zq5S}nx>wv)4d_1w#HZLOt-o4`to=Nl6-LbWi&1aFG`u_iV3YI7+tr;C=5A7qwl^0o#WQ?iS|{Qp4L(f8AOlOM)L#e zGY + diff --git a/SDL/kunden/usrCntlCBAM.vb b/SDL/kunden/usrCntlCBAM.vb index bfeca966..ec626e52 100644 --- a/SDL/kunden/usrCntlCBAM.vb +++ b/SDL/kunden/usrCntlCBAM.vb @@ -1,4 +1,6 @@ -Public Class usrCntlCBAM +Imports DocumentFormat.OpenXml.Spreadsheet + +Public Class usrCntlCBAM Dim SQL As New VERAG_PROG_ALLGEMEIN.SQL Public kdnr As Integer = -1 @@ -542,15 +544,16 @@ ' MsgBox(SQLSTR) If dt IsNot Nothing AndAlso dt.Rows.Count > 0 Then - Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, EORI & "_Detailbericht_" & txtVon._value & "-" & txtBis._value) - btnCBAM_DS_DAKOSY_Detail.Tag = path - btnCBAM_DS_DAKOSY_Detail.Enabled = True - btnCBAM_DS_DAKOSY_Copy.Enabled = True + Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dt,,,,, False, EORI & "_Detailbericht_" & txtVon._value & "-" & txtBis._value) + btnCBAM_DS_DAKOSY_Detail.Tag = path + btnCBAM_DS_DAKOSY_Detail.Enabled = True + btnCBAM_DS_DAKOSY_Copy.Enabled = True - End If + End If If dtGP IsNot Nothing AndAlso dt.Rows.Count > 0 Then + btnCBAM_DS_DAKOSY_GP.Tag = "" btnCBAM_DS_DAKOSY_GP.Tag = createExcelForGreenPulse(dtGP, EORI, IIf(AD.Ort <> "", AD.Ort, "")) btnCBAM_DS_DAKOSY_GP.Enabled = True @@ -558,13 +561,13 @@ Dim dtNew = SQL.loadDgvBySql(sqlNew, "FMZOLL", 600) - If dtNew IsNot Nothing AndAlso dtNew.Rows.Count > 0 Then - If dtNew.Columns.Contains("Packstücke") Then dtNew.Columns.Remove("Packstücke") - Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtNew,,,,, False, EORI & "_Unterschiede zum Sped-Buch_" & txtVon._value & "-" & txtBis._value) - btnCBAM_DS_DAKOSY_Spedb.Enabled = True - btnCBAM_DS_DAKOSY_Spedb.Tag = path - Me.Cursor = Cursors.Default - End If + If dtNew IsNot Nothing AndAlso dtNew.Rows.Count > 0 Then + If dtNew.Columns.Contains("Packstücke") Then dtNew.Columns.Remove("Packstücke") + Dim path = VERAG_PROG_ALLGEMEIN.cProgramFunctions.genExcelFromDT_NEW(dtNew,,,,, False, EORI & "_Unterschiede zum Sped-Buch_" & txtVon._value & "-" & txtBis._value) + btnCBAM_DS_DAKOSY_Spedb.Enabled = True + btnCBAM_DS_DAKOSY_Spedb.Tag = path + Me.Cursor = Cursors.Default + End If @@ -1589,7 +1592,7 @@ End If Dim exclApp As Object 'as Application - Dim Datei As Object 'as WorkBook + Dim Datei As Object 'Workbook Dim Blatt As Object 'Microsoft.Office.Interop.Excel.Worksheet 'As Object 'as Worksheet exclApp = CreateObject("Excel.Application") @@ -1603,7 +1606,12 @@ While System.IO.File.Exists(Path_GP) Path_GP = sPath & EORI & "_Detailbericht_GP_" & txtVon._value & "-" & txtBis._value & Now.ToString("ddMMyyyyHHmmss") & ".xlsx" End While - My.Computer.FileSystem.WriteAllBytes(Path_GP, My.Resources.CBAM_GP, False) + My.Computer.FileSystem.WriteAllBytes(Path_GP, My.Resources.CBAM_Auswertung_GP, False) + + System.Threading.Thread.Sleep(200) + GC.Collect() + GC.WaitForPendingFinalizers() + Catch ex As System.Exception ' MsgBox(ex.Message) MsgBox("ERROR 01: " & ex.Message & vbNewLine & ex.StackTrace) @@ -1612,10 +1620,10 @@ Return "" End Try - Datei = .Workbooks.Open(Path_GP) 'Anpassen - Blatt = Datei.Worksheets(1) 'Anpassen + Datei = .Workbooks.Open(Path_GP) + Blatt = Datei.Worksheets(1) - Dim cnt = 2 + Dim cnt = 3 Dim rowcounter As Integer = 0 @@ -1658,8 +1666,16 @@ rowcounter += 1 Next + Datei.Save() + Datei.Close(SaveChanges:=True) + Datei = Nothing + End With + exclApp.Quit() + exclApp = Nothing + + Return Path_GP End Function diff --git a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj index 5126e0ce..2a73db23 100644 --- a/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj +++ b/VERAG_PROG_ALLGEMEIN/VERAG_PROG_ALLGEMEIN.vbproj @@ -386,14 +386,12 @@ - frmDatumsabfrage.vb Form - @@ -1426,9 +1424,6 @@ - - 2.11.1 - 3.8.0 @@ -1450,6 +1445,9 @@ 2024.0.0 + + 9.0.8 + 3.0.0.266 @@ -1599,7 +1597,6 @@ - From 9769c6fac178a7d8ccfb28408c69f61b107e745d Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 4 Sep 2025 17:03:36 +0200 Subject: [PATCH 7/9] Creditsafe, Datenserver, Bonit., Kundenuebersicht, etc. --- SDL/Fakturierung/cFakturierung.vb | 28 +++++++++++++------ SDL/kunden/frmBonitätsverlauf.vb | 3 +- SDL/kunden/usrCntlKundenuebersicht.vb | 22 +++++++-------- VERAG_PROG_ALLGEMEIN/Classes/cFirmen.vb | 4 +-- .../DATENSERVER/cDATENSERVER.vb | 4 ++- .../Creditsafe/cCreditSafeAPI.vb | 10 +++---- 6 files changed, 42 insertions(+), 29 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index c8d50159..d4222c4d 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -1878,7 +1878,7 @@ Public Class cFakturierung Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID) Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD") If enableZugpferd Then - tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(True, RECHNUNG)) + tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(True, RECHNUNG,), "ZUGFeRD-invoice.xml") Else Dim Zugferdpath = createZUGFeRD(True, RECHNUNG) @@ -2088,10 +2088,13 @@ Public Class cFakturierung '--------------------------------EINZELRECHNUNG----------------------------------- '--------------------------------------------------------------------------------- + Dim RECHNUNG_AD As cAdressen + Dim RECHNUNG_KD As cKunde + If RECHNUNG.RechnungsKundenNr > 0 Then - Dim RECHNUNG_AD As New VERAG_PROG_ALLGEMEIN.cAdressen(RECHNUNG.RechnungsKundenNr) - Dim RECHNUNG_KD As New VERAG_PROG_ALLGEMEIN.cKunde(RECHNUNG.RechnungsKundenNr) + RECHNUNG_AD = New VERAG_PROG_ALLGEMEIN.cAdressen(RECHNUNG.RechnungsKundenNr) + RECHNUNG_KD = New VERAG_PROG_ALLGEMEIN.cKunde(RECHNUNG.RechnungsKundenNr) If RECHNUNG_KD.Zahlungsziel IsNot Nothing AndAlso IsNumeric(RECHNUNG_KD.Zahlungsziel) Then ZZTage = RECHNUNG_KD.Zahlungsziel @@ -2115,9 +2118,12 @@ Public Class cFakturierung If RECHNUNG.Text IsNot Nothing Then desc.AddNote(RECHNUNG.Text.ToString, SubjectCodes.AAI) desc.AddNote("Es bestehen Rabatt- und Bonusvereinbarungen.", SubjectCodes.AAK) - desc.SetBuyer(RECHNUNG.RechnungsName_1, RECHNUNG.RechnungsOrt, RECHNUNG.RechnungsOrt, RECHNUNG.RechnungsStraße, GetCountryCodeFromLandKZ(RECHNUNG.RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(RECHNUNG.KundenNrZentrale), RECHNUNG.KundenNrZentrale, "")) + desc.SetBuyer(RECHNUNG.RechnungsName_1, IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Postfach IsNot Nothing AndAlso RECHNUNG_AD.Postfach <> "", RECHNUNG_AD.Postfach, RECHNUNG.RechnungsOrt), IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Ort IsNot Nothing AndAlso RECHNUNG_AD.Ort <> "", RECHNUNG_AD.Ort, RECHNUNG.RechnungsOrt), RECHNUNG.RechnungsStraße, GetCountryCodeFromLandKZ(RECHNUNG.RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(RECHNUNG.KundenNrZentrale), RECHNUNG.KundenNrZentrale, "")) - desc.SetSeller(FIRMA.Firma_Bez, FIRMA.Firma_Ort, FIRMA.Firma_Ort, FIRMA.Firma_Straße, GetCountryCodeFromLandKZ(FIRMA.Firma_LandKz, vatSeller)) + Dim FirmaOrt = FIRMA.Firma_Ort + FirmaOrt = FirmaOrt.Replace(FIRMA.Firma_LandKz & "-" & FIRMA.Firma_PLZ & " ", "") + + desc.SetSeller(FIRMA.Firma_Bez, FIRMA.Firma_PLZ, FirmaOrt, FIRMA.Firma_Straße, GetCountryCodeFromLandKZ(FIRMA.Firma_LandKz, vatSeller)) desc.AddSellerTaxRegistration(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), TaxRegistrationSchemeID.VA) ' Optionally, to support Peppol----------------------------- @@ -2354,9 +2360,13 @@ Public Class cFakturierung End If + Dim FirmaOrt = FIRMA.Firma_Ort + FirmaOrt = FirmaOrt.Replace(FIRMA.Firma_LandKz & "-" & FIRMA.Firma_PLZ & " ", "") - desc.SetBuyer(ROW("RechnungsName 1") & " " & Rechnugnsname2, RechnungsOrt, RechnungsOrt, RechnungsStraße, GetCountryCodeFromLandKZ(RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(ROW("RechnungsKundenNr")), ROW("RechnungsKundenNr"), "")) - desc.SetSeller(FIRMA.Firma_Bez, FIRMA.Firma_Ort, FIRMA.Firma_Ort, FIRMA.Firma_Straße, GetCountryCodeFromLandKZ(FIRMA.Firma_LandKz, vatSeller)) + + desc.SetBuyer(ROW("RechnungsName 1") & " " & Rechnugnsname2, IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Postfach IsNot Nothing AndAlso RECHNUNG_AD.Postfach <> "", RECHNUNG_AD.Postfach, RECHNUNG.RechnungsOrt), IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Ort IsNot Nothing AndAlso RECHNUNG_AD.Ort <> "", RECHNUNG_AD.Ort, RECHNUNG.RechnungsOrt), RechnungsStraße, GetCountryCodeFromLandKZ(RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(ROW("RechnungsKundenNr")), ROW("RechnungsKundenNr"), "")) + + desc.SetSeller(FIRMA.Firma_Bez, FIRMA.Firma_PLZ, FirmaOrt, FIRMA.Firma_Straße, GetCountryCodeFromLandKZ(FIRMA.Firma_LandKz, vatSeller)) If FIRMA.Firma_Steuernummer IsNot Nothing Then desc.AddSellerTaxRegistration(FIRMA.Firma_Steuernummer, TaxRegistrationSchemeID.FC) desc.AddSellerTaxRegistration(FIRMA.Firma_UID.ToString.Replace("UID: ", ""), TaxRegistrationSchemeID.VA) @@ -4213,7 +4223,7 @@ Public Class cFakturierung Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID) Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD") If enableZugpferd Then - tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt)) + tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, SammelrechnungsDT, , rpt), "ZUGFeRD-invoice.xml") Else Dim Zugferdpath = createZUGFeRD(False, Nothing, SammelrechnungsDT,, rpt) If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then @@ -4883,7 +4893,7 @@ Public Class cFakturierung Dim Paramslist As New cParameterList(VERAG_PROG_ALLGEMEIN.cAllgemein.PROGID) Dim enableZugpferd = Paramslist.GET_PARAMETER_VALUE_BOOL("ZUGFeRD") If enableZugpferd Then - tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, dt, rpt)) + tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.addAttachementToPDF(tmpPath, createZUGFeRD(False, Nothing, dt, rpt), "ZUGFeRD-invoice.xml") Else Dim Zugferdpath = createZUGFeRD(False, Nothing, dt, rpt) If Zugferdpath IsNot Nothing AndAlso Zugferdpath <> "" Then diff --git a/SDL/kunden/frmBonitätsverlauf.vb b/SDL/kunden/frmBonitätsverlauf.vb index 45b40759..55115008 100644 --- a/SDL/kunden/frmBonitätsverlauf.vb +++ b/SDL/kunden/frmBonitätsverlauf.vb @@ -59,13 +59,14 @@ Public Class frmBonitätsverlauf Dim sqlNewViewAdd As String = " UNION ALL SELECT - CAST(e.eventDate AS DATE) AS ba_Datum,MAX(e.crValue) AS " & sqlIndex & ",NULL AS ba_GruendundsDatum,NULL AS ba_Umsatz,NULL AS ba_Mitarbeiter,MAX(e.clValue) AS ba_Hoechstkredit,MAX(e.sachbearbeiter) AS ba_Sachbearbeiter,NULL AS ba_Zahlungsweise,NULL AS ba_GFName,NULL AS ba_Risikostufe,NULL AS ba_CreditSaveRisikoklasse,Source AS ba_Pruefungstool,NULL AS ba_GSName,NULL AS ba_Geschaeftszweck,NULL AS ba_datenarchivId + CAST(e.eventDate AS DATE) AS ba_Datum,MAX(e.crValue) AS " & sqlIndex & ",NULL AS ba_GruendundsDatum,NULL AS ba_Umsatz,NULL AS ba_Mitarbeiter,MAX(e.clValue) AS ba_Hoechstkredit,MAX(e.sachbearbeiter) AS ba_Sachbearbeiter,NULL AS ba_Zahlungsweise,NULL AS ba_GFName,NULL AS ba_Risikostufe,MAX(e.newRiskClass) AS ba_CreditSaveRisikoklasse,Source AS ba_Pruefungstool,NULL AS ba_GSName,NULL AS ba_Geschaeftszweck,NULL AS ba_datenarchivId FROM ( SELECT e.companyId, e.portfolioId, e.eventDate, e.sachbearbeiter, + e.newRiskClass, CASE WHEN e.localEventCode = 'CR' OR e.globalEventCode = 'CR' THEN " & IIf(Not KD_ERW.kde_CreditSaveId.ToLower.Contains("at"), "e.newValueCRIndex", "e.newValueCR") & " ELSE 0 END AS crValue, CASE WHEN e.localEventCode = 'CL' OR e.globalEventCode = 'CL' THEN e.newValueCL ELSE 0 END AS clValue, 'creditsafe API' AS Source diff --git a/SDL/kunden/usrCntlKundenuebersicht.vb b/SDL/kunden/usrCntlKundenuebersicht.vb index 8c71e8e9..f9ec093c 100644 --- a/SDL/kunden/usrCntlKundenuebersicht.vb +++ b/SDL/kunden/usrCntlKundenuebersicht.vb @@ -3364,7 +3364,6 @@ Public Class usrCntlKundenuebersicht Exit Sub End If - If dt.Rows.Count > 0 Then Dim frm As New Form Dim dgv As New DataGridView() @@ -3380,16 +3379,16 @@ Public Class usrCntlKundenuebersicht dgv.DataSource = dt - If dgv IsNot Nothing Then + If dgv IsNot Nothing Then - frm.Size = New Size(750, 500) - dgv.Size = New Size(frm.Size.Width - 10, frm.Size.Height - 10) - dgv.Dock = DockStyle.Fill - dgv.Anchor = AnchorStyles.Left - dgv.Anchor = AnchorStyles.Top - dgv.ReadOnly = True - frm.Controls.Add(dgv) - frm.StartPosition = FormStartPosition.CenterScreen + frm.Size = New Size(750, 500) + dgv.Size = New Size(frm.Size.Width - 10, frm.Size.Height - 10) + dgv.Dock = DockStyle.Fill + dgv.Anchor = AnchorStyles.Left + dgv.Anchor = AnchorStyles.Top + dgv.ReadOnly = True + frm.Controls.Add(dgv) + frm.StartPosition = FormStartPosition.CenterScreen If frm.ShowDialog().Cancel Then initCreditsave() @@ -3401,8 +3400,9 @@ Public Class usrCntlKundenuebersicht End If + MsgBox("Creditsafe-Daten wurden aktualisiert!") - Else + Else MsgBox("Keine Creditsafe-Änderungen seit " & lastChecked.ToShortDateString) End If diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cFirmen.vb b/VERAG_PROG_ALLGEMEIN/Classes/cFirmen.vb index 5b73dafb..a0d39e53 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cFirmen.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cFirmen.vb @@ -29,8 +29,8 @@ Public Class cFirmen Property Firma_Webadresse As Object = Nothing ' NVARCHAR (40) NULL, Property Firma_LandKz As Object = Nothing ' NVARCHAR (40) NULL, Property Firma_Steuernummer As Object = Nothing - Property Firmengruppe As Object = Nothing + Property Firma_PLZ As Object = Nothing Dim SQL As New SQL @@ -46,7 +46,6 @@ Public Class cFirmen Public 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("Firma_ID", Firma_ID, , True, True)) - list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_Bez", Firma_Bez)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_BackColor", Firma_BackColor)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_Logo", Firma_Logo)) @@ -74,6 +73,7 @@ Public Class cFirmen list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_LandKz", Firma_LandKz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firmengruppe", Firmengruppe)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_Steuernummer", Firma_Steuernummer)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_PLZ", Firma_PLZ)) Return list diff --git a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb index 2a136b64..2ea0d9ce 100644 --- a/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb +++ b/VERAG_PROG_ALLGEMEIN/DATENSERVER/cDATENSERVER.vb @@ -2283,7 +2283,7 @@ Public Class DATENVERVER_OPTIONS End Function - Public Shared Function addAttachementToPDF(File As String, attPath As String) As String + Public Shared Function addAttachementToPDF(File As String, attPath As String, Optional renameFile As String = "") As String Try Dim pdf As New Spire.Pdf.PdfDocument() @@ -2295,6 +2295,8 @@ Public Class DATENVERVER_OPTIONS Dim attachment As PdfAttachment = New PdfAttachment(attPath) + If renameFile <> "" Then attachment.FileName = renameFile + docPdf.Attachments.Add(attachment) docPdf.SaveToFile(File) End If diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb index 2b46eaeb..8d03854c 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/Creditsafe/cCreditSafeAPI.vb @@ -420,7 +420,7 @@ Public Class cCreditSafeAPI End Function - Shared Function getCompanyEvents(company As Company, ByRef dtEvents As DataTable, Optional checklastChecked As Boolean = False, Optional updateKunden As Boolean = False) As String + Shared Function getCompanyEvents(company As Company, ByRef dtEvents As DataTable, Optional checklastChecked As Boolean = False, Optional updateKunden As Boolean = False, Optional showError As Boolean = False) As String VERAG_PROG_ALLGEMEIN.cChilkat_Helper.UnlockCilkat() @@ -431,7 +431,7 @@ Public Class cCreditSafeAPI Dim jsonRespString = SendGetRequestWithAuthHeader(myUrl, company, "application/json", "GET", token, failureDesc) If failureDesc <> "" Then - MsgBox(failureDesc) + If showError Then MsgBox(failureDesc) Return "Error" End If @@ -617,20 +617,20 @@ Public Class cCreditSafeAPI If KUNDE_ERW.kde_CreditSaveBonitaetsIndex <> Index Then KUNDE_ERW.kde_CreditSaveBonitaetsIndex = Index KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass - KUNDE.Bonitätsdatum = CDate(CR_Datum) + KUNDE.Bonitätsdatum = Today() End If Else If KUNDE_ERW.kde_CreditSaveBonitaetsScore <> CR AndAlso CR <> defaultCR Then KUNDE_ERW.kde_CreditSaveBonitaetsScore = CR KUNDE_ERW.kde_CreditSaveBonitaetsklasse = riskClass - KUNDE.Bonitätsdatum = CDate(CR_Datum) + KUNDE.Bonitätsdatum = Today() End If End If If KUNDE.Höchstkredit <> CL AndAlso CL <> defaultCL Then KUNDE.Höchstkredit = CL If KUNDE.Bonitätsdatum <= CDate(CL_Datum) Then - KUNDE.Bonitätsdatum = CDate(CL_Datum) + KUNDE.Bonitätsdatum = Today() End If End If From df2fb5851805d16b5be74d134af8590c3f987e57 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Thu, 4 Sep 2025 17:10:19 +0200 Subject: [PATCH 8/9] syska bugfix --- VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb index 3d747fea..0bba04bf 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cSyska_Interface.vb @@ -1488,7 +1488,7 @@ Public Class cSyska_Interface For Each r_OP In dt_OP.Rows Try - If KdNr > 1 Then OP_ID_CNT = SQL.getValueTxtBySql("SELECT isnull(MAX(OP_ID),0)+1 FROM [Offene Posten] AND Firma_ID = '" & Firma_ID & "'", "FMZOLL") 'Wenn ein Kunde geändert wird, wird die höchste ID ermittelt --> höchste ID des OPS der FIRMA!!!! + If KdNr > 1 Then OP_ID_CNT = SQL.getValueTxtBySql("SELECT isnull(MAX(OP_ID),0)+1 FROM [Offene Posten] WHERE Firma_ID = '" & Firma_ID & "'", "FMZOLL") 'Wenn ein Kunde geändert wird, wird die höchste ID ermittelt --> höchste ID des OPS der FIRMA!!!! Dim OP As New VERAG_PROG_ALLGEMEIN.cOffene_Posten() From 116a2c0ff0429642f5cb1d2315ff641a3d259555 Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Fri, 5 Sep 2025 08:48:49 +0200 Subject: [PATCH 9/9] bugfix sdl --- SDL/Fakturierung/cFakturierung.vb | 25 +++++++++++++++++++++++-- SDL/My Project/AssemblyInfo.vb | 4 ++-- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index d4222c4d..08297513 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -2118,7 +2118,16 @@ Public Class cFakturierung If RECHNUNG.Text IsNot Nothing Then desc.AddNote(RECHNUNG.Text.ToString, SubjectCodes.AAI) desc.AddNote("Es bestehen Rabatt- und Bonusvereinbarungen.", SubjectCodes.AAK) - desc.SetBuyer(RECHNUNG.RechnungsName_1, IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Postfach IsNot Nothing AndAlso RECHNUNG_AD.Postfach <> "", RECHNUNG_AD.Postfach, RECHNUNG.RechnungsOrt), IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Ort IsNot Nothing AndAlso RECHNUNG_AD.Ort <> "", RECHNUNG_AD.Ort, RECHNUNG.RechnungsOrt), RECHNUNG.RechnungsStraße, GetCountryCodeFromLandKZ(RECHNUNG.RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(RECHNUNG.KundenNrZentrale), RECHNUNG.KundenNrZentrale, "")) + + Dim KundePLZ As String = "" + Dim KundeOrt As String = "" + + If RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Postfach IsNot Nothing AndAlso RECHNUNG_AD IsNot Nothing Then + KundePLZ = RECHNUNG_AD.Postfach + KundeOrt = RECHNUNG_AD.PLZ + End If + + desc.SetBuyer(RECHNUNG.RechnungsName_1, IIf(KundePLZ <> "", KundePLZ, RECHNUNG.RechnungsOrt), IIf(KundeOrt <> "", KundeOrt, RECHNUNG.RechnungsOrt), RECHNUNG.RechnungsStraße, GetCountryCodeFromLandKZ(RECHNUNG.RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(RECHNUNG.KundenNrZentrale), RECHNUNG.KundenNrZentrale, "")) Dim FirmaOrt = FIRMA.Firma_Ort FirmaOrt = FirmaOrt.Replace(FIRMA.Firma_LandKz & "-" & FIRMA.Firma_PLZ & " ", "") @@ -2364,7 +2373,19 @@ Public Class cFakturierung FirmaOrt = FirmaOrt.Replace(FIRMA.Firma_LandKz & "-" & FIRMA.Firma_PLZ & " ", "") - desc.SetBuyer(ROW("RechnungsName 1") & " " & Rechnugnsname2, IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Postfach IsNot Nothing AndAlso RECHNUNG_AD.Postfach <> "", RECHNUNG_AD.Postfach, RECHNUNG.RechnungsOrt), IIf(RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Ort IsNot Nothing AndAlso RECHNUNG_AD.Ort <> "", RECHNUNG_AD.Ort, RECHNUNG.RechnungsOrt), RechnungsStraße, GetCountryCodeFromLandKZ(RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(ROW("RechnungsKundenNr")), ROW("RechnungsKundenNr"), "")) + Dim KundePLZ As String = "" + Dim KundeOrt As String = "" + + If RECHNUNG_AD IsNot Nothing AndAlso RECHNUNG_AD.Postfach IsNot Nothing AndAlso RECHNUNG_AD.PLZ IsNot Nothing AndAlso RECHNUNG_AD.Postfach <> "" AndAlso RECHNUNG_AD.PLZ <> "" Then + KundePLZ = RECHNUNG_AD.Postfach + KundeOrt = RECHNUNG_AD.PLZ + Else + KundePLZ = RechnungsOrt + KundeOrt = RechnungsOrt + + End If + + desc.SetBuyer(ROW("RechnungsName 1") & " " & Rechnugnsname2, KundePLZ, KundeOrt, RechnungsStraße, GetCountryCodeFromLandKZ(RechnungsLandKz, vatBuyer), IIf(Not IsDBNull(ROW("RechnungsKundenNr")), ROW("RechnungsKundenNr"), "")) desc.SetSeller(FIRMA.Firma_Bez, FIRMA.Firma_PLZ, FirmaOrt, FIRMA.Firma_Straße, GetCountryCodeFromLandKZ(FIRMA.Firma_LandKz, vatSeller)) diff --git a/SDL/My Project/AssemblyInfo.vb b/SDL/My Project/AssemblyInfo.vb index e7958e6e..495729e5 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: ' - - + +