Ovaj se članak odnosi na NAV sustava Microsoft Dynamics za sve države i regionalne sheme na svim jezicima.
Simptomi
Pretpostavimo da imate klijenta s današnjim rokom fakture u sustavu Microsoft Dynamics NAV. Ako za današnji radni datum postavite radni datum, faktura se nepravilno uvrštava u polje Dospjeli iznosi (LK) od datuma u dijaloškom okviru Statistika o klijentima . Uz to, kada za klijenta stvorite novu prodajnu fakturu, ona se uvrštava u dospjeli iznos u dijaloškom okviru Provjera kreditnog limita . No fakture koje dospijevaju danas još nisu prekoračene. Sutra bi trebali proslijediti.
Taj se problem pojavljuje u sljedećim proizvodima:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 5.0
Rješenje
Informacije o hitnom popravku
Microsoft sada nudi podržani hitni popravak. No njegova je namjena samo ispravljanje problema opisanog u ovom članku. Primijenite ga samo na sustave koji imaju taj specifični problem. Ovaj hitni popravak može proći dodatna testiranja. Stoga, ako se ovaj problem ne odnosi ozbiljno, preporučujemo da pričekate sljedeći servisni paket za Microsoft Dynamics NAV ili sljedeću verziju sustava Microsoft Dynamics NAV koja sadrži ovaj hitni popravak.
Napomena: U posebnim slučajevima, ako stručnjak tehničke podrške za Microsoft Dynamics i povezane proizvode utvrdi da određeno ažuriranje može riješiti problem, poziv službi podrške može biti besplatan. Uobičajene cijene poziva službi za podršku primjenjuju se na dodatna pitanja i probleme koje nemaju veze s pripadnom nadopunom.
Informacije o instalaciji
Microsoft daje primjere programiranja samo za ilustraciju, bez jamstva, bilo izričitog ili prešutnog. To uključuje, bez ograničenja, implicitna jamstva utrživosti ili prikladnosti za određenu svrhu. U članku se podrazumijeva da ste upoznati s programskim jezikom koji se pokazuje te s alatima koji se koriste za stvaranje i ispravljanje pogrešaka procedura. Microsoftovi inženjeri za podršku mogu vam pomoći objasniti funkcionalnost određene procedure, no neće mijenjati te primjere radi pružanja dodatne funkcionalnosti ili konstruirati procedure koji zadovoljavaju vaše specifične zahtjeve.
Napomena Prije nego što instalirate ovaj hitni popravak, provjerite jesu li svi korisnici Microsoft Navision klijenta odjavljeni sa sustava. To obuhvaća korisnike klijentskih usluga Microsoft Navision Application Services (NAS). Trebali biste biti jedini klijentski korisnik prijavljen na vrijeme implementacije ovog hitnog popravka.
Da biste implementirali ovaj hitni popravak, morate imati licencu za razvojne inženjere.
Preporučujemo da se korisničkom računu u prozoru Prijave u sustav Windows ili u prozoru Prijave u bazu podataka dodijeli ID uloge "SUPER". Ako korisničkom računu nije moguće dodijeliti ID uloge "SUPER", morate provjeriti ima li korisnički račun sljedeće dozvole:
- Dozvola za izmjenu objekta koji ćete mijenjati.
- Dozvola za izvršavanje za objekt System Object ID 5210 i za objekt System Object ID 9015
Napomena: nemate pravo na spremišta podataka, osim ako morate popraviti podatke.
Promjene koda
Napomena: uvijek testirajte popravke koda u kontroliranom okruženju prije primjene popravaka na proizvodnim računalima.
Da biste riješili taj problem, učinite sljedeće:
Dodajte dvije nove funkcije u tablicu unosa u glavnu knjigu (21) na sljedeći način:
Postojeći kod... PROCEDURE GetOriginalCurrencyFactor@2() : Decimal; BEGIN IF "Original Currency Factor" = 0 THEN EXIT(1); EXIT("Original Currency Factor"); END; BEGIN END. } }Zamjenski kôd
... 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. } }Promijenite kod na obrascu Statistika kupaca (151) na sljedeći način:
Postojeći kod... 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 ...Zamjenski kôd
... 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 ...Dodajte novu funkciju u obrazac statistike klijenata (151) na sljedeći način:
Postojeći kod... 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. } }Zamjenski kôd
... 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. } }Promijenite kod u funkciji ShowWarning na obrascu Provjera kreditnog limita (343) na sljedeći način:
Postojeći kod... 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; ...Zamjenski kôd
... 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; ...Dodajte novu funkciju u obrazac Provjera kreditnog limita (343) na sljedeći način:
Postojeći kod... 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. } }Zamjenski kôd
... 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. } }
Preduvjeti
Da biste primijenili ovaj hitni popravak, morate imati instaliran neki od sljedećih proizvoda:
- Microsoft Dynamics NAV 2009 R2
- Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 2009
- Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Microsoft Dynamics NAV 5.0
Podaci o uklanjanju
Ovaj hitni popravak ne možete ukloniti.
Status
Microsoft je potvrdio da je to problem u Microsoftovim proizvodima koji su navedeni u odjeljku „Odnosi se na“.
Napomena: Ovo je članak "FAST PUBLISH" stvoren izravno u Microsoftovoj ustanovi za podršku. Ovdje sadržane informacije pružaju se takve kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske pogreške i mogu se revidirati u bilo kojem trenutku bez prethodne najave. Dodatne napomene potražite u Uvjetima korištenja .