Verdien i feltet "Gjenstående beløp" i posten som er opprettet for en faktura er feil, selv om du har installert hurtigreparasjonen 975264 i Microsoft Dynamics NAV 2009


Denne artikkelen gjelder for Microsoft Dynamics NAV for alle land og alle språkinnstillingene.

Symptomer


Tenk deg følgende i Microsoft Dynamics NAV 2009:
  • Du har installert hurtigreparasjonen 975264.
    Hvis du vil ha mer informasjon om hurtigreparasjon 975264, kan du klikke følgende artikkelnummer for å vise artikkelen i Microsoft Knowledge Base:
    975264 -verdien i "" restbeløpet i posten som er opprettet for en betaling er feil i Microsoft Dynamics NAV
  • Du angir en verdi i utligning. Avrundingspresisjon felt på fanebladet Utligning i dialogboksen Finansoppsett .
  • Du bokfører en salgsfaktura.
  • Du bokfører en innbetalingskladd for salgsfakturaen.
I dette tilfellet er verdien i feltet Restbeløp i den tilsvarende posten feil. Ingen verdi skal vises i feltet Restbeløp .
Dette problemet oppstår i følgende produkter:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Oppløsning


Informasjon om hurtigreparasjon

En støttet hurtigreparasjon er nå tilgjengelig fra Microsoft. Det er imidlertid bare ment å løse problemet som er beskrevet i denne artikkelen. Bruk den bare på systemer som har dette bestemte problemet. Denne hurtigreparasjonen kan gjennomgå ytterligere testing. Hvis du ikke er alvorlig påvirket av dette problemet, anbefaler vi derfor at du venter på neste oppdateringspakke for Microsoft Dynamics NAV eller den neste versjonen av Microsoft Dynamics NAV som inneholder denne hurtigreparasjonen.

Obs! I spesielle tilfeller avgifter som vanligvis påløper for støtte samtaler kan avbrytes hvis en kundestøttemedarbeider for Microsoft Dynamics og beslektede produkter avgjør at en bestemt oppdatering løser problemet. Vanlige kundestøttekostnader gjelder for ytterligere kundestøttespørsmål og problemer som ikke dekkes av den gjeldende oppdateringen.


Installasjonsinformasjon

Microsoft bruker ment som eksempler, uten garanti, verken direkte eller indirekte. Dette inkluderer, men er ikke begrenset til, eventuelle stilltiende garantier om salgbarhet eller anvendelighet for særskilte formål. Denne artikkelen forutsetter at du er kjent med programmeringsspråket som anvendes, og verktøyene som brukes til å opprette og feilsøke prosedyrer. Microsofts kundestøtteteknikere kan hjelpe deg med å forklare funksjonaliteten til en bestemt prosedyre, men de endrer ikke disse eksemplene for å lage forbedret funksjonalitet eller lage prosedyrer som dekker dine spesifikke behov.

Obs! Før du installerer denne hurtigreparasjonen, må du kontrollere at alle brukere av Microsoft Navision-klienten er logget av systemet. Dette inkluderer Microsoft Navision Application tjenester (NAS) client-brukere. Du skal bare klient-brukeren som er logget på når du implementerer denne hurtigreparasjonen.

Hvis du vil implementere denne hurtigreparasjonen, må du ha en utviklerlisens.

Vi anbefaler at kontoen i vinduet Windows-pålogging eller i vinduet Database-pålogging være tildelt "SUPER" rolle-ID. Hvis brukerkontoen ikke kan tilordnes "SUPER" rolle-IDen, må du kontrollere at brukerkontoen har følgende tillatelser:
  • Endre-tillatelse for objektet du vil endre.
  • Tilgangsnivået for systemet objekt-IDen til 5210 objektet og systemet objekt-ID-9015 -objekt.


Obs! Du har ikke tilgangsrettigheter til datalagre med mindre du har til å utføre data reparasjon.

Kodeendringer

