This commit is contained in:
2021-03-05 00:52:04 +00:00
parent b7d546ef02
commit 239d674660
8 changed files with 208 additions and 25 deletions

View File

@@ -3,11 +3,11 @@ using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using AyaNova.Biz;
using Newtonsoft.Json;
using System;
namespace AyaNova.Models
{
//NOTE: Any non required field (nullable in DB) sb nullable here, i.e. decimal? not decimal,
//otherwise the server will call it an invalid record if the field isn't sent from client
public class Contract : ICoreBizObjectModel
{
@@ -22,12 +22,31 @@ namespace AyaNova.Models
public string CustomFields { get; set; }
public List<string> Tags { get; set; }
//new for v8
//response
//discountservicerate (all service rates)
//discounttravelrate (all travel)
//any optional ones here sb zero to indicate not set (or equivalent to zero)
[Required]
public TimeSpan ResponseTime { get; set; }
[Required]
public bool ContractRatesOnly { get; set; }
[Required]
public decimal PartsOverride { get; set; }
[Required]
public ContractOverrideType PartsOverrideType { get; set; }
[Required]
public decimal ServiceRatesOverride { get; set; }
[Required]
public ContractOverrideType ServiceRatesOverrideType { get; set; }
[Required]
public decimal TravelRatesOverride { get; set; }
[Required]
public ContractOverrideType TravelRatesOverrideType { get; set; }
public string AlertNotes { get; set; }//alert on workorder etc
public List<ContractServiceRate> ServiceRateItems { get; set; } = new List<ContractServiceRate>();
public List<ContractTravelRate> TravelRateItems { get; set; } = new List<ContractTravelRate>();
public List<ContractPartOverride> ContractPartOverrideItems { get; set; } = new List<ContractPartOverride>();
public List<ContractTravelRateOverride> ContractTravelRateOverrideItems { get; set; } = new List<ContractTravelRateOverride>();
public List<ContractServiceRateOverride> ContractServiceRateOverrideItems { get; set; } = new List<ContractServiceRateOverride>();
public Contract()
{
@@ -48,7 +67,7 @@ CREATE TABLE [dbo].[ACONTRACT](
[AMODIFIER] [uniqueidentifier] NULL,
[ACREATED] [datetime] NULL,
[AMODIFIED] [datetime] NULL,
[ADISCOUNTPARTS] [decimal](19, 5) NULL,
[ADISCOUNTPARTS] [decimal](19, 5) NULL,//rename PartsOverride
[ANAME] [nvarchar](255) NULL,
[AACTIVE] [bit] NOT NULL,
[ANOTES] [ntext] NULL,
@@ -69,7 +88,7 @@ CREATE TABLE [dbo].[ACONTRACT](
CHILDREN
ContractRate - specific contract rates available to contract holding entities only
ContractTravel - specific contract travel rates only ''
ContractRateTagOverride - tags and discount / markup to apply collection
ContractTravelTagOverride - ''
ContractPartTagOverride - ''
ContractRateOverride - tags and discount / markup to apply collection
ContractTravelOverride - ''
ContractPartOverride - ''
*/

View File

@@ -0,0 +1,32 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using AyaNova.Biz;
using Newtonsoft.Json;
namespace AyaNova.Models
{
public class ContractPartOverride
{
public long Id { get; set; }
public uint Concurrency { get; set; }
[Required]
public long ContractId { get; set; }
[Required]
public decimal Override { get; set; }
[Required]
public ContractOverrideType OverrideType { get; set; }
[Required]
public List<string> Tags { get; set; }
[JsonIgnore]
public Contract Contract { get; set; }
public ContractPartOverride()
{
Tags = new List<string>();
}
}//eoc
}//eons

View File

@@ -0,0 +1,21 @@
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;
namespace AyaNova.Models
{
public class ContractServiceRate
{
public long Id { get; set; }
public uint Concurrency { get; set; }
[Required]
public long ContractId { get; set; }
[Required]
public long ServiceRateId { get; set; }
[JsonIgnore]
public Contract Contract { get; set; }
}//eoc
}//eons

View File

@@ -0,0 +1,32 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using AyaNova.Biz;
using Newtonsoft.Json;
namespace AyaNova.Models
{
public class ContractServiceRateOverride
{
public long Id { get; set; }
public uint Concurrency { get; set; }
[Required]
public long ContractId { get; set; }
[Required]
public decimal Override { get; set; }
[Required]
public ContractOverrideType OverrideType { get; set; }
[Required]
public List<string> Tags { get; set; }
[JsonIgnore]
public Contract Contract { get; set; }
public ContractServiceRateOverride()
{
Tags = new List<string>();
}
}//eoc
}//eons

View File

@@ -0,0 +1,21 @@
using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;
namespace AyaNova.Models
{
public class ContractTravelRate
{
public long Id { get; set; }
public uint Concurrency { get; set; }
[Required]
public long ContractId { get; set; }
[Required]
public long TravelRateId { get; set; }
[JsonIgnore]
public Contract Contract { get; set; }
}//eoc
}//eons

View File

@@ -0,0 +1,32 @@
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using AyaNova.Biz;
using Newtonsoft.Json;
namespace AyaNova.Models
{
public class ContractTravelRateOverride
{
public long Id { get; set; }
public uint Concurrency { get; set; }
[Required]
public long ContractId { get; set; }
[Required]
public decimal Override { get; set; }
[Required]
public ContractOverrideType OverrideType { get; set; }
[Required]
public List<string> Tags { get; set; }
[JsonIgnore]
public Contract Contract { get; set; }
public ContractTravelRateOverride()
{
Tags = new List<string>();
}
}//eoc
}//eons