Intrastatkladdelinjen er forkert, når du bogfører en faktura i den spanske version af Microsoft Dynamics NAV

Gælder for
Dynamics NAV 2009 Microsoft Dynamics NAV 5.0

Artikler, der udgives hurtigt, indeholder oplysninger direkte fra Microsoft-supportorganisationen. De oplysninger, der er indeholdt heri, oprettes som svar på nye eller unikke emner eller er beregnet til at supplere andre oplysninger i Knowledge Base.
 Microsoft Business Solutions-Navision 4.0 og Microsoft Navision 4.0 er nu en del af Microsoft Dynamics NAV 4.0. Alle referencer til Microsoft Business Solutions-Navision eller Microsoft Navision 4.0 er relateret til Microsoft Dynamics NAV.

Denne artikel gælder for Microsoft Dynamics NAV 5.0 for den spanske landestandard (es).

Symptomer

Når du bogfører en faktura med en varelinje og en varegebyrlinje i den spanske version af Microsoft Dynamics NAV, er Intrastat-kladdelinjen forkert. Dette problem opstår, hvis der bruges en fakturarabat og en kontantrabat.

Dette problem opstår i følgende produkter:

  • Den spanske version af Microsoft Dynamics NAV 2009

  • Den spanske version af Microsoft Dynamics NAV 5.0

  • Den spanske version af Microsoft Dynamics NAV 4.0

Årsag

Dette problem opstår, fordi Microsoft Dynamics NAV ikke tager rabatten i varegebyret, der anvendes på varelinjen, i betragtning.

Løsning

Oplysninger om hotfix

Et understøttet hotfix er nu tilgængeligt fra Microsoft. Det er dog kun beregnet til at løse det problem, der er beskrevet i denne artikel. Anvend den kun på systemer, der oplever dette specifikke problem. Dette hotfix kan blive testet yderligere. Hvis du ikke er alvorligt berørt af dette problem, anbefaler vi derfor, at du venter på den næste Microsoft Dynamics NAV-servicepakke eller den næste Microsoft Dynamics NAV-version, der indeholder dette hotfix.

Bemærk! I særlige tilfælde kan gebyrer, der normalt påløber for supportopkald, blive annulleret, hvis en teknisk supportmedarbejder til Microsoft Dynamics og relaterede produkter afgør, at en bestemt opdatering løser dit problem. De sædvanlige supportomkostninger gælder for yderligere supportspørgsmål og -problemer, der ikke er kvalificeret til den pågældende opdatering.

            
          

Installationsoplysninger

Microsoft leverer kun programmeringseksempler til illustration uden garanti, hverken udtrykt eller underforstået. Dette omfatter, men er ikke begrænset til, underforståede garantier for salgbarhed eller egnethed til et bestemt formål. I denne artikel antages det, at du kender det programmeringssprog, der demonstreres, og med de værktøjer, der bruges til at oprette og foretage fejlfinding af procedurer. Microsofts supportteknikere kan hjælpe med at forklare funktionaliteten af en bestemt procedure, men de vil ikke ændre disse eksempler for at give ekstra funktionalitet eller konstruere procedurer, der opfylder dine specifikke krav.

Bemærk! Før du installerer dette hotfix, skal du kontrollere, at alle microsoft Navision-klientbrugere er logget af systemet. Dette omfatter klientbrugere af Microsoft Navision Application Services (NAS). Du bør være den eneste klientbruger, der er logget på, når du implementerer dette hotfix.

Hvis du vil implementere dette hotfix, skal du have en udviklerlicens.

Vi anbefaler, at brugerkontoen i vinduet Windows-logon eller i vinduet Databaselogon tildeles rolle-id'et "SUPER". Hvis brugerkontoen ikke kan tildeles rolle-id'et "SUPER", skal du kontrollere, at brugerkontoen har følgende tilladelser:

  • Tilladelsen Rediger for det objekt, du vil ændre.
  • Tilladelsen Execute for System Object ID 5210-objektet og for System Object ID 9015-objektet.

                
Bemærk! Du behøver ikke at have rettigheder til datalagrene, medmindre du skal udføre datareparation.

Kodeændringer

