Ne zatvaraju se sve stavke u glavnoj knjizi klijenata generisane iz fakture kada knjižite fakturu u italijanskoj verziji aplikacije Microsoft Dynamics NAV

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

Brzo objavljeni članci pružaju informacije direktno iz organizacije Microsoft podrške. Informacije koje se nalaze u ovom dokumentu kreirane su kao odgovor na nove ili jedinstvene teme ili su namenjene kao dopuna drugim informacijama iz baze znanja.

Ovaj članak se odnosi na Microsoft Dynamics NAV za lokalni standard italijanskog (it).

Simptomi

Pretpostavimo da imate fakturu koja koristi više tarifa i da način plaćanja fakture koristi broj računa stanja iz italijanske verzije aplikacije Microsoft Dynamics NAV. Kada knjižite fakturu pomoću automatskog plaćanja, Microsoft Dynamics NAV kreira više redova za fakturu i jedan red za plaćanje. Međutim, samo prva faktura se primenjuje i zatvara. Ostale fakture su još otvorene.

Ovaj problem se javlja u sledećim proizvodima:

  • Italijanska verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
  • Italijanska verzija programa Microsoft Dynamics NAV 2009
  • Italijanska verzija servisnog paketa Microsoft Dynamics NAV 5.0 sa servisnim paketom 1

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.
Da biste primenili ovu hitnu ispravku, pratite ove korake:

  1. Promenite ključ u tabeli Cust. Ledger Entry (21) na sledeći način:
    Postojeći

    • Omogućeno:Da
    • Ključ: Tip dokumenta, broj dokumenta, pojavljivanje dokumenta
    • SumIndexFields:

    Zamena jedan

    • Omogućeno:Da
    • Ključ: Tip dokumenta, broj dokumenta, pojavljivanje dokumenta
    • SumIndexFields: preostali pmt. disk. Moguće
  2. Promenite ključ u tabeli stavki glavne knjige prodavca (25) na sledeći način:
    Postojeći

    • Omogućeno:Da
    • Ključ: Tip dokumenta, Broj dokumenta, Pojavljivanje dokumenta, Broj prodavca
    • SumIndexFields:

    Zamena jedan

    • Omogućeno:Da
    • Ključ: Tip dokumenta, Broj dokumenta, Pojavljivanje dokumenta, Broj prodavca
    • SumIndexFields: preostali pmt. disk. Moguće
  3. Dodajte lokalnu promenljivu u funkciju ApplyCustLedgEntry u gen. Jnl.-Post Line codeunit (12), a zatim navedite promenljivu na sledeći način:

    • Ime: PaymentTerms
    • Tip podataka: Zapis
    • Podtip: Uslovi plaćanja
  4. Promenite kôd u funkciji ApplyCustLedgEntry u gen. Jnl.-Post Line codeunit (12) na sledeći način:
    Postojeći kôd 1

    ...
    END ELSE
        ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
    ApplyingDate := GenJnlLine."Posting Date";
    
    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
      // Find the entry to be applied to
    ...
    
    

    Kôd za zamenu 1

    ...
    END ELSE
        ApplnRoundingPrecision := GLSetup."Appln. Rounding Precision";
    ApplyingDate := GenJnlLine."Posting Date";
    // Add the following lines.
    Cust.GET(GenJnlLine."Account No.");    
    IF Cust."Payment Terms Code" <> '' THEN BEGIN  
      PaymentTerms.GET(Cust."Payment Terms Code"); 
      PaymentTerms.CALCFIELDS("Payment Nos.");
    END;  
    // End of the added lines.
    
    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
      // Find the entry to be applied to
    ...
    
    

    Postojeći kôd 2

    ...
         (OldCustLedgEntry.COUNT=1)
      THEN
        GenJnlLine."Applies-to Occurrence No." := 1;
    
    // Delete the following line.
      OldCustLedgEntry.SETRANGE("Document Occurrence",GenJnlLine."Applies-to Occurrence No.");
    
      OldCustLedgEntry.SETRANGE(Open,TRUE);
    
      // Delete the following lines.
      OldCustLedgEntry.FINDFIRST;
      OldCustLedgEntry.TESTFIELD("Bank Receipt Issued", FALSE);  
      OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
      IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN
        ApplyingDate := OldCustLedgEntry."Posting Date";
      GenJnlApply.CheckAgainstApplnCurrency(  
        NewCVLedgEntryBuf."Currency Code",
        OldCustLedgEntry."Currency Code", 
        GenJnlLine."Account Type"::Customer,
        TRUE);
      TempOldCustLedgEntry := OldCustLedgEntry;
      TempOldCustLedgEntry.INSERT;
    // End of the deleted lines.
    
    END ELSE BEGIN
      // Find the first old entry (Invoice) which the new entry (Payment) should apply to
    ...
    
    

    Kôd zamene 2

    ...
         (OldCustLedgEntry.COUNT=1)
      THEN
        GenJnlLine."Applies-to Occurrence No." := 1;
      OldCustLedgEntry.SETRANGE(Open,TRUE);
    
      // Add the following lines.
      IF OldCustLedgEntry.FINDSET THEN
        REPEAT
          OldCustLedgEntry.TESTFIELD("Bank Receipt Issued", FALSE); 
          OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
          IF OldCustLedgEntry."Posting Date" > ApplyingDate THEN
            ApplyingDate := OldCustLedgEntry."Posting Date";  
            GenJnlApply.CheckAgainstApplnCurrency( 
            NewCVLedgEntryBuf."Currency Code", 
            OldCustLedgEntry."Currency Code", 
            GenJnlLine."Account Type"::Customer,
            TRUE);             
           TempOldCustLedgEntry := OldCustLedgEntry; 
           TempOldCustLedgEntry.INSERT;
         UNTIL OldCustLedgEntry.NEXT = 0;  
      IF NOT TempOldCustLedgEntry.FINDSET THEN
        EXIT;   
    // End of the added lines.
    
    END ELSE BEGIN
      // Find the first old entry (Invoice) which the new entry (Payment) should apply to
    ...
    
    

    Postojeći kôd 3

    ...
      TempOldCustLedgEntry.DELETE;
    
        // Find the next old entry for application of the new entry
    
    // Delete the following line.
      IF GenJnlLine."Applies-to Doc. No." <> '' THEN
    
        Completed := TRUE
    ...
    
    

    Kôd za zamenu 3

    ...
      TempOldCustLedgEntry.DELETE;
    
        // Find the next old entry for application of the new entry
    
    // Add the following line.
      IF (GenJnlLine."Applies-to Doc. No." <> '') AND (PaymentTerms."Payment Nos." <= 1) THEN
    
        Completed := TRUE
    ...
    
    
  5. Dodajte lokalnu promenljivu u funkciju ApplyVendLedgEntry u funkciji Gen. Jnl.-Post Line codeunit (12), a zatim navedite promenljivu na sledeći način:

    • Ime: PaymentTerms
    • Tip podataka: Zapis
    • Podtip: Uslovi plaćanja
  6. Promenite kôd u funkciji ApplyVendLedgEntry u koloni Gen. Jnl.-Post Line codeunit (12) na sledeći način:
    Postojeći kôd 1

    ...
    ApplyingDate := GenJnlLine."Posting Date";
    
    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
      // Find the entry to be applied to
    ...
    
    

    Kôd za zamenu 1

    ...
    ApplyingDate := GenJnlLine."Posting Date";
    // Add the following lines.
    Vend.GET(GenJnlLine."Account No.");   
    IF Vend."Payment Terms Code" <> '' THEN BEGIN  
      PaymentTerms.GET(Vend."Payment Terms Code"); 
      PaymentTerms.CALCFIELDS("Payment Nos.");
    END;  
    // End of the added lines.
    
    IF GenJnlLine."Applies-to Doc. No." <> '' THEN BEGIN
      // Find the entry to be applied to
    ...
    
    

    Postojeći kôd 2

    ...
        GenJnlLine."Applies-to Occurrence No." := 1;
    
    // Delete the following line.  
    OldVendLedgEntry.SETRANGE("Document Occurrence",GenJnlLine."Applies-to Occurrence No.");
    
      OldVendLedgEntry.SETRANGE(Open,TRUE);
      OldVendLedgEntry.SETRANGE("On Hold",'');
    
     // Delete the following lines.  
      OldVendLedgEntry.FINDFIRST;
      OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); 
      IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN 
        ApplyingDate := OldVendLedgEntry."Posting Date"; 
      GenJnlApply.CheckAgainstApplnCurrency( 
        NewCVLedgEntryBuf."Currency Code",  
        OldVendLedgEntry."Currency Code",  
        GenJnlLine."Account Type"::Vendor, 
        TRUE);  
      TempOldVendLedgEntry := OldVendLedgEntry;
      TempOldVendLedgEntry.INSERT;
     // End of the deleted lines.
    
    END ELSE BEGIN
      // Find the first old entry (Invoice) which the new entry (Payment) should apply to
    ...
    
    

    Kôd zamene 2

    ...
        GenJnlLine."Applies-to Occurrence No." := 1;
    
      OldVendLedgEntry.SETRANGE(Open,TRUE);
      OldVendLedgEntry.SETRANGE("On Hold",'');
    
     // Add the following lines.
      IF OldVendLedgEntry.FINDSET THEN  
        REPEAT  
          OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive);
          IF OldVendLedgEntry."Posting Date" > ApplyingDate THEN  
            ApplyingDate := OldVendLedgEntry."Posting Date"; 
          GenJnlApply.CheckAgainstApplnCurrency(
            NewCVLedgEntryBuf."Currency Code",
            OldVendLedgEntry."Currency Code", 
            GenJnlLine."Account Type"::Vendor,
            TRUE);
          TempOldVendLedgEntry := OldVendLedgEntry;
          TempOldVendLedgEntry.INSERT;
        UNTIL OldVendLedgEntry.NEXT = 0; 
      IF NOT TempOldVendLedgEntry.FINDSET THEN 
        EXIT; 
     // End of the added lines.
    
    END ELSE BEGIN
      // Find the first old entry (Invoice) which the new entry (Payment) should apply to
    ...
    
    

    Postojeći kôd 3

    ...
      TempOldVendLedgEntry.DELETE;
    
      // Find the next old entry to apply to the new entry
    
    // Delete the following line.
      IF GenJnlLine."Applies-to Doc. No." <> '' THEN 
    
        Completed := TRUE
    ...
    
    

    Kôd za zamenu 3

    ...
      TempOldVendLedgEntry.DELETE;
    
      // Find the next old entry to apply to the new entry
    
    // Add the following line.
      IF (GenJnlLine."Applies-to Doc. No." <> '') AND (PaymentTerms."Payment Nos." <= 1)  THEN
    
        Completed := TRUE
    ...
    
    
  7. Dodajte lokalnu promenljivu u okidač OnRun u Sales-Post kodnoj jedinici (80), a zatim navedite promenljivu na sledeći način:

    • Ime: TotalRemainPmtDiscPossible
    • Tip podataka: Decimalni broj
  8. Promenite kôd u okidaču OnRun u Sales-Post kodnoj jedinici (80) na sledeći način:
    Postojeći kôd 1

    ...
        // Balancing account
        IF "Bal. Account No." <> '' THEN BEGIN
          Window.UPDATE(5,1);
          CustLedgEntry.FINDLAST;
          GenJnlLine.INIT;
    ...
    
    

    Kôd za zamenu 1

    ...
        // Balancing account
        IF "Bal. Account No." <> '' THEN BEGIN
          Window.UPDATE(5,1);
    
    // Add the following lines.
          CustLedgEntry.RESET;
          CustLedgEntry.SETCURRENTKEY("Document Type","Document No.");
          CustLedgEntry.SETRANGE("Document Type","Document Type");
          CustLedgEntry.SETRANGE("Document No.",GenJnlLineDocNo);
          CustLedgEntry.CALCSUMS("Remaining Pmt. Disc. Possible"); 
          TotalRemainPmtDiscPossible := CustLedgEntry."Remaining Pmt. Disc. Possible"; 
    // End of the added lines.
    
          CustLedgEntry.FINDLAST;
          GenJnlLine.INIT;
    ...
    
    

    Postojeći kôd 2

    ...
          GenJnlLine."Currency Code" := "Currency Code";
          GenJnlLine.Amount :=
    
    // Delete the following line.
            TotalSalesLine."Amount Including VAT" + CustLedgEntry."Remaining Pmt. Disc. Possible";
    
          GenJnlLine."Source Currency Code" := "Currency Code";
          GenJnlLine."Source Currency Amount" := GenJnlLine.Amount;
    ...
    
    

    Kôd zamene 2

    ...
          GenJnlLine."Currency Code" := "Currency Code";
          GenJnlLine.Amount :=
    
    // Add the following line.
            TotalSalesLine."Amount Including VAT" + TotalRemainPmtDiscPossible;
    
          GenJnlLine."Source Currency Code" := "Currency Code";
          GenJnlLine."Source Currency Amount" := GenJnlLine.Amount;
    ...
    
    
  9. Dodajte lokalnu promenljivu u okidač OnRun u kodu Purch.-Post (90), a zatim navedite promenljivu na sledeći način:

    • Ime: TotalRemainPmtDiscPossible
    • Tip podataka: Decimalni broj
  10. Promenite kôd u OnRun okidaču u thePurch.-Post codeunti (90) na sledeći način:
    Postojeći kôd 1

    ...
        GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);
    
        // Balancing account
        IF "Bal. Account No." <> '' THEN BEGIN
          IF GUIALLOWED THEN
            Window.UPDATE(5,1);
          VendLedgEntry.FINDLAST;
          GenJnlLine.INIT;
          GenJnlLine."Posting Date" := "Posting Date";
    ...
    
    

    Kôd za zamenu 1

    ...
        GenJnlPostLine.RunWithCheck(GenJnlLine,TempJnlLineDim);
    
        // Balancing account
        IF "Bal. Account No." <> '' THEN BEGIN
          IF GUIALLOWED THEN
            Window.UPDATE(5,1);
    
    // Add the following lines.
          VendLedgEntry.RESET;  
          VendLedgEntry.SETCURRENTKEY("Document Type","Document No.");
          VendLedgEntry.SETRANGE("Document Type","Document Type"); 
          VendLedgEntry.SETRANGE("Document No.",GenJnlLineDocNo); 
          VendLedgEntry.CALCSUMS("Remaining Pmt. Disc. Possible"); 
          TotalRemainPmtDiscPossible := VendLedgEntry."Remaining Pmt. Disc. Possible";
    // End of the added lines.
    
          VendLedgEntry.FINDLAST;
          GenJnlLine.INIT;
          GenJnlLine."Posting Date" := "Posting Date";
    
    ...
    
    

    Postojeći kôd 2

    ...
          GenJnlLine."Currency Code" := "Currency Code";
          GenJnlLine.Amount := TotalPurchLine."Amount Including VAT" +
    
    // Delete the following line.
            VendLedgEntry."Remaining Pmt. Disc. Possible"; 
    
          GenJnlLine.Correction := Correction;
          GenJnlLine."Source Currency Code" := "Currency Code";
    ...
    
    

    Kôd zamene 2

    ...
          GenJnlLine."Currency Code" := "Currency Code";
          GenJnlLine.Amount := TotalPurchLine."Amount Including VAT" +
    
    // Add the following line.
            TotalRemainPmtDiscPossible;
    
          GenJnlLine.Correction := Correction;
          GenJnlLine."Source Currency Code" := "Currency Code";
    ...
    
    

