From 3926ec909f66fc0235b033166904c5d3bce08cfa Mon Sep 17 00:00:00 2001 From: "d.breimaier" Date: Wed, 5 Jul 2023 13:48:53 +0200 Subject: [PATCH] =?UTF-8?q?=C3=84nderungen=20Rechnungsnummernveragbe,=20Fi?= =?UTF-8?q?skalkunden,=20Creditsafe-API=20Fehlerausgabe=20verbessert,=20Ge?= =?UTF-8?q?samtsicherheitem=20(Feature=20f=C3=BCr=20Refrerenzbetrag=C3=A4n?= =?UTF-8?q?derungen)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- SDL/Fakturierung/cFakturierung.vb | 2 +- SDL/kunden/Berichte/rptFiskalkunde.vb | 5 ++- SDL/kunden/usrcntlFiskaluebersicht.vb | 2 +- .../Classes/cAufschubKonten.vb | 32 ++++++++++---- .../Classes/cRechnungsnummern.vb | 44 ++++++++++++++++--- .../Schnittstellen/cCreditSafeAPI.vb | 18 ++++++-- VERAG_PROG_ALLGEMEIN/cSicherheiten.vb | 3 +- 7 files changed, 86 insertions(+), 20 deletions(-) diff --git a/SDL/Fakturierung/cFakturierung.vb b/SDL/Fakturierung/cFakturierung.vb index 16650b1b..cbd7759c 100644 --- a/SDL/Fakturierung/cFakturierung.vb +++ b/SDL/Fakturierung/cFakturierung.vb @@ -2064,7 +2064,7 @@ Public Class cFakturierung getNewRgNr = RG_NR.LfdRechnungsNr ' --> Die in der DB gespeicherte RgNr wird verwendet ' Nächste Rechnungsnummer speichern. - RG_NR.INCREASE_RGNR() ' SOFORT Speichern, Sonst gibt es wieder eine Doppelvergabe! + 'RG_NR.INCREASE_RGNR() ' SOFORT Speichern, Sonst gibt es wieder eine Doppelvergabe! ' Prüfung, ob RgNr schon vergeben wurde --> dann +1, bis freie Nr. (sollte EÜGENTLICH nicht vorkommen) getNewRgNr = VERAG_PROG_ALLGEMEIN.cRechnungsnummern.CHECK_RGNR_NEW(getNewRgNr, Firma_ID, Buchungsjahr) diff --git a/SDL/kunden/Berichte/rptFiskalkunde.vb b/SDL/kunden/Berichte/rptFiskalkunde.vb index 5a4f2e71..4bac3d67 100644 --- a/SDL/kunden/Berichte/rptFiskalkunde.vb +++ b/SDL/kunden/Berichte/rptFiskalkunde.vb @@ -13,9 +13,10 @@ Public Class rptFiskalkunde Dim EORI As cEORIPruefung Dim UID As cUIDPruefung Dim UVM As cKundenVollmachten + Dim VMOriginal As Boolean = False Dim unterlagenliste As List(Of String) - Sub New(KdNr As Integer, FiskalId As Integer, VM As cKundenVollmachten, BR As cBonitaetsauskunft, EORI As cEORIPruefung, UID As cUIDPruefung, UVM As cKundenVollmachten, unterlagenliste As List(Of String), Optional Firma As String = "VERAG") + Sub New(KdNr As Integer, FiskalId As Integer, VM As cKundenVollmachten, BR As cBonitaetsauskunft, EORI As cEORIPruefung, UID As cUIDPruefung, UVM As cKundenVollmachten, VMOriginal As Boolean, unterlagenliste As List(Of String), Optional Firma As String = "VERAG") ' Dieser Aufruf ist für den Designer erforderlich. InitializeComponent() @@ -60,6 +61,8 @@ Public Class rptFiskalkunde End If If IsDate(VM.kdvm_erhalten_Datum) Then txtVM.Text &= CDate(VM.kdvm_erhalten_Datum).ToShortDateString + + If VMOriginal Then txtVM.Text &= " (Original vorhanden)" Else txtVMNein.Text = "X" End If diff --git a/SDL/kunden/usrcntlFiskaluebersicht.vb b/SDL/kunden/usrcntlFiskaluebersicht.vb index 0acdd095..d775e11c 100644 --- a/SDL/kunden/usrcntlFiskaluebersicht.vb +++ b/SDL/kunden/usrcntlFiskaluebersicht.vb @@ -258,7 +258,7 @@ Public Class usrcntlFiskaluebersicht Dim tmpPath = VERAG_PROG_ALLGEMEIN.DATENVERVER_OPTIONS.getTMPPath("Fiskalanalyse", ".pdf", , False) - Dim rptFiskalkunden As New SDL.rptFiskalkunde(kdNr, fk.FK_Id, VM, BA, EORI, UID, UVM, listeUnterlagen) + Dim rptFiskalkunden As New SDL.rptFiskalkunde(kdNr, fk.FK_Id, VM, BA, EORI, UID, UVM, fk.FK_VollmachtOriginal, listeUnterlagen) Dim p As New GrapeCity.ActiveReports.Export.Pdf.Section.PdfExport rptFiskalkunden.Run(False) diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb b/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb index 4c3d3fa7..ae506f4d 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cAufschubKonten.vb @@ -29,6 +29,7 @@ Public Class cAufschubKonten Sub New(brgakto_gs_standort As String) Me.brgakto_gs_standort = brgakto_gs_standort LOADStandort() + brgakto_betrag = getReferenzbetrag(Today) End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) @@ -172,7 +173,8 @@ Public Class cAufschubKonten Return SQL.doSQL("Update [tblBrgAufschubKonten] Set brgakto_gs_aktSaldo = CAST(REPLACE('" & brgakto_gs_aktSaldo & "' ,',','.')AS decimal(18,2)) WHERE brgakto_gs_standort = '" & brgakto_gs_standort & "'", "ADMIN") End Function - Public Function CalcSaldo() As String + Public Function CalcSaldo(Optional dtDate As DataTable = Nothing) As String + Dim SaldoString As String = "select @@ -189,18 +191,32 @@ Public Class cAufschubKonten when gsp_art = 'Open' then (gsp_sicherheitsbetrag * -1) when gsp_art = 'Close' then gsp_sicherheitsbetrag end) - as SicherheitsSaldoPositionen from [tblGesamtsicherheitsPositionen] Where gsp_gsid IN (select gs_gsId from [tblGesamtsicherheit] where gs_standort = '" & brgakto_gs_standort & "' ))" + as SicherheitsSaldoPositionen from [tblGesamtsicherheitsPositionen] Where gsp_gsid IN (select gs_gsId from [tblGesamtsicherheit] where gs_standort = '" & brgakto_gs_standort & "' And ISNULL(gs_ReferenzAenderung,0) = 0 ))" Dim dt As New DataTable - Dim mrn As Double = 0 - dt = SQL.loadDgvBySql(SaldoString, "AVISO", 100, True) - If dt.Rows(0).Item(0).ToString.Length > 0 Then - mrn = dt.Rows(0).Item(0) - End If + Dim mrn As Double = 0 + dt = SQL.loadDgvBySql(SaldoString, "AVISO", 100, True) + If dt.Rows(0).Item(0).ToString.Length > 0 Then + mrn = dt.Rows(0).Item(0) + End If - brgakto_gs_aktSaldo = brgakto_betrag + mrn + brgakto_gs_aktSaldo = getReferenzbetrag(Today) + mrn updateSaldo() + + Return brgakto_gs_aktSaldo End Function + Public Function getReferenzbetrag(nowDate As Date) As Double + + Try + + Return SQL.getValueTxtBySql("select TOP (1) brgarefb_refbetrag from [tblBrgAufschubReferenzberaege] where [brgarefb_gsid]='" & brgakto_id & "' and brgarefb_gs_aktiv = 1 And [brgarefb_gueltig_ab] <= '" & nowDate & "' order by [brgarefb_gueltig_ab] desc", "ADMIN",,,,) + + Catch ex As Exception + MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) + End Try + + End Function + End Class diff --git a/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsnummern.vb b/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsnummern.vb index 05e682d2..84718783 100644 --- a/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsnummern.vb +++ b/VERAG_PROG_ALLGEMEIN/Classes/cRechnungsnummern.vb @@ -4,8 +4,6 @@ Imports System.Data.SqlClient Public Class cRechnungsnummern Property SpeditionsbuchNr As String = "" 'FIRMA! Property Buchungsjahr As String = "" - - Property VonRechnungsNr As Integer = -1 Property BisRechnungsNr As Integer = -1 Property LfdRechnungsNr As Integer = 0 @@ -58,9 +56,9 @@ Public Class cRechnungsnummern LfdRechnungsNr = VonRechnungsNr '------------------------------------- - + LOADANDUPDATE(SpeditionsbuchNr, Buchungsjahr, LfdRechnungsNr, VonRechnungsNr, BisRechnungsNr) 'LOAD(SpeditionsbuchNr, Buchungsjahr) - LOAD(SpeditionsbuchNr, Buchungsjahr) + End Sub @@ -108,7 +106,7 @@ Public Class cRechnungsnummern Dim RG_NR As New VERAG_PROG_ALLGEMEIN.cRechnungsnummern(SpeditionsbuchNr, Buchungsjahr) aktuelleRechnungsnummer = RG_NR.LfdRechnungsNr ' --> Die in der DB gespeicherte RgNr wird verwendet CHECK_RGNR_NEW = RG_NR.LfdRechnungsNr ' --> Die in der DB gespeicherte RgNr wird verwendet - RG_NR.INCREASE_RGNR() ' ..... und gelcih wieder hcoh zählen + 'RG_NR.INCREASE_RGNR() ' ..... und gelcih wieder hcoh zählen System.Threading.Thread.Sleep(50) ' nur, um abzuwarten falls parallel eine Nr vergeben wird End While @@ -162,6 +160,42 @@ Public Class cRechnungsnummern ' Return Nothing End Sub + Public Sub LOADANDUPDATE(ByVal SpeditionsbuchNr As String, ByVal Buchungsjahr As String, ByRef LfdRechnungsNr As Integer, ByVal VonRechnungsNr As String, ByVal BisRechnungsNr As String) + Try + + Using conn As SqlConnection = cSqlDb.GetNewOpenConnectionFMZOLL() + Using cmd As New SqlCommand( + "BEGIN TRAN IF EXISTS (SELECT * FROM Rechnungsnummern WITH(updlock,serializable) WHERE [SpeditionsbuchNr]=@SpeditionsbuchNr AND Buchungsjahr=@Buchungsjahr) + BEGIN + UPDATE dbo.Rechnungsnummern SET LfdRechnungsNr= (SELECT [LfdRechnungsNr] as newNr FROM dbo.Rechnungsnummern WHERE [SpeditionsbuchNr]=@Speditionsbuchnr AND Buchungsjahr=@Buchungsjahr) + 1 WHERE [SpeditionsbuchNr]=@Speditionsbuchnr AND Buchungsjahr=@Buchungsjahr + SELECT [LfdRechnungsNr] FROM dbo.Rechnungsnummern WHERE [SpeditionsbuchNr]=@Speditionsbuchnr AND Buchungsjahr=@Buchungsjahr + END; + else + BEGIN + INSERT INTO [Rechnungsnummern](SpeditionsbuchNr,[Buchungsjahr],[VonRechnungsNr],[BisRechnungsNr],[LfdRechnungsNr]) + OUTPUT @LfdRechnungsNr AS [LfdRechnungsNr] + VALUES (@SpeditionsbuchNr, @Buchungsjahr,@VonRechnungsNr,@BisRechnungsNr,@LfdRechnungsNr) + END + COMMIT TRAN", conn) + cmd.Parameters.AddWithValue("@SpeditionsbuchNr", SpeditionsbuchNr) + cmd.Parameters.AddWithValue("@Buchungsjahr", Buchungsjahr) + cmd.Parameters.AddWithValue("@LfdRechnungsNr", LfdRechnungsNr) + cmd.Parameters.AddWithValue("@VonRechnungsNr", VonRechnungsNr) + cmd.Parameters.AddWithValue("@BisRechnungsNr", BisRechnungsNr) + + Dim dr = cmd.ExecuteScalar() + + LfdRechnungsNr = dr + + End Using + End Using + + + Catch ex As Exception + MsgBox("Fehler in der Funktion '" & System.Reflection.MethodInfo.GetCurrentMethod.Name & "'" & vbNewLine & vbNewLine & ex.Message & vbNewLine & vbNewLine & ex.StackTrace) + End Try + ' Return Nothing + End Sub Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.MyListItem2) Dim list As New List(Of VERAG_PROG_ALLGEMEIN.MyListItem2) diff --git a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cCreditSafeAPI.vb b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cCreditSafeAPI.vb index 8c6f85b9..96405e15 100644 --- a/VERAG_PROG_ALLGEMEIN/Schnittstellen/cCreditSafeAPI.vb +++ b/VERAG_PROG_ALLGEMEIN/Schnittstellen/cCreditSafeAPI.vb @@ -124,7 +124,7 @@ Public Class cCreditSafeAPI Return failureDesc Else If (rest.ResponseStatusCode <> 200) Then - For i = 0 To 4 'Versuche das PDF 5x abzufragen (funktioniert ab und zu nicht). + For i = 0 To 15 'Versuche das PDF 16x abzufragen (funktioniert ab und zu nicht). responseJson = rest.FullRequestNoBodyBd(method, url, pdfData) If rest.ResponseStatusCode = 200 Then Exit For Thread.Sleep(500) @@ -293,9 +293,12 @@ Public Class cCreditSafeAPI 'Abfragen für DE benötigen einen Reason-Code myUrl &= "?customData=de_reason_code::3" myUrl &= "&?language=DE" - Else + ElseIf company.country = "AT" Then myUrl &= "?language=DE" + Else + myUrl &= "?language=EN" + End If Dim acceptContentType = "application/json" @@ -465,7 +468,16 @@ Public Class cCreditSafeAPI Dim failureDesc As String = "" Dim jsonRespString = SendGetRequestWithAuthHeader(myUrl, Nothing, acceptContentType, "GET", token, failureDesc) - If failureDesc <> "" Then Return Nothing + If failureDesc <> "" Then + Dim jsonFailure As New Chilkat.JsonObject + Dim success As Boolean = jsonFailure.Load(jsonRespString) + If (success <> True) Then + failure = jsonFailure.LastErrorText + Return Nothing + End If + failure = jsonFailure.StringOf("details") + Return Nothing + End If If jsonRespString IsNot Nothing Then Dim success = pdfData2.AppendEncoded(jsonRespString, "base64") diff --git a/VERAG_PROG_ALLGEMEIN/cSicherheiten.vb b/VERAG_PROG_ALLGEMEIN/cSicherheiten.vb index 98c9de7b..3e91ef57 100644 --- a/VERAG_PROG_ALLGEMEIN/cSicherheiten.vb +++ b/VERAG_PROG_ALLGEMEIN/cSicherheiten.vb @@ -23,8 +23,8 @@ Public Class cSicherheiten Property gs_warenort As String Property gs_zollsatz As Object Property gs_avisoId As Integer - Property gs_isRundungsdiff As Boolean + Property gs_ReferenzAenderung As Boolean Public hasEntry = False @@ -68,6 +68,7 @@ Public Class cSicherheiten list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_zollsatz", gs_zollsatz)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_avisoId", gs_avisoId)) list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_isRundungsdiff", gs_isRundungsdiff)) + list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("gs_ReferenzAenderung", gs_ReferenzAenderung)) Return list End Function