This commit is contained in:
@@ -100,7 +100,7 @@ EXISTING v7:
|
|||||||
- UnitModel
|
- UnitModel
|
||||||
- User
|
- User
|
||||||
- Vendor
|
- Vendor
|
||||||
- WorkorderItem
|
- WorkOrderItem
|
||||||
|
|
||||||
|
|
||||||
RAVEN REQUIREMENTS / CHANGES
|
RAVEN REQUIREMENTS / CHANGES
|
||||||
|
|||||||
@@ -83,7 +83,7 @@ NOTES FOR DOCS
|
|||||||
- Region
|
- Region
|
||||||
- UnitModelCategory
|
- UnitModelCategory
|
||||||
- UnitServiceType
|
- UnitServiceType
|
||||||
- WorkorderItemType
|
- WorkOrderItemType
|
||||||
- ClientGroup
|
- ClientGroup
|
||||||
- WorkorderCategory
|
- WorkorderCategory
|
||||||
- PartCategory
|
- PartCategory
|
||||||
|
|||||||
@@ -234,13 +234,13 @@ QuickNotification DEPRECATED replaced by GeneralNotification below [PERSONAL]
|
|||||||
QuoteCreatedUpdated - a bit weird, which is it created or updated? :) [GENERAL]
|
QuoteCreatedUpdated - a bit weird, which is it created or updated? :) [GENERAL]
|
||||||
ScheduleMarkerImminent (now "reminder") [PERSONAL]
|
ScheduleMarkerImminent (now "reminder") [PERSONAL]
|
||||||
ScheduleMarkerCreated (now "reminder") [PERSONAL]
|
ScheduleMarkerCreated (now "reminder") [PERSONAL]
|
||||||
WorkorderItemScheduledUserCreatedUpdated [PERSONAL]
|
WorkOrderItemScheduledUserCreatedUpdated [PERSONAL]
|
||||||
WorkorderItemScheduledUserEventImminent [PERSONAL]
|
WorkOrderItemScheduledUserEventImminent [PERSONAL]
|
||||||
### CHANGED same concept but uses a COMPLETED type status as the trigger, so I guess it's WorkorderPastCompletionDate or something### WorkorderCloseByDatePassed (user) [general]
|
### CHANGED same concept but uses a COMPLETED type status as the trigger, so I guess it's WorkorderPastCompletionDate or something### WorkorderCloseByDatePassed (user) [general]
|
||||||
WorkorderStatusChanged (user) [GENERAL] [CONDITION: WOSTATUS integer]
|
WorkorderStatusChanged (user) [GENERAL] [CONDITION: WOSTATUS integer]
|
||||||
WorkorderItemOutsideServiceOverdue [general]
|
WorkOrderItemOutsideServiceOverdue [general]
|
||||||
WorkorderItemOutsideServiceReceivedBack [GENERAL]
|
WorkOrderItemOutsideServiceReceivedBack [GENERAL]
|
||||||
WorkorderItemPartRequestPartsReceived [GENERAL]
|
WorkOrderItemPartRequestPartsReceived [GENERAL]
|
||||||
|
|
||||||
|
|
||||||
## NEW
|
## NEW
|
||||||
@@ -251,7 +251,7 @@ Nightly_Notify_health_check (biz and ops)[GENERAL] created by notify delivery pr
|
|||||||
BackupStatus case 3786 (biz and ops) [GENERAL]
|
BackupStatus case 3786 (biz and ops) [GENERAL]
|
||||||
(OR is this more of a general OPERATIONS notifications without choosing specific type because anyone in ops needs all)
|
(OR is this more of a general OPERATIONS notifications without choosing specific type because anyone in ops needs all)
|
||||||
UpcomingServiceEvent case 3725 [CUSTOMER]
|
UpcomingServiceEvent case 3725 [CUSTOMER]
|
||||||
WorkorderItemPartRequestCreated case 3652 [GENERAL]
|
WorkOrderItemPartRequestCreated case 3652 [GENERAL]
|
||||||
ContractExpiring - Customer version in addition to User version [CUSTOMER]
|
ContractExpiring - Customer version in addition to User version [CUSTOMER]
|
||||||
WorkorderTotalExceedsThreshold - Custom notification case 1745 "the andy" [GENERAL] [CONDITION: DOLLARTOTAL money value]
|
WorkorderTotalExceedsThreshold - Custom notification case 1745 "the andy" [GENERAL] [CONDITION: DOLLARTOTAL money value]
|
||||||
WorkOrderStatusAge "deadman" delivery if *SPECIFIC* status not changed to different status before XX time period [GENERAL] [CONDITION: AGEVALUE]
|
WorkOrderStatusAge "deadman" delivery if *SPECIFIC* status not changed to different status before XX time period [GENERAL] [CONDITION: AGEVALUE]
|
||||||
@@ -280,9 +280,9 @@ CRUD Notifications:
|
|||||||
ObjectAge since creation (this will cover a shitload of use cases, for example workorder follow up could be done this way etc) [CONDITION: AGEVALUE]
|
ObjectAge since creation (this will cover a shitload of use cases, for example workorder follow up could be done this way etc) [CONDITION: AGEVALUE]
|
||||||
|
|
||||||
PERSONAL? OR COVERED BY TAG FILTER ALREADY BETTER?
|
PERSONAL? OR COVERED BY TAG FILTER ALREADY BETTER?
|
||||||
WorkorderItemPartRequestPartsReceivedWhenIAmScheduled [PERSONAL]
|
WorkOrderItemPartRequestPartsReceivedWhenIAmScheduled [PERSONAL]
|
||||||
WorkorderItemOutsideServiceReceivedBackWhenIAmScheduled
|
WorkOrderItemOutsideServiceReceivedBackWhenIAmScheduled
|
||||||
WorkorderItemOutsideServiceOverdueWhenIAmScheduled
|
WorkOrderItemOutsideServiceOverdueWhenIAmScheduled
|
||||||
WorkorderCloseByDatePassedWhenIAmScheduled
|
WorkorderCloseByDatePassedWhenIAmScheduled
|
||||||
WorkorderStatusChangedWhenIAmScheduled [PERSONAL]
|
WorkorderStatusChangedWhenIAmScheduled [PERSONAL]
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ UnitMeterReadingList Sample Meter Reading List Displaying Differenc
|
|||||||
UnitModelList Sample Unit Model List report
|
UnitModelList Sample Unit Model List report
|
||||||
UserList Sample User report List report
|
UserList Sample User report List report
|
||||||
VendorList Vendor Contact List
|
VendorList Vendor Contact List
|
||||||
WorkorderItemPartRequestList Parts Requests From Service Workorders Report
|
WorkOrderItemPartRequestList Parts Requests From Service Workorders Report
|
||||||
WorkorderPMDetailed PM Showing Client and Unit Report
|
WorkorderPMDetailed PM Showing Client and Unit Report
|
||||||
WorkorderPMList Next Service Date Of PM's Report
|
WorkorderPMList Next Service Date Of PM's Report
|
||||||
WorkorderPMPartList Parts Needed For Upcoming PMs Report
|
WorkorderPMPartList Parts Needed For Upcoming PMs Report
|
||||||
|
|||||||
@@ -65,13 +65,13 @@ CHANGES MADE TO KEYS FROM v7
|
|||||||
- Replaced all [.Object.] with [.]
|
- Replaced all [.Object.] with [.]
|
||||||
- Replaced all ["UI.] with ["] (and removed exact dupe keys created as a result)
|
- Replaced all ["UI.] with ["] (and removed exact dupe keys created as a result)
|
||||||
- Replaced all [.] with []
|
- Replaced all [.] with []
|
||||||
- Removed dupe WorkorderItemOutsideService (removed the one with the longest value)
|
- Removed dupe WorkOrderItemOutsideService (removed the one with the longest value)
|
||||||
- Replaced all ["AddressAddress"] with ["Address"]
|
- Replaced all ["AddressAddress"] with ["Address"]
|
||||||
- Replaced all ["ContactPhoneContactPhone"] with ["ContactPhone"]
|
- Replaced all ["ContactPhoneContactPhone"] with ["ContactPhone"]
|
||||||
- Replaced all ["ContactPhonePhone"] with ["ContactPhone"]
|
- Replaced all ["ContactPhonePhone"] with ["ContactPhone"]
|
||||||
- Replaced all ["PurchaseOrderPurchaseOrder"] with ["PurchaseOrder"]
|
- Replaced all ["PurchaseOrderPurchaseOrder"] with ["PurchaseOrder"]
|
||||||
- Replaced all ["WorkorderItemMiscExpenseExpense"] with ["WorkorderItemMiscExpense"]
|
- Replaced all ["WorkOrderItemMiscExpenseExpense"] with ["WorkOrderItemMiscExpense"]
|
||||||
- Replaced all ["WorkorderItemTravelTravel"] with ["WorkorderItemTravel"]
|
- Replaced all ["WorkOrderItemTravelTravel"] with ["WorkOrderItemTravel"]
|
||||||
|
|
||||||
Note: still some dupes but...fuck it
|
Note: still some dupes but...fuck it
|
||||||
|
|
||||||
|
|||||||
@@ -155,9 +155,9 @@ todo: PLANNING WORKORDER considerations:
|
|||||||
goes over workorder, looks for changes, sends update for each object individually and patches up local from result
|
goes over workorder, looks for changes, sends update for each object individually and patches up local from result
|
||||||
so if a workorderitempart has changed then it sends only that for update individually
|
so if a workorderitempart has changed then it sends only that for update individually
|
||||||
Example routes:
|
Example routes:
|
||||||
Post: Workorder/1/WorkorderItem/2/Labor/4 {updated object}
|
Post: Workorder/1/WorkOrderItem/2/Labor/4 {updated object}
|
||||||
WorkOrder/{woid} <-entire workorder, get for all, post for entire, put to update entire (not likely to use but?)
|
WorkOrder/{woid} <-entire workorder, get for all, post for entire, put to update entire (not likely to use but?)
|
||||||
WorkOrder/{woid}/WorkorderItems <- all workorderitems, post to add new, put to update all as a collection
|
WorkOrder/{woid}/WorkOrderItems <- all workorderitems, post to add new, put to update all as a collection
|
||||||
WorkOrder/{woid}/WorkOrderItems/{woitemid} <- CRUD single woitemid
|
WorkOrder/{woid}/WorkOrderItems/{woitemid} <- CRUD single woitemid
|
||||||
WorkOrder/{woid}/WorkOrderItems/{woitemid}/Labors <- entire labor collection CRUD ops over all collection (also ADD new labor here (POST))
|
WorkOrder/{woid}/WorkOrderItems/{woitemid}/Labors <- entire labor collection CRUD ops over all collection (also ADD new labor here (POST))
|
||||||
WorkOrder/{woid}/WorkOrderItems/{woitemid}/Labors/{laborid} <- Crud on individual item
|
WorkOrder/{woid}/WorkOrderItems/{woitemid}/Labors/{laborid} <- Crud on individual item
|
||||||
|
|||||||
@@ -89,7 +89,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(CustomerServiceRequestStatus).ToString()), "csr status"));
|
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(CustomerServiceRequestStatus).ToString()), "csr status"));
|
||||||
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(PurchaseOrderStatus).ToString()), "PO Status"));
|
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(PurchaseOrderStatus).ToString()), "PO Status"));
|
||||||
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(ContractOverrideType).ToString()), "Contract price adjustment type"));
|
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(ContractOverrideType).ToString()), "Contract price adjustment type"));
|
||||||
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()), "Work order item task completion type"));
|
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()), "Work order item task completion type"));
|
||||||
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(PMTimeUnit).ToString()), "PM time units"));
|
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(PMTimeUnit).ToString()), "PM time units"));
|
||||||
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(AyaDaysOfWeek).ToString()), "Days of the week"));
|
ret.Add(new KeyValuePair<string, string>(StringUtil.TrimTypeName(typeof(AyaDaysOfWeek).ToString()), "Days of the week"));
|
||||||
return Ok(ApiOkResponse.Response(ret));
|
return Ok(ApiOkResponse.Response(ret));
|
||||||
@@ -545,7 +545,7 @@ namespace AyaNova.Api.Controllers
|
|||||||
// ReturnList.Add(new NameIdItem() { Name = "-", Id = (long)ContractOverrideType.NotSet });
|
// ReturnList.Add(new NameIdItem() { Name = "-", Id = (long)ContractOverrideType.NotSet });
|
||||||
|
|
||||||
}
|
}
|
||||||
else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()).ToLowerInvariant())
|
else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()).ToLowerInvariant())
|
||||||
{
|
{
|
||||||
TranslationKeysToFetch.Add("WorkOrderItemTaskCompletionTypeComplete");
|
TranslationKeysToFetch.Add("WorkOrderItemTaskCompletionTypeComplete");
|
||||||
TranslationKeysToFetch.Add("WorkOrderItemTaskCompletionTypeIncomplete");
|
TranslationKeysToFetch.Add("WorkOrderItemTaskCompletionTypeIncomplete");
|
||||||
@@ -554,10 +554,10 @@ namespace AyaNova.Api.Controllers
|
|||||||
|
|
||||||
var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId);
|
var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId);
|
||||||
|
|
||||||
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeComplete"], Id = (long)WorkorderItemTaskCompletionType.Complete });
|
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeComplete"], Id = (long)WorkOrderItemTaskCompletionType.Complete });
|
||||||
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeIncomplete"], Id = (long)WorkorderItemTaskCompletionType.Incomplete });
|
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeIncomplete"], Id = (long)WorkOrderItemTaskCompletionType.Incomplete });
|
||||||
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeNotApplicable"], Id = (long)WorkorderItemTaskCompletionType.NotApplicable });
|
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeNotApplicable"], Id = (long)WorkOrderItemTaskCompletionType.NotApplicable });
|
||||||
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeFailed"], Id = (long)WorkorderItemTaskCompletionType.Failed });
|
ReturnList.Add(new NameIdItem() { Name = LT["WorkOrderItemTaskCompletionTypeFailed"], Id = (long)WorkOrderItemTaskCompletionType.Failed });
|
||||||
}
|
}
|
||||||
else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(PMTimeUnit).ToString()).ToLowerInvariant())
|
else if (keyNameInLowerCase == StringUtil.TrimTypeName(typeof(PMTimeUnit).ToString()).ToLowerInvariant())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ namespace AyaNova.DataList
|
|||||||
TKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
TKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
||||||
FieldKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
FieldKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
||||||
UiFieldDataType = (int)UiFieldDataType.Enum,
|
UiFieldDataType = (int)UiFieldDataType.Enum,
|
||||||
EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()),
|
EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()),
|
||||||
SqlValueColumnName = "apmitemtask.status"
|
SqlValueColumnName = "apmitemtask.status"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ namespace AyaNova.DataList
|
|||||||
TKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
TKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
||||||
FieldKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
FieldKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
||||||
UiFieldDataType = (int)UiFieldDataType.Enum,
|
UiFieldDataType = (int)UiFieldDataType.Enum,
|
||||||
EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()),
|
EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()),
|
||||||
SqlValueColumnName = "aquoteitemtask.status"
|
SqlValueColumnName = "aquoteitemtask.status"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ namespace AyaNova.DataList
|
|||||||
TKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
TKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
||||||
FieldKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
FieldKey = "WorkOrderItemTaskWorkOrderItemTaskCompletionType",
|
||||||
UiFieldDataType = (int)UiFieldDataType.Enum,
|
UiFieldDataType = (int)UiFieldDataType.Enum,
|
||||||
EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()),
|
EnumType = AyaNova.Util.StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()),
|
||||||
SqlValueColumnName = "aworkorderitemtask.status"
|
SqlValueColumnName = "aworkorderitemtask.status"
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -359,7 +359,7 @@ namespace AyaNova.Biz
|
|||||||
//MIGRATE_OUTSTANDING routine to get wo id from the WorkOrderItemId
|
//MIGRATE_OUTSTANDING routine to get wo id from the WorkOrderItemId
|
||||||
o.WorkOrderItemViz = "MIGRATE_OUTSTANDING woitem display value";
|
o.WorkOrderItemViz = "MIGRATE_OUTSTANDING woitem display value";
|
||||||
// if (o.WorkOrderItemId != null)
|
// if (o.WorkOrderItemId != null)
|
||||||
// o.WorkorderItemViz = await ct.WorkorderItem.AsNoTracking().Where(x=>x.Id==o.WorkOrderItemId).Select(x => x.Name).FirstOrDefaultAsync();
|
// o.WorkOrderItemViz = await ct.WorkOrderItem.AsNoTracking().Where(x=>x.Id==o.WorkOrderItemId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||||
|
|
||||||
o.RequestedByUserViz = await ct.User.AsNoTracking().Where(x => x.Id == o.RequestedByUserId).Select(x => x.Name).FirstOrDefaultAsync();
|
o.RequestedByUserViz = await ct.User.AsNoTracking().Where(x => x.Id == o.RequestedByUserId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||||
o.StatusViz = customerServiceRequestStatusEnumList.Where(x => x.Id == (long)o.Status).Select(x => x.Name).First();
|
o.StatusViz = customerServiceRequestStatusEnumList.Where(x => x.Id == (long)o.Status).Select(x => x.Name).First();
|
||||||
|
|||||||
@@ -562,7 +562,7 @@ namespace AyaNova.Biz
|
|||||||
//Customizable child Items
|
//Customizable child Items
|
||||||
l.Add(new FormField { TKey = "PurchaseOrderReceiptReceivedDate", FieldKey = "Items.ReceivedDate" });
|
l.Add(new FormField { TKey = "PurchaseOrderReceiptReceivedDate", FieldKey = "Items.ReceivedDate" });
|
||||||
l.Add(new FormField { TKey = "PurchaseOrderItemPartRequestedByID", FieldKey = "Items.PartRequestedById" });
|
l.Add(new FormField { TKey = "PurchaseOrderItemPartRequestedByID", FieldKey = "Items.PartRequestedById" });
|
||||||
l.Add(new FormField { TKey = "PurchaseOrderItemWorkOrderNumber", FieldKey = "Items.WorkorderItemPartRequestId" });
|
l.Add(new FormField { TKey = "PurchaseOrderItemWorkOrderNumber", FieldKey = "Items.WorkOrderItemPartRequestId" });
|
||||||
l.Add(new FormField { TKey = "TaxCode", FieldKey = "Items.PurchaseTaxCodeId" });
|
l.Add(new FormField { TKey = "TaxCode", FieldKey = "Items.PurchaseTaxCodeId" });
|
||||||
l.Add(new FormField { TKey = "PurchaseOrderItemVendorPartNumber", FieldKey = "Items.VendorPartNumber" });
|
l.Add(new FormField { TKey = "PurchaseOrderItemVendorPartNumber", FieldKey = "Items.VendorPartNumber" });
|
||||||
l.Add(new FormField { TKey = "PurchaseOrderItemSerialNumbers", FieldKey = "Items.Serials" });
|
l.Add(new FormField { TKey = "PurchaseOrderItemSerialNumbers", FieldKey = "Items.Serials" });
|
||||||
|
|||||||
@@ -23,15 +23,15 @@ namespace AyaNova.Biz
|
|||||||
ObjectAge = 10,//* Any object, Age (conditional on AgeValue) after creation event of any object of conditional specific AyaType and optionally conditional tags
|
ObjectAge = 10,//* Any object, Age (conditional on AgeValue) after creation event of any object of conditional specific AyaType and optionally conditional tags
|
||||||
PMInsufficientInventory = 11,//Upcoming PM will not have enough inventory to generate without making a part request
|
PMInsufficientInventory = 11,//Upcoming PM will not have enough inventory to generate without making a part request
|
||||||
ReminderImminent = 12,//*Reminder object, Advance notice setting tag conditional
|
ReminderImminent = 12,//*Reminder object, Advance notice setting tag conditional
|
||||||
ScheduledOnWorkorder = 13,//*Workorder / WorkorderItemScheduledUser object, instant notification when current user is scheduled on a service workorder
|
ScheduledOnWorkorder = 13,//*Workorder / WorkOrderItemScheduledUser object, instant notification when current user is scheduled on a service workorder
|
||||||
ScheduledOnWorkorderImminent = 14,//*Workorder / WorkorderItemScheduledUser object, advanced (settable) notification when current user's scheduled date/time is imminent
|
ScheduledOnWorkorderImminent = 14,//*Workorder / WorkOrderItemScheduledUser object, advanced (settable) notification when current user's scheduled date/time is imminent
|
||||||
WorkorderCompletedStatusOverdue = 15,//* Workorder object not set to a "Completed" flagged workorder status type by "complete by" date of workorder. Conditions: tags
|
WorkorderCompletedStatusOverdue = 15,//* Workorder object not set to a "Completed" flagged workorder status type by "complete by" date of workorder. Conditions: tags
|
||||||
OutsideServiceOverdue = 16,//* Workorder object , WorkorderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
OutsideServiceOverdue = 16,//* Workorder object , WorkOrderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
||||||
OutsideServiceReceived = 17,//* Workorder object , WorkorderItemOutsideService updated, instant notification when item received, tag filterable
|
OutsideServiceReceived = 17,//* Workorder object , WorkOrderItemOutsideService updated, instant notification when item received, tag filterable
|
||||||
PartRequestReceived = 18,//* Workorder object / workorderitempartrequest updated, sent to person who requested when parts received back
|
PartRequestReceived = 18,//* Workorder object / workorderitempartrequest updated, sent to person who requested when parts received back
|
||||||
NotifyHealthCheck = 19,//* NO OBJECT, direct subscription to receive recurring daily notify system "ping" sent out between 8am and 10am once every 24 hours minimum every day server local time
|
NotifyHealthCheck = 19,//* NO OBJECT, direct subscription to receive recurring daily notify system "ping" sent out between 8am and 10am once every 24 hours minimum every day server local time
|
||||||
BackupStatus = 20,//* NO OBJECT, direct subscription to receive results of last backup operation
|
BackupStatus = 20,//* NO OBJECT, direct subscription to receive results of last backup operation
|
||||||
CustomerServiceImminent = 21,//* Workorder / WorkorderItemScheduledUser object, notice that scheduled service is due, can set advance notice, CUSTOMER gets delivery
|
CustomerServiceImminent = 21,//* Workorder / WorkOrderItemScheduledUser object, notice that scheduled service is due, can set advance notice, CUSTOMER gets delivery
|
||||||
PMStopGeneratingDateReached = 22,//Stop generating PM's after this date has been reached. Reminder in case user needs to set up again for next cycle or something (advance settable)
|
PMStopGeneratingDateReached = 22,//Stop generating PM's after this date has been reached. Reminder in case user needs to set up again for next cycle or something (advance settable)
|
||||||
WorkorderTotalExceedsThreshold = 23,//* "the Andy" Workorder updated / created, based on balance total so conditional on DecValue
|
WorkorderTotalExceedsThreshold = 23,//* "the Andy" Workorder updated / created, based on balance total so conditional on DecValue
|
||||||
WorkorderStatusAge = 24,//* Workorder STATUS unchanged for set time (stuck in state), conditional on: Duration (how long stuck), exact status selected IdValue, Tags. Advance notice can NOT be set
|
WorkorderStatusAge = 24,//* Workorder STATUS unchanged for set time (stuck in state), conditional on: Duration (how long stuck), exact status selected IdValue, Tags. Advance notice can NOT be set
|
||||||
@@ -46,7 +46,7 @@ namespace AyaNova.Biz
|
|||||||
SendUserCredentials = 33 // Internal System use only: When user generates new credentials and sends them this is the notification type for that see UserBiz GenerateCredsAndEmailUser
|
SendUserCredentials = 33 // Internal System use only: When user generates new credentials and sends them this is the notification type for that see UserBiz GenerateCredsAndEmailUser
|
||||||
|
|
||||||
//POTENTIAL OTHER NOTIFICATIONS:
|
//POTENTIAL OTHER NOTIFICATIONS:
|
||||||
//WorkorderItemLoan unit is overdue from estimate
|
//WorkOrderItemLoan unit is overdue from estimate
|
||||||
|
|
||||||
|
|
||||||
//NEW ITEMS REQUIRE translation KEYS
|
//NEW ITEMS REQUIRE translation KEYS
|
||||||
|
|||||||
@@ -2791,8 +2791,8 @@ namespace AyaNova.Biz
|
|||||||
public async Task OutsideServiceHandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task OutsideServiceHandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
OutsideServiceOverdue = 16,//* Workorder object , WorkorderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
OutsideServiceOverdue = 16,//* Workorder object , WorkOrderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
||||||
OutsideServiceReceived = 17,//* Workorder object , WorkorderItemOutsideService updated, instant notification when item received, tag filterable
|
OutsideServiceReceived = 17,//* Workorder object , WorkOrderItemOutsideService updated, instant notification when item received, tag filterable
|
||||||
*/
|
*/
|
||||||
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<PMBiz>();
|
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<PMBiz>();
|
||||||
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
|
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
|
||||||
@@ -3633,7 +3633,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
if (taskCompletionTypeEnumList == null)
|
if (taskCompletionTypeEnumList == null)
|
||||||
taskCompletionTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
taskCompletionTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
||||||
StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()),
|
StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()),
|
||||||
UserTranslationId,
|
UserTranslationId,
|
||||||
CurrentUserRoles);
|
CurrentUserRoles);
|
||||||
|
|
||||||
@@ -5270,9 +5270,9 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
|
|
||||||
//WORKORDERITEMS
|
//WORKORDERITEMS
|
||||||
foreach (WorkorderItem wisource in source.WorkorderItems)
|
foreach (WorkOrderItem wisource in source.WorkOrderItems)
|
||||||
{
|
{
|
||||||
WorkorderItem widest = dest.WorkorderItems.Add(dest);
|
WorkOrderItem widest = dest.WorkOrderItems.Add(dest);
|
||||||
widest.Custom0 = wisource.Custom0;
|
widest.Custom0 = wisource.Custom0;
|
||||||
widest.Custom1 = wisource.Custom1;
|
widest.Custom1 = wisource.Custom1;
|
||||||
widest.Custom2 = wisource.Custom2;
|
widest.Custom2 = wisource.Custom2;
|
||||||
@@ -5290,13 +5290,13 @@ namespace AyaNova.Biz
|
|||||||
widest.TypeID = wisource.TypeID;
|
widest.TypeID = wisource.TypeID;
|
||||||
widest.UnitID = wisource.UnitID;
|
widest.UnitID = wisource.UnitID;
|
||||||
widest.WarrantyService = wisource.WarrantyService;
|
widest.WarrantyService = wisource.WarrantyService;
|
||||||
widest.WorkorderItemUnitServiceTypeID = wisource.WorkorderItemUnitServiceTypeID;
|
widest.WorkOrderItemUnitServiceTypeID = wisource.WorkOrderItemUnitServiceTypeID;
|
||||||
widest.WorkorderStatusID = wisource.WorkorderStatusID;
|
widest.WorkorderStatusID = wisource.WorkorderStatusID;
|
||||||
|
|
||||||
//PARTS
|
//PARTS
|
||||||
foreach (WorkorderItemPart partsource in wisource.Parts)
|
foreach (WorkOrderItemPart partsource in wisource.Parts)
|
||||||
{
|
{
|
||||||
WorkorderItemPart partdest = widest.Parts.Add(widest);
|
WorkOrderItemPart partdest = widest.Parts.Add(widest);
|
||||||
partdest.Cost = partsource.Cost;
|
partdest.Cost = partsource.Cost;
|
||||||
partdest.Description = partsource.Description;
|
partdest.Description = partsource.Description;
|
||||||
partdest.Discount = partsource.Discount;
|
partdest.Discount = partsource.Discount;
|
||||||
@@ -5321,9 +5321,9 @@ namespace AyaNova.Biz
|
|||||||
//**********************************************************
|
//**********************************************************
|
||||||
|
|
||||||
//SCHEDULED USERS
|
//SCHEDULED USERS
|
||||||
foreach (WorkorderItemScheduledUser usersource in wisource.ScheduledUsers)
|
foreach (WorkOrderItemScheduledUser usersource in wisource.ScheduledUsers)
|
||||||
{
|
{
|
||||||
WorkorderItemScheduledUser userdest = widest.ScheduledUsers.Add(widest);
|
WorkOrderItemScheduledUser userdest = widest.ScheduledUsers.Add(widest);
|
||||||
userdest.EstimatedQuantity = usersource.EstimatedQuantity;
|
userdest.EstimatedQuantity = usersource.EstimatedQuantity;
|
||||||
userdest.ServiceRateID = usersource.ServiceRateID;
|
userdest.ServiceRateID = usersource.ServiceRateID;
|
||||||
userdest.StartDate = usersource.StartDate;
|
userdest.StartDate = usersource.StartDate;
|
||||||
@@ -5333,9 +5333,9 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
|
|
||||||
//LABOR
|
//LABOR
|
||||||
foreach (WorkorderItemLabor laborsource in wisource.Labors)
|
foreach (WorkOrderItemLabor laborsource in wisource.Labors)
|
||||||
{
|
{
|
||||||
WorkorderItemLabor labordest = widest.Labors.Add(widest);
|
WorkOrderItemLabor labordest = widest.Labors.Add(widest);
|
||||||
labordest.NoChargeQuantity = laborsource.NoChargeQuantity;
|
labordest.NoChargeQuantity = laborsource.NoChargeQuantity;
|
||||||
labordest.ServiceDetails = laborsource.ServiceDetails;
|
labordest.ServiceDetails = laborsource.ServiceDetails;
|
||||||
labordest.ServiceRateID = laborsource.ServiceRateID;
|
labordest.ServiceRateID = laborsource.ServiceRateID;
|
||||||
@@ -5357,9 +5357,9 @@ namespace AyaNova.Biz
|
|||||||
//**********************************************************
|
//**********************************************************
|
||||||
|
|
||||||
//TRAVEL
|
//TRAVEL
|
||||||
foreach (WorkorderItemTravel travelsource in wisource.Travels)
|
foreach (WorkOrderItemTravel travelsource in wisource.Travels)
|
||||||
{
|
{
|
||||||
WorkorderItemTravel traveldest = widest.Travels.Add(widest);
|
WorkOrderItemTravel traveldest = widest.Travels.Add(widest);
|
||||||
traveldest.TravelDetails = travelsource.TravelDetails;
|
traveldest.TravelDetails = travelsource.TravelDetails;
|
||||||
traveldest.TravelRateID = travelsource.TravelRateID;
|
traveldest.TravelRateID = travelsource.TravelRateID;
|
||||||
traveldest.TravelRateQuantity = travelsource.TravelRateQuantity;
|
traveldest.TravelRateQuantity = travelsource.TravelRateQuantity;
|
||||||
@@ -5375,9 +5375,9 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
|
|
||||||
//TASKS
|
//TASKS
|
||||||
foreach (WorkorderItemTask tasksource in wisource.Tasks)
|
foreach (WorkOrderItemTask tasksource in wisource.Tasks)
|
||||||
{
|
{
|
||||||
WorkorderItemTask taskdest = widest.Tasks.Add(widest);
|
WorkOrderItemTask taskdest = widest.Tasks.Add(widest);
|
||||||
taskdest.TaskGroupID = tasksource.TaskGroupID;
|
taskdest.TaskGroupID = tasksource.TaskGroupID;
|
||||||
taskdest.TaskID = tasksource.TaskID;
|
taskdest.TaskID = tasksource.TaskID;
|
||||||
|
|
||||||
@@ -5393,8 +5393,8 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
//Delete the auto-created dummy workorder item
|
//Delete the auto-created dummy workorder item
|
||||||
//if there are more than it present
|
//if there are more than it present
|
||||||
if (dest.WorkorderItems.Count > 1)
|
if (dest.WorkOrderItems.Count > 1)
|
||||||
dest.WorkorderItems.RemoveAt(0);
|
dest.WorkOrderItems.RemoveAt(0);
|
||||||
|
|
||||||
#endregion copy workorder data
|
#endregion copy workorder data
|
||||||
|
|
||||||
@@ -5451,7 +5451,7 @@ namespace AyaNova.Biz
|
|||||||
//Calcs the generate date (threshold date)
|
//Calcs the generate date (threshold date)
|
||||||
source.WorkorderPreventiveMaintenance.SetGenerateDate();
|
source.WorkorderPreventiveMaintenance.SetGenerateDate();
|
||||||
//WORKORDERITEMS
|
//WORKORDERITEMS
|
||||||
foreach (WorkorderItem wisource in source.WorkorderItems)
|
foreach (WorkOrderItem wisource in source.WorkOrderItems)
|
||||||
{
|
{
|
||||||
|
|
||||||
wisource.RequestDate = wisource.RequestDate;
|
wisource.RequestDate = wisource.RequestDate;
|
||||||
@@ -5462,7 +5462,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
|
|
||||||
//SCHEDULED USERS
|
//SCHEDULED USERS
|
||||||
foreach (WorkorderItemScheduledUser usersource in wisource.ScheduledUsers)
|
foreach (WorkOrderItemScheduledUser usersource in wisource.ScheduledUsers)
|
||||||
{
|
{
|
||||||
//Changed: 2-Oct-2006
|
//Changed: 2-Oct-2006
|
||||||
//check to not add a date if the original date was empty
|
//check to not add a date if the original date was empty
|
||||||
@@ -5476,7 +5476,7 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
|
|
||||||
//LABOR
|
//LABOR
|
||||||
foreach (WorkorderItemLabor laborsource in wisource.Labors)
|
foreach (WorkOrderItemLabor laborsource in wisource.Labors)
|
||||||
{
|
{
|
||||||
//Changed: 2-Oct-2006
|
//Changed: 2-Oct-2006
|
||||||
//check to not add a date if the original date was empty
|
//check to not add a date if the original date was empty
|
||||||
@@ -5498,7 +5498,7 @@ namespace AyaNova.Biz
|
|||||||
//**********************************************************
|
//**********************************************************
|
||||||
|
|
||||||
//TRAVEL
|
//TRAVEL
|
||||||
foreach (WorkorderItemTravel travelsource in wisource.Travels)
|
foreach (WorkOrderItemTravel travelsource in wisource.Travels)
|
||||||
{
|
{
|
||||||
//Changed: 2-Oct-2006
|
//Changed: 2-Oct-2006
|
||||||
//check to not add a date if the original date was empty
|
//check to not add a date if the original date was empty
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ namespace AyaNova.Biz
|
|||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////////////////////
|
||||||
//REMOVE SERIALS - called by PO delete ops and WorkorderItemPart create ops to remove serials from a part
|
//REMOVE SERIALS - called by PO delete ops and WorkOrderItemPart create ops to remove serials from a part
|
||||||
//
|
//
|
||||||
internal static async Task RemoveSerialsAsync(long partId, string serialText, AyContext ct, long UserId)
|
internal static async Task RemoveSerialsAsync(long partId, string serialText, AyContext ct, long UserId)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ namespace AyaNova.Biz
|
|||||||
// item.ReceivedCost = 0;
|
// item.ReceivedCost = 0;
|
||||||
// item.ReceivedDate = null;
|
// item.ReceivedDate = null;
|
||||||
// item.PurchaseOrderId = 0;
|
// item.PurchaseOrderId = 0;
|
||||||
// item.WorkorderItemPartRequestId = null;
|
// item.WorkOrderItemPartRequestId = null;
|
||||||
// item.PartRequestedById = null;
|
// item.PartRequestedById = null;
|
||||||
// }
|
// }
|
||||||
|
|
||||||
@@ -214,13 +214,13 @@ namespace AyaNova.Biz
|
|||||||
item.PartViz = partInfo.partViz;
|
item.PartViz = partInfo.partViz;
|
||||||
item.PartNameViz = partInfo.partNameViz;
|
item.PartNameViz = partInfo.partNameViz;
|
||||||
item.WarehouseViz = await ct.PartWarehouse.AsNoTracking().Where(x => x.Id == item.PartWarehouseId).Select(x => x.Name).FirstOrDefaultAsync();
|
item.WarehouseViz = await ct.PartWarehouse.AsNoTracking().Where(x => x.Id == item.PartWarehouseId).Select(x => x.Name).FirstOrDefaultAsync();
|
||||||
if (item.WorkorderItemPartRequestId != null)
|
if (item.WorkOrderItemPartRequestId != null)
|
||||||
{
|
{
|
||||||
po.HasPartRequest = true;
|
po.HasPartRequest = true;
|
||||||
var wid = (await WorkOrderBiz.GetWorkOrderIdFromRelativeAsync(AyaType.WorkOrderItemPartRequest, (long)item.WorkorderItemPartRequestId, ct)).ParentId;
|
var wid = (await WorkOrderBiz.GetWorkOrderIdFromRelativeAsync(AyaType.WorkOrderItemPartRequest, (long)item.WorkOrderItemPartRequestId, ct)).ParentId;
|
||||||
var WOSerial = await ct.WorkOrder.AsNoTracking().Where(x => x.Id == wid).Select(x => new { x.Serial }).FirstOrDefaultAsync();
|
var WOSerial = await ct.WorkOrder.AsNoTracking().Where(x => x.Id == wid).Select(x => new { x.Serial }).FirstOrDefaultAsync();
|
||||||
if (WOSerial != null)
|
if (WOSerial != null)
|
||||||
item.WorkorderItemPartRequestViz = WOSerial.Serial.ToString();
|
item.WorkOrderItemPartRequestViz = WOSerial.Serial.ToString();
|
||||||
if (item.PartRequestedById != null)
|
if (item.PartRequestedById != null)
|
||||||
item.PartRequestedByViz = await ct.User.AsNoTracking().Where(x => x.Id == item.PartRequestedById).Select(x => x.Name).FirstOrDefaultAsync();
|
item.PartRequestedByViz = await ct.User.AsNoTracking().Where(x => x.Id == item.PartRequestedById).Select(x => x.Name).FirstOrDefaultAsync();
|
||||||
}
|
}
|
||||||
@@ -875,7 +875,7 @@ namespace AyaNova.Biz
|
|||||||
//# PartRequestReceived
|
//# PartRequestReceived
|
||||||
{
|
{
|
||||||
//get a list of all items with part requests and received inventory
|
//get a list of all items with part requests and received inventory
|
||||||
var proposedRequestItems = p.Items.Where(z => z.WorkorderItemPartRequestId != null && z.QuantityReceived != 0);
|
var proposedRequestItems = p.Items.Where(z => z.WorkOrderItemPartRequestId != null && z.QuantityReceived != 0);
|
||||||
//are there any potential notify items?
|
//are there any potential notify items?
|
||||||
if (proposedRequestItems.Count() > 0)
|
if (proposedRequestItems.Count() > 0)
|
||||||
{
|
{
|
||||||
@@ -900,9 +900,9 @@ namespace AyaNova.Biz
|
|||||||
EventType = NotifyEventType.PartRequestReceived,
|
EventType = NotifyEventType.PartRequestReceived,
|
||||||
UserId = sub.UserId,
|
UserId = sub.UserId,
|
||||||
AyaType = AyaType.WorkOrderItemPartRequest,
|
AyaType = AyaType.WorkOrderItemPartRequest,
|
||||||
ObjectId = (long)proposedRequestItem.WorkorderItemPartRequestId,
|
ObjectId = (long)proposedRequestItem.WorkOrderItemPartRequestId,
|
||||||
NotifySubscriptionId = sub.Id,
|
NotifySubscriptionId = sub.Id,
|
||||||
Name = BizObjectNameFetcherDirect.Name(AyaType.WorkOrderItemPartRequest, (long)proposedRequestItem.WorkorderItemPartRequestId, ct)
|
Name = BizObjectNameFetcherDirect.Name(AyaType.WorkOrderItemPartRequest, (long)proposedRequestItem.WorkOrderItemPartRequestId, ct)
|
||||||
};
|
};
|
||||||
await ct.NotifyEvent.AddAsync(n);
|
await ct.NotifyEvent.AddAsync(n);
|
||||||
log.LogDebug($"Adding NotifyEvent: [{n.ToString()}]");
|
log.LogDebug($"Adding NotifyEvent: [{n.ToString()}]");
|
||||||
|
|||||||
@@ -3056,8 +3056,8 @@ namespace AyaNova.Biz
|
|||||||
public async Task OutsideServiceHandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task OutsideServiceHandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
OutsideServiceOverdue = 16,//* Workorder object , WorkorderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
OutsideServiceOverdue = 16,//* Workorder object , WorkOrderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
||||||
OutsideServiceReceived = 17,//* Workorder object , WorkorderItemOutsideService updated, instant notification when item received, tag filterable
|
OutsideServiceReceived = 17,//* Workorder object , WorkOrderItemOutsideService updated, instant notification when item received, tag filterable
|
||||||
*/
|
*/
|
||||||
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<QuoteBiz>();
|
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<QuoteBiz>();
|
||||||
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
|
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
|
||||||
@@ -3924,7 +3924,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
if (taskCompletionTypeEnumList == null)
|
if (taskCompletionTypeEnumList == null)
|
||||||
taskCompletionTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
taskCompletionTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
||||||
StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()),
|
StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()),
|
||||||
UserTranslationId,
|
UserTranslationId,
|
||||||
CurrentUserRoles);
|
CurrentUserRoles);
|
||||||
o.StatusViz = taskCompletionTypeEnumList.Where(x => x.Id == (long)o.Status).Select(x => x.Name).First();
|
o.StatusViz = taskCompletionTypeEnumList.Where(x => x.Id == (long)o.Status).Select(x => x.Name).First();
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ namespace AyaNova.Biz
|
|||||||
else if (FieldKeyParts.Length == 3)
|
else if (FieldKeyParts.Length == 3)
|
||||||
{
|
{
|
||||||
//grandparent collection -> Parent collection -> Child field
|
//grandparent collection -> Parent collection -> Child field
|
||||||
//target name like "WorkorderItems.WorkorderItemParts.UPC
|
//target name like "WorkOrderItems.WorkOrderItemParts.UPC
|
||||||
var GrandParentCollection = proposedObject.GetType().GetProperty(FieldKeyParts[0]).GetValue(proposedObject, null);
|
var GrandParentCollection = proposedObject.GetType().GetProperty(FieldKeyParts[0]).GetValue(proposedObject, null);
|
||||||
int GrandParentIndex = 0;
|
int GrandParentIndex = 0;
|
||||||
foreach (object GrandParentObject in (GrandParentCollection as System.Collections.IEnumerable))
|
foreach (object GrandParentObject in (GrandParentCollection as System.Collections.IEnumerable))
|
||||||
|
|||||||
@@ -3478,8 +3478,8 @@ namespace AyaNova.Biz
|
|||||||
public async Task OutsideServiceHandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
public async Task OutsideServiceHandlePotentialNotificationEvent(AyaEvent ayaEvent, ICoreBizObjectModel proposedObj, ICoreBizObjectModel currentObj = null)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
OutsideServiceOverdue = 16,//* Workorder object , WorkorderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
OutsideServiceOverdue = 16,//* Workorder object , WorkOrderItemOutsideService created / updated, sets advance notice on due date tag filterable
|
||||||
OutsideServiceReceived = 17,//* Workorder object , WorkorderItemOutsideService updated, instant notification when item received, tag filterable
|
OutsideServiceReceived = 17,//* Workorder object , WorkOrderItemOutsideService updated, instant notification when item received, tag filterable
|
||||||
*/
|
*/
|
||||||
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<WorkOrderBiz>();
|
ILogger log = AyaNova.Util.ApplicationLogging.CreateLogger<WorkOrderBiz>();
|
||||||
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
|
if(ServerBootConfig.SEEDING || ServerBootConfig.MIGRATING) return;
|
||||||
@@ -5015,7 +5015,7 @@ namespace AyaNova.Biz
|
|||||||
|
|
||||||
if (taskCompletionTypeEnumList == null)
|
if (taskCompletionTypeEnumList == null)
|
||||||
taskCompletionTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
taskCompletionTypeEnumList = await AyaNova.Api.Controllers.EnumListController.GetEnumList(
|
||||||
StringUtil.TrimTypeName(typeof(WorkorderItemTaskCompletionType).ToString()),
|
StringUtil.TrimTypeName(typeof(WorkOrderItemTaskCompletionType).ToString()),
|
||||||
UserTranslationId,
|
UserTranslationId,
|
||||||
CurrentUserRoles);
|
CurrentUserRoles);
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ namespace AyaNova.Biz
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Indicates status of task
|
/// Indicates status of task
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public enum WorkorderItemTaskCompletionType : int
|
public enum WorkOrderItemTaskCompletionType : int
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Not finished
|
/// Not finished
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace AyaNova.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public string Task { get; set; }
|
public string Task { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public WorkorderItemTaskCompletionType Status { get; set; } = WorkorderItemTaskCompletionType.Incomplete;
|
public WorkOrderItemTaskCompletionType Status { get; set; } = WorkOrderItemTaskCompletionType.Incomplete;
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string StatusViz { get; set; }
|
public string StatusViz { get; set; }
|
||||||
public long? CompletedByUserId { get; set; }
|
public long? CompletedByUserId { get; set; }
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ namespace AyaNova.Models
|
|||||||
public decimal ReceivedCost { get; set; }
|
public decimal ReceivedCost { get; set; }
|
||||||
public DateTime? ReceivedDate { get; set; }
|
public DateTime? ReceivedDate { get; set; }
|
||||||
public long? PartRequestedById { get; set; }
|
public long? PartRequestedById { get; set; }
|
||||||
public long? WorkorderItemPartRequestId { get; set; }
|
public long? WorkOrderItemPartRequestId { get; set; }
|
||||||
public long? PurchaseTaxCodeId { get; set; }
|
public long? PurchaseTaxCodeId { get; set; }
|
||||||
public string VendorPartNumber { get; set; }
|
public string VendorPartNumber { get; set; }
|
||||||
public string Serials { get; set; }
|
public string Serials { get; set; }
|
||||||
@@ -45,7 +45,7 @@ namespace AyaNova.Models
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string PartRequestedByViz { get; set; }//DisplayRequestUser
|
public string PartRequestedByViz { get; set; }//DisplayRequestUser
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string WorkorderItemPartRequestViz { get; set; }//DisplayRequestWorkorder
|
public string WorkOrderItemPartRequestViz { get; set; }//DisplayRequestWorkorder
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string PurchaseTaxCodeViz { get; set; }//DisplayTaxCode
|
public string PurchaseTaxCodeViz { get; set; }//DisplayTaxCode
|
||||||
|
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace AyaNova.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public string Task { get; set; }
|
public string Task { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public WorkorderItemTaskCompletionType Status { get; set; } = WorkorderItemTaskCompletionType.Incomplete;
|
public WorkOrderItemTaskCompletionType Status { get; set; } = WorkOrderItemTaskCompletionType.Incomplete;
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string StatusViz { get; set; }
|
public string StatusViz { get; set; }
|
||||||
public long? CompletedByUserId { get; set; }
|
public long? CompletedByUserId { get; set; }
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ namespace AyaNova.Models
|
|||||||
[Required]
|
[Required]
|
||||||
public string Task { get; set; }
|
public string Task { get; set; }
|
||||||
[Required]
|
[Required]
|
||||||
public WorkorderItemTaskCompletionType Status { get; set; } = WorkorderItemTaskCompletionType.Incomplete;
|
public WorkOrderItemTaskCompletionType Status { get; set; } = WorkOrderItemTaskCompletionType.Incomplete;
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string StatusViz { get; set; }
|
public string StatusViz { get; set; }
|
||||||
public long? CompletedByUserId { get; set; }
|
public long? CompletedByUserId { get; set; }
|
||||||
|
|||||||
@@ -210,9 +210,8 @@ namespace AyaNova.Util
|
|||||||
// Create the database desired
|
// Create the database desired
|
||||||
using (var cmd = new Npgsql.NpgsqlCommand())
|
using (var cmd = new Npgsql.NpgsqlCommand())
|
||||||
{
|
{
|
||||||
|
cmd.Connection = cnCreate;
|
||||||
cmd.Connection = cnCreate;
|
cmd.CommandText = "CREATE DATABASE \"" + _dbName + "\" WITH ENCODING \"UTF8\" TEMPLATE=template0;";
|
||||||
cmd.CommandText = "CREATE DATABASE \"" + _dbName + "\";";
|
|
||||||
cmd.ExecuteNonQuery();
|
cmd.ExecuteNonQuery();
|
||||||
_log.LogInformation("Database \"{0}\" created successfully!", _dbName);
|
_log.LogInformation("Database \"{0}\" created successfully!", _dbName);
|
||||||
}
|
}
|
||||||
@@ -262,8 +261,8 @@ namespace AyaNova.Util
|
|||||||
cmd.Connection = conn;
|
cmd.Connection = conn;
|
||||||
cmd.CommandText = "DROP DATABASE \"" + _dbName + "\";";
|
cmd.CommandText = "DROP DATABASE \"" + _dbName + "\";";
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
cmd.Connection = conn;
|
cmd.Connection = conn;
|
||||||
cmd.CommandText = "CREATE DATABASE \"" + _dbName + "\";";
|
cmd.CommandText = "CREATE DATABASE \"" + _dbName + "\" WITH ENCODING \"UTF8\" TEMPLATE=template0;";
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
_log.LogDebug("Database created");
|
_log.LogDebug("Database created");
|
||||||
}
|
}
|
||||||
@@ -323,7 +322,7 @@ namespace AyaNova.Util
|
|||||||
|
|
||||||
cmd.CommandText = "update apurchaseorderitem set workorderitempartrequestid=null;";
|
cmd.CommandText = "update apurchaseorderitem set workorderitempartrequestid=null;";
|
||||||
await cmd.ExecuteNonQueryAsync();
|
await cmd.ExecuteNonQueryAsync();
|
||||||
|
|
||||||
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();
|
||||||
|
|
||||||
|
|||||||
@@ -3042,7 +3042,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Dis-assemble",
|
Task = "Dis-assemble",
|
||||||
Sequence = 1,
|
Sequence = 1,
|
||||||
Status = WorkorderItemTaskCompletionType.Complete,
|
Status = WorkOrderItemTaskCompletionType.Complete,
|
||||||
CompletedDate = woDate.AddHours(1)
|
CompletedDate = woDate.AddHours(1)
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
@@ -3052,7 +3052,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Lubricate",
|
Task = "Lubricate",
|
||||||
Sequence = 2,
|
Sequence = 2,
|
||||||
Status = WorkorderItemTaskCompletionType.NotApplicable,
|
Status = WorkOrderItemTaskCompletionType.NotApplicable,
|
||||||
CompletedDate = woDate.AddHours(1)
|
CompletedDate = woDate.AddHours(1)
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
@@ -3063,7 +3063,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Repair",
|
Task = "Repair",
|
||||||
Sequence = 3,
|
Sequence = 3,
|
||||||
Status = WorkorderItemTaskCompletionType.Complete,
|
Status = WorkOrderItemTaskCompletionType.Complete,
|
||||||
CompletedDate = woDate.AddHours(1.5)
|
CompletedDate = woDate.AddHours(1.5)
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
@@ -3073,7 +3073,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Re-assemble",
|
Task = "Re-assemble",
|
||||||
Sequence = 4,
|
Sequence = 4,
|
||||||
Status = WorkorderItemTaskCompletionType.Complete,
|
Status = WorkOrderItemTaskCompletionType.Complete,
|
||||||
CompletedDate = woDate.AddHours(2)
|
CompletedDate = woDate.AddHours(2)
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
@@ -3083,7 +3083,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Test and confirm repair",
|
Task = "Test and confirm repair",
|
||||||
Sequence = 5,
|
Sequence = 5,
|
||||||
Status = WorkorderItemTaskCompletionType.Complete,
|
Status = WorkOrderItemTaskCompletionType.Complete,
|
||||||
CompletedDate = woDate.AddHours(2)
|
CompletedDate = woDate.AddHours(2)
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
@@ -3500,7 +3500,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Dis-assemble",
|
Task = "Dis-assemble",
|
||||||
Sequence = 1,
|
Sequence = 1,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3509,7 +3509,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Lubricate",
|
Task = "Lubricate",
|
||||||
Sequence = 2,
|
Sequence = 2,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3519,7 +3519,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Repair",
|
Task = "Repair",
|
||||||
Sequence = 3,
|
Sequence = 3,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3528,7 +3528,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Re-assemble",
|
Task = "Re-assemble",
|
||||||
Sequence = 4,
|
Sequence = 4,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3537,7 +3537,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Test and confirm repair",
|
Task = "Test and confirm repair",
|
||||||
Sequence = 5,
|
Sequence = 5,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3929,7 +3929,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Dis-assemble",
|
Task = "Dis-assemble",
|
||||||
Sequence = 1,
|
Sequence = 1,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3938,7 +3938,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Lubricate",
|
Task = "Lubricate",
|
||||||
Sequence = 2,
|
Sequence = 2,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3948,7 +3948,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Repair",
|
Task = "Repair",
|
||||||
Sequence = 3,
|
Sequence = 3,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3957,7 +3957,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Re-assemble",
|
Task = "Re-assemble",
|
||||||
Sequence = 4,
|
Sequence = 4,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
@@ -3966,7 +3966,7 @@ namespace AyaNova.Util
|
|||||||
CompletedByUserId = techId,
|
CompletedByUserId = techId,
|
||||||
Task = "Test and confirm repair",
|
Task = "Test and confirm repair",
|
||||||
Sequence = 5,
|
Sequence = 5,
|
||||||
Status = WorkorderItemTaskCompletionType.Incomplete
|
Status = WorkOrderItemTaskCompletionType.Incomplete
|
||||||
};
|
};
|
||||||
woItem.Tasks.Add(woItemTask);
|
woItem.Tasks.Add(woItemTask);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user