Преминаване към основното съдържание
Поддръжка
Влизане с Microsoft
Влезте или създайте акаунт.
Здравейте,
Изберете друг акаунт.
Имате няколко акаунта
Изберете акаунта, с който искате да влезете.

Симптоми

Базите и стойностите са групирани неправилно за същия процент на ДДС и период 340 декларация за ДДС кеш в испанска версия на Microsoft Dynamics NAV 2009.
Същият сценарий с ДДС работи според очакванията, отделяне на всяка фактура независимо дали имат същия процент на ДДС. Следвайте стъпките в раздела промени код за решаване на проблема. Този проблем възниква в следните продукти:

  • Испанска версия на Microsoft Dynamics NAV 2009 R2

  • Испанска версия на Microsoft Dynamics NAV 2009 SP1

Решение

Информация за актуалната корекция

Вече се предлага от Microsoft предоставя поддържана актуална корекция. Обаче е предназначена само за коригиране на описания в тази статия. Прилагайте корекцията само към системи, изпитващи този конкретен проблем. Възможно е провеждането на допълнителни тестове на тази актуална корекция. Следователно ако не сте силно засегнати от този проблем, препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV 2009 или следващата версия на Microsoft Dynamics NAV, който ще съдържа тази корекция.

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

Информация за инсталирането

Microsoft предоставя примери само за илюстративни цели без гаранция за определени цели. Това включва, но не е ограничено до, подразбиращи се гаранции за продаваемост или годност за определена цел. Тази статия се предполага, че сте запознати с демонстрирания език за програмиране и инструментите, които се използват за създаване и процедури за отстраняване на грешки. Инженерите на поддръжката на Microsoft могат да помогнат обяснение на функциите на конкретна процедура. Въпреки това те няма да модифицират тези примери с цел осигуряване на допълнителна функционалност или създаване на процедури за удовлетворение на конкретните ви изисквания.

Забележка: Преди да инсталирате тази актуална корекция, уверете се, че всички потребители на клиента на Microsoft Dynamics NAV са излезли от системата. Това включва и услуги на Microsoft Dynamics NAV приложение сървър (NAS). Трябва да бъде само клиент потребител, който е влязъл при прилагане на тази актуална корекция.

За прилагане на тази актуална корекция, трябва да имате лиценз разработчик.

Препоръчително е потребителският акаунт в прозореца влизания в Windows или в прозореца на БД присвояването на "Супер" ИД на роля. Ако потребителският акаунт не може да бъде възложена ИД на роля на "Супер", трябва да проверите, че потребителският акаунт има следните права:

  • Разрешение за промяна на обекта, ще се променя.

  • Разрешението за изпълнение за системата обект номер 5210 обект и системата обект ID 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 SP1

Информация за премахване

Не можете да премахнете тази актуална корекция.

Статус

Microsoft потвърждава, че това е проблем в продуктите на Microsoft, изброени в раздела "Отнася се за".

Забележка: Това е статия "Бърза публикация", създадени директно от организацията за поддръжка на Microsoft. Информацията тук се предоставя "както-е" в отговор на появили се проблеми. В резултат на скоростта на предоставянето му материалите могат да съдържат печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте Условияза други съображения.

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.

Беше ли полезна тази информация?

Доколко сте доволни от качеството на езика?
Какво е повлияло на вашия потребителски опит?
Като натиснете „Подаване“, вашата обратна връзка ще се използва за подобряване на продуктите и услугите на Microsoft. Вашият ИТ администратор ще може да събира тези данни. Декларация за поверителност.

Благодарим ви за обратната връзка!

×