diff --git a/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs b/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs index c0570a64..331dba6b 100644 --- a/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs +++ b/server/AyaNova/kpi/WorkOrderUnscheduledOpenList.cs @@ -11,7 +11,17 @@ namespace AyaNova.KPI private string _dataQuery = null; private string _errorMessage = null; - public AuthorizationRoles AllowedRoles { get => AuthorizationRoles.Tech | AuthorizationRoles.TechRestricted; } + public AuthorizationRoles AllowedRoles + { + get => +AuthorizationRoles.BizAdmin | +AuthorizationRoles.BizAdminRestricted | +AuthorizationRoles.ServiceRestricted | +AuthorizationRoles.Service | +AuthorizationRoles.Accounting | +AuthorizationRoles.Tech | +AuthorizationRoles.TechRestricted; + } public string MetaQuery => _metaQuery; public string DataQuery => _dataQuery; @@ -22,25 +32,25 @@ namespace AyaNova.KPI //build data and meta queries //validate criteria exists - if (!options.Criteria.ContainsKey("timeSpan")) + if (!options.Criteria.ContainsKey("wostatus")) { - _errorMessage = "Missing 'timeSpan' criteria"; + _errorMessage = "Missing 'wostatus' criteria"; return; } - if (!options.Criteria.ContainsKey("interval")) - { - _errorMessage = "Missing 'interval' criteria"; - return; - } - var timeSpan = (string)options.Criteria["timeSpan"]; - var interval = (string)options.Criteria["interval"]; - + var wostatus = (int?)options.Criteria["wostatus"]; + var wotags = options.Criteria["wotags"].ToObject>(); var woitemtags = options.Criteria["woitemtags"].ToObject>(); - var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", timeSpan, options.ClientTimeStamp); + // var dateWhere = DataListSqlFilterCriteriaBuilder.DataFilterToColumnCriteria("aworkorderitemlabor.servicestopdate", UiFieldDataType.DateTime, "no-operator", timeSpan, options.ClientTimeStamp); + + string statusWhere = string.Empty; + if (wostatus != null) + { + statusWhere = $"AND LASTSTATUSID = {wostatus}"; + } //optional tags string woTagsWhere = null; @@ -55,13 +65,20 @@ namespace AyaNova.KPI _dataQuery = @$"SELECT row_to_json(t) as res from ( - select SUM(AWORKORDERITEMLABOR.serviceratequantity) y, date_trunc('{interval}',AWORKORDERITEMLABOR.servicestopdate) x + SELECT AWORKORDER.SERIAL, + AWORKORDER.SERVICEDATE, + ACUSTOMER.NAME, + AWORKORDER.NOTES FROM AWORKORDER LEFT JOIN AWORKORDERITEM ON AWORKORDER.ID = AWORKORDERITEM.WORKORDERID - LEFT JOIN AWORKORDERITEMLABOR ON AWORKORDERITEM.ID = AWORKORDERITEMLABOR.WORKORDERITEMID - WHERE AWORKORDERITEMLABOR.userid = {userId} AND {dateWhere} {woTagsWhere} {woItemTagsWhere} - GROUP BY x - ORDER BY x ASC + LEFT JOIN AWORKORDERITEMSCHEDULEDUSER ON AWORKORDERITEM.ID = AWORKORDERITEMSCHEDULEDUSER.WORKORDERITEMID + LEFT JOIN AWORKORDERSTATUS ON (AWORKORDER.LASTSTATUSID = AWORKORDERSTATUS.ID) + LEFT JOIN ACUSTOMER ON (AWORKORDER.CUSTOMERID = ACUSTOMER.ID) + WHERE (LASTSTATUSID IS NULL OR AWORKORDERSTATUS.COMPLETED = FALSE) + AND AWORKORDERITEMSCHEDULEDUSER.ID IS NULL + {woTagsWhere} {woItemTagsWhere} + {statusWhere} + ORDER BY AWORKORDER.ID ASC ) t"; _metaQuery = string.Empty; // @"SELECT row_to_json(t) as res from (