Neatskaitomas PVM neskaičiuojamas ir neregistruojamas, kai registruojate užsienio tiekėjų SF Belgijos "„Microsoft“ Dynamics NAV" versijoje

Taikoma
Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 5.0 Service Pack 1

Greitai paskelbtuose straipsniuose teikiama informacija tiesiogiai iš "„Microsoft“" palaikymo organizacijos. Čia pateikiama informacija yra sukurta reaguojant į naujas ar unikalias temas arba skirta papildyti kitą žinių bazės informaciją.

Šis straipsnis taikomas "„Microsoft“ Dynamics NAV" šioms šalims ir kalbos lokalėms.

  • Belgija (prancūzų) (fr-be)
  • Belgija (olandų) (nl-be)

Požymiai

Belgijos „Microsoft“ Dynamics NAV versijoje, kai registruojate SF iš užsienio tiekėjo, kur turi būti užregistruotas neatskaitomas pridėtinės vertės mokestis (PVM), neatskaitomas PVM neskaičiuojamas ir neregistruojamas užregistruotai SF. Ši problema kyla, jei PVM skaičiavimo tipas nustatytas kaip atvirkštinis PVM.

Ši problema kyla šiuose produktuose:

  • Belgijos "„Microsoft“ Dynamics NAV 2009" versija su 1 pakeitimų paketu (SP1)
  • "„Microsoft“ Dynamics NAV 5.0" su SP1 Belgijos versija

Sprendimas

Karštųjų pataisų informacija

Dabar palaikomas karštąsias pataisas galima gauti iš "„Microsoft“". Tačiau juo siekiama tik išspręsti šiame straipsnyje aprašytą problemą. Taikyti ją tik sistemoms, kuriose kilo ši konkreti problema. Ši karštoji pataisa gali būti papildomai patikrinta. Todėl, jei jūsų rimtai neveikia ši problema, rekomenduojame palaukti kito "„Microsoft“ Dynamics NAV" pakeitimų paketo arba kitos versijos, kurioje yra ši karštoji pataisa.

Pastaba Ypatingais atvejais mokesčiai, kurie paprastai taikomi už palaikymo skambučius, gali būti atšaukti, jei "„Microsoft“ Dynamics" ir susijusių produktų techninio palaikymo specialistas nustato, kad konkretus naujinimas išspręs jūsų problemą. Įprastos palaikymo išlaidos bus taikomos papildomiems palaikymo klausimams ir problemoms, kurios neatitinka atitinkamo konkretaus naujinimo reikalavimų.

            
          

Diegimo informacija

"„Microsoft“" pateikia programavimo pavyzdžių tik iliustracijai, be išreikštų ar numanomų garantijų. Tai apima, bet neapsiriboja, numanomas tinkamumo parduoti arba tinkamumo konkrečiam tikslui garantijas. Straipsnyje laikomasi nuomonės, kad esate susipažinę su demonstruojama programavimo kalba ir įrankiais, naudojamais kuriant ir derinant procedūras. "„Microsoft“" palaikymo inžinieriai gali padėti paaiškinti konkrečios procedūros funkcionalumą, bet jie nemodifikuos šių pavyzdžių, kad suteiktų papildomų funkcinių galimybių, ir nesukurs procedūrų, atitinkančių jūsų konkrečius reikalavimus.

Pastaba Prieš diegdami šią karštąją pataisą patikrinkite, ar visi "„Microsoft“ Navision" kliento vartotojai yra atsijungę nuo sistemos. Tai apima "„Microsoft“ Navision" programų tarnybų (NAS) kliento vartotojus. Turite būti vienintelis kliento vartotojas, kuris yra prisijungęs, kai įdiegiate šią karštąją pataisą.

Norėdami įdiegti šią karštąją pataisą, privalote turėti kūrėjo licenciją.

Rekomenduojame vartotojo paskyrai "Windows" prisijungimų lange arba duomenų bazės prisijungimų lange priskirti "SUPER" vaidmens ID. Jei vartotojo paskyrai negalima priskirti "SUPER" vaidmens ID, turite patikrinti, ar vartotojo paskyra turi šias teises:

  • Objekto, kurį keisite, modifikavimo teisė.
  • Sistemos objekto ID 5210 ir sistemos objekto ID 9015 objekto vykdymo teisės.

                
Pastaba: neturite turėti teisių į duomenų saugyklas, nebent turite atlikti duomenų taisymą.

Kodo keitimai

Pastaba Visada išbandykite kodo pataisas kontroliuojamoje aplinkoje prieš taikydami jas gamybos kompiuteriuose.

Norėdami įdiegti šią karštąją pataisą, pakeiskite kodą Purch.-Post codeunit (90).

