Przejdź do głównej zawartości
Pomoc techniczna
Zaloguj się przy użyciu konta Microsoft
Zaloguj się lub utwórz konto.
Witaj,
Wybierz inne konto.
Masz wiele kont
Wybierz konto, za pomocą którego chcesz się zalogować.

Objawy

Po zastosowaniu aktualizacji przedpłat, zapisy VAT czasami być niepoprawne wartości w węgierskiej wersji programu Microsoft Dynamics NAV 2009 R2. Ponadto tworząc fakturę korygującą zaliczki w walucie obcej, kurs nieprawidłowych wartości waluty jest używany. Wykonaj kroki opisane w sekcji zmiany kodu , aby rozwiązać ten problem. Ten problem występuje w następujących produktach:

  • Węgierskiej wersji programu Microsoft Dynamics NAV 2009 R2

Rozwiązanie

Informacje o poprawce

Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak to jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service pack dla systemu Microsoft Dynamics NAV 2009 lub następną wersję systemu Microsoft Dynamics NAV, zawierający tę poprawkę.

Uwaga W wyjątkowych przypadkach opłaty, telefonujący do pomocy technicznej mogą zostać anulowane, jeśli pomocy technicznej dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji, można rozwiązać swój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.

Informacje dotyczące instalacji

Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. To obejmuje, ale nie jest ograniczona, ustawowej rękojmi co do przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że użytkownik zna demonstrowany język programowania oraz narzędzia, które są używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura. Nie będą jednak modyfikować tych przykładów ani dodawać funkcjonalności i konstruować procedur w celu zaspokojenia określonych potrzeb użytkownika.

Uwaga Przed zainstalowaniem tej poprawki należy zweryfikować, że wszyscy użytkownicy klienta systemu Microsoft Dynamics NAV są wylogowani systemu. Obejmuje to usług systemu Microsoft Dynamics NAV aplikacji serwera (NAS). Powinny być użytkownika klienta, który jest zalogowany w momencie wdrożyć tę poprawkę.

Aby wdrożyć tę poprawkę, musi mieć licencję deweloperską.

Firma Microsoft zaleca, aby do konta użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych być przypisany identyfikator roli "SUPER". Jeśli konto użytkownika nie można przypisać Identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:

  • Uprawnienie Modyfikacja dla obiektu, który będzie zmieniany.

  • Uprawnienie Execute obiektu 5210 identyfikator obiektu systemu i 9015 identyfikator obiektu systemu

    obiekt.

Uwaga Nie trzeba mieć prawa do magazynów danych, chyba że konieczne jest przeprowadzenie naprawy danych.

Zmiany kodu

Uwaga Zawsze test poprawki kodu w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.

