Calc currentPalletCount and FreePalletCount ax 2009 x++
The following code calc the CurrentPalletCount field and the FreePalletCount field of the Location.
static void calcCurrentFreePalletCount(Args _args) {
Counter currentLoad; Counter reservedLoad; Query query; QueryBuildDataSource queryBuildDataSource; QueryBuildRange queryBuildRange; Args args; FormRun formRun; FormDataSource formDataSource; WMSLocationSum wmsLocationSum;
while select forupdate wmsLocationSum {
if (wmsLocationSum.LocationType == WMSLocationType::OutputPort || wmsLocationSum.LocationType == WMSLocationType::ProductionInput) { currentLoad = 0; reservedLoad = 0; } else { currentLoad = wmsLocationSum.currentPalletCount(); reservedLoad = wmsLocationSum.reservedPalletCountCalculated(); }
if (wmsLocationSum.CurrentPalletCount != currentLoad || wmsLocationSum.FreePalletCount != wmsLocationSum.MaxPalletCount - currentLoad - reservedLoad) { args = new Args(); args.name(formstr(WMSLocation)); formRun = classfactory.formRunClass(args); formRun.init(); formDataSource = formRun.objectSet(); formDataSource.init(); query = formDataSource.query(); queryBuildDataSource = query.dataSourceTable(tablenum(WMSLocation)); queryBuildRange = queryBuildDataSource.addRange(fieldnum(WMSLocation, wmsLocationId)); queryBuildRange.value(queryValue(wmsLocationSum.wmsLocationId)); queryBuildRange = queryBuildDataSource.addRange(fieldnum(WMSLocation, InventLocationId)); queryBuildRange.value(queryValue(wmsLocationSum.InventLocationId));
if (wmsLocationSum.CurrentPalletCount != currentLoad) checkFailed(strfmt("@SYS50822", wmsLocationSum.CurrentPalletCount, currentLoad), '', SysInfoAction_FormrunQuery::newFormnameControlnameQuery(formstr(WMSLocation), identifierstr(currentPalletCount), query)); if (wmsLocationSum.FreePalletCount != wmsLocationSum.MaxPalletCount - currentLoad - reservedLoad) checkFailed(strfmt("@SYS58931", wmsLocationSum.FreePalletCount, wmsLocationSum.MaxPalletCount - currentLoad - reservedLoad), '', SysInfoAction_FormrunQuery::newFormnameControlnameQuery(formstr(WMSLocation), identifierstr(freePalletCount), query));
if (wmsLocationSum.CurrentPalletCount != currentLoad) { wmsLocationSum.CurrentPalletCount = currentLoad; } if (wmsLocationSum.FreePalletCount != wmsLocationSum.MaxPalletCount - currentLoad - reservedLoad) { wmsLocationSum.FreePalletCount = wmsLocationSum.MaxPalletCount - currentLoad - reservedLoad; } ttsbegin; wmsLocationSum.update(); ttscommit;
} }
}











