Süsteem loob Intrastat-žurnaalis vale summa, kui konteerite arve, millel on kaubarea jaoks mitu partiinumbrit microsoft Dynamics NAV 2009 Itaalia versioonis

Rakenduskoht
Dynamics NAV 2009

See artikkel kehtib microsoft Dynamics NAV itaalia keele (it) lokaadi kohta.

Sümptomid

Kaaluge järgmist stsenaariumi Microsoft Dynamics NAV 2009 R2 ja Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) itaaliakeelses versioonis:

  • Loote kauba kohta arve ja määrate kauba koguseks 2.
  • Kaubareale saate määrata kaks partiinumbrit dialoogiboksis Kaubajälgimisread .
  • Dialoogiboksis Kaubakulu määrangud saate lisada tasuüksuse rea, mis määratakse igale arveldatud kaubale summa alusel.
  • Arve konteerimine.

Selle stsenaariumi korral loob süsteem Intrastat-žurnaalis vale summa. Intrastat-töölehe summa sisaldab ootamatult ainult ühe arveldatud kauba tasu.

Lahendus

Kiirparanduse teave

Microsoftilt on nüüd saadaval toetatud kiirparandus. Siiski on see mõeldud ainult selles artiklis kirjeldatud probleemi lahendamiseks. Rakendage see ainult süsteemidele, kus esineb see konkreetne probleem. See kiirparandus võib saada täiendavaid katseid. Seega, kui see probleem ei mõjuta teid tõsiselt, soovitame oodata järgmist Microsoft Dynamics NAV 2009 hoolduspaketti või järgmist Microsoft Dynamics NAV versiooni, mis sisaldab seda kiirparandust.

Märkus. Erijuhtudel võidakse tavaliselt tugiteenuse kõnede eest tehtud tasud tühistada, kui Microsoft Dynamicsi ja seotud toodete tehniline tugitöötaja leiab, et konkreetne värskendus lahendab teie probleemi. Tavapärased toetuskulud kehtivad täiendavatele tugiteenustega seotud küsimustele ja probleemidele, mis ei vasta kõnealuse värskenduse tingimustele.

          

Installiteave

Microsoft pakub programmeerimise näiteid ainult illustreerimiseks, ilma et garantii oleks väljendatud või kaudselt. See hõlmab kaubastatavuse või kindlaks otstarbeks sobivuse kaudseid garantiisid, kuid mitte ainult. Selles artiklis eeldatakse, et olete tuttav kuvatava programmeerimiskeelega ja tööriistadega, mida kasutatakse protseduuride loomiseks ja silumiseks. Microsofti tugiteenuste insenerid saavad aidata selgitada konkreetse toimingu funktsionaalsust. Kuid need näited ei muuda neid näiteid, et pakkuda teie vajadustele vastavaid lisafunktsioone või koostada protseduure.

Märkus. Enne selle kiirparanduse installimist veenduge, et kõik Microsoft Navisioni klientrakenduse kasutajad oleksid süsteemist välja logitud. See hõlmab ka Microsoft Navision Application Servicesi (NAS) klientkasutajaid. Peaksite olema ainus klientkasutaja, kes on sisse logitud, kui rakendate selle kiirparanduse.

Selle kiirparanduse rakendamiseks peab teil olema arendaja litsents.

Soovitame, et aknas Windowsi sisselogimised või aknas Andmebaasi sisselogimised olevale kasutajakontole määrataks "SUPER" rolli ID. Kui kasutajakontole ei saa superrolli ID-d määrata, peate kontrollima, kas kasutajakontol on järgmised õigused.

  • Muudetava objekti muutmisõigus.
  • Süsteemiobjekti ID 5210 ja süsteemiobjekti ID 9015 täitmisõigus.

Märkus. Teil pole andmesalvede jaoks õigusi, kui te ei pea tegema andmete parandamist.

Koodi muudatused

