This commit is contained in:
2021-03-07 15:39:36 +00:00
parent d451374f7b
commit 81547b774f
11 changed files with 55 additions and 54 deletions

View File

@@ -46,6 +46,7 @@ namespace AyaNova.Util
CURRENCY: DECIMAL(38,18) (to support potential of cryptocurrencies) largest Etherium value fits in this (36bytes)
TAX/PERCENTAGES/PDF PAGE SCALE: DECIMAL(8,5) largest tax I could find would fit in this, that's 3 digits to left and 5 to right
Taxes are in face value not fractional value, i.e. "7" not .07 in db
Inventory/incidents general numbers (19,5)
Latitude/longitude 9,6
@@ -596,7 +597,7 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
//TAXCODE
await ExecQueryAsync("CREATE TABLE ataxcode (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL UNIQUE, active BOOL NOT NULL, "
+ "notes TEXT, wiki TEXT, customfields TEXT, tags VARCHAR(255) ARRAY, "
+ "taxa DECIMAL(8,5) NOT NULL default 0, taxb DECIMAL(8,5) NOT NULL default 0, taxontax BOOL NOT NULL default false)");
+ "taxapct DECIMAL(8,5) NOT NULL default 0, taxbpct DECIMAL(8,5) NOT NULL default 0, taxontax BOOL NOT NULL default false)");
//MEMO
await ExecQueryAsync("CREATE TABLE amemo (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL, "
@@ -660,8 +661,8 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
//CONTRACT
await ExecQueryAsync("CREATE TABLE acontract (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, name TEXT NOT NULL UNIQUE, active BOOL NOT NULL, "
+ "notes TEXT, wiki TEXT, customfields TEXT, tags VARCHAR(255) ARRAY, "
+ "responsetime INTERVAL NOT NULL, contractserviceratesonly BOOL NOT NULL, contracttravelratesonly BOOL NOT NULL, partsoverride DECIMAL(8,5) NOT NULL, partsoverridetype INTEGER NOT NULL, "
+ "serviceratesoverride DECIMAL(8,5) NOT NULL, serviceratesoverridetype INTEGER NOT NULL, travelratesoverride DECIMAL(8,5) NOT NULL, travelratesoverridetype INTEGER NOT NULL, "
+ "responsetime INTERVAL NOT NULL, contractserviceratesonly BOOL NOT NULL, contracttravelratesonly BOOL NOT NULL, partsoverridepct DECIMAL(8,5) NOT NULL, partsoverridetype INTEGER NOT NULL, "
+ "serviceratesoverridepct DECIMAL(8,5) NOT NULL, serviceratesoverridetype INTEGER NOT NULL, travelratesoverridepct DECIMAL(8,5) NOT NULL, travelratesoverridetype INTEGER NOT NULL, "
+ "alertnotes text "
+ ")");
await ExecQueryAsync("ALTER TABLE acustomer ADD column contractid BIGINT NULL REFERENCES acontract");
@@ -678,15 +679,15 @@ $BODY$ LANGUAGE PLPGSQL STABLE");
//CONTRACTPARTOVERRIDE
await ExecQueryAsync("CREATE TABLE acontractpartoverride (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, contractid BIGINT NOT NULL REFERENCES acontract ON DELETE CASCADE, "
+ " override DECIMAL(8,5) NOT NULL, overridetype INTEGER NOT NULL, tags VARCHAR(255) ARRAY)");
+ " overridepct DECIMAL(8,5) NOT NULL, overridetype INTEGER NOT NULL, tags VARCHAR(255) ARRAY)");
//CONTRACTSERVICERATEOVERRIDE
await ExecQueryAsync("CREATE TABLE acontractservicerateoverride (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, contractid BIGINT NOT NULL REFERENCES acontract ON DELETE CASCADE, "
+ " override DECIMAL(8,5) NOT NULL, overridetype INTEGER NOT NULL, tags VARCHAR(255) ARRAY)");
+ " overridepct DECIMAL(8,5) NOT NULL, overridetype INTEGER NOT NULL, tags VARCHAR(255) ARRAY)");
//CONTRACTTRAVELRATEOVERRIDE
await ExecQueryAsync("CREATE TABLE acontracttravelrateoverride (id BIGINT GENERATED ALWAYS AS IDENTITY PRIMARY KEY, contractid BIGINT NOT NULL REFERENCES acontract ON DELETE CASCADE, "
+ " override DECIMAL(8,5) NOT NULL, overridetype INTEGER NOT NULL, tags VARCHAR(255) ARRAY)");
+ " overridepct DECIMAL(8,5) NOT NULL, overridetype INTEGER NOT NULL, tags VARCHAR(255) ARRAY)");
//HEADOFFICE

View File

