x++ code to get workline details using custom service in D365 F&O
Request Class :
[DataContractAttribute("BASWorkLineDetailsRequestContract")]
class BASWorkLineDetailsRequestContract
{
str workId;
str dataAreaId;
[DataMemberAttribute("WorkId")]
public str parmworkId(str _workId = workId)
{
workId = _workId;
return workId;
}
[DataMemberAttribute("dataAreaId")]
public str parmdataAreaId(str _dataAreaId = dataAreaId)
{
dataAreaId = _dataAreaId;
return dataAreaId;
}
}
Response Class :
[DataContractAttribute("BASWorkLineDetailsResponseContract")]
class BASWorkLineDetailsResponseContract
{
str workStatus;
str site;
str warehouse;
str itemId;
str location;
str productName;
real workQuantity;
real remaningQuantity;
str unit;
str workType;
str size;
str color;
str configuration;
List errorList;
[DataMember('WorkStatus')]
public str parmWorkStatus(str _workStatus = workStatus)
{
workStatus = _workStatus;
return workStatus;
}
[DataMember('Site')]
public str parmSite(str _site = site)
{
site = _site;
return site;
}
[DataMember('Warehouse')]
public str parmWarehouse(str _warehouse = warehouse)
{
warehouse = _warehouse;
return warehouse;
}
[DataMember('ItemId')]
public str parmItemId(str _itemId = itemId)
{
itemId = _itemId;
return itemId;
}
[DataMember('Location')]
public str parmLocation(str _location = location)
{
location = _location;
return location;
}
[DataMember('ProductName')]
public str parmProductName(str _productName = productName)
{
productName = _productName;
return productName;
}
[DataMember('WorkQuantity')]
public real parmWorkQuantity(real _workQuantity = workQuantity)
{
workQuantity = _workQuantity;
return workQuantity;
}
[DataMember('RemaningQuantity')]
public real parmRemaningQuantity(real _remaningQuantity = remaningQuantity)
{
remaningQuantity = _remaningQuantity;
return remaningQuantity;
}
[DataMember('Unit')]
public str parmUnit(str _unit = unit)
{
unit = _unit;
return unit;
}
[DataMember('WorkType')]
public str parmWorkType(str _workType = workType)
{
workType = _workType;
return workType;
}
[DataMember('Size')]
public str parmSize(str _size = size)
{
size = _size;
return size;
}
[DataMember('Color')]
public str parmColor(str _color = color)
{
color = _color;
return color;
}
[DataMember('Configuration')]
public str parmConfiguration(str _configuration = configuration)
{
configuration = _configuration;
return configuration;
}
[DataMember('ErrorList')]
public List parmErrorList(List _errorList = errorList)
{
errorList = _errorList;
return errorList;
}
private static BASWorkLineDetailsResponseContract construct()
{
return new BASWorkLineDetailsResponseContract();
}
public static BASWorkLineDetailsResponseContract newFromTableRecord(WHSWorkLine _workLine,List _errorList, InventDim _inventDim)
{
BASWorkLineDetailsResponseContract contract = BASWorkLineDetailsResponseContract::construct();
contract.parmWorkStatus(enum2Str(_workLine.WorkStatus));
contract.parmSite(_inventDim.InventSiteId);
contract.parmWarehouse(_inventDim.InventLocationId);
contract.parmItemId(_workLine.ItemId);
contract.parmLocation(_workLine.WMSLocationId);
contract.parmProductName(_workLine.displayItemName());
contract.parmWorkQuantity(_workLine.QtyWork);
contract.parmRemaningQuantity(_workLine.QtyRemain);
contract.parmUnit(_workLine.UnitId);
contract.parmWorkType(enum2Str(_workLine.WorkType));
contract.parmSize(_inventDim.InventSizeId);
contract.parmColor(_inventDim.InventColorId);
contract.parmConfiguration(_inventDim.configId);
contract.parmErrorList(_errorList);
return contract;
}
}
Helper Class :
class BASWorkLineDetailsHelper
{
str message;
[AifCollectionTypeAttribute('return', Types::Class, classStr(BASWorkLineDetailsResponseContract))]
public List getWorkOrderLineDetails(str _workId , str _dataAreaId)
{
str workId = _workId;
str dataAreaId = _dataAreaId;
List workOrderList = new List(Types::Class);
WHSWorkTable workTable;
WHSWorkLine workLine;
InventDim inventDim;
changecompany(dataAreaId)
{
List errorList = new List(Types::String);
workTable = WHSWorkTable::find(workId);
if (!workTable)
{
message = strFmt("Please enter a valid workId");
errorList.addEnd(message);
BASWorkLineDetailsResponseContract workOrderData = new BASWorkLineDetailsResponseContract();
workOrderData = BASWorkLineDetailsResponseContract::newFromTableRecord(workLine,errorList,inventDim);
workOrderList.addEnd(workOrderData);
}
else
{
Query query;
QueryRun queryRun;
QueryBuildDataSource queryBuildDataSource,queryBuildDataSource1;
QueryBuildRange queryBuildRange;
query = new Query();
queryBuildDataSource = query.addDataSource(TableNum(WHSWorkLine));
queryBuildDataSource1 = queryBuildDataSource.addDataSource(TableNum(InventDim));
queryBuildDataSource1.relations(true);
queryBuildRange = queryBuildDataSource.addRange(FieldNum(WHSWorkLine, WorkId));
queryBuildRange.value(workId);
queryRun = new QueryRun(query);
while(queryRun.next())
{
workLine = queryRun.get(tableNum(WHSWorkLine));
inventDim = queryRun.get(tableNum(InventDim));
BASWorkLineDetailsResponseContract workOrderData = new BASWorkLineDetailsResponseContract();
workOrderData = BASWorkLineDetailsResponseContract::newFromTableRecord(workLine,errorList,inventDim);
workOrderList.addEnd(workOrderData);
}
}
return workOrderList;
}
}
}
Service Class :
[AifCollectionTypeAttribute('return', Types::Class, classStr(BASWorkLineDetailsResponseContract))]
public List WorkOrderLineDetails(BASWorkLineDetailsRequestContract _contract)
{
BASWorkLineDetailsHelper workLineDetails = new BASWorkLineDetailsHelper();
str workId = _contract.parmworkId();
str dataAreaId = _contract.parmdataAreaId();
List workOrderList = new List(Types::Class);
workOrderList = workLineDetails.getWorkOrderLineDetails(workId,dataAreaId);
return workOrderList;
}
Comments
Post a Comment