using System; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using Newtonsoft.Json; using AyaNova.Biz; namespace AyaNova.Models { public class WorkOrderItemLabor : ICoreBizObjectModel { public long Id { get; set; } public uint Concurrency { get; set; } public long? UserId { get; set; } [NotMapped] public string UserViz { get; set; } public DateTime? ServiceStartDate { get; set; } public DateTime? ServiceStopDate { get; set; } public long? ServiceRateId { get; set; } [NotMapped] public string ServiceRateViz { get; set; } public string ServiceDetails { get; set; } public decimal ServiceRateQuantity { get; set; } public decimal NoChargeQuantity { get; set; } public long? ServiceBankId { get; set; } public long? TaxCodeSaleId { get; set; } [NotMapped] public string TaxCodeSaleViz { get; set; } /* //from case 3748 - Cost, this is the entered Cost for the item at time of selection - ListPrice, [REQUIRED] this is the un-discounted per unit price of the item be it labor, parts, loaner, travel etc. What is normally charged at that moment in time for this item if it wasn't discounted. - Price, [NULLABLE] this is the EFFECTIVE PER UNIT PRICE either contract determined price calculated from ListPrice, otherwise it's a copy of the list price. User with sufficient rights can can override it to enter a different amount which effectively supports manual discount feature in v7 which was by %. This is the *actual* price used in calculations. - TaxName copied from selected tax code, not directly editable - TaxAPct copied from selected tax code, not directly editable - TaxBPct copied from selected tax code, not directly editable - TaxOnTax copied from selected tax code not directly editable - TaxAViz, [calculated NOT persisted] (Price*Quantity)+TaxAPct - TaxBViz, [calculated NOT persisted] (Price*Quantity)+TaxBPct OR if TaxOnTax = TaxAViz+TaxBPct - LineTotalViz, [calculated NOT persisted] this is effectively Price * quantity + Taxes, handy for reports and viewing not editable as it's not stored */ //PRICE FIELDS [Required] public decimal Cost { get; set; } [Required] public decimal ListPrice { get; set; } [Required] public decimal Price { get; set; } [Required] public string TaxName { get; set; } [Required] public decimal TaxAPct { get; set; } [Required] public decimal TaxBPct { get; set; } [Required] public bool TaxOnTax { get; set; } [NotMapped] public decimal TaxAViz { get; set; } [NotMapped] public decimal TaxBViz { get; set; } [NotMapped] public decimal LineTotalViz { get; set; } //UTILITY FIELDS [NotMapped] public bool IsDirty { get; set; } = false;//never dirty coming from the server [Required] public long WorkOrderItemId { get; set; } [JsonIgnore] public WorkOrderItem WorkOrderItem { get; set; } [NotMapped, JsonIgnore] public AyaType AyaType { get => AyaType.WorkOrderItemLabor; } }//eoc }//eons /* CREATE TABLE [dbo].[AWORKORDERITEMLABOR]( [AID] [uniqueidentifier] NOT NULL, [AWORKORDERITEMID] [uniqueidentifier] NOT NULL, [ACREATOR] [uniqueidentifier] NOT NULL, [AMODIFIER] [uniqueidentifier] NOT NULL, [ACREATED] [datetime] NOT NULL, [AMODIFIED] [datetime] NOT NULL, [AUSERID] [uniqueidentifier] NULL, [ASERVICESTARTDATE] [datetime] NULL, [ASERVICESTOPDATE] [datetime] NULL, [ASERVICERATEID] [uniqueidentifier] NULL, [ASERVICEDETAILS] [ntext] NULL, [ASERVICERATEQUANTITY] [decimal](19, 5) NULL, [ANOCHARGEQUANTITY] [decimal](19, 5) NULL, [ASERVICEBANKID] [uniqueidentifier] NULL, [ATAXRATESALEID] [uniqueidentifier] NULL */