Gäller för
Dynamics NAV 2009

Symptom

När du har installerat KB3034441 i den spanska versionen av Microsoft Dynamics NAV 2009 när du kopplar en normal betalning och en strukturlista från kund-eller leverantörstransaktioner referera både till samma konto som är felaktigt bokförda redovisningstransaktioner. Följ instruktionerna i avsnittet kod ändras för att lösa problemet. Det här problemet uppstår i följande produkter:

  • Den spanska versionen av Microsoft Dynamics NAV 2009 R2

  • Den spanska versionen av Microsoft Dynamics NAV 2009 SP1

Lösning

Information om snabbkorrigeringen

En snabbkorrigering är nu tillgänglig från Microsoft. Den är endast avsedd att åtgärda det problem som beskrivs i denna artikel. Använd den bara på datorer där detta problem uppstår. Snabbkorrigeringen kan komma att testas igen. Om inte störs alltför mycket av detta problem rekommenderar vi att du väntar på Nästa service pack-versionen för Microsoft Dynamics NAV 2009 eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.Obs! I särskilda fall, de avgifter som är normalt för support vara avgiftsfri om en supporttekniker för Microsoft Dynamics och relaterade produkter som bestämmer att en särskild uppdatering kan lösa ditt problem. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte berör den särskilda uppdateringen.

Installationsinformation

Microsoft tillhandahåller programmeringsexempel endast utan garanti varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionen hos en viss procedur. De kommer inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.Obs! Innan du installerar den här snabbkorrigeringen måste du kontrollera att alla användare i Microsoft Dynamics NAV-klienten har loggat ut. Detta omfattar tjänster för Microsoft Dynamics NAV Application Server (NAS). Du ska endast klientanvändare som är inloggad när du implementerar den här snabbkorrigeringen.Om du vill genomföra den här snabbkorrigeringen måste du ha en utvecklarlicens.Vi rekommenderar att tilldelas användarkontot i fönstret Windows-inloggningar eller i fönstret databasinloggningar "SUPER" roll-ID. Om användarkontot inte kan tilldelas "SUPER" roll-ID måste du kontrollera att användarkontot har följande behörigheter:

  • Ändra behörighet för objektet ändras.

  • Körbehörighet för systemet objektet ID 5210 objekt och System objektet ID 9015objektet.

Obs! Du har inte behörighet för datalager inte data reparation.

Kod ändras

