This commit is contained in:
@@ -160,8 +160,8 @@ namespace AyaNova.Api.Controllers
|
|||||||
{
|
{
|
||||||
if (!serverState.IsOpen)
|
if (!serverState.IsOpen)
|
||||||
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
||||||
PurchaseOrderBiz biz = PurchaseOrderBiz.GetBiz(ct, HttpContext);
|
// PurchaseOrderBiz biz = PurchaseOrderBiz.GetBiz(ct, HttpContext);
|
||||||
if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
|
if (!Authorized.HasReadFullRole(HttpContext.Items, AyaType.PurchaseOrder))
|
||||||
return StatusCode(403, new ApiNotAuthorizedResponse());
|
return StatusCode(403, new ApiNotAuthorizedResponse());
|
||||||
if (!ModelState.IsValid)
|
if (!ModelState.IsValid)
|
||||||
return BadRequest(new ApiErrorResponse(ModelState));
|
return BadRequest(new ApiErrorResponse(ModelState));
|
||||||
@@ -172,6 +172,27 @@ namespace AyaNova.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get work order item part request list for vendor specified or any vendor if no vendor specified
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="vendorId">optional vendor id will return matches to Part objects manufacturer, wholesaler or alternative wholesaler</param>
|
||||||
|
/// <returns>PurchaseOrder</returns>
|
||||||
|
[HttpGet("requests-by-vendor/{vendorId}")]
|
||||||
|
public async Task<IActionResult> GetRequestsByVendor([FromRoute] long? vendorId)
|
||||||
|
{
|
||||||
|
if (!serverState.IsOpen)
|
||||||
|
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
||||||
|
PurchaseOrderBiz biz = PurchaseOrderBiz.GetBiz(ct, HttpContext);
|
||||||
|
if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
|
||||||
|
return StatusCode(403, new ApiNotAuthorizedResponse());
|
||||||
|
if (!ModelState.IsValid)
|
||||||
|
return BadRequest(new ApiErrorResponse(ModelState));
|
||||||
|
if (null == vendorId)
|
||||||
|
return Ok(ApiOkResponse.Response(await ct.ViewPartRequestList.ToListAsync()));
|
||||||
|
else
|
||||||
|
return Ok(ApiOkResponse.Response(await ct.ViewPartRequestList.Where(z => z.WholesalerId == vendorId || z.AltWholesalerId == vendorId).ToListAsync()));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
//------------
|
//------------
|
||||||
|
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ namespace AyaNova.Models
|
|||||||
|
|
||||||
public virtual DbSet<ViewRestockRequired> ViewRestockRequired { get; set; }
|
public virtual DbSet<ViewRestockRequired> ViewRestockRequired { get; set; }
|
||||||
public virtual DbSet<ViewPartInventoryList> ViewPartInventoryList { get; set; }
|
public virtual DbSet<ViewPartInventoryList> ViewPartInventoryList { get; set; }
|
||||||
|
public virtual DbSet<ViewPartRequestList> ViewPartRequestList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
32
server/AyaNova/models/ViewPartRequestList.cs
Normal file
32
server/AyaNova/models/ViewPartRequestList.cs
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
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; }
|
||||||
|
}//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;"
|
||||||
|
*/
|
||||||
@@ -881,7 +881,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
await ExecQueryAsync("CREATE VIEW vpartsonorder AS SELECT partid, partwarehouseid, SUM((COALESCE(apurchaseorderitem.quantityordered,0)-COALESCE(apurchaseorderitem.quantityreceived,0))) AS quantityonorder "
|
await ExecQueryAsync("CREATE VIEW vpartsonorder AS SELECT partid, partwarehouseid, SUM((COALESCE(apurchaseorderitem.quantityordered,0)-COALESCE(apurchaseorderitem.quantityreceived,0))) AS quantityonorder "
|
||||||
+ "FROM apurchaseorderitem WHERE (COALESCE(apurchaseorderitem.quantityordered,0)-COALESCE(apurchaseorderitem.quantityreceived,0)) > 0 GROUP BY partid, partwarehouseid");
|
+ "FROM apurchaseorderitem WHERE (COALESCE(apurchaseorderitem.quantityordered,0)-COALESCE(apurchaseorderitem.quantityreceived,0)) > 0 GROUP BY partid, partwarehouseid");
|
||||||
|
|
||||||
//VRESTOCKREQUIRED (used by PO indirectly through a keyless model in dbset)
|
//VIEWRESTOCKREQUIRED (used by PO indirectly through a keyless model in dbset)
|
||||||
await ExecQueryAsync("CREATE VIEW viewrestockrequired AS SELECT apart.id AS partid, apartwarehouse.id AS partwarehouseid, apart.partnumber, apartwarehouse.name AS displaywarehouse, "
|
await ExecQueryAsync("CREATE VIEW viewrestockrequired AS SELECT apart.id AS partid, apartwarehouse.id AS partwarehouseid, apart.partnumber, apartwarehouse.name AS displaywarehouse, "
|
||||||
+ "amanufacturer.id AS manufacturerid, amanufacturer.name AS displaymanufacturer, awholesaler.id AS wholesalerid, awholesaler.name AS displaywholesaler, "
|
+ "amanufacturer.id AS manufacturerid, amanufacturer.name AS displaymanufacturer, awholesaler.id AS wholesalerid, awholesaler.name AS displaywholesaler, "
|
||||||
+ "aalternativewholesaler.id AS alternativewholesalerid, aalternativewholesaler.name AS displayalternativewholesaler,"
|
+ "aalternativewholesaler.id AS alternativewholesalerid, aalternativewholesaler.name AS displayalternativewholesaler,"
|
||||||
@@ -896,11 +896,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
+ "WHERE apartstocklevel.minimumquantity IS NOT NULL AND (apartstocklevel.minimumquantity - (COALESCE(vpartinventorynow.balance, 0) + COALESCE(vpartsonorderuncommitted.quantityonorder, 0))) >0 "
|
+ "WHERE apartstocklevel.minimumquantity IS NOT NULL AND (apartstocklevel.minimumquantity - (COALESCE(vpartinventorynow.balance, 0) + COALESCE(vpartsonorderuncommitted.quantityonorder, 0))) >0 "
|
||||||
+ "ORDER BY requiredquantity DESC");
|
+ "ORDER BY requiredquantity DESC");
|
||||||
|
|
||||||
//VPARTINVENTORYLIST
|
//VIEWPARTINVENTORYLIST
|
||||||
// await ExecQueryAsync("CREATE VIEW vpartinventorylist AS select vpartinventorynow.*, vpartsonordercommitted.quantityonordercommitted, vpartsonorder.quantityonorder 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)");
|
|
||||||
|
|
||||||
await ExecQueryAsync(
|
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,"
|
"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,"
|
||||||
+"apartwarehouse.id as partwarehouseid, apartwarehouse.name as partwarehousename, awholesaler.name as wholesalername, awholesaler.id as wholesalerid, "
|
+"apartwarehouse.id as partwarehouseid, apartwarehouse.name as partwarehousename, awholesaler.name as wholesalername, awholesaler.id as wholesalerid, "
|
||||||
@@ -914,10 +910,17 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
|
|||||||
+"LEFT JOIN apart ON (vpartinventorynow.partid = apart.id) LEFT JOIN apartwarehouse ON (vpartinventorynow.partwarehouseid = apartwarehouse.id) "
|
+"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 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);");
|
+"left join apartstocklevel on (apartstocklevel.partid = apart.id AND apartstocklevel.partwarehouseid = vpartinventorynow.partwarehouseid);");
|
||||||
/*
|
|
||||||
partid, partnumber, partname, partactive, partcost, partretail, partwarehouseid, partwarehousename,wholesalername,wholesalerid,altwholesalername,altwholesalerid,
|
|
||||||
onhandqty, onorderqty, onordercommittedqty, restocklevel/minimumqty, reorderqty, vpartinventorynow.description, vpartinventorynow.id
|
//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, "
|
||||||
|
+"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;");
|
||||||
//----------
|
//----------
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -326,6 +326,9 @@ namespace AyaNova.Util
|
|||||||
cmd.CommandText = "update aglobalbizsettings set taxpartpurchaseid=null,taxpartsaleid=null,taxratesaleid=null;";
|
cmd.CommandText = "update aglobalbizsettings set taxpartpurchaseid=null,taxpartsaleid=null,taxratesaleid=null;";
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
|
|
||||||
|
cmd.CommandText = "update aworkorder set fromcsrid=null;";
|
||||||
|
await cmd.ExecuteNonQueryAsync();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -348,6 +351,7 @@ namespace AyaNova.Util
|
|||||||
//REMOVE ALL REMAINING DATA
|
//REMOVE ALL REMAINING DATA
|
||||||
|
|
||||||
await EraseTableAsync("aunitmeterreading", conn);
|
await EraseTableAsync("aunitmeterreading", conn);
|
||||||
|
await EraseTableAsync("acustomerservicerequest", conn);
|
||||||
|
|
||||||
//--- WorkOrder
|
//--- WorkOrder
|
||||||
await EraseTableAsync("aworkorderitemexpense", conn);
|
await EraseTableAsync("aworkorderitemexpense", conn);
|
||||||
@@ -395,8 +399,7 @@ namespace AyaNova.Util
|
|||||||
await EraseTableAsync("apm", conn);
|
await EraseTableAsync("apm", conn);
|
||||||
//---
|
//---
|
||||||
|
|
||||||
await EraseTableAsync("afileattachment", conn);
|
await EraseTableAsync("afileattachment", conn);
|
||||||
await EraseTableAsync("acustomerservicerequest", conn);
|
|
||||||
await EraseTableAsync("awidget", conn);
|
await EraseTableAsync("awidget", conn);
|
||||||
await EraseTableAsync("aevent", conn);
|
await EraseTableAsync("aevent", conn);
|
||||||
await EraseTableAsync("adatalistsavedfilter", conn);
|
await EraseTableAsync("adatalistsavedfilter", conn);
|
||||||
|
|||||||
Reference in New Issue
Block a user