/****** Object: Table [dbo].[__EFMigrationsHistory] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[__EFMigrationsHistory]( [MigrationId] [nvarchar](150) NOT NULL, [ProductVersion] [nvarchar](32) NOT NULL, CONSTRAINT [PK___EFMigrationsHistory] PRIMARY KEY CLUSTERED ( [MigrationId] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Accounts] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Accounts]( [Id] [int] IDENTITY(1,1) NOT NULL, [AccountNumber] [nvarchar](max) NOT NULL, [Name] [nvarchar](max) NOT NULL, [AccountType] [int] NOT NULL, [AccountSubType] [int] NOT NULL, [Description] [nvarchar](max) NULL, [ParentAccountId] [int] NULL, [IsSystem] [bit] NOT NULL, [IsActive] [bit] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [OpeningBalance] [decimal](18, 2) NOT NULL, [OpeningBalanceDate] [datetime2](7) NULL, [CurrentBalance] [decimal](18, 2) NOT NULL, CONSTRAINT [PK_Accounts] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AiItemPredictions] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AiItemPredictions]( [Id] [int] IDENTITY(1,1) NOT NULL, [PredictedSurfaceAreaSqFt] [decimal](18, 2) NOT NULL, [PredictedMinutes] [int] NOT NULL, [PredictedComplexity] [nvarchar](max) NOT NULL, [PredictedUnitPrice] [decimal](18, 2) NOT NULL, [Confidence] [nvarchar](max) NOT NULL, [Reasoning] [nvarchar](max) NULL, [AiTags] [nvarchar](max) NULL, [ConversationRounds] [int] NOT NULL, [UserOverrodeEstimate] [bit] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_AiItemPredictions] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AnnouncementDismissals] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AnnouncementDismissals]( [Id] [int] IDENTITY(1,1) NOT NULL, [AnnouncementId] [int] NOT NULL, [UserId] [nvarchar](450) NOT NULL, [DismissedAt] [datetime2](7) NOT NULL, CONSTRAINT [PK_AnnouncementDismissals] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[Announcements] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Announcements]( [Id] [int] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](max) NOT NULL, [Message] [nvarchar](max) NOT NULL, [Type] [nvarchar](max) NOT NULL, [Target] [nvarchar](max) NOT NULL, [TargetPlan] [int] NULL, [TargetCompanyId] [int] NULL, [StartsAt] [datetime2](7) NOT NULL, [ExpiresAt] [datetime2](7) NULL, [IsDismissible] [bit] NOT NULL, [IsActive] [bit] NOT NULL, [CreatedByUserId] [nvarchar](max) NOT NULL, [CreatedByUserName] [nvarchar](max) NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, CONSTRAINT [PK_Announcements] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Appointments] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Appointments]( [Id] [int] IDENTITY(1,1) NOT NULL, [AppointmentNumber] [nvarchar](max) NOT NULL, [Title] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [CustomerId] [int] NULL, [JobId] [int] NULL, [AppointmentStatusId] [int] NOT NULL, [AppointmentTypeId] [int] NOT NULL, [ScheduledStartTime] [datetime2](7) NOT NULL, [ScheduledEndTime] [datetime2](7) NOT NULL, [IsAllDay] [bit] NOT NULL, [ActualStartTime] [datetime2](7) NULL, [ActualEndTime] [datetime2](7) NULL, [Location] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [IsReminderEnabled] [bit] NOT NULL, [ReminderMinutesBefore] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [AssignedUserId] [nvarchar](450) NULL, CONSTRAINT [PK_Appointments] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AppointmentStatusLookups] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AppointmentStatusLookups]( [Id] [int] IDENTITY(1,1) NOT NULL, [StatusCode] [nvarchar](max) NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [DisplayOrder] [int] NOT NULL, [ColorClass] [nvarchar](max) NOT NULL, [IconClass] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [IsSystemDefined] [bit] NOT NULL, [IsTerminalStatus] [bit] NOT NULL, [Description] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_AppointmentStatusLookups] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AppointmentTypeLookups] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AppointmentTypeLookups]( [Id] [int] IDENTITY(1,1) NOT NULL, [TypeCode] [nvarchar](max) NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [DisplayOrder] [int] NOT NULL, [ColorClass] [nvarchar](max) NOT NULL, [IconClass] [nvarchar](max) NULL, [RequiresJobLink] [bit] NOT NULL, [IsActive] [bit] NOT NULL, [IsSystemDefined] [bit] NOT NULL, [Description] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_AppointmentTypeLookups] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AspNetRoleClaims] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AspNetRoleClaims]( [Id] [int] IDENTITY(1,1) NOT NULL, [RoleId] [nvarchar](450) NOT NULL, [ClaimType] [nvarchar](max) NULL, [ClaimValue] [nvarchar](max) NULL, CONSTRAINT [PK_AspNetRoleClaims] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AspNetRoles] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AspNetRoles]( [Id] [nvarchar](450) NOT NULL, [Name] [nvarchar](256) NULL, [NormalizedName] [nvarchar](256) NULL, [ConcurrencyStamp] [nvarchar](max) NULL, CONSTRAINT [PK_AspNetRoles] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AspNetUserClaims] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AspNetUserClaims]( [Id] [int] IDENTITY(1,1) NOT NULL, [UserId] [nvarchar](450) NOT NULL, [ClaimType] [nvarchar](max) NULL, [ClaimValue] [nvarchar](max) NULL, CONSTRAINT [PK_AspNetUserClaims] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AspNetUserLogins] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AspNetUserLogins]( [LoginProvider] [nvarchar](450) NOT NULL, [ProviderKey] [nvarchar](450) NOT NULL, [ProviderDisplayName] [nvarchar](max) NULL, [UserId] [nvarchar](450) NOT NULL, CONSTRAINT [PK_AspNetUserLogins] PRIMARY KEY CLUSTERED ( [LoginProvider] ASC, [ProviderKey] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AspNetUserRoles] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AspNetUserRoles]( [UserId] [nvarchar](450) NOT NULL, [RoleId] [nvarchar](450) NOT NULL, CONSTRAINT [PK_AspNetUserRoles] PRIMARY KEY CLUSTERED ( [UserId] ASC, [RoleId] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] GO /****** Object: Table [dbo].[AspNetUsers] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AspNetUsers]( [Id] [nvarchar](450) NOT NULL, [FirstName] [nvarchar](max) NOT NULL, [LastName] [nvarchar](max) NOT NULL, [EmployeeNumber] [nvarchar](max) NULL, [HireDate] [datetime2](7) NOT NULL, [TerminationDate] [datetime2](7) NULL, [Address] [nvarchar](max) NULL, [City] [nvarchar](max) NULL, [State] [nvarchar](max) NULL, [ZipCode] [nvarchar](max) NULL, [Department] [nvarchar](max) NULL, [Position] [nvarchar](max) NULL, [Theme] [nvarchar](max) NULL, [DateFormat] [nvarchar](max) NULL, [TimeZone] [nvarchar](max) NULL, [DashboardLayout] [int] NULL, [IsActive] [bit] NOT NULL, [CanViewShopFloor] [bit] NOT NULL, [CanManageJobs] [bit] NOT NULL, [CanManageInventory] [bit] NOT NULL, [CanManageCustomers] [bit] NOT NULL, [CanCreateQuotes] [bit] NOT NULL, [CanApproveQuotes] [bit] NOT NULL, [SidebarColor] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [LastLoginDate] [datetime2](7) NULL, [UserName] [nvarchar](256) NULL, [NormalizedUserName] [nvarchar](256) NULL, [Email] [nvarchar](256) NULL, [NormalizedEmail] [nvarchar](256) NULL, [EmailConfirmed] [bit] NOT NULL, [PasswordHash] [nvarchar](max) NULL, [SecurityStamp] [nvarchar](max) NULL, [ConcurrencyStamp] [nvarchar](max) NULL, [PhoneNumber] [nvarchar](max) NULL, [PhoneNumberConfirmed] [bit] NOT NULL, [TwoFactorEnabled] [bit] NOT NULL, [LockoutEnd] [datetimeoffset](7) NULL, [LockoutEnabled] [bit] NOT NULL, [AccessFailedCount] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CompanyRole] [nvarchar](max) NULL, [ProfilePictureFilePath] [nvarchar](max) NULL, [CanManageCalendar] [bit] NOT NULL, [CanManageEquipment] [bit] NOT NULL, [CanManageMaintenance] [bit] NOT NULL, [CanManageProducts] [bit] NOT NULL, [CanManageVendors] [bit] NOT NULL, [CanViewCalendar] [bit] NOT NULL, [CanViewProducts] [bit] NOT NULL, [CanManageInvoices] [bit] NOT NULL, [CanViewReports] [bit] NOT NULL, CONSTRAINT [PK_AspNetUsers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AspNetUserTokens] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AspNetUserTokens]( [UserId] [nvarchar](450) NOT NULL, [LoginProvider] [nvarchar](450) NOT NULL, [Name] [nvarchar](450) NOT NULL, [Value] [nvarchar](max) NULL, CONSTRAINT [PK_AspNetUserTokens] PRIMARY KEY CLUSTERED ( [UserId] ASC, [LoginProvider] ASC, [Name] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[AuditLogs] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[AuditLogs]( [Id] [bigint] IDENTITY(1,1) NOT NULL, [UserId] [nvarchar](max) NULL, [UserName] [nvarchar](max) NOT NULL, [CompanyId] [int] NULL, [CompanyName] [nvarchar](max) NULL, [Action] [nvarchar](max) NOT NULL, [EntityType] [nvarchar](450) NOT NULL, [EntityId] [nvarchar](450) NULL, [EntityDescription] [nvarchar](max) NULL, [OldValues] [nvarchar](max) NULL, [NewValues] [nvarchar](max) NULL, [IpAddress] [nvarchar](max) NULL, [Timestamp] [datetime2](7) NOT NULL, CONSTRAINT [PK_AuditLogs] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[BillLineItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[BillLineItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [BillId] [int] NOT NULL, [AccountId] [int] NULL, [JobId] [int] NULL, [Description] [nvarchar](max) NOT NULL, [Quantity] [decimal](18, 2) NOT NULL, [UnitPrice] [decimal](18, 2) NOT NULL, [Amount] [decimal](18, 2) NOT NULL, [DisplayOrder] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_BillLineItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[BillPayments] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[BillPayments]( [Id] [int] IDENTITY(1,1) NOT NULL, [PaymentNumber] [nvarchar](max) NOT NULL, [BillId] [int] NOT NULL, [VendorId] [int] NOT NULL, [BankAccountId] [int] NOT NULL, [PaymentDate] [datetime2](7) NOT NULL, [Amount] [decimal](18, 2) NOT NULL, [PaymentMethod] [int] NOT NULL, [CheckNumber] [nvarchar](max) NULL, [Memo] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_BillPayments] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Bills] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Bills]( [Id] [int] IDENTITY(1,1) NOT NULL, [BillNumber] [nvarchar](max) NOT NULL, [VendorInvoiceNumber] [nvarchar](max) NULL, [VendorId] [int] NOT NULL, [APAccountId] [int] NOT NULL, [BillDate] [datetime2](7) NOT NULL, [DueDate] [datetime2](7) NULL, [Status] [int] NOT NULL, [Terms] [nvarchar](max) NULL, [Memo] [nvarchar](max) NULL, [SubTotal] [decimal](18, 2) NOT NULL, [TaxPercent] [decimal](18, 2) NOT NULL, [TaxAmount] [decimal](18, 2) NOT NULL, [Total] [decimal](18, 2) NOT NULL, [AmountPaid] [decimal](18, 2) NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [ReceiptFilePath] [nvarchar](max) NULL, CONSTRAINT [PK_Bills] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[BugReportAttachments] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[BugReportAttachments]( [Id] [int] IDENTITY(1,1) NOT NULL, [BugReportId] [int] NOT NULL, [BlobPath] [nvarchar](max) NOT NULL, [FileName] [nvarchar](max) NOT NULL, [ContentType] [nvarchar](max) NOT NULL, [FileSizeBytes] [bigint] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_BugReportAttachments] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[BugReports] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[BugReports]( [Id] [int] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NOT NULL, [SubmittedByUserId] [nvarchar](max) NOT NULL, [SubmittedByUserName] [nvarchar](max) NOT NULL, [Priority] [int] NOT NULL, [Status] [int] NOT NULL, [ResolutionNotes] [nvarchar](max) NULL, [ResolvedAt] [datetime2](7) NULL, [ResolvedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyName] [nvarchar](max) NULL, CONSTRAINT [PK_BugReports] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[CatalogCategories] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CatalogCategories]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [ParentCategoryId] [int] NULL, [DisplayOrder] [int] NOT NULL, [IsActive] [bit] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [IsMerchandise] [bit] NOT NULL, CONSTRAINT [PK_CatalogCategories] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[CatalogItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CatalogItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [SKU] [nvarchar](max) NULL, [CategoryId] [int] NOT NULL, [DefaultPrice] [decimal](18, 2) NOT NULL, [DefaultRequiresSandblasting] [bit] NOT NULL, [DefaultRequiresMasking] [bit] NOT NULL, [DefaultEstimatedMinutes] [int] NULL, [DisplayOrder] [int] NOT NULL, [IsActive] [bit] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [ApproximateArea] [decimal](18, 2) NULL, [CogsAccountId] [int] NULL, [RevenueAccountId] [int] NULL, [InventoryItemId] [int] NULL, [IsMerchandise] [bit] NOT NULL, CONSTRAINT [PK_CatalogItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Companies] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Companies]( [Id] [int] IDENTITY(1,1) NOT NULL, [CompanyName] [nvarchar](max) NOT NULL, [CompanyCode] [nvarchar](450) NULL, [PrimaryContactName] [nvarchar](max) NOT NULL, [PrimaryContactEmail] [nvarchar](max) NOT NULL, [Phone] [nvarchar](max) NULL, [Address] [nvarchar](max) NULL, [City] [nvarchar](max) NULL, [State] [nvarchar](max) NULL, [ZipCode] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [SubscriptionStartDate] [datetime2](7) NOT NULL, [SubscriptionEndDate] [datetime2](7) NULL, [TimeZone] [nvarchar](max) NULL, [LogoContentType] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [LogoData] [varbinary](max) NULL, [LogoFilePath] [nvarchar](max) NULL, [SubscriptionPlan] [int] NOT NULL, [StripeCustomerId] [nvarchar](max) NULL, [StripeSubscriptionId] [nvarchar](max) NULL, [SubscriptionStatus] [int] NOT NULL, [IsComped] [bit] NOT NULL, [MaxActiveJobsOverride] [int] NULL, [MaxCatalogItemsOverride] [int] NULL, [MaxCustomersOverride] [int] NULL, [MaxJobPhotosOverride] [int] NULL, [MaxQuotesOverride] [int] NULL, [MaxUsersOverride] [int] NULL, [SubscriptionNotes] [nvarchar](max) NULL, [AiInventoryAssistEnabled] [bit] NOT NULL, [AiPhotoQuotesEnabled] [bit] NOT NULL, [MaxAiPhotoQuotesPerMonthOverride] [int] NULL, [OnlinePaymentSurchargeType] [int] NOT NULL, [OnlinePaymentSurchargeValue] [decimal](18, 2) NOT NULL, [OnlineSurchargeAcknowledged] [bit] NOT NULL, [StripeAccountId] [nvarchar](max) NULL, [StripeConnectStatus] [int] NOT NULL, [MaxQuotePhotosOverride] [int] NULL, [MarketingEmailOptOut] [bit] NOT NULL, [MarketingUnsubscribeToken] [nvarchar](max) NOT NULL, CONSTRAINT [PK_Companies] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[CompanyOperatingCosts] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CompanyOperatingCosts]( [Id] [int] IDENTITY(1,1) NOT NULL, [CompanyId] [int] NOT NULL, [StandardLaborRate] [decimal](18, 2) NOT NULL, [RushChargeFixedAmount] [decimal](18, 2) NOT NULL, [OvenOperatingCostPerHour] [decimal](18, 2) NOT NULL, [SandblasterCostPerHour] [decimal](18, 2) NOT NULL, [CoatingBoothCostPerHour] [decimal](18, 2) NOT NULL, [GeneralMarkupPercentage] [decimal](18, 2) NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [PowderCoatingCostPerSqFt] [decimal](18, 2) NOT NULL, [TaxPercent] [decimal](18, 2) NOT NULL, [RushChargePercentage] [decimal](18, 2) NOT NULL, [ShopMinimumCharge] [decimal](18, 2) NOT NULL, [RushChargeType] [nvarchar](20) NOT NULL, [ShopSuppliesRate] [decimal](18, 2) NOT NULL, [AdditionalCoatLaborPercent] [decimal](18, 2) NOT NULL, [DefaultOvenCycleMinutes] [int] NOT NULL, [ComplexityComplexPercent] [decimal](18, 2) NOT NULL, [ComplexityExtremePercent] [decimal](18, 2) NOT NULL, [ComplexityModeratePercent] [decimal](18, 2) NOT NULL, [ComplexitySimplePercent] [decimal](18, 2) NOT NULL, [AiContextProfile] [nvarchar](2000) NULL, CONSTRAINT [PK_CompanyOperatingCosts] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[CompanyPreferences] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CompanyPreferences]( [Id] [int] IDENTITY(1,1) NOT NULL, [CompanyId] [int] NOT NULL, [DefaultCurrency] [nvarchar](max) NOT NULL, [DefaultDateFormat] [nvarchar](max) NOT NULL, [DefaultTimeFormat] [nvarchar](max) NOT NULL, [DefaultPaymentTerms] [nvarchar](max) NOT NULL, [DefaultQuoteValidityDays] [int] NOT NULL, [QuoteNumberPrefix] [nvarchar](max) NOT NULL, [JobNumberPrefix] [nvarchar](max) NOT NULL, [DefaultJobPriority] [nvarchar](max) NOT NULL, [RequireCustomerPO] [bit] NOT NULL, [AllowCustomerApproval] [bit] NOT NULL, [DefaultTurnaroundDays] [int] NOT NULL, [EmailNotificationsEnabled] [bit] NOT NULL, [NotifyOnNewJob] [bit] NOT NULL, [NotifyOnJobStatusChange] [bit] NOT NULL, [NotifyOnQuoteApproval] [bit] NOT NULL, [NotifyOnPaymentReceived] [bit] NOT NULL, [QuoteExpiryWarningDays] [int] NOT NULL, [DueDateWarningDays] [int] NOT NULL, [MaintenanceAlertDays] [int] NOT NULL, [QuoteRetentionYears] [int] NOT NULL, [JobRetentionYears] [int] NOT NULL, [LogRetentionDays] [int] NOT NULL, [AutoArchiveJobsDays] [int] NOT NULL, [DeletedRecordRetentionDays] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [UseMetricSystem] [bit] NOT NULL, [EmailFromAddress] [nvarchar](max) NULL, [EmailFromName] [nvarchar](max) NULL, [QtAccentColor] [nvarchar](max) NOT NULL, [QtDefaultTerms] [nvarchar](max) NULL, [QtFooterNote] [nvarchar](max) NULL, [NotifyOnNewQuote] [bit] NOT NULL, [SetupWizardCompleted] [bit] NOT NULL, [SetupWizardDoneSteps] [nvarchar](max) NULL, [SetupWizardSkippedSteps] [nvarchar](max) NULL, [SetupWizardStarted] [bit] NOT NULL, [PaymentReminderDays] [nvarchar](max) NOT NULL, [PaymentRemindersEnabled] [bit] NOT NULL, [InAccentColor] [nvarchar](max) NOT NULL, [InDefaultTerms] [nvarchar](max) NULL, [InFooterNote] [nvarchar](max) NULL, [MigratingFromQuickBooks] [bit] NOT NULL, [QbMigrationStateJson] [nvarchar](max) NULL, CONSTRAINT [PK_CompanyPreferences] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[CreditMemoApplications] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CreditMemoApplications]( [Id] [int] IDENTITY(1,1) NOT NULL, [CreditMemoId] [int] NOT NULL, [InvoiceId] [int] NOT NULL, [AmountApplied] [decimal](18, 2) NOT NULL, [AppliedDate] [datetime2](7) NOT NULL, [AppliedById] [nvarchar](450) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_CreditMemoApplications] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[CreditMemos] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CreditMemos]( [Id] [int] IDENTITY(1,1) NOT NULL, [MemoNumber] [nvarchar](450) NOT NULL, [CustomerId] [int] NOT NULL, [OriginalInvoiceId] [int] NULL, [ReworkRecordId] [int] NULL, [Amount] [decimal](18, 2) NOT NULL, [AmountApplied] [decimal](18, 2) NOT NULL, [IssueDate] [datetime2](7) NOT NULL, [ExpiryDate] [datetime2](7) NULL, [Reason] [nvarchar](max) NOT NULL, [Notes] [nvarchar](max) NULL, [Status] [int] NOT NULL, [IssuedById] [nvarchar](450) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_CreditMemos] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[CustomerNotes] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[CustomerNotes]( [Id] [int] IDENTITY(1,1) NOT NULL, [CustomerId] [int] NOT NULL, [Note] [nvarchar](max) NOT NULL, [IsImportant] [bit] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, CONSTRAINT [PK_CustomerNotes] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Customers] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Customers]( [Id] [int] IDENTITY(1,1) NOT NULL, [CompanyName] [nvarchar](450) NULL, [ContactFirstName] [nvarchar](max) NULL, [ContactLastName] [nvarchar](max) NULL, [Email] [nvarchar](450) NULL, [Phone] [nvarchar](max) NULL, [MobilePhone] [nvarchar](max) NULL, [Address] [nvarchar](max) NULL, [City] [nvarchar](max) NULL, [State] [nvarchar](max) NULL, [ZipCode] [nvarchar](max) NULL, [Country] [nvarchar](max) NULL, [IsCommercial] [bit] NOT NULL, [TaxId] [nvarchar](max) NULL, [CreditLimit] [decimal](18, 2) NOT NULL, [CurrentBalance] [decimal](18, 2) NOT NULL, [PaymentTerms] [nvarchar](max) NULL, [PricingTierId] [int] NULL, [GeneralNotes] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [LastContactDate] [datetime2](7) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [IsTaxExempt] [bit] NOT NULL, [TaxExemptCertificateContentType] [nvarchar](max) NULL, [TaxExemptCertificateData] [varbinary](max) NULL, [TaxExemptCertificateFileName] [nvarchar](max) NULL, [NotifyByEmail] [bit] NOT NULL, [NotifyBySms] [bit] NOT NULL, [UnsubscribeToken] [nvarchar](450) NOT NULL, [SmsConsentMethod] [nvarchar](max) NULL, [SmsConsentedAt] [datetime2](7) NULL, [CreditBalance] [decimal](18, 2) NOT NULL, CONSTRAINT [PK_Customers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[DashboardTips] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[DashboardTips]( [Id] [int] IDENTITY(1,1) NOT NULL, [TipText] [nvarchar](max) NOT NULL, [IsActive] [bit] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, CONSTRAINT [PK_DashboardTips] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Deposits] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Deposits]( [Id] [int] IDENTITY(1,1) NOT NULL, [ReceiptNumber] [nvarchar](max) NOT NULL, [CustomerId] [int] NOT NULL, [JobId] [int] NULL, [QuoteId] [int] NULL, [Amount] [decimal](18, 2) NOT NULL, [PaymentMethod] [int] NOT NULL, [ReceivedDate] [datetime2](7) NOT NULL, [Reference] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [RecordedById] [nvarchar](450) NULL, [AppliedToInvoiceId] [int] NULL, [AppliedDate] [datetime2](7) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_Deposits] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Equipment] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Equipment]( [Id] [int] IDENTITY(1,1) NOT NULL, [EquipmentName] [nvarchar](max) NOT NULL, [EquipmentNumber] [nvarchar](max) NULL, [EquipmentType] [nvarchar](max) NOT NULL, [Manufacturer] [nvarchar](max) NULL, [Model] [nvarchar](max) NULL, [SerialNumber] [nvarchar](max) NULL, [PurchaseDate] [datetime2](7) NULL, [PurchasePrice] [decimal](18, 2) NOT NULL, [WarrantyExpiration] [datetime2](7) NULL, [Status] [int] NOT NULL, [Location] [nvarchar](max) NULL, [RecommendedMaintenanceIntervalDays] [int] NOT NULL, [LastMaintenanceDate] [datetime2](7) NULL, [NextScheduledMaintenance] [datetime2](7) NULL, [Notes] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [ManualContentType] [nvarchar](max) NULL, [ManualFileName] [nvarchar](max) NULL, [ManualFilePath] [nvarchar](max) NULL, [ManualFileSize] [bigint] NULL, [ManualUploadedDate] [datetime2](7) NULL, [MaxLoadSqFt] [decimal](18, 2) NULL, [OvenCycleMinutes] [int] NULL, CONSTRAINT [PK_Equipment] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Expenses] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Expenses]( [Id] [int] IDENTITY(1,1) NOT NULL, [ExpenseNumber] [nvarchar](max) NOT NULL, [Date] [datetime2](7) NOT NULL, [VendorId] [int] NULL, [ExpenseAccountId] [int] NOT NULL, [PaymentAccountId] [int] NOT NULL, [JobId] [int] NULL, [PaymentMethod] [int] NOT NULL, [Amount] [decimal](18, 2) NOT NULL, [Memo] [nvarchar](max) NULL, [ReceiptFilePath] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_Expenses] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[GiftCertificateRedemptions] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[GiftCertificateRedemptions]( [Id] [int] IDENTITY(1,1) NOT NULL, [GiftCertificateId] [int] NOT NULL, [InvoiceId] [int] NOT NULL, [AmountRedeemed] [decimal](18, 2) NOT NULL, [RedeemedDate] [datetime2](7) NOT NULL, [RedeemedById] [nvarchar](450) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_GiftCertificateRedemptions] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[GiftCertificates] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[GiftCertificates]( [Id] [int] IDENTITY(1,1) NOT NULL, [CertificateCode] [nvarchar](450) NOT NULL, [OriginalAmount] [decimal](18, 2) NOT NULL, [RedeemedAmount] [decimal](18, 2) NOT NULL, [RecipientCustomerId] [int] NULL, [RecipientName] [nvarchar](max) NULL, [RecipientEmail] [nvarchar](max) NULL, [IssuedReason] [int] NOT NULL, [PurchasePrice] [decimal](18, 2) NULL, [PurchasingCustomerId] [int] NULL, [Status] [int] NOT NULL, [IssueDate] [datetime2](7) NOT NULL, [ExpiryDate] [datetime2](7) NULL, [Notes] [nvarchar](max) NULL, [IssuedById] [nvarchar](450) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [SourceInvoiceItemId] [int] NULL, CONSTRAINT [PK_GiftCertificates] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[InAppNotifications] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[InAppNotifications]( [Id] [int] IDENTITY(1,1) NOT NULL, [Title] [nvarchar](max) NOT NULL, [Message] [nvarchar](max) NOT NULL, [Link] [nvarchar](max) NULL, [NotificationType] [nvarchar](max) NOT NULL, [IsRead] [bit] NOT NULL, [ReadAt] [datetime2](7) NULL, [QuoteId] [int] NULL, [InvoiceId] [int] NULL, [CustomerId] [int] NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_InAppNotifications] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[InventoryCategoryLookups] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[InventoryCategoryLookups]( [Id] [int] IDENTITY(1,1) NOT NULL, [CategoryCode] [nvarchar](450) NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [DisplayOrder] [int] NOT NULL, [Description] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [IsSystemDefined] [bit] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [IsCoating] [bit] NOT NULL, CONSTRAINT [PK_InventoryCategoryLookups] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[InventoryItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[InventoryItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [SKU] [nvarchar](450) NOT NULL, [Name] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [Category] [nvarchar](max) NOT NULL, [ColorName] [nvarchar](max) NULL, [ColorCode] [nvarchar](max) NULL, [Finish] [nvarchar](max) NULL, [Manufacturer] [nvarchar](max) NULL, [ManufacturerPartNumber] [nvarchar](max) NULL, [QuantityOnHand] [decimal](18, 2) NOT NULL, [UnitOfMeasure] [nvarchar](max) NOT NULL, [ReorderPoint] [decimal](18, 2) NOT NULL, [ReorderQuantity] [decimal](18, 2) NOT NULL, [MinimumStock] [decimal](18, 2) NOT NULL, [MaximumStock] [decimal](18, 2) NOT NULL, [UnitCost] [decimal](18, 2) NOT NULL, [AverageCost] [decimal](18, 2) NOT NULL, [LastPurchasePrice] [decimal](18, 2) NOT NULL, [LastPurchaseDate] [datetime2](7) NULL, [PrimaryVendorId] [int] NULL, [VendorPartNumber] [nvarchar](max) NULL, [Location] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [DiscontinuedDate] [datetime2](7) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CoverageSqFtPerLb] [decimal](18, 2) NULL, [TransferEfficiency] [decimal](18, 2) NULL, [InventoryCategoryId] [int] NULL, [CogsAccountId] [int] NULL, [InventoryAccountId] [int] NULL, [CureTemperatureF] [decimal](18, 2) NULL, [CureTimeMinutes] [int] NULL, [ColorFamilies] [nvarchar](max) NULL, [RequiresClearCoat] [bit] NOT NULL, [SpecPageUrl] [nvarchar](max) NULL, CONSTRAINT [PK_InventoryItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[InventoryTransactions] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[InventoryTransactions]( [Id] [int] IDENTITY(1,1) NOT NULL, [InventoryItemId] [int] NOT NULL, [TransactionType] [int] NOT NULL, [Quantity] [decimal](18, 2) NOT NULL, [UnitCost] [decimal](18, 2) NOT NULL, [TotalCost] [decimal](18, 2) NOT NULL, [TransactionDate] [datetime2](7) NOT NULL, [Reference] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [BalanceAfter] [decimal](18, 2) NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [PurchaseOrderId] [int] NULL, CONSTRAINT [PK_InventoryTransactions] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[InvoiceItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[InvoiceItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [InvoiceId] [int] NOT NULL, [SourceJobItemId] [int] NULL, [Description] [nvarchar](max) NOT NULL, [Quantity] [decimal](18, 2) NOT NULL, [UnitPrice] [decimal](18, 2) NOT NULL, [TotalPrice] [decimal](18, 2) NOT NULL, [ColorName] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [DisplayOrder] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [RevenueAccountId] [int] NULL, [CatalogItemId] [int] NULL, [GcExpiryDate] [datetime2](7) NULL, [GcRecipientEmail] [nvarchar](max) NULL, [GcRecipientName] [nvarchar](max) NULL, [GeneratedGiftCertificateId] [int] NULL, [IsGiftCertificate] [bit] NOT NULL, CONSTRAINT [PK_InvoiceItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Invoices] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Invoices]( [Id] [int] IDENTITY(1,1) NOT NULL, [InvoiceNumber] [nvarchar](450) NOT NULL, [JobId] [int] NULL, [CustomerId] [int] NOT NULL, [PreparedById] [nvarchar](450) NULL, [Status] [int] NOT NULL, [InvoiceDate] [datetime2](7) NOT NULL, [DueDate] [datetime2](7) NULL, [SentDate] [datetime2](7) NULL, [PaidDate] [datetime2](7) NULL, [SubTotal] [decimal](18, 2) NOT NULL, [TaxPercent] [decimal](18, 2) NOT NULL, [TaxAmount] [decimal](18, 2) NOT NULL, [DiscountAmount] [decimal](18, 2) NOT NULL, [Total] [decimal](18, 2) NOT NULL, [AmountPaid] [decimal](18, 2) NOT NULL, [Notes] [nvarchar](max) NULL, [InternalNotes] [nvarchar](max) NULL, [Terms] [nvarchar](max) NULL, [CustomerPO] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [SalesTaxAccountId] [int] NULL, [CreditApplied] [decimal](18, 2) NOT NULL, [GiftCertificateRedeemed] [decimal](18, 2) NOT NULL, [OnlineAmountPaid] [decimal](18, 2) NOT NULL, [OnlinePaymentStatus] [int] NOT NULL, [OnlineSurchargeCollected] [decimal](18, 2) NOT NULL, [PaymentLinkExpiresAt] [datetime2](7) NULL, [PaymentLinkToken] [nvarchar](max) NULL, [StripePaymentIntentId] [nvarchar](max) NULL, [ExternalReference] [nvarchar](450) NULL, CONSTRAINT [PK_Invoices] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobChangeHistories] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobChangeHistories]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [ChangedByUserId] [nvarchar](450) NULL, [ChangedAt] [datetime2](7) NOT NULL, [FieldName] [nvarchar](max) NOT NULL, [OldValue] [nvarchar](max) NULL, [NewValue] [nvarchar](max) NULL, [ChangeDescription] [nvarchar](max) NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobChangeHistories] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobDailyPriorities] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobDailyPriorities]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [ScheduledDate] [datetime2](7) NOT NULL, [DisplayOrder] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobDailyPriorities] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobItemCoats] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobItemCoats]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobItemId] [int] NOT NULL, [CoatName] [nvarchar](max) NOT NULL, [Sequence] [int] NOT NULL, [InventoryItemId] [int] NULL, [ColorName] [nvarchar](max) NULL, [VendorId] [int] NULL, [ColorCode] [nvarchar](max) NULL, [Finish] [nvarchar](max) NULL, [CoverageSqFtPerLb] [decimal](18, 2) NOT NULL, [TransferEfficiency] [decimal](18, 2) NOT NULL, [PowderCostPerLb] [decimal](18, 2) NULL, [PowderToOrder] [decimal](18, 2) NULL, [ActualPowderUsedLbs] [decimal](18, 2) NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [PowderOrdered] [bit] NOT NULL, [PowderOrderedAt] [datetime2](7) NULL, [PowderOrderedByUserId] [nvarchar](max) NULL, [PowderReceived] [bit] NOT NULL, [PowderReceivedAt] [datetime2](7) NULL, [PowderReceivedByUserId] [nvarchar](max) NULL, [PowderReceivedLbs] [decimal](18, 2) NULL, CONSTRAINT [PK_JobItemCoats] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobItemPrepServices] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobItemPrepServices]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobItemId] [int] NOT NULL, [PrepServiceId] [int] NOT NULL, [EstimatedMinutes] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobItemPrepServices] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [Description] [nvarchar](max) NOT NULL, [Quantity] [decimal](18, 2) NOT NULL, [ColorName] [nvarchar](max) NULL, [ColorCode] [nvarchar](max) NULL, [Finish] [nvarchar](max) NULL, [SurfaceArea] [decimal](18, 2) NULL, [UnitPrice] [decimal](18, 2) NOT NULL, [TotalPrice] [decimal](18, 2) NOT NULL, [LaborCost] [decimal](18, 2) NOT NULL, [RequiresSandblasting] [bit] NOT NULL, [RequiresMasking] [bit] NOT NULL, [EstimatedMinutes] [int] NOT NULL, [Notes] [nvarchar](max) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CatalogItemId] [int] NULL, [IncludePrepCost] [bit] NOT NULL, [IsGenericItem] [bit] NOT NULL, [IsLaborItem] [bit] NOT NULL, [ManualUnitPrice] [decimal](18, 2) NULL, [SurfaceAreaSqFt] [decimal](18, 2) NOT NULL, [Complexity] [nvarchar](max) NULL, [PowderCostOverride] [decimal](18, 2) NULL, [AiTags] [nvarchar](max) NULL, [AiPredictionId] [int] NULL, [IsSalesItem] [bit] NOT NULL, [Sku] [nvarchar](max) NULL, CONSTRAINT [PK_JobItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobNotes] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobNotes]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [Note] [nvarchar](max) NOT NULL, [IsImportant] [bit] NOT NULL, [IsInternal] [bit] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, CONSTRAINT [PK_JobNotes] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobPhotos] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobPhotos]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [FileName] [nvarchar](max) NOT NULL, [FilePath] [nvarchar](max) NOT NULL, [Caption] [nvarchar](max) NULL, [PhotoType] [int] NOT NULL, [UploadedDate] [datetime2](7) NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [ContentType] [nvarchar](max) NOT NULL, [DisplayOrder] [int] NOT NULL, [FileSize] [bigint] NOT NULL, [UploadedById] [nvarchar](450) NOT NULL, [Tags] [nvarchar](max) NULL, [IsAiAnalysisPhoto] [bit] NOT NULL, CONSTRAINT [PK_JobPhotos] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobPrepServices] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobPrepServices]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [PrepServiceId] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobPrepServices] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobPriorityLookups] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobPriorityLookups]( [Id] [int] IDENTITY(1,1) NOT NULL, [PriorityCode] [nvarchar](450) NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [DisplayOrder] [int] NOT NULL, [ColorClass] [nvarchar](max) NOT NULL, [IconClass] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [IsSystemDefined] [bit] NOT NULL, [Description] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobPriorityLookups] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Jobs] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Jobs]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobNumber] [nvarchar](450) NOT NULL, [CustomerId] [int] NOT NULL, [QuoteId] [int] NULL, [Description] [nvarchar](max) NOT NULL, [ScheduledDate] [datetime2](7) NULL, [StartedDate] [datetime2](7) NULL, [CompletedDate] [datetime2](7) NULL, [DueDate] [datetime2](7) NULL, [QuotedPrice] [decimal](18, 2) NOT NULL, [FinalPrice] [decimal](18, 2) NOT NULL, [CustomerPO] [nvarchar](max) NULL, [SpecialInstructions] [nvarchar](max) NULL, [RequiresCustomerApproval] [bit] NOT NULL, [IsCustomerApproved] [bit] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [ShopWorkerId] [int] NULL, [JobStatusId] [int] NOT NULL, [JobPriorityId] [int] NOT NULL, [InternalNotes] [nvarchar](max) NULL, [ActualTimeSpentHours] [decimal](18, 2) NULL, [OvenCostId] [int] NULL, [Tags] [nvarchar](max) NULL, [AssignedUserId] [nvarchar](450) NULL, [ShopAccessCode] [uniqueidentifier] NOT NULL, [IsReworkJob] [bit] NOT NULL, [OriginalJobId] [int] NULL, [DiscountReason] [nvarchar](max) NULL, [DiscountType] [int] NOT NULL, [DiscountValue] [decimal](18, 2) NOT NULL, [IsRushJob] [bit] NOT NULL, [IntakeCheckedByUserId] [nvarchar](450) NULL, [IntakeConditionNotes] [nvarchar](max) NULL, [IntakeDate] [datetime2](7) NULL, [IntakePartCount] [int] NULL, CONSTRAINT [PK_Jobs] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobStatusHistory] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobStatusHistory]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [ChangedDate] [datetime2](7) NOT NULL, [Notes] [nvarchar](max) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [FromStatusId] [int] NOT NULL, [ToStatusId] [int] NOT NULL, CONSTRAINT [PK_JobStatusHistory] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobStatusLookups] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobStatusLookups]( [Id] [int] IDENTITY(1,1) NOT NULL, [StatusCode] [nvarchar](450) NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [DisplayOrder] [int] NOT NULL, [ColorClass] [nvarchar](max) NOT NULL, [IconClass] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [IsSystemDefined] [bit] NOT NULL, [IsTerminalStatus] [bit] NOT NULL, [IsWorkInProgressStatus] [bit] NOT NULL, [Description] [nvarchar](max) NULL, [WorkflowCategory] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobStatusLookups] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobTemplateItemCoats] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobTemplateItemCoats]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobTemplateItemId] [int] NOT NULL, [CoatName] [nvarchar](max) NOT NULL, [Sequence] [int] NOT NULL, [InventoryItemId] [int] NULL, [ColorName] [nvarchar](max) NULL, [VendorId] [int] NULL, [ColorCode] [nvarchar](max) NULL, [Finish] [nvarchar](max) NULL, [CoverageSqFtPerLb] [decimal](18, 2) NOT NULL, [TransferEfficiency] [decimal](18, 2) NOT NULL, [PowderCostPerLb] [decimal](18, 2) NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobTemplateItemCoats] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobTemplateItemPrepServices] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobTemplateItemPrepServices]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobTemplateItemId] [int] NOT NULL, [PrepServiceId] [int] NOT NULL, [EstimatedMinutes] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobTemplateItemPrepServices] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobTemplateItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobTemplateItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobTemplateId] [int] NOT NULL, [Description] [nvarchar](max) NOT NULL, [Quantity] [decimal](18, 2) NOT NULL, [SurfaceAreaSqFt] [decimal](18, 2) NOT NULL, [CatalogItemId] [int] NULL, [IsGenericItem] [bit] NOT NULL, [IsLaborItem] [bit] NOT NULL, [ManualUnitPrice] [decimal](18, 2) NULL, [RequiresSandblasting] [bit] NOT NULL, [RequiresMasking] [bit] NOT NULL, [IncludePrepCost] [bit] NOT NULL, [EstimatedMinutes] [int] NOT NULL, [Complexity] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [DisplayOrder] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobTemplateItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobTemplates] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobTemplates]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [CustomerId] [int] NULL, [SpecialInstructions] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [UsageCount] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobTemplates] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[JobTimeEntries] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[JobTimeEntries]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [ShopWorkerId] [int] NOT NULL, [WorkDate] [datetime2](7) NOT NULL, [HoursWorked] [decimal](18, 2) NOT NULL, [Stage] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_JobTimeEntries] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[MaintenanceRecords] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[MaintenanceRecords]( [Id] [int] IDENTITY(1,1) NOT NULL, [EquipmentId] [int] NOT NULL, [MaintenanceType] [nvarchar](max) NOT NULL, [Status] [int] NOT NULL, [Priority] [int] NOT NULL, [ScheduledDate] [datetime2](7) NOT NULL, [CompletedDate] [datetime2](7) NULL, [PerformedById] [nvarchar](450) NULL, [Description] [nvarchar](max) NOT NULL, [WorkPerformed] [nvarchar](max) NULL, [PartsReplaced] [nvarchar](max) NULL, [LaborCost] [decimal](18, 2) NOT NULL, [PartsCost] [decimal](18, 2) NOT NULL, [TotalCost] [decimal](18, 2) NOT NULL, [DowntimeHours] [decimal](18, 2) NOT NULL, [Notes] [nvarchar](max) NULL, [TechnicianNotes] [nvarchar](max) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [ShopWorkerId] [int] NULL, [IsRecurring] [bit] NOT NULL, [RecurrenceEndDate] [datetime2](7) NULL, [RecurrenceFrequency] [int] NULL, [RecurrenceGroupId] [nvarchar](max) NULL, [RecurrenceParentId] [int] NULL, [AssignedUserId] [nvarchar](450) NULL, CONSTRAINT [PK_MaintenanceRecords] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[ManufacturerLookupPatterns] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ManufacturerLookupPatterns]( [Id] [int] IDENTITY(1,1) NOT NULL, [ManufacturerName] [nvarchar](max) NOT NULL, [ProductUrlTemplate] [nvarchar](max) NULL, [SlugTransform] [nvarchar](max) NOT NULL, [Domain] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_ManufacturerLookupPatterns] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[NotificationLogs] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[NotificationLogs]( [Id] [int] IDENTITY(1,1) NOT NULL, [Channel] [int] NOT NULL, [NotificationType] [int] NOT NULL, [Status] [int] NOT NULL, [RecipientName] [nvarchar](max) NOT NULL, [Recipient] [nvarchar](max) NOT NULL, [Subject] [nvarchar](max) NULL, [Message] [nvarchar](max) NOT NULL, [ErrorMessage] [nvarchar](max) NULL, [SentAt] [datetime2](7) NOT NULL, [CustomerId] [int] NULL, [JobId] [int] NULL, [QuoteId] [int] NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [InvoiceId] [int] NULL, CONSTRAINT [PK_NotificationLogs] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[NotificationTemplates] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[NotificationTemplates]( [Id] [int] IDENTITY(1,1) NOT NULL, [NotificationType] [int] NOT NULL, [Channel] [int] NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [Subject] [nvarchar](max) NULL, [Body] [nvarchar](max) NOT NULL, [IsActive] [bit] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_NotificationTemplates] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[OvenBatches] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[OvenBatches]( [Id] [int] IDENTITY(1,1) NOT NULL, [BatchNumber] [nvarchar](max) NOT NULL, [EquipmentId] [int] NULL, [Status] [int] NOT NULL, [ScheduledDate] [datetime2](7) NOT NULL, [ScheduledStartTime] [datetime2](7) NULL, [EstimatedEndTime] [datetime2](7) NULL, [ActualStartTime] [datetime2](7) NULL, [ActualEndTime] [datetime2](7) NULL, [TotalSurfaceAreaSqFt] [decimal](18, 2) NOT NULL, [CureTemperatureF] [decimal](18, 2) NULL, [CycleMinutes] [int] NOT NULL, [PrimaryColorName] [nvarchar](max) NULL, [PrimaryColorCode] [nvarchar](max) NULL, [AiSuggested] [bit] NOT NULL, [AiReasoningJson] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [OvenCostId] [int] NULL, CONSTRAINT [PK_OvenBatches] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[OvenBatchItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[OvenBatchItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [OvenBatchId] [int] NOT NULL, [JobId] [int] NOT NULL, [JobItemId] [int] NOT NULL, [JobItemCoatId] [int] NOT NULL, [SurfaceAreaContribution] [decimal](18, 2) NOT NULL, [CoatPassNumber] [int] NOT NULL, [SortOrder] [int] NOT NULL, [Status] [int] NOT NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_OvenBatchItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[OvenCosts] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[OvenCosts]( [Id] [int] IDENTITY(1,1) NOT NULL, [Label] [nvarchar](100) NOT NULL, [CostPerHour] [decimal](18, 2) NOT NULL, [IsActive] [bit] NOT NULL, [DisplayOrder] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [DefaultCycleMinutes] [int] NULL, [MaxLoadSqFt] [decimal](18, 2) NULL, CONSTRAINT [PK_OvenCosts] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Payments] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Payments]( [Id] [int] IDENTITY(1,1) NOT NULL, [InvoiceId] [int] NOT NULL, [Amount] [decimal](18, 2) NOT NULL, [PaymentDate] [datetime2](7) NOT NULL, [PaymentMethod] [int] NOT NULL, [Reference] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [RecordedById] [nvarchar](450) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [DepositAccountId] [int] NULL, CONSTRAINT [PK_Payments] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[PlatformSettings] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PlatformSettings]( [Id] [int] IDENTITY(1,1) NOT NULL, [Key] [nvarchar](200) NOT NULL, [Value] [nvarchar](max) NULL, [Label] [nvarchar](max) NULL, [Description] [nvarchar](max) NULL, [GroupName] [nvarchar](max) NULL, [UpdatedAt] [datetime2](7) NULL, [UpdatedBy] [nvarchar](max) NULL, CONSTRAINT [PK_PlatformSettings] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[PowderUsageLogs] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PowderUsageLogs]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [JobItemId] [int] NOT NULL, [JobItemCoatId] [int] NOT NULL, [InventoryItemId] [int] NULL, [InventoryTransactionId] [int] NULL, [ActualLbsUsed] [decimal](18, 2) NOT NULL, [EstimatedLbs] [decimal](18, 2) NOT NULL, [VarianceLbs] [decimal](18, 2) NOT NULL, [RecordedByUserId] [nvarchar](max) NOT NULL, [RecordedAt] [datetime2](7) NOT NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_PowderUsageLogs] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[PrepServices] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PrepServices]( [Id] [int] IDENTITY(1,1) NOT NULL, [ServiceName] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [DisplayOrder] [int] NOT NULL, [IsActive] [bit] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_PrepServices] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[PricingTiers] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PricingTiers]( [Id] [int] IDENTITY(1,1) NOT NULL, [TierName] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [DiscountPercent] [decimal](18, 2) NOT NULL, [IsActive] [bit] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, CONSTRAINT [PK_PricingTiers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[PurchaseOrderItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PurchaseOrderItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [PurchaseOrderId] [int] NOT NULL, [InventoryItemId] [int] NULL, [QuantityOrdered] [decimal](18, 2) NOT NULL, [QuantityReceived] [decimal](18, 2) NOT NULL, [UnitCost] [decimal](18, 2) NOT NULL, [LineTotal] [decimal](18, 2) NOT NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [Description] [nvarchar](max) NULL, [UnitOfMeasure] [nvarchar](max) NULL, CONSTRAINT [PK_PurchaseOrderItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[PurchaseOrders] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[PurchaseOrders]( [Id] [int] IDENTITY(1,1) NOT NULL, [PoNumber] [nvarchar](max) NOT NULL, [VendorId] [int] NOT NULL, [Status] [int] NOT NULL, [OrderDate] [datetime2](7) NOT NULL, [ExpectedDeliveryDate] [datetime2](7) NULL, [ReceivedDate] [datetime2](7) NULL, [ShippingCost] [decimal](18, 2) NOT NULL, [SubTotal] [decimal](18, 2) NOT NULL, [TotalAmount] [decimal](18, 2) NOT NULL, [Notes] [nvarchar](max) NULL, [InternalNotes] [nvarchar](max) NULL, [BillId] [int] NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_PurchaseOrders] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[QuoteChangeHistories] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuoteChangeHistories]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuoteId] [int] NOT NULL, [ChangedByUserId] [nvarchar](450) NULL, [ChangedAt] [datetime2](7) NOT NULL, [FieldName] [nvarchar](max) NOT NULL, [OldValue] [nvarchar](max) NULL, [NewValue] [nvarchar](max) NULL, [ChangeDescription] [nvarchar](max) NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_QuoteChangeHistories] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[QuoteItemCoats] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuoteItemCoats]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuoteItemId] [int] NOT NULL, [CoatName] [nvarchar](max) NOT NULL, [Sequence] [int] NOT NULL, [InventoryItemId] [int] NULL, [ColorName] [nvarchar](max) NULL, [ColorCode] [nvarchar](max) NULL, [Finish] [nvarchar](max) NULL, [CoverageSqFtPerLb] [decimal](18, 2) NOT NULL, [TransferEfficiency] [decimal](18, 2) NOT NULL, [PowderCostPerLb] [decimal](18, 2) NULL, [CoatMaterialCost] [decimal](18, 2) NOT NULL, [CoatLaborCost] [decimal](18, 2) NOT NULL, [CoatTotalCost] [decimal](18, 2) NOT NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [PowderToOrder] [decimal](18, 2) NULL, [VendorId] [int] NULL, CONSTRAINT [PK_QuoteItemCoats] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[QuoteItemPrepServices] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuoteItemPrepServices]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuoteItemId] [int] NOT NULL, [PrepServiceId] [int] NOT NULL, [EstimatedMinutes] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_QuoteItemPrepServices] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[QuoteItems] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuoteItems]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuoteId] [int] NOT NULL, [Description] [nvarchar](max) NOT NULL, [Quantity] [decimal](18, 2) NOT NULL, [SurfaceArea] [decimal](18, 2) NULL, [UnitPrice] [decimal](18, 2) NOT NULL, [TotalPrice] [decimal](18, 2) NOT NULL, [RequiresSandblasting] [bit] NOT NULL, [RequiresMasking] [bit] NOT NULL, [EstimatedMinutes] [int] NOT NULL, [Notes] [nvarchar](max) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [SurfaceAreaSqFt] [decimal](18, 2) NOT NULL, [CatalogItemId] [int] NULL, [IsGenericItem] [bit] NOT NULL, [ManualUnitPrice] [decimal](18, 2) NULL, [IsLaborItem] [bit] NOT NULL, [Complexity] [nvarchar](max) NULL, [PowderCostOverride] [decimal](18, 2) NULL, [AiTags] [nvarchar](max) NULL, [AiPredictionId] [int] NULL, [IsAiItem] [bit] NOT NULL, [IsSalesItem] [bit] NOT NULL, [Sku] [nvarchar](max) NULL, CONSTRAINT [PK_QuoteItems] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[QuotePhotos] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuotePhotos]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuoteId] [int] NULL, [TempId] [nvarchar](max) NOT NULL, [FilePath] [nvarchar](max) NOT NULL, [FileName] [nvarchar](max) NOT NULL, [FileSize] [bigint] NOT NULL, [ContentType] [nvarchar](max) NOT NULL, [Caption] [nvarchar](max) NULL, [IsAiAnalysisPhoto] [bit] NOT NULL, [UploadedById] [nvarchar](450) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_QuotePhotos] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[QuotePrepServices] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuotePrepServices]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuoteId] [int] NOT NULL, [PrepServiceId] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_QuotePrepServices] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Quotes] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Quotes]( [Id] [int] IDENTITY(1,1) NOT NULL, [QuoteNumber] [nvarchar](450) NOT NULL, [CustomerId] [int] NULL, [PreparedById] [nvarchar](450) NULL, [IsCommercial] [bit] NOT NULL, [QuoteDate] [datetime2](7) NOT NULL, [ExpirationDate] [datetime2](7) NULL, [SentDate] [datetime2](7) NULL, [ApprovedDate] [datetime2](7) NULL, [SubTotal] [decimal](18, 2) NOT NULL, [DiscountPercent] [decimal](18, 2) NOT NULL, [DiscountAmount] [decimal](18, 2) NOT NULL, [TaxPercent] [decimal](18, 2) NOT NULL, [TaxAmount] [decimal](18, 2) NOT NULL, [Total] [decimal](18, 2) NOT NULL, [Description] [nvarchar](max) NULL, [Terms] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [CustomerPO] [nvarchar](max) NULL, [ConvertedToJobId] [int] NULL, [ConvertedDate] [datetime2](7) NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [ProspectAddress] [nvarchar](max) NULL, [ProspectCity] [nvarchar](max) NULL, [ProspectCompanyName] [nvarchar](max) NULL, [ProspectContactName] [nvarchar](max) NULL, [ProspectEmail] [nvarchar](max) NULL, [ProspectPhone] [nvarchar](max) NULL, [ProspectState] [nvarchar](max) NULL, [ProspectZipCode] [nvarchar](max) NULL, [QuoteStatusId] [int] NOT NULL, [DiscountReason] [nvarchar](max) NULL, [DiscountType] [int] NOT NULL, [DiscountValue] [decimal](18, 2) NOT NULL, [IsRushJob] [bit] NOT NULL, [RushFee] [decimal](18, 2) NOT NULL, [OvenCostId] [int] NULL, [OvenBatches] [int] NOT NULL, [OvenCycleMinutes] [int] NULL, [ApprovalToken] [nvarchar](450) NULL, [ApprovalTokenExpiresAt] [datetime2](7) NULL, [ApprovalTokenUsedAt] [datetime2](7) NULL, [DeclineReason] [nvarchar](max) NULL, [DeclinedByIp] [nvarchar](max) NULL, [Tags] [nvarchar](max) NULL, [ItemsSubtotal] [decimal](18, 2) NOT NULL, [OvenBatchCost] [decimal](18, 2) NOT NULL, [OverheadAmount] [decimal](18, 2) NOT NULL, [OverheadPercent] [decimal](18, 2) NOT NULL, [ProfitMargin] [decimal](18, 2) NOT NULL, [ProfitPercent] [decimal](18, 2) NOT NULL, [ShopSuppliesAmount] [decimal](18, 2) NOT NULL, [ShopSuppliesPercent] [decimal](18, 2) NOT NULL, [DepositPercent] [decimal](18, 2) NOT NULL, [RequiresDeposit] [bit] NOT NULL, [DepositAmountPaid] [decimal](18, 2) NOT NULL, [DepositPaymentIntentId] [nvarchar](max) NULL, [DepositPaymentLinkExpiresAt] [datetime2](7) NULL, [DepositPaymentLinkToken] [nvarchar](max) NULL, CONSTRAINT [PK_Quotes] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[QuoteStatusLookups] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[QuoteStatusLookups]( [Id] [int] IDENTITY(1,1) NOT NULL, [StatusCode] [nvarchar](450) NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [DisplayOrder] [int] NOT NULL, [ColorClass] [nvarchar](max) NOT NULL, [IconClass] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [IsSystemDefined] [bit] NOT NULL, [IsApprovedStatus] [bit] NOT NULL, [IsConvertedStatus] [bit] NOT NULL, [IsDraftStatus] [bit] NOT NULL, [Description] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [IsRejectedStatus] [bit] NOT NULL, CONSTRAINT [PK_QuoteStatusLookups] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Refunds] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Refunds]( [Id] [int] IDENTITY(1,1) NOT NULL, [InvoiceId] [int] NOT NULL, [PaymentId] [int] NULL, [Amount] [decimal](18, 2) NOT NULL, [RefundDate] [datetime2](7) NOT NULL, [RefundMethod] [int] NOT NULL, [Reason] [nvarchar](max) NOT NULL, [Reference] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [Status] [int] NOT NULL, [IssuedDate] [datetime2](7) NULL, [IssuedById] [nvarchar](450) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CreditMemoId] [int] NULL, CONSTRAINT [PK_Refunds] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[ReleaseNotes] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ReleaseNotes]( [Id] [int] IDENTITY(1,1) NOT NULL, [Version] [nvarchar](max) NOT NULL, [Title] [nvarchar](max) NOT NULL, [Body] [nvarchar](max) NOT NULL, [Tag] [nvarchar](max) NOT NULL, [IsPublished] [bit] NOT NULL, [ReleasedAt] [datetime2](7) NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedByUserId] [nvarchar](max) NULL, [CreatedByUserName] [nvarchar](max) NULL, CONSTRAINT [PK_ReleaseNotes] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[ReworkRecords] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ReworkRecords]( [Id] [int] IDENTITY(1,1) NOT NULL, [JobId] [int] NOT NULL, [JobItemId] [int] NULL, [ReworkJobId] [int] NULL, [ReworkType] [int] NOT NULL, [Reason] [int] NOT NULL, [DefectDescription] [nvarchar](max) NOT NULL, [DiscoveredBy] [int] NOT NULL, [DiscoveredDate] [datetime2](7) NOT NULL, [ReportedByName] [nvarchar](max) NULL, [EstimatedReworkCost] [decimal](18, 2) NOT NULL, [ActualReworkCost] [decimal](18, 2) NOT NULL, [IsBillableToCustomer] [bit] NOT NULL, [BillingNotes] [nvarchar](max) NULL, [Status] [int] NOT NULL, [Resolution] [int] NULL, [ResolvedDate] [datetime2](7) NULL, [ResolutionNotes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_ReworkRecords] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[ShopWorkerRoleCosts] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ShopWorkerRoleCosts]( [Id] [int] IDENTITY(1,1) NOT NULL, [Role] [int] NOT NULL, [HourlyRate] [decimal](18, 2) NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_ShopWorkerRoleCosts] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[ShopWorkers] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[ShopWorkers]( [Id] [int] IDENTITY(1,1) NOT NULL, [Name] [nvarchar](max) NOT NULL, [Role] [int] NOT NULL, [Phone] [nvarchar](max) NULL, [Email] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [Notes] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, CONSTRAINT [PK_ShopWorkers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[StripeWebhookEvents] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[StripeWebhookEvents]( [Id] [bigint] IDENTITY(1,1) NOT NULL, [EventId] [nvarchar](max) NOT NULL, [EventType] [nvarchar](max) NOT NULL, [CompanyId] [int] NULL, [RawJson] [nvarchar](max) NOT NULL, [Status] [int] NOT NULL, [ErrorMessage] [nvarchar](max) NULL, [ReceivedAt] [datetime2](7) NOT NULL, [ProcessedAt] [datetime2](7) NULL, CONSTRAINT [PK_StripeWebhookEvents] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[SubscriptionPlanConfigs] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[SubscriptionPlanConfigs]( [Id] [int] IDENTITY(1,1) NOT NULL, [Plan] [int] NOT NULL, [DisplayName] [nvarchar](max) NOT NULL, [Description] [nvarchar](max) NULL, [MaxUsers] [int] NOT NULL, [MaxActiveJobs] [int] NOT NULL, [MaxCustomers] [int] NOT NULL, [MonthlyPrice] [decimal](18, 2) NOT NULL, [AnnualPrice] [decimal](18, 2) NOT NULL, [StripePriceIdMonthly] [nvarchar](max) NULL, [StripePriceIdAnnual] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [SortOrder] [int] NOT NULL, [CompanyId] [int] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [MaxQuotes] [int] NOT NULL, [MaxCatalogItems] [int] NOT NULL, [MaxJobPhotos] [int] NOT NULL, [MaxAiPhotoQuotesPerMonth] [int] NOT NULL, [AllowOnlinePayments] [bit] NOT NULL, [MaxQuotePhotos] [int] NOT NULL, [AllowAccounting] [bit] NOT NULL, [AllowAiInventoryAssist] [bit] NOT NULL, [AllowAiPhotoQuotes] [bit] NOT NULL, CONSTRAINT [PK_SubscriptionPlanConfigs] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[SystemLogs] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[SystemLogs]( [Id] [int] IDENTITY(1,1) NOT NULL, [Message] [nvarchar](max) NULL, [Level] [nvarchar](max) NULL, [Timestamp] [datetime] NULL, [Exception] [nvarchar](max) NULL, [LogEvent] [nvarchar](max) NULL, [SourceContext] [nvarchar](512) NULL, [UserName] [nvarchar](256) NULL, [CompanyId] [int] NULL, [RemoteIP] [nvarchar](64) NULL, CONSTRAINT [PK_SystemLogs] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[TermsAcceptances] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[TermsAcceptances]( [Id] [int] IDENTITY(1,1) NOT NULL, [UserId] [nvarchar](max) NOT NULL, [CompanyId] [int] NOT NULL, [TosVersion] [nvarchar](max) NOT NULL, [AcceptedAt] [datetime2](7) NOT NULL, [IpAddress] [nvarchar](max) NULL, [UserAgent] [nvarchar](max) NULL, CONSTRAINT [PK_TermsAcceptances] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO /****** Object: Table [dbo].[Vendors] Script Date: 4/11/2026 9:22:53 AM ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Vendors]( [Id] [int] IDENTITY(1,1) NOT NULL, [CompanyName] [nvarchar](max) NOT NULL, [ContactName] [nvarchar](max) NULL, [Email] [nvarchar](max) NULL, [Phone] [nvarchar](max) NULL, [Address] [nvarchar](max) NULL, [City] [nvarchar](max) NULL, [State] [nvarchar](max) NULL, [ZipCode] [nvarchar](max) NULL, [Country] [nvarchar](max) NULL, [Website] [nvarchar](max) NULL, [Notes] [nvarchar](max) NULL, [IsActive] [bit] NOT NULL, [CreatedAt] [datetime2](7) NOT NULL, [UpdatedAt] [datetime2](7) NULL, [CreatedBy] [nvarchar](max) NULL, [UpdatedBy] [nvarchar](max) NULL, [IsDeleted] [bit] NOT NULL, [DeletedAt] [datetime2](7) NULL, [DeletedBy] [nvarchar](max) NULL, [CompanyId] [int] NOT NULL, [AccountNumber] [nvarchar](max) NULL, [CreditLimit] [decimal](18, 2) NULL, [IsPreferred] [bit] NOT NULL, [PaymentTerms] [nvarchar](max) NULL, [TaxId] [nvarchar](max) NULL, [CurrentBalance] [decimal](18, 2) NOT NULL, [DefaultExpenseAccountId] [int] NULL, [OpeningBalance] [decimal](18, 2) NOT NULL, [OpeningBalanceDate] [datetime2](7) NULL, CONSTRAINT [PK_Suppliers] PRIMARY KEY CLUSTERED ( [Id] ASC )WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY] ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY] GO ALTER TABLE [dbo].[Accounts] ADD DEFAULT ((0.0)) FOR [OpeningBalance] GO ALTER TABLE [dbo].[Accounts] ADD DEFAULT ((0.0)) FOR [CurrentBalance] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanManageCalendar] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanManageEquipment] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanManageMaintenance] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanManageProducts] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanManageVendors] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanViewCalendar] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanViewProducts] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanManageInvoices] GO ALTER TABLE [dbo].[AspNetUsers] ADD DEFAULT (CONVERT([bit],(0))) FOR [CanViewReports] GO ALTER TABLE [dbo].[CatalogCategories] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsMerchandise] GO ALTER TABLE [dbo].[CatalogItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsMerchandise] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT ((0)) FOR [SubscriptionPlan] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT ((0)) FOR [SubscriptionStatus] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsComped] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT (CONVERT([bit],(0))) FOR [AiInventoryAssistEnabled] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT (CONVERT([bit],(0))) FOR [AiPhotoQuotesEnabled] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT ((0)) FOR [OnlinePaymentSurchargeType] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT ((0.0)) FOR [OnlinePaymentSurchargeValue] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT (CONVERT([bit],(0))) FOR [OnlineSurchargeAcknowledged] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT ((0)) FOR [StripeConnectStatus] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT (CONVERT([bit],(0))) FOR [MarketingEmailOptOut] GO ALTER TABLE [dbo].[Companies] ADD DEFAULT (N'') FOR [MarketingUnsubscribeToken] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [PowderCoatingCostPerSqFt] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [TaxPercent] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [RushChargePercentage] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [ShopMinimumCharge] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT (N'Percentage') FOR [RushChargeType] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [ShopSuppliesRate] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [AdditionalCoatLaborPercent] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0)) FOR [DefaultOvenCycleMinutes] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [ComplexityComplexPercent] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [ComplexityExtremePercent] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [ComplexityModeratePercent] GO ALTER TABLE [dbo].[CompanyOperatingCosts] ADD DEFAULT ((0.0)) FOR [ComplexitySimplePercent] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (CONVERT([bit],(0))) FOR [UseMetricSystem] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (N'') FOR [QtAccentColor] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (CONVERT([bit],(0))) FOR [NotifyOnNewQuote] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (CONVERT([bit],(0))) FOR [SetupWizardCompleted] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (CONVERT([bit],(0))) FOR [SetupWizardStarted] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (N'') FOR [PaymentReminderDays] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (CONVERT([bit],(0))) FOR [PaymentRemindersEnabled] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (N'') FOR [InAccentColor] GO ALTER TABLE [dbo].[CompanyPreferences] ADD DEFAULT (CONVERT([bit],(0))) FOR [MigratingFromQuickBooks] GO ALTER TABLE [dbo].[CustomerNotes] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[Customers] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[Customers] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsTaxExempt] GO ALTER TABLE [dbo].[Customers] ADD DEFAULT (CONVERT([bit],(0))) FOR [NotifyByEmail] GO ALTER TABLE [dbo].[Customers] ADD DEFAULT (CONVERT([bit],(0))) FOR [NotifyBySms] GO ALTER TABLE [dbo].[Customers] ADD DEFAULT (replace(newid(),'-','')) FOR [UnsubscribeToken] GO ALTER TABLE [dbo].[Customers] ADD DEFAULT ((0.0)) FOR [CreditBalance] GO ALTER TABLE [dbo].[Equipment] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[InventoryCategoryLookups] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsCoating] GO ALTER TABLE [dbo].[InventoryItems] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[InventoryItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [RequiresClearCoat] GO ALTER TABLE [dbo].[InventoryTransactions] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[InvoiceItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsGiftCertificate] GO ALTER TABLE [dbo].[Invoices] ADD DEFAULT ((0.0)) FOR [CreditApplied] GO ALTER TABLE [dbo].[Invoices] ADD DEFAULT ((0.0)) FOR [GiftCertificateRedeemed] GO ALTER TABLE [dbo].[Invoices] ADD DEFAULT ((0.0)) FOR [OnlineAmountPaid] GO ALTER TABLE [dbo].[Invoices] ADD DEFAULT ((0)) FOR [OnlinePaymentStatus] GO ALTER TABLE [dbo].[Invoices] ADD DEFAULT ((0.0)) FOR [OnlineSurchargeCollected] GO ALTER TABLE [dbo].[JobItemCoats] ADD DEFAULT (CONVERT([bit],(0))) FOR [PowderOrdered] GO ALTER TABLE [dbo].[JobItemCoats] ADD DEFAULT (CONVERT([bit],(0))) FOR [PowderReceived] GO ALTER TABLE [dbo].[JobItems] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[JobItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IncludePrepCost] GO ALTER TABLE [dbo].[JobItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsGenericItem] GO ALTER TABLE [dbo].[JobItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsLaborItem] GO ALTER TABLE [dbo].[JobItems] ADD DEFAULT ((0.0)) FOR [SurfaceAreaSqFt] GO ALTER TABLE [dbo].[JobItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsSalesItem] GO ALTER TABLE [dbo].[JobNotes] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[JobPhotos] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[JobPhotos] ADD DEFAULT (N'') FOR [ContentType] GO ALTER TABLE [dbo].[JobPhotos] ADD DEFAULT ((0)) FOR [DisplayOrder] GO ALTER TABLE [dbo].[JobPhotos] ADD DEFAULT (CONVERT([bigint],(0))) FOR [FileSize] GO ALTER TABLE [dbo].[JobPhotos] ADD DEFAULT (N'') FOR [UploadedById] GO ALTER TABLE [dbo].[JobPhotos] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsAiAnalysisPhoto] GO ALTER TABLE [dbo].[Jobs] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[Jobs] ADD DEFAULT (newid()) FOR [ShopAccessCode] GO ALTER TABLE [dbo].[Jobs] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsReworkJob] GO ALTER TABLE [dbo].[Jobs] ADD DEFAULT ((0)) FOR [DiscountType] GO ALTER TABLE [dbo].[Jobs] ADD DEFAULT ((0.0)) FOR [DiscountValue] GO ALTER TABLE [dbo].[Jobs] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsRushJob] GO ALTER TABLE [dbo].[JobStatusHistory] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[MaintenanceRecords] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[MaintenanceRecords] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsRecurring] GO ALTER TABLE [dbo].[PricingTiers] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[QuoteItems] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[QuoteItems] ADD DEFAULT ((0.0)) FOR [SurfaceAreaSqFt] GO ALTER TABLE [dbo].[QuoteItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsGenericItem] GO ALTER TABLE [dbo].[QuoteItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsLaborItem] GO ALTER TABLE [dbo].[QuoteItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsAiItem] GO ALTER TABLE [dbo].[QuoteItems] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsSalesItem] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0)) FOR [DiscountType] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [DiscountValue] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsRushJob] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [RushFee] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0)) FOR [OvenBatches] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [ItemsSubtotal] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [OvenBatchCost] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [OverheadAmount] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [OverheadPercent] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [ProfitMargin] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [ProfitPercent] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [ShopSuppliesAmount] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [ShopSuppliesPercent] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [DepositPercent] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT (CONVERT([bit],(0))) FOR [RequiresDeposit] GO ALTER TABLE [dbo].[Quotes] ADD DEFAULT ((0.0)) FOR [DepositAmountPaid] GO ALTER TABLE [dbo].[QuoteStatusLookups] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsRejectedStatus] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT ((0)) FOR [MaxQuotes] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT ((0)) FOR [MaxCatalogItems] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT ((0)) FOR [MaxJobPhotos] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT ((0)) FOR [MaxAiPhotoQuotesPerMonth] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT (CONVERT([bit],(0))) FOR [AllowOnlinePayments] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT ((0)) FOR [MaxQuotePhotos] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT (CONVERT([bit],(0))) FOR [AllowAccounting] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT (CONVERT([bit],(0))) FOR [AllowAiInventoryAssist] GO ALTER TABLE [dbo].[SubscriptionPlanConfigs] ADD DEFAULT (CONVERT([bit],(0))) FOR [AllowAiPhotoQuotes] GO ALTER TABLE [dbo].[Vendors] ADD DEFAULT ((1)) FOR [CompanyId] GO ALTER TABLE [dbo].[Vendors] ADD DEFAULT (CONVERT([bit],(0))) FOR [IsPreferred] GO ALTER TABLE [dbo].[Vendors] ADD DEFAULT ((0.0)) FOR [CurrentBalance] GO ALTER TABLE [dbo].[Vendors] ADD DEFAULT ((0.0)) FOR [OpeningBalance] GO ALTER TABLE [dbo].[Accounts] WITH CHECK ADD CONSTRAINT [FK_Accounts_Accounts_ParentAccountId] FOREIGN KEY([ParentAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[Accounts] CHECK CONSTRAINT [FK_Accounts_Accounts_ParentAccountId] GO ALTER TABLE [dbo].[AnnouncementDismissals] WITH CHECK ADD CONSTRAINT [FK_AnnouncementDismissals_Announcements_AnnouncementId] FOREIGN KEY([AnnouncementId]) REFERENCES [dbo].[Announcements] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[AnnouncementDismissals] CHECK CONSTRAINT [FK_AnnouncementDismissals_Announcements_AnnouncementId] GO ALTER TABLE [dbo].[Appointments] WITH CHECK ADD CONSTRAINT [FK_Appointments_AppointmentStatusLookups_AppointmentStatusId] FOREIGN KEY([AppointmentStatusId]) REFERENCES [dbo].[AppointmentStatusLookups] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[Appointments] CHECK CONSTRAINT [FK_Appointments_AppointmentStatusLookups_AppointmentStatusId] GO ALTER TABLE [dbo].[Appointments] WITH CHECK ADD CONSTRAINT [FK_Appointments_AppointmentTypeLookups_AppointmentTypeId] FOREIGN KEY([AppointmentTypeId]) REFERENCES [dbo].[AppointmentTypeLookups] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[Appointments] CHECK CONSTRAINT [FK_Appointments_AppointmentTypeLookups_AppointmentTypeId] GO ALTER TABLE [dbo].[Appointments] WITH CHECK ADD CONSTRAINT [FK_Appointments_AspNetUsers_AssignedUserId] FOREIGN KEY([AssignedUserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[Appointments] CHECK CONSTRAINT [FK_Appointments_AspNetUsers_AssignedUserId] GO ALTER TABLE [dbo].[Appointments] WITH CHECK ADD CONSTRAINT [FK_Appointments_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[Appointments] CHECK CONSTRAINT [FK_Appointments_Customers_CustomerId] GO ALTER TABLE [dbo].[Appointments] WITH CHECK ADD CONSTRAINT [FK_Appointments_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[Appointments] CHECK CONSTRAINT [FK_Appointments_Jobs_JobId] GO ALTER TABLE [dbo].[AspNetRoleClaims] WITH CHECK ADD CONSTRAINT [FK_AspNetRoleClaims_AspNetRoles_RoleId] FOREIGN KEY([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[AspNetRoleClaims] CHECK CONSTRAINT [FK_AspNetRoleClaims_AspNetRoles_RoleId] GO ALTER TABLE [dbo].[AspNetUserClaims] WITH CHECK ADD CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId] FOREIGN KEY([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[AspNetUserClaims] CHECK CONSTRAINT [FK_AspNetUserClaims_AspNetUsers_UserId] GO ALTER TABLE [dbo].[AspNetUserLogins] WITH CHECK ADD CONSTRAINT [FK_AspNetUserLogins_AspNetUsers_UserId] FOREIGN KEY([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[AspNetUserLogins] CHECK CONSTRAINT [FK_AspNetUserLogins_AspNetUsers_UserId] GO ALTER TABLE [dbo].[AspNetUserRoles] WITH CHECK ADD CONSTRAINT [FK_AspNetUserRoles_AspNetRoles_RoleId] FOREIGN KEY([RoleId]) REFERENCES [dbo].[AspNetRoles] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_AspNetUserRoles_AspNetRoles_RoleId] GO ALTER TABLE [dbo].[AspNetUserRoles] WITH CHECK ADD CONSTRAINT [FK_AspNetUserRoles_AspNetUsers_UserId] FOREIGN KEY([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[AspNetUserRoles] CHECK CONSTRAINT [FK_AspNetUserRoles_AspNetUsers_UserId] GO ALTER TABLE [dbo].[AspNetUsers] WITH CHECK ADD CONSTRAINT [FK_AspNetUsers_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[AspNetUsers] CHECK CONSTRAINT [FK_AspNetUsers_Companies_CompanyId] GO ALTER TABLE [dbo].[AspNetUserTokens] WITH CHECK ADD CONSTRAINT [FK_AspNetUserTokens_AspNetUsers_UserId] FOREIGN KEY([UserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[AspNetUserTokens] CHECK CONSTRAINT [FK_AspNetUserTokens_AspNetUsers_UserId] GO ALTER TABLE [dbo].[BillLineItems] WITH CHECK ADD CONSTRAINT [FK_BillLineItems_Accounts_AccountId] FOREIGN KEY([AccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[BillLineItems] CHECK CONSTRAINT [FK_BillLineItems_Accounts_AccountId] GO ALTER TABLE [dbo].[BillLineItems] WITH CHECK ADD CONSTRAINT [FK_BillLineItems_Bills_BillId] FOREIGN KEY([BillId]) REFERENCES [dbo].[Bills] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[BillLineItems] CHECK CONSTRAINT [FK_BillLineItems_Bills_BillId] GO ALTER TABLE [dbo].[BillLineItems] WITH CHECK ADD CONSTRAINT [FK_BillLineItems_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[BillLineItems] CHECK CONSTRAINT [FK_BillLineItems_Jobs_JobId] GO ALTER TABLE [dbo].[BillPayments] WITH CHECK ADD CONSTRAINT [FK_BillPayments_Accounts_BankAccountId] FOREIGN KEY([BankAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[BillPayments] CHECK CONSTRAINT [FK_BillPayments_Accounts_BankAccountId] GO ALTER TABLE [dbo].[BillPayments] WITH CHECK ADD CONSTRAINT [FK_BillPayments_Bills_BillId] FOREIGN KEY([BillId]) REFERENCES [dbo].[Bills] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[BillPayments] CHECK CONSTRAINT [FK_BillPayments_Bills_BillId] GO ALTER TABLE [dbo].[BillPayments] WITH CHECK ADD CONSTRAINT [FK_BillPayments_Vendors_VendorId] FOREIGN KEY([VendorId]) REFERENCES [dbo].[Vendors] ([Id]) GO ALTER TABLE [dbo].[BillPayments] CHECK CONSTRAINT [FK_BillPayments_Vendors_VendorId] GO ALTER TABLE [dbo].[Bills] WITH CHECK ADD CONSTRAINT [FK_Bills_Accounts_APAccountId] FOREIGN KEY([APAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[Bills] CHECK CONSTRAINT [FK_Bills_Accounts_APAccountId] GO ALTER TABLE [dbo].[Bills] WITH CHECK ADD CONSTRAINT [FK_Bills_Vendors_VendorId] FOREIGN KEY([VendorId]) REFERENCES [dbo].[Vendors] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[Bills] CHECK CONSTRAINT [FK_Bills_Vendors_VendorId] GO ALTER TABLE [dbo].[BugReportAttachments] WITH CHECK ADD CONSTRAINT [FK_BugReportAttachments_BugReports_BugReportId] FOREIGN KEY([BugReportId]) REFERENCES [dbo].[BugReports] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[BugReportAttachments] CHECK CONSTRAINT [FK_BugReportAttachments_BugReports_BugReportId] GO ALTER TABLE [dbo].[CatalogCategories] WITH CHECK ADD CONSTRAINT [FK_CatalogCategories_CatalogCategories_ParentCategoryId] FOREIGN KEY([ParentCategoryId]) REFERENCES [dbo].[CatalogCategories] ([Id]) GO ALTER TABLE [dbo].[CatalogCategories] CHECK CONSTRAINT [FK_CatalogCategories_CatalogCategories_ParentCategoryId] GO ALTER TABLE [dbo].[CatalogCategories] WITH CHECK ADD CONSTRAINT [FK_CatalogCategories_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[CatalogCategories] CHECK CONSTRAINT [FK_CatalogCategories_Companies_CompanyId] GO ALTER TABLE [dbo].[CatalogItems] WITH CHECK ADD CONSTRAINT [FK_CatalogItems_Accounts_CogsAccountId] FOREIGN KEY([CogsAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[CatalogItems] CHECK CONSTRAINT [FK_CatalogItems_Accounts_CogsAccountId] GO ALTER TABLE [dbo].[CatalogItems] WITH CHECK ADD CONSTRAINT [FK_CatalogItems_Accounts_RevenueAccountId] FOREIGN KEY([RevenueAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[CatalogItems] CHECK CONSTRAINT [FK_CatalogItems_Accounts_RevenueAccountId] GO ALTER TABLE [dbo].[CatalogItems] WITH CHECK ADD CONSTRAINT [FK_CatalogItems_CatalogCategories_CategoryId] FOREIGN KEY([CategoryId]) REFERENCES [dbo].[CatalogCategories] ([Id]) GO ALTER TABLE [dbo].[CatalogItems] CHECK CONSTRAINT [FK_CatalogItems_CatalogCategories_CategoryId] GO ALTER TABLE [dbo].[CatalogItems] WITH CHECK ADD CONSTRAINT [FK_CatalogItems_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[CatalogItems] CHECK CONSTRAINT [FK_CatalogItems_Companies_CompanyId] GO ALTER TABLE [dbo].[CatalogItems] WITH CHECK ADD CONSTRAINT [FK_CatalogItems_InventoryItems_InventoryItemId] FOREIGN KEY([InventoryItemId]) REFERENCES [dbo].[InventoryItems] ([Id]) GO ALTER TABLE [dbo].[CatalogItems] CHECK CONSTRAINT [FK_CatalogItems_InventoryItems_InventoryItemId] GO ALTER TABLE [dbo].[CompanyOperatingCosts] WITH CHECK ADD CONSTRAINT [FK_CompanyOperatingCosts_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[CompanyOperatingCosts] CHECK CONSTRAINT [FK_CompanyOperatingCosts_Companies_CompanyId] GO ALTER TABLE [dbo].[CompanyPreferences] WITH CHECK ADD CONSTRAINT [FK_CompanyPreferences_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[CompanyPreferences] CHECK CONSTRAINT [FK_CompanyPreferences_Companies_CompanyId] GO ALTER TABLE [dbo].[CreditMemoApplications] WITH CHECK ADD CONSTRAINT [FK_CreditMemoApplications_AspNetUsers_AppliedById] FOREIGN KEY([AppliedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[CreditMemoApplications] CHECK CONSTRAINT [FK_CreditMemoApplications_AspNetUsers_AppliedById] GO ALTER TABLE [dbo].[CreditMemoApplications] WITH CHECK ADD CONSTRAINT [FK_CreditMemoApplications_CreditMemos_CreditMemoId] FOREIGN KEY([CreditMemoId]) REFERENCES [dbo].[CreditMemos] ([Id]) GO ALTER TABLE [dbo].[CreditMemoApplications] CHECK CONSTRAINT [FK_CreditMemoApplications_CreditMemos_CreditMemoId] GO ALTER TABLE [dbo].[CreditMemoApplications] WITH CHECK ADD CONSTRAINT [FK_CreditMemoApplications_Invoices_InvoiceId] FOREIGN KEY([InvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) GO ALTER TABLE [dbo].[CreditMemoApplications] CHECK CONSTRAINT [FK_CreditMemoApplications_Invoices_InvoiceId] GO ALTER TABLE [dbo].[CreditMemos] WITH CHECK ADD CONSTRAINT [FK_CreditMemos_AspNetUsers_IssuedById] FOREIGN KEY([IssuedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[CreditMemos] CHECK CONSTRAINT [FK_CreditMemos_AspNetUsers_IssuedById] GO ALTER TABLE [dbo].[CreditMemos] WITH CHECK ADD CONSTRAINT [FK_CreditMemos_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[CreditMemos] CHECK CONSTRAINT [FK_CreditMemos_Customers_CustomerId] GO ALTER TABLE [dbo].[CreditMemos] WITH CHECK ADD CONSTRAINT [FK_CreditMemos_Invoices_OriginalInvoiceId] FOREIGN KEY([OriginalInvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) GO ALTER TABLE [dbo].[CreditMemos] CHECK CONSTRAINT [FK_CreditMemos_Invoices_OriginalInvoiceId] GO ALTER TABLE [dbo].[CreditMemos] WITH CHECK ADD CONSTRAINT [FK_CreditMemos_ReworkRecords_ReworkRecordId] FOREIGN KEY([ReworkRecordId]) REFERENCES [dbo].[ReworkRecords] ([Id]) GO ALTER TABLE [dbo].[CreditMemos] CHECK CONSTRAINT [FK_CreditMemos_ReworkRecords_ReworkRecordId] GO ALTER TABLE [dbo].[CustomerNotes] WITH CHECK ADD CONSTRAINT [FK_CustomerNotes_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[CustomerNotes] CHECK CONSTRAINT [FK_CustomerNotes_Customers_CustomerId] GO ALTER TABLE [dbo].[Customers] WITH CHECK ADD CONSTRAINT [FK_Customers_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[Customers] CHECK CONSTRAINT [FK_Customers_Companies_CompanyId] GO ALTER TABLE [dbo].[Customers] WITH CHECK ADD CONSTRAINT [FK_Customers_PricingTiers_PricingTierId] FOREIGN KEY([PricingTierId]) REFERENCES [dbo].[PricingTiers] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Customers] CHECK CONSTRAINT [FK_Customers_PricingTiers_PricingTierId] GO ALTER TABLE [dbo].[Deposits] WITH CHECK ADD CONSTRAINT [FK_Deposits_AspNetUsers_RecordedById] FOREIGN KEY([RecordedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[Deposits] CHECK CONSTRAINT [FK_Deposits_AspNetUsers_RecordedById] GO ALTER TABLE [dbo].[Deposits] WITH CHECK ADD CONSTRAINT [FK_Deposits_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[Deposits] CHECK CONSTRAINT [FK_Deposits_Customers_CustomerId] GO ALTER TABLE [dbo].[Deposits] WITH CHECK ADD CONSTRAINT [FK_Deposits_Invoices_AppliedToInvoiceId] FOREIGN KEY([AppliedToInvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Deposits] CHECK CONSTRAINT [FK_Deposits_Invoices_AppliedToInvoiceId] GO ALTER TABLE [dbo].[Deposits] WITH CHECK ADD CONSTRAINT [FK_Deposits_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[Deposits] CHECK CONSTRAINT [FK_Deposits_Jobs_JobId] GO ALTER TABLE [dbo].[Deposits] WITH CHECK ADD CONSTRAINT [FK_Deposits_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) GO ALTER TABLE [dbo].[Deposits] CHECK CONSTRAINT [FK_Deposits_Quotes_QuoteId] GO ALTER TABLE [dbo].[Equipment] WITH CHECK ADD CONSTRAINT [FK_Equipment_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[Equipment] CHECK CONSTRAINT [FK_Equipment_Companies_CompanyId] GO ALTER TABLE [dbo].[Expenses] WITH CHECK ADD CONSTRAINT [FK_Expenses_Accounts_ExpenseAccountId] FOREIGN KEY([ExpenseAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[Expenses] CHECK CONSTRAINT [FK_Expenses_Accounts_ExpenseAccountId] GO ALTER TABLE [dbo].[Expenses] WITH CHECK ADD CONSTRAINT [FK_Expenses_Accounts_PaymentAccountId] FOREIGN KEY([PaymentAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[Expenses] CHECK CONSTRAINT [FK_Expenses_Accounts_PaymentAccountId] GO ALTER TABLE [dbo].[Expenses] WITH CHECK ADD CONSTRAINT [FK_Expenses_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[Expenses] CHECK CONSTRAINT [FK_Expenses_Jobs_JobId] GO ALTER TABLE [dbo].[Expenses] WITH CHECK ADD CONSTRAINT [FK_Expenses_Vendors_VendorId] FOREIGN KEY([VendorId]) REFERENCES [dbo].[Vendors] ([Id]) GO ALTER TABLE [dbo].[Expenses] CHECK CONSTRAINT [FK_Expenses_Vendors_VendorId] GO ALTER TABLE [dbo].[GiftCertificateRedemptions] WITH CHECK ADD CONSTRAINT [FK_GiftCertificateRedemptions_AspNetUsers_RedeemedById] FOREIGN KEY([RedeemedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[GiftCertificateRedemptions] CHECK CONSTRAINT [FK_GiftCertificateRedemptions_AspNetUsers_RedeemedById] GO ALTER TABLE [dbo].[GiftCertificateRedemptions] WITH CHECK ADD CONSTRAINT [FK_GiftCertificateRedemptions_GiftCertificates_GiftCertificateId] FOREIGN KEY([GiftCertificateId]) REFERENCES [dbo].[GiftCertificates] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[GiftCertificateRedemptions] CHECK CONSTRAINT [FK_GiftCertificateRedemptions_GiftCertificates_GiftCertificateId] GO ALTER TABLE [dbo].[GiftCertificateRedemptions] WITH CHECK ADD CONSTRAINT [FK_GiftCertificateRedemptions_Invoices_InvoiceId] FOREIGN KEY([InvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[GiftCertificateRedemptions] CHECK CONSTRAINT [FK_GiftCertificateRedemptions_Invoices_InvoiceId] GO ALTER TABLE [dbo].[GiftCertificates] WITH CHECK ADD CONSTRAINT [FK_GiftCertificates_AspNetUsers_IssuedById] FOREIGN KEY([IssuedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[GiftCertificates] CHECK CONSTRAINT [FK_GiftCertificates_AspNetUsers_IssuedById] GO ALTER TABLE [dbo].[GiftCertificates] WITH CHECK ADD CONSTRAINT [FK_GiftCertificates_Customers_PurchasingCustomerId] FOREIGN KEY([PurchasingCustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[GiftCertificates] CHECK CONSTRAINT [FK_GiftCertificates_Customers_PurchasingCustomerId] GO ALTER TABLE [dbo].[GiftCertificates] WITH CHECK ADD CONSTRAINT [FK_GiftCertificates_Customers_RecipientCustomerId] FOREIGN KEY([RecipientCustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[GiftCertificates] CHECK CONSTRAINT [FK_GiftCertificates_Customers_RecipientCustomerId] GO ALTER TABLE [dbo].[InAppNotifications] WITH CHECK ADD CONSTRAINT [FK_InAppNotifications_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[InAppNotifications] CHECK CONSTRAINT [FK_InAppNotifications_Customers_CustomerId] GO ALTER TABLE [dbo].[InAppNotifications] WITH CHECK ADD CONSTRAINT [FK_InAppNotifications_Invoices_InvoiceId] FOREIGN KEY([InvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) GO ALTER TABLE [dbo].[InAppNotifications] CHECK CONSTRAINT [FK_InAppNotifications_Invoices_InvoiceId] GO ALTER TABLE [dbo].[InAppNotifications] WITH CHECK ADD CONSTRAINT [FK_InAppNotifications_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) GO ALTER TABLE [dbo].[InAppNotifications] CHECK CONSTRAINT [FK_InAppNotifications_Quotes_QuoteId] GO ALTER TABLE [dbo].[InventoryCategoryLookups] WITH CHECK ADD CONSTRAINT [FK_InventoryCategoryLookups_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[InventoryCategoryLookups] CHECK CONSTRAINT [FK_InventoryCategoryLookups_Companies_CompanyId] GO ALTER TABLE [dbo].[InventoryItems] WITH CHECK ADD CONSTRAINT [FK_InventoryItems_Accounts_CogsAccountId] FOREIGN KEY([CogsAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[InventoryItems] CHECK CONSTRAINT [FK_InventoryItems_Accounts_CogsAccountId] GO ALTER TABLE [dbo].[InventoryItems] WITH CHECK ADD CONSTRAINT [FK_InventoryItems_Accounts_InventoryAccountId] FOREIGN KEY([InventoryAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[InventoryItems] CHECK CONSTRAINT [FK_InventoryItems_Accounts_InventoryAccountId] GO ALTER TABLE [dbo].[InventoryItems] WITH CHECK ADD CONSTRAINT [FK_InventoryItems_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[InventoryItems] CHECK CONSTRAINT [FK_InventoryItems_Companies_CompanyId] GO ALTER TABLE [dbo].[InventoryItems] WITH CHECK ADD CONSTRAINT [FK_InventoryItems_InventoryCategoryLookups_InventoryCategoryId] FOREIGN KEY([InventoryCategoryId]) REFERENCES [dbo].[InventoryCategoryLookups] ([Id]) GO ALTER TABLE [dbo].[InventoryItems] CHECK CONSTRAINT [FK_InventoryItems_InventoryCategoryLookups_InventoryCategoryId] GO ALTER TABLE [dbo].[InventoryItems] WITH CHECK ADD CONSTRAINT [FK_InventoryItems_Vendors_PrimaryVendorId] FOREIGN KEY([PrimaryVendorId]) REFERENCES [dbo].[Vendors] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[InventoryItems] CHECK CONSTRAINT [FK_InventoryItems_Vendors_PrimaryVendorId] GO ALTER TABLE [dbo].[InventoryTransactions] WITH CHECK ADD CONSTRAINT [FK_InventoryTransactions_InventoryItems_InventoryItemId] FOREIGN KEY([InventoryItemId]) REFERENCES [dbo].[InventoryItems] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[InventoryTransactions] CHECK CONSTRAINT [FK_InventoryTransactions_InventoryItems_InventoryItemId] GO ALTER TABLE [dbo].[InventoryTransactions] WITH CHECK ADD CONSTRAINT [FK_InventoryTransactions_PurchaseOrders_PurchaseOrderId] FOREIGN KEY([PurchaseOrderId]) REFERENCES [dbo].[PurchaseOrders] ([Id]) GO ALTER TABLE [dbo].[InventoryTransactions] CHECK CONSTRAINT [FK_InventoryTransactions_PurchaseOrders_PurchaseOrderId] GO ALTER TABLE [dbo].[InvoiceItems] WITH CHECK ADD CONSTRAINT [FK_InvoiceItems_Accounts_RevenueAccountId] FOREIGN KEY([RevenueAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[InvoiceItems] CHECK CONSTRAINT [FK_InvoiceItems_Accounts_RevenueAccountId] GO ALTER TABLE [dbo].[InvoiceItems] WITH CHECK ADD CONSTRAINT [FK_InvoiceItems_CatalogItems_CatalogItemId] FOREIGN KEY([CatalogItemId]) REFERENCES [dbo].[CatalogItems] ([Id]) GO ALTER TABLE [dbo].[InvoiceItems] CHECK CONSTRAINT [FK_InvoiceItems_CatalogItems_CatalogItemId] GO ALTER TABLE [dbo].[InvoiceItems] WITH CHECK ADD CONSTRAINT [FK_InvoiceItems_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[InvoiceItems] CHECK CONSTRAINT [FK_InvoiceItems_Companies_CompanyId] GO ALTER TABLE [dbo].[InvoiceItems] WITH CHECK ADD CONSTRAINT [FK_InvoiceItems_GiftCertificates_GeneratedGiftCertificateId] FOREIGN KEY([GeneratedGiftCertificateId]) REFERENCES [dbo].[GiftCertificates] ([Id]) GO ALTER TABLE [dbo].[InvoiceItems] CHECK CONSTRAINT [FK_InvoiceItems_GiftCertificates_GeneratedGiftCertificateId] GO ALTER TABLE [dbo].[InvoiceItems] WITH CHECK ADD CONSTRAINT [FK_InvoiceItems_Invoices_InvoiceId] FOREIGN KEY([InvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[InvoiceItems] CHECK CONSTRAINT [FK_InvoiceItems_Invoices_InvoiceId] GO ALTER TABLE [dbo].[InvoiceItems] WITH CHECK ADD CONSTRAINT [FK_InvoiceItems_JobItems_SourceJobItemId] FOREIGN KEY([SourceJobItemId]) REFERENCES [dbo].[JobItems] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[InvoiceItems] CHECK CONSTRAINT [FK_InvoiceItems_JobItems_SourceJobItemId] GO ALTER TABLE [dbo].[Invoices] WITH CHECK ADD CONSTRAINT [FK_Invoices_Accounts_SalesTaxAccountId] FOREIGN KEY([SalesTaxAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[Invoices] CHECK CONSTRAINT [FK_Invoices_Accounts_SalesTaxAccountId] GO ALTER TABLE [dbo].[Invoices] WITH CHECK ADD CONSTRAINT [FK_Invoices_AspNetUsers_PreparedById] FOREIGN KEY([PreparedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Invoices] CHECK CONSTRAINT [FK_Invoices_AspNetUsers_PreparedById] GO ALTER TABLE [dbo].[Invoices] WITH CHECK ADD CONSTRAINT [FK_Invoices_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[Invoices] CHECK CONSTRAINT [FK_Invoices_Companies_CompanyId] GO ALTER TABLE [dbo].[Invoices] WITH CHECK ADD CONSTRAINT [FK_Invoices_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[Invoices] CHECK CONSTRAINT [FK_Invoices_Customers_CustomerId] GO ALTER TABLE [dbo].[Invoices] WITH CHECK ADD CONSTRAINT [FK_Invoices_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[Invoices] CHECK CONSTRAINT [FK_Invoices_Jobs_JobId] GO ALTER TABLE [dbo].[JobChangeHistories] WITH CHECK ADD CONSTRAINT [FK_JobChangeHistories_AspNetUsers_ChangedByUserId] FOREIGN KEY([ChangedByUserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[JobChangeHistories] CHECK CONSTRAINT [FK_JobChangeHistories_AspNetUsers_ChangedByUserId] GO ALTER TABLE [dbo].[JobChangeHistories] WITH CHECK ADD CONSTRAINT [FK_JobChangeHistories_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[JobChangeHistories] CHECK CONSTRAINT [FK_JobChangeHistories_Companies_CompanyId] GO ALTER TABLE [dbo].[JobChangeHistories] WITH CHECK ADD CONSTRAINT [FK_JobChangeHistories_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobChangeHistories] CHECK CONSTRAINT [FK_JobChangeHistories_Jobs_JobId] GO ALTER TABLE [dbo].[JobDailyPriorities] WITH CHECK ADD CONSTRAINT [FK_JobDailyPriorities_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobDailyPriorities] CHECK CONSTRAINT [FK_JobDailyPriorities_Jobs_JobId] GO ALTER TABLE [dbo].[JobItemCoats] WITH CHECK ADD CONSTRAINT [FK_JobItemCoats_InventoryItems_InventoryItemId] FOREIGN KEY([InventoryItemId]) REFERENCES [dbo].[InventoryItems] ([Id]) GO ALTER TABLE [dbo].[JobItemCoats] CHECK CONSTRAINT [FK_JobItemCoats_InventoryItems_InventoryItemId] GO ALTER TABLE [dbo].[JobItemCoats] WITH CHECK ADD CONSTRAINT [FK_JobItemCoats_JobItems_JobItemId] FOREIGN KEY([JobItemId]) REFERENCES [dbo].[JobItems] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobItemCoats] CHECK CONSTRAINT [FK_JobItemCoats_JobItems_JobItemId] GO ALTER TABLE [dbo].[JobItemCoats] WITH CHECK ADD CONSTRAINT [FK_JobItemCoats_Vendors_VendorId] FOREIGN KEY([VendorId]) REFERENCES [dbo].[Vendors] ([Id]) GO ALTER TABLE [dbo].[JobItemCoats] CHECK CONSTRAINT [FK_JobItemCoats_Vendors_VendorId] GO ALTER TABLE [dbo].[JobItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_JobItemPrepServices_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[JobItemPrepServices] CHECK CONSTRAINT [FK_JobItemPrepServices_Companies_CompanyId] GO ALTER TABLE [dbo].[JobItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_JobItemPrepServices_JobItems_JobItemId] FOREIGN KEY([JobItemId]) REFERENCES [dbo].[JobItems] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobItemPrepServices] CHECK CONSTRAINT [FK_JobItemPrepServices_JobItems_JobItemId] GO ALTER TABLE [dbo].[JobItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_JobItemPrepServices_PrepServices_PrepServiceId] FOREIGN KEY([PrepServiceId]) REFERENCES [dbo].[PrepServices] ([Id]) GO ALTER TABLE [dbo].[JobItemPrepServices] CHECK CONSTRAINT [FK_JobItemPrepServices_PrepServices_PrepServiceId] GO ALTER TABLE [dbo].[JobItems] WITH CHECK ADD CONSTRAINT [FK_JobItems_AiItemPredictions_AiPredictionId] FOREIGN KEY([AiPredictionId]) REFERENCES [dbo].[AiItemPredictions] ([Id]) GO ALTER TABLE [dbo].[JobItems] CHECK CONSTRAINT [FK_JobItems_AiItemPredictions_AiPredictionId] GO ALTER TABLE [dbo].[JobItems] WITH CHECK ADD CONSTRAINT [FK_JobItems_CatalogItems_CatalogItemId] FOREIGN KEY([CatalogItemId]) REFERENCES [dbo].[CatalogItems] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[JobItems] CHECK CONSTRAINT [FK_JobItems_CatalogItems_CatalogItemId] GO ALTER TABLE [dbo].[JobItems] WITH CHECK ADD CONSTRAINT [FK_JobItems_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobItems] CHECK CONSTRAINT [FK_JobItems_Jobs_JobId] GO ALTER TABLE [dbo].[JobNotes] WITH CHECK ADD CONSTRAINT [FK_JobNotes_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobNotes] CHECK CONSTRAINT [FK_JobNotes_Jobs_JobId] GO ALTER TABLE [dbo].[JobPhotos] WITH CHECK ADD CONSTRAINT [FK_JobPhotos_AspNetUsers_UploadedById] FOREIGN KEY([UploadedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobPhotos] CHECK CONSTRAINT [FK_JobPhotos_AspNetUsers_UploadedById] GO ALTER TABLE [dbo].[JobPhotos] WITH CHECK ADD CONSTRAINT [FK_JobPhotos_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobPhotos] CHECK CONSTRAINT [FK_JobPhotos_Jobs_JobId] GO ALTER TABLE [dbo].[JobPrepServices] WITH CHECK ADD CONSTRAINT [FK_JobPrepServices_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobPrepServices] CHECK CONSTRAINT [FK_JobPrepServices_Jobs_JobId] GO ALTER TABLE [dbo].[JobPrepServices] WITH CHECK ADD CONSTRAINT [FK_JobPrepServices_PrepServices_PrepServiceId] FOREIGN KEY([PrepServiceId]) REFERENCES [dbo].[PrepServices] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobPrepServices] CHECK CONSTRAINT [FK_JobPrepServices_PrepServices_PrepServiceId] GO ALTER TABLE [dbo].[JobPriorityLookups] WITH CHECK ADD CONSTRAINT [FK_JobPriorityLookups_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[JobPriorityLookups] CHECK CONSTRAINT [FK_JobPriorityLookups_Companies_CompanyId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_AspNetUsers_AssignedUserId] FOREIGN KEY([AssignedUserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_AspNetUsers_AssignedUserId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_AspNetUsers_IntakeCheckedByUserId] FOREIGN KEY([IntakeCheckedByUserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_AspNetUsers_IntakeCheckedByUserId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_Companies_CompanyId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_Customers_CustomerId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_JobPriorityLookups_JobPriorityId] FOREIGN KEY([JobPriorityId]) REFERENCES [dbo].[JobPriorityLookups] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_JobPriorityLookups_JobPriorityId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_Jobs_OriginalJobId] FOREIGN KEY([OriginalJobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_Jobs_OriginalJobId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_JobStatusLookups_JobStatusId] FOREIGN KEY([JobStatusId]) REFERENCES [dbo].[JobStatusLookups] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_JobStatusLookups_JobStatusId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_OvenCosts_OvenCostId] FOREIGN KEY([OvenCostId]) REFERENCES [dbo].[OvenCosts] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_OvenCosts_OvenCostId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_Quotes_QuoteId] GO ALTER TABLE [dbo].[Jobs] WITH CHECK ADD CONSTRAINT [FK_Jobs_ShopWorkers_ShopWorkerId] FOREIGN KEY([ShopWorkerId]) REFERENCES [dbo].[ShopWorkers] ([Id]) GO ALTER TABLE [dbo].[Jobs] CHECK CONSTRAINT [FK_Jobs_ShopWorkers_ShopWorkerId] GO ALTER TABLE [dbo].[JobStatusHistory] WITH CHECK ADD CONSTRAINT [FK_JobStatusHistory_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobStatusHistory] CHECK CONSTRAINT [FK_JobStatusHistory_Jobs_JobId] GO ALTER TABLE [dbo].[JobStatusHistory] WITH CHECK ADD CONSTRAINT [FK_JobStatusHistory_JobStatusLookups_FromStatusId] FOREIGN KEY([FromStatusId]) REFERENCES [dbo].[JobStatusLookups] ([Id]) GO ALTER TABLE [dbo].[JobStatusHistory] CHECK CONSTRAINT [FK_JobStatusHistory_JobStatusLookups_FromStatusId] GO ALTER TABLE [dbo].[JobStatusHistory] WITH CHECK ADD CONSTRAINT [FK_JobStatusHistory_JobStatusLookups_ToStatusId] FOREIGN KEY([ToStatusId]) REFERENCES [dbo].[JobStatusLookups] ([Id]) GO ALTER TABLE [dbo].[JobStatusHistory] CHECK CONSTRAINT [FK_JobStatusHistory_JobStatusLookups_ToStatusId] GO ALTER TABLE [dbo].[JobStatusLookups] WITH CHECK ADD CONSTRAINT [FK_JobStatusLookups_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[JobStatusLookups] CHECK CONSTRAINT [FK_JobStatusLookups_Companies_CompanyId] GO ALTER TABLE [dbo].[JobTemplateItemCoats] WITH CHECK ADD CONSTRAINT [FK_JobTemplateItemCoats_InventoryItems_InventoryItemId] FOREIGN KEY([InventoryItemId]) REFERENCES [dbo].[InventoryItems] ([Id]) GO ALTER TABLE [dbo].[JobTemplateItemCoats] CHECK CONSTRAINT [FK_JobTemplateItemCoats_InventoryItems_InventoryItemId] GO ALTER TABLE [dbo].[JobTemplateItemCoats] WITH CHECK ADD CONSTRAINT [FK_JobTemplateItemCoats_JobTemplateItems_JobTemplateItemId] FOREIGN KEY([JobTemplateItemId]) REFERENCES [dbo].[JobTemplateItems] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobTemplateItemCoats] CHECK CONSTRAINT [FK_JobTemplateItemCoats_JobTemplateItems_JobTemplateItemId] GO ALTER TABLE [dbo].[JobTemplateItemCoats] WITH CHECK ADD CONSTRAINT [FK_JobTemplateItemCoats_Vendors_VendorId] FOREIGN KEY([VendorId]) REFERENCES [dbo].[Vendors] ([Id]) GO ALTER TABLE [dbo].[JobTemplateItemCoats] CHECK CONSTRAINT [FK_JobTemplateItemCoats_Vendors_VendorId] GO ALTER TABLE [dbo].[JobTemplateItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_JobTemplateItemPrepServices_JobTemplateItems_JobTemplateItemId] FOREIGN KEY([JobTemplateItemId]) REFERENCES [dbo].[JobTemplateItems] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobTemplateItemPrepServices] CHECK CONSTRAINT [FK_JobTemplateItemPrepServices_JobTemplateItems_JobTemplateItemId] GO ALTER TABLE [dbo].[JobTemplateItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_JobTemplateItemPrepServices_PrepServices_PrepServiceId] FOREIGN KEY([PrepServiceId]) REFERENCES [dbo].[PrepServices] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobTemplateItemPrepServices] CHECK CONSTRAINT [FK_JobTemplateItemPrepServices_PrepServices_PrepServiceId] GO ALTER TABLE [dbo].[JobTemplateItems] WITH CHECK ADD CONSTRAINT [FK_JobTemplateItems_CatalogItems_CatalogItemId] FOREIGN KEY([CatalogItemId]) REFERENCES [dbo].[CatalogItems] ([Id]) GO ALTER TABLE [dbo].[JobTemplateItems] CHECK CONSTRAINT [FK_JobTemplateItems_CatalogItems_CatalogItemId] GO ALTER TABLE [dbo].[JobTemplateItems] WITH CHECK ADD CONSTRAINT [FK_JobTemplateItems_JobTemplates_JobTemplateId] FOREIGN KEY([JobTemplateId]) REFERENCES [dbo].[JobTemplates] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobTemplateItems] CHECK CONSTRAINT [FK_JobTemplateItems_JobTemplates_JobTemplateId] GO ALTER TABLE [dbo].[JobTemplates] WITH CHECK ADD CONSTRAINT [FK_JobTemplates_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[JobTemplates] CHECK CONSTRAINT [FK_JobTemplates_Customers_CustomerId] GO ALTER TABLE [dbo].[JobTimeEntries] WITH CHECK ADD CONSTRAINT [FK_JobTimeEntries_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobTimeEntries] CHECK CONSTRAINT [FK_JobTimeEntries_Jobs_JobId] GO ALTER TABLE [dbo].[JobTimeEntries] WITH CHECK ADD CONSTRAINT [FK_JobTimeEntries_ShopWorkers_ShopWorkerId] FOREIGN KEY([ShopWorkerId]) REFERENCES [dbo].[ShopWorkers] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[JobTimeEntries] CHECK CONSTRAINT [FK_JobTimeEntries_ShopWorkers_ShopWorkerId] GO ALTER TABLE [dbo].[MaintenanceRecords] WITH CHECK ADD CONSTRAINT [FK_MaintenanceRecords_AspNetUsers_AssignedUserId] FOREIGN KEY([AssignedUserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[MaintenanceRecords] CHECK CONSTRAINT [FK_MaintenanceRecords_AspNetUsers_AssignedUserId] GO ALTER TABLE [dbo].[MaintenanceRecords] WITH CHECK ADD CONSTRAINT [FK_MaintenanceRecords_AspNetUsers_PerformedById] FOREIGN KEY([PerformedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[MaintenanceRecords] CHECK CONSTRAINT [FK_MaintenanceRecords_AspNetUsers_PerformedById] GO ALTER TABLE [dbo].[MaintenanceRecords] WITH CHECK ADD CONSTRAINT [FK_MaintenanceRecords_Equipment_EquipmentId] FOREIGN KEY([EquipmentId]) REFERENCES [dbo].[Equipment] ([Id]) GO ALTER TABLE [dbo].[MaintenanceRecords] CHECK CONSTRAINT [FK_MaintenanceRecords_Equipment_EquipmentId] GO ALTER TABLE [dbo].[MaintenanceRecords] WITH CHECK ADD CONSTRAINT [FK_MaintenanceRecords_MaintenanceRecords_RecurrenceParentId] FOREIGN KEY([RecurrenceParentId]) REFERENCES [dbo].[MaintenanceRecords] ([Id]) GO ALTER TABLE [dbo].[MaintenanceRecords] CHECK CONSTRAINT [FK_MaintenanceRecords_MaintenanceRecords_RecurrenceParentId] GO ALTER TABLE [dbo].[MaintenanceRecords] WITH CHECK ADD CONSTRAINT [FK_MaintenanceRecords_ShopWorkers_ShopWorkerId] FOREIGN KEY([ShopWorkerId]) REFERENCES [dbo].[ShopWorkers] ([Id]) GO ALTER TABLE [dbo].[MaintenanceRecords] CHECK CONSTRAINT [FK_MaintenanceRecords_ShopWorkers_ShopWorkerId] GO ALTER TABLE [dbo].[NotificationLogs] WITH CHECK ADD CONSTRAINT [FK_NotificationLogs_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[NotificationLogs] CHECK CONSTRAINT [FK_NotificationLogs_Companies_CompanyId] GO ALTER TABLE [dbo].[NotificationLogs] WITH CHECK ADD CONSTRAINT [FK_NotificationLogs_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[NotificationLogs] CHECK CONSTRAINT [FK_NotificationLogs_Customers_CustomerId] GO ALTER TABLE [dbo].[NotificationLogs] WITH CHECK ADD CONSTRAINT [FK_NotificationLogs_Invoices_InvoiceId] FOREIGN KEY([InvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[NotificationLogs] CHECK CONSTRAINT [FK_NotificationLogs_Invoices_InvoiceId] GO ALTER TABLE [dbo].[NotificationLogs] WITH CHECK ADD CONSTRAINT [FK_NotificationLogs_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[NotificationLogs] CHECK CONSTRAINT [FK_NotificationLogs_Jobs_JobId] GO ALTER TABLE [dbo].[NotificationLogs] WITH CHECK ADD CONSTRAINT [FK_NotificationLogs_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[NotificationLogs] CHECK CONSTRAINT [FK_NotificationLogs_Quotes_QuoteId] GO ALTER TABLE [dbo].[NotificationTemplates] WITH CHECK ADD CONSTRAINT [FK_NotificationTemplates_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[NotificationTemplates] CHECK CONSTRAINT [FK_NotificationTemplates_Companies_CompanyId] GO ALTER TABLE [dbo].[OvenBatches] WITH CHECK ADD CONSTRAINT [FK_OvenBatches_Equipment_EquipmentId] FOREIGN KEY([EquipmentId]) REFERENCES [dbo].[Equipment] ([Id]) GO ALTER TABLE [dbo].[OvenBatches] CHECK CONSTRAINT [FK_OvenBatches_Equipment_EquipmentId] GO ALTER TABLE [dbo].[OvenBatches] WITH CHECK ADD CONSTRAINT [FK_OvenBatches_OvenCosts_OvenCostId] FOREIGN KEY([OvenCostId]) REFERENCES [dbo].[OvenCosts] ([Id]) GO ALTER TABLE [dbo].[OvenBatches] CHECK CONSTRAINT [FK_OvenBatches_OvenCosts_OvenCostId] GO ALTER TABLE [dbo].[OvenBatchItems] WITH CHECK ADD CONSTRAINT [FK_OvenBatchItems_JobItemCoats_JobItemCoatId] FOREIGN KEY([JobItemCoatId]) REFERENCES [dbo].[JobItemCoats] ([Id]) GO ALTER TABLE [dbo].[OvenBatchItems] CHECK CONSTRAINT [FK_OvenBatchItems_JobItemCoats_JobItemCoatId] GO ALTER TABLE [dbo].[OvenBatchItems] WITH CHECK ADD CONSTRAINT [FK_OvenBatchItems_JobItems_JobItemId] FOREIGN KEY([JobItemId]) REFERENCES [dbo].[JobItems] ([Id]) GO ALTER TABLE [dbo].[OvenBatchItems] CHECK CONSTRAINT [FK_OvenBatchItems_JobItems_JobItemId] GO ALTER TABLE [dbo].[OvenBatchItems] WITH CHECK ADD CONSTRAINT [FK_OvenBatchItems_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[OvenBatchItems] CHECK CONSTRAINT [FK_OvenBatchItems_Jobs_JobId] GO ALTER TABLE [dbo].[OvenBatchItems] WITH CHECK ADD CONSTRAINT [FK_OvenBatchItems_OvenBatches_OvenBatchId] FOREIGN KEY([OvenBatchId]) REFERENCES [dbo].[OvenBatches] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[OvenBatchItems] CHECK CONSTRAINT [FK_OvenBatchItems_OvenBatches_OvenBatchId] GO ALTER TABLE [dbo].[OvenCosts] WITH CHECK ADD CONSTRAINT [FK_OvenCosts_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[OvenCosts] CHECK CONSTRAINT [FK_OvenCosts_Companies_CompanyId] GO ALTER TABLE [dbo].[Payments] WITH CHECK ADD CONSTRAINT [FK_Payments_Accounts_DepositAccountId] FOREIGN KEY([DepositAccountId]) REFERENCES [dbo].[Accounts] ([Id]) GO ALTER TABLE [dbo].[Payments] CHECK CONSTRAINT [FK_Payments_Accounts_DepositAccountId] GO ALTER TABLE [dbo].[Payments] WITH CHECK ADD CONSTRAINT [FK_Payments_AspNetUsers_RecordedById] FOREIGN KEY([RecordedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Payments] CHECK CONSTRAINT [FK_Payments_AspNetUsers_RecordedById] GO ALTER TABLE [dbo].[Payments] WITH CHECK ADD CONSTRAINT [FK_Payments_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[Payments] CHECK CONSTRAINT [FK_Payments_Companies_CompanyId] GO ALTER TABLE [dbo].[Payments] WITH CHECK ADD CONSTRAINT [FK_Payments_Invoices_InvoiceId] FOREIGN KEY([InvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) GO ALTER TABLE [dbo].[Payments] CHECK CONSTRAINT [FK_Payments_Invoices_InvoiceId] GO ALTER TABLE [dbo].[PowderUsageLogs] WITH CHECK ADD CONSTRAINT [FK_PowderUsageLogs_InventoryItems_InventoryItemId] FOREIGN KEY([InventoryItemId]) REFERENCES [dbo].[InventoryItems] ([Id]) GO ALTER TABLE [dbo].[PowderUsageLogs] CHECK CONSTRAINT [FK_PowderUsageLogs_InventoryItems_InventoryItemId] GO ALTER TABLE [dbo].[PowderUsageLogs] WITH CHECK ADD CONSTRAINT [FK_PowderUsageLogs_InventoryTransactions_InventoryTransactionId] FOREIGN KEY([InventoryTransactionId]) REFERENCES [dbo].[InventoryTransactions] ([Id]) GO ALTER TABLE [dbo].[PowderUsageLogs] CHECK CONSTRAINT [FK_PowderUsageLogs_InventoryTransactions_InventoryTransactionId] GO ALTER TABLE [dbo].[PowderUsageLogs] WITH CHECK ADD CONSTRAINT [FK_PowderUsageLogs_JobItemCoats_JobItemCoatId] FOREIGN KEY([JobItemCoatId]) REFERENCES [dbo].[JobItemCoats] ([Id]) GO ALTER TABLE [dbo].[PowderUsageLogs] CHECK CONSTRAINT [FK_PowderUsageLogs_JobItemCoats_JobItemCoatId] GO ALTER TABLE [dbo].[PowderUsageLogs] WITH CHECK ADD CONSTRAINT [FK_PowderUsageLogs_JobItems_JobItemId] FOREIGN KEY([JobItemId]) REFERENCES [dbo].[JobItems] ([Id]) GO ALTER TABLE [dbo].[PowderUsageLogs] CHECK CONSTRAINT [FK_PowderUsageLogs_JobItems_JobItemId] GO ALTER TABLE [dbo].[PowderUsageLogs] WITH CHECK ADD CONSTRAINT [FK_PowderUsageLogs_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[PowderUsageLogs] CHECK CONSTRAINT [FK_PowderUsageLogs_Jobs_JobId] GO ALTER TABLE [dbo].[PricingTiers] WITH CHECK ADD CONSTRAINT [FK_PricingTiers_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[PricingTiers] CHECK CONSTRAINT [FK_PricingTiers_Companies_CompanyId] GO ALTER TABLE [dbo].[PurchaseOrderItems] WITH CHECK ADD CONSTRAINT [FK_PurchaseOrderItems_InventoryItems_InventoryItemId] FOREIGN KEY([InventoryItemId]) REFERENCES [dbo].[InventoryItems] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[PurchaseOrderItems] CHECK CONSTRAINT [FK_PurchaseOrderItems_InventoryItems_InventoryItemId] GO ALTER TABLE [dbo].[PurchaseOrderItems] WITH CHECK ADD CONSTRAINT [FK_PurchaseOrderItems_PurchaseOrders_PurchaseOrderId] FOREIGN KEY([PurchaseOrderId]) REFERENCES [dbo].[PurchaseOrders] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[PurchaseOrderItems] CHECK CONSTRAINT [FK_PurchaseOrderItems_PurchaseOrders_PurchaseOrderId] GO ALTER TABLE [dbo].[PurchaseOrders] WITH CHECK ADD CONSTRAINT [FK_PurchaseOrders_Bills_BillId] FOREIGN KEY([BillId]) REFERENCES [dbo].[Bills] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[PurchaseOrders] CHECK CONSTRAINT [FK_PurchaseOrders_Bills_BillId] GO ALTER TABLE [dbo].[PurchaseOrders] WITH CHECK ADD CONSTRAINT [FK_PurchaseOrders_Vendors_VendorId] FOREIGN KEY([VendorId]) REFERENCES [dbo].[Vendors] ([Id]) GO ALTER TABLE [dbo].[PurchaseOrders] CHECK CONSTRAINT [FK_PurchaseOrders_Vendors_VendorId] GO ALTER TABLE [dbo].[QuoteChangeHistories] WITH CHECK ADD CONSTRAINT [FK_QuoteChangeHistories_AspNetUsers_ChangedByUserId] FOREIGN KEY([ChangedByUserId]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[QuoteChangeHistories] CHECK CONSTRAINT [FK_QuoteChangeHistories_AspNetUsers_ChangedByUserId] GO ALTER TABLE [dbo].[QuoteChangeHistories] WITH CHECK ADD CONSTRAINT [FK_QuoteChangeHistories_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[QuoteChangeHistories] CHECK CONSTRAINT [FK_QuoteChangeHistories_Companies_CompanyId] GO ALTER TABLE [dbo].[QuoteChangeHistories] WITH CHECK ADD CONSTRAINT [FK_QuoteChangeHistories_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[QuoteChangeHistories] CHECK CONSTRAINT [FK_QuoteChangeHistories_Quotes_QuoteId] GO ALTER TABLE [dbo].[QuoteItemCoats] WITH CHECK ADD CONSTRAINT [FK_QuoteItemCoats_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[QuoteItemCoats] CHECK CONSTRAINT [FK_QuoteItemCoats_Companies_CompanyId] GO ALTER TABLE [dbo].[QuoteItemCoats] WITH CHECK ADD CONSTRAINT [FK_QuoteItemCoats_InventoryItems_InventoryItemId] FOREIGN KEY([InventoryItemId]) REFERENCES [dbo].[InventoryItems] ([Id]) GO ALTER TABLE [dbo].[QuoteItemCoats] CHECK CONSTRAINT [FK_QuoteItemCoats_InventoryItems_InventoryItemId] GO ALTER TABLE [dbo].[QuoteItemCoats] WITH CHECK ADD CONSTRAINT [FK_QuoteItemCoats_QuoteItems_QuoteItemId] FOREIGN KEY([QuoteItemId]) REFERENCES [dbo].[QuoteItems] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[QuoteItemCoats] CHECK CONSTRAINT [FK_QuoteItemCoats_QuoteItems_QuoteItemId] GO ALTER TABLE [dbo].[QuoteItemCoats] WITH CHECK ADD CONSTRAINT [FK_QuoteItemCoats_Vendors_VendorId] FOREIGN KEY([VendorId]) REFERENCES [dbo].[Vendors] ([Id]) GO ALTER TABLE [dbo].[QuoteItemCoats] CHECK CONSTRAINT [FK_QuoteItemCoats_Vendors_VendorId] GO ALTER TABLE [dbo].[QuoteItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_QuoteItemPrepServices_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[QuoteItemPrepServices] CHECK CONSTRAINT [FK_QuoteItemPrepServices_Companies_CompanyId] GO ALTER TABLE [dbo].[QuoteItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_QuoteItemPrepServices_PrepServices_PrepServiceId] FOREIGN KEY([PrepServiceId]) REFERENCES [dbo].[PrepServices] ([Id]) GO ALTER TABLE [dbo].[QuoteItemPrepServices] CHECK CONSTRAINT [FK_QuoteItemPrepServices_PrepServices_PrepServiceId] GO ALTER TABLE [dbo].[QuoteItemPrepServices] WITH CHECK ADD CONSTRAINT [FK_QuoteItemPrepServices_QuoteItems_QuoteItemId] FOREIGN KEY([QuoteItemId]) REFERENCES [dbo].[QuoteItems] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[QuoteItemPrepServices] CHECK CONSTRAINT [FK_QuoteItemPrepServices_QuoteItems_QuoteItemId] GO ALTER TABLE [dbo].[QuoteItems] WITH CHECK ADD CONSTRAINT [FK_QuoteItems_AiItemPredictions_AiPredictionId] FOREIGN KEY([AiPredictionId]) REFERENCES [dbo].[AiItemPredictions] ([Id]) GO ALTER TABLE [dbo].[QuoteItems] CHECK CONSTRAINT [FK_QuoteItems_AiItemPredictions_AiPredictionId] GO ALTER TABLE [dbo].[QuoteItems] WITH CHECK ADD CONSTRAINT [FK_QuoteItems_CatalogItems_CatalogItemId] FOREIGN KEY([CatalogItemId]) REFERENCES [dbo].[CatalogItems] ([Id]) GO ALTER TABLE [dbo].[QuoteItems] CHECK CONSTRAINT [FK_QuoteItems_CatalogItems_CatalogItemId] GO ALTER TABLE [dbo].[QuoteItems] WITH CHECK ADD CONSTRAINT [FK_QuoteItems_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[QuoteItems] CHECK CONSTRAINT [FK_QuoteItems_Quotes_QuoteId] GO ALTER TABLE [dbo].[QuotePhotos] WITH CHECK ADD CONSTRAINT [FK_QuotePhotos_AspNetUsers_UploadedById] FOREIGN KEY([UploadedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[QuotePhotos] CHECK CONSTRAINT [FK_QuotePhotos_AspNetUsers_UploadedById] GO ALTER TABLE [dbo].[QuotePhotos] WITH CHECK ADD CONSTRAINT [FK_QuotePhotos_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) GO ALTER TABLE [dbo].[QuotePhotos] CHECK CONSTRAINT [FK_QuotePhotos_Quotes_QuoteId] GO ALTER TABLE [dbo].[QuotePrepServices] WITH CHECK ADD CONSTRAINT [FK_QuotePrepServices_PrepServices_PrepServiceId] FOREIGN KEY([PrepServiceId]) REFERENCES [dbo].[PrepServices] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[QuotePrepServices] CHECK CONSTRAINT [FK_QuotePrepServices_PrepServices_PrepServiceId] GO ALTER TABLE [dbo].[QuotePrepServices] WITH CHECK ADD CONSTRAINT [FK_QuotePrepServices_Quotes_QuoteId] FOREIGN KEY([QuoteId]) REFERENCES [dbo].[Quotes] ([Id]) ON DELETE CASCADE GO ALTER TABLE [dbo].[QuotePrepServices] CHECK CONSTRAINT [FK_QuotePrepServices_Quotes_QuoteId] GO ALTER TABLE [dbo].[Quotes] WITH CHECK ADD CONSTRAINT [FK_Quotes_AspNetUsers_PreparedById] FOREIGN KEY([PreparedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Quotes] CHECK CONSTRAINT [FK_Quotes_AspNetUsers_PreparedById] GO ALTER TABLE [dbo].[Quotes] WITH CHECK ADD CONSTRAINT [FK_Quotes_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[Quotes] CHECK CONSTRAINT [FK_Quotes_Companies_CompanyId] GO ALTER TABLE [dbo].[Quotes] WITH CHECK ADD CONSTRAINT [FK_Quotes_Customers_CustomerId] FOREIGN KEY([CustomerId]) REFERENCES [dbo].[Customers] ([Id]) GO ALTER TABLE [dbo].[Quotes] CHECK CONSTRAINT [FK_Quotes_Customers_CustomerId] GO ALTER TABLE [dbo].[Quotes] WITH CHECK ADD CONSTRAINT [FK_Quotes_OvenCosts_OvenCostId] FOREIGN KEY([OvenCostId]) REFERENCES [dbo].[OvenCosts] ([Id]) GO ALTER TABLE [dbo].[Quotes] CHECK CONSTRAINT [FK_Quotes_OvenCosts_OvenCostId] GO ALTER TABLE [dbo].[Quotes] WITH CHECK ADD CONSTRAINT [FK_Quotes_QuoteStatusLookups_QuoteStatusId] FOREIGN KEY([QuoteStatusId]) REFERENCES [dbo].[QuoteStatusLookups] ([Id]) GO ALTER TABLE [dbo].[Quotes] CHECK CONSTRAINT [FK_Quotes_QuoteStatusLookups_QuoteStatusId] GO ALTER TABLE [dbo].[QuoteStatusLookups] WITH CHECK ADD CONSTRAINT [FK_QuoteStatusLookups_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[QuoteStatusLookups] CHECK CONSTRAINT [FK_QuoteStatusLookups_Companies_CompanyId] GO ALTER TABLE [dbo].[Refunds] WITH CHECK ADD CONSTRAINT [FK_Refunds_AspNetUsers_IssuedById] FOREIGN KEY([IssuedById]) REFERENCES [dbo].[AspNetUsers] ([Id]) GO ALTER TABLE [dbo].[Refunds] CHECK CONSTRAINT [FK_Refunds_AspNetUsers_IssuedById] GO ALTER TABLE [dbo].[Refunds] WITH CHECK ADD CONSTRAINT [FK_Refunds_CreditMemos_CreditMemoId] FOREIGN KEY([CreditMemoId]) REFERENCES [dbo].[CreditMemos] ([Id]) GO ALTER TABLE [dbo].[Refunds] CHECK CONSTRAINT [FK_Refunds_CreditMemos_CreditMemoId] GO ALTER TABLE [dbo].[Refunds] WITH CHECK ADD CONSTRAINT [FK_Refunds_Invoices_InvoiceId] FOREIGN KEY([InvoiceId]) REFERENCES [dbo].[Invoices] ([Id]) GO ALTER TABLE [dbo].[Refunds] CHECK CONSTRAINT [FK_Refunds_Invoices_InvoiceId] GO ALTER TABLE [dbo].[Refunds] WITH CHECK ADD CONSTRAINT [FK_Refunds_Payments_PaymentId] FOREIGN KEY([PaymentId]) REFERENCES [dbo].[Payments] ([Id]) GO ALTER TABLE [dbo].[Refunds] CHECK CONSTRAINT [FK_Refunds_Payments_PaymentId] GO ALTER TABLE [dbo].[ReworkRecords] WITH CHECK ADD CONSTRAINT [FK_ReworkRecords_JobItems_JobItemId] FOREIGN KEY([JobItemId]) REFERENCES [dbo].[JobItems] ([Id]) GO ALTER TABLE [dbo].[ReworkRecords] CHECK CONSTRAINT [FK_ReworkRecords_JobItems_JobItemId] GO ALTER TABLE [dbo].[ReworkRecords] WITH CHECK ADD CONSTRAINT [FK_ReworkRecords_Jobs_JobId] FOREIGN KEY([JobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[ReworkRecords] CHECK CONSTRAINT [FK_ReworkRecords_Jobs_JobId] GO ALTER TABLE [dbo].[ReworkRecords] WITH CHECK ADD CONSTRAINT [FK_ReworkRecords_Jobs_ReworkJobId] FOREIGN KEY([ReworkJobId]) REFERENCES [dbo].[Jobs] ([Id]) GO ALTER TABLE [dbo].[ReworkRecords] CHECK CONSTRAINT [FK_ReworkRecords_Jobs_ReworkJobId] GO ALTER TABLE [dbo].[ShopWorkers] WITH CHECK ADD CONSTRAINT [FK_ShopWorkers_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[ShopWorkers] CHECK CONSTRAINT [FK_ShopWorkers_Companies_CompanyId] GO ALTER TABLE [dbo].[Vendors] WITH CHECK ADD CONSTRAINT [FK_Suppliers_Accounts_DefaultExpenseAccountId] FOREIGN KEY([DefaultExpenseAccountId]) REFERENCES [dbo].[Accounts] ([Id]) ON DELETE SET NULL GO ALTER TABLE [dbo].[Vendors] CHECK CONSTRAINT [FK_Suppliers_Accounts_DefaultExpenseAccountId] GO ALTER TABLE [dbo].[Vendors] WITH CHECK ADD CONSTRAINT [FK_Suppliers_Companies_CompanyId] FOREIGN KEY([CompanyId]) REFERENCES [dbo].[Companies] ([Id]) GO ALTER TABLE [dbo].[Vendors] CHECK CONSTRAINT [FK_Suppliers_Companies_CompanyId] GO