@@ -571,20 +571,20 @@ namespace AyaNova.Util
c.Active = true;
c.Notes = "These are notes providing additional information when users view the contract";
c.AlertNotes = "These are alert notes displayed on workorders about this contract";
c.PartsOverride = .05m;
c.PartsOverridePct = 5m;
c.PartsOverrideType = ContractOverrideType.PriceDiscount;
c.ServiceRatesOverride = 0m;
c.ServiceRatesOverridePct = 0m;
c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount;
c.TravelRatesOverride = 0;
c.TravelRatesOverridePct = 0;
c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount;
c.ResponseTime = TimeSpan.Zero;
c.ContractServiceRatesOnly = true;
c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 1 });
c.ContractTravelRatesOnly = true;
c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 1 });
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "blue" }.ToList(), Override = .05m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "blue" }.ToList(), Override = .05m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "blue" }.ToList(), Override = .01m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "blue" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount });
using (AyContext ct = ServiceProviderProvider.DBContext)
{
@@ -606,20 +606,20 @@ namespace AyaNova.Util
c.Active = true;
c.Notes = "These are notes providing additional information when users view the contract";
c.AlertNotes = "These are alert notes displayed on workorders about this contract";
c.PartsOverride = .1m;
c.PartsOverridePct = .1m;
c.PartsOverrideType = ContractOverrideType.PriceDiscount;
c.ServiceRatesOverride = 0m;
c.ServiceRatesOverridePct = 0m;
c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount;
c.TravelRatesOverride = 0;
c.TravelRatesOverridePct = 0;
c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount;
c.ResponseTime = TimeSpan.Zero;
c.ContractServiceRatesOnly = true;
c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 2 });
c.ContractTravelRatesOnly = true;
c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 2 });
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "red" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "red" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "red" }.ToList(), Override = .05m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "red" }.ToList(), OverridePct = 5m, OverrideType = ContractOverrideType.PriceDiscount });
using (AyContext ct = ServiceProviderProvider.DBContext)
{
@@ -641,20 +641,20 @@ namespace AyaNova.Util
c.Active = true;
c.Notes = "These are notes providing additional information when users view the contract";
c.AlertNotes = "These are alert notes displayed on workorders about this contract";
c.PartsOverride = .2m;
c.PartsOverridePct = .2m;
c.PartsOverrideType = ContractOverrideType.PriceDiscount;
c.ServiceRatesOverride = .2m;
c.ServiceRatesOverridePct = .2m;
c.ServiceRatesOverrideType = ContractOverrideType.PriceDiscount;
c.TravelRatesOverride = .2m;
c.TravelRatesOverridePct = .2m;
c.TravelRatesOverrideType = ContractOverrideType.PriceDiscount;
c.ResponseTime = new TimeSpan(24, 0, 0);//24 hour response time
c.ContractServiceRatesOnly = false;
c.ServiceRateItems.Add(new ContractServiceRate() { ServiceRateId = 3 });
c.ContractTravelRatesOnly = false;
c.TravelRateItems.Add(new ContractTravelRate() { TravelRateId = 3 });
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "green" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "green" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "green" }.ToList(), Override = .1m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractServiceRateOverrideItems.Add(new ContractServiceRateOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractTravelRateOverrideItems.Add(new ContractTravelRateOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount });
c.ContractPartOverrideItems.Add(new ContractPartOverride() { Tags = new string[] { "green" }.ToList(), OverridePct = 10m, OverrideType = ContractOverrideType.PriceDiscount });
using (AyContext ct = ServiceProviderProvider.DBContext)
{
@@ -849,8 +849,8 @@ namespace AyaNova.Util
tc.Notes = "Example sales only tax";
tc.Active = true;
tc.Tags = RandomTags();
tc.TaxA = 0;
tc.TaxB = 0.07m;
tc.TaxAPct = 0;
tc.TaxBPct = 7m;
tc.TaxOnTax = false;
using (AyContext ct = ServiceProviderProvider.DBContext)
{
@@ -872,8 +872,8 @@ namespace AyaNova.Util
tc.Active = true;
tc.Notes = "Example goods only tax";
tc.Tags = RandomTags();
tc.TaxB = 0;
tc.TaxA = 0.07m;
tc.TaxBPct = 0;
tc.TaxAPct = 7m;
tc.TaxOnTax = false;
using (AyContext ct = ServiceProviderProvider.DBContext)
{
@@ -895,8 +895,8 @@ namespace AyaNova.Util
tc.Active = true;
tc.Notes = "Example sales and goods tax";
tc.Tags = RandomTags();
tc.TaxA = 0.07m;
tc.TaxB = 0.07m;
tc.TaxAPct = 7m;
tc.TaxBPct = 7m;
tc.TaxOnTax = false;
using (AyContext ct = ServiceProviderProvider.DBContext)
{