Hyvityslaskun veloituskohdetta ei lisätä Intrastat-päivyriin, kun luot Intrastat-päivyrin Microsoft Dynamics NAV:n italiankielisessä versiossa

Käytetään kohteeseen
Dynamics NAV 2009 Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 5.0 Service Pack 1

Tämä artikkeli koskee Microsoft Dynamics NAV -kieliasetusta italiankielisessä kielialueessa.

Ongelman ilmenemistapa

Oletetaan, että luot laskun, jossa käytetään tuotemaksua Microsoft Dynamics NAV:n italiankielisessä versiossa, ja linkität laskun olemassa olevaan Euroopan unionin (EU) asiakkaan lähetykseen. Kun luot Intrastat-päiväkirjan, hyvityslaskun veloituskohdetta ei lisätä Intrastat-päiväkirjaan.
Tämä ongelma ilmenee seuraavissa tuotteissa:

  • Microsoft Dynamics NAV 2009 Service Pack 1:n italiankielinen versio
  • Microsoft Dynamics NAV 2009:n italiankielinen versio
  • Microsoft Dynamics NAV 5.0 Service Pack 1:n italiankielinen versio

Ratkaisu

Hotfix-tiedot

Tuettu hotfix-korjaus on nyt saatavilla Microsoftilta. Sen tarkoituksena on kuitenkin korjata vain tässä artikkelissa kuvattu ongelma. Käytä sitä vain järjestelmissä, joissa on tämä ongelma. Tämä hotfix-korjaus voi saada lisätestejä. Jos ongelma ei siis vaikuta sinuun vakavasti, suosittelemme odottamaan seuraavaa Microsoft Dynamics NAV 2009 Service Pack -pakettia tai seuraavaa Microsoft Dynamics NAV -versiota, joka sisältää tämän hotfix-korjauksen.

Huomautus Erityistapauksissa tukipuheluista tavallisesti aiheutuvat maksut voidaan peruuttaa, jos Microsoft Dynamicsin ja siihen liittyvien tuotteiden teknisen tuen asiantuntija määrittää, että tietty päivitys ratkaisee ongelmasi. Tavanomaiset tukikustannukset koskevat muita tukikysymyksiä ja -ongelmia, jotka eivät ole oikeutettuja kyseiseen päivitykseen.

            
          

Asennustiedot

Microsoft tarjoaa ohjelmointiesimerkkejä vain havainnollistamista varten ilman ilmaistua tai oletettua takuuta. Tämä sisältää muun muassa oletetut takuut soveltuvuudesta kaupankäynnin kohteeksi tai sopivuudesta tiettyyn tarkoitukseen. Tässä artikkelissa oletetaan, että tunnet ohjelmointikielen, jota esitellään, sekä työkalut, joita käytetään toimintosarjojen luomiseen ja virheenkorjaukseen. Microsoftin tukihenkilöt voivat auttaa selittämään tietyn menettelyn toiminnallisuuden, mutta he eivät muokkaa näitä esimerkkejä niin, että ne tarjoaisivat lisätoimintoja tai laativat menetelmiä erityisvaatimusten täyttämiseksi.

Huomautus Varmista ennen tämän hotfix-korjauksen asentamista, että kaikki Microsoft Navision -asiakasohjelman käyttäjät ovat kirjautuneet ulos järjestelmästä. Tämä koskee myös Microsoft Navision Application Services (NAS) -asiakaskäyttäjiä. Sinun pitäisi olla ainoa asiakaskäyttäjä, joka on kirjautunut sisään, kun otat tämän hotfix-korjauksen käyttöön.

Jotta voit ottaa tämän hotfix-korjauksen käyttöön, sinulla on oltava kehittäjän käyttöoikeus.

Suosittelemme, että käyttäjätilille, joka on Windowsin kirjautumisikkunassa tai Tietokannan kirjautumiset -ikkunassa, määritetään "SUPER"-roolitunnus. Jos käyttäjätilille ei voi määrittää "SUPER"-roolitunnusta, sinun on varmistettava, että käyttäjätilillä on seuraavat käyttöoikeudet:

  • Muutettavan objektin Muokkaa-käyttöoikeus.
  • System Object ID 5210 -objektin ja System Object ID 9015 -objektin Suoritus-oikeus.

                
Huomautus Sinulla ei tarvitse olla oikeuksia tietosäilöihin, ellei sinun tarvitse korjata tietoja.

Koodin muutokset

