Profit je netačan u izveštaju "Statistika prodaje" (112), "Prodaja po klijentima/stavkama" (113), "Zalihe – prodaja klijentima" (713) ili obrascu statistike kupaca (151) u sistemu Microsoft Dynamics NAV 2009 servisni paket 1

Primenjuje se na
Dynamics NAV 2009 Service Pack 1

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

Simptomi

Pretpostavimo da generišete prodajnu porudžbinu koja ima trošak naplate stavke u izdanju Microsoft Dynamics NAV 2009 servisni paket 1 (SP1). Kada pokrenete izveštaj "Statistika prodaje" (112), izveštaj "Prodaja po klijentima/stavkama" (113), "Zalihe – izveštaj prodaje kupcima (713) ili obrazac statistike kupaca (151), profit je netačan. Cena troškova stavke nije uključena u ove izveštaje.

Uzrok

Do ovog problema dolazi zato što sistem izračunava iznos troška pomoću stavke koja u ovim izveštajima ima tip "Izvor klijenta".

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 2009 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. Promenite kôd u izveštaju o prodaji kupca/stavke (113) na sledeći način:
    Postojeći kôd 1

        OnPreReport=BEGIN
                      CustFilter := Customer.GETFILTERS;
                      ItemLedgEntryFilter := "Value Entry".GETFILTERS;
                      PeriodText := "Value Entry".GETFILTER("Posting Date");
    
                      IF PrintToExcel THEN
                        MakeExcelInfo;
                    END;
    

    Kôd za zamenu 1

        OnPreReport=BEGIN
                      CustFilter := Customer.GETFILTERS;
                      ItemLedgEntryFilter := "Item Ledger Entry".GETFILTERS;
                      PeriodText := "Item Ledger Entry".GETFILTER("Posting Date");
    
                      IF PrintToExcel THEN
                        MakeExcelInfo;
                    END;
    

    Postojeći kôd 2

                { 10  ;TextBox      ;0    ;0    ;18150;423  ;SourceExpr="Value Entry".TABLECAPTION + ': ' + ItemLedgEntryFilter;
                                                             DataSetFieldName=Value_Entry__TABLECAPTION__________ItemLedgEntryFilter }
    

    Kôd zamene 2

                { 10  ;TextBox      ;0    ;0    ;18150;423  ;SourceExpr="Item Ledger Entry".TABLECAPTION + ': ' + ItemLedgEntryFilter;
                                                             DataSetFieldName=Value_Entry__TABLECAPTION__________ItemLedgEntryFilter }
    

    Postojeći kôd 3

            DataItemIndent=1;
            DataItemTable=Table5802;
            DataItemTableView=SORTING(Source Type,Source No.,Item No.,Posting Date)
                              WHERE(Source Type=CONST(Customer));
            OnPreDataItem=BEGIN
                            ValueEntryBuffer.RESET;
                            ValueEntryBuffer.DELETEALL;
    
                            NextEntryNo := 1;
                          END;
    
            OnAfterGetRecord=BEGIN
                               ValueEntryBuffer.SETRANGE("Item No.", "Item No.");
    
                               IF NOT ValueEntryBuffer.FIND('-') THEN BEGIN
                                 ValueEntryBuffer.INIT;
                                 ValueEntryBuffer."Entry No." := NextEntryNo;
                                 ValueEntryBuffer."Item No." := "Item No.";
                                 ValueEntryBuffer.INSERT;
    
                                 NextEntryNo := NextEntryNo + 1;
                               END;
    
                               ValueEntryBuffer."Invoiced Quantity" := ValueEntryBuffer."Invoiced Quantity" + "Invoiced Quantity";
                               ValueEntryBuffer."Sales Amount (Actual)" := ValueEntryBuffer."Sales Amount (Actual)" + "Sales Amount (Actual)";
                               ValueEntryBuffer."Cost Amount (Actual)" := ValueEntryBuffer."Cost Amount (Actual)" + "Cost Amount (Actual)";
                               ValueEntryBuffer."Discount Amount" := ValueEntryBuffer."Discount Amount" + "Value Entry"."Discount Amount";
                               ValueEntryBuffer."Cost Amount (Non-Invtbl.)" := ValueEntryBuffer."Cost Amount (Non-Invtbl.)" + "Cost Amount (Non-Invtbl.)";
                               ValueEntryBuffer.MODIFY;
                             END;
    
            ReqFilterFields=Item No.,Inventory Posting Group,Posting Date;
            DataItemLink=Source No.=FIELD(No.),
                         Posting Date=FIELD(Date Filter),
                         Global Dimension 1 Code=FIELD(Global Dimension 1 Filter),
                         Global Dimension 2 Code=FIELD(Global Dimension 2 Filter);
    

    Kôd za zamenu 3

            DataItemIndent=1;
            DataItemTable=Table32;
            DataItemTableView=SORTING(Source Type,Source No.,Item No.,Variant Code,Posting Date)
                              WHERE(Source Type=CONST(Customer));
            OnPreDataItem=BEGIN
                            ValueEntryBuffer.RESET;
                            ValueEntryBuffer.DELETEALL;
    
                            NextEntryNo := 1;
                          END;
    
            OnAfterGetRecord=BEGIN
                               ValueEntryBuffer.SETRANGE("Item No.", "Item No.");
    
                               IF NOT ValueEntryBuffer.FIND('-') THEN BEGIN
                                 ValueEntryBuffer.INIT;
                                 ValueEntryBuffer."Entry No." := NextEntryNo;
                                 ValueEntryBuffer."Item No." := "Item No.";
                                 ValueEntryBuffer.INSERT;
    
                                 NextEntryNo := NextEntryNo + 1;
                               END;
                               CALCFIELDS("Sales Amount (Actual)","Cost Amount (Actual)","Cost Amount (Non-Invtbl.)");
                               ValueEntryBuffer."Invoiced Quantity" := ValueEntryBuffer."Invoiced Quantity" + "Invoiced Quantity";
                               ValueEntryBuffer."Sales Amount (Actual)" := ValueEntryBuffer."Sales Amount (Actual)" + "Sales Amount (Actual)";
                               ValueEntryBuffer."Cost Amount (Actual)" := ValueEntryBuffer."Cost Amount (Actual)" + "Cost Amount (Actual)";
    
                               ValueEntry.SETCURRENTKEY("Item Ledger Entry No.");
                               ValueEntry.SETRANGE("Item Ledger Entry No.","Entry No.");
                               IF ValueEntry.FINDSET THEN
                                 REPEAT
                                   ValueEntryBuffer."Discount Amount" := ValueEntryBuffer."Discount Amount" + ValueEntry."Discount Amount";
                                 UNTIL ValueEntry.NEXT = 0;
    
                               ValueEntryBuffer."Cost Amount (Non-Invtbl.)" := ValueEntryBuffer."Cost Amount (Non-Invtbl.)" + "Cost Amount (Non-Invtbl.)";
                               ValueEntryBuffer.MODIFY;
                             END;
    
            ReqFilterFields=Item No.,Posting Date;
            DataItemLink=Source No.=FIELD(No.),
                         Posting Date=FIELD(Date Filter),
                         Global Dimension 1 Code=FIELD(Global Dimension 1 Filter),
                         Global Dimension 2 Code=FIELD(Global Dimension 2 Filter);
    
  2. Promenite kôd u funkciji MakeExcelInfo@5 u izveštaju o prodaji kupca/stavke (113) na sledeći način:
    Postojeći kôd

        BEGIN
          ExcelBuf.AddInfoColumn("Value Entry".GETFILTERS,FALSE,'',FALSE,FALSE,FALSE,'');
    

    Kôd za zamenu

        BEGIN
          ExcelBuf.AddInfoColumn("Item Ledger Entry".GETFILTERS,FALSE,'',FALSE,FALSE,FALSE,''); 
    
  3. Dodajte novu lokalnu promenljivu u funkciju Post u izveštaju "Zalihe – prodaja kupcima" (713), a zatim navedite promenljivu na sledeći način:

    • Ime: ItemLedgerEntry@1001
    • Tip podataka: Zapis
    • Dužina: 32
  4. Promenite kôd u okidaču "Unos vrednosti – OnAfterGetRecord" u izveštaju "Zalihe – prodaja klijentima" (713) na sledeći način:
    Postojeći kôd

    IF "Expected Cost" THEN
    CurrReport.SKIP;
    
    Profit := "Sales Amount (Actual)" + "Cost Amount (Actual)" + "Cost Amount (Non-Invtbl.)";
    
    IF ISSERVICETIER THEN
    IF "Source No." <> '' THEN
    

    Kôd za zamenu

    IF "Expected Cost" THEN
      CurrReport.SKIP;
    
    //Add the following lines.
    WITH ItemLedgerEntry DO BEGIN
    SETRANGE("Entry No.","Item Ledger Entry No.");
    IF FINDFIRST THEN BEGIN
     CALCFIELDS("Sales Amount (Actual)","Cost Amount (Actual)","Cost Amount (Non-Invtbl.)");
    Profit := "Sales Amount (Actual)" + "Cost Amount (Actual)" + "Cost Amount (Non-Invtbl.)";
    END;
    END;
    //End of the lines.
    
    IF ISSERVICETIER THEN
     IF "Source No." <> '' THEN
    
  5. Promenite kôd u funkciji NonInvtblCostAmt u kodnoj jedinici za upravljanje izračunavanjem troškova (5836) na sledeći način:
    Postojeći kôd

            END;
          END;
    
          //Delete the following lines.
          PROCEDURE NonInvtblCostAmt@29(VAR Customer@1001 : Record 18) : Decimal;
          VAR
            ValueEntry@1000 : Record 5802;
          BEGIN
            WITH ValueEntry DO BEGIN
          //End of the lines.
    
              SETCURRENTKEY("Source Type","Source No.");
              SETRANGE("Source Type","Source Type"::Customer);
              SETRANGE("Source No.",Customer."No.");
    

    Kôd za zamenu

            END;
          END;
    
          //Add the following lines.
          PROCEDURE NonInvtblCostAmt@29(VAR Customer@1001 : Record 18) CostAmtNonInvtbl : Decimal;
          VAR
            ItemLedgerEntry@1000 : Record 32;
          BEGIN
            WITH ItemLedgerEntry DO BEGIN
          //End of the lines.
    
              SETCURRENTKEY("Source Type","Source No.");
              SETRANGE("Source Type","Source Type"::Customer);
              SETRANGE("Source No.",Customer."No.");
    
  6. Promenite kôd u funkciji NonInvtblCostAmt u kodnoj jedinici za upravljanje izračunavanjem troškova (5836) na sledeći način:
    Postojeći kôd

              SETFILTER("Global Dimension 1 Code",Customer."Global Dimension 1 Filter");
              SETFILTER("Global Dimension 2 Code",Customer."Global Dimension 2 Filter");
    
              //Delete the following lines.
              CALCSUMS("Cost Amount (Non-Invtbl.)");
              EXIT("Cost Amount (Non-Invtbl.)");
              //End of the lines.
    
            END;
          END;
    

    Kôd za zamenu

              SETFILTER("Global Dimension 1 Code",Customer."Global Dimension 1 Filter");
              SETFILTER("Global Dimension 2 Code",Customer."Global Dimension 2 Filter");
    
              //Add the following lines.
              IF FINDSET THEN
                REPEAT
                  CALCFIELDS("Cost Amount (Non-Invtbl.)");
                  CostAmtNonInvtbl += "Cost Amount (Non-Invtbl.)";
                UNTIL NEXT = 0;
              EXIT(CostAmtNonInvtbl);
              //End of the lines.
    
            END;
          END;
    

Preduslovi

Morate da imate instaliran Microsoft Dynamics NAV 2009 servisni paket 1 da biste primenili ovu hitnu ispravku.

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.