diff --git a/server/AyaNova/DataList/PartInventoryDataList.cs b/server/AyaNova/DataList/PartInventoryDataList.cs index 413fa684..07b2bcf1 100644 --- a/server/AyaNova/DataList/PartInventoryDataList.cs +++ b/server/AyaNova/DataList/PartInventoryDataList.cs @@ -83,6 +83,16 @@ namespace AyaNova.DataList 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", diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 2ee46ce1..66cddc20 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -20,7 +20,7 @@ namespace AyaNova.Util /////////// CHANGE THIS ON NEW SCHEMA UPDATE //////////////////// //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImportingAsync WHEN NEW TABLES ADDED!!!! - private const int DESIRED_SCHEMA_LEVEL = 9; + private const int DESIRED_SCHEMA_LEVEL = 10; internal const long EXPECTED_COLUMN_COUNT = 1378; internal const long EXPECTED_INDEX_COUNT = 161; @@ -1612,6 +1612,56 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); await SetSchemaLevelAsync(++currentSchema); } + + ////////////////////////////////////////////////// + // + // 8.0.21 additions for case 4239 + // + if (currentSchema < 10) + { + LogUpdateMessage(log); + + await ExecQueryAsync(@" +CREATE OR REPLACE VIEW public.viewpartinventorylist + AS + SELECT apart.id AS partid, + apart.name AS partname, + apart.description AS partdescription, + apart.active AS partactive, + apart.cost AS partcost, + apart.retail AS partretail, + apart.tags AS parttags, + apartwarehouse.id AS partwarehouseid, + apartwarehouse.name AS partwarehousename, + awholesaler.name AS wholesalername, + awholesaler.id AS wholesalerid, + aaltwholesaler.id AS altwholesalerid, + aaltwholesaler.name AS altwholesalername, + amanufacturer.name as manufacturername, + amanufacturer.id as manufacturerid, + vpartinventorynow.balance AS onhandqty, + COALESCE(vpartsonorder.quantityonorder, 0::numeric) AS onorderqty, + COALESCE(vpartsonordercommitted.quantityonordercommitted, 0::numeric) AS onordercommittedqty, + COALESCE(apartstocklevel.minimumquantity, 0::numeric) AS restockminqty, + GREATEST(COALESCE(apartstocklevel.minimumquantity, 0::numeric) - (COALESCE(vpartinventorynow.balance, 0::numeric) + COALESCE(vpartsonorder.quantityonorder, 0::numeric) - COALESCE(vpartsonordercommitted.quantityonordercommitted, 0::numeric)), 0::numeric) AS reorderqty, + vpartinventorynow.id AS partinventoryid, + vpartinventorynow.description AS partinventorydescription + FROM vpartinventorynow + LEFT JOIN vpartsonordercommitted ON vpartinventorynow.partid = vpartsonordercommitted.partid AND vpartinventorynow.partwarehouseid = vpartsonordercommitted.partwarehouseid + LEFT JOIN vpartsonorder ON vpartinventorynow.partid = vpartsonorder.partid AND vpartinventorynow.partwarehouseid = vpartsonorder.partwarehouseid + LEFT JOIN apart ON vpartinventorynow.partid = apart.id + LEFT JOIN apartwarehouse ON vpartinventorynow.partwarehouseid = apartwarehouse.id + LEFT JOIN avendor awholesaler ON apart.wholesalerid = awholesaler.id + LEFT JOIN avendor aaltwholesaler ON apart.alternativewholesalerid = aaltwholesaler.id + LEFT JOIN avendor amanufacturer ON apart.manufacturerid = amanufacturer.id + LEFT JOIN apartstocklevel ON apartstocklevel.partid = apart.id AND apartstocklevel.partwarehouseid = vpartinventorynow.partwarehouseid; +"); + + await SetSchemaLevelAsync(++currentSchema); + } + + + //######################################### //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!!