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
Juni 2022
MoDiMiDoFrSaSo
 12345
6789101112
13141516171819
20212223242526
27282930 
 
© 2006-2022 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