Aby rozwiązać ten problem, wykonaj następujące kroki:

  1. Zmień kod w zmiennych w codeunit (26585) w następujący sposób:
    Istniejący kod

    ... TempDocDim@1470008 : TEMPORARY Record 357;
    TempDimBuf@1470007 : TEMPORARY Record 360;
    PrepmtInvBuffer@1470009 : TEMPORARY Record 461;
    SalesSetup@1470010 : Record 311;
    PrevLineNo@1470012 : Integer;
    LineNo@1470011 : Integer;
    ...

    Kod zastępczy

    ...TempDocDim@1470008 : TEMPORARY Record 357;
    TempDimBuf@1470007 : TEMPORARY Record 360;
    PrepmtInvBuffer@1470009 : TEMPORARY Record 461;

    // Add the following line.
    VATClauseBuffer@1470085 : TEMPORARY Record 26511;
    // End of the added line.

    SalesSetup@1470010 : Record 311;
    PrevLineNo@1470012 : Integer;
    LineNo@1470011 : Integer;
    ...
  2. Zmień kod w funkcji PostLetter w codeunit (26585) w następujący sposób:
    Istniejący kod 1

    ... PostingDate@1470020 : Date;
    LineAmount@1470009 : Decimal;
    PostingDescription@1470021 : Text[50];
    BEGIN
    LetterHeader := LetterHeader2;
    WITH SalesHeader DO BEGIN
    ...

    Kod zastępczy 1

    ...PostingDate@1470020 : Date;
    LineAmount@1470009 : Decimal;
    PostingDescription@1470021 : Text[50];

    // Add the following lines.
    CurrFactor@1360001 : Decimal;
    VATCurrFactor@1360000 : Decimal;
    // End of the added lines.

    BEGIN
    LetterHeader := LetterHeader2;
    WITH SalesHeader DO BEGIN...

    Istniejący kod 2

    ...SalesInvHeader."Posting Date" := PostingDate;
    SalesInvHeader."Document Date" := PostingDate;
    SalesInvHeader."VAT Date" := PostingDate;

    // Delete the following lines.
    SalesInvHeader."Currency Factor" := LetterHeader."Currency Factor";
    SalesInvHeader."VAT Currency Factor" := LetterHeader."VAT Currency Factor";
    // End of the deleted lines.

    SalesInvHeader."Due Date" := LetterHeader."Advance Due Date";
    SalesInvHeader."Pmt. Discount Date" := "Prepmt. Pmt. Discount Date";
    SalesInvHeader."Payment Discount %" := "Prepmt. Payment Discount %";
    ...

    Kod zastępczy 2

    ...SalesInvHeader."Posting Date" := PostingDate;
    SalesInvHeader."Document Date" := PostingDate;
    SalesInvHeader."VAT Date" := PostingDate;

    // Add the following lines.

    GetPrepaymentCurrFactors("No.",CurrFactor,VATCurrFactor);
    SalesInvHeader."Currency Factor" := CurrFactor;
    SalesInvHeader."VAT Currency Factor" := VATCurrFactor;

    // End of the added lines.

    SalesInvHeader."Due Date" := LetterHeader."Advance Due Date";
    SalesInvHeader."Pmt. Discount Date" := "Prepmt. Pmt. Discount Date";
    SalesInvHeader."Payment Discount %" := "Prepmt. Payment Discount %";
    ...

    Istniejący kod 3

    ...SalesCrMemoHeader."Posting Date" := PostingDate;
    SalesCrMemoHeader."VAT Date" := PostingDate;
    SalesCrMemoHeader."Document Date" := PostingDate;

    // Delete the following lines.
    SalesCrMemoHeader."Currency Factor" :=
    CurrExchRate.ExchangeRate(PostingDate,"Currency Code");
    SalesCrMemoHeader."VAT Currency Factor" := LetterHeader."VAT Currency Factor";
    // End of the deleted lines.

    SalesCrMemoHeader."Due Date" := LetterHeader."Advance Due Date";
    SalesCrMemoHeader.Correction := GLSetup."Mark Cr. Memos as Corrections";
    SalesCrMemoHeader."Date Sent" := 0D;
    ...

    Kod zastępczy 3

    ...SalesCrMemoHeader."Posting Date" := PostingDate;
    SalesCrMemoHeader."VAT Date" := PostingDate;
    SalesCrMemoHeader."Document Date" := PostingDate;

    // Add the following lines.
    SalesCrMemoHeader."Currency Factor" := SalesInvHeaderBuf."Currency Factor";
    SalesCrMemoHeader."VAT Currency Factor" := SalesInvHeaderBuf."VAT Currency Factor";
    // End of the added lines.

    SalesCrMemoHeader."Due Date" := LetterHeader."Advance Due Date";
    SalesCrMemoHeader.Correction := GLSetup."Mark Cr. Memos as Corrections";
    SalesCrMemoHeader."Date Sent" := 0D;
    ...

    Istniejący kod 4

    ...SalesInvHeader."Reversed By Cr. Memo No." := SalesCrMemoHeader."No.";
    SalesInvHeader.MODIFY;

    GenJnlLineDocType := GenJnlLine."Document Type"::"Credit Memo";
    PostedDocTabNo := DATABASE::"Sales Cr.Memo Header";
    Window.UPDATE(1,STRSUBSTNO(Text005,"Document Type","No.",SalesCrMemoHeader."No."));
    ...

    Kod zastępczy 4

    ...SalesInvHeader."Reversed By Cr. Memo No." := SalesCrMemoHeader."No.";
    SalesInvHeader.MODIFY;

    // Add the following lines.
    CurrFactor := SalesCrMemoHeader."Currency Factor";
    VATCurrFactor := SalesCrMemoHeader."VAT Currency Factor";
    // End of the added lines.

    GenJnlLineDocType := GenJnlLine."Document Type"::"Credit Memo";
    PostedDocTabNo := DATABASE::"Sales Cr.Memo Header";
    Window.UPDATE(1,STRSUBSTNO(Text005,"Document Type","No.",SalesCrMemoHeader."No."));
    ...

    Istniejący kod 5

    ...// Create Lines
    LineCount := 0;
    PrepmtInvBuffer.DELETEALL;

    // Delete the following line.
    BuildInvLineBuffer(LetterHeader,DocumentType,PrepmtInvBuffer,TempDocDim);
    // End of the deleted line.

    TempDimBuf.INIT;
    IF PrepmtInvBuffer.FINDSET THEN
    REPEAT
    ...

    Kod zastępczy 5

    ...// Create Lines
    LineCount := 0;
    PrepmtInvBuffer.DELETEALL;

    // Add the following line.
    BuildInvLineBuffer(LetterHeader,DocumentType,PrepmtInvBuffer,TempDocDim,VATCurrFactor);
    // End of the added line.

    TempDimBuf.INIT;
    IF PrepmtInvBuffer.FINDSET THEN
    REPEAT
    ...

    Istniejący kod 6

    ...GenJnlLine."Posting No. Series" := "Posting No. Series";
    GenJnlLine."IC Partner Code" := "Bill-to IC Partner Code";
    GenJnlLine."Group VAT ID" := "Group VAT ID"; // PS50595

    // Delete the following lines.
    GenJnlLine.VALIDATE("Currency Factor",LetterHeader."Currency Factor");
    GenJnlLine.VALIDATE("VAT Currency Factor",LetterHeader."VAT Currency Factor");
    // End of the deleted lines.

    GenJnlLine."VAT Base Amt. to Report (LCY)" := PrepmtInvBuffer."VAT Base Amt. to Report (LCY)";
    GenJnlLine."VAT Amount to Report (LCY)" := PrepmtInvBuffer."VAT Amount to Report (LCY)";
    RunGenJnlPostLine(GenJnlLine,PrepmtInvBuffer."Dimension Entry No.");
    ...

    Kod zastępczy 6

    ...GenJnlLine."Posting No. Series" := "Posting No. Series";
    GenJnlLine."IC Partner Code" := "Bill-to IC Partner Code";
    GenJnlLine."Group VAT ID" := "Group VAT ID"; // PS50595

    // Add the following lines.
    GenJnlLine.VALIDATE("Currency Factor",CurrFactor);
    GenJnlLine.VALIDATE("VAT Currency Factor",VATCurrFactor);

    // End of the added lines.

    GenJnlLine."VAT Base Amt. to Report (LCY)" := PrepmtInvBuffer."VAT Base Amt. to Report (LCY)";
    GenJnlLine."VAT Amount to Report (LCY)" := PrepmtInvBuffer."VAT Amount to Report (LCY)";
    RunGenJnlPostLine(GenJnlLine,PrepmtInvBuffer."Dimension Entry No.");
    ...

    Istniejący kod 7

    ...END;
    LetterHeader2 := LetterHeader;

    CLEAR(GenJnlPostLine);
    Window.CLOSE;
    EXIT(TRUE);
    ...

    Kod zastępczy 7

    ...END;
    LetterHeader2 := LetterHeader;

    // Add the following lines.
    SetVATClause(SalesInvHeader,SalesInvLine);
    FinalizeVATClause(SalesInvHeader,SalesInvLine);
    // End of the added lines.

    CLEAR(GenJnlPostLine);
    Window.CLOSE;
    EXIT(TRUE);
    ...
  3. Zmień kod w funkcji AddPrepmtSalesInvLine w codeunit (26585) w następujący sposób:
    Istniejący kod 1

    ...LOCAL PROCEDURE AddPrepmtSalesInvLine@1470033(LetterLine@1470002 : Record 26586;SalesInvHeader@1470001 : Record 112;AmountInclVAT@1470005 : Decimal;VATAmount@1470000 : Decimal;VAR LastLetterNo@1470006 : Code[20]) : Boolean;
    VAR
    LetterHeader@1360000 : Record 26585;
    GenJnlLine@1360001 : Record 81;
    SalesInvLine@1470003 : Record 113;
    NextLineNo@1470004 : Integer;
    ...

    Kod zastępczy 1

    ...LOCAL PROCEDURE AddPrepmtSalesInvLine@1470033(LetterLine@1470002 : Record 26586;SalesInvHeader@1470001 : Record 112;AmountInclVAT@1470005 : Decimal;VATAmount@1470000 : Decimal;VAR LastLetterNo@1470006 : Code[20]) : Boolean;
    VAR

    // Delete the following line.
    LetterHeader@1360000 : Record 26585;
    // End of the deleted line.

    GenJnlLine@1360001 : Record 81;
    SalesInvLine@1470003 : Record 113;
    NextLineNo@1470004 : Integer;
    ...

    Istniejący kod 2

    ...SalesInvLine."VAT Base Amt. to Report (LCY)" := SalesInvLine."VAT Base Amount";
    SalesInvLine."VAT Amount to Report (LCY)" := -VATAmount;
    END ELSE BEGIN

    // Delete the following lines.
    LetterHeader.GET(LetterLine."Letter No.");
    GenJnlLine."Currency Code" := LetterLine."Currency Code";
    GenJnlLine."VAT Currency Factor" := LetterHeader."VAT Currency Factor";
    // End of the deleted lines.

    GenJnlLine."Posting Date" := SalesInvHeader."Posting Date";
    GenJnlLine.CalcVATToReport(SalesInvLine."VAT Base Amount",-VATAmount);
    SalesInvLine."VAT Base Amt. to Report (LCY)" := GenJnlLine."VAT Base Amt. to Report (LCY)";
    ...

    Kod zastępczy 2

    ...SalesInvLine."VAT Base Amt. to Report (LCY)" := SalesInvLine."VAT Base Amount";
    SalesInvLine."VAT Amount to Report (LCY)" := -VATAmount;
    END ELSE BEGIN

    // Add the following lines.
    GenJnlLine."Currency Code" := LetterLine."Currency Code";
    GenJnlLine."VAT Currency Factor" := SalesInvHeader."VAT Currency Factor";
    // End of the added lines.

    GenJnlLine."Posting Date" := SalesInvHeader."Posting Date";
    GenJnlLine.CalcVATToReport(SalesInvLine."VAT Base Amount",-VATAmount);
    SalesInvLine."VAT Base Amt. to Report (LCY)" := GenJnlLine."VAT Base Amt. to Report (LCY)";
    ...
  4. Zmień kod w funkcji BuildInvLineBuffer w codeunit (26585) w następujący sposób:
    Istniejący kod 1

    ...LetterLine2.TABLECAPTION,LetterLine2."Letter No.",LetterLine2."Line No.",DimMgt.GetDimValuePostingErr);
    END;

    // Delete the following line.
    LOCAL PROCEDURE BuildInvLineBuffer@1470020(LetterHeader@1470000 : Record 26585;DocumentType@1470005 : 'Invoice,Credit Memo';VAR PrepmtInvBuf@1470001 : Record 461;VAR TempDocDim@1470002 : Record 357);
    // End of the deleted line.

    VAR
    LetterLine@1470003 : Record 26586;
    PrepmtInvBuf2@1470004 : Record 461;
    ...

    Kod zastępczy 1

    ...LetterLine2.TABLECAPTION,LetterLine2."Letter No.",LetterLine2."Line No.",DimMgt.GetDimValuePostingErr);
    END;

    // Add the following line.
    LOCAL PROCEDURE BuildInvLineBuffer@1470020(LetterHeader@1470000 : Record 26585;DocumentType@1470005 : 'Invoice,Credit Memo';VAR PrepmtInvBuf@1470001 : Record 461;VAR TempDocDim@1470002 : Record 357;VATCurrFactor@1360000 : Decimal);
    // End of the added line.

    VAR
    LetterLine@1470003 : Record 26586;
    PrepmtInvBuf2@1470004 : Record 461;
    ...

    Istniejący kod 2

    ... LetterLine.SETRANGE("Letter No.",LetterHeader."No.");
    IF LetterLine.FINDSET THEN
    REPEAT

    // Delete the following line.
    FillInvLineBuffer(LetterLine,DocumentType,LetterHeader."VAT Currency Factor",PrepmtInvBuf2,TempDocDim);
    // End of the deleted line.

    IF PrepmtInvBuf2.Amount <> 0 THEN
    PrepmtInvBuf.InsertInvLineBuffer(PrepmtInvBuf2);
    UNTIL LetterLine.NEXT = 0;
    ...

    Kod zastępczy 2

    ...  LetterLine.SETRANGE("Letter No.",LetterHeader."No.");
    IF LetterLine.FINDSET THEN
    REPEAT

    // Add the following line.
    FillInvLineBuffer(LetterLine,DocumentType,VATCurrFactor,PrepmtInvBuf2,TempDocDim);
    // End of the added line.

    IF PrepmtInvBuf2.Amount <> 0 THEN
    PrepmtInvBuf.InsertInvLineBuffer(PrepmtInvBuf2);
    UNTIL LetterLine.NEXT = 0;
    ...
  5. Dodaj funkcje w codeunit (26585) w następujący sposób:

    ... LOCAL PROCEDURE GetPrepaymentCurrFactors@1470049(SalesOrderNo@1470000 : Code[20];VAR CurrFactor@1360001 : Decimal;VAR VATCurrFactor@1360002 : Decimal);
    VAR
    LetterHeader@1470001 : Record 26585;
    CustLedgEntry@1470002 : Record 21;
    AdvanceLink@1470003 : Record 26590;
    BEGIN
    CurrFactor := 0;
    VATCurrFactor := 0;

    WITH AdvanceLink DO BEGIN
    LetterHeader.SETRANGE("Order No.",SalesOrderNo);
    IF LetterHeader.FINDLAST THEN BEGIN
    SETCURRENTKEY("Document No.","Line No.","Entry Type");
    SETRANGE("Entry Type","Entry Type"::"Link To Letter");
    SETRANGE("Document No.",LetterHeader."No.");
    IF FINDLAST THEN
    IF CustLedgEntry.GET("CV Ledger Entry No.") THEN
    IF CustLedgEntry."Currency Code" <> '' THEN BEGIN
    CurrFactor := CustLedgEntry."Original Currency Factor";
    VATCurrFactor := CustLedgEntry."VAT Currency Factor";
    END;
    END;
    END;
    END;

    LOCAL PROCEDURE SetVATClause@1470058(SalesInvHeader@1470001 : Record 112;SalesInvLine@1470002 : Record 113);
    BEGIN
    WITH VATClauseBuffer DO
    IF GET(SalesInvLine."VAT Bus. Posting Group",SalesInvLine."VAT Prod. Posting Group") THEN BEGIN
    "VAT Base" +=
    CurrExchRate.ExchangeAmtFCYToLCY(SalesInvHeader."Posting Date",
    SalesInvHeader."Currency Code",
    PrepmtInvBuffer.Amount,
    SalesInvHeader."Currency Factor");
    "VAT Amount" +=
    (CurrExchRate.ExchangeAmtFCYToLCY(SalesInvHeader."Posting Date",
    SalesInvHeader."Currency Code",
    PrepmtInvBuffer."Amount Incl. VAT",
    SalesInvHeader."Currency Factor") -
    CurrExchRate.ExchangeAmtFCYToLCY(SalesInvHeader."Posting Date",
    SalesInvHeader."Currency Code",
    SalesInvLine.Amount,
    SalesInvHeader."Currency Factor"));
    MODIFY;
    END ELSE BEGIN
    "VAT Bus. Posting Group" := SalesInvLine."VAT Bus. Posting Group";
    "VAT Prod. Posting Group" := SalesInvLine."VAT Prod. Posting Group";
    "VAT Base" :=
    CurrExchRate.ExchangeAmtFCYToLCY(SalesInvHeader."Posting Date",
    SalesInvHeader."Currency Code",
    PrepmtInvBuffer.Amount,
    SalesInvHeader."Currency Factor");
    "VAT Amount" :=
    CurrExchRate.ExchangeAmtFCYToLCY(SalesInvHeader."Posting Date",
    SalesInvHeader."Currency Code",
    PrepmtInvBuffer."Amount Incl. VAT",
    SalesInvHeader."Currency Factor") -
    "VAT Base";
    INSERT;
    END;
    END;

    LOCAL PROCEDURE FinalizeVATClause@1470064(SalesInvHeader@1470002 : Record 112;SalesInvLine@1470003 : Record 113);
    VAR
    TransferExtText@1470000 : Codeunit 378;
    VATClauseSetup@1470001 : Record 26512;
    BEGIN
    IF VATClauseBuffer.FINDSET THEN
    REPEAT
    VATClauseSetup.SETRANGE("VAT Bus. Posting Group",VATClauseBuffer."VAT Bus. Posting Group");
    VATClauseSetup.SETRANGE("VAT Prod. Posting Group",VATClauseBuffer."VAT Prod. Posting Group");
    IF VATClauseSetup.FINDSET THEN
    REPEAT
    VATClauseSetup.TESTFIELD("Standard Text Code");
    TransferExtText.VATCheckIfAnyExtText(SalesInvHeader,VATClauseSetup."Standard Text Code");
    TransferExtText.InsertVATExtText(SalesInvLine,VATClauseBuffer);
    UNTIL VATClauseSetup.NEXT = 0;
    UNTIL VATClauseBuffer.NEXT = 0;
    END;
    ...

