Files
Samuele E. Locatelli bdd7b413e8 Riaggiunto GMW_data
2016-11-22 17:58:00 +01:00

330 lines
11 KiB
Transact-SQL

set ANSI_NULLS on;
go
/***************************************
* FUNCTION f_calcDestOdette
*
* Compongo il primo campo delle odette ( campo_2 ) x il destinatario/molo
*
* Steamware, S.E.L.
* mod: 14/05/2013
*
****************************************/
create FUNCTION f_odetteCalcDest (@INEND VARCHAR(50) , @CCDMOL VARCHAR(50), @CCDPTR VARCHAR(50), @CDINB VARCHAR(50),
@CRAGCL VARCHAR(50) , @TELND VARCHAR(50)
)
RETURNS NVARCHAR(50) AS
BEGIN
DECLARE @answ NVARCHAR(50) = ''
DECLARE @destP1A NVARCHAR(50) = ''
DECLARE @destP2A NVARCHAR(50) = ''
DECLARE @destP1 NVARCHAR(50) = ''
DECLARE @destP2 NVARCHAR(50) = ''
DECLARE @destP3 NVARCHAR(50) = ''
-- Se il campo INEND è vuoto devo prendere sempre gli altri campi CCDMOL e CCDPTR
SET @destP1A = CASE WHEN (SUBSTRING(@INEND,1,30)) = '' THEN (@CCDMOL) ELSE dbo.f_trim(SUBSTRING(@INEND,16,15)) END
SET @destP2A = CASE WHEN (SUBSTRING(@INEND,1,30)) = '' THEN (@CCDPTR) ELSE dbo.f_trim(SUBSTRING(@INEND,1,15)) END
SET @destP1 = CASE WHEN (@CDINB) <> '' THEN @destP1A ELSE (@CCDMOL) END
SET @destP2 = CASE WHEN (@CDINB) <> '' THEN @destP2A ELSE (@CCDPTR) END
-- solo se BMW metto /S
SET @destP3 = CASE WHEN @CRAGCL = '13' OR ( @CDINB <> '' AND SUBSTRING(@TELND,19,2) = '13') THEN '/S' ELSE '' END
IF @destP1 + @destP2 <> ''
SET @answ = @destP1 + '/' + @destP2 + @destP3
ELSE
SET @answ = ''
RETURN @answ
END
go
/***************************************
* FUNCTION f_odetteCalcNAEL
*
* Compongo il primo campo delle odette campo 14 ( Change Index ) o codice NAEL + esponente di modifica particolare )
*
* Steamware, S.E.L.
* mod: 14/05/2013
*
****************************************/
create FUNCTION f_odetteCalcNAEL (@CRAGCL VARCHAR(50) , @TELND VARCHAR(50), @ECDNAE VARCHAR(50),@ECDNA1 VARCHAR(50)
,@EESPMD VARCHAR(50), @OCDODM VARCHAR(50)
)
RETURNS NVARCHAR(50) AS
BEGIN
DECLARE @answ NVARCHAR(50) = ''
DECLARE @codNaelP1 NVARCHAR(50) = ''
DECLARE @codNaelP2 NVARCHAR(50) = ''
DECLARE @codNaelP3 NVARCHAR(50) = ''
-- Se il cliente è BMW calcolo campi x NAEL
SET @codNaelP1 = CASE WHEN dbo.f_trim(@CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(@TELND,19,2)) = '13' THEN dbo.f_trim(@ECDNAE) ELSE '' END
SET @codNaelP2 = CASE WHEN dbo.f_trim(@CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(@TELND,19,2)) = '13' THEN dbo.f_trim(@ECDNA1) ELSE '' END
SET @codNaelP3 = CASE WHEN dbo.f_trim(@CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(@TELND,19,2)) = '13' THEN dbo.f_trim(@EESPMD) ELSE '' END
SET @answ = CASE WHEN dbo.f_trim(@CRAGCL) = '13' OR dbo.f_trim(SUBSTRING(@TELND,19,2)) = '13'
THEN 'ZI:'+ @codNaelP1 + ' ' + @codNaelP2 + ' AI:'+ @codNaelP3
ELSE @OCDODM -- se non BMW
END
RETURN @answ
END
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/*****************************************
* STORED stp_ODETTE_updateVal
*
* effettua aggiornamento valori etichetta Odette
*
* Steamware, S.E.L.
* mod: 2011.04.28
*
****************************************/
alter PROCEDURE stp_ODETTE_updateVal
(
@UDC NVARCHAR(50),
@ragSocCli NVARCHAR(50),
@indirCli NVARCHAR(50),
@capCittCli NVARCHAR(50),
@ragSocDest NVARCHAR(50),
@indirDest NVARCHAR(50),
@capCittDest NVARCHAR(50),
@pesoNetto NVARCHAR(50),
@pesoLordo NVARCHAR(50),
@numColli NVARCHAR(50),
@disPart NVARCHAR(50),
@descPart NVARCHAR(50),
@codPart NVARCHAR(50),
@codImb NVARCHAR(50),
@codMaz NVARCHAR(50),
@codNael NVARCHAR(50),
@codAQP NVARCHAR(50)
)
AS
-- COMMIT TRAN
-- update valori (sovrascrivo...)
UPDATE Odette
SET Campo1_2 = @ragSocCli,
Campo1_3 = @indirCli,
Campo1_4 = @capCittCli,
Campo2_2 = @ragSocDest,
Campo2_3 = @indirDest,
Campo2_4 = @capCittDest,
Campo5_2 = @pesoNetto,
Campo6_2 = @pesoLordo,
Campo7_2 = @numColli,
Campo8_2 = @disPart,
Campo8_3 = @disPart,
Campo10_2 = @descPart,
Campo11_1_2 = @codPart,
Campo11_1_3 = @codPart,
Campo11_2_2 = @codImb,
Campo11_2_3 = @codImb,
Campo12_2 = @codMaz,
Campo12_3 = @codMaz,
Campo14_2 = @codNael,
Campo16_5 = ISNULL(@codAQP,'')
WHERE CampoUDC = @UDC
RETURN
go
commit;
go
set xact_abort on;
go
begin transaction;
go
set ANSI_NULLS on;
go
/*****************************************
* STORED stp_ODETTE_caricaDatiBollaEtichettaOdette
*
* carica i dati x odette dai valori delel tab lette da as400 (rimpiazza procedura c#)
*
* Steamware, S.E.L.
* mod: 2011.04.28
*
****************************************/
alter PROCEDURE 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
SELECT TOP 1
-- 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
-- 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
go
commit;
go
-- registro versione...
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(550, GETDATE())
GO
SELECT TOP 5 * FROM LogUpdateDb ORDER BY Versione DESC
GO