Перейти до основного
Підтримка
Вхід
Вхід за допомогою облікового запису Microsoft
Увійдіть або створіть обліковий запис.
Вітаємо,
Виберіть інший обліковий запис.
У вас є кілька облікових записів
Виберіть обліковий запис, за допомогою якого потрібно ввійти.

Причини

Основи і обсяг неправильно групи же ПДВ, відсоток і періоду 340 Декларація готівкою ПДВ, що беруть участь у Microsoft Dynamics NAV, 2009 іспанською мовою.
Той самий сценарій зі звичайного ПДВ, працює належним чином, відокремлюючи кожного рахунку, незалежно від наявності одного відсоток ПДВ. Виконайте дії, описані в розділі зміни коду , щоб вирішити цю проблему. Ця проблема виникає в таких продуктів:

  • Іспанська версії Microsoft Dynamics NAV 2009-R2

  • Іспанська версії Microsoft Dynamics NAV 2009 пакетом оновлень 1

Вирішення

Відомості про виправлення

Корпорація Майкрософт випустила підтримуване виправлення доступна. Однак, застосовувати лише для вирішення проблеми, описаної в цій статті. Він придатний лише для систем, які зазнають цієї конкретної проблеми. Те, що це виправлення може потребувати додаткового тестування. Таким чином, якщо ви не завдає значної, рекомендовано почекати до виходу чергового пакета оновлень Microsoft Dynamics NAV, 2009 або наступної версії Microsoft Dynamics NAV, що містить це виправлення.

Примітка. В окремих випадках оплату звернення до служби підтримки може бути скасовано якщо технічної підтримки професійного для Microsoft Dynamics і пов'язані продукти визначає телефонів служби. Плата стягується на додаткові питання і проблеми, які не пов'язані з оновленням.

Відомості про інсталяцію

Корпорація Майкрософт надає приклади програмного коду тільки для ілюстрації, без гарантій – прямих або інших. Це включає, але не обмежується, будь-яких гарантій придатності до продажу та придатності для певної мети. У цій статті припускається, що ви знайомі з, що демонструє мову програмування та інструменти, які використовуються для створення та налагодження процедури. Співробітники служби підтримки корпорації Майкрософт можуть пояснити функціональні особливості кожної конкретної процедури. Проте вони не будуть змінювати приклади для реалізації додаткових можливостей або створювати процедури на вимогу окремих користувачів.

Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всіх користувачів Microsoft Dynamics NAV-клієнт відключився системи. Це стосується, служби Microsoft Dynamics NAV Application Server (NAS). Ви повинні тільки клієнт користувача, який увійшов до системи, під час виконання цього виправлення.

Щоб застосувати це виправлення, потрібно мати ліцензію для розробників.

Корпорація Майкрософт рекомендує, що обліковий запис користувача Windows, вхід вікна або у вікні бази даних вхід призначити "Супер" роль ID. Якщо обліковий запис користувача не призначено роль ID "Супер", необхідно переконатися, що обліковий запис користувача, має такі дозволи:

  • Змінити дозвіл об'єкт, який буде змінити.

  • Права для виконання системи об'єкт з Ідентифікатором 5210 об'єкт і, код 9015 системи-об'єкт

    об'єкт.

Примітка. Маєте відповідних прав у сховища даних, якщо не потрібно виконати дані відновлення не потрібно.

Зміни коду

Примітка. Завжди тест код вирішення в середовищі контрольовані перед інсталяцією розглянутого виправлення виробництва комп'ютерів.

