Falscher Dokumenttyp beim Importieren von Dateien in der Schweizer Version von Microsoft Dynamics NAV 2009 LSV DD

Vorlage: CPR - Navision Fiacx Vorlage

Fehler #: 215930 (Content Maintenance)

Problembeschreibung

Ein falscher Dokumenttyp wird verwendet, wenn Sie LSV DD (Lastschriftverfahren) Dateien importieren und abgelehnten Zahlung in der Schweizer Version von Microsoft Dynamics NAV 2009 vorhanden. Wenn eine Zahlung storniert wurde, wird die Belegart Zahlung noch fest. Jedoch Buchen nicht die Einträge durch falschen Vorzeichen des Betrags. Folgen Sie den Schritten im Abschnitt ändert sich dieses Problem lösen. Dieses Problem tritt in den folgenden Produkten auf:

  • Die Schweizer Version von Microsoft Dynamics NAV 2009 R2

  • Die Schweizer Version von Microsoft Dynamics NAV 2009 SP1

Problemlösung

Hotfix-Informationen

Ein unterstützter Hotfix ist inzwischen von Microsoft erhältlich. Allerdings ist es lediglich zur Behebung dieses Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise noch getestet. Wenn Ihr System durch dieses Problem nicht schwerwiegend beeinträchtigt ist, empfehlen wir, dass Sie warten auf das nächste Servicepack für Microsoft Dynamics NAV 2009 oder die nächste Microsoft Dynamics NAV-Version, die diesen Hotfix enthält.

Hinweis In besonderen Fällen bestimmt Gebühren fallen normalerweise Support aufrufen Wenn Experte Support für Microsoft Dynamics und zugehörige Produkte storniert werden können, dass ein bestimmtes Update Ihr Problem behebt. Die normalen Supportkosten gilt für zusätzliche Supportfragen und Probleme, die nicht für das betreffende Update qualifizieren.

Dieser Hotfix nicht öffentlich zum Download (d. h. eine öffentliche URL für diesen Hotfix nicht in diesem Artikel bereitgestellt wird) gebucht, Verteilung erfordert technische Eskalation Teammitglied oder Genehmigung eines Managers und Folgendes gilt:

  • Um den Hotfix zu erhalten, müssen Kunden den Fehler, der im Abschnitt "Symptome" genannt.

  • Sie müssen die Kunden aufzeichnen zu senden und sie mit dem nächsten Servicepack angeben, wenn es verfügbar wird (wenn ein Servicepack veröffentlicht wird).

Dieser Hotfix wird nicht in Microsoft Dynamics NAV Service Pack enthalten sein.

Informationen zur Installation

Microsoft bietet Programmierbeispiele lediglich zur Veranschaulichung, ohne ausdrückliche oder konkludente Gewährleistung. Dies beinhaltet, ist jedoch nicht beschränkt auf, konkludente Gewährleistungen der Tauglichkeit oder Eignung für einen bestimmten Zweck. Dieser Artikel setzt voraus, dass Sie mit der von Beispielen verwendeten Programmiersprache und den Tools, die zum Erstellen und Debuggen von Prozeduren verwendet werden, vertraut sind. Microsoft-Supporttechniker helfen der Erläuterung der Funktionalität bestimmter Prozeduren. Allerdings werden sie diese Beispiele nicht ändern, um zusätzliche Funktionalität bereitzustellen oder Prozeduren erstellen, die Ihren spezifischen Bedürfnisse erfüllen.

Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Microsoft Dynamics NAV-Clientbenutzer vom System abgemeldet werden. Hierzu gehören Dienste Microsoft Dynamics NAV Application Server (NAS). Sie sollte nur-Client-Benutzers, der angemeldet ist, wenn Sie diesen Hotfix installieren.

Muss eine Entwicklerlizenz verfügen, um diesen Hotfix installieren können.

Es wird empfohlen, das Benutzerkonto im Fenster Windows-Benutzernamen oder im Fenster Datenbank-Anmeldenamen "SUPER" Rollen-ID zugewiesen werden Wenn das Benutzerkonto die Rollen-ID "SUPER" nicht zugeordnet werden kann, müssen Sie sicherstellen, dass das Benutzerkonto die folgenden Berechtigungen verfügt:

  • Änderungsberechtigung für das Objekt, das Sie ändern.

  • Ausführungsberechtigung für System Object ID 5210 und System Object ID 9015

    Objekt.

Hinweis Sie müssen keine Rechte für die Datenspeicher haben, es sei denn, Sie müssen eine Datenreparatur durchführen.

Ändern von Code

