Sachbearbeiter Ausdruck Mahnung fehlt

Allgemeine Diskussionen um die ERP Software AvERP

Moderator: SYNERPY

Antworten
Thomas Rogge
Beiträge: 159
Registriert: Mi Mär 04, 2009 10:45 am

Sachbearbeiter Ausdruck Mahnung fehlt

Beitrag von Thomas Rogge »

Moinsen,

im Ausdruck Mahnung (FRDCMMAHNMB) wird oben der Sachbearbeiter nicht mit angedruckt. Das Feld (UZEICH1) bezieht sich auf einen V_BMAHN.
Im View ist der zwar eingetragen, aber in der Tabelle BMAHN finden sich keine Einträge zu UZEICH1, UZEICH2 oder UZEICH3.
Wir haben da aktuell 2 Einträge in der Tabelle, wo die Felder UZEICH aber nicht gefüllt sind.

Ich habe mir mal die Abhängige Prozedur angesehen (P_BMAHN_EINTRAGEN), da finde ich auch keinen Eintrag zu UZEICH, der COde:

Code: Alles auswählen

BEGIN
  /* LETZTER STAND 14.10.2008 15:27:28 HB */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BMAHN_EINTRAGEN');

  EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);

  /* Anzahl der Tage aus dem Firmenstamm holen, die von Rechnungserstellung bis
     Mahnungsersetllung vergehen dürfen */
  SELECT MAHNSTUFEN
  FROM BFIRMA
  WHERE ID = 1
  INTO :BFIRMA_MAHNSTUFEN;

  FOR SELECT ID,
             MAHNTAGE,
             BADR_ID_ADRNR
  FROM BKUNDE
  ORDER BY ID
  INTO :BKUNDE_ID,
       :BKUNDE_MAHNTAGE,
       :BKUNDE_BADR_ID
  DO
  BEGIN
  /* Für jeden Kunden die offenen Rechnungen durchgehen (es ist kein Zahlungsdatum
     angegeben) */
    FOR SELECT A.ID,
               A.BMAND_ID
    FROM BRRC A
    LEFT OUTER JOIN BSM B ON A.BSM_ID_VERANT = B.ID
    WHERE A.BKUNDE_ID_LINKKEY = :BKUNDE_ID AND
          A.ZAHLDATUM IS NULL AND
          A.RGGEDRUCKT = :SJA AND
          A.RECHNUNGSART = 'R'
    INTO :BRRC_ID,
         :BMAND_ID
    DO
    BEGIN
      EXECUTE PROCEDURE P_BRRC_ZAHLZIEL_ERMITTELN(:BRRC_ID,'BRRC')
      RETURNING_VALUES(:BRRC_MAX_ZAHLZIEL);

      /* In der Rechnung sind keine Zahlungsinformationen enthalten, dann die
         Infos aus dem Kundenstamm holen */
      IF (BRRC_MAX_ZAHLZIEL IS NULL) THEN
      BEGIN
        EXECUTE PROCEDURE P_BRRC_ZAHLZIEL_ERMITTELN(:BRRC_ID,'BKUNDE')
        RETURNING_VALUES(:BRRC_MAX_ZAHLZIEL);

        /* Wenn auch keine Informationen im Kundenstamm hinterlegt sind,
           dann Heute + Zahlungsziel für den Kunden  */
        IF (BRRC_MAX_ZAHLZIEL IS NULL) THEN
          BRRC_MAX_ZAHLZIEL = CURRENT_DATE + BKUNDE_MAHNTAGE;
      END

      /* Prüfen, ob eine Mahnung erstellt werden soll; wenn (RECHNUNGSDATUM) plus
         (MAHNTAGE) plus Zahlungstermin > Heute  (laut Pflichtenheft über x Tage)*/
      IF ((BRRC_MAX_ZAHLZIEL + BKUNDE_MAHNTAGE) < CURRENT_DATE) THEN
      BEGIN
        /* Prüfen, ob bereits Mahnung angelegt ist  */
        SELECT ID
        FROM BMAHN
        WHERE BRRC_ID = :BRRC_ID AND
              BKUNDE_ID = :BKUNDE_ID
        INTO :BMAHN_ID;

        /* Wenn noch keine Mahnung existiert, dann wird eine angelegt */
        /* Mahndatum1 wird erst angelegt, wenn die Mahnung gedruckt wurde */
        IF (BMAHN_ID IS NULL) THEN
        BEGIN
          BMAHN_ID = GEN_ID(GEN_BMAHN,1);
          INSERT INTO BMAHN(
            ID,
            BKUNDE_ID,
            BADR_ID,
            BRRC_ID,
            MAHNSTATUS,
            MAHNUNG1,
            MAHNNOTIZ1,
            BMAND_ID,
            AKTIV_JN)
          VALUES(
            :BMAHN_ID,
            :BKUNDE_ID,
            :BKUNDE_BADR_ID,
            :BRRC_ID,
            :SNEIN,
            :SNEIN,
            F_STRBLOB('Diese Mahnung wurde automatisch erstellt'),
            :BMAND_ID,
            :sJA);
        END
      END

      BRRC_ID = NULL;
      BMAHN_ID = NULL;
      BMAND_ID = NULL;
    END /* Ende BRRC */

    BKUNDE_ID = NULL;
    BKUNDE_BADR_ID = NULL;
  END /* Ende BKUNDE */

  /* Prüfung, ob bereits eine neue Mahnstufe angelegt werden muss */
  /* Behandelt alle Mahnungen, die noch nicht abgeschlossen sind */
  FOR SELECT ID,
             MAHNDATUM1,
             MAHNDATUM2
  FROM BMAHN
  WHERE MAHNSTATUS = :SNEIN
  INTO :BMAHN_ID,
       :BMAHN_MAHNDATUM1,
       :BMAHN_MAHNDATUM2
  DO
  BEGIN
    /* Erste Mahnstufe ist gedruckt (somit auch versendet) und Kunde hat nicht reagiert
       --> Telefonische Mahnung (Mahnstufe 2) wird angelegt */
    IF (((BMAHN_MAHNDATUM1 + BFIRMA_MAHNSTUFEN) < CURRENT_DATE) AND
         (BMAHN_MAHNDATUM1 IS NOT NULL) AND
         (BMAHN_MAHNDATUM2 IS NULL)) THEN
    BEGIN
      /* MAHNDATUM2 wird erst gesetzt, wenn die telefonische Mahnung gemacht wurde */
      UPDATE BMAHN
      SET MAHNUNG1 = :SJA,
          MAHNUNG2 = :SNEIN,
          MAHNNOTIZ2 = F_STRBLOB('Mahnstufe 2 wurde automatisch erzeugt, da Kunde ' ||
                                 'nicht auf schriftliche Mahnung reagiert hat')
      WHERE ID = :BMAHN_ID;
    END

    /* Erste Mahnstufe ist gedruckt (somit auch versendet) und Kunde hat nicht reagiert
       --> Telefonische Mahnung (Mahnstufe 2) wird angelegt */
    IF (((BMAHN_MAHNDATUM2 + BFIRMA_MAHNSTUFEN) < CURRENT_DATE) AND
         (BMAHN_MAHNDATUM2 IS NOT NULL)) THEN
    BEGIN
      /* MAHNDATUM2 wird erst gesetzt, wenn die telefonische Mahnung gemacht wurde */
      UPDATE BMAHN
      SET MAHNUNG2 = :SJA,
          MAHNUNG3 = :SNEIN,
          MAHNNOTIZ3 = F_STRBLOB('Achtung!!! Kunde hat 3. Mahnstufe erreicht. ' ||
                                 'Juristische Schritte einleiten!')
      WHERE ID = :BMAHN_ID;
    END
    BMAHN_ID = NULL;
  END
