diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 143e34c9..0c95bcce 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -1891,7 +1891,7 @@ CREATE OR REPLACE VIEW public.viewpartinventorylist } -////////////////////////////////////////////////// + ////////////////////////////////////////////////// // // case 4610 // @@ -1900,7 +1900,9 @@ CREATE OR REPLACE VIEW public.viewpartinventorylist LogUpdateMessage(log); -//todo drop all involved views first then recreate after all these mods same as before, stupid fuckery!! + //todo drop all involved views first then recreate after all these mods same as before, stupid fuckery!! + await ExecQueryAsync("DROP VIEW IF EXISTS viewpartsdatalist"); + await ExecQueryAsync("DROP VIEW IF EXISTS viewpartinventorylist"); await ExecQueryAsync("ALTER TABLE aservicerate ALTER COLUMN cost SET DATA TYPE DECIMAL(28,8);"); await ExecQueryAsync("ALTER TABLE aservicerate ALTER COLUMN charge SET DATA TYPE DECIMAL(28,8);"); @@ -1973,7 +1975,47 @@ CREATE OR REPLACE VIEW public.viewpartinventorylist await ExecQueryAsync("ALTER TABLE acustomernotifysubscription ALTER COLUMN decvalue SET DATA TYPE DECIMAL(28,8);"); await ExecQueryAsync("ALTER TABLE acustomernotifyevent ALTER COLUMN decvalue SET DATA TYPE DECIMAL(28,8);"); +//RECREATE VIEWS + await ExecQueryAsync("CREATE OR REPLACE VIEW viewpartsdatalist AS SELECT APART.*, AMAN.NAME AS MANNAME, AMAN.ID AS MANID, AWHOLE.NAME AS WHOLENAME,AWHOLE.ID AS WHOLEID, " + + "AALTWHOLE.NAME AS ALTWHOLENAME, AALTWHOLE.ID AS ALTWHOLEID, (SELECT ARRAY_TO_STRING(ARRAY_AGG(serial),', ') FROM APARTSERIAL WHERE PARTID = APART.ID GROUP BY PARTID) AS PARTSERIALS " + + "FROM APART LEFT JOIN AVENDOR AS AMAN ON (APART.MANUFACTURERID = AMAN.ID) LEFT JOIN AVENDOR AS AWHOLE ON (APART.WHOLESALERID = AWHOLE.ID) LEFT JOIN AVENDOR AS AALTWHOLE ON (APART.ALTERNATIVEWHOLESALERID = AALTWHOLE.ID)"); + + 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, + 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, + amanufacturer.name AS manufacturername, + amanufacturer.id AS manufacturerid + 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);