Wymagania wstępne

Musi mieć jedną z następujących produktów, w celu zastosowania tej poprawki:

  • Węgierskiej wersji programu Microsoft Dynamics NAV 2009 R2

Dodatkowo musi mieć MSDNAV2009R2Prepaymts_Hungary i MSDYN_VATExchangeRateAdvancesHungarianNAV2009R2 zainstalowane.

Informacje dotyczące usuwania

Nie można usunąć tej poprawki.

Stan

Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.

Uwaga Jest to artykuł " szybkiej publikacji" tworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym dokumencie są dostarczane jako odpowiedź na pojawiające się problemy. W wyniku przyspieszonego udostępnienia, materiały te mogą zawierać błędy typograficzne i mogą być zmieniane w dowolnym czasie bez uprzedzenia. Zobacz Warunki użytkowaniadla innych względów.

Potrzebujesz dalszej pomocy?

Chcesz uzyskać więcej opcji?

Poznaj korzyści z subskrypcji, przeglądaj kursy szkoleniowe, dowiedz się, jak zabezpieczyć urządzenie i nie tylko.

Społeczności pomagają zadawać i odpowiadać na pytania, przekazywać opinie i słuchać ekspertów z bogatą wiedzą.

Czy te informacje były pomocne?

Jaka jest jakość języka?
Co wpłynęło na Twoje wrażenia?
Jeśli naciśniesz pozycję „Wyślij”, Twoja opinia zostanie użyta do ulepszania produktów i usług firmy Microsoft. Twój administrator IT będzie mógł gromadzić te dane. Oświadczenie o ochronie prywatności.

Dziękujemy za opinię!

×