"Das Feld Mandate Identification beim Debitor 1 bei der Bank ... ne smije biti prazna" prilikom pokušaja stvaranja datoteke za plaćanje pomoću funkcije SEPA u njemačkoj verziji sustava Microsoft Dynamics NAV

Primjenjuje se na
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Ovaj se članak odnosi na Microsoft Dynamics NAV za regionalnu shemu na njemačkom (de)jeziku.

Simptomi

Kada pokušate stvoriti datoteku za plaćanje pomoću funkcije SEPA u njemačkoj verziji sustava Microsoft Dynamics NAV, prikazuje vam se sljedeća poruka o pogrešci:

Napomena

Das Feld Mandate Identification beim Debitor 1 bei der Bank ... ne smije biti prazan.

Taj se problem pojavljuje ako bankovni račun klijenta ne sadrži vrijednost u polju Identifikacija ovlaštenika ili Datum potpisa . No, polja nisu obavezna za plaćanja klijentima. Polja su obavezna samo za SEPA izravno terećenje.

Napomena U sustavu Microsoft Dynamics NAV možete koristiti funkciju plaćanja da biste korisnicima vratili iznos za odobrenje. Osim toga, korištenjem SEPA funkcionalnosti možete platiti iznos stranim kupcima.

Taj se problem pojavljuje u sljedećim proizvodima:

  • Njemačka verzija sustava Microsoft Dynamics NAV 2009 R2
  • Njemačka verzija sustava Microsoft Dynamics NAV 2009 Service Pack 1
  • Njemačka verzija sustava Microsoft Dynamics NAV 2009
  • Njemačka verzija sustava Microsoft Dynamics NAV 5.0 Service Pack 1
  • Njemačka verzija sustava Microsoft Dynamics NAV 5.0

Rješenje

Informacije o hitnom popravku

Microsoft sada nudi podržani hitni popravak. No njegova je namjena samo ispravljanje problema opisanog u ovom članku. Primijenite ga samo na sustave koji imaju taj specifični problem. Ovaj hitni popravak može proći dodatna testiranja. Stoga, ako se ovaj problem ne odnosi ozbiljno, preporučujemo da pričekate sljedeći servisni paket za Microsoft Dynamics NAV 2009 ili sljedeću verziju sustava Microsoft Dynamics NAV koja sadrži ovaj hitni popravak.

Napomena: U posebnim slučajevima, ako stručnjak tehničke podrške za Microsoft Dynamics i povezane proizvode utvrdi da određeno ažuriranje može riješiti problem, poziv službi podrške može biti besplatan. Uobičajene cijene poziva službi za podršku primjenjuju se na dodatna pitanja i probleme koje nemaju veze s pripadnom nadopunom.

          

Informacije o instalaciji

Microsoft daje primjere programiranja samo za ilustraciju, bez jamstva, bilo izričitog ili prešutnog. To uključuje, bez ograničenja, implicitna jamstva utrživosti ili prikladnosti za određenu svrhu. U članku se podrazumijeva da ste upoznati s programskim jezikom koji se pokazuje te s alatima koji se koriste za stvaranje i ispravljanje pogrešaka procedura. Microsoftovi inženjeri za podršku mogu vam pomoći objasniti funkcionalnost određene procedure, no neće mijenjati te primjere radi pružanja dodatne funkcionalnosti ili konstruirati procedure koji zadovoljavaju vaše specifične zahtjeve.

Napomena Prije nego što instalirate ovaj hitni popravak, provjerite jesu li svi korisnici Microsoft Navision klijenta odjavljeni sa sustava. To obuhvaća korisnike klijentskih usluga Microsoft Navision Application Services (NAS). Trebali biste biti jedini klijentski korisnik prijavljen na vrijeme implementacije ovog hitnog popravka.

Da biste implementirali ovaj hitni popravak, morate imati licencu za razvojne inženjere.

Preporučujemo da se korisničkom računu u prozoru Prijave u sustav Windows ili u prozoru Prijave u bazu podataka dodijeli ID uloge "SUPER". Ako korisničkom računu nije moguće dodijeliti ID uloge "SUPER", morate provjeriti ima li korisnički račun sljedeće dozvole:

  • Dozvola za izmjenu objekta koji ćete mijenjati.
  • Dozvola za izvršavanje za objekt System Object ID 5210 i za objekt System Object ID 9015

                
Napomena: nemate pravo na spremišta podataka, osim ako morate popraviti podatke.

Promjene koda

Napomena: uvijek testirajte popravke koda u kontroliranom okruženju prije primjene popravaka na proizvodnim računalima.
Da biste riješili taj problem, promijenite kod u funkciji CheckBeforePaym u jedinici koda za upravljanje SEPA-om (5001911). Slijedite korake u nastavku.

  1. Dodajte lokalnu varijablu, a zatim je navedite na sljedeći način:

    • Naziv: CheckIdent
    • Vrsta: Booleova vrijednost
  2. Kod promijenite na sljedeći način:
    Postojeći kod

    ...
    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;
    ...
    
    

    Zamjenski 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; 
    ...
    
    

Preduvjeti

Da biste primijenili ovaj hitni popravak, morate imati instaliran neki od sljedećih proizvoda:

  • Njemačka verzija sustava Microsoft Dynamics NAV 2009 R2
  • Njemačka verzija sustava Microsoft Dynamics NAV 2009 Service Pack 1
  • Njemačka verzija sustava Microsoft Dynamics NAV 2009
  • Njemačka verzija sustava Microsoft Dynamics NAV 5.0 Service Pack 1
  • Njemačka verzija sustava Microsoft Dynamics NAV 5.0

Podaci o uklanjanju

Ovaj hitni popravak ne možete ukloniti.

Status

Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.

Napomena: Ovo je članak "FAST PUBLISH" stvoren izravno u Microsoftovoj ustanovi za podršku. Ovdje sadržane informacije pružaju se takve kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske pogreške i mogu se revidirati u bilo kojem trenutku bez prethodne najave. Dodatne napomene potražite u Uvjetima korištenja .