Sunday, March 3, 2024

Die Kundenrechnungsliste zeigt falsche Informationen zu Zahlungszeilen in der italienischen Version von Microsoft Dynamics NAV 2009 - Microsoft-Support

Symptome

Wenn Sie nach der Installation der neuesten Version des Berichts „Kundenrechnungsliste" eine Rechnung auf die zugehörige Zahlungstransaktion anwenden und diese dann in der italienischen Version von Microsoft Dynamics NAV 2009 buchen, wird die Zahlung im Bericht nicht angezeigt. Die Rechnung wird nur als abgeschlossen angezeigt. Befolgen Sie die Schritte im Abschnitt „Codeänderungen", um dieses Problem zu beheben. Dieses Problem tritt bei folgenden Produkten auf:

  • Die italienische Version von Microsoft Dynamics NAV 2009 R2

  • Die italienische Version von Microsoft Dynamics NAV 2009 SP1

Auflösung

Hotfix-Informationen

Ein unterstützter Hotfix ist jetzt von Microsoft verfügbar. Es dient jedoch lediglich der Behebung des in diesem Artikel beschriebenen Problems. Wenden Sie es nur auf Systeme an, bei denen dieses spezielle Problem auftritt. Dieser Hotfix wird möglicherweise weiteren Tests unterzogen. Wenn Sie von diesem Problem nicht schwerwiegend betroffen sind, empfehlen wir Ihnen daher, auf das nächste Microsoft Dynamics NAV 2009 Service Pack oder die nächste Microsoft Dynamics NAV-Version zu warten, die diesen Hotfix enthält.

Hinweis: In besonderen Fällen können die Gebühren, die normalerweise für Supportanrufe anfallen, storniert werden, wenn ein Mitarbeiter des technischen Supports für Microsoft Dynamics und verwandte Produkte feststellt, dass ein bestimmtes Update Ihr Problem lösen wird. Für zusätzliche Supportfragen und Probleme, die für das jeweilige Update nicht in Frage kommen, fallen die üblichen Supportkosten an.

Installationsinformationen

Microsoft stellt Programmierbeispiele nur zur Veranschaulichung zur Verfügung, ohne ausdrückliche oder stillschweigende Gewährleistung. Dazu gehören unter anderem stillschweigende Garantien der Marktgängigkeit oder Eignung für einen bestimmten Zweck. In diesem Artikel wird davon ausgegangen, dass Sie mit der demonstrierten Programmiersprache und den Tools vertraut sind, die zum Erstellen und Debuggen von Prozeduren verwendet werden. Microsoft-Supporttechniker können dabei helfen, die Funktionalität eines bestimmten Verfahrens zu erläutern. Sie werden diese Beispiele jedoch nicht ändern, um zusätzliche Funktionalität bereitzustellen oder Prozeduren zu erstellen, die Ihren spezifischen Anforderungen entsprechen.

Hinweis Bevor Sie diesen Hotfix installieren, stellen Sie sicher, dass alle Benutzer des Microsoft Dynamics NAV-Clients vom System abgemeldet sind. Dazu gehören Microsoft Dynamics NAV Application Server (NAS)-Dienste. Sie sollten der einzige Clientbenutzer sein, der angemeldet ist, wenn Sie diesen Hotfix implementieren.

Um diesen Hotfix zu implementieren, benötigen Sie eine Entwicklerlizenz.

Wir empfehlen, dem Benutzerkonto im Fenster „Windows-Anmeldungen" oder im Fenster „Datenbank-Anmeldungen" die Rollen-ID „SUPER" zuzuweisen. Wenn dem Benutzerkonto nicht die Rollen-ID „SUPER" zugewiesen werden kann, müssen Sie überprüfen, ob das Benutzerkonto über die folgenden Berechtigungen verfügt:

  • Die Änderungsberechtigung für das Objekt, das Sie ändern möchten.

  • Die Ausführungsberechtigung für das Systemobjekt-ID-5210-Objekt und für das Systemobjekt-ID-9015-Objekt

    Objekt.

Hinweis Sie müssen keine Rechte an den Datenspeichern haben, es sei denn, Sie müssen eine Datenreparatur durchführen.

Codeänderungen

Hinweis: Testen Sie Codekorrekturen immer in einer kontrollierten Umgebung, bevor Sie die Korrekturen auf Ihren Produktionscomputern anwenden.

