Simptome

După ce instalați KB3034441 în versiunea spaniolă de Microsoft Dynamics NAV 2009, atunci când se aplică o plată normal și o listă de intrări în registru client sau furnizor, intrările înregistrate contabil referire atât la același cont, care este incorectă. Urmați pașii din secțiunea modificări de cod pentru a rezolva această problemă. Această problemă se produce în următoarele produse:

  • Versiunea spaniolă de Microsoft Dynamics NAV 2009 R2

  • Versiunea în limba spaniolă Microsoft Dynamics NAV 2009 SP1

Rezolvare

Informații despre remedierea rapidă

Un hotfix acceptat este acum disponibil de la Microsoft. Cu toate acestea, acesta este destinat numai corectării problemei descrise în acest articol. Aplicați-o numai pe sistemele care întâmpină această problemă anume. Această remediere rapidă poate să necesite testare suplimentară. De aceea, dacă nu sunteți grav afectat de această problemă, vă recomandăm să așteptați următorul pachet service pack Microsoft Dynamics NAV 2009 sau versiunea Microsoft Dynamics NAV următoare, care conține această remediere rapidă.Notă În cazuri speciale, costurile implicate de obicei pentru asistență apeluri pot fi anulate dacă un specialist în asistență tehnică pentru Microsoft Dynamics și produse asociate stabilește că o anumită actualizare va rezolva problema. Se vor aplica costurile uzuale de asistenţă pentru întrebări suplimentare de asistenţă şi pentru probleme ce nu fac obiectul actualizării în cauză.

Informaţii despre instalare

Microsoft furnizează exemple de programare scop ilustrativ, fără nicio garanţie explicită sau implicită. Aceasta include, dar nu se limitează la, garanţiile implicite de vandabilitate sau de potrivire pentru un anumit scop. Acest articol presupune că sunteţi familiarizat cu limbajul de programare care este prezentat şi cu instrumentele utilizate pentru a crea şi a depana proceduri. Specialiștii în asistență Microsoft pot ajuta la explicarea funcționalității unei anumite proceduri. Cu toate acestea, nu vor modifica aceste exemple pentru a furniza funcționalitate suplimentară construi proceduri pentru a răspunde cerințelor dvs. specifice.Notă Înainte de a instala această remediere rapidă, verificați dacă toți utilizatorii de client Microsoft Dynamics NAV sunt log off sistemul. Aceasta include servicii Microsoft Dynamics NAV Application Server (NAS). Ar trebui să fie singurul client utilizatorului care este conectat când implementați această remediere rapidă.Pentru a implementa această remediere rapidă, trebuie să aveți o licență de dezvoltare.Vă recomandăm că contul de utilizator în fereastra Conectări Windows sau în fereastra Conectări bază de date se atribuie "SUPER" rolul ID-ul. În cazul în care contul de utilizator nu poate fi atribuit ID-ul "SUPER" rolul, trebuie să verificați că contul de utilizator are următoarele permisiuni:

  • Modify permisiunea pentru obiectul care se va schimba.

  • Permisiunea de executare pentru obiectul sistem obiect ID 5210 și sistem obiect ID 9015obiect.

Notă Nu trebuie să aveți drepturi de la magazine de date decât dacă trebuie să efectuați o reparare de date.

Modificări de cod

Notă Întotdeauna test cod remediază într-un mediu controlat înainte de a aplica remedieri pentru computerele de producție.Pentru a rezolva această problemă, urmați acești pași:

  1. Modificați codul din PostDtldCustLedgEntries function în gen jurnal.-Post linie codeunit (12) după cum urmează:Cod existent 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];...

    Înlocuirea cod 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];...

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

    Înlocuirea cod 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;...

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

    Înlocuirea cod 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...

    Cod existent 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);...

    Înlocuirea cod 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. Modificați codul din PostDtldVendLedgEntries function în gen jurnal.-Post linie codeunit (12) după cum urmează:Cod existent 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];...

    Înlocuirea cod 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];...

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

    Înlocuirea cod 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;...

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

    Înlocuirea cod 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...

    Cod existent 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);...

    Înlocuirea cod 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. Modificați codul din PostPayableDocs function în gen jurnal.-Post linie codeunit (12) după cum urmează:Cod existent 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...

    Înlocuirea cod 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...

    Cod existent 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);...

    Înlocuirea cod 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. Modificați codul din PostReceivableDocs function în gen jurnal.-Post linie codeunit (12) după cum urmează:Cod existent 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;...

    Înlocuirea cod 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;...

    Cod existent 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);...

    Înlocuirea cod 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);...

Cerințe preliminare

Trebuie să aveți unul dintre următoarele produse instalate pentru a aplica această remediere rapidă:

  • Versiunea spaniolă de Microsoft Dynamics NAV 2009 R2

  • Versiunea în limba spaniolă Microsoft Dynamics NAV 2009 SP1

În plus, trebuie să aveți KB3034441 instalat.

Eliminare informaţii

Nu se poate elimina această remediere rapidă.

Stare

Microsoft a confirmat că aceasta este o problemă cu produsele Microsoft enumerate în secţiunea „Se aplică la".

Notă Acesta este un articol "rapid publicat" creat direct în cadrul organizației de asistență Microsoft. Informațiile conținute în acest document sunt furnizate ca răspuns la problemele care apar. Ca rezultat al vitezei în a-l face disponibil, materialele pot include erori tipografice și pot fi revizuite în orice moment, fără notificare. Consultați Termenii de utilizarepentru alte considerații.

Aveți nevoie de ajutor suplimentar?

Doriți mai multe opțiuni?

Explorați avantajele abonamentului, navigați prin cursurile de instruire, aflați cum să vă securizați dispozitivul și multe altele.

Comunitățile vă ajută să adresați întrebări și să răspundeți la întrebări, să oferiți feedback și să primiți feedback de la experți cu cunoștințe bogate.