Symptom
Felaktigt grupperade baser och belopp för samma momssats och perioden i deklaration 340 med moms kontanter ingår i den spanska versionen av Microsoft Dynamics NAV 2009.kod ändras för att lösa problemet. Det här problemet uppstår i följande produkter:
Samma scenario med normal moms fungerar som förväntat, att avgränsa varje faktura oavsett om de har samma momssats. Följ instruktionerna i avsnittet-
Den spanska versionen av Microsoft Dynamics NAV 2009 R2
-
Den spanska versionen av Microsoft Dynamics NAV 2009 SP1
Lösning
Information om snabbkorrigeringen
En snabbkorrigering är nu tillgänglig från Microsoft. Den är endast avsedd att åtgärda det problem som beskrivs i denna artikel. Använd den bara på datorer där detta problem uppstår. Snabbkorrigeringen kan komma att testas igen. Om inte störs alltför mycket av detta problem rekommenderar vi att du väntar på Nästa service pack-versionen för Microsoft Dynamics NAV 2009 eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.
Obs! I särskilda fall, de avgifter som är normalt för support vara avgiftsfri om en supporttekniker för Microsoft Dynamics och relaterade produkter som bestämmer att en särskild uppdatering kan lösa ditt problem. De vanliga supportkostnaderna gäller för övriga supportfrågor och problem som inte berör den särskilda uppdateringen.Installationsinformation
Microsoft tillhandahåller programmeringsexempel endast utan garanti varken uttryckliga eller underförstådda. Detta inkluderar men är inte begränsat till, underförstådda garantier om säljbarhet eller lämplighet för ett särskilt ändamål. Den här artikeln förutsätter att du är bekant med det programmeringsspråk som demonstreras och de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionen hos en viss procedur. De kommer inte ändra dessa exempel för att ge ytterligare funktioner eller skapa procedurer som motsvarar dina speciella behov.
Obs! Innan du installerar den här snabbkorrigeringen måste du kontrollera att alla användare i Microsoft Dynamics NAV-klienten har loggat ut. Detta omfattar tjänster för Microsoft Dynamics NAV Application Server (NAS). Du ska endast klientanvändare som är inloggad när du implementerar den här snabbkorrigeringen. Om du vill genomföra den här snabbkorrigeringen måste du ha en utvecklarlicens. Vi rekommenderar att tilldelas användarkontot i fönstret Windows-inloggningar eller i fönstret databasinloggningar "SUPER" roll-ID. Om användarkontot inte kan tilldelas "SUPER" roll-ID måste du kontrollera att användarkontot har följande behörigheter:-
Ändra behörighet för objektet ändras.
-
Körbehörighet för systemet objektet ID 5210 objekt och System objektet ID 9015
objektet.
Obs! Du har inte behörighet för datalager inte data reparation.
Kod ändras
Obs! Alltid åtgärdas testa koden i en kontrollerad miljö innan du installerar korrigeringar för produktionsdatorer.
Lös problemet så här:-
Ändra koden i rapporten gör 340 deklaration (10743) enligt följande:
Befintlig kod 1... END;
END; // Delete the following line. OnAfterGetRecord=BEGIN // End of the deleted line. OperationCode := GetOperationCode(VATEntry2); VATBuffer."VAT %" := "VAT %"; ...Ersättningskod 1
... END;
END; // Add the following lines. OnAfterGetRecord=VAR VendLedgEntryAppl@1100000 : Record 25; NewEntry@1100001 : Boolean; BEGIN // End of the added lines. OperationCode := GetOperationCode(VATEntry2); VATBuffer."VAT %" := "VAT %"; ...Befintlig kod 2
... VATBuffer.Amount := Amount;
END; VATBuffer.INSERT; // Delete the following lines. IF Type = VATEntry.Type::Purchase THEN BEGIN VATEntryTemporary := VATEntry2; VATEntryTemporary.INSERT; END; END; // End of the deleted lines. END; TotalFields=Base,Amount; ...Ersättningskod 2
...VATBuffer.Amount := Amount;
END; VATBuffer.INSERT; // Add the following lines. END; IF Type = VATEntry.Type::Purchase THEN IF HasBeenRealized("Entry No.") OR ("Unrealized VAT Entry No." <> 0) THEN BEGIN NewEntry := CheckVLEApplication(VATEntry2); VATEntryTemporary.SETRANGE("Posting Date","Posting Date"); VATEntryTemporary.SETRANGE("Document No.","Document No."); VATEntryTemporary.SETRANGE("Document Type","Document Type"); VATEntryTemporary.SETRANGE(Type,Type); VATEntryTemporary.SETRANGE("VAT %","VAT %"); VATEntryTemporary.SETRANGE("Transaction No.","Transaction No."); IF VATEntryTemporary.FINDFIRST AND NOT NewEntry THEN BEGIN VATEntryTemporary.Base += Base; VATEntryTemporary.Amount += Amount; VATEntryTemporary.MODIFY; END ELSE BEGIN VATEntryTemporary := VATEntry2; VATEntryTemporary.INSERT; END; END ELSE BEGIN VATEntryTemporary := VATEntry2; VATEntryTemporary.INSERT; END; // End of the added lines. END; TotalFields=Base,Amount; ...Befintlig kod 3
... DataItemVarName=<Integer2>;
OnPreDataItem=BEGIN VATBuffer.FIND('-'); VATEntryTemporary.SETCURRENTKEY("VAT %","EC %"); IF VATEntryTemporary.FINDFIRST THEN; CurrReport.CREATETOTALS(VATBuffer2.Base,VATBuffer2.Amount); Fin := FALSE; ...Ersättningskod 3
... DataItemVarName=<Integer2>;
OnPreDataItem=BEGIN VATBuffer.FIND('-'); // Delete the following line. VATEntryTemporary.SETCURRENTKEY("VAT %","EC %"); // End of the deleted line. IF VATEntryTemporary.FINDFIRST THEN; CurrReport.CREATETOTALS(VATBuffer2.Base,VATBuffer2.Amount); Fin := FALSE; ...Befintlig kod 4
...IF VATEntry.Type = VATEntry.Type::Purchase THEN BEGIN
VATEntryTemporary.Amount := VATBuffer.Amount; VATDeductAmt := CheckDeductibleVAT(VATEntryTemporary); // Delete the following lines. VATEntryTemporary.NEXT; RecordTypePurchase(VATEntry2); // End of the deleted lines. END; Fin := VATBuffer.NEXT = 0; END; ...Ersättningskod 4
... IF VATEntry.Type = VATEntry.Type::Purchase THEN BEGIN
VATEntryTemporary.Amount := VATBuffer.Amount; VATDeductAmt := CheckDeductibleVAT(VATEntryTemporary); // Add the following lines. VATEntryTemporary.SETCURRENTKEY("VAT %","EC %"); VATEntryTemporary.SETRANGE("VAT %",VATBuffer."VAT %"); VATEntryTemporary.SETRANGE("EC %",VATBuffer."EC %"); VATEntryTemporary.FINDSET; REPEAT RecordTypePurchase(VATEntryTemporary); UNTIL VATEntryTemporary.NEXT = 0; // End of the added lines. END; Fin := VATBuffer.NEXT = 0; END; ... -
Ändra koden i globala variabler i rapporten gör 340 deklaration (10743) enligt följande:
Befintlig kod...VATEntryTemporary@1100078 : TEMPORARY Record 254;
TempDeclarationLines@1100149 : TEMPORARY Record 10744; TempVATEntry@1100007 : TEMPORARY Record 254; CommonDialogMgt@1100015 : Codeunit 412; OutFile@1100016 : File; DeclarationNum@1100017 : Text[4]; ...Ersättningskod
... VATEntryTemporary@1100078 : TEMPORARY Record 254;
TempDeclarationLines@1100149 : TEMPORARY Record 10744; TempVATEntry@1100007 : TEMPORARY Record 254; // Add the following line. TempDtldVendLedgerEntry@1100115 : TEMPORARY Record 380; // End of the added line. CommonDialogMgt@1100015 : Codeunit 412; OutFile@1100016 : File; DeclarationNum@1100017 : Text[4]; ... -
Ändra koden i funktionen RecordTypePurchase i rapporten gör 340 deklaration (10743) enligt följande:
Befintlig kod... END ELSE
OperationDateText := FormatDate(VATEntryRec."Posting Date"); // Delete the following lines. IF VATEntryRec."Document Type" IN [VATEntryRec."Document Type"::Payment,VATEntryRec."Document Type"::Refund] THEN BEGIN UnrealizedVATEntryNo := VATEntryRec."Unrealized VAT Entry No."; DocumentDate := VATEntryRec."Posting Date"; IF UnrealizedVATEntryNo <> 0 THEN BEGIN UnrealizedVATEntry.GET(UnrealizedVATEntryNo); OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date"); DocumentDate := UnrealizedVATEntry."Document Date"; // End of the deleted lines. END; END ELSE UnrealizedVATEntryNo := 0; ...Ersättningskod
... END ELSE
OperationDateText := FormatDate(VATEntryRec."Posting Date"); // Add the following lines. VATBuffer2.Base := VATBuffer.Base; VATBuffer2.Amount := VATBuffer.Amount; IF VATEntryRec."Document Type" IN [VATEntryRec."Document Type"::Payment,VATEntryRec."Document Type"::Refund] THEN BEGIN UnrealizedVATEntryNo := VATEntryTemporary."Unrealized VAT Entry No."; DocumentDate := VATEntryTemporary."Posting Date"; IF UnrealizedVATEntryNo <> 0 THEN BEGIN UnrealizedVATEntry.GET(UnrealizedVATEntryNo); OperationDateText := FormatDate(UnrealizedVATEntry."Posting Date"); DocumentDate := UnrealizedVATEntry."Document Date"; IF FindPmtOrderBillGrBankAcc(VATEntry.Type,VATEntry."Document No.") = '' THEN BEGIN VendorDocumentNo := UnrealizedVATEntry."External Document No."; VATBuffer2.Base := VATEntryTemporary.Base; VATBuffer2.Amount := VATEntryTemporary.Amount; END; // End of the added lines. END; END ELSE UnrealizedVATEntryNo := 0; ... -
Ändra koden i funktionen CheckVLEApplication i rapporten gör 340 deklaration (10743) enligt följande:
Befintlig kod... PrevDeclarationNumEnable := ReplaceDeclaration;
END; BEGIN END. } ...Ersättningskod
...PrevDeclarationNumEnable := ReplaceDeclaration;
END; // Add the following lines. LOCAL PROCEDURE CheckVLEApplication@1100074(VATEntry@1100000 : Record 254) : Boolean; VAR VendorLedgerEntry@1100001 : Record 25; DtldVendLedgEntry@1100002 : Record 380; CheckVendLedgEntry@1100003 : Record 25; UnrealizedVendLedgEntry@1100004 : Integer; BEGIN FilterVendLedgerEntryByVATEntry(VendorLedgerEntry,VATEntry); UnrealizedVendLedgEntry := GetUnrealizedInvoiceVLENo(VATEntry."Unrealized VAT Entry No."); IF VendorLedgerEntry.FINDSET THEN REPEAT DtldVendLedgEntry.RESET; DtldVendLedgEntry.SETRANGE(Unapplied,FALSE); DtldVendLedgEntry.SETRANGE("Entry Type",DtldVendLedgEntry."Entry Type"::Application); DtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.",VendorLedgerEntry."Entry No."); IF UnrealizedVendLedgEntry <> 0 THEN DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",UnrealizedVendLedgEntry); IF DtldVendLedgEntry.FINDSET THEN REPEAT IF (DtldVendLedgEntry."Vendor Ledger Entry No." <> DtldVendLedgEntry."Applied Vend. Ledger Entry No.") AND CheckVendLedgEntry.GET(DtldVendLedgEntry."Vendor Ledger Entry No.") THEN BEGIN IF ExistDtldVLE(DtldVendLedgEntry."Vendor Ledger Entry No.",DtldVendLedgEntry."Applied Vend. Ledger Entry No.") THEN EXIT(FALSE); InsertTempDtldVLE(DtldVendLedgEntry."Vendor Ledger Entry No.",DtldVendLedgEntry."Applied Vend. Ledger Entry No."); EXIT(TRUE); END; UNTIL DtldVendLedgEntry.NEXT = 0 ELSE BEGIN DtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No."); DtldVendLedgEntry.SETRANGE("Vendor Ledger Entry No.",VendorLedgerEntry."Entry No."); IF UnrealizedVendLedgEntry <> 0 THEN DtldVendLedgEntry.SETRANGE("Applied Vend. Ledger Entry No.",UnrealizedVendLedgEntry); IF DtldVendLedgEntry.FINDSET THEN REPEAT IF CheckVendLedgEntry.GET(DtldVendLedgEntry."Applied Vend. Ledger Entry No.") THEN BEGIN IF ExistDtldVLE(DtldVendLedgEntry."Applied Vend. Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No.") THEN EXIT(FALSE); InsertTempDtldVLE(DtldVendLedgEntry."Applied Vend. Ledger Entry No.",DtldVendLedgEntry."Vendor Ledger Entry No."); EXIT(TRUE); END; UNTIL DtldVendLedgEntry.NEXT = 0; END; UNTIL VendorLedgerEntry.NEXT = 0; EXIT(TRUE); END; LOCAL PROCEDURE GetUnrealizedInvoiceVLENo@1100075(VATEntryNo@1100000 : Integer) : Integer; VAR VATEntry@1100002 : Record 254; VendLedgEntry@1100001 : Record 25; BEGIN IF NOT VATEntry.GET(VATEntryNo) THEN EXIT(0); FilterVendLedgerEntryByVATEntry(VendLedgEntry,VATEntry); IF VendLedgEntry.FINDFIRST THEN EXIT(VendLedgEntry."Entry No."); EXIT(0); END; LOCAL PROCEDURE FilterVendLedgerEntryByVATEntry@1100087(VAR VendLedgEntry@1100001 : Record 25;VATEntry@1100000 : Record 254); BEGIN VendLedgEntry.SETRANGE("Vendor No.",VATEntry."Bill-to/Pay-to No."); VendLedgEntry.SETRANGE("Posting Date",VATEntry."Posting Date"); VendLedgEntry.SETRANGE("Document Type",VATEntry."Document Type"); VendLedgEntry.SETRANGE("Document No.",VATEntry."Document No."); VendLedgEntry.SETRANGE("Transaction No.",VATEntry."Transaction No."); END; LOCAL PROCEDURE HasBeenRealized@1100064(VATEntryNo@1100000 : Integer) : Boolean; VAR UnrealizedVATEntry@1100001 : Record 254; BEGIN UnrealizedVATEntry.SETRANGE("Unrealized VAT Entry No.",VATEntryNo); EXIT(NOT UnrealizedVATEntry.ISEMPTY); END; LOCAL PROCEDURE ExistDtldVLE@1100195(VLENo@1100001 : Integer;AppliedVLENo@1100000 : Integer) : Boolean; BEGIN TempDtldVendLedgerEntry.SETRANGE("Vendor Ledger Entry No.",VLENo); TempDtldVendLedgerEntry.SETRANGE("Applied Vend. Ledger Entry No.",AppliedVLENo); EXIT(NOT TempDtldVendLedgerEntry.ISEMPTY); END; LOCAL PROCEDURE InsertTempDtldVLE@1100191(VLENo@1100000 : Integer;AppliedVLENo@1100001 : Integer); BEGIN TempDtldVendLedgerEntry.INIT; IF TempDtldVendLedgerEntry.FINDLAST THEN; TempDtldVendLedgerEntry."Entry No." += 1; TempDtldVendLedgerEntry."Vendor Ledger Entry No." := VLENo; TempDtldVendLedgerEntry."Applied Vend. Ledger Entry No." := AppliedVLENo; TempDtldVendLedgerEntry.INSERT; END; // End of the added lines. BEGIN END. } ...
Förutsättningar
Du måste ha någon av följande produkter som har installerat den här snabbkorrigeringen:
-
Den spanska versionen av Microsoft Dynamics NAV 2009 R2
-
Den spanska versionen av Microsoft Dynamics NAV 2009 SP1
Information om borttagning
Du kan inte ta bort den här snabbkorrigeringen.
Status
Microsoft har bekräftat att detta är ett problem i Microsoft-produkterna som nämns i avsnittet "Gäller".
Obs! Detta är en "SNABBPUBLICERING"-artikel skapad direkt från Microsoft support-organisationen. Informationen häri tillhandahålls i befintligt skick som svar på nya problem. Till följd av hastigheten för att göra det tillgängligt kan materialet innehålla typografiska fel och kan ändras när som helst utan föregående meddelande. Se Villkoren för användningför andra överväganden.