Щоб вирішити цю проблему, виконайте такі дії.

  1. Змінити код у звіті про зробити-340-Декларація (10743), наступним чином:
    Наявний код 1

    ...   END;
    END;

    // Delete the following line.
    OnAfterGetRecord=BEGIN
    // End of the deleted line.

    OperationCode := GetOperationCode(VATEntry2);

    VATBuffer."VAT %" := "VAT %";
    ...

    Код на заміну 1

    ... END;
    END;

    // Add the following lines.
    OnAfterGetRecord=VAR
    VendLedgEntryAppl@1100000 : Record 25;
    NewEntry@1100001 : Boolean;
    BEGIN
    // End of the added lines.

    OperationCode := GetOperationCode(VATEntry2);

    VATBuffer."VAT %" := "VAT %";
    ...

    Наявний код 2

    ... VATBuffer.Amount := Amount;
    END;
    VATBuffer.INSERT;

    // Delete the following lines.

    IF Type = VATEntry.Type::Purchase THEN BEGIN
    VATEntryTemporary := VATEntry2;
    VATEntryTemporary.INSERT;
    END;
    END;
    // End of the deleted lines.

    END;

    TotalFields=Base,Amount;
    ...

    Код на заміну 2

    ...VATBuffer.Amount := Amount;
    END;
    VATBuffer.INSERT;

    // Add the following lines.
    END;

    IF Type = VATEntry.Type::Purchase THEN
    IF HasBeenRealized("Entry No.") OR ("Unrealized VAT Entry No." <> 0) THEN BEGIN
    NewEntry := CheckVLEApplication(VATEntry2);

    VATEntryTemporary.SETRANGE("Posting Date","Posting Date");
    VATEntryTemporary.SETRANGE("Document No.","Document No.");
    VATEntryTemporary.SETRANGE("Document Type","Document Type");
    VATEntryTemporary.SETRANGE(Type,Type);
    VATEntryTemporary.SETRANGE("VAT %","VAT %");
    VATEntryTemporary.SETRANGE("Transaction No.","Transaction No.");
    IF VATEntryTemporary.FINDFIRST AND NOT NewEntry THEN BEGIN
    VATEntryTemporary.Base += Base;
    VATEntryTemporary.Amount += Amount;
    VATEntryTemporary.MODIFY;
    END ELSE BEGIN
    VATEntryTemporary := VATEntry2;
    VATEntryTemporary.INSERT;
    END;

    END ELSE BEGIN
    VATEntryTemporary := VATEntry2;
    VATEntryTemporary.INSERT;
    END;
    // End of the added lines.

    END;

    TotalFields=Base,Amount;
    ...

    Наявний код 3

    ...  DataItemVarName=<Integer2>;
    OnPreDataItem=BEGIN
    VATBuffer.FIND('-');
    VATEntryTemporary.SETCURRENTKEY("VAT %","EC %");
    IF VATEntryTemporary.FINDFIRST THEN;
    CurrReport.CREATETOTALS(VATBuffer2.Base,VATBuffer2.Amount);
    Fin := FALSE;
    ...

    Код на заміну 3

    ...  DataItemVarName=<Integer2>;
    OnPreDataItem=BEGIN
    VATBuffer.FIND('-');

    // Delete the following line.
    VATEntryTemporary.SETCURRENTKEY("VAT %","EC %");
    // End of the deleted line.

    IF VATEntryTemporary.FINDFIRST THEN;
    CurrReport.CREATETOTALS(VATBuffer2.Base,VATBuffer2.Amount);
    Fin := FALSE;
    ...

    Наявний код 4

    ...IF VATEntry.Type = VATEntry.Type::Purchase THEN BEGIN
    VATEntryTemporary.Amount := VATBuffer.Amount;
    VATDeductAmt := CheckDeductibleVAT(VATEntryTemporary);

    // Delete the following lines.
    VATEntryTemporary.NEXT;
    RecordTypePurchase(VATEntry2);
    // End of the deleted lines.

    END;
    Fin := VATBuffer.NEXT = 0;
    END;
    ...

    Заміна з кодом 4

    ... IF VATEntry.Type = VATEntry.Type::Purchase THEN BEGIN
    VATEntryTemporary.Amount := VATBuffer.Amount;
    VATDeductAmt := CheckDeductibleVAT(VATEntryTemporary);

    // Add the following lines.

    VATEntryTemporary.SETCURRENTKEY("VAT %","EC %");
    VATEntryTemporary.SETRANGE("VAT %",VATBuffer."VAT %");
    VATEntryTemporary.SETRANGE("EC %",VATBuffer."EC %");
    VATEntryTemporary.FINDSET;
    REPEAT
    RecordTypePurchase(VATEntryTemporary);
    UNTIL VATEntryTemporary.NEXT = 0;
    // End of the added lines.

    END;
    Fin := VATBuffer.NEXT = 0;
    END;
    ...
  2. Змінити код глобальних параметрів у звіті про зробити-340-Декларація (10743), наступним чином:
    Наявний код

    ...VATEntryTemporary@1100078 : TEMPORARY Record 254;
    TempDeclarationLines@1100149 : TEMPORARY Record 10744;
    TempVATEntry@1100007 : TEMPORARY Record 254;
    CommonDialogMgt@1100015 : Codeunit 412;
    OutFile@1100016 : File;
    DeclarationNum@1100017 : Text[4];
    ...

    Заміна код

    ...  VATEntryTemporary@1100078 : TEMPORARY Record 254;
    TempDeclarationLines@1100149 : TEMPORARY Record 10744;
    TempVATEntry@1100007 : TEMPORARY Record 254;

    // Add the following line.
    TempDtldVendLedgerEntry@1100115 : TEMPORARY Record 380;
    // End of the added line.

    CommonDialogMgt@1100015 : Codeunit 412;
    OutFile@1100016 : File;
    DeclarationNum@1100017 : Text[4];
    ...
  3. Змінити код RecordTypePurchase функції у звіті про зробити-340-Декларація (10743), наступним чином:
    Наявний код

    ... END ELSE
    OperationDateText := FormatDate(VATEntryRec."Posting Date");

    // Delete the following lines.
    IF VATEntryRec."Document Type" IN [VATEntryRec."Document Type"::Payment,VATEntryRec."Document Type"::Refund] THEN BEGIN
    UnrealizedVATEntryNo := VATEntryRec."Unrealized VAT Entry No.";
    DocumentDate := VATEntryRec."Posting Date";
    IF UnrealizedVATEntryNo <> 0 THEN BEGIN
    UnrealizedVATEntry.GET(UnrealizedVATEntryNo);
    OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");
    DocumentDate := UnrealizedVATEntry."Document Date";
    // End of the deleted lines.

    END;
    END ELSE
    UnrealizedVATEntryNo := 0;
    ...

    Заміна код

    ... END ELSE
    OperationDateText := FormatDate(VATEntryRec."Posting Date");

    // Add the following lines.
    VATBuffer2.Base := VATBuffer.Base;
    VATBuffer2.Amount := VATBuffer.Amount;

    IF VATEntryRec."Document Type" IN [VATEntryRec."Document Type"::Payment,VATEntryRec."Document Type"::Refund] THEN BEGIN
    UnrealizedVATEntryNo := VATEntryTemporary."Unrealized VAT Entry No.";
    DocumentDate := VATEntryTemporary."Posting Date";
    IF UnrealizedVATEntryNo <> 0 THEN BEGIN
    UnrealizedVATEntry.GET(UnrealizedVATEntryNo);
    OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date");
    DocumentDate := UnrealizedVATEntry."Document Date";
    IF FindPmtOrderBillGrBankAcc(VATEntry.Type,VATEntry."Document No.") = '' THEN BEGIN
    VendorDocumentNo := UnrealizedVATEntry."External Document No.";
    VATBuffer2.Base := VATEntryTemporary.Base;
    VATBuffer2.Amount := VATEntryTemporary.Amount;
    END;
    // End of the added lines.

    END;
    END ELSE
    UnrealizedVATEntryNo := 0;
    ...
  4. Змінити код CheckVLEApplication функції у звіті про зробити-340-Декларація (10743), наступним чином:
    Наявний код

    ...  PrevDeclarationNumEnable := ReplaceDeclaration;
    END;

    BEGIN
    END.
    }
    ...

    Заміна код

    ...PrevDeclarationNumEnable := ReplaceDeclaration;
    END;

    // Add the following lines.
    LOCAL PROCEDURE CheckVLEApplication@1100074(VATEntry@1100000 : Record 254) : Boolean;
    VAR
    VendorLedgerEntry@1100001 : Record 25;
    DtldVendLedgEntry@1100002 : Record 380;
    CheckVendLedgEntry@1100003 : Record 25;
    UnrealizedVendLedgEntry@1100004 : Integer;
    BEGIN
    FilterVendLedgerEntryByVATEntry(VendorLedgerEntry,VATEntry);
    UnrealizedVendLedgEntry := GetUnrealizedInvoiceVLENo(VATEntry."Unrealized VAT Entry No.");

    IF VendorLedgerEntry.FINDSET THEN
    REPEAT
    DtldVendLedgEntry.RESET;
    DtldVendLedgEntry.SETRANGE(Unapplied,FALSE);
    DtldVendLedgEntry.SETRANGE("Entry Type",DtldVendLedgEntry."Entry Type"::Application);
    DtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.",VendorLedgerEntry."Entry No.");
    IF UnrealizedVendLedgEntry <> 0 THEN
    DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",UnrealizedVendLedgEntry);

    IF DtldVendLedgEntry.FINDSET THEN
    REPEAT
    IF (DtldVendLedgEntry."Vendor Ledger Entry No." <> DtldVendLedgEntry."Applied Vend. Ledger Entry No.") AND
    CheckVendLedgEntry.GET(DtldVendLedgEntry."Vendor Ledger Entry No.")
    THEN BEGIN
    IF ExistDtldVLE(DtldVendLedgEntry."Vendor Ledger Entry No.",DtldVendLedgEntry."Applied Vend. Ledger Entry No.") THEN
    EXIT(FALSE);
    InsertTempDtldVLE(DtldVendLedgEntry."Vendor Ledger Entry No.",DtldVendLedgEntry."Applied Vend. Ledger Entry No.");
    EXIT(TRUE);
    END;
    UNTIL DtldVendLedgEntry.NEXT = 0
    ELSE BEGIN
    DtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.");
    DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",VendorLedgerEntry."Entry No.");
    IF UnrealizedVendLedgEntry <> 0 THEN
    DtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.",UnrealizedVendLedgEntry);

    IF DtldVendLedgEntry.FINDSET THEN
    REPEAT
    IF CheckVendLedgEntry.GET(DtldVendLedgEntry."Applied Vend. Ledger Entry No.") THEN BEGIN
    IF ExistDtldVLE(DtldVendLedgEntry."Applied Vend. Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No.") THEN
    EXIT(FALSE);
    InsertTempDtldVLE(DtldVendLedgEntry."Applied Vend. Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No.");
    EXIT(TRUE);
    END;
    UNTIL DtldVendLedgEntry.NEXT = 0;
    END;
    UNTIL VendorLedgerEntry.NEXT = 0;

    EXIT(TRUE);
    END;

    LOCAL PROCEDURE GetUnrealizedInvoiceVLENo@1100075(VATEntryNo@1100000 : Integer) : Integer;
    VAR
    VATEntry@1100002 : Record 254;
    VendLedgEntry@1100001 : Record 25;
    BEGIN
    IF NOT VATEntry.GET(VATEntryNo) THEN
    EXIT(0);
    FilterVendLedgerEntryByVATEntry(VendLedgEntry,VATEntry);
    IF VendLedgEntry.FINDFIRST THEN
    EXIT(VendLedgEntry."Entry No.");
    EXIT(0);
    END;

    LOCAL PROCEDURE FilterVendLedgerEntryByVATEntry@1100087(VAR VendLedgEntry@1100001 : Record 25;VATEntry@1100000 : Record 254);
    BEGIN
    VendLedgEntry.SETRANGE("Vendor No.",VATEntry."Bill-to/Pay-to No.");
    VendLedgEntry.SETRANGE("Posting Date",VATEntry."Posting Date");
    VendLedgEntry.SETRANGE("Document Type",VATEntry."Document Type");
    VendLedgEntry.SETRANGE("Document No.",VATEntry."Document No.");
    VendLedgEntry.SETRANGE("Transaction No.",VATEntry."Transaction No.");
    END;

    LOCAL PROCEDURE HasBeenRealized@1100064(VATEntryNo@1100000 : Integer) : Boolean;
    VAR
    UnrealizedVATEntry@1100001 : Record 254;
    BEGIN
    UnrealizedVATEntry.SETRANGE("Unrealized VAT Entry No.",VATEntryNo);
    EXIT(NOT UnrealizedVATEntry.ISEMPTY);
    END;

    LOCAL PROCEDURE ExistDtldVLE@1100195(VLENo@1100001 : Integer;AppliedVLENo@1100000 : Integer) : Boolean;
    BEGIN
    TempDtldVendLedgerEntry.SETRANGE("Vendor Ledger Entry No.",VLENo);
    TempDtldVendLedgerEntry.SETRANGE("Applied Vend. Ledger Entry No.",AppliedVLENo);
    EXIT(NOT TempDtldVendLedgerEntry.ISEMPTY);
    END;

    LOCAL PROCEDURE InsertTempDtldVLE@1100191(VLENo@1100000 : Integer;AppliedVLENo@1100001 : Integer);
    BEGIN
    TempDtldVendLedgerEntry.INIT;
    IF TempDtldVendLedgerEntry.FINDLAST THEN;
    TempDtldVendLedgerEntry."Entry No." += 1;
    TempDtldVendLedgerEntry."Vendor Ledger Entry No." := VLENo;
    TempDtldVendLedgerEntry."Applied Vend. Ledger Entry No." := AppliedVLENo;
    TempDtldVendLedgerEntry.INSERT;
    END;

    // End of the added lines.

    BEGIN
    END.
    }
    ...

