top of page

Sage 100 Zahlungsvorschläge / Payment suggestions

(alle Versionen/all versions)

Montag, 19. Juni 2023

Deutsch

Situation/Hintergrund

Mögliche Ursachen

SQL Selektionlogik



Deutsch


Situation/Hintergrund

Bei "Lastschriften vorschlagen" kommen keine Daten, obwohl vermeintlich fällige Offene Posten vorliegen.


Bei "Lastschriften manuell vorschlagen" kommen, obwohl die OP eines Kontokorrent ausgewählt werden, Fehlermeldungen wie die folgenden:

OP kann in Kategorie 'Lastschrift' wegen unpassendem Betrag nicht vorgeschlagen werden. Verrechnung ebenfalls nicht möglich.

Mögliche Ursachen

Zahlungsvorschläge, z.B. Lastschrift über SEPA-Mandat, werden ausschließlich für Offene Posten generiert, für die folgende Kriterien gelten:


  • Kontokorrent (bzw. die Adresse) verfügt über eine gültige Bankverbindung und ggf. SEPA-Mandat.

  • Kontokorrent nimmt überhaupt am Zahlungsverkehr teil (siehe Grundlagen im Kontokorrent).

  • Im Offenen Posten (KHKOpHauptsatz) ist eine Inkassoart eingetragen.

  • Der Offene Posten wird durch eine Gesamtverrechnung z.B. mit Gutschriften oder Stornorechnungen nicht "aufgehoben", d.h. in Summe 0 oder negativ.

  • "Falsches" Fälligkeitsdatum bzw. Selektionsdatum im Selektionsdialog


SQL Selektionlogik

Sage führt bei der Erstellung von Lastschrift-Vorschlägen z.B. nachfolgende SQL-Anweisung als Grundselektion aus.

Exemplarisch für einen bestimmten Mandanten und einen Debitor.


⚠️Liefert diese SQL schon keine Daten, dann wird ein Offener Posten auch gar nicht erst bei den Zahlungsvorschlägen berücksichtigt!⚠️


⚠️In nachfolgenden Verarbeitungsschritten wird in dem zuständigen Sage Geschäftsprozess dann aber auch noch geprüft, ob sich durch Verrechnungen durch Gutschriften oder Stornorechnungen z.B. überhaupt fällige Zahlungsbeträge ergeben!⚠️

DECLARE @nManId SMALLINT
DECLARE @sKto VARCHAR(20)
DECLARE @dtFaelligkeitNetto DATETIME
DECLARE @dtFaelligkeitSkonto DATETIME

-- TODO: Parameter

SET @nManId = 99
SET @sKto = 'D189434'
SET @dtFaelligkeitNetto = { d '2023-07-04' }
SET @dtFaelligkeitSkonto = { d '2023-06-27' }

SELECT KHKOpHauptsatz.Mandant
 ,KHKOpHauptsatz.KtoArt
 ,KHKOpHauptsatz.KtoKo
 ,KHKOpHauptsatz.OpNr
 ,(KHKOpHauptsatz.SRechnung - KHKOpHauptsatz.SZahlung - KHKOpHauptsatz.SSkonto) AS SRest
 ,(KHKOpHauptsatz.SRechnung)
 ,KHKOpHauptsatz.OpDatum
 ,KHKOpHauptsatz.Faelligkeit
 ,KHKOpHauptsatz.SkontoFaelligkeit1
 ,KHKOpHauptsatz.SkontoFaelligkeit2
 ,KHKOpHauptsatz.Zahlungskond
 ,KHKOpHauptsatz.Inkassoart
 ,KHKOpHauptsatz.Nettobedingung
 ,KHKOpHauptsatz.Skontobedingung1
 ,KHKOpHauptsatz.Skontobedingung2
 ,KHKOpHauptsatz.Skontoprozent1
 ,KHKOpHauptsatz.Skontoprozent2
 ,KHKOpHauptsatz.Mahnstufe
 ,KHKOpHauptsatz.Vertreter
 ,KHKOpHauptsatz.Referenz
 ,KHKOpHauptsatz.Adresse
 ,KHKOpHauptsatz.Wkz
 ,KHKOpHauptsatz.Azv
 ,KHKOPHauptsatz.Journal
 ,KHKOPHauptsatz.MandatsNummer
 ,(KHKOpHauptsatz.SZahlung)
 ,(KHKOpHauptsatz.SSkonto)
 ,(KHKOpHauptsatz.SRechnungNichtSkontierfaehig)
FROM KHKOpHauptsatz 
INNER JOIN KHKKontokorrent 
ON KHKOpHauptsatz.Mandant = KHKKontokorrent.Mandant
AND KHKOpHauptsatz.KtoKo = KHKKontokorrent.Kto
WHERE
(KHKOpHauptsatz.Mandant = @nManId)
AND (KHKOpHauptsatz.IstAusgebucht = 0)
AND (KHKOpHauptsatz.Klaerung = 0)
AND (KHKKontokorrent.Zahlungsverkehr <> 0)
AND 
CASE 
WHEN EXISTS (
  SELECT Adresse
  FROM KHKBankverbindungenD
  WHERE KHKBankverbindungenD.Adresse = KHKOpHauptsatz.Adresse
    AND KHKBankverbindungenD.Mandant = @nManId
  )
  THEN 1
ELSE CASE 
  WHEN EXISTS (
    SELECT Adresse
    FROM KHKBankverbindungenA
    WHERE KHKBankverbindungenA.Adresse = KHKOpHauptsatz.Adresse
      AND KHKBankverbindungenA.Mandant = @nManId
    )
    THEN 0
  WHEN EXISTS (
    SELECT Adresse
    FROM KHKBankverbindungenCH
    WHERE KHKBankverbindungenCH.Adresse = KHKOpHauptsatz.Adresse
      AND KHKBankverbindungenCH.Mandant = @nManId
    )
    THEN 0
  WHEN EXISTS (
    SELECT Adresse
    FROM KHKBankverbindungenL
    WHERE KHKBankverbindungenL.Adresse = KHKOpHauptsatz.Adresse
      AND KHKBankverbindungenL.Mandant = @nManId
    )
    THEN 0
  ELSE 1
  END
END = 1
AND (KHKOpHauptsatz.Zahlungsverkehr = 0)
AND 
(
(
  SELECT KHKInkassoarten.Zahlungsverkehr
  FROM KHKInkassoarten
  WHERE KHKInkassoarten.Inkassoart = KHKOpHauptsatz.Inkassoart
  ) <> 0
)
AND (
(
  (KHKOpHauptsatz.Faelligkeit < @dtFaelligkeitNetto)
  OR (
  KHKOpHauptsatz.SkontoFaelligkeit1 >= @dtFaelligkeitSkonto
  AND KHKOpHauptsatz.SkontoFaelligkeit1 < @dtFaelligkeitNetto
  AND KHKOpHauptsatz.Skontoprozent1 > 0
  )
  OR (
  KHKOpHauptsatz.SkontoFaelligkeit2 >= @dtFaelligkeitSkonto
  AND KHKOpHauptsatz.SkontoFaelligkeit2 < @dtFaelligkeitNetto
  AND KHKOpHauptsatz.Skontoprozent2 > 0
  )
  )
)
AND (KHKOpHauptsatz.KtoArt = 'D')
AND KHKOpHauptsatz.KtoKo >= @sKto
AND KHKOpHauptsatz.KtoKo <= @sKto
AND KHKOpHauptsatz.Journal IN (
SELECT Journal
FROM KHKAuswertungskreiseJournale
WHERE Auswertungskreis = 1
)






bottom of page