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:
Executable
+381
@@ -0,0 +1,381 @@
|
||||
<#@ template language="C#" #>
|
||||
<#@ assembly name="System.Core" #>
|
||||
<#@ import namespace="System.Linq" #>
|
||||
<#@ import namespace="System.Text" #>
|
||||
<#@ import namespace="System.Collections.Generic" #>
|
||||
<#@ import namespace="WorkerService.Models.Reporting" #>
|
||||
<#@ import namespace="WorkerService.Helpers" #>
|
||||
<# if(AddData){ #>
|
||||
DELETE FROM WORKORDER_FILTER;
|
||||
DELETE FROM COMPONENT_LOT_FILTER;
|
||||
DELETE FROM PROFIT_CENTER_FILTER;
|
||||
DELETE FROM WORK_CENTER_FILTER;
|
||||
DELETE FROM ITEM_NUMBER_FILTER;
|
||||
DELETE FROM OPERATOR_FILTER;
|
||||
DELETE FROM PART_OPERATIONS_FILTER;
|
||||
DELETE FROM TEMP_WO;
|
||||
DELETE FROM TEMP_MIS;
|
||||
|
||||
/* Add filter criteria to temp tables */
|
||||
<# } #>
|
||||
<# if(Model.WorkOrderFilterEnabled) { #>
|
||||
<# if(AddData){ #>
|
||||
INSERT ALL
|
||||
<# foreach(var woNumber in Model.WorkOrderFilter.Select(wo=>wo.WorkOrderNumber)) { #>
|
||||
INTO WORKORDER_FILTER(WORKORDERNUMBER) VALUES(<#= woNumber #>)
|
||||
<# } #>
|
||||
SELECT 1 FROM DUAL;
|
||||
<# }#>
|
||||
|
||||
/* Add manually specified work orders to flagged work orders */
|
||||
MERGE INTO TEMP_WO TARGET
|
||||
USING
|
||||
(
|
||||
SELECT DISTINCT WADOCO, COALESCE(WALOTN, CAST(WADOCO AS CHAR(8))) WALOTN, WAMMCU, WAITM
|
||||
FROM F4801_WO wo INNER JOIN
|
||||
WORKORDER_FILTER p_wo ON (wo.WADOCO = p_wo.WORKORDERNUMBER)
|
||||
) SOURCE ON (TARGET.WORKORDERNUMBER = SOURCE.WADOCO)
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (WORKORDERNUMBER, LOTNUMBER, BRANCHCODE, SHORTITEMNUMBER, MANUALLYSPECIFIED)
|
||||
VALUES (SOURCE.WADOCO, SOURCE.WALOTN, SOURCE.WAMMCU, SOURCE.WAITM, 'T');
|
||||
<# } #>
|
||||
<# if(Model.ItemNumberFilterEnabled) { #>
|
||||
|
||||
<# if(AddData){ #>
|
||||
INSERT ALL
|
||||
<# foreach(var item in Model.ItemNumberFilter) { #>
|
||||
INTO ITEM_NUMBER_FILTER(ITEMNUMBER) VALUES('<#= item.ItemNumber #>')
|
||||
<# } #>
|
||||
SELECT 1 FROM DUAL;
|
||||
<# } #>
|
||||
<# } #>
|
||||
<# if(Model.ProfitCenterFilterEnabled) { #>
|
||||
|
||||
<# if(AddData){ #>
|
||||
INSERT ALL
|
||||
<# foreach(var profitCenter in Model.ProfitCenterFilter) { #>
|
||||
INTO PROFIT_CENTER_FILTER(CODE) VALUES('<#= profitCenter.Code #>')
|
||||
<# } #>
|
||||
SELECT 1 FROM DUAL;
|
||||
|
||||
/* Add work centers in specified profit centers to work center filter */
|
||||
INSERT INTO WORK_CENTER_FILTER(CODE)
|
||||
SELECT DISTINCT TRIM(IWMCU)
|
||||
FROM F30006_GIW91 oh INNER JOIN
|
||||
PROFIT_CENTER_FILTER p_pc ON (TRIM(oh.IWMCUW) = TRIM(p_pc.CODE));
|
||||
<# } #>
|
||||
<# } #>
|
||||
<# if(Model.WorkCenterFilterEnabled) { #>
|
||||
|
||||
<# if(AddData){ #>
|
||||
INSERT ALL
|
||||
<# foreach(var workCenter in Model.WorkCenterFilter) { #>
|
||||
INTO WORK_CENTER_FILTER(CODE) VALUES('<#= workCenter.Code #>')
|
||||
<# } #>
|
||||
SELECT 1 FROM DUAL;
|
||||
<# } #>
|
||||
<# } #>
|
||||
<# if(Model.ComponentLotFilterEnabled) { #>
|
||||
|
||||
<# if(AddData){ #>
|
||||
INSERT ALL
|
||||
<# foreach(var componentLot in Model.ComponentLotFilter) { #>
|
||||
INTO COMPONENT_LOT_FILTER(LOTNUMBER, ITEMNUMBER) VALUES('<#= componentLot.LotNumber #>', '<#= componentLot.ItemNumber #>')
|
||||
<# } #>
|
||||
SELECT 1 FROM DUAL;
|
||||
<# } #>
|
||||
|
||||
/* Add downstream product for manually specified component lots */
|
||||
MERGE INTO TEMP_WO TARGET
|
||||
USING
|
||||
(
|
||||
SELECT DISTINCT WADOCO, COALESCE(WALOTN, CAST(WADOCO AS CHAR(8))) WALOTN, WAMMCU, WAITM
|
||||
FROM COMPONENT_LOT_FILTER p_clf INNER JOIN
|
||||
F4108_LOT lot ON (p_clf.LOTNUMBER = lot.IOLOTN and p_clf.ITEMNUMBER = lot.IOLITM) INNER JOIN
|
||||
F3111_WOC woc ON (lot.IOLOTN = woc.WMLOTN AND lot.IOITM = woc.WMCPIT ) INNER JOIN
|
||||
F4801_WO wo ON (woc.WMDOCO = wo.WADOCO)
|
||||
) SOURCE ON (TARGET.WORKORDERNUMBER = SOURCE.WADOCO)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET PARTSLIST = 'T'
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (WORKORDERNUMBER, LOTNUMBER, BRANCHCODE, SHORTITEMNUMBER, PARTSLIST)
|
||||
VALUES (SOURCE.WADOCO, SOURCE.WALOTN, SOURCE.WAMMCU, SOURCE.WAITM, 'T');
|
||||
|
||||
MERGE INTO TEMP_WO TARGET
|
||||
USING
|
||||
(
|
||||
SELECT DISTINCT WADOCO, COALESCE(WALOTN, CAST(WADOCO AS CHAR(8))) WALOTN, WAMMCU, WAITM
|
||||
FROM COMPONENT_LOT_FILTER p_clf INNER JOIN
|
||||
F4108_LOT lot ON (p_clf.LOTNUMBER = lot.IOLOTN and p_clf.ITEMNUMBER = lot.IOLITM) INNER JOIN
|
||||
F4111_CARDEX lu ON (lot.IOLOTN = lu.ILLOTN AND lot.IOITM = lu.ILITM ) INNER JOIN
|
||||
F4801_WO wo ON (lu.ILDOCO = wo.WADOCO)
|
||||
) SOURCE ON (TARGET.WORKORDERNUMBER = SOURCE.WADOCO)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET CARDEX = 'T'
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (WORKORDERNUMBER, LOTNUMBER, BRANCHCODE, SHORTITEMNUMBER, CARDEX)
|
||||
VALUES (SOURCE.WADOCO, SOURCE.WALOTN, SOURCE.WAMMCU, SOURCE.WAITM, 'T');
|
||||
<# } #>
|
||||
<# if(Model.OperatorFilterEnabled) { #>
|
||||
|
||||
<# if(AddData){ #>
|
||||
INSERT ALL
|
||||
<# foreach(var oper in Model.OperatorFilter) { #>
|
||||
INTO OPERATOR_FILTER(ADDRESSNUMBER) VALUES('<#= oper.AddressNumber #>')
|
||||
<# } #>
|
||||
SELECT 1 FROM DUAL;
|
||||
<# } #>
|
||||
<# } #>
|
||||
<# if(Model.ItemOperationMisFilterEnabled) { #>
|
||||
|
||||
<# if(AddData){ #>
|
||||
INSERT ALL
|
||||
<# foreach(var itemOp in Model.ItemOperationMisFilter) { #>
|
||||
INTO PART_OPERATIONS_FILTER(ITEMNUMBER, OPERATIONNUMBER, MISNUMBER, MISREVISION) VALUES('<#= itemOp.ItemNumber #>', '<#= itemOp.OperationNumber #>', '<#= itemOp.MisNumber #>', '<#= itemOp.MisRevision #>')
|
||||
<# } #>
|
||||
SELECT 1 FROM DUAL;
|
||||
<# } #>
|
||||
<# } #>
|
||||
<# if(Model.ShouldSearchSteps()) { #>
|
||||
|
||||
/* Find work orders matching filter criteria and add to flagged work orders */
|
||||
MERGE INTO TEMP_WO TARGET
|
||||
USING (
|
||||
SELECT DISTINCT WADOCO, WALOTN, WAMMCU, WAITM FROM (
|
||||
SELECT wo.WADOCO, COALESCE(wo.WALOTN, to_char(wo.WADOCO)) AS WALOTN, wo.WAMMCU, wo.WAITM
|
||||
FROM F4801_WO wo <# if(Model.ItemNumberFilterEnabled) { #> INNER JOIN
|
||||
ITEM_NUMBER_FILTER p_in ON (wo.WALITM = p_in.ITEMNUMBER)<# } #> INNER JOIN
|
||||
F3112_WOS wos ON (wo.WADOCO = wos.WLDOCO) <# if(Model.ProfitCenterFilterEnabled || Model.WorkCenterFilterEnabled) { #>INNER JOIN
|
||||
WORK_CENTER_FILTER p_wc ON (wos.WLMCU = p_wc.CODE)<# } #> LEFT OUTER JOIN
|
||||
F31122_WOT wot ON (wos.WLDOCO = wot.WTDOCO and wos.WLOPSQ = wot.WTOPSQ) <# if(Model.OperatorFilterEnabled) { #>INNER JOIN
|
||||
OPERATOR_FILTER p_o ON (wot.WTAN8 = p_o.ADDRESSNUMBER)<# } #><# if(Model.ItemOperationMisFilterEnabled) {#> INNER JOIN
|
||||
MIS m ON (wos.WLDOCO = m.WORKORDERNUMBER and wos.WLOPSQ/10 = m.SEQUENCENUMBER and wos.WLMMCU = m.BRANCHCODE ) INNER JOIN
|
||||
PART_OPERATIONS_FILTER p_po ON (m.ITEMNUMBER = p_po.ITEMNUMBER and m.SEQUENCENUMBER = p_po.OPERATIONNUMBER and m.MISNUMBER = p_po.MISNUMBER and m.REVID = p_po.MISREVISION)
|
||||
<# } #>
|
||||
|
||||
WHERE <#= $"(wos.WLSTRX between 1{Model.MinimumDT:yy}{Model.MinimumDT.Value.DayOfYear:000} and 1{Model.MaximumDT:yy}{Model.MaximumDT.Value.DayOfYear:000})" #> OR
|
||||
<#= $"(wot.WTDGL between 1{Model.MinimumDT:yy}{Model.MinimumDT.Value.DayOfYear:000} and 1{Model.MaximumDT:yy}{Model.MaximumDT.Value.DayOfYear:000})" #>
|
||||
<#if(!Model.ItemOperationMisFilterEnabled) { #>UNION
|
||||
SELECT wo.WADOCO, COALESCE(wo.WALOTN, to_char(wo.WADOCO)) AS WALOTN, wo.WAMMCU, wo.WAITM
|
||||
FROM F4801_WO wo<# if(Model.ItemNumberFilterEnabled) { #> INNER JOIN
|
||||
ITEM_NUMBER_FILTER p_in ON (wo.WALITM = p_in.ITEMNUMBER)<# } #> INNER JOIN
|
||||
F31122_WOT wot ON (wo.WADOCO = wot.WTDOCO)<# if(Model.ProfitCenterFilterEnabled || Model.WorkCenterFilterEnabled) { #> INNER JOIN
|
||||
WORK_CENTER_FILTER p_wc ON (wot.WTMCU = p_wc.CODE)<# } #><# if(Model.OperatorFilterEnabled) { #>INNER JOIN
|
||||
OPERATOR_FILTER p_o ON (wot.WTAN8 = p_o.ADDRESSNUMBER)<# } #>
|
||||
WHERE <#= $"(wot.WTDGL between 1{Model.MinimumDT:yy}{Model.MinimumDT.Value.DayOfYear:000} and 1{Model.MaximumDT:yy}{Model.MaximumDT.Value.DayOfYear:000})" #>
|
||||
<# } #>)
|
||||
) SOURCE ON (TARGET.WORKORDERNUMBER = SOURCE.WADOCO)
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT(WORKORDERNUMBER, LOTNUMBER, BRANCHCODE, SHORTITEMNUMBER, FLAGGED)
|
||||
VALUES(SOURCE.WADOCO, SOURCE.WALOTN, SOURCE.WAMMCU, SOURCE.WAITM, 'T');
|
||||
<# } #>
|
||||
|
||||
/* Add downstream product */
|
||||
DECLARE
|
||||
v_NumWO NUMBER := -1;
|
||||
v_NewNumWO NUMBER := 0;
|
||||
v_NumRuns NUMBER := 0;
|
||||
BEGIN
|
||||
WHILE (1 = 1) LOOP
|
||||
|
||||
/* Search parts list */
|
||||
MERGE INTO TEMP_WO TARGET
|
||||
USING
|
||||
(
|
||||
SELECT DISTINCT WADOCO, COALESCE(WALOTN, CAST(WADOCO AS CHAR(8))) WALOTN, WAMMCU, WAITM
|
||||
FROM TEMP_WO t_wo INNER JOIN
|
||||
F4108_LOT lot ON (t_wo.LOTNUMBER = lot.IOLOTN and t_wo.SHORTITEMNUMBER = lot.IOITM) INNER JOIN
|
||||
F3111_WOC woc ON (lot.IOLOTN = woc.WMLOTN AND lot.IOITM = woc.WMCPIT ) INNER JOIN
|
||||
F4801_WO wo ON (woc.WMDOCO = wo.WADOCO)
|
||||
) SOURCE ON (TARGET.WORKORDERNUMBER = SOURCE.WADOCO)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET PARTSLIST = 'T'
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (WORKORDERNUMBER, LOTNUMBER, BRANCHCODE, SHORTITEMNUMBER, PARTSLIST)
|
||||
VALUES (SOURCE.WADOCO, SOURCE.WALOTN, SOURCE.WAMMCU, SOURCE.WAITM, 'T');
|
||||
|
||||
/* Search CARDEX */
|
||||
MERGE INTO TEMP_WO TARGET
|
||||
USING
|
||||
(
|
||||
SELECT DISTINCT WADOCO, COALESCE(WALOTN, CAST(WADOCO AS CHAR(8))) WALOTN, WAMMCU, WAITM
|
||||
FROM TEMP_WO t_wo INNER JOIN
|
||||
F4108_LOT lot ON (t_wo.LOTNUMBER = lot.IOLOTN and t_wo.SHORTITEMNUMBER = lot.IOITM) INNER JOIN
|
||||
F4111_CARDEX lu ON (lot.IOLOTN = lu.ILLOTN AND lot.IOITM = lu.ILITM ) INNER JOIN
|
||||
F4801_WO wo ON (lu.ILDOCO = wo.WADOCO)
|
||||
) SOURCE ON (TARGET.WORKORDERNUMBER = SOURCE.WADOCO)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET CARDEX = 'T'
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (WORKORDERNUMBER, LOTNUMBER, BRANCHCODE, SHORTITEMNUMBER, CARDEX)
|
||||
VALUES (SOURCE.WADOCO, SOURCE.WALOTN, SOURCE.WAMMCU, SOURCE.WAITM, 'T');
|
||||
|
||||
/* Add any work orders split from flagged work orders */
|
||||
MERGE INTO TEMP_WO TARGET
|
||||
USING
|
||||
(
|
||||
SELECT DISTINCT WADOCO, COALESCE(WALOTN, CAST(WADOCO AS CHAR(8))) WALOTN, WAMMCU, WAITM
|
||||
FROM F4801_WO wo INNER JOIN
|
||||
TEMP_WO t_wo ON wo.WAPARS = CAST(t_wo.WORKORDERNUMBER AS char(8))
|
||||
) SOURCE ON (TARGET.WORKORDERNUMBER = SOURCE.WADOCO)
|
||||
WHEN MATCHED THEN
|
||||
UPDATE SET SPLITORDER = 'T'
|
||||
WHEN NOT MATCHED THEN
|
||||
INSERT (WORKORDERNUMBER, LOTNUMBER, BRANCHCODE, SHORTITEMNUMBER, SPLITORDER)
|
||||
VALUES (SOURCE.WADOCO, SOURCE.WALOTN, SOURCE.WAMMCU, SOURCE.WAITM, 'T');
|
||||
|
||||
/* Increment run counter and check updated number of flagged work orders */
|
||||
v_NumRuns := v_NumRuns + 1;
|
||||
SELECT COUNT(*) INTO v_NewNumWO FROM TEMP_WO;
|
||||
|
||||
/* Stop when no new flagged work orders were found OR when max recursion counter reached */
|
||||
IF v_NumWO = v_NewNumWO OR v_NumRuns >= 20 THEN
|
||||
EXIT;
|
||||
END IF;
|
||||
END LOOP;
|
||||
END;
|
||||
|
||||
/* Lookup flagged work order details */
|
||||
SELECT t_wo.WORKORDERNUMBER,
|
||||
t_wo.BRANCHCODE,
|
||||
t_wo.LOTNUMBER,
|
||||
COALESCE(item.IMLITM, wo.WALITM) ItemNumber,
|
||||
item.IMPRP4 PlanningFamily,
|
||||
item.IMSTKT StockingType,
|
||||
wo.WAUORG / 100 OrderQuantity,
|
||||
wo.WASOBK / 100 HeldQuantity,
|
||||
(SELECT COALESCE(sum(WLSOCN), 0) / 100
|
||||
FROM F3112_SCRAP scrap
|
||||
WHERE scrap.WLDOCO = t_wo.WORKORDERNUMBER AND
|
||||
MOD(scrap.WLOPSQ, 1) = 0) ScrappedQuantity,
|
||||
wo.WASOQS / 100 ShippedQuantity,
|
||||
last_step.WLMMCU OperationStepBranchCode,
|
||||
last_step.WLOPSQ / 10 OperationStep,
|
||||
last_step.WLDSC1 OperationStepDescription,
|
||||
last_step.CFDS80 FunctionOperationDescription,
|
||||
last_step.LASTUPDATEDT OperationStepUpdateTimestamp,
|
||||
wo.WASRST StatusCode,
|
||||
sc.DRDL01 StatusDescription,
|
||||
TO_DATE(wo.WADCG + 1900000, 'YYYYDDD') StatusUpdateTimestamp,
|
||||
CASE
|
||||
WHEN t_wo.MANUALLYSPECIFIED = 'T' THEN 'ManuallySpecified'
|
||||
WHEN t_wo.FLAGGED = 'T' THEN 'Flagged'
|
||||
WHEN t_wo.SPLITORDER = 'T' THEN 'Split'
|
||||
WHEN t_wo.CARDEX = 'T' AND t_wo.PARTSLIST = 'F' THEN 'ComponentUsage (CARDEX)'
|
||||
WHEN (t_wo.CARDEX = 'F' AND t_wo.PARTSLIST = 'T') THEN 'ComponentUsage (Parts List)'
|
||||
WHEN (t_wo.CARDEX = 'T' AND t_wo.PARTSLIST = 'T') THEN 'ComponentUsage (CARDEX + Parts List)'
|
||||
ELSE ''
|
||||
END InclusionReason
|
||||
FROM TEMP_WO t_wo INNER JOIN
|
||||
F4801_WO wo ON (t_wo.WORKORDERNUMBER = wo.WADOCO) LEFT OUTER JOIN
|
||||
F4101_ITEM item ON (t_wo.SHORTITEMNUMBER = item.IMITM) LEFT OUTER JOIN
|
||||
(SELECT wos.WLDOCO, wos.WLMMCU, wos.WLOPSQ, wos.WLDSC1, wos.CFDS80, wos.LASTUPDATEDT,
|
||||
ROW_NUMBER() OVER (PARTITION BY wos.WLDOCO ORDER BY WLSTRX DESC, WLOPSQ DESC) RN
|
||||
FROM F3112_WOS wos) last_step ON (t_wo.WORKORDERNUMBER = last_step.WLDOCO and last_step.RN = 1) LEFT OUTER JOIN
|
||||
F0005_SC sc ON (sc.DRKY = wo.WASRST);
|
||||
<# if(Model.ExtractMisData) { #>
|
||||
|
||||
/* Extract MIS data */
|
||||
INSERT INTO TEMP_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 m.*
|
||||
FROM F4801_WO wo<# if(Model.ItemNumberFilterEnabled) { #> INNER JOIN
|
||||
ITEM_NUMBER_FILTER p_in ON (wo.WALITM = p_in.ITEMNUMBER)<# } #> INNER JOIN
|
||||
F3112_WOS wos ON (wo.WADOCO = wos.WLDOCO)<# if(Model.ProfitCenterFilterEnabled || Model.WorkCenterFilterEnabled) { #> INNER JOIN
|
||||
WORK_CENTER_FILTER p_wc ON (wos.WLMCU = p_wc.CODE)<# } #> LEFT OUTER JOIN
|
||||
F31122_WOT wot ON (wos.WLDOCO = wot.WTDOCO and wos.WLOPSQ = wot.WTOPSQ)<# if(Model.OperatorFilterEnabled) { #> INNER JOIN
|
||||
OPERATOR_FILTER p_o ON (wot.WTAN8 = p_o.ADDRESSNUMBER)<# } #> INNER JOIN
|
||||
MIS m ON (wos.WLDOCO = m.WORKORDERNUMBER AND wos.WLOPSQ/10 = m.SEQUENCENUMBER)
|
||||
WHERE <#= $"(wos.WLSTRX between 1{Model.MinimumDT:yy}{Model.MinimumDT.Value.DayOfYear:000} and 1{Model.MaximumDT:yy}{Model.MaximumDT.Value.DayOfYear:000})" #> OR
|
||||
<#= $"(wot.WTDGL between 1{Model.MinimumDT:yy}{Model.MinimumDT.Value.DayOfYear:000} and 1{Model.MaximumDT:yy}{Model.MaximumDT.Value.DayOfYear:000})" #>
|
||||
|
||||
/* Get MIS search results */
|
||||
SELECT DISTINCT tmd.ItemNumber,
|
||||
tmd.ItemDescription,
|
||||
tmd.BranchCode,
|
||||
tmd.MisSequenceNumber SequenceNumber,
|
||||
tmd.FunctionCode,
|
||||
tmd.FunctionOperationDescription,
|
||||
tmd.SequenceNumber JobStepSequenceNumber,
|
||||
tmd.MatchedSequenceNumber,
|
||||
tmd.RoutingMatch,
|
||||
tmd.MasterMatch,
|
||||
tmd.MisNumber,
|
||||
tmd.RevID,
|
||||
tmd.CharNumber,
|
||||
tmd.TestDescription,
|
||||
tmd.SamplingType,
|
||||
tmd.SamplingValue,
|
||||
tmd.ToolsGauges,
|
||||
tmd.WorkInstructions,
|
||||
tmd.Status,
|
||||
tmd.ReleaseDate
|
||||
FROM TEMP_MIS tmd
|
||||
ORDER BY tmd.ItemNumber,
|
||||
tmd.BranchCode,
|
||||
tmd.SequenceNumber,
|
||||
tmd.MatchedSequenceNumber;
|
||||
|
||||
/* Get no-match MIS search results */
|
||||
SELECT DISTINCT tmd.WorkCenterCode,
|
||||
tmd.WorkOrderNumber,
|
||||
TO_DATE(wo.WATRDJ + 1900000, 'YYYYDDD') WorkOrderStartDate,
|
||||
tmd.SequenceNumber JobStepNumber,
|
||||
tmd.FunctionOperationDescription JobStepDescription,
|
||||
tmd.StepTimestamp JobStepEndDate,
|
||||
CASE
|
||||
WHEN wo.WATRT='NMR' OR
|
||||
NOT EXISTS(SELECT *
|
||||
FROM F3112Z1_WOR wor
|
||||
WHERE tmd.WorkOrderNumber = wor.SZDOCO AND
|
||||
tmd.SequenceNumber = wor.SZOPSQ
|
||||
) THEN 1
|
||||
ELSE 0
|
||||
END AS WasJobStepAdded,
|
||||
CASE
|
||||
WHEN wo.WATRT='NMR' THEN NULL
|
||||
ELSE (SELECT TOP 1 wor.SZOPSQ
|
||||
FROM F3112Z1_WOR wor
|
||||
WHERE (tmd.WorkOrderNumber = wor.SZDOCO AND
|
||||
tmd.WorkCenterCode = wor.SZMCU AND
|
||||
tmd.FunctionCode = wor.SZURRF) AND
|
||||
tmd.SequenceNumber <> wor.SZOPSQ
|
||||
)
|
||||
END AS MatchedJobStepNumber,
|
||||
tmd.FunctionCode,
|
||||
tmd.ItemNumber,
|
||||
tmd.ItemDescription,
|
||||
wo.WATRT AS RoutingType
|
||||
FROM TEMP_MIS tmd INNER JOIN
|
||||
F4801_WO wo ON (tmd.WorkOrderNumber = wo.WADOCO) INNER JOIN
|
||||
F4101_ITEM item ON (wo.WAITM = item.IMITM)
|
||||
WHERE (tmd.RoutingMatch = 'F' AND tmd.MasterMatch = 'F') OR
|
||||
tmd.MisNumber IS NULL
|
||||
ORDER BY tmd.WorkOrderNumber,
|
||||
tmd.SequenceNumber;
|
||||
<# } #>
|
||||
/
|
||||
Reference in New Issue
Block a user