
/***************************************
* 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 sp_executesql @SQL
	*/
	
RETURN @SqlOK;
