927 lines
36 KiB
Plaintext
927 lines
36 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
|
||
|
||
TODO: SET DEADLINES
|
||
|
||
MISC ITEMS THAT CAME UP
|
||
|
||
## CLIENT MISC ITEMS
|
||
todo: acc-service-bank is using a decimal control instead of a currency control for currency field
|
||
todo: Unit override warranty lifetime active should disable or even hide "override length" field
|
||
todo: OverrideLifetime is bad text, fix it, key is "UnitOverrideLifeTime" and maybe it just says "Life time warranty"
|
||
|
||
todo: inconsistent use of browser language and browser languages
|
||
getBrowserLanguages() <--- more often used vs getBrowserFirstLanguage() <-- fewer times used
|
||
some things are using the default first language
|
||
and some are using the entire array
|
||
In some cases array will work, in others it requires single
|
||
need to check into this and be consistent or understand what's happening
|
||
I'm guessing we favor languages as it seems to be accepted by whatever is using it and it will work better if the first one is unsupported
|
||
|
||
todo: locale.js look into this:
|
||
// also for sake of future proofing and edge cases need to have it be manually settable as well
|
||
// ############### TODO: modify all of these to put the user's manual override first in line (if there is one)
|
||
|
||
|
||
todo: when have po, can po serial number be set by user and accepted by postgres?
|
||
I think it can with the definition I have set up.
|
||
this would be useful for scenarios like 4alarm with the oddball po and other auto generated id numbers
|
||
|
||
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: "Picklist display formats" translation used in admin settings
|
||
rename to something more generic like selectable items display format or something as it's used in displaying in lists as well like part assembly parts
|
||
|
||
todo: partassembly form should use an edit dialog rather than edit in place in the grid as it's ugly and clunky and outside of the standard that will be used in PO and wo etc
|
||
|
||
todo: WHEN HAVE WORKORDER FORM customer popup notes need to pop pop pop, forgot to code for that before
|
||
It's been requested for a couple of other places as well so I need a re-usable solution for this
|
||
maybe it requires dismissal rather than what I was thinking of which is a self closing alert as people may want to read it for a while.
|
||
However, I also find that incredibly annoying but I guess that's the point :)
|
||
|
||
## SERVER MISC ITEMS
|
||
|
||
todo: FormFieldReference, edit at server to be in order that is shown on form or
|
||
modify the Customize form to put them in alpha order or something, right now it is basically random (except po which I just did in order and makes more sense)
|
||
todo: OOPS, FormFieldReference has a potentially major issue:
|
||
RequiredFieldsValidator expects the FieldKey property to be the exact name of the business object property, but I've been just tossing anything in there willy nilly
|
||
Go through them all and ensure that the fieldkey is the actual biz property, not made up random nonsense and not the translation key (unless they happen to be identical)
|
||
the FieldKey should exactly match the Model definition of that property
|
||
|
||
todo: child collection items error / rule / customization handling
|
||
All commented in with //TODO: CHILD COLLECTION MOD
|
||
Currently not supported but should be when get to wo it will be a beast without this
|
||
users will need to hide child items, set required on them and see errors from server on them
|
||
RESOLUTION:
|
||
Add child collection items to FormFieldReference and set the FieldKey to be in teh form of ParentCollectionName.FieldName
|
||
where ParentCollectionName is exactly the same as the Model collection property name and
|
||
FieldName is exactly the same as the child collection objects Model property name
|
||
Update RequiredFieldsValidator to look for these period seperated items and navigate through teh collection by name / reflection to step through children and flag errors to include parent
|
||
e.g in validation error field name would be "poitems.vendorpartnumber" to indicate poitems collection vendorpartnumber field and set childitems index property (new) to 3 to indicate 4th row (0based)
|
||
Update ValidationError.cs class, add index property and use it for above
|
||
Update BizObject.cs add error methods that include index for use with indexed collection item errors
|
||
Update client gzform.cs server errors handler to handle indexed child collection like that and report error on row and in popup edit form
|
||
Update client po items form to display error in data table read only display somehow (can't be hover due to mobile so other way)
|
||
maybe just red row to indicate has errors with some non color secondary indicator, they open and the edit form shows the exact error on the field
|
||
Update client po edit poitem form input controls, use regular biz rule error from server handling but use the compound key name for the item e.g. "poitem.vendorpartnumber"
|
||
Update form customization form at client to group together the child collection items and maybe indicate the collection name above or in a group
|
||
so all poitem fields grouped in UI apart from header form fields
|
||
|
||
todo: tax codes, taxable objects
|
||
Biz rules updated to prevent tax value changes to any of the following fields once it's been used on any item that has tax codes
|
||
name, taxa, taxb, taxontax
|
||
Biz rule to prevent change of active status to false if this taxcode is set as the global settings default tax code
|
||
/// <summary>
|
||
/// Returns true if passed in tax code ID
|
||
/// is used as the default anywhere in global settings
|
||
/// </summary>
|
||
/// <param name="TaxCodeID"></param>
|
||
/// <returns></returns>
|
||
public bool TaxCodeIsADefault(Guid TaxCodeID)
|
||
{
|
||
if(this.mTaxPartPurchaseID==TaxCodeID) return true;
|
||
if(this.mTaxPartSaleID==TaxCodeID) return true;
|
||
if(this.mTaxRateSaleID==TaxCodeID) return true;
|
||
return false;
|
||
}
|
||
Global settings object needs tax codes added for
|
||
private Guid mTaxPartPurchaseID;
|
||
private Guid mTaxPartSaleID;
|
||
private Guid mTaxRateSaleID;
|
||
PurchaseOrder needs to default tax codes when created from global settings
|
||
|
||
|
||
|
||
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: actual customer reports so can figure out datalist for bringing other names in
|
||
I'm thinking an alternate mode for reporting where there are more defined links in the list to fetch names?
|
||
|
||
|
||
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 fail or completion
|
||
stored in a location easily found like notes or attach or something on superuser account
|
||
(memo to superuser maybe??)
|
||
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, we 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: This block isn't necessary anymore as there is a biz rule to catch it:
|
||
catch (Microsoft.EntityFrameworkCore.DbUpdateException ex)
|
||
{
|
||
if (ex.InnerException != null && ex.InnerException.Message.Contains("unq_unitmodelnumbervendorid"))
|
||
{
|
||
AddError(ApiErrorCode.VALIDATION_NOT_UNIQUE, "number", "Model number plus VendorId combination must be unique");
|
||
return null;
|
||
}
|
||
|
||
throw;
|
||
|
||
}
|
||
todo: 2fa is going to be an absolute must have pretty soon, look into what's involved again
|
||
|
||
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: NEXT DEPLOY TO DEVOPS attach a photo from phone, no error just does nothing
|
||
worked here locally latest build
|
||
retest on server after next deploy
|
||
|
||
|
||
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: server boot up message should show the port it's listening on if possible or configured to listen on
|
||
Users may well not know what port they are using and this will ease that greatly
|
||
|
||
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....
|
||
also this includes *all* of the initial workorder object so there's that
|
||
might be that they don't need it but for consistency should check into it
|
||
|
||
todo: how to add locale keys in future after release without erasing all data?
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
########################################################################################################################
|
||
|
||
|
||
|
||
CURRENTLY DOING: PurchaseOrder
|
||
|
||
todo: lots of stuff, but next maybe is the most fundamental stuff like child collection error handling, form customization and required rule handling
|
||
if doing that then see up above the SERVER section has the notes on implementation. Think workorder while coding that as the wo will have *many* child collections
|
||
|
||
|
||
PO UI for items:
|
||
Hidden columns in edit form should also hide in grid display, code it even though there is little to hide here but it could be useful for wo to have that speccd out
|
||
Disable sort in addition to filter on the table or take the time to add code to sort correctly because the default sort is pretty shitty and only alphanumeric
|
||
|
||
Edit mode ideally will not navigate but will open an edit dialog in place which will act on things from within the same form
|
||
Receive all PO form menu item if applicable that just receives the entire PO as is for a shortcut
|
||
Receives all outstanding balances to clear them
|
||
Receive button on Item edit form to just quickly set received date and quantities
|
||
|
||
|
||
PO todo
|
||
todo: test duplicate route
|
||
todo: test inventory affecting ops
|
||
reversals, updates, deletes etc
|
||
todo: test default tax codes are set
|
||
todo: test form customization hide child collection items
|
||
todo: test required rule and server errors display correctly / clear in both poitems table row and in edit form for poitem when opened
|
||
make up fake rules if necessary just to confirm the new child collection error handling works
|
||
|
||
|
||
|
||
|
||
|
||
|
||
Inventory related objects that need to be ported:
|
||
XPart
|
||
XPartSerial
|
||
XPartWarehouse
|
||
XPartInventory (was "PartByWarehouseInventory")
|
||
XPartRestock
|
||
XPartInventoryAdjustment
|
||
XPartAssembly
|
||
|
||
PurchaseOrder
|
||
|
||
|
||
|
||
|
||
|
||
|
||
------------------------------------------
|
||
|
||
|
||
|
||
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)
|
||
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
|
||
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
|
||
DOCS (at back but with front links, maybe not fleshed out just placeholder ok for now)
|
||
REPORTING
|
||
Reportable
|
||
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:
|
||
|
||
Contract
|
||
big one, tons of cases, will likely be implemented then need tweaking until it's right but the cases are all gold Jerry, gold!
|
||
|
||
|
||
Inventory (see servicebank and below bit for inspo)
|
||
Xparts
|
||
Xwarehouse
|
||
XPartInventory
|
||
Xpo
|
||
Xporeceipt
|
||
Xadjustments
|
||
XWorkorderItemPart
|
||
XWorkorderItemPartRequest
|
||
User
|
||
Fixup once have vendor, ho, client etc as it depends on those
|
||
WorkorderStatus
|
||
no dependencies, possibly many cases, read over carefully before implementing
|
||
|
||
...others tbd...
|
||
|
||
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
|
||
|
||
INVENTORY AND BALANCE STUFF
|
||
Best implemented as a stored procedure?
|
||
this example is exactly a bank balance
|
||
https://www.postgresqltutorial.com/postgresql-create-procedure/
|
||
|
||
|
||
# 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
|
||
|
||
acontract
|
||
aregion - TAG
|
||
|
||
acontractrate
|
||
acontract
|
||
arate
|
||
|
||
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?
|
||
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 we know what we're 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 we 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
|
||
|
||
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
|
||
follow the link from the docs appendix open source acknowledgements page
|
||
if we use it in release we should at least send them the small amount they get tipped
|
||
|
||
Send a tip / donate to teh 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 2020 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
|