Den här artikeln gäller Microsoft Dynamics NAV för språkspråket tyska (de).
Symptom
När du försöker skapa betalningsfilen med hjälp av SEPA-funktionen i den tyska versionen av Microsoft Dynamics NAV får du följande felmeddelande:
Obs
Das Feld Mandat Identification beim Debitor 1 bei der Bank ... får inte vara tom.
Det här problemet uppstår om kundens bankkonto inte innehåller ett värde i fältet Fullmaktsidentifiering eller fältet Signaturdatum . Fälten krävs dock inte för betalningar till kunder. Fälten krävs endast för SEPA-autogirering.
Obs! I Microsoft Dynamics NAV kan du använda betalningsfunktionen för att betala tillbaka beloppet för kreditnotor till kunderna. Genom att använda SEPA-funktionen kan du dessutom betala beloppet till utländska kunder.
Det här problemet uppstår i följande produkter:
- Den tyska versionen av Microsoft Dynamics NAV 2009 R2
- Den tyska versionen av Microsoft Dynamics NAV 2009 Service Pack 1
- Den tyska versionen av Microsoft Dynamics NAV 2009
- Den tyska versionen av Microsoft Dynamics NAV 5.0 Service Pack 1
- Den tyska versionen av Microsoft Dynamics NAV 5.0
Lösning
Snabbkorrigeringsinformation
En snabbkorrigering som stöds är nu tillgänglig från Microsoft. Det är dock bara avsett att åtgärda problemet som beskrivs i den här artikeln. Använd den bara på system som har det här specifika problemet. Den här snabbkorrigeringen kan få ytterligare tester. Om du inte drabbas hårt av det här problemet rekommenderar vi därför att du väntar på nästa Microsoft Dynamics NAV 2009 Service Pack eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.
Obs! I särskilda fall kan avgifter som vanligtvis uppkommer för supportsamtal avbrytas om en teknisk supporttekniker för Microsoft Dynamics och relaterade produkter fastställer att en specifik uppdatering löser problemet. De vanliga supportkostnaderna gäller för ytterligare supportfrågor och problem som inte är berättigade till den aktuella uppdateringen.
Installationsinformation
Microsoft tillhandahåller endast programmeringsexempel i visningssyfte, utan att någon form av garanti uttrycks eller är underförstådd. Detta omfattar men är inte begränsat till underförstådda garantier för säljbarhet eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och med de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att tillhandahålla ytterligare funktioner eller konstruera procedurer för att uppfylla dina specifika krav.
Obs! Innan du installerar den här snabbkorrigeringen kontrollerar du att alla Microsoft Navision-klientanvändare loggas ut från systemet. Detta omfattar användare av Microsoft Navision Application Services (NAS). Du bör vara den enda klientanvändare som är inloggad när du implementerar snabbkorrigeringen.
Om du vill implementera den här snabbkorrigeringen måste du ha en utvecklarlicens.
Vi rekommenderar att användarkontot i fönstret Windows-inloggningar eller i fönstret Databasinloggningar tilldelas roll-ID:t "SUPER". Om användarkontot inte kan tilldelas superroll-ID måste du kontrollera att användarkontot har följande behörigheter:
- Behörigheten Ändra för det objekt som du kommer att ändra.
- Körbehörigheten för systemobjekt-ID 5210-objektet och för 9015-objektet Systemobjekt-ID.
Obs! Du behöver inte ha rättigheter till datakällorna om du inte behöver utföra datareparation.
Kodändringar
Obs! Testa alltid korrigeringar av kod i en kontrollerad miljö innan du tillämpar korrigeringarna på produktionsdatorerna.
Lös problemet genom att ändra koden i funktionen CheckBeforePaym i codeunit för SEPA-hantering (5001911). Gör följande:
Lägg till en lokal variabel och ange sedan variabeln enligt följande:
- Namn: CheckIdent
- Typ: Boolesk
Ändra koden på följande sätt:
Befintlig 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; ...Ersättningskod
... 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; ...
Krav
Du måste ha någon av följande produkter installerade för att kunna använda den här snabbkorrigeringen:
- Den tyska versionen av Microsoft Dynamics NAV 2009 R2
- Den tyska versionen av Microsoft Dynamics NAV 2009 Service Pack 1
- Den tyska versionen av Microsoft Dynamics NAV 2009
- Den tyska versionen av Microsoft Dynamics NAV 5.0 Service Pack 1
- Den tyska versionen av Microsoft Dynamics NAV 5.0
Information om borttagning
Du kan inte ta bort den här snabbkorrigeringen.
Status
Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".
Obs! Det här är en "FAST PUBLISH"-artikel som skapats direkt från Microsofts supportorganisation. Den information som finns häri tillhandahålls i befintligt format som svar på framväxande problem. Till följd av hur snabbt materialet blir tillgängligt kan materialet innehålla typografiska fel och kan komma att revideras när som helst utan föregående meddelande. Se användningsvillkor för andra överväganden.