END
Wie bekomme ich denn nun den Sachbearbeiter am besten dort hinein?

Gruß
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
SYN26

Beitrag von SYN26 »

Hallo,

hier wird der Mitarbeiter, der die Mahnung manuell erfasst hat, eingetragen Im automatischen Mahnlauf könnte einzig der Sachbearbeiter der die Rechnung erstellte eingetragen werden.

Wenn der Rechnungsersteller auch der Mahnungsverantwortliche ist könnte der Code folgendermaßen angepasst werden:

Code: Alles auswählen

    FOR SELECT A.ID,
                A.BMAND_ID,
                B.UZEICH
    FROM BRRC A
    LEFT OUTER JOIN BSM B ON A.BSM_ID_VERANT = B.ID
    WHERE A.BKUNDE_ID_LINKKEY = :BKUNDE_ID AND
          A.ZAHLDATUM IS NULL AND
          A.RGGEDRUCKT = :SJA AND
          A.RECHNUNGSART = 'R'
    INTO :BRRC_ID,
         :BMAND_ID,
         :UZEICH
Im nächsten Release können im Mandantenstamm die verantwortlichen Mitarbeiter für die Mahnstufen hinterlegt werden.

Gruß
Thomas Rogge
Beiträge: 159
Registriert: Mi Mär 04, 2009 10:45 am

