Initial commit

This commit is contained in:
2026-04-23 21:38:24 -04:00
commit 63e12a9636
1762 changed files with 1672620 additions and 0 deletions
@@ -0,0 +1,67 @@
namespace PowderCoating.Core.Enums;
public enum AccountType
{
Asset = 1,
Liability = 2,
Equity = 3,
Revenue = 4,
CostOfGoods = 5,
Expense = 6
}
public enum AccountSubType
{
// Assets
Checking = 1,
Savings = 2,
AccountsReceivable = 3,
Inventory = 4,
FixedAsset = 5,
OtherCurrentAsset = 6,
OtherAsset = 7,
// Liabilities
AccountsPayable = 10,
CreditCard = 11,
OtherCurrentLiability = 12,
LongTermLiability = 13,
// Equity
OwnersEquity = 20,
RetainedEarnings = 21,
// Revenue
Sales = 30,
ServiceRevenue = 31,
OtherIncome = 32,
// Cost of Goods Sold
CostOfGoodsSold = 40,
// Expenses
Advertising = 50,
SuppliesMaterials = 51,
Equipment = 52,
Insurance = 53,
Payroll = 54,
ProfessionalFees = 55,
Rent = 56,
Utilities = 57,
Vehicle = 58,
Travel = 59,
Meals = 60,
OfficeSupplies = 61,
Depreciation = 62,
BankCharges = 63,
Other = 99
}
public enum BillStatus
{
Draft = 0,
Open = 1,
PartiallyPaid = 2,
Paid = 3,
Voided = 4
}
@@ -0,0 +1,22 @@
namespace PowderCoating.Core.Enums;
/// <summary>
/// Types of discounts that can be applied to quotes
/// </summary>
public enum DiscountType
{
/// <summary>
/// No discount applied
/// </summary>
None = 0,
/// <summary>
/// Discount is a percentage of the subtotal (e.g., 10% off)
/// </summary>
Percentage = 1,
/// <summary>
/// Discount is a fixed dollar amount (e.g., $100 off)
/// </summary>
FixedAmount = 2
}
+198
View File
@@ -0,0 +1,198 @@
namespace PowderCoating.Core.Enums;
public enum JobStatus
{
Pending = 0,
Quoted = 1,
Approved = 2,
InPreparation = 3,
Sandblasting = 4,
MaskingTaping = 5,
Cleaning = 6,
InOven = 7,
Coating = 8,
Curing = 9,
QualityCheck = 10,
Completed = 11,
OnHold = 12,
Cancelled = 13,
ReadyForPickup = 14,
Delivered = 15
}
public enum JobPriority
{
Low = 0,
Normal = 1,
High = 2,
Urgent = 3,
Rush = 4
}
public enum QuoteStatus
{
Draft = 0,
Pending = 1,
Sent = 2,
Approved = 3,
Rejected = 4,
Expired = 5,
Converted = 6
}
public enum InventoryTransactionType
{
Purchase = 0,
Sale = 1,
Adjustment = 2,
Transfer = 3,
Return = 4,
Waste = 5,
Initial = 6,
JobUsage = 7 // Powder consumed during job completion
}
public enum MaintenanceStatus
{
Scheduled = 0,
InProgress = 1,
Completed = 2,
Cancelled = 3,
Overdue = 4
}
public enum MaintenancePriority
{
Low = 0,
Normal = 1,
High = 2,
Critical = 3
}
public enum EquipmentStatus
{
Operational = 0,
NeedsMaintenance = 1,
UnderMaintenance = 2,
OutOfService = 3,
Retired = 4
}
public enum ShopWorkerRole
{
GeneralLabor = 0,
Sandblaster = 1,
Coater = 2,
Masker = 3,
QualityControl = 4,
OvenOperator = 5,
Supervisor = 6,
Maintenance = 7
}
public enum JobPhotoType
{
Before = 0,
Progress = 1,
After = 2,
QualityCheck = 3,
Issue = 4,
Completed = 5
}
public enum MaintenanceRecurrenceFrequency
{
Daily = 1,
Weekly = 2,
BiWeekly = 3,
Monthly = 4,
Annually = 5,
BiAnnually = 6,
Quarterly = 7
}
public enum ReworkType
{
InternalDefect = 0,
CustomerWarranty = 1,
CustomerDamage = 2
}
public enum ReworkReason
{
AdhesionFailure = 0,
Contamination = 1,
ColorMismatch = 2,
RunsSags = 3,
SurfacePrepFailure = 4,
OvenIssue = 5,
InsufficientCoverage = 6,
HandlingDamage = 7,
Other = 8
}
public enum ReworkDiscoveredBy
{
Internal = 0,
Customer = 1
}
public enum ReworkStatus
{
Open = 0,
InProgress = 1,
Resolved = 2,
WrittenOff = 3,
Disputed = 4
}
public enum ReworkResolution
{
RecoatedNoCharge = 0,
RecoatedBilled = 1,
CustomerCredited = 2,
WrittenOff = 3,
NoActionRequired = 4
}
public enum BugReportStatus
{
New = 0,
InProgress = 1,
Completed = 2,
Cancelled = 3
}
public enum BugReportPriority
{
Low = 0,
Normal = 1,
High = 2,
Critical = 3
}
public enum OvenBatchStatus
{
Planned = 0,
Loading = 1,
InProgress = 2,
Completed = 3,
Cancelled = 4
}
public enum OvenBatchItemStatus
{
Pending = 0,
InOven = 1,
Completed = 2,
Removed = 3
}
public enum PurchaseOrderStatus
{
Draft = 0,
Submitted = 1,
PartiallyReceived = 2,
Received = 3,
Cancelled = 4
}
@@ -0,0 +1,79 @@
namespace PowderCoating.Core.Enums;
public enum RefundStatus
{
Pending = 0, // Recorded — shop has not yet physically issued the refund
Issued = 1, // Refund has been sent to the customer
Cancelled = 2
}
public enum CreditMemoStatus
{
Active = 0,
PartiallyApplied = 1,
FullyApplied = 2,
Voided = 3
}
public enum InvoiceStatus
{
Draft = 0,
Sent = 1,
PartiallyPaid = 2,
Paid = 3,
Overdue = 4,
Voided = 5,
WrittenOff = 6
}
public enum PaymentMethod
{
Cash = 0,
Check = 1,
CreditDebitCard = 2,
BankTransferACH = 3,
DigitalPayment = 4,
StoreCredit = 5 // Refund issued as store credit (creates a CreditMemo)
}
public enum GiftCertificateStatus
{
Active = 0,
PartiallyRedeemed = 1,
FullyRedeemed = 2,
Expired = 3,
Voided = 4
}
public enum OnlinePaymentStatus
{
NotApplicable = 0, // Online payments not enabled for this company
Pending = 1, // Link generated, not yet paid
PartiallyPaid = 2, // Customer has made one or more partial payments
Paid = 3, // Fully paid via online payment
Refunded = 4 // Online payment was refunded via Stripe
}
public enum OnlinePaymentSurchargeType
{
None = 0,
Percent = 1, // e.g. 2.9% of transaction
Flat = 2 // e.g. $1.50 flat fee
}
public enum StripeConnectStatus
{
NotConnected = 0,
Pending = 1, // OAuth started, not yet completed
Active = 2, // Connected and ready to accept payments
Disabled = 3 // Manually disabled or deauthorized by the company
}
public enum GiftCertificateIssuedReason
{
Sold = 0,
Prize = 1,
Promotional = 2,
Goodwill = 3,
Other = 4
}
@@ -0,0 +1,21 @@
namespace PowderCoating.Core.Enums;
public enum NotificationChannel { Email = 0, Sms = 1 }
public enum NotificationStatus { Sent = 0, Failed = 1, Skipped = 2 }
public enum NotificationType
{
QuoteSent = 0,
QuoteApproved = 1,
JobStatusChanged = 2,
JobReadyForPickup = 3,
JobCompleted = 4,
SmsConsentConfirmation = 5,
InvoiceSent = 6,
PaymentReceived = 7,
QuoteDeclinedByCustomer = 8,
PaymentReminder = 9,
SubscriptionExpiryReminder = 10,
SubscriptionExpired = 11,
SmsInboundStop = 12,
SmsInboundHelp = 13
}
@@ -0,0 +1,10 @@
namespace PowderCoating.Core.Enums;
public enum PricingMode
{
/// <summary>Markup % applied to material costs only. Labor and equipment pass through at cost.</summary>
MarkupOnMaterial = 0,
/// <summary>Target margin % applied to total item cost (material + labor + equipment).</summary>
MarginOnTotalCost = 1
}
@@ -0,0 +1,52 @@
namespace PowderCoating.Core.Enums;
/// <summary>
/// Broad capability tier selected during onboarding. Sets default equipment profile values
/// so new shops get reasonable estimates without completing full calibration.
/// </summary>
public enum ShopCapabilityTier
{
/// <summary>Home garage coater, small compressor, siphon cabinet.</summary>
Garage = 0,
/// <summary>1-5 person shop with moderate equipment.</summary>
Small = 1,
/// <summary>Established shop, pressure pot, 5-10 people.</summary>
Medium = 2,
/// <summary>High-volume operation, large pressure pots, 10+ people.</summary>
Large = 3
}
/// <summary>
/// Sandblasting equipment configuration. Pressure pot delivers ~2x the media
/// velocity of a siphon-fed setup, significantly affecting sqft/hr throughput.
/// </summary>
public enum BlastSetupType
{
SiphonCabinet = 0,
SiphonPot = 1,
PressurePot = 2,
WetBlasting = 3
}
/// <summary>
/// Primary coating/substrate being removed. Affects how many passes are needed
/// and therefore the effective blast rate per sqft.
/// </summary>
public enum BlastSubstrateType
{
Paint = 0,
PowderCoat = 1,
RustAndScale = 2,
Mixed = 3
}
/// <summary>
/// Powder coating gun technology. Affects application speed and first-pass
/// transfer efficiency, especially on complex geometry.
/// </summary>
public enum CoatingGunType
{
Corona = 0,
Tribo = 1,
Both = 2
}
@@ -0,0 +1,10 @@
namespace PowderCoating.Core.Enums;
public enum SubscriptionStatus
{
Active = 0,
GracePeriod = 1,
Expired = 2,
Canceled = 3,
Inactive = 4
}