diff --git a/server/AyaNova/Controllers/EnumListController.cs b/server/AyaNova/Controllers/EnumListController.cs index 5d4ca111..3dc72789 100644 --- a/server/AyaNova/Controllers/EnumListController.cs +++ b/server/AyaNova/Controllers/EnumListController.cs @@ -156,7 +156,7 @@ namespace AyaNova.Api.Controllers var values = Enum.GetValues(typeof(AyaType)); foreach (AyaType t in values) { - if (t.HasAttribute(typeof(ReportableBizObject))) + if (t.HasAttribute(typeof(ReportableBizObjectAttribute))) { TranslationKeysToFetch.Add(t.ToString()); } @@ -165,7 +165,7 @@ namespace AyaNova.Api.Controllers foreach (AyaType t in values) { - if (t.HasAttribute(typeof(ReportableBizObject))) + if (t.HasAttribute(typeof(ReportableBizObjectAttribute))) { var tName = t.ToString(); string name = string.Empty; diff --git a/server/AyaNova/Controllers/PurchaseOrderController.cs b/server/AyaNova/Controllers/PurchaseOrderController.cs index d5198843..78b5a0b0 100644 --- a/server/AyaNova/Controllers/PurchaseOrderController.cs +++ b/server/AyaNova/Controllers/PurchaseOrderController.cs @@ -188,9 +188,9 @@ namespace AyaNova.Api.Controllers if (!ModelState.IsValid) return BadRequest(new ApiErrorResponse(ModelState)); if (null == vendorId) - return Ok(ApiOkResponse.Response(await ct.ViewPartRequestList.ToListAsync())); + return Ok(ApiOkResponse.Response(await ct.ViewUnfulfilledPartRequestList.ToListAsync())); else - return Ok(ApiOkResponse.Response(await ct.ViewPartRequestList.Where(z => z.WholesalerId == vendorId || z.AltWholesalerId == vendorId).ToListAsync())); + return Ok(ApiOkResponse.Response(await ct.ViewUnfulfilledPartRequestList.Where(z => z.WholesalerId == vendorId || z.AltWholesalerId == vendorId).ToListAsync())); } diff --git a/server/AyaNova/biz/PartInventoryRequestDataListBiz.cs b/server/AyaNova/biz/PartInventoryRequestDataListBiz.cs index 7d983b6e..e7cb7080 100644 --- a/server/AyaNova/biz/PartInventoryRequestDataListBiz.cs +++ b/server/AyaNova/biz/PartInventoryRequestDataListBiz.cs @@ -44,7 +44,7 @@ namespace AyaNova.Biz var batch = idList.Take(IReportAbleObject.REPORT_DATA_BATCH_SIZE); idList = idList.Skip(IReportAbleObject.REPORT_DATA_BATCH_SIZE).ToArray(); //query for this batch, comes back in db natural order unfortunately - var batchResults = await ct.ViewPartRequestList.AsNoTracking().Where(z => batch.Contains(z.RequestId)).ToArrayAsync(); + var batchResults = await ct.ViewUnfulfilledPartRequestList.AsNoTracking().Where(z => batch.Contains(z.RequestId)).ToArrayAsync(); //order the results back into original var orderedList = from id in batch join z in batchResults on id equals z.RequestId select z; @@ -57,7 +57,7 @@ namespace AyaNova.Biz // { // ct.Database.OpenConnection(); - foreach (ViewPartRequestList w in orderedList) + foreach (ViewUnfulfilledPartRequestList w in orderedList) { //await PopulateVizFields(w, AyaTypesEnumList, command); var jo = JObject.FromObject(w); diff --git a/server/AyaNova/models/AyContext.cs b/server/AyaNova/models/AyContext.cs index 630511ed..706c5d14 100644 --- a/server/AyaNova/models/AyContext.cs +++ b/server/AyaNova/models/AyContext.cs @@ -123,7 +123,7 @@ namespace AyaNova.Models public virtual DbSet ViewRestockRequired { get; set; } public virtual DbSet ViewPartInventoryList { get; set; } - public virtual DbSet ViewPartRequestList { get; set; } + public virtual DbSet ViewUnfulfilledPartRequestList { get; set; } diff --git a/server/AyaNova/models/ViewPartRequestList.cs b/server/AyaNova/models/ViewPartRequestList.cs deleted file mode 100644 index c1d889c4..00000000 --- a/server/AyaNova/models/ViewPartRequestList.cs +++ /dev/null @@ -1,35 +0,0 @@ -namespace AyaNova.Models -{ - //Note this is how to define a View backed model with no key (id) - - [Microsoft.EntityFrameworkCore.Keyless] - public class ViewPartRequestList - { - public long RequestId { get; set; } - public long PartId { get; set; } - public long? PartWarehouseId { get; set; } - public decimal Quantity { get; set; } - public long Serial { get; set; } - public string PartNumber { get; set; } - public string PartName { get; set; } - public string PartWarehouseName { get; set; } - public long? WholesalerId { get; set; } - public string WholesalerName { get; set; } - public long? AltWholesalerId { get; set; } - public string AltWholesalerName { get; set; } - public string RequestedByUserName { get; set; } - public long? RequestedByUserId { get; set; } - - }//eoc -}//eons - -/* -"CREATE VIEW viewpartrequestlist AS SELECT AWORKORDERITEMPARTREQUEST.ID AS REQUESTID, PARTID, PARTWAREHOUSEID, QUANTITY, AWORKORDER.SERIAL, " -+"APART.PARTNUMBER AS PARTNUMBER, APART.NAME AS PARTNAME, APARTWAREHOUSE.NAME AS PARTWAREHOUSENAME, AWHOLESALER.NAME AS WHOLESALERNAME, " -+"AWHOLESALER.ID AS WHOLESALERID, AALTWHOLESALER.ID AS ALTWHOLESALERID, AALTWHOLESALER.NAME AS ALTWHOLESALERNAME FROM AWORKORDERITEMPARTREQUEST " -+"LEFT JOIN AWORKORDERITEM ON AWORKORDERITEM.ID = AWORKORDERITEMPARTREQUEST.WORKORDERITEMID LEFT JOIN AWORKORDER ON AWORKORDERITEM.WORKORDERID = AWORKORDER.ID " -+"LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID LEFT JOIN APART ON AWORKORDERITEMPARTREQUEST.PARTID = APART.ID " -+"LEFT JOIN APARTWAREHOUSE ON AWORKORDERITEMPARTREQUEST.PARTWAREHOUSEID = APARTWAREHOUSE.ID LEFT JOIN AVENDOR AS AWHOLESALER ON (APART.WHOLESALERID = AWHOLESALER.ID) " -+"LEFT JOIN AVENDOR AS AALTWHOLESALER ON (APART.ALTERNATIVEWHOLESALERID = AALTWHOLESALER.ID) WHERE AWORKORDERITEMPARTREQUEST.PURCHASEORDERITEMID IS NULL AND " -+"AWORKORDERSTATUS.COMPLETED = FALSE ORDER BY AWORKORDERITEMPARTREQUEST.ID;" -*/ \ No newline at end of file diff --git a/server/AyaNova/models/ViewUnfulfilledPartRequestList.cs b/server/AyaNova/models/ViewUnfulfilledPartRequestList.cs new file mode 100644 index 00000000..0452cc1b --- /dev/null +++ b/server/AyaNova/models/ViewUnfulfilledPartRequestList.cs @@ -0,0 +1,25 @@ +namespace AyaNova.Models +{ + //Note this is how to define a View backed model with no key (id) + + [Microsoft.EntityFrameworkCore.Keyless] + public class ViewUnfulfilledPartRequestList + { + public long RequestId { get; set; } + public long PartId { get; set; } + public long? PartWarehouseId { get; set; } + public decimal Quantity { get; set; } + public long Serial { get; set; } + public string PartNumber { get; set; } + public string PartName { get; set; } + public string PartWarehouseName { get; set; } + public long? WholesalerId { get; set; } + public string WholesalerName { get; set; } + public long? AltWholesalerId { get; set; } + public string AltWholesalerName { get; set; } + public string RequestedByUserName { get; set; } + public long? RequestedByUserId { get; set; } + + }//eoc +}//eons + diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 6302709a..31d116c5 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -899,30 +899,56 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); //VIEWPARTINVENTORYLIST await ExecQueryAsync( "CREATE VIEW viewpartinventorylist AS select apart.id as partid, apart.partnumber, apart.name as partname, 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) as onorderqty, " - +"COALESCE(vpartsonordercommitted.quantityonordercommitted,0) as onordercommittedqty,COALESCE(apartstocklevel.minimumquantity,0) as restockminqty, " - +"GREATEST( COALESCE(apartstocklevel.minimumquantity, 0) - (COALESCE(vpartinventorynow.balance, 0) + COALESCE(vpartsonorder.quantityonorder, 0) - COALESCE(vpartsonordercommitted.quantityonordercommitted, 0)) ,0) 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 AS awholesaler on (apart.wholesalerid = awholesaler.id) left join avendor AS aaltwholesaler on (apart.alternativewholesalerid = aaltwholesaler.id) " - +"left join apartstocklevel on (apartstocklevel.partid = apart.id AND apartstocklevel.partwarehouseid = vpartinventorynow.partwarehouseid);"); + + "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) as onorderqty, " + + "COALESCE(vpartsonordercommitted.quantityonordercommitted,0) as onordercommittedqty,COALESCE(apartstocklevel.minimumquantity,0) as restockminqty, " + + "GREATEST( COALESCE(apartstocklevel.minimumquantity, 0) - (COALESCE(vpartinventorynow.balance, 0) + COALESCE(vpartsonorder.quantityonorder, 0) - COALESCE(vpartsonordercommitted.quantityonordercommitted, 0)) ,0) 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 AS awholesaler on (apart.wholesalerid = awholesaler.id) left join avendor AS aaltwholesaler on (apart.alternativewholesalerid = aaltwholesaler.id) " + + "left join apartstocklevel on (apartstocklevel.partid = apart.id AND apartstocklevel.partwarehouseid = vpartinventorynow.partwarehouseid);"); - //VIEWPARTREQUESTLIST - await ExecQueryAsync("CREATE VIEW viewpartrequestlist AS SELECT AWORKORDERITEMPARTREQUEST.ID AS REQUESTID, PARTID, PARTWAREHOUSEID, QUANTITY, AWORKORDER.SERIAL, " - +"APART.PARTNUMBER AS PARTNUMBER, APART.NAME AS PARTNAME, APARTWAREHOUSE.NAME AS PARTWAREHOUSENAME, AWHOLESALER.NAME AS WHOLESALERNAME, " - +"AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID AS REQUESTEDBYUSERID, AUSER.NAME AS REQUESTEDBYUSERNAME, " - +"AWHOLESALER.ID AS WHOLESALERID, AALTWHOLESALER.ID AS ALTWHOLESALERID, AALTWHOLESALER.NAME AS ALTWHOLESALERNAME FROM AWORKORDERITEMPARTREQUEST " - +"LEFT JOIN AWORKORDERITEM ON AWORKORDERITEM.ID = AWORKORDERITEMPARTREQUEST.WORKORDERITEMID LEFT JOIN AWORKORDER ON AWORKORDERITEM.WORKORDERID = AWORKORDER.ID " - +"LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID LEFT JOIN APART ON AWORKORDERITEMPARTREQUEST.PARTID = APART.ID " - +"LEFT JOIN AUSER ON AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID = AUSER.ID " - +"LEFT JOIN APARTWAREHOUSE ON AWORKORDERITEMPARTREQUEST.PARTWAREHOUSEID = APARTWAREHOUSE.ID LEFT JOIN AVENDOR AS AWHOLESALER ON (APART.WHOLESALERID = AWHOLESALER.ID) " - +"LEFT JOIN AVENDOR AS AALTWHOLESALER ON (APART.ALTERNATIVEWHOLESALERID = AALTWHOLESALER.ID) WHERE AWORKORDERITEMPARTREQUEST.PURCHASEORDERITEMID IS NULL AND " - +"(AWORKORDER.LASTSTATUSID IS NULL OR AWORKORDERSTATUS.COMPLETED = FALSE) ORDER BY AWORKORDERITEMPARTREQUEST.ID;"); + //VIEWUNFULFILLEDPARTREQUESTLIST + await ExecQueryAsync("CREATE VIEW viewunfulfilledpartrequestlist AS SELECT AWORKORDERITEMPARTREQUEST.ID AS REQUESTID, PARTID, PARTWAREHOUSEID, QUANTITY, AWORKORDER.SERIAL, " + + "APART.PARTNUMBER AS PARTNUMBER, APART.NAME AS PARTNAME, APARTWAREHOUSE.NAME AS PARTWAREHOUSENAME, AWHOLESALER.NAME AS WHOLESALERNAME, " + + "AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID AS REQUESTEDBYUSERID, AUSER.NAME AS REQUESTEDBYUSERNAME, " + + "AWHOLESALER.ID AS WHOLESALERID, AALTWHOLESALER.ID AS ALTWHOLESALERID, AALTWHOLESALER.NAME AS ALTWHOLESALERNAME FROM AWORKORDERITEMPARTREQUEST " + + "LEFT JOIN AWORKORDERITEM ON AWORKORDERITEM.ID = AWORKORDERITEMPARTREQUEST.WORKORDERITEMID LEFT JOIN AWORKORDER ON AWORKORDERITEM.WORKORDERID = AWORKORDER.ID " + + "LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID LEFT JOIN APART ON AWORKORDERITEMPARTREQUEST.PARTID = APART.ID " + + "LEFT JOIN AUSER ON AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID = AUSER.ID " + + "LEFT JOIN APARTWAREHOUSE ON AWORKORDERITEMPARTREQUEST.PARTWAREHOUSEID = APARTWAREHOUSE.ID LEFT JOIN AVENDOR AS AWHOLESALER ON (APART.WHOLESALERID = AWHOLESALER.ID) " + + "LEFT JOIN AVENDOR AS AALTWHOLESALER ON (APART.ALTERNATIVEWHOLESALERID = AALTWHOLESALER.ID) WHERE AWORKORDERITEMPARTREQUEST.PURCHASEORDERITEMID IS NULL AND " + + "(AWORKORDER.LASTSTATUSID IS NULL OR AWORKORDERSTATUS.COMPLETED = FALSE) ORDER BY AWORKORDERITEMPARTREQUEST.ID;"); + + //VIEWPARTINVENTORYREQUESTLIST + await ExecQueryAsync("CREATE VIEW viewpartinventoryrequestlist AS SELECT AWORKORDERITEMPARTREQUEST.ID AS REQUESTID, PARTID, PARTWAREHOUSEID, QUANTITY, AWORKORDER.SERIAL AS WOSERIAL, " + + "APART.PARTNUMBER AS PARTNUMBER, APART.NAME AS PARTNAME, APARTWAREHOUSE.NAME AS PARTWAREHOUSENAME, AWHOLESALER.NAME AS WHOLESALERNAME, " + + "AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID AS REQUESTEDBYUSERID, AUSER.NAME AS REQUESTEDBYUSERNAME, " + + "AWHOLESALER.ID AS WHOLESALERID, AALTWHOLESALER.ID AS ALTWHOLESALERID, AALTWHOLESALER.NAME AS ALTWHOLESALERNAME, " + //added ones "WOSERIAL" was just serial, + + "APARTMANU.NAME AS MANUFACTURERNAME, APARTMANU.ID AS MANUFACTURERID, APART.UPC AS PARTUPC, APURCHASEORDER.ID AS PURCHASEORDERID, APURCHASEORDER.SERIAL AS PURCHASEORDERSERIAL, " + + "APURCHASEORDER.EXPECTEDRECEIVEDATE AS EXPECTEDRECEIVEDATE, APURCHASEORDER.ORDEREDDATE AS ORDEREDDATE, aworkorderitempartrequest.received AS PARTREQUESTRECEIVED, APOVENDOR.NAME AS POORDEREDFROM, " + + "APART.MANUFACTURERNUMBER, ACUSTOMER.NAME AS CUSTOMERNAME, ACUSTOMER.ID AS CUSTOMERID, AWORKORDER.LASTSTATUSID AS WOSTATUSID,AWORKORDERSTATUS.COLOR AS STATUSCOLOR,AWORKORDERSTATUS.NAME AS STATUSNAME " + + + "FROM AWORKORDERITEMPARTREQUEST " + + "LEFT JOIN AWORKORDERITEM ON AWORKORDERITEM.ID = AWORKORDERITEMPARTREQUEST.WORKORDERITEMID " + + "LEFT JOIN AWORKORDER ON AWORKORDERITEM.WORKORDERID = AWORKORDER.ID " + + "LEFT JOIN ACUSTOMER ON (AWORKORDER.CUSTOMERID=ACUSTOMER.ID) " + + "LEFT JOIN APURCHASEORDERITEM ON (AWORKORDERITEMPARTREQUEST.PURCHASEORDERITEMID=APURCHASEORDERITEM.ID) " + + "LEFT JOIN APURCHASEORDER ON (APURCHASEORDERITEM.PURCHASEORDERID=APURCHASEORDER.ID) " + + "LEFT JOIN AWORKORDERSTATUS ON AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID " + + "LEFT JOIN APART ON AWORKORDERITEMPARTREQUEST.PARTID = APART.ID " + + "LEFT JOIN AUSER ON AWORKORDERITEMPARTREQUEST.REQUESTEDBYUSERID = AUSER.ID " + + "LEFT JOIN APARTWAREHOUSE ON AWORKORDERITEMPARTREQUEST.PARTWAREHOUSEID = APARTWAREHOUSE.ID " + + "LEFT JOIN AVENDOR AS AWHOLESALER ON (APART.WHOLESALERID = AWHOLESALER.ID) " + + "LEFT JOIN AVENDOR AS AALTWHOLESALER ON (APART.ALTERNATIVEWHOLESALERID = AALTWHOLESALER.ID " + + "LEFT JOIN AVENDOR AS APOVENDOR ON APURCHASEORDER.VENDORID = APOVENDOR.ID " + + "LEFT JOIN AVENDOR AS APARTMANU ON (APART.MANUFACTURERID = APARTMANU.ID);"); + //----------