



/*****************************************
* STORED stp_ODETTE_caricaDatiBollaEtichettaOdette
*
* carica i dati x odette dai valori delel tab lette da as400 (rimpiazza procedura c#)
*
* Steamware, S.E.L.
* mod: 2013.12.20
*
****************************************/
CREATE PROCEDURE [dbo].[stp_ODETTE_caricaDatiBollaEtichettaOdette]
(
    @CodCS         NVARCHAR(2),
    @UDC           NVARCHAR(50),
    @numBolla      NVARCHAR(6),
    @DataBolla     NVARCHAR(8),
    @CodMag        NVARCHAR(2),
    @GrpBolla      NVARCHAR(1),
    @Particolare   NVARCHAR(15)
)

AS

SET NOCOUNT ON
/* Dichiarazione variabili iniziale */

DECLARE @ragSocCli      NVARCHAR(50)    = ''
DECLARE @indirCli       NVARCHAR(50)    = ''
DECLARE @capCittCli     NVARCHAR(50)    = ''
DECLARE @destinatario   NVARCHAR(50)    = ''
DECLARE @ragSocDest     NVARCHAR(50)    = ''
DECLARE @indirDest      NVARCHAR(50)    = ''
DECLARE @capCittDest    NVARCHAR(50)    = ''
DECLARE @peso           NUMERIC(7,3)    = 0
DECLARE @pesoNetto      NVARCHAR(50)    = ''
DECLARE @pesoLordo      NVARCHAR(50)    = ''
DECLARE @numColli       NVARCHAR(50)    = ''
DECLARE @disPart        NVARCHAR(50)    = ''
DECLARE @descPart       NVARCHAR(50)    = ''
DECLARE @codPart        NVARCHAR(50)    = ''
DECLARE @codImb         NVARCHAR(50)    = ''
DECLARE @codMaz         NVARCHAR(50)    = ''
DECLARE @codNael        NVARCHAR(50)    = ''
DECLARE @codNaelP1      NVARCHAR(50)    = ''
DECLARE @codNaelP2      NVARCHAR(50)    = ''
DECLARE @codNaelP3      NVARCHAR(50)    = ''
DECLARE @codAQP         NVARCHAR(50)    = ''

-- altre variabili accessorie
DECLARE @trovati        INT    = 0
DECLARE @qtaUdc         INT    = 1

-- in primis recupero la riga di dati da AS400...
SELECT @trovati = COUNT(*)
FROM  RawData.BORI202J
WHERE CDMFS = @CodMag 
    AND GRBOS = @GrpBolla
    AND NRBOS = @numBolla
    AND DTBOS = @DataBolla
    AND CDARS = @Particolare

-- carico i dati dell'UDC
SELECT @qtaUdc = Qta
FROM   ElencoCartellini
WHERE UDC = @UDC

