Add rework pricing type (Fixed vs Per-Item) and inline rework flow on Job Details
Adds a PricingType enum to ReworkRecord (FixedPrice | PerItem), surfaces the choice in the rework modal on Job Details, and wires the resulting unit/total price display. Includes migration AddReworkPricingType, updated repository query for rework history, and help article updates. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -31,6 +31,9 @@ public class ReworkRecord : BaseEntity
|
||||
public bool IsBillableToCustomer { get; set; }
|
||||
public string? BillingNotes { get; set; }
|
||||
|
||||
// Pricing attribution for the linked rework job (null on pre-existing records)
|
||||
public ReworkPricingType? ReworkPricingType { get; set; }
|
||||
|
||||
// ── Resolution ────────────────────────────────────────────────────────────
|
||||
public ReworkStatus Status { get; set; } = ReworkStatus.Open;
|
||||
public ReworkResolution? Resolution { get; set; }
|
||||
|
||||
@@ -144,6 +144,14 @@ public enum ReworkResolution
|
||||
NoActionRequired = 4
|
||||
}
|
||||
|
||||
/// <summary>Who bears the cost of the rework job, recorded at the time the rework is logged.</summary>
|
||||
public enum ReworkPricingType
|
||||
{
|
||||
ShopFault = 0, // Redo is on the shop — rework job items priced at $0
|
||||
CustomerReduced = 1, // Customer caused it; we're helping — prices copied, user edits
|
||||
CustomerFull = 2 // Customer caused it; full original pricing applies
|
||||
}
|
||||
|
||||
public enum BugReportStatus
|
||||
{
|
||||
New = 0,
|
||||
|
||||
@@ -92,4 +92,10 @@ public interface IJobRepository : IRepository<Job>
|
||||
/// were never completed and rolled past their scheduled day.
|
||||
/// </summary>
|
||||
Task<List<Job>> GetOverdueScheduledJobsAsync();
|
||||
|
||||
/// <summary>
|
||||
/// Returns the count of rework jobs linked to <paramref name="originalJobId"/>
|
||||
/// (including soft-deleted) so the next rework suffix (R1, R2, …) can be determined.
|
||||
/// </summary>
|
||||
Task<int> GetReworkJobCountAsync(int originalJobId);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user