Huomautus Testaa koodikorjaukset aina valvotussa ympäristössä, ennen kuin otat korjaukset käyttöön tuotantotietokoneissasi.
Voit ratkaista tämän ongelman muuttamalla Koodia Nouda nimiketapahtumat -raportissa (594). Voit tehdä tämän seuraavasti:

  1. Muuta koodia Nimiketapahtuma - OnPreDataItem-käynnistimessä seuraavasti:
    Aiemmin luotu koodi

    ...
    END;
    
    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    
    WITH ValueEntry DO BEGIN
      SETCURRENTKEY("Item Ledger Entry No.");
    
    // Delete the following line.
      SETRANGE("Valuation Date",StartDate,EndDate);
    
      SETRANGE("Entry Type","Entry Type"::"Direct Cost");
    ...
    
    

    Korvaava koodi

    ...
    END;
    
    // Add the following line.
    IntrastatJnlLine2.SETRANGE(IntrastatJnlLine2."Journal Batch Name",IntrastatJnlBatch.Name); 
    
    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    
    WITH ValueEntry DO BEGIN
      SETCURRENTKEY("Item Ledger Entry No.");
    
    // Add the following line.
      SETRANGE("Posting Date",StartDate,EndDate);
    
      SETRANGE("Entry Type","Entry Type"::"Direct Cost");
    ...
    
    
  2. Poista paikallinen muuttuja, jolla on seuraavat ominaisuudet Nimiketapahtuma - OnAfterGetRecord-käynnistimestä:

    • Nimi:Sijainti
    • DataType:Record
    • Alatyyppi:Sijainti
  3. Poista paikallinen muuttuja, jolla on seuraavat ominaisuudet Nimiketapahtuma - OnAfterGetRecord-käynnistimestä:

    • Nimi:ItemLedgEntry
    • DataType:Record
    • Alatyyppi:Nimiketapahtuma
  4. Poista paikallinen muuttuja, jolla on seuraavat ominaisuudet Nimiketapahtuma - OnAfterGetRecord-käynnistimestä:

    • Nimi:Sisällytä
    • DataType:Totuusarvo
  5. Muuta koodia Nimiketapahtuma - OnAfterGetRecord-käynnistimessä seuraavasti:
    Aiemmin luotu koodi

    ...
    IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
    
    // Delete the following lines.
                               IF "Drop Shipment" THEN BEGIN
                                 IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
                                    ("Country/Region Code" = '')
                                 THEN
                                   CurrReport.SKIP;
                                 IF "Applies-to Entry" = 0 THEN BEGIN
                                   ItemLedgEntry.SETCURRENTKEY("Item No.","Posting Date");
                                   ItemLedgEntry.SETRANGE("Item No.","Item No.");
                                   ItemLedgEntry.SETRANGE("Posting Date","Posting Date");
                                   ItemLedgEntry.SETRANGE("Applies-to Entry","Entry No.");
                                   ItemLedgEntry.FINDFIRST;
                                 END ELSE
                                   ItemLedgEntry.GET("Applies-to Entry");
                                 IF (ItemLedgEntry."Country/Region Code" <> CompanyInfo."Country/Region Code") AND
                                    (ItemLedgEntry."Country/Region Code" <> '')
                                 THEN
                                   CurrReport.SKIP;
                               END ELSE IF "Entry Type" = "Entry Type"::Transfer THEN BEGIN
                                 IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
                                    ("Country/Region Code" = '')
                                 THEN
                                   CurrReport.SKIP;
                                 IF "Transfer Order No." = '' THEN BEGIN
                                   Location.GET("Location Code");
                                   IF (Location."Country/Region Code" <> '') AND
                                      (Location."Country/Region Code" <> CompanyInfo."Country/Region Code")
                                   THEN
                                     CurrReport.SKIP;
                                 END ELSE BEGIN
                                   ItemLedgEntry.SETRANGE("Transfer Order No.","Transfer Order No.");
                                   ItemLedgEntry.SETFILTER("Country/Region Code",'%1 | %2','',CompanyInfo."Country/Region Code");
                                   IF ItemLedgEntry.FINDSET THEN
                                     REPEAT
                                       Location.GET(ItemLedgEntry."Location Code");
                                       IF Location."Use As In-Transit" THEN
                                         Include:= TRUE;
                                     UNTIL Include OR (ItemLedgEntry.NEXT = 0);
                                   IF NOT Include THEN
                                     CurrReport.SKIP;
                                 END;
                               END ELSE IF "Location Code" <> '' THEN BEGIN
                                 Location.GET("Location Code");
                                 CheckILE(Location."Country/Region Code");
                               END ELSE BEGIN
                                   IF "Entry Type" = "Entry Type"::Purchase THEN
                                     CheckILE(CompanyInfo."Ship-to Country/Region Code");
                                   IF "Entry Type" = "Entry Type"::Sale THEN
                                     CheckILE(CompanyInfo."Country/Region Code");
                               END;
    // End of the lines.
    
    TotalInvoicedQty := 0;
    ...
    
    

    Korvaava koodi

    ...
    IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
    
    
    TotalInvoicedQty := 0;
    ....
    
    Create a new DataItem as follow:
    DataItem Name
    Value Entry <Value Entry>
    
    Click Propriety and set:
    DataItemTableView = SORTING(Entry No.)
    
    In the Value Entry - OnPreDataItem() add the following code lines:
    
    SETRANGE("Posting Date",StartDate,EndDate);
    SETFILTER("Item Charge No.",'<> %1','');
    "Item Ledger Entry".SETRANGE("Posting Date");
    
    IntrastatJnlLine2.SETRANGE(IntrastatJnlLine2."Journal Batch Name",IntrastatJnlBatch.Name);
    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    
    In the Value Entry - OnAfterGetRecord() trigger add the following code lines:
    
    
    IntrastatJnlLine2.SETRANGE("Source Entry No.","Item Ledger Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
      CurrReport.SKIP;
    
    IF "Item Ledger Entry".GET("Item Ledger Entry No.")
    THEN BEGIN
      IF ("Item Ledger Entry"."Posting Date" > StartDate) AND ("Item Ledger Entry"."Posting Date" < EndDate) THEN
        CurrReport.SKIP;
      IF "Country/Region".GET("Item Ledger Entry"."Country/Region Code") THEN
        IF "Country/Region"."EU Country/Region Code" = '' THEN
          CurrReport.SKIP;
      TestILE("Item Ledger Entry");
    
    InsertValueEntryLine;
    END;
    ...
    
    
  6. Muuta CheckILE-funktion koodia seuraavasti:
    Aiemmin luotu koodi

    ...
    // Delete the following lines.
    IF NOT ((("Item Ledger Entry"."Country/Region Code" = CompanyInfo."Country/Region Code") 
    OR  
                 ("Item Ledger Entry"."Country/Region Code" = '')) XOR   
                 ((CountryRegionCode = CompanyInfo."Country/Region Code") OR 
                 (CountryRegionCode = '')))  
    // End of the lines.
    
    
    THEN
    ...
    
    

    Korvaava koodi

    ...
    // Add the following lines.
    IF ("Item Ledger Entry"."Country/Region Code" IN [CompanyInfo."Country/Region Code",'']) =  
       (CountryRegionCode IN [CompanyInfo."Country/Region Code",''])  
    // End of the lines.
    
    THEN
    ...
    
    
  7. Luo testitilin yleinen funktio. Voit tehdä tämän seuraavasti:

    1. Lisää parametri ja määritä parametri seuraavasti:

      • Var: Ei
      • Nimi: ILE
      • DataType:Record
      • Alatyyppi: Nimiketapahtuma
    2. Lisää paikallinen muuttuja ja määritä muuttuja seuraavasti:

      • Nimi:ItemLedgEntry
      • DataType:Record
      • Alatyyppi:Nimiketapahtuma
    3. Lisää paikallinen muuttuja ja määritä muuttuja seuraavasti:

      • Nimi:Sijainti
      • DataType:Record
      • Alatyyppi:Sijainti
    4. Lisää paikallinen muuttuja ja määritä muuttuja seuraavasti:

      • Nimi:Sisällytä
      • DataType:Totuusarvo
    5. Lisää koodi seuraavasti:

      WITH ILE DO BEGIN
        IF "Drop Shipment" THEN BEGIN
          IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
             ("Country/Region Code" = '')
          THEN
            CurrReport.SKIP;
          IF "Applies-to Entry" = 0 THEN BEGIN
            ItemLedgEntry.SETCURRENTKEY("Item No.","Posting Date");
            ItemLedgEntry.SETRANGE("Item No.","Item No.");
            ItemLedgEntry.SETRANGE("Posting Date","Posting Date");
            ItemLedgEntry.SETRANGE("Applies-to Entry","Entry No.");
            ItemLedgEntry.FINDFIRST;
          END ELSE
            ItemLedgEntry.GET("Applies-to Entry");
          IF (ItemLedgEntry."Country/Region Code" <> CompanyInfo."Country/Region Code") AND
             (ItemLedgEntry."Country/Region Code" <> '')
          THEN
            CurrReport.SKIP;
        END ELSE IF "Entry Type" = "Entry Type"::Transfer THEN BEGIN
          IF ("Country/Region Code" = CompanyInfo."Country/Region Code") OR
             ("Country/Region Code" = '')
          THEN
            CurrReport.SKIP;
          IF "Transfer Order No." = '' THEN BEGIN
            Location.GET("Location Code");
            IF (Location."Country/Region Code" <> '') AND
               (Location."Country/Region Code" <> CompanyInfo."Country/Region Code")
            THEN
              CurrReport.SKIP;
          END ELSE BEGIN
            ItemLedgEntry.SETRANGE("Transfer Order No.","Transfer Order No.");
            ItemLedgEntry.SETFILTER("Country/Region Code",'%1 | %2','',CompanyInfo."Country/Region Code");
            IF ItemLedgEntry.FINDSET THEN
              REPEAT
                Location.GET(ItemLedgEntry."Location Code");
                IF Location."Use As In-Transit" THEN
                  Include:= TRUE;
              UNTIL Include OR (ItemLedgEntry.NEXT = 0);
            IF NOT Include THEN
              CurrReport.SKIP;
          END;
        END ELSE IF "Location Code" <> '' THEN BEGIN
          Location.GET("Location Code");
          CheckILE(Location."Country/Region Code");
        END ELSE BEGIN
          IF "Entry Type" = "Entry Type"::Purchase THEN
            CheckILE(CompanyInfo."Ship-to Country/Region Code");
          IF "Entry Type" = "Entry Type"::Sale THEN
            CheckILE(CompanyInfo."Country/Region Code");
        END;
      END;
      
      
  8. Luo Yleinen InsertValueEntryLine-funktio. Voit tehdä tämän seuraavasti:

    1. Lisää paikallinen muuttuja ja määritä muuttuja seuraavasti:

      • Nimi:Sijainti
      • DataType:Record
      • Alatyyppi:Sijainti
    2. Lisää koodi seuraavasti:

      GetGLSetup;
      WITH IntrastatJnlLine DO BEGIN
        INIT;
        "Line No." := "Line No." + 10000;
        Date := "Value Entry"."Posting Date";
        "Country/Region Code" := "Item Ledger Entry"."Country/Region Code";
        "Transaction Type" := "Item Ledger Entry"."Transaction Type";
        "Transport Method" := "Item Ledger Entry"."Transport Method";
        "Source Entry No." := "Item Ledger Entry"."Entry No.";
        Quantity := "Item Ledger Entry".Quantity;
        "Document No." := "Value Entry"."Document No.";
        "Item No." := "Item Ledger Entry"."Item No.";
        "Entry/Exit Point" := "Item Ledger Entry"."Entry/Exit Point";
        Area := "Item Ledger Entry".Area;
        "Transaction Specification" := "Item Ledger Entry"."Transaction Specification";
        Amount := ROUND(ABS("Value Entry"."Sales Amount (Actual)"),1);
      
        IF Quantity < 0 THEN
          Type := Type::Shipment
        ELSE
          Type := Type::Receipt;
      
        IF ("Country/Region Code" = '') OR
           ("Country/Region Code" = CompanyInfo."Country/Region Code")
        THEN BEGIN
          IF "Item Ledger Entry"."Location Code" = '' THEN
            "Country/Region Code" := CompanyInfo."Ship-to Country/Region Code"
          ELSE BEGIN
            Location.GET("Item Ledger Entry"."Location Code");
            "Country/Region Code" := Location."Country/Region Code"
          END;
        END;
      
        VALIDATE("Item No.");
        "Source Type" := "Source Type"::"Item entry";
        VALIDATE(Quantity,ROUND(ABS(Quantity),0.00001));
        VALIDATE("Cost Regulation %",IndirectCostPctReq);
      
        INSERT;
      END;
      
      

          

Edellytykset

Sinulla on oltava asennettuna jokin seuraavista tuotteista, jotta voit käyttää tätä hotfix-korjausta:

  • Microsoft Dynamics NAV 2009 Service Pack 1:n italiankielinen versio
  • Microsoft Dynamics NAV 2009:n italiankielinen versio
  • Microsoft Dynamics NAV 5.0 Service Pack 1:n italiankielinen versio

Poistotiedot

Et voi poistaa tätä hotfix-korjausta.

Tila

Microsoft on vahvistanut tämän olevan ongelma niissä Microsoftin tuotteissa, jotka ovat listattuna Koskee seuraavia tuotteita -osiossa.

Huomautus Tämä on FAST PUBLISH -artikkeli, joka on luotu suoraan Microsoftin tukiorganisaatiosta. Tässä annetut tiedot annetaan sellaisenaan vastauksena uusiin ongelmiin. Koska materiaalit ovat nopeasti käytettävissä, ne voivat sisältää typografisia virheitä, ja niitä voidaan muuttaa milloin tahansa ilman ennakkoilmoitusta. Lisätietoja on ohjeaiheessa Käyttöehdot .