Hi Guys!
First of all i am a beginner in developing AX (X++).
Second, is my subject is right for my problem? 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 !
sorry guys …
I am begging to you all, please help me.
TIA.