Applies ToDynamics NAV 2009

Symptom

En felaktig dokumenttyp används när du importerar filer i LSV DD (autogiro) och avvisade betalningar som finns i den schweiziska versionen av Microsoft Dynamics NAV 2009. När en betalning har annullerats, ange dokumenttypen fortfarande till betalning. Men kan inte du bokföra transaktioner på grund av felaktiga tecknet för beloppet. Följ instruktionerna i avsnittet kod ändras för att lösa problemet. Det här problemet uppstår i följande produkter:

  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 R2

  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 SP1

Lösning

Information om snabbkorrigeringen

En snabbkorrigering är nu tillgänglig från Microsoft. Den är endast avsedd att åtgärda det problem som beskrivs i denna artikel. Använd den bara på datorer där detta problem uppstår. Snabbkorrigeringen kan komma att testas igen. Om inte störs alltför mycket av detta problem rekommenderar vi att du väntar på Nästa service pack-versionen för Microsoft Dynamics NAV 2009 eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.Obs! I särskilda fall, de avgifter som är normalt för support vara avgiftsfri om en supporttekniker för Microsoft Dynamics och relaterade produkter som bestämmer att en särskild uppdatering kan lösa ditt problem. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte berör den särskilda uppdateringen.

Installationsinformation

Microsoft tillhandahåller programmeringsexempel endast utan garanti varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionen hos en viss procedur. De kommer inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.Obs! Innan du installerar den här snabbkorrigeringen måste du kontrollera att alla användare i Microsoft Dynamics NAV-klienten har loggat ut. Detta omfattar tjänster för Microsoft Dynamics NAV Application Server (NAS). Du ska endast klientanvändare som är inloggad när du implementerar den här snabbkorrigeringen.Om du vill genomföra den här snabbkorrigeringen måste du ha en utvecklarlicens.Vi rekommenderar att tilldelas användarkontot i fönstret Windows-inloggningar eller i fönstret databasinloggningar "SUPER" roll-ID. Om användarkontot inte kan tilldelas "SUPER" roll-ID måste du kontrollera att användarkontot har följande behörigheter:

  • Ändra behörighet för objektet ändras.

  • Körbehörighet för systemet objektet ID 5210 objekt och System objektet ID 9015objektet.

Obs! Du har inte behörighet för datalager inte data reparation.

Kod ändras