Bemærk! Test altid koderettelser i et kontrolleret miljø, før du anvender rettelserne på dine produktionscomputere.
Hvis du vil anvende dette hotfix, skal du følge disse trin:

  1. Skift koden i udløseren UpdateVATOnLines i tabellen Salgslinje (37) på følgende måde:
    Eksisterende kode

    ...
            END;
            InitOutstanding;
            MODIFY;
            RecRef.GETTABLE(SalesLine);
    ...
    
    

    Erstatningskode

    ...
            END;
            InitOutstanding;
    
    // Add the following lines.
            IF Type = Type::"Charge (Item)" THEN 
              UpdateItemChargeAssgnt; 
    // End of the added lines.
    
            MODIFY;
            RecRef.GETTABLE(SalesLine);
    ...
    
    
  2. Skift koden i udløseren UpdateVATOnLines i tabellen Købslinje (39) på følgende måde:
    Eksisterende kode

    ...
              UpdateUnitCost;
            END;
            MODIFY;
            RecRef.GETTABLE(PurchLine);
    ...
    
    

    Erstatningskode

    ...
              UpdateUnitCost;
            END;
    
    // Add the following lines.
            IF Type = Type::"Charge (Item)" THEN  
              UpdateItemChargeAssgnt;
    // End of the added lines.
    
            MODIFY;
            RecRef.GETTABLE(PurchLine);
    ...
    
    
  3. Rediger koden i initValueEntry-udløseren i codeunit (22) for vare-Jnl.-postlinje på følgende måde:
    Eksisterende kode 1

    ...
          IF GLSetup."Additional Reporting Currency" <> '' THEN
            ValueEntry."Cost per Unit (ACY)" := RetrieveCostPerUnitACY(ValueEntry."Cost per Unit");
    
    // Delete the following lines.
          IF (ValueEntry."Valued Quantity" > 0) AND  
             (ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Purchase) AND
    // End of the deleted lines.
    
             (ValueEntry."Entry Type" = ValueEntry."Entry Type"::"Direct Cost")
          THEN BEGIN
            IF Item."Costing Method" = Item."Costing Method"::Standard THEN
    ...
    
    

    Erstatningskode 1

    ...
          IF GLSetup."Additional Reporting Currency" <> '' THEN
            ValueEntry."Cost per Unit (ACY)" := RetrieveCostPerUnitACY(ValueEntry."Cost per Unit");
    // Add the following line.
          IF (ValueEntry."Item Ledger Entry Type" = ValueEntry."Item Ledger Entry Type"::Purchase) AND
    
             (ValueEntry."Entry Type" = ValueEntry."Entry Type"::"Direct Cost")
          THEN BEGIN
            IF Item."Costing Method" = Item."Costing Method"::Standard THEN
    ...
    
    

    Eksisterende kode 2

    ...
              END;
            ValueEntry."Cost Amount (Actual)" := CostAmt;
            ValueEntry."Cost Amount (Actual) (ACY)" := CostAmtACY;
    
    // Delete the following lines.
            IF (GLSetup."Payment Discount Type" = GLSetup."Payment Discount Type"::"Calc. Pmt. Disc. on Lines") THEN  
              IF (ValueEntry."Discount Amount" <> 0) AND (ItemJnlLine."Item Charge No." <> '') THEN BEGIN 
                ValueEntry."Cost Amount (Actual)" := ValueEntry."Cost Amount (Actual)" - "Discount Amount"; 
                ValueEntry."Purchase Amount (Actual)" := ValueEntry."Purchase Amount (Actual)" - "Discount Amount"; 
              END; 
    // End of the deleted lines.
    
          END;
        (ValueEntry."Expected Cost" = TRUE) AND (ValueEntry.Inventoriable = TRUE):
    ...
    
    

    Erstatningskode 2

    ...
              END;
            ValueEntry."Cost Amount (Actual)" := CostAmt;
            ValueEntry."Cost Amount (Actual) (ACY)" := CostAmtACY;
    
          END;
        (ValueEntry."Expected Cost" = TRUE) AND (ValueEntry.Inventoriable = TRUE):
    ...
    
    

    Eksisterende kode 3

    ...
              ValueEntry."Cost Amount (Non-Invtbl.)(ACY)" := CostAmtACY;
            END;
          END;
      END;
    
    
      RoundAmtValueEntry(ValueEntry);
    ...
    
    

    Erstatningskode 3

    ...
              ValueEntry."Cost Amount (Non-Invtbl.)(ACY)" := CostAmtACY;
            END;
          END;
      END;
    
    // Add the following lines.
      IF (GLSetup."Payment Discount Type" = GLSetup."Payment Discount Type"::"Calc. Pmt. Disc. on Lines") THEN BEGIN
        IF (ValueEntry."Discount Amount" <> 0) AND (ItemJnlLine."Item Charge No." <> '') THEN BEGIN
          CASE "Entry Type" OF
            "Entry Type"::Sale: 
             ValueEntry."Sales Amount (Actual)" := ValueEntry."Sales Amount (Actual)" - ItemJnlLine."Pmt. Discount Amount";
            "Entry Type"::Purchase:
            BEGIN  
              ValueEntry."Cost Amount (Actual)" := CostAmt - ItemJnlLine."Pmt. Discount Amount"; 
              ValueEntry."Purchase Amount (Actual)" := ValueEntry."Purchase Amount (Actual)" - ItemJnlLine."Pmt. Discount Amount";
            END;
          END;
        END; 
      END;
    // End of the added lines.
    
      RoundAmtValueEntry(ValueEntry);
    ...
    
    
  4. Skift koden i udløseren PostItemChargePerOrder i Sales-Post codeunit (80) på følgende måde:
    Eksisterende kode

    ...
      IF SalesHeader."Currency Code" <> '' THEN
        ItemJnlLine2."Discount Amount" := ROUND(
          CurrExchRate.ExchangeAmtFCYToLCY(
            UseDate,SalesHeader."Currency Code",
    
    // Delete the following line.
            (ItemChargeSalesLine."Inv. Discount Amount" + ItemChargeSalesLine."Pmt. Disc. Given Amount") * 
    
             ItemJnlLine2."Invoiced Qty. (Base)" /
             ItemChargeSalesLine."Quantity (Base)" * "Qty. to Assign"  / QtyToInvoice,
             SalesHeader."Currency Factor"),GLSetup."Amount Rounding Precision")
      ELSE
        ItemJnlLine2."Discount Amount" := ROUND(
    
    // Delete the following line.
          (ItemChargeSalesLine."Inv. Discount Amount" + ItemChargeSalesLine."Pmt. Disc. Given Amount") *
    
           ItemChargeSalesLine."Quantity (Base)" * "Qty. to Assign" / QtyToInvoice,
           GLSetup."Amount Rounding Precision");
    // Delete the following lines.
      IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN
        ItemJnlLine2."Discount Amount" := -ItemJnlLine2."Discount Amount";
    // End of the added lines.
    
      ItemJnlLine2."Shortcut Dimension 1 Code" := ItemChargeSalesLine."Shortcut Dimension 1 Code";
    ...
    
    

    Erstatningskode

    ...
      IF SalesHeader."Currency Code" <> '' THEN
        ItemJnlLine2."Discount Amount" := ROUND(
          CurrExchRate.ExchangeAmtFCYToLCY(
            UseDate,SalesHeader."Currency Code",
    
    // Add the following lines.
            (ItemChargeSalesLine."Line Discount Amount" +
            ItemChargeSalesLine."Inv. Discount Amount" + ItemChargeSalesLine."Pmt. Disc. Given Amount") * 
    // End of the added lines.
    
             ItemJnlLine2."Invoiced Qty. (Base)" /
             ItemChargeSalesLine."Quantity (Base)" * "Qty. to Assign"  / QtyToInvoice,
             SalesHeader."Currency Factor"),GLSetup."Amount Rounding Precision")
      ELSE
        ItemJnlLine2."Discount Amount" := ROUND(
    
    // Add the following lines.
          (ItemChargeSalesLine."Line Discount Amount" +
          ItemChargeSalesLine."Inv. Discount Amount" + ItemChargeSalesLine."Pmt. Disc. Given Amount") *
    // End of the added lines.
    
           ItemJnlLine2."Invoiced Qty. (Base)" /
           ItemChargeSalesLine."Quantity (Base)" * "Qty. to Assign" / QtyToInvoice,
           GLSetup."Amount Rounding Precision");
    // Add the following lines.
        ItemJnlLine2."Pmt. Discount Amount" := ItemChargeSalesLine."Pmt. Disc. Given Amount" *  
          ItemJnlLine2."Invoiced Qty. (Base)" / ItemChargeSalesLine."Quantity (Base)" * 
            "Qty. to Assign"  / QtyToInvoice; 
        IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN 
          ItemJnlLine2."Discount Amount" := -ItemJnlLine2."Discount Amount";
          ItemJnlLine2."Pmt. Discount Amount" := -ItemJnlLine2."Pmt. Discount Amount";
        END;
    // End of the added lines.
    
      ItemJnlLine2."Shortcut Dimension 1 Code" := ItemChargeSalesLine."Shortcut Dimension 1 Code";
    ...
    
    
  5. Skift koden i udløseren PostItemChargePerOrder i kodeenheden Køb.-Post (90) på følgende måde:
    Eksisterende kode

    ...
          ItemChargePurchLine."Quantity (Base)" * "Qty. to Assign" / QtyToInvoice,
          GLSetup."Amount Rounding Precision");
    
    
      ItemJnlLine2."Shortcut Dimension 1 Code" := ItemChargePurchLine."Shortcut Dimension 1 Code";
      ItemJnlLine2."Shortcut Dimension 2 Code" := ItemChargePurchLine."Shortcut Dimension 2 Code";
    ...
    
    

    Erstatningskode

    ...
          ItemChargePurchLine."Quantity (Base)" * "Qty. to Assign" / QtyToInvoice,
          GLSetup."Amount Rounding Precision");
    
    // Add the following lines.
       ItemJnlLine2."Pmt. Discount Amount" := ItemChargePurchLine."Pmt. Disc. Rcd. Amount" * 
         ItemJnlLine2."Invoiced Qty. (Base)" / ItemChargePurchLine."Quantity (Base)" *
           "Qty. to Assign" / QtyToInvoice; 
       IF "Document Type" IN ["Document Type"::"Return Order","Document Type"::"Credit Memo"] THEN BEGIN
         ItemJnlLine2."Discount Amount" := -ItemJnlLine2."Discount Amount";
         ItemJnlLine2."Pmt. Discount Amount" := -ItemJnlLine2."Pmt. Discount Amount";
       END;
    // End of the added lines.
    
      ItemJnlLine2."Shortcut Dimension 1 Code" := ItemChargePurchLine."Shortcut Dimension 1 Code";
    ...
    
    

