Initial commit: JDE Scoping Tool migration project

Set up repository with legacy .NET Framework 4.8 source (OLD/),
new .NET 10 Blazor solution (NEW/), OpenSpec specifications,
documentation, and project configuration.
This commit is contained in:
Joseph Doherty
2026-01-02 07:43:29 -05:00
commit 26ff8d9b4f
1761 changed files with 596509 additions and 0 deletions
@@ -0,0 +1,94 @@
using JdeScoping.Core.Helpers;
namespace JdeScoping.Core.Models.WorkOrders;
/// <summary>
/// JDE work order entity
/// </summary>
public class WorkOrder
{
/// <summary>
/// Work order unique number
/// </summary>
public long WorkOrderNumber { get; set; }
/// <summary>
/// Work order branch code
/// </summary>
public string BranchCode { get; set; } = string.Empty;
/// <summary>
/// Work order assigned lot number
/// </summary>
public string? LotNumber { get; set; }
/// <summary>
/// Work order item number
/// </summary>
public string ItemNumber { get; set; } = string.Empty;
/// <summary>
/// Work order short item number
/// </summary>
public long ShortItemNumber { get; set; }
/// <summary>
/// Work order's parent unique number
/// </summary>
public string? ParentWorkOrderNumber { get; set; }
/// <summary>
/// Order quantity
/// </summary>
public decimal OrderQuantity { get; set; }
/// <summary>
/// Quantity on hold
/// </summary>
public decimal HeldQuantity { get; set; }
/// <summary>
/// Quantity shipped
/// </summary>
public decimal ShippedQuantity { get; set; }
/// <summary>
/// Work order status code
/// </summary>
public string StatusCode { get; set; } = string.Empty;
/// <summary>
/// Date of last update to status code
/// </summary>
public DateTime? StatusCodeUpdateDt { get; set; }
/// <summary>
/// Date work order was issued
/// </summary>
public DateTime IssueDate { get; set; }
/// <summary>
/// Date work order was started
/// </summary>
public DateTime StartDate { get; set; }
/// <summary>
/// Work order routing type
/// </summary>
public string RoutingType { get; set; } = string.Empty;
/// <summary>
/// JDE date of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateDate { get; set; }
/// <summary>
/// JDE time of day of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateTime { get; set; }
/// <summary>
/// Timestamp of last update to record (computed from JDE date/time)
/// </summary>
public DateTime? LastUpdateDt => JdeDateConverter.ToDateTime(LastUpdateDate, LastUpdateTime);
}
@@ -0,0 +1,54 @@
using JdeScoping.Core.Helpers;
namespace JdeScoping.Core.Models.WorkOrders;
/// <summary>
/// Work order component usage entity
/// </summary>
public class WorkOrderComponent
{
/// <summary>
/// Record unique / PK ID
/// </summary>
public long UniqueId { get; set; }
/// <summary>
/// Work order unique number
/// </summary>
public long WorkOrderNumber { get; set; }
/// <summary>
/// Lot number of component
/// </summary>
public string? LotNumber { get; set; }
/// <summary>
/// Component issuance branch code
/// </summary>
public string BranchCode { get; set; } = string.Empty;
/// <summary>
/// Component item short number
/// </summary>
public long? ShortItemNumber { get; set; }
/// <summary>
/// Transaction quantity
/// </summary>
public decimal Quantity { get; set; }
/// <summary>
/// JDE date of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateDate { get; set; }
/// <summary>
/// JDE time of day of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateTime { get; set; }
/// <summary>
/// Timestamp of last update to record (computed from JDE date/time)
/// </summary>
public DateTime? LastUpdateDt => JdeDateConverter.ToDateTime(LastUpdateDate, LastUpdateTime);
}
@@ -0,0 +1,89 @@
using JdeScoping.Core.Helpers;
namespace JdeScoping.Core.Models.WorkOrders;
/// <summary>
/// Work order step transaction (routing) entity
/// </summary>
public class WorkOrderRouting
{
/// <summary>
/// Transaction user ID
/// </summary>
public string UserId { get; set; } = string.Empty;
/// <summary>
/// Transaction batch number
/// </summary>
public string BatchNumber { get; set; } = string.Empty;
/// <summary>
/// Transaction number
/// </summary>
public string TransactionNumber { get; set; } = string.Empty;
/// <summary>
/// Transaction line number
/// </summary>
public int LineNumber { get; set; }
/// <summary>
/// Operation sequence number
/// </summary>
public decimal StepNumber { get; set; }
/// <summary>
/// Unique code for work center
/// </summary>
public string WorkCenterCode { get; set; } = string.Empty;
/// <summary>
/// Unique number for work order
/// </summary>
public long WorkOrderNumber { get; set; }
/// <summary>
/// Work order routing type
/// </summary>
public string RoutingType { get; set; } = string.Empty;
/// <summary>
/// Unique code for branch
/// </summary>
public string BranchCode { get; set; } = string.Empty;
/// <summary>
/// Operation sequence description
/// </summary>
public string? StepDescription { get; set; }
/// <summary>
/// Operation function code
/// </summary>
public string FunctionCode { get; set; } = string.Empty;
/// <summary>
/// JDE date representation of transaction original date (private backing field for Dapper mapping)
/// </summary>
private int TransactionDateDate { get; set; }
/// <summary>
/// Transaction original date (computed from JDE date)
/// </summary>
public DateTime? TransactionDate => JdeDateConverter.ToDateTime(TransactionDateDate);
/// <summary>
/// JDE date of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateDate { get; set; }
/// <summary>
/// JDE time of day of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateTime { get; set; }
/// <summary>
/// Timestamp of last update to record (computed from JDE date/time)
/// </summary>
public DateTime? LastUpdateDt => JdeDateConverter.ToDateTime(LastUpdateDate, LastUpdateTime);
}
@@ -0,0 +1,79 @@
using JdeScoping.Core.Helpers;
namespace JdeScoping.Core.Models.WorkOrders;
/// <summary>
/// JDE work order operation step entity
/// </summary>
public class WorkOrderStep
{
/// <summary>
/// Unique number for work order
/// </summary>
public long WorkOrderNumber { get; set; }
/// <summary>
/// Unique code for branch
/// </summary>
public string BranchCode { get; set; } = string.Empty;
/// <summary>
/// Unique code for work center
/// </summary>
public string WorkCenterCode { get; set; } = string.Empty;
/// <summary>
/// Operation sequence number
/// </summary>
public decimal StepNumber { get; set; }
/// <summary>
/// Operation sequence description
/// </summary>
public string? StepDescription { get; set; }
/// <summary>
/// Function operation description (long text)
/// </summary>
public string? FunctionOperationDescription { get; set; }
/// <summary>
/// Operation sequence type code
/// </summary>
public string StepTypeCode { get; set; } = string.Empty;
/// <summary>
/// Timestamp when work step began
/// </summary>
public DateTime? StartDt { get; set; }
/// <summary>
/// Timestamp when work step ended
/// </summary>
public DateTime? EndDt { get; set; }
/// <summary>
/// Operation function code
/// </summary>
public string FunctionCode { get; set; } = string.Empty;
/// <summary>
/// Quantity scrapped/cancelled
/// </summary>
public decimal ScrappedQuantity { get; set; }
/// <summary>
/// JDE date of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateDate { get; set; }
/// <summary>
/// JDE time of day of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateTime { get; set; }
/// <summary>
/// Timestamp of last update to record (computed from JDE date/time)
/// </summary>
public DateTime? LastUpdateDt => JdeDateConverter.ToDateTime(LastUpdateDate, LastUpdateTime);
}
@@ -0,0 +1,59 @@
using JdeScoping.Core.Helpers;
namespace JdeScoping.Core.Models.WorkOrders;
/// <summary>
/// F31122 work order time transaction record
/// </summary>
public class WorkOrderTime
{
/// <summary>
/// Unique ID for record
/// </summary>
public long UniqueId { get; set; }
/// <summary>
/// Unique number for work order
/// </summary>
public long WorkOrderNumber { get; set; }
/// <summary>
/// Unique code for branch
/// </summary>
public string BranchCode { get; set; } = string.Empty;
/// <summary>
/// Unique code for work center
/// </summary>
public string WorkCenterCode { get; set; } = string.Empty;
/// <summary>
/// Operation sequence number
/// </summary>
public decimal StepNumber { get; set; }
/// <summary>
/// Unique address number for user/operator
/// </summary>
public long AddressNumber { get; set; }
/// <summary>
/// G/L date entry was processed
/// </summary>
public DateTime? GlDate { get; set; }
/// <summary>
/// JDE date of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateDate { get; set; }
/// <summary>
/// JDE time of day of last update to record (private backing field for Dapper mapping)
/// </summary>
private int LastUpdateTime { get; set; }
/// <summary>
/// Timestamp of last update to record (computed from JDE date/time)
/// </summary>
public DateTime? LastUpdateDt => JdeDateConverter.ToDateTime(LastUpdateDate, LastUpdateTime);
}