-- proseguo solo se ho trovato la bolla!
IF(@trovati > 0)
BEGIN

 IF GETDATE() < '20140101'  -- 28/11/2013 Hard Coded x Modifica Anagrafica Articoli 
    BEGIN

        SELECT TOP 1 -- nel caso di più righe dello stesso articolo in bolla
             -- campo 1  indirizzo destinazione cliente ( Receiver )
             @ragSocCli     = CASE  WHEN dbo.f_trim(CDINB) <> '' AND @CodCS <> 'TK' THEN dbo.f_trim(RA1ND) ELSE dbo.f_trim(RASCL) END
            ,@indirCli      = CASE  WHEN dbo.f_trim(CDINB) <> '' AND @CodCS <> 'TK' THEN dbo.f_trim(RA2ND) ELSE dbo.f_trim(INDCL) END
            ,@capCittCli    = CASE  WHEN dbo.f_trim(CDINB) <> '' AND @CodCS <> 'TK' THEN dbo.f_trim(CAPND) + ' ' + dbo.f_trim(CITND) 
                                    ELSE dbo.f_trim(CAPCL) + ' ' + dbo.f_trim(LOCCL) + ' ' +dbo.f_trim(PROCL) END

            -- campo 2    punto di rifornimento / molo / uso ( Destination )
            -- ATTENZIONE NON POSSO TESTARE QUI LE VARIABILI MA SOLO ASSEGNARLE!!! NEL CASE LE VALUTA SEMPRE VUOTE
            ,@destinatario  = dbo.f_odetteCalcDest( dbo.f_trim(INEND), dbo.f_trim(CCDMOL), dbo.f_trim(CCDPTR), dbo.f_trim(CDINB),
                                                      dbo.f_trim(CRAGCL), dbo.f_trim(TELND) ) 

            -- Leggo i dati che mi servono dopo nel caso il destinatario sia vuoto ( VEDI DOPO SELECT )
            ,@ragSocDest    = dbo.f_trim(RA1ND)
            ,@indirDest     = dbo.f_trim(RA2ND)
            ,@capCittDest   = dbo.f_trim(CAPND) + ' ' + dbo.f_trim(CITND)

            -- campo 5_2  peso netto ( Net Weight )
            ,@peso          = CASE WHEN ISNULL(EPLAVO,0) <= 0 THEN EPNETT ELSE EPLAVO END
            ,@pesoNetto     = CONVERT(NVARCHAR(50), CONVERT(INT , FLOOR( @peso * @qtaUdc  ) ) )

            -- campo 6_2  peso lordo (Gross Weight) 
            ,@pesoLordo     = CONVERT(NVARCHAR(50), CONVERT(INT, FLOOR( PELDB / NRC1B ) ) ) 

            -- campo 7    numero colli (Nr. Boxes)
            ,@numColli      = CONVERT(NVARCHAR(50), 1)  -- imposto n. colli del cartellino odette fisso = 1
        --  ,@numColli      = CONVERT(NVARCHAR(50), NRC1B)

            -- campo 8    disegno particolare ( Part Number )  
            ,@disPart       = dbo.f_trim(ECMM01)

            -- campo 10   Descrizione particolare ( Description )
            ,@descPart      = dbo.f_trim(DEPAR)
            
            -- campo 11_1 Codice particolare (non stampato)  
            ,@codPart       = dbo.f_trim(CDARS)
            -- campo 11_2 Codice imballo per il cliente ( Logistics Reference ) 
            ,@codImb        = dbo.f_trim(FCDI01)

            -- campo 12   Codice Mazzucconi/Tekal/Possidonio per il cliente ( Supplier )
            ,@codMaz        = CASE WHEN dbo.f_trim(CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(TELND,19,2)) = '13' THEN 
                                   CASE WHEN dbo.f_trim(CDINB) <> '' AND dbo.f_trim(PERND)  <> '' THEN dbo.f_trim(PERND)
                                        WHEN dbo.f_trim(CDINB)  = '' AND dbo.f_trim(CCDET1) <> '' THEN dbo.f_trim(CCDET1)
                                   ELSE dbo.f_trim(CCFOE1) END
                              ELSE dbo.f_trim(CCFOE1) END

            -- campo 14   codice NAEL + esponente di modifica particolare ( Change Index )
            ,@codNael       = dbo.f_odetteCalcNAEL ( dbo.f_trim(CRAGCL),dbo.f_trim(TELND),dbo.f_trim(ECDNAE),dbo.f_trim(ECDNA1),
                                                      dbo.f_trim(EESPMD),dbo.f_trim(OCDODM) )

            --,@codNaelP1    = CASE WHEN dbo.f_trim(CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(TELND,19,2)) = '13' THEN dbo.f_trim(ECDNAE) ELSE '' END
            --,@codNaelP2    = CASE WHEN dbo.f_trim(CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(TELND,19,2)) = '13' THEN dbo.f_trim(ECDNA1) ELSE '' END
            --,@codNaelP3    = CASE WHEN dbo.f_trim(CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(TELND,19,2)) = '13' THEN dbo.f_trim(EESPMD) ELSE '' END
            --,@codNael      = CASE WHEN dbo.f_trim(CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(TELND,19,2)) = '13' THEN 'ZI:'+ @codNaelP1 + ' ' + @codNaelP2 + ' AI:'+ @codNaelP3 ELSE OCDODM END

            -- campo 16_5  AQP ( controllo qualità )
            ,@codAQP        = dbo.f_trim(ECLAQP)

        FROM  RawData.BORI202J
        WHERE       CDMFS = @CodMag 
            AND     GRBOS = @GrpBolla
            AND     NRBOS = @numBolla
            AND     DTBOS = @DataBolla
            AND     CDARS = @Particolare

         -- Se nella destinazione non trovo nulla utilizzo i dati in RA1ND RA2ND CAPND CITND ( simile indirizzo cliente )
         IF @destinatario = ''
              SET @destinatario = @ragSocDest
         ELSE
            BEGIN                     -- vuoto i campi necessari solo se destinatario NON è vuoto ( in questo caso compilo solo prima riga )
               SET @indirDest    = ''
               SET @capCittDest  = ''
            END
    END
  ELSE
    BEGIN

        SELECT TOP 1 -- nel caso di più righe dello stesso articolo in bolla
             -- campo 1  indirizzo destinazione cliente ( Receiver )
             @ragSocCli     = CASE  WHEN dbo.f_trim(CDINB) <> '' THEN dbo.f_trim(RA1ND) ELSE dbo.f_trim(RASCL) END
            ,@indirCli      = CASE  WHEN dbo.f_trim(CDINB) <> '' THEN dbo.f_trim(RA2ND) ELSE dbo.f_trim(INDCL) END
            ,@capCittCli    = CASE  WHEN dbo.f_trim(CDINB) <> '' THEN dbo.f_trim(CAPND) + ' ' + dbo.f_trim(CITND) 
                                    ELSE dbo.f_trim(CAPCL) + ' ' + dbo.f_trim(LOCCL) + ' ' +dbo.f_trim(PROCL) END

            -- campo 2    punto di rifornimento / molo / uso ( Destination )
            -- ATTENZIONE NON POSSO TESTARE QUI LE VARIABILI MA SOLO ASSEGNARLE!!! NEL CASE LE VALUTA SEMPRE VUOTE
            ,@destinatario  = dbo.f_odetteCalcDest( dbo.f_trim(INEND), dbo.f_trim(CCDMOL), dbo.f_trim(CCDPTR), dbo.f_trim(CDINB),
                                                      dbo.f_trim(CRAGCL), dbo.f_trim(TELND) ) 

            -- campo 5_2  peso netto ( Net Weight )
            ,@peso          = CASE WHEN ISNULL(EPLAVO,0) <= 0 THEN EPNETT ELSE EPLAVO END
            ,@pesoNetto     = CONVERT(NVARCHAR(50), CONVERT(INT , FLOOR( @peso * @qtaUdc  ) ) )

            -- campo 6_2  peso lordo (Gross Weight) 
            ,@pesoLordo     = CONVERT(NVARCHAR(50), CONVERT(INT, FLOOR( PELDB / NRC1B ) ) ) 

            -- campo 7    numero colli (Nr. Boxes)
            ,@numColli      = CONVERT(NVARCHAR(50), 1)  -- imposto n. colli del cartellino odette fisso = 1
        --  ,@numColli      = CONVERT(NVARCHAR(50), NRC1B)

            -- campo 8    disegno particolare ( Part Number )  
            ,@disPart       = dbo.f_trim(RCARTC)

            -- campo 10   Descrizione particolare ( Description )
            ,@descPart      = dbo.f_trim(DEPAR)
            
            -- campo 11_1 Codice particolare (non stampato)  
            ,@codPart        = dbo.f_trim(CDARS)
            -- campo 11_2 Codice imballo per il cliente ( Logistics Reference ) 
            ,@codImb         = dbo.f_trim(FCDI01)

            -- campo 12   Codice Mazzucconi/Tekal/Possidonio per il cliente ( Supplier )
            ,@codMaz        = CASE WHEN dbo.f_trim(CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(TELND,19,2)) = '13' THEN 
                                   CASE WHEN dbo.f_trim(CDINB) <> '' AND dbo.f_trim(PERND)  <> '' THEN dbo.f_trim(PERND)
                                        WHEN dbo.f_trim(CDINB)  = '' AND dbo.f_trim(CCDET1) <> '' THEN dbo.f_trim(CCDET1)
                                   ELSE dbo.f_trim(CCFOE1) END
                              ELSE dbo.f_trim(CCFOE1) END

            -- campo 14   codice NAEL + esponente di modifica particolare ( Change Index )
            ,@codNael       = dbo.f_odetteCalcNAEL ( dbo.f_trim(CRAGCL),dbo.f_trim(TELND),dbo.f_trim(ECDNAE),dbo.f_trim(ECDNA1),
                                                      dbo.f_trim(EESPMD),dbo.f_trim(OCDODM) )
            -- campo 16_5  AQP ( controllo qualità )
            ,@codAQP        = dbo.f_trim(ECLAQP)

        FROM    RawData.BORI202J
        WHERE   CDMFS = @CodMag 
            AND    GRBOS = @GrpBolla
            AND    NRBOS = @numBolla
            AND    DTBOS = @DataBolla
            AND    CDARS = @Particolare
    END

    -- SELECT @UDC, @ragSocCli, @indirCli, @capCittCli, @destinatario, @indirDest, @capCittDest, @pesoNetto, @pesoLordo, @numColli, @disPart, @descPart, @codPart, @codImb, @codMaz, @codNael, @codAQP
    EXEC stp_ODETTE_updateVal @UDC, @ragSocCli, @indirCli, @capCittCli, @destinatario, @indirDest, @capCittDest, @pesoNetto, @pesoLordo, @numColli, @disPart, @descPart, @codPart, @codImb, @codMaz, @codNael, @codAQP

END
     
RETURN



