This commit is contained in:
@@ -98,7 +98,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
return Ok(ApiOkResponse.Response(o));
|
return Ok(ApiOkResponse.Response(o));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Get Customer view of WorkOrder
|
/// Get Customer view of WorkOrder
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="id"></param>
|
/// <param name="id"></param>
|
||||||
@@ -202,6 +202,26 @@ namespace AyaNova.Api.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Get list of billable work orders for accounting integrations
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="workOrderStatusId">Only work orders set to this status (use 0 to ignore status)</param>
|
||||||
|
/// <returns>List of billable workorders with related data</returns>
|
||||||
|
[HttpGet("accounting-list-billable/{workOrderStatusId}")]
|
||||||
|
public async Task<IActionResult> GetAccountingListBillable([FromRoute] long workOrderStatusId)
|
||||||
|
{
|
||||||
|
if (!serverState.IsOpen)
|
||||||
|
return StatusCode(503, new ApiErrorResponse(serverState.ApiErrorCode, null, serverState.Reason));
|
||||||
|
WorkOrderBiz biz = WorkOrderBiz.GetBiz(ct, HttpContext);
|
||||||
|
if (!Authorized.HasReadFullRole(HttpContext.Items, biz.BizType))
|
||||||
|
return StatusCode(403, new ApiNotAuthorizedResponse());
|
||||||
|
if (!ModelState.IsValid)
|
||||||
|
return BadRequest(new ApiErrorResponse(ModelState));
|
||||||
|
var o = await biz.GetAccountingListBillable(workOrderStatusId);
|
||||||
|
if (o == null) return NotFound(new ApiErrorResponse(ApiErrorCode.NOT_FOUND));
|
||||||
|
return Ok(ApiOkResponse.Response(o));
|
||||||
|
}
|
||||||
|
|
||||||
#endregion WorkOrderTopLevel routes
|
#endregion WorkOrderTopLevel routes
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -333,6 +333,50 @@ namespace AyaNova.Biz
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// GET accounting billable list
|
||||||
|
//
|
||||||
|
internal async Task<List<WorkOrderAccountingListItem>> GetAccountingListBillable(long workOrderStatusId)
|
||||||
|
{
|
||||||
|
|
||||||
|
//if a specific status is requested then it doesn't matter if it's locked or not but if a specific status is not requested then any locked status is acceptable
|
||||||
|
string statusFragment=workOrderStatusId==0?"and aworkorderstatus.locked=true":$"and aworkorder.laststatusid={workOrderStatusId}";
|
||||||
|
|
||||||
|
var ret = new List<WorkOrderAccountingListItem>();
|
||||||
|
using (var command = ct.Database.GetDbConnection().CreateCommand())
|
||||||
|
{
|
||||||
|
await ct.Database.OpenConnectionAsync();
|
||||||
|
command.CommandText = @$"select
|
||||||
|
aworkorder.id, aworkorder.customerid, aworkorder.serial, aworkorder.servicedate,
|
||||||
|
acustomer.name as customername, aproject.name as projectname,
|
||||||
|
aworkorderstatus.name as statusname, aworkorderstatus.color
|
||||||
|
from aworkorder
|
||||||
|
left join acustomer on (aworkorder.customerid=acustomer.id)
|
||||||
|
left join aworkorderstatus on (aworkorder.laststatusid = aworkorderstatus.id)
|
||||||
|
left join aproject on (aworkorder.projectid=aproject.id)
|
||||||
|
where
|
||||||
|
aworkorder.invoicenumber is null
|
||||||
|
{statusFragment}
|
||||||
|
order by aworkorder.serial asc";
|
||||||
|
using (var dr = await command.ExecuteReaderAsync())
|
||||||
|
if (dr.HasRows)
|
||||||
|
{
|
||||||
|
if (await dr.ReadAsync())
|
||||||
|
{
|
||||||
|
// o.LastWorkOrderViz = dr.GetInt64(0);
|
||||||
|
// o.LastServiceDateViz = dr.GetDateTime(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await ct.Database.CloseConnectionAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//UPDATE
|
//UPDATE
|
||||||
//
|
//
|
||||||
|
|||||||
18
server/AyaNova/models/dto/WorkOrderAccountingListItem.cs
Normal file
18
server/AyaNova/models/dto/WorkOrderAccountingListItem.cs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
using System;
|
||||||
|
|
||||||
|
namespace AyaNova.Models
|
||||||
|
{
|
||||||
|
|
||||||
|
public class WorkOrderAccountingListItem
|
||||||
|
{
|
||||||
|
public long Id { get; set; }
|
||||||
|
public long CustomerId;
|
||||||
|
public string CustomerName;
|
||||||
|
public string WorkorderStatusName;
|
||||||
|
public long Serial { get; set; }
|
||||||
|
public DateTime? ServiceDate { get; set; }
|
||||||
|
public string Color { get; set; }
|
||||||
|
public string ProjectName { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user