Farklı bir dönemde Microsoft Dynamics NAV 2009 başvuran faturanın bir AB satıcı için ücretsiz madde iade faturasını deftere naklettiğinizde iade faturası satırının Intrastat günlüğü içinde yer almayan


Bu makale Microsoft Dynamics NAV 2009 için tüm ülkeler ve tüm dil yerel ayarları için geçerlidir.

Belirtiler


Farklı bir dönemde başvuran faturanın Microsoft Dynamics NAV 2009 R2 ve Microsoft Dynamics NAV 2009 Service Pack 1 (SP1) Avrupa Birliği (AB) satıcı için bir ücretsiz madde iade faturasını deftere naklettiğinizde, iade faturası satırının Intrastat günlüğüne dahil edilmez.

Çözüm


Düzeltme bilgileri

Artık Microsoft tarafından desteklenen bir düzeltme sağlanmaktadır. Ancak bunun yalnızca bu makalede anlatılan sorunu düzeltmesi amaçlanmıştır. Yalnızca bu özel sorunla karşılaşmış olan sistemlere uygulayın. Bu düzeltme ek sınama uygulanabilir. Bu nedenle, bu sorundan ciddi bir şekilde etkilenmiyorsanız, Microsoft Dynamics NAV 2009 sonraki hizmet paketini veya, bu düzeltmeyi içeren bir sonraki Microsoft Dynamics NAV sürümü için beklemek öneririz.

Not: Özel durumlarda, destek aramaları teknik destek uzmanı Microsoft Dynamics ve ilgili ürünlere yönelik iptal edilebilir çözeceğini giderleri belirleyen belirli bir güncelleştirmenin sorununuzu. Ek destek sorularına ve söz konusu güncelleştirme için geçerli olmayan sorunlara normal destek ücretleri uygulanır.


Yükleme bilgileri

Microsoft, programlama örneklerini yalnızca gösterim amacıyla zımni veya açık garanti olmadan sağlar. Bu, satılabilirlik veya belirli bir amaca uygunluk açısından zımni garantileri içerir ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini, yordamları oluşturmak ve yordamlardan hata ayıklamak için kullanılan araçları bildiğinizi varsayar. Microsoft destek mühendisleri belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilirler, ancak ilave işlevsellik sağlamak için bu örnekleri değiştirmezler veya belirli gereksinimlerinizi karşılayacak şekilde yordamları yapılandırmazlar.

Not: Bu düzeltmeyi yüklemeden önce tüm Microsoft Navision istemcisi kullanıcılar sistem oturum doğrulayın. Bu, Microsoft Navision uygulama Hizmetleri (NAS) istemci kullanıcıları içerir. Bu düzeltmeyi uyguladığınızda yalnızca istemci kullanıcının oturum açmış olması gerekir.

Bu düzeltmeyi uygulamak için bir geliştirici lisansı olması gerekir.

Kullanıcı hesabının Windows oturumu açma penceresini veya veritabanı oturumu açma penceresi "Süper" rol kimliği atanması öneririz Kullanıcı hesabı "Süper" rol Kimliği atanamaz, kullanıcı hesabı aşağıdaki izinlere sahip olduğunu doğrulamanız gerekir:
  • Nesnenin, değiştirme değişiklik yapma izni.
  • Execute izni Sistem nesne kimliği 5210 nesnenin ve nesne kimliği 9015 sistem nesnesi için.


Not: Veri onarım gerçekleştirmek zorunda sürece veri depoları haklarına sahip olmanız gerekmez.

Kod değişiklikleri

