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,330 @@
-- Migration: 044_CreateMatchMisFunction
-- Source: OLD/Database/Functions/MatchMis.sql
-- Table-valued function for MIS data matching
-- Dependencies: Item, WorkOrder, WorkOrderRouting, RouteMaster, MisData tables
-- Changes: DATETIME -> DATETIME2(7)
CREATE OR ALTER FUNCTION [dbo].[MatchMIS]
(
@workOrderNumber BIGINT,
@itemNumber VARCHAR(25),
@branchCode VARCHAR(12),
@routingType VARCHAR(3),
@issueDate DATETIME2(7),
@workCenterCode VARCHAR(12),
@sequenceNumber DECIMAL(7, 2),
@steptimestamp DATETIME2(7),
@functionCode VARCHAR(15),
@functionOperationDescription VARCHAR(80)
)
RETURNS @MIS TABLE
(
WorkOrderNumber BIGINT,
ItemNumber VARCHAR(25),
ItemDescription VARCHAR(30),
BranchCode VARCHAR(12),
WorkCenterCode VARCHAR(12),
StepTimestamp DATETIME2(7),
SequenceNumber DECIMAL(7, 2),
FunctionCode VARCHAR(15),
FunctionOperationDescription VARCHAR(80),
MatchedSequenceNumber DECIMAL(7, 2),
RoutingMatch BIT,
MasterMatch BIT,
MisNumber VARCHAR(32),
RevID VARCHAR(32),
CharNumber VARCHAR(32),
MisSequenceNumber VARCHAR(32),
TestDescription VARCHAR(2000),
SamplingType VARCHAR(32),
SamplingValue VARCHAR(32),
ToolsGauges VARCHAR(2000),
WorkInstructions VARCHAR(2000),
Status VARCHAR(32),
ReleaseDate DATETIME2(7)
)
BEGIN
-- Lookup item description
DECLARE @itemDescription VARCHAR(30);
SELECT TOP 1 @itemDescription = i.[Description]
FROM dbo.Item AS i
WHERE i.ItemNumber = @itemNumber;
-- Find aliases for sequence number
DECLARE @alias TABLE
(
SequenceNumber DECIMAL(7, 2),
RoutingMatch BIT,
MasterMatch BIT
);
-- Lookup parent work order info
DECLARE @p_WorkOrderNumber BIGINT;
SELECT @p_WorkOrderNumber = COALESCE(TRY_CONVERT(BIGINT, wo.ParentWorkOrderNumber), wo.WorkOrderNumber)
FROM dbo.WorkOrder AS wo
WHERE wo.WorkOrderNumber = @workOrderNumber;
-- Add F3112Z1 records to aliases
WITH routing_cte AS
(
SELECT DISTINCT wor.StepNumber AS SequenceNumber
FROM dbo.WorkOrderRouting AS wor
WHERE wor.WorkOrderNumber = @p_WorkOrderNumber
AND wor.WorkCenterCode = @workCenterCode
AND wor.FunctionCode = @functionCode
AND wor.TransactionDate = (
SELECT MIN(wor2.TransactionDate)
FROM dbo.WorkOrderRouting AS wor2
WHERE wor2.WorkOrderNumber = @p_WorkOrderNumber
)
)
MERGE @alias AS TARGET
USING routing_cte AS SOURCE ON (TARGET.SequenceNumber = SOURCE.SequenceNumber)
WHEN MATCHED THEN
UPDATE SET TARGET.RoutingMatch = 1
WHEN NOT MATCHED BY TARGET THEN
INSERT (SequenceNumber, RoutingMatch, MasterMatch)
VALUES (SOURCE.SequenceNumber, 1, 0);
-- Add F3003 records to aliases
IF (NOT EXISTS (SELECT * FROM @alias AS a))
BEGIN
WITH master_cte AS
(
SELECT DISTINCT rm.SequenceNumber
FROM dbo.RouteMaster AS rm
WHERE rm.BranchCode = @branchCode
AND rm.ItemNumber = @itemNumber
AND rm.RoutingType = @routingType
AND @issueDate BETWEEN rm.StartDate AND rm.EndDate
AND rm.WorkCenterCode = @workCenterCode
AND rm.FunctionCode = @functionCode
)
MERGE @alias AS TARGET
USING master_cte AS SOURCE ON (TARGET.SequenceNumber = SOURCE.SequenceNumber)
WHEN MATCHED THEN
UPDATE SET TARGET.MasterMatch = 1
WHEN NOT MATCHED BY TARGET THEN
INSERT (SequenceNumber, RoutingMatch, MasterMatch)
VALUES (SOURCE.SequenceNumber, 0, 1);
END
ELSE
BEGIN
WITH master_cte AS
(
SELECT DISTINCT rm.SequenceNumber
FROM dbo.RouteMaster AS rm
WHERE rm.BranchCode = @branchCode
AND rm.ItemNumber = @itemNumber
AND rm.RoutingType = @routingType
AND @issueDate BETWEEN rm.StartDate AND rm.EndDate
AND rm.WorkCenterCode = @workCenterCode
AND rm.FunctionCode = @functionCode
)
MERGE @alias AS TARGET
USING master_cte AS SOURCE ON (TARGET.SequenceNumber = SOURCE.SequenceNumber)
WHEN MATCHED THEN
UPDATE SET TARGET.MasterMatch = 1;
END
-- Try to match to 'Current'
INSERT INTO @MIS
(
WorkOrderNumber,
ItemNumber,
ItemDescription,
BranchCode,
WorkCenterCode,
StepTimestamp,
SequenceNumber,
FunctionCode,
FunctionOperationDescription,
MatchedSequenceNumber,
RoutingMatch,
MasterMatch,
MisNumber,
RevID,
CharNumber,
MisSequenceNumber,
TestDescription,
SamplingType,
SamplingValue,
ToolsGauges,
WorkInstructions,
Status,
ReleaseDate
)
SELECT @workOrderNumber,
@itemNumber,
@itemDescription,
@branchCode,
@workCenterCode,
@steptimestamp,
@sequenceNumber,
@functionCode,
@functionOperationDescription,
a.SequenceNumber AS MatchedSequenceNumber,
a.RoutingMatch,
a.MasterMatch,
md.MisNumber,
md.RevID,
md.CharNumber,
md.SequenceNumber AS MisSequenceNumber,
md.TestDescription,
md.SamplingType,
md.SamplingValue,
md.ToolsGauges,
md.WorkInstructions,
md.Status,
md.ReleaseDate
FROM @alias AS a
INNER JOIN dbo.MisData AS md ON (
md.BranchCode = @branchCode
AND md.ItemNumber = @itemNumber
AND md.SequenceNumber = CAST(CAST(a.SequenceNumber AS INT) AS VARCHAR(32))
AND @steptimestamp BETWEEN COALESCE(md.ReleaseDate, '1970-01-01') AND COALESCE(md.ObsoleteDate, '2029-01-01')
)
WHERE md.Status = 'Current';
-- Exit if any MIS info found
IF (EXISTS (SELECT * FROM @MIS))
BEGIN
RETURN;
END
-- Try to match to 'BackLevel'
INSERT INTO @MIS
(
WorkOrderNumber,
ItemNumber,
ItemDescription,
BranchCode,
WorkCenterCode,
StepTimestamp,
SequenceNumber,
FunctionCode,
FunctionOperationDescription,
MatchedSequenceNumber,
RoutingMatch,
MasterMatch,
MisNumber,
RevID,
CharNumber,
MisSequenceNumber,
TestDescription,
SamplingType,
SamplingValue,
ToolsGauges,
WorkInstructions,
Status,
ReleaseDate
)
SELECT @workOrderNumber,
@itemNumber,
@itemDescription,
@branchCode,
@workCenterCode,
@steptimestamp,
@sequenceNumber,
@functionCode,
@functionOperationDescription,
a.SequenceNumber AS MatchedSequenceNumber,
a.RoutingMatch,
a.MasterMatch,
md.MisNumber,
md.RevID,
md.CharNumber,
md.SequenceNumber AS MisSequenceNumber,
md.TestDescription,
md.SamplingType,
md.SamplingValue,
md.ToolsGauges,
md.WorkInstructions,
md.Status,
md.ReleaseDate
FROM @alias AS a
INNER JOIN dbo.MisData AS md ON (
md.BranchCode = @branchCode
AND md.ItemNumber = @itemNumber
AND md.SequenceNumber = CAST(CAST(a.SequenceNumber AS INT) AS VARCHAR(32))
AND md.ReleaseDate BETWEEN @issueDate AND @steptimestamp
)
WHERE md.Status = 'BackLevel';
-- Exit if any MIS info found
IF (EXISTS (SELECT * FROM @MIS))
BEGIN
RETURN;
END
-- Insert alias data without MIS match
INSERT INTO @MIS
(
WorkOrderNumber,
ItemNumber,
ItemDescription,
BranchCode,
WorkCenterCode,
StepTimestamp,
SequenceNumber,
FunctionCode,
FunctionOperationDescription,
MatchedSequenceNumber,
RoutingMatch,
MasterMatch
)
SELECT @workOrderNumber,
@itemNumber,
@itemDescription,
@branchCode,
@workCenterCode,
@steptimestamp,
@sequenceNumber,
@functionCode,
@functionOperationDescription,
a.SequenceNumber,
a.RoutingMatch,
a.MasterMatch
FROM @alias AS a;
-- Exit if any MIS info found
IF (EXISTS (SELECT * FROM @MIS))
BEGIN
RETURN;
END
-- Insert parameter data if no MIS or alias found
INSERT INTO @MIS
(
WorkOrderNumber,
ItemNumber,
ItemDescription,
BranchCode,
WorkCenterCode,
StepTimestamp,
SequenceNumber,
FunctionCode,
FunctionOperationDescription,
MatchedSequenceNumber,
RoutingMatch,
MasterMatch
)
VALUES
(
@workOrderNumber,
@itemNumber,
@itemDescription,
@branchCode,
@workCenterCode,
@steptimestamp,
@sequenceNumber,
@functionCode,
@functionOperationDescription,
NULL,
0,
0
);
RETURN;
END;
GO