Ten artykuł dotyczy systemu Microsoft Dynamics NAV dla Indii (w) ustawień regionalnych języka.
Objawy
W indyjskich wersji z dodatkiem Service Pack 1 (SP1) dla systemu Microsoft Dynamics NAV 2009 wartość wyświetlonej "podatku %" jest niepoprawna w wierszu zamówienia sprzedaży i wiersza zaksięgowanej faktury sprzedaży. Wartość "% podatku" powinna być spójna z wartością podatek poniżej Minimum w ustawieniach szczegóły podatku można oczekiwać. Ten sam problem występuje również w przypadku dokumentów zakupu.
Rozwiązanie
Informacje o poprawce
Obsługiwana poprawka jest obecnie udostępniana przez firmę Microsoft. Jednak to jest przeznaczona tylko do usunięcia problemu opisanego w tym artykule. Zastosuj ją tylko w systemach, w których występuje ten problem. Ta poprawka może być wciąż w fazie testowania. Jeśli dany system nie jest poważnie narażony na ten problem, firma Microsoft zaleca, aby poczekać na następny dodatek service pack dla systemu Microsoft Dynamics NAV 2009 lub następną wersję systemu Microsoft Dynamics NAV, zawierający tę poprawkę.
Uwaga W wyjątkowych przypadkach opłaty, telefonujący do pomocy technicznej mogą zostać anulowane, jeśli pomocy technicznej dla systemu Microsoft Dynamics i produktów powiązanych Określa, że określonej aktualizacji, można rozwiązać swój problem. Koszty obsługi zwykłych zastosuje się do dodatkowych pytań i problemów, których nie można rozwiązać przy użyciu określonej aktualizacji.
Informacje dotyczące instalacji
Firma Microsoft podaje przykłady programowania wyłącznie, bez jakichkolwiek gwarancji wyrażonych wprost lub domyślnie. To obejmuje, ale nie jest ograniczona, ustawowej rękojmi co do przydatności handlowej lub przydatności do określonego celu. W tym artykule założono, że użytkownik zna demonstrowany język programowania oraz narzędzia, które są używane do tworzenia i debugowania procedur. Wykwalifikowani pracownicy pomocy technicznej firmy Microsoft mogą pomóc w wyjaśnieniu, jak działa określona procedura, ale nie będą modyfikować tych przykładów ani dodawać funkcjonalności i konstruować procedur w celu zaspokojenia określonych potrzeb użytkownika.
Uwaga Przed zainstalowaniem tej poprawki należy zweryfikować, że wszyscy użytkownicy klienta Microsoft Navision są wylogowani systemu. Dotyczy to również użytkowników klienta Microsoft Navision Application Services (NAS). Powinny być użytkownika klienta, który jest zalogowany w momencie wdrożyć tę poprawkę.
Aby wdrożyć tę poprawkę, musi mieć licencję deweloperską.
Firma Microsoft zaleca, aby do konta użytkownika w oknie identyfikatorów logowania systemu Windows lub w oknie identyfikatorów logowania bazy danych być przypisany identyfikator roli "SUPER". Jeśli konto użytkownika nie można przypisać Identyfikatora roli "SUPER", należy sprawdzić, czy konto użytkownika ma następujące uprawnienia:
-
Uprawnienie Modyfikacja dla obiektu, który będzie zmieniany.
-
Uprawnienie Execute obiektu 5210 identyfikator obiektu systemu i dla obiektu 9015 identyfikator obiektu systemu .
Uwaga Nie trzeba mieć prawa do magazynów danych, chyba że konieczne jest przeprowadzenie naprawy danych.
Zmiany kodu
Uwaga Zawsze test poprawki kodu w kontrolowanym środowisku przed zastosowaniem poprawki na komputerach produkcyjnych.
Aby rozwiązać ten problem, wykonaj następujące kroki:
-
Zmień kod w wyzwalaczu OnValidate w Kwota podatku łącznie w tabeli Wiersz sprzedaży (37) w następujący sposób:
Istniejący kod... ELSE
"Amount To Customer" :=
ROUND("Line Amount" - "Inv. Discount Amount" + "Excise Amount" + "Charges To Customer" -
"Bal. TDS/TCS Including SHECESS" + "Service Tax Amount" +"Service Tax eCess Amount" +
"Service Tax SHE Cess Amount",Currency."Amount Rounding Precision");
END;
// Delete the following lines.
//IF "Tax Base Amount" <> 0 THEN
// "Tax %" := ROUND(100 * ("Amount Including Tax" - "Tax Base Amount") / "Tax Base Amount",Currency."Amount Rounding Precision")
//ELSE
// "Tax %" := 0;
// End of the deleted lines.
InitOutstandingAmount;
END;
...Kod zastępczy
... ELSE
"Amount To Customer" :=
ROUND("Line Amount" - "Inv. Discount Amount" + "Excise Amount" + "Charges To Customer" -
"Bal. TDS/TCS Including SHECESS" + "Service Tax Amount" +"Service Tax eCess Amount" +
"Service Tax SHE Cess Amount",Currency."Amount Rounding Precision");
END;
// Add the following lines.
IF "Tax Base Amount" = 0 THEN
"Tax %" := 0;
// End of the added lines.
InitOutstandingAmount;
END;
... -
Zmień kod w funkcji UpdateTaxAmounts w tabeli Wiersz sprzedaży (37) w następujący sposób:
Istniejący kod 1... "Bal. TDS/TCS Including SHECESS" + "Service Tax Amount" + "Service Tax eCess Amount" +
"Service Tax SHE Cess Amount",Currency."Amount Rounding Precision")
END;
IndianSalesTaxCalculate.SetCurrency("Currency Code" <>'');
// Delete the following lines.
//LineTaxAmount := IndianSalesTaxCalculate.CalculateTax(
// "Tax Area Code","Tax Group Code","Tax Liable",SalesHeader."Posting Date",
// "Tax Base Amount",Quantity,SalesHeader."Currency Factor","Form Code");
// End of the deleted lines.
TotalTaxAmount := 0;
TotalStdDeductionAmt := 0;
...Kod zastępczy 1
... "Bal. TDS/TCS Including SHECESS" + "Service Tax Amount" + "Service Tax eCess Amount" +
"Service Tax SHE Cess Amount",Currency."Amount Rounding Precision")
END;
IndianSalesTaxCalculate.SetCurrency("Currency Code" <>'');
// Add the following lines.
LineTaxAmount := IndianSalesTaxCalculate.CalculateTax(
"Tax Area Code","Tax Group Code","Tax Liable",SalesHeader."Posting Date",
"Tax Base Amount",Quantity,SalesHeader."Currency Factor","Form Code","Tax %");
// End of the added lines.
TotalTaxAmount := 0;
TotalStdDeductionAmt := 0;
...Istniejący kod 2
... END ELSE
IndianSalesTaxCalculate.GetStandardDeductionAmt(Rec,StandardDeductionAmount,LineTaxAmount);
END
END;
"Amount Including Tax" := ROUND("Tax Base Amount" + LineTaxAmount,Currency."Amount Rounding Precision");
// Delete the following lines.
//IF "Tax Base Amount" <> 0 THEN
// "Tax %" :=
// ROUND(100 * ("Amount Including Tax" - "Tax Base Amount") / "Tax Base Amount",Currency."Amount Rounding Precision")
//ELSE
// "Tax %" := 0;
// End of the deleted lines.
IF "Standard Deduction %" <>0 THEN
"Standard Deduction Amount" := ("Tax Base Amount" * "Standard Deduction %" / 100)
...Kod zastępczy 2
... END ELSE
IndianSalesTaxCalculate.GetStandardDeductionAmt(Rec,StandardDeductionAmount,LineTaxAmount);
END
END;
"Amount Including Tax" := ROUND("Tax Base Amount" + LineTaxAmount,Currency."Amount Rounding Precision");
// Add the following lines.
IF "Tax Base Amount" = 0 THEN
"Tax %" := 0;
// End of the added lines.
IF "Standard Deduction %" <>0 THEN
"Standard Deduction Amount" := ("Tax Base Amount" * "Standard Deduction %" / 100)
... -
Zmień kod w wyzwalaczu OnValidate w Kwota podatku łącznie w tabeli Wiersz zakupu (39) w następujący sposób:
Istniejący kod... "Amount To Vendor" := ROUND("Line Amount" -"Inv. Discount Amount" + "Excise Amount" + "Tax Amount" -
"Bal. TDS Including SHE CESS" + "Charges To Vendor" + "Service Tax Amount" +
"Service Tax eCess Amount" + "Service Tax SHE Cess Amount");
END;
// Delete the following lines.
//IF "Tax Base Amount" <> 0 THEN
// "Tax %" := ROUND(100 * ("Amount Including Tax" - "Tax Base Amount") / "Tax Base Amount",
// Currency."Amount Rounding Precision")
//ELSE // Delete
// "Tax %" := 0;
// End of the deleted lines.
InitOutstandingAmount;
...Kod zastępczy
... "Amount To Vendor" := ROUND("Line Amount" -"Inv. Discount Amount" + "Excise Amount" + "Tax Amount" -
"Bal. TDS Including SHE CESS" + "Charges To Vendor" + "Service Tax Amount" +
"Service Tax eCess Amount" + "Service Tax SHE Cess Amount");
END;
// Add the following lines.
IF "Tax Base Amount" = 0 THEN // Add
// End of the added lines.
InitOutstandingAmount;
... -
Zmień kod w funkcji UpdateTaxAmounts w tabeli Wiersz zakupu (39) w następujący sposób:
Istniejący kod 1... "Bal. TDS Including SHECESS" + "Service Tax Amount" + "Service Tax eCess Amount" +
"Service Tax SHE Cess Amount",Currency."Amount Rounding Precision")
END;
IndianSalesTaxCalculate.SetCurrency("Currency Code" <>'');
// Delete the following lines.
//LineTaxAmount := ROUND(IndianSalesTaxCalculate.CalculateTax(
// "Tax Area Code","Tax Group Code","Tax Liable",PurchHeader."Posting Date",
// "Tax Base Amount",Quantity,PurchHeader."Currency Factor","Form Code"),Currency."Amount Rounding Precision");
// End of the deleted lines.
AmountonInventory := 0;
InputTaxCreditAmount := 0;
...Kod zastępczy 1
... "Bal. TDS Including SHECESS" + "Service Tax Amount" + "Service Tax eCess Amount" +
"Service Tax SHE Cess Amount",Currency."Amount Rounding Precision")
END;
IndianSalesTaxCalculate.SetCurrency("Currency Code" <>'');
// Add the following lines.
LineTaxAmount := ROUND(IndianSalesTaxCalculate.CalculateTax(
"Tax Area Code","Tax Group Code","Tax Liable",PurchHeader."Posting Date",
"Tax Base Amount",Quantity,PurchHeader."Currency Factor","Form Code","Tax %"),Currency."Amount Rounding Precision");
// End of the added lines.
AmountonInventory := 0;
InputTaxCreditAmount := 0;
...Istniejący kod 2
... "Tax Amount" := ROUND(TaxAmount,Currency."Amount Rounding Precision");
"Amount Including Tax" := ("Tax Base Amount" + "Tax Amount");
// Delete the following lines.
//IF "Tax Base Amount" <> 0 THEN
// "Tax %" := ROUND(100 * ("Amount Including Tax" - "Tax Base Amount") / "Tax Base Amount",
// Currency."Amount Rounding Precision")
//ELSE
// "Tax %" := 0;
// End of the deleted lines.
ServiceTaxSetup.RESET;
...Kod zastępczy 2
... "Tax Amount" := ROUND(TaxAmount,Currency."Amount Rounding Precision");
"Amount Including Tax" := ("Tax Base Amount" + "Tax Amount");
// Add the following lines.
IF "Tax Base Amount" = 0 THEN
"Tax %" := 0;
// End of the added lines.
ServiceTaxSetup.RESET;
... -
Zmień kod w funkcji w tabeli Arkusz otwarcia podatku VAT UpdateTaxAmount (16569) w następujący sposób:
Istniejący kod... IF "Transaction Type" = "Transaction Type"::Purchase THEN BEGIN
// Delete the following lines.
//LineTaxAmount := IndianSalesTaxCalculate.CalculateTax(
// "Tax Area Code","Tax Group Code",TRUE,"Posting Date",
// "Tax Base Amount",Quantity,0,'');
// End of the deleted lines.
IF LineTaxAmount <> 0 THEN
IndianSalesTaxCalculate.GetVATOpeningInputTaxCredit(Rec,"Amount Loaded on Item",
"Input Credit/Output Tax Amount",TRUE,TaxAmount);
"Tax Amount" := TaxAmount;
IF GLSetup."VAT Rounding Precision" <> 0 THEN
"Tax Amount" := ROUND("Tax Amount",GLSetup."VAT Rounding Precision",Direction);
// Delete the following lines.
//IF "Tax Base Amount" <> 0 THEN
// "Tax %" := 100 * (("Tax Base Amount" + "Tax Amount") - "Tax Base Amount") / "Tax Base Amount"
//ELSE
// "Tax %" := 0;
// End of the deleted lines.
END ELSE IF "Transaction Type" = "Transaction Type"::Sale THEN BEGIN
IF ("Export or Deemed Export") THEN
EXIT;
// Delete the following lines.
//LineTaxAmount := IndianSalesTaxCalculate.CalculateTax(
// "Tax Area Code","Tax Group Code",TRUE,"Posting Date",
// "Tax Base Amount",Quantity,0,'');
// End of the deleted lines.
IF LineTaxAmount <> 0 THEN
IndianSalesTaxCalculate.GetVATOpeningSTD(Rec,StandardDeductionAmount,TaxAmount);
"Tax Amount" := TaxAmount - StandardDeductionAmount;
// Delete the following lines.
//IF "Tax Base Amount" <> 0 THEN
// "Tax %" := 100 * (("Tax Base Amount" + "Tax Amount") - "Tax Base Amount") / "Tax Base Amount"
//ELSE
// "Tax %" := 0;
// End of the deleted lines.
"Input Credit/Output Tax Amount" := "Tax Amount";
"Amount Loaded on Item" := 0;
END;
...Kod zastępczy
... IF "Transaction Type" = "Transaction Type"::Purchase THEN BEGIN
// Add the following lines.
LineTaxAmount := IndianSalesTaxCalculate.CalculateTax(
"Tax Area Code","Tax Group Code",TRUE,"Posting Date",
"Tax Base Amount",Quantity,0,'',"Tax %");
// End of the added lines.
IF LineTaxAmount <> 0 THEN
IndianSalesTaxCalculate.GetVATOpeningInputTaxCredit(Rec,"Amount Loaded on Item",
"Input Credit/Output Tax Amount",TRUE,TaxAmount);
"Tax Amount" := TaxAmount;
IF GLSetup."VAT Rounding Precision" <> 0 THEN
"Tax Amount" := ROUND("Tax Amount",GLSetup."VAT Rounding Precision",Direction);
// Add the following lines.
IF "Tax Base Amount" = 0 THEN
"Tax %" := 0;
// End of the added lines.
END ELSE IF "Transaction Type" = "Transaction Type"::Sale THEN BEGIN
IF ("Export or Deemed Export") THEN
EXIT;
// Add the following lines.
LineTaxAmount := IndianSalesTaxCalculate.CalculateTax(
"Tax Area Code","Tax Group Code",TRUE,"Posting Date",
"Tax Base Amount",Quantity,0,'',"Tax %");
// End of the added lines.
IF LineTaxAmount <> 0 THEN
IndianSalesTaxCalculate.GetVATOpeningSTD(Rec,StandardDeductionAmount,TaxAmount);
"Tax Amount" := TaxAmount - StandardDeductionAmount;
// Add the following lines.
IF "Tax Base Amount" = 0 THEN // Add
"Tax %" := 0; // Add
// End of the added lines.
"Input Credit/Output Tax Amount" := "Tax Amount";
"Amount Loaded on Item" := 0;
END;
... -
Zmień kod w codeunit Indian obliczyć podatek od sprzedaży (13704) w następujący sposób:
Istniejący kod... Taxamount := TaxBaseAmount * TaxDetail."Tax Below Maximum" / 100;
IF (TaxJurisdiction."Tax Type" = TaxJurisdiction."Tax Type"::VAT) OR
(TaxJurisdiction."Tax Type" = TaxJurisdiction."Tax Type"::CST)
...Kod zastępczy
... Taxamount := TaxBaseAmount * TaxDetail."Tax Below Maximum" / 100;
// Add the following line.
TaxPercent := TaxDetail."Tax Below Maximum";
// End of the added line.
IF (TaxJurisdiction."Tax Type" = TaxJurisdiction."Tax Type"::VAT) OR
(TaxJurisdiction."Tax Type" = TaxJurisdiction."Tax Type"::CST)
...
7. Codeunit 13704 Indian Sales Tax Calculate
Function CalculateTax
Add the below Parameter
VAR TaxPercent Type Decimal
Wymagania wstępne
Musi mieć indyjski wersji z dodatkiem Service Pack 1 (SP1) dla systemu Microsoft Dynamics NAV 2009, aby zastosować tę poprawkę.
Informacje dotyczące usuwania
Nie można usunąć tej poprawki.
Stan
Firma Microsoft potwierdziła, że jest to problem występujący w produktach firmy Microsoft wymienionych w sekcji „Dotyczy”.
Powiązane artykuły
VSTF DynamicsNAV SE: 252133
Uwaga Jest to artykuł " szybkiej publikacji" tworzony bezpośrednio przez organizację pomocy technicznej firmy Microsoft. Informacje zawarte w niniejszym dokumencie są dostarczane jako odpowiedź na pojawiające się problemy. W wyniku przyspieszonego udostępnienia, materiały te mogą zawierać błędy typograficzne i mogą być zmieniane w dowolnym czasie bez uprzedzenia. Zobacz Warunki użytkowania w celu uzyskania innych informacji.