Šis straipsnis taikomas Microsoft Dynamics NAV portugalų (pt) kalbos lokalės.
Požymiai
Tarkime, kad nustatyta Mokėjimo nuolaida tipo reikšmė Skaič mokėjimas diską. Eilučių į dialogo langą DK nustatymas Portugalijos versijoje Microsoft Dynamics NAV 2009. Galite nustatyti SF nuolaidą pirkimo SF, kuriame yra daugiau nei vienoje eilutėje su po kablelio. Skaičiuojant pirkimo SF statistikos, SF nuolaidos suma apskaičiuojama neteisingai.
Ši problema iškyla faile šiems produktams:
-
Microsoft Dynamics NAV 2009 R2 portugalų kalba
-
Portugalijos versijoje Microsoft Dynamics NAV 2009 1 pakeitimų paketas (SP1)
Sprendimas
Karštųjų pataisų informacija
Palaikomą naujausią pataisą dabar yra Microsoft. Tačiau jos skirtos tik šiame straipsnyje aprašytai problemai spręsti. Taikyti ją tik sistemoms, kuriose kyla ši konkreti problema. Šios karštosios pataisos gali būti papildomai išbandoma. Todėl, jei jums nelabai trukdo Ši problema, rekomenduojame palaukti kito "Microsoft Dynamics NAV 2009" pakeitimų paketo arba kitą versiją Microsoft Dynamics NAV, kuriame bus šios karštosios pataisos.
Pastaba. Konkrečiais atvejais už palaikymo skambučius gali būti atšaukti, jei techninės pagalbos specialistas Microsoft Dynamics ir susijusių produktų taikomi įprasti mokesčiai nustato, kad jūsų problemą galima išspręsti naudojant konkretų naujinimą. Į įprastos kainos už palaikymą taikomos papildomos palaikymo klausimams ir problemoms, kurių negalima išspręsti naudojant minėtą naujinimą.
Diegimo informacija
Microsoft pateikia programavimo pavyzdžius tik, tačiau nesuteikia jokių aiškių arba numanomų garantijų. Tai apima, bet neapsiribojant, numanomas garantijas dėl perkamumo ir tinkamumo konkrečiam tikslui. Šis straipsnis parašytas galvojant, kad esate susipažinę su pateikta programavimo kalba ir įrankiais, kurie yra naudojami procedūroms kurti ir derinti. "Microsoft" palaikymo inžinieriai gali padėti paaiškindami konkrečios procedūros funkcines galimybes. Tačiau jie nekeis šių pavyzdžių, kad numatytų papildomą funkcinę galimybę arba sukurtų konkrečius jūsų reikalavimus atitinkančias procedūras.
Pastaba. Prieš diegdami šias karštąsias pataisas, patikrinkite, kad visi Microsoft Dynamics NAV kliento vartotojai išsiregistravę sistema. Tai apima Microsoft Dynamics NAV programų serverio (NAS) paslaugas. Jums turėtų būti tik kliento vartotojo, kuris yra prisijungęs, kai atliekate šias karštąsias pataisas.
Norint pritaikyti šią karštąją pataisą, turite programų kūrėjo licencijos.
Rekomenduojame, kad vartotojo abonemento Windows registravimosi lange arba duomenų bazės prisijungimų langas priskirti "SUPER" vaidmenį ID. Jei vartotojo abonementas negali būti priskirta "SUPER" ID., turi patikrinti, kad vartotojo abonementas turi šias teises:
-
Keisti teisės objektas, kuris bus pakeisti.
-
Teisės vykdyti sistemos objekto ID 5210 objekto ir sistemos objekto ID 9015
objekto.
Pastaba. Jūs neturite turėti teisių į duomenų parduotuvių, nebent jūs turite atlikti duomenų atkūrimo.
Pastaba.
Pastaba. Visada bandymas kodas nustato kontroliuojamoje aplinkoje prieš taikydami nustato savo gamybos kompiuteriams.
Norėdami išspręsti šią problemą, atlikite šiuos veiksmus:
-
Pakeisti CalculateInvoiceDiscount funkcija – pardavimo skaič nuolaida Kodinys (60):
Esamas kodas 1...GLAcc@1110002 : Record 15;
BEGIN
...Atsarginis kodas 1
...GLAcc@1110002 : Record 15;
// Add the following lines.
TempSalesLineRemainder@1110000 : Record 37;
TotRoundedInvDiscAmt@1110001 : Decimal;
TotRoundedPmtDiscAmt@1110003 : Decimal;
// End of the added lines.
BEGIN
...Esamas kodas 2
...GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
// Delete the following lines.
SalesLine2."Inv. Discount Amount" :=
ROUND(SalesLine2."Line Amount" * CustInvDisc."Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.",
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
SalesLine2."Inv. Discount Amount" :=
ROUND(
(SalesLine2."Line Amount" + SalesLine2."Line Discount Amount" ) *
CustInvDisc."Discount %" / 100,0.01);
END;
// End of the deleted lines.
IF GLSetup."Payment Discount Type" =
...Atsarginis kodas 2
...GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
// Add the following lines.
BEGIN
TempSalesLineRemainder."Inv. Discount Amount" +=
SalesLine2."Line Amount" * CustInvDisc."Discount %" / 100;
SalesLine2."Inv. Discount Amount" :=
CalcRoundedAmt(TempSalesLineRemainder."Inv. Discount Amount",TotRoundedInvDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.",
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
BEGIN
TempSalesLineRemainder."Inv. Discount Amount" +=
(SalesLine2."Line Amount" + SalesLine2."Line Discount Amount" ) *
CustInvDisc."Discount %" / 100;
SalesLine2."Inv. Discount Amount" :=
CalcRoundedAmt(TempSalesLineRemainder."Inv. Discount Amount",TotRoundedInvDiscAmt,0.01);
END;
END;
// End of the added lines.
IF GLSetup."Payment Discount Type" =
...Esamas kodas 3
...GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.":
// Delete the following lines.
SalesLine2."Pmt. Disc. Given Amount" :=
ROUND(
(SalesLine2."Line Amount" + SalesLine2."Line Discount Amount")
* SalesHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
SalesLine2."Pmt. Disc. Given Amount" :=
ROUND(
(SalesLine2."Line Amount" - SalesLine2."Inv. Discount Amount") *
SalesHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. + Payment Disc.":
SalesLine2."Pmt. Disc. Given Amount" :=
ROUND(
(SalesLine2."Line Amount" + SalesLine2."Line Discount Amount") *
SalesHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
SalesLine2."Pmt. Disc. Given Amount" :=
ROUND(
(SalesLine2."Line Amount" - SalesLine2."Inv. Discount Amount") *
SalesHeader."Payment Discount %" / 100,0.01);
// End of the deleted lines.
END;
...Pakeitimo kodas 3
...GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.":
// Add the following lines.
BEGIN
TempSalesLineRemainder."Pmt. Disc. Given Amount" +=
(SalesLine2."Line Amount" + SalesLine2."Line Discount Amount" ) *
SalesHeader."Payment Discount %" / 100;
SalesLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempSalesLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
BEGIN
TempSalesLineRemainder."Pmt. Disc. Given Amount" +=
(SalesLine2."Line Amount" - SalesLine2."Line Discount Amount" ) *
SalesHeader."Payment Discount %" / 100;
SalesLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempSalesLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. + Payment Disc.":
BEGIN
TempSalesLineRemainder."Pmt. Disc. Given Amount" +=
(SalesLine2."Line Amount" + SalesLine2."Line Discount Amount" ) *
SalesHeader."Payment Discount %" / 100;
SalesLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempSalesLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
BEGIN
TempSalesLineRemainder."Pmt. Disc. Given Amount" +=
(SalesLine2."Line Amount" - SalesLine2."Line Discount Amount" ) *
SalesHeader."Payment Discount %" / 100;
SalesLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempSalesLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
// End of the added lines.
END;
... -
Sukurkite funkcija pardavimo skaič nuolaida Kodinys (60) taip:
PROCEDURE CalcRoundedAmt@1110000(TotAmt@1110000 : Decimal;VAR TotAmtRnded@1110001 : Decimal;AmountRoundingPrecision@1110002 : Decimal) RndAmt : Decimal;BEGIN
RndAmt := ROUND(TotAmt,AmountRoundingPrecision) - TotAmtRnded;
TotAmtRnded := TotAmtRnded + RndAmt;
END; -
Pakeisti CalculateInvoiceDiscount funkcija pirkimo.-Calc.Discount Kodinys (70) kaip nurodyta žemiau:
Esamas kodas 1...GLAcc@1110002 : Record 15;
BEGIN
...Atsarginis kodas 1
...GLAcc@1110002 : Record 15;
// Add the following lines.
TempPurchLineRemainder@1110000 : Record 39;
TotRoundedInvDiscAmt@1110001 : Decimal;
TotRoundedPmtDiscAmt@1110004 : Decimal;
// End of the added lines.
BEGIN
...Esamas kodas 2
...GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
// Delete the following lines.
PurchLine2."Inv. Discount Amount" :=
ROUND(PurchLine2."Line Amount" * VendInvDisc."Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.",
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
PurchLine2."Inv. Discount Amount" :=
ROUND(
(PurchLine2."Line Amount" + PurchLine2."Line Discount Amount" ) *
VendInvDisc."Discount %" / 100,0.01);
// End of the deleted lines.
END;
...Atsarginis kodas 2
...GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
// Add the following lines.
BEGIN
TempPurchLineRemainder."Inv. Discount Amount" +=
PurchLine2."Line Amount" * VendInvDisc."Discount %" / 100;
PurchLine2."Inv. Discount Amount" :=
CalcRoundedAmt(TempPurchLineRemainder."Inv. Discount Amount",TotRoundedInvDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.",
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
BEGIN
TempPurchLineRemainder."Inv. Discount Amount" +=
(PurchLine2."Line Amount" + PurchLine2."Line Discount Amount" ) *
VendInvDisc."Discount %" / 100;
PurchLine2."Inv. Discount Amount" :=
CalcRoundedAmt(TempPurchLineRemainder."Inv. Discount Amount",TotRoundedInvDiscAmt,0.01);
END;
// End of the added lines.
END;
...Esamas kodas 3
...GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.":
// Delete the following lines.
PurchLine2."Pmt. Disc. Rcd. Amount" :=
ROUND(
(PurchLine2."Line Amount" + PurchLine2."Line Discount Amount") *
PurchHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
PurchLine2."Pmt. Disc. Rcd. Amount" :=
ROUND(
(PurchLine2."Line Amount" - PurchLine2."Inv. Discount Amount") *
PurchHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. + Payment Disc.":
PurchLine2."Pmt. Disc. Rcd. Amount" :=
ROUND(
(PurchLine2."Line Amount" + PurchLine2."Line Discount Amount") *
PurchHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
PurchLine2."Pmt. Disc. Rcd. Amount" :=
ROUND(
(PurchLine2."Line Amount" - PurchLine2."Inv. Discount Amount") *
PurchHeader."Payment Discount %" / 100,0.01);
// End of the deleted lines.
END;
...Pakeitimo kodas 3
...GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.":
// Add the following lines.
BEGIN
TempPurchLineRemainder."Pmt. Disc. Rcd. Amount" +=
(PurchLine2."Line Amount" + PurchLine2."Line Discount Amount" ) *
PurchHeader."Payment Discount %" / 100;
PurchLine2."Pmt. Disc. Rcd. Amount" :=
CalcRoundedAmt(TempPurchLineRemainder."Pmt. Disc. Rcd. Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
BEGIN
TempPurchLineRemainder."Pmt. Disc. Rcd. Amount" +=
(PurchLine2."Line Amount" - PurchLine2."Line Discount Amount" ) *
PurchHeader."Payment Discount %" / 100;
PurchLine2."Pmt. Disc. Rcd. Amount" :=
CalcRoundedAmt(TempPurchLineRemainder."Pmt. Disc. Rcd. Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. + Payment Disc.":
BEGIN
TempPurchLineRemainder."Pmt. Disc. Rcd. Amount" +=
(PurchLine2."Line Amount" + PurchLine2."Line Discount Amount" ) *
PurchHeader."Payment Discount %" / 100;
PurchLine2."Pmt. Disc. Rcd. Amount" :=
CalcRoundedAmt(TempPurchLineRemainder."Pmt. Disc. Rcd. Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
BEGIN
TempPurchLineRemainder."Pmt. Disc. Rcd. Amount" +=
(PurchLine2."Line Amount" - PurchLine2."Line Discount Amount" ) *
PurchHeader."Payment Discount %" / 100;
PurchLine2."Pmt. Disc. Rcd. Amount" :=
CalcRoundedAmt(TempPurchLineRemainder."Pmt. Disc. Rcd. Amount",TotRoundedPmtDiscAmt,0.01);
END;
// End of the added lines.
END;
... -
Sukurti funkcija pirkimo.-Calc.Discount Kodinys (70) kaip nurodyta žemiau:
PROCEDURE CalcRoundedAmt@1110000(TotAmt@1110000 : Decimal;VAR TotAmtRnded@1110001 : Decimal;AmountRoundingPrecision@1110002 : Decimal) RndAmt : Decimal;BEGIN
RndAmt := ROUND(TotAmt,AmountRoundingPrecision) - TotAmtRnded;
TotAmtRnded := TotAmtRnded + RndAmt;
END; -
Pakeisti CalculateInvoiceDiscount funkcija pakeitimų skaič nuolaida Kodinys (5950):
Esamas kodas 1...GLAcc@1110002 : Record 15;
BEGIN
...Atsarginis kodas 1
...GLAcc@1110002 : Record 15;
// Add the following lines.
TempServLineRemainder@1110000 : Record 5902;
TotRoundedInvDiscAmt@1110001 : Decimal;
TotRoundedPmtDiscAmt@1110003 : Decimal;
// End of the added lines.
BEGIN
...Esamas kodas 2
...GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
// Delete the following lines.
ServiceLine2."Inv. Discount Amount" :=
ROUND(ServiceLine2."Line Amount" * CustInvDisc."Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.",
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
ServiceLine2."Inv. Discount Amount" :=
ROUND(
(ServiceLine2."Line Amount" + ServiceLine2."Line Discount Amount" ) *
CustInvDisc."Discount %" / 100,0.01);
END;
// End of the deleted lines.
IF GLSetup."Payment Discount Type" =
...Atsarginis kodas 2
...GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
// Add the following lines.
BEGIN
TempServLineRemainder."Inv. Discount Amount" +=
ServiceLine2."Line Amount" * CustInvDisc."Discount %" / 100;
ServiceLine2."Inv. Discount Amount" :=
CalcRoundedAmt(TempServLineRemainder."Inv. Discount Amount",TotRoundedInvDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.",
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
BEGIN
TempServLineRemainder."Inv. Discount Amount" +=
(ServiceLine2."Line Amount" + ServiceLine2."Line Discount Amount" ) *
CustInvDisc."Discount %" / 100;
ServiceLine2."Inv. Discount Amount" :=
CalcRoundedAmt(TempServLineRemainder."Inv. Discount Amount",TotRoundedInvDiscAmt,0.01);
END;
END;
// End of the added lines.
IF GLSetup."Payment Discount Type" =
...Esamas kodas 3
...GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.":
// Delete the following lines.
ServiceLine2."Pmt. Disc. Given Amount" :=
ROUND(
(ServiceLine2."Line Amount" + ServiceLine2."Line Discount Amount")
* ServHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
ServiceLine2."Pmt. Disc. Given Amount" :=
ROUND(
(ServiceLine2."Line Amount" - ServiceLine2."Inv. Discount Amount") *
ServHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. + Payment Disc.":
ServiceLine2."Pmt. Disc. Given Amount" :=
ROUND(
(ServiceLine2."Line Amount" + ServiceLine2."Line Discount Amount") *
ServHeader."Payment Discount %" / 100,0.01);
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
ServiceLine2."Pmt. Disc. Given Amount" :=
ROUND(
(ServiceLine2."Line Amount" - ServiceLine2."Inv. Discount Amount") *
ServHeader."Payment Discount %" / 100,0.01);
// End of the deleted lines.
END;Pakeitimo kodas 3
...GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. + Payment Disc.":
// Add the following lines.
BEGIN
TempServLineRemainder."Pmt. Disc. Given Amount" +=
(ServiceLine2."Line Amount" + ServiceLine2."Line Discount Amount" ) *
ServHeader."Payment Discount %" / 100;
ServiceLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempServLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. + Inv. Disc. * Payment Disc.":
BEGIN
TempServLineRemainder."Pmt. Disc. Given Amount" +=
(ServiceLine2."Line Amount" - ServiceLine2."Line Discount Amount" ) *
ServHeader."Payment Discount %" / 100;
ServiceLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempServLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. + Payment Disc.":
BEGIN
TempServLineRemainder."Pmt. Disc. Given Amount" +=
(ServiceLine2."Line Amount" + ServiceLine2."Line Discount Amount" ) *
ServHeader."Payment Discount %" / 100;
ServiceLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempServLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
GLSetup."Discount Calculation"::"Line Disc. * Inv. Disc. * Payment Disc.":
BEGIN
TempServLineRemainder."Pmt. Disc. Given Amount" +=
(ServiceLine2."Line Amount" - ServiceLine2."Line Discount Amount" ) *
ServHeader."Payment Discount %" / 100;
ServiceLine2."Pmt. Disc. Given Amount" :=
CalcRoundedAmt(TempServLineRemainder."Pmt. Disc. Given Amount",TotRoundedPmtDiscAmt,0.01);
END;
// End of the added lines.
END;
... -
Sukurkite funkcija pakeitimų skaič nuolaida Kodinys (5950) taip:
PROCEDURE CalcRoundedAmt@1110000(TotAmt@1110000 : Decimal;VAR TotAmtRnded@1110001 : Decimal;AmountRoundingPrecision@1110002 : Decimal) RndAmt : Decimal;BEGIN
RndAmt := ROUND(TotAmt,AmountRoundingPrecision) - TotAmtRnded;
TotAmtRnded := TotAmtRnded + RndAmt;
END;
Būtinosios sąlygos
Turi būti viena iš toliau nurodytų produktų, norint taikyti šias karštąsias pataisas:
-
Microsoft Dynamics NAV 2009 R2 portugalų kalba
-
Portugalijos versijoje Microsoft Dynamics NAV 2009 Service Pack 1
Pašalinimo informacija
Jūs negalite pašalinti šias karštąsias pataisas.
Būsena
„Microsoft“ patvirtino, kad tai yra „Microsoft“ produktų, išvardytų skyriuje „Taikoma“, problema.
Pastaba. Tai yra "GREITAI PUBLIKUOJAMAS" straipsnis, sukurtas tiesiogiai Microsoft palaikymo tarnybos. Čia pateikta informacija yra atsakas į kylančius klausimus. Dėl greito publikavimo medžiagoje gali būti spausdinimo klaidų ir ji gali būti peržiūrima bet kuriuo metu be įspėjimo. Naudojimoieškokite kitų priežasčių.