How to pass the value in processData?

Hi Guys!

First of all i am a beginner in developing AX (X++).

Second, is my subject is right for my problem? :slight_smile: Please correct me tnx.

Okay here’s my very simple problem, but it is hard to do it in X++, hehe sorry about that …

I need to modify one(1) base on the users requirements.

This is not a SSRS reports is a REPORTs (MorhpX).

The challenge is to not show in PICKLIST Report the item has no Inventory.

As you can see in the above image the third item has no onhand qty or Inventory.

Here’s the code:

//CLASS DECLARATION
public class ReportRun extends ObjectRun
{
    Wiz_DevPickList                   Wiz_DevPickList;


    SalesTable              parmSalesTable;
    SalesLine               parmSalesLine;
    InventOnhandReserve             inventOnhandReserve;
    Amount                  grandTotal;

    //Header
    SalesId                 salesId;
    LogisticsAddressing     address;
    LogisticsDeliveryName               name;
    //SalesName               name;
    TransDateTime           transDateTime, datePrinted;
    DlvModeTxt              dlvMode;

    //Footer
    //AGSCustRef              customRef;
    Name                    Remarks;
    name                    Remarks2;
    DirPartyName            dirPartyName;
    InventTransWMS_Pick     inventTransWMS_Pick;
    InventQtyAvailPhysical  availableQuantity;
    SalesBarCode            salesBarCode;
    BarCodeEAN128String     barcode;


     PdsCWOnOrder                cwOnOrder;

    //Worx

    WizIntRemarks       IntRemarks;

}

//Barcode

public BarCodeString convertBarcodeString(ItemBarCode _itemBarcode)
{
    Barcode barcodeClass;
    ;

    barcodeClass = Barcode::construct(BarcodeType::Code128);
    barcodeClass.string(true, _itemBarcode);
    barcodeClass.encode();

    return barcodeClass.barcodeStr();
}

//Initialization

public void init()
{
   
    ;
    if(element.args().dataset() == tableNum(SalesTable))
    {
        parmSalesTable = element.args().record();
    }

    this.printJobSettings().suppressScalingMessage(true);
    element.processReportData();

    super();
} 

//Insert AvailableQty

private void insertAvailableQty(ItemId _itemId)
{
    InventDim           inventDim;
    InventSum           inventSum;
    InventOnhand        inventOnHand;
    inventDimParm       inventDimParm;
    SalesLine           salesLine;
    ItemId              itemId;
    Qty                 qty;
    InventTrans         inventTrans;
    InventItemBarcode   inventItemBarcode;
    boolean set;
   
    ;


    inventDimParm.initFromInventDim(inventDim);
    qty = inventOnHand::newParameters(inventSum.ItemId, inventDim, inventDimParm).inventSum().PhysicalInvent;

    Wiz_DevPickList.clear();
    Wiz_DevPickList.initValue();

    ttsBegin;
    
    while select sum(PhysicalInvent) from inventSum
        join inventDim
        group by inventDim.wMSLocationId, inventDim.InventLocationId
        where inventSum.ItemId == _itemId
        && inventSum.InventDimId == inventDim.inventDimId
    {
        if (inventSum.PhysicalInvent > 0)
        {
            Wiz_DevPickList.InventLocationId    = inventdim.InventLocationId;
            Wiz_DevPickList.wMSLocationId       = inventdim.wMSLocationId;
            Wiz_DevPickList.PhysicalInvent      =  InventSum.PhysicalInvent;
            
            Wiz_DevPickList.insert();
            element.send(Wiz_DevPickList);
            
        }
    }
    ttsCommit;
}


//PROCES DATA

