This commit is contained in:
2021-05-21 18:59:20 +00:00
parent c9366b1728
commit 2bd36f2626
3 changed files with 43 additions and 11 deletions

2
.vscode/launch.json vendored
View File

@@ -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": "true",
"AYANOVA_SERVER_TEST_MODE": "false",
"AYANOVA_SERVER_TEST_MODE_SEEDLEVEL": "small",
"AYANOVA_SERVER_TEST_MODE_TZ_OFFSET": "-7",
"AYANOVA_BACKUP_PG_DUMP_PATH": "C:\\data\\code\\postgres_13\\bin\\"

View File

@@ -238,14 +238,28 @@ namespace AyaNova.Biz
|| proposedObj.TaxBPct != currentObj.TaxBPct
|| proposedObj.TaxOnTax != currentObj.TaxOnTax))
{
//MIGRATE_OUTSTANDING - check workorder records once wo is coded here for this tax code in use
//also any other object that uses tax codes besides global settings and purchase order items
//todo: possibly, consider returning after any positive below to not swamp the UI with errors??
if (isGlobalDefault)
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("AdministrationGlobalSettings"));
if (await ct.PurchaseOrderItem.AnyAsync(x => x.PurchaseTaxCodeId == proposedObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder"));
if (isGlobalDefault)
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("AdministrationGlobalSettings"));
if (await ct.WorkOrderItemTravel.AnyAsync(x => x.TaxCodeSaleId == proposedObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemTravel"));
if (await ct.WorkOrderItemPart.AnyAsync(x => x.TaxPartSaleId == proposedObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemPart"));
if (await ct.WorkOrderItemLoan.AnyAsync(x => x.TaxCodeId == proposedObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemLoan"));
if (await ct.WorkOrderItemLabor.AnyAsync(x => x.TaxCodeSaleId == proposedObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemLabor"));
if (await ct.WorkOrderItemExpense.AnyAsync(x => x.ChargeTaxCodeId == proposedObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemExpense"));
}
@@ -267,6 +281,8 @@ namespace AyaNova.Biz
}
}
//Any form customizations to validate?
var FormCustomization = await ct.FormCustom.AsNoTracking().SingleOrDefaultAsync(x => x.FormKey == AyaType.TaxCode.ToString());
if (FormCustomization != null)
@@ -284,14 +300,30 @@ namespace AyaNova.Biz
private async Task ValidateCanDeleteAsync(TaxCode inObj)
{
//Referential integrity
//FOREIGN KEY CHECKS
if (await ct.PurchaseOrderItem.AnyAsync(m => m.PurchaseTaxCodeId == inObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder"));
//FOREIGN KEY CHECKS
if (ServerGlobalBizSettings.TaxPartPurchaseId == inObj.Id
|| ServerGlobalBizSettings.TaxPartSaleId == inObj.Id
|| ServerGlobalBizSettings.TaxRateSaleId == inObj.Id)
AddError(ApiErrorCode.INVALID_OPERATION, "generalerror", await Translate("TaxCodeDefault"));
if (await ct.PurchaseOrderItem.AnyAsync(x => x.PurchaseTaxCodeId == inObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("PurchaseOrder"));
if (await ct.WorkOrderItemTravel.AnyAsync(x => x.TaxCodeSaleId == inObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemTravel"));
if (await ct.WorkOrderItemPart.AnyAsync(x => x.TaxPartSaleId == inObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemPart"));
if (await ct.WorkOrderItemLoan.AnyAsync(x => x.TaxCodeId == inObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemLoan"));
if (await ct.WorkOrderItemLabor.AnyAsync(x => x.TaxCodeSaleId == inObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemLabor"));
if (await ct.WorkOrderItemExpense.AnyAsync(x => x.ChargeTaxCodeId == inObj.Id))
AddError(ApiErrorCode.VALIDATION_REFERENTIAL_INTEGRITY, "generalerror", await Translate("WorkOrderItemExpense"));
}

View File

@@ -253,9 +253,9 @@ namespace AyaNova.Util
await ExecQueryAsync("CREATE TABLE aglobalbizsettings (id INTEGER NOT NULL PRIMARY KEY, "
+ "searchcasesensitiveonly BOOL DEFAULT FALSE, "
+ "useinventory BOOL DEFAULT TRUE, "
+ "taxpartpurchaseid BIGINT, "
+ "taxpartsaleid BIGINT, "
+ "taxratesaleid BIGINT, "
+ "taxpartpurchaseid BIGINT REFERENCES ataxcode, "
+ "taxpartsaleid BIGINT REFERENCES ataxcode, "
+ "taxratesaleid BIGINT REFERENCES ataxcode, "
+ "workordercompletebyage INTERVAL NOT NULL DEFAULT '00:00:00'"
+ ")");