Ta članek velja za Microsoft Dynamics NAV za italijanščino (IT) jezikovne območne nastavitve.
Znaki
Recimo, da račun za EU (EU) v italijanski različici Microsoft Dynamics NAV vsebuje dve vrstici za isto številko artikla. Ena vrstica je vrstica blaga, druga pa linija s storitvami. V tem primeru, ko v dnevniku Intrastat zaženete funkcijo »Pridobi vnose«, vrstica v paketu Intrastat za blago sešteje dve vrstici na računu.
Poleg tega ne morete določiti načina prevoza za blago ali "modalità di erogazione" za storitve, če so blago in storitve vključeni v isti račun. Do te težave pride, tudi če blago in storitve uporabljajo različne številke elementov ali različne vrste vrstic.
Do te težave pride pri teh izdelkih:
- Italijanska različica servisnega paketa SP1 za Microsoft Dynamics NAV 2009
- Italijanska različica servisnega paketa SP1 za Microsoft Dynamics NAV 5.0
Rešitev
Informacije o sprotnih popravkih
Microsoft zdaj ponuja podprt sprotni popravek. Vendar pa je njegov namen le odpraviti težavo, ki je opisana v tem članku. Uporabite ga samo v sistemih, v katerih se je spopadalo s to določeno težavo. Ta sprotni popravek bo morda dodatno pretestiran. Če ta težava na vas ne vpliva resno, priporočamo, da počakate na naslednji servisni paket za Microsoft Dynamics NAV ali naslednjo različico Microsoft Dynamics NAV, ki vsebuje ta hitri popravek.
Opomba V posebnih primerih so klici za podporo, v katere so običajno vključeni stroški, lahko brezplačni, če strokovnjak za tehnično podporo za Microsoft Dynamics in sorodne izdelke ugotovi, da neka posodobitev lahko odpravi vašo težavo. Običajni stroški podpore veljajo za dodatna vprašanja o podpori in težavah, ki niso povezana z določeno posodobitvijo.
Informacije o namestitvi
Microsoft ponuja primere programiranja samo za ponazoritev, brez izrecnega ali naznačenega jamstva. To vključuje, vendar ni omejeno na, naznačena jamstva glede primernosti za prodajo ali določen namen. V tem članku predvidevamo, da poznate programski jezik, ki je predstavljen, in orodja, ki se uporabljajo za ustvarjanje postopkov in njihovo odpravljanje napak. Microsoftovi inženirji za podporo vam lahko pomagajo razložiti delovanje določenega postopka, vendar teh primerov ne bodo spremenili, da bi zagotovili dodatno funkcionalnost ali ustvarili postopke, ki izpolnjujejo vaše določene zahteve.
Opomba Preden namestite ta hitri popravek, preverite, ali so vsi uporabniki odjemalca Microsoft Navision odjavljeni iz sistema. To vključuje uporabnike odjemalskih storitev Microsoft Navision Application Services (NAS). Ko uvedete ta sprotni popravek, morate biti edini odjemalski uporabnik, ki je prijavljen.
Če želite uvesti ta sprotni popravek, morate imeti licenco za razvijalce.
Priporočamo, da uporabniškemu računu v oknu »Prijave v Windows« ali »Prijave v zbirko podatkov« dodelite ID vloge »SUPER«. Če uporabniškemu računu ni mogoče dodeliti ID-ja vloge »SUPER«, morate preveriti, ali ima uporabniški račun ta dovoljenja:
- Dovoljenje »Spremeni« za predmet, ki ga boste spreminjali.
- Dovoljenje za izvajanje za predmet »Sistemski predmet z ID-jem 5210« in za predmet »Sistemski predmet z ID-jem 9015«.
Opomba: Če morate popraviti podatke, vam ni treba imeti pravic do podatkovnih shramb.
Spremembe kode
Opomba: Popravke kode vedno preskusite v nadzorovanem okolju, preden jih uporabite v produkcijskih računalnikih.
Če želite odpraviti to težavo, spremenite kodo v sprožilcu »Vnos knjige elementov – OnAfterGetRecord« v poročilu »Pridobite vnose glavne knjige elementov« (594), kot je navedeno spodaj:
Obstoječa koda
...
IF ValueEntry.FINDSET(FALSE,FALSE) THEN BEGIN
CASE ValueEntry."Item Ledger Entry Type" OF
ValueEntry."Item Ledger Entry Type" :: Purchase: BEGIN
IF ValueEntry."Invoiced Quantity" > 0 THEN BEGIN
PurchInvLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchInvLine.SETRANGE(Type, PurchInvLine.Type::Item);
PurchInvLine.SETRANGE("No.",ValueEntry."Item No.");
IF PurchInvLine.FIND('-') THEN BEGIN
PurchInvHeader.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty + PurchInvLine.Quantity;
IF PurchInvHeader."Currency Factor" <> 0 THEN
TotalAmt := TotalAmt + (PurchInvLine.Amount / PurchInvHeader."Currency Factor")
ELSE
TotalAmt := TotalAmt + PurchInvLine.Amount;
UNTIL PurchInvLine.NEXT = 0;
END ELSE BEGIN
PurchRcptLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchRcptLine.SETRANGE(Type, PurchRcptLine.Type::Item);
PurchRcptLine.SETRANGE("No.",ValueEntry."Item No.");
IF PurchRcptLine.FIND('-') THEN BEGIN
REPEAT
IF PurchRcptLine.Correction = TRUE THEN
CorrectionFound := TRUE;
DocItemSum += PurchRcptLine."Quantity Invoiced";
UNTIL PurchRcptLine.NEXT = 0;
IF (DocItemSum = 0) AND CorrectionFound THEN CurrReport.SKIP;
END;
END;
END ELSE BEGIN
PurchCrMemoLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchCrMemoLine.SETRANGE(Type, PurchInvLine.Type::Item);
PurchCrMemoLine.SETRANGE("No.",ValueEntry."Item No.");
IF PurchCrMemoLine.FIND('-') THEN BEGIN
PurchCrMemoHdr.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty - PurchCrMemoLine.Quantity;
IF PurchCrMemoHdr."Currency Factor" <> 0 THEN
TotalAmt := TotalAmt - (PurchCrMemoLine.Amount / PurchCrMemoHdr."Currency Factor")
ELSE
TotalAmt := TotalAmt - PurchCrMemoLine.Amount;
UNTIL PurchCrMemoLine.NEXT = 0;
END ELSE BEGIN
PurchRcptLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchRcptLine.SETRANGE(Type, PurchRcptLine.Type::Item);
PurchRcptLine.SETRANGE("No.",ValueEntry."Item No.");
IF PurchRcptLine.FIND('-') THEN BEGIN
REPEAT
IF PurchRcptLine.Correction = TRUE THEN
CorrectionFound := TRUE;
DocItemSum += PurchRcptLine."Quantity Invoiced";
UNTIL PurchRcptLine.NEXT = 0;
IF (DocItemSum = 0) AND CorrectionFound THEN CurrReport.SKIP;
END;
END;
END;
END;
ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesInvoiceLine.SETRANGE(Type, SalesInvoiceLine.Type::Item);
SalesInvoiceLine.SETRANGE("No.",ValueEntry."Item No.");
IF SalesInvoiceLine.FIND('-') THEN BEGIN
SalesInvoiceHeader.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty - SalesInvoiceLine.Quantity;
IF SalesInvoiceHeader."Currency Factor" <> 0 THEN
TotalAmt := TotalAmt - (SalesInvoiceLine.Amount / SalesInvoiceHeader."Currency Factor")
ELSE
TotalAmt := TotalAmt - (SalesInvoiceLine.Amount);
UNTIL SalesInvoiceLine.NEXT = 0;
END ELSE BEGIN
SalesShipLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesShipLine.SETRANGE(Type, SalesShipLine.Type::Item);
SalesShipLine.SETRANGE("No.",ValueEntry."Item No.");
IF SalesShipLine.FIND('-') THEN BEGIN
REPEAT
IF SalesShipLine.Correction = TRUE THEN
CorrectionFound := TRUE;
DocItemSum += SalesShipLine."Quantity Invoiced";
UNTIL SalesShipLine.NEXT = 0;
IF (DocItemSum = 0) AND CorrectionFound THEN CurrReport.SKIP;
END;
END;
END ELSE BEGIN
SalesCrMemoLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesCrMemoLine.SETRANGE(Type,SalesCrMemoLine.Type::Item);
SalesCrMemoLine.SETRANGE("No.",ValueEntry."Item No.");
IF SalesCrMemoLine.FIND('-') THEN BEGIN
SalesCrMemoHeader.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty + SalesCrMemoLine.Quantity;
IF SalesCrMemoHeader."Currency Factor" <>0 THEN
TotalAmt := TotalAmt + (SalesCrMemoLine.Amount / SalesCrMemoHeader."Currency Factor")
ELSE
TotalAmt := TotalAmt + SalesCrMemoLine.Amount;
UNTIL SalesCrMemoLine.NEXT = 0;
END ELSE BEGIN
SalesShipLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesShipLine.SETRANGE(Type, SalesShipLine.Type::Item);
SalesShipLine.SETRANGE("No.",ValueEntry."Item No.");
IF SalesShipLine.FIND('-') THEN BEGIN
...
Nadomestna koda
...
IF ValueEntry.FINDSET(FALSE,FALSE) THEN BEGIN
CASE ValueEntry."Item Ledger Entry Type" OF
ValueEntry."Item Ledger Entry Type" :: Purchase: BEGIN
IF ValueEntry."Invoiced Quantity" > 0 THEN BEGIN
PurchInvLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchInvLine.SETRANGE(Type, PurchInvLine.Type::Item);
PurchInvLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
PurchInvLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF PurchInvLine.FIND('-') THEN BEGIN
PurchInvHeader.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty + PurchInvLine.Quantity;
IF PurchInvHeader."Currency Factor" <> 0 THEN
TotalAmt := TotalAmt + (PurchInvLine.Amount / PurchInvHeader."Currency Factor")
ELSE
TotalAmt := TotalAmt + PurchInvLine.Amount;
UNTIL PurchInvLine.NEXT = 0;
END ELSE BEGIN
PurchRcptLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchRcptLine.SETRANGE(Type, PurchRcptLine.Type::Item);
PurchRcptLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
PurchRcptLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF PurchRcptLine.FIND('-') THEN BEGIN
REPEAT
IF PurchRcptLine.Correction = TRUE THEN
CorrectionFound := TRUE;
DocItemSum += PurchRcptLine."Quantity Invoiced";
UNTIL PurchRcptLine.NEXT = 0;
IF (DocItemSum = 0) AND CorrectionFound THEN CurrReport.SKIP;
END;
END;
END ELSE BEGIN
PurchCrMemoLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchCrMemoLine.SETRANGE(Type, PurchInvLine.Type::Item);
PurchCrMemoLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
PurchCrMemoLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF PurchCrMemoLine.FIND('-') THEN BEGIN
PurchCrMemoHdr.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty - PurchCrMemoLine.Quantity;
IF PurchCrMemoHdr."Currency Factor" <> 0 THEN
TotalAmt := TotalAmt - (PurchCrMemoLine.Amount / PurchCrMemoHdr."Currency Factor")
ELSE
TotalAmt := TotalAmt - PurchCrMemoLine.Amount;
UNTIL PurchCrMemoLine.NEXT = 0;
END ELSE BEGIN
PurchRcptLine.SETRANGE("Document No.",ValueEntry."Document No.");
PurchRcptLine.SETRANGE(Type, PurchRcptLine.Type::Item);
PurchRcptLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
PurchRcptLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF PurchRcptLine.FIND('-') THEN BEGIN
REPEAT
IF PurchRcptLine.Correction = TRUE THEN
CorrectionFound := TRUE;
DocItemSum += PurchRcptLine."Quantity Invoiced";
UNTIL PurchRcptLine.NEXT = 0;
IF (DocItemSum = 0) AND CorrectionFound THEN CurrReport.SKIP;
END;
END;
END;
END;
ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesInvoiceLine.SETRANGE(Type, SalesInvoiceLine.Type::Item);
SalesInvoiceLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
SalesInvoiceLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF SalesInvoiceLine.FIND('-') THEN BEGIN
SalesInvoiceHeader.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty - SalesInvoiceLine.Quantity;
IF SalesInvoiceHeader."Currency Factor" <> 0 THEN
TotalAmt := TotalAmt - (SalesInvoiceLine.Amount / SalesInvoiceHeader."Currency Factor")
ELSE
TotalAmt := TotalAmt - (SalesInvoiceLine.Amount);
UNTIL SalesInvoiceLine.NEXT = 0;
END ELSE BEGIN
SalesShipLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesShipLine.SETRANGE(Type, SalesShipLine.Type::Item);
SalesShipLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
SalesShipLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF SalesShipLine.FIND('-') THEN BEGIN
REPEAT
IF SalesShipLine.Correction = TRUE THEN
CorrectionFound := TRUE;
DocItemSum += SalesShipLine."Quantity Invoiced";
UNTIL SalesShipLine.NEXT = 0;
IF (DocItemSum = 0) AND CorrectionFound THEN CurrReport.SKIP;
END;
END;
END ELSE BEGIN
SalesCrMemoLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesCrMemoLine.SETRANGE(Type,SalesCrMemoLine.Type::Item);
SalesCrMemoLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
SalesCrMemoLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF SalesCrMemoLine.FIND('-') THEN BEGIN
SalesCrMemoHeader.GET(ValueEntry."Document No.");
REPEAT
TotalInvoicedQty := TotalInvoicedQty + SalesCrMemoLine.Quantity;
IF SalesCrMemoHeader."Currency Factor" <>0 THEN
TotalAmt := TotalAmt + (SalesCrMemoLine.Amount / SalesCrMemoHeader."Currency Factor")
ELSE
TotalAmt := TotalAmt + SalesCrMemoLine.Amount;
UNTIL SalesCrMemoLine.NEXT = 0;
END ELSE BEGIN
SalesShipLine.SETRANGE("Document No.",ValueEntry."Document No.");
SalesShipLine.SETRANGE(Type, SalesShipLine.Type::Item);
SalesShipLine.SETRANGE("No.",ValueEntry."Item No.");
// Add the following line.
SalesShipLine.SETRANGE("Line No.",ValueEntry."Document Line No.");
IF SalesShipLine.FIND('-') THEN BEGIN
...
Pogoji
Če želite uporabiti ta sprotni popravek, morate imeti nameščenega enega od teh izdelkov:
- Italijanska različica servisnega paketa SP1 za Microsoft Dynamics NAV 2009
- Italijanska različica servisnega paketa SP1 za Microsoft Dynamics NAV 5.0
Informacije o odstranitvi
Tega sprotnega popravka ne morete odstraniti.
Stanje
Microsoft je potrdil, da gre za težavo v Microsoftovih izdelkih, ki so navedeni v razdelku »Velja za«.
Opomba: To je članek »FAST PUBLISH«, ki je bil ustvarjen neposredno v organizaciji za Microsoftovo podporo. Informacije v tem dokumentu so na voljo takšne, kot odgovor na nastajajoče težave. Zaradi hitrosti njihove razpoložljivosti lahko gradivo vsebuje tipkarske napake in jih je mogoče kadarkoli pregledati brez obvestila. Za druga priporočila si oglejte Pogoje uporabe .