Obs! Alltid løser teste koden i et kontrollert miljø før du installerer hurtigreparasjoner til produksjonsdatamaskiner for.
Hvis du vil løse dette problemet, gjør du følgende:
  1. Endre koden i PostCust utløseren i Bokføringsgruppe varekld.-poster linje kodeenhet (12) som følger:
    Eksisterende kode
    ...// Post the application
    ApplyCustLedgEntry(

    // Delete the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    // Post customer entry
    ...
    Ny kode
    ...// Post the application
    ApplyCustLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    // Post customer entry
    ...
  2. Endre koden i PostVend utløseren i Bokføringsgruppe varekld.-poster linje kodeenhet (12) som følger:
    Eksisterende kode
    ...// Post the application
    ApplyVendLedgEntry(

    // Delete the following lines.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,
    GLSetup."Appln. Rounding Precision");
    // End of the lines.

    // Post Vendor entry
    ...
    Ny kode
    ...// Post the application
    ApplyVendLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    // Post Vendor entry
    ...
  3. Legge til en ny lokal parameter i ApplyCustLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12), og angi parameteren på følgende måte:
    • Var: No
    • Navn: ApplnRoundingPrecision
    • DataType: desimaltall
  4. Legge til en ny lokal variabel i ApplyCustLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12), og deretter angi variabelen slik:
    • Navn: ApplnRoundingPrecision
    • DataType: Desimal
  5. Endre koden i ApplyCustLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12) som følger:
    Eksisterende kode 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    // Delete the following lines.
    IF NewCVLedgEntryBuf."Currency Code" <> '' THEN BEGIN
    Management of application of already posted entries
    IF NewCVLedgEntryBuf."Currency Code" <> ApplnCurrency.Code THEN
    ApplnCurrency.GET(NewCVLedgEntryBuf."Currency Code");
    ApplnRoundingPrecision := ApplnCurrency."Appln. Rounding Precision";
    END ELSE
    ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
    // End of the lines.

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Ny kode 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Eksisterende kode 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN

    ...
    Ny kode 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    // Add the following line.
    GetApplnRoundPrecision(ApplnRoundingPrecision,NewCVLedgEntryBuf,OldCVLedgEntryBuf);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN
    ...
  6. Endre koden i CustPostApplyCustLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12) som følger:
    Eksisterende kode
    ...// Post the application
    CustLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ApplyCustLedgEntry(

    // Delete the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,FALSE);
    CustLedgEntry.MODIFY;
    ...
    Ny kode
    ...// Post the application
    CustLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,TRUE);
    ApplyCustLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    TransferCustLedgEntry(CVLedgEntryBuf,CustLedgEntry,FALSE);
    CustLedgEntry.MODIFY;
    ...
  7. Legge til en ny lokal parameter i ApplyVendLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12), og angi parameteren på følgende måte:
    • Var: No
    • Navn: ApplnRoundingPrecision
    • DataType: Desimal
  8. Legge til en ny lokal variabel i ApplyVendLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12), og deretter angi variabelen slik:
    • Navn: ApplnRoundingPrecision
    • DataType: Desimal
  9. Endre koden i ApplyVendLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12) som følger:
    Eksisterende kode 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    // Delete the following lines.
    IF NewCVLedgEntryBuf."Currency Code" <> '' THEN BEGIN
    // Management of application of already posted entries
    IF NewCVLedgEntryBuf."Currency Code" <> ApplnCurrency.Code THEN
    ApplnCurrency.GET(NewCVLedgEntryBuf."Currency Code");
    ApplnRoundingPrecision := ApplnCurrency."Appln. Rounding Precision";
    END ELSE
    ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
    // End of the lines.

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Ny kode 1
    ...NewCVLedgEntryBuf2 := NewCVLedgEntryBuf;

    ApplyingDate := GenJnlLine."Posting Date";

    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
    ...
    Eksisterende kode 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN
    ...
    Ny kode 2
    ...// Management of posting in multiple currencies
    OldCVLedgEntryBuf2 := OldCVLedgEntryBuf;
    OldCVLedgEntryBuf.COPYFILTER(Positive,OldCVLedgEntryBuf2.Positive);

    // Add the following line.
    GetApplnRoundPrecision(ApplnRoundingPrecision,NewCVLedgEntryBuf,OldCVLedgEntryBuf);

    IF NewCVLedgEntryBuf."Currency Code" <> OldCVLedgEntryBuf2."Currency Code" THEN BEGIN
    ...
  10. Endre koden i VendPostApplyVendLedgEntry -funksjonen i Bokføringsgruppe varekld.-poster linje kodeenhet (12) som følger:
    Eksisterende kode
    ...// Post the application
    VendLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ApplyVendLedgEntry(

    // Delete the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine,GLSetup."Appln. Rounding Precision");

    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,FALSE);
    ...
    Ny kode
    ...// Post the application
    VendLedgEntry.CALCFIELDS(
    Amount,"Amount (LCY)","Remaining Amount","Remaining Amt. (LCY)",
    "Original Amount","Original Amt. (LCY)");
    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,TRUE);
    ApplyVendLedgEntry(

    // Add the following line.
    CVLedgEntryBuf,DtldCVLedgEntryBuf,GenJnlLine);

    TransferVendLedgEntry(CVLedgEntryBuf,VendLedgEntry,FALSE);
    ...
  11. Opprette en ny GetApplnRoundPrecision funtion i Bokføringsgruppe opps.-poster linje kodeenhet (12). Følg denne fremgangsmåten for å opprette funksjonen:
    1. Legge til en ny lokal parameter i GetApplnRoundPrecision -funtion i Bokføringsgruppe opps.-poster linje kodeenhet (12), og angi parameteren på følgende måte:
      • Varians: Ja
      • Navn: ApplnRoundingPrecision
      • DataType: Desimal
    2. Legge til en ny lokal parameter i GetApplnRoundPrecision -funtion i Bokføringsgruppe opps.-poster linje kodeenhet (12), og angi parameteren på følgende måte:
      • Var: No
      • Navn: NewCVLedgEntryBuf
      • DataType: post
      • Undertype: Buffer for kl-post
    3. Legge til en ny lokal parameter i GetApplnRoundPrecision -funtion i Bokføringsgruppe opps.-poster linje kodeenhet (12), og angi parameteren på følgende måte:
      • Var: No
      • Navn: OldCVLedgEntryBuf
      • DataType: - post
      • Undertype: Buffer for kl-post
    4. Legge til en ny lokal variabel i GetApplnRoundPrecision -funtion i Bokføringsgruppe varekld.-poster linje kodeenhet (12), og deretter angi variabelen slik:
      • Navn: CurrencyExistInledger
      • DataType: boolsk
    5. Legge til en ny lokal variabel i GetApplnRoundPrecision -funtion i Bokføringsgruppe varekld.-poster linje kodeenhet (12), og deretter angi variabelen slik:
      • Navn: CurrencyCode
      • DataType: kode
      • Lengde: 20
    6. Legg til følgende kode i GetApplnRoundPrecision -funtion i Bokføringsgruppe varekld.-poster linje kodeenhet (12):
      IF NewCVLedgEntryBuf."Currency Code" <> '' THENCurrencyCode := NewCVLedgEntryBuf."Currency Code"
      ELSE
      CurrencyCode := OldCVLedgEntryBuf."Currency Code";
      IF CurrencyCode <> ApplnCurrency.Code THEN
      CurrencyExistInledger := ApplnCurrency.GET(CurrencyCode);

      IF CurrencyExistInledger THEN BEGIN
      IF ApplnCurrency."Appln. Rounding Precision" <> 0 THEN
      ApplnRoundingPrecision := ApplnCurrency."Appln. Rounding Precision"
      ELSE
      ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
      END;

Forutsetninger

Du må ha én av de følgende programmene installert for å bruke denne hurtigreparasjonen:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)

Informasjon om fjerning

Du kan ikke fjerne denne hurtigreparasjonen.

Status


Microsoft har bekreftet at dette er et problem i Microsoft-produktene som er oppført i delen "Gjelder for".
Obs! Dette er en "RASKT PUBLISERE" artikkel opprettet direkte fra innenfor organisasjonen Microsoft Kundestøtte. Informasjonen i dette dokumentet tilbys som-er som svar på nye problemer. Som et resultat av hastigheten i å gjøre den tilgjengelig materialene kan inkludere typografiske feil, og den kunne bli revidert når som helst uten varsel. Se Vilkårene for Bruk for andre hensyn.