Den här artikeln gäller Microsoft Dynamics NAV för följande länder och språkspråk.
- Franska (Schweiz) (fr-ch)
- Tyska (Schweiz) (gr-ch)
- Italienska (Schweiz) (it-ch)
Symptom
Anta att du bokför en inköpsfaktura eller en försäljningsfaktura i den schweiziska versionen av Microsoft Dynamics NAV. När du kör rapporten Föreslå leverantörsbetalning för DTA (3010546) i betalningsjournalen eller rapporten LSV Suggest Collection (3010831) i LSV-journallistan med ett bokföringsdatum som är tidigare än fakturans bokföringsdatum föreslås felaktiga rader. Därför är bokföringsdatumet felaktigt i de detaljerade kundtransaktionerna eller de detaljerade leverantörsfaktjarna när du har bokfört raderna. Ibland kan du till och med inte publicera raderna och få ett konsekvent felmeddelande.
Det här problemet uppstår i följande produkter:
- Den schweiziska versionen av Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Den schweiziska versionen av Microsoft Dynamics NAV 2009
- Den schweiziska versionen av Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Den schweiziska versionen av Microsoft Dynamics NAV 5.0
Orsak
Det här problemet uppstår eftersom en kontroll saknas i rapporten DTA Suggest Vendor Payment (3010546) och i rapporten LSV Suggest Collection (3010831). Kontrollen införs för att undvika att generera en betalningsrad som har ett bokföringsdatum tidigare än fakturans bokföringsdatum.
Lösning
Snabbkorrigeringsinformation
En snabbkorrigering som stöds är nu tillgänglig från Microsoft. Det är dock bara avsett att åtgärda problemet som beskrivs i den här artikeln. Använd den bara på system som har det här specifika problemet. Den här snabbkorrigeringen kan få ytterligare tester. Om du inte drabbas hårt av det här problemet rekommenderar vi därför att du väntar på nästa Microsoft Dynamics NAV Service Pack eller nästa Microsoft Dynamics NAV-version som innehåller den här snabbkorrigeringen.
Obs! I särskilda fall kan avgifter som vanligtvis uppkommer för supportsamtal avbrytas om en teknisk supporttekniker för Microsoft Dynamics och relaterade produkter fastställer att en specifik uppdatering löser problemet. De vanliga supportkostnaderna gäller för ytterligare supportfrågor och problem som inte är berättigade till den aktuella uppdateringen.
Installationsinformation
Microsoft tillhandahåller endast programmeringsexempel i visningssyfte, utan att någon form av garanti uttrycks eller är underförstådd. Detta omfattar men är inte begränsat till underförstådda garantier för säljbarhet eller lämplighet för ett visst ändamål. Den här artikeln förutsätter att du är bekant med programmeringsspråket som demonstreras och med de verktyg som används för att skapa och felsöka procedurer. Microsofts supporttekniker kan hjälpa till att förklara funktionaliteten i en viss procedur, men de ändrar inte de här exemplen för att tillhandahålla ytterligare funktioner eller konstruera procedurer för att uppfylla dina specifika krav.
Obs! Innan du installerar den här snabbkorrigeringen kontrollerar du att alla Microsoft Navision-klientanvändare loggas ut från systemet. Detta omfattar användare av Microsoft Navision Application Services (NAS). Du bör vara den enda klientanvändare som är inloggad när du implementerar snabbkorrigeringen.
Om du vill implementera den här snabbkorrigeringen måste du ha en utvecklarlicens.
Vi rekommenderar att användarkontot i fönstret Windows-inloggningar eller i fönstret Databasinloggningar tilldelas roll-ID:t "SUPER". Om användarkontot inte kan tilldelas superroll-ID måste du kontrollera att användarkontot har följande behörigheter:
- Behörigheten Ändra för det objekt som du kommer att ändra.
- Körbehörigheten för systemobjekt-ID 5210-objektet och för 9015-objektet Systemobjekt-ID.
Obs! Du behöver inte ha rättigheter till datakällorna om du inte behöver utföra datareparation.
Kodändringar
Obs! Testa alltid korrigeringar av kod i en kontrollerad miljö innan du tillämpar korrigeringarna på produktionsdatorerna.
Lös problemet genom att följa de här stegen:
Lägg till en ny global variabel i rapporten DTA Suggest Vendor Payment (3010546) och ange sedan variabeln enligt följande:
- Namn: VendorLedgEntryTemp@1150058
- DataType: Post
- Undertyp: Leverantörstransaktioner
- Tillfälligt: Ja
Lägg till en ny textkonstant i rapporten DTA Suggest Vendor Payment (3010546) och ange sedan konstanten enligt följande:
- Namn: Text50000@1150064
- Konstant värde: ENU=Det finns en eller flera poster för vilka inga betalningsförslag har gjorts eftersom bokföringsdatumen för posterna är senare än bokföringsdatumet i fönstret DTA-förslagsleverantör Betalningar batchjobbbegäran. Vill du se posterna?
Lägg till följande kod i OnPreReport-utlösaren i rapporten DTA Suggest Vendor Payment (3010546):
VendorLedgEntryTemp.DELETEALL;Lägg till följande kod i OnPostReport-utlösaren i rapporten Föreslå leverantörsbetalning för DTA (3010546):
COMMIT; IF NOT VendorLedgEntryTemp.ISEMPTY THEN IF CONFIRM(Text50000) THEN FORM.RUNMODAL(0,VendorLedgEntryTemp);Ändra koden i utlösaren Leverantör – OnPostDataItem i rapporten Föreslå leverantörsbetalning för DTA (3010546) enligt följande:
Befintlig kodd.CLOSE; IF NoOfLinesInserted > 0 THEN BEGIN WriteBalAccountLine(ToGlLine); MESSAGE(Text011,NoOfLinesInserted,GlSetup."LCY Code",TotalAmtLCY); IF NoOfVendorsWithCM > 0 THEN MESSAGE(Text013 + Text014 + Text017,NoOfVendorsWithCM,VendWithCmTxt) END ELSE MESSAGE(Text018,FromDueDate,ToDueDate);Ersättningskod
d.CLOSE; IF VendorLedgEntryTemp.ISEMPTY THEN BEGIN IF NoOfLinesInserted > 0 THEN BEGIN WriteBalAccountLine(ToGlLine); MESSAGE(Text011,NoOfLinesInserted,GlSetup."LCY Code",TotalAmtLCY); IF NoOfVendorsWithCM > 0 THEN MESSAGE(Text013 + Text014 + Text017,NoOfVendorsWithCM,VendWithCmTxt) END ELSE MESSAGE(Text018,FromDueDate,ToDueDate); END;Ändra koden i funktionen WritePmtSuggestLines i rapporten Föreslå leverantörsbetalning för DTA (3010546) enligt följande:
Befintlig kod 1// CH2316.begin VendorLedgerEntryNo := VendEntry."Entry No."; // CH2316.end WITH ToGlLine DO BEGIN INIT; ...Ersättningskod 1
IF VendEntry."Posting Date" <= PostDate THEN BEGIN // CH0001 // CH2316.begin VendorLedgerEntryNo := VendEntry."Entry No."; // CH2316.end WITH ToGlLine DO BEGIN INIT; ...Befintlig kod 2
... VendorLedgerEntry2.GET(VendorLedgerEntryNo); VendorLedgerEntry2."On Hold" := 'DTA'; VendorLedgerEntry2."Accepted Payment Tolerance" := 0; VendorLedgerEntry2.MODIFY; // CH2316.ENDErsättningskod 2
... VendorLedgerEntry2.GET(VendorLedgerEntryNo); VendorLedgerEntry2."On Hold" := 'DTA'; VendorLedgerEntry2."Accepted Payment Tolerance" := 0; VendorLedgerEntry2.MODIFY; // CH2316.END END ELSE BEGIN VendorLedgEntryTemp := VendEntry; VendorLedgEntryTemp.INSERT; END;Lägg till en ny global variabel i rapporten LSV Suggest Collection (3010831) och ange sedan variabeln enligt följande:
- Namn: TempCustLedgEntry@1150042
- DataType: Post
- Undertyp: Kundbokspost
- Tillfälligt: Ja
Lägg till en ny textkonstant i rapporten LSV Suggest Collection (3010831) och ange sedan konstanten enligt följande:
- Namn: Text50000@1150064
- Konstant värde: ENU=Det finns en eller flera poster för vilka inga samlingsförslag har gjorts eftersom bokföringsdatumen för posterna är senare än samlingsdatumet i fönstret för begäran om jobbbegäran för LSV-samlingsförslag. Vill du se posterna?
Ändra koden i OnPreReport-utlösaren i rapporten LSV Suggest Collection (3010831) enligt följande:
Befintlig kodIF LsvJournal."LSV Bank Code" = '' THEN ERROR(Text020);Ersättningskod
IF LsvJournal."LSV Bank Code" = '' THEN ERROR(Text020); TempCustLedgEntry.DELETEALL;Lägg till följande kod i OnPostReport-utlösaren i rapporten LSV Suggest Collection (3010831):
COMMIT; IF NOT TempCustLedgEntry.ISEMPTY THEN IF CONFIRM(Text50000) THEN FORM.RUNMODAL(0,TempCustLedgEntry);Ändra koden i utlösaren Kund – OnPostDataItem i LSV Suggest Collection-rapporten (3010831) enligt följande:
Befintlig kodd.CLOSE; IF NoOfLinesInserted > 0 THEN BEGIN MESSAGE(Text007,NoOfLinesInserted,LsvSetup."LSV Currency Code",TotalAmt); IF LsvJournal."LSV Journal Description" = '' THEN BEGIN LsvJournal."LSV Journal Description" := FORMAT(STRSUBSTNO(Text021,LsvSetup."LSV Currency Code",FromDueDate,ToDueDate,Customer.GETFILTERS) ,-MAXSTRLEN(LsvJournal."LSV Journal Description")); END; LsvJournal."Credit Date" := CollectionDate; LsvJournal.MODIFY; // CH2813.BEGIN IF NoOfCustWithCreditMemo > 0 THEN IF NOT CONFIRM(Text009 + Text010 + Text012 + Text013,TRUE,NoOfCustWithCreditMemo,CustCreditMemoTxt) THEN ERROR(Text014); // CH2813.END END ELSE MESSAGE(Text015,FromDueDate,ToDueDate);Ersättningskod
d.CLOSE; IF TempCustLedgEntry.ISEMPTY THEN BEGIN // CH0001 IF NoOfLinesInserted > 0 THEN BEGIN MESSAGE(Text007,NoOfLinesInserted,LsvSetup."LSV Currency Code",TotalAmt); IF LsvJournal."LSV Journal Description" = '' THEN BEGIN LsvJournal."LSV Journal Description" := FORMAT(STRSUBSTNO(Text021,LsvSetup."LSV Currency Code",FromDueDate,ToDueDate,Customer.GETFILTERS) ,-MAXSTRLEN(LsvJournal."LSV Journal Description")); END; LsvJournal."Credit Date" := CollectionDate; LsvJournal.MODIFY; // CH2813.BEGIN IF NoOfCustWithCreditMemo > 0 THEN IF NOT CONFIRM(Text009 + Text010 + Text012 + Text013,TRUE,NoOfCustWithCreditMemo,CustCreditMemoTxt) THEN ERROR(Text014); // CH2813.END END ELSE MESSAGE(Text015,FromDueDate,ToDueDate); END;Ändra koden i funktionen WritePmtSuggestLines i LSV Suggest Collection-rapporten (3010831) enligt följande:
Befintlig kod 1// Collection amt: Cust. Entry amount - Cash disc. possible WITH ToLSVJourLine DO BEGIN // Ensure, that the Entry is only once in the LSV Journal Line LSVJourLineCheck.SETCURRENTKEY("Applies-to Doc. No."); LSVJourLineCheck.SETRANGE("Applies-to Doc. No.",ActCustLedgEntry."Document No."); ...Ersättningskod 1
// Collection amt: Cust. Entry amount - Cash disc. possible WITH ToLSVJourLine DO BEGIN IF CustLedgEntry."Posting Date" <= CollectionDate THEN BEGIN // Ensure, that the Entry is only once in the LSV Journal Line LSVJourLineCheck.SETCURRENTKEY("Applies-to Doc. No."); LSVJourLineCheck.SETRANGE("Applies-to Doc. No.",ActCustLedgEntry."Document No."); ...Befintlig kod 2
... TotalAmt := TotalAmt + "Collection Amount"; d.UPDATE(3,TotalAmt); // CH2813.BEGIN EntriesPerCust := EntriesPerCust + 1; // CH2813.END END;Ersättningskod 2
... TotalAmt := TotalAmt + "Collection Amount"; d.UPDATE(3,TotalAmt); // CH2813.BEGIN EntriesPerCust := EntriesPerCust + 1; // CH2813.END //Add the follong lines. END ELSE BEGIN TempCustLedgEntry := CustLedgEntry; TempCustLedgEntry.INSERT; END; //End of the lines. END;
Krav
Du måste ha någon av följande produkter installerade för att kunna använda den här snabbkorrigeringen:
- Den schweiziska versionen av Microsoft Dynamics NAV 2009 Service Pack 1 (SP1)
- Den schweiziska versionen av Microsoft Dynamics NAV 2009
- Den schweiziska versionen av Microsoft Dynamics NAV 5.0 Service Pack 1 (SP1)
- Den schweiziska versionen av Microsoft Dynamics NAV 5.0
Information om borttagning
Du kan inte ta bort den här snabbkorrigeringen.
Status
Microsoft har bekräftat att detta är ett problem i de Microsoft-produkter som anges i avsnittet "Gäller".
Obs! Det här är en "FAST PUBLISH"-artikel som skapats direkt från Microsofts supportorganisation. Den information som finns häri tillhandahålls i befintligt format som svar på framväxande problem. Till följd av hur snabbt materialet blir tillgängligt kan materialet innehålla typografiska fel och kan komma att revideras när som helst utan föregående meddelande. Se användningsvillkor för andra överväganden.