"Das Feld Mandate Identification beim Debitor 1 bei der Bank ... nem üres" hibaüzenet jelenik meg, amikor megpróbál létrehozni egy fizetési fájlt a SEPA funkcióval a Microsoft Dynamics NAV német verziójában

Hatókör
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Ez a cikk a Microsoft Dynamics NAV német (de) területi beállítására vonatkozik.

Tünetek

Amikor megpróbál létrehozni egy fizetési fájlt a Microsoft Dynamics NAV német verziójának SEPA funkciójával, a következő hibaüzenet jelenik meg:

Megjegyzés

Das Feld Mandate Identification beim Debitor 1 bei der Bank ... nem lehet üres.

Ez a probléma akkor fordul elő, ha az ügyfél bankszámlája nem tartalmaz értéket a Meghatalmazás azonosítója vagy az Aláírás dátuma mezőben. A mezők megadása azonban nem kötelező a vevőknek történő kifizetésekhez. A mezők kitöltése csak SEPA-csoportos beszedési megbízás esetén szükséges.

Megjegyzés: A Microsoft Dynamics NAV rendszerben a fizetési funkcióval visszafizetheti a jóváírások összegét a vevőknek. A SEPA funkcióval továbbá az összeget külföldi vevőknek is kifizetheti.

Ez a probléma a következő termékekben fordul elő:

  • A Microsoft Dynamics NAV 2009 R2 német verziója
  • A Microsoft Dynamics NAV 2009 Service Pack 1 német verziója
  • A Microsoft Dynamics NAV 2009 német verziója
  • A Microsoft Dynamics NAV 5.0 Service Pack 1 német verziója
  • A Microsoft Dynamics NAV 5.0 német verziója

Megoldás

Gyorsjavítással kapcsolatos információk

A Microsoft már elérhető egy támogatott gyorsjavítást kínál. Ez azonban csak a cikkben ismertetett probléma megoldására szolgál. Csak olyan rendszerekre alkalmazza, amelyek tapasztalják ezt a problémát. Előfordulhat, hogy a gyorsjavítás további tesztelésen eshet át. Ezért ha nem érinti súlyosan ez a probléma, azt javasoljuk, hogy várja meg a Microsoft Dynamics NAV 2009 következő szervizcsomagját, illetve a Microsoft Dynamics NAV következő olyan verzióját, amely tartalmazza ezt a gyorsjavítást.

Megjegyzés: Különleges esetekben a támogatási hívások szokásos díjai törölhetők, ha a Microsoft Dynamics és a kapcsolódó termékek terméktámogatási szakértője úgy ítéli meg, hogy egy adott frissítés megoldja a problémát. A szokásos támogatási költségek olyan további támogatási kérdések és problémák esetén merülnek fel, amelyek nem felelnek meg a kérdéses frissítés feltételeinek.

          

Telepítési információk

A Microsoft csak illusztrációs céllal kínál programozási példákat, kifejezett vagy vélelmezett garancia nélkül. Ez magában foglalja, de nem kizárólagosan a forgalmazhatóságra vagy az adott célra való alkalmasságra vonatkozó vélelmezett garanciát. Ez a cikk feltételezi, hogy ismeri a bemutatott programozási nyelvet, valamint az eljárások létrehozásához és hibakereséséhez használt eszközöket. A Microsoft támogatási szakemberei segíthetnek elmagyarázni egy adott eljárás funkcionalitását, de nem módosítják a példákat, hogy további funkciókat biztosítsanak, és nem építenek ki eljárásokat az egyéni igényekre.

Megjegyzés: A gyorsjavítás telepítése előtt győződjön meg arról, hogy a Microsoft Navision-ügyfél összes felhasználója kijelentkezett a rendszerről. Ide tartoznak a Microsoft Navision Application Services (NAS) kliens felhasználói is. A gyorsjavítás telepítésekor csak Ön lehet az, aki be van jelentkezve.

A gyorsjavítás implementálásához fejlesztői licenccel kell rendelkeznie.

Javasoljuk, hogy a Windows Bejelentkezések ablakában vagy az Adatbázis-bejelentkezések ablakban látható felhasználói fiókhoz rendelje a "SUPER" szerepkörazonosítót. Ha a felhasználói fiókhoz nem rendelhető a "SUPER" szerepkörazonosító, ellenőriznie kell, hogy a felhasználói fiók rendelkezik-e az alábbi engedélyekkel:

  • A módosítani kívánt objektum Módosítás engedélye.
  • Végrehajtási engedély az 5210-es rendszerazonosítójú objektumhoz és a 9015-ös rendszerobjektum-azonosítójú objektumhoz.

                
Megjegyzés: Az adattárakhoz csak akkor kell jogokkal rendelkeznie, ha adatokat kell javítást végeznie.

Kódváltozások