Forudsætninger

Du skal have et af følgende produkter installeret for at anvende dette hotfix:

  • Den spanske version af Microsoft Dynamics NAV 2009 Service Pack 1
  • Den spanske version af Microsoft Dynamics NAV 2009
  • Den spanske version af Microsoft Dynamics NAV 5.0 Service Pack 1
  • Den spanske version af Microsoft Dynamics NAV 4.0 Service Pack 3

              

Oplysninger om fjernelse

Du kan ikke fjerne dette hotfix.

Status

Microsoft har bekræftet, at dette er et problem i de Microsoft-produkter, der er angivet i afsnittet "Gælder for".

MICROSOFT OG/ELLER MICROSOFTS LEVERANDØRER GØR INGEN REPRÆSENTATIONER ELLER GARANTIER FOR EGNETHEDEN, PÅLIDELIGHEDEN ELLER NØJAGTIGHEDEN AF DE OPLYSNINGER, DER ER INDEHOLDT I DOKUMENTERNE OG DEN RELATEREDE GRAFIK, DER UDGIVES PÅ DETTE WEBSTED ("MATERIALERNE") TIL NOGET FORMÅL.

MATERIALERNE KAN INDEHOLDE TEKNISKE UNØJAGTIGHEDER ELLER TYPOGRAFISKE FEJL OG KAN TIL ENHVER TID REVIDERES UDEN VARSEL. I DET OMFANG DET ER TILLADT I HENHOLD TIL GÆLDENDE LOVGIVNING, FRASKRIVER MICROSOFT OG/ELLER MICROSOFTS LEVERANDØRER SIG OG UDELUKKER ALLE REPRÆSENTATIONER, GARANTIER OG BETINGELSER, UANSET OM DE ER UDTRYKKELIGE, UNDERFORSTÅEDE ELLER LOVFÆSTEDE, HERUNDER, MEN IKKE BEGRÆNSET TIL REPRÆSENTATIONER, GARANTIER ELLER BETINGELSER FOR TITEL, IKKE-KRÆNKELSE, TILFREDSSTILLENDE TILSTAND ELLER KVALITET, SALGBARHED OG EGNETHED TIL ET BESTEMT FORMÅL, MED HENSYN TIL MATERIALERNE.