Um dieses Problem zu beheben, führen Sie die folgenden Schritte aus:

  1. Ändern Sie den Code im Bericht „Kundenrechnungsliste" (12117) wie folgt:
    Vorhandener Code 1

     ...
    DataItemTableView=SORTIERUNG (Kundenposten-Nr., Buchungstyp, Buchungsdatum)
    WHERE(Eintragstyp=CONST(Anwendung));
    OnPreDataItem=BEGIN

    // Folgende Zeile löschen.
    CustLedgEntry1.COPYFILTER("Buchungsdatum", "Detaillierter Kundenbucheintrag"."Buchungsdatum"); // IT0004
    // Ende der gelöschten Zeile.

    ENDE;

    OnAfterGetRecord=BEGIN
    ...

    Ersatzcode 1

     ...
    DataItemTableView=SORTIERUNG (Kundenposten-Nr., Buchungstyp, Buchungsdatum)
    WHERE(Eintragstyp=CONST(Anwendung));
    OnPreDataItem=BEGIN

    // Fügen Sie die folgende Zeile hinzu.
    FindAppliedDtldCustLedgEntry(CustLedgEntry1."Entry No.");
    // Ende der hinzugefügten Zeile.

    ENDE;

    OnAfterGetRecord=BEGIN
    ...

    Vorhandener Code 2

     ...
    { ENDE;

    OnAfterGetRecord=BEGIN

    // Folgende Zeilen löschen.
    IF („Eintrags-Nr." = 0) ODER („Nicht angewendet durch Eintrags-Nr." <> 0) ODER
    ("Dokumenttyp" IN
    ["Dokumenttyp"::Zahlung,"Dokumenttyp"::Rückerstattung,"Dokumenttyp"::Dishonored,"Dokumenttyp"::" "])
    DANN
    ShowDetailedCustLedgerEntry := TRUE
    ANDERS
    ShowDetailedCustLedgerEntry := FALSE;
    // IT0015.begin
    //VSTF275923 begin
    // VSTF305887.begin
    //WENN PrintCustLedgEntry2 DANN
    WENN PrintCustLedgEntry2 UND ("Dokumenttyp" <> "Dokumenttyp"::Zahlung) DANN
    CurrReport.SKIP;
    // VSTF305887.end
    //CurrReport.SKIP;
    //VSTF275923 Ende
    // IT0015.end
    CustLedgEntry3.GET("Angewandte Kundenbucheintragsnr.");
    CustLedgEntry3.CALCFIELDS("Ursprünglicher Betrag (LCY)");
    // IT0004.begin
    ClosedByAmountLCY := "Betrag (LCY)";
    TotalForCustomer += „Betrag (MW)";
    // IT0004.end
    TotalClosedByAmntLCY += „Betrag (MW)"; // IT0005
    // Ende der gelöschten Zeilen.

    ENDE;

    DataItemLink=Kunde. Hauptbucheintragsnr.=FIELD(Eintragsnr.);
    ...

    Ersatzcode 2

     ...
    ENDE;

    OnAfterGetRecord=BEGIN

    // Fügen Sie die folgenden Zeilen hinzu.
    WENN NICHT TempDetailedCustLedgEntryApp.GET("Eintragsnr.") DANN
    CurrReport.SKIP;
    CustLedgEntry3.GET("Cust. Ledger Entry No.");
    CustLedgEntry3.CALCFIELDS("Ursprünglicher Betrag (LCY)");
    AppliedDocumentTypeText := FORMAT(CustLedgEntry3."Dokumenttyp");
    ClosedByAmountLCY := "Betrag (LCY)";
    TotalForCustomer -= "Betrag (MW)";
    TotalClosedByAmntLCY -= "Betrag (MW)";
    // Ende der hinzugefügten Zeilen.

    ENDE;

    DataItemLink=Kunde. Hauptbucheintragsnr.=FIELD(Eintragsnr.);
    ...

    Vorhandener Code 3

     ...
    Abschnittsbreite = 24450;
    Abschnittshöhe = 846;
    OnPreSection=BEGIN

    // Folgende Zeile löschen.
    CurrReport.SHOWOUTPUT(ShowDetailedCustLedgerEntry)
    // Ende der gelöschten Zeile.

    ENDE;

    }
    ...

    Ersatzcode 3

     ...
    Abschnittsbreite = 24450;
    Abschnittshöhe = 846;
    OnPreSection=BEGIN

    // Fügen Sie die folgenden Zeilen hinzu.
    WENN („Nicht angewendet durch Eintragsnr." <> 0) DANN
    CurrReport.SHOWOUTPUT(FALSE);
    // Ende der hinzugefügten Zeilen.

    ENDE;

    }
    ...

    Vorhandener Code 4

     ...
    ForeColor=65535;
    SourceExpr="Dokumenttyp" = "Dokumenttyp"::Dishonored;
    DataSetFieldName=Document_Type_____Document_Type___Dishonored }

    // Folgende Zeilen löschen.
    { 1130123;TextBox ;24000;0 ;150 ;423 ;Visible=Nein;
    SourceExpr=ShowDetailedCustLedgerEntry;
    DataSetFieldName=ShowDetailedCustLedgerEntry }
    // Ende der gelöschten Zeilen.

    }
    }
    { EIGENSCHAFTEN
    ...

    Ersatzcode 4

     ...
    ForeColor=65535;
    SourceExpr="Dokumenttyp" = "Dokumenttyp"::Dishonored;
    DataSetFieldName=Document_Type_____Document_Type___Dishonored }
    }
    }
    { EIGENSCHAFTEN
    ...
  2. Ändern Sie den Code im Bericht „Globale Variablen im Kundenrechnungsliste" (12117) wie folgt:
    Vorhandener Code 1

     ...
    Text000@1130000: TextConst 'ENU=Bitte geben Sie das Enddatum an';
    Text001@1130001: TextConst 'ENU=Der Wert für den Risikozeitraum für Bankeingänge darf im Verkaufs-Setup nicht leer sein';
    SalesSetup@1130002: Datensatz 311;
    EndingDate@1130003 : Datum;
    ExposureDate@1130004 : Datum;
    OnlyOpened@1130005: Boolean;
    ...

    Ersatzcode 1

     ...
    Text000@1130000: TextConst 'ENU=Bitte geben Sie das Enddatum an';
    Text001@1130001: TextConst 'ENU=Der Wert für den Risikozeitraum für Bankeingänge darf im Verkaufs-Setup nicht leer sein';
    SalesSetup@1130002: Datensatz 311;

    // Fügen Sie die folgenden Zeilen hinzu.
    CustLedgEntry3@1130130: Datensatz 21;
    TempDetailedCustLedgEntryApp@1130131: TEMPORÄRER Datensatz 379;
    // Ende der hinzugefügten Zeilen.

    EndingDate@1130003 : Datum;
    ExposureDate@1130004 : Datum;
    OnlyOpened@1130005: Boolean;
    ...

    Vorhandener Code 2

     ...
    TotExpAmntForCust@1130011 : Dezimal;
    BalanceDue@1130012 : Dezimal;
    NULL@1130013 : DateFormula;

    // Folgende Zeilen löschen.
    CustLedgEntry3@1130130: Datensatz 21;
    PrintCustLedgEntry2@1130014 : Boolean;
    ShowDetailedCustLedgerEntry@1130015 : Boolean INDATASET;
    // Ende der gelöschten Zeilen.

    BEGINNEN
    {
    ...

    Ersatzcode 2

     ...
    TotExpAmntForCust@1130011 : Dezimal;
    BalanceDue@1130012 : Dezimal;
    NULL@1130013 : DateFormula;

    // Fügen Sie die folgenden Zeilen hinzu.
    PrintCustLedgEntry2@1130014 : Boolean;
    AppliedDocumentTypeText@1130132: Text[30];

    LOKALE VERFAHREN FindAppliedDtldCustLedgEntry@1130007(CustLedgerEntryNo@1130000 : Integer);
    VAR
    DetailliertCustLedgEntry@1130001: Datensatz 379;
    DetailliertCustLedgEntryApplied@1130003: Datensatz 379;
    BEGINNEN
    TempDetailedCustLedgEntryApp.RESET;
    TempDetailedCustLedgEntryApp.DELETEALL;

    DetailliertCustLedgEntry.SETRANGE("Cust. Ledger Entry No.",CustLedgerEntryNo);
    DetailliertCustLedgEntry.SETRANGE("Entry Type",DetailedCustLedgEntry."Entry Type"::Application);
    DetailliertCustLedgEntry.SETRANGE(Unapplied,FALSE);

    DetailliertCustLedgEntryApplied.SETRANGE(
    "Eintragstyp",DetailedCustLedgEntryApplied."Eintragstyp"::Application);

    IF DetailliertCustLedgEntry.FINDSET DANN
    WIEDERHOLEN
    DetailliertCustLedgEntryApplied.SETRANGE(
    „Angewandte Kundenposten-Nr.",DetailedCustLedgEntry."Angewandte Kundenposten-Nr.");
    DetailliertCustLedgEntryApplied.SETFILTER(
    "Cust. Ledger Entry No.",'<>%1',CustLedgerEntryNo);
    DetailliertCustLedgEntryApplied.SETRANGE(
    "Customer No.",DetailedCustLedgEntry."Customer No.");
    DetailliertCustLedgEntryApplied.SETRANGE(
    "Transaction No.",DetailedCustLedgEntry."Transaction No.");
    IF DetailliertCustLedgEntryApplied.FINDSET THEN
    WIEDERHOLEN
    TempDetailedCustLedgEntryApp := DetailliertCustLedgEntryApplied;
    IF TempDetailedCustLedgEntryApp.INSERT THEN;
    BIS DetailliertCustLedgEntryApplied.NEXT = 0;
    BIS DetailliertCustLedgEntry.NEXT = 0;
    ENDE;
    // Ende der hinzugefügten Zeilen.

    BEGINNEN
    {
    ...
  3. Ändern Sie den Code im Bericht „Lieferantenkonto-Rechnungsliste" (12116) wie folgt:
    Vorhandener Code 1

     ...
    </TableRow>
    </TableRows>
    </Header>
    <Sichtbarkeit>
    <Hidden>=IIF(Fields!ShowDetailedCustLedgerEntry.Value,TRUE,FALSE)</Hidden>
    </Sichtbarkeit>
    </TableGroup>
    </TableGroups>
    <Top>2,22222cm</Top>
    ...

    Ersatzcode 1

     ...
    </TableRow>
    </TableRows>
    </Header>

    // Folgende Zeilen löschen.
    <Sichtbarkeit>
    <Hidden>=IIF(Fields!ShowDetailedCustLedgerEntry.Value,TRUE,FALSE)</Hidden>
    </Sichtbarkeit>
    // Ende der gelöschten Zeilen.

    </TableGroup>
    </TableGroups>
    <Top>2,22222cm</Top>
    ...

    Vorhandener Code 2

     ...
    Feldname="Detailed_Cust__Ledg__Entry_Cust__Ledger_Entry_No_">
    <DataField>Detailed_Cust__Ledg__Entry_Cust__Ledger_Entry_No_</DataField>
    </Feld>
    <Field Name="ShowDetailedCustLedgerEntry">
    <DataField>ShowDetailedCustomerLedgerEntry</DataField>
    </Feld>
    </Felder>
    <Abfrage>
    <Befehlstext />
    ...

    Ersatzcode 2

     ...
    <Field Name="Detailed_Cust__Ledg__Entry_Cust__Ledger_Entry_No_">
    <DataField>Detailed_Cust__Ledg__Entry_Cust__Ledger_Entry_No_</DataField>
    </Feld>

    // Folgende Zeilen löschen.
    <Field Name="ShowDetailedCustLedgerEntry">
    <DataField>ShowDetailedCustomerLedgerEntry</DataField>
    </Feld>
    // Ende der gelöschten Zeilen.

    </Felder>
    <Abfrage>
    <Befehlstext />
    ...

Voraussetzungen

Um diesen Hotfix anwenden zu können, muss eines der folgenden Produkte installiert sein:

  • Die italienische Version von Microsoft Dynamics NAV 2009 R2

  • Die italienische Version von Microsoft Dynamics NAV 2009 SP1

Informationen zum Entfernen

Sie können diesen Hotfix nicht entfernen.

Status

Microsoft hat bestätigt, dass es sich hierbei um ein Problem bei den Microsoft-Produkten handelt, die im Abschnitt „Gilt für" aufgeführt sind.

Hinweis Dies ist ein „FAST PUBLISH"-Artikel, der direkt von der Microsoft-Supportorganisation erstellt wurde. Die hierin enthaltenen Informationen werden unverändert als Reaktion auf neu auftretende Probleme bereitgestellt. Aufgrund der schnellen Bereitstellung können die Materialien Tippfehler enthalten und jederzeit ohne Vorankündigung überarbeitet werden. Weitere Hinweise finden Sie in den Nutzungsbedingungen .

No comments:

Post a Comment