diff --git a/.vscode/launch.json b/.vscode/launch.json index b77f3b95..fcc80a75 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -53,7 +53,7 @@ "AYANOVA_FOLDER_USER_FILES": "c:\\temp\\RavenTestData\\userfiles", "AYANOVA_FOLDER_BACKUP_FILES": "c:\\temp\\RavenTestData\\backupfiles", "AYANOVA_FOLDER_TEMPORARY_SERVER_FILES": "c:\\temp\\RavenTestData\\tempfiles", - "AYANOVA_SERVER_TEST_MODE": "false", + "AYANOVA_SERVER_TEST_MODE": "true", "AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small", "AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7", "AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\" diff --git a/server/AyaNova/DataList/WorkOrderDataList.cs b/server/AyaNova/DataList/WorkOrderDataList.cs index bd44fa0c..809b94c1 100644 --- a/server/AyaNova/DataList/WorkOrderDataList.cs +++ b/server/AyaNova/DataList/WorkOrderDataList.cs @@ -15,7 +15,10 @@ namespace AyaNova.DataList + "left join acustomer on (viewworkorder.customerid=acustomer.id) " + "left join aheadoffice on (acustomer.headofficeid=aheadoffice.id) " + "left join aproject on (viewworkorder.projectid=aproject.id) " - + "left join acontract on (viewworkorder.contractid=acontract.id)"; + + "left join acontract on (viewworkorder.contractid=acontract.id)" + + "left join apm on (viewworkorder.frompmid=apm.id)" + + "left join aquote on (viewworkorder.fromquoteid=aquote.id)" + ; var RoleSet = BizRoles.GetRoleSet(DefaultListAType); AllowedRoles = RoleSet.ReadFullRecord | RoleSet.Change; DefaultColumns = new List() { "WorkOrderSerialNumber", "Customer", "WorkOrderServiceDate", "WorkOrderCloseByDate", "WorkOrderStatus", "Project", "WorkOrderAge" }; @@ -53,6 +56,26 @@ namespace AyaNova.DataList SqlValueColumnName = "aheadoffice.name" }); + FieldDefinitions.Add(new DataListFieldDefinition + { + FieldKey = "WorkOrderFromPMID", + TKey = "WorkOrderFromPMID", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.PM, + SqlIdColumnName = "apm.id", + SqlValueColumnName = "apm.serial" + }); + + FieldDefinitions.Add(new DataListFieldDefinition + { + FieldKey = "WorkOrderFromQuoteID", + TKey = "WorkOrderFromQuoteID", + UiFieldDataType = (int)UiFieldDataType.Text, + AType = (int)AyaType.Quote, + SqlIdColumnName = "aquote.id", + SqlValueColumnName = "aquote.serial" + }); + FieldDefinitions.Add(new DataListFieldDefinition { TKey = "WorkOrderStatus", diff --git a/server/AyaNova/util/AySchema.cs b/server/AyaNova/util/AySchema.cs index 6a988982..6e2f79cb 100644 --- a/server/AyaNova/util/AySchema.cs +++ b/server/AyaNova/util/AySchema.cs @@ -22,7 +22,7 @@ namespace AyaNova.Util //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! private const int DESIRED_SCHEMA_LEVEL = 1; - internal const long EXPECTED_COLUMN_COUNT = 1223; + internal const long EXPECTED_COLUMN_COUNT = 1226; internal const long EXPECTED_INDEX_COUNT = 145; internal const long EXPECTED_CHECK_CONSTRAINTS = 519; internal const long EXPECTED_FOREIGN_KEY_CONSTRAINTS = 190; @@ -31,7 +31,7 @@ namespace AyaNova.Util //!!!!WARNING: BE SURE TO UPDATE THE DbUtil::EmptyBizDataFromDatabaseForSeedingOrImporting WHEN NEW TABLES ADDED!!!! - ///////////////////////////////////////////////////////////////// C1223:I145:CC519:FC190:V7:R2 + ///////////////////////////////////////////////////////////////// C1226:I145:CC519:FC190:V7:R2 /* @@ -786,7 +786,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); await ExecQueryAsync("CREATE TABLE aworkorder (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, serial BIGINT GENERATED BY DEFAULT AS IDENTITY NOT NULL, " + "notes TEXT, wiki TEXT, customfields TEXT, tags VARCHAR(255) ARRAY, customerid BIGINT NOT NULL REFERENCES acustomer (id), " + "projectid BIGINT REFERENCES aproject, laststatusid BIGINT REFERENCES aworkorderstatus(id), contractid BIGINT NULL, internalreferencenumber text, " - + " customerreferencenumber text, customercontactname text, createddate TIMESTAMP NOT NULL, " + + "customerreferencenumber text, customercontactname text, createddate TIMESTAMP NOT NULL, " + "servicedate TIMESTAMP, completebydate TIMESTAMP, invoicenumber TEXT, customersignature TEXT, customersignaturename TEXT, customersignaturecaptured TIMESTAMP, " + "techsignature TEXT, techsignaturename TEXT, techsignaturecaptured TIMESTAMP, durationtocompleted INTERVAL NOT NULL, onsite BOOL NOT NULL, " + "postaddress TEXT, postcity TEXT, postregion TEXT, postcountry TEXT, postcode TEXT, address TEXT, city TEXT, region TEXT, country TEXT, latitude DECIMAL(9,6), longitude DECIMAL(9,6) " @@ -900,8 +900,6 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); + "left outer join vpartsonorder on (vpartinventorynow.partid = vpartsonorder.partid and vpartinventorynow.partwarehouseid = vpartsonorder.partwarehouseid)"); - //VIEWWORKORDER - adds AGE expression column for datalist queries - await ExecQueryAsync("CREATE VIEW viewworkorder AS select aworkorder.*, AGE(timezone('UTC', now()), aworkorder.createddate) as expwoage from aworkorder"); //---------- @@ -1097,6 +1095,9 @@ $BODY$ LANGUAGE PLPGSQL STABLE"); //WORKORDER "FROM" LINKS await ExecQueryAsync("ALTER TABLE aworkorder ADD column fromquoteid BIGINT REFERENCES aquote (id), ADD column frompmid BIGINT REFERENCES apm (id), ADD column fromcsrid BIGINT REFERENCES acustomerservicerequest (id)"); + //VIEWWORKORDER - adds AGE expression column for datalist queries + await ExecQueryAsync("CREATE VIEW viewworkorder AS select aworkorder.*, AGE(timezone('UTC', now()), aworkorder.createddate) as expwoage from aworkorder"); + //NOTIFICATION await ExecQueryAsync("CREATE TABLE anotifysubscription (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, "