Job to reset the price of return orders with price in Ax 2009

Job to reset the price of return orders with price in Ax 2009.


    boolean                 updateprice = true;
    SalesTable              salesHeader;
    SalesLine               saleLine, saleLineUpdate;
    DataArea                dataArea ;
    TextIo                  file;
    FileName                filename = @"c:\temp\RMAWithPriceList.txt";
    FileIoPermission        permission;
    #File
    ;

    try
    {
        // Create the permission class
        permission = new FileIoPermission(filename, #io_write);
        // Add a request for permission before new TextIo()
        permission.assert();
        // Create the TextIo object
        file = new TextIo(filename, #io_write);
        if (!file)
        throw Exception::Error;
        // Specify the delimiters
        file.outRecordDelimiter(#delimiterCRLF);
        file.outFieldDelimiter(";");

        file.write("Company","SalesId","SalesLineNum","UnitPrice","NetAmount","SalesStatus","Error");
        while select dataArea
            order by Id desc
            where dataArea.isVirtual == NoYes::No
        {
            changeCompany(dataArea.Id)
            {
                salesHeader = null;
                saleLine = null;
                saleLineUpdate = null;

                while select * from saleLine
                    where (saleLine.LineAmount != 0 || saleLine.SalesPrice != 0)
                    join SalesId, SalesStatus from salesHeader
                        where salesHeader.SalesId == saleLine.SalesId
                        && salesHeader.SalesType == SalesType::ReturnItem
                        && (salesHeader.SalesStatus == SalesStatus::Backorder ||
                        salesHeader.SalesStatus == SalesStatus::Delivered )
                        && salesHeader.ReturnStatus != ReturnStatusHeader::Canceled
                        && salesHeader.ReturnStatus != ReturnStatusHeader::Created
                {
                    try
                    {
                        if (updateprice)
                        {
                            ttsbegin;
                            saleLineUpdate = SalesLine::findRecId(saleLine.RecId, true);
                            saleLineUpdate.PriceUnit = 0;
                            saleLineUpdate.SalesPrice = 0;
                            saleLineUpdate.LineAmount = 0;
                            saleLineUpdate.update();
                            ttsCommit;
                        }
                        // Write the data to the file
                        file.write(dataArea.Id, salesHeader.Salesid, saleLine.LineNum, saleLine.PriceUnit, saleLine.LineAmount, enum2str(salesHeader.SalesStatus), 0);
                    }
                    catch
                    {
                        // Write the data to the file
                        file.write(dataArea.Id, salesHeader.Salesid, saleLine.LineNum, saleLine.PriceUnit, saleLine.LineAmount, enum2str(salesHeader.SalesStatus), 1);
                        continue;
                    }
                }

            }
        }
    }
    catch(Exception::Error)
    {
        error("You do not have access to write the file to the selected folder");
    }
    // Revert the access privileges
    CodeAccessPermission::revertAssert();
    info("Execution completed");

Comments

Popular posts from this blog

Dynamics 365 Finance & Operations Release pipelines import.

Attaching a user selected document to a purchase order using x++ job (Runnable class) in Dynamics 365 for Finance and Operations

Claude AI Models Comparison (Updated: July 2026): Haiku 4.5 vs Sonnet 5 vs Opus 4.8 vs Fable 5