Norėdami tai padaryti, atlikite toliau aprašytus veiksmus.

  1. Meniu Rodinys spustelėkite C/AL Globals, tada skirtuke Kintamieji įtraukite šiuos kintamuosius :
    Pirmasis kintamasis:

    • Pavadinimas: TotalNonDeductVATForRChargeVAT
    • Duomenų tipas: dešimtainis

    Antrasis kintamasis:

    • Pavadinimas: TotalNonDeductVATFCYForRCVAT
    • Duomenų tipas: dešimtainis

    Trečiasis kintamasis:

    • Pavadinimas: PurchLineForReverseChargeVAT
    • Duomenų tipas: įrašas
    • Potipis: Pirkimo eilutė
    • Meniu Rodymas spustelėkite Ypatybės, tada nustatykite laikinąją ypatybę kaip "taip".
  2. Pakeiskite "OnRun" paleidiklio kodą taip:
    Esamas kodas

    ...
    
    TempVATAmountLineRemainder.DELETEALL;
    PurchLine.CalcVATAmountLines(1,PurchHeader,CombinedPurchLineTemp,TempVATAmountLine);
    
    
    IF PurchLine.FINDSET THEN
    REPEAT
    JobPurchLine := PurchLine;
    ...
    
    
    

    Pakeitimo kodas

    ....
    
    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;
    ....
    
    

    Esamas kodas 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";
    ...
    
    

    Pakeitimo kodas 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";
    ...
    
    

    Esamas kodas 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":
    ....
    
    

    Pakeitimo kodas 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":
    ...
    
    

    Esamas kodas 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 pakeitimo kodas

    ....
    
    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
    ...
    
    
  3. Įtraukti naują funkciją "CalcAmtVATForReversechargeVAT". Norėdami tai padaryti, atlikite toliau aprašytus veiksmus.

    1. Meniu Rodinys spustelėkite C/AL Globals, skirtuke Funkcijos įtraukite šiuos elementus:

      • Pavadinimas: CalcAmtVATForReversechargeVAT
    2. Spustelėkite Vietinis, skirtuke Kintamieji įtraukite:
      Pirmasis kintamasis:

      • Vardas: InvPostingVATAmountFCY
      • Duomenų tipas: dešimtainis

      Antrasis kintamasis:

      • Pavadinimas: NonDeductVATForReversChargeVAT
      • Duomenų tipas: dešimtainis

      Trečiasis kintamasis:

      • Pavadinimas: NonDeductVATACYForRevsChargVA
      • Duomenų tipas: dešimtainis

      Ketvirtasis kintamasis:

      • Pavadinimas: NonDeductVATFCYForRevsChargVAT
      • Duomenų tipas: dešimtainis
    3. Įtraukite šias paleidiklio CalcAmtVATForReversechargeVAT kodo eilutes, kaip nurodyta toliau:

      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;
      
      
      

Būtinosios sąlygos

Norėdami taikyti šią karštąją pataisą, turite įdiegti vieną iš šių produktų:

  • "„Microsoft“ Dynamics NAV 2009" Belgijos versija su SP1
  • "„Microsoft“ Dynamics NAV 5.0" su SP1 Belgijos versija

Pašalinimo informacija

Šios karštosios pataisos pašalinti negalite.

Būsena

„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.

"MICROSOFT" IR (ARBA) JOS TIEKĖJAI NETEIKIA JOKIŲ PAREIŠKIMŲ AR GARANTIJŲ DĖL INFORMACIJOS, ESANČIOS DOKUMENTUOSE IR SUSIJUSIUOSE GRAFINIUOSE ELEMENTUOSE, PASKELBTUOSE ŠIOJE SVETAINĖJE ("MEDŽIAGA"), TINKAMUMO, PATIKIMUMO AR TIKSLUMO BET KOKIAM TIKSLUI.

MEDŽIAGOJE GALI BŪTI TECHNINIŲ NETIKSLUMŲ AR SPAUSDINIMO KLAIDŲ, TODĖL JI GALI BŪTI PERŽIŪRĖTA BET KURIUO METU BE IŠANKSTINIO ĮSPĖJIMO. KIEK LEIDŽIA GALIOJANTYS ĮSTATYMAI, "MICROSOFT" IR (ARBA) JOS TIEKĖJAI ATSISAKO IR ATMETA BET KOKIUS AIŠKIUS, NUMANOMUS AR ĮSTATYMUOSE NUSTATYTUS PAREIŠKIMUS, GARANTIJAS IR SĄLYGAS, ĮSKAITANT, BET NEAPSIRIBOJANT, PAREIŠKIMUS, GARANTIJAS ARBA NUOSAVYBĖS TEISES, NEPAŽEIDIMĄ, PATENKINAMĄ BŪKLĘ AR KOKYBĘ, TINKAMUMĄ PARDUOTI IR TINKAMUMĄ TAM TIKRAM TIKSLUI, SUSIJUSIUS SU MEDŽIAGA.