Перейти к основному контенту
Поддержка
Войдите с помощью учетной записи Майкрософт
Войдите или создайте учетную запись.
Здравствуйте,
Выберите другую учетную запись.
У вас несколько учетных записей
Выберите учетную запись, с помощью которой нужно войти.

Симптомы

При применении обновления предоплаты НДС операции иногда имеют неправильные значения в венгерской версии Microsoft Dynamics NAV 2009 R2. Кроме того при создании кредит ноты авансового с иностранной валюте используется неправильный курс. Выполните действия, описанные в разделе изменения кода , чтобы решить эту проблему. Эта проблема возникает в следующих продуктах:

  • Венгерской версии Microsoft Dynamics NAV 2009 R2

Решение

Сведения об исправлении

Исправление от корпорации Майкрософт доступно. Однако оно предназначено только для устранения проблемы, описанной в этой статье. Предлагаемое исправление должно применяться исключительно в системах, в которых обнаружена эта специфическая неполадка. Это исправление может проходить дополнительное тестирование. Таким образом Если вы не подвержены серьезно эту проблему, рекомендуется дождаться следующего пакета обновления для Microsoft Dynamics NAV 2009 или следующей версии Microsoft Dynamics NAV, содержащего это исправление.

Примечание. В особых случаях оплата, предусмотренная в службу поддержки может быть отменена Если специалист службы технической поддержки Microsoft Dynamics и связанных продуктов определит, что решения проблемы является специально выпущенное. Затраты на обычные услуги службы поддержки будут применяться к дополнительным вопросам и проблемам, которые не охватываются конкретным обновлением.

Сведения об установке

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и без явных или подразумеваемых гарантий. Это включает, но не ограничиваясь, подразумеваемые гарантии товарной пригодности или пригодности для определенной цели. В данной статье предполагается, что вы знакомы с демонстрируемым языком программирования и средствами, которые используются для создания и отладки. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры. Тем не менее они не изменит примеров для обеспечения функциональных возможностей или создания процедур для определенных требований.

Примечание. Перед установкой данного исправления необходимо проверьте регистрацию всех пользователей клиента Microsoft Dynamics NAV выход из системы. Это относится к службам Microsoft Dynamics NAV приложения сервера (NAS). Должен быть только клиент пользователя, который вошел в систему, при реализации данного исправления.

Чтобы реализовать это исправление, необходимо иметь лицензию разработчика.

Рекомендуется, чтобы учетной записи пользователя в окне Логины Windows или в окне Логины базы данных был присвоен идентификатор роли «SUPER» Если учетная запись пользователя не может быть назначена роль «SUPER» идентификатор, необходимо убедиться, что учетная запись пользователя имеет следующие разрешения.

  • Изменение разрешений для объекта, подлежащий изменению.

  • Разрешение Execute для объекта 5210 идентификатор объекта системы и системы 9015 идентификатор объекта

    объект.

Примечание. Необходимо иметь права к хранилищам данных, если необходимо выполнить восстановление данных.

Изменения кода

Примечание. Всегда тестовый код исправления в контролируемой среде, прежде чем применить исправления на производственных компьютерах.

Чтобы устранить эту проблему, выполните следующие действия:

  1. Измените код в переменных в функции (26585) следующим образом:
    Существующий код

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

    Код для замены

    ...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. Измените код в функции PostLetter в функции (26585) следующим образом:
    Существующий код 1

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

    Код для замены 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...

    Существующий код 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 %";
    ...

    Код для замены 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 %";
    ...

    Существующий код 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;
    ...

    Код для замены 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;
    ...

    Существующий код 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."));
    ...

    Код для замены 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."));
    ...

    Существующий код 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
    ...

    Код для замены 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
    ...

    Существующий код 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.");
    ...

    Код для замены 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.");
    ...

    Существующий код 7

    ...END;
    LetterHeader2 := LetterHeader;

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

    Код для замены 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. Измените код в функции AddPrepmtSalesInvLine в функции (26585) следующим образом:
    Существующий код 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;
    ...

    Код для замены 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;
    ...

    Существующий код 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)";
    ...

    Код для замены 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. Измените код в функции BuildInvLineBuffer в функции (26585) следующим образом:
    Существующий код 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;
    ...

    Код для замены 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;
    ...

    Существующий код 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;
    ...

    Код для замены 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. Добавьте функции в функции (26585) следующим образом:

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

Предварительные условия

Необходимы следующие продукты для установки данного исправления.

  • Венгерской версии Microsoft Dynamics NAV 2009 R2

Кроме того необходимо иметь установленные MSDYN_VATExchangeRateAdvancesHungarianNAV2009R2 и MSDNAV2009R2Prepaymts_Hungary .

Сведения об удалении

Установленное обновление удалить нельзя.

Статус

Корпорация Майкрософт подтверждает, что это проблема продуктов Майкрософт, перечисленных в разделе "Относится к".

Примечание. Это статья «БЫСТРАЯ ПУБЛИКАЦИЯ», созданная непосредственно из технической поддержки корпорации Майкрософт. Сведения, содержащиеся в настоящем документе, предоставляются "как есть" в ответ на возникающие проблемы. В результате скорости предоставления материалов они могут включать опечаток и быть изменены в любое время без предварительного уведомления. Другие вопросы, связанные с Условиями использованиясм.

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

В сообществах можно задавать вопросы и отвечать на них, отправлять отзывы и консультироваться с экспертами разных профилей.

Были ли сведения полезными?

Насколько вы удовлетворены качеством перевода?
Что повлияло на вашу оценку?
После нажатия кнопки "Отправить" ваш отзыв будет использован для улучшения продуктов и служб Майкрософт. Эти данные будут доступны для сбора ИТ-администратору. Заявление о конфиденциальности.

Спасибо за ваш отзыв!

×