Preduslovi

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

  • Italijanska verzija servisnog paketa 1 za Microsoft Dynamics NAV 2009
  • Italijanska verzija programa Microsoft Dynamics NAV 2009
  • Italijanska verzija servisnog paketa Microsoft Dynamics NAV 5.0 sa servisnim paketom 1

              

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

KORPORACIJA MICROSOFT I/ILI NJENI DOBAVLJAČI NE DAJU NIKAKVE IZJAVE NITI GARANCIJE U VEZI SA PODESNOŠĆU, POUZDANOŠĆU ILI TAČNOŠĆU INFORMACIJA KOJE SE NALAZE U DOKUMENTIMA I SRODNOJ GRAFICI OBJAVLJENOJ NA OVOM VEB SAJTU ("MATERIJALI") U BILO KOJE SVRHE.

MATERIJALI MOGU DA SADRŽE TEHNIČKE NETAČNOSTI ILI TIPOGRAFSKE GREŠKE I MOGU SE KORIGOVATI U BILO KOM TRENUTKU BEZ PRETHODNOG OBAVEŠTENJA. U NAJVEĆOJ MERI U KOJOJ TO DOZVOLJAVA PRIMENLJIVI ZAKON, KORPORACIJA MICROSOFT I/ILI NJENI DOBAVLJAČI ODRIČU SE I ISKLJUČUJU SVE IZJAVE, GARANCIJE I USLOVE, BILO IZRIČITE, IMPLICIRANE ILI ZAKONSKE, UKLJUČUJUĆI, ALI NE OGRANIČAVAJUĆI SE NA, IZJAVE, GARANCIJE ILI USLOVE VLASNIŠTVA, NEKRŠENJA PRAVA, ZADOVOLJAVAJUĆEG STANJA ILI KVALITETA, PODESNOSTI ZA PRODAJU I PODESNOSTI ZA ODREĐENU NAMENU, U VEZI SA MATERIJALIMA.