class IS_CustomsUIBuilder extends SysOperationAutomaticUIBuilder
{
IS_CustomContract _contract;
DialogField dialogItemID,dialogPort,dialogSO,dialogAllCust,dialogFromDate, dialogToDate;
SysLookupMultiSelectGrid msCtrlCustNames, msCtrlSO, msCtrlItemId;
public void build()
{
_contract = this.dataContractObject();
//dialogItemID = this.addDialogField(methodStr(IS_CustomContract, parmMultiSelectItemNumbers), _contract);
//dialogSO = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
//dialogFromDate = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
//dialogToDate = this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders), _contract);
}
public void postBuild()
{
// super();
this.showallparameters();
_contract = this.dataContractObject();
//TransDate fromDate = _contract.parmFromDate();
//TransDate toDate = _contract.parmToDate();
//if(!fromDate || !toDate)
//{
// throw error("Please specify From date and to Date before proceeding.");
//}
// dialogFromDate = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmFromDate));
// dialogToDate = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmToDate));
dialogItemID = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmMultiSelectItemNumbers));
dialogItemID.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,ItemidLookup), this);
dialogPort = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmPort));
dialogPort.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,portLookup), this);
dialogSO = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
dialogSO.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder,SOLookup), this);
dialogAllCust = this.bindInfo().getDialogField(_contract, methodStr(IS_CustomContract, parmAllCust));
dialogAllCust.registerOverrideMethod(methodStr(FormStringControl,lookup),methodStr(IS_CustomsUIBuilder, allCustomersLookup), this);
}
public void postRun()
{
// this.dataContractObject().parmallCustomers('');
//Query query = new Query();
// QueryBuildDataSource qbdsCust = query.addDataSource(tableNum(CustTable));
// qbdsCust.fields().addField(fieldNum(CustTable, AccountNum));
// container selectedFields = [tableNum(CustTable), fieldNum(CustTable, AccountNum)];
// SysLookupMultiSelectCtrl::constructWithQuery(this.dialog().dialogForm().formRun(), dialogAllCust.control(), query, false, selectedFields);
}
public void allCustomersLookup(FormStringControl _control)
{
TransDate fromDate = this.dataContractObject().parmFromDate();
TransDate toDate = this.dataContractObject().parmToDate();
Query query = new Query();
QueryBuildDataSource qbdsTransport = query.addDataSource(tableNum(IS_Salesline_Transport));
QueryBuildDataSource qbdsCustTable = qbdsTransport.addDataSource(tableNum(CustTable));
qbdsCustTable.relations(true);
qbdsCustTable.joinMode(JoinMode::InnerJoin);
qbdsCustTable.addLink(fieldNum(CustTable, AccountNum), fieldNum(IS_Salesline_Transport, CustAccount));
QueryBuildRange rangeETD = qbdsTransport.addRange(fieldNum(IS_Salesline_Transport, ETD));
rangeETD.value(SysQuery::range(fromDate, toDate));
qbdsTransport.fields().clearFieldList();
qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, CustAccount));
qbdsCustTable.addSelectionField(fieldNum(CustTable, Party));
qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
SysLookupMultiSelectGrid::lookup(query,_control, _control, _control, conNull());
}
public void SOLookup(FormStringControl _control)
{
TransDate fromDate = _contract.parmFromDate();
TransDate toDate = _contract.parmToDate();
Query query = new Query();
QueryBuildDataSource qbdsSales = query.addDataSource(tableNum(IS_Salesline_Transport));
// ✅ Apply ETD date filter (Ensure Sales Orders are shown based on FromDate & ToDate)
if (fromDate && toDate)
{
QueryBuildRange rangeETD = qbdsSales.findRange(fieldNum(IS_Salesline_Transport, ETD));
if (!rangeETD)
{
rangeETD = qbdsSales.addRange(fieldNum(IS_Salesline_Transport, ETD));
}
if (!rangeETD.value())
{
rangeETD.value(SysQuery::range(fromDate, toDate));
}
}
qbdsSales.fields().clearFieldList();
qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
qbdsSales.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
// ✅ Perform the lookup with the filtered query
SysLookupMultiSelectGrid::lookup(query, _control, _control, _control, conNull());
}
public void ItemidLookup(FormStringControl _control)
{
TransDate fromDate = this.dataContractObject().parmFromDate();
TransDate toDate = this.dataContractObject().parmToDate();
Query query = new Query();
QueryBuildDataSource qbdsTransport = query.addDataSource(tableNum(IS_Salesline_Transport));
QueryBuildRange rangeETD = qbdsTransport.addRange(fieldNum(IS_Salesline_Transport, ETD));
rangeETD.value(SysQuery::range(fromDate, toDate));
qbdsTransport.fields().clearFieldList();
qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ItemId));
qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, ETD));
qbdsTransport.addSelectionField(fieldNum(IS_Salesline_Transport, SalesId));
SysLookupMultiSelectGrid::lookup(query,_control, _control, _control, conNull());
}
public void portLookup(FormStringControl _formControl)
{
TransDate fromDate = this.dataContractObject().parmFromDate();
TransDate toDate = this.dataContractObject().parmToDate();
LogisticsAddressCountryRegionId selectedCountry = this.dataContractObject().parmCountry();
Query query = new Query();
QueryBuildDataSource qbds = query.addDataSource(tableNum(TMSHubMaster));
qbds.fields().clearFieldList();
qbds.addSelectionField(fieldNum(TMSHubMaster, HubMasterCode));
qbds.addSelectionField(fieldNum(TMSHubMaster, Name));
if (selectedCountry)
{
qbds.addRange(fieldNum(TMSHubMaster, Location)).value(queryValue(selectedCountry));
}
SysTableLookup sysLookup = SysTableLookup::newParameters(tableNum(TMSHubMaster), _formControl);
sysLookup.parmQuery(query);
sysLookup.addLookupfield(fieldNum(TMSHubMaster, HubMasterCode), true);
sysLookup.addLookupfield(fieldNum(TMSHubMaster, Name), false);
sysLookup.performFormLookup();
}
private void showallparameters()
{
this.addDialogField(methodStr(IS_CustomContract, parmFromDate));
this.addDialogField(methodStr(IS_CustomContract, parmToDate));
this.addDialogField(methodStr(IS_CustomContract, parmCountry));
this.addDialogField(methodStr(IS_CustomContract, parmPort));
this.addDialogField(methodStr(IS_CustomContract, parmPrimaryCustomer));
this.addDialogField(methodStr(IS_CustomContract, parmAllCust));
this.addDialogField(methodStr(IS_CustomContract, parmMultiSelectItemNumbers));
this.addDialogField(methodStr(IS_CustomContract, parmMutliSelectSalesOrders));
this.addDialogField(methodStr(IS_CustomContract, parmisArabic));
}
}