Files
ROLAC/API/ROLAC.API/Entities/Check.cs
Chris Chen 62592c29ae
ci-cd-vm / ci-cd (push) Successful in 4m2s
Add audit logs.
2026-06-23 12:13:47 -07:00

44 lines
1.9 KiB
C#

using ROLAC.API.Entities.Base;
namespace ROLAC.API.Entities;
/// <summary>
/// A disbursement check issued to a single payee, bundling one or more approved
/// expenses (its <see cref="Lines"/>). The payee name/address are snapshotted at
/// issue time so the printed check is reproducible even if member data later changes.
/// </summary>
public class Check : SoftDeleteEntity, IAuditable
{
public int Id { get; set; }
public string CheckNumber { get; set; } = null!;
public DateOnly CheckDate { get; set; }
public decimal Amount { get; set; } // sum of line amounts
public string PayeeType { get; set; } = "Vendor"; // Vendor | Member
public int? MemberId { get; set; } // set when PayeeType == Member
public string PayeeName { get; set; } = null!; // snapshot
public string? PayeeAddress { get; set; } // snapshot
public string? PayeeCity { get; set; }
public string? PayeeState { get; set; }
public string? PayeeZip { get; set; }
public string Status { get; set; } = "Issued"; // Issued | Voided
public string? Memo { get; set; }
public string IssuedBy { get; set; } = null!;
public DateTimeOffset IssuedAt { get; set; }
public string? VoidReason { get; set; }
public DateTimeOffset? VoidedAt { get; set; }
public string? VoidedBy { get; set; }
// Receipt e-signature: payee signs in-app on hand-off. "Signed" is derived as
// ReceiptSignedAt != null.
public string? ReceiptSignatureBlobPath { get; set; }
public string? ReceiptSignedName { get; set; }
public DateTimeOffset? ReceiptSignedAt { get; set; }
public string? ReceiptCapturedBy { get; set; }
public Member? Member { get; set; }
public ICollection<CheckLine> Lines { get; set; } = [];
}