Files
PowderCoatingLogix/scripts/Create_Initial_Database04112026.sql
2026-04-23 21:38:24 -04:00

4134 lines
323 KiB
Transact-SQL

/****** 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