Obs! Alltid åtgärdas testa koden i en kontrollerad miljö innan du installerar korrigeringar för produktionsdatorer.Lös problemet så här:

  1. Ändra koden i funktionen PostDtldCustLedgEntries i den Redovisningsjnl-Bokför rad kodmodul (12) enligt följande:Befintlig kod 1

    ...LOCAL PROCEDURE PostDtldCustLedgEntries@46(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;CustPostingGr@1002 : Record 92;GLSetup@1003 : Record 98;NextTransactionNo@1004 : Integer;CustLedgEntryInserted@1012 : Boolean);      VAR        DtldCustLedgEntry@1005 : Record 379;        Currency@1007 : Record 4;        GenPostingSetup@1008 : Record 252;        TotalAmountLCY@1009 : Decimal;        TotalAmountAddCurr@1010 : Decimal;        PaymentDiscAcc@1011 : Code[20];        DtldCustLedgEntryNoOffset@1006 : Integer;        PaymentTolAcc@1013 : Code[20];...

    Ersättningskod 1

    ...LOCAL PROCEDURE PostDtldCustLedgEntries@46(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;CustPostingGr@1002 : Record 92;GLSetup@1003 : Record 98;NextTransactionNo@1004 : Integer;CustLedgEntryInserted@1012 : Boolean);      VAR        DtldCustLedgEntry@1005 : Record 379;        Currency@1007 : Record 4;        GenPostingSetup@1008 : Record 252;// Add the following line.DtldCustLedgEntry3@1100044 : Record 379;// End of the added line.        TotalAmountLCY@1009 : Decimal;        TotalAmountAddCurr@1010 : Decimal;        PaymentDiscAcc@1011 : Code[20];        DtldCustLedgEntryNoOffset@1006 : Integer;        PaymentTolAcc@1013 : Code[20];...

    Befintlig kod 2

    ...ReceivableAccAmtLCY@1100001 : Decimal;        ReceivableAccAmtAddCurr@1100000 : Decimal;        DtldCustLedgEntry2@1100003 : TEMPORARY Record 379;        ExistDtldCVLedgEntryBuf@1000003 : Boolean;        FindBill@1100004 : Boolean;      BEGIN        TotalAmountLCY := 0;        TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;...

    Ersättningskod 2

    ...ReceivableAccAmtLCY@1100001 : Decimal;        ReceivableAccAmtAddCurr@1100000 : Decimal;        DtldCustLedgEntry2@1100003 : TEMPORARY Record 379;        ExistDtldCVLedgEntryBuf@1000003 : Boolean;        FindBill@1100004 : Boolean;// Add the following line.EntryUnapplied@1100051 : Boolean;// End of the added line.      BEGIN        TotalAmountLCY := 0;        TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;...

    Befintlig kod 3

    ... TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;        NegativeLCYAppAmt := 0;        NegativeACYAppAmt := 0;        IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Customer THEN BEGIN          IF DtldCustLedgEntry.FINDLAST THEN            DtldCustLedgEntryNoOffset := DtldCustLedgEntry."Entry No."          ELSE...

    Ersättningskod 3

    ...TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;        NegativeLCYAppAmt := 0;        NegativeACYAppAmt := 0;// Add the following line.EntryUnapplied := FALSE;// End of the added line.        IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Customer THEN BEGIN          IF DtldCustLedgEntry.FINDLAST THEN            DtldCustLedgEntryNoOffset := DtldCustLedgEntry."Entry No."          ELSE...

    Befintlig kod 4

    ... END;            InsertGLEntry(TRUE);            GenJnlLine."Posting Date" := OriginalPostingDate;          END;// Delete the following line.PostReceivableDocs(GenJnlLine);// End of the deleted line.          IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN            InitGLEntry(CustPostingGr."Receivables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE);            InsertGLEntry(FALSE);            InitGLEntry(CustPostingGr."Receivables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE);...

    Ersättningskod 4

    ... END;            InsertGLEntry(TRUE);            GenJnlLine."Posting Date" := OriginalPostingDate;          END;// Add the following lines.WITH DtldCustLedgEntry3 DO BEGINSETCURRENTKEY("Cust. Ledger Entry No.");SETRANGE("Cust. Ledger Entry No.",DtldCustLedgEntry."Cust. Ledger Entry No.");SETFILTER("Applies-to Bill No.",'<>%1','');SETRANGE(Unapplied,TRUE);EntryUnapplied := NOT ISEMPTY;END;PostReceivableDocs(EntryUnapplied);// End of the added lines.          IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN            InitGLEntry(CustPostingGr."Receivables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE);            InsertGLEntry(FALSE);            InitGLEntry(CustPostingGr."Receivables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE);...
  2. Ändra koden i funktionen PostDtldVendLedgEntries i den Redovisningsjnl-Bokför rad kodmodul (12) enligt följande:Befintlig kod 1

    ...  PROCEDURE PostDtldVendLedgEntries@32(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;VendPostingGr@1002 : Record 93;NextTransactionNo@1003 : Integer;VendLedgEntryInserted@1011 : Boolean);      VAR        DtldVendLedgEntry@1004 : Record 380;        Currency@1006 : Record 4;        GenPostingSetup@1007 : Record 252;        TotalAmountLCY@1008 : Decimal;        TotalAmountAddCurr@1009 : Decimal;        PaymentDiscAcc@1010 : Code[20];        DtldVendLedgEntryNoOffset@1005 : Integer;        PaymentTolAcc@1012 : Code[20];...

    Ersättningskod 1

    ...PROCEDURE PostDtldVendLedgEntries@32(GenJnlLine2@1000 : Record 81;VAR DtldCVLedgEntryBuf@1001 : Record 383;VendPostingGr@1002 : Record 93;NextTransactionNo@1003 : Integer;VendLedgEntryInserted@1011 : Boolean);      VAR        DtldVendLedgEntry@1004 : Record 380;        Currency@1006 : Record 4;        GenPostingSetup@1007 : Record 252;// Add the following line.DtldVendLedgEntry3@1100055 : Record 380;// End of the added line.        TotalAmountLCY@1008 : Decimal;        TotalAmountAddCurr@1009 : Decimal;        PaymentDiscAcc@1010 : Code[20];        DtldVendLedgEntryNoOffset@1005 : Integer;        PaymentTolAcc@1012 : Code[20];...

    Befintlig kod 2

    ...PayableAccAmtLCY@1100002 : Decimal;        PayableAccAmtAddCurr@1100010 : Decimal;        DtldVendLedgEntry2@1100003 : Record 380;        ExistDtldCVLedgEntryBuf@1100004 : Boolean;        FindBill@1100005 : Boolean;      BEGIN        TotalAmountLCY := 0;        TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;...

    Ersättningskod 2

    ...PayableAccAmtLCY@1100002 : Decimal;        PayableAccAmtAddCurr@1100010 : Decimal;        DtldVendLedgEntry2@1100003 : Record 380;        ExistDtldCVLedgEntryBuf@1100004 : Boolean;        FindBill@1100005 : Boolean;// Add the following line.EntryUnapplied@1100051 : Boolean;// End of the added line.      BEGIN        TotalAmountLCY := 0;        TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;...

    Befintlig kod 3

    ...TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;        NegativeLCYAppAmt := 0;        NegativeACYAppAmt := 0;        IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Vendor THEN BEGIN          IF DtldVendLedgEntry.FINDLAST THEN            DtldVendLedgEntryNoOffset := DtldVendLedgEntry."Entry No."          ELSE...

    Ersättningskod 3

    ...TotalAmountAddCurr := 0;        PositiveLCYAppAmt := 0;        PositiveACYAppAmt := 0;        NegativeLCYAppAmt := 0;        NegativeACYAppAmt := 0;// Add the following line.EntryUnapplied := FALSE;// End of the added line.        IF GenJnlLine2."Account Type" = GenJnlLine2."Account Type"::Vendor THEN BEGIN          IF DtldVendLedgEntry.FINDLAST THEN            DtldVendLedgEntryNoOffset := DtldVendLedgEntry."Entry No."          ELSE...

    Befintlig kod 4

    ...END;            InsertGLEntry(TRUE);            GenJnlLine."Posting Date" := OriginalPostingDate;          END;// Delete the following line.PostPayableDocs(GenJnlLine);// End of the deleted line.          IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN            InitGLEntry(VendPostingGr."Payables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE);            InsertGLEntry(FALSE);            InitGLEntry(VendPostingGr."Payables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE);...

    Ersättningskod 4

    ...END;            InsertGLEntry(TRUE);            GenJnlLine."Posting Date" := OriginalPostingDate;          END;// Add the following lines.WITH DtldVendLedgEntry3 DO BEGINSETCURRENTKEY("Vendor Ledger Entry No.");SETRANGE("Vendor Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No.");SETFILTER("Applies-to Bill No.",'<>%1','');SETRANGE(Unapplied,TRUE);EntryUnapplied := NOT ISEMPTY;END;PostPayableDocs(EntryUnapplied);// End of the added lines.          IF NOT GLEntryTmp.FINDFIRST AND ExistDtldCVLedgEntryBuf THEN BEGIN            InitGLEntry(VendPostingGr."Payables Account",PositiveLCYAppAmt,PositiveACYAppAmt,FALSE,TRUE);            InsertGLEntry(FALSE);            InitGLEntry(VendPostingGr."Payables Account",NegativeLCYAppAmt,NegativeACYAppAmt,FALSE,TRUE);...
  3. Ändra koden i funktionen PostPayableDocs i den Redovisningsjnl-Bokför rad kodmodul (12) enligt följande:Befintlig kod 1

    ...ELSE            VATEntry."Bill-to/Pay-to No." := GenJnlLine2."Account No.";        END;      END;// Delete the following line.LOCAL PROCEDURE PostPayableDocs@1100009(VAR GenJnlLine@1100000 : Record 81);// End of the deleted line.      BEGIN        IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN          IF NextEntryNo2 = NextEntryNo THEN            NextEntryNo := NextEntryNo - 1;        IF DocAmountLCY <> 0 THEN BEGIN...

    Ersättningskod 1

    ...ELSE            VATEntry."Bill-to/Pay-to No." := GenJnlLine2."Account No.";        END;      END;// Add the following line.LOCAL PROCEDURE PostPayableDocs@1100009(EntryUnapplied@1100001 : Boolean);// End of the added line.      BEGIN        IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN          IF NextEntryNo2 = NextEntryNo THEN            NextEntryNo := NextEntryNo - 1;        IF DocAmountLCY <> 0 THEN BEGIN...

    Befintlig kod 2

    ...BEGIN        IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN          IF NextEntryNo2 = NextEntryNo THEN            NextEntryNo := NextEntryNo - 1;        IF DocAmountLCY <> 0 THEN BEGIN// Delete the following lines.// VSTF330588.begin//IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) THEN BEGINIF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OR(GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::" ")THEN BEGIN// VSTF330588.end// End of the deleted lines.            VendPostingGr.TESTFIELD("Payables Account");            InitGLEntry(VendPostingGr."Payables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE);            GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";            GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";            InsertGLEntry(TRUE);...

    Ersättningskod 2

    ...BEGIN        IF (DocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) THEN          IF NextEntryNo2 = NextEntryNo THEN            NextEntryNo := NextEntryNo - 1;        IF DocAmountLCY <> 0 THEN BEGIN// Add the following lines.IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OREntryUnappliedTHEN BEGIN// End of the added lines.            VendPostingGr.TESTFIELD("Payables Account");            InitGLEntry(VendPostingGr."Payables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE);            GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";            GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";            InsertGLEntry(TRUE);...
  4. Ändra koden i funktionen PostReceivableDocs i den Redovisningsjnl-Bokför rad kodmodul (12) enligt följande:Befintlig kod 1

    ... GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";          InsertGLEntry(TRUE);        END;      END;// Delete the following line.LOCAL PROCEDURE PostReceivableDocs@1100003(VAR GenJnlLine@1100000 : Record 81);// End of the deleted line.      BEGIN        IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR          (DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN            IF NextEntryNo2 = NextEntryNo THEN              NextEntryNo := NextEntryNo - 1;...

    Ersättningskod 1

    ...GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";          InsertGLEntry(TRUE);        END;      END;// Add the following line.LOCAL PROCEDURE PostReceivableDocs@1100003(EntryUnapplied@1100001 : Boolean);// End of the added line.      BEGIN        IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR          (DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN            IF NextEntryNo2 = NextEntryNo THEN              NextEntryNo := NextEntryNo - 1;...

    Befintlig kod 2

    ...IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR          (DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN            IF NextEntryNo2 = NextEntryNo THEN              NextEntryNo := NextEntryNo - 1;        IF DocAmountLCY <> 0 THEN BEGIN// Delete the following lines.// VSTF330588.begin//IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) THEN BEGINIF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OR(GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::" ") THEN BEGIN// VSTF330588.end// End of the deleted lines.            CustPostingGr.TESTFIELD("Receivables Account");            InitGLEntry(CustPostingGr."Receivables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE);            GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";            GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";            InsertGLEntry(TRUE);...

    Ersättningskod 2

    ...IF (DocAmountLCY <> 0) OR (DiscDocAmountLCY <> 0) OR (CollDocAmountLCY <> 0) OR (RejDocAmountLCY <> 0) OR          (DiscRiskFactAmountLCY <> 0) OR (DiscUnriskFactAmountLCY <> 0) OR (CollFactAmountLCY <> 0) THEN            IF NextEntryNo2 = NextEntryNo THEN              NextEntryNo := NextEntryNo - 1;        IF DocAmountLCY <> 0 THEN BEGIN// Add the following lines.IF (GenJnlLine."Applies-to Doc. Type" = GenJnlLine."Applies-to Doc. Type"::Invoice) OREntryUnappliedTHEN BEGIN// End of the added lines.            CustPostingGr.TESTFIELD("Receivables Account");            InitGLEntry(CustPostingGr."Receivables Account",DocAmountLCY,DocAmtCalcAddCurrency(DocAmountLCY),TRUE,TRUE);            GLEntry."Bal. Account Type" := GenJnlLine."Bal. Account Type";            GLEntry."Bal. Account No." := GenJnlLine."Bal. Account No.";            InsertGLEntry(TRUE);...

Förutsättningar

Du måste ha någon av följande produkter som har installerat den här snabbkorrigeringen:

  • Den spanska versionen av Microsoft Dynamics NAV 2009 R2

  • Den spanska versionen av Microsoft Dynamics NAV 2009 SP1

Dessutom måste du ha KB3034441 installerat.

Information om borttagning

Du kan inte ta bort den här snabbkorrigeringen.

Status

Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".

Obs! Detta är en "SNABBPUBLICERING"-artikel skapad direkt från Microsoft support-organisationen. Informationen häri tillhandahålls i befintligt skick som svar på nya problem. Till följd av hastigheten för att göra det tillgängligt kan materialet innehålla typografiska fel och kan ändras när som helst utan föregående meddelande. Se Villkoren för användningför andra överväganden.

Behöver du mer hjälp?

Vill du ha fler alternativ?

Utforska prenumerationsförmåner, bläddra bland utbildningskurser, lär dig hur du skyddar din enhet med mera.