"Das Feld Mandate Identification beim Debitor 1 bei der Bank ... ne sme da bude prazno" kada pokušate da kreirate datoteku plaćanja korišćenjem SEPA funkcionalnosti u nemačkoj verziji programa Microsoft Dynamics NAV

Primenjuje se na
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Ovaj članak se odnosi na Microsoft Dynamics NAV za lokalni standard nemačkog (de) jezika.

Simptomi

Kada pokušate da kreirate datoteku za plaćanje pomoću SEPA funkcionalnosti u nemačkoj verziji sistema Microsoft Dynamics NAV, dobijate sledeću poruku o grešci:

Napomena

Das Feld Mandate Identification beim Debitor 1 bei der Bank ... Ne sme da bude prazno.

Do ovog problema dolazi ako bankovni račun klijenta ne sadrži vrednost u polju " Identifikacija punomoćnika " ili polju "Datum potpisivanja ". Međutim, polja nisu potrebna za plaćanja klijentima. Polja su potrebna samo za SEPA direktno zaduženje.

Napomena: U usluzi Microsoft Dynamics NAV, možete da koristite funkcionalnost plaćanja da biste klijentima vratili iznos knjižnih knjiža. Pored toga, korišćenjem SEPA funkcionalnosti, možete platiti iznos stranim klijentima.

Ovaj problem se javlja u sledećim proizvodima:

  • Nemačka verzija sistema Microsoft Dynamics NAV 2009 R2
  • Nemačka verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
  • Nemačka verzija programa Microsoft Dynamics NAV 2009
  • Nemačka verzija usluge Microsoft Dynamics NAV 5.0 servisni paket 1
  • Nemačka verzija programa Microsoft Dynamics NAV 5.0

Rešenje

Informacije o hitnim ispravkama

Podržana hitna ispravka je sada dostupna od korporacije Microsoft. Međutim, namena je samo za rešavanje problema koji je opisan u ovom članku. Primenite je samo na sisteme koji imaju ovaj određeni problem. Ova hitna ispravka može proći dodatno testiranje. Stoga, ako ovaj problem ne utiče ozbiljno, preporučujemo da sačekate sledeći servisni paket za Microsoft Dynamics NAV 2009 ili sledeću verziju programa Microsoft Dynamics NAV koja sadrži ovu hitnu ispravku.

Napomena: U posebnim slučajevima, troškovi koji se obično nastaju za pozive podršci mogu biti otkazani ako stručnjak za tehničku podršku za Microsoft Dynamics i srodne proizvode utvrdi da će određena ispravka rešiti problem. Uobičajeni troškovi podrške primenjivaće se na dodatna pitanja podrške i probleme koji ne ispunjavaju uslove za određenu ispravku u pitanju.

          

Informacije o instalaciji

Microsoft pruža primere programiranja samo za ilustraciju, bez izričite ili podrazumevane garancije. Ovo uključuje, ali nije ograničeno na, podrazumevane garancije o podesnosti za prodaju ili o podesnosti za određenu namenu. U ovom članku se pretpostavlja da ste upoznati sa programskim jezikom koji se demonstrira i sa alatkama koje se koriste za kreiranje procedura i otklanjanje grešaka. Inženjeri Microsoft podrške mogu da vam objasne funkcionalnost određene procedure, ali neće izmeniti ove primere da bi obezbedili dodatnu funkcionalnost ili konstruisali procedure koje ispunjavaju vaše određene zahteve.

Napomena: Pre nego što instalirate ovu hitnu ispravku, proverite da li su svi korisnici Microsoft Navision klijenta odjavljeni iz sistema. To uključuje korisnike Microsoft Navision Application Services (NAS) klijenta. Vi bi trebalo da budete jedini korisnik klijenta koji je prijavljen kada primenjujete ovu hitnu ispravku.

Da biste primenili ovu hitnu ispravku, morate imati licencu za projektante.

Preporučujemo da se korisničkom nalogu u prozoru "Prijavljivanje u operativni sistem Windows" ili u prozoru "Prijavljivanje u bazu podataka" dodeli ID uloge "SUPER". Ako korisničkom nalogu nije moguće dodeliti ID uloge "SUPER", morate da proverite da li korisnički nalog ima sledeće dozvole:

  • Dozvola "Izmeni" za objekat koji ćete menjati.
  • Dozvola za izvršavanje za objekat sistema ID 5210 i za objekat sistema ID 9015.

                
Napomena: Ne morate da imate prava na skladišta podataka osim ako ne morate da izvršite popravku podataka.

Promene kodova

Napomena: Popravke kodova uvek testirajte u kontrolisanom okruženju pre nego što ih primenite na računare proizvodnje.
Da biste rešili ovaj problem, promenite kôd u funkciji CheckBeforePaym u SEPA jedinici za upravljanje kodom (5001911). Pratite ove korake da biste to uradili:

  1. Dodajte lokalnu promenljivu, a zatim navedite promenljivu na sledeći način:

    • Ime: CheckIdent
    • Tip: Bulov
  2. Promenite kôd na sledeći način:
    Postojeći 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;
    ...
    
    

    Kôd za zamenu

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

Preduslovi

Morate da imate instaliran jedan od sledećih proizvoda da biste primenili ovu hitnu ispravku:

  • Nemačka verzija sistema Microsoft Dynamics NAV 2009 R2
  • Nemačka verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
  • Nemačka verzija programa Microsoft Dynamics NAV 2009
  • Nemačka verzija usluge Microsoft Dynamics NAV 5.0 servisni paket 1
  • Nemačka verzija programa Microsoft Dynamics NAV 5.0

Informacije o uklanjanju

Ne možete da uklonite ovu hitnu ispravku.

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.

Napomena: Ovo je članak "BRZO OBJAVLJIVANJE" koji je kreiran direktno u okviru organizacije Microsoft podrške. Informacije koje se nalaze ovde pružaju se kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske greške i mogu se revidirati u bilo kom trenutku bez prethodne najave. Pogledajte Uslove korišćenja za druga razmatranja.