2bf8871892
- Appointment reminders: add AppointmentReminderBackgroundService (60s poll), ReminderSentAt dedup stamp, NotifyAppointmentReminderAsync sends both customer email and creator staff email; AppointmentReminderStaff notification type + default template added; DateTime.Now used instead of UtcNow to match locally-stored ScheduledStartTime; ToLocalTime() double-conversion removed - NoExtraLayerCharge not persisted: flag existed on CreateQuoteItemCoatDto and was used by pricing engine but never written to JobItemCoat/QuoteItemCoat entities — every edit reset it to false and re-applied the extra layer charge; added column to both entities (migration AddNoExtraLayerChargeToCoats), both read DTOs, all 3 JobItemAssemblyService overloads, JobItemCoatSeed inner class, and existingItemsData JSON in all 5 wizard views; fixed JS template path that hard-coded noExtraLayerCharge: false - Coat notes not visible: notes were rendered in desktop job details but missing from the wizard item card summary and the mobile card view; both fixed - Scroll position lost on item save: sessionStorage save/restore added to item-wizard.js owner form submit handler; path-keyed so cross-page navigation does not restore stale position; requestAnimationFrame used for reliable mobile scroll restoration - Invoice Send dead button: #sendChannelModal was gated inside @if (isDraft) but the button targeting it fires for Sent/Overdue invoices too when customer has both email and SMS; modal moved outside the Draft guard - InitialCreate migration added for fresh database installs; Baseline migration guarded with IF OBJECT_ID check so it no-ops on fresh DBs; Razor scoping bug fixed in Customers/Index.cshtml Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
6498 lines
366 KiB
C#
6498 lines
366 KiB
C#
using System;
|
|
using Microsoft.EntityFrameworkCore.Migrations;
|
|
|
|
#nullable disable
|
|
|
|
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
|
|
|
namespace PowderCoating.Infrastructure.Migrations
|
|
{
|
|
/// <inheritdoc />
|
|
public partial class InitialCreate : Migration
|
|
{
|
|
/// <inheritdoc />
|
|
protected override void Up(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.CreateTable(
|
|
name: "Accounts",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
AccountNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
AccountType = table.Column<int>(type: "int", nullable: false),
|
|
AccountSubType = table.Column<int>(type: "int", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ParentAccountId = table.Column<int>(type: "int", nullable: true),
|
|
IsSystem = table.Column<bool>(type: "bit", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
OpeningBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OpeningBalanceDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CurrentBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Accounts", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Accounts_Accounts_ParentAccountId",
|
|
column: x => x.ParentAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AiItemPredictions",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
PredictedSurfaceAreaSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PredictedMinutes = table.Column<int>(type: "int", nullable: false),
|
|
PredictedComplexity = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
PredictedUnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Confidence = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Reasoning = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AiTags = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ConversationRounds = table.Column<int>(type: "int", nullable: false),
|
|
UserOverrodeEstimate = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AiItemPredictions", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Announcements",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Title = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Message = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Type = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Target = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
TargetPlan = table.Column<int>(type: "int", nullable: true),
|
|
TargetCompanyId = table.Column<int>(type: "int", nullable: true),
|
|
StartsAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
IsDismissible = table.Column<bool>(type: "bit", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
CreatedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CreatedByUserName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Announcements", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AppointmentStatusLookups",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
StatusCode = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
ColorClass = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IconClass = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSystemDefined = table.Column<bool>(type: "bit", nullable: false),
|
|
IsTerminalStatus = table.Column<bool>(type: "bit", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AppointmentStatusLookups", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AppointmentTypeLookups",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
TypeCode = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
ColorClass = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IconClass = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RequiresJobLink = table.Column<bool>(type: "bit", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSystemDefined = table.Column<bool>(type: "bit", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AppointmentTypeLookups", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AspNetRoles",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
Name = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
|
|
NormalizedName = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
|
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AspNetRoles", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AuditLogs",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<long>(type: "bigint", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
UserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UserName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Action = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
EntityType = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
EntityId = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
EntityDescription = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
OldValues = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
NewValues = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IpAddress = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Timestamp = table.Column<DateTime>(type: "datetime2", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AuditLogs", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "BannedIps",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
IpAddress = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Reason = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
BannedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
BannedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_BannedIps", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Budgets",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FiscalYear = table.Column<int>(type: "int", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDefault = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Budgets", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "BugReports",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Title = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
SubmittedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
SubmittedByUserName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Priority = table.Column<int>(type: "int", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
ResolutionNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ResolvedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ResolvedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_BugReports", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CatalogPriceCheckReports",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
RunAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ItemsChecked = table.Column<int>(type: "int", nullable: false),
|
|
ResultsJson = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
OperatingCostsSummary = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CatalogPriceCheckReports", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Companies",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CompanyName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyCode = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
PrimaryContactName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
PrimaryContactEmail = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Phone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Address = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
City = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
State = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ZipCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
SubscriptionStartDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
SubscriptionEndDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
SubscriptionPlan = table.Column<int>(type: "int", nullable: false),
|
|
SubscriptionStatus = table.Column<int>(type: "int", nullable: false),
|
|
StripeCustomerId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
StripeSubscriptionId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsComped = table.Column<bool>(type: "bit", nullable: false),
|
|
StripeAccountId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
StripeConnectStatus = table.Column<int>(type: "int", nullable: false),
|
|
OnlinePaymentSurchargeType = table.Column<int>(type: "int", nullable: false),
|
|
OnlinePaymentSurchargeValue = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OnlineSurchargeAcknowledged = table.Column<bool>(type: "bit", nullable: false),
|
|
SubscriptionNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
MaxUsersOverride = table.Column<int>(type: "int", nullable: true),
|
|
MaxActiveJobsOverride = table.Column<int>(type: "int", nullable: true),
|
|
MaxCustomersOverride = table.Column<int>(type: "int", nullable: true),
|
|
MaxQuotesOverride = table.Column<int>(type: "int", nullable: true),
|
|
MaxCatalogItemsOverride = table.Column<int>(type: "int", nullable: true),
|
|
MaxJobPhotosOverride = table.Column<int>(type: "int", nullable: true),
|
|
MaxQuotePhotosOverride = table.Column<int>(type: "int", nullable: true),
|
|
MaxAiPhotoQuotesPerMonthOverride = table.Column<int>(type: "int", nullable: true),
|
|
AiPhotoQuotesEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
AiInventoryAssistEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
AiCatalogPriceCheckEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
IsAnnualBilling = table.Column<bool>(type: "bit", nullable: false),
|
|
OnlinePaymentsOverride = table.Column<bool>(type: "bit", nullable: true),
|
|
AccountingOverride = table.Column<bool>(type: "bit", nullable: true),
|
|
SmsEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
SmsDisabledByAdmin = table.Column<bool>(type: "bit", nullable: false),
|
|
MarketingEmailOptOut = table.Column<bool>(type: "bit", nullable: false),
|
|
MarketingUnsubscribeToken = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
AccountingMethod = table.Column<int>(type: "int", nullable: false),
|
|
BookLockedThrough = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
TimeZone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
LogoData = table.Column<byte[]>(type: "varbinary(max)", nullable: true),
|
|
LogoContentType = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
LogoFilePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
KioskActivationToken = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Companies", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CompanySmsAgreements",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
AgreedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
AgreedByUserName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
AgreedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
IpAddress = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UserAgent = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
TermsVersion = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CompanySmsAgreements", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "ContactSubmissions",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
SenderName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
SenderEmail = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Category = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Subject = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Message = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsRead = table.Column<bool>(type: "bit", nullable: false),
|
|
ReadAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ReadByUserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ReadByUserName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AdminNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_ContactSubmissions", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "DashboardTips",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
TipText = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_DashboardTips", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "DataProtectionKeys",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
FriendlyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Xml = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_DataProtectionKeys", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JournalEntries",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
EntryNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
EntryDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Reference = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
IsReversal = table.Column<bool>(type: "bit", nullable: false),
|
|
ReversalOfId = table.Column<int>(type: "int", nullable: true),
|
|
PostedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PostedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JournalEntries", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JournalEntries_JournalEntries_ReversalOfId",
|
|
column: x => x.ReversalOfId,
|
|
principalTable: "JournalEntries",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "ManufacturerLookupPatterns",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
ManufacturerName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
ProductUrlTemplate = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SlugTransform = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Domain = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_ManufacturerLookupPatterns", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PendingRegistrationSessions",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Token = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyPhone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
FirstName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
LastName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Email = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Plan = table.Column<int>(type: "int", nullable: false),
|
|
IsAnnual = table.Column<bool>(type: "bit", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
IsCompleted = table.Column<bool>(type: "bit", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PendingRegistrationSessions", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PlatformSettings",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Key = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: false),
|
|
Value = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Label = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
GroupName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PlatformSettings", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PowderCatalogItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
VendorName = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
Sku = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
ColorName = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PriceTiersJson = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ImageUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SdsUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
TdsUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ApplicationGuideUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProductUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CureTemperatureF = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CureTimeMinutes = table.Column<int>(type: "int", nullable: true),
|
|
Finish = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ColorFamilies = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RequiresClearCoat = table.Column<bool>(type: "bit", nullable: true),
|
|
CoverageSqFtPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
SpecificGravity = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
TransferEfficiency = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
IsDiscontinued = table.Column<bool>(type: "bit", nullable: false),
|
|
IsUserContributed = table.Column<bool>(type: "bit", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
LastSyncedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PowderCatalogItems", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PrepServices",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
ServiceName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
RequiresBlastSetup = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PrepServices", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "RecurringTemplates",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
TemplateType = table.Column<int>(type: "int", nullable: false),
|
|
Frequency = table.Column<int>(type: "int", nullable: false),
|
|
IntervalCount = table.Column<int>(type: "int", nullable: false),
|
|
NextFireDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
EndDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
MaxOccurrences = table.Column<int>(type: "int", nullable: true),
|
|
OccurrenceCount = table.Column<int>(type: "int", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
TemplateData = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
LastError = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_RecurringTemplates", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "ReleaseNotes",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Version = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Title = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Body = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Tag = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsPublished = table.Column<bool>(type: "bit", nullable: false),
|
|
ReleasedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CreatedByUserName = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_ReleaseNotes", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "StripeWebhookEvents",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<long>(type: "bigint", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
EventId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
EventType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: true),
|
|
RawJson = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
ErrorMessage = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ReceivedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ProcessedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_StripeWebhookEvents", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "SubscriptionPlanConfigs",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Plan = table.Column<int>(type: "int", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
MaxUsers = table.Column<int>(type: "int", nullable: false),
|
|
MaxActiveJobs = table.Column<int>(type: "int", nullable: false),
|
|
MaxCustomers = table.Column<int>(type: "int", nullable: false),
|
|
MaxQuotes = table.Column<int>(type: "int", nullable: false),
|
|
MaxCatalogItems = table.Column<int>(type: "int", nullable: false),
|
|
MaxJobPhotos = table.Column<int>(type: "int", nullable: false),
|
|
MaxQuotePhotos = table.Column<int>(type: "int", nullable: false),
|
|
MaxAiPhotoQuotesPerMonth = table.Column<int>(type: "int", nullable: false),
|
|
MonthlyPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AnnualPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
StripePriceIdMonthly = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
StripePriceIdAnnual = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AllowOnlinePayments = table.Column<bool>(type: "bit", nullable: false),
|
|
AllowAccounting = table.Column<bool>(type: "bit", nullable: false),
|
|
AllowAiPhotoQuotes = table.Column<bool>(type: "bit", nullable: false),
|
|
AllowAiInventoryAssist = table.Column<bool>(type: "bit", nullable: false),
|
|
AllowAiCatalogPriceCheck = table.Column<bool>(type: "bit", nullable: false),
|
|
AllowSms = table.Column<bool>(type: "bit", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
SortOrder = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_SubscriptionPlanConfigs", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "TaxRates",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Rate = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
State = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDefault = table.Column<bool>(type: "bit", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_TaxRates", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "TermsAcceptances",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
UserId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
TosVersion = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
AcceptedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
IpAddress = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UserAgent = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_TermsAcceptances", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "UserPasskeys",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
UserId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CredentialId = table.Column<byte[]>(type: "varbinary(900)", nullable: false),
|
|
PublicKey = table.Column<byte[]>(type: "varbinary(max)", nullable: false),
|
|
UserHandle = table.Column<byte[]>(type: "varbinary(max)", nullable: false),
|
|
SignCount = table.Column<long>(type: "bigint", nullable: false),
|
|
DeviceFriendlyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
LastUsedAt = table.Column<DateTime>(type: "datetime2", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_UserPasskeys", x => x.Id);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "BankReconciliations",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
AccountId = table.Column<int>(type: "int", nullable: false),
|
|
StatementDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
BeginningBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
EndingBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
CompletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_BankReconciliations", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_BankReconciliations_Accounts_AccountId",
|
|
column: x => x.AccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "FixedAssets",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PurchaseDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
PurchaseCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
SalvageValue = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
UsefulLifeMonths = table.Column<int>(type: "int", nullable: false),
|
|
AccumulatedDepreciation = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IsDisposed = table.Column<bool>(type: "bit", nullable: false),
|
|
DisposalDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
AssetAccountId = table.Column<int>(type: "int", nullable: true),
|
|
DepreciationExpenseAccountId = table.Column<int>(type: "int", nullable: true),
|
|
AccumDepreciationAccountId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_FixedAssets", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_FixedAssets_Accounts_AccumDepreciationAccountId",
|
|
column: x => x.AccumDepreciationAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_FixedAssets_Accounts_AssetAccountId",
|
|
column: x => x.AssetAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_FixedAssets_Accounts_DepreciationExpenseAccountId",
|
|
column: x => x.DepreciationExpenseAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AnnouncementDismissals",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
AnnouncementId = table.Column<int>(type: "int", nullable: false),
|
|
UserId = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
DismissedAt = table.Column<DateTime>(type: "datetime2", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AnnouncementDismissals", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_AnnouncementDismissals_Announcements_AnnouncementId",
|
|
column: x => x.AnnouncementId,
|
|
principalTable: "Announcements",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AspNetRoleClaims",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
RoleId = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
ClaimType = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ClaimValue = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AspNetRoleClaims", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_AspNetRoleClaims_AspNetRoles_RoleId",
|
|
column: x => x.RoleId,
|
|
principalTable: "AspNetRoles",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "BudgetLines",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
BudgetId = table.Column<int>(type: "int", nullable: false),
|
|
AccountId = table.Column<int>(type: "int", nullable: false),
|
|
Jan = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Feb = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Mar = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Apr = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
May = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Jun = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Jul = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Aug = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Sep = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Oct = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Nov = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Dec = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_BudgetLines", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_BudgetLines_Accounts_AccountId",
|
|
column: x => x.AccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_BudgetLines_Budgets_BudgetId",
|
|
column: x => x.BudgetId,
|
|
principalTable: "Budgets",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "BugReportAttachments",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
BugReportId = table.Column<int>(type: "int", nullable: false),
|
|
BlobPath = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FileName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
ContentType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FileSizeBytes = table.Column<long>(type: "bigint", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_BugReportAttachments", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_BugReportAttachments_BugReports_BugReportId",
|
|
column: x => x.BugReportId,
|
|
principalTable: "BugReports",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AiUsageLogs",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<long>(type: "bigint", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
UserId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Feature = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Success = table.Column<bool>(type: "bit", nullable: false),
|
|
InputLength = table.Column<int>(type: "int", nullable: false),
|
|
CalledAt = table.Column<DateTime>(type: "datetime2", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AiUsageLogs", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_AiUsageLogs_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AspNetUsers",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CompanyRole = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
FirstName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
LastName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
EmployeeNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
HireDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
TerminationDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
Address = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
City = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
State = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ZipCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Department = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Position = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Theme = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DateFormat = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
TimeZone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DashboardLayout = table.Column<int>(type: "int", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
CanViewShopFloor = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageJobs = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageInventory = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageCustomers = table.Column<bool>(type: "bit", nullable: false),
|
|
CanCreateQuotes = table.Column<bool>(type: "bit", nullable: false),
|
|
CanApproveQuotes = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageCalendar = table.Column<bool>(type: "bit", nullable: false),
|
|
CanViewCalendar = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageProducts = table.Column<bool>(type: "bit", nullable: false),
|
|
CanViewProducts = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageEquipment = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageVendors = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageMaintenance = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageInvoices = table.Column<bool>(type: "bit", nullable: false),
|
|
CanViewReports = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageBills = table.Column<bool>(type: "bit", nullable: false),
|
|
CanManageAccounting = table.Column<bool>(type: "bit", nullable: false),
|
|
ProfilePictureFilePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SidebarColor = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
LaborCostPerHour = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
LastLoginDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PasskeyPromptDismissed = table.Column<bool>(type: "bit", nullable: false),
|
|
IsBanned = table.Column<bool>(type: "bit", nullable: false),
|
|
BannedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
BanReason = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
BannedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UserName = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
|
|
NormalizedUserName = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
|
|
Email = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
|
|
NormalizedEmail = table.Column<string>(type: "nvarchar(256)", maxLength: 256, nullable: true),
|
|
EmailConfirmed = table.Column<bool>(type: "bit", nullable: false),
|
|
PasswordHash = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SecurityStamp = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ConcurrencyStamp = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PhoneNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PhoneNumberConfirmed = table.Column<bool>(type: "bit", nullable: false),
|
|
TwoFactorEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
LockoutEnd = table.Column<DateTimeOffset>(type: "datetimeoffset", nullable: true),
|
|
LockoutEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
AccessFailedCount = table.Column<int>(type: "int", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AspNetUsers", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_AspNetUsers_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CatalogCategories",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ParentCategoryId = table.Column<int>(type: "int", nullable: true),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsMerchandise = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CatalogCategories", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CatalogCategories_CatalogCategories_ParentCategoryId",
|
|
column: x => x.ParentCategoryId,
|
|
principalTable: "CatalogCategories",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_CatalogCategories_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CompanyBlastSetups",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
|
|
SetupType = table.Column<int>(type: "int", nullable: false),
|
|
CompressorCfm = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
BlastNozzleSize = table.Column<int>(type: "int", nullable: false),
|
|
PrimarySubstrate = table.Column<int>(type: "int", nullable: false),
|
|
BlastRateSqFtPerHourOverride = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
IsDefault = table.Column<bool>(type: "bit", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CompanyBlastSetups", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CompanyBlastSetups_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CompanyOperatingCosts",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
StandardLaborRate = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
LaborCostPerHour = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
AdditionalCoatLaborPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OvenOperatingCostPerHour = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
SandblasterCostPerHour = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CoatingBoothCostPerHour = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PowderCoatingCostPerSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PricingMode = table.Column<int>(type: "int", nullable: false),
|
|
GeneralMarkupPercentage = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TargetMarginPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TaxPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ShopSuppliesRate = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DefaultOvenCycleMinutes = table.Column<int>(type: "int", nullable: false),
|
|
RushChargeType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
RushChargePercentage = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RushChargeFixedAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ShopMinimumCharge = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ComplexitySimplePercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ComplexityModeratePercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ComplexityComplexPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ComplexityExtremePercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AiContextProfile = table.Column<string>(type: "nvarchar(2000)", maxLength: 2000, nullable: true),
|
|
ShopCapabilityTier = table.Column<int>(type: "int", nullable: false),
|
|
BlastSetupType = table.Column<int>(type: "int", nullable: false),
|
|
CompressorCfm = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
BlastNozzleSize = table.Column<int>(type: "int", nullable: false),
|
|
PrimaryBlastSubstrate = table.Column<int>(type: "int", nullable: false),
|
|
BlastRateSqFtPerHourOverride = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CoatingGunType = table.Column<int>(type: "int", nullable: false),
|
|
CoatingRateSqFtPerHourOverride = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
MonthlyRent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
MonthlyUtilities = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
MonthlyBillableHours = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CompanyOperatingCosts", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CompanyOperatingCosts_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CompanyPreferences",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
DefaultCurrency = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DefaultDateFormat = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DefaultTimeFormat = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DefaultPaymentTerms = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DefaultQuoteValidityDays = table.Column<int>(type: "int", nullable: false),
|
|
QuoteNumberPrefix = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
JobNumberPrefix = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
InvoiceNumberPrefix = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
UseMetricSystem = table.Column<bool>(type: "bit", nullable: false),
|
|
DefaultJobPriority = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
RequireCustomerPO = table.Column<bool>(type: "bit", nullable: false),
|
|
AllowCustomerApproval = table.Column<bool>(type: "bit", nullable: false),
|
|
DefaultTurnaroundDays = table.Column<int>(type: "int", nullable: false),
|
|
EmailFromAddress = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
EmailFromName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
EmailNotificationsEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
NotifyOnNewJob = table.Column<bool>(type: "bit", nullable: false),
|
|
NotifyOnNewQuote = table.Column<bool>(type: "bit", nullable: false),
|
|
NotifyOnJobStatusChange = table.Column<bool>(type: "bit", nullable: false),
|
|
NotifyOnQuoteApproval = table.Column<bool>(type: "bit", nullable: false),
|
|
NotifyOnPaymentReceived = table.Column<bool>(type: "bit", nullable: false),
|
|
QuoteExpiryWarningDays = table.Column<int>(type: "int", nullable: false),
|
|
DueDateWarningDays = table.Column<int>(type: "int", nullable: false),
|
|
MaintenanceAlertDays = table.Column<int>(type: "int", nullable: false),
|
|
PaymentRemindersEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
PaymentReminderDays = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
QuoteRetentionYears = table.Column<int>(type: "int", nullable: false),
|
|
JobRetentionYears = table.Column<int>(type: "int", nullable: false),
|
|
LogRetentionDays = table.Column<int>(type: "int", nullable: false),
|
|
AutoArchiveJobsDays = table.Column<int>(type: "int", nullable: false),
|
|
DeletedRecordRetentionDays = table.Column<int>(type: "int", nullable: false),
|
|
QtAccentColor = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
QtDefaultTerms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
QtFooterNote = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
InAccentColor = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
InDefaultTerms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
InFooterNote = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
WoAccentColor = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
WoTerms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SetupWizardStarted = table.Column<bool>(type: "bit", nullable: false),
|
|
SetupWizardCompleted = table.Column<bool>(type: "bit", nullable: false),
|
|
SetupWizardDoneSteps = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SetupWizardSkippedSteps = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SetupWizardCompletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
SetupWizardCompletedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SetupWizardCompletedByName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
MigratingFromQuickBooks = table.Column<bool>(type: "bit", nullable: false),
|
|
QbMigrationStateJson = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
KioskIntakeOutput = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
OnboardingPath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
FirstWorkflowCompleted = table.Column<bool>(type: "bit", nullable: false),
|
|
FirstWorkflowCompletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
FirstQuoteCreatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
FirstJobCreatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
FirstInvoiceCreatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
GuidedActivationDismissedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CompanyPreferences", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CompanyPreferences_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Equipment",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
EquipmentName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
EquipmentNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
EquipmentType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Manufacturer = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Model = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SerialNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PurchaseDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PurchasePrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
WarrantyExpiration = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
Location = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RecommendedMaintenanceIntervalDays = table.Column<int>(type: "int", nullable: false),
|
|
LastMaintenanceDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
NextScheduledMaintenance = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
MaxLoadSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
OvenCycleMinutes = table.Column<int>(type: "int", nullable: true),
|
|
ManualFilePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ManualFileName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ManualFileSize = table.Column<long>(type: "bigint", nullable: true),
|
|
ManualContentType = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ManualUploadedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Equipment", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Equipment_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "InventoryCategoryLookups",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CategoryCode = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSystemDefined = table.Column<bool>(type: "bit", nullable: false),
|
|
IsCoating = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_InventoryCategoryLookups", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_InventoryCategoryLookups_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobPriorityLookups",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
PriorityCode = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
ColorClass = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IconClass = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSystemDefined = table.Column<bool>(type: "bit", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobPriorityLookups", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobPriorityLookups_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobStatusLookups",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
StatusCode = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
ColorClass = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IconClass = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSystemDefined = table.Column<bool>(type: "bit", nullable: false),
|
|
IsTerminalStatus = table.Column<bool>(type: "bit", nullable: false),
|
|
IsWorkInProgressStatus = table.Column<bool>(type: "bit", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
WorkflowCategory = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobStatusLookups", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobStatusLookups_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "NotificationTemplates",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
NotificationType = table.Column<int>(type: "int", nullable: false),
|
|
Channel = table.Column<int>(type: "int", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Subject = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Body = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_NotificationTemplates", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_NotificationTemplates_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "OvenCosts",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Label = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: false),
|
|
CostPerHour = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
MaxLoadSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
DefaultCycleMinutes = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_OvenCosts", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_OvenCosts_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PricingTiers",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
TierName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DiscountPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PricingTiers", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_PricingTiers_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "QuoteStatusLookups",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
StatusCode = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
DisplayName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
ColorClass = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IconClass = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSystemDefined = table.Column<bool>(type: "bit", nullable: false),
|
|
IsApprovedStatus = table.Column<bool>(type: "bit", nullable: false),
|
|
IsConvertedStatus = table.Column<bool>(type: "bit", nullable: false),
|
|
IsDraftStatus = table.Column<bool>(type: "bit", nullable: false),
|
|
IsRejectedStatus = table.Column<bool>(type: "bit", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_QuoteStatusLookups", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteStatusLookups_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Vendors",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CompanyName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
ContactName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Email = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Phone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Address = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
City = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
State = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ZipCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Country = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Website = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AccountNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
TaxId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PaymentTerms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CreditLimit = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsPreferred = table.Column<bool>(type: "bit", nullable: false),
|
|
CurrentBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OpeningBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OpeningBalanceDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DefaultExpenseAccountId = table.Column<int>(type: "int", nullable: true),
|
|
Is1099Vendor = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Vendors", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Vendors_Accounts_DefaultExpenseAccountId",
|
|
column: x => x.DefaultExpenseAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_Vendors_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JournalEntryLines",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JournalEntryId = table.Column<int>(type: "int", nullable: false),
|
|
AccountId = table.Column<int>(type: "int", nullable: false),
|
|
DebitAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CreditAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
LineOrder = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JournalEntryLines", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JournalEntryLines_Accounts_AccountId",
|
|
column: x => x.AccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_JournalEntryLines_JournalEntries_JournalEntryId",
|
|
column: x => x.JournalEntryId,
|
|
principalTable: "JournalEntries",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "YearEndCloses",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
ClosedYear = table.Column<int>(type: "int", nullable: false),
|
|
ClosedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ClosedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
JournalEntryId = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_YearEndCloses", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_YearEndCloses_JournalEntries_JournalEntryId",
|
|
column: x => x.JournalEntryId,
|
|
principalTable: "JournalEntries",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "FixedAssetDepreciationEntries",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
FixedAssetId = table.Column<int>(type: "int", nullable: false),
|
|
PeriodYear = table.Column<int>(type: "int", nullable: false),
|
|
PeriodMonth = table.Column<int>(type: "int", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
JournalEntryId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_FixedAssetDepreciationEntries", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_FixedAssetDepreciationEntries_FixedAssets_FixedAssetId",
|
|
column: x => x.FixedAssetId,
|
|
principalTable: "FixedAssets",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_FixedAssetDepreciationEntries_JournalEntries_JournalEntryId",
|
|
column: x => x.JournalEntryId,
|
|
principalTable: "JournalEntries",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AspNetUserClaims",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
UserId = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
ClaimType = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ClaimValue = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AspNetUserClaims", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_AspNetUserClaims_AspNetUsers_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AspNetUserLogins",
|
|
columns: table => new
|
|
{
|
|
LoginProvider = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
ProviderKey = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
ProviderDisplayName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UserId = table.Column<string>(type: "nvarchar(450)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AspNetUserLogins", x => new { x.LoginProvider, x.ProviderKey });
|
|
table.ForeignKey(
|
|
name: "FK_AspNetUserLogins_AspNetUsers_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AspNetUserRoles",
|
|
columns: table => new
|
|
{
|
|
UserId = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
RoleId = table.Column<string>(type: "nvarchar(450)", nullable: false)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AspNetUserRoles", x => new { x.UserId, x.RoleId });
|
|
table.ForeignKey(
|
|
name: "FK_AspNetUserRoles_AspNetRoles_RoleId",
|
|
column: x => x.RoleId,
|
|
principalTable: "AspNetRoles",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_AspNetUserRoles_AspNetUsers_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "AspNetUserTokens",
|
|
columns: table => new
|
|
{
|
|
UserId = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
LoginProvider = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
Name = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
Value = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_AspNetUserTokens", x => new { x.UserId, x.LoginProvider, x.Name });
|
|
table.ForeignKey(
|
|
name: "FK_AspNetUserTokens_AspNetUsers_UserId",
|
|
column: x => x.UserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "MaintenanceRecords",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
EquipmentId = table.Column<int>(type: "int", nullable: false),
|
|
MaintenanceType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
Priority = table.Column<int>(type: "int", nullable: false),
|
|
ScheduledDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
CompletedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PerformedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
AssignedUserId = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
WorkPerformed = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PartsReplaced = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
LaborCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PartsCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TotalCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DowntimeHours = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
TechnicianNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsRecurring = table.Column<bool>(type: "bit", nullable: false),
|
|
RecurrenceFrequency = table.Column<int>(type: "int", nullable: true),
|
|
RecurrenceEndDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
RecurrenceGroupId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RecurrenceParentId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_MaintenanceRecords", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_MaintenanceRecords_AspNetUsers_AssignedUserId",
|
|
column: x => x.AssignedUserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_MaintenanceRecords_AspNetUsers_PerformedById",
|
|
column: x => x.PerformedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_MaintenanceRecords_Equipment_EquipmentId",
|
|
column: x => x.EquipmentId,
|
|
principalTable: "Equipment",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_MaintenanceRecords_MaintenanceRecords_RecurrenceParentId",
|
|
column: x => x.RecurrenceParentId,
|
|
principalTable: "MaintenanceRecords",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "OvenBatches",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
BatchNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
EquipmentId = table.Column<int>(type: "int", nullable: true),
|
|
OvenCostId = table.Column<int>(type: "int", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
ScheduledDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ScheduledStartTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
EstimatedEndTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ActualStartTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ActualEndTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
TotalSurfaceAreaSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CureTemperatureF = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CycleMinutes = table.Column<int>(type: "int", nullable: false),
|
|
PrimaryColorName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PrimaryColorCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AiSuggested = table.Column<bool>(type: "bit", nullable: false),
|
|
AiReasoningJson = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_OvenBatches", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_OvenBatches_Equipment_EquipmentId",
|
|
column: x => x.EquipmentId,
|
|
principalTable: "Equipment",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_OvenBatches_OvenCosts_OvenCostId",
|
|
column: x => x.OvenCostId,
|
|
principalTable: "OvenCosts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Customers",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CompanyName = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
ContactFirstName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ContactLastName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Email = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
BillingEmail = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Phone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
MobilePhone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Address = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
City = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
State = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ZipCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Country = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsCommercial = table.Column<bool>(type: "bit", nullable: false),
|
|
TaxId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CreditLimit = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CurrentBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CreditBalance = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PaymentTerms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PricingTierId = table.Column<int>(type: "int", nullable: true),
|
|
IsTaxExempt = table.Column<bool>(type: "bit", nullable: false),
|
|
TaxExemptCertificateData = table.Column<byte[]>(type: "varbinary(max)", nullable: true),
|
|
TaxExemptCertificateContentType = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
TaxExemptCertificateFileName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
GeneralNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
LastContactDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
NotifyByEmail = table.Column<bool>(type: "bit", nullable: false),
|
|
NotifyBySms = table.Column<bool>(type: "bit", nullable: false),
|
|
UnsubscribeToken = table.Column<string>(type: "nvarchar(450)", nullable: false, defaultValueSql: "REPLACE(NEWID(),'-','')"),
|
|
SmsConsentedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
SmsConsentMethod = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SmsOptedOutAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Customers", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Customers_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Customers_PricingTiers_PricingTierId",
|
|
column: x => x.PricingTierId,
|
|
principalTable: "PricingTiers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Bills",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
BillNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
VendorInvoiceNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
VendorId = table.Column<int>(type: "int", nullable: false),
|
|
APAccountId = table.Column<int>(type: "int", nullable: false),
|
|
BillDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
DueDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
Terms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Memo = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SubTotal = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TaxPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TaxAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Total = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AmountPaid = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ReceiptFilePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Bills", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Bills_Accounts_APAccountId",
|
|
column: x => x.APAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Bills_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "InventoryItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
SKU = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
InventoryCategoryId = table.Column<int>(type: "int", nullable: true),
|
|
Category = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
ColorName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ColorCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Finish = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Manufacturer = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ManufacturerPartNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CoverageSqFtPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
SpecificGravity = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
TransferEfficiency = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CureTemperatureF = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CureTimeMinutes = table.Column<int>(type: "int", nullable: true),
|
|
ColorFamilies = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RequiresClearCoat = table.Column<bool>(type: "bit", nullable: false),
|
|
SpecPageUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ImageUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SdsUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
TdsUrl = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
HasSamplePanel = table.Column<bool>(type: "bit", nullable: false),
|
|
QuantityOnHand = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
UnitOfMeasure = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
ReorderPoint = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ReorderQuantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
MinimumStock = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
MaximumStock = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
UnitCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AverageCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
LastPurchasePrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
LastPurchaseDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PrimaryVendorId = table.Column<int>(type: "int", nullable: true),
|
|
VendorPartNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Location = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
DiscontinuedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
IsIncoming = table.Column<bool>(type: "bit", nullable: false),
|
|
InventoryAccountId = table.Column<int>(type: "int", nullable: true),
|
|
CogsAccountId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_InventoryItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_InventoryItems_Accounts_CogsAccountId",
|
|
column: x => x.CogsAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InventoryItems_Accounts_InventoryAccountId",
|
|
column: x => x.InventoryAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InventoryItems_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_InventoryItems_InventoryCategoryLookups_InventoryCategoryId",
|
|
column: x => x.InventoryCategoryId,
|
|
principalTable: "InventoryCategoryLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_InventoryItems_Vendors_PrimaryVendorId",
|
|
column: x => x.PrimaryVendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "VendorCredits",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CreditNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
VendorId = table.Column<int>(type: "int", nullable: false),
|
|
APAccountId = table.Column<int>(type: "int", nullable: false),
|
|
CreditDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
Total = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RemainingAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Memo = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PostedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_VendorCredits", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_VendorCredits_Accounts_APAccountId",
|
|
column: x => x.APAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_VendorCredits_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CustomerNotes",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CustomerId = table.Column<int>(type: "int", nullable: false),
|
|
Note = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsImportant = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CustomerNotes", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CustomerNotes_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "GiftCertificates",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CertificateCode = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
OriginalAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RedeemedAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RecipientCustomerId = table.Column<int>(type: "int", nullable: true),
|
|
RecipientName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RecipientEmail = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IssuedReason = table.Column<int>(type: "int", nullable: false),
|
|
PurchasePrice = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
PurchasingCustomerId = table.Column<int>(type: "int", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
IssueDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ExpiryDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IssuedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
SourceInvoiceItemId = table.Column<int>(type: "int", nullable: true),
|
|
BatchId = table.Column<Guid>(type: "uniqueidentifier", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_GiftCertificates", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_GiftCertificates_AspNetUsers_IssuedById",
|
|
column: x => x.IssuedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_GiftCertificates_Customers_PurchasingCustomerId",
|
|
column: x => x.PurchasingCustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_GiftCertificates_Customers_RecipientCustomerId",
|
|
column: x => x.RecipientCustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobTemplates",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CustomerId = table.Column<int>(type: "int", nullable: true),
|
|
SpecialInstructions = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
UsageCount = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobTemplates", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplates_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Quotes",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
QuoteNumber = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
CustomerId = table.Column<int>(type: "int", nullable: true),
|
|
PreparedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
ProspectCompanyName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectContactName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectEmail = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectPhone = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectAddress = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectCity = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectState = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectZipCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ProspectSmsConsent = table.Column<bool>(type: "bit", nullable: false),
|
|
ProspectSmsConsentedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
QuoteStatusId = table.Column<int>(type: "int", nullable: false),
|
|
OvenCostId = table.Column<int>(type: "int", nullable: true),
|
|
OvenBatches = table.Column<int>(type: "int", nullable: false),
|
|
OvenCycleMinutes = table.Column<int>(type: "int", nullable: true),
|
|
IsCommercial = table.Column<bool>(type: "bit", nullable: false),
|
|
IsRushJob = table.Column<bool>(type: "bit", nullable: false),
|
|
QuoteDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ExpirationDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
SentDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ApprovedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
MaterialCosts = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
LaborCosts = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
EquipmentCosts = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ItemsSubtotal = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OvenBatchCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
FacilityOverheadCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
FacilityOverheadRatePerHour = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ShopSuppliesAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ShopSuppliesPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OverheadAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OverheadPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ProfitMargin = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ProfitPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
SubTotal = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DiscountType = table.Column<int>(type: "int", nullable: false),
|
|
DiscountValue = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PricingTierDiscountAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PricingTierDiscountPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
QuoteDiscountAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
QuoteDiscountPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DiscountPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DiscountAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DiscountReason = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
HideDiscountFromCustomer = table.Column<bool>(type: "bit", nullable: false),
|
|
SubtotalAfterDiscount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TaxPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TaxAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RushFee = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Total = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RequiresDeposit = table.Column<bool>(type: "bit", nullable: false),
|
|
DepositPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DepositPaymentLinkToken = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DepositPaymentLinkExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DepositAmountPaid = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DepositPaymentIntentId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Terms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CustomerPO = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Tags = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ConvertedToJobId = table.Column<int>(type: "int", nullable: true),
|
|
ConvertedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ApprovalToken = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
ApprovalTokenExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ApprovalTokenUsedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeclineReason = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DeclinedByIp = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Quotes", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Quotes_AspNetUsers_PreparedById",
|
|
column: x => x.PreparedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_Quotes_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Quotes_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Quotes_OvenCosts_OvenCostId",
|
|
column: x => x.OvenCostId,
|
|
principalTable: "OvenCosts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Quotes_QuoteStatusLookups_QuoteStatusId",
|
|
column: x => x.QuoteStatusId,
|
|
principalTable: "QuoteStatusLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "BillPayments",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
PaymentNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
BillId = table.Column<int>(type: "int", nullable: false),
|
|
VendorId = table.Column<int>(type: "int", nullable: false),
|
|
BankAccountId = table.Column<int>(type: "int", nullable: false),
|
|
PaymentDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PaymentMethod = table.Column<int>(type: "int", nullable: false),
|
|
CheckNumber = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Memo = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsCleared = table.Column<bool>(type: "bit", nullable: false),
|
|
ClearedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_BillPayments", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_BillPayments_Accounts_BankAccountId",
|
|
column: x => x.BankAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_BillPayments_Bills_BillId",
|
|
column: x => x.BillId,
|
|
principalTable: "Bills",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_BillPayments_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PurchaseOrders",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
PoNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
VendorId = table.Column<int>(type: "int", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
OrderDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ExpectedDeliveryDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ReceivedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ShippingCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
SubTotal = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TotalAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
InternalNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
BillId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PurchaseOrders", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_PurchaseOrders_Bills_BillId",
|
|
column: x => x.BillId,
|
|
principalTable: "Bills",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_PurchaseOrders_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CatalogItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Name = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SKU = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CategoryId = table.Column<int>(type: "int", nullable: false),
|
|
DefaultPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DefaultRequiresSandblasting = table.Column<bool>(type: "bit", nullable: false),
|
|
DefaultRequiresMasking = table.Column<bool>(type: "bit", nullable: false),
|
|
DefaultEstimatedMinutes = table.Column<int>(type: "int", nullable: true),
|
|
ApproximateArea = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
IsActive = table.Column<bool>(type: "bit", nullable: false),
|
|
IsMerchandise = table.Column<bool>(type: "bit", nullable: false),
|
|
InventoryItemId = table.Column<int>(type: "int", nullable: true),
|
|
RevenueAccountId = table.Column<int>(type: "int", nullable: true),
|
|
CogsAccountId = table.Column<int>(type: "int", nullable: true),
|
|
ImagePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ThumbnailPath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CatalogItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CatalogItems_Accounts_CogsAccountId",
|
|
column: x => x.CogsAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_CatalogItems_Accounts_RevenueAccountId",
|
|
column: x => x.RevenueAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_CatalogItems_CatalogCategories_CategoryId",
|
|
column: x => x.CategoryId,
|
|
principalTable: "CatalogCategories",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_CatalogItems_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_CatalogItems_InventoryItems_InventoryItemId",
|
|
column: x => x.InventoryItemId,
|
|
principalTable: "InventoryItems",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "VendorCreditApplications",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
VendorCreditId = table.Column<int>(type: "int", nullable: false),
|
|
BillId = table.Column<int>(type: "int", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AppliedDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_VendorCreditApplications", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_VendorCreditApplications_Bills_BillId",
|
|
column: x => x.BillId,
|
|
principalTable: "Bills",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_VendorCreditApplications_VendorCredits_VendorCreditId",
|
|
column: x => x.VendorCreditId,
|
|
principalTable: "VendorCredits",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "VendorCreditLineItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
VendorCreditId = table.Column<int>(type: "int", nullable: false),
|
|
AccountId = table.Column<int>(type: "int", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_VendorCreditLineItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_VendorCreditLineItems_Accounts_AccountId",
|
|
column: x => x.AccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_VendorCreditLineItems_VendorCredits_VendorCreditId",
|
|
column: x => x.VendorCreditId,
|
|
principalTable: "VendorCredits",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Jobs",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobNumber = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
CustomerId = table.Column<int>(type: "int", nullable: false),
|
|
QuoteId = table.Column<int>(type: "int", nullable: true),
|
|
AssignedUserId = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
JobStatusId = table.Column<int>(type: "int", nullable: false),
|
|
JobPriorityId = table.Column<int>(type: "int", nullable: false),
|
|
ScheduledDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
StartedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompletedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DueDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
OvenCostId = table.Column<int>(type: "int", nullable: true),
|
|
OvenBatches = table.Column<int>(type: "int", nullable: false),
|
|
OvenCycleMinutes = table.Column<int>(type: "int", nullable: true),
|
|
QuotedPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
FinalPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OvenBatchCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ShopSuppliesAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ShopSuppliesPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IsRushJob = table.Column<bool>(type: "bit", nullable: false),
|
|
DiscountType = table.Column<int>(type: "int", nullable: false),
|
|
DiscountValue = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DiscountReason = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ActualTimeSpentHours = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CustomerPO = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SpecialInstructions = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
InternalNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Tags = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RequiresCustomerApproval = table.Column<bool>(type: "bit", nullable: false),
|
|
IsCustomerApproved = table.Column<bool>(type: "bit", nullable: false),
|
|
ShopAccessCode = table.Column<Guid>(type: "uniqueidentifier", nullable: false, defaultValueSql: "NEWID()"),
|
|
IntakeDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
IntakeConditionNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IntakePartCount = table.Column<int>(type: "int", nullable: true),
|
|
IntakeCheckedByUserId = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
QuoteSnapshotUpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PricingBreakdownJson = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsReworkJob = table.Column<bool>(type: "bit", nullable: false),
|
|
OriginalJobId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Jobs", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_AspNetUsers_AssignedUserId",
|
|
column: x => x.AssignedUserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_AspNetUsers_IntakeCheckedByUserId",
|
|
column: x => x.IntakeCheckedByUserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_JobPriorityLookups_JobPriorityId",
|
|
column: x => x.JobPriorityId,
|
|
principalTable: "JobPriorityLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_JobStatusLookups_JobStatusId",
|
|
column: x => x.JobStatusId,
|
|
principalTable: "JobStatusLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_Jobs_OriginalJobId",
|
|
column: x => x.OriginalJobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_OvenCosts_OvenCostId",
|
|
column: x => x.OvenCostId,
|
|
principalTable: "OvenCosts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Jobs_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "QuoteChangeHistories",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
QuoteId = table.Column<int>(type: "int", nullable: false),
|
|
ChangedByUserId = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
ChangedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
FieldName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
OldValue = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
NewValue = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ChangeDescription = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_QuoteChangeHistories", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteChangeHistories_AspNetUsers_ChangedByUserId",
|
|
column: x => x.ChangedByUserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteChangeHistories_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteChangeHistories_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "QuotePhotos",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
QuoteId = table.Column<int>(type: "int", nullable: true),
|
|
TempId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FilePath = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FileName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FileSize = table.Column<long>(type: "bigint", nullable: false),
|
|
ContentType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Caption = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsAiAnalysisPhoto = table.Column<bool>(type: "bit", nullable: false),
|
|
UploadedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_QuotePhotos", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_QuotePhotos_AspNetUsers_UploadedById",
|
|
column: x => x.UploadedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_QuotePhotos_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "QuotePrepServices",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
QuoteId = table.Column<int>(type: "int", nullable: false),
|
|
PrepServiceId = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_QuotePrepServices", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_QuotePrepServices_PrepServices_PrepServiceId",
|
|
column: x => x.PrepServiceId,
|
|
principalTable: "PrepServices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_QuotePrepServices_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PurchaseOrderItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
PurchaseOrderId = table.Column<int>(type: "int", nullable: false),
|
|
InventoryItemId = table.Column<int>(type: "int", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UnitOfMeasure = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
QuantityOrdered = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
QuantityReceived = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
UnitCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
LineTotal = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PurchaseOrderItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_PurchaseOrderItems_InventoryItems_InventoryItemId",
|
|
column: x => x.InventoryItemId,
|
|
principalTable: "InventoryItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_PurchaseOrderItems_PurchaseOrders_PurchaseOrderId",
|
|
column: x => x.PurchaseOrderId,
|
|
principalTable: "PurchaseOrders",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobTemplateItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobTemplateId = table.Column<int>(type: "int", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Quantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
SurfaceAreaSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CatalogItemId = table.Column<int>(type: "int", nullable: true),
|
|
IsGenericItem = table.Column<bool>(type: "bit", nullable: false),
|
|
IsLaborItem = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSalesItem = table.Column<bool>(type: "bit", nullable: false),
|
|
Sku = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ManualUnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
RequiresSandblasting = table.Column<bool>(type: "bit", nullable: false),
|
|
RequiresMasking = table.Column<bool>(type: "bit", nullable: false),
|
|
IncludePrepCost = table.Column<bool>(type: "bit", nullable: false),
|
|
EstimatedMinutes = table.Column<int>(type: "int", nullable: false),
|
|
Complexity = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobTemplateItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplateItems_CatalogItems_CatalogItemId",
|
|
column: x => x.CatalogItemId,
|
|
principalTable: "CatalogItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplateItems_JobTemplates_JobTemplateId",
|
|
column: x => x.JobTemplateId,
|
|
principalTable: "JobTemplates",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "QuoteItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
QuoteId = table.Column<int>(type: "int", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Quantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
SurfaceArea = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
SurfaceAreaSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CatalogItemId = table.Column<int>(type: "int", nullable: true),
|
|
UnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TotalPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ItemMaterialCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ItemLaborCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ItemEquipmentCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IsGenericItem = table.Column<bool>(type: "bit", nullable: false),
|
|
ManualUnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
PowderCostOverride = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
IsLaborItem = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSalesItem = table.Column<bool>(type: "bit", nullable: false),
|
|
Sku = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RequiresSandblasting = table.Column<bool>(type: "bit", nullable: false),
|
|
RequiresMasking = table.Column<bool>(type: "bit", nullable: false),
|
|
EstimatedMinutes = table.Column<int>(type: "int", nullable: false),
|
|
IncludePrepCost = table.Column<bool>(type: "bit", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Complexity = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsAiItem = table.Column<bool>(type: "bit", nullable: false),
|
|
AiTags = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AiPredictionId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_QuoteItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItems_AiItemPredictions_AiPredictionId",
|
|
column: x => x.AiPredictionId,
|
|
principalTable: "AiItemPredictions",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItems_CatalogItems_CatalogItemId",
|
|
column: x => x.CatalogItemId,
|
|
principalTable: "CatalogItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItems_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Appointments",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
AppointmentNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Title = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CustomerId = table.Column<int>(type: "int", nullable: true),
|
|
JobId = table.Column<int>(type: "int", nullable: true),
|
|
AppointmentStatusId = table.Column<int>(type: "int", nullable: false),
|
|
AppointmentTypeId = table.Column<int>(type: "int", nullable: false),
|
|
AssignedUserId = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
ScheduledStartTime = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ScheduledEndTime = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
IsAllDay = table.Column<bool>(type: "bit", nullable: false),
|
|
ActualStartTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ActualEndTime = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
Location = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsReminderEnabled = table.Column<bool>(type: "bit", nullable: false),
|
|
ReminderMinutesBefore = table.Column<int>(type: "int", nullable: false),
|
|
ReminderSentAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Appointments", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Appointments_AppointmentStatusLookups_AppointmentStatusId",
|
|
column: x => x.AppointmentStatusId,
|
|
principalTable: "AppointmentStatusLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_Appointments_AppointmentTypeLookups_AppointmentTypeId",
|
|
column: x => x.AppointmentTypeId,
|
|
principalTable: "AppointmentTypeLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_Appointments_AspNetUsers_AssignedUserId",
|
|
column: x => x.AssignedUserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Appointments_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Appointments_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "BillLineItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
BillId = table.Column<int>(type: "int", nullable: false),
|
|
AccountId = table.Column<int>(type: "int", nullable: true),
|
|
JobId = table.Column<int>(type: "int", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Quantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
UnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_BillLineItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_BillLineItems_Accounts_AccountId",
|
|
column: x => x.AccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_BillLineItems_Bills_BillId",
|
|
column: x => x.BillId,
|
|
principalTable: "Bills",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_BillLineItems_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Expenses",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
ExpenseNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Date = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
VendorId = table.Column<int>(type: "int", nullable: true),
|
|
ExpenseAccountId = table.Column<int>(type: "int", nullable: false),
|
|
PaymentAccountId = table.Column<int>(type: "int", nullable: false),
|
|
JobId = table.Column<int>(type: "int", nullable: true),
|
|
PaymentMethod = table.Column<int>(type: "int", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Memo = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ReceiptFilePath = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsCleared = table.Column<bool>(type: "bit", nullable: false),
|
|
ClearedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Expenses", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Expenses_Accounts_ExpenseAccountId",
|
|
column: x => x.ExpenseAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Expenses_Accounts_PaymentAccountId",
|
|
column: x => x.PaymentAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Expenses_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Expenses_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "InventoryTransactions",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
InventoryItemId = table.Column<int>(type: "int", nullable: false),
|
|
TransactionType = table.Column<int>(type: "int", nullable: false),
|
|
Quantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
UnitCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TotalCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TransactionDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Reference = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
BalanceAfter = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PurchaseOrderId = table.Column<int>(type: "int", nullable: true),
|
|
JobId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_InventoryTransactions", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_InventoryTransactions_InventoryItems_InventoryItemId",
|
|
column: x => x.InventoryItemId,
|
|
principalTable: "InventoryItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_InventoryTransactions_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InventoryTransactions_PurchaseOrders_PurchaseOrderId",
|
|
column: x => x.PurchaseOrderId,
|
|
principalTable: "PurchaseOrders",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Invoices",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
InvoiceNumber = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
JobId = table.Column<int>(type: "int", nullable: true),
|
|
CustomerId = table.Column<int>(type: "int", nullable: false),
|
|
PreparedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
InvoiceDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
DueDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
SentDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PaidDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
SubTotal = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TaxPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TaxAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
DiscountAmount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Total = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AmountPaid = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CreditApplied = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
GiftCertificateRedeemed = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PublicViewToken = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
OnlinePaymentStatus = table.Column<int>(type: "int", nullable: false),
|
|
PaymentLinkToken = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PaymentLinkExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
StripePaymentIntentId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
OnlineAmountPaid = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
OnlineSurchargeCollected = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
InternalNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Terms = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CustomerPO = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
EarlyPaymentDiscountPercent = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
EarlyPaymentDiscountDays = table.Column<int>(type: "int", nullable: false),
|
|
ExternalReference = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
SalesTaxAccountId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Invoices", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Invoices_Accounts_SalesTaxAccountId",
|
|
column: x => x.SalesTaxAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Invoices_AspNetUsers_PreparedById",
|
|
column: x => x.PreparedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_Invoices_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Invoices_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Invoices_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobChangeHistories",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
ChangedByUserId = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
ChangedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
FieldName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
OldValue = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
NewValue = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ChangeDescription = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobChangeHistories", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobChangeHistories_AspNetUsers_ChangedByUserId",
|
|
column: x => x.ChangedByUserId,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_JobChangeHistories_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_JobChangeHistories_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobDailyPriorities",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
ScheduledDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobDailyPriorities", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobDailyPriorities_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Quantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ColorName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
ColorCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Finish = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SurfaceArea = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
SurfaceAreaSqFt = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CatalogItemId = table.Column<int>(type: "int", nullable: true),
|
|
UnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TotalPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
LaborCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IsGenericItem = table.Column<bool>(type: "bit", nullable: false),
|
|
ManualUnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
PowderCostOverride = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
IsLaborItem = table.Column<bool>(type: "bit", nullable: false),
|
|
IsSalesItem = table.Column<bool>(type: "bit", nullable: false),
|
|
Sku = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IncludePrepCost = table.Column<bool>(type: "bit", nullable: false),
|
|
RequiresSandblasting = table.Column<bool>(type: "bit", nullable: false),
|
|
RequiresMasking = table.Column<bool>(type: "bit", nullable: false),
|
|
EstimatedMinutes = table.Column<int>(type: "int", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Complexity = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsAiItem = table.Column<bool>(type: "bit", nullable: false),
|
|
AiTags = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AiPredictionId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobItems_AiItemPredictions_AiPredictionId",
|
|
column: x => x.AiPredictionId,
|
|
principalTable: "AiItemPredictions",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_JobItems_CatalogItems_CatalogItemId",
|
|
column: x => x.CatalogItemId,
|
|
principalTable: "CatalogItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_JobItems_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobNotes",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
Note = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsImportant = table.Column<bool>(type: "bit", nullable: false),
|
|
IsInternal = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobNotes", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobNotes_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobPhotos",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
FilePath = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FileName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
FileSize = table.Column<long>(type: "bigint", nullable: false),
|
|
ContentType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Caption = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PhotoType = table.Column<int>(type: "int", nullable: false),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
UploadedById = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
UploadedDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Tags = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsAiAnalysisPhoto = table.Column<bool>(type: "bit", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobPhotos", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobPhotos_AspNetUsers_UploadedById",
|
|
column: x => x.UploadedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_JobPhotos_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobPrepServices",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
PrepServiceId = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobPrepServices", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobPrepServices_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_JobPrepServices_PrepServices_PrepServiceId",
|
|
column: x => x.PrepServiceId,
|
|
principalTable: "PrepServices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobStatusHistory",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
FromStatusId = table.Column<int>(type: "int", nullable: false),
|
|
ToStatusId = table.Column<int>(type: "int", nullable: false),
|
|
ChangedDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobStatusHistory", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobStatusHistory_JobStatusLookups_FromStatusId",
|
|
column: x => x.FromStatusId,
|
|
principalTable: "JobStatusLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_JobStatusHistory_JobStatusLookups_ToStatusId",
|
|
column: x => x.ToStatusId,
|
|
principalTable: "JobStatusLookups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_JobStatusHistory_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobTimeEntries",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
UserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UserDisplayName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
WorkDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
HoursWorked = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Stage = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobTimeEntries", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobTimeEntries_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "KioskSessions",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
SessionToken = table.Column<Guid>(type: "uniqueidentifier", nullable: false),
|
|
SessionType = table.Column<int>(type: "int", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
CustomerFirstName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CustomerLastName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CustomerPhone = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CustomerEmail = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsReturningCustomer = table.Column<bool>(type: "bit", nullable: false),
|
|
JobDescription = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
HowDidYouHearAboutUs = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
AgreedToTerms = table.Column<bool>(type: "bit", nullable: false),
|
|
AgreedToTermsAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
SmsOptIn = table.Column<bool>(type: "bit", nullable: false),
|
|
SignatureDataBase64 = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
LinkedCustomerId = table.Column<int>(type: "int", nullable: true),
|
|
LinkedJobId = table.Column<int>(type: "int", nullable: true),
|
|
LinkedQuoteId = table.Column<int>(type: "int", nullable: true),
|
|
SubmittedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ExpiresAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
RemoteLinkEmail = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RemoteLinkSentAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_KioskSessions", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_KioskSessions_Customers_LinkedCustomerId",
|
|
column: x => x.LinkedCustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_KioskSessions_Jobs_LinkedJobId",
|
|
column: x => x.LinkedJobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobTemplateItemCoats",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobTemplateItemId = table.Column<int>(type: "int", nullable: false),
|
|
CoatName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Sequence = table.Column<int>(type: "int", nullable: false),
|
|
InventoryItemId = table.Column<int>(type: "int", nullable: true),
|
|
ColorName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
VendorId = table.Column<int>(type: "int", nullable: true),
|
|
ColorCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Finish = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CoverageSqFtPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TransferEfficiency = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PowderCostPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobTemplateItemCoats", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplateItemCoats_InventoryItems_InventoryItemId",
|
|
column: x => x.InventoryItemId,
|
|
principalTable: "InventoryItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplateItemCoats_JobTemplateItems_JobTemplateItemId",
|
|
column: x => x.JobTemplateItemId,
|
|
principalTable: "JobTemplateItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplateItemCoats_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobTemplateItemPrepServices",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobTemplateItemId = table.Column<int>(type: "int", nullable: false),
|
|
PrepServiceId = table.Column<int>(type: "int", nullable: false),
|
|
EstimatedMinutes = table.Column<int>(type: "int", nullable: false),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobTemplateItemPrepServices", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplateItemPrepServices_JobTemplateItems_JobTemplateItemId",
|
|
column: x => x.JobTemplateItemId,
|
|
principalTable: "JobTemplateItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_JobTemplateItemPrepServices_PrepServices_PrepServiceId",
|
|
column: x => x.PrepServiceId,
|
|
principalTable: "PrepServices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "QuoteItemCoats",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
QuoteItemId = table.Column<int>(type: "int", nullable: false),
|
|
CoatName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Sequence = table.Column<int>(type: "int", nullable: false),
|
|
InventoryItemId = table.Column<int>(type: "int", nullable: true),
|
|
ColorName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
VendorId = table.Column<int>(type: "int", nullable: true),
|
|
ColorCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Finish = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CoverageSqFtPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TransferEfficiency = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PowderCostPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
PowderToOrder = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
CoatMaterialCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CoatLaborCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CoatTotalCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_QuoteItemCoats", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemCoats_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemCoats_InventoryItems_InventoryItemId",
|
|
column: x => x.InventoryItemId,
|
|
principalTable: "InventoryItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemCoats_QuoteItems_QuoteItemId",
|
|
column: x => x.QuoteItemId,
|
|
principalTable: "QuoteItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemCoats_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "QuoteItemPrepServices",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
QuoteItemId = table.Column<int>(type: "int", nullable: false),
|
|
PrepServiceId = table.Column<int>(type: "int", nullable: false),
|
|
EstimatedMinutes = table.Column<int>(type: "int", nullable: false),
|
|
BlastSetupId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_QuoteItemPrepServices", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemPrepServices_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemPrepServices_CompanyBlastSetups_BlastSetupId",
|
|
column: x => x.BlastSetupId,
|
|
principalTable: "CompanyBlastSetups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemPrepServices_PrepServices_PrepServiceId",
|
|
column: x => x.PrepServiceId,
|
|
principalTable: "PrepServices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_QuoteItemPrepServices_QuoteItems_QuoteItemId",
|
|
column: x => x.QuoteItemId,
|
|
principalTable: "QuoteItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Deposits",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
ReceiptNumber = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
CustomerId = table.Column<int>(type: "int", nullable: false),
|
|
JobId = table.Column<int>(type: "int", nullable: true),
|
|
QuoteId = table.Column<int>(type: "int", nullable: true),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PaymentMethod = table.Column<int>(type: "int", nullable: false),
|
|
ReceivedDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Reference = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RecordedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
DepositAccountId = table.Column<int>(type: "int", nullable: true),
|
|
AppliedToInvoiceId = table.Column<int>(type: "int", nullable: true),
|
|
AppliedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Deposits", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Deposits_AspNetUsers_RecordedById",
|
|
column: x => x.RecordedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Deposits_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_Deposits_Invoices_AppliedToInvoiceId",
|
|
column: x => x.AppliedToInvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_Deposits_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Deposits_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "GiftCertificateRedemptions",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
GiftCertificateId = table.Column<int>(type: "int", nullable: false),
|
|
InvoiceId = table.Column<int>(type: "int", nullable: false),
|
|
AmountRedeemed = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RedeemedDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
RedeemedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_GiftCertificateRedemptions", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_GiftCertificateRedemptions_AspNetUsers_RedeemedById",
|
|
column: x => x.RedeemedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_GiftCertificateRedemptions_GiftCertificates_GiftCertificateId",
|
|
column: x => x.GiftCertificateId,
|
|
principalTable: "GiftCertificates",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_GiftCertificateRedemptions_Invoices_InvoiceId",
|
|
column: x => x.InvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "InAppNotifications",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Title = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Message = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Link = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
NotificationType = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
IsRead = table.Column<bool>(type: "bit", nullable: false),
|
|
ReadAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
QuoteId = table.Column<int>(type: "int", nullable: true),
|
|
InvoiceId = table.Column<int>(type: "int", nullable: true),
|
|
CustomerId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_InAppNotifications", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_InAppNotifications_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InAppNotifications_Invoices_InvoiceId",
|
|
column: x => x.InvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InAppNotifications_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "NotificationLogs",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
Channel = table.Column<int>(type: "int", nullable: false),
|
|
NotificationType = table.Column<int>(type: "int", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
RecipientName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Recipient = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Subject = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Message = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
ErrorMessage = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
SentAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
CustomerId = table.Column<int>(type: "int", nullable: true),
|
|
JobId = table.Column<int>(type: "int", nullable: true),
|
|
QuoteId = table.Column<int>(type: "int", nullable: true),
|
|
InvoiceId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_NotificationLogs", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_NotificationLogs_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_NotificationLogs_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_NotificationLogs_Invoices_InvoiceId",
|
|
column: x => x.InvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_NotificationLogs_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_NotificationLogs_Quotes_QuoteId",
|
|
column: x => x.QuoteId,
|
|
principalTable: "Quotes",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Payments",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
InvoiceId = table.Column<int>(type: "int", nullable: false),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PaymentDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
PaymentMethod = table.Column<int>(type: "int", nullable: false),
|
|
Reference = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
RecordedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
DepositAccountId = table.Column<int>(type: "int", nullable: true),
|
|
IsCleared = table.Column<bool>(type: "bit", nullable: false),
|
|
ClearedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Payments", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Payments_Accounts_DepositAccountId",
|
|
column: x => x.DepositAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Payments_AspNetUsers_RecordedById",
|
|
column: x => x.RecordedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_Payments_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Payments_Invoices_InvoiceId",
|
|
column: x => x.InvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "InvoiceItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
InvoiceId = table.Column<int>(type: "int", nullable: false),
|
|
SourceJobItemId = table.Column<int>(type: "int", nullable: true),
|
|
CatalogItemId = table.Column<int>(type: "int", nullable: true),
|
|
Description = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Quantity = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
UnitPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TotalPrice = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ColorName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
DisplayOrder = table.Column<int>(type: "int", nullable: false),
|
|
RevenueAccountId = table.Column<int>(type: "int", nullable: true),
|
|
IsGiftCertificate = table.Column<bool>(type: "bit", nullable: false),
|
|
GcRecipientName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
GcRecipientEmail = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
GcExpiryDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
GeneratedGiftCertificateId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_InvoiceItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_InvoiceItems_Accounts_RevenueAccountId",
|
|
column: x => x.RevenueAccountId,
|
|
principalTable: "Accounts",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InvoiceItems_CatalogItems_CatalogItemId",
|
|
column: x => x.CatalogItemId,
|
|
principalTable: "CatalogItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InvoiceItems_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_InvoiceItems_GiftCertificates_GeneratedGiftCertificateId",
|
|
column: x => x.GeneratedGiftCertificateId,
|
|
principalTable: "GiftCertificates",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_InvoiceItems_Invoices_InvoiceId",
|
|
column: x => x.InvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_InvoiceItems_JobItems_SourceJobItemId",
|
|
column: x => x.SourceJobItemId,
|
|
principalTable: "JobItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobItemCoats",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobItemId = table.Column<int>(type: "int", nullable: false),
|
|
CoatName = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Sequence = table.Column<int>(type: "int", nullable: false),
|
|
InventoryItemId = table.Column<int>(type: "int", nullable: true),
|
|
ColorName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
VendorId = table.Column<int>(type: "int", nullable: true),
|
|
ColorCode = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Finish = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CoverageSqFtPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
TransferEfficiency = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
PowderCostPerLb = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
PowderToOrder = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
ActualPowderUsedLbs = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
PowderOrdered = table.Column<bool>(type: "bit", nullable: false),
|
|
PowderOrderedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PowderOrderedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PowderReceived = table.Column<bool>(type: "bit", nullable: false),
|
|
PowderReceivedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
PowderReceivedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
PowderReceivedLbs = table.Column<decimal>(type: "decimal(18,2)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobItemCoats", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobItemCoats_InventoryItems_InventoryItemId",
|
|
column: x => x.InventoryItemId,
|
|
principalTable: "InventoryItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_JobItemCoats_JobItems_JobItemId",
|
|
column: x => x.JobItemId,
|
|
principalTable: "JobItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_JobItemCoats_Vendors_VendorId",
|
|
column: x => x.VendorId,
|
|
principalTable: "Vendors",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "JobItemPrepServices",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobItemId = table.Column<int>(type: "int", nullable: false),
|
|
PrepServiceId = table.Column<int>(type: "int", nullable: false),
|
|
EstimatedMinutes = table.Column<int>(type: "int", nullable: false),
|
|
BlastSetupId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_JobItemPrepServices", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_JobItemPrepServices_Companies_CompanyId",
|
|
column: x => x.CompanyId,
|
|
principalTable: "Companies",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_JobItemPrepServices_CompanyBlastSetups_BlastSetupId",
|
|
column: x => x.BlastSetupId,
|
|
principalTable: "CompanyBlastSetups",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.SetNull);
|
|
table.ForeignKey(
|
|
name: "FK_JobItemPrepServices_JobItems_JobItemId",
|
|
column: x => x.JobItemId,
|
|
principalTable: "JobItems",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
table.ForeignKey(
|
|
name: "FK_JobItemPrepServices_PrepServices_PrepServiceId",
|
|
column: x => x.PrepServiceId,
|
|
principalTable: "PrepServices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "ReworkRecords",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
JobItemId = table.Column<int>(type: "int", nullable: true),
|
|
ReworkJobId = table.Column<int>(type: "int", nullable: true),
|
|
ReworkType = table.Column<int>(type: "int", nullable: false),
|
|
Reason = table.Column<int>(type: "int", nullable: false),
|
|
DefectDescription = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
DiscoveredBy = table.Column<int>(type: "int", nullable: false),
|
|
DiscoveredDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ReportedByName = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
EstimatedReworkCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
ActualReworkCost = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IsBillableToCustomer = table.Column<bool>(type: "bit", nullable: false),
|
|
BillingNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
Resolution = table.Column<int>(type: "int", nullable: true),
|
|
ResolvedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
ResolutionNotes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_ReworkRecords", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_ReworkRecords_JobItems_JobItemId",
|
|
column: x => x.JobItemId,
|
|
principalTable: "JobItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_ReworkRecords_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_ReworkRecords_Jobs_ReworkJobId",
|
|
column: x => x.ReworkJobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "OvenBatchItems",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
OvenBatchId = table.Column<int>(type: "int", nullable: false),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
JobItemId = table.Column<int>(type: "int", nullable: false),
|
|
JobItemCoatId = table.Column<int>(type: "int", nullable: false),
|
|
SurfaceAreaContribution = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
CoatPassNumber = table.Column<int>(type: "int", nullable: false),
|
|
SortOrder = table.Column<int>(type: "int", nullable: false),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_OvenBatchItems", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_OvenBatchItems_JobItemCoats_JobItemCoatId",
|
|
column: x => x.JobItemCoatId,
|
|
principalTable: "JobItemCoats",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_OvenBatchItems_JobItems_JobItemId",
|
|
column: x => x.JobItemId,
|
|
principalTable: "JobItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_OvenBatchItems_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_OvenBatchItems_OvenBatches_OvenBatchId",
|
|
column: x => x.OvenBatchId,
|
|
principalTable: "OvenBatches",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Cascade);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "PowderUsageLogs",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
JobId = table.Column<int>(type: "int", nullable: false),
|
|
JobItemId = table.Column<int>(type: "int", nullable: false),
|
|
JobItemCoatId = table.Column<int>(type: "int", nullable: false),
|
|
InventoryItemId = table.Column<int>(type: "int", nullable: true),
|
|
InventoryTransactionId = table.Column<int>(type: "int", nullable: true),
|
|
ActualLbsUsed = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
EstimatedLbs = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
VarianceLbs = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RecordedByUserId = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
RecordedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_PowderUsageLogs", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_PowderUsageLogs_InventoryItems_InventoryItemId",
|
|
column: x => x.InventoryItemId,
|
|
principalTable: "InventoryItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_PowderUsageLogs_InventoryTransactions_InventoryTransactionId",
|
|
column: x => x.InventoryTransactionId,
|
|
principalTable: "InventoryTransactions",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_PowderUsageLogs_JobItemCoats_JobItemCoatId",
|
|
column: x => x.JobItemCoatId,
|
|
principalTable: "JobItemCoats",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_PowderUsageLogs_JobItems_JobItemId",
|
|
column: x => x.JobItemId,
|
|
principalTable: "JobItems",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_PowderUsageLogs_Jobs_JobId",
|
|
column: x => x.JobId,
|
|
principalTable: "Jobs",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CreditMemos",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
MemoNumber = table.Column<string>(type: "nvarchar(450)", nullable: false),
|
|
CustomerId = table.Column<int>(type: "int", nullable: false),
|
|
OriginalInvoiceId = table.Column<int>(type: "int", nullable: true),
|
|
ReworkRecordId = table.Column<int>(type: "int", nullable: true),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AmountApplied = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
IssueDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
ExpiryDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
Reason = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
IssuedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CreditMemos", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CreditMemos_AspNetUsers_IssuedById",
|
|
column: x => x.IssuedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_CreditMemos_Customers_CustomerId",
|
|
column: x => x.CustomerId,
|
|
principalTable: "Customers",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_CreditMemos_Invoices_OriginalInvoiceId",
|
|
column: x => x.OriginalInvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_CreditMemos_ReworkRecords_ReworkRecordId",
|
|
column: x => x.ReworkRecordId,
|
|
principalTable: "ReworkRecords",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "CreditMemoApplications",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
CreditMemoId = table.Column<int>(type: "int", nullable: false),
|
|
InvoiceId = table.Column<int>(type: "int", nullable: false),
|
|
AmountApplied = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
AppliedDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
AppliedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_CreditMemoApplications", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_CreditMemoApplications_AspNetUsers_AppliedById",
|
|
column: x => x.AppliedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_CreditMemoApplications_CreditMemos_CreditMemoId",
|
|
column: x => x.CreditMemoId,
|
|
principalTable: "CreditMemos",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_CreditMemoApplications_Invoices_InvoiceId",
|
|
column: x => x.InvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
});
|
|
|
|
migrationBuilder.CreateTable(
|
|
name: "Refunds",
|
|
columns: table => new
|
|
{
|
|
Id = table.Column<int>(type: "int", nullable: false)
|
|
.Annotation("SqlServer:Identity", "1, 1"),
|
|
InvoiceId = table.Column<int>(type: "int", nullable: false),
|
|
PaymentId = table.Column<int>(type: "int", nullable: true),
|
|
Amount = table.Column<decimal>(type: "decimal(18,2)", nullable: false),
|
|
RefundDate = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
RefundMethod = table.Column<int>(type: "int", nullable: false),
|
|
Reason = table.Column<string>(type: "nvarchar(max)", nullable: false),
|
|
Reference = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Notes = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
Status = table.Column<int>(type: "int", nullable: false),
|
|
IssuedDate = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
IssuedById = table.Column<string>(type: "nvarchar(450)", nullable: true),
|
|
DepositAccountId = table.Column<int>(type: "int", nullable: true),
|
|
CreditMemoId = table.Column<int>(type: "int", nullable: true),
|
|
CompanyId = table.Column<int>(type: "int", nullable: false),
|
|
CreatedAt = table.Column<DateTime>(type: "datetime2", nullable: false),
|
|
UpdatedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
CreatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
UpdatedBy = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
|
IsDeleted = table.Column<bool>(type: "bit", nullable: false),
|
|
DeletedAt = table.Column<DateTime>(type: "datetime2", nullable: true),
|
|
DeletedBy = table.Column<string>(type: "nvarchar(max)", nullable: true)
|
|
},
|
|
constraints: table =>
|
|
{
|
|
table.PrimaryKey("PK_Refunds", x => x.Id);
|
|
table.ForeignKey(
|
|
name: "FK_Refunds_AspNetUsers_IssuedById",
|
|
column: x => x.IssuedById,
|
|
principalTable: "AspNetUsers",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Refunds_CreditMemos_CreditMemoId",
|
|
column: x => x.CreditMemoId,
|
|
principalTable: "CreditMemos",
|
|
principalColumn: "Id");
|
|
table.ForeignKey(
|
|
name: "FK_Refunds_Invoices_InvoiceId",
|
|
column: x => x.InvoiceId,
|
|
principalTable: "Invoices",
|
|
principalColumn: "Id",
|
|
onDelete: ReferentialAction.Restrict);
|
|
table.ForeignKey(
|
|
name: "FK_Refunds_Payments_PaymentId",
|
|
column: x => x.PaymentId,
|
|
principalTable: "Payments",
|
|
principalColumn: "Id");
|
|
});
|
|
|
|
// PricingTier seed rows (CompanyId=0) omitted — they violate the Companies FK
|
|
// on a fresh database. These tiers are created per-company by SeedDataService.
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Accounts_ParentAccountId",
|
|
table: "Accounts",
|
|
column: "ParentAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AiUsageLogs_CompanyId_CalledAt",
|
|
table: "AiUsageLogs",
|
|
columns: new[] { "CompanyId", "CalledAt" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AnnouncementDismissals_AnnouncementId_UserId",
|
|
table: "AnnouncementDismissals",
|
|
columns: new[] { "AnnouncementId", "UserId" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_AppointmentStatusId",
|
|
table: "Appointments",
|
|
column: "AppointmentStatusId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_AppointmentTypeId",
|
|
table: "Appointments",
|
|
column: "AppointmentTypeId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_AssignedUserId",
|
|
table: "Appointments",
|
|
column: "AssignedUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_CompanyId_AppointmentStatusId",
|
|
table: "Appointments",
|
|
columns: new[] { "CompanyId", "AppointmentStatusId" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_CompanyId_ScheduledStartTime",
|
|
table: "Appointments",
|
|
columns: new[] { "CompanyId", "ScheduledStartTime" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_CustomerId",
|
|
table: "Appointments",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_JobId",
|
|
table: "Appointments",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Appointments_ScheduledStartTime",
|
|
table: "Appointments",
|
|
column: "ScheduledStartTime");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AspNetRoleClaims_RoleId",
|
|
table: "AspNetRoleClaims",
|
|
column: "RoleId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "RoleNameIndex",
|
|
table: "AspNetRoles",
|
|
column: "NormalizedName",
|
|
unique: true,
|
|
filter: "[NormalizedName] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AspNetUserClaims_UserId",
|
|
table: "AspNetUserClaims",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AspNetUserLogins_UserId",
|
|
table: "AspNetUserLogins",
|
|
column: "UserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AspNetUserRoles_RoleId",
|
|
table: "AspNetUserRoles",
|
|
column: "RoleId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "EmailIndex",
|
|
table: "AspNetUsers",
|
|
column: "NormalizedEmail");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AspNetUsers_CompanyId",
|
|
table: "AspNetUsers",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "UserNameIndex",
|
|
table: "AspNetUsers",
|
|
column: "NormalizedUserName",
|
|
unique: true,
|
|
filter: "[NormalizedUserName] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AuditLogs_CompanyId_Timestamp",
|
|
table: "AuditLogs",
|
|
columns: new[] { "CompanyId", "Timestamp" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_AuditLogs_EntityType_EntityId",
|
|
table: "AuditLogs",
|
|
columns: new[] { "EntityType", "EntityId" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BankReconciliations_AccountId",
|
|
table: "BankReconciliations",
|
|
column: "AccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BillLineItems_AccountId",
|
|
table: "BillLineItems",
|
|
column: "AccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BillLineItems_BillId",
|
|
table: "BillLineItems",
|
|
column: "BillId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BillLineItems_JobId",
|
|
table: "BillLineItems",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BillPayments_BankAccountId",
|
|
table: "BillPayments",
|
|
column: "BankAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BillPayments_BillId",
|
|
table: "BillPayments",
|
|
column: "BillId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BillPayments_VendorId",
|
|
table: "BillPayments",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Bills_APAccountId",
|
|
table: "Bills",
|
|
column: "APAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Bills_CompanyId_Status",
|
|
table: "Bills",
|
|
columns: new[] { "CompanyId", "Status" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Bills_DueDate",
|
|
table: "Bills",
|
|
column: "DueDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Bills_Status",
|
|
table: "Bills",
|
|
column: "Status");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Bills_VendorId",
|
|
table: "Bills",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BudgetLines_AccountId",
|
|
table: "BudgetLines",
|
|
column: "AccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BudgetLines_BudgetId",
|
|
table: "BudgetLines",
|
|
column: "BudgetId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_BugReportAttachments_BugReportId",
|
|
table: "BugReportAttachments",
|
|
column: "BugReportId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CatalogCategories_CompanyId",
|
|
table: "CatalogCategories",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CatalogCategories_ParentCategoryId",
|
|
table: "CatalogCategories",
|
|
column: "ParentCategoryId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CatalogItems_CategoryId",
|
|
table: "CatalogItems",
|
|
column: "CategoryId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CatalogItems_CogsAccountId",
|
|
table: "CatalogItems",
|
|
column: "CogsAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CatalogItems_CompanyId",
|
|
table: "CatalogItems",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CatalogItems_InventoryItemId",
|
|
table: "CatalogItems",
|
|
column: "InventoryItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CatalogItems_RevenueAccountId",
|
|
table: "CatalogItems",
|
|
column: "RevenueAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Companies_CompanyCode",
|
|
table: "Companies",
|
|
column: "CompanyCode",
|
|
unique: true,
|
|
filter: "[CompanyCode] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CompanyBlastSetups_CompanyId",
|
|
table: "CompanyBlastSetups",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CompanyOperatingCosts_CompanyId",
|
|
table: "CompanyOperatingCosts",
|
|
column: "CompanyId",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CompanyPreferences_CompanyId",
|
|
table: "CompanyPreferences",
|
|
column: "CompanyId",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemoApplications_AppliedById",
|
|
table: "CreditMemoApplications",
|
|
column: "AppliedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemoApplications_CreditMemoId",
|
|
table: "CreditMemoApplications",
|
|
column: "CreditMemoId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemoApplications_InvoiceId",
|
|
table: "CreditMemoApplications",
|
|
column: "InvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemos_CompanyId_MemoNumber",
|
|
table: "CreditMemos",
|
|
columns: new[] { "CompanyId", "MemoNumber" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemos_CustomerId",
|
|
table: "CreditMemos",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemos_IssuedById",
|
|
table: "CreditMemos",
|
|
column: "IssuedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemos_OriginalInvoiceId",
|
|
table: "CreditMemos",
|
|
column: "OriginalInvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CreditMemos_ReworkRecordId",
|
|
table: "CreditMemos",
|
|
column: "ReworkRecordId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_CustomerNotes_CustomerId_CreatedAt",
|
|
table: "CustomerNotes",
|
|
columns: new[] { "CustomerId", "CreatedAt" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Customers_CompanyId",
|
|
table: "Customers",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Customers_CompanyId_Email",
|
|
table: "Customers",
|
|
columns: new[] { "CompanyId", "Email" },
|
|
unique: true,
|
|
filter: "[Email] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Customers_CompanyName",
|
|
table: "Customers",
|
|
column: "CompanyName");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Customers_PricingTierId",
|
|
table: "Customers",
|
|
column: "PricingTierId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Customers_UnsubscribeToken",
|
|
table: "Customers",
|
|
column: "UnsubscribeToken",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Deposits_AppliedToInvoiceId",
|
|
table: "Deposits",
|
|
column: "AppliedToInvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Deposits_CustomerId",
|
|
table: "Deposits",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Deposits_JobId",
|
|
table: "Deposits",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Deposits_QuoteId",
|
|
table: "Deposits",
|
|
column: "QuoteId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Deposits_RecordedById",
|
|
table: "Deposits",
|
|
column: "RecordedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Equipment_CompanyId",
|
|
table: "Equipment",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Equipment_CompanyId_Status",
|
|
table: "Equipment",
|
|
columns: new[] { "CompanyId", "Status" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Expenses_ExpenseAccountId",
|
|
table: "Expenses",
|
|
column: "ExpenseAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Expenses_JobId",
|
|
table: "Expenses",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Expenses_PaymentAccountId",
|
|
table: "Expenses",
|
|
column: "PaymentAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Expenses_VendorId",
|
|
table: "Expenses",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_FixedAssetDepreciationEntries_FixedAssetId",
|
|
table: "FixedAssetDepreciationEntries",
|
|
column: "FixedAssetId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_FixedAssetDepreciationEntries_JournalEntryId",
|
|
table: "FixedAssetDepreciationEntries",
|
|
column: "JournalEntryId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_FixedAssets_AccumDepreciationAccountId",
|
|
table: "FixedAssets",
|
|
column: "AccumDepreciationAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_FixedAssets_AssetAccountId",
|
|
table: "FixedAssets",
|
|
column: "AssetAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_FixedAssets_DepreciationExpenseAccountId",
|
|
table: "FixedAssets",
|
|
column: "DepreciationExpenseAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GiftCertificateRedemptions_GiftCertificateId",
|
|
table: "GiftCertificateRedemptions",
|
|
column: "GiftCertificateId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GiftCertificateRedemptions_InvoiceId",
|
|
table: "GiftCertificateRedemptions",
|
|
column: "InvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GiftCertificateRedemptions_RedeemedById",
|
|
table: "GiftCertificateRedemptions",
|
|
column: "RedeemedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GiftCertificates_CompanyId_CertificateCode",
|
|
table: "GiftCertificates",
|
|
columns: new[] { "CompanyId", "CertificateCode" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GiftCertificates_IssuedById",
|
|
table: "GiftCertificates",
|
|
column: "IssuedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GiftCertificates_PurchasingCustomerId",
|
|
table: "GiftCertificates",
|
|
column: "PurchasingCustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_GiftCertificates_RecipientCustomerId",
|
|
table: "GiftCertificates",
|
|
column: "RecipientCustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InAppNotifications_CustomerId",
|
|
table: "InAppNotifications",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InAppNotifications_InvoiceId",
|
|
table: "InAppNotifications",
|
|
column: "InvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InAppNotifications_QuoteId",
|
|
table: "InAppNotifications",
|
|
column: "QuoteId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryCategoryLookups_CompanyId",
|
|
table: "InventoryCategoryLookups",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryCategoryLookups_CompanyId_CategoryCode",
|
|
table: "InventoryCategoryLookups",
|
|
columns: new[] { "CompanyId", "CategoryCode" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_CogsAccountId",
|
|
table: "InventoryItems",
|
|
column: "CogsAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_CompanyId",
|
|
table: "InventoryItems",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_CompanyId_IsActive",
|
|
table: "InventoryItems",
|
|
columns: new[] { "CompanyId", "IsActive" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_CompanyId_Quantity_Reorder",
|
|
table: "InventoryItems",
|
|
columns: new[] { "CompanyId", "QuantityOnHand", "ReorderPoint" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_CompanyId_SKU",
|
|
table: "InventoryItems",
|
|
columns: new[] { "CompanyId", "SKU" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_InventoryAccountId",
|
|
table: "InventoryItems",
|
|
column: "InventoryAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_InventoryCategoryId",
|
|
table: "InventoryItems",
|
|
column: "InventoryCategoryId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_IsActive",
|
|
table: "InventoryItems",
|
|
column: "IsActive");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryItems_PrimaryVendorId",
|
|
table: "InventoryItems",
|
|
column: "PrimaryVendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryTransactions_InventoryItemId",
|
|
table: "InventoryTransactions",
|
|
column: "InventoryItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryTransactions_JobId",
|
|
table: "InventoryTransactions",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryTransactions_PurchaseOrderId",
|
|
table: "InventoryTransactions",
|
|
column: "PurchaseOrderId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InventoryTransactions_TransactionType_TransactionDate",
|
|
table: "InventoryTransactions",
|
|
columns: new[] { "TransactionType", "TransactionDate" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InvoiceItems_CatalogItemId",
|
|
table: "InvoiceItems",
|
|
column: "CatalogItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InvoiceItems_CompanyId",
|
|
table: "InvoiceItems",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InvoiceItems_GeneratedGiftCertificateId",
|
|
table: "InvoiceItems",
|
|
column: "GeneratedGiftCertificateId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InvoiceItems_InvoiceId",
|
|
table: "InvoiceItems",
|
|
column: "InvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InvoiceItems_RevenueAccountId",
|
|
table: "InvoiceItems",
|
|
column: "RevenueAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_InvoiceItems_SourceJobItemId",
|
|
table: "InvoiceItems",
|
|
column: "SourceJobItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CompanyId_CustomerId",
|
|
table: "Invoices",
|
|
columns: new[] { "CompanyId", "CustomerId" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CompanyId_DueDate",
|
|
table: "Invoices",
|
|
columns: new[] { "CompanyId", "DueDate" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CompanyId_ExternalReference",
|
|
table: "Invoices",
|
|
columns: new[] { "CompanyId", "ExternalReference" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CompanyId_InvoiceNumber",
|
|
table: "Invoices",
|
|
columns: new[] { "CompanyId", "InvoiceNumber" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CompanyId_IsDeleted",
|
|
table: "Invoices",
|
|
columns: new[] { "CompanyId", "IsDeleted" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CompanyId_JobId",
|
|
table: "Invoices",
|
|
columns: new[] { "CompanyId", "JobId" },
|
|
unique: true,
|
|
filter: "[JobId] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CompanyId_Status",
|
|
table: "Invoices",
|
|
columns: new[] { "CompanyId", "Status" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_CustomerId",
|
|
table: "Invoices",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_DueDate",
|
|
table: "Invoices",
|
|
column: "DueDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_InvoiceDate",
|
|
table: "Invoices",
|
|
column: "InvoiceDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_JobId",
|
|
table: "Invoices",
|
|
column: "JobId",
|
|
unique: true,
|
|
filter: "[JobId] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_PreparedById",
|
|
table: "Invoices",
|
|
column: "PreparedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_SalesTaxAccountId",
|
|
table: "Invoices",
|
|
column: "SalesTaxAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Invoices_Status",
|
|
table: "Invoices",
|
|
column: "Status");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobChangeHistories_ChangedByUserId",
|
|
table: "JobChangeHistories",
|
|
column: "ChangedByUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobChangeHistories_CompanyId",
|
|
table: "JobChangeHistories",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobChangeHistories_JobId",
|
|
table: "JobChangeHistories",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobDailyPriorities_JobId",
|
|
table: "JobDailyPriorities",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItemCoats_InventoryItemId",
|
|
table: "JobItemCoats",
|
|
column: "InventoryItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItemCoats_JobItemId",
|
|
table: "JobItemCoats",
|
|
column: "JobItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItemCoats_VendorId",
|
|
table: "JobItemCoats",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItemPrepServices_BlastSetupId",
|
|
table: "JobItemPrepServices",
|
|
column: "BlastSetupId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItemPrepServices_CompanyId",
|
|
table: "JobItemPrepServices",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItemPrepServices_JobItemId",
|
|
table: "JobItemPrepServices",
|
|
column: "JobItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItemPrepServices_PrepServiceId",
|
|
table: "JobItemPrepServices",
|
|
column: "PrepServiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItems_AiPredictionId",
|
|
table: "JobItems",
|
|
column: "AiPredictionId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItems_CatalogItemId",
|
|
table: "JobItems",
|
|
column: "CatalogItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItems_JobId",
|
|
table: "JobItems",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobItems_JobId_IsDeleted",
|
|
table: "JobItems",
|
|
columns: new[] { "JobId", "IsDeleted" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobNotes_JobId_CreatedAt",
|
|
table: "JobNotes",
|
|
columns: new[] { "JobId", "CreatedAt" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobPhotos_JobId_IsDeleted_DisplayOrder",
|
|
table: "JobPhotos",
|
|
columns: new[] { "JobId", "IsDeleted", "DisplayOrder" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobPhotos_UploadedById",
|
|
table: "JobPhotos",
|
|
column: "UploadedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobPrepServices_JobId",
|
|
table: "JobPrepServices",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobPrepServices_PrepServiceId",
|
|
table: "JobPrepServices",
|
|
column: "PrepServiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobPriorityLookups_CompanyId",
|
|
table: "JobPriorityLookups",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobPriorityLookups_CompanyId_PriorityCode",
|
|
table: "JobPriorityLookups",
|
|
columns: new[] { "CompanyId", "PriorityCode" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_AssignedUserId",
|
|
table: "Jobs",
|
|
column: "AssignedUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId",
|
|
table: "Jobs",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_CustomerId",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "CustomerId" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_DueDate",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "DueDate" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_IsDeleted",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "IsDeleted" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_JobNumber",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "JobNumber" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_JobPriorityId",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "JobPriorityId" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_JobStatusId",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "JobStatusId" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_ScheduledDate",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "ScheduledDate" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CompanyId_ShopAccessCode",
|
|
table: "Jobs",
|
|
columns: new[] { "CompanyId", "ShopAccessCode" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_CustomerId",
|
|
table: "Jobs",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_DueDate",
|
|
table: "Jobs",
|
|
column: "DueDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_IntakeCheckedByUserId",
|
|
table: "Jobs",
|
|
column: "IntakeCheckedByUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_JobPriorityId",
|
|
table: "Jobs",
|
|
column: "JobPriorityId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_JobStatusId",
|
|
table: "Jobs",
|
|
column: "JobStatusId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_OriginalJobId",
|
|
table: "Jobs",
|
|
column: "OriginalJobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_OvenCostId",
|
|
table: "Jobs",
|
|
column: "OvenCostId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_QuoteId",
|
|
table: "Jobs",
|
|
column: "QuoteId",
|
|
unique: true,
|
|
filter: "[QuoteId] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Jobs_ScheduledDate",
|
|
table: "Jobs",
|
|
column: "ScheduledDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobStatusHistory_FromStatusId",
|
|
table: "JobStatusHistory",
|
|
column: "FromStatusId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobStatusHistory_JobId",
|
|
table: "JobStatusHistory",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobStatusHistory_ToStatusId",
|
|
table: "JobStatusHistory",
|
|
column: "ToStatusId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobStatusLookups_CompanyId",
|
|
table: "JobStatusLookups",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobStatusLookups_CompanyId_StatusCode",
|
|
table: "JobStatusLookups",
|
|
columns: new[] { "CompanyId", "StatusCode" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplateItemCoats_InventoryItemId",
|
|
table: "JobTemplateItemCoats",
|
|
column: "InventoryItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplateItemCoats_JobTemplateItemId",
|
|
table: "JobTemplateItemCoats",
|
|
column: "JobTemplateItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplateItemCoats_VendorId",
|
|
table: "JobTemplateItemCoats",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplateItemPrepServices_JobTemplateItemId",
|
|
table: "JobTemplateItemPrepServices",
|
|
column: "JobTemplateItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplateItemPrepServices_PrepServiceId",
|
|
table: "JobTemplateItemPrepServices",
|
|
column: "PrepServiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplateItems_CatalogItemId",
|
|
table: "JobTemplateItems",
|
|
column: "CatalogItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplateItems_JobTemplateId",
|
|
table: "JobTemplateItems",
|
|
column: "JobTemplateId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTemplates_CustomerId",
|
|
table: "JobTemplates",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JobTimeEntries_JobId",
|
|
table: "JobTimeEntries",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JournalEntries_ReversalOfId",
|
|
table: "JournalEntries",
|
|
column: "ReversalOfId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JournalEntryLines_AccountId",
|
|
table: "JournalEntryLines",
|
|
column: "AccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_JournalEntryLines_JournalEntryId",
|
|
table: "JournalEntryLines",
|
|
column: "JournalEntryId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_KioskSessions_LinkedCustomerId",
|
|
table: "KioskSessions",
|
|
column: "LinkedCustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_KioskSessions_LinkedJobId",
|
|
table: "KioskSessions",
|
|
column: "LinkedJobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_KioskSessions_SessionToken",
|
|
table: "KioskSessions",
|
|
column: "SessionToken",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_AssignedUserId",
|
|
table: "MaintenanceRecords",
|
|
column: "AssignedUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_CompanyId_ScheduledDate",
|
|
table: "MaintenanceRecords",
|
|
columns: new[] { "CompanyId", "ScheduledDate" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_CompanyId_Status",
|
|
table: "MaintenanceRecords",
|
|
columns: new[] { "CompanyId", "Status" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_EquipmentId",
|
|
table: "MaintenanceRecords",
|
|
column: "EquipmentId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_PerformedById",
|
|
table: "MaintenanceRecords",
|
|
column: "PerformedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_RecurrenceParentId",
|
|
table: "MaintenanceRecords",
|
|
column: "RecurrenceParentId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_ScheduledDate",
|
|
table: "MaintenanceRecords",
|
|
column: "ScheduledDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_MaintenanceRecords_Status",
|
|
table: "MaintenanceRecords",
|
|
column: "Status");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_NotificationLogs_CompanyId_SentAt",
|
|
table: "NotificationLogs",
|
|
columns: new[] { "CompanyId", "SentAt" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_NotificationLogs_CompanyId_Status",
|
|
table: "NotificationLogs",
|
|
columns: new[] { "CompanyId", "Status" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_NotificationLogs_CustomerId",
|
|
table: "NotificationLogs",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_NotificationLogs_InvoiceId",
|
|
table: "NotificationLogs",
|
|
column: "InvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_NotificationLogs_JobId",
|
|
table: "NotificationLogs",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_NotificationLogs_QuoteId",
|
|
table: "NotificationLogs",
|
|
column: "QuoteId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_NotificationTemplates_Company_Type_Channel",
|
|
table: "NotificationTemplates",
|
|
columns: new[] { "CompanyId", "NotificationType", "Channel" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenBatches_EquipmentId",
|
|
table: "OvenBatches",
|
|
column: "EquipmentId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenBatches_OvenCostId",
|
|
table: "OvenBatches",
|
|
column: "OvenCostId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenBatches_ScheduledDate_Status",
|
|
table: "OvenBatches",
|
|
columns: new[] { "ScheduledDate", "Status" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenBatchItems_JobId",
|
|
table: "OvenBatchItems",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenBatchItems_JobItemCoatId",
|
|
table: "OvenBatchItems",
|
|
column: "JobItemCoatId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenBatchItems_JobItemId",
|
|
table: "OvenBatchItems",
|
|
column: "JobItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenBatchItems_OvenBatchId",
|
|
table: "OvenBatchItems",
|
|
column: "OvenBatchId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_OvenCosts_CompanyId",
|
|
table: "OvenCosts",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Payments_CompanyId_PaymentDate",
|
|
table: "Payments",
|
|
columns: new[] { "CompanyId", "PaymentDate" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Payments_DepositAccountId",
|
|
table: "Payments",
|
|
column: "DepositAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Payments_InvoiceId",
|
|
table: "Payments",
|
|
column: "InvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Payments_PaymentDate",
|
|
table: "Payments",
|
|
column: "PaymentDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Payments_RecordedById",
|
|
table: "Payments",
|
|
column: "RecordedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PowderCatalogItems_ColorName",
|
|
table: "PowderCatalogItems",
|
|
column: "ColorName");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PowderCatalogItems_Vendor_Sku",
|
|
table: "PowderCatalogItems",
|
|
columns: new[] { "VendorName", "Sku" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PowderUsageLogs_InventoryItemId",
|
|
table: "PowderUsageLogs",
|
|
column: "InventoryItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PowderUsageLogs_InventoryTransactionId",
|
|
table: "PowderUsageLogs",
|
|
column: "InventoryTransactionId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PowderUsageLogs_JobId",
|
|
table: "PowderUsageLogs",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PowderUsageLogs_JobItemCoatId",
|
|
table: "PowderUsageLogs",
|
|
column: "JobItemCoatId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PowderUsageLogs_JobItemId",
|
|
table: "PowderUsageLogs",
|
|
column: "JobItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PricingTiers_CompanyId",
|
|
table: "PricingTiers",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PurchaseOrderItems_InventoryItemId",
|
|
table: "PurchaseOrderItems",
|
|
column: "InventoryItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PurchaseOrderItems_PurchaseOrderId",
|
|
table: "PurchaseOrderItems",
|
|
column: "PurchaseOrderId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PurchaseOrders_BillId",
|
|
table: "PurchaseOrders",
|
|
column: "BillId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_PurchaseOrders_VendorId",
|
|
table: "PurchaseOrders",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteChangeHistories_ChangedByUserId",
|
|
table: "QuoteChangeHistories",
|
|
column: "ChangedByUserId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteChangeHistories_CompanyId",
|
|
table: "QuoteChangeHistories",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteChangeHistories_QuoteId",
|
|
table: "QuoteChangeHistories",
|
|
column: "QuoteId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemCoats_CompanyId",
|
|
table: "QuoteItemCoats",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemCoats_InventoryItemId",
|
|
table: "QuoteItemCoats",
|
|
column: "InventoryItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemCoats_QuoteItemId",
|
|
table: "QuoteItemCoats",
|
|
column: "QuoteItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemCoats_VendorId",
|
|
table: "QuoteItemCoats",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemPrepServices_BlastSetupId",
|
|
table: "QuoteItemPrepServices",
|
|
column: "BlastSetupId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemPrepServices_CompanyId",
|
|
table: "QuoteItemPrepServices",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemPrepServices_PrepServiceId",
|
|
table: "QuoteItemPrepServices",
|
|
column: "PrepServiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItemPrepServices_QuoteItemId",
|
|
table: "QuoteItemPrepServices",
|
|
column: "QuoteItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItems_AiPredictionId",
|
|
table: "QuoteItems",
|
|
column: "AiPredictionId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItems_CatalogItemId",
|
|
table: "QuoteItems",
|
|
column: "CatalogItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteItems_QuoteId",
|
|
table: "QuoteItems",
|
|
column: "QuoteId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuotePhotos_QuoteId",
|
|
table: "QuotePhotos",
|
|
column: "QuoteId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuotePhotos_UploadedById",
|
|
table: "QuotePhotos",
|
|
column: "UploadedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuotePrepServices_PrepServiceId",
|
|
table: "QuotePrepServices",
|
|
column: "PrepServiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuotePrepServices_QuoteId",
|
|
table: "QuotePrepServices",
|
|
column: "QuoteId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_ApprovalToken",
|
|
table: "Quotes",
|
|
column: "ApprovalToken",
|
|
unique: true,
|
|
filter: "[ApprovalToken] IS NOT NULL");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_CompanyId",
|
|
table: "Quotes",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_CompanyId_ExpirationDate",
|
|
table: "Quotes",
|
|
columns: new[] { "CompanyId", "ExpirationDate" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_CompanyId_IsDeleted",
|
|
table: "Quotes",
|
|
columns: new[] { "CompanyId", "IsDeleted" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_CompanyId_QuoteNumber",
|
|
table: "Quotes",
|
|
columns: new[] { "CompanyId", "QuoteNumber" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_CompanyId_QuoteStatusId",
|
|
table: "Quotes",
|
|
columns: new[] { "CompanyId", "QuoteStatusId" });
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_CustomerId",
|
|
table: "Quotes",
|
|
column: "CustomerId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_ExpirationDate",
|
|
table: "Quotes",
|
|
column: "ExpirationDate");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_OvenCostId",
|
|
table: "Quotes",
|
|
column: "OvenCostId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_PreparedById",
|
|
table: "Quotes",
|
|
column: "PreparedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Quotes_QuoteStatusId",
|
|
table: "Quotes",
|
|
column: "QuoteStatusId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteStatusLookups_CompanyId",
|
|
table: "QuoteStatusLookups",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_QuoteStatusLookups_CompanyId_StatusCode",
|
|
table: "QuoteStatusLookups",
|
|
columns: new[] { "CompanyId", "StatusCode" },
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Refunds_CreditMemoId",
|
|
table: "Refunds",
|
|
column: "CreditMemoId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Refunds_InvoiceId",
|
|
table: "Refunds",
|
|
column: "InvoiceId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Refunds_IssuedById",
|
|
table: "Refunds",
|
|
column: "IssuedById");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Refunds_PaymentId",
|
|
table: "Refunds",
|
|
column: "PaymentId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ReworkRecords_JobId",
|
|
table: "ReworkRecords",
|
|
column: "JobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ReworkRecords_JobItemId",
|
|
table: "ReworkRecords",
|
|
column: "JobItemId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_ReworkRecords_ReworkJobId",
|
|
table: "ReworkRecords",
|
|
column: "ReworkJobId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_UserPasskeys_CredentialId",
|
|
table: "UserPasskeys",
|
|
column: "CredentialId",
|
|
unique: true);
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_VendorCreditApplications_BillId",
|
|
table: "VendorCreditApplications",
|
|
column: "BillId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_VendorCreditApplications_VendorCreditId",
|
|
table: "VendorCreditApplications",
|
|
column: "VendorCreditId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_VendorCreditLineItems_AccountId",
|
|
table: "VendorCreditLineItems",
|
|
column: "AccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_VendorCreditLineItems_VendorCreditId",
|
|
table: "VendorCreditLineItems",
|
|
column: "VendorCreditId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_VendorCredits_APAccountId",
|
|
table: "VendorCredits",
|
|
column: "APAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_VendorCredits_VendorId",
|
|
table: "VendorCredits",
|
|
column: "VendorId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Vendors_CompanyId",
|
|
table: "Vendors",
|
|
column: "CompanyId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_Vendors_DefaultExpenseAccountId",
|
|
table: "Vendors",
|
|
column: "DefaultExpenseAccountId");
|
|
|
|
migrationBuilder.CreateIndex(
|
|
name: "IX_YearEndCloses_JournalEntryId",
|
|
table: "YearEndCloses",
|
|
column: "JournalEntryId");
|
|
|
|
// Mark all pre-existing delta migrations as applied so EF does not attempt to
|
|
// re-run them on a fresh database. InitialCreate already creates the full schema;
|
|
// the deltas would fail with "column/object already exists" if allowed to run.
|
|
// On existing databases these rows are already present, so the INSERT is skipped.
|
|
migrationBuilder.Sql(@"
|
|
DECLARE @ver NVARCHAR(32) = '8.0.11';
|
|
INSERT INTO [__EFMigrationsHistory] ([MigrationId], [ProductVersion])
|
|
SELECT v.[MigrationId], @ver FROM (VALUES
|
|
('20260316155002_Baseline'),
|
|
('20260317121938_AddAiContextProfile'),
|
|
('20260317205927_FixLaborItemQuantityDecimal'),
|
|
('20260318124847_AddJobTimeEntries'),
|
|
('20260318131500_AddJobShopAccessCode'),
|
|
('20260318132857_AddShopWorkerRoleCosts'),
|
|
('20260318134236_AddReworkTracking'),
|
|
('20260318222648_AddRefundsAndCreditMemos'),
|
|
('20260319023827_AddJobTemplates'),
|
|
('20260319154506_AddGiftCertificates'),
|
|
('20260320002450_AddRefundStoreCreditLink'),
|
|
('20260320005106_AddQuoteItemIsAiItem'),
|
|
('20260320011057_AddQuotePricingSnapshot'),
|
|
('20260320231509_AddStripeConnectAndOnlinePayments'),
|
|
('20260326230438_AddQuotePhotoSubscriptionLimits'),
|
|
('20260328133627_AddJobPhotoIsAiAnalysisPhoto'),
|
|
('20260329003300_AddJobDiscountRushFields'),
|
|
('20260329005838_AddDeposits'),
|
|
('20260329134753_AddMerchandise'),
|
|
('20260329141137_AddGiftCertificateInvoiceItems'),
|
|
('20260330234034_AddSalesItemFields'),
|
|
('20260401125630_AddQuoteDepositPaymentFields'),
|
|
('20260401131724_AddUniqueDocumentNumberConstraints'),
|
|
('20260401141653_FixGiftCertificateUniqueIndexPerCompany'),
|
|
('20260402015422_AddInvoiceExternalReference'),
|
|
('20260402032156_AddMigratingFromQuickBooks'),
|
|
('20260402165758_AddQbMigrationStateJson'),
|
|
('20260402184721_FixInventorySkuUniqueIndex'),
|
|
('20260402185216_FixJobShopAccessCodeUniqueIndex'),
|
|
('20260402224949_AddDashboardTips'),
|
|
('20260403000650_AddStripeWebhookEvents'),
|
|
('20260404151636_AddAllowAccountingToPlan'),
|
|
('20260404194126_AddBillReceiptFilePath'),
|
|
('20260404200000_SeedInitialDashboardTips'),
|
|
('20260404210000_AddReleaseNotes'),
|
|
('20260405003350_AddPerformanceIndexes'),
|
|
('20260405155653_AddPlatformSettings'),
|
|
('20260405161241_AddPlatformSettingsV2'),
|
|
('20260405162137_UpdateAdminEmailDescription'),
|
|
('20260406191501_MakeBillLineItemAccountIdNullable'),
|
|
('20260408205345_AddJobIntakeFields'),
|
|
('20260409013822_AddInAppNotifications'),
|
|
('20260410021934_AddLegalCompliance'),
|
|
('20260410025353_AddAiFeaturesToPlanConfig'),
|
|
('20260410032027_AddTrialsEnabledSetting'),
|
|
('20260412005228_AddMaxTenantsSetting'),
|
|
('20260412174157_AddCompanyFeatureOverrides'),
|
|
('20260412183411_AddIsAnnualBilling'),
|
|
('20260414135810_AddPendingRegistrationSession'),
|
|
('20260415010203_AddSetupWizardCompletionTracking'),
|
|
('20260415120000_AddAuditLogTable'),
|
|
('20260417044255_AddInventoryTransactionJobId'),
|
|
('20260417160645_AddSamplePanel'),
|
|
('20260417170543_DropItemIsCoatingColumn'),
|
|
('20260418220837_AddWorkOrderTemplate'),
|
|
('20260419201818_AddInvoiceNumberPrefix'),
|
|
('20260419215302_AddContactSubmissions'),
|
|
('20260420233610_AddShopCapabilityProfile'),
|
|
('20260421003346_AddCompanyBlastSetups'),
|
|
('20260421012409_AddCompanyBlastSetupsTable'),
|
|
('20260421125956_AddQuoteCostBreakdownColumns2'),
|
|
('20260421132123_AddQuoteItemCostSnapshot'),
|
|
('20260421135923_AddPricingModeAndHideDiscount'),
|
|
('20260422040844_AddUserBan'),
|
|
('20260422042129_AddBannedIps'),
|
|
('20260423011936_AddAiUsageLog'),
|
|
('20260423015446_AddSmsOptedOutAt'),
|
|
('20260424232825_AddFacilityOverheadFields'),
|
|
('20260425123256_AddCatalogItemImages'),
|
|
('20260425182712_AddUserPasskeys'),
|
|
('20260425223454_AddCatalogPriceCheckReport'),
|
|
('20260426122625_AddAiCatalogPriceCheckGating'),
|
|
('20260426142825_AddPasskeyPromptDismissed'),
|
|
('20260428164026_AddGuidedActivationFields'),
|
|
('20260429220019_AddJobQuoteSnapshotUpdatedAt'),
|
|
('20260429221217_AddInventoryItemImageUrl'),
|
|
('20260502000902_AddSmsGating'),
|
|
('20260502002653_AddCompanySmsAgreement'),
|
|
('20260503165943_AddPowderCatalogItem'),
|
|
('20260503203048_AddPowderCatalogSpecFields'),
|
|
('20260505161757_AddGracePeriodDaysSetting'),
|
|
('20260505191333_AddGracePeriodAppliesToTrials'),
|
|
('20260505231018_MigrateTimeEntriesToUserId'),
|
|
('20260506020726_AddDataProtectionKeys'),
|
|
('20260506123541_AddSpecificGravityToPowderCatalogAndInventory'),
|
|
('20260506195959_AddQuoteItemIncludePrepCost'),
|
|
('20260507224749_AddCustomerBillingEmail'),
|
|
('20260508002432_AddProspectSmsConsent'),
|
|
('20260508013707_AddInventoryIsIncoming'),
|
|
('20260508142155_AddShopSuppliesAmountToJob'),
|
|
('20260510011252_AddJobTemplateItemSalesFields'),
|
|
('20260510032513_AddAccountingMethod'),
|
|
('20260510034535_AddJournalEntries'),
|
|
('20260510035830_AddVendorCredits'),
|
|
('20260510040609_AddBankReconciliation'),
|
|
('20260510144855_AddPaymentTermsAndTaxRates'),
|
|
('20260510150158_AddRecurringTemplates'),
|
|
('20260510152530_DropOrphanVendorCreditId1'),
|
|
('20260510160053_AddFixedAssetsLockAnd1099'),
|
|
('20260510165511_AddBudgetsAndYearEndClose'),
|
|
('20260510234058_AddAccountantRolePermissions'),
|
|
('20260511142327_AddJobOvenBatchCost'),
|
|
('20260513013449_AddMissingPlatformSettings'),
|
|
('20260513133925_SeedSalesDiscountsAccount'),
|
|
('20260513142448_AccountingGapsPhase2'),
|
|
('20260513145734_AccountingDepositsGL'),
|
|
('20260513184018_AddKioskIntakeSession'),
|
|
('20260513192847_AddInvoicePublicViewToken'),
|
|
('20260514022731_AddKioskIntakeOutputSetting'),
|
|
('20260514200543_AddJobOvenBatchFields'),
|
|
('20260514204347_AddJobItemIsAiItem'),
|
|
('20260515003030_AddGiftCertificateBatchId'),
|
|
('20260515162936_AddJobPricingSnapshot'),
|
|
('20260515194344_AddQuotePricingSnapshotFields'),
|
|
('20260515234413_AddLaborCostPerHour'),
|
|
('20260519151303_AddAppointmentReminderSentAt')
|
|
) AS v([MigrationId])
|
|
WHERE NOT EXISTS (
|
|
SELECT 1 FROM [__EFMigrationsHistory] WHERE [MigrationId] = v.[MigrationId]
|
|
);
|
|
");
|
|
}
|
|
|
|
/// <inheritdoc />
|
|
protected override void Down(MigrationBuilder migrationBuilder)
|
|
{
|
|
migrationBuilder.DropTable(
|
|
name: "AiUsageLogs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AnnouncementDismissals");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Appointments");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AspNetRoleClaims");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AspNetUserClaims");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AspNetUserLogins");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AspNetUserRoles");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AspNetUserTokens");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AuditLogs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "BankReconciliations");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "BannedIps");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "BillLineItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "BillPayments");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "BudgetLines");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "BugReportAttachments");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CatalogPriceCheckReports");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CompanyOperatingCosts");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CompanyPreferences");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CompanySmsAgreements");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "ContactSubmissions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CreditMemoApplications");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CustomerNotes");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "DashboardTips");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "DataProtectionKeys");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Deposits");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Expenses");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "FixedAssetDepreciationEntries");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "GiftCertificateRedemptions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "InAppNotifications");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "InvoiceItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobChangeHistories");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobDailyPriorities");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobItemPrepServices");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobNotes");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobPhotos");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobPrepServices");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobStatusHistory");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobTemplateItemCoats");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobTemplateItemPrepServices");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobTimeEntries");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JournalEntryLines");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "KioskSessions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "MaintenanceRecords");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "ManufacturerLookupPatterns");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "NotificationLogs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "NotificationTemplates");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "OvenBatchItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PendingRegistrationSessions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PlatformSettings");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PowderCatalogItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PowderUsageLogs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PurchaseOrderItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "QuoteChangeHistories");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "QuoteItemCoats");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "QuoteItemPrepServices");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "QuotePhotos");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "QuotePrepServices");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "RecurringTemplates");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Refunds");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "ReleaseNotes");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "StripeWebhookEvents");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "SubscriptionPlanConfigs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "TaxRates");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "TermsAcceptances");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "UserPasskeys");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "VendorCreditApplications");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "VendorCreditLineItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "YearEndCloses");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Announcements");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AppointmentStatusLookups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AppointmentTypeLookups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AspNetRoles");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Budgets");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "BugReports");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "FixedAssets");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "GiftCertificates");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobTemplateItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "OvenBatches");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "InventoryTransactions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobItemCoats");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CompanyBlastSetups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "QuoteItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PrepServices");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CreditMemos");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Payments");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "VendorCredits");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JournalEntries");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobTemplates");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Equipment");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PurchaseOrders");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "ReworkRecords");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Invoices");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Bills");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AiItemPredictions");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CatalogItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Jobs");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "CatalogCategories");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "InventoryItems");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobPriorityLookups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "JobStatusLookups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Quotes");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "InventoryCategoryLookups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Vendors");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "AspNetUsers");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Customers");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "OvenCosts");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "QuoteStatusLookups");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Accounts");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "PricingTiers");
|
|
|
|
migrationBuilder.DropTable(
|
|
name: "Companies");
|
|
}
|
|
}
|
|
}
|