Hinweis Testen Sie Programmcodeverbesserungen generell erst in einem Testsytem, bevor Sie sie im Produktionssystem verwenden.

Gehen Sie folgendermaßen vor, um dieses Problem zu beheben:

  1. Ändern Sie den Code in der LSVMgt Codeunit (3010831) Globale Variablen wie folgt:
    Vorhandener code

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

    Neuer code

    ...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. Ändern Sie den Code in ImportDebitDirectFile Funktion in LSVMgt Codeunit (3010831) wie folgt:
    Vorhandener Code 1

    ...FeeAmount := 0;
    TotalRecRecords := 0;
    TotalRecRecordsRev := 0;

    // Journal name for no serie
    GlBatchName.GET(ActGenJnlLine."Journal Template Name",ActGenJnlLine."Journal Batch Name");
    ...

    Neuer Code 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");
    ...

    Vorhandener Code 2

    ...// Split File line into fields

    // Delete the following lines.
    FileID := COPYSTR(Line,1,3);
    IF FileID <> '036' THEN
    ERROR(Text049 + Text011);
    TA := COPYSTR(Line,36,2);
    IF NOT (TA = '97') THEN BEGIN
    TotalRecord := 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 THEN
    PostDate := DMY2DATE(ddCR,mmCR,1900 + yyCR)
    ELSE
    PostDate := 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 DIRECT
    LsvJour.RESET;
    LsvJour.SETRANGE("Credit Date",PostDate);
    LsvJour.SETRANGE("DebitDirect Orderno.",DebitDirectOrderNo);
    IF NOT LsvJour.FIND('+') THEN
    ERROR(Text059,DebitDirectOrderNo,PostDate);

    LsvJournalLine.RESET;
    //CH0001.begin
    LsvJournalLine.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 BEGIN
    d.CLOSE;
    ERROR(Text11500, DebitDirectRecordNo, DebitDirectOrderNo);
    END;
    //CH0001.end
    InInvoiceNo := LsvJournalLine."Applies-to Doc. No.";
    // END DEBIT DIRECT

    // Process transaction of credit record
    CASE TA OF
    '81': // Credit
    BEGIN
    Transaction := Transaction::Credit;
    LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Open;
    LsvJournalLine."DD Rejection Reason" := LsvJournalLine."DD Rejection Reason"::" ";
    LsvJournalLine.MODIFY;

    IF LSVSetup.READPERMISSION THEN BEGIN
    ClosedByESR(InInvoiceNo);
    END;
    END;
    '84': // Cancellation "Storno"
    BEGIN
    IF RejectionCode <> 2 THEN
    Transaction := Transaction::Correction
    ELSE
    Transaction := Transaction::Cancellation;

    LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Rejected;
    LsvJournalLine."DD Rejection Reason" := RejectionCode;
    LsvJournalLine.MODIFY;
    END;
    ELSE
    ERROR(Text023 + Text011);
    END;
    END ELSE BEGIN
    TotalRecord := 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 Count
    EVALUATE(TempAmount,COPYSTR(Line,54,6));
    TotalRecRecords := TotalRecRecords + TempAmount;
    // Rejection Count
    EVALUATE(TempAmount,COPYSTR(Line,76,6));
    TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
    // Reversal Count
    EVALUATE(TempAmount,COPYSTR(Line,98,6));
    TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
    END;
    // END OF SPLIT

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

    Neuer Code 2

    ...// Split File line into fields

    // Add the following lines.
    FileID := COPYSTR(Line,1,3);
    IF FileID <> '036' THEN
    ERROR(Text049 + Text011);
    TA := COPYSTR(Line,36,2);
    IF NOT (TA = '97') THEN BEGIN
    TotalRecord := 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 THEN
    PostDate := DMY2DATE(ddCR,mmCR,1900 + yyCR)
    ELSE
    PostDate := 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 DIRECT
    LsvJour.RESET;
    LsvJour.SETRANGE("Credit Date",PostDate);
    LsvJour.SETRANGE("DebitDirect Orderno.",DebitDirectOrderNo);
    IF NOT LsvJour.FIND('+') THEN
    ERROR(Text059,DebitDirectOrderNo,PostDate);

    LsvJournalLine.RESET;
    //CH0001.begin
    LsvJournalLine.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 BEGIN
    d.CLOSE;
    ERROR(Text11500, DebitDirectRecordNo, DebitDirectOrderNo);
    END;
    //CH0001.end
    InInvoiceNo := LsvJournalLine."Applies-to Doc. No.";
    // END DEBIT DIRECT

    // Process transaction of credit record
    CASE TA OF
    '81': // Credit
    BEGIN
    Transaction := Transaction::Credit;
    LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Open;
    LsvJournalLine."DD Rejection Reason" := LsvJournalLine."DD Rejection Reason"::" ";
    LsvJournalLine.MODIFY;

    IF LSVSetup.READPERMISSION THEN BEGIN
    ClosedByESR(InInvoiceNo);
    END;
    END;
    '84': // Cancellation "Storno"
    BEGIN
    IF RejectionCode <> 2 THEN
    Transaction := Transaction::Correction
    ELSE
    Transaction := Transaction::Cancellation;

    LsvJournalLine."LSV Status" := LsvJournalLine."LSV Status"::Rejected;
    LsvJournalLine."DD Rejection Reason" := RejectionCode;
    LsvJournalLine.MODIFY;
    END;
    ELSE
    ERROR(Text023 + Text011);
    END;
    END ELSE BEGIN
    TotalRecord := 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 Count
    EVALUATE(TempAmount,COPYSTR(Line,54,6));
    TotalRecRecords := TotalRecRecords + TempAmount;
    // Rejection Count
    EVALUATE(TempAmount,COPYSTR(Line,76,6));
    TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
    // Reversal Count
    EVALUATE(TempAmount,COPYSTR(Line,98,6));
    TotalRecRecordsRev := TotalRecRecordsRev + TempAmount;
    END;
    // END OF SPLIT

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

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

    Neuer Code 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 BEGIN
    IsCancellationExist := TRUE;
    GenJournalLine."Document Type" := GenJournalLine."Document Type"::Refund;
    NextDocNo := NoSeriesMgt.GetNextNo(GlBatchName."No. Series",PostDate,FALSE);
    END ELSE
    GenJournalLine."Document Type" := GenJournalLine."Document Type"::Payment;

    // End of the added lines.

    LastLineNo := LastLineNo + 10000;
    GenJournalLine."Line No." := LastLineNo;
    GenJournalLine."Document No." := NextDocNo;
    ...

    Vorhandenen Code 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
    ...

    Neuer Code 4

    ... LastLineNo := LastLineNo + 10000;
    GenJournalLine."Line No." := LastLineNo;
    GenJournalLine."Document No." := NextDocNo;

    // Add the following lines.

    IF Transaction = Transaction::Cancellation THEN
    NextDocNo := NoSeriesMgt.GetNextNo(GlBatchName."No. Series",PostDate,FALSE);
    // End of the added lines.

    GeneralLedgerSetup.GET;
    IF GeneralLedgerSetup."LCY Code" <> Currency THEN
    ...

    Vorhandenen Code 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");
    ...

    Neuer Code 5

    ... IF CustLedgerEntry.FIND('-') THEN
    GenJournalLine.VALIDATE("Account No.",CustLedgerEntry."Customer No.");

    // Add the following lines.
    IF Transaction <> Transaction::Cancellation THEN BEGIN
    GenJournalLine."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");
    ...

    Vorhandenen Code 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
    ...

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