Beitrag von Thomas Rogge »

Vielen Dank,

allerdings muss beim into auch der UZEICH1 dann stehen, so funktioniert der Code bei uns wunderbar:

Code: Alles auswählen

BEGIN
  /* LETZTER STAND 14.10.2008 15:27:28 HB */
  /* Protokollieren, dass Aktion hier durchgelaufen ist */
  IF (GEN_ID(GEN_ENTWICKLUNG,0) = 0) THEN
    INSERT INTO A_WASMACHTIB (PROGRAMMTEIL) VALUES ('P_BMAHN_EINTRAGEN');

  EXECUTE PROCEDURE P_BFIRMA_JANEIN RETURNING_VALUES (:SJA, :SNEIN);

  /* Anzahl der Tage aus dem Firmenstamm holen, die von Rechnungserstellung bis
     Mahnungsersetllung vergehen dürfen */
  SELECT MAHNSTUFEN
  FROM BFIRMA
  WHERE ID = 1
  INTO :BFIRMA_MAHNSTUFEN;

  FOR SELECT ID,
             MAHNTAGE,
             BADR_ID_ADRNR
  FROM BKUNDE
  ORDER BY ID
  INTO :BKUNDE_ID,
       :BKUNDE_MAHNTAGE,
       :BKUNDE_BADR_ID
  DO
  BEGIN
  /* Für jeden Kunden die offenen Rechnungen durchgehen (es ist kein Zahlungsdatum
     angegeben) */
    FOR SELECT A.ID,
               A.BMAND_ID,
               B.UZEICH
    FROM BRRC A
    LEFT OUTER JOIN BSM B ON A.BSM_ID_VERANT = B.ID
    WHERE A.BKUNDE_ID_LINKKEY = :BKUNDE_ID AND
          A.ZAHLDATUM IS NULL AND
          A.RGGEDRUCKT = :SJA AND
          A.RECHNUNGSART = 'R'
    INTO :BRRC_ID,
         :BMAND_ID,
         :UZEICH1
    DO
    BEGIN
      EXECUTE PROCEDURE P_BRRC_ZAHLZIEL_ERMITTELN(:BRRC_ID,'BRRC')
      RETURNING_VALUES(:BRRC_MAX_ZAHLZIEL);

      /* In der Rechnung sind keine Zahlungsinformationen enthalten, dann die
         Infos aus dem Kundenstamm holen */
      IF (BRRC_MAX_ZAHLZIEL IS NULL) THEN
      BEGIN
        EXECUTE PROCEDURE P_BRRC_ZAHLZIEL_ERMITTELN(:BRRC_ID,'BKUNDE')
        RETURNING_VALUES(:BRRC_MAX_ZAHLZIEL);

        /* Wenn auch keine Informationen im Kundenstamm hinterlegt sind,
           dann Heute + Zahlungsziel für den Kunden  */
        IF (BRRC_MAX_ZAHLZIEL IS NULL) THEN
          BRRC_MAX_ZAHLZIEL = CURRENT_DATE + BKUNDE_MAHNTAGE;
      END

      /* Prüfen, ob eine Mahnung erstellt werden soll; wenn (RECHNUNGSDATUM) plus
         (MAHNTAGE) plus Zahlungstermin > Heute  (laut Pflichtenheft über x Tage)*/
      IF ((BRRC_MAX_ZAHLZIEL + BKUNDE_MAHNTAGE) < CURRENT_DATE) THEN
      BEGIN
        /* Prüfen, ob bereits Mahnung angelegt ist  */
        SELECT ID
        FROM BMAHN
        WHERE BRRC_ID = :BRRC_ID AND
              BKUNDE_ID = :BKUNDE_ID
        INTO :BMAHN_ID;

        /* Wenn noch keine Mahnung existiert, dann wird eine angelegt */
        /* Mahndatum1 wird erst angelegt, wenn die Mahnung gedruckt wurde */
        IF (BMAHN_ID IS NULL) THEN
        BEGIN
          BMAHN_ID = GEN_ID(GEN_BMAHN,1);
          INSERT INTO BMAHN(
            ID,
            BKUNDE_ID,
            BADR_ID,
            BRRC_ID,
            MAHNSTATUS,
            MAHNUNG1,
            UZEICH1,
            MAHNNOTIZ1,
            BMAND_ID,
            AKTIV_JN)
          VALUES(
            :BMAHN_ID,
            :BKUNDE_ID,
            :BKUNDE_BADR_ID,
            :BRRC_ID,
            :SNEIN,
            :SNEIN,
            :UZEICH1,
            F_STRBLOB('Diese Mahnung wurde automatisch erstellt'),
            :BMAND_ID,
            :sJA);
        END
      END

      BRRC_ID = NULL;
      BMAHN_ID = NULL;
      BMAND_ID = NULL;
    END /* Ende BRRC */

    BKUNDE_ID = NULL;
    BKUNDE_BADR_ID = NULL;
  END /* Ende BKUNDE */

  /* Prüfung, ob bereits eine neue Mahnstufe angelegt werden muss */
  /* Behandelt alle Mahnungen, die noch nicht abgeschlossen sind */
  FOR SELECT ID,
             MAHNDATUM1,
             MAHNDATUM2
  FROM BMAHN
  WHERE MAHNSTATUS = :SNEIN
  INTO :BMAHN_ID,
       :BMAHN_MAHNDATUM1,
       :BMAHN_MAHNDATUM2
  DO
  BEGIN
    /* Erste Mahnstufe ist gedruckt (somit auch versendet) und Kunde hat nicht reagiert
       --> Telefonische Mahnung (Mahnstufe 2) wird angelegt */
    IF (((BMAHN_MAHNDATUM1 + BFIRMA_MAHNSTUFEN) < CURRENT_DATE) AND
         (BMAHN_MAHNDATUM1 IS NOT NULL) AND
         (BMAHN_MAHNDATUM2 IS NULL)) THEN
    BEGIN
      /* MAHNDATUM2 wird erst gesetzt, wenn die telefonische Mahnung gemacht wurde */
      UPDATE BMAHN
      SET MAHNUNG1 = :SJA,
          MAHNUNG2 = :SNEIN,
          MAHNNOTIZ2 = F_STRBLOB('Mahnstufe 2 wurde automatisch erzeugt, da Kunde ' ||
                                 'nicht auf schriftliche Mahnung reagiert hat')
      WHERE ID = :BMAHN_ID;
    END

    /* Erste Mahnstufe ist gedruckt (somit auch versendet) und Kunde hat nicht reagiert
       --> Telefonische Mahnung (Mahnstufe 2) wird angelegt */
    IF (((BMAHN_MAHNDATUM2 + BFIRMA_MAHNSTUFEN) < CURRENT_DATE) AND
         (BMAHN_MAHNDATUM2 IS NOT NULL)) THEN
    BEGIN
      /* MAHNDATUM2 wird erst gesetzt, wenn die telefonische Mahnung gemacht wurde */
      UPDATE BMAHN
      SET MAHNUNG2 = :SJA,
          MAHNUNG3 = :SNEIN,
          MAHNNOTIZ3 = F_STRBLOB('Achtung!!! Kunde hat 3. Mahnstufe erreicht. ' ||
                                 'Juristische Schritte einleiten!')
      WHERE ID = :BMAHN_ID;
    END
    BMAHN_ID = NULL;
  END
END
also den insert into... auch noch beachten und zusätzlich die Variablen UZEICH und UZEICH1 deklarieren, sonst meckert IB-Expert beim compilieren.
Danke nochmals...

Viele Grüße
Thomas
Software-Version: 6.6.10.0
DB-Version: AVERP2018.03
Server: Windows 10 Pro Intel Xeon E3-1230v6 - 16GB RAM
50 User
Antworten