using System; namespace FMDAL.DTO.AssetLedger { // Confirmed against DB/Migrations/20260719_RAM_Phase2_Schema_SqlServer.sql (this session's own // design). Immutable-after-insert per the RAM design doc — no UPDATE method; corrections are // new rows, not edits. No MODIFIEDBYID/MODIFIEDON — by design, matching the ledger table shape. public class AssetLedgerDTO { public int AssetLedgerId { get; set; } public int OUId { get; set; } public int AssetId { get; set; } public int BizTransactionTypeId { get; set; } public string AssetLedgerNumber { get; set; } = string.Empty; public DateTime AssetLedgerDate { get; set; } public int? FromStateId { get; set; } public int? ToStateId { get; set; } public int? FromCustodianType { get; set; } // (0.INTERNAL_OU,1.EMPLOYEE,2.PARTNER,3.CUSTOMER) — widened from byte/TINYINT to plain int/INT public int? FromCustodianId { get; set; } public int? ToCustodianType { get; set; } public int? ToCustodianId { get; set; } public int? FromLocationId { get; set; } public int? ToLocationId { get; set; } public int? ScanEventId { get; set; } public int? ScanSessionId { get; set; } public string? ReferenceType { get; set; } // e.g. "TTASK", "TMMHEAD" — generic bridge, not a hard FK public int? ReferenceId { get; set; } public string? ReferenceNumber { get; set; } // free-text fallback when there's no live document to point ReferenceId at public DateTime? ReferenceDate { get; set; } public DateTime? ExpectedReturnDate { get; set; } public DateTime? ActualReturnDate { get; set; } public int? CycleCount { get; set; } public int OperatorId { get; set; } public string? Remarks { get; set; } public byte Status { get; set; } = 1; public short Version { get; set; } public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public DateTime EventTime { get; set; } public int TenantId { get; set; } = -1; } }