Šis straipsnis taikomas "„Microsoft“ Dynamics NAV" visose šalyse ir visų kalbų lokalėse.
Požymiai
Tarkime, kad turite klientą, kurio sąskaita turi būti apmokėta šiandien programoje "„Microsoft“ Dynamics NAV". Jei nustatysite šiandienos darbo datą, SF bus neteisingai įtraukta į dialogo lango Klientų statistika lauką Pradelstos sumos (viet.val.). Be to, kai klientui sukuriate naują pardavimo SF, SF įtraukiama į pradelstą sumą dialogo lange Tikrinti kredito limitą . Tačiau sąskaitos faktūros, kurias reikia apmokėti šiandien, dar nėra pradelstos. Rytoj jie turėtų vėluoti.
Ši problema kyla šiuose produktuose:
- „„Microsoft“ Dynamics NAV 2009 R2‟
- "„Microsoft“ Dynamics NAV 2009" 1 pakeitimų paketas (SP1)
- „Microsoft“ Dynamics NAV 2009
- "„Microsoft“ Dynamics NAV 5.0" 1 pakeitimų paketas (SP1)
- „Microsoft“ Dynamics NAV 5.0
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ų ši problema stipriai nepaveikė, rekomenduojame palaukti kito "„Microsoft“ Dynamics NAV" pakeitimų paketo arba kitos "„Microsoft“ Dynamics NAV" 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 išspręsti šią problemą, atlikite šiuos veiksmus:
Įtraukite dvi naujas funkcijas į Kliento knygos įrašo lentelę (21) taip:
Esamas kodas... PROCEDURE GetOriginalCurrencyFactor@2() : Decimal; BEGIN IF "Original Currency Factor" = 0 THEN EXIT(1); EXIT("Original Currency Factor"); END; BEGIN END. } }Pakeitimo kodas
... PROCEDURE GetOriginalCurrencyFactor@2() : Decimal; BEGIN IF "Original Currency Factor" = 0 THEN EXIT(1); EXIT("Original Currency Factor"); END; // Add the following lines. PROCEDURE CalcOverDueBalance@1100(CustomerNo@1101 : Code[20]) OverDueBalance : Decimal; VAR CustLedgerEntry@1102 : Record 21; BEGIN SetFiltersToCalcOverDueBalance(CustLedgerEntry,CustomerNo); IF CustLedgerEntry.FINDSET THEN BEGIN REPEAT CustLedgerEntry.CALCFIELDS("Amount (LCY)"); OverDueBalance += CustLedgerEntry."Amount (LCY)"; UNTIL (CustLedgerEntry.NEXT = 0); END ELSE OverDueBalance := 0; END; PROCEDURE SetFiltersToCalcOverDueBalance@1103(VAR CustLedgerEntry@1104 : Record 21;CustomerNo@1105 : Code[20]); BEGIN CustLedgerEntry.SETCURRENTKEY("Customer No.",Open,Positive,"Due Date","Currency Code"); CustLedgerEntry.SETRANGE("Customer No.",CustomerNo); CustLedgerEntry.SETRANGE(Open,TRUE); CustLedgerEntry.SETFILTER("Due Date",'<%1',WORKDATE); END; // End of the lines. BEGIN END. } }Pakeiskite kodą klientų statistikos formoje (151) taip:
Esamas kodas... LeaderDots=Yes; SourceExpr=STRSUBSTNO(Text000,FORMAT(CurrentDate)) } { 15 ;TextBox ;3850 ;6490 ;2750 ;440 ;ParentControl=1; InPage=0; // Delete the following line. SourceExpr="Balance Due (LCY)"; OnDrillDown=VAR DtldCustLedgEntry@1000 : Record 379; CustLedgEntry@1001 : Record 21; BEGIN ...Pakeitimo kodas
... LeaderDots=Yes; SourceExpr=STRSUBSTNO(Text000,FORMAT(CurrentDate)) } { 15 ;TextBox ;3850 ;6490 ;2750 ;440 ;ParentControl=1; InPage=0; // Add the following line. SourceExpr=CalcOverDueBalance; OnDrillDown=VAR DtldCustLedgEntry@1000 : Record 379; CustLedgEntry@1001 : Record 21; BEGIN ...Į formą Klientų statistika (151) įtraukite naują funkciją:
Esamas kodas... CODE { VAR Text000@1000 : TextConst 'ENU=Overdue Amounts ($) as of %1'; ValueEntry@1017 : Record 5802; DateFilterCalc@1001 : Codeunit 358; CustDateFilter@1002 : ARRAY [4] OF Text[30]; CustDateName@1003 : ARRAY [4] OF Text[30]; TotalAmountLCY@1004 : Decimal; CurrentDate@1005 : Date; CustSalesLCY@1006 : ARRAY [4] OF Decimal; AdjmtCostLCY@1022 : ARRAY [4] OF Decimal; CustProfit@1007 : ARRAY [4] OF Decimal; ProfitPct@1008 : ARRAY [4] OF Decimal; AdjCustProfit@1024 : ARRAY [4] OF Decimal; AdjProfitPct@1023 : ARRAY [4] OF Decimal; CustInvDiscAmountLCY@1009 : ARRAY [4] OF Decimal; CustPaymentDiscLCY@1010 : ARRAY [4] OF Decimal; CustPaymentDiscTolLCY@1019 : ARRAY [4] OF Decimal; CustPaymentTolLCY@1018 : ARRAY [4] OF Decimal; CustReminderChargeAmtLCY@1011 : ARRAY [4] OF Decimal; CustFinChargeAmtLCY@1012 : ARRAY [4] OF Decimal; CustCrMemoAmountsLCY@1013 : ARRAY [4] OF Decimal; CustPaymentsLCY@1014 : ARRAY [4] OF Decimal; CustRefundsLCY@1020 : ARRAY [4] OF Decimal; CustOtherAmountsLCY@1021 : ARRAY [4] OF Decimal; i@1015 : Integer; InvAmountsLCY@1016 : ARRAY [4] OF Decimal; Text001@1025 : TextConst 'ENU=Placeholder'; BEGIN END. } }Pakeitimo kodas
... CODE { VAR Text000@1000 : TextConst 'ENU=Overdue Amounts ($) as of %1'; ValueEntry@1017 : Record 5802; DateFilterCalc@1001 : Codeunit 358; CustDateFilter@1002 : ARRAY [4] OF Text[30]; CustDateName@1003 : ARRAY [4] OF Text[30]; TotalAmountLCY@1004 : Decimal; CurrentDate@1005 : Date; CustSalesLCY@1006 : ARRAY [4] OF Decimal; AdjmtCostLCY@1022 : ARRAY [4] OF Decimal; CustProfit@1007 : ARRAY [4] OF Decimal; ProfitPct@1008 : ARRAY [4] OF Decimal; AdjCustProfit@1024 : ARRAY [4] OF Decimal; AdjProfitPct@1023 : ARRAY [4] OF Decimal; CustInvDiscAmountLCY@1009 : ARRAY [4] OF Decimal; CustPaymentDiscLCY@1010 : ARRAY [4] OF Decimal; CustPaymentDiscTolLCY@1019 : ARRAY [4] OF Decimal; CustPaymentTolLCY@1018 : ARRAY [4] OF Decimal; CustReminderChargeAmtLCY@1011 : ARRAY [4] OF Decimal; CustFinChargeAmtLCY@1012 : ARRAY [4] OF Decimal; CustCrMemoAmountsLCY@1013 : ARRAY [4] OF Decimal; CustPaymentsLCY@1014 : ARRAY [4] OF Decimal; CustRefundsLCY@1020 : ARRAY [4] OF Decimal; CustOtherAmountsLCY@1021 : ARRAY [4] OF Decimal; i@1015 : Integer; InvAmountsLCY@1016 : ARRAY [4] OF Decimal; Text001@1025 : TextConst 'ENU=Placeholder'; // Add the following lines. PROCEDURE CalcOverDueBalance@1000000001() : Decimal; VAR CustLedgEntry@1000000000 : Record 21; BEGIN EXIT(CustLedgEntry.CalcOverDueBalance("No.")); END; // End of the lines. BEGIN END. } }Pakeiskite formos Tikrinti kredito limitą (343) funkcijos ShowWarning kodą taip:
Esamas kodas... IF CheckOverDueBalance AND (SalesSetup."Credit Warnings" IN [SalesSetup."Credit Warnings"::"Both Warnings", SalesSetup."Credit Warnings"::"Overdue Balance"]) THEN BEGIN // Delete the following lines. CalcOverdueBalanceLCY; IF "Balance Due (LCY)" > 0 THEN BEGIN // End of the lines. ExitValue := ExitValue + 2; END; END; ...Pakeitimo kodas
... IF CheckOverDueBalance AND (SalesSetup."Credit Warnings" IN [SalesSetup."Credit Warnings"::"Both Warnings", SalesSetup."Credit Warnings"::"Overdue Balance"]) THEN BEGIN // Add the following line. IF CalcOverDueBalance > 0 THEN BEGIN ExitValue := ExitValue + 2; END; END; ...Įveskite naują funkciją į formą Tikrinti kredito limitą (343):
Esamas kodas... PROCEDURE CalcReturnAmounts@9(VAR OutstandingRetOrdersLCY2@1001 : Decimal;VAR RcdNotInvdRetOrdersLCY2@1002 : Decimal) : Decimal; BEGIN SalesLine.RESET; SalesLine.SETCURRENTKEY("Document Type","Bill-to Customer No.","Currency Code"); SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::"Return Order"); SalesLine.SETRANGE("Bill-to Customer No.","No."); SalesLine.CALCSUMS("Outstanding Amount (LCY)","Return Rcd. Not Invd. (LCY)"); OutstandingRetOrdersLCY2 := SalesLine."Outstanding Amount (LCY)"; RcdNotInvdRetOrdersLCY2 := SalesLine."Return Rcd. Not Invd. (LCY)"; END; BEGIN END. } }Pakeitimo kodas
... PROCEDURE CalcReturnAmounts@9(VAR OutstandingRetOrdersLCY2@1001 : Decimal;VAR RcdNotInvdRetOrdersLCY2@1002 : Decimal) : Decimal; BEGIN SalesLine.RESET; SalesLine.SETCURRENTKEY("Document Type","Bill-to Customer No.","Currency Code"); SalesLine.SETRANGE("Document Type",SalesLine."Document Type"::"Return Order"); SalesLine.SETRANGE("Bill-to Customer No.","No."); SalesLine.CALCSUMS("Outstanding Amount (LCY)","Return Rcd. Not Invd. (LCY)"); OutstandingRetOrdersLCY2 := SalesLine."Outstanding Amount (LCY)"; RcdNotInvdRetOrdersLCY2 := SalesLine."Return Rcd. Not Invd. (LCY)"; END; // Add the following lines. PROCEDURE CalcOverDueBalance@1000000000() : Decimal; VAR CustLedgEntry@1000000000 : Record 21; BEGIN EXIT(CustLedgEntry.CalcOverDueBalance("No.")); END; // End of the lines. BEGIN END. } }
Būtinosios sąlygos
Norėdami taikyti šią karštąją pataisą, turite įdiegti vieną iš šių produktų:
- „„Microsoft“ Dynamics NAV 2009 R2‟
- "„Microsoft“ Dynamics NAV 2009" 1 pakeitimų paketas (SP1)
- „Microsoft“ Dynamics NAV 2009
- "„Microsoft“ Dynamics NAV 5.0" 1 pakeitimų paketas (SP1)
- „Microsoft“ Dynamics NAV 5.0
Pašalinimo informacija
Šios karštosios pataisos pašalinti negalite.
Būsena
„„Microsoft““ patvirtino, kad tai yra „„Microsoft““ produktų, išvardytų dalyje „Taikoma“, problema.
Pastaba: tai "SPARČIOJO PUBLIKAVIMO" straipsnis, sukurtas tiesiogiai iš "„Microsoft“" palaikymo organizacijos. Čia pateikta informacija pateikiama tokia, kokia yra, reaguojant į kylančias problemas. Dėl greito jos pateikimo medžiagoje gali būti spausdinimo klaidų ir ji gali būti peržiūrėta bet kuriuo metu be išankstinio įspėjimo. Dėl kitų aplinkybių žr. Naudojimo sąlygas .