Ця стаття стосується корпорації Майкрософт таких країн і мов.
- Англійська (Канада) (en-ca)
- Англійська (Сполучені Штати) (en-us)
- іспанська (Мексика) (es-mx)
- французька (Канада) (fr-ca)
Ознаки
Припустімо, що встановити CAD як додатковий звітування грошових значень у діалоговому вікні Загальний Ledger інсталяції в північноамериканської версії Microsoft Dynamics NAV 2009. Коли ви опублікуйте придбання рахунку, який містить податок, з'являється таке повідомлення про помилку:
Примітка.
Не вдалося завершити транзакцію, оскільки вона спричинить невідповідності в таблиці запису G/L. Перевірте, де та як у транзакції використовується функція CONSISTENT, щоб знайти причину помилки.
Ця проблема виникає в таких продуктах:
- Північноамериканська версія Microsoft Dynamics NAV 2009 R2
- Північноамериканська версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1
Спосіб усунення проблеми
Відомості про виправлення
Від корпорації Майкрософт доступне виправлення, що підтримується. Однак вона призначена лише для виправлення проблеми, описаної в цій статті. Застосуйте її лише до систем, у яких виникла ця проблема. Це виправлення може отримати додаткове тестування. Таким чином, якщо ви не серйозно постраждали від цієї проблеми, ми радимо дочекатися наступного Microsoft Dynamics NAV 2009 пакет оновлень або наступної версії Microsoft Dynamics NAV, яка містить це виправлення.
Примітка У особливих випадках стягнення плати, які зазвичай понесені для викликів підтримки, може бути скасовано, якщо спеціаліст служби технічної підтримки Microsoft Dynamics і пов'язані продукти визначать, що конкретне оновлення вирішить вашу проблему. Звичайні витрати на підтримку застосовуватимуться до додаткових запитань і питань підтримки, які не відповідають вимогам для конкретного оновлення, про яке йде мова.
Відомості про інсталяцію
Корпорація Майкрософт надає приклади програмування лише для ілюстрації без жодних гарантій, явних або неявних. Це стосується зокрема неявних гарантій щодо придатності до продажу чи придатності для певної мети. У цій статті припускається, що ви знайомі з мовою програмування, яка демонструється, і з інструментами, які використовуються для створення і налагодження процедур. Спеціалісти служби підтримки Microsoft можуть допомогти пояснити функціональність певної процедури, але вони не змінюватимуть ці приклади, щоб надавати додаткові функції або конструювати процедури відповідно до ваших конкретних вимог.
Примітка. Перш ніж інсталювати це виправлення, переконайтеся, що всі користувачі клієнта Microsoft Navision, вийти із системи. Це стосується користувачів клієнтських служб Microsoft Navision (NAS). Ви повинні бути єдиним клієнтом користувача, який ввійшов, коли ви впроваджуєте це виправлення.
Щоб реалізувати це виправлення, потрібно мати ліцензію розробника.
Радимо призначити обліковому запису користувача у вікні "Вхід у Windows" або у вікні "Вхід до бази даних" ідентифікатор ролі "SUPER". Якщо обліковому запису користувача не вдалося призначити ідентифікатор ролі SUPER, переконайтеся, що обліковий запис має такі дозволи:
- Дозвіл на змінення об'єкта, який буде змінюватися.
- Дозвіл Execute для об'єкта System Object ID 5210 і для об'єкта System Object ID 9015.
Примітка. Ви не повинні мати права на зберігання даних, якщо не потрібно відновлювати дані.
Зміни коду
Примітка. Завжди перевіряйте виправлення коду в контрольованому середовищі, перш ніж застосовувати виправлення до робочих комп'ютерів.
Щоб вирішити цю проблему, виконайте такі дії:
Змінити код у полях у таблиці податок із продажу обсяг рядка (10011) наступним мовою:
Наявний код... 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; ...Код заміни
... 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; ...Змініть код у функції PostSalesTaxToGL у Sales-Post Codeunit (80):
Наявний код... 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"; ...Код заміни
... 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"; ...Змініть код у функції PostSalesTaxToGL у purch.-Post Codeunit (90), як виконайте такі дії:
Наявний код... 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"; ...Код заміни
... 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"; ...Змініть код у функції PostProvincialSalesTaxToGL у функції Purch.-Post Codeunit (90), як виконайте такі дії:
Наявний код... 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; ...Код заміни
... 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; ...Змініть код у функції AddSalesLine в обчислюваному кодоуніті податку на продаж (398), як виконайте наведені нижче дії.
Наявний код 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"; ...Код заміни 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"; ...Наявний код 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; ...Код заміни 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; ...Змініть код у функції AddSalesInvoiceLines в обчислюваному кодоуніті податку на продаж (398), як виконайте наведені нижче дії.
Наявний код 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; ...Код заміни 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; ...Наявний код 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; ...Код заміни 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; ...Змініть код у функції AddSalesCrMemoLines у обчислюваному кодоуніті з податку на продаж (398), як виконайте наведені нижче дії.
Наявний код 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; ...Код заміни 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; ...Наявний код 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; ...Код заміни 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; ...Змініть код у функції AddPurchLine у обчислюваному кодоуніті (398) податку на продаж, як виконайте такі дії:
Наявний код 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"; ...Код заміни 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"; ...Наявний код 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; ...Код заміни 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; ...Змініть код у функції AddPurchInvoiceLines у кодоуніті обчислення податку на продаж (398), як виконайте такі дії:
Наявний код 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"; ...Код заміни 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"; ...Наявний код 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; ...Код заміни 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; ...Змініть код у функції AddPurchCrMemoLines в обчислюваному кодоуніті податку на продаж (398), як виконайте такі дії:
Наявний код 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"; ...Код заміни 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"; ...Наявний код 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; ...Код заміни 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; ...Змінити код у функції AddServiceLine у податок із продажу обчислити Codeunit (398), як виконайте такі дії:
Наявний код 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"; ...Код заміни 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"; ...Наявний код 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; ...Код заміни 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; ...Змініть код у функції AddServInvoiceLines в обчислюваному кодоуніті податку на продаж (398), як виконайте наведені нижче дії.
Наявний код 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; ...Код заміни 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; ...Наявний код 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; ...Код заміни 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; ...Змініть код у функції AddServCrMemoLines у формулі з обчислюваним кодом (398) податку на збут, як виконайте наведені нижче дії.
Наявний код 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"; ...Код заміни 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"; ...Наявний код 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; ...Код заміни 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; ...Додайте функцію SetTaxBaseAmount у податок із продажу, обчислити Codeunit (398), як виконайте такі дії:
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;
Попередні вимоги
Щоб застосувати це виправлення, потрібно мати один із таких продуктів:
- Північноамериканська версія Microsoft Dynamics NAV 2009 R2
- Північноамериканська версія Microsoft Dynamics NAV 2009 із пакетом оновлень 1
Відомості про видалення
Не можна видалити це виправлення.
Стан
Корпорація Microsoft підтвердила, що це одна з проблем з продуктами Microsoft, перелічених у розділі "Застосовується до".
Примітка. Це стаття "FAST PUBLISH", створена безпосередньо з організації підтримки Корпорації Майкрософт. Інформація, що міститься в цьому документі, надається як у відповідь на нові проблеми. В результаті швидкості її використання матеріали можуть включати друкарські помилки і можуть бути переглянуті в будь-який час без попередження. Інші зауваження див. в розділі Умови використання .