diff --git a/source/bizobjects/AyaLib/GZTW.AyaNova.BLL/DBManager.cs b/source/bizobjects/AyaLib/GZTW.AyaNova.BLL/DBManager.cs index 398a500..33da4b9 100644 --- a/source/bizobjects/AyaLib/GZTW.AyaNova.BLL/DBManager.cs +++ b/source/bizobjects/AyaLib/GZTW.AyaNova.BLL/DBManager.cs @@ -909,6 +909,7 @@ namespace GZTW.AyaNova.BLL AyaBizUtils._SchemaUpdating = true; DBUtil.DB.ClearPool(); int nSchemaLevelAtStart = int.MaxValue; + //There is nothing that can be done in here to handle errors other than to report them //If this fails a restore from database is the only option using (_cn = DBUtil.DB.GetConnection()) @@ -2623,6 +2624,18 @@ No message for error code 336397208 found. #region Firebird Version 136 Case 3740 if (nSchemaLevel < 136) { + //-- Delete 'closed none received' orphan poitems + DDL(@"DELETE FROM APURCHASEORDERITEM POI WHERE EXISTS (SELECT AID FROM APURCHASEORDER PO WHERE PO.AID=POI.APURCHASEORDERID AND PO.ASTATUS=6);"); + + //-- Fix 'Closed - partially received' po items with mismatching quantities + DDL( +@"MERGE INTO APURCHASEORDERITEM AS POI +USING APURCHASEORDER AS PO +ON PO.AID=POI.APURCHASEORDERID AND PO.ASTATUS=4 +WHEN MATCHED THEN +UPDATE SET POI.AQUANTITYORDERED=POI.AQUANTITYRECEIVED, POI.ACLOSED=1; + "); + //-- Reset all ON ORDER to zero DDL(@"update APARTBYWAREHOUSEINVENTORY set AQUANTITYONORDER=0;"); @@ -2647,18 +2660,7 @@ WHEN MATCHED THEN UPDATE SET B.AQTYONORDERCOMMITTED=A.AQUANTITYORDERED-A.AQUANTITYRECEIVED "); - //-- Delete 'closed none received' orphan poitems - DDL(@"DELETE FROM APURCHASEORDERITEM POI WHERE EXISTS (SELECT AID FROM APURCHASEORDER PO WHERE PO.AID=POI.APURCHASEORDERID AND PO.ASTATUS=4);"); - - //-- Fix 'Closed - partially received' po items with mismatching quantities - DDL( -@"MERGE INTO APURCHASEORDERITEM AS POI -USING APURCHASEORDER AS PO -ON PO.AID=POI.APURCHASEORDERID AND PO.ASTATUS=4 -WHEN MATCHED THEN -UPDATE SET POI.AQUANTITYORDERED=POI.AQUANTITYRECEIVED, POI.ACLOSED=1; - "); - + nSchemaLevel = 136; } #endregion @@ -4496,7 +4498,18 @@ UPDATE SET POI.AQUANTITYORDERED=POI.AQUANTITYRECEIVED, POI.ACLOSED=1; if (nSchemaLevel < 136) { - DDL(@"-- **** FIX INVENTORY ON ORDER **** + DDL( +@"-- Delete 'closed none received' orphan poitems +delete APURCHASEORDERITEM from APURCHASEORDERITEM +left outer join APURCHASEORDER on APURCHASEORDERITEM.APURCHASEORDERID = APURCHASEORDER.AID +where APURCHASEORDER.ASTATUS=6; + +-- Fix 'Closed - partially received' po items with mismatching quantities +update APURCHASEORDERITEM set AQUANTITYORDERED=AQUANTITYRECEIVED, ACLOSED=1 from APURCHASEORDERITEM +left outer join APURCHASEORDER on APURCHASEORDERITEM.APURCHASEORDERID = APURCHASEORDER.AID +where APURCHASEORDER.ASTATUS=4; + +-- **** FIX INVENTORY ON ORDER **** -- Reset all ON ORDER to zero update APARTBYWAREHOUSEINVENTORY set AQUANTITYONORDER=0; -- Update on order to actual values in PO Items @@ -4523,17 +4536,7 @@ where APURCHASEORDERITEM.ACLOSED=0 and APURCHASEORDERITEM.AWORKORDERITEMPARTREQU ) as zACTUAL where zACTUAL.APARTWAREHOUSEID= APARTBYWAREHOUSEINVENTORY.APARTWAREHOUSEID and -zACTUAL.APARTID=APARTBYWAREHOUSEINVENTORY.APARTID; - --- Delete 'closed none received' orphan poitems -delete APURCHASEORDERITEM from APURCHASEORDERITEM -left outer join APURCHASEORDER on APURCHASEORDERITEM.APURCHASEORDERID = APURCHASEORDER.AID -where APURCHASEORDER.ASTATUS=6; - --- Fix 'Closed - partially received' po items with mismatching quantities -update APURCHASEORDERITEM set AQUANTITYORDERED=AQUANTITYRECEIVED, ACLOSED=1 from APURCHASEORDERITEM -left outer join APURCHASEORDER on APURCHASEORDERITEM.APURCHASEORDERID = APURCHASEORDER.AID -where APURCHASEORDER.ASTATUS=4;"); +zACTUAL.APARTID=APARTBYWAREHOUSEINVENTORY.APARTID;");