Not: Her zaman, uygulamadan önce test kodu denetimli bir ortamda üretim bilgisayarlarınıza düzeltmeler giderir.
Bu sorunu gidermek için Madde Defter Girişlerini Getir raporu (594) kodu değiştirin. Bunu yapmak için şu adımları izleyin:
  1. Veri madde numarası 2 kodu aşağıdaki gibi değiştirin:
    Varolan kodu 1
    ...SETRANGE("Country/Region Code",'');
    END;

    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    ...

    Değiştirme kodu 1
    ...SETRANGE("Country/Region Code",'');
    END;

    // Add the following line.
    IntrastatJnlLine2.SETRANGE("Journal Batch Name",IntrastatJnlBatch.Name);
    // End of the line.

    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    ...

    Varolan kodu 2
    ...WITH ValueEntry DO BEGIN
    SETCURRENTKEY("Item Ledger Entry No.");

    // Delete the following line.
    SETRANGE("Valuation Date",StartDate,EndDate);
    // End of the line.

    SETRANGE("Entry Type","Entry Type"::"Direct Cost");
    SETFILTER(
    "Item Ledger Entry Type",'%1|%2|%3',
    ...

    Değiştirme kodu 2
    ...WITH ValueEntry DO BEGIN
    SETCURRENTKEY("Item Ledger Entry No.");

    // Add the following line.
    SETRANGE("Posting Date",StartDate,EndDate);
    // End of the line.

    SETRANGE("Entry Type","Entry Type"::"Direct Cost");
    SETFILTER(
    "Item Ledger Entry Type",'%1|%2|%3',
    ...

    Varolan kodu 3
    ...END;
    END;

    // Delete the following lines.
    OnAfterGetRecord=VAR
    Location@1000 : Record 14;
    ItemLedgEntry@1001 : Record 32;
    Include@1002 : Boolean;
    BEGIN
    // End of the lines.

    IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
    CurrReport.SKIP;
    ...

    Değiştirme kodu 3
    ...END;
    END;

    OnAfterGetRecord=BEGIN
    IntrastatJnlLine2.SETRANGE("Source Entry No.","Entry No.");
    IF IntrastatJnlLine2.FINDFIRST THEN
    CurrReport.SKIP;
    ...

    Varolan kodu 4
    ...IF IntrastatJnlLine2.FINDFIRST THEN
    CurrReport.SKIP;

    // Delete the following lines.
    IF "Entry Type" IN ["Entry Type"::Sale,"Entry Type"::Purchase] THEN BEGIN
    ItemLedgEntry.RESET;
    ItemLedgEntry.SETCURRENTKEY("Document No.","Document Type");
    ItemLedgEntry.SETRANGE("Document No.","Document No.");
    ItemLedgEntry.SETRANGE("Item No.","Item No.");
    ItemLedgEntry.SETRANGE(Correction,TRUE);
    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Shipment");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;

    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Return Receipt");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;

    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Receipt");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;

    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Return Shipment");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;
    END;

    CASE TRUE OF
    "Drop Shipment":
    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;
    "Entry Type" = "Entry Type"::Transfer:
    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;
    "Location Code" <> '':
    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;
    // End of the lines.

    TotalInvoicedQty := 0;
    TotalAmt := 0;
    TotalAmtExpected := 0;
    ...

    Değiştirme kodu 4
    ...IF IntrastatJnlLine2.FINDFIRST THEN
    CurrReport.SKIP;

    // Add the following line.
    TestILE("Item Ledger Entry");
    // End of the line.

    TotalInvoicedQty := 0;
    TotalAmt := 0;
    TotalAmtExpected := 0;
    ...

  2. Veri madde numarası 4 kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ...{
    }
    }
    }
    REQUESTFORM
    {
    ...

    Kod değiştirme
    ...{
    }
    }

    // Add the following lines.
    { PROPERTIES
    {
    DataItemTable=Table5802;
    DataItemTableView=SORTING(Entry No.);
    OnPreDataItem=BEGIN
    SETRANGE("Posting Date",StartDate,EndDate);
    SETFILTER("Item Charge No.",'<> %1','');
    "Item Ledger Entry".SETRANGE("Posting Date");

    IntrastatJnlLine2.SETRANGE("Journal Batch Name",IntrastatJnlBatch.Name);
    IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No.");
    IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry");
    END;

    OnAfterGetRecord=BEGIN
    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;
    END;

    }
    SECTIONS
    {
    { PROPERTIES
    {
    SectionType=Body;
    SectionWidth=12000;
    SectionHeight=846;
    }
    CONTROLS
    {
    }
    }
    }
    }
    // End of the lines.

    }
    REQUESTFORM
    {
    ...

  3. TestILE işlevinde kodu aşağıdaki gibi değiştirin:
    Varolan kodu
    ...END;
    END;

    BEGIN
    END.
    }
    ...

    Kod değiştirme
    ...END;
    END;

    // Add the following lines.
    PROCEDURE TestILE@5(ILE@1000 : Record 32);
    VAR
    ItemLedgEntry@1003 : Record 32;
    Location@1002 : Record 14;
    Include@1001 : Boolean;
    BEGIN
    WITH ILE DO BEGIN
    IF "Entry Type" IN ["Entry Type"::Sale,"Entry Type"::Purchase] THEN BEGIN
    ItemLedgEntry.RESET;
    ItemLedgEntry.SETCURRENTKEY("Document No.","Document Type");
    ItemLedgEntry.SETRANGE("Document No.","Document No.");
    ItemLedgEntry.SETRANGE("Item No.","Item No.");
    ItemLedgEntry.SETRANGE(Correction,TRUE);
    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Shipment");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;

    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Sales Return Receipt");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;

    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Receipt");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;

    ItemLedgEntry.SETRANGE("Document Type","Document Type"::"Purchase Return Shipment");
    IF NOT ItemLedgEntry.ISEMPTY THEN
    CurrReport.SKIP;
    END;

    CASE TRUE OF
    "Drop Shipment":
    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;
    "Entry Type" = "Entry Type"::Transfer:
    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;
    "Location Code" <> '':
    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;
    END;
    END;

    PROCEDURE InsertValueEntryLine@6();
    VAR
    Location@1000 : Record 14;
    BEGIN
    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;
    END;
    // End of the lines.

    BEGIN
    END.
    }
    ...

Önkoşullar

Bu düzeltmeyi uygulamak için aşağıdaki ürünlerden birine sahip olmalıdır:
  • Microsoft Dynamics NAV 2009 R2
  • Microsoft Dynamics NAV 2009 Service Pack 1

Kaldırma bilgileri

Bu düzeltmeyi kaldıramazsınız.

Durum


Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Not: Bu, doğrudan Microsoft destek kuruluşu bünyesinde oluşturulan bir "HIZLI YAYIN" makalesidir. Burada yer alan bilgiler, oluşan sorunlara yanıt olarak olduğu gibi sağlanmıştır. Makale hızla kullanıma sunulduğu için materyallerde yazım hataları olabilir ve materyaller bildirilmeksizin herhangi bir zamanda revize edilebilir. Diğer konular için bkz. Kullanım koşulları.