Märkus. Enne paranduste rakendamist tööarvutitele testige koodiparandusi alati kontrollitud keskkonnas.
Probleemi lahendamiseks muutke tähist aruandes Kaubaandmiku kannete toomine (594). Selleks tehke järgmist.

  1. Muutke andmeüksuse Number 2 koodi järgmiselt.

    1. Kustutage globaalmuutuja järgmiselt.
      Olemasolev kood

      ...
      SalesShipLine@1130019 : Record 111;
      ReturnRcptHeader@1130011 : Record 6660;
      DocItemSum@1130013 : Decimal;
      CorrectionFound@1130014 : Boolean;
      ItemCharge@1130015 : Record 5800;
      
      // Delete the following line.
      ValueEntry2@1130016 : Record 5802;
      
      IncludeItemCharge@1130017 : Boolean;
      BEGIN
      IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
      IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
      ...
      

      Asenduskood

      ...
      SalesShipLine@1130019 : Record 111;
      ReturnRcptHeader@1130011 : Record 6660;
      DocItemSum@1130013 : Decimal;
      CorrectionFound@1130014 : Boolean;
      ItemCharge@1130015 : Record 5800;
      IncludeItemCharge@1130017 : Boolean;
      BEGIN
      IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
      IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
      ...
      
    2. Muutke koodi järgmiselt.
      Olemasolev kood 1

      ...
      TotalAmt := 0;
      DocItemSum := 0;
      CorrectionFound := FALSE;
      
      ValueEntry.SETRANGE("Item Ledger Entry No.","Item Ledger Entry"."Entry No.");
      
      // Delete the following lines.
       ValueEntry2.COPYFILTERS(ValueEntry);
       ValueEntry2.SETRANGE("Invoiced Quantity",0);
      // End of the deleted lines.
      
      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
      ...
      

      Asenduskood 1

      ...
      TotalAmt := 0;
      DocItemSum := 0;
      CorrectionFound := FALSE;
      
      ValueEntry.SETRANGE("Item Ledger Entry No.","Item Ledger Entry"."Entry No.");
      
      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
      ...
      

      Olemasolev kood 2

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      
      // Delete the following lines.
       ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
       IF ValueEntry2.FINDSET THEN BEGIN
       REPEAT
       IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
       ValueEntry2."Cost Amount (Actual)" :=
       CurrExchRate.ExchangeAmtLCYToFCY(
       ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
       ValueEntry2."Cost Amount (Actual)",AddCurrencyFactor);
       TotalAmt := TotalAmt + ValueEntry2."Cost Amount (Actual)";
       UNTIL ValueEntry2.NEXT = 0;
       END;
      // End of the deleted lines.
      
      END;
      
      ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
      IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
      SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
      ...
      

      Asenduskood 2

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      END;
      
      ValueEntry."Item Ledger Entry Type" :: Sale: BEGIN
      IF ValueEntry."Invoiced Quantity" < 0 THEN BEGIN
      SalesInvoiceLine.SETRANGE("Document No.",ValueEntry."Document No.");
      ...
      

      Olemasolev kood 3

      ...
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      
      // Delete the following lines.
       ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
       IF ValueEntry2.FINDSET THEN BEGIN
       REPEAT
       IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
       ValueEntry2."Sales Amount (Actual)" :=
       CurrExchRate.ExchangeAmtLCYToFCY(
       ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
       ValueEntry2."Sales Amount (Actual)",AddCurrencyFactor);
       TotalAmt := TotalAmt - ValueEntry2."Sales Amount (Actual)";
       UNTIL ValueEntry2.NEXT = 0;
       END;
      // End of the deleted lines.
      
      END;
      ELSE BEGIN
      TotalInvoicedQty := TotalInvoicedQty + ValueEntry."Invoiced Quantity";
      IF NOT IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := TotalAmt + ValueEntry."Cost Amount (Actual)"
      ...
      

      Asenduskood 3

      ...
      END;
      IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      TotalAmt,AddCurrencyFactor);
      END;
      ELSE BEGIN
      TotalInvoicedQty := TotalInvoicedQty + ValueEntry."Invoiced Quantity";
      IF NOT IntrastatJnlBatch."Amounts in Add. Currency" THEN
      TotalAmt := TotalAmt + ValueEntry."Cost Amount (Actual)"
      ...
      

      Olemasolev kood 4

      ...
      CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      ValueEntry."Cost Amount (Actual)",AddCurrencyFactor);
      END;
      END;
      END;
      
      IF ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Transfer THEN
      InsertItemJnlLine()
      ELSE BEGIN
      ...
      

      Asenduskood 4

      ...
      CurrExchRate.ExchangeAmtLCYToFCY(
      ValueEntry."Posting Date",GLSetup."Additional Reporting Currency",
      ValueEntry."Cost Amount (Actual)",AddCurrencyFactor);
      END;
      END;
      
      // Add the following line.
      CalcTotalItemChargeAmt;
      
      END;
      
      IF ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Transfer THEN
      InsertItemJnlLine()
      ELSE BEGIN
      ...
      
  2. Muutke funktsiooni CalcTotalItemChargeAmt koodi järgmiselt.
    Olemasolev kood

    ...
    IntrastatJnlBatch2.SETRANGE("EU Service",TRUE);
    IntrastatJnlBatch2.SETRANGE("Corrective Entry",FALSE);
    IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type);
    END;
    
    BEGIN
    END.
    }
    RDLDATA
    {
    ...
    

    Asenduskood

    ...
    IntrastatJnlBatch2.SETRANGE("EU Service",TRUE);
    IntrastatJnlBatch2.SETRANGE("Corrective Entry",FALSE);
    IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type);
    END;
    
    
    // Add the following lines.
     LOCAL PROCEDURE CalcTotalItemChargeAmt@1130002();
     VAR
     ValueEntry2@1130001 : Record 5802;
     ActualAmount@1130002 : Decimal;
     BEGIN
     ValueEntry2.COPYFILTERS(ValueEntry);
     ValueEntry2.SETRANGE("Invoiced Quantity",0);
     ValueEntry2.SETRANGE("Item Ledger Entry Type",ValueEntry."Item Ledger Entry Type");
     ValueEntry2.SETRANGE("Item Ledger Entry No.");
     ValueEntry2.SETFILTER("Item Charge No.",'<>%1','');
     ValueEntry2.SETRANGE("Document No.",ValueEntry."Document No.");
     IF ValueEntry2.FINDSET THEN BEGIN
     REPEAT
     ActualAmount := GetActualAmount(ValueEntry2);
     IF IntrastatJnlBatch."Amounts in Add. Currency" THEN
     ActualAmount :=
     CurrExchRate.ExchangeAmtLCYToFCY(
     ValueEntry2."Posting Date",GLSetup."Additional Reporting Currency",
     ActualAmount,AddCurrencyFactor);
     TotalAmt := TotalAmt + ActualAmount;
     UNTIL ValueEntry2.NEXT = 0;
     END;
     END;
    
     LOCAL PROCEDURE GetActualAmount@1130001(ValueEntry2@1170000000 : Record 5802) : Decimal;
     BEGIN
     CASE ValueEntry2."Item Ledger Entry Type" OF
     ValueEntry2."Item Ledger Entry Type"::Sale:
     EXIT(- ValueEntry2."Sales Amount (Actual)");
     ValueEntry2."Item Ledger Entry Type"::Purchase:
     EXIT(ValueEntry2."Cost Amount (Actual)");
     END;
     END;
    // End of the added lines.
    
    BEGIN
    END.
    }
    RDLDATA
    {
    ...
    

Eeltingimused

Selle kiirparanduse rakendamiseks peab teil olema installitud üks järgmistest toodetest:

  • Microsoft Dynamics NAV 2009 R2 itaaliakeelne versioon
  • Microsoft Dynamics NAV 2009 Service Pack 1 itaaliakeelne versioon

Eemaldamisteave

Seda kiirparandust ei saa eemaldada.

Olek

Microsoft on kinnitanud, et see on jaotises „Rakenduskoht“ loetletud Microsofti toodete korral esinev probleem.

Märkus. See on otse Microsofti tugiteenuste organisatsioonist loodud FAST PUBLISH-artikkel. Käesolevas artiklis sisalduv teave on esitatud kujul, mis on seotud tekkivate küsimustega. Materjali kättesaadavaks tegemise kiiruse tõttu võivad materjalid sisaldada kirjavigu ja neid võib igal ajal ette teatamata läbi vaadata. Muid kaalutlusi leiate teemast Kasutustingimused .