Попередні вимоги

Ви повинні мати одну з таких продуктів, щоб застосувати це виправлення:

  • Іспанська версії Microsoft Dynamics NAV 2009-R2

  • Іспанська версії Microsoft Dynamics NAV 2009 пакетом оновлень 1

Відомості про видалення

Це виправлення не можна видалити.

Стан

Корпорація Майкрософт підтвердила існування цієї неполадки у продуктах Майкрософт, перелічених у розділі "Застосовується до".

Примітка. Це "Швидка публікація" статті, надана службою підтримки корпорації Майкрософт. Відомості в цій статті надано без змін у відповідь на повідомлення про проблеми. З огляду на швидкість публікації матеріали можуть містити орфографічні помилки. Їх може бути змінено в будь-який час без повідомлення. Див. Умови використанняінші міркування.

Потрібна додаткова довідка?

Потрібні додаткові параметри?

Ознайомтеся з перевагами передплати, перегляньте навчальні курси, дізнайтесь, як захистити свій пристрій тощо.

Спільноти допомагають ставити запитання й відповідати на них, надавати відгуки та дізнаватися думки висококваліфікованих експертів.

Чи ця інформація була корисною?

Наскільки ви задоволені якістю мови?
Що вплинуло на ваші враження?
Натиснувши кнопку "Надіслати", ви надасте свій відгук для покращення продуктів і служб Microsoft. Ваш ІТ-адміністратор зможе збирати ці дані. Декларація про конфіденційність.

Дякуємо за відгук!

×