From 156ef81b5198df5c477fda52f6a783b3faa46e13 Mon Sep 17 00:00:00 2001 From: John Cardinal Date: Thu, 31 Mar 2022 15:23:38 +0000 Subject: [PATCH] --- devdocs/todo.txt | 59 +++++++----------- docs/8.0/ayanova/docs/adm-import-customer.md | 4 +- .../ayanova/docs/adm-import-part-assembly.md | 2 +- docs/8.0/ayanova/docs/adm-import.md | 10 +++ .../img/ops-install-windows-lan-uncheck.png | Bin 19216 -> 22383 bytes .../ayanova/docs/ops-install-windows-iis.md | 4 +- .../ayanova/docs/ops-upgrade-linux-server.md | 2 + .../ayanova/docs/ops-upgrade-windows-iis.md | 8 +-- .../ayanova/docs/ops-upgrade-windows-lan.md | 56 ++++++++++++++--- .../docs/ops-upgrade-windows-single.md | 3 +- 10 files changed, 92 insertions(+), 56 deletions(-) diff --git a/devdocs/todo.txt b/devdocs/todo.txt index 8b9a5d69..94323514 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -1,7 +1,7 @@ # now -Import / export features + TODO: OUTSTANDING FOR IMPORT: @@ -9,52 +9,17 @@ TODO: DOCS regarding missing boolean value in csv and info on not leaving empty POST IMPORT TASKS - Test installer / upgrade - Linux server - - Ok, but needs upgrade shell script published somewhere - Linux Desktop standalone - TODO TEST DOCUMENT - Windows single standalone (should settle on naming scheme) - - OK, just stop the launcher if running, run setup, say no to overwrite config.json if edited, start the launcher - Windows lan - windows iis once working and confirmed post update and upate the beta forum with NEW RELEASE does forum working need to be changed to not only issues but new updates there as well? "Known issues / updates" - Windows single would benefit from a backup and restore in a click kind of interface then could do the standalone install upgrade more easily? + +Upgrade all our test servers wherever they may be TEST FILE OPEN ON iPad device as the file input accept type may not work with apple -WINDOWS SINGLE LAUNCHER ISSUES: - Can windows single put it's db outside of the program files folder, i.e. can postgres be told to use a data folder instead? - only if it helps with the upgrade though, otherwise not much point - Opens the windows server web page as well as the AyaNova web app but that's confusing as the first page is the windows server - instead should just show the web app - - Shutdown server in windows single gives error in server launcher window: - Shutting down Postgres database server... - Unhandled exception. System.InvalidOperationException: StandardIn has not been redirected. - at System.Diagnostics.Process.get_StandardInput() - at Program.
$(String[] args) in C:\data\code\raven-launcher\Program.cs:line 98 - - Launcher might be better if it was an actual application with a button to open AyaNova UI in browser and a shutdown button and a log windows showing what is in the server UI - rather than a dos command line looking thing - Also that could be the UI to do a db back up and restore maybe for upgrade?? - -Linux desktop installer issues - There are two installers just becuase of config.json data path, consolidate? - rename to linux-x64 drop -server and -desktop? - why do I need *any* root rights, shouldn't it all just work or is it becuase of postgre? - why do I need to chmod desktop for ./AyaNova when it works on server without doing that? - Upgrade seems to be remove everything EXCEPT config.json from /usr/sbin/ayanova since there is no data there anyway - then unzip the new version and restart - Is /usr/sbin really the correct folder for the binaries? - INSTALL DOCS ISSUE - Says stopping and starting in one section but only talks about stopping - can there be a desktop icon to start the server like windows single? get back to docs completion @@ -204,6 +169,24 @@ todo:2 subscribe to all sources of security vulnerabilities that could apply to .net core front end vue & libs +todo: 3 WINDOWS SINGLE LAUNCHER: + Can windows single put it's db outside of the program files folder, i.e. can postgres be told to use a data folder instead? + only if it helps with the upgrade though, otherwise not much point + + Opens the windows server web page as well as the AyaNova web app but that's confusing as the first page is the windows server + instead should just show the web app + + Shutdown server in windows single gives error in server launcher window: + Shutting down Postgres database server... + Unhandled exception. System.InvalidOperationException: StandardIn has not been redirected. + at System.Diagnostics.Process.get_StandardInput() + at Program.
$(String[] args) in C:\data\code\raven-launcher\Program.cs:line 98 + + Launcher might be better if it was an actual application with a button to open AyaNova UI in browser and a shutdown button and a log windows showing what is in the server UI + rather than a dos command line looking thing + Also that could be the UI to do a db back up and restore maybe for upgrade?? + Windows single would benefit from a backup and restore in a click kind of interface then could do the standalone install upgrade more easily? + ## DOCS ██████╗ ██████╗ ██████╗██╗ ██╗███╗ ███╗███████╗███╗ ██╗████████╗ █████╗ ████████╗██╗ ██████╗ ███╗ ██╗ diff --git a/docs/8.0/ayanova/docs/adm-import-customer.md b/docs/8.0/ayanova/docs/adm-import-customer.md index ba1d1285..1559f783 100644 --- a/docs/8.0/ayanova/docs/adm-import-customer.md +++ b/docs/8.0/ayanova/docs/adm-import-customer.md @@ -21,7 +21,7 @@ Any field in the import file that is not listed on this page will be removed bef - Tags - WebAddress - AlertNotes -- BillHeadOffice +- BillHeadOffice (MUST specify a HeadOfficeViz if this is true. This field must contain a value if supplied.) - TechNotes - AccountNumber - ContractExpires @@ -47,7 +47,7 @@ Any field in the import file that is not listed on this page will be removed bef The following linked objects are supported for importing / updating: -- HeadOffice via "HeadOfficeViz" field which must contain the name of an existing HeadOffice +- HeadOffice via "HeadOfficeViz" field which must contain the name of an existing HeadOffice. BillHeadOffice must be included and set to true to use this field. - Contract via "ContractViz" field which must contain the name of an existing Contract. If the Contract is specified then the ContractExpires field can be used to set the expiry date of the Contract. If ContractExpires is omitted then it is set to the import date and time minus 1 minute so that it won't take effect until it's been set to a future date. ## JSON file format diff --git a/docs/8.0/ayanova/docs/adm-import-part-assembly.md b/docs/8.0/ayanova/docs/adm-import-part-assembly.md index 13235df3..d6d91ab5 100644 --- a/docs/8.0/ayanova/docs/adm-import-part-assembly.md +++ b/docs/8.0/ayanova/docs/adm-import-part-assembly.md @@ -136,5 +136,5 @@ The Items column **must** be: Name,Active,Notes,Wiki,Tags,Items Primary 7242,true,Corrupti et animi non soluta.,,"orange,silver,zone3,zone5","097091|1.00000,874579|3.00000,375486|1.00000,983612|15.00000" Lower Arm 5369,true,Voluptatum et molestiae magnam at iste similique iusto modi ea.,,"orange,zebra,zone1","734629|1.00000,048902|1.00000" -Board 9995,true,Iure eius ut id consequatur omnis aut ut.,,"gold,mauve,violet,zone8","335219|1.00000|048902|1.00000,417318|1.00000" +Board 9995,true,Iure eius ut id consequatur omnis aut ut.,,"gold,mauve,violet,zone8","335219|1.00000,048902|1.00000,417318|1.00000" ``` diff --git a/docs/8.0/ayanova/docs/adm-import.md b/docs/8.0/ayanova/docs/adm-import.md index 2d1c8e04..01654b08 100644 --- a/docs/8.0/ayanova/docs/adm-import.md +++ b/docs/8.0/ayanova/docs/adm-import.md @@ -200,6 +200,16 @@ Each object type listed below links to a page showing the specific format requir - ##### [Unit models](adm-import-unit-model.md) - ##### [Vendors](adm-import-vendor.md) +## Import order when starting with a new AyaNova database + +If you are getting started with AyaNova and importing your own data from other sources, several of the objects require other objects to already be present in the AyaNova database first. + +- import Vendors before importing Parts, Unit Models or Units +- import Unit Models before importing Units +- import Part Warehouses before importing Part Inventory Transactions +- import Parts before importing Part Inventory Transactions or Part Assemblies +- import Head Offices before importing Customers + ## Import form #### Type diff --git a/docs/8.0/ayanova/docs/img/ops-install-windows-lan-uncheck.png b/docs/8.0/ayanova/docs/img/ops-install-windows-lan-uncheck.png index 48134d3c5e738327d999d285a37a5a8c706062a5..f17eb6f0202853f3ea25a3799d81f557080f1ae1 100644 GIT binary patch literal 22383 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 literal 19216 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 diff --git a/docs/8.0/ayanova/docs/ops-install-windows-iis.md b/docs/8.0/ayanova/docs/ops-install-windows-iis.md index 2d205e36..80e574be 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows-iis.md +++ b/docs/8.0/ayanova/docs/ops-install-windows-iis.md @@ -125,11 +125,11 @@ dotnet --list-runtimes Once you have ensured the three requirements above are installed and available, download and run the AyaNova network installer: [https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe](https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe). -**IMPORTANT**: You MUST UNCHECK the option 'Start AyaNova server when Windows starts' +**IMPORTANT**: You **MUST UNCHECK** the option 'Start AyaNova server when Windows starts' ![SCREENSHOT OF setup window un checked server start with windows](img/ops-install-windows-lan-uncheck.png) -This is because IIS will be responsible for starting and stopping AyaNova. If you do select start with windows re-run the installer and uncheck it and finish the installation again. +This is because IIS will be responsible for starting and stopping AyaNova. If you accidentally select start with windows re-run the installer and uncheck it and finish the installation again. Click next to continue to the next step: diff --git a/docs/8.0/ayanova/docs/ops-upgrade-linux-server.md b/docs/8.0/ayanova/docs/ops-upgrade-linux-server.md index 29fd2bd3..456e76f1 100644 --- a/docs/8.0/ayanova/docs/ops-upgrade-linux-server.md +++ b/docs/8.0/ayanova/docs/ops-upgrade-linux-server.md @@ -12,6 +12,8 @@ If you do not have a fresh backup there will be no way to recover from potential ### 2\. Upgrade +Ensure all other Users are logged out of AyaNova before proceeding. + The following shell script will automatically stop the AyaNova server service, remove the old AyaNova files, download and unzip the latest AyaNova files then start the server service. Run the following shell commands: diff --git a/docs/8.0/ayanova/docs/ops-upgrade-windows-iis.md b/docs/8.0/ayanova/docs/ops-upgrade-windows-iis.md index 8d6b1e8e..0fd484f9 100644 --- a/docs/8.0/ayanova/docs/ops-upgrade-windows-iis.md +++ b/docs/8.0/ayanova/docs/ops-upgrade-windows-iis.md @@ -1,7 +1,5 @@ # AyaNova Windows IIS hosted platform upgrade -The upgrade process involves stopping the AyaNova IIS site, replacing the AyaNova program files with the latest version and restarting the AyaNova IIS site. - These instructions assume the original installation steps were followed without changes, if you had to make changes adjust accordingly. ### 1\. Backup @@ -16,6 +14,8 @@ If you do not have a fresh backup there will be no way to recover from potential ### 3\. Stop the AyaNova IIS site +Ensure all other Users are logged out of AyaNova before stopping the server. + Stop the AyaNova site in the IIS manager: ![image stop IIS site](img/ops-upgrade-windows-iis-stop-site.png) @@ -24,7 +24,7 @@ Stop the AyaNova site in the IIS manager: Run the setup file downloaded in step 2 above. -**IMPORTANT**: You MUST NOT CHECK the option 'Start AyaNova server when Windows starts' +**IMPORTANT**: Make sure the option 'Start AyaNova server when Windows starts' is NOT checked ![SCREENSHOT OF setup window un checked server start with windows](img/ops-install-windows-lan-uncheck.png) @@ -58,4 +58,4 @@ Start the AyaNova site in the IIS manager: ![image start IIS site](img/ops-upgrade-windows-iis-start-site.png) -Open the AyaNova web app as you normally would, the login form will open in your browser and after a short delay you should see the page refresh and the new version number be displayed at the bottom of the login form. +Open the AyaNova web app in your browser, the login form will open in your browser and after a short delay you should see the page refresh and the new version number be displayed at the bottom of the login form. diff --git a/docs/8.0/ayanova/docs/ops-upgrade-windows-lan.md b/docs/8.0/ayanova/docs/ops-upgrade-windows-lan.md index edf84ef6..daa67487 100644 --- a/docs/8.0/ayanova/docs/ops-upgrade-windows-lan.md +++ b/docs/8.0/ayanova/docs/ops-upgrade-windows-lan.md @@ -1,13 +1,55 @@ -# AyaNova Windows platform upgrade +# AyaNova Windows local network platform upgrade -Follow the upgrade instructions for your installation type below. +These instructions assume the original installation steps were followed without changes, if you had to make changes adjust accordingly. -## Single user upgrade +### 1\. Backup -### Local area network upgrade +Before proceeding, [make a backup](ops-form-backup.md) of the database **and** the attachment files and store it in a safe place. -AyaNova server running alone and access directly by users within a local office network. +If you do not have a fresh backup there will be no way to recover from potential data loss or damage. -### AyaNova server hosted through IIS upgrade +### 2\. Download setup file -AyaNova hosted via Microsoft Internet Information Server that is included with most editions of Windows. +[https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe](https://www.ayanova.com/download/ayanova-windows-x64-lan-setup.exe) + +### 3\. Stop the AyaNova server + +Ensure all other Users are logged out of AyaNova before stopping the server. + +To shut down the AyaNova server cleanly use the AyaNova web app form accessed from Server Operations -> Server State and the menu item [Shut down server](ops-server-state.md#shutting-down-the-ayanova-server). + +Alternatively you can force close AyaNova using the ctrl-c key combination in the AyaNova launcher window. + +### 4\. Setup + +Run the setup file downloaded in step 2 above. + +Keep the checkmark on _Start AyaNova server when Windows starts_ and click on _next_. + +![SCREENSHOT OF setup window checkmarked server start with windows](img/ops-install-windows-lan-startup.png) + +You will be prompted to go to the asp.net core download page: + +![SCREENSHOT OF question about setup asp.net](img/ops-install-windows-lan-aspnetcore.png) + +Select No. + +You will next be prompted to go the PostgreSQL installer page: + +![SCREENSHOT OF question about setup pgsql](img/ops-install-windows-lan-postgressql.png) + +Select No. + +The files will be updated and a final prompt will appear and ask if you want to overwrite the config.json file during setup: + +![image prompt overwrite config.json file](img/ops-upgrade-windows-single-overwrite-config-prompt.png) + +Select **Keep the existing file**. + +If you select the overwrite option by accident you will need to re-edit the config.json file as you did during the [initial installation](ops-install-windows-lan.md#4-ayanova-server-configuration) once installation has completed before restarting the AyaNova server. + +### 5\. Start the AyaNova server + +![SCREENSHOT OF server desktop shortcut](img/ops-install-windows-lan-desktopayanovaserver.png) + +Open the AyaNova web app in your browser, after a short delay you should see the page refresh and the new version number be displayed at the bottom of the login form. diff --git a/docs/8.0/ayanova/docs/ops-upgrade-windows-single.md b/docs/8.0/ayanova/docs/ops-upgrade-windows-single.md index b5d10bef..0db6e71f 100644 --- a/docs/8.0/ayanova/docs/ops-upgrade-windows-single.md +++ b/docs/8.0/ayanova/docs/ops-upgrade-windows-single.md @@ -1,6 +1,5 @@ # AyaNova Windows single user platform upgrade -The upgrade process involves replacing the AyaNova program files with the latest version and restarting the AyaNova server. These instructions assume the original installation steps were followed without changes, if you had to make changes adjust accordingly. @@ -32,4 +31,4 @@ Run the setup file downloaded in the last step and follow the instructions. Allow setup to _Launch AyaNova_ at the end of setup when prompted. -The login form will open in your browser and after a short delay you should see the page refresh and the new version number be displayed at the bottom of the login form. +The login form will open in your browser and after a short delay you should see the page refresh and the new version number be displayed at the bottom of the form.