Tuesday, January 30, 2024

Der Gutschriftsbetrag wird in der spanischen Version von Microsoft Dynamics NAV 2009 nicht als Korrekturbetrag exportiert - Microsoft Support

Symptome

Wenn die Periode und das Geschäftsjahr in einer Gutschrift und einer Rechnung identisch sind und der Betrag der Gutschrift höher als der Rechnungsbetrag ist, exportiert die 349-Erklärung den Betrag als positiven Betrag, der in der spanischen Version von Microsoft Dynamics NAV 2009 deklariert werden soll. Stattdessen sollte er als Korrekturbetrag exportiert werden. Befolgen Sie die Schritte im Abschnitt „Codeänderungen", um dieses Problem zu beheben. Dieses Problem tritt bei folgenden Produkten auf:

  • Die spanische Version von Microsoft Dynamics NAV 2009 R2

  • Die spanische 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 in Datenelement Nummer 5 im Bericht „Make 349 Declaration" (10710) wie folgt:
    Vorhandener Code 1

     ...
    VATEntry@1100001: Datensatz 254;
    Betrag@1100000: ARRAY [3] OF Decimal;
    AccPrevDeclAmount@1100005 : ARRAY [3] OF Decimal;
    AccOrigDeclAmount@1100004 : ARRAY [3] OF Decimal;
    i@1100002 : Ganzzahl;
    BEGINNEN
    // es0014.begin
    WHILE (Kunde."VAT Registration No." = PreVATRegNo) OR (Customer."VAT Registration No." = '') DO // ES0032
    WENN Kunde.NEXT = 0 DANN
    AUSFAHRT;
    ...

    Ersatzcode 1

     ...
    VATEntry@1100001: Datensatz 254;
    Betrag@1100000: ARRAY [3] OF Decimal;
    AccPrevDeclAmount@1100005 : ARRAY [3] OF Decimal;
    AccOrigDeclAmount@1100004 : ARRAY [3] OF Decimal;
    i@1100002 : Ganzzahl;

    // Fügen Sie die folgenden Zeilen hinzu.
    CreditMemoOrgDeclaredAmt@1100003 : Dezimal;
    CreditMemoAmt@1100006 : Dezimal;
    AppliedAmt@1100008: Dezimal;
    IsCreditMomoPrinted@1100007: Boolean;
    // Ende der hinzugefügten Zeilen.

    BEGINNEN
    // es0014.begin
    WHILE (Kunde."VAT Registration No." = PreVATRegNo) OR (Customer."VAT Registration No." = '') DO // ES0032
    WENN Kunde.NEXT = 0 DANN
    AUSFAHRT;
    ...

    Vorhandener Code 2

     ...
    WENN CustVendWarning349 „EU-3-Parteien-Handel" DANN BEGINNEN
    AmountOpTri := AmountOpTri + CustVendWarning349."Ursprünglich deklarierter Betrag";
    CorrIncludedForOpTriAmount := TRUE;
    ENDE SONST BEGINNEN
    VATEntry.GET(CustVendWarning349."VAT Entry No.");

    // Folgende Zeile löschen.
    SummarizeBaseAmount(VATEntry,CustVendWarning349."Ursprünglich deklarierter Betrag",Amount);
    // Ende der gelöschten Zeile.

    CorrIncludedForNormalAmount := TRUE;
    ENDE;
    ENDE;
    // es0033.end
    ENDE;
    ...

    Ersatzcode 2

     ...
    WENN CustVendWarning349 „EU-3-Parteien-Handel" DANN BEGINNEN
    AmountOpTri := AmountOpTri + CustVendWarning349."Ursprünglich deklarierter Betrag";
    CorrIncludedForOpTriAmount := TRUE;
    ENDE SONST BEGINNEN
    VATEntry.GET(CustVendWarning349."VAT Entry No.");

    // Fügen Sie die folgenden Zeilen hinzu.
    WENN ABS(Amount[1]) >= GetTotalCreditMemoAmt - AppliedAmt THEN BEGIN
    AppliedAmt += ABS(Amount[1]);
    SummarizeBaseAmount(VATEntry,CustVendWarning349."Ursprünglich deklarierter Betrag",Amount);
    AppliedAmt -= ABS(Amount[1]);
    ENDE SONST BEGINNEN
    CreditMemoOrgDeclaredAmt += CustVendWarning349."Ursprünglich deklarierter Betrag";
    CreditMemoAmt += VATEntry.Base;
    NoOfCorrections += 1;
    IsCreditMomoPrinted := TRUE;
    ENDE;
    // Ende der hinzugefügten Zeilen.

    CorrIncludedForNormalAmount := TRUE;
    ENDE;
    ENDE;
    // es0033.end
    ENDE;
    ...

    Vorhandener Code 3

     ...
    'S' + CONVERTSTR(TextAmount,'','0') + PADSTR('',354,' ');
    NoOperations := NoOperations + 1;
    TotalAmtShip := TotalAmtShip + AmountEUService;
    OutFile.WRITE(Txt);
    ENDE;
    // es0033.end
    ENDE;
    ENDE;
    // es0014.end
    ENDE;
    ...

    Ersatzcode 3

     ...
    'S' + CONVERTSTR(TextAmount,'','0') + PADSTR('',354,' ');
    NoOperations := NoOperations + 1;
    TotalAmtShip := TotalAmtShip + AmountEUService;
    OutFile.WRITE(Txt);
    ENDE;

    // Fügen Sie die folgenden Zeilen hinzu.
    WENN IsCreditMomoPrinted DANN BEGINNEN
    TextAmount2 := COPYSTR(FormatTextAmt(ABS(CreditMemoOrgDeclaredAmt)),3,13);
    TextAmount := COPYSTR(FormatTextAmt(ABS(CreditMemoAmt)),3,13);
    CustVendCountry.GET(Customer2."Länder-/Regionscode");
    Txt :=
    '2' + '349' + Geschäftsjahr + PADSTR(VatRegNo,9,'') + PADSTR('',58,'') +
    FORMAT(CustVendCountry."EU-Länder-/Regionscode",2) + FORMAT(CustVendVatRegNo,15) +
    PADSTR(CONVERTSTR(UPPERCASE(Customer2.Name),'µ· ÔÖÞàã饚€()"&ï','AAEEIIOOUUÑUÇ '),40,' ') +
    'E' + PADSTR('',13,'') + CustVendWarning349."Original Declaration FY" +
    CustVendWarning349."Ursprünglicher Deklarationszeitraum" + TextAmount2 + TextAmount +
    PADSTR('',322,'');
    NoOperations += 1;
    TotalAmtShip += AmountEUService;
    OutFile.WRITE(Txt);
    ENDE;
    // Ende der hinzugefügten Zeilen.

    // es0033.end
    ENDE;
    ENDE;
    // es0014.end
    ENDE;
    ...
  2. Ändern Sie den Code in Datenelement Nummer 6 im Bericht „Make 349 Declaration" (10710) wie folgt:
    Vorhandener Code 1

     ...
    PreVATRegNo := '';
    // es0014.end
    // es0013.end
    ENDE;

    // Folgende Zeile löschen.
    OnAfterGetRecord=BEGIN
    // Ende der gelöschten Zeile.

    // es0014.begin
    WHILE (Vendor."VAT Registration No." = PreVATRegNo) OR (Vendor."VAT Registration No." = '') DO // ES0032
    WENN Vendor.NEXT = 0 DANN
    AUSFAHRT;
    PreVATRegNo := Vendor."VAT Registration No.";
    ...

    Ersatzcode 1

     ...
    PreVATRegNo := '';
    // es0014.end
    // es0013.end
    ENDE;

    // Fügen Sie die folgenden Zeilen hinzu.
    OnAfterGetRecord=VAR
    AppliedAmt@1100000: Dezimal;
    PurchCreditMemoOrgDeclaredAmt@1100001 : Dezimal;
    PurchCreditMemoAmt@1100002 : Ganzzahl;
    IsPurchCreditMomoPrinted@1100003: Boolean;
    BEGINNEN
    // Ende der hinzugefügten Zeilen.

    // es0014.begin
    WHILE (Vendor."VAT Registration No." = PreVATRegNo) OR (Vendor."VAT Registration No." = '') DO // ES0032
    WENN Vendor.NEXT = 0 DANN
    AUSFAHRT;
    PreVATRegNo := Vendor."VAT Registration No.";
    ...

    Vorhandener Code 2

     ...
    ENDE SONST BEGINNEN
    WENN CustVendWarning349 „EU-3-Parteien-Handel" DANN BEGINNEN
    AmountOpTri := AmountOpTri - CustVendWarning349."Ursprünglich deklarierter Betrag";
    CorrIncludedForOpTriAmount := TRUE;
    ENDE SONST BEGINNEN

    // Folgende Zeile löschen.
    NormalAmount := NormalAmount - CustVendWarning349."Ursprünglich deklarierter Betrag";
    // Ende der gelöschten Zeile.

    CorrIncludedForNormalAmount := TRUE;
    ENDE;
    ENDE;
    // es0033.end
    ENDE;
    ...

    Ersatzcode 2

     ...
    ENDE SONST BEGINNEN
    WENN CustVendWarning349 „EU-3-Parteien-Handel" DANN BEGINNEN
    AmountOpTri := AmountOpTri - CustVendWarning349."Ursprünglich deklarierter Betrag";
    CorrIncludedForOpTriAmount := TRUE;
    ENDE SONST BEGINNEN

    // Fügen Sie die folgenden Zeilen hinzu.
    WENN ABS(NormalAmount) >= GetTotalPurchCreditMemoAmt - AppliedAmt DANN BEGINNEN
    AppliedAmt += ABS(NormalAmount);
    NormalAmount := NormalAmount - CustVendWarning349."Ursprünglich deklarierter Betrag";
    AppliedAmt -= ABS(NormalAmount);
    ENDE SONST BEGINNEN
    PurchCreditMemoOrgDeclaredAmt += CustVendWarning349."Ursprünglich deklarierter Betrag";
    NoOfCorrections += 1;
    IsPurchCreditMomoPrinted := TRUE;
    ENDE;
    // Ende der hinzugefügten Zeilen.

    CorrIncludedForNormalAmount := TRUE;
    ENDE;
    ENDE;
    // es0033.end
    ENDE;
    ...

    Vorhandener Code 3

     ...
    OutFile.WRITE(Txt);
    ENDE;
    // es0033.end
    ENDE;
    // es0014.end
    ENDE;

    GroupTotalFields=Umsatzsteuer-Registrierungsnummer;
    DataItemLink=Länder-/Regionscode=FIELD(Code);
    }
    ...

    Ersatzcode 3

     ...
    OutFile.WRITE(Txt);
    ENDE;
    // es0033.end
    ENDE;
    // es0014.end

    // Fügen Sie die folgenden Zeilen hinzu.
    WENNPurchCreditMomoPrinted DANN BEGINNEN
    TextAmount := COPYSTR(FormatTextAmt(ABS(PurchCreditMemoOrgDeclaredAmt)),3,13);
    CustVendCountry.GET(Customer2."Länder-/Regionscode");
    Txt :=
    '2' + '349' + Geschäftsjahr + PADSTR(VatRegNo,9,'') + PADSTR('',58,'') +
    FORMAT(CustVendCountry."EU-Länder-/Regionscode",2) + FORMAT(CustVendVatRegNo,15) +
    PADSTR(CONVERTSTR(UPPERCASE(Vendor2.Name),'µ· ÔÖÞàãé륚€()"&ï','AAEEIIOOUUÑUÇ '),40,' ') +
    'E' + PADSTR('',13,'') + CustVendWarning349."Original Declaration FY" +
    CustVendWarning349."Ursprünglicher Deklarationszeitraum" + TextAmount +
    PADSTR('',322,'');
    NoOperations += 1;
    TotalAmtShip += AmountEUService;
    OutFile.WRITE(Txt);
    ENDE;
    // Ende der hinzugefügten Zeilen.

    ENDE;

    GroupTotalFields=Umsatzsteuer-Registrierungsnummer;
    DataItemLink=Länder-/Regionscode=FIELD(Code);
    }
    ...
  3. Fügen Sie dem Bericht „Make 349 Declaration" (10710) drei neue Funktionen wie folgt hinzu:

     ...
    LOKALE VERFAHREN GetTotalCreditMemoAmt@1100010() : Dezimal;
    VAR
    CustVendWarning349@1100000: Datensatz 10732;
    VATEntry@1100002: Datensatz 254;
    TotalAmount@1100001: ARRAY [3] OF Decimal;
    BEGINNEN
    FilterCustVendWarning349(CustVendWarning349,CustVendWarning349.Type::Sale,Customer2."No.");
    WENN CustVendWarning349.FINDSET, DANN BEGINNEN
    WIEDERHOLEN
    WENN Kunde2. „Umsatzsteuer-Identifikationsnummer." <> '' DANN BEGINNEN
    VATEntry.GET(CustVendWarning349."VAT Entry No.");
    SummarizeBaseAmount(VATEntry,CustVendWarning349."Ursprünglich deklarierter Betrag",TotalAmount)
    ENDE;
    BIS CustVendWarning349.NEXT = 0;
    EXIT(TotalAmount[1]);
    ENDE;
    ENDE;

    LOKALE VERFAHREN GetTotalPurchCreditMemoAmt@1100013() : Dezimal;
    VAR
    CustVendWarning349@1100000: Datensatz 10732;
    VATEntry@1100002: Datensatz 254;
    TotalAmount@1100001 : Dezimal;
    BEGINNEN
    FilterCustVendWarning349(CustVendWarning349,CustVendWarning349.Type::Purchase,Vendor2."No.");
    WENN CustVendWarning349.FINDSET, DANN BEGINNEN
    WIEDERHOLEN
    WENN Lieferant2. „Umsatzsteuer-Identifikationsnummer." <> '' DANN BEGINNEN
    TotalAmount += ABS(CustVendWarning349."Original Declared Amount");
    ENDE;
    BIS CustVendWarning349.NEXT = 0;
    EXIT(TotalAmount);
    ENDE;
    ENDE;

    LOKALE VERFAHREN FilterCustVendWarning349@1100008(VAR CustVendWarning349@1100002 : Record 10732;docType@1100000 : Option;No@1100001 : Code[20]);
    BEGINNEN
    MIT CustVendWarning349 BEGINNEN
    SETRANGE(Type,docType);
    SETRANGE("Customer/Vendor No.",No);
    SETRANGE("Posting Date",FromDate,ToDate);
    SETRANGE("Korrektur einschließen",TRUE);
    ENDE;
    ENDE;

    ...

Voraussetzungen

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

  • Die spanische Version von Microsoft Dynamics NAV 2009 R2

  • Die spanische 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