Megjegyzés: Mindig ellenőrzött környezetben tesztelje a kódjavításokat, mielőtt telepítené őket az üzemi számítógépekre.
A probléma megoldásához változtassa meg a kódot a CheckBeforePaym függvényben a SEPA Management codeunit (5001911 esetén. Ehhez kövesse az alábbi lépéseket:

  1. Vegyen fel egy helyi változót, majd adja meg a változót az alábbiak szerint:

    • Név: CheckIdent
    • Típus: Logikai
  2. Módosítsa a kódot az alábbiak szerint:
    Meglévő kód

    ...
    CLEAR(ErrorMessage);
    MaxErrors := ARRAYLEN(ErrorMessage);
    …
    IF GenJnlLine.FINDFIRST THEN
    REPEAT
      IF AccNo <> GenJnlLine."Account No." THEN
        CASE GenJnlLine."Account Type" OF
          GenJnlLine."Account Type"::Customer :
            BEGIN
              Customer.GET(GenJnlLine."Account No.");
              CustBankAcc.SETRANGE("Customer No.",Customer."No.");
              CustBankAcc.SETRANGE(Clearing,TRUE);
              IF NOT CustBankAcc.FINDFIRST THEN BEGIN
                ErrorCounter := ErrorCounter + 1;
                IF ErrorCounter <= MaxErrors THEN
                  ErrorMessage[ErrorCounter] :=
                    COPYSTR(
                      STRSUBSTNO(
                        Text1105400011+
                        Text1105400012,Customer."No.",CustBankAcc.FIELDCAPTION(Clearing)),1,150);
              END ELSE BEGIN
                IF PaymentSetup."SEPA Identification" = '' THEN BEGIN
                  ErrorCounter := ErrorCounter + 1;
                  IF ErrorCounter <= MaxErrors THEN
                     ErrorMessage[ErrorCounter] :=
                      COPYSTR(
                        STRSUBSTNO(
                          Text1105400049,PaymentSetup.FIELDCAPTION("SEPA Identification")),1,150);
                END;
    
                IF CustBankAcc."Mandate Identification" = '' THEN BEGIN
                  ErrorCounter := ErrorCounter + 1;
                  IF ErrorCounter <= MaxErrors THEN
                    ErrorMessage[ErrorCounter] :=
                      COPYSTR(
                        STRSUBSTNO(
                          Text1105400050+
                          Text1105400014,CustBankAcc.FIELDCAPTION("Mandate Identification"),Customer."No.",
                          CustBankAcc.Name),1,150);
                END;
    ...
    
    

    Helyettesítő kód

    ...
    CLEAR(ErrorMessage);
    MaxErrors := ARRAYLEN(ErrorMessage);
    
    // Add the following line.
    CheckIdent := TRUE; 
    ...
    IF GenJnlLine.FINDFIRST THEN
    REPEAT
      IF AccNo <> GenJnlLine."Account No." THEN
        CASE GenJnlLine."Account Type" OF
          GenJnlLine."Account Type"::Customer :
            BEGIN
    
             // Add the following lines.
              PaymLine.RESET;
              PaymLine.SETCURRENTKEY("Account Type","Account No.","Posting Date");
              PaymLine.SETRANGE("Account Type",PaymLine."Account Type"::Customer);
              PaymLine.SETRANGE("Account No.",GenJnlLine2."Account No.");
              PaymLine.SETRANGE("Posting Date",GenJnlLine2."Posting Date");
              PaymLine.SETRANGE(PaymLine."Applies-to Doc. No.",GenJnlLine2."Applies-to Doc. No.");
              IF PaymLine.FINDLAST THEN BEGIN
                PaymLedgEntry.SETRANGE("payment no.",paymline."payment no.");
                IF NOT PaymLedgEntry.ISEMPTY THEN
                  PaymLedgEntry.FINDFIRST;
                CheckIdent := (PaymLedgEntry.Type<>PaymLedgEntry.Type::"Customer Credit");
              END;
              CheckIdent := NOT (GenJnlLine."Applies-to Doc. Type" IN [GenJnlLine."Applies-to Doc. Type"::"Credit Memo",
                                                                       GenJnlLine."Applies-to Doc. Type"::Refund]) AND
                            (GenJnlLine."Account Type" = GenJnlLine."Account Type"::Customer);          //End of the lines.
    
              Customer.GET(GenJnlLine."Account No.");
              CustBankAcc.SETRANGE("Customer No.",Customer."No.");
              CustBankAcc.SETRANGE(Clearing,TRUE);
              IF NOT CustBankAcc.FINDFIRST THEN BEGIN
                ErrorCounter := ErrorCounter + 1;
                IF ErrorCounter <= MaxErrors THEN
                  ErrorMessage[ErrorCounter] :=
                    COPYSTR(
                      STRSUBSTNO(
                        Text1105400011+
                        Text1105400012,Customer."No.",CustBankAcc.FIELDCAPTION(Clearing)),1,150);
              END ELSE BEGIN
    
                 // Add the following line.
                IF CheckIdent THEN BEGIN 
    
                  IF PaymentSetup."SEPA Identification" = '' THEN BEGIN
                    ErrorCounter := ErrorCounter + 1;
                    IF ErrorCounter <= MaxErrors THEN
                       ErrorMessage[ErrorCounter] :=
                        COPYSTR(
                          STRSUBSTNO(
                            Text1105400049,PaymentSetup.FIELDCAPTION("SEPA Identification")),1,150);
                  END;
    
                  IF CustBankAcc."Mandate Identification" = '' THEN BEGIN
                    ErrorCounter := ErrorCounter + 1;
                    IF ErrorCounter <= MaxErrors THEN
                      ErrorMessage[ErrorCounter] :=
                        COPYSTR(
                          STRSUBSTNO(
                            Text1105400050+
                            Text1105400014,CustBankAcc.FIELDCAPTION("Mandate Identification"),Customer."No.",
                            CustBankAcc.Name),1,150);
                  END;
    
                  IF CustBankAcc."Date of Signature" = 0D THEN BEGIN
                    ErrorCounter := ErrorCounter + 1;
                    IF ErrorCounter <= MaxErrors THEN
                      ErrorMessage[ErrorCounter] :=
                        COPYSTR(
                          STRSUBSTNO(
                            Text1105400050+
                            Text1105400014,CustBankAcc.FIELDCAPTION("Date of Signature"),Customer."No.",
                            CustBankAcc.Name),1,150);
                  END;
    
                // Add the following line.
                END; 
    ...
     lines.
    
              Customer.GET(GenJnlLine."Account No.");
              CustBankAcc.SETRANGE("Customer No.",Customer."No.");
              CustBankAcc.SETRANGE(Clearing,TRUE);
              IF NOT CustBankAcc.FINDFIRST THEN BEGIN
                ErrorCounter := ErrorCounter + 1;
                IF ErrorCounter <= MaxErrors THEN
                  ErrorMessage[ErrorCounter] :=
                    COPYSTR(
                      STRSUBSTNO(
                        Text1105400011+
                        Text1105400012,Customer."No.",CustBankAcc.FIELDCAPTION(Clearing)),1,150);
              END ELSE BEGIN
    
                 // Add the following line.
                IF CheckIdent THEN BEGIN 
    
                  IF PaymentSetup."SEPA Identification" = '' THEN BEGIN
                    ErrorCounter := ErrorCounter + 1;
                    IF ErrorCounter <= MaxErrors THEN
                       ErrorMessage[ErrorCounter] :=
                        COPYSTR(
                          STRSUBSTNO(
                            Text1105400049,PaymentSetup.FIELDCAPTION("SEPA Identification")),1,150);
                  END;
    
                  IF CustBankAcc."Mandate Identification" = '' THEN BEGIN
                    ErrorCounter := ErrorCounter + 1;
                    IF ErrorCounter <= MaxErrors THEN
                      ErrorMessage[ErrorCounter] :=
                        COPYSTR(
                          STRSUBSTNO(
                            Text1105400050+
                            Text1105400014,CustBankAcc.FIELDCAPTION("Mandate Identification"),Customer."No.",
                            CustBankAcc.Name),1,150);
                  END;
    
                  IF CustBankAcc."Date of Signature" = 0D THEN BEGIN
                    ErrorCounter := ErrorCounter + 1;
                    IF ErrorCounter <= MaxErrors THEN
                      ErrorMessage[ErrorCounter] :=
                        COPYSTR(
                          STRSUBSTNO(
                            Text1105400050+
                            Text1105400014,CustBankAcc.FIELDCAPTION("Date of Signature"),Customer."No.",
                            CustBankAcc.Name),1,150);
                  END;
    
                // Add the following line.
                END; 
    ...
    
    

Előfeltételek

A gyorsjavítás alkalmazásához az alábbi termékek egyikének telepítve kell lennie:

  • A Microsoft Dynamics NAV 2009 R2 német verziója
  • A Microsoft Dynamics NAV 2009 Service Pack 1 német verziója
  • A Microsoft Dynamics NAV 2009 német verziója
  • A Microsoft Dynamics NAV 5.0 Service Pack 1 német verziója
  • A Microsoft Dynamics NAV 5.0 német verziója

Eltávolítással kapcsolatos információk

Ez a gyorsjavítás nem távolítható el.

Állapot

A Microsoft megerősítette, hogy ez egy olyan probléma a Microsoft-termékekben, amely az „Érintett szolgáltatás“ című szakaszban van felsorolva.

Megjegyzés: Ez egy "GYORS KÖZZÉTÉTELŰ" cikk, amelyet közvetlenül a Microsoft támogatási szervezete készített. A dokumentumban szereplő információkat adott formában bocsátjuk rendelkezésre, a felmerülő problémákra adott válaszként. A rendelkezésre bocsátás gyorsasága következtében az anyagok sajtóhibákat tartalmazhatnak, és bármikor, előzetes értesítés nélkül felülvizsgálhatók. További szempontokat a használati feltételekben talál.