Voraussetzungen

Sie müssen eines der folgenden Produkte verfügen, um diesen Hotfix installieren:

  • Die Schweizer Version von Microsoft Dynamics NAV 2009 R2

  • Die Schweizer Version von Microsoft Dynamics NAV 2009 SP1

Informationen zur Deinstallation

Dieser Hotfix kann nicht entfernt werden.

Status

Microsoft hat bestätigt, dass es sich um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Eigenschaften“ aufgeführt sind.

Referenzen

VSFT DynamicsNAVSE: 354336

Hinweis Dies ist ein im Schnellverfahren veröffentlichter Artikel, der direkt in der Microsoft Support-Organisation erstellt wurde. Die hierin enthaltenen Informationen werden ohne Mängelgewähr in Reaktion auf neue Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung kann das Material möglicherweise typografische Fehler enthalten und jederzeit ohne vorherige Ankündigung geändert werden. Weitere Hinweise finden Sie unter Geschäftsbedingungen.

Author: Andreas.Guenther
Writer: v-luzo
Technische Überprüfung: Andreas.Guenther
Editor:

Benötigen Sie weitere Hilfe?

Ihre Office-Fähigkeiten erweitern
Schulungen erkunden
Neue Funktionen als Erster erhalten
Microsoft Insider beitreten

War diese Information hilfreich?

Vielen Dank für Ihr Feedback!

Vielen Dank für Ihr Feedback. Es klingt, als ob es hilfreich sein könnte, Sie mit einem unserer Office-Supportmitarbeiter zu verbinden.

×