public void processReportData()
{
    RecId                   recId;

    Query                   q;
    QueryRun                tradeLoopTrans;
    QueryBuildRange         qbr;
    QueryBuildDataSource    qbds;

    SalesTable              salesTable;
    SalesLine               salesLine;
    CustInvoiceTrans        custInvoiceTrans;
    PurchTable              purchTable;

    InventOnhand            inventOnHand;
    InventDim               inventDim;
    InventDimParm           inventDimParm;
    InventSum               inventSum;
    InventQty               availQty;
    ItemId                  _itemId;
    DirPartyTable           dirpartyTable;
    InventTrans             inventTrans;
    InventTable         inventTable;
    InventTransOrigin   inventTransOrigin;

    InventTrans inventTransLocal;
    InventTransRefId _refId;
    UnitIDInventory inventUnit;
    real     Orderedqty;
    real     Orderedqty2;
    real     Orderedqty3;
    int counter;
    WMSOrder         _wmsOrderDefault;
    container conCompanies  = ['wiz', 'inf'];
    str 4 sCompanyPrevious = " ";
    int iCountCompanies = 0;

    Counter a;
    salesTable = salesTable::findRecId(parmSalesTable.RecId);

    tradeLoopTrans = new TradeLoopTrans(salesTable, tableNum(salesLine)).buildQueryRun();

     inventDimParm.initFromInventDim(InventDim);
    
    
    datePrinted         = dateTimeUtil::getSystemDateTime();
    salesId             = salesTable.SalesId;
    address             = salesTable.deliveryAddress1();

  name                = salesTable.DeliveryName;
    transDateTime       = salesTable.createdDateTime;

    DirPartyName        = HcmWorker::worker2Name(HcmWorker::userId2Worker(curUserId()));
    ttsBegin;

    while(tradeLoopTrans.next())
    {
        SalesLine = tradeLoopTrans.get(tableNum(SalesLine));

        Wiz_DevPickList.clear();
        Wiz_DevPickList.initValue();

        salesId                                     = SalesTable::find(salesLine.SalesId).SalesId;
        address                                     = SalesTable::find(salesLine.SalesId).deliveryAddress1();

        transDateTime                               = SalesTable::find(salesLine.SalesId).createdDateTime;

        dlvMode                                     = DlvMode::find(SalesTable.DlvMode).Txt;
        DirPartyName        = HcmWorker::worker2Name(HcmWorker::userId2Worker(curUserId()));


        while   select crossCompany ShipCarrierDeliveryContact, WizIntRemarks from salesTable
            where salesTable.InterCompanyOrigin == 0
            && salesTable.SalesId == salesLine.SalesId
        {
            Remarks = salesTable.ShipCarrierDeliveryContact;
            IntRemarks = salesTable.WizIntRemarks;

        }
        
        while  select Qty from inventTransLocal
            join inventTransOrigin
            where inventTransLocal.InventTransOrigin == inventTransOrigin.RecId
            && inventTransLocal.StatusIssue != StatusIssue::Picked
            && inventTransLocal.StatusIssue != StatusIssue::Deducted
            && inventTransOrigin.ReferenceId == salesline.SalesId
            && inventTransLocal.ItemId == inventTransOrigin.ItemId
            && inventTransLocal.ItemId == salesLine.ItemId
            && inventTransLocal.StatusIssue == StatusIssue::OnOrder
        { 
            Wiz_DevPickList.ItemId                     = salesLine.ItemId;
            Wiz_DevPickList.Description                = salesLine.itemName();
            Wiz_DevPickList.SalesUnit                = salesLine.SalesUnit; 
            Wiz_DevPickList.itemBarCode              = this.convertBarcodeString(salesLine.BarCode); 
            
            Orderedqty = inventTransLocal.Qty * -1;
            Wiz_DevPickList.SalesQty = Orderedqty;
            
            
            Wiz_DevPickList.insert();
            element.send(Wiz_DevPickList);
            this.insertAvailableQty(SalesLine.ItemId);
        }
    }

    ttsCommit;
}


Simple If statement . gosh ! :frowning:
sorry guys …

I am begging to you all, please help me.

TIA.

You can check if the item has onhand even before inserting into Wiz_DevPickList and the related on hand details?
Use inventOnhand class,

inventOnhand = InventOnhand::newItemId(‘TestItem’);
inventOnhand.physicalInvent();

BTW, why you are using a Morphx report in AX 2012?

Hi Kranthi,

Thank you for your quick response. :slight_smile:

Okay i will do it first and i give you feed back later.

Actually when came in this company, this reports is exist already.