Tento článek platí pro společnost Microsoft pro následující země a jazyková prostředí.
- Angličtina (Kanada) (en-ca)
- Angličtina (USA) (en-us)
- Španělština (Mexiko) (es-mx)
- Francouzština (Kanada) (fr-ca)
Příznaky
Předpokládejme, že jste nastavili CAD jako hodnotu Další měna vykazování v dialogovém okně Nastavení hlavní knihy v severoamerické verzi aplikace Microsoft Dynamics NAV 2009. Při zaúčtování nákupní faktury, která obsahuje daň, se zobrazí následující chybová zpráva:
Poznámka
Transakci nelze dokončit, protože by způsobila nekonzistence v tabulce Položky hlavní knihy. Chcete-li najít příčinu chyby, zkontrolujte, kde a jak je v transakci použita funkce KONZISTENTNÍ.
K tomuto problému dochází u následujících produktů:
- Severoamerická verze aplikace Microsoft Dynamics NAV 2009 R2
- Severoamerická verze aplikace Microsoft Dynamics NAV 2009 Service Pack 1
Řešení
Informace o opravě hotfix
Od Microsoftu je teď k dispozici podporovaná oprava hotfix. Účelem je však pouze vyřešení problému, který je popsán v tomto článku. Aplikujte ho jenom na systémy, ve kterých dochází k tomuto konkrétnímu problému. Tato oprava hotfix může projít dalším testováním. Pokud se vás tedy tento problém vážně netýká, doporučujeme počkat na další aktualizaci Service Pack pro produkt Microsoft Dynamics NAV 2009 nebo další verzi aplikace Microsoft Dynamics NAV, která tuto opravu hotfix obsahuje.
Poznámka: Ve zvláštních případech mohou být poplatky, které jsou obvykle účtovány za telefonická hovory podpory, zrušeny, pokud pracovník technické podpory pro řešení Microsoft Dynamics a související produkty zjistí, že konkrétní aktualizace vyřeší váš problém. Další dotazy a problémy týkající se podpory, které se netýkají této konkrétní opravy, podléhají běžným sazbám za podporu.
Informace o instalaci
Společnost Microsoft poskytuje příklady programování pouze pro ilustraci, bez záruky, ať už vyjádřené nebo předpokládané. To zahrnuje, ale není omezeno na, předpokládané záruky prodejnosti nebo vhodnosti pro konkrétní účel. Tento článek předpokládá, že jste obeznámeni s programovacím jazykem, který je předváděn, a s nástroji, které se používají k vytváření a ladění procedur. Pracovníci technické podpory Microsoftu vám můžou pomoct vysvětlit funkčnost určitého postupu, ale nebudou tyto příklady upravovat za účelem poskytování dalších funkcí nebo konstrukce procedur, které by splňovaly vaše konkrétní požadavky.
Poznámka: Před instalací této opravy hotfix ověřte, zda jsou všichni uživatelé klienta Microsoft Navision odhlášeni ze systému. To zahrnuje i uživatele klienta Microsoft Navision Application Services (NAS). Měli byste být jediným klientským uživatelem, který je přihlášen při implementaci této opravy hotfix.
K implementaci této opravy hotfix musíte mít vývojářskou licenci.
Doporučujeme, aby uživatelské účtu v okně Windows Přihlášení nebo v okně Přihlášení k databázi bylo přiřazeno ID role "SUPER". Pokud nelze uživatelskému účtu přiřadit ID role "SUPER", je nutné ověřit, zda má uživatelský účet následující oprávnění:
- Oprávnění k úpravám objektu, který budete měnit.
- Oprávnění ke spuštění pro objekt s ID systémového objektu 5210 a pro objekt s ID systémového objektu 9015.
Poznámka: K úložištím dat nemusíte mít práva, ledaže byste museli provádět opravu dat.
Změny kódu
Poznámka: Před použitím oprav v produkčních počítačích vždy otestujte opravy kódu v kontrolovaném prostředí.
Chcete-li tento problém vyřešit, postupujte takto:
Změňte kód v poli tabulky Řádek DPH-částka (10011) takto:
Existující kód... ESM=Es Informe jurisdicci¢n; FRC=Est une juridiction fiscale; ENC=Is Report-to Jurisdiction]; Editable=No } } KEYS { { ;Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax; ...Náhradní kód
... ESM=Es Informe jurisdicci¢n; FRC=Est une juridiction fiscale; ENC=Is Report-to Jurisdiction]; Editable=No } // Add the following line. { 10044; ;Tax Base Amount FCY ;Decimal } // End of the added line. } KEYS { { ;Tax Area Code for Key,Tax Jurisdiction Code,Tax %,Tax Group Code,Expense/Capitalize,Tax Type,Use Tax; ...Změňte kód ve funkci PostSalesTaxToGL v kódové jednotce Sales-Post (80) takto:
Existující kód... END; GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code"; IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN RemSalesTaxSrcAmt := RemSalesTaxSrcAmt + // Delete the following lines. CurrExchRate.ExchangeAmtLCYToFCY( UseDate,SalesHeader."Currency Code",TempSalesTaxAmtLine."Tax Amount",SalesHeader."Currency Factor"); // End of the deleted lines. GenJnlLine."Source Curr. VAT Amount" := SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision"); RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount"; RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount"; ...Náhradní kód
... END; GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code"; IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN RemSalesTaxSrcAmt := RemSalesTaxSrcAmt + // Add the following lines. TempSalesTaxAmtLine."Tax Base Amount FCY" * TempSalesTaxAmtLine."Tax %" / 100; // End of the added lines. GenJnlLine."Source Curr. VAT Amount" := SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision"); RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount"; RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount"; ...Změňte kód ve funkci PostSalesTaxToGL v jednotce Purch.-Post Code Unit (90) takto:
Existující kód... END; GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code"; IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN RemSalesTaxSrcAmt := RemSalesTaxSrcAmt + // Delete the following lines. CurrExchRate.ExchangeAmtLCYToFCY( Usedate,PurchHeader."Currency Code",TempSalesTaxAmtLine."Tax Amount",PurchHeader."Currency Factor"); // End of the deleted lines. GenJnlLine."Source Curr. VAT Amount" := SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision"); RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount"; RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount"; ...Náhradní kód
... END; GenJnlLine."Tax Jurisdiction Code" := TempSalesTaxAmtLine."Tax Jurisdiction Code"; IF TempSalesTaxAmtLine."Tax Amount" <> 0 THEN BEGIN RemSalesTaxSrcAmt := RemSalesTaxSrcAmt + // Add the following line. TempSalesTaxAmtLine."Tax Base Amount FCY" * TempSalesTaxAmtLine."Tax %" / 100; // End of the added line. GenJnlLine."Source Curr. VAT Amount" := SalesTaxCalculate.ArithmeticRound(RemSalesTaxSrcAmt,Currency."Amount Rounding Precision"); RemSalesTaxSrcAmt := RemSalesTaxSrcAmt - GenJnlLine."Source Curr. VAT Amount"; RemSalesTaxAmt := RemSalesTaxAmt + TempSalesTaxAmtLine."Tax Amount"; ...Změňte kód ve funkci PostProvincialSalesTaxToGL v jednotce Purch.-Post Code Unit (90) takto:
Existující kód... TaxJurisdiction.TESTFIELD("Tax Account (Purchases)"); GenJnlLine."Account No." := TaxJurisdiction."Tax Account (Purchases)"; END; GenJnlLine.Amount := GenJnlLine."VAT Amount"; // Delete the following lines. GenJnlLine."Source Curr. VAT Base Amount" := 0; GenJnlLine."VAT Base Amount (LCY)" := 0; GenJnlLine."VAT Base Amount" := 0; GenJnlLine."Source Curr. VAT Amount" := 0; // End of the deleted lines. GenJnlLine."VAT Amount (LCY)" := 0; GenJnlLine."VAT Amount" := 0; GenJnlLine.Quantity := 0; GenJnlLine."VAT Difference" := 0; ...Náhradní kód
... TaxJurisdiction.TESTFIELD("Tax Account (Purchases)"); GenJnlLine."Account No." := TaxJurisdiction."Tax Account (Purchases)"; END; GenJnlLine.Amount := GenJnlLine."VAT Amount"; // Add the following lines. GenJnlLine."Source Currency Amount" := GenJnlLine."Source Curr. VAT Amount"; GenJnlLine."Source Curr. VAT Base Amount" := 0; GenJnlLine."VAT Base Amount (LCY)" := 0; GenJnlLine."VAT Base Amount" := 0; // End of the added lines. GenJnlLine."VAT Amount (LCY)" := 0; GenJnlLine."VAT Amount" := 0; GenJnlLine.Quantity := 0; GenJnlLine."VAT Difference" := 0; ...Následujícím způsobem změňte kód funkce PřidatProdejŘádek v poli Jednotka kódu pro výpočet DPH (398):
Existující kód 1... "Round Tax" := TaxArea."Round Tax"; TaxJurisdiction.GET("Tax Jurisdiction Code"); "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; // Delete the following line. "Tax Base Amount" := (SalesLine."Line Amount" - SalesLine."Inv. Discount Amount") / ExchangeFactor; // End of the deleted line. "Line Amount" := SalesLine."Line Amount" / ExchangeFactor; "Tax Liable" := SalesLine."Tax Liable"; Quantity := SalesLine."Quantity (Base)"; "Invoice Discount Amount" := SalesLine."Inv. Discount Amount"; ...Náhradní kód 1
... "Round Tax" := TaxArea."Round Tax"; TaxJurisdiction.GET("Tax Jurisdiction Code"); "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",ExchangeFactor,FALSE); // End of the added line. "Line Amount" := SalesLine."Line Amount" / ExchangeFactor; "Tax Liable" := SalesLine."Tax Liable"; Quantity := SalesLine."Quantity (Base)"; "Invoice Discount Amount" := SalesLine."Inv. Discount Amount"; ...Existující kód 2
... END ELSE BEGIN "Line Amount" := "Line Amount" + (SalesLine."Line Amount" / ExchangeFactor); IF SalesLine."Tax Liable" THEN "Tax Liable" := SalesLine."Tax Liable"; // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + ((SalesLine."Line Amount" - SalesLine."Inv. Discount Amount") / ExchangeFactor); // End of the deleted line. "Tax Amount" := 0; Quantity := Quantity + SalesLine."Quantity (Base)"; "Invoice Discount Amount" := "Invoice Discount Amount" + SalesLine."Inv. Discount Amount"; MODIFY; ...Náhradní kód 2
... END ELSE BEGIN "Line Amount" := "Line Amount" + (SalesLine."Line Amount" / ExchangeFactor); IF SalesLine."Tax Liable" THEN "Tax Liable" := SalesLine."Tax Liable"; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,SalesLine."Line Amount" - SalesLine."Inv. Discount Amount",ExchangeFactor,TRUE); // End of the added line. "Tax Amount" := 0; Quantity := Quantity + SalesLine."Quantity (Base)"; "Invoice Discount Amount" := "Invoice Discount Amount" + SalesLine."Inv. Discount Amount"; MODIFY; ...Následujícím způsobem změňte kód ve funkci AddSalesInvoiceLines v poli Sales Tax Calculate Codeunit (398):
Existující kód 1... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := SalesInvoiceLine."Line Amount" / ExchangeFactor; // Delete the following line. "Tax Base Amount" := SalesInvoiceLine."VAT Base Amount" / ExchangeFactor; // End of the deleted line. Quantity := SalesInvoiceLine.Quantity; "Tax Liable" := SalesInvoiceLine."Tax Liable"; "Calculation Order" := TaxAreaLine."Calculation Order"; InsertRec := TRUE; ...Náhradní kód 1
... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := SalesInvoiceLine."Line Amount" / ExchangeFactor; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,SalesInvoiceLine."VAT Base Amount",ExchangeFactor,FALSE); // End of the added line. Quantity := SalesInvoiceLine.Quantity; "Tax Liable" := SalesInvoiceLine."Tax Liable"; "Calculation Order" := TaxAreaLine."Calculation Order"; InsertRec := TRUE; ...Existující kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (SalesInvoiceLine."Line Amount" / ExchangeFactor); // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + (SalesInvoiceLine."VAT Base Amount" / ExchangeFactor); // End of the deleted line. Quantity := Quantity + SalesInvoiceLine.Quantity; IF SalesInvoiceLine."Tax Liable" THEN "Tax Liable" := SalesInvoiceLine."Tax Liable"; InsertRec := FALSE; ...Náhradní kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (SalesInvoiceLine."Line Amount" / ExchangeFactor); // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,SalesInvoiceLine."VAT Base Amount",ExchangeFactor,TRUE); // End of the added line. Quantity := Quantity + SalesInvoiceLine.Quantity; IF SalesInvoiceLine."Tax Liable" THEN "Tax Liable" := SalesInvoiceLine."Tax Liable"; InsertRec := FALSE; ...Změňte kód ve funkci AddSalesCrMemoLines v jednotce kódu pro výpočet DPH (398) takto:
Existující kód 1... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := SalesCrMemoLine."Line Amount" / ExchangeFactor; // Delete the following line. "Tax Base Amount" := SalesCrMemoLine."VAT Base Amount" / ExchangeFactor; // End of the deleted line. Quantity := SalesCrMemoLine.Quantity; "Tax Liable" := SalesCrMemoLine."Tax Liable"; "Calculation Order" := TaxAreaLine."Calculation Order"; InsertRec := TRUE; ...Náhradní kód 1
... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := SalesCrMemoLine."Line Amount" / ExchangeFactor; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,SalesCrMemoLine."VAT Base Amount",ExchangeFactor,FALSE); // End of the added line. Quantity := SalesCrMemoLine.Quantity; "Tax Liable" := SalesCrMemoLine."Tax Liable"; "Calculation Order" := TaxAreaLine."Calculation Order"; InsertRec := TRUE; ...Existující kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (SalesCrMemoLine."Line Amount" / ExchangeFactor); // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + (SalesCrMemoLine."VAT Base Amount" / ExchangeFactor); // End of the deleted line. Quantity := Quantity + SalesCrMemoLine.Quantity; IF SalesCrMemoLine."Tax Liable" THEN "Tax Liable" := SalesCrMemoLine."Tax Liable"; InsertRec := FALSE; ...Náhradní kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (SalesCrMemoLine."Line Amount" / ExchangeFactor); // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,SalesCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE); // End of the added line. Quantity := Quantity + SalesCrMemoLine.Quantity; IF SalesCrMemoLine."Tax Liable" THEN "Tax Liable" := SalesCrMemoLine."Tax Liable"; InsertRec := FALSE; ...Následujícím způsobem změňte kód funkce AddPurchLine v poli Jednotka kódu pro výpočet DPH (398):
Existující kód 1... "Round Tax" := TaxArea."Round Tax"; TaxJurisdiction.GET("Tax Jurisdiction Code"); "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; // Delete the following line. "Tax Base Amount" := (PurchLine."Line Amount" - PurchLine."Inv. Discount Amount") / ExchangeFactor; // End of the deleted line. "Line Amount" := PurchLine."Line Amount" / ExchangeFactor; "Tax Liable" := PurchLine."Tax Liable"; "Use Tax" := PurchLine."Use Tax"; ...Náhradní kód 1
... "Round Tax" := TaxArea."Round Tax"; TaxJurisdiction.GET("Tax Jurisdiction Code"); "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,PurchLine."Line Amount" - PurchLine."Inv. Discount Amount",ExchangeFactor,FALSE); // End of the added line. "Line Amount" := PurchLine."Line Amount" / ExchangeFactor; "Tax Liable" := PurchLine."Tax Liable"; "Use Tax" := PurchLine."Use Tax"; ...Existující kód 2
... END ELSE BEGIN "Line Amount" := "Line Amount" + (PurchLine."Line Amount" / ExchangeFactor); IF PurchLine."Tax Liable" THEN "Tax Liable" := PurchLine."Tax Liable"; // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + ((PurchLine."Line Amount" - PurchLine."Inv. Discount Amount") / ExchangeFactor); // End of the deleted line. "Tax Amount" := 0; Quantity := Quantity + PurchLine."Quantity (Base)"; "Invoice Discount Amount" := "Invoice Discount Amount" + PurchLine."Inv. Discount Amount"; MODIFY; ...Náhradní kód 2
... END ELSE BEGIN "Line Amount" := "Line Amount" + (PurchLine."Line Amount" / ExchangeFactor); IF PurchLine."Tax Liable" THEN "Tax Liable" := PurchLine."Tax Liable"; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,PurchLine."Line Amount" - PurchLine."Inv. Discount Amount",ExchangeFactor,TRUE); // End of the added line. "Tax Amount" := 0; Quantity := Quantity + PurchLine."Quantity (Base)"; "Invoice Discount Amount" := "Invoice Discount Amount" + PurchLine."Inv. Discount Amount"; MODIFY; ...Následujícím způsobem změňte kód ve funkci AddPurchInvoiceLines v části Jednotka kódu pro výpočet DPH (398):
Existující kód 1... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := PurchInvLine."Line Amount" / ExchangeFactor; // Delete the following line. "Tax Base Amount" := PurchInvLine."VAT Base Amount" / ExchangeFactor; // End of the deleted line. Quantity := PurchInvLine.Quantity; "Tax Liable" := PurchInvLine."Tax Liable"; "Use Tax" := PurchInvLine."Use Tax"; ...Náhradní kód 1
... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := PurchInvLine."Line Amount" / ExchangeFactor; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,PurchInvLine."VAT Base Amount",ExchangeFactor,FALSE); // End of the added line. Quantity := PurchInvLine.Quantity; "Tax Liable" := PurchInvLine."Tax Liable"; "Use Tax" := PurchInvLine."Use Tax"; ...Existující kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (PurchInvLine."Line Amount" / ExchangeFactor); // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + (PurchInvLine."VAT Base Amount" / ExchangeFactor); // End of the deleted line. Quantity := Quantity + PurchInvLine.Quantity; IF PurchInvLine."Tax Liable" THEN "Tax Liable" := PurchInvLine."Tax Liable"; InsertRec := FALSE; ...Náhradní kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (PurchInvLine."Line Amount" / ExchangeFactor); // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,PurchInvLine."VAT Base Amount",ExchangeFactor,TRUE); // End of the added line. Quantity := Quantity + PurchInvLine.Quantity; IF PurchInvLine."Tax Liable" THEN "Tax Liable" := PurchInvLine."Tax Liable"; InsertRec := FALSE; ...Následujícím způsobem změňte kód ve funkci AddPurchCrMemoLines v jednotce kódu pro výpočet DPH (398):
Existující kód 1... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := PurchCrMemoLine."Line Amount" / ExchangeFactor; // Delete the following line. "Tax Base Amount" := PurchCrMemoLine."VAT Base Amount" / ExchangeFactor; // End of the deleted line. Quantity := PurchCrMemoLine.Quantity; "Tax Liable" := PurchCrMemoLine."Tax Liable"; "Use Tax" := PurchCrMemoLine."Use Tax"; ...Náhradní kód 1
... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := PurchCrMemoLine."Line Amount" / ExchangeFactor; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,PurchCrMemoLine."VAT Base Amount",ExchangeFactor,FALSE); // End of the added line. Quantity := PurchCrMemoLine.Quantity; "Tax Liable" := PurchCrMemoLine."Tax Liable"; "Use Tax" := PurchCrMemoLine."Use Tax"; ...Existující kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (PurchCrMemoLine."Line Amount" / ExchangeFactor); // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + (PurchCrMemoLine."VAT Base Amount" / ExchangeFactor); // End of the deleted line. Quantity := Quantity + PurchCrMemoLine.Quantity; IF PurchCrMemoLine."Tax Liable" THEN "Tax Liable" := PurchCrMemoLine."Tax Liable"; InsertRec := FALSE; ...Náhradní kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (PurchCrMemoLine."Line Amount" / ExchangeFactor); // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,PurchCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE); // End of the added line. Quantity := Quantity + PurchCrMemoLine.Quantity; IF PurchCrMemoLine."Tax Liable" THEN "Tax Liable" := PurchCrMemoLine."Tax Liable"; InsertRec := FALSE; ...Následujícím způsobem změňte kód funkce AddServiceLine v poli Jednotka kódu pro výpočet DPH (398):
Existující kód 1... "Round Tax" := TaxArea."Round Tax"; TaxJurisdiction.GET("Tax Jurisdiction Code"); "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; // Delete the following line. "Tax Base Amount" := (ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount") / ExchangeFactor; // End of the deleted line. "Line Amount" := ServiceLine."Line Amount" / ExchangeFactor; "Tax Liable" := ServiceLine."Tax Liable"; Quantity := ServiceLine."Quantity (Base)"; "Invoice Discount Amount" := ServiceLine."Inv. Discount Amount"; ...Náhradní kód 1
... "Round Tax" := TaxArea."Round Tax"; TaxJurisdiction.GET("Tax Jurisdiction Code"); "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount",ExchangeFactor,FALSE); // End of the added line. "Line Amount" := ServiceLine."Line Amount" / ExchangeFactor; "Tax Liable" := ServiceLine."Tax Liable"; Quantity := ServiceLine."Quantity (Base)"; "Invoice Discount Amount" := ServiceLine."Inv. Discount Amount"; ...Existující kód 2
... END ELSE BEGIN "Line Amount" := "Line Amount" + (ServiceLine."Line Amount" / ExchangeFactor); IF ServiceLine."Tax Liable" THEN "Tax Liable" := ServiceLine."Tax Liable"; // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + ((ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount") / ExchangeFactor); // End of the deleted line. "Tax Amount" := 0; Quantity := Quantity + ServiceLine."Quantity (Base)"; "Invoice Discount Amount" := "Invoice Discount Amount" + ServiceLine."Inv. Discount Amount"; MODIFY; ...Náhradní kód 2
... END ELSE BEGIN "Line Amount" := "Line Amount" + (ServiceLine."Line Amount" / ExchangeFactor); IF ServiceLine."Tax Liable" THEN "Tax Liable" := ServiceLine."Tax Liable"; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,ServiceLine."Line Amount" - ServiceLine."Inv. Discount Amount",ExchangeFactor,TRUE); // End of the added line. "Tax Amount" := 0; Quantity := Quantity + ServiceLine."Quantity (Base)"; "Invoice Discount Amount" := "Invoice Discount Amount" + ServiceLine."Inv. Discount Amount"; MODIFY; ...Změňte kód ve funkci AddServInvoiceLines v Jednotce kódu pro výpočet DPH (398) takto:
Existující kód 1... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := ServInvLine."Line Amount" / ExchangeFactor; // Delete the following lines. "Tax Base Amount" := ServInvLine."VAT Base Amount" / ExchangeFactor; Quantity := ServInvLine.Quantity; "Tax Liable" := ServInvLine."Tax Liable"; // End of the deleted line. "Calculation Order" := TaxAreaLine."Calculation Order"; InsertRec := TRUE; INSERT; ...Náhradní kód 1
... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := ServInvLine."Line Amount" / ExchangeFactor; // Add the following lines. SetTaxBaseAmount(TempSalesTaxLine,ServInvLine."VAT Base Amount",ExchangeFactor,FALSE); Quantity := ServInvLine.Quantity; "Tax Liable" := ServInvLine."Tax Liable"; // End of the added lines. "Calculation Order" := TaxAreaLine."Calculation Order"; InsertRec := TRUE; INSERT; ...Existující kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (ServInvLine."Line Amount" / ExchangeFactor); // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + (ServInvLine."VAT Base Amount" / ExchangeFactor); // End of the deleted line. Quantity := Quantity + ServInvLine.Quantity; IF ServInvLine."Tax Liable" THEN "Tax Liable" := ServInvLine."Tax Liable"; InsertRec := FALSE; ...Náhradní kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (ServInvLine."Line Amount" / ExchangeFactor); // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,ServInvLine."VAT Base Amount",ExchangeFactor,TRUE); // End of the added line. Quantity := Quantity + ServInvLine.Quantity; IF ServInvLine."Tax Liable" THEN "Tax Liable" := ServInvLine."Tax Liable"; InsertRec := FALSE; ...Změňte kód ve funkci AddServCrMemoLines v Jednotce kódu pro výpočet DPH (398) následujícím způsobem:
Existující kód 1... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := ServCrMemoLine."Line Amount" / ExchangeFactor; // Delete the following line. "Tax Base Amount" := ServCrMemoLine."VAT Base Amount" / ExchangeFactor; // End of the deleted line. Quantity := ServCrMemoLine.Quantity; "Tax Liable" := ServCrMemoLine."Tax Liable"; "Calculation Order" := TaxAreaLine."Calculation Order"; ...Náhradní kód 1
... "Is Report-to Jurisdiction" := ("Tax Jurisdiction Code" = TaxJurisdiction."Report-to Jurisdiction"); END; "Line Amount" := ServCrMemoLine."Line Amount" / ExchangeFactor; // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,ServCrMemoLine."VAT Base Amount",ExchangeFactor,FALSE); // End of the added line. Quantity := ServCrMemoLine.Quantity; "Tax Liable" := ServCrMemoLine."Tax Liable"; "Calculation Order" := TaxAreaLine."Calculation Order"; ...Existující kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (ServCrMemoLine."Line Amount" / ExchangeFactor); // Delete the following line. "Tax Base Amount" := "Tax Base Amount" + (ServCrMemoLine."VAT Base Amount" / ExchangeFactor); // End of the deleted line. Quantity := Quantity + ServCrMemoLine.Quantity; IF ServCrMemoLine."Tax Liable" THEN "Tax Liable" := ServCrMemoLine."Tax Liable"; InsertRec := FALSE; ...Náhradní kód 2
... InsertRec := TRUE; INSERT; END ELSE BEGIN "Line Amount" := "Line Amount" + (ServCrMemoLine."Line Amount" / ExchangeFactor); // Add the following line. SetTaxBaseAmount(TempSalesTaxLine,ServCrMemoLine."VAT Base Amount",ExchangeFactor,TRUE); // End of the added line. Quantity := Quantity + ServCrMemoLine.Quantity; IF ServCrMemoLine."Tax Liable" THEN "Tax Liable" := ServCrMemoLine."Tax Liable"; InsertRec := FALSE; ...Funkci SetTaxBaseAmount přidejte do pole pro výpočet kódu DPH (398) takto:
LOCAL PROCEDURE SetTaxBaseAmount@1020031(VAR SalesTaxAmountLine@1020001 : Record 10011;Value@1020000 : Decimal;ExchangeFactor@1020002 : Decimal;Increment@1020003 : Boolean); BEGIN WITH SalesTaxAmountLine DO BEGIN IF Increment THEN "Tax Base Amount FCY" += Value ELSE "Tax Base Amount FCY" := Value; "Tax Base Amount" := "Tax Base Amount FCY" / ExchangeFactor; END; END;
Požadavky
Chcete-li nainstalovat tuto opravu hotfix, musíte mít nainstalovaný jeden z následujících produktů:
- Severoamerická verze aplikace Microsoft Dynamics NAV 2009 R2
- Severoamerická verze aplikace Microsoft Dynamics NAV 2009 Service Pack 1
Informace o odebrání
Tuto opravu hotfix nelze odebrat.
Stav
Společnost Microsoft potvrdila, že se jedná o problém produktů Microsoft, které jsou uvedeny v sekci Platí pro.
Poznámka: Toto je článek určený k rychlému zveřejnění, který byl vytvořen přímo v rámci organizace podpory společnosti Microsoft. Zde uvedené informace jsou poskytovány tak, jak jsou, jako reakce na nově vznikající potíže. Vzhledem k rychlosti, s jakou byl článek zpřístupněn, mohou příslušné materiály obsahovat typografické chyby a mohou být kdykoli bez předchozího upozornění revidovány. Další okolnosti viz Podmínky použití .