330 lines
11 KiB
Transact-SQL
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
|