3.0.2.1 Vehicle Classes

This commit is contained in:
Andy Howard
2025-11-29 17:03:00 +00:00
parent 0c43bbad77
commit 166fa3a352
47 changed files with 1412 additions and 651 deletions
@@ -368,9 +368,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// AssetCategory column definitions.
// Item column definitions.
private static readonly String AliasAssetCategory = "aAstCat";
private static readonly String colNameAssetCategory_AssetCount = "AssetCount";
private static readonly String dataNameAssetCategory_AssetCount = "AssetCount";
private void SetAssetCategoryColDfn
(ColumnDfn col, String caption, int width, SbmDbDfn.ColumnIdx dbCol,
@@ -384,7 +384,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
col.MaxLength = (int)Internals.GetColTextLen(dbCol);
}
//-------------------------------------------------------------------
// Getting prmAssetCategory column definition.
// Configure item column definition.
public override ColumnDfn GetAssetCategoryColumnDfn(SbmAssetCategory.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
@@ -432,6 +432,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
SetAssetCategoryColDfn(columnDfn, "AssocId Customer", 45, SbmDbDfn.ColumnIdx.SaAssetCategory_AssocIdCustomer, ColumnAlignment.Right, DataValue.DataType.Long);
columnDfn.ReadOnly = true;
break;
// Derived properties.
case SbmAssetCategory.Column.AssetCount:
SetAssetCategoryColDfn(columnDfn, "Asset count", 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = dataNameAssetCategory_AssetCount;
break;
// Common properties.
case SbmAssetCategory.Column.Notes:
SetAssetCategoryColDfn(columnDfn, "Notes", 200, SbmDbDfn.ColumnIdx.SaAssetCategory_Notes);
@@ -459,10 +466,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
columnDfn.DateFormat = "d-MMM-yy";
columnDfn.ReadOnly = true;
break;
case SbmAssetCategory.Column.AssetCount:
SetAssetCategoryColDfn(columnDfn, "Asset Count", 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = colNameAssetCategory_AssetCount;
break;
}
if (!String.IsNullOrEmpty(caption))
columnDfn.Caption = caption;
@@ -657,7 +660,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
qryAssetCount.Tables.Add(tableAsset, aliasAsset);
qryAssetCount.Columns.Add($"Count({SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaAsset_Id, aliasAsset)})");
qryAssetCount.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaAsset_AssetCategoryId, aliasAsset)}={SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaAssetCategory_Id, AliasAssetCategory)}");
query.Columns.Add($"({qryAssetCount.BuildQuery()})", colNameAssetCategory_AssetCount);
query.Columns.Add($"({qryAssetCount.BuildQuery()})", dataNameAssetCategory_AssetCount);
}
//---------------------------------------------------------------
@@ -109,7 +109,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAsset_ItemType) + "=" + ((int)Sbm.ItemType.Vehicle).ToString());
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAsset_ItemId) + "=" + vehicleId.ToString());
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAsset_ItemId)}={SysId.ToString(vehicleId)}");
return Database.GetRowCount(tableAsset, filter.Concat(" AND ", "(", ")")) > 0;
}
return false;
@@ -119,12 +119,14 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
ClearErrorState();
if (!SysId.IsValid(vehicleId)) return false;
String tableAsset = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAsset);
String tableAssetProcess = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAssetProcess);
if (Database.TableExists(tableAssetProcess))
if (Database.TableExists(tableAsset) && Database.TableExists(tableAssetProcess))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAssetProcess_AssetId) + "=" + vehicleId.ToString());
return Database.GetRowCount(tableAssetProcess, filter.Concat(" AND ", "(", ")")) > 0;
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAsset_ItemId)}={SysId.ToString(vehicleId)}");
filter.Add($"Exists (Select 1 From {tableAssetProcess} Where {SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaAssetProcess_AssetId)}={SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaAsset_Id, aliasAsset)})");
return Database.GetRowCount($"{tableAsset} As {aliasAsset}", filter.Concat(" AND ", "(", ")")) > 0;
}
return false;
}
@@ -136,7 +138,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (Database.TableExists(tableVehicleEvent))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleEvent_VehicleId) + "=" + vehicleId.ToString());
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleEvent_VehicleId)}={SysId.ToString(vehicleId)}");
return Database.GetRowCount(tableVehicleEvent, filter.Concat(" AND ", "(", ")")) > 0;
}
return false;
@@ -149,7 +151,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (Database.TableExists(tableVehicleFeature))
{
List<String> filter = new List<String>();
filter.Add(SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleFeature_VehicleId) + "=" + vehicleId.ToString());
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleFeature_VehicleId)}={SysId.ToString(vehicleId)}");
return Database.GetRowCount(tableVehicleFeature, filter.Concat(" AND ", "(", ")"));
}
return 0;
@@ -52,7 +52,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (Database.TableExists(tableVehicle))
{
List<String> filter = new List<String>();
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleFeature_VehicleId)}={SysId.ToLong(vehicleClassId)}");
filter.Add($"{SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicle_VehicleClassId)}={SysId.ToLong(vehicleClassId)}");
return Database.GetRowCount(tableVehicle, filter.Concat(" AND ", "(", ")"));
}
return 0;
@@ -179,7 +179,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Get VehicleClass.
// Get Item.
public override SbmVehicleClass GetVehicleClass(SbmVehicleClass.Params prm)
{
return GetVehicleClass(GetVehicleClassQueryFilter(prm).Concat(" AND ", "(", ")"));
@@ -229,7 +229,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Create VehicleClass.
// Create Item.
public override SbmVehicleClass CreateVehicleClass()
{
ClearErrorState();
@@ -244,7 +244,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Validate VehicleClass.
// Validate Item.
public override bool IsValidVehicleClassData(SbmVehicleClass.Data data, SbmVehicleClass.ErrField errField)
{
ClearErrorState();
@@ -253,7 +253,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Insert VehicleClass.
// Insert Item.
public override bool InsertVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
@@ -283,7 +283,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Update VehicleClass.
// Update Item.
public override bool UpdateVehicleClass(SbmVehicleClass vehicleClass, DbUpdateInfo dbUpdateInfo)
{
ClearErrorState();
@@ -321,7 +321,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Delete VehicleClass.
// Delete Item.
public override bool VehicleClassCanBeDeleted(SbmVehicleClass vehicleClass)
{
ClearErrorState();
@@ -422,8 +422,9 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
//-------------------------------------------------------------------
// Column definitions.
private static readonly String aliasVehicleClass = "aVehCla";
private static readonly String aliasVehicleClass_Vehicle = "aVehClaVeh";
// VehilceCount DataName.
private static readonly String dataNameVehicleCount = "VehCount";
private static readonly String dataNameVehicleClass_VehicleCount = "VehCount";
// Column definition population.
private void SetVehicleClassColDfn
@@ -439,7 +440,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
}
//-------------------------------------------------------------------
// Getting prm column definition.
// Configure item column definition.
public override ColumnDfn GetVehicleClassColumnDfn(SbmVehicleClass.Column columnId, string caption = "", int width = 0)
{
ColumnDfn columnDfn = new ColumnDfn((int)columnId, caption, width);
@@ -524,6 +525,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
case SbmVehicleClass.Column.RentalPriceUomDesc:
SetVehicleClassColDfn(columnDfn, "Rental Price unit", 90, SbmDbDfn.ColumnIdx.SaVehicleClass_UomIdRentalPrice);
break;
// Derived properties.
case SbmVehicleClass.Column.VehicleCount:
SetVehicleClassColDfn(columnDfn, "Vehicle count", 70, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = dataNameVehicleClass_VehicleCount;
break;
// Common properties.
case SbmVehicleClass.Column.Notes:
SetVehicleClassColDfn(columnDfn, "Notes", 200, SbmDbDfn.ColumnIdx.SaVehicleClass_Notes);
@@ -551,10 +559,6 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
columnDfn.DateFormat = "d-MMM-yy";
columnDfn.ReadOnly = true;
break;
case SbmVehicleClass.Column.VehicleCount:
SetVehicleClassColDfn(columnDfn, "Vehicles", 80, SbmDbDfn.ColumnIdx.Unknown, ColumnAlignment.Center, DataValue.DataType.Long);
columnDfn.DataName = dataNameVehicleCount;
break;
}
if (!String.IsNullOrEmpty(caption))
columnDfn.Caption = caption;
@@ -619,13 +623,13 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
// Status.
String colVehicleClass_Status = SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicleClass_Status, aliasVehicleClass);
if (prm.StatusCat == SbmVehicleClass.StatusCat.ActiveOnly)
filter.Add(colVehicleClass_Status + "='" + SacsSystem.GetStatusDesc(SaStatus.Active) + "'");
filter.Add($"{colVehicleClass_Status}='{SacsSystem.GetStatusDesc(SaStatus.Active)}'");
else if (prm.StatusCat == SbmVehicleClass.StatusCat.InactiveOnly)
filter.Add(colVehicleClass_Status + "='" + SacsSystem.GetStatusDesc(SaStatus.Inactive) + "'");
filter.Add($"{colVehicleClass_Status}='{SacsSystem.GetStatusDesc(SaStatus.Cancelled)}' Or {colVehicleClass_Status}='{SacsSystem.GetStatusDesc(SaStatus.Inactive)}'");
else if (prm.StatusCat == SbmVehicleClass.StatusCat.NotDeleted)
filter.Add(colVehicleClass_Status + "!='" + SacsSystem.GetStatusDesc(SaStatus.Deleted) + "'");
filter.Add($"{colVehicleClass_Status}!='{SacsSystem.GetStatusDesc(SaStatus.Deleted)}'");
else if (prm.StatusCat == SbmVehicleClass.StatusCat.DeletedOnly)
filter.Add(colVehicleClass_Status + "='" + SacsSystem.GetStatusDesc(SaStatus.Deleted) + "'");
filter.Add($"{colVehicleClass_Status}='{SacsSystem.GetStatusDesc(SaStatus.Deleted)}'");
if (filter.Count < 1 && prm.IncludeDefaultFilter) filter.Add("1=1");
return filter;
@@ -776,6 +780,18 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (columns.HasId(SbmVehicleClass.Column.UpdateOn_Date))
query.Columns.Add(SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicleClass_UpdateOn, aliasVehicleClass));
//---------------------------------------------------------------
// Vehicle Count
if (columns.HasId(SbmVehicleClass.Column.VehicleCount))
{
String tableVehicle = SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicle);
DbQuery qryVehicleCount = new DbQuery(Database.DbmsType);
qryVehicleCount.Tables.Add(tableVehicle, aliasVehicleClass_Vehicle);
qryVehicleCount.Columns.Add($"Count({SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicle_Id, aliasVehicleClass_Vehicle)})");
qryVehicleCount.Filters.Add($"{SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicle_VehicleClassId, aliasVehicleClass_Vehicle)}={SbmDbDfn.GetColumnNameQual(SbmDbDfn.ColumnIdx.SaVehicleClass_Id, aliasVehicleClass)}");
query.Columns.Add($"({qryVehicleCount.BuildQuery()})", dataNameVehicleClass_VehicleCount);
}
//---------------------------------------------------------------------
// Populate filter.
query.Filters.AddRange(GetVehicleClassQueryFilter(prm));
@@ -122,8 +122,7 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
if (Database != null)
{
String filter = GetVehicleFeatureQueryFilter(prm).Concat(" AND ", "(", ")");
String colVehicleFeature_VehicleId = SbmDbDfn.GetColumnName(SbmDbDfn.ColumnIdx.SaVehicleFeature_VehicleId);
return Database.GetRowCount(tableVehicleFeature, /*colVehicleFeature_VehicleId, 0,*/ filter) > 0;
return Database.GetRowCount($"{tableVehicleFeature} As {aliasVehicleFeature}", filter) > 0;
}
}
else SetErrorState("vehicle features not supported");
@@ -59,9 +59,18 @@ namespace Sarand.BusinessMgr.Net.Standard.Dbas.Mgr
{
ClearErrorState();
if (Database == null) return SetErrorState("Database not specified");
//if (pDb->GetInterfaceType() != SaDatabase::eSaDbInterfaceOdbc) return SetErrorState ("Database not ODBC");
if (Database.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAssetCategory))) return SetErrorState("Asset Category table does not exist");
if (Database.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAsset))) return SetErrorState("Asset table does not exist");
if (!Database.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAssetCategory))) return SetErrorState("Asset Category table does not exist");
if (!Database.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaAsset))) return SetErrorState("Asset table does not exist");
return true;
}
public override bool VehicleDatabaseIsValid()
{
if (!AssetDatabaseIsValid()) return false;
ClearErrorState();
if (Database == null) return SetErrorState("Database not specified");
if (!Database.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicleClass))) return SetErrorState("Vehicle Class table does not exist");
if (!Database.TableExists(SbmDbDfn.GetTableName(SbmDbDfn.TableIdx.SaVehicle))) return SetErrorState("Vehicle table does not exist");
return true;
}