Kundebeabeit, MDMDatenverarb., Fakt, Syska-Einarbeitung, Offerten, etc.

This commit is contained in:
2025-08-08 10:47:22 +02:00
parent 58fb8e2cea
commit 59f19c2f9f
11 changed files with 448 additions and 201 deletions

View File

@@ -225,7 +225,7 @@ Public Class cOfferte
End Function
Function RESET_STANDARTOFFERTEN(Sachbearbeiter) As Boolean
Function RESET_STANDARTOFFERTEN(Sachbearbeiter As String, Optional Sprache As String = "DE") As Boolean
'Zuserst alle OffertenPos von dem Offert löschen
If SQL.doSQL("DELETE FROM [Offertenpositionen] WHERE KundenNr=" & Me.KundenNr & " and OffertenNr=" & Me.OffertenNr, "FMZOLL") Then
'jetzt die Standartofferten einfügen
@@ -233,12 +233,28 @@ Public Class cOfferte
Dim P As New cOffertPosition()
Dim Leistung As New cLeistungen(r("LeistungsNr"))
P.KundenNr = Me.KundenNr
P.OffertenNr = Me.OffertenNr
P.LeistungsNr = r("LeistungsNr")
P.LeistungsBez = r("LeistungsBez")
Dim leistBez As String = ""
Select Case Sprache
Case "EN" : leistBez = IIf(Not IsDBNull(r("LeistungsBez_EN")), r("LeistungsBez_EN"), "")
Case "RO" : leistBez = IIf(Not IsDBNull(r("LeistungsBez_RO")), r("LeistungsBez_RO"), "")
Case "TR" : leistBez = IIf(Not IsDBNull(r("LeistungsBez_TR")), r("LeistungsBez_TR"), "")
Case Else
P.LeistungsBez = r("LeistungsBez")
End Select
If leistBez.Length > 30 Then
P.LeistungsBez = leistBez.Substring(0, 30)
Else
P.LeistungsBez = leistBez
End If
If IsDBNull(P.LeistungsBez) OrElse P.LeistungsBez = "" Then P.LeistungsBez = r("LeistungsBez")
P.BerechnungsartNr = Leistung.BerechnungsartNr
P.Preis = r("Preis")
P.Anzahl = r("Anzahl")
@@ -253,6 +269,23 @@ Public Class cOfferte
'P.Preisänderung = XXXXXXXXX
'P.PreisänderungProzent = XXXXXXXXX
'P.PreisAlt = XXXXXXXXX
Dim LandISO As String = ""
Select Case P.OffertenNr
Case 31, 15, 14
If (P.LeistungsNr = 124 Or P.LeistungsNr = 125 Or P.LeistungsNr = 126) Then
LandISO = P.LeistungsBez.ToString.Substring(P.LeistungsBez.ToString.Length - 2, 2)
End If
End Select
If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then
P.Land = LandISO
End If
If Not P.INSERT() Then
Return False
End If
@@ -262,9 +295,9 @@ Public Class cOfferte
End If
Return True
End Function
Public Function RESET_STANDARTOFFERTEN_FIRMA(Sachbearbeiter, Firma) As Boolean
Public Function RESET_STANDARTOFFERTEN_FIRMA(Sachbearbeiter As String, Firma As String, Optional Sprache As String = "DE") As Boolean
If Firma = "" Or Firma = "VERAG" Then
Return RESET_STANDARTOFFERTEN(Sachbearbeiter)
Return RESET_STANDARTOFFERTEN(Sachbearbeiter, Sprache)
Else
'Zuserst alle OffertenPos von dem Offert löschen
@@ -279,7 +312,25 @@ Public Class cOfferte
P.OffertenNr = Me.OffertenNr
P.LeistungsNr = r("LeistungsNr")
P.LeistungsBez = r("LeistungsBez")
Dim leistBez As String = ""
Select Case Sprache
Case "EN" : leistBez = r("LeistungsBez_EN")
Case "RO" : leistBez = r("LeistungsBez_RO")
Case "TR" : leistBez = r("LeistungsBez_TR")
Case Else
P.LeistungsBez = r("LeistungsBez")
End Select
If leistBez.Length > 30 Then
P.LeistungsBez = leistBez.Substring(0, 30)
Else
P.LeistungsBez = leistBez
End If
If IsDBNull(P.LeistungsBez) OrElse P.LeistungsBez = "" Then P.LeistungsBez = r("LeistungsBez")
P.BerechnungsartNr = Leistung.BerechnungsartNr
P.Preis = r("Preis")
P.Anzahl = r("Anzahl")
@@ -294,6 +345,20 @@ Public Class cOfferte
'P.Preisänderung = XXXXXXXXX
'P.PreisänderungProzent = XXXXXXXXX
'P.PreisAlt = XXXXXXXXX
Dim LandISO As String = ""
Select Case P.OffertenNr
Case 31, 15, 14
LandISO = P.LeistungsBez.ToString.Substring(P.LeistungsBez.ToString.Length - 2, 2)
End Select
If LandISO <> "" AndAlso LandISO.All(Function(c) Char.IsUpper(c)) Then
P.Land = LandISO
End If
If Not P.INSERT() Then
Return False
End If
@@ -328,6 +393,10 @@ Public Class cOffertPosition
Property PreisAlt As Object = Nothing
Property BerechnungsartPosInkludiert As Object = Nothing
Property SSMA_TimeStamp As Object = Nothing
Property Land As Object = Nothing
Property VZ As Object = Nothing
Property RMC As Object = Nothing
Property Fremd As Object = Nothing
Dim SQL As New SQL
@@ -355,6 +424,11 @@ Public Class cOffertPosition
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PreisänderungProzent", PreisänderungProzent))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("PreisAlt", PreisAlt))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartPosInkludiert", BerechnungsartPosInkludiert))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Land", Land))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VZ", VZ))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("RMC", RMC))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Fremd", Fremd))
Return list
End Function
@@ -735,3 +809,143 @@ Public Class cOffertPositionArchiv
End Class
Public Class cStandardofferten
Property OffertenNr As Integer
Property Währungscode As Object = Nothing
Property LeistungsNr As Integer
Property LeistungsBez As Object = Nothing
Property Preis As Object = Nothing
Property Anzahl As Object = Nothing
Property BGebLeistungsNr As Object = Nothing
Property BGebProzent As Object = Nothing
Property BGebMinBetrag As Object = Nothing
Property BerechnungsartPosInkludiert As Object = Nothing
Property BerechnungsartNr As Object = Nothing
Property LeistungsBez_EN As Object = Nothing
Property LeistungsBez_RO As Object = Nothing
Property LeistungsBez_TR As Object = Nothing
Public hasEntry = False
Dim SQL As New SQL
Sub New(OffertenNr, Währungscode, LeistungsNr, LeistungsBez)
Me.OffertenNr = OffertenNr
Me.Währungscode = Währungscode
Me.LeistungsNr = LeistungsNr
Me.LeistungsBez = LeistungsBez
LOAD()
End Sub
Function getParameterList() As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
Dim list As New List(Of VERAG_PROG_ALLGEMEIN.SQLVariable)
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("OffertenNr", OffertenNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Währungscode", Währungscode))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsNr", LeistungsNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez", LeistungsBez))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Preis", Preis))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Anzahl", Anzahl))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebLeistungsNr", BGebLeistungsNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebProzent", BGebProzent))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BGebMinBetrag", BGebMinBetrag))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartPosInkludiert", BerechnungsartPosInkludiert))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("BerechnungsartNr", BerechnungsartNr))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez_EN", LeistungsBez_EN))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez_RO", LeistungsBez_RO))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("LeistungsBez_TR", LeistungsBez_TR))
Return list
End Function
Public Function SAVE() As Boolean
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim sqlstr = " BEGIN TRAN IF EXISTS(SELECT * FROM Standardofferten WHERE OffertenNr=@OffertenNr AND Währungscode=@Währungscode AND LeistungsNr=@LeistungsNr AND LeistungsBez=@LeistungsBez) " &
" BEGIN " & getUpdateCmd() & " END " &
" Else " &
" BEGIN " & getInsertCmd() & " END " &
" commit tran "
Return SQL.doSQLVarList(sqlstr, "FMZOLL", , list)
End Function
Public Sub LOAD()
Try
hasEntry = False
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM Standardofferten WHERE OffertenNr=@OffertenNr AND Währungscode=@Währungscode AND LeistungsNr=@LeistungsNr AND LeistungsBez=@LeistungsBez ", conn)
cmd.Parameters.AddWithValue("@OffertenNr", OffertenNr)
cmd.Parameters.AddWithValue("@Währungscode", Währungscode)
cmd.Parameters.AddWithValue("@LeistungsNr", LeistungsNr)
cmd.Parameters.AddWithValue("@LeistungsBez", LeistungsBez)
Dim dr = cmd.ExecuteReader()
If dr.Read Then
For Each li In getParameterList()
Dim propInfo As PropertyInfo = Me.GetType.GetProperty(li.Scalarvariable)
If dr.Item(li.Text) Is DBNull.Value Then
propInfo.SetValue(Me, Nothing)
Else
propInfo.SetValue(Me, dr.Item(li.Text))
End If
Next
hasEntry = True
End If
dr.Close()
End Using
End Using
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
End Sub
Public Function getUpdateCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "] = @" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
Return (" UPDATE [Standardofferten] SET " & str & " WHERE OffertenNr=@OffertenNr AND Währungscode=@Währungscode AND LeistungsNr=@LeistungsNr AND LeistungsBez=@LeistungsBez ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
Public Function getInsertCmd() As String
Try
Dim list As List(Of VERAG_PROG_ALLGEMEIN.SQLVariable) = getParameterList()
Dim str As String = ""
Dim values As String = ""
For Each i In list
If Not i.isPrimaryParam Then
str &= "[" & i.Text & "],"
values &= "@" & i.Scalarvariable & "," '.Replace("-", "").Replace(" ", "") & ","
End If
Next
str = str.Substring(0, str.Length - 1) 'wg. ','
values = values.Substring(0, values.Length - 1) 'wg. ','
Return (" INSERT INTO Standardofferten (" & str & ") VALUES(" & values & ") ")
Catch ex As Exception
VERAG_PROG_ALLGEMEIN.cErrorHandler.ERR(ex.Message, ex.StackTrace, System.Reflection.MethodInfo.GetCurrentMethod.Name)
End Try
Return ""
End Function
End Class

View File

@@ -371,8 +371,8 @@ Public Class cRechnungsausgang
Public Sub LOAD(FilialeNr As Integer, AbfertigungsNr As Integer, Optional loadPos As Boolean = True)
Try
Using conn As SqlConnection = SQL.GetNewOpenConnectionFMZOLL()
Using cmd As New SqlCommand("SELECT * FROM Rechnungsausgang WHERE FilialeNr=@FilialeNr AND AbfertigungsNr=@AbfertigungsNr ", conn)
cmd.Parameters.AddWithValue("@FilialeNr", FilialeNr)
Using cmd As New SqlCommand("SELECT * FROM Rechnungsausgang WHERE FilialenNr=@FilialenNr AND AbfertigungsNr=@AbfertigungsNr ", conn)
cmd.Parameters.AddWithValue("@FilialenNr", FilialeNr)
cmd.Parameters.AddWithValue("@AbfertigungsNr", AbfertigungsNr)
Dim dr = cmd.ExecuteReader()
If dr.Read Then

View File

@@ -34,6 +34,7 @@ Public Class cTrdInvoice
Property Nettozahlungsziel As Object = Nothing
Property Firma_ID As Object = Nothing
Property UStVAn_ID As Object = Nothing
Property VZ As Integer
Property hasEntry As Boolean = False
@@ -89,6 +90,7 @@ Public Class cTrdInvoice
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Nettozahlungsziel", Nettozahlungsziel))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Firma_ID", Firma_ID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("UStVAn_ID", UStVAn_ID))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VZ", VZ))
Return list
@@ -238,6 +240,7 @@ Public Class cTrdProduct
Property Belegdaten As Object = Nothing
Property Sachkonto As Object = Nothing
Property Buchungstext As Object = Nothing
Property VZBetrag As Object = Nothing
Dim SQL As New SQL
@@ -262,6 +265,7 @@ Public Class cTrdProduct
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Belegdaten", Belegdaten))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Sachkonto", Sachkonto))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("Buchungstext", Buchungstext))
list.Add(New VERAG_PROG_ALLGEMEIN.SQLVariable("VZBetrag", VZBetrag))
Return list
End Function
@@ -447,6 +451,7 @@ Class TrdInvoice_FUNCTIONS
TRD_INVOICE.SteuerfreierBetragLokal = 0
TRD_INVOICE.SteuerbetragLokal = 0
TRD_INVOICE.RechnungsbetragLokal = 0
TRD_INVOICE.RechnungsbetragLokal = 0
WährungsdifferenzSteuerpflichtigerBetrag = TRD_INVOICE.SteuerpflichtigerBetragLokal
WährungsdifferenzSteuerfreierBetrag = TRD_INVOICE.SteuerfreierBetragLokal
@@ -475,10 +480,11 @@ Class TrdInvoice_FUNCTIONS
TRD_INVOICE.Abgleich_op_debitor = 0
TRD_INVOICE.Nettozahlungsziel = ROW("RK_Nettozahlungsziel")
TRD_INVOICE.Firma_ID = ROW("RK_Firma_ID")
TRD_INVOICE.UStVAn_ID = Nothing
TRD_INVOICE.UStVAn_ID = ROW("AntragsID")
TRD_INVOICE.VZ = ROW("VZ")
If TRD_INVOICE.SAVE Then
If TrdinSchreibenProduct(TRD_INVOICE.Rechnungsdatum, ROW("RK_RechnungsNr"), TRD_INVOICE.Rechnungsnummer, RK_Währungscode, ROW("RK_RechnungsLandKz"), ROW("RK_Buchungstext"), TRD_INVOICE.Firma_ID, lngSatzzähler, WährungsdifferenzSteuerpflichtigerBetrag, WährungsdifferenzSteuerfreierBetrag, Buchungsjahr) Then
If TrdinSchreibenProduct(TRD_INVOICE.Rechnungsdatum, ROW("RK_RechnungsNr"), TRD_INVOICE.Rechnungsnummer, RK_Währungscode, ROW("RK_RechnungsLandKz"), ROW("RK_Buchungstext"), TRD_INVOICE.Firma_ID, lngSatzzähler, WährungsdifferenzSteuerpflichtigerBetrag, WährungsdifferenzSteuerfreierBetrag, Buchungsjahr, ROW("VZ")) Then
'UPDATE rechnugnsausgang
Dim firmaTmpsql = If(Firma > 0, " AND Firma_ID= '" & Firma & "' ", "")
Dim buchungsjahrTmpsql = If(Buchungsjahr > 0, " AND Buchungsjahr= '" & Buchungsjahr & "' ", "")
@@ -504,7 +510,7 @@ Class TrdInvoice_FUNCTIONS
Shared Function TrdinSchreibenProduct(RechnungsDatum, RK_RechnungsNr, TRD_RechnungsNr, RK_Währungscode, RK_RechnungsLandKz, RK_Buchungstext, RK_Firma_ID, ByRef lngSatzzähler, ByRef WährungsdifferenzSteuerpflichtigerBetrag, ByRef WährungsdifferenzSteuerfreierBetrag, Buchungsjahr) As Boolean
Shared Function TrdinSchreibenProduct(RechnungsDatum, RK_RechnungsNr, TRD_RechnungsNr, RK_Währungscode, RK_RechnungsLandKz, RK_Buchungstext, RK_Firma_ID, ByRef lngSatzzähler, ByRef WährungsdifferenzSteuerpflichtigerBetrag, ByRef WährungsdifferenzSteuerfreierBetrag, Buchungsjahr, isVZ) As Boolean
Try
Dim LOKALWÄHRUNG = "EUR"
@@ -555,6 +561,18 @@ Class TrdInvoice_FUNCTIONS
TRD_PRODUCT.Sachkonto = getSachkonto(RK_Firma_ID, ROW("RP_LeistungsNr"), RK_RechnungsLandKz, ROW("RP_Steuerpflichtig"), ROW("AufschubkontoNr"))
TRD_PRODUCT.Buchungstext = RK_Buchungstext
If isVZ > 0 Then
Select Case ROW("RP_LeistungsNr")
Case "124", "125", "126", "117", "118", "119"
TRD_PRODUCT.VZBetrag = TRD_PRODUCT.SteuerfreierBetragLokal
Case Else
TRD_PRODUCT.VZBetrag = 0
End Select
End If
TRD_PRODUCT.SAVE()
@@ -676,8 +694,8 @@ Class TrdInvoice_FUNCTIONS
Sum(RechnungsausgangPositionen.SteuerfreierBetrag) AS RK_SteuerfreierBetrag
, (Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag)*min(Rechnungsausgang.[Steuersatz %])*100)/100 AS RK_Steuerbetrag,
Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag)+Sum(RechnungsausgangPositionen.SteuerfreierBetrag)+((Sum(RechnungsausgangPositionen.SteuerpflichtigerBetrag)*min(Rechnungsausgang.[Steuersatz %])*100)/100) AS RK_Rechnungsbetrag,
Count(1) AS RK_Satzzähler
FROM Rechnungsausgang INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID
Count(1) AS RK_Satzzähler, max(CONVERT(int,isnull(tblUStVPositionen.UStVPo_VZ,0))) as VZ, MAX(isnull(tblUStVPositionen.UStVAn_ID,0)) as AntragsID
FROM Rechnungsausgang INNER JOIN RechnungsausgangPositionen ON Rechnungsausgang.RK_ID = RechnungsausgangPositionen.RK_ID LEFT JOIN tblUStVPositionen on Rechnungsausgang.RK_ID = UStVPo_VZ_RKID
WHERE (((Rechnungsausgang.RechnungsDatum) Is Not Null) AND ((Rechnungsausgang.RechnungsNr) Is Not Null) AND ((Rechnungsausgang.Trdin)=0)) " & If(Firma > 0, " and Firma_ID=" & Firma, "") & If(Buchungsjahr > 0, " and Buchungsjahr=" & Buchungsjahr, "") & "
GROUP BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr
ORDER BY Rechnungsausgang.RechnungsDatum, Rechnungsausgang.RechnungsNr, min(Rechnungsausgang.Abfertigungsdatum), min(Rechnungsausgang.FilialenNr), min(Rechnungsausgang.AbfertigungsNr), min(Rechnungsausgang.UnterNr);"