Zelfs wanneer u geen toestemming om te werken met Cartera in de Spaanse versie van Microsoft Dynamics NAV 2009, kunt u een betaling en een factuur vereffenen van klant-of leveranciersposten. Het probleem is dat de wissel 'openen' in de Cartera klanten of leveranciers wanneer u 'zonder Cartera machtigingen"deze documenten (betaling en factuur blijft). Dit veroorzaakt inconsistenties in de database. Dit probleem treedt op in de volgende producten:
-
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 test correcties altijd in een testomgeving voordat u ze implementeert in de productieomgeving. Importeer alle SEPA updates voordat de wijziging wordt toegepast.U kunt dit probleem oplossen door de volgende stappen uit te voeren:
-
Wijzig de code in de globale Variablesin Alg. verz.-regel Codeunit boeken (12) als volgt:Bestaande code
...Text1100010@1100016 : TextConst 'ENU=Remove it from its payment order and try again.;ESP=B¢rrelo de la orden de pago e int‚ntelo de nuevo.'; Text1100011@1100021 : TextConst 'ENU=Document Type is " " in Line %1. This posting will not realize the VAT, do you want to proceed?;ESP=El tipo de documento es " " en la l¡nea %1. Esta contabilizaci¢n no tendr en cuenta el IVA, ¨desea continuar?'; Text1100012@1100022 : TextConst 'ENU=The posting process has been cancelled by the user.;ESP=El proceso de registro ha sido cancelado por el usuario.'; AppliedAmountLCY2@1100053 : Decimal; AppliesToDocType@1100023 : Integer; PROCEDURE GetGLReg@10(VAR NewGLReg@1000 : Record 45); BEGIN NewGLReg := GLReg; END;...
Nieuwe code
...Text1100010@1100016 : TextConst 'ENU=Remove it from its payment order and try again.;ESP=B¢rrelo de la orden de pago e int‚ntelo de nuevo.'; Text1100011@1100021 : TextConst 'ENU=Document Type is " " in Line %1. This posting will not realize the VAT, do you want to proceed?;ESP=El tipo de documento es " " en la l¡nea %1. Esta contabilizaci¢n no tendr en cuenta el IVA, ¨desea continuar?'; Text1100012@1100022 : TextConst 'ENU=The posting process has been cancelled by the user.;ESP=El proceso de registro ha sido cancelado por el usuario.'; AppliedAmountLCY2@1100053 : Decimal; AppliesToDocType@1100023 : Integer;// Add the following line.Text1100013@1100026 : TextConst 'ENU=You do not have permissions to apply or unapply documents in the Cartera Module.';// End of the added line. PROCEDURE GetGLReg@10(VAR NewGLReg@1000 : Record 45); BEGIN NewGLReg := GLReg; END;...
-
Wijzig de code in de ApplyCustLedgEntryfunctie in Alg. verz.-regel Codeunit boeken (12) als volgt:Bestaande code 1
...OldCustLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No."); OldCustLedgEntry.SETRANGE("Customer No.",NewCVLedgEntryBuf."CV No."); OldCustLedgEntry.SETRANGE(Open,TRUE); OldCustLedgEntry.FINDFIRST; OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF AppManagement.AccessToCartera THEN DocPost.CheckAppliedReceivableDoc( OldCustLedgEntry,GenJnlLine."System-Created Entry");...Nieuwe code 1
...OldCustLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No."); OldCustLedgEntry.SETRANGE("Customer No.",NewCVLedgEntryBuf."CV No."); OldCustLedgEntry.SETRANGE(Open,TRUE); OldCustLedgEntry.FINDFIRST;// Add the following line.CheckCarteraAccessPermissions(OldCustLedgEntry."Document Situation");// End of the added line. OldCustLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF AppManagement.AccessToCartera THEN DocPost.CheckAppliedReceivableDoc( OldCustLedgEntry,GenJnlLine."System-Created Entry");...Bestaande code 2
...// Check Cust Ledger Entry and add to Temp. IF SalesSetup."Appln. between Currencies" = SalesSetup."Appln. between Currencies"::None THEN OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code"); IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN// Delete the following lines.REPEATIF GenJnlApply.CheckAgainstApplnCurrency(NewCVLedgEntryBuf."Currency Code",OldCustLedgEntry."Currency Code",GenJnlLine."Account Type"::Customer,FALSE)THEN BEGINIF (OldCustLedgEntry."Posting Date" > ApplyingDate) AND (OldCustLedgEntry."Applies-to ID" <> '') THENApplyingDate := OldCustLedgEntry."Posting Date";TempOldCustLedgEntry := OldCustLedgEntry;TempOldCustLedgEntry.INSERT;END;UNTIL OldCustLedgEntry.NEXT=0;// End of the deleted lines. TempOldCustLedgEntry.SETRANGE(Positive,NewCVLedgEntryBuf."Remaining Amount" > 0); IF TempOldCustLedgEntry.FIND('-') THEN BEGIN...
Vervangende code 2
...// Check Cust Ledger Entry and add to Temp. IF SalesSetup."Appln. between Currencies" = SalesSetup."Appln. between Currencies"::None THEN OldCustLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code"); IF OldCustLedgEntry.FINDSET(FALSE,FALSE) THEN// Add the following lines.REPEATCheckCarteraAccessPermissions(OldCustLedgEntry."Document Situation");IF GenJnlApply.CheckAgainstApplnCurrency(NewCVLedgEntryBuf."Currency Code",OldCustLedgEntry."Currency Code",GenJnlLine."Account Type"::Customer,FALSE)THEN BEGINIF (OldCustLedgEntry."Posting Date" > ApplyingDate) AND (OldCustLedgEntry."Applies-to ID" <> '') THENApplyingDate := OldCustLedgEntry."Posting Date";TempOldCustLedgEntry := OldCustLedgEntry;TempOldCustLedgEntry.INSERT;END;UNTIL OldCustLedgEntry.NEXT=0;// End of the added lines. TempOldCustLedgEntry.SETRANGE(Positive,NewCVLedgEntryBuf."Remaining Amount" > 0); IF TempOldCustLedgEntry.FIND('-') THEN BEGIN...
-
Wijzig de code in de functie UnapplyCustLedgEntry in Alg. verz.-regel Codeunit boeken (12) als volgt:Bestaande code
...DtldCustLedgEntry2.SETRANGE("Customer No.",DtldCustLedgEntry."Customer No."); DtldCustLedgEntry2.SETFILTER("Entry Type",'>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry"); UnapplyVATEntries := FALSE; DtldCustLedgEntry2.FINDSET; REPEAT DtldCustLedgEntry2.TESTFIELD(Unapplied,FALSE); IF (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)") THEN...Nieuwe code
...DtldCustLedgEntry2.SETRANGE("Customer No.",DtldCustLedgEntry."Customer No."); DtldCustLedgEntry2.SETFILTER("Entry Type",'>%1',DtldCustLedgEntry."Entry Type"::"Initial Entry"); UnapplyVATEntries := FALSE; DtldCustLedgEntry2.FINDSET; REPEAT// Add the following line.CheckCarteraAccessPermissions(DtldCustLedgEntry2."Document Situation");// End of the added line. DtldCustLedgEntry2.TESTFIELD(Unapplied,FALSE); IF (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR (DtldCustLedgEntry2."Entry Type" = DtldCustLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)") THEN... -
Wijzig de code in de functie ApplyVendLedgEntry in Alg. verz.-regel Codeunit boeken (12) als volgt:Bestaande code 1
...OldVendLedgEntry.SETRANGE("Document Type",GenJnlLine."Applies-to Doc. Type"); OldVendLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No."); OldVendLedgEntry.SETRANGE("Vendor No.",NewCVLedgEntryBuf."CV No."); OldVendLedgEntry.SETRANGE(Open,TRUE); OldVendLedgEntry.FINDFIRST; OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF AppManagement.AccessToCartera THEN DocPost.CheckAppliedPayableDoc( OldVendLedgEntry,GenJnlLine."System-Created Entry");...Nieuwe code 1
...OldVendLedgEntry.SETRANGE("Document Type",GenJnlLine."Applies-to Doc. Type"); OldVendLedgEntry.SETRANGE("Bill No.",NewCVLedgEntryBuf."Applies-to Bill No."); OldVendLedgEntry.SETRANGE("Vendor No.",NewCVLedgEntryBuf."CV No."); OldVendLedgEntry.SETRANGE(Open,TRUE); OldVendLedgEntry.FINDFIRST;// Add the following line.CheckCarteraAccessPermissions(OldVendLedgEntry."Document Situation");// End of the added line. OldVendLedgEntry.TESTFIELD(Positive,NOT NewCVLedgEntryBuf.Positive); IF AppManagement.AccessToCartera THEN DocPost.CheckAppliedPayableDoc( OldVendLedgEntry,GenJnlLine."System-Created Entry");...Bestaande code 2
...//Check and Move Ledger Entries to Temp IF PurchSetup."Appln. between Currencies" = PurchSetup."Appln. between Currencies"::None THEN OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code"); IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN REPEAT IF GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldVendLedgEntry."Currency Code", GenJnlLine."Account Type"::Vendor, FALSE)...
Vervangende code 2
...//Check and Move Ledger Entries to Temp IF PurchSetup."Appln. between Currencies" = PurchSetup."Appln. between Currencies"::None THEN OldVendLedgEntry.SETRANGE("Currency Code",NewCVLedgEntryBuf."Currency Code"); IF OldVendLedgEntry.FINDSET(FALSE,FALSE) THEN REPEAT// Add the following line.CheckCarteraAccessPermissions(OldVendLedgEntry."Document Situation");// End of the added line. IF GenJnlApply.CheckAgainstApplnCurrency( NewCVLedgEntryBuf."Currency Code", OldVendLedgEntry."Currency Code", GenJnlLine."Account Type"::Vendor, FALSE)...
-
Wijzig de code in de functie UnapplyVendLedgEntry in Alg. verz.-regel Codeunit boeken (12) als volgt:Bestaande code
...DtldVendLedgEntry2.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type"); DtldVendLedgEntry2.SETRANGE("Transaction No.",DtldVendLedgEntry."Transaction No."); DtldVendLedgEntry2.SETRANGE("Vendor No.",DtldVendLedgEntry."Vendor No."); DtldVendLedgEntry2.SETFILTER("Entry Type",'>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry"); DtldVendLedgEntry2.FINDSET; UnapplyVATEntries := FALSE; REPEAT IF (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")...Nieuwe code
...DtldVendLedgEntry2.SETCURRENTKEY("Transaction No.","Vendor No.","Entry Type"); DtldVendLedgEntry2.SETRANGE("Transaction No.",DtldVendLedgEntry."Transaction No."); DtldVendLedgEntry2.SETRANGE("Vendor No.",DtldVendLedgEntry."Vendor No."); DtldVendLedgEntry2.SETFILTER("Entry Type",'>%1',DtldVendLedgEntry."Entry Type"::"Initial Entry"); DtldVendLedgEntry2.FINDSET;// Add the following line.CheckCarteraAccessPermissions(DtldVendLedgEntry2."Document Situation");// End of the added line. UnapplyVATEntries := FALSE; REPEAT IF (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount (VAT Adjustment)") OR (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Tolerance (VAT Adjustment)") OR (DtldVendLedgEntry2."Entry Type" = DtldVendLedgEntry2."Entry Type"::"Payment Discount Tolerance (VAT Adjustment)")... -
Wijzig de code in de functie CheckCarteraAccessPermissions in Alg. verz.-regel Codeunit boeken (12) als volgt:Bestaande code
...CLEAR(GenJnlLine2); EXIT(IsOK); END; BEGIN END. } }...
Nieuwe code
...CLEAR(GenJnlLine2); EXIT(IsOK); END;// Add the following lines.LOCAL PROCEDURE CheckCarteraAccessPermissions@1100024(DocumentSituation@1170001 : ' ,Posted BG/PO,Closed BG/PO,BG/PO,Cartera,Closed Documents');BEGINIF (DocumentSituation <> DocumentSituation::" ") AND (NOT AppManagement.AccessToCartera) THENERROR(Text1100013);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.