Postavka bremenitve za dobropis ni dodana v dnevnik Intrastat, ko ustvarite dnevnik Intrastat v italijanski različici programa Microsoft Dynamics NAV

Velja za
Dynamics NAV 2009 Dynamics NAV 2009 Service Pack 1 Microsoft Dynamics NAV 5.0 Service Pack 1

Ta članek velja za Microsoft Dynamics NAV za področne nastavitve italijanskega jezika.

Znaki

Predpostavimo, da ustvarite račun, ki uporablja stroške artikla v italijanski različici storitve Microsoft Dynamics NAV, in ga povežete z obstoječo pošiljko za stranko iz Evropske unije (EU). Ko ustvarite dnevnik Intrastat, postavka bremenitve za dobropis ni dodana v dnevnik Intrastat.
Ta težava se pojavi v teh izdelkih:

  • Italijanska različica servisnega paketa SP1 za Microsoft Dynamics NAV 2009
  • Italijanska različica programa Microsoft Dynamics NAV 2009
  • Italijanska različica servisnega paketa SP1 za Microsoft Dynamics NAV 5.0

Rešitev

Informacije o sprotnem popravku

Podprt sprotni popravek je zdaj na voljo pri Microsoftu. Vendar pa je namenjen le odpravljanju težave, ki je opisana v tem članku. Uporabite ga samo za sisteme, ki imajo to težavo. Ta sprotni popravek bo morda dodatno preučen. Če vas ta težava ne prizadene, priporočamo, da počakate na naslednji servisni paket za Microsoft Dynamics NAV 2009 ali naslednjo različico storitve Microsoft Dynamics NAV, ki vsebuje ta sprotni popravek.

Opomba V posebnih primerih se lahko stroški, ki običajno nastanejo za klice podpore, prekličejo, če strokovnjak za tehnično podporo za Microsoft Dynamics in sorodne izdelke ugotovi, da bo določena posodobitev odpravila vašo težavo. Običajni stroški podpore bodo veljali za dodatna vprašanja o podpori in težave, ki ne izpolnjujejo pogojev za določeno zadevno posodobitev.

            
          

Informacije o namestitvi

Microsoft ponuja primere programiranja samo za ponazoritev, brez izrecnega ali implicitnega jamstva. To vključuje, vendar ni omejeno na, implicitna jamstva primernosti za prodajo ali primernost za določen namen. V tem članku je predvideno, da ste seznanjeni s programskim jezikom, ki je prikazan, in z orodji, ki se uporabljajo za ustvarjanje in odpravljanje napak v postopkih. Microsoftovi inženirji za podporo vam lahko pomagajo razložiti funkcionalnost določenega postopka, vendar teh primerov ne bodo spremenili, da bi zagotovili dodano funkcionalnost ali ustvarili postopke, ki ustrezajo vašim posebnim zahtevam.

Opomba Preden namestite ta sprotni popravek, preverite, ali so vsi uporabniki odjemalca Microsoft Navision odjavljeni iz sistema. To vključuje uporabnike odjemalcev Microsoft Navision Application Services (NAS). Pri uvedbi tega sprotnega popravka bi morali biti edini uporabnik odjemalca, ki je prijavljen.

Če želite izvesti ta sprotni popravek, morate imeti licenco za razvijalce.

Priporočamo, da se uporabniškemu računu v oknu »Prijave v sistem Windows« ali v oknu »Prijave v zbirko podatkov« dodeli 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 spremenili.
  • Dovoljenje za izvajanje za predmet ID sistemskega objekta 5210 in za predmet ID sistemskega objekta 9015.

                
Opomba Ni vam treba imeti pravic do shramb podatkov, razen če morate opraviti popravilo podatkov.

Spremembe kode

Opomba Popravke kode vedno preskusite v nadzorovanem okolju, preden jih uporabite v proizvodnih računalnikih.
Če želite odpraviti to težavo, spremenite kodo v poročilu Pridobite vnose v knjigo postavk (594). To naredite tako:

  1. Spremenite kodo v sprožilcu Vnos v knjigo postavk - OnPreDataItem na naslednji način:
    Obstoječa koda

    ...
    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");
    ...
    
    

    Nadomestna koda

    ...
    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. Izbrišite lokalno spremenljivko, ki ima naslednje lastnosti iz sprožilca Vnos v knjigo elementov - OnAfterGetRecord:

    • Ime:Lokacija
    • DataType:Zapis
    • Podvrsta:Lokacija
  3. Izbrišite lokalno spremenljivko, ki ima naslednje lastnosti iz sprožilca Vnos v knjigo elementov - OnAfterGetRecord:

    • Ime:ItemLedgEntry
    • DataType:Zapis
    • Podvrsta:Vnos v knjigo postavk
  4. Izbrišite lokalno spremenljivko, ki ima naslednje lastnosti iz sprožilca Vnos v knjigo elementov - OnAfterGetRecord:

    • Ime:Vključi
    • Podatkovni tip:logični
  5. Spremenite kodo v sprožilcu Vnos v knjigo postavk - OnAfterGetRecord na naslednji način:
    Obstoječa koda

    ...
    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;
    ...
    
    

    Nadomestna koda

    ...
    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. Kodo v funkciji CheckILE spremenite na naslednji način:
    Obstoječa koda

    ...
    // 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
    ...
    
    

    Nadomestna koda

    ...
    // 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. Ustvarite globalno funkcijo TestILE. To naredite tako:

    1. Dodajte parameter in nato določite parameter, kot sledi:

      • Var: Ne
      • Ime: ILE
      • DataType:Zapis
      • Podvrsta: Vnos v knjigo postavk
    2. Dodajte lokalno spremenljivko in nato določite spremenljivko, kot sledi:

      • Ime:ItemLedgEntry
      • DataType:Zapis
      • Podvrsta:Vnos v knjigo postavk
    3. Dodajte lokalno spremenljivko in nato določite spremenljivko, kot sledi:

      • Ime:Lokacija
      • DataType:Zapis
      • Podvrsta:Lokacija
    4. Dodajte lokalno spremenljivko in nato določite spremenljivko, kot sledi:

      • Ime:Vključi
      • Podatkovni tip:logični
    5. Dodajte kodo, kot sledi:

      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. Ustvarite globalno funkcijo »InsertValueEntryLine«. To naredite tako:

    1. Dodajte lokalno spremenljivko in nato določite spremenljivko, kot sledi:

      • Ime:Lokacija
      • DataType:Zapis
      • Podvrsta:Lokacija
    2. Dodajte kodo, kot sledi:

      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;
      
      

          

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 programa Microsoft Dynamics NAV 2009
  • Italijanska različica servisnega paketa SP1 za Microsoft Dynamics NAV 5.0

Podatki 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«, ustvarjen neposredno v Microsoftovi organizaciji za podporo. Informacije, ki jih vsebuje ta dokument, so na voljo kot odgovor na nastajajoča vprašanja. Zaradi hitrosti dajanja na voljo lahko gradivo vsebuje tipografske napake in jih je mogoče kadar koli brez predhodnega obvestila revidirati. Za druge pomisleke glejte Pogoje uporabe .