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 2009 za sve zemlje i lokalne standarde svih jezika.
Simptomi
Kada kreirate fakturu za uslugu za novi ugovor o usluzi u programu Microsoft Dynamics NAV 2009 servisni paket 1, ažuriraju se tip stavke "Prodaja" i tip stavke "Korišćenje" stavke "Glavna knjiga". Međutim, samo je tip stavke "Prodaja" vidljiv u dijalogu " Stavke poslovne knjige ". Tip stavke "Upotreba" nije vidljiv u dijalogu " Stavke glavne knjige usluge ".
Uzrok
Do ovog problema dolazi zato što se kreirana linija upotrebe knjiži na računu glavne knjige (KG). Pored toga, linija nema vrednost u stavci usluge br. (Servisirano) ili u polju " Br. stavke". (Servisirano) kolone. Kada otvorite dijalog " Stavke servisne knjige " sa kartice stavke servisa, podaci se filtriraju po broju stavke servisa. (Servisirano) kolone. Stoga, ako vrednost ne postoji, linija se ne pojavljuje.
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:
Promenite kôd u funkciji ValidateNextInvoicePeriod u tabeli "Zaglavlje ugovora o usluzi" (5965) na sledeći način:
Postojeći kôd 1... END; PROCEDURE ValidateNextInvoicePeriod@9(); VAR InvFrom@1001 : Date; InvTo@1000 : Date; NoOfMonths@1002 : Integer; NoOfDays@1003 : Integer; ...Kôd za zamenu 1
... END; PROCEDURE ValidateNextInvoicePeriod@9(); VAR // Add the following line. ServiceContractLine@1002 : Record 5964; InvFrom@1001 : Date; InvTo@1000 : Date; NoOfMonths@1002 : Integer; NoOfDays@1003 : Integer; ...Postojeći kôd 2
... IF Prepaid THEN BEGIN IF (DATE2DMY(InvFrom,2) = DATE2DMY(InvTo,2)) AND (DATE2DMY(InvFrom,3) = DATE2DMY(InvTo,3)) THEN BEGIN // Delete the following line. "Amount per Period" := ServContractMgt.CalcContractAmount(Rec,InvFrom,InvTo); END ELSE BEGIN "Amount per Period" := 0; ServContractMgt.NoOfMonthsAndDaysInPeriod(InvFrom,InvTo,NoOfMonths,NoOfDays); "Amount per Period" := ...Kôd zamene 2
... IF Prepaid THEN BEGIN IF (DATE2DMY(InvFrom,2) = DATE2DMY(InvTo,2)) AND (DATE2DMY(InvFrom,3) = DATE2DMY(InvTo,3)) THEN BEGIN // Add the following lines. ServiceContractLine.RESET; ServiceContractLine.SETRANGE("Contract Type","Contract Type"); ServiceContractLine.SETRANGE("Contract No.","Contract No."); IF ServiceContractLine.FINDSET THEN REPEAT "Amount per Period" := ServContractMgt.CalcContractAmount(Rec,InvFrom,InvTo, ServiceContractLine."Line No."); UNTIL ServiceContractLine.NEXT=0; // End of the lines. END ELSE BEGIN "Amount per Period" := 0; ServContractMgt.NoOfMonthsAndDaysInPeriod(InvFrom,InvTo,NoOfMonths,NoOfDays); "Amount per Period" := ...Promenite kôd u stavci podataka 1 u izveštaju "Kreiranje ugovornih faktura" (6030) na sledeći način:
Postojeći kôd 1... IF "Amount per Period" > 0 THEN BEGIN IF NOT ServContractMgt.CheckIfServiceExist(ServContractHeader) THEN ResultDescription := Text006; IF ResultDescription = '' THEN BEGIN // Delete the following lines. InvoicedAmount := ROUND( ServContractMgt.CalcContractAmount(ServContractHeader,InvoiceFrom,InvoiceTo), Currency."Amount Rounding Precision"); IF InvoicedAmount = 0 THEN BEGIN CurrReport.SKIP; END; // End of the lines. CASE TRUE OF NOT "Combine Invoices": BEGIN InvoiceNo := ServContractMgt.CreateServHeader(ServContractHeader,PostingDate,ContractExist); ...Kôd za zamenu 1
... IF "Amount per Period" > 0 THEN BEGIN IF NOT ServContractMgt.CheckIfServiceExist(ServContractHeader) THEN ResultDescription := Text006; IF ResultDescription = '' THEN BEGIN CASE TRUE OF NOT "Combine Invoices": BEGIN InvoiceNo := ServContractMgt.CreateServHeader(ServContractHeader,PostingDate,ContractExist); ...Postojeći kôd 2
... NoOfInvoices := NoOfInvoices + 1; END; END; ResultDescription := InvoiceNo; // Delete the following line. ServContractMgt.CreateAllServLines(InvoiceNo,ServContractHeader,InvoicedAmount); END; LastCustomer := "Bill-to Customer No."; LastContractCombined := "Combine Invoices"; END ELSE ...Kôd zamene 2
... NoOfInvoices := NoOfInvoices + 1; END; END; ResultDescription := InvoiceNo; // Add the following lines. ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); IF ServContractLine.FINDSET THEN REPEAT InvoicedAmount := ROUND( ServContractMgt.CalcContractAmount(ServContractHeader,InvoiceFrom,InvoiceTo,ServContractLine."Line No."), Currency."Amount Rounding Precision"); IF InvoicedAmount <> 0 THEN ServContractMgt.CreateAllServLines(InvoiceNo,ServContractHeader,InvoicedAmount,ServContractLine."Line No."); UNTIL ServContractLine.NEXT=0; // End of the lines. END; LastCustomer := "Bill-to Customer No."; LastContractCombined := "Combine Invoices"; END ELSE ...Promenite kôd u funkciji CreateInvoice u kodnoj jedinici ServContractManagement (5940) na sledeći način:
Postojeći kôd 1... IF ServContractToInvoice.Prepaid THEN PostingDate := InvoiceFrom ELSE PostingDate := InvoiceTo; // Delete the following line. InvoicedAmount := CalcContractAmount(ServContractToInvoice,InvoiceFrom,InvoiceTo); IF InvoicedAmount = 0 THEN ERROR(Text007); ...Kôd za zamenu 1
... IF ServContractToInvoice.Prepaid THEN PostingDate := InvoiceFrom ELSE PostingDate := InvoiceTo; IF InvoicedAmount = 0 THEN ERROR(Text007); ...Postojeći kôd 2
... IF InvNo = '' THEN InvNo := CreateServHeader(ServContractToInvoice,PostingDate,FALSE); // Delete the following lines. IF InvoicingStartingPeriod THEN BEGIN GetNextInvoicePeriod(ServContractToInvoice,InvoiceFrom,InvoiceTo); PostingDate := InvoiceFrom; InvoicedAmount := CalcContractAmount(ServContractToInvoice,InvoiceFrom,InvoiceTo); END; // End of the lines. IF NOT CheckIfServiceExist(ServContractToInvoice) THEN ERROR( Text010, ServContractToInvoice."Contract No.", ...Kôd zamene 2
... IF InvNo = '' THEN InvNo := CreateServHeader(ServContractToInvoice,PostingDate,FALSE); IF NOT CheckIfServiceExist(ServContractToInvoice) THEN ERROR( Text010, ServContractToInvoice."Contract No.", ...Postojeći kôd 3
... Text010, ServContractToInvoice."Contract No.", ServContractToInvoice.FIELDCAPTION("Invoice after Service")); // Delete the following lines. CreateAllServLines(InvNo,ServContractToInvoice,InvoicedAmount); END; PROCEDURE CreateServiceLedgerEntry@4(ServHeader2@1001 : Record 5900;ContractType@1020 : Integer;ContractNo@1002 : Code[20];InvFrom@1003 : Date;InvTo@1004 : Date;AmountToInvoice@1005 : Decimal;SigningContract@1023 : Boolean;AddingNewLines@1012 : Boolean;VAR InvAmountRounded@8000 : Decimal) ReturnLedgerEntry@1000 : Integer; // End of the lines. VAR ServContractLine@1022 : Record 5964; ServContractHeader@1021 : Record 5965; Currency@1026 : Record 4; ...Kôd za zamenu 3
... Text010, ServContractToInvoice."Contract No.", ServContractToInvoice.FIELDCAPTION("Invoice after Service")); // Add the following lines. ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractToInvoice."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractToInvoice."Contract No."); IF ServContractLine.FINDSET THEN REPEAT IF InvoicingStartingPeriod THEN BEGIN GetNextInvoicePeriod(ServContractToInvoice,InvoiceFrom,InvoiceTo); PostingDate := InvoiceFrom; InvoicedAmount := CalcContractAmount(ServContractToInvoice,InvoiceFrom,InvoiceTo,ServContractLine."Line No.") END ELSE InvoicedAmount := CalcContractAmount(ServContractToInvoice,InvoiceFrom,InvoiceTo,ServContractLine."Line No."); CreateAllServLines(InvNo,ServContractToInvoice,InvoicedAmount,ServContractLine."Line No."); UNTIL ServContractLine.NEXT=0; END; PROCEDURE CreateServiceLedgerEntry@4(ServHeader2@1001 : Record 5900;ContractType@1020 : Integer;ContractNo@1002 : Code[20];InvFrom@1003 : Date;InvTo@1004 : Date;AmountToInvoice@1005 : Decimal;SigningContract@1023 : Boolean;AddingNewLines@1012 : Boolean;VAR InvAmountRounded@8000 : Decimal;LineNo@1011 : Integer) ReturnLedgerEntry@1000 : Integer; // End of the lines. VAR ServContractLine@1022 : Record 5964; ServContractHeader@1021 : Record 5965; Currency@1026 : Record 4; ...Promenite kôd u funkciji CreateServiceLedgerEntry u kodnoj jedinici ServContractManagement (5940) na sledeći način:
Postojeći kôd 1... InvAmountRounded := 0; ServContractLine.RESET; ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); IF AddingNewLines THEN ServContractLine.SETRANGE("New Line",TRUE) ELSE ServContractLine.SETFILTER("Starting Date",'<=%1',ServContractHeader."Next Invoice Date"); ...Kôd za zamenu 1
... InvAmountRounded := 0; ServContractLine.RESET; ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); // Add the following line. ServContractLine.SETRANGE("Line No.",LineNo); IF AddingNewLines THEN ServContractLine.SETRANGE("New Line",TRUE) ELSE ServContractLine.SETFILTER("Starting Date",'<=%1',ServContractHeader."Next Invoice Date"); ...Postojeći kôd 2
... ServLedgEntry."Posting Date" := ServHeader2."Posting Date"; ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); IF AddingNewLines THEN ServContractLine.SETRANGE("New Line",TRUE) ELSE IF (NOT SigningContract) THEN BEGIN ...Kôd zamene 2
... ServLedgEntry."Posting Date" := ServHeader2."Posting Date"; ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); // Add the following line. ServContractLine.SETRANGE("Line No.",LineNo); IF AddingNewLines THEN ServContractLine.SETRANGE("New Line",TRUE) ELSE IF (NOT SigningContract) THEN BEGIN ...Promenite kôd u funkciji CreateServLine u kodnoj jedinici ServContractManagement (5940) na sledeći način:
Postojeći kôd 1... AdjustServiceInvoiceDimensions(ServContract2,ServInvNo); END; // Delete the following line. PROCEDURE CreateServLine@9(ServHeader@1000 : Record 5900;ContractType@1010 : Integer;ContractNo@1001 : Code[20];InvFrom@1002 : Date;InvTo@1003 : Date;InvoiceAmount@1004 : Decimal;ServiceApplyEntry@1005 : Integer;SignningContract@1011 : Boolean); // End of the line. VAR ServContractHeader@1009 : Record 5965; StdText@1006 : Record 7; Cust@1007 : Record 18; ...Kôd za zamenu 1
... AdjustServiceInvoiceDimensions(ServContract2,ServInvNo); END; // Add the following line. PROCEDURE CreateServLine@9(ServHeader@1000 : Record 5900;ContractType@1010 : Integer;ContractNo@1001 : Code[20];InvFrom@1002 : Date;InvTo@1003 : Date;InvoiceAmount@1004 : Decimal;ServiceApplyEntry@1005 : Integer;SignningContract@1011 : Boolean;LineNo@1013 : Integer); // End of the line. VAR ServContractHeader@1009 : Record 5965; StdText@1006 : Record 7; Cust@1007 : Record 18; ...Postojeći kôd 2
... StdText@1006 : Record 7; Cust@1007 : Record 18; ServDocReg@1008 : Record 5936; ServiceLedgerEntry@1012 : Record 5907; BEGIN ServContractHeader.GET(ContractType,ContractNo); IF ServContractHeader."Invoice Period" = ServContractHeader."Invoice Period"::None THEN ...Kôd zamene 2
... StdText@1006 : Record 7; Cust@1007 : Record 18; ServDocReg@1008 : Record 5936; ServiceLedgerEntry@1012 : Record 5907; // Add the following line. ServContractLine@1014 : Record 5964; BEGIN ServContractHeader.GET(ContractType,ContractNo); IF ServContractHeader."Invoice Period" = ServContractHeader."Invoice Period"::None THEN ...Postojeći kôd 3
... ServLine.RESET; ServLine.INIT; ServLineNo := ServLineNo + 10000; ServLine."Document Type" := ServHeader."Document Type"; ServLine."Document No." := ServHeader."No."; ServLine."Line No." := ServLineNo; ...Kôd za zamenu 3
... ServLine.RESET; ServLine.INIT; // Add the following lines. ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); ServContractLine.SETRANGE("Line No.",LineNo); IF ServContractLine.FINDFIRST THEN ServLine."Service Item No." := ServContractLine."Service Item No."; // End of the lines. ServLineNo := ServLineNo + 10000; ServLine."Document Type" := ServHeader."Document Type"; ServLine."Document No." := ServHeader."No."; ServLine."Line No." := ServLineNo; ...Promenite kôd u funkciji CalcContractAmount u kodnoj jedinici ServContractManagement (5940) na sledeći način:
Postojeći kôd 1... WDate := CALCDATE('<CM>',OldWDate) + 1; UNTIL WDate > Day2; END; // Delete the following line. PROCEDURE CalcContractAmount@19(ServContractHeader@1001 : Record 5965;PeriodStarts@1002 : Date;PeriodEnds@1003 : Date) AmountCalculated@1000 : Decimal; // End of the line. VAR ServContractLine@1004 : Record 5964; Currency@1008 : Record 4; LinePeriodStarts@1005 : Date; ...Kôd za zamenu 1
... WDate := CALCDATE('<CM>',OldWDate) + 1; UNTIL WDate > Day2; END; // Add the following line. PROCEDURE CalcContractAmount@19(ServContractHeader@1001 : Record 5965;PeriodStarts@1002 : Date;PeriodEnds@1003 : Date;LineNo@1011 : Integer) AmountCalculated@1000 : Decimal; // End of the line. VAR ServContractLine@1004 : Record 5964; Currency@1008 : Record 4; LinePeriodStarts@1005 : Date; ...Postojeći kôd 2
... ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); IF ServContractHeader.Prepaid THEN ServContractLine.SETFILTER("Starting Date",'<=%1',ServContractHeader."Next Invoice Date") ELSE IF ServContractHeader."Last Invoice Date" <> 0D THEN ...Kôd zamene 2
... ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); // Add the following line. ServContractLine.SETRANGE("Line No.",LineNo); IF ServContractHeader.Prepaid THEN ServContractLine.SETFILTER("Starting Date",'<=%1',ServContractHeader."Next Invoice Date") ELSE IF ServContractHeader."Last Invoice Date" <> 0D THEN ...Promenite kôd u funkciji CreateRemainingPeriodInvoice u kodnoj jedinici ServContractManagement (5940) na sledeći način:
Postojeći kôd 1... IF (InvFrom = 0D) OR (InvFrom > InvTo) THEN EXIT; IF CONFIRM(Text006,TRUE,InvFrom,InvTo) THEN BEGIN // Delete the following line. Amt := CalcContractAmount(CurrServContract,InvFrom,InvTo); InvoiceNo := CreateServHeader(CurrServContract,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,InvoiceNo); ServMgtSetup.GET; IF NOT CurrServContract.Prepaid THEN ...Kôd za zamenu 1
... IF (InvFrom = 0D) OR (InvFrom > InvTo) THEN EXIT; IF CONFIRM(Text006,TRUE,InvFrom,InvTo) THEN BEGIN InvoiceNo := CreateServHeader(CurrServContract,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,InvoiceNo); ServMgtSetup.GET; IF NOT CurrServContract.Prepaid THEN ...Postojeći kôd 2
... ServHeader, ServContractLine, CurrServContract."Contract Type", CurrServContract."Contract No."); UNTIL ServContractLine.NEXT = 0; END ELSE CreateHeadingServLine( ServHeader, ...Kôd zamene 2
... ServHeader, ServContractLine, CurrServContract."Contract Type", CurrServContract."Contract No."); // Add the following lines. Amt := CalcContractAmount(CurrServContract,InvFrom,InvTo,ServContractLine."Line No."); AppliedEntry := CreateServiceLedgerEntry( ServHeader,CurrServContract."Contract Type", CurrServContract."Contract No.",InvFrom,InvTo,Amt,TRUE,FALSE,InvAmountRounded,ServContractLine."Line No."); CreateServLine( ServHeader,CurrServContract."Contract Type", CurrServContract."Contract No.",InvFrom,InvTo,InvAmountRounded,AppliedEntry,TRUE,ServContractLine."Line No."); // End of the lines. UNTIL ServContractLine.NEXT = 0; END ELSE CreateHeadingServLine( ServHeader, ...Postojeći kôd 3
... ServHeader, CurrServContract."Contract Type", CurrServContract."Contract No."); // Delete the following lines. AppliedEntry := CreateServiceLedgerEntry( ServHeader,CurrServContract."Contract Type", CurrServContract."Contract No.",InvFrom,InvTo,Amt,TRUE,FALSE,InvAmountRounded); CreateServLine( ServHeader,CurrServContract."Contract Type", CurrServContract."Contract No.",InvFrom,InvTo,InvAmountRounded,AppliedEntry,TRUE); // End of the lines. CurrServContract.MODIFY; InvoicingStartingPeriod := TRUE; END; END; ...Kôd za zamenu 3
... ServHeader, CurrServContract."Contract Type", CurrServContract."Contract No."); CurrServContract.MODIFY; InvoicingStartingPeriod := TRUE; END; END; ...Promenite kôd u funkciji CreateAllServLines u jedinici koda ServContractManagement (5940) na sledeći način:
Postojeći kôd 1... ServContractDim,TableID, DocumentType,DocumentNo,LineNo); END; // Delete the following line. PROCEDURE CreateAllServLines@2(InvNo@1001 : Code[20];ServContractToInvoice@1000 : Record 5965;InvoicedAmount@1002 : Decimal); // End of the line. VAR ServContractLine@1007 : Record 5964; ServHeader@1006 : Record 5900; InvoiceFrom@1004 : Date; ...Kôd za zamenu 1
... ServContractDim,TableID, DocumentType,DocumentNo,LineNo); END; // Add the following line. PROCEDURE CreateAllServLines@2(InvNo@1001 : Code[20];ServContractToInvoice@1000 : Record 5965;InvoicedAmount@1002 : Decimal;LineNo@1009 : Integer); // End of the line. VAR ServContractLine@1007 : Record 5964; ServHeader@1006 : Record 5900; InvoiceFrom@1004 : Date; ...Postojeći kôd 2
... IF ServHeader.GET(ServHeader."Document Type"::Invoice,InvNo) THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type","Contract Type"); ServContractLine.SETRANGE("Contract No.","Contract No."); IF NOT "Contract Lines on Invoice" THEN CreateHeadingServLine(ServHeader,"Contract Type","Contract No."); IF ServContractLine.FIND('-') THEN REPEAT ...Kôd zamene 2
... IF ServHeader.GET(ServHeader."Document Type"::Invoice,InvNo) THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type","Contract Type"); ServContractLine.SETRANGE("Contract No.","Contract No."); // Add the following line. ServContractLine.SETRANGE("Line No.",LineNo); IF NOT "Contract Lines on Invoice" THEN CreateHeadingServLine(ServHeader,"Contract Type","Contract No."); IF ServContractLine.FIND('-') THEN REPEAT ...Postojeći kôd 3
... IF (ServContractLine."Contract Expiration Date" = 0D) OR (ServContractLine."Contract Expiration Date" >= InvoiceFrom) THEN CreateDetailedServLine(ServHeader,ServContractLine,"Contract Type","Contract No."); // Delete the following lines. UNTIL ServContractLine.NEXT = 0; END; ServiceApplyEntry := CreateServiceLedgerEntry( ServHeader,"Contract Type","Contract No.",InvoiceFrom,InvoiceTo,InvoicedAmount,FALSE,FALSE,InvAmountRounded); CreateServLine( ServHeader,"Contract Type","Contract No.", InvoiceFrom,InvoiceTo,InvAmountRounded,ServiceApplyEntry,FALSE); // End of the lines. CreateLastServLines(ServHeader,"Contract Type","Contract No."); VALIDATE("Last Invoice Date","Next Invoice Date"); "Print Increase Text" := FALSE; ...Kôd za zamenu 3
... IF (ServContractLine."Contract Expiration Date" = 0D) OR (ServContractLine."Contract Expiration Date" >= InvoiceFrom) THEN CreateDetailedServLine(ServHeader,ServContractLine,"Contract Type","Contract No."); // Add the following lines. ServiceApplyEntry := CreateServiceLedgerEntry( ServHeader,"Contract Type","Contract No.",InvoiceFrom,InvoiceTo,InvoicedAmount,FALSE,FALSE,InvAmountRounded, ServContractLine."Line No."); CreateServLine( ServHeader,"Contract Type","Contract No.", InvoiceFrom,InvoiceTo,InvAmountRounded,ServiceApplyEntry,FALSE, ServContractLine."Line No."); UNTIL ServContractLine.NEXT = 0; END; // End of the lines. CreateLastServLines(ServHeader,"Contract Type","Contract No."); VALIDATE("Last Invoice Date","Next Invoice Date"); "Print Increase Text" := FALSE; ...Promenite kôd u funkciji SignContractQuote u kodnoj jedinici SignServContractDoc (5944) na sledeći način:
Postojeći kôd 1... FromServContractLine@1008 : Record 5964; ToServContractHeader@1007 : Record 5965; FiledServContractHeader2@1009 : Record 5970; ServItem@1006 : Record 5940; InvFrom@1003 : Date; InvTo@1004 : Date; TempDate@1005 : Date; InvAmountRounded@1010 : Decimal; ...Kôd za zamenu 1
... FromServContractLine@1008 : Record 5964; ToServContractHeader@1007 : Record 5965; FiledServContractHeader2@1009 : Record 5970; ServItem@1006 : Record 5940; // Add the following line. ServContractLine@1001 : Record 5964; InvFrom@1003 : Date; InvTo@1004 : Date; TempDate@1005 : Date; InvAmountRounded@1010 : Decimal; ...Postojeći kôd 2
... LastPrepaidPostingDate := 0D; ToServContractHeader.TRANSFERFIELDS(FromServContractHeader); // Delete the following lines. IF InvoiceNow THEN BEGIN PostingDate := InvoiceFrom; AmountNow := ServContractMgt.CalcContractAmount(FromServContractHeader,InvoiceFrom,InvoiceTo); InvoiceAmountDueToSigning := AmountNow; END; // End of the lines. ToServContractHeader."Contract Type" := ToServContractHeader."Contract Type"::Contract; ToServContractHeader.Status := ToServContractHeader.Status::Signed; IF InvoiceNow THEN BEGIN ToServContractHeader."Last Invoice Date" := ToServContractHeader."Starting Date"; ...Kôd zamene 2
... LastPrepaidPostingDate := 0D; ToServContractHeader.TRANSFERFIELDS(FromServContractHeader); ToServContractHeader."Contract Type" := ToServContractHeader."Contract Type"::Contract; ToServContractHeader.Status := ToServContractHeader.Status::Signed; IF InvoiceNow THEN BEGIN ToServContractHeader."Last Invoice Date" := ToServContractHeader."Starting Date"; ...Postojeći kôd 3
... ServContractMgt.CreateServHeader(ToServContractHeader,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); ServMgtSetup.GET; // Delete the following lines. AppliedEntry := ServContractMgt.CreateServiceLedgerEntry( ServHeader,ToServContractHeader."Contract Type", ToServContractHeader."Contract No.",InvoiceFrom, InvoiceTo,AmountNow,TRUE,FALSE,InvAmountRounded); // End of the lines. IF ToServContractHeader."Contract Lines on Invoice" THEN BEGIN ToServContractLine.RESET; ToServContractLine.SETRANGE("Contract Type",ToServContractHeader."Contract Type"); ToServContractLine.SETRANGE("Contract No.",ToServContractHeader."Contract No."); ...Kôd za zamenu 3
... ServContractMgt.CreateServHeader(ToServContractHeader,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); ServMgtSetup.GET; IF ToServContractHeader."Contract Lines on Invoice" THEN BEGIN ToServContractLine.RESET; ToServContractLine.SETRANGE("Contract Type",ToServContractHeader."Contract Type"); ToServContractLine.SETRANGE("Contract No.",ToServContractHeader."Contract No."); ...Postojeći kôd 4
... ServHeader, ToServContractHeader."Contract Type", ToServContractHeader."Contract No."); // Delete the following lines. ServContractMgt.CreateServLine( ServHeader, ToServContractHeader."Contract Type", ToServContractHeader."Contract No.", InvoiceFrom,InvoiceTo,InvAmountRounded,AppliedEntry,TRUE); // End of the lines. ToServContractHeader.MODIFY; ServContractMgt.FinishCodeunit; END; ...Kôd zamene 4
... ServHeader, ToServContractHeader."Contract Type", ToServContractHeader."Contract No."); // Add the following lines. ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",FromServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",FromServContractHeader."Contract No."); IF ServContractLine.FINDSET THEN REPEAT IF InvoiceNow THEN BEGIN PostingDate := InvoiceFrom; AmountNow := ServContractMgt.CalcContractAmount(FromServContractHeader,InvoiceFrom,InvoiceTo,ServContractLine."Line No."); InvoiceAmountDueToSigning := AmountNow; END; AppliedEntry := ServContractMgt.CreateServiceLedgerEntry( ServHeader,ToServContractHeader."Contract Type", ToServContractHeader."Contract No.",InvoiceFrom, InvoiceTo,AmountNow,TRUE,FALSE,InvAmountRounded,ServContractLine."Line No."); ServContractMgt.CreateServLine( ServHeader, ToServContractHeader."Contract Type", ToServContractHeader."Contract No.", InvoiceFrom,InvoiceTo,InvAmountRounded,AppliedEntry,TRUE,ServContractLine."Line No."); UNTIL ServContractLine.NEXT=0; // End of the lines. ToServContractHeader.MODIFY; ServContractMgt.FinishCodeunit; END; ...Promenite kôd u funkciji SignContract u kodnoj jedinici SignServContractDoc (5944) na sledeći način:
Postojeći kôd 1... END; END; END; // Delete the following lines. IF InvoiceNow THEN BEGIN PostingDate := InvoiceFrom; AmountNow := ServContractMgt.CalcContractAmount(ServContractHeader,InvoiceFrom,InvoiceTo); END; // End of the lines. IF InvoiceNow THEN BEGIN ServContractHeader."Last Invoice Date" := ServContractHeader."Starting Date"; ServContractHeader.VALIDATE("Last Invoice Period End",InvoiceTo); ...Kôd za zamenu 1
... END; END; END; IF InvoiceNow THEN BEGIN ServContractHeader."Last Invoice Date" := ServContractHeader."Starting Date"; ServContractHeader.VALIDATE("Last Invoice Period End",InvoiceTo); ...Postojeći kôd 2
... ServContractMgt.CreateServHeader(ServContractHeader,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); ServMgtSetup.GET; // Delete the following lines. AppliedEntry := ServContractMgt.CreateServiceLedgerEntry( ServHeader,ServContractHeader."Contract Type", ServContractHeader."Contract No.",InvoiceFrom, InvoiceTo,AmountNow,TRUE,FALSE,InvAmountRounded); // End of the lines. IF ServContractHeader."Contract Lines on Invoice" THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ...Kôd zamene 2
... ServContractMgt.CreateServHeader(ServContractHeader,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); ServMgtSetup.GET; IF ServContractHeader."Contract Lines on Invoice" THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ...Postojeći kôd 3
... ServContractMgt.CreateHeadingServLine( ServHeader, ServContractHeader."Contract Type", ServContractHeader."Contract No."); // Delete the following lines. ServContractMgt.CreateServLine( ServHeader, ServContractHeader."Contract Type", ServContractHeader."Contract No.", InvoiceFrom,InvoiceTo,InvAmountRounded,AppliedEntry,TRUE); // End of the lines. ServContractHeader.MODIFY; ServContractMgt.FinishCodeunit; END; ...Kôd za zamenu 3
... ServContractMgt.CreateHeadingServLine( ServHeader, ServContractHeader."Contract Type", ServContractHeader."Contract No."); // Add the following lines. ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",ServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",ServContractHeader."Contract No."); IF ServContractLine.FINDSET THEN REPEAT AmountNow := ServContractMgt.CalcContractAmount(ServContractHeader,InvoiceFrom,InvoiceTo,ServContractLine."Line No."); AppliedEntry := ServContractMgt.CreateServiceLedgerEntry( ServHeader,ServContractHeader."Contract Type", ServContractHeader."Contract No.",InvoiceFrom, InvoiceTo,AmountNow,TRUE,FALSE,InvAmountRounded,ServContractLine."Line No."); ServContractMgt.CreateServLine( ServHeader, ServContractHeader."Contract Type", ServContractHeader."Contract No.", InvoiceFrom,InvoiceTo,InvAmountRounded,AppliedEntry,TRUE,ServContractLine."Line No."); UNTIL ServContractLine.NEXT = 0; // End of the lines. ServContractHeader.MODIFY; ServContractMgt.FinishCodeunit; END; ...Promenite kôd u funkciji AddendumToContract u kodnoj jedinici SignServContractDoc (5944) na sledeći način:
Postojeći kôd 1... ServContractMgt.InitCodeUnit; ServHeaderNo := ServContractMgt.CreateServHeader(FromServContractHeader,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); // Delete the following lines. AppliedEntry := ServContractMgt.CreateServiceLedgerEntry( ServHeader,FromServContractHeader."Contract Type", FromServContractHeader."Contract No.",InvoiceFrom,InvoiceTo,RemainingAmt,TRUE,TRUE,InvAmountRounded); // End of the lines. IF FromServContractHeader."Contract Lines on Invoice" THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",FromServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",FromServContractHeader."Contract No."); ...Kôd za zamenu 1
... ServContractMgt.InitCodeUnit; ServHeaderNo := ServContractMgt.CreateServHeader(FromServContractHeader,PostingDate,FALSE); ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); IF FromServContractHeader."Contract Lines on Invoice" THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",FromServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",FromServContractHeader."Contract No."); ...Postojeći kôd 2
... ServHeader, FromServContractHeader."Contract Type", FromServContractHeader."Contract No."); // Delete the following lines. ServContractMgt.CreateServLine( ServHeader,FromServContractHeader."Contract Type", FromServContractHeader."Contract No.",InvoiceFrom,InvoiceTo,InvAmountRounded,AppliedEntry,TRUE); // End of the lines. ServContractMgt.FinishCodeunit; END; IF InvoicePrepaid AND FromServContractHeader.Prepaid THEN BEGIN ...Kôd zamene 2
... ServHeader, FromServContractHeader."Contract Type", FromServContractHeader."Contract No."); // Add the following lines. ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",FromServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",FromServContractHeader."Contract No."); IF ServContractLine.FIND('-') THEN REPEAT AppliedEntry := ServContractMgt.CreateServiceLedgerEntry( ServHeader,FromServContractHeader."Contract Type", FromServContractHeader."Contract No.",InvoiceFrom,InvoiceTo,RemainingAmt,TRUE,TRUE,InvAmountRounded, ServContractLine."Line No."); ServContractMgt.CreateServLine( ServHeader,FromServContractHeader."Contract Type", FromServContractHeader."Contract No.",InvoiceFrom,InvoiceTo,InvAmountRounded,AppliedEntry,TRUE, ServContractLine."Line No."); UNTIL ServContractLine.NEXT = 0; // End of the lines. ServContractMgt.FinishCodeunit; END; IF InvoicePrepaid AND FromServContractHeader.Prepaid THEN BEGIN ...Postojeći kôd 3
... ServContractLine."Line Amount" / 12 * NoOfMonthsAndMParts,Currency."Amount Rounding Precision"); UNTIL ServContractLine.NEXT = 0; IF RemainingAmt <> 0 THEN BEGIN ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); AppliedEntry := // Delete the following lines. ServContractMgt.CreateServiceLedgerEntry( ServHeader,FromServContractHeader."Contract Type", FromServContractHeader."Contract No.",FirstPrepaidPostingDate, LastPrepaidPostingDate,RemainingAmt,FALSE,TRUE,InvAmountRounded); // End of the lines. IF FromServContractHeader."Contract Lines on Invoice" THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",FromServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",FromServContractHeader."Contract No."); ...Kôd za zamenu 3
... ServContractLine."Line Amount" / 12 * NoOfMonthsAndMParts,Currency."Amount Rounding Precision"); UNTIL ServContractLine.NEXT = 0; IF RemainingAmt <> 0 THEN BEGIN ServHeader.GET(ServHeader."Document Type"::Invoice,ServHeaderNo); IF FromServContractHeader."Contract Lines on Invoice" THEN BEGIN ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",FromServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",FromServContractHeader."Contract No."); ...Postojeći kôd 4
... ServContractMgt.CreateHeadingServLine( ServHeader, FromServContractHeader."Contract Type", FromServContractHeader."Contract No."); // Delete the following lines. ServContractMgt.CreateServLine( ServHeader, FromServContractHeader."Contract Type", FromServContractHeader."Contract No.", FirstPrepaidPostingDate,LastPrepaidPostingDate, InvAmountRounded,AppliedEntry,FALSE); // End of the lines. END; ServContractMgt.FinishCodeunit; END; ...Kôd zamene 4
... ServContractMgt.CreateHeadingServLine( ServHeader, FromServContractHeader."Contract Type", FromServContractHeader."Contract No."); // Add the following lines. ServContractLine.RESET; ServContractLine.SETRANGE("Contract Type",FromServContractHeader."Contract Type"); ServContractLine.SETRANGE("Contract No.",FromServContractHeader."Contract No."); IF ServContractLine.FIND('-') THEN REPEAT AppliedEntry := ServContractMgt.CreateServiceLedgerEntry( ServHeader,FromServContractHeader."Contract Type", FromServContractHeader."Contract No.",InvoiceFrom,InvoiceTo,RemainingAmt,TRUE,TRUE,InvAmountRounded, ServContractLine."Line No."); ServContractMgt.CreateServLine( ServHeader,FromServContractHeader."Contract Type", FromServContractHeader."Contract No.",InvoiceFrom,InvoiceTo,InvAmountRounded,AppliedEntry,TRUE, ServContractLine."Line No."); UNTIL ServContractLine.NEXT = 0; // End of the lines. END; ServContractMgt.FinishCodeunit; END; ...
Preduslovi
Morate da imate instaliran Microsoft Dynamics NAV 2009 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“.
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.