Cet article s’applique à Microsoft Dynamics NAV pour les paramètres régionaux italiens (it).
Symptômes
Supposons que vous ayez une facture créée pour un fournisseur de l’Union européenne (UE) dans la version italienne de Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1). Lorsque vous publiez une note de crédit de type Frais (Élément) pour la facture au cours d’une période différente, la ligne de note de crédit n’est pas incluse dans le journal intrastat.
Résolution
Informations sur le correctif logiciel
Un correctif logiciel pris en charge est désormais disponible auprès de Microsoft. Toutefois, il est uniquement destiné à corriger le problème décrit dans cet article. Appliquez-la uniquement aux systèmes qui rencontrent ce problème spécifique. Ce correctif logiciel peut recevoir des tests supplémentaires. Par conséquent, si vous n’êtes pas gravement affecté par ce problème, nous vous recommandons d’attendre le prochain Service Pack Microsoft Dynamics NAV ou la prochaine version de Microsoft Dynamics NAV qui contient ce correctif logiciel.
Remarque Dans des cas particuliers, les frais habituellement engagés pour les appels de support peuvent être annulés si un professionnel du support technique pour Microsoft Dynamics et les produits associés détermine qu’une mise à jour spécifique permettra de résoudre votre problème. Les coûts habituels du support technique s’appliqueront aux autres questions et problèmes non directement liés à la mise à jour en question.
Informations sur l’installation
Microsoft fournit des exemples de programmation à des fins d’illustration uniquement, sans garantie exprimée ou implicite. Cela inclut, sans s’y limiter, les garanties implicites de qualité commerciale ou d’adéquation à un usage particulier. Cet article part du principe que vous êtes familiarisé avec le langage de programmation présenté et avec les outils utilisés pour créer et déboguer des procédures. Les techniciens du Support technique Microsoft peuvent vous expliquer les fonctionnalités d'une procédure particulière, mais ils ne peuvent pas modifier les exemples en vue de vous fournir des fonctionnalités supplémentaires ou de créer des procédures répondant à vos besoins spécifiques.
Remarque Avant d’installer ce correctif logiciel, vérifiez que tous les utilisateurs du client Microsoft Navision sont déconnectés du système. Cela inclut les utilisateurs du client Nas (Microsoft Navision Application Services). Vous devez être le seul utilisateur client connecté lorsque vous implémentez ce correctif logiciel.
Pour implémenter ce correctif logiciel, vous devez disposer d’une licence de développeur.
Nous vous recommandons d’attribuer au compte d’utilisateur dans la fenêtre Connexions Windows ou dans la fenêtre Connexions de base de données l’ID de rôle « SUPER ». Si l’ID de rôle « SUPER » ne peut pas être attribué au compte d’utilisateur, vous devez vérifier que le compte d’utilisateur dispose des autorisations suivantes :
- Autorisation Modifier pour l’objet que vous allez modifier.
- Autorisation Exécuter pour l’objet ID d’objet système 5210 et pour l’objet ID d’objet système 9015.
Remarque Vous n’avez pas besoin de disposer de droits sur les magasins de données, sauf si vous devez effectuer une réparation des données.
Modifications du code
Remarque Toujours tester les correctifs de code dans un environnement contrôlé avant d’appliquer les correctifs à vos ordinateurs de production.
Pour résoudre ce problème, procédez comme suit :
Modifiez le code dans l’élément de données numéro 2 dans le rapport Obtenir les entrées du registre d’éléments (594) comme suit :
Code 1 existant... ELSE SETRANGE("Entry Type","Entry Type"::Sale); IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No."); IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry"); ...Code de remplacement 1
... ELSE SETRANGE("Entry Type","Entry Type"::Sale); // Add the following line. IntrastatJnlLine2.SETRANGE("Journal Batch Name",IntrastatJnlBatch.Name); IntrastatJnlLine2.SETCURRENTKEY("Source Type","Source Entry No."); IntrastatJnlLine2.SETRANGE("Source Type",IntrastatJnlLine2."Source Type"::"Item entry"); ...Code existant 2
... END; OnAfterGetRecord=VAR // Delete the following lines. SalesShipmentLine@1005 : Record 111; ReturnReceiptLine@1004 : Record 6661; PurchRcptLine@1003 : Record 121; ReturnShipmentLine@1002 : Record 6651; ServiceShipmentLine@1001 : Record 5991; ServiceCrMemoLine@1000 : Record 5995; // End of the lines. PurchInvLine@1130000 : Record 123; PurchCrMemoLine@1130001 : Record 125; SalesInvoiceLine@1130002 : Record 113; ...Code de remplacement 2
... END; OnAfterGetRecord=VAR // Add the following line. PurchRcptLine@1003 : Record 121; PurchInvLine@1130000 : Record 123; PurchCrMemoLine@1130001 : Record 125; SalesInvoiceLine@1130002 : Record 113; ...Code existant 3
... SalesCrMemoHeader@1130005 : Record 114; PurchInvHeader@1130006 : Record 122; PurchCrMemoHdr@1130007 : Record 124; // Delete the following line. SalesShipmentHeader@1130008 : Record 110; SalesShipLine@1130019 : Record 111; ReturnRcptHeader@1130011 : Record 6660; DocItemSum@1130013 : Decimal; ...Code de remplacement 3
... SalesCrMemoHeader@1130005 : Record 114; PurchInvHeader@1130006 : Record 122; PurchCrMemoHdr@1130007 : Record 124; SalesShipLine@1130019 : Record 111; ReturnRcptHeader@1130011 : Record 6660; DocItemSum@1130013 : Decimal; ...Code existant 4
... IF IntrastatJnlLine2.FINDFIRST OR (CompanyInfo."Country/Region Code" = "Country/Region Code") THEN CurrReport.SKIP; // Delete the following lines. CASE TRUE OF "Document Type" = "Document Type"::"Sales Shipment": IF SalesShipmentLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(SalesShipmentLine."VAT Bus. Posting Group",SalesShipmentLine."VAT Prod. Posting Group") THEN; ("Document Type" = "Document Type"::"Sales Return Receipt") OR ("Document Type" = "Document Type"::"Sales Credit Memo"): IF ReturnReceiptLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ReturnReceiptLine."VAT Bus. Posting Group",ReturnReceiptLine."VAT Prod. Posting Group") THEN; "Document Type" = "Document Type"::"Purchase Receipt": IF PurchRcptLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(PurchRcptLine."VAT Bus. Posting Group",PurchRcptLine."VAT Prod. Posting Group") THEN; ("Document Type" = "Document Type"::"Purchase Return Shipment") OR ("Document Type" = "Document Type"::"Purchase Credit Memo"): IF ReturnShipmentLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ReturnShipmentLine."VAT Bus. Posting Group",ReturnShipmentLine."VAT Prod. Posting Group") THEN; "Document Type" = "Document Type"::"Service Shipment": IF ServiceShipmentLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ServiceShipmentLine."VAT Bus. Posting Group",ServiceShipmentLine."VAT Prod. Posting Group") THEN; "Document Type" = "Document Type"::"Service Credit Memo": IF ServiceCrMemoLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ServiceCrMemoLine."VAT Bus. Posting Group",ServiceCrMemoLine."VAT Prod. Posting Group") THEN; END; IF VATPostingSetup."EU Service" THEN CurrReport.SKIP; IF ("Entry Type" = "Entry Type"::Sale) AND (SalesShipmentHeader.GET("Document No.")) AND (CompanyInfo."Country/Region Code" = SalesShipmentHeader."Bill-to Country/Region Code") THEN CurrReport.SKIP; // End of the lines. TotalInvoicedQty := 0; TotalAmt := 0; ...Code de remplacement 4
... IF IntrastatJnlLine2.FINDFIRST OR (CompanyInfo."Country/Region Code" = "Country/Region Code") THEN CurrReport.SKIP; // Add the following line. TestILE("Item Ledger Entry"); TotalInvoicedQty := 0; TotalAmt := 0; ...Modifiez le code dans l’élément de données numéro 5 dans le rapport Obtenir les entrées du registre d’éléments (594) comme suit :
Code existant... { } } } REQUESTFORM { ...Code de remplacement
... { } } // 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"); IF IntrastatJnlBatch.Type = IntrastatJnlBatch.Type::Purchases THEN SETFILTER("Item Ledger Entry Type",'%1|%2', "Item Ledger Entry Type"::Purchase, "Item Ledger Entry Type"::Transfer) ELSE SETRANGE("Item Ledger Entry Type","Item Ledger Entry Type"::Sale); 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 { ...Modifiez le code dans la documentation dans le rapport Obtenir les entrées du registre d’éléments (594) comme suit :
Code existant... IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type); END; BEGIN END. } RDLDATA ...Code de remplacement
... IntrastatJnlBatch2.SETRANGE(Type,IntrastatJnlBatch.Type); END; // Add the following lines. PROCEDURE TestILE@1130001(ItemLedgEntry@1130000 : Record 32); VAR SalesShipmentHeader@1130001 : Record 110; SalesShipmentLine@1130002 : Record 111; PurchRcptLine@1130003 : Record 121; ReturnReceiptLine@1130004 : Record 6661; ReturnShipmentLine@1130005 : Record 6651; ServiceShipmentLine@1130006 : Record 5991; ServiceCrMemoLine@1130007 : Record 5995; BEGIN WITH ItemLedgEntry DO BEGIN CASE TRUE OF "Document Type" = "Document Type"::"Sales Shipment": IF SalesShipmentLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(SalesShipmentLine."VAT Bus. Posting Group",SalesShipmentLine."VAT Prod. Posting Group") THEN; ("Document Type" = "Document Type"::"Sales Return Receipt") OR ("Document Type" = "Document Type"::"Sales Credit Memo"): IF ReturnReceiptLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ReturnReceiptLine."VAT Bus. Posting Group",ReturnReceiptLine."VAT Prod. Posting Group") THEN; "Document Type" = "Document Type"::"Purchase Receipt": IF PurchRcptLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(PurchRcptLine."VAT Bus. Posting Group",PurchRcptLine."VAT Prod. Posting Group") THEN; ("Document Type" = "Document Type"::"Purchase Return Shipment") OR ("Document Type" = "Document Type"::"Purchase Credit Memo"): IF ReturnShipmentLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ReturnShipmentLine."VAT Bus. Posting Group",ReturnShipmentLine."VAT Prod. Posting Group") THEN; "Document Type" = "Document Type"::"Service Shipment": IF ServiceShipmentLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ServiceShipmentLine."VAT Bus. Posting Group",ServiceShipmentLine."VAT Prod. Posting Group") THEN; "Document Type" = "Document Type"::"Service Credit Memo": IF ServiceCrMemoLine.GET("Document No.","Document Line No.") THEN IF VATPostingSetup.GET(ServiceCrMemoLine."VAT Bus. Posting Group",ServiceCrMemoLine."VAT Prod. Posting Group") THEN; END; IF VATPostingSetup."EU Service" THEN CurrReport.SKIP; IF ("Entry Type" = "Entry Type"::Sale) AND (SalesShipmentHeader.GET("Document No.")) AND (CompanyInfo."Country/Region Code" = SalesShipmentHeader."Bill-to Country/Region Code") THEN CurrReport.SKIP; END; END; PROCEDURE InsertValueEntryLine@1130002(); VAR Location@1130000 : 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. } } ...
Configuration requise
La version italienne de Microsoft Dynamics NAV 5.0 Service Pack 1 doit être installée pour appliquer ce correctif.
Informations sur la suppression
Vous ne pouvez pas supprimer ce correctif logiciel.
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».
Remarque Il s’agit d'un article de « dernière minute » créé directement à partir de l’organisation de support technique Microsoft. Les informations présentées ici sont fournies telles quelles en réponse à des problèmes nouveaux. En raison de la rapidité de leur mise à disposition, les documents peuvent contenir des erreurs typographiques et être modifiés à tout moment sans préavis. Consultez les Conditions d’utilisation pour d’autres considérations.