﻿--Add any work orders issued material from flagged work orders
WITH CWO_D AS(
    SELECT DISTINCT wo.WorkOrderNumber,
           wo.LotNumber,
		   wo.BranchCode,
		   wo.ShortItemNumber
    FROM   dbo.WorkOrderComponent AS woc INNER JOIN
		   dbo.WorkOrder AS wo ON (woc.WorkOrderNumber = wo.WorkOrderNumber) INNER JOIN
           #Temp_WO AS t_wo ON (woc.LotNumber = t_wo.LotNumber AND woc.ShortItemNumber = t_wo.ShortItemNumber)
)
MERGE #Temp_WO AS TARGET
USING CWO_D AS SOURCE
ON    (TARGET.WorkOrderNumber = SOURCE.WorkOrderNumber)
WHEN  MATCHED THEN
	UPDATE SET TARGET.PartsList = 1
WHEN  NOT MATCHED THEN
	INSERT (WorkOrderNumber, LotNumber, BranchCode, ShortItemNumber, PartsList)
	VALUES (SOURCE.WorkOrderNumber, COALESCE(SOURCE.LotNumber, CAST(SOURCE.WorkOrderNumber AS VARCHAR(8))), SOURCE.BranchCode, SOURCE.ShortItemNumber, 1);      

WITH CWO_D AS(
    SELECT DISTINCT wo.WorkOrderNumber,
           wo.LotNumber,
		   wo.BranchCode,
		   wo.ShortItemNumber
    FROM   dbo.LotUsage AS lu INNER JOIN
		   dbo.WorkOrder AS wo ON (lu.WorkOrderNumber = wo.WorkOrderNumber) INNER JOIN
           #Temp_WO AS t_wo ON (lu.LotNumber = t_wo.LotNumber AND lu.ShortItemNumber = t_wo.ShortItemNumber)
)
MERGE #Temp_WO AS TARGET
USING CWO_D AS SOURCE
ON    (TARGET.WorkOrderNumber = SOURCE.WorkOrderNumber)
WHEN  MATCHED THEN
	UPDATE SET TARGET.CARDEX = 1
WHEN  NOT MATCHED THEN
	INSERT (WorkOrderNumber, LotNumber, BranchCode, ShortItemNumber, CARDEX)
	VALUES (SOURCE.WorkOrderNumber, COALESCE(SOURCE.LotNumber, CAST(SOURCE.WorkOrderNumber AS VARCHAR(8))), SOURCE.BranchCode, SOURCE.ShortItemNumber, 1);