Тази статия се отнася за Microsoft Dynamics NAV за езиково-географската променлива на полски език (pl).
Симптоми
Да предположим, че публикувате кредитно известие за продажби, което съдържа отложен данък добавена стойност (ДДС) в полската версия на Microsoft Dynamics NAV 2009 R2. Когато се опитате да реализирате ДДС в диалоговия прозорец "Приложен работен лист за ДДС ", получавате следното съобщение за грешка:
Забележка
Тук не можете да обработите отложения ДДС за кредитно известие за продажбите.
Решение
Информация за горещи поправки
Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV 2009 или следващата версия на Microsoft Dynamics NAV, която съдържа тази гореща корекция.
Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.
Информация за инсталиране
Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжка на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура, но няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.
Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.
За да приложите тази гореща корекция, трябва да имате лиценз за разработчик.
Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:
- Разрешението за промяна за обекта, който ще променяте.
- Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.
Забележка: Не е необходимо да имате права за хранилищата за данни, освен ако не трябва да извършите поправка на данни.
Промени в кода
Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да решите този проблем, изпълнете следните стъпки:
Изтрийте следните параметри във функцията RealizePostponedVAT във функцията. Jnl.-Post Line кодова единица (12):
- ТранзакцияNo
- VATEntryNo
- VAR TempJnlLineDim2
Добавете нов параметър във функцията RealizePostponedVAT във функцията Gen. Jnl.-Post Line кодова единица (12) и след това задайте параметъра по следния начин:
- Име: VATEntry
- DataType: Record
- Подтип: Въвеждане на ДДС (254)
Промяна на кода във функцията RealizePostponedVAT във функцията Gen. Jnl.-Post Line кодова единица (12), както следва:
Съществуващ код 1... GenJnlLine.COPY(GenJnlLine2); // Delete the following lines. TempJnlLineDim.RESET; TempJnlLineDim.DELETEALL; DimMgt.CopyJnlLineDimToJnlLineDim(TempJnlLineDim2,TempJnlLineDim); // End of the lines. GLSetup.GET; SourceCodeSetup.GET; ...Код за замяна 1
... GenJnlLine.COPY(GenJnlLine2); // Add the following line. PreparePostponedVATDim(VATEntry,TempJnlLineDim); GLSetup.GET; SourceCodeSetup.GET; ...Съществуващ код 2
... InitCodeUnit; // Delete the following lines. VATEntryNoToRealize := VATEntryNo; IF GenJnlLine."Account Type" = GenJnlLine."Account Type"::Customer THEN BEGIN CustLedgEntry."Transaction No." := TransactionNo; // End of the lines. CustUnrealizedVAT(CustLedgEntry,GenJnlLine.Amount) END ELSE BEGIN ...Код за замяна 2
... InitCodeUnit; // Add the following lines. VATEntryNoToRealize := VATEntry."Entry No."; IF GenJnlLine."Account Type" = GenJnlLine."Account Type"::Customer THEN BEGIN CustLedgEntry."Transaction No." := VATEntry."Transaction No."; //End of the lines. CustUnrealizedVAT(CustLedgEntry,GenJnlLine.Amount) END ELSE BEGIN ...Съществуващ код 3
... CustUnrealizedVAT(CustLedgEntry,GenJnlLine.Amount) END ELSE BEGIN // Delete the following line. VendLedgEntry."Transaction No." := TransactionNo; VendUnrealizedVAT(VendLedgEntry,GenJnlLine.Amount); END; VATEntryNoToRealize := 0; ...Код за замяна 3
... CustUnrealizedVAT(CustLedgEntry,GenJnlLine.Amount) END ELSE BEGIN // Add the following line. VendLedgEntry."Transaction No." := VATEntry."Transaction No."; VendUnrealizedVAT(VendLedgEntry,GenJnlLine.Amount); END; VATEntryNoToRealize := 0; ...Изтрийте следните параметри във функцията ReversePostponedVAT във функцията Gen. Jnl.-Post Line кодова единица (12):
- ТранзакцияNo
- VATEntryNo
- VAR TempJnlLineDim2
Добавете нов параметър във функцията ReversePostponedVAT във функцията Gen. Jnl.-Post Line кодова единица (12) и след това задайте параметъра по следния начин:
- Име: ОтложенаВТЕнтрия
- DataType: Record
- Подтип: Въвеждане на ДДС (254)
Промяна на кода във функцията ReversePostponedVAT във функцията Gen. Jnl.-Post Line кодова единица (12), както следва:
Съществуващ код 1... GenJnlLine.COPY(GenJnlLine2); // Delete the following lines. TempJnlLineDim.RESET; TempJnlLineDim.DELETEALL; DimMgt.CopyJnlLineDimToJnlLineDim(TempJnlLineDim2,TempJnlLineDim); // End of the lines. SourceCodeSetup.GET; GenJnlLine."Source Code" := SourceCodeSetup.Reversal; ...Код за замяна 1
... GenJnlLine.COPY(GenJnlLine2); // Add the following lines. PreparePostponedVATDim(PostponedVATEntry,TempJnlLineDim); //End of the lines. SourceCodeSetup.GET; GenJnlLine."Source Code" := SourceCodeSetup.Reversal; ...Съществуващ код 2
... VATEntry.LOCKTABLE; UnrealVATEntry.SETCURRENTKEY("Transaction No."); // Delete the following lines. IF VATEntryNo <> 0 THEN UnrealVATEntry.SETRANGE("Entry No.",VATEntryNo) ELSE UnrealVATEntry.SETRANGE("Transaction No.",TransactionNo); // End of the lines. IF UnrealVATEntry.FINDSET(TRUE) THEN REPEAT VATEntry.SETCURRENTKEY("Unrealized VAT Entry No."); ...Код за замяна 2
... VATEntry.LOCKTABLE; UnrealVATEntry.SETCURRENTKEY("Transaction No."); // Add the following lines. IF PostponedVATEntry."Entry No." <> 0 THEN UnrealVATEntry.SETRANGE("Entry No.",PostponedVATEntry."Entry No.") ELSE UnrealVATEntry.SETRANGE("Transaction No.",PostponedVATEntry."Transaction No."); //End of the lines. IF UnrealVATEntry.FINDSET(TRUE) THEN REPEAT VATEntry.SETCURRENTKEY("Unrealized VAT Entry No."); ...Създаване на нова функция PreparePostponedVATDim в генерацията. Jnl.-Post Line кодова единица (12), както следва:
LOCAL PROCEDURE PreparePostponedVATDim@1170010(VATEntry@1170003 : Record 254;VAR TempJnlLineDim@1170000 : Record 356); VAR GLEntryVATEntryLink@1170002 : Record 253; LedgEntryDim@1170001 : Record 355; BEGIN TempJnlLineDim.RESET; TempJnlLineDim.DELETEALL; IF VATEntry.GetCVLedgEntryNo(TempJnlLineDim) = 0 THEN BEGIN GLEntryVATEntryLink.SETRANGE("VAT Entry No.",VATEntry."Entry No."); IF GLEntryVATEntryLink.FINDFIRST THEN BEGIN LedgEntryDim.SETRANGE("Table ID",DATABASE::"G/L Entry"); LedgEntryDim.SETRANGE("Entry No.",GLEntryVATEntryLink."G/L Entry No."); DimMgt.CopyLedgEntryDimToJnlLineDim(LedgEntryDim,TempJnlLineDim); END; END; END;Променете кода във функцията PostponeVATEntry в кодовата единица VATManagement (12376), както следва:
Съществуващ код... VATEntry.TESTFIELD("Postponed VAT",FALSE); VATEntry.TESTFIELD("Unrealized VAT Entry No.",0); IF NOT AllowSalesCrMemo AND // Delete the following lines. (VATEntry."Unrealized Base" <> 0) AND (VATEntry.Type = VATEntry.Type::Sale) AND (VATEntry."Document Type" = VATEntry."Document Type"::"Credit Memo") // End of the lines. THEN ERROR(Text010); UNTIL VATEntry.NEXT = 0 ...Код за подмяна
... VATEntry.TESTFIELD("Postponed VAT",FALSE); VATEntry.TESTFIELD("Unrealized VAT Entry No.",0); IF NOT AllowSalesCrMemo AND // Add the following line. IsPostponedSalesCrMemoVAT(VATEntry) AND HasPostedCrMemo(VATEntry."Document No.") THEN ERROR(Text010); UNTIL VATEntry.NEXT = 0 ...Променете кода във функцията RealizeVATEntry в кодовата единица VATManagement (12376), както следва:
Съществуващ код... VATEntry.TESTFIELD("Postponed VAT",TRUE); VATEntry.TESTFIELD("Unrealized VAT Entry No.",0); IF NOT AllowSalesCrMemo AND // Delete the following lines. (VATEntry."Unrealized Base" <> 0) AND (VATEntry.Type = VATEntry.Type::Sale) AND (VATEntry."Document Type" = VATEntry."Document Type"::"Credit Memo") // End of the lines. THEN ERROR(Text010); UNTIL VATEntry.NEXT = 0 ...Код за подмяна
... VATEntry.TESTFIELD("Postponed VAT",TRUE); VATEntry.TESTFIELD("Unrealized VAT Entry No.",0); IF NOT AllowSalesCrMemo AND // Add the following line. IsPostponedSalesCrMemoVAT(VATEntry) AND HasPostedCrMemo(VATEntry."Document No.") THEN ERROR(Text010); UNTIL VATEntry.NEXT = 0 ...Изтрийте следните локални променливи във функцията PostUnrealVAT в VATManagement codeunit (12376):
- TempJnlLineDim
- EntryNo
Променете кода във функцията PostUnrealVAT в кодовата единица VATManagement (12376), както следва:
Съществуващ код... ERROR(Text011, VATEntry.FIELDCAPTION("Posting Date"),VATEntry."Posting Date", VATEntry.FIELDCAPTION("Entry No."),VATEntry."Entry No."); // Delete the following lines. EntryNo := VATEntry.GetCVLedgEntryNo(TempJnlLineDim); IF EntryNo <> 0 THEN BEGIN GenJnlLine."Document Type" := VATEntry."Document Type"; GenJnlLine."Document No." := VATEntry."Document No."; GenJnlLine."Postponed VAT" := TRUE; GenJnlLine."VAT Date" := VATDate; GenJnlLine."Posting Date" := VATDate; IF VATEntry."Postponed VAT" THEN GenJnlLine.Description := Text008 ELSE GenJnlLine.Description := Text009; GenJnlLine.Description := COPYSTR( STRSUBSTNO(GenJnlLine.Description,VATEntry."Document Type",VATEntry."Document No."), 1,MAXSTRLEN(GenJnlLine.Description)); GenJnlLine."System-Created Entry" := TRUE; CASE VATEntry.Type OF VATEntry.Type::Sale: GenJnlLine."Account Type" := GenJnlLine."Account Type"::Customer; VATEntry.Type::Purchase: GenJnlLine."Account Type" := GenJnlLine."Account Type"::Vendor; END; IF Type = Type::Realize THEN PostGenJnlLine.RealizePostponedVAT(GenJnlLine,VATEntry."Transaction No.",VATEntry."Entry No.",TempJnlLineDim) ELSE // Reverse PostGenJnlLine.ReversePostponedVAT(GenJnlLine,VATEntry."Transaction No.",VATEntry."Entry No.",TempJnlLineDim); END; // End of the lines. ...Код за подмяна
... ERROR(Text011, VATEntry.FIELDCAPTION("Posting Date"),VATEntry."Posting Date", VATEntry.FIELDCAPTION("Entry No."),VATEntry."Entry No."); // Add the following lines. GenJnlLine."Document Type" := VATEntry."Document Type"; GenJnlLine."Document No." := VATEntry."Document No."; GenJnlLine."Postponed VAT" := TRUE; GenJnlLine."VAT Date" := VATDate; GenJnlLine."Posting Date" := VATDate; IF VATEntry."Postponed VAT" THEN GenJnlLine.Description := Text008 ELSE GenJnlLine.Description := Text009; GenJnlLine.Description := COPYSTR( STRSUBSTNO(GenJnlLine.Description,VATEntry."Document Type",VATEntry."Document No."), 1,MAXSTRLEN(GenJnlLine.Description)); GenJnlLine."System-Created Entry" := TRUE; CASE VATEntry.Type OF VATEntry.Type::Sale: GenJnlLine."Account Type" := GenJnlLine."Account Type"::Customer; VATEntry.Type::Purchase: GenJnlLine."Account Type" := GenJnlLine."Account Type"::Vendor; END; IF Type = Type::Realize THEN PostGenJnlLine.RealizePostponedVAT(GenJnlLine,VATEntry) ELSE // Reverse PostGenJnlLine.ReversePostponedVAT(GenJnlLine,VATEntry); //End of the lines. ...Създайте нова функция HasPostedCrMemo в кодовата единица VATManagement (12376), както следва:
LOCAL PROCEDURE HasPostedCrMemo@1170007(DocumentNo@1170000 : Code[20]) : Boolean; VAR SalesCrMemoHeader@1170001 : Record 114; BEGIN EXIT(SalesCrMemoHeader.GET(DocumentNo)); END;Създайте нова функция IsPostponedSalesCrMemoVAT в кодовата единица VATManagement (12376), както следва:
LOCAL PROCEDURE IsPostponedSalesCrMemoVAT@1170008(VATEntry@1170000 : Record 254) : Boolean; BEGIN EXIT( (VATEntry."Unrealized Base" <> 0) AND (VATEntry.Type = VATEntry.Type::Sale) AND (VATEntry."Document Type" = VATEntry."Document Type"::"Credit Memo")); END;
Предварителни изисквания
Трябва да имате инсталирана полската версия на Microsoft Dynamics NAV 2009 R2, за да приложите тази гореща корекция.
Информация за премахване
Не можете да премахнете тази гореща корекция.
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
Забележка: Това е статия "FAST PUBLISH", създадена директно от организацията за поддръжка на Microsoft. Информацията, съдържаща се тук, е предоставена както е в отговор на възникващи проблеми. В резултат на бързината на предоставянето им, материалите могат да включват печатни грешки и могат да бъдат коригирани по всяко време без предизвестие. Вижте условията на използване за други съображения.