Symptomen
De grondslagen en bedragen zijn onjuist gegroepeerd voor de hetzelfde btw-percentage en de periode in de 340-aangifte met btw-contante betaling die betrokken zijn bij de Spaanse versie van Microsoft Dynamics NAV 2009.codewijzigingen oplossen van dit probleem. Dit probleem treedt op in de volgende producten:
Hetzelfde scenario met normaal werkt zoals verwacht, elke factuur, ongeacht of ze hetzelfde btw-percentage hebben van elkaar te scheiden. Volg de stappen in de sectie-
De Spaanse versie van Microsoft Dynamics NAV 2009 R2
-
De Spaanse versie van Microsoft Dynamics NAV 2009 SP1
Oplossing
Informatie over de hotfix
Een ondersteunde hotfix is nu beschikbaar bij Microsoft. Het is echter alleen bedoeld om het probleem dat wordt beschreven in dit artikel. Pas deze alleen toe op systemen waarop dit specifieke probleem zich voordoet. Deze hotfix moet wellicht extra worden getest. Als u geen ernstige problemen ondervindt, is het daarom raadzaam te wachten op het volgende servicepack voor Microsoft Dynamics NAV 2009 of de volgende Microsoft Dynamics NAV versie waarin deze hotfix is opgenomen.
Opmerking In speciale gevallen kunnen kosten die verbonden zijn aan ondersteuningsoproepen ondersteuning worden geannuleerd als een medewerker van Technical Support voor Microsoft Dynamics en verwante producten bepaalt dat een specifieke update de oplossing van uw probleem. De normale ondersteuningskosten blijven gelden voor extra ondersteuningsvragen die niet in aanmerking voor de specifieke update in kwestie komen.Informatie over de installatie
Microsoft verstrekt programmeervoorbeelden uitsluitend ter illustratie, zonder expliciete of impliciete garantie. Dit omvat, maar is niet beperkt tot, de impliciete garanties van verkoopbaarheid of geschiktheid voor een bepaald doel. In dit artikel wordt ervan uitgegaan dat u bekend met de programmeertaal die wordt aangetoond en met de hulpprogramma's die worden gebruikt bent voor het maken van en naar procedures voor foutopsporing. Ondersteuningstechnici van Microsoft kunnen voor uitleg over de functionaliteit van een bepaalde procedure. Zij zal deze voorbeelden bieden extra functionaliteit of desgewenst uw specifieke vereisten echter niet wijzigen.
Opmerking Voordat u deze hotfix hebt geïnstalleerd, controleert u of dat alle gebruikers van Microsoft Dynamics NAV-clients zijn afgemeld bij het systeem. Dit omvat services voor Microsoft Dynamics NAV Application Server (NAS). U moet de alleen clientgebruiker die is aangemeld wanneer u deze hotfix gaat implementeren. Als u deze hotfix gaat implementeren, hebt u een ontwikkelaarslicentie voor. Is raadzaam dat de gebruikersaccount in het venster Windows-aanmeldingen of Databaseaanmeldingen de rol-id 'SUPER'. Als de gebruikersaccount kan worden toegewezen als de ID 'SUPER' rol, moet u controleren of de gebruikersaccount de volgende machtigingen heeft:-
De machtiging wijzigen voor het object dat u wijzigt.
-
De machtiging uitvoeren voor het object System Object ID 5210 en voor de System Object ID 9015
-object.
Opmerking Er geen rechten voor de opgeslagen gegevens hebben, tenzij u gegevens herstellen.
Codewijzigingen
Opmerking Altijd test code worden opgelost in een testomgeving voordat u de correcties in de productieomgeving.
U kunt dit probleem oplossen door de volgende stappen uit te voeren:-
De code in het rapport maken 340-aangifte (10743) als volgt wijzigen:
Bestaande code 1... END;
END; // Delete the following line. OnAfterGetRecord=BEGIN // End of the deleted line. OperationCode := GetOperationCode(VATEntry2); VATBuffer."VAT %" := "VAT %"; ...Nieuwe code 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 %"; ...Bestaande code 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; ...Vervangende code 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; ...Bestaande code 3
... DataItemVarName=<Integer2>;
OnPreDataItem=BEGIN VATBuffer.FIND('-'); VATEntryTemporary.SETCURRENTKEY("VAT %","EC %"); IF VATEntryTemporary.FINDFIRST THEN; CurrReport.CREATETOTALS(VATBuffer2.Base,VATBuffer2.Amount); Fin := FALSE; ...Vervangende code 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; ...Bestaande code 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; ...Vervangende code 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; ... -
De code in het algemene variabelen in het rapport maken 340-aangifte (10743) als volgt wijzigen:
Bestaande code...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]; ...Nieuwe code
... 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]; ... -
De code in de functie RecordTypePurchase in de lijst aanbrengt 340-aangifte (10743) als volgt wijzigen:
Bestaande code... 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; ...Nieuwe code
... 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; ... -
De code in de functie CheckVLEApplication in de lijst aanbrengt 340-aangifte (10743) als volgt wijzigen:
Bestaande code... PrevDeclarationNumEnable := ReplaceDeclaration;
END; BEGIN END. } ...Nieuwe code
...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. } ...
Vereisten
Hebt u een van de volgende producten geïnstalleerd om deze hotfix:
-
De Spaanse versie van Microsoft Dynamics NAV 2009 R2
-
De Spaanse versie van Microsoft Dynamics NAV 2009 SP1
Informatie over verwijderen
U kunt deze hotfix niet verwijderen.
Status
Microsoft heeft bevestigd dat dit probleem kan optreden in de Microsoft-producten die worden vermeld in de sectie 'Van toepassing op'.
Opmerking Dit is een 'Snel publiceren' artikel dat rechtstreeks door het ondersteuningsteam van Microsoft is gemaakt. De informatie wordt geleverd zoals het is in reactie op de opkomende problemen. Omdat het artikel snel beschikbaar moest zijn, kunnen de materialen typografische fouten bevatten en op elk gewenst moment zonder voorafgaande kennisgeving worden gewijzigd. Zie de Gebruiksvoorwaardenvoor andere overwegingen.