Files
GMW/GMW_DB/BatchQueue/Stored Procedures/stp_registraPackList.sql
T

110 lines
4.4 KiB
Transact-SQL

/***************************************
* STORED stp_registraPackList
*
* Salva i dati di packing list indicati
*
* Steamware, S.E.L.
* mod: 2010.10.15
*
****************************************/
CREATE PROCEDURE BatchQueue.stp_registraPackList
(
@PLREPA NVARCHAR(2), -- è il codice reparto/stabilimento (05 pressofusione)
@PLCART NVARCHAR(15), -- UDC
@PLARTI NVARCHAR(15), -- cod articolo
@PLCONT NVARCHAR(15), -- cod contenitore
@PLMATR INT, -- matricola contenitore (solo cifre finali INT)
@PLTPAN CHAR(2), -- tipo anagrafico CLiente / FOrnitore-terzista
@PLCDAN NVARCHAR(6), -- cod terzista / cliente
@PLQTA INT, -- quantità Attenzione è Numeric(5, 0)
@PLPNET NUMERIC(7, 3), -- peso netto
@PLPLOR NUMERIC(7, 3), -- peso lordo
@PLSTAT CHAR(1), -- stato "P" predisposto per packing list, "B" bolla stampata
@PLDTEN NUMERIC(8,0) -- data entrata merce, data di carico dell'UDC 8 cifre aaaammgg
)
AS
-- BOZZA DA VERIFICARE A CURA MAZZUCCONI!!!
-- AMBIENTE EFFETTIVO
-- Carica i dati dei packing list in AS400
-- FILE PACKL00F
-- LIBRERIA TEST SMEDATVETS
-- LIBRERIA EFFETTIVA ???
DECLARE @SqlOK AS INT;
SET @SqlOk = 0; -- variabile test se in errore
-- Modifica Temporanea per problema spedizione a RONO che attualmente non può essere fatta tramite
-- lista prelievo terzista che preleva solo UDC in stato 84 mentre in RONO vanno quelli in 54
-- Per RONO prelevo con lista Prelievo cliente e poi prima di mandare ad AS400 cambio il Codice Fornitore e
-- il tipo anagrafico a FO
IF @PLCDAN = '00232' -- Codice Cliente RONO
BEGIN
SET @PLCDAN = '02345'; -- Codice Fornitore RONO
SET @PLTPAN = 'FO';
END
-- Fine Modifica
/* ======== L'INVIO PACKING NON E' MAI STATO IMPLEMENTATO
-- Eseguo l'istruzione verso AS400 con controllo errori
-- Se inserisco un UDC già esistente mi da errore 7343 perchè su AS400 è univoco
BEGIN TRY
INSERT INTO
OPENQUERY( AS400XXXX,
'
SELECT PLREPA , PLCART , PLARTI , PLCONT , PLMATR , PLTPAN , PLCDAN , PLQTA , PLPNET , PLPLOR , PLSTAT , PLDTEN
FROM SMEDATVETS.PACKL00F
' )
VALUES ( @PLREPA , @PLCART , @PLARTI , @PLCONT , @PLMATR , @PLTPAN , @PLCDAN , @PLQTA , @PLPNET , @PLPLOR, @PLSTAT, @PLDTEN )
END TRY
BEGIN CATCH
-- PRINT ERROR_NUMBER()
SET @SqlOK = ERROR_NUMBER();
-- Posso usare RAISERROR x mandare in errore la procedura e x per tornare le info
-- sull'errore originale che ha portato l'esecuzione nel blocco CATCH
-- DECLARE @ErrorMessage NVARCHAR(4000);
-- DECLARE @ErrorSeverity INT;
-- DECLARE @ErrorState INT;
-- SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY(),@ErrorState = ERROR_STATE();
-- RAISERROR (@ErrorMessage,@ErrorSeverity,@ErrorState); -- Se non uso RAISERROR la procedura non mi da errore es. se schedulata
END CATCH
-- Memorizzo il comando per verifica T-SQL e l'esito del comando se 0 è OK
INSERT INTO RawData.AS400_Comandi
SELECT GETDATE(), 'stp_registraPackList',
'INSERT INTO SMEDATVETS.PACKL00F parametri :'
+ @PLREPA + ', ' + @PLCART + ', ' + @PLARTI + ', ' + @PLCONT + ', ' + CAST(@PLMATR AS NVARCHAR(5)) + ', ' + @PLTPAN + ', ' + @PLCDAN + ', ' + CAST(@PLQTA AS NVARCHAR(10)) + ', ' + CAST(@PLPNET AS NVARCHAR(10)) + ', ' + CAST(@PLPLOR AS NVARCHAR(10)) + ', ' + @PLSTAT + ', ' + CAST(@PLDTEN AS NVARCHAR(8)) , @SqlOk
========================*/
/*
SELECT * FROM OPENQUERY( AS400XXXX,
'
SELECT PLREPA , PLCART , PLARTI , PLCONT , PLMATR , PLTPAN , PLCDAN , PLQTA , PLPNET , PLPLOR , PLSTAT , PLDTEN
FROM SMEDATVE.PACKL00F WHERE PLDTEN >= 20100601
' )
*/
/*
-- preparo chiamata su AS400
SET @SQL = N' OPENQUERY( AS400XXXX, ''INSERT INTO MAZZT_DTV3.PACKL00F VALUES '
SET @SQL = @SQL + @PLREPA + ', ' + @PLCART + ', ' + @PLARTI + ', ' + @PLCONT + ', '
SET @SQL = @SQL + CAST(@PLMATR AS NVARCHAR(5)) + ', ' + @PLTPAN + ', ' + @PLCDAN + ', ' + CAST(@PLQTA AS NVARCHAR(10)) + ', '
SET @SQL = @SQL + CAST(@PLPNET AS NVARCHAR(10)) + ', ' + CAST(@PLPLOR AS NVARCHAR(10)) + ', ' + @PLSTAT + ', '
SET @SQL = @SQL + CAST(@PLDTEN AS NVARCHAR(8)) + ''' )'
EXEC dbo.sp_executesql @SQL
*/
RETURN @SqlOK;