diff --git a/devdocs/todo.txt b/devdocs/todo.txt index 29d63efb..18ffce40 100644 --- a/devdocs/todo.txt +++ b/devdocs/todo.txt @@ -2,12 +2,14 @@ -check scotts issue with iis, where did he likely go wrong what is he saying about localhost vs domain etc - -docs - Joyce is doing this already and will get back to me with changes - look into inserting numbers in steps in manual so we can refer to the number and say did you do number 4 or whatever the fuck. - Also image see where to put more images so people aren't confused - +Import feature + test recent code change for "importable" attribute back and front then test the items to see if they work + hasn't been tested in a while, confirm what works and what doesn't, remove anything that doesn't work, look at an import path for inventory + most important to test in order are: + Customer, vendor, parts + All workorder and sub items should be removed from import, it doesn't make sense to import work orders here as far as I can tell, lock down this list + to only the essential, working items for now. + We may need a full blown inventory import feature of it's own, perhaps an item on the list that opens a different set of features in the form? 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 1b00f339..2d205e36 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows-iis.md +++ b/docs/8.0/ayanova/docs/ops-install-windows-iis.md @@ -123,7 +123,7 @@ dotnet --list-runtimes ### 4\. AyaNova server installation -Once you have ensured the two 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). +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' @@ -157,7 +157,7 @@ The AyaNova server **must** be configured before it will be able to start proper Configuration is done by editing the `config.json` file that has been installed to the `c:\Program Files\ayanova\` folder. -Run NotePad as Administrator to be able to edit and save in the program files folder by right clicking on the Notepad icon in the start menu, select *More* and *Run as administrator*: +Run NotePad as Administrator to be able to edit and save in the program files folder by right clicking on the Notepad icon in the start menu, select _More_ and _Run as administrator_: ![run notepad as administrator](img/ops-install-windows-run-notepad-as-administrator.png) @@ -192,7 +192,10 @@ The [AYANOVA_DB_CONNECTION](ops-config-db.md) property must be edited and where EDIT ONLY IF NEEDED: -The [AYANOVA_BACKUP_PG_DUMP_PATH](ops-config-backup-pgdump-path.md) property specifies the path to the PostgreSQL database backup utility `pg_dump` if AyaNova server will be doing the [automatic daily backups](ops-form-backup.md). If this utility is already in the path then you can remove this configuration setting entirely, otherwise it should be set to the location for your installed version of PostgreSQL's bin folder or wherever `pg_dump` is located. If you already have a backup solution in place for your PostgreSQL databases then there is no need to use this setting. +The [AYANOVA_BACKUP_PG_DUMP_PATH](ops-config-backup-pgdump-path.md) property specifies the path to the PostgreSQL database backup utility `pg_dump` if AyaNova server will be doing the [automatic daily backups](ops-form-backup.md). + +A. if AyaNova server will be doing the automatic daily backups using AyaNova's Backup feature, confirm this path stated matches the path to YOUR PostgreSQL database backup utility pg_dump +B. otherwise, If you already have a backup solution in place for your PostgreSQL databases AND WILL NOT BE USING AYANOVA'S Backup feature, remove this OPTIONAL EDIT: diff --git a/docs/8.0/ayanova/docs/ops-install-windows-lan.md b/docs/8.0/ayanova/docs/ops-install-windows-lan.md index f659e301..231b9460 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows-lan.md +++ b/docs/8.0/ayanova/docs/ops-install-windows-lan.md @@ -91,7 +91,7 @@ The AyaNova server **must** be configured before it will be able to start proper Configuration is done by editing the `config.json` file that has been installed to the `c:\Program Files\ayanova\` folder. -Run NotePad as Administrator to be able to edit and save in the program files folder by right clicking on the Notepad icon in the start menu, select *More* and *Run as administrator*: +Run NotePad as Administrator to be able to edit and save in the program files folder by right clicking on the Notepad icon in the start menu, select _More_ and _Run as administrator_: ![run notepad as administrator](img/ops-install-windows-run-notepad-as-administrator.png) @@ -126,7 +126,10 @@ The [AYANOVA_DB_CONNECTION](ops-config-db.md) property must be edited and where EDIT ONLY IF NEEDED: -The [AYANOVA_BACKUP_PG_DUMP_PATH](ops-config-backup-pgdump-path.md) property specifies the path to the PostgreSQL database backup utility `pg_dump` if AyaNova server will be doing the [automatic daily backups](ops-form-backup.md). If this utility is already in the path then you can remove this configuration setting entirely, otherwise it should be set to the location for your installed version of PostgreSQL's bin folder or wherever `pg_dump` is located. If you already have a backup solution in place for your PostgreSQL databases then there is no need to use this setting. +The [AYANOVA_BACKUP_PG_DUMP_PATH](ops-config-backup-pgdump-path.md) property specifies the path to the PostgreSQL database backup utility `pg_dump` if AyaNova server will be doing the [automatic daily backups](ops-form-backup.md). + +A. if AyaNova server will be doing the automatic daily backups using AyaNova's Backup feature, confirm this path stated matches the path to YOUR PostgreSQL database backup utility pg_dump +B. otherwise, If you already have a backup solution in place for your PostgreSQL databases AND WILL NOT BE USING AYANOVA'S Backup feature, remove this OPTIONAL EDIT: diff --git a/docs/8.0/ayanova/docs/ops-install-windows-single.md b/docs/8.0/ayanova/docs/ops-install-windows-single.md index 84951ccb..7292e81a 100644 --- a/docs/8.0/ayanova/docs/ops-install-windows-single.md +++ b/docs/8.0/ayanova/docs/ops-install-windows-single.md @@ -63,7 +63,7 @@ IF the ayanova-launcher application does NOT automatically start after the setup ![SCREENSHOT OF WEBPAGE LOGIN](img/ops-install-ayanovaloginpage.png) -6\. The next steps would now be to login, request or install a license and if are trying out AyaNova for the first time follow the evaluation trial guide. +6\. Next steps ## Starting and stopping AyaNova server diff --git a/server/AyaNova/Controllers/EnumListController.cs b/server/AyaNova/Controllers/EnumListController.cs index 22c315f0..136d437b 100644 --- a/server/AyaNova/Controllers/EnumListController.cs +++ b/server/AyaNova/Controllers/EnumListController.cs @@ -81,6 +81,7 @@ namespace AyaNova.Api.Controllers ret.Add(new KeyValuePair("coreview", "All Core AyaNova business object types current user is allowed to view")); ret.Add(new KeyValuePair("coreedit", "All Core AyaNova business object types current user is allowed to edit")); ret.Add(new KeyValuePair("reportable", "All AyaNova business object types that are reportable")); + ret.Add(new KeyValuePair("importable", "All AyaNova business object types that are importable")); ret.Add(new KeyValuePair(StringUtil.TrimTypeName(typeof(UiFieldDataType).ToString()), "Types of data used in AyaNova for display and formatting UI purposes")); ret.Add(new KeyValuePair(StringUtil.TrimTypeName(typeof(NotifyEventType).ToString()), "Notification event types")); ret.Add(new KeyValuePair(StringUtil.TrimTypeName(typeof(NotifyDeliveryMethod).ToString()), "Notification delivery methods")); @@ -181,6 +182,36 @@ namespace AyaNova.Api.Controllers ReturnList.Add(new NameIdItem() { Name = name, Id = (long)t }); } } + } else if (keyNameInLowerCase == "importable") + { + //importable biz objects for administration -> import selection + var values = Enum.GetValues(typeof(AyaType)); + foreach (AyaType t in values) + { + if (t.HasAttribute(typeof(ImportableBizObjectAttribute))) + { + TranslationKeysToFetch.Add(t.ToString()); + } + } + var LT = await TranslationBiz.GetSubsetStaticAsync(TranslationKeysToFetch, translationId); + + foreach (AyaType t in values) + { + if (t.HasAttribute(typeof(ImportableBizObjectAttribute))) + { + var tName = t.ToString(); + string name = string.Empty; + if (LT.ContainsKey(tName)) + { + name = LT[tName]; + } + else + { + name = tName; + } + ReturnList.Add(new NameIdItem() { Name = name, Id = (long)t }); + } + } } else if (keyNameInLowerCase == "coreview")//all core objects user can read { diff --git a/server/AyaNova/biz/AyaType.cs b/server/AyaNova/biz/AyaType.cs index a0ae4cbe..21ae8fdb 100644 --- a/server/AyaNova/biz/AyaType.cs +++ b/server/AyaNova/biz/AyaType.cs @@ -24,13 +24,13 @@ namespace AyaNova.Biz NoType = 0, Global = 1, FormUserOptions = 2, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] User = 3, ServerState = 4, License = 5, LogFile = 6, PickListTemplate = 7, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Customer = 8, ServerJob = 9, [CoreBizObject, ReportableBizObject] @@ -39,14 +39,14 @@ namespace AyaNova.Biz ServerMetrics = 12, Translation = 13, UserOptions = 14, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] HeadOffice = 15, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] LoanUnit = 16, FileAttachment = 17, DataListSavedFilter = 18, FormCustom = 19, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Part = 20, [CoreBizObject, ReportableBizObject] PM = 21, @@ -56,7 +56,7 @@ namespace AyaNova.Biz QuoteItemExpense = 23, [CoreBizObject, ReportableBizObject] QuoteItemLabor = 24, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Project = 25, [CoreBizObject, ReportableBizObject] PurchaseOrder = 26, @@ -68,11 +68,11 @@ namespace AyaNova.Biz QuoteItemLoan = 29, [CoreBizObject, ReportableBizObject] QuoteItemPart = 30, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Unit = 31, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] UnitModel = 32, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Vendor = 33, //--- WorkOrder [CoreBizObject, ReportableBizObject] @@ -107,11 +107,11 @@ namespace AyaNova.Biz Backup = 49, Notification = 50, NotifySubscription = 51, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Reminder = 52, [ReportableBizObject] UnitMeterReading = 53, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] CustomerServiceRequest = 54, // ServiceBank = 55, OpsNotificationSettings = 56, @@ -119,19 +119,19 @@ namespace AyaNova.Biz DashboardView = 58, [CoreBizObject, ReportableBizObject] CustomerNote = 59, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Memo = 60, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] Review = 61, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] ServiceRate = 62, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] TravelRate = 63, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] TaxCode = 64, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] PartAssembly = 65, - [CoreBizObject, ReportableBizObject] + [CoreBizObject, ReportableBizObject, ImportableBizObject] PartWarehouse = 66, [ReportableBizObject] PartInventory = 67, @@ -139,7 +139,7 @@ namespace AyaNova.Biz PartInventoryRestock = 69,//for list only, synthetic object PartInventoryRequest = 70,//for list only, synthetic object WorkOrderStatus = 71, - [ReportableBizObject] + [ReportableBizObject, ImportableBizObject] TaskGroup = 72, [CoreBizObject, ReportableBizObject] WorkOrderItemOutsideService = 73, diff --git a/server/AyaNova/biz/ImportableBizObjectAttribute.cs b/server/AyaNova/biz/ImportableBizObjectAttribute.cs new file mode 100644 index 00000000..128563d2 --- /dev/null +++ b/server/AyaNova/biz/ImportableBizObjectAttribute.cs @@ -0,0 +1,15 @@ +using System; + +namespace AyaNova.Biz +{ + /// + /// Marker attribute indicating that an object is a importable type + /// Used in + /// + [AttributeUsage(AttributeTargets.All)] + public class ImportableBizObjectAttribute : Attribute + { + //No code required, it's just a marker + //https://docs.microsoft.com/en-us/dotnet/standard/attributes/writing-custom-attributes + } +}//eons