This commit is contained in:
2021-09-03 17:16:14 +00:00
parent b486c00138
commit 70076203a6
7 changed files with 80 additions and 64 deletions

View File

@@ -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;

View File

@@ -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()));
}

View File

@@ -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);

View File

@@ -123,7 +123,7 @@ namespace AyaNova.Models
public virtual DbSet<ViewRestockRequired> ViewRestockRequired { get; set; }
public virtual DbSet<ViewPartInventoryList> ViewPartInventoryList { get; set; }
public virtual DbSet<ViewPartRequestList> ViewPartRequestList { get; set; }
public virtual DbSet<ViewUnfulfilledPartRequestList> ViewUnfulfilledPartRequestList { get; set; }

View File

@@ -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;"
*/

View File

@@ -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

View File

@@ -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);");
//----------