Бързо публикуваните статии предоставят информация директно от организацията за поддръжка на Microsoft. Информацията, която се съдържа в този документ, е създадена в отговор на нововъзникнали или уникални теми или е предназначена да допълни друга информация в базата знания.
Тази статия се отнася за Microsoft Dynamics NAV за следните страни и езикови променливи.
- Белгия (френски) (fr-be)
- Белгия (нидерландски) (nl-be)
Симптоми
В белгийската версия на Microsoft Dynamics NAV, когато публикувате фактура от чуждестранен доставчик, където трябва да се осчетоводи неприспадащият се ДДС, неприспадащият се ДДС не се пресмята и осчетоводява за публикуваната фактура. Този проблем възниква, ако типът изчисление на ДДС е зададен на "Обратно начисляване на ДДС".
Този проблем възниква в следните продукти:
- Белгийска версия на Microsoft Dynamics NAV 2009 със Service Pack 1 (SP1)
- Белгийската версия на Microsoft Dynamics NAV 5.0 с SP1
Решение
Информация за горещи поправки
Поддържа гореща поправка вече се предлага от Microsoft. Целта му е обаче само да коригира проблема, който е описан в тази статия. Прилагайте го само към системи, които срещат този конкретен проблем. Тази гореща корекция може да бъде подложена на допълнително тестване. Ето защо, ако не сте сериозно засегнати от този проблем, ви препоръчваме да изчакате следващия сервизен пакет за Microsoft Dynamics NAV или следващата версия, която съдържа тази гореща корекция.
Забележка: При специални случаи таксите, които обикновено се начисляват за свързани с поддръжката разговори, могат да бъдат отменени, ако специалист по техническа поддръжка за Microsoft Dynamics и свързаните продукти реши, че проблемът може да бъде решен със специфична актуализация. Стандартните такси за поддръжката ще важат за допълнителни въпроси, свързани с нея, както и за проблеми, които не спадат към съответната актуализация.
Информация за инсталиране
Microsoft предоставя примери за програмиране само за илюстрация, без гаранция, нито изрична, или подразбираща се. Това включва, но не се ограничава до, подразбиращите се гаранции за продаваемост или годност за определена цел. В тази статия се предполага, че сте запознати с езика за програмиране, който се демонстрира, и с инструментите, които се използват за създаване и за процедури за отстраняване на грешки. Инженерите по поддръжка на Microsoft могат да ви помогнат да обяснят функционалността на дадена процедура, но няма да променят тези примери, за да предоставят допълнителна функционалност или да конструират процедури, които да отговарят на вашите конкретни изисквания.
Забележка Преди да инсталирате тази гореща корекция, уверете се, че всички потребители на клиента на Microsoft Navision са излезли от системата. Това включва потребители на клиенти на Microsoft Navision Application Services (NAS). Когато внедрявате тази гореща корекция, трябва да сте единственият клиентски потребител е влязъл.
За да приложите тази гореща корекция, трябва да имате лиценз за разработчик.
Препоръчваме на потребителския акаунт в прозореца за влизане в Windows или в прозореца за влизане в база данни да бъде присвоен ИД на роля "SUPER". Ако на потребителския акаунт не може да бъде присвоен ИД на роля "SUPER", трябва да се уверите, че този потребителски акаунт има следните разрешения:
- Разрешението за промяна за обекта, който ще променяте.
- Разрешението за изпълнение за обекта 5210 на системен обект с ИД 5210 и за обекта 9015 на системен обект.
Забележка: Не е необходимо да имате права за хранилищата за данни, освен ако не трябва да извършите поправка на данни.
Промени в кода
Забележка: Винаги тествайте корекциите на кода в контролирана среда, преди да ги приложите към производствените си компютри.
За да инсталирате тази гореща корекция, променете кода в кодовата единица Purch.-Post (90).
За да направите това, изпълнете следните стъпки:
В менюто " Изглед " щракнете върху C/AL Global и след това добавете следните променливи в раздела "Променливи ":
Първата променлива:- Име: TotalNonDeductVATForRChargeVAT
- DataType: Decimal
Втората променлива:
- Име: TotalNonDeductVATFCYForRCVAT
- DataType: Decimal
Третата променлива:
- Име: PurchLineForReverseChargeVAT
- DataType: Record
- Подтип: Ред за закупуване
- В менюто " Изглед " щракнете върху "Свойства" и след това задайте свойството "Временни" на "да".
Променете кода в превключвателя OnRun по следния начин:
Съществуващ код... TempVATAmountLineRemainder.DELETEALL; PurchLine.CalcVATAmountLines(1,PurchHeader,CombinedPurchLineTemp,TempVATAmountLine); IF PurchLine.FINDSET THEN REPEAT JobPurchLine := PurchLine; ...Код за подмяна
.... TempVATAmountLineRemainder.DELETEALL; PurchLine.CalcVATAmountLines(1,PurchHeader,CombinedPurchLineTemp,TempVATAmountLine); PurchLineForReverseChargeVAT.RESET; // Add this line. PurchLineForReverseChargeVAT.DELETEALL; // Add this line. IF PurchLine.FINDSET THEN REPEAT JobPurchLine := PurchLine; ....Съществуващ код 1
... END ELSE PurchLine.TESTFIELD(Amount,0); RoundAmount(PurchLine."Qty. to Invoice"); IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN ReverseAmount(PurchLine); ReverseAmount(PurchLineACY); END; RemQtyToBeInvoiced := PurchLine."Qty. to Invoice"; ...Код за замяна 1
... END ELSE PurchLine.TESTFIELD(Amount,0); PurchLineForReverseChargeVAT := PurchLine; // Add this line. RoundAmount(PurchLine."Qty. to Invoice"); IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN ReverseAmount(PurchLine); ReverseAmount(PurchLineACY); ReverseAmount(PurchLineForReverseChargeVAT); // Add this line. END; PurchLineForReverseChargeVAT.INSERT; // Add this line. RemQtyToBeInvoiced := PurchLine."Qty. to Invoice"; ...Съществуващ код 2
... CASE InvPostingBuffer[1]."VAT Calculation Type" OF InvPostingBuffer[1]."VAT Calculation Type"::"Reverse Charge VAT": // Delete the following lines. BEGIN VATPostingSetup.GET( InvPostingBuffer[1]."VAT Bus. Posting Group",InvPostingBuffer[1]."VAT Prod. Posting Group"); InvPostingBuffer[1]."VAT Amount" := ROUND( (InvPostingBuffer[1].Amount - InvPostingBuffer[1]."Line Discount Amount" - InvPostingBuffer[1]."Inv. Discount Amount") * VATPostingSetup."VAT %" / 100); InvPostingBuffer[1]."VAT Amount (ACY)" := ROUND( (InvPostingBuffer[1]."Amount (ACY)" - InvPostingBuffer[1]."Line Discount Amt. (ACY)" - InvPostingBuffer[1]."Inv. Discount Amt. (ACY)") * VATPostingSetup."VAT %" / 100,Currency."Amount Rounding Precision"); END; // The end of the lines. InvPostingBuffer[1]."VAT Calculation Type"::"Sales Tax": ....Код за замяна 2
... CASE InvPostingBuffer[1]."VAT Calculation Type" OF InvPostingBuffer[1]."VAT Calculation Type"::"Reverse Charge VAT": CalcAmtVATForReversechargeVAT; // Add this line. InvPostingBuffer[1]."VAT Calculation Type"::"Sales Tax": ...Съществуващ код 3
.... GenJnlLine."Currency Code" := "Currency Code"; // Delete the following lines. GenJnlLine.Amount := -TotalPurchLine."Amount Including VAT"; GenJnlLine."Source Currency Code" := "Currency Code"; GenJnlLine."Source Currency Amount" := -TotalPurchLine."Amount Including VAT"; GenJnlLine."Amount (LCY)" := -TotalPurchLineLCY."Amount Including VAT"; // The end of the lines. IF PurchHeader."Currency Code" = '' THEN GenJnlLine."Currency Factor" := 1 ...Код за замяна 3
.... GenJnlLine."Currency Code" := "Currency Code"; // Add the following lines. GenJnlLine.Amount := -(TotalPurchLine."Amount Including VAT" + TotalNonDeductVATFCYForRCVAT); GenJnlLine."Source Currency Code" := "Currency Code"; GenJnlLine."Source Currency Amount" := -(TotalPurchLine."Amount Including VAT" + TotalNonDeductVATFCYForRCVAT); GenJnlLine."Amount (LCY)" := -(TotalPurchLineLCY."Amount Including VAT" + TotalNonDeductVATForRChargeVAT); // The end of the new lines. IF PurchHeader."Currency Code" = '' THEN GenJnlLine."Currency Factor" := 1 ...Добавете нова функция "CalcAmtVATForReversechargeVAT". За да направите това, изпълнете следните стъпки:
В менюто "Изглед " щракнете върху C/AL Globals и добавете следното в раздела "Функции ", както следва:
- Име: CalcAmtVATForReversechargeVAT
Щракнете върху "Локални" и добавете следното в раздела "Променливи" :
Първата променлива:- Име: InvPostingVATAmountFCY
- DataType: Decimal
Втората променлива:
- Име: NonDeductVATForReversChargeVAT
- DataType: Decimal
Третата променлива:
- Име: NonDeductVATACYForRevsChargVA
- DataType: Decimal
Четвъртата променлива:
- Име: NonDeductVATFCYForRevsChargVAT
- DataType: Decimal
Добавете следните кодове за активатора CalcAmtVATForReversechargeVAT, както следва:
VATPostingSetup.GET( InvPostingBuffer[1]."VAT Bus. Posting Group",InvPostingBuffer[1]."VAT Prod. Posting Group"); PurchLineForReverseChargeVAT.RESET; PurchLineForReverseChargeVAT.SETRANGE("Line No.",InvPostingBuffer[1]."Line No."); PurchLineForReverseChargeVAT.FINDFIRST; NonDeductVATForReversChargeVAT := ROUND( (InvPostingBuffer[1].Amount - InvPostingBuffer[1]."Line Discount Amount" - InvPostingBuffer[1]."Inv. Discount Amount") * VATPostingSetup."VAT %" / 100 * PurchLineForReverseChargeVAT."Non Deductible VAT %" / 100); NonDeductVATACYForRevsChargVAT := ROUND( (InvPostingBuffer[1]."Amount (ACY)" - InvPostingBuffer[1]."Line Discount Amt. (ACY)" - InvPostingBuffer[1]."Inv. Discount Amt. (ACY)") * VATPostingSetup."VAT %" / 100 * PurchLineForReverseChargeVAT."Non Deductible VAT %" / 100, Currency."Amount Rounding Precision"); NonDeductVATFCYForRevsChargVAT := ROUND( (PurchLineForReverseChargeVAT.Amount - InvPostingBuffer[1]."Line Discount Amount" - InvPostingBuffer[1]."Inv. Discount Amount") * VATPostingSetup."VAT %" / 100 * PurchLineForReverseChargeVAT."Non Deductible VAT %" / 100, Currency."Amount Rounding Precision"); InvPostingBuffer[1]."VAT Amount" := ROUND( (InvPostingBuffer[1].Amount - InvPostingBuffer[1]."Line Discount Amount" - InvPostingBuffer[1]."Inv. Discount Amount") * VATPostingSetup."VAT %" / 100) - NonDeductVATForReversChargeVAT; InvPostingBuffer[1]."VAT Amount (ACY)" := ROUND( (InvPostingBuffer[1]."Amount (ACY)" - InvPostingBuffer[1]."Line Discount Amt. (ACY)" - InvPostingBuffer[1]."Inv. Discount Amt. (ACY)") * VATPostingSetup."VAT %" / 100, Currency."Amount Rounding Precision") - NonDeductVATACYForRevsChargVAT; InvPostingVATAmountFCY := ROUND( (PurchLineForReverseChargeVAT.Amount - PurchLineForReverseChargeVAT."Line Discount Amount" - PurchLineForReverseChargeVAT."Inv. Discount Amount") * VATPostingSetup."VAT %" / 100, Currency."Amount Rounding Precision") - NonDeductVATFCYForRevsChargVAT; InvPostingBuffer[1].Amount := InvPostingBuffer[1].Amount + NonDeductVATForReversChargeVAT; InvPostingBuffer[1]."Amount (ACY)" := InvPostingBuffer[1]."Amount (ACY)" + NonDeductVATACYForRevsChargVAT; InvPostingBuffer[1]."VAT Base Amount" := InvPostingBuffer[1]."VAT Base Amount" + NonDeductVATForReversChargeVAT; TotalNonDeductVATForRChargeVAT := TotalNonDeductVATForRChargeVAT + NonDeductVATForReversChargeVAT; TotalNonDeductVATFCYForRCVAT := TotalNonDeductVATFCYForRCVAT + NonDeductVATFCYForRevsChargVAT;
Предварителни изисквания
Трябва да имате инсталиран един от следните продукти, за да приложите тази гореща корекция:
- Белгийската версия на Microsoft Dynamics NAV 2009 с SP1
- Белгийската версия на Microsoft Dynamics NAV 5.0 с SP1
Информация за премахване
Не можете да премахнете тази гореща корекция.
Състояние
Microsoft потвърждава, че това е проблем в продуктите на Microsoft, които са изброени в раздела „Важи за“.
MICROSOFT И/ИЛИ НЕГОВИТЕ ДОСТАВЧИЦИ НЕ ДАВАТ ОБЕЩАНИЯ ИЛИ ГАРАНЦИИ ОТНОСНО ПРИГОДНОСТТА, НАДЕЖДНОСТТА ИЛИ ТОЧНОСТТА НА ИНФОРМАЦИЯТА, КОЯТО СЕ СЪДЪРЖА В ДОКУМЕНТИТЕ И СВЪРЗАНИТЕ ГРАФИКИ, ПУБЛИКУВАНИ НА ТОЗИ УЕБ САЙТ ("МАТЕРИАЛИТЕ"), ЗА КАКВАТО И ДА Е ЦЕЛ.
МАТЕРИАЛИТЕ МОГАТ ДА ВКЛЮЧВАТ ТЕХНИЧЕСКИ НЕТОЧНОСТИ ИЛИ ПЕЧАТНИ ГРЕШКИ И МОГАТ ДА БЪДАТ КОРИГИРАНИ ПО ВСЯКО ВРЕМЕ БЕЗ ПРЕДИЗВЕСТИЕ. ДО МАКСИМАЛНАТА СТЕПЕН, РАЗРЕШЕНА ОТ ПРИЛОЖИМОТО ЗАКОНОДАТЕЛСТВО, MICROSOFT И/ИЛИ НЕЙНИТЕ ДОСТАВЧИЦИ ОТХВЪРЛЯТ И ИЗКЛЮЧВАТ ВСИЧКИ ДЕКЛАРАЦИИ, ГАРАНЦИИ И УСЛОВИЯ, НЕЗАВИСИМО ДАЛИ СА ИЗРИЧНИ, ПОДРАЗБИРАЩИ СЕ, ИЛИ ЗАКОНОВИ, ВКЛЮЧИТЕЛНО, НО НЕ САМО, ДЕКЛАРАЦИИ, ГАРАНЦИИ ИЛИ УСЛОВИЯ ЗА СОБСТВЕНОСТ, НЕНАРУШЕНИЕ, ЗАДОВОЛИТЕЛНО СЪСТОЯНИЕ ИЛИ КАЧЕСТВО, ПРОДАВАЕМОСТ И ПРИГОДНОСТ ЗА ОПРЕДЕЛЕНА ЦЕЛ, ПО ОТНОШЕНИЕ НА МАТЕРИАЛИТЕ.