300 lines
9.2 KiB
Transact-SQL
300 lines
9.2 KiB
Transact-SQL
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
alter table RigheListePrelievo_AS add
|
|
DataBatch datetime
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'dataora di caricamento batch verso AS', 'SCHEMA', 'dbo', 'TABLE', 'RigheListePrelievo_AS', 'COLUMN', 'DataBatch'
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/*****************************************
|
|
* STORED stp_processaCodaMovimPackList
|
|
*
|
|
* Processa la coda delle packing list e chiama procedura x salvataggio dato su AS400
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.10.22
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE BatchQueue.stp_processaCodaMovimPackList
|
|
AS
|
|
|
|
-- BOZZA DA VERIFICARE E COMPLETARE A CURA MAZZUCCONI!!!
|
|
|
|
-- campi x cursore e valorizzazione riga a riga
|
|
DECLARE @IdxRiga INT
|
|
DECLARE @CodLista NVARCHAR(12)
|
|
DECLARE @CodListaPre NVARCHAR(12)
|
|
DECLARE @CodStab CHAR(2)
|
|
DECLARE @UDC NVARCHAR(15)
|
|
DECLARE @Particolare NVARCHAR(15)
|
|
DECLARE @CodImb NVARCHAR(15)
|
|
DECLARE @Matr INT
|
|
DECLARE @Tipo NVARCHAR(2)
|
|
DECLARE @Dest NVARCHAR(10)
|
|
DECLARE @Qta INT
|
|
DECLARE @PesoNet NUMERIC(7,3)
|
|
DECLARE @PesoLor NUMERIC(7,3)
|
|
DECLARE @Stato CHAR(1)
|
|
DECLARE @Data NVARCHAR(8)
|
|
|
|
DECLARE @ScritturaRigaOK AS INT -- Flag errore su riga ritornato da Stored che va su As400 0 = Ok
|
|
SET @ScritturaRigaOK = 0;
|
|
|
|
DECLARE @ScritturaASOK AS INT -- Flag errore Packing generale su Stored che va su As400 0 = Ok
|
|
SET @ScritturaASOK = 0;
|
|
|
|
-- qui è meglio usare una tabella temporanea o ancor meglio una variabile tabella x pochi
|
|
-- record per non bloccare le tabelle sottostanti
|
|
-- query con un cursore x processare tutte le righe di Packing che sono ancora da inviare ad AS400 ( DataBatch IS NULL )
|
|
DECLARE RigaPackList CURSOR LOCAL FOR
|
|
SELECT IdxRiga, CodLista FROM v_datiPackingList ORDER BY CodLista
|
|
|
|
-- setto il codice stabilimento da inviare ad AS... VERIFICARE!!!
|
|
SET @CodStab = '05';
|
|
|
|
-- imposto prima codListaPre a vuoto...
|
|
SET @CodListaPre = '';
|
|
|
|
-- inizio cursore caricando le righe
|
|
OPEN RigaPackList
|
|
FETCH NEXT FROM RigaPackList
|
|
INTO @IdxRiga , @CodLista
|
|
|
|
SET @CodListaPre = @CodLista
|
|
|
|
WHILE @@FETCH_STATUS = 0
|
|
BEGIN
|
|
-- controllo ci sia almento una riga di Packing ( PER ME NON SERVE )
|
|
IF (SELECT COUNT(IdxRiga) FROM v_datiPackingList WHERE IdxRiga = @IdxRiga) > 0
|
|
BEGIN
|
|
-- carico valori che mi servono
|
|
SELECT @Particolare=pl.Particolare, @UDC=UDC, @CodImb=pl.CodImballo, @Matr = pl.matrUdc, @Tipo=pl.tipo, @Dest=pl.Destinatario,
|
|
@Qta=ABS(pl.Qta), @PesoNet=pl.PesoNetto, @PesoLor=pl.PesoTot, @Stato=pl.Stato, @Data=dbo.dateToAsFormat(pl.data),
|
|
@CodLista=pl.CodLista
|
|
FROM v_datiPackingList pl
|
|
WHERE IdxRiga = @IdxRiga
|
|
|
|
-- Eseguo la stored che registra la Packing List con le righe sue righe
|
|
EXECUTE @ScritturaRigaOK = BatchQueue.stp_registraPackList @CodStab, @UDC, @Particolare , @CodImb , @Matr , @Tipo , @Dest , @Qta , @PesoNet , @PesoLor , @Stato , @Data
|
|
|
|
-- se scrittura riga è ok allora salvo sulla riga la data di invio... così poi non la rivedo tra quelle da processare...
|
|
IF @ScritturaRigaOK = 0
|
|
UPDATE RigheListePrelievo_AS SET DataBatch = GETDATE() WHERE IdxRiga = @IdxRiga;
|
|
|
|
|
|
-- Se scrittura Riga Packing non ok metto Flag Packing list non Ok
|
|
IF @ScritturaRigaOK <> 0 SET @ScritturaASOK = @ScritturaRigaOK
|
|
|
|
FETCH NEXT FROM RigaPackList
|
|
INTO @IdxRiga , @CodLista
|
|
|
|
-- controllo: se la lista precedente è diversa dall'attuale la indico come scaricata (precedente)
|
|
IF(@CodListaPre <> @CodLista)
|
|
BEGIN
|
|
-- ATTENZIONE!!! Qui è da controllare perchè lo faccio una sola volta per la
|
|
-- lista e non per riga prelievo ... boh non so se ok ... se UDC già presente in As400 errore 7343
|
|
IF @ScritturaASOK = 0
|
|
UPDATE ElencoListePrelievo_AS SET DataBatch = GETDATE() WHERE CodLista = @CodListaPre;
|
|
ELSE
|
|
SET @ScritturaASOK = 0; -- resetto il flag di controllo
|
|
|
|
-- cambio il cod pre da confrontare
|
|
SET @CodListaPre = @CodLista
|
|
END
|
|
END
|
|
|
|
END
|
|
|
|
-- Aggiorno anche l'ultima lista prelievo
|
|
-- **** è corretto ??? se poi ricarico tutto il Packing list che succede???
|
|
-- x gli UDC già in AS400 da errore 7343
|
|
IF @ScritturaASOK = 0 -- OR @ScritturaASOK = 7343 ???
|
|
UPDATE ElencoListePrelievo_AS SET DataBatch = GETDATE() WHERE CodLista = @CodLista
|
|
-- registro la data del movimento BATCH dell'ultima lista processata
|
|
|
|
-- se c'è un errore mi rimane aperto il cursore? nn dovrebbe perchè LOCAL
|
|
CLOSE RigaPackList
|
|
DEALLOCATE RigaPackList
|
|
|
|
RETURN
|
|
go
|
|
|
|
alter VIEW v_datiPackingList
|
|
AS
|
|
SELECT dbo.ElencoListePrelievo_AS.CodLista, dbo.RigheListePrelievo_AS.IdxRiga, dbo.ElencoCartellini.UDC, dbo.ElencoListePrelievo_AS.Particolare,
|
|
dbo.ElencoCartellini.CodImballo, CAST(RIGHT(LTRIM(dbo.RigheListePrelievo_AS.UDC), 6) AS INT) AS matrUdc,
|
|
CASE WHEN (dbo.ElencoListePrelievo_AS.CodTipoLista = '03-TerWip') THEN 'FO' ELSE 'CL' END AS tipo, dbo.ElencoListePrelievo_AS.Destinatario,
|
|
dbo.ElencoCartellini.Qta, ROUND(dbo.ElencoCartellini.PesoTot - dbo.ElencoCartellini.Tara, 3) AS PesoNetto, ROUND(dbo.ElencoCartellini.PesoTot, 3) AS PesoTot,
|
|
'P' AS Stato, GETDATE() AS data, dbo.RigheListePrelievo_AS.DataBatch
|
|
FROM dbo.ElencoListePrelievo_AS INNER JOIN
|
|
dbo.RigheListePrelievo_AS ON dbo.ElencoListePrelievo_AS.CodLista = dbo.RigheListePrelievo_AS.CodLista INNER JOIN
|
|
dbo.ElencoCartellini ON dbo.RigheListePrelievo_AS.UDC = dbo.ElencoCartellini.UDC
|
|
WHERE (dbo.RigheListePrelievo_AS.DataBatch IS NULL)
|
|
go
|
|
|
|
exec sp_updateextendedproperty 'MS_DiagramPane1', '[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00]
|
|
Begin DesignProperties =
|
|
Begin PaneConfigurations =
|
|
Begin PaneConfiguration = 0
|
|
NumPanes = 4
|
|
Configuration = "(H (1[40] 4[20] 2[20] 3) )"
|
|
End
|
|
Begin PaneConfiguration = 1
|
|
NumPanes = 3
|
|
Configuration = "(H (1 [50] 4 [25] 3))"
|
|
End
|
|
Begin PaneConfiguration = 2
|
|
NumPanes = 3
|
|
Configuration = "(H (1 [50] 2 [25] 3))"
|
|
End
|
|
Begin PaneConfiguration = 3
|
|
NumPanes = 3
|
|
Configuration = "(H (4 [30] 2 [40] 3))"
|
|
End
|
|
Begin PaneConfiguration = 4
|
|
NumPanes = 2
|
|
Configuration = "(H (1 [56] 3))"
|
|
End
|
|
Begin PaneConfiguration = 5
|
|
NumPanes = 2
|
|
Configuration = "(H (2 [66] 3))"
|
|
End
|
|
Begin PaneConfiguration = 6
|
|
NumPanes = 2
|
|
Configuration = "(H (4 [50] 3))"
|
|
End
|
|
Begin PaneConfiguration = 7
|
|
NumPanes = 1
|
|
Configuration = "(V (3))"
|
|
End
|
|
Begin PaneConfiguration = 8
|
|
NumPanes = 3
|
|
Configuration = "(H (1[56] 4[18] 2) )"
|
|
End
|
|
Begin PaneConfiguration = 9
|
|
NumPanes = 2
|
|
Configuration = "(H (1 [75] 4))"
|
|
End
|
|
Begin PaneConfiguration = 10
|
|
NumPanes = 2
|
|
Configuration = "(H (1[66] 2) )"
|
|
End
|
|
Begin PaneConfiguration = 11
|
|
NumPanes = 2
|
|
Configuration = "(H (4 [60] 2))"
|
|
End
|
|
Begin PaneConfiguration = 12
|
|
NumPanes = 1
|
|
Configuration = "(H (1) )"
|
|
End
|
|
Begin PaneConfiguration = 13
|
|
NumPanes = 1
|
|
Configuration = "(V (4))"
|
|
End
|
|
Begin PaneConfiguration = 14
|
|
NumPanes = 1
|
|
Configuration = "(V (2))"
|
|
End
|
|
ActivePaneConfig = 0
|
|
End
|
|
Begin DiagramPane =
|
|
Begin Origin =
|
|
Top = 0
|
|
Left = 0
|
|
End
|
|
Begin Tables =
|
|
Begin Table = "ElencoListePrelievo_AS"
|
|
Begin Extent =
|
|
Top = 6
|
|
Left = 38
|
|
Bottom = 367
|
|
Right = 238
|
|
End
|
|
DisplayFlags = 280
|
|
TopColumn = 0
|
|
End
|
|
Begin Table = "ElencoCartellini"
|
|
Begin Extent =
|
|
Top = 14
|
|
Left = 658
|
|
Bottom = 376
|
|
Right = 828
|
|
End
|
|
DisplayFlags = 280
|
|
TopColumn = 0
|
|
End
|
|
Begin Table = "RigheListePrelievo_AS"
|
|
Begin Extent =
|
|
Top = 5
|
|
Left = 353
|
|
Bottom = 200
|
|
Right = 557
|
|
End
|
|
DisplayFlags = 280
|
|
TopColumn = 0
|
|
End
|
|
End
|
|
End
|
|
Begin SQLPane =
|
|
End
|
|
Begin DataPane =
|
|
Begin ParameterDefaults = ""
|
|
End
|
|
Begin ColumnWidths = 15
|
|
Width = 284
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
Width = 1500
|
|
End
|
|
End
|
|
Begin CriteriaPane =
|
|
Begin ColumnWidths = 11
|
|
Column = 1440
|
|
Alias = 900
|
|
Table = 1170
|
|
Output = 720
|
|
Append = 1400
|
|
NewValue = 1170
|
|
SortType = 1350
|
|
SortOrder = 1410
|
|
GroupBy = 1350
|
|
Filter = 1350
|
|
Or = 1350
|
|
Or = 1350
|
|
Or = 1350
|
|
End
|
|
End
|
|
End
|
|
', 'SCHEMA', 'dbo', 'VIEW', 'v_datiPackingList'
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
-- registro versione...
|
|
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(291, GETDATE())
|
|
GO
|