1292 lines
62 KiB
Plaintext
1292 lines
62 KiB
Plaintext
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 6 - "REALITY" All in on porting over all the real objects from v7
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
“Accept the things to which fate binds you, and love the people with whom fate brings you together,but do so with all your heart.”
|
||
|
||
― Marcus Aurelius, Meditations
|
||
|
||
|
||
## BIG PICTURE TO RELEASE
|
||
March
|
||
Workorder*, quote*, pm* implementations
|
||
case 3850 has all the good stuff about how to do this, UI concepts are basically worked out at this point and contract and po have resources to copy from for error / lists etc
|
||
April
|
||
Schedule form
|
||
Review all v8 cases top to bottom and triage / implement
|
||
V8Migrate completion
|
||
All stock reports (and schedule ones)
|
||
May
|
||
Manual pages
|
||
Extensions to replace current add-on's (accounting etc)
|
||
Load testing
|
||
Beta testing
|
||
Rockfish / Back end infrastructure
|
||
Biz decisions about hosting etc
|
||
June 1st
|
||
Release!
|
||
|
||
|
||
## CURRENTLY WORKING ON: Workorder
|
||
|
||
|
||
## MISC ITEMS THAT CAME UP
|
||
|
||
## E2E TESTING
|
||
|
||
|
||
## V8MIGRATE
|
||
|
||
todo: custom fields field names are not coming across, still show "Custom 1" when shoudl show whatever is set
|
||
todo: assigned doc not found text has too many newlines in it, should just sit on one line in exported notes
|
||
todo: dirty big test again with contracts etc
|
||
todo: v8 migrate additions
|
||
Erase DB warning must be very distinctive like bright yellow and red with crossbones etc
|
||
Report sent *to* the new server upon completion (any state) via MEMO to superuser
|
||
should send the entire contents of the output screen error or not as it will contain useful info like dupes not exported etc
|
||
Duplicate id not exported
|
||
found this in the wild with 4a database 4 workorders not exported due to this
|
||
message doesn't clearly say that number was exported already
|
||
is there a way to still export them?
|
||
Is it possible to login during migrate to the v8 server?
|
||
Need a running count per item, I have the total at the start so it should show what item it is currently processing of that count like 50/1000 or something
|
||
todo: workorders - need to set billing and service address from customers on migrate
|
||
|
||
|
||
|
||
## CLIENT MISC ITEMS
|
||
|
||
todo: notifications screen add delete all menu item that will just remove all the notifications present
|
||
Maybe a checkbox and delete selected and select all?? That way can also be a dual useful feature
|
||
also should delete *from* the client so that it deletes only what it has in view so user doesn't accidentally delete unseen yet to be delivered ones?
|
||
todo: notification new bell alert count add to title so shows in task bar when not in view?
|
||
like messenger "(1)" "(23)" etc
|
||
|
||
todo: notifications form if left sitting there should auto-refresh when it gets any new notifications?
|
||
not 100% sure about this one, maybe it's a nice to have feature but a waste of time otherwise
|
||
|
||
todo: notifications new count seems to be double getting on each iteration
|
||
todo: Seeding UI keep track of timing and later down the road when firmed up, provide estimate (average server will take):
|
||
2021-05-31 10:26:45.4801|INFO|Seeder|Small level sample data seeded in 27 seconds
|
||
2021-05-31 10:47:07.3417|INFO|Seeder|MEDIUM level sample data seeded in 2 minutes and 13 seconds
|
||
2021-05-31 10:56:04.9450|INFO|Seeder|LARGE level sample data seeded in 4 minutes and 17 seconds
|
||
2021-05-31 12:06:34.2680|INFO|Seeder|HUGE level sample data seeded in 24 minutes and 54 seconds
|
||
|
||
todo: need to track fetched keys vs used keys so can tell if fetched a key that I don't need or stopped using due to code change
|
||
todo: need to track fetched keys that don't exists, should bomb immediately so I can remove them, they will eat up traffic for no useful purpose!!
|
||
todo: strip all *viz fields from object before sending over the wire from client to server
|
||
Setting their value to undefined stops them being sent so do that, but remember they then need to be updated on the return record
|
||
PO I'm thinking is the main one??
|
||
|
||
todo: custom required rules only apply to new records!!
|
||
|
||
todo: inventory and other lists shows LT: because namefetcher postgres function returns it when it's not a named item
|
||
expects UI to translate it but UI doesn't so need a way to deal with that
|
||
to see what calls it just search for "AYGETNAME" in server project, also anything that calls bizobject name fetcher direct
|
||
it would be a better procedure if it was passed in a translation ID and would automatically get the key at db level of course
|
||
|
||
todo: notification subscription tags UI
|
||
Must make it clear that *ALL* tags in the subscription must exist in the object to match
|
||
if not documented also document this
|
||
|
||
todo: Contract override by TAGS
|
||
Translation / docs Must make it clear that *ALL* tags in that particular contract price override must exist in the object to match
|
||
User is expected to make multiple records if they want multiple different matching tags
|
||
reason for this is that they can do a more fine grained selection of multiple tags like "onsite" + "merville"
|
||
whereas if it was an any match then there would be no finer level of control, only one term to choose for each.
|
||
|
||
todo: form field customization add a "reset" feature to reset to default for when people fuck it up
|
||
basically just show all fields and remove the required from fields
|
||
|
||
todo: add NOW button to date picker just like time picker that does the same thing
|
||
|
||
todo: Not in love with the "Error api2200" as the only error text in the box
|
||
sometimes it has things you can't see in the form
|
||
ideally I'd like to see it have a string of text as a duplicate showing the errors translated in a list
|
||
in addition to each form field being set. This would cover our ass in case we missed a "general" or renamed a field or a wierd error
|
||
that we didn't anticipate, also more useful for the user to see at a glance what's what
|
||
If do this maybe consider adding a fixed height and scroll bar setting to the error box as it could get long but don't want it to fill up the screen
|
||
(maybe a "MORE INFO" button instead that warps the display in errorbox to the long form??)
|
||
At the very least make sure every raw error returned goes into the client log so can help with tech support when people need it without resorting to
|
||
making them open developer console to see the actual raw error. (if do this maybe extend the length of the error log as it's possibly too short to capture enough stuff this way??)
|
||
|
||
todo: Translation: "Physical" address seems wierd, rename to Street address or Delivery address or Service Address or whatever
|
||
todo: broken rules can't save should color save button red in addition to disabled some forms can't see what's what
|
||
todo: Any "Priority" type value in UI that has colors should use ayaFireAlt icon instead of round circle which is for minor status only
|
||
Flag is for major status like all of workorder
|
||
|
||
todo: be sure to address items in case https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3864
|
||
before next update to server / windows build for Joyce
|
||
|
||
todo: Re-test reporting on linux, just updated puppeteer sharp and it might be affected due to newer chromium
|
||
|
||
todo: double check main page boilerplate stuff is up to date 2021
|
||
https://www.matuzo.at/blog/html-boilerplate/
|
||
|
||
todo: when there is an errorbox error it's possible to miss it as it's at the top scrolled off screen and you can save as the appbar doesn't scroll
|
||
need more feedback, perhaps appbar turns red, or save button turns red or whole page has a color to it..??
|
||
Or maybe just as simple as an toast alert popup whatever it's called that temporarily shows the same error as is in the box at top
|
||
|
||
todo: REPORTING
|
||
naming of things is confusing possibly prepare code should use same names as ayreportdata etc so users aren't confused
|
||
also it should be named to indicate the server is modifying the data before it's sent to the template
|
||
i.e. name everything so it's clear what is being done where
|
||
|
||
todo: reporting custom fields
|
||
Joyce ran into an issue with a custom field defined as currency adn wanted to use it in a calculation on a report but it presents as a string
|
||
Look into either a helper to ease that or more ideally it presents as the type that it's supposed to be pre-modified? (not sure of the implications)
|
||
Do I have a custom fields helper already? What does it do?
|
||
Maybe translated custom fields alongside the string version??
|
||
Users see it as currency would be just as confused as Joyce was expecting it to be a number
|
||
|
||
todo: cleanup unnecessary use of a ayatype access inside the Methods of objects as it's now available in vue via main object,
|
||
e.g. where you see this: ayaTypes().XXXX you can replace it directly with this: $ay.ayt().XXXX and then REMOVE completely the ayaTypes() method in the vm of that object
|
||
todo: use const, not let unless need to reassign the variable
|
||
Going to need a case by case through all uses but it's a very important precaution so code it that way now for all new code
|
||
todo: make sure other datatable besides wo use form() rowError classes for consistency rather than self set in forms
|
||
see woitem / schedusers etc for example
|
||
todo: why the need for setErrorBoxErrors when setting the formstate errors already allows all the fields to pickup the errors for them
|
||
shouldn't the errorbox itself pickup it's own errors and elminate the need for this??
|
||
currently is: <gz-error :error-box-message="formState.errorBoxMessage"></gz-error>
|
||
maybe could be this?: <gz-error :error-box-message="form().serverErrors(this, 'generalerror')"></gz-error>
|
||
might even be a drop in replacement, should test, would reduce fuckery
|
||
|
||
todo: gzdecimal triggering dirty just by clicking into and out of a field witha value in it.
|
||
also, it sometimes shows without the decimal then with the decimal for editing then without, it's crazy
|
||
the decimal thing is probbly what's triggering the dirty change.
|
||
saw this when developing the wo form and testing scheduled users estimated qty field
|
||
todo: apierror showing in errorbox on validation error
|
||
this is too technical looking, needs to be cleaner for end users
|
||
maybe even a summary of errors for big forms showing property names and errors?
|
||
or at least say something like fields have errors or somesuch to guide them down into the form
|
||
small forms it's obvious but wo it's a bit ...actually still obvious, maybe just a cleaner line of text without the code looking stuff like "apiError" or whatever it shows
|
||
todo: generateMenu called on forms redundantly?
|
||
called for getdata, but also called in created in wrong place i.e. always rather than just when it's not a getdata situation due to already existing
|
||
todo: select list templates under global is offering types that don't6 have select lists like memo etc
|
||
todo: if all custom fields are turned off then should not show anything (I think that's already the case but confirm)
|
||
todo: ability to turn off attachments for every form it's on via customize ui
|
||
def can see admin wanting areas off limits for attachments and it would clean up the UI if not used
|
||
todo: ability to turn off the wiki for every form via customize ui
|
||
|
||
todo: adm-translations, adm-report templates data tables are skewed to the left due to lack of selection box column making filter icon partially gone off page
|
||
if has extension then should have selection box otherwise figure out what the dealio is
|
||
|
||
|
||
todo: after post to server check if this still happens:
|
||
Ayanova requires javascript is showing now all of a sudden on requests as if it's trying to serve app stuff from the server !?
|
||
refresh login and first response is the raw html page with noscript showing
|
||
maybe not even an issue, it does need that page after all
|
||
|
||
TODO: if keep seeing slowdown typing in large text fields maybe check if it's running rules endlessly and slowing things down that way
|
||
profile?
|
||
a timer that delays processing until typing stops??
|
||
...................................................................................................................................................................
|
||
|
||
todo: reportClientMetaData in gzapi has DefaultLocale property in it which is just part of the language, can it be removed?
|
||
it might be buggy if there is no dash in the language? Is that a thing?
|
||
check at server how it's used
|
||
todo: confirm erase database should reset all id values if they aren't reset already so that future data doesn't result in a new PO starting at 29000 due to huge db trial seed prior
|
||
todo: Popup notes now AlertNotes - a whole section of important notes at the top that shows *all* notes combined like customer popup and contract notes
|
||
that shows all the time in the workorder UI with an option to minimize maybe or something
|
||
This would be better than popup as it's always visible not dismissed and less ui fuckery to boot.
|
||
See case 3855
|
||
todo: use trans key "AlertNotes" in place of any popup notes variation
|
||
todo: poitem edit form currency fields when updated by server on save lose currency format and show as raw decimal number
|
||
maybe currency control does not respond to underlying data changes it didn't initiate?
|
||
seems maybe it's ok in main form but that's maybe just because it doesn't change values automatically
|
||
todo: datatable single select mode, is this even a thing?
|
||
if not then I should remove that code, it's just taking up space and complicating shit for no reason
|
||
todo: many stock reports could be made now for most objects
|
||
todo: Whats new in this release popup or link tied into the update process of the client??
|
||
|
||
todo: it's a bit hard to click on a single digit or character link in a data table
|
||
e.g. serial number 1 of a po
|
||
can the region be expanded with invisible text or something?
|
||
todo: WHEN HAVE WORKORDER FORM customer alert notes
|
||
todo: remove widget now? Back and front (comment out obvs not remove entirely)
|
||
|
||
todo: cypress testing for load testing etc
|
||
has to be done manually, there is a good idea in the comment here:
|
||
https://stackoverflow.com/a/51197403/8939
|
||
basically, init a new vue ui project, commit it, then add e2e plugin then recommit to see what all changed so can then manually remove that from main project
|
||
Look at moving to a standalone Cypress setup, why bother with the one built into vue ui, it doesn't seem to offer any benefits to doing it alone
|
||
this way can be fully up to date etc
|
||
https://www.cypress.io/
|
||
Remove from vue ui project but make copy of tests first
|
||
then make new project folder for this and put the tests there
|
||
install standalone cypress and go it without vue stuff
|
||
|
||
|
||
## SERVER MISC ITEMS
|
||
|
||
todo: notify on server boot?? (general notify to admin user or whatever?)
|
||
or on shutdown?
|
||
|
||
todo: notify on user login?
|
||
|
||
todo: tag based notifications need to be rechecked if tags change, not just the field(s) in question for that notification
|
||
for example, user makes a workorder with closeby date and tags but tags don't match when saves
|
||
user realizes missed a critical tag, adds it and saves; notification should then check again if can apply whatever it was
|
||
Use SameTags = NotifyEventHelper.TwoObjectsHaveSameTags(proposedObj.Tags, currentObj.Tags); to make it easy (workorder complete by)
|
||
|
||
|
||
todo: //TODO: Iterate all notification tagged items, use the one with the MOST matching tags
|
||
see how contract labor done in workorder, idea is it iterate from the subscription with the most numerous amount of tags to least in order to ensure that the most specfic tag set is matched first
|
||
|
||
todo: custom required rules only apply to new records!!
|
||
|
||
todo: Contract Duplicate throws exception at server (id attempted to be set, probably forgot to set copy to null id)
|
||
|
||
todo: Reports need to generate under a file name that is informative (this applies to every object)
|
||
This is because it will be a common case to need to email them to customers or other users or whatever and it is very helpful to know what it is by name alone.
|
||
i.e. a workorder should generate a report that can be saved as "Workorder_1" or whatever,
|
||
perhaps uses localized name of object but then processed to strip out spaces and case etc (file-name-ify it)
|
||
Also it will separately need a random part at the end to ensure it's not a dupe of an existing report also generated at the same time
|
||
Although, if you think of it, doing the same workorder again *should* just overwrite the existing one as it will be identical or at least more up to date so
|
||
perhaps no need for a nonce
|
||
|
||
todo: server log needs to indicate time zone it's logging in at boot so can understand the log entry times vs real world times
|
||
|
||
todo: update to latest postgres portable and document how to do it as well or a link to how to do it
|
||
|
||
todo: errors are inconsistent some use "error" some use "code" to mean the same thing
|
||
this is likely becuase "code" is used in the outer wrapper and "error" is used in the individual "details" validation errors
|
||
however it would be much cleaner if it was the same thing at all levels
|
||
Settle on "Code" only, change "error" to "code"
|
||
some things are producing {message:"blah",target:"blah",error:"blah"}
|
||
controller apierror
|
||
and validation errors are : {message:"blah", target:"blah", code:"blah"}
|
||
todo: server boot log should show exact .net framework version in use, currently shows nothing so if there is a bug fix release or something we'd not know for support
|
||
|
||
|
||
|
||
NOW
|
||
....
|
||
|
||
todo: Error at the devops server just looking at gold contract:
|
||
|
||
2021-03-26 18:21:36.8769|ERROR|SERVER|Error=>System.NullReferenceException: Object reference not set to an instance of an object.
|
||
at AyaNova.Biz.ContractBiz.PopulateVizFields(Contract o, List`1 contractOverrideTypeEnumList, Dictionary`2 preTrans) in C:\data\code\raven\server\AyaNova\biz\ContractBiz.cs:line 531
|
||
at AyaNova.Biz.ContractBiz.GetAsync(Int64 id, Boolean populateDisplayFields, Boolean logTheGetEvent) in C:\data\code\raven\server\AyaNova\biz\ContractBiz.cs:line 170
|
||
at AyaNova.Api.Controllers.ContractController.GetContract(Int64 id) in C:\data\code\raven\server\AyaNova\Controllers\ContractController.cs:line 100
|
||
at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.TaskOfIActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
|
||
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeActionMethodAsync>g__Logged|12_1(ControllerActionInvoker invoker)
|
||
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.<InvokeNextActionFilterAsync>g__Awaited|10_0(ControllerActionInvoker invoker, Task lastTask, State next, Scope scope, Object state, Boolean isCompleted)
|
||
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Rethrow(ActionExecutedContextSealed context)
|
||
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
|
||
at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeInnerFilterAsync()
|
||
--- End of stack trace from previous location ---
|
||
|
||
|
||
|
||
What up with this and can it be blocked from logging / something simpler logged instead?
|
||
Try to determine if it's time related, maybe during backup??
|
||
find a pattern
|
||
try logging success always to see how rare it is
|
||
I don't think it's happening at the linux server, it seems to be a comm issue from my ws??
|
||
no, it actually is.
|
||
bittorrent interferes with it like it does with my browsing, maybe not the cause though, just a data point
|
||
2021-03-17 05:19:27.0750|ERROR|JobsBiz|Server::ProcessJobsAsync unexpected error during processing=>System.Threading.Tasks.TaskCanceledException: The request was canceled due to the configured HttpClient.Timeout of 100 seconds elapsing.
|
||
---> System.TimeoutException: The operation was canceled.
|
||
---> System.OperationCanceledException: The operation was canceled.
|
||
at System.Threading.CancellationToken.ThrowOperationCanceledException()
|
||
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.ThrowException(SocketError error, CancellationToken cancellationToken)
|
||
at System.Net.Sockets.Socket.AwaitableSocketAsyncEventArgs.GetResult(Int16 token)
|
||
at System.Net.Security.SslStream.<FillHandshakeBufferAsync>g__InternalFillHandshakeBufferAsync|182_0[TIOAdapter](TIOAdapter adap, ValueTask`1 task, Int32 minSize)
|
||
at System.Net.Security.SslStream.ReceiveBlobAsync[TIOAdapter](TIOAdapter adapter)
|
||
at System.Net.Security.SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
|
||
at System.Net.Http.ConnectHelper.EstablishSslConnectionAsyncCore(Boolean async, Stream stream, SslClientAuthenticationOptions sslOptions, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.ConnectAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.CreateHttp11ConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.GetHttpConnectionAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpConnectionPool.SendWithRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
|
||
at System.Net.Http.RedirectHandler.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
|
||
at Microsoft.Extensions.Http.Logging.LoggingHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
||
at Microsoft.Extensions.Http.Logging.LoggingScopeHttpMessageHandler.SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
|
||
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken)
|
||
--- End of inner exception stack trace ---
|
||
--- End of inner exception stack trace ---
|
||
at System.Net.Http.HttpClient.SendAsyncCore(HttpRequestMessage request, HttpCompletionOption completionOption, Boolean async, Boolean emitTelemetryStartStop, CancellationToken cancellationToken)
|
||
at AyaNova.Core.License.FetchKeyAsync(ApiServerState apiServerState, AyContext ct, ILogger log, Boolean calledFromInternalJob, Boolean devTestTrial) in C:\data\code\raven\server\AyaNova\util\License.cs:line 522
|
||
at AyaNova.Biz.CoreJobLicense.DoWorkAsync() in C:\data\code\raven\server\AyaNova\generator\CoreJobLicense.cs:line 72
|
||
at AyaNova.Biz.JobsBiz.ProcessJobsAsync() in C:\data\code\raven\server\AyaNova\biz\JobsBiz.cs:line 178
|
||
|
||
|
||
todo: is there a way to tell if other connections are being used to AyaNova db
|
||
like a utility or they are fucking around and it's affecting performance etc
|
||
Yes: The following query returns the active connections:https://www.postgresqltutorial.com/postgresql-copy-database/
|
||
SELECT pid, usename, client_addr
|
||
FROM pg_stat_activity
|
||
WHERE datname ='dvdrental';
|
||
|
||
LATER
|
||
......
|
||
|
||
todo: Changes to allow in place updates of server without erasing data:
|
||
Needs to be supporting this early as possible so that upon release we can easily make changes without breaking existing setups or forcing complex actions
|
||
how to add locale keys in future after release without erasing all data?
|
||
Ideally I'd like to continue on to just edit the json translation files and the server looks for missing items and adds them automatically
|
||
so that it just works without having to erase the db
|
||
maybe a version on translations so it knows which one it's dealing with?
|
||
But then again, if it just checks them all it can fix anything missing automatically in case of fuckery and not assume they are ok
|
||
Stock locales can just be completely replaced at any time, custom ones need a fixup,
|
||
Custom locales should include where they came from (which language) so can more easily add new keys
|
||
Schema updates in place not require full delete
|
||
todo: figure out method to determine all translation keys actually used and remove unused ones entirely as they will show in the Translation ui and don't want to confuse people
|
||
Note: can do a search in Code editor at client for ay.t( and it will show all the translation keys fetched in code for the most part other than grid columns
|
||
can click in results and copy all to text which could then be processed to find all unique values??
|
||
Or, just exercise the whole app and all lists and then can pull from the local cache in the browser!!!
|
||
|
||
todo: NOTIFICATION after the fact
|
||
what happens when a user subscribes to a notification after an object was created
|
||
for example if a unit has a contract and they subscribe to contract expiring they won't get notified about units unless they are edited and saved
|
||
*after* the user subscribed
|
||
What did v7 do?
|
||
How to handle this??
|
||
Ideally it would work with existing objects and not require them all to be edited or is that an issue, can it be good enough that it works going forward?
|
||
Most subscriptions won't matter as they are direct immediate and one off but the timed and aged ones are definitely an issue.
|
||
It might have to run through those and subscribe in the user, maybe a static op on a *Biz object that you call and say "subscribe this user to all subs" and it iterates
|
||
the biz objects one by one and sets as appropriate??
|
||
|
||
todo: GetWorkorderSerial/name from leaf nodes
|
||
traverse up the tree and fetch the serial number
|
||
once coded fixup in purchaseorderbiz::getasync MIGRATE_OUTSTANDING bit
|
||
|
||
|
||
todo: tag search in picklist, does it support more than one tag? I forget
|
||
no, no it doesn't. Hmmm... fuck
|
||
maybe they can enter unlimited tags as long as they have a ..before each one?
|
||
Users may need to "triangulate" on to an item by multiple tags
|
||
|
||
todo: unit meter reading event?
|
||
|
||
|
||
TODO: //MIGRATE_OUTSTANDING comment tag
|
||
search for this comment tag as it will contain items that could not be done until other items were migrated first
|
||
The tag will contain the description for each
|
||
|
||
|
||
|
||
|
||
todo: many biz objects are not using new PUT methodology
|
||
Might be because new methodology assumes complete PUT object as a entire replacement not a partial update
|
||
some of these objects (User) do partial updates so....
|
||
might be that they don't need it but for consistency should check into it
|
||
|
||
|
||
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
|
||
|
||
|
||
CURRENTLY DOING: turn off "direct notification" menu options for customer type users
|
||
|
||
|
||
TODO: Hiding sections not used when empty and now added from the menu to present a cleaner empty work order
|
||
ideas:
|
||
super faded but still shown same as now, dark normal when they are used
|
||
add from top menu
|
||
add from fab floating action button when new?
|
||
something that stays so users can use either way so no confusion about shifting UI elements that disappear
|
||
|
||
bugbug: service completed (closed status) workorder goes gray initially but when go out and back in it's editable again WTF??
|
||
Seems to have just happened
|
||
|
||
todo: check Joyce's cases
|
||
|
||
--------- TEST RELEASE HERE ---------------
|
||
|
||
|
||
todo: notify event list table needs to show status of workorder (all fields) ideally
|
||
otherwise if you have multiple wostatusage notifications they all appear the same
|
||
Also it shows the email address even when it's set to in-app delivery which looks concerning and should not happen
|
||
this one might be tricky to get right, if can't then remove it entirely and just show if email or inapp delivery only not the address
|
||
or some kind of sumary field that aggregates several things of relevance
|
||
|
||
|
||
todo 3: signature: report helper display signature and form ui control to capture /display signature
|
||
for both tech and customer
|
||
case 3682 implies code to steal to make signatures better so look into that
|
||
case 2052 is this one
|
||
case 3673 also directly related
|
||
|
||
3720 3: BUMPABLE CASE I THINK prevent double booking a tech (some kind of warning)
|
||
availability feature??? maybe bump as a new availablity feature where user picks from a popup schedule for that tech?
|
||
if not maybe a alert from the workorder itself when they save saying double booked??
|
||
Searching time series and userid is a bit slow maybe or needs custom query not ef able??
|
||
|
||
3873 3: subtree woitem lists implement
|
||
must be some planning on this, forget what I decided exactly
|
||
|
||
todo 2: open object handler for workorder descendants **VERY IMPORTANT**
|
||
1) get the id of the workorder and item to open from the server using descendant to wo ID
|
||
2) pass that on to the workorder from
|
||
3) workorder form must open the wo in question then navigate to the descendant in question automatically
|
||
|
||
todo: how to directly open a workorder quickly when you know the wo number??
|
||
should be supported, otherwise you need to scroll around a list to find it which is fucked
|
||
|
||
todo: picking from part assembly to populate a bunch of parts??
|
||
|
||
todo 2-3: test and confirm can duplicate workorder and it works properly
|
||
inventory affecting items are handled how? Because duplicate happens AT the server so it can't just do the same exact items and serials and quantities etc
|
||
Or maybe it just doesn't replicate serials and acts like it was entered as is and they can reverse what they don't need (or quantities default to zero to start??)
|
||
|
||
todo 2-3: cases 3501 / 3867 both - bulk add units by tag
|
||
Do this as a separate popup dialog accessible from woitemunits list menu
|
||
It will do a search by tag for units and create a woitemunit record for each one found
|
||
ideally in some kind of order so it's easy to find them and remove any they don't want
|
||
also it should have a sane limit of some kind so 10,000 units aren't added accidentally to a workorder
|
||
Do at client so user can just not save if they fuck it up
|
||
|
||
TODO 2 (all 2's): V7 features on wo I haven't coded yet
|
||
WOItem selected
|
||
3374 - be able to move woitem to any customer's open workorders not just the same customer.
|
||
not sure of the use of this, it's couched like a template issue which is what template is for, but since we no longer force
|
||
a fixed customer per workorder there's no reason I can see not to do this when implementing the Move woItem feature
|
||
|
||
Move woitem to new wo
|
||
Copy woitem to new wo
|
||
Insert current date and time (not sure if this is worth it / doable)
|
||
Sched user selected
|
||
Convert sched user to labor
|
||
Tasks
|
||
3445 - copy selected tasks to a labor record
|
||
it says selected but I wonder about just doing all and they can simply edit out the ones they don't want?
|
||
(otherwise need checkboxes and whole selection thing but I guess if it's doable...)
|
||
Unit
|
||
warranty display static info
|
||
Unit's warranty expired Wednesday, July 1, 2009
|
||
--------------
|
||
Last closed service date: -
|
||
Last closed service workorder: -
|
||
Purchased Date: 2005-06-01 12:00 AM
|
||
Receipt Number: 46543545
|
||
Part
|
||
Generate unit from selected part (already a v7 feature, didn't even realize)
|
||
UPC select by UPC (just confirm this)
|
||
|
||
todo 2: workorder main data lists, flesh out, finish links from related objects
|
||
|
||
todo 1: "DispatchFull" and "DispatchLimited" roles MUST be renamed to "ServiceFull" and "ServiceLimited" to match other roles and intent
|
||
dispatch is a subset of a service manager job
|
||
Rename at both ends and all translations and docs as well.
|
||
|
||
todo 2: New wo link from related objects like Customer, Unit etc replicates v7 feature from grid
|
||
|
||
todo 1: reporting - need to add pre-caching code (for the few ENUM lists there are) and populate *Viz throughout graph to workorder before testing printing code.
|
||
|
||
todo 2: biz rules
|
||
Go over v7 rules for each level and object and mirror to v8 plus new
|
||
like date precedence etc
|
||
mirrored at server end too
|
||
|
||
todo 2:
|
||
1465 - several subcontractor / tech limited restriction features in this case
|
||
subcontractor not seeing prices but still able to make workorder case (not determined how this would work yet as do not want user being able to look at network traffic and see costs etc)
|
||
HOLD off on this until hit the cases where it's mentioned so working with exact specs not speculation (HA!)
|
||
leaning toward a different model perhaps as it may only be a particular subset???
|
||
(Or, if it's just hiding cost fields then just don't populate viz them. Viz fields can be safely set to anything really)
|
||
DON"T SEND AND ALSO AT CLIENT DON"T SHOW THOSE FIELDS IF SUBCONTRACTOR
|
||
|
||
TODO 1: Test address / units select alternate when have units working
|
||
|
||
TODO 2: //MIGRATE_OUTSTANDING comment tag
|
||
A bunch of items that are show all workorders for source object
|
||
3709 1: Project to have list all workorders button
|
||
also this is the point to make sure that is working with all the other list all workorders previously added in stubbed form like Customer, Unit etc
|
||
|
||
|
||
CASES TODO:
|
||
Some initial workorder cases to do
|
||
583 1: add unit address fields to viz populate but only show them when reportdata selected as UI doesn't consume them
|
||
1362 2: convert scheduled user to labor (case is to do en-masse but also I need to implement this individually as well)
|
||
|
||
1467 2: text1,text2 etc to show in "Warranty" area of Unit display info (however I have not coded or even thought of / decided on any v7 style warranty info section yet so double case here)
|
||
1746 2: Turn a Part on a workorder into a Unit for the customer in one click (not necesarilly for that workorder, but for future [it's not clear])
|
||
1908 1: set new durationtocompleted field on wo header upon setting to a closed status, also show it in the main data list
|
||
|
||
|
||
3500 1: implemented but needs the docs and seed data to illustrate the feature
|
||
make a shadow units customer in seeder sample data
|
||
make units under shadow units customer
|
||
assign some loan items to those shadow units
|
||
|
||
|
||
3721 1: make labor rate mandatory on workorderitemlabor record and import v7 with some kind of dummy rate if not filled in there
|
||
3763 1: mark all tasks as completed at once with a single click
|
||
3769 2: if public FromQuoteId, FromPMId or FromCSRId are set on wo header then it should surface a button or menu option to open the related object(s)
|
||
I think a menu option would be cleanest as you wouldn't always want to see it in your face but have it available
|
||
3839 / 3845 both 2: pick serial numbers quickly from serialized part selection (ui affordance popup dialog likely with offer of available sn, probably already something in PO similar), see cases for more deets
|
||
3843 1: prevent negative amounts on woitempart.quantity (rule I guess)
|
||
3868 2: be able to select any unit on wo, needs to be implemented at the UI as it should default to only this customers units (but not reject if customer changed)
|
||
and also test this out to see if it works properly
|
||
|
||
|
||
|
||
AFTER ABOVE ITEMS AND HAVE SUBSTANTIALLY COMPLETED WO
|
||
|
||
todo: IMPORT workorders FROM V7 needs to be coded once the cases are completed
|
||
note that v7 wostatus needs to be dual imported into both new wostate and new woitemstatus separately
|
||
|
||
|
||
TODO: Need stress test for client that can generate workorders in parallel for load testing
|
||
------------------------------------------
|
||
|
||
|
||
|
||
EACH OBJECT DEV CYCLE:
|
||
FIRST
|
||
Check cases, make sure not changing the object fundamentally, many v7 objects are going to change for cases (particularly inventory related)
|
||
BACK
|
||
AyaType and associated code
|
||
BizRoles
|
||
Model and Database Schema and AyContext
|
||
DbUtil EraseAllData method
|
||
Update function PUBLIC.AYGETNAME in aySchema for new type
|
||
Biz object and all supported interfaces (searchable, exportable etc)
|
||
Reportable Viz fields if reportable
|
||
Biz Object SEARCH Index / getsearchresult code add unique text fields
|
||
Business rules port from v7 and new ones
|
||
ValidateCanDete MUST check if any foreign key constraints and return proper error rather than bombing on attempted delete
|
||
Do check constraint first then biz rule so can test down to db
|
||
ALL biz rules where possible must have mirror db constraint to avoid fuckery with direct modified data
|
||
Notification code if applicable
|
||
Controller routes and associated code
|
||
Translation keys
|
||
FormFieldReference for object if it posesses an customizable form
|
||
DataList if applicable (be minimal with the default fields)
|
||
Picklist
|
||
Seeder generate samples
|
||
If anything needs to be changed down the road then flag it in comment with //MIGRATE_OUTSTANDING
|
||
FRONT
|
||
AyaType / rights
|
||
front route
|
||
List form
|
||
Edit form (## TEST ALL INPUTS ON EDIT FORM, DON"T ASSSUME THEY WORK)
|
||
Add to smoke test !!! VERY IMPORTANT
|
||
DOCS (at back but with front links, maybe not fleshed out just placeholder ok for now)
|
||
REPORTING
|
||
Reportable & VIZ fields
|
||
DASHBOARD
|
||
Add widget if dashboardable https://docs.google.com/document/d/1cEesyryhM0zYkH0PEswiuOezUTA_Nv5Xn3jfBczdQmk/edit
|
||
IMPORT
|
||
imports and flows through to new front end viewable and searchable and printable etc
|
||
|
||
|
||
|
||
## OBJECT ORDER
|
||
Preliminary order to get the ball rolling, these are the easiest starting point:
|
||
|
||
Inventory Migration
|
||
migrate inventory added to v8migrate as final step of export; code it based on balances and also insert serials etc
|
||
it checks the balances in v8 then compares to v7 then issues an adjustment to bring into sync
|
||
this way (last thing) we are always covered no matter what happens with wo import etc
|
||
|
||
|
||
|
||
|
||
Workorder
|
||
When do this need to go back and do a bunch of //MIGRATE_OUTSTANDING
|
||
i.e. show all
|
||
todo: Consider adding latitude / longitude to wo, quote, pm objects
|
||
rate split
|
||
can copy over from the unit or customer or set themselves
|
||
and can always hide
|
||
means wo could be scheduled for ad-hoc locations and serviced that way, i.e. a truck parked on the side of the highway etc
|
||
|
||
Quote
|
||
|
||
PM
|
||
|
||
Schedule form
|
||
|
||
|
||
|
||
# V7 objects now TAGS, the following objects are imported as tags and suffixed with a period and then short versions of the object type in the tag name
|
||
- Region
|
||
- UnitModelCategory
|
||
- UnitServiceType
|
||
- WorkorderItemType
|
||
- ClientGroup
|
||
- WorkorderCategory
|
||
- PartCategory
|
||
- DispatchZone
|
||
- ScheduleableUserGroup
|
||
- ClientNoteType
|
||
- VendorType ## LATE ADDITION
|
||
|
||
|
||
## v7 DB DEPENDENCIES
|
||
object
|
||
depends on
|
||
|
||
AssignedDoc * Already handled automatically by v8 migrate
|
||
none
|
||
|
||
xaclient
|
||
adispatchzone - TAG
|
||
aheadoffice
|
||
aworkorder
|
||
|
||
xaclientgroup - TAG
|
||
none
|
||
|
||
xaclientnote
|
||
aclientnotetype - TAG
|
||
aclient
|
||
|
||
xaclientnotetype - TAG
|
||
none
|
||
|
||
DEPRECATED - aclientnotifyevent -
|
||
none
|
||
|
||
aclientservicerequest
|
||
aworkorderitem
|
||
|
||
DEPRECATED - acontact -
|
||
acontacttitle
|
||
|
||
Xacontract
|
||
aregion - TAG
|
||
|
||
Xacontractrate
|
||
acontract
|
||
arate
|
||
|
||
X adispatchzone - TAG
|
||
aregion - TAG
|
||
|
||
DEPRECATED / HANDLED AUTOMATICALLY BY IMPORT afile
|
||
none
|
||
|
||
xaglobal
|
||
ataxcode
|
||
aworkorder
|
||
aworkorderstatus
|
||
|
||
xaglobalex
|
||
none
|
||
|
||
xaheadoffice
|
||
aclientgroup - tag
|
||
acontract
|
||
|
||
aintegration
|
||
none
|
||
|
||
aintegrationmap
|
||
aintegration
|
||
|
||
Xaloanitem
|
||
aregion - TAG
|
||
aworkorderitemloan
|
||
|
||
xamemo
|
||
auser
|
||
|
||
DEPRECATED - anotify*
|
||
lots of tables, but it's all obsolete and won't be ported
|
||
|
||
HANDLED BY IMPORT - aobjectcustomfield
|
||
(defines custom fields, is part of base import already, nothing special required here)
|
||
|
||
apart
|
||
apartassembly
|
||
apartcategory - TAG
|
||
aunitofmeasure
|
||
avendor
|
||
|
||
apartassembly
|
||
none
|
||
|
||
apartbywarehouseinventory
|
||
apart
|
||
apartwarehouse
|
||
|
||
apartcategory - TAG
|
||
none
|
||
|
||
apartinventoryadjustment
|
||
none
|
||
|
||
apartinventoryadjustmentitem
|
||
apart
|
||
apartinventoryadjustment
|
||
apartwarehouse
|
||
|
||
apartserial
|
||
apartinventoryadjustmentitem
|
||
apurchaseorderreceiptitem
|
||
aworkorderitempart
|
||
|
||
apartwarehouse
|
||
aregion - TAG
|
||
|
||
xapriority
|
||
none
|
||
|
||
xaproject
|
||
aregion - TAG
|
||
auser
|
||
|
||
apurchaseorder
|
||
aproject
|
||
avendor
|
||
|
||
apurchaseorderitem
|
||
apart
|
||
apartwarehouse
|
||
apurchaseorder
|
||
ataxcode
|
||
aworkorderitempartrequest
|
||
|
||
apurchaseorderreceipt
|
||
avendor
|
||
|
||
apurchaseorderreceiptitem
|
||
apart
|
||
apurchaseorder
|
||
apurchaseorderitem
|
||
apurchaseorderreceipt
|
||
|
||
xarate
|
||
aclientgroup - tag
|
||
arateunitchargedescription - DEPRECATED per case 3432
|
||
aregion - TAG
|
||
|
||
DEPRECATED case 3432 - arateunitchargedescription
|
||
none
|
||
|
||
xaregion - TAG
|
||
aworkorderstatus ?! WTF?
|
||
|
||
xregionnotifystat ?wtf is this?
|
||
aregion - TAG
|
||
|
||
REPLACED NEW FORMAT - areport
|
||
aregion - TAG
|
||
|
||
xaScheduleableUserGroup - TAG
|
||
none
|
||
|
||
xascheduleableusergroupuser
|
||
aScheduleableUserGroup - TAG
|
||
auser
|
||
|
||
aschedulemarker (now "Reminder")
|
||
none ?must be at least user in there...weird
|
||
|
||
DEPRECATED - asecuritygroup (nope)
|
||
none
|
||
|
||
xaservicebank
|
||
none
|
||
|
||
atask
|
||
none
|
||
|
||
ataskgroup
|
||
none
|
||
|
||
ataskgrouptask
|
||
atask
|
||
ataskgroup
|
||
|
||
xataxcode
|
||
none
|
||
|
||
aui* (these are all v7 UI saved settings that are not applicable to v8)
|
||
|
||
xaunit
|
||
aclient
|
||
aunitmodel
|
||
|
||
xaunitmeterreading
|
||
aworkorderitem
|
||
|
||
xaunitmodel
|
||
aunitmodelcategory - TAG
|
||
avendor
|
||
|
||
xaunitmodelcategory - TAG
|
||
none
|
||
|
||
DEPRECATED NO MORE - aunitofmeasure
|
||
none
|
||
|
||
xaunitservicetype - TAG
|
||
none
|
||
|
||
xauser
|
||
adispatchzone - TAG
|
||
aheadoffice
|
||
apartwarehouse
|
||
asecuritygroup
|
||
avendor
|
||
aworkorder
|
||
|
||
xausercertifcation* (these are now tags and already rolled into v8 migrate tool)
|
||
|
||
xausermru DEPRECATED
|
||
xauserright DEPRECATED
|
||
|
||
xauserskill* (now tags and already accounted for in v8 migrate)
|
||
|
||
xavendor
|
||
none
|
||
|
||
xawikipage* (already accounted for in v8 migrate code, object by object will export)
|
||
|
||
aworkorder (new structure, some of these are no longer joined due to seperation of wo types in v8)
|
||
aproject
|
||
aregion - TAG
|
||
aworkordercategory - TAG
|
||
aworkorderpreventivemaintenance
|
||
aworkorderquote
|
||
|
||
xaworkordercategory - TAG
|
||
none
|
||
|
||
aworkorderitem
|
||
apriority
|
||
aunit
|
||
aunitservicetype - TAG
|
||
aworkorderitemtype - TAG
|
||
aworkorderstatus
|
||
|
||
aworkorderitemlabor
|
||
arate
|
||
aservicebank
|
||
ataxcode
|
||
aworkorderitem
|
||
|
||
aworkorderitemloan
|
||
aloanitem
|
||
ataxcode
|
||
aworkorderitem
|
||
|
||
aworkorderitemmiscexpense
|
||
ataxcode
|
||
aworkorderitem
|
||
|
||
aworkorderitemoutsideservice
|
||
avendor
|
||
aworkorderitem
|
||
|
||
aworkorderitempart
|
||
apart
|
||
apartserial
|
||
apartwarehouse
|
||
ataxcode
|
||
aworkorderitem
|
||
|
||
aworkorderitempartrequest
|
||
apart
|
||
apartwarehouse
|
||
apurchaseorderitem
|
||
aworkorderitem
|
||
|
||
aworkorderitemscheduleduser
|
||
arate
|
||
aworkorderitem
|
||
|
||
aworkorderitemtask
|
||
atask
|
||
ataskgroup
|
||
aworkorderitem
|
||
|
||
aworkorderitemtravel
|
||
arate
|
||
aservicebank
|
||
ataxcode
|
||
aworkorderitem
|
||
|
||
xaworkorderitemtype - TAG
|
||
none
|
||
|
||
aworkorderpreventivemaintenance
|
||
aworkorder
|
||
aworkorderstatus
|
||
|
||
aworkorderquote
|
||
aworkorder
|
||
|
||
aworkorderservice
|
||
aworkorderpreventivemaintenance
|
||
aworkorderstatus
|
||
|
||
xaworkorderstatus
|
||
none
|
||
|
||
|
||
|
||
|
||
|
||
------------------------------------------------------------------------------------------
|
||
|
||
POST "REALITY" OR IN PARALLEL "REALITY" related items:
|
||
|
||
todo: CYPRESS TEST DATE / TIME / DATE_TIME controls switched back to vuetify ones
|
||
widget entry form test rewrite
|
||
https://github.com/cypress-io/cypress/issues/7404
|
||
https://github.com/vuetifyjs/vuetify/issues/10988#issuecomment-726089949
|
||
|
||
TODO: //MIGRATE_OUTSTANDING comment tag
|
||
search for this comment tag as it will contain items that could not be done until other items were migrated first
|
||
The tag will contain the description for each
|
||
|
||
todo: Schedule form
|
||
- This one is big but requires the data to be there so as soon as implement enough things that are scheduleable then do this
|
||
- printing / reporting schedule? Do-able?
|
||
- https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/729
|
||
|
||
|
||
todo: can beta test at this point
|
||
See below, specific ideas about public beta test (User accounts not seperate installs maybe)
|
||
post installer, enlist trial users get feedback, don't get too down when they shit all over it as they will undoubtedly :)
|
||
remember, it's for the new customers primarily, new customers = new $$
|
||
|
||
todo: Document in user manual all form controls with instruction on how to use the various controls etc
|
||
- "Anatomy of a AyaNova Form"
|
||
|
||
WORKORDER UI
|
||
todo: Investigate Workorder structure and datagrid see case https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3768
|
||
Likely that workorder grids inside will not be full blown custom datagrid I wrote but just a vanilla v-data-table control since there is likely no need for the full customization shit
|
||
todo: workorder UI layout stuff (TTM!! Don't re-invent the wheel!)
|
||
There's been a lot of ideas about wo floating around and considered, but at the end of the day what I have works so maybe try to meld
|
||
into what I have the new concepts and see what comes out. Support a rich wo UI on big screens and scroll around UI on phone maybe.
|
||
some notes:
|
||
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
|
||
Basically (based on RI) it boils down to don't make the user go up to the workorder item level when they can go sideways directly to an alternate child of woitem
|
||
i.e. going from parts to labor shouldn't require going up a level
|
||
All workorder in one document and just really really tall? (people bitch about RI requiring too many navigation steps to get to shit)
|
||
Header and items in one document then bottom in seperate pages?
|
||
Is it going to be far easier to code this bitch if I have all the workorder data at hand or..?
|
||
How does WBI handle all this because it's kind of the poster child for RAVEN
|
||
Workorder is one of those things that may require different views for phone and tablet and laptop etc
|
||
Kind of like two views, tiny phone and anything larger
|
||
On a PC people will want and expect it to look as much like v7 workorder as possible, maybe that's still a valid layout
|
||
just tweaked to work better as a web app a bit but theoretically I could almost duplicate that layout with the tools I have
|
||
|
||
|
||
Consider UI in this as well, will need to decide at least what is visible when
|
||
Workorder UI good ideas here: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3475
|
||
How to add items, like new woitem?
|
||
send to server get back new object?
|
||
lots of biz rules and stuff need to happen, want to minimize load at client
|
||
but lots of data back and forth is not ideal
|
||
maybe request a woitem and get it back?
|
||
what exactly needs to be processed in the wo when items are added / removed?
|
||
math / totalling?
|
||
simple calcs sb client doable
|
||
this will drive what has to happen.
|
||
Need to go over all wo features and factor them into this decision properly
|
||
The whole idea of a completed section of a wo and stuff, is that dropped due to TTM or still viable?
|
||
maybe can pick out the best new features of that which can be integrated into existing design rather than re-inventing the wheel
|
||
Here is an overview: https://rockfish.ayanova.com/default.htm#!/rfcaseEdit/3412
|
||
How best to be able to service LoanUnits on a workorder? [UPDATE: added shadow units feature]
|
||
Just make them Units with extra properties exposed if type of loaner?
|
||
This seems simplest, but what will it effect?
|
||
Hard to make them serviceable if they are an alternate table of source for what's being repaired as that breaks a lot of other code or adds exceptions
|
||
Customer is then who exactly because it's fundamental to a lot of wo functionality?
|
||
from a biz perspective isn't it like you are your own customer when you service your own equipment that you loan out?
|
||
Does Serial field need to be numeric, could it be text instead?
|
||
prompted by case 3428 saying that it's hard to deal with constant conversion to text for UI etc
|
||
plus, I'm thinking it opens door to textual scheme like appending -A or whatever to a wo.
|
||
or, is that a display issue?
|
||
Calling something "serial" implies it's unique but it isn't, maybe I should call it "number" instead or "ID" or something?
|
||
INFO: did a test workorder with ALL fields filled out heavily and one woitem, exported from db entire graph based on detailed report so every line was every item repeated
|
||
still only 84kb and it's a lot bigger than any typical wo in v8 would be as it will be far more efficient without having to repeat lines flatly
|
||
so I think size of object is a non-issue really from a practical standpoint.
|
||
|
||
|
||
UI
|
||
|
||
idea: UI reflects tentativeness state of object:
|
||
The UI doesn't imply something is done by changing it fully until the save is completed.
|
||
This serves two purposes:
|
||
1) user knows at a glance what isn't saved yet and will know it's waiting for save clearly, hopefully leading them to save more often,
|
||
2) client doesn't need to track invisible shit behind the scenes, can more easily do patch updates right off UI source
|
||
|
||
e.g.:
|
||
if deleted a row in parts, that row doesn't disappear but rather shows crossed out, maybe grayed out but still there until save to indicate it's tentative status
|
||
if added a row, shows green or something or bold or asterisk, (can style with css based on state) until saved
|
||
problems:
|
||
how to handle regular fields that are changed (that's a lot of field data to track for changes)?
|
||
Maybe client keeps a virgin copy of the original wo for comparison
|
||
periodically does a compare and flags differences on updates?
|
||
(this would also help to serve as an Undo maybe?)
|
||
|
||
|
||
|
||
todo: Documentation POST "REALITY"
|
||
will already have placeholders from above
|
||
Need to think this through carefully
|
||
Need to get the critical bits in for onboarding and importing so people can get going
|
||
Most important stuff is anything non-obvious
|
||
Seems pointless to have one doc per form that just says "The name field is the name and must be unique"
|
||
maybe have that kind of stuff in the form basics and then have a doc per OBJECT instead with anything unique or interesting about the object
|
||
(and each object form has a link to formbasics so can link to the object form from UI and they get both)
|
||
Parts of it can be done post-release for sure
|
||
|
||
|
||
|
||
todo: ONGOING search for memory leaks
|
||
The 7 times system seems to work the best
|
||
Excercise item a few times to settle it in memory, take heap snapshot, force gc, take total of 3 heap snapshots forcing gc each times
|
||
Excercise item 7 times exactly, take 3 more heap snapshots forcing gc before each one
|
||
Compare snapshot 6 to snapshot 3 look for Delta 7 times items to find leak
|
||
https://developers.google.com/web/tools/chrome-devtools/memory-problems
|
||
https://nolanlawson.com/2020/02/19/fixing-memory-leaks-in-web-applications/
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 7 - EXTENSIONS (was plugins)
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
Step 1: get the current active license count for all extensions so I know what i'm dealing with here
|
||
Step 2: which extensions in which order and some can be left off entirely?
|
||
|
||
Plan the order of criticality for extensions
|
||
ACCOUNTING is obviously the first and foremost one and MUST be there for a lot of people to take up
|
||
MUST be done in a way to support other alternative accounting apps that are coming around now like freshbooks or whatever it's called that Joyce is using now
|
||
probably going to need a "trick" of some kind to interface with desktop accounting
|
||
i.e. a local windows app that uses the api and just copy over the qbi code
|
||
or a local server that has it's own web interface
|
||
or regular raven UI but the accounting section interfaces with a local server for local desktop qbi stuff and
|
||
the raven server interfaces with QBOnline for the QBOI stuff
|
||
|
||
based on sales, how many subscribed now
|
||
which ones are porting and which are not
|
||
Implement in order or priority
|
||
Fuck peachtree?
|
||
probably not, need to check again our install count of extensions
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 8 - ONLINE EVALUATION ABILITY / INSTALLER, LICENSING, ROCKFISH SUPPORT FOR RAVEN
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
todo: setup for automated trial testing ability so can just link users
|
||
Maybe, rather than having seperate servers for testing, have it instead generate a User account on the fly for each user who wants to trial
|
||
Automatically re-create the data on a cycle of some kind
|
||
Needs warning message about being a shared instance of AyaNova so be careful what you type and also you may see things other people typed that I have no control over
|
||
|
||
todo: WINDOWS INSTALLER
|
||
Runner harness wrapper thing?
|
||
even if windows only
|
||
it could modify config since it's outside the server
|
||
check for Postgres server extant and if not automatically start the standalone postgres instance
|
||
manage postgres start and stop and configuration changes, sit in tray, run AyaNova server from there?
|
||
|
||
easy way to select command line params without resorting to editing text files for end user
|
||
initially it's an installation option, but then need to edit after the fact
|
||
Quick check of installers available still and is it still kosher to keep using INNO setup or is something better, more supported by windows etc?
|
||
Wix if want MSI (some say that's desireable)
|
||
INNO is still relevant
|
||
I don't need hardly any requirements that can't just be copy or unzip deployed so maybe don't even need an installer for now?
|
||
(zip distribution is going to be problematic with Windows file protection shit)
|
||
https://docs.microsoft.com/en-us/dotnet/core/deploying/
|
||
https://docs.microsoft.com/en-us/dotnet/core/rid-catalog
|
||
|
||
|
||
Completely packaged and installable. REady for users to install as a test as I iterate stage 7 below
|
||
All the stuff needed for someone to run it as a test without the real objects yet.
|
||
Some kind of expiring license so they can't just keep using it as fucked as it may be some might do that
|
||
I want short targetted testing only, not someone downloading and trying it out a month later, that's useless for us
|
||
This needs to be focused on what I need to get from people about testing
|
||
|
||
|
||
todo: LINUX INSTALLER
|
||
Linux users don't mind doing the manual config thing as much, they're used to it and it could just be a shell file anyway
|
||
So mainly this would be a documentation steps to install type issue
|
||
|
||
|
||
todo: DOCUMENT DOCKER
|
||
Present dockerfile maybe for docker installation with FILES folder pre-ready to build / run
|
||
Whatever docker needs
|
||
Or maybe private registry with docker images on our servers somewhere
|
||
|
||
todo: rockfish, can't do purchase for raven or view it I think
|
||
Test a whole sales process from eval to purchase and make it work
|
||
todo: rockfish, upgrade to latest bootstrap, out of date Currently
|
||
todo: rockfish, trial license fetched On date not updating? (not showing in UI)
|
||
|
||
todo: Joyce rockfish notes:
|
||
Licensing:
|
||
noticed that the field "Fetched on" is NEVER updated.
|
||
is it much to be able to see the TIME as well as the DATE, when "Requested" and when "Processed"?
|
||
There are drop down selections NEW, APPROVED, REJECTED for the (already generated) listed keys. But can not actually save to a different Status. What is the purpose of the drop down options if can not select?
|
||
|
||
|
||
|
||
|
||
todo: Discourse bootstrapping install
|
||
look over, get ideas make case steal ideas profit FTW$
|
||
https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md
|
||
//here is their standalone config yml definition for DOCKER
|
||
https://github.com/discourse/discourse_docker/blob/master/samples/standalone.yml
|
||
|
||
|
||
|
||
todo: back and forward buttons when running without browser controls in application mode?
|
||
- wait and see on this one, as it will be likely outside of any particular form so not something to be baked in early necessarily
|
||
|
||
todo: GUIDED TOUR
|
||
- This is an important feature and at least get a basic one in there for starters and initial release
|
||
- This is a replacement for the tutorials and videos in v7 a
|
||
- Need to add that auto-pilot thingy that allows for guided tours in HTML apps
|
||
- Specifically it should at least have an ONBOARDING walk through of how to move around, enter data, get help etc. Not feature specific but usage specfic.
|
||
- Later I'll add feature specfic tutorials like how to make a workorder etc
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 9 - RELEASE
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
|
||
todo: ARCHIVE ALL DEPENDENCIES
|
||
Get all code for all 3rd party libs used for front and back of AyaNova 8
|
||
Need to store that in an archive somewhere just in case
|
||
Needs to be done with each release so can go back to that if necessary
|
||
Going to be big, maybe archived to all storage drives locally and burned to a dvd?
|
||
If check into the repo it will be an issue probably but you never know
|
||
|
||
TODO: CSP Policy that should be enabled at server?
|
||
I had to add per this: https://docs.telerik.com/kendo-ui/troubleshoot/content-security-policy#content-security-policy
|
||
to my csp because I kept getting errors in client end debug console mentioning csp issues
|
||
this seemed to come after I updated the client build process to do a legacy and modern build but I'm not 100% sure about that
|
||
|
||
TODO: Docker HUB
|
||
if we can put AyaNova on Docker hub then many hosting providers have 1 click methods to instantiate it so that's a viable easy onroad for potential customers
|
||
e.g. digital ocean "app platform" https://www.digitalocean.com/products/app-platform/
|
||
also here separately https://marketplace.digitalocean.com/
|
||
|
||
Assuming has passed all testing
|
||
Plan pricing and sales strategy
|
||
What to do with licenses for v7 people
|
||
Another payment processor?
|
||
support bitcoin if possible as well
|
||
|
||
|
||
DONATE
|
||
Send a tip / buy a coffee link to the graphic designer who made the rabbit logo
|
||
https://pixabay.com/vectors/bunny-rabbit-wrench-repairs-154508/
|
||
coffee button top right
|
||
if I use it in release I should at least send them the small amount they get tipped
|
||
|
||
Send a tip / donate to the favicon generator guy
|
||
https://realfavicongenerator.net/
|
||
I broke it at one point by bringing down the site while it was checking ... oops.
|
||
Used it several times and should donate
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 10 - ROCKFISH / HOSTING BACKEND SELF SERVER READINESS
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
DO server allocation, rockfish revamp to drive this part (or maybe it's an alternate app)
|
||
https://blog.digitalocean.com/its-all-about-the-bandwidth-why-many-network-intensive-services-select-digitalocean-as-their-cloud/?utm_medium=email&utm_source=do_newsletter&utm_campaign=04292020
|
||
https://www.youtube.com/watch?v=zZVoo5AbANI
|
||
|
||
|
||
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
@@@@@@@@@@@@@@@ ROADMAP STAGE 11 - RELEASE SELF SERVE / HOSTING
|
||
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
|
||
Fall of 2021 hopefully
|
||
links on website for sign up
|
||
marketing can begin in earnest
|
||
|
||
NOTE: HOSTING cases are all moved to priority 2 and most have "HOSTING" in the title tags
|
||
|
||
todo: Administration - Account
|
||
Down the road will need an Account page for seeing their account status in rental SAAS situation
|
||
Nothing to do here, it's an obvious one, just delete this later, it's to percolate in brain a bit
|
||
maybe under license
|
||
|
||
PLAIN TEXT EMAILS / ONBOARDING
|
||
https://blog.palabra.io/great-onboarding-plain-text
|
||
|
||
MARKETING
|
||
Analytics alternatives to Google:
|
||
https://news.ycombinator.com/item?id=24198329
|
||
|
||
Also very nice screen shot effect:
|
||
https://umami.is/
|
||
Created by:
|
||
|
||
dom96 2 hours ago [–]
|
||
|
||
Nice! Question for you, how did you make that nice 3D image on the front page with various screenshots overlaid over each other? :)
|
||
|
||
reply
|
||
|
||
|
||
mcao 2 hours ago [–]
|
||
|
||
It's all done in Photoshop. Just take screenshots, then transform, rotate, distort them to look flat. Then add some drop shadows for a 3d look.
|
||
|
||
reply
|
||
|
||
|
||
|
||
MUSIC TO ADD TO COLLECTION
|
||
BOC - cities on flame
|
||
MID CENTURY MODERN TUNES - https://www.allmusic.com/album/ultra-lounge-vol-14-bossa-novaville-mw0000024024
|
||
|
||
|
||
|
||
|
||
|
||
BUILD CHANGES OF NOTE
|
||
|
||
build 110
|
||
|
||
- test data seeder various changes
|
||
generate fewer items for speed
|
||
changes to allow testing inventory properly and part requests etc
|
||
|
||
- workorder cleanup and layout changes
|
||
now showing table for each item even if single row so that all viz and other calculated fields are always available to view
|
||
TODO: Hiding sections not used when empty and now added from the menu to present a cleaner empty work order
|
||
data transfer efficiency changes to cut down on amount of data sent both ways over the network
|
||
strip out Viz fields on submit to server from client
|
||
strip out IsDirty fields on send from server to client
|
||
Errors returned from server now properly displaying in both table and in controls
|
||
|
||
|
||
- Service loaner form added cost fields to bring in line with other billable items on workorder
|
||
|
||
- Workorder inventory implemented
|
||
including part requests trigger and system in workorder and backend
|
||
|
||
- workorder based notifications implemented
|
||
WorkorderCompletedStatusOverdue
|
||
WorkorderStatusChange
|
||
WorkorderStatusAge
|
||
ScheduledOnWorkorder
|
||
ScheduledOnWorkorderImminent
|
||
OutsideServiceReceived
|
||
OutsideServiceOverdue
|
||
CustomerServiceImminent
|
||
WorkorderTotalExceedsThreshold
|
||
WorkorderCompleted (customer and inside user notification, properly works with headoffice type users and their customers)
|
||
WorkorderCreatedForCustomer (customer notification, properly works with headoffice type users and their customers)
|
||
|
||
- standard object CRUD notifications implemented for all workorder tree objects
|
||
(note that child items in workorder tree that don't have their own tags [all but items and workorder item units] will use the work order header tags for determining notification)
|
||
|
||
- Administration -> Global settings form added all Customer "contact" login account related control settings
|
||
also implemented at UI so those settings will now affect what Customer or HeadOffice user sees when they login or attempt to subscribe to a notification
|
||
|
||
- Removed all visible references to Service Bank feature from all forms and front and back end
|
||
|
||
- Docs
|
||
added section on changes from v7 help doc for work orders
|
||
global settings expanded with info about Customer Contact account control settings
|