Dynamics AX: Ungültige/Stornierte Aufträge

In den Debitoren-Parametern gibt es ein Kennzeichen namens "Aufträge als ungültig markieren". Ist dieses Kennzeichen gesetzt, werden gelöschte Aufträge in den Tabellen SalesTableDelete und SalesTableLine gespeichert. Derartige Aufträge können unter Debitoren / Abfragen / Historie / Ungültige Aufträge eingesehen werden.
 
Leider gibt es standardmässig scheinbar keine Möglichkeit, solche Aufträge wiederherzustellen.

Mit Hilfe des nachstehenden Jobs sollte es aber möglich sein, den Auftrag zumindest grösstenteils wiederherzustellen. Dies ist aber stark abhängig davon, wie sehr Dynamics AX angepasst wurde und welche Daten erfasst wurden. Beispielsweise gehen Notizen/Anhänge aber auch Sonstige Zuschläge dabei verloren.
 
In AX 2009 heissen die Ungültigen Aufträge übrigens stornierte Aufträge.

static void RestoreVoidedSalesTable(Args _args)
{
    SalesTableDelete    salesTableDelete;
    salesLineDelete     salesLineDelete;
    SalesTable          salesTableTmp;
    SalesLine           salesLineTmp;
    salesId             restoreSalesId;
    int                 lines;
    salesLineDelete     salesLineDeleteDelete;
    ;
    restoreSalesId = 'A050239';
    try
    {
        ttsbegin;
        salesTableDelete = salesTableDelete::find(restoreSalesId, true);
        salesTableTmp.clear();
        salesTableTmp.overwriteSystemfields(true);
        salesTableTmp.data(conpeek(salesTableDelete.SalesTable,1));
        salesTableTmp.doInsert();
        SalesLineDelete = SalesLineDelete::Find(salesTableDelete.SalesId);
        while (salesLineDelete)
        {
            lines++;
            
            salesLineTmp.clear();
            salesLineTmp.overwriteSystemfields(true);
            salesLineTmp.data(conpeek(salesLineDelete.SalesLine,1));
            salesLineTmp.doInsert();
            next salesLineDelete;
        }
        // Löschen des ungültigen Auftrages
        salesTableDelete.delete();
        SalesLineDelete.clear();
        SalesLineDelete = SalesLineDelete::Find(restoreSalesId);
        while (salesLineDelete)
        {
            salesLineDeleteDelete =
            salesLineDelete::findRecId(salesLineDelete.RecId, true);
            salesLineDeleteDelete.delete();
            
            next salesLineDelete;
        }
        ttscommit;
        info(strFmt("Auftrag '%1' inkl. %2 Positionen wiederhergestellt",
            restoreSalesId,
            int2str(lines)));
    }
    catch (Exception::Error)
    {
        throw error(strFmt("Wiederherstellung des Auftrages '%1' fehlgeschlagen", restoreSalesId));
    }
}

Verwendung des Jobs auf eigene Gefahr! Ich kann nur abraten, einen solcherart wiederhergestellten Auftrag weiterzuverwenden.

Dieser Beitrag bezieht sich auf die Version:
Dynamics AX 2009

Kommentar hinzufügen
 
 

 

 
 
 
Beiträge des aktuellen Monats
April 2024
MoDiMiDoFrSaSo
1234567
891011121314
15161718192021
22232425262728
2930 
 
© 2006-2024 Heinz Schweda | Impressum | Kontakt | English version | Mobile Version
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.  Mehr dazu