Obs! Alltid åtgärdas testa koden i en kontrollerad miljö innan du installerar korrigeringar för produktionsdatorer.Lös problemet så här:

  1. Ändra koden i den globala variabler i LSVMgt-Codeunit (3010831) enligt följande:Befintlig kod

    ...Text11500@1150080 : TextConst 'ENU=Could not find Transaction No. %1 in Debit Direct Order No. %2.';      FileMgt@1150042 : Codeunit 419;      FileSystemObject@1150081 : Automation "{420B2830-E718-11CF-893D-00A0C9054228} 1.0:{0D43FE01-F093-11CF-8940-00A0C9054228}:'Microsoft Scripting Runtime'.FileSystemObject";    PROCEDURE ReleaseCustLedgEntries@1(_GenJnlLine@1150000 : Record 81);    BEGIN...

    Ersättningskod

    ...Text11500@1150080 : TextConst 'ENU=Could not find Transaction No. %1 in Debit Direct Order No. %2.';      FileMgt@1150042 : Codeunit 419;      FileSystemObject@1150081 : Automation "{420B2830-E718-11CF-893D-00A0C9054228} 1.0:{0D43FE01-F093-11CF-8940-00A0C9054228}:'Microsoft Scripting Runtime'.FileSystemObject";// Add the following line.IsCancellationExist@1150082 : Boolean;// End of the added line.    PROCEDURE ReleaseCustLedgEntries@1(_GenJnlLine@1150000 : Record 81);    BEGIN...
  2. Ändra koden i funktionen ImportDebitDirectFile i LSVMgt-Codeunit (3010831) enligt följande:Befintlig kod 1

    ...FeeAmount := 0;      TotalRecRecords := 0;      TotalRecRecordsRev := 0;      // Journal name for no serie      GlBatchName.GET(ActGenJnlLine."Journal Template Name",ActGenJnlLine."Journal Batch Name");...

    Ersättningskod 1

    ...FeeAmount := 0;      TotalRecRecords := 0;      TotalRecRecordsRev := 0;// Add the following line.IsCancellationExist := FALSE;// End of the added line.      // Journal name for no serie      GlBatchName.GET(ActGenJnlLine."Journal Template Name",ActGenJnlLine."Journal Batch Name");...

    Befintlig kod 2

    ...// Split File line into fields// Delete the following lines.FileID := COPYSTR(Line,1,3);IF FileID <> '036' THENERROR(Text049 + Text011);TA := COPYSTR(Line,36,2);IF NOT (TA = '97') THEN BEGINTotalRecord := FALSE;EVALUATE(InvoiceAmt,COPYSTR(Line,54,13));EVALUATE(yyCR,COPYSTR(Line,4,2));EVALUATE(mmCR,COPYSTR(Line,6,2));EVALUATE(ddCR,COPYSTR(Line,8,2));IF yyCR > 98 THENPostDate := DMY2DATE(ddCR,mmCR,1900 + yyCR)ELSEPostDate := DMY2DATE(ddCR,mmCR,2000 + yyCR);DebitDirectOrderNo := COPYSTR(Line,34,2);EVALUATE(DebitDirectRecordNo,COPYSTR(Line,38,6));EVALUATE(RejectionCode,COPYSTR(Line,543,2));Currency := COPYSTR(Line,51,3);// DEBIT DIRECTLsvJour.RESET;LsvJour.SETRANGE("Credit Date",PostDate);LsvJour.SETRANGE("DebitDirect Orderno.",DebitDirectOrderNo);IF NOT LsvJour.FIND('+') THENERROR(Text059,DebitDirectOrderNo,PostDate);LsvJournalLine.RESET;//CH0001.beginLsvJournalLine.SETCURRENTKEY("LSV Journal No.","Transaction No.");LsvJournalLine.SETRANGE("LSV Journal No.",LsvJour."No.");//LsvJournalLine.SETRANGE("Line No.",DebitDirectRecordNo);LsvJournalLine.SETRANGE("Transaction No.",DebitDirectRecordNo);//LsvJournalLine.FIND('-');IF NOT LsvJournalLine.FINDFIRST THEN BEGINd.CLOSE;ERROR(Text11500, DebitDirectRecordNo, DebitDirectOrderNo);END;//CH0001.endInInvoiceNo := LsvJournalLine."Applies-to Doc. No.";// END DEBIT DIRECT// Process transaction of credit recordCASE TA OF'81':  // CreditBEGINTransaction := Transaction::Credit;LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Open;LsvJournalLine."DD Rejection Reason" := LsvJournalLine."DD Rejection Reason"::" ";LsvJournalLine.MODIFY;IF LSVSetup.READPERMISSION THEN BEGINClosedByESR(InInvoiceNo);END;END;'84':  // Cancellation "Storno"BEGINIF RejectionCode <> 2 THENTransaction := Transaction::CorrectionELSETransaction := Transaction::Cancellation;LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Rejected;LsvJournalLine."DD Rejection Reason" := RejectionCode;LsvJournalLine.MODIFY;END;ELSE ERROR(Text023 + Text011);END;END ELSE BEGINTotalRecord := TRUE;EVALUATE(TempAmount,COPYSTR(Line,60,13));CreditAmount := CreditAmount + TempAmount / 100;EVALUATE(TempAmount,COPYSTR(Line,82,13));RejectionAmount := RejectionAmount + TempAmount / 100;EVALUATE(TempAmount,COPYSTR(Line,104,13));ReversalAmount := ReversalAmount + TempAmount / 100;EVALUATE(TempAmount,COPYSTR(Line,120,11));FeeAmount := FeeAmount + TempAmount / 100;// Credit CountEVALUATE(TempAmount,COPYSTR(Line,54,6));TotalRecRecords := TotalRecRecords + TempAmount;// Rejection CountEVALUATE(TempAmount,COPYSTR(Line,76,6));TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;// Reversal CountEVALUATE(TempAmount,COPYSTR(Line,98,6));TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;END;// END OF SPLITIF NOT (TotalRecord) AND (Transaction <> Transaction::Correction) THEN BEGIN// End of the deleted lines.          // Insert GL line          GenJournalLine.INIT;          GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";...

    Ersättningskod 2

    ...// Split File line into fields// Add the following lines.FileID := COPYSTR(Line,1,3);IF FileID <> '036' THENERROR(Text049 + Text011);TA := COPYSTR(Line,36,2);IF NOT (TA = '97') THEN BEGINTotalRecord := FALSE;EVALUATE(InvoiceAmt,COPYSTR(Line,54,13));EVALUATE(yyCR,COPYSTR(Line,4,2));EVALUATE(mmCR,COPYSTR(Line,6,2));EVALUATE(ddCR,COPYSTR(Line,8,2));IF yyCR > 98 THENPostDate := DMY2DATE(ddCR,mmCR,1900 + yyCR)ELSEPostDate := DMY2DATE(ddCR,mmCR,2000 + yyCR);DebitDirectOrderNo := COPYSTR(Line,34,2);EVALUATE(DebitDirectRecordNo,COPYSTR(Line,38,6));EVALUATE(RejectionCode,COPYSTR(Line,543,2));Currency := COPYSTR(Line,51,3);// DEBIT DIRECTLsvJour.RESET;LsvJour.SETRANGE("Credit Date",PostDate);LsvJour.SETRANGE("DebitDirect Orderno.",DebitDirectOrderNo);IF NOT LsvJour.FIND('+') THENERROR(Text059,DebitDirectOrderNo,PostDate);LsvJournalLine.RESET;//CH0001.beginLsvJournalLine.SETCURRENTKEY("LSV Journal No.","Transaction No.");LsvJournalLine.SETRANGE("LSV Journal No.",LsvJour."No.");//LsvJournalLine.SETRANGE("Line No.",DebitDirectRecordNo);LsvJournalLine.SETRANGE("Transaction No.",DebitDirectRecordNo);//LsvJournalLine.FIND('-');IF NOT LsvJournalLine.FINDFIRST THEN BEGINd.CLOSE;ERROR(Text11500, DebitDirectRecordNo, DebitDirectOrderNo);END;//CH0001.endInInvoiceNo := LsvJournalLine."Applies-to Doc. No.";// END DEBIT DIRECT// Process transaction of credit recordCASE TA OF'81':  // CreditBEGINTransaction := Transaction::Credit;LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Open;LsvJournalLine."DD Rejection Reason" := LsvJournalLine."DD Rejection Reason"::" ";LsvJournalLine.MODIFY;IF LSVSetup.READPERMISSION THEN BEGINClosedByESR(InInvoiceNo);END;END;'84':  // Cancellation "Storno"BEGINIF RejectionCode <> 2 THENTransaction := Transaction::CorrectionELSETransaction := Transaction::Cancellation;LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Rejected;LsvJournalLine."DD Rejection Reason" := RejectionCode;LsvJournalLine.MODIFY;END;ELSEERROR(Text023 + Text011);END;END ELSE BEGINTotalRecord := TRUE;EVALUATE(TempAmount,COPYSTR(Line,60,13));CreditAmount := CreditAmount + TempAmount / 100;EVALUATE(TempAmount,COPYSTR(Line,82,13));RejectionAmount := RejectionAmount + TempAmount / 100;EVALUATE(TempAmount,COPYSTR(Line,104,13));ReversalAmount := ReversalAmount + TempAmount / 100;EVALUATE(TempAmount,COPYSTR(Line,120,11));FeeAmount := FeeAmount + TempAmount / 100;// Credit CountEVALUATE(TempAmount,COPYSTR(Line,54,6));TotalRecRecords := TotalRecRecords + TempAmount;// Rejection CountEVALUATE(TempAmount,COPYSTR(Line,76,6));TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;// Reversal CountEVALUATE(TempAmount,COPYSTR(Line,98,6));TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;END;// END OF SPLITIF NOT (TotalRecord) AND (Transaction <> Transaction::Correction) THEN BEGIN// End of the added lines.          // Insert GL line          GenJournalLine.INIT;          GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";...

    Befintlig kod 3

    ...GenJournalLine.INIT;          GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";          GenJournalLine."Journal Batch Name" := ActGenJnlLine."Journal Batch Name";          LastLineNo := LastLineNo + 10000;          GenJournalLine."Line No." := LastLineNo;          GenJournalLine."Document No." := NextDocNo;...

    Ersättningskod 3

    ... GenJournalLine.INIT;          GenJournalLine."Journal Template Name" := ActGenJnlLine."Journal Template Name";          GenJournalLine."Journal Batch Name" := ActGenJnlLine."Journal Batch Name";// Add the following lines.GenJournalLine."Posting Date" := PostDate;GenJournalLine."Account Type" := GenJournalLine."Account Type"::Customer;IF Transaction = Transaction::Cancellation THEN BEGINIsCancellationExist := TRUE;GenJournalLine."Document Type" := GenJournalLine."Document Type"::Refund;NextDocNo := NoSeriesMgt.GetNextNo(GlBatchName."No. Series",PostDate,FALSE);END ELSEGenJournalLine."Document Type" := GenJournalLine."Document Type"::Payment;// End of the added lines.     LastLineNo := LastLineNo + 10000;          GenJournalLine."Line No." := LastLineNo;          GenJournalLine."Document No." := NextDocNo;...

    Befintlig kod 4

    ...LastLineNo := LastLineNo + 10000;          GenJournalLine."Line No." := LastLineNo;          GenJournalLine."Document No." := NextDocNo;// Delete the following lines.GenJournalLine."Posting Date" := PostDate;GenJournalLine."Account Type" := GenJournalLine."Account Type"::Customer;GenJournalLine."Document Type" := GenJournalLine."Document Type"::Payment;// End of the deleted lines.          GeneralLedgerSetup.GET;          IF GeneralLedgerSetup."LCY Code" <> Currency THEN...

    Ersättningskod 4

    ... LastLineNo := LastLineNo + 10000;          GenJournalLine."Line No." := LastLineNo;          GenJournalLine."Document No." := NextDocNo;// Add the following lines.IF Transaction = Transaction::Cancellation THENNextDocNo := NoSeriesMgt.GetNextNo(GlBatchName."No. Series",PostDate,FALSE);// End of the added lines.          GeneralLedgerSetup.GET;          IF GeneralLedgerSetup."LCY Code" <> Currency THEN...

    Befintlig kod 5

    ... IF CustLedgerEntry.FIND('-') THEN            GenJournalLine.VALIDATE("Account No.",CustLedgerEntry."Customer No.");// Delete the following lines.GenJournalLine."Applies-to Doc. Type" := GenJournalLine."Applies-to Doc. Type"::Invoice;GenJournalLine."Applies-to Doc. No." := InInvoiceNo;// End of the deleted lines.          IF GenJournalLine."Currency Code" <> CustLedgerEntry."Currency Code" THEN            GenJournalLine.VALIDATE("Currency Code",CustLedgerEntry."Currency Code");...

    Ersättningskod 5

    ... IF CustLedgerEntry.FIND('-') THEN            GenJournalLine.VALIDATE("Account No.",CustLedgerEntry."Customer No.");// Add the following lines.IF Transaction <> Transaction::Cancellation THEN BEGINGenJournalLine."Applies-to Doc. Type" := GenJournalLine."Applies-to Doc. Type"::Invoice;GenJournalLine."Applies-to Doc. No." := InInvoiceNo;END;// End of the added lines.          IF GenJournalLine."Currency Code" <> CustLedgerEntry."Currency Code" THEN            GenJournalLine.VALIDATE("Currency Code",CustLedgerEntry."Currency Code");...

    Befintlig kod 6

    ...// *** Bal account per line or as combined entry// Delete the following line.IF MultiplePostingDates THEN BEGIN// End of the deleted line.        // Bal Account per line        IF GenJournalLine.FIND('-') THEN          REPEAT...

    Ersättningskod 6

    ...// *** Bal account per line or as combined entry// Add the following line.IF MultiplePostingDates OR IsCancellationExist THEN BEGIN// End of the added line.        // Bal Account per line        IF GenJournalLine.FIND('-') THEN          REPEAT...

Förutsättningar

Du måste ha någon av följande produkter som har installerat den här snabbkorrigeringen:

  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 R2

  • Den schweiziska versionen av Microsoft Dynamics NAV 2009 SP1

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".

Obs! Detta är en "SNABBPUBLICERING"-artikel skapad direkt från Microsoft support-organisationen. Informationen häri tillhandahålls i befintligt skick som svar på nya problem. Till följd av hastigheten för att göra det tillgängligt kan materialet innehålla typografiska fel och kan ändras när som helst utan föregående meddelande. Se Villkoren för användningför andra överväganden.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.

Communities hjälper dig att ställa och svara på frågor, ge feedback och få råd från experter med rika kunskaper.