ALTER PROCEDURE [dbo].[SyncPodlToMachine] AS BEGIN BEGIN tran -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Calcola i VECCHI PODL e scrive DELETE relativo ;WITH cte2del AS ( SELECT pLast.* FROM MesPODL_last pLast LEFT OUTER JOIN MesPODL_req pReq ON pReq.IdxPromessa = pLast.IdxPromessa WHERE pReq.IdxPromessa IS NULL ) INSERT INTO syn_ERP2M(Targa, MachineID, ProdOrder, MatCode, MatDescr, ToDoQty, PartPrograms, Cmd, [DateTime]) SELECT 'PLD392' AS Targa ,0 AS MachineID ,'PODL' + dbo.f_padLeft(IdxPromessa, 8,'0') AS ProdOrder ,CodArticolo AS MatCode ,KeyRichiesta AS MatDescr ,NumPezzi AS ToDoQty ,Note AS PartPrograms ,2 AS Cmd ,GETDATE() AS [DateTime] FROM cte2del; -- Calcola i NUOVI PODL e scrive ADD relativo ;WITH cte2add AS ( SELECT pReq.* FROM MesPODL_req pReq LEFT OUTER JOIN MesPODL_last pLast ON pReq.IdxPromessa = pLast.IdxPromessa WHERE pLast.IdxPromessa IS NULL ) INSERT INTO syn_ERP2M(Targa, MachineID, ProdOrder, MatCode, MatDescr, ToDoQty, PartPrograms, Cmd, [DateTime]) SELECT 'PLD392' AS Targa ,0 AS MachineID ,'PODL' + dbo.f_padLeft(IdxPromessa, 8,'0') AS ProdOrder ,CodArticolo AS MatCode ,KeyRichiesta AS MatDescr ,NumPezzi AS ToDoQty ,Note AS PartPrograms ,1 AS Cmd ,GETDATE() AS [DateTime] FROM cte2add; -- Calcola i PODL modificati e scrive update relativo ;WITH cte2mod AS ( SELECT pReq.* FROM MesPODL_req pReq INNER JOIN MesPODL_last pLast ON pReq.IdxPromessa = pLast.IdxPromessa WHERE pLast.KeyRichiesta <> pReq.KeyRichiesta OR pLast.KeyBCode <> pReq.KeyBCode OR pLast.NumPezzi <> pReq.NumPezzi OR pLast.CodArticolo <> pReq.CodArticolo OR pLast.Note <> pReq.Note --OR pLast.IdxMacchina <> pReq.IdxMacchina --OR pLast.CodGruppo <> pReq.CodGruppo --OR pLast.Attivabile <> pReq.Attivabile --OR pLast.DueDate <> pReq.DueDate --OR pLast.Priorita <> pReq.Priorita ) INSERT INTO syn_ERP2M(Targa, MachineID, ProdOrder, MatCode, MatDescr, ToDoQty, PartPrograms, Cmd, [DateTime]) SELECT 'PLD392' AS Targa ,0 AS MachineID ,'PODL' + dbo.f_padLeft(IdxPromessa, 8,'0') AS ProdOrder ,CodArticolo AS MatCode ,KeyRichiesta AS MatDescr ,NumPezzi AS ToDoQty ,Note AS PartPrograms ,3 AS Cmd ,GETDATE() AS [DateTime] FROM cte2mod; -- svuoto ultima richiesta... TRUNCATE TABLE MesPODL_last -- trasferimento records req --> last! INSERT INTO MesPODL_last (IdxPromessa ,KeyRichiesta ,KeyBCode ,Attivabile ,IdxODL ,CodArticolo ,CodGruppo ,IdxMacchina ,NumPezzi ,TCAssegnato ,DueDate ,Priorita ,PzPallet ,Note ,CodCli ,InsertDate) SELECT IdxPromessa ,KeyRichiesta ,KeyBCode ,Attivabile ,IdxODL ,CodArticolo ,CodGruppo ,IdxMacchina ,NumPezzi ,TCAssegnato ,DueDate ,Priorita ,PzPallet ,Note ,CodCli ,InsertDate FROM MesPODL_req -- svuoto richiesta attuale... TRUNCATE TABLE MesPODL_req COMMIT tran END