using System.Collections.Generic; using System.Linq; using AyaNova.Biz; using AyaNova.Models; namespace AyaNova.DataList { internal class PartInventoryDataList : DataListProcessingBase, IDataListInternalCriteria { public PartInventoryDataList(long translationId) { DefaultListAType = AyaType.PartInventoryDataList; SQLFrom = "from viewpartinventorylist "; var RoleSet = BizRoles.GetRoleSet(DefaultListAType); AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; DefaultColumns = new List() { "PartName", "PartWarehouseName", "PartInventoryBalance", "PartByWarehouseInventoryMinStockLevel", "PartByWarehouseInventoryReorderQuantity", "PartByWarehouseInventoryQuantityOnOrder", "PartByWarehouseInventoryQtyOnOrderCommitted", "Active", "PartInventoryId" }; DefaultSortBy = new Dictionary() { { "PartName", "+" }, { "PartWarehouseName", "+" } }; FieldDefinitions = new List(); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartName", FieldKey = "PartName", AType = (int)AyaType.Part, UiFieldDataType = (int)UiFieldDataType.Text, SqlIdColumnName = "partid", SqlValueColumnName = "partname" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartDescription", FieldKey = "PartDescription", AType = (int)AyaType.Part, UiFieldDataType = (int)UiFieldDataType.Text, SqlIdColumnName = "partid", SqlValueColumnName = "partdescription" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "Active", FieldKey = "Active", UiFieldDataType = (int)UiFieldDataType.Bool, SqlValueColumnName = "partactive" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartCost", FieldKey = "PartCost", UiFieldDataType = (int)UiFieldDataType.Currency, SqlValueColumnName = "partcost" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartRetail", FieldKey = "PartRetail", UiFieldDataType = (int)UiFieldDataType.Currency, SqlValueColumnName = "partretail" }); FieldDefinitions.Add(new DataListFieldDefinition { FieldKey = "PartWholesalerID", TKey = "PartWholesalerID", UiFieldDataType = (int)UiFieldDataType.Text, AType = (int)AyaType.Vendor, SqlIdColumnName = "wholesalerid", SqlValueColumnName = "wholesalername" }); FieldDefinitions.Add(new DataListFieldDefinition { FieldKey = "PartAlternativeWholesalerID", TKey = "PartAlternativeWholesalerID", UiFieldDataType = (int)UiFieldDataType.Text, AType = (int)AyaType.Vendor, SqlIdColumnName = "altwholesalerid", SqlValueColumnName = "altwholesalername" }); FieldDefinitions.Add(new DataListFieldDefinition { FieldKey = "PartManufacturerID", TKey = "PartManufacturerID", UiFieldDataType = (int)UiFieldDataType.Text, AType = (int)AyaType.Vendor, SqlIdColumnName = "manufacturerid", SqlValueColumnName = "manufacturername" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartWarehouseName", FieldKey = "PartWarehouseName", AType = (int)AyaType.PartWarehouse, UiFieldDataType = (int)UiFieldDataType.Text, SqlIdColumnName = "partwarehouseid", SqlValueColumnName = "partwarehousename" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartInventoryId", FieldKey = "PartInventoryId", AType = (int)AyaType.PartInventory, UiFieldDataType = (int)UiFieldDataType.Text, SqlIdColumnName = "partinventoryid", SqlValueColumnName = "partinventoryid", IsRowId = true//useless but necessary to show for row selection and reporting purposes, added this text to get the right case number under commit }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartInventoryBalance", FieldKey = "PartInventoryBalance", UiFieldDataType = (int)UiFieldDataType.Decimal, SqlValueColumnName = "onhandqty" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartByWarehouseInventoryQuantityOnOrder", FieldKey = "PartByWarehouseInventoryQuantityOnOrder", UiFieldDataType = (int)UiFieldDataType.Decimal, SqlValueColumnName = "onorderqty" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartByWarehouseInventoryQtyOnOrderCommitted", FieldKey = "PartByWarehouseInventoryQtyOnOrderCommitted", UiFieldDataType = (int)UiFieldDataType.Decimal, SqlValueColumnName = "onordercommittedqty" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartByWarehouseInventoryMinStockLevel", FieldKey = "PartByWarehouseInventoryMinStockLevel", UiFieldDataType = (int)UiFieldDataType.Decimal, SqlValueColumnName = "restockminqty" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "PartByWarehouseInventoryReorderQuantity", FieldKey = "PartByWarehouseInventoryReorderQuantity", UiFieldDataType = (int)UiFieldDataType.Decimal, SqlValueColumnName = "reorderqty" }); FieldDefinitions.Add(new DataListFieldDefinition { TKey = "Tags", FieldKey = "parttags", UiFieldDataType = (int)UiFieldDataType.Tags, SqlValueColumnName = "parttags" }); //META FieldDefinitions.Add(new DataListFieldDefinition { FieldKey = "metapartname", UiFieldDataType = (int)UiFieldDataType.Text, SqlIdColumnName = "partid", SqlValueColumnName = "partname", IsMeta = true }); FieldDefinitions.Add(new DataListFieldDefinition { FieldKey = "metawarehouse", UiFieldDataType = (int)UiFieldDataType.Text, SqlIdColumnName = "partwarehouseid", SqlValueColumnName = "partwarehousename", IsMeta = true }); } public List DataListInternalCriteria(long currentUserId, AuthorizationRoles userRoles, string clientCriteria) { List ret = new List(); //ClientCriteria is optional for this list //Format for this list is "PARTID,WAREHOUSENAME" where the id is 0 if not filtered or the id to filter //and bizarrely the warehousename is text or empty if not filtered var crit = (clientCriteria ?? "").Split(',').Select(z => z.Trim()).ToArray(); if (crit.Length > 1) { //Part criteria if (crit[0] != "0") { DataListFilterOption FilterOption = new DataListFilterOption() { Column = "metapartname" }; FilterOption.Items.Add(new DataListColumnFilter() { value = crit[0], op = DataListFilterComparisonOperator.Equality }); ret.Add(FilterOption); } //Warehouse criteria if (!string.IsNullOrWhiteSpace(crit[1])) { DataListFilterOption FilterOption = new DataListFilterOption() { Column = "metawarehouse" }; FilterOption.Items.Add(new DataListColumnFilter() { value = crit[1], op = DataListFilterComparisonOperator.Equality }); ret.Add(FilterOption); } } return ret; } }//eoc }//eons