Create sys operations framework , should prompt FromDate and ToDate Site and warehouse, print the purchase orders received but not invoiced
step1 : Create a contract class
[DataContractAttribute]
class BAS_PurchOrderContract
{
FromDate fromDate;
ToDate toDate;
InventSiteId inventSiteId;
InventLocationId inventLocationId;
[DataMemberAttribute("From Date"),
AifCollectionTypeAttribute("_fromdate", Types::Date)]
public FromDate parmPurchaccount(FromDate _fromdate = fromDate)
{
fromDate = _fromdate;
return fromDate;
}
[DataMemberAttribute("To Date"),
AifCollectionTypeAttribute("_todate", Types::Date)]
public ToDate parmTodateaccount(ToDate _todate = toDate)
{
toDate = _todate;
return toDate;
}
[DataMemberAttribute("Site Id"),
AifCollectionTypeAttribute("_siteid", Types::String)]
public InventSiteId parmsiteaccount(InventSiteId _siteid = inventSiteId)
{
inventSiteId = _siteid;
return inventSiteId;
}
[DataMemberAttribute("Warehouse Id"),
AifCollectionTypeAttribute("_warehouseid", Types::String)]
public InventLocationId parmwarehouseaccount(InventLocationId _warehouseid = inventLocationId)
{
inventLocationId = _warehouseid;
return inventLocationId;
}
}
step2 : create the service class
class BAS_PurchOrderService extends SysOperationServiceBase
{
public void purchorderservice(BAS_PurchOrderContract _purchordercontract)
{
Query query;
QueryBuildDataSource queryBuildDataSource;
QueryBuildRange range1, range2,range3, range4;
PurchTable purchTable;
QueryRun queryRun;
// Create a new query object
query = new Query();
// Add the data source for the table you want to query
queryBuildDataSource = query.addDataSource(tableNum(PurchTable));
// Create the first date range
range1 = queryBuildDataSource.addRange(fieldNum(PurchTable, DeliveryDate));
range1.value(strFmt('%1,%2', _purchordercontract.parmPurchaccount(), _purchordercontract.parmTodateaccount())); // Specify your first date range here
range2 = queryBuildDataSource.addRange(fieldNum(PurchTable, PurchStatus));
range2.value('Received');
range3 = queryBuildDataSource.addRange(fieldNum(PurchTable, InventSiteId));
range3.value(_purchordercontract.parmsiteaccount());
range4 = queryBuildDataSource.addRange(fieldNum(PurchTable, InventLocationId));
range4.value(_purchordercontract.parmwarehouseaccount());
// Execute the query
queryRun = new QueryRun(query);
while (queryRun.next())
{
purchTable = queryRun.get(tableNum(PurchTable));
info(strfmt("%1",purchTable.PurchId));
}
}
}
step3 : create the controller class
class BAS_PurchOrderController extends SysOperationServiceController
{
protected void new()
{
super(classStr(BAS_PurchOrderService), methodStr(BAS_PurchOrderService, purchorderservice), SysOperationExecutionMode::Synchronous);
}
/// <summary>
/// To construct LocationRecordsController class
/// </summary>
public static BAS_PurchOrderController construct(SysOperationExecutionMode _executionMode = SysOperationExecutionMode::Synchronous)
{
BAS_PurchOrderController controller;
controller = new BAS_PurchOrderController();
controller.parmExecutionMode(_executionMode);
return controller;
}
/// <summary>
/// Main method of LocationRecordsController class
/// </summary>
public static void main(Args _args)
{
BAS_PurchOrderController controller;
controller = BAS_PurchOrderController::construct();
controller.parmArgs(_args);
controller.startOperation();
}
/// <summary>
/// To set caption of a batch job
/// </summary>
public ClassDescription defaultCaption()
{
return "Location Records";
}
}
Comments
Post a Comment