OrigInvoice cRKSV, Kundebarb, etc.

This commit is contained in:
2025-11-18 17:06:31 +01:00
parent 01d623ec2e
commit a572b1f048
3 changed files with 306 additions and 309 deletions

View File

@@ -2520,6 +2520,15 @@ Public Class cRKSV
Dim jahr As Integer = Now.Year
Dim periode As Integer = Now.Month
Dim rel_periode As Integer = Now.Month - 1
If rel_periode <= 0 Then
rel_periode += 12
End If
If rel_periode > periode Then
jahr -= 1
End If
Dim betrag As Decimal = SumBelegPositionen(beleg)
@@ -2530,7 +2539,7 @@ Public Class cRKSV
Dim dtKonten As DataTable = BuildVerbuchungskonten(KBEntryGB_list, beleg, kassenkonto, forderungskonto, bestandskonto)
' 5) build booking text (and trim to 48 chars with remainder stored separately)
Dim buchungstextFull As String = (If(betrag < 0, "STORNO ", "")) & If(typ = "AUSZAHLUNG", "KA", "KE") & "_" & SafeString(beleg.AbfertigungsNr) & "_" & SafeString(beleg.LKW_Kennzeichen) & "_" & SafeString(beleg.Frachtführer) & "_" & SafeString(beleg.Fahrer) & "_" & SafeString(beleg.Passnummer)
Dim buchungstextFull As String = (If(betrag < 0, "STORNO ", "")) & SafeString(beleg.FilialenNr) & "/" & SafeString(beleg.AbfertigungsNr) & "_" & SafeString(beleg.LKW_Kennzeichen) & "_" & SafeString(beleg.Frachtführer) & "_" & SafeString(beleg.Fahrer) & "_" & SafeString(beleg.Passnummer)
Dim buchungstext As String
Dim buchungstextBemerkung As String
SplitBuchungstext(buchungstextFull, 48, buchungstext, buchungstextBemerkung)
@@ -2571,21 +2580,21 @@ Public Class cRKSV
zsZeilenNr += 1
Dim buchungsbetrag1 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, kassenkonto, "Soll", buchungsbetrag1)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag1, Double), "EUR", zsZeilenNr, "KO", kassenkonto, beleg.KundenNr, "S", BelegNrUID)
' 2) Debitor (Haben)
zsZeilenNr += 1
Dim buchungsbetrag2 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, beleg.KundenNr, "Haben", buchungsbetrag2)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag2, Double), "EUR", zsZeilenNr, "DE", beleg.KundenNr, kassenkonto, "H", BelegNrUID)
' 3) Forderung (Haben)
zsZeilenNr += 1
Dim buchungsbetrag3 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, forderungskonto, "Haben", buchungsbetrag3)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag3, Double), "EUR", zsZeilenNr, "DB", forderungskonto, kassenkonto, "H", BelegNrUID)
End If
ElseIf typ = "AUSZAHLUNG" Then
@@ -2595,35 +2604,35 @@ Public Class cRKSV
zsZeilenNr += 1
Dim buchungsbetrag1 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, bestandskonto, "Soll", buchungsbetrag1)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag1, Double), "EUR", zsZeilenNr, "KO", bestandskonto, 0, "S", BelegNrUID)
' 2) Kassa (Haben) = +betrag (cash out)
zsZeilenNr += 1
Dim buchungsbetrag2 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, kassenkonto, "Haben", buchungsbetrag2)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag2, Double), "EUR", zsZeilenNr, "KO", kassenkonto, 0, "H", BelegNrUID)
' 3) Debitor (Soll)
zsZeilenNr += 1
Dim buchungsbetrag3 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, beleg.KundenNr, "Soll", buchungsbetrag3)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag3, Double), "EUR", zsZeilenNr, "DE", beleg.KundenNr, 0, "S", BelegNrUID)
' 4) Forderung (Soll)
zsZeilenNr += 1
Dim buchungsbetrag4 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, forderungskonto, "Soll", buchungsbetrag4)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag4, Double), "EUR", zsZeilenNr, "DB", forderungskonto, 0, "S", BelegNrUID)
' 5) Bestandskonto (Haben)
zsZeilenNr += 1
Dim buchungsbetrag5 As Decimal = betrag
UpdateDtKontenAmount(dtKonten, bestandskonto, "Haben", buchungsbetrag5)
InsertBelegszeile_new(sql, mandant, jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
InsertBelegszeile_new(sql, mandant, jahr, periode, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), SafeString(beleg.Belegart),
buchungstext, CType(buchungsbetrag5, Double), "EUR", zsZeilenNr, "KO", bestandskonto, 0, "H", BelegNrUID)
End If
End If
@@ -2650,9 +2659,7 @@ Public Class cRKSV
Next
' 10) Offene Posten (nur einmal!)
Dim OP_KZ As String = "g"
Select Case typ
Case "AUSZAHLUNG" : OP_KZ = "r"
Case "EINZAHLUNG" : OP_KZ = "g"
@@ -2660,10 +2667,15 @@ Public Class cRKSV
createOP_new(mandant, CDbl(betrag), SafeString(beleg.BelegNr), beleg.BelegDat.ToShortDateString, SafeString(beleg.BelegNr), buchungstext, CDbl(betrag), "EUR", beleg.KundenNr, forderungskonto, i_beleg_refid, OP_KZ, c_sprache, c_zahlziel, CStr(dec_skonto), beleg.BelegDat.ToShortDateString, beleg.BelegDat.ToShortDateString, c_ustidnr, BelegNrUID)
createOPVorgang_new(mandant, typ, CDbl(betrag), jahr, periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, buchungstext, beleg.KundenNr, CDbl(opvorgangsbetrag), i_beleg_refid, Now.ToString(), 0, VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME)
createOPVorgang_new(mandant, typ, CDbl(betrag), jahr, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, buchungstext, beleg.KundenNr, CDbl(opvorgangsbetrag), i_beleg_refid, Now.ToString(), kassenkonto, VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME, 1, OP_KZ)
If typ = "AUSZAHLUNG" Then 'die zweite op_vorgang_deb Zeile insertieren
createOPVorgang_new(mandant, typ, CDbl(betrag), jahr, rel_periode, SafeIntToSql(i_beleg_refid), beleg.BelegDat.ToShortDateString, buchungstext, beleg.KundenNr, CDbl(opvorgangsbetrag), i_beleg_refid, Now.ToString(), kassenkonto, VERAG_PROG_ALLGEMEIN.cAllgemein.USRNAME, 5)
End If
' 11) single check if gebucht
Dim gebucht = checkifgebucht_new(mandant, SafeString(beleg.BelegNr), buchungstext)
Dim gebucht = checkifgebucht_new(mandant, SafeString(BelegNrUID), buchungstext)
If gebucht Then
' logging instead of MsgBox in production
' MsgBox("GEBUCHT!")
@@ -2734,7 +2746,11 @@ Public Class cRKSV
Private Shared Function BuildProtokollId(stapelRefId As Integer, lfd As Integer, jahr As Integer, periode As Integer) As String
Dim now As DateTime = DateTime.Now
Return $"{stapelRefId:0000}-{lfd:0000}-{now:yyyy-MM-dd HH:mm:ss}"
Dim returnstring As String = ""
If stapelRefId <> 0 Then returnstring &= "${stapelRefId:0000}-"
If lfd > 1 Then returnstring &= "${lfd:0000}-"
returnstring &= now.ToString("dd-MM-yyyy HH:mm:ss")
Return returnstring
End Function
Private Shared Sub UpdateDtKontenAmount(dt As DataTable, konto As Integer, field As String, amount As Decimal)
@@ -2766,25 +2782,45 @@ Public Class cRKSV
sql.doSQL(sqlStr, "FIBU")
End Sub
Private Shared Sub InsertBelegszeile_new(sql As VERAG_PROG_ALLGEMEIN.SQL, mandant As Integer, Jahr As Integer, periode As Integer, beleg_ref_id As String, datumKurz As String, BelegNr As String, BelegArt As String, Buchungstext As String, Buchungsbetrag As Double, Waehrung As String, ZeilenNr As Integer, ckennsoll2 As String, Sollkonto2 As Integer, Habenkonto2 As Integer, SollhabenKZ As String, c_urbelegid As String)
Private Shared Sub InsertBelegszeile_new(sql As VERAG_PROG_ALLGEMEIN.SQL, mandant As Integer, Jahr As Integer, periode As Integer, rel_periode As Integer, beleg_ref_id As String, datumKurz As String, BelegNr As String, BelegArt As String, Buchungstext As String, Buchungsbetrag As Double, Waehrung As String, ZeilenNr As Integer, ckennsoll2 As String, Sollkonto2 As Integer, Habenkonto2 As Integer, SollhabenKZ As String, c_urbelegid As String)
Dim safeBT = SafeStringSql(Buchungstext)
Dim sqlStr = "INSERT INTO [FIBU2].dbo.fibu_belegzeile (i_firm_refid, si_jahr, si_periode, si_rel_periode, i_beleg_refid, i_zeilen_refid, c_kennung, i_konto, c_sollhabenkz, i_steuer_refid, i_gegenkonto, dec_betrag, c_waehrung, dec_fremdbetrag, eur_betrag, d_beleg, d_gebucht, c_urbelegid, si_belegart, c_buchtext, i_buchungskreis) " &
"VALUES(" & SafeIntToSql(mandant) & "," & Jahr & "," & periode & "," & periode & "," & beleg_ref_id & "," & ZeilenNr & ",'" & SafeStringSql(ckennsoll2) & "'," & Sollkonto2 & ",'" & SafeStringSql(SollhabenKZ) & "',0," & Habenkonto2 & "," & Buchungsbetrag.ToString().Replace(",", ".") & ",'" & SafeStringSql(Waehrung) & "'," & Buchungsbetrag.ToString().Replace(",", ".") & "," & Buchungsbetrag.ToString().Replace(",", ".") & ",'" & SafeStringSql(datumKurz) & "','" & SafeStringSql(datumKurz) & "','" & SafeStringSql(c_urbelegid) & "','" & SafeStringSql(BelegArt) & "','" & safeBT & "',1);"
"VALUES(" & SafeIntToSql(mandant) & "," & Jahr & "," & periode & "," & rel_periode & "," & beleg_ref_id & "," & ZeilenNr & ",'" & SafeStringSql(ckennsoll2) & "'," & Sollkonto2 & ",'" & SafeStringSql(SollhabenKZ) & "',0," & Habenkonto2 & "," & Buchungsbetrag.ToString().Replace(",", ".") & ",'" & SafeStringSql(Waehrung) & "'," & Buchungsbetrag.ToString().Replace(",", ".") & "," & Buchungsbetrag.ToString().Replace(",", ".") & ",'" & SafeStringSql(datumKurz) & "','" & SafeStringSql(datumKurz) & "','" & SafeStringSql(c_urbelegid) & "','" & SafeStringSql(BelegArt) & "','" & safeBT & "',1);"
sql.doSQL(sqlStr, "FIBU")
End Sub
Private Shared Sub createOP_new(mandant As Integer, Betrag As Double, BelegNrText As String, datumKurz As String, BelegNr As String, Buchungstext As String, Buchungsbetrag As Double, Waehrung As String, Personenkonto As Integer, Forderungskonto As Integer, i_op_refid As String, c_op_Typ As Char, Sprache As String, Zahlungsziel As String, Skonto As String, Skontodatum As String, Nettodatum As String, c_ustidnr As String, c_urbelegid As String)
'Rechnung Betrag Positiv, Gutschrift Betrag negativ!typ
Dim vorzeichen As Integer = 1
Select Case c_op_Typ
Case "r" : vorzeichen = 1
Case "g" : vorzeichen = -1
End Select
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL()
Dim betragStr = (Betrag * -1).ToString().Replace(",", ".")
Dim betragStr = (Betrag * vorzeichen).ToString().Replace(",", ".")
Dim sqlInsert = "INSERT INTO [FIBU2].dbo.op_debitor (i_firm_refid, i_op_refid, c_urbelegid, i_personenkonto, i_forderungskonto, c_rechnungid, d_rechnung, d_valuta, c_typ, c_sprache, c_waehrung, dec_eigenbrutto, dec_fremdbrutto, eur_bruttobetrag, dec_skf_eigen, dec_skf_fremd, eur_skontierfaehig, dec_eigenzahlung, dec_fremdzahlung, eur_zahlung, c_zahlziel, dec_skonto, d_skonto, dec_skonto2, d_netto, si_mahnstufe, i_mahnlauf_refid, si_exportiert, i_stapel_refid, i_stapel_lfdnr, dec_stpl_ew_betrag, dec_stpl_ew_skonto, dec_stpl_fw_betrag, dec_stpl_fw_skonto, eur_stpl_betrag, eur_stpl_skonto, i_clearing, i_eigene_bank, si_bankeinzug, c_bemerkung, lc_anmerkungen, i_zessionstext, i_buchungskreis, c_ustidnr) " &
"VALUES(" & SafeIntToSql(mandant) & "," & i_op_refid & ",'" & SafeStringSql(c_urbelegid) & "'," & Personenkonto & "," & Forderungskonto & "," & SafeStringSql(BelegNrText) & ",'" & SafeStringSql(datumKurz) & "','" & SafeStringSql(datumKurz) & "','" & SafeStringSql(CStr(c_op_Typ)) & "','" & SafeStringSql(Sprache) & "','" & SafeStringSql(Waehrung) & "'," & betragStr & "," & betragStr & "," & betragStr & "," & betragStr & "," & betragStr & "," & betragStr & ",0,0,0,'" & SafeStringSql(Zahlungsziel) & "','" & SafeStringSql(Skonto) & "','" & SafeStringSql(Skontodatum) & "',0,'" & SafeStringSql(Nettodatum) & "',0,0,0,0,0,0,0,0,0,0,0,0,0,0,'" & SafeStringSql(Buchungstext) & "','" & SafeStringSql(Buchungstext) & "',0,1,'" & SafeStringSql(c_ustidnr) & "');"
"VALUES(" & SafeIntToSql(mandant) & "," & i_op_refid & ",'" & SafeStringSql(c_urbelegid) & "'," & Personenkonto & "," & Forderungskonto & ",'" & SafeStringSql(c_urbelegid) & "','" & SafeStringSql(datumKurz) & "','" & SafeStringSql(datumKurz) & "','" & SafeStringSql(CStr(c_op_Typ)) & "','" & SafeStringSql(Sprache) & "','" & SafeStringSql(Waehrung) & "'," & betragStr & "," & betragStr & "," & betragStr & "," & betragStr & "," & betragStr & "," & betragStr & ",0,0,0,'" & SafeStringSql(Zahlungsziel) & "','" & SafeStringSql(Skonto) & "','" & SafeStringSql(Skontodatum) & "',0,'" & SafeStringSql(Nettodatum) & "',0,0,0,0,0,0,0,0,0,0,0,0,0,0,'" & SafeStringSql(Buchungstext) & "','" & SafeStringSql(Buchungstext) & "',0,1,'" & SafeStringSql(c_ustidnr) & "');"
sql.doSQL(sqlInsert, "FIBU")
End Sub
Private Shared Sub createOPVorgang_new(mandant As Integer, TYP As String, Betrag As Double, Jahr As Integer, periode As Integer, beleg_ref_id As String, datumKurz As String, Buchungstext As String, Personenkonto As Integer, opvorgangsbetrag As Double, i_op_refid As String, dt_creation As String, Sachkonto As Integer, Benutzer As String)
Private Shared Sub createOPVorgang_new(mandant As Integer, TYP As String, Betrag As Double, Jahr As Integer, rel_periode As Integer, beleg_ref_id As String, datumKurz As String, Buchungstext As String, Personenkonto As Integer, opvorgangsbetrag As Double, i_op_refid As String, dt_creation As String, Sachkonto As Integer, Benutzer As String, si_zeilen_refid As Integer, Optional c_op_Typ As Char = "")
'Rechnung Betrag Positiv, Gutschrift Betrag negativ!
Dim vorzeichen As Integer = 1
Select Case c_op_Typ
Case "r" : vorzeichen = 1
Case "g" : vorzeichen = -1
End Select
opvorgangsbetrag = opvorgangsbetrag * vorzeichen
Dim sql As New VERAG_PROG_ALLGEMEIN.SQL()
Dim sqlInsert = "INSERT INTO [FIBU2].dbo.op_vorgang_deb (i_firm_refid, i_personenkonto, i_op_refid, i_beleg_refid, c_vorgang, d_beleg, si_rel_periode, si_jahr, i_steuer_refid, dec_steuerproz, i_nne_az_konto, dec_nettobetrag, dec_steuerbetrag, eur_nettobetrag, eur_steuerbetrag, dec_fremdbetrag, si_skontierfaehig, si_zeilen_refid, c_bemerkung, dt_datum, c_benutzer, i_eg_konto, i_auftrag_refid, dec_naf_steuerbetr, eur_naf_steuerbetr) " &
"VALUES(" & SafeIntToSql(mandant) & "," & Personenkonto & "," & i_op_refid & "," & beleg_ref_id & ",'P','" & SafeStringSql(datumKurz) & "'," & periode & "," & Jahr & ",0,0," & Sachkonto & "," & opvorgangsbetrag.ToString().Replace(",", ".") & ",0," & opvorgangsbetrag.ToString().Replace(",", ".") & ",0," & opvorgangsbetrag.ToString().Replace(",", ".") & ",1,1,'" & SafeStringSql(Buchungstext) & "','" & SafeStringSql(dt_creation) & "','" & SafeStringSql(Benutzer) & "',0,0,0,0);"
"VALUES(" & SafeIntToSql(mandant) & "," & Personenkonto & "," & i_op_refid & "," & beleg_ref_id & ",'P','" & SafeStringSql(datumKurz) & "'," & rel_periode & "," & Jahr & ",0,0," & Sachkonto & "," & opvorgangsbetrag.ToString().Replace(",", ".") & ",0," & opvorgangsbetrag.ToString().Replace(",", ".") & ",0," & opvorgangsbetrag.ToString().Replace(",", ".") & ",1," & si_zeilen_refid & ",'" & SafeStringSql(Buchungstext) & "','" & SafeStringSql(dt_creation) & "','" & SafeStringSql(Benutzer) & "',0,0,0,0);"
sql.doSQL(sqlInsert, "FIBU")
End Sub