Faktura kojoj je krajnji rok danas pogrešno je uključena u polje "Iznosi koji kasne (LCY) od [datum]" u dijalogu "Statistika klijenata" u navigaciji Microsoft Dynamics NAV

Primenjuje se na
Microsoft Dynamics NAV 2009 R2 Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 5.0 Service Pack 1 Microsoft Dynamics NAV 5.0

Ovaj članak se odnosi na Microsoft Dynamics NAV za sve zemlje i lokalne standarde svih jezika.

Simptomi

Pretpostavimo da imate klijenta koji ima današnju fakturu u Microsoft Dynamics NAV. Ako datum rada postavite za današnji dan, faktura se pogrešno uključuje u polje " Dospeli roki" (LCY) od datuma u dijalogu "Statistika klijenata ". Pored toga, kada kreirate novu prodajnu fakturu za klijenta, faktura je uključena u iznos za prekoračenje kašnjenja u dijalogu " Proveri ograničenje kredita ". Međutim, fakture kojima je krajnji rok danas još uvek ne kasni. Sutra bi trebalo da kasni. 
Ovaj problem se javlja u sledećim proizvodima:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 servisni paket 1 (SP1)
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 servisni paket 1 (SP1)
  • Microsoft Dynamics NAV 5.0

Rešenje

Informacije o hitnim ispravkama

Podržana hitna ispravka je sada dostupna od korporacije Microsoft. Međutim, namena je samo za rešavanje problema koji je opisan u ovom članku. Primenite je samo na sisteme koji imaju ovaj određeni problem. Ova hitna ispravka može proći dodatno testiranje. Stoga, ako ovaj problem ne utiče ozbiljno, preporučujemo da sačekate sledeći servisni paket za Microsoft Dynamics NAV ili sledeću verziju programa Microsoft Dynamics NAV koja sadrži ovu hitnu ispravku.

Napomena: U posebnim slučajevima, troškovi koji se obično nastaju za pozive podršci mogu biti otkazani ako stručnjak za tehničku podršku za Microsoft Dynamics i srodne proizvode utvrdi da će određena ispravka rešiti problem. Uobičajeni troškovi podrške primenjivaće se na dodatna pitanja podrške i probleme koji ne ispunjavaju uslove za određenu ispravku u pitanju.

            
          

Informacije o instalaciji

Microsoft pruža primere programiranja samo za ilustraciju, bez izričite ili podrazumevane garancije. Ovo uključuje, ali nije ograničeno na, podrazumevane garancije o podesnosti za prodaju ili o podesnosti za određenu namenu. U ovom članku se pretpostavlja da ste upoznati sa programskim jezikom koji se demonstrira i sa alatkama koje se koriste za kreiranje procedura i otklanjanje grešaka. Inženjeri Microsoft podrške mogu da vam objasne funkcionalnost određene procedure, ali neće izmeniti ove primere da bi obezbedili dodatnu funkcionalnost ili konstruisali procedure koje ispunjavaju vaše određene zahteve.

Napomena: Pre nego što instalirate ovu hitnu ispravku, proverite da li su svi korisnici Microsoft Navision klijenta odjavljeni iz sistema. To uključuje korisnike Microsoft Navision Application Services (NAS) klijenta. Vi bi trebalo da budete jedini korisnik klijenta koji je prijavljen kada primenjujete ovu hitnu ispravku.

Da biste primenili ovu hitnu ispravku, morate imati licencu za projektante.

Preporučujemo da se korisničkom nalogu u prozoru "Prijavljivanje u operativni sistem Windows" ili u prozoru "Prijavljivanje u bazu podataka" dodeli ID uloge "SUPER". Ako korisničkom nalogu nije moguće dodeliti ID uloge "SUPER", morate da proverite da li korisnički nalog ima sledeće dozvole:

  • Dozvola "Izmeni" za objekat koji ćete menjati.
  • Dozvola za izvršavanje za objekat sistema ID 5210 i za objekat sistema ID 9015.

                
Napomena: Ne morate da imate prava na skladišta podataka osim ako ne morate da izvršite popravku podataka.

Promene kodova

Napomena: Popravke kodova uvek testirajte u kontrolisanom okruženju pre nego što ih primenite na računare proizvodnje.
Pratite ove korake da biste rešili problem:

  1. Dodajte dve nove funkcije u Cust. Ledger Entry tabela (21) na sledeći način:
    Postojeći kôd

    ...
    PROCEDURE GetOriginalCurrencyFactor@2() : Decimal;
    BEGIN
    IF "Original Currency Factor" = 0 THEN
    EXIT(1);
    EXIT("Original Currency Factor");
    END;
    
    BEGIN
    END.
    }
    }
    

    Kôd za zamenu

    ...
    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.
    }
    }
    
  2. Promenite kôd u obrascu statistike klijenata (151) na sledeći način:
    Postojeći kôd

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

    Kôd za zamenu

    ...
    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
    ...
    
  3. Dodajte novu funkciju u obrazac statistike klijenata (151) na sledeći način:
    Postojeći 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';
    
    BEGIN
    END.
    }
    }
    

    Kôd za zamenu

    ...
    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.
    }
    }
    
  4. Promenite kôd u funkciji ShowWarning u obrascu za proveru ograničenja kredita (343) na sledeći način:
    Postojeći kôd

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

    Kôd za zamenu

    ...
    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;
    ...
    
  5. Dodajte novu funkciju u obrazac "Proveri ograničenje kredita" (343) na sledeći način:
    Postojeći 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;
    
    BEGIN
    END.
    }
    }
    

    Kôd za zamenu

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

Preduslovi

Morate da imate instaliran jedan od sledećih proizvoda da biste primenili ovu hitnu ispravku:

  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 servisni paket 1 (SP1)
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 servisni paket 1 (SP1)
  • Microsoft Dynamics NAV 5.0

Informacije o uklanjanju

Ne možete da uklonite ovu hitnu ispravku.

Status

Microsoft je potvrdio da je ovo problem u Microsoft proizvodima koji su navedeni u odeljku „Odnosi se na“.

Napomena: Ovo je članak "BRZO OBJAVLJIVANJE" koji je kreiran direktno u okviru organizacije Microsoft podrške. Informacije koje se nalaze ovde pružaju se kakve jesu kao odgovor na nove probleme. Kao rezultat brzine stavljanja na raspolaganje, materijali mogu sadržavati tipografske greške i mogu se revidirati u bilo kom trenutku bez prethodne najave. Pogledajte Uslove korišćenja za druga razmatranja.