1428 lines
43 KiB
Transact-SQL
1428 lines
43 KiB
Transact-SQL
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
alter table AS400_BatchMovimenti drop
|
|
constraint FK_AS400_BatchMovimenti_AS400_MagCont ,
|
|
constraint FK_AS400_BatchMovimenti_AnagTipoEvento
|
|
go
|
|
|
|
exec sp_rename 'PK_AS400_BatchMovimenti', 'tmp__PK_AS400_BatchMovimenti', 'OBJECT'
|
|
go
|
|
|
|
exec sp_rename 'AS400_BatchMovimenti', 'tmp__AS400_BatchMovimenti_0', 'OBJECT'
|
|
go
|
|
|
|
create table AS400_BatchMovimenti(
|
|
IdxBatch int not null identity constraint PK_AS400_BatchMovimenti primary key,
|
|
DataIns datetime not null,
|
|
numOp int,
|
|
CodEvento nvarchar(10) not null,
|
|
Particolare nvarchar(15) not null,
|
|
UDC nvarchar(50) not null,
|
|
CodMagAS nvarchar(50) not null,
|
|
Quantita decimal(10,2) not null,
|
|
DataBatch datetime,
|
|
DataVerifica datetime
|
|
)
|
|
go
|
|
|
|
alter table AS400_BatchMovimenti add
|
|
constraint FK_AS400_BatchMovimenti_AnagTipoEvento foreign key(CodEvento) references AnagTipoEvento(CodEvento) on update cascade,
|
|
constraint FK_AS400_BatchMovimenti_AS400_MagCont foreign key(CodMagAS) references AS400_MagCont(CodMagAS) on update cascade
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'dataora inserimento in coda caricamento', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataIns'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'CodEvento'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'dataora di caricamento batch verso AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataBatch'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', N'dataora in cui è stato verificato il caricamento su AS', 'SCHEMA', 'dbo', 'TABLE', 'AS400_BatchMovimenti', 'COLUMN', 'DataVerifica'
|
|
go
|
|
|
|
set identity_insert AS400_BatchMovimenti on
|
|
go
|
|
|
|
insert into AS400_BatchMovimenti(IdxBatch,DataIns,CodEvento,Particolare,UDC,CodMagAS,Quantita,DataBatch,DataVerifica) select IdxBatch,DataIns,CodEvento,Particolare,UDC,CodMagAS,Quantita,DataBatch,DataVerifica from tmp__AS400_BatchMovimenti_0
|
|
go
|
|
|
|
set identity_insert AS400_BatchMovimenti off
|
|
go
|
|
|
|
drop table tmp__AS400_BatchMovimenti_0
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
create table GiornaleMagazzino(
|
|
numOp int not null identity constraint PK_GiornaleMagazzino primary key,
|
|
OP nchar(1) not null,
|
|
DataOra datetime not null,
|
|
UDC nvarchar(50) not null,
|
|
Particolare nvarchar(15) not null,
|
|
CodStatoFrom nvarchar(50) not null,
|
|
CodStatoTo nvarchar(50) not null,
|
|
IdxPosizioneFrom int not null,
|
|
IdxPosizioneTo int not null,
|
|
QtaFrom decimal(10,2) not null,
|
|
QtaTo decimal(10,2) not null,
|
|
DataOraProc datetime
|
|
)
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'tipo operazione I(nsert), U(pdate), D(elete)', 'SCHEMA', 'dbo', 'TABLE', 'GiornaleMagazzino', 'COLUMN', 'OP'
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
alter table AS400_MagCont drop
|
|
column Attivo,
|
|
constraint DF_AS400_MagCont_CodMagAS_compensaz ,
|
|
column CodMagAS_compensaz
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
create table TabSyncMovMag(
|
|
CodCS nchar(2) not null,
|
|
CodStatoFrom nvarchar(50) not null,
|
|
CodStatoTo nvarchar(50) not null,
|
|
IdxPosizioneFrom int not null,
|
|
IdxPosizioneTo int not null,
|
|
toExt bit not null constraint DF_TabSyncMovMag_toAs400 default (1),
|
|
codMagExtFrom nvarchar(50),
|
|
codMagExtTo nvarchar(50),
|
|
codMagExtComp nvarchar(50),
|
|
note nvarchar(500),
|
|
|
|
constraint PK_TabSyncMovMag primary key(CodCS,CodStatoFrom,CodStatoTo,IdxPosizioneFrom,IdxPosizioneTo)
|
|
)
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'posizione (stato) logica di partenza', 'SCHEMA', 'dbo', 'TABLE', 'TabSyncMovMag', 'COLUMN', 'IdxPosizioneFrom'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'posizione (stato) logica di arrivo', 'SCHEMA', 'dbo', 'TABLE', 'TabSyncMovMag', 'COLUMN', 'IdxPosizioneTo'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'determina se inviare l''informazione al sistema esterno', 'SCHEMA', 'dbo', 'TABLE', 'TabSyncMovMag', 'COLUMN', 'toExt'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'cod magazzino from, NULL significa non valido e non utilizzato', 'SCHEMA', 'dbo', 'TABLE', 'TabSyncMovMag', 'COLUMN', 'codMagExtFrom'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'cod magazzino from, NULL significa non valido e non utilizzato', 'SCHEMA', 'dbo', 'TABLE', 'TabSyncMovMag', 'COLUMN', 'codMagExtTo'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'cod magazzino from, 0 o null significa non valido', 'SCHEMA', 'dbo', 'TABLE', 'TabSyncMovMag', 'COLUMN', 'codMagExtComp'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'descrizione della regola', 'SCHEMA', 'dbo', 'TABLE', 'TabSyncMovMag', 'COLUMN', 'note'
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
alter table TabTranPosizEventi add
|
|
CodStatoTo nvarchar(50),
|
|
Note nvarchar(500)
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'descrizione della regola', 'SCHEMA', 'dbo', 'TABLE', 'TabTranPosizEventi', 'COLUMN', 'Note'
|
|
go
|
|
|
|
alter table TabTranPosizEventi drop
|
|
constraint DF_TabTranPosizEventi_toAs400 ,
|
|
column toAs400
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-20
|
|
-- Mod Date: 2012-05-25
|
|
-- Description: trigger x movimenti di inserimento
|
|
-- nella tab GiornaleMagazzino
|
|
-- =============================================
|
|
alter TRIGGER trg_InsMovAS
|
|
ON ElencoCartellini
|
|
AFTER INSERT
|
|
AS
|
|
BEGIN
|
|
|
|
-- setup variabili e verbosità
|
|
SET NOCOUNT ON;
|
|
-- metto in Giornale Magazzino i record inseriti
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'I', GETDATE(), UDC, ISNULL(Particolare,''), 'NEW', CodStato, 0, IdxPosizione, 0, Qta
|
|
FROM inserted
|
|
)
|
|
|
|
END
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-20
|
|
-- Mod Date: 2012-05-25
|
|
-- Description: trigger x movimenti di cancellazione
|
|
-- nella tab GiornaleMagazzino
|
|
-- =============================================
|
|
alter TRIGGER trg_DelMovAS
|
|
ON ElencoCartellini
|
|
AFTER DELETE
|
|
AS
|
|
BEGIN
|
|
|
|
-- setup variabili e verbosità
|
|
SET NOCOUNT ON;
|
|
-- inserisco movimenti AS
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'D', GETDATE(), UDC, ISNULL(Particolare,''), CodStato, 'DEL', IdxPosizione, 0, Qta, 0
|
|
FROM deleted
|
|
)
|
|
|
|
END
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-20 mod. 2012-03-14
|
|
-- Description: trigger x inserimento movimenti
|
|
-- nella tab GiornaleMagazzino
|
|
-- =============================================
|
|
alter TRIGGER trg_updMovAS
|
|
ON ElencoCartellini
|
|
AFTER UPDATE
|
|
AS
|
|
BEGIN
|
|
|
|
|
|
/*******************************************************************************
|
|
* Gestione UPDATE ElencoCartellini --> GiornaleMagazzino
|
|
*
|
|
* regola1: si fanno registrazioni solo se varia ALMENO UNO tra
|
|
* - quantità
|
|
* - IdxPosizione
|
|
* - CodStato
|
|
*
|
|
* regola 2:
|
|
* - Particolare deve essere valorizzato ALMENO a '' (blank)
|
|
*
|
|
* regola3: in caso di update SIA di quantità che di posizione/stato
|
|
* - si genera UN PRIMO RECORD di modifica quantità a posizione e stato FISSI
|
|
* - si genera UN SECONDO RECORD con variazione posizione/stato
|
|
*
|
|
*******************************************************************************/
|
|
|
|
-- setup variabili e verbosità
|
|
SET NOCOUNT ON;
|
|
DECLARE @dataOra AS DATETIME
|
|
SET @dataOra = GETDATE()
|
|
|
|
-- PRIMO STEP: quantità!
|
|
IF( UPDATE(Qta) )
|
|
BEGIN
|
|
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'U', @dataOra, i.UDC, ISNULL(d.Particolare,''), d.CodStato, d.CodStato, d.IdxPosizione, d.IdxPosizione, d.Qta, i.Qta
|
|
FROM inserted AS i
|
|
INNER JOIN deleted AS d ON i.UDC = d.UDC
|
|
WHERE ( (i.Qta <> d.Qta) )
|
|
)
|
|
|
|
END
|
|
|
|
-- ora controllo in caso di modifica di stato o posizione
|
|
IF(UPDATE(CodStato) OR UPDATE(IdxPosizione))
|
|
BEGIN
|
|
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'U', @dataOra, i.UDC, ISNULL(d.Particolare,''), d.CodStato, i.CodStato, d.IdxPosizione, i.IdxPosizione, i.Qta, i.Qta
|
|
FROM inserted AS i
|
|
INNER JOIN deleted AS d ON i.UDC = d.UDC
|
|
WHERE ( ( i.IdxPosizione <> d.IdxPosizione) OR (i.CodStato <> d.CodStato) )
|
|
)
|
|
|
|
END
|
|
|
|
END
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
/*****************************************
|
|
* STORED stp_processaGiornaleMagazzino
|
|
*
|
|
* processa il giornale del magazzino, in modo da controlalre tutte le righe non processate (o eventualmente solo quelle nuove)
|
|
* e spostare nella coda di trasferimento con AS400 SOLO i movimenti che soddisfano i criteri specificati nella tabella
|
|
* "TabSyncMovMag"
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2012.05.25
|
|
*
|
|
****************************************/
|
|
create PROCEDURE BatchQueue.stp_processaGiornaleMagazzino
|
|
(
|
|
@CodCS NCHAR(2),
|
|
@lastInsDate DATETIME -- data-ora da cui cercare i record, se non viene passata è l'ultimo movimento registrato
|
|
)
|
|
AS
|
|
|
|
BEGIN TRAN
|
|
|
|
/**********************************************************************************
|
|
*
|
|
* PROCEDURA in 4 step:
|
|
* - STEP 1: registro rettifiche QUANTITA' in FROM
|
|
* - STEP 2: registro prelievi da mag ext "from" (cambio mag)
|
|
* - STEP 3: registro depositi a mag ext "to" (cambio mag)
|
|
* - STEP 4: registro compensazioni: se from e to corrispondono e mag comp è NON NULLO metto in comp!
|
|
**********************************************************************************/
|
|
|
|
-- in primis: se è nulla la data calcolo l'ultim data di processing...
|
|
IF ( @lastInsDate IS NULL )
|
|
BEGIN
|
|
SET @lastInsDate = ( SELECT ISNULL(MAX(DataOra), '19000101') FROM GiornaleMagazzino WHERE NOT (DataOraProc IS NULL) )
|
|
END
|
|
|
|
-- ATTENZIONE!!! DEVE ESSERCI UN PARTICOLARE NON NULLO e != "n.d."
|
|
|
|
-- ora prendo tutte le righe che mi interessano e cerco match sulla tab TabSyncMovMag e le inserisco in batch...
|
|
|
|
-- STEP 1: rettifico quantità!
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_MOD', gm.Particolare, gm.UDC, tsmm.codMagExtFrom , gm.QtaTo - gm.QtaFrom
|
|
FROM GiornaleMagazzino gm
|
|
INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1)
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtFrom = codMagExtTo)-- NON VARIA MAG ESTERNO...
|
|
|
|
-- STEP 2: genero ora casi con 2 mag ext che cambiano: tolgo da FROM
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_MOV', gm.Particolare, gm.UDC, tsmm.codMagExtFrom , - gm.QtaTo
|
|
FROM GiornaleMagazzino gm
|
|
INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1)
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtFrom <> codMagExtTo)-- VARIA MAG ESTERNO...
|
|
AND (tsmm.codMagExtFrom IS NOT NULL ) -- magazzino non nullo
|
|
AND (tsmm.codMagExtTo IS NOT NULL ) -- magazzino non nullo
|
|
|
|
-- STEP 3: genero ora casi con 2 mag ext che cambiano: metto in TO
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_MOV', gm.Particolare, gm.UDC, tsmm.codMagExtTo , gm.QtaTo
|
|
FROM GiornaleMagazzino gm INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1)
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtFrom <> codMagExtTo)-- VARIA MAG ESTERNO...
|
|
AND (tsmm.codMagExtFrom IS NOT NULL ) -- magazzino non nullo
|
|
AND (tsmm.codMagExtTo IS NOT NULL ) -- magazzino non nullo
|
|
|
|
|
|
-- STEP 4: cerco prima casi con magazzini ext origine = destinazione e compensazioni
|
|
INSERT INTO AS400_BatchMovimenti(DataIns, numOp, CodEvento, Particolare, UDC, CodMagAS, Quantita)
|
|
SELECT DataOra, numOp, 'UDC_COMP', gm.Particolare, gm.UDC, tsmm.codMagExtComp, gm.QtaFrom - gm.QtaTo
|
|
FROM GiornaleMagazzino gm
|
|
INNER JOIN TabSyncMovMag tsmm ON
|
|
tsmm.CodCS = @CodCS AND
|
|
gm.CodStatoFrom = tsmm.CodStatoFrom AND
|
|
gm.CodStatoTo = tsmm.CodStatoTo AND
|
|
gm.IdxPosizioneFrom = tsmm.IdxPosizioneFrom AND
|
|
gm.IdxPosizioneTo = tsmm.IdxPosizioneTo
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
AND (tsmm.toExt = 1)
|
|
AND gm.Particolare <> '' -- particolare deve essere disponibile!!!!
|
|
AND (tsmm.codMagExtComp IS NOT NULL) -- HO compensazioni!!!
|
|
AND (tsmm.codMagExtFrom = codMagExtTo)-- E NON VARIA MAG ESTERNO...
|
|
|
|
-- ora aggiorno le stesse righe riportate indicando la data ora di processing...
|
|
UPDATE gm
|
|
SET DataOraProc = GETDATE()
|
|
FROM GiornaleMagazzino gm INNER JOIN AS400_BatchMovimenti abm ON
|
|
CAST(gm.numOp AS NVARCHAR(10)) = abm.CodEvento
|
|
WHERE (gm.DataOra >= @lastInsDate)
|
|
AND (gm.DataOraProc IS NULL)
|
|
|
|
COMMIT TRAN
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
drop procedure stp_rettMovAs400
|
|
go
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
alter table ElencoCartellini add
|
|
CodEvento nvarchar(10)
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
exec sp_rename 'PK_GiornaleMagazzino', 'tmp__PK_GiornaleMagazzino', 'OBJECT'
|
|
go
|
|
|
|
exec sp_rename 'GiornaleMagazzino', 'tmp__GiornaleMagazzino_1', 'OBJECT'
|
|
go
|
|
|
|
create table GiornaleMagazzino(
|
|
numOp int not null identity constraint PK_GiornaleMagazzino primary key,
|
|
OP nchar(1) not null,
|
|
DataOra datetime not null,
|
|
CodEvento nvarchar(10),
|
|
ModDate datetime,
|
|
UDC nvarchar(50) not null,
|
|
Particolare nvarchar(15) not null,
|
|
CodStatoFrom nvarchar(50) not null,
|
|
CodStatoTo nvarchar(50) not null,
|
|
IdxPosizioneFrom int not null,
|
|
IdxPosizioneTo int not null,
|
|
QtaFrom decimal(10,2) not null,
|
|
QtaTo decimal(10,2) not null,
|
|
DataOraProc datetime
|
|
)
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'tipo operazione I(nsert), U(pdate), D(elete)', 'SCHEMA', 'dbo', 'TABLE', 'GiornaleMagazzino', 'COLUMN', 'OP'
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'GiornaleMagazzino', 'COLUMN', 'CodEvento'
|
|
go
|
|
|
|
set identity_insert GiornaleMagazzino on
|
|
go
|
|
|
|
insert into GiornaleMagazzino(numOp,OP,DataOra,UDC,Particolare,CodStatoFrom,CodStatoTo,IdxPosizioneFrom,IdxPosizioneTo,QtaFrom,QtaTo,DataOraProc) select numOp,OP,DataOra,UDC,Particolare,CodStatoFrom,CodStatoTo,IdxPosizioneFrom,IdxPosizioneTo,QtaFrom,QtaTo,DataOraProc from tmp__GiornaleMagazzino_1
|
|
go
|
|
|
|
set identity_insert GiornaleMagazzino off
|
|
go
|
|
|
|
drop table tmp__GiornaleMagazzino_1
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
exec sp_rename 'PK_StoricoEventi', 'tmp__PK_StoricoEventi', 'OBJECT'
|
|
go
|
|
|
|
exec sp_rename 'StoricoCartellini', 'tmp__StoricoCartellini_2', 'OBJECT'
|
|
go
|
|
|
|
create table StoricoCartellini(
|
|
IdxEv int not null identity constraint PK_StoricoEventi primary key,
|
|
DataEv datetime not null,
|
|
CodEvento nvarchar(10),
|
|
ModDate datetime,
|
|
UDC nvarchar(50) not null,
|
|
CodCS nchar(2),
|
|
CodCliente nvarchar(6),
|
|
RagSociale nvarchar(35),
|
|
Particolare nvarchar(15),
|
|
DescParticolare nvarchar(30),
|
|
DisegnoGrezzo nvarchar(30),
|
|
Esponente nvarchar(6),
|
|
CodImpianto nvarchar(50),
|
|
DescImpianto nvarchar(50),
|
|
CodStampo nvarchar(8),
|
|
Figura nvarchar(4),
|
|
DataFus datetime,
|
|
TurnoFus int,
|
|
CodImballo nvarchar(15),
|
|
CodSoggetto nchar(17),
|
|
NumCont int,
|
|
Tara float,
|
|
Qta decimal(10,2),
|
|
CodStato nvarchar(50),
|
|
IdxPosizione int,
|
|
PesoTot float,
|
|
PesoCad float,
|
|
Note nvarchar(500)
|
|
)
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'StoricoCartellini', 'COLUMN', 'CodEvento'
|
|
go
|
|
|
|
set identity_insert StoricoCartellini on
|
|
go
|
|
|
|
insert into StoricoCartellini(IdxEv,DataEv,UDC,CodCS,CodCliente,RagSociale,Particolare,DescParticolare,DisegnoGrezzo,Esponente,CodImpianto,DescImpianto,CodStampo,Figura,DataFus,TurnoFus,CodImballo,CodSoggetto,NumCont,Tara,Qta,CodStato,IdxPosizione,PesoTot,PesoCad,Note) select IdxEv,DataEv,UDC,CodCS,CodCliente,RagSociale,Particolare,DescParticolare,DisegnoGrezzo,Esponente,CodImpianto,DescImpianto,CodStampo,Figura,DataFus,TurnoFus,CodImballo,CodSoggetto,NumCont,Tara,Qta,CodStato,IdxPosizione,PesoTot,PesoCad,Note from tmp__StoricoCartellini_2
|
|
go
|
|
|
|
set identity_insert StoricoCartellini off
|
|
go
|
|
|
|
drop table tmp__StoricoCartellini_2
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
exec sp_addextendedproperty 'MS_Description', 'NON MODIFICARE: nel codice si usano questi campi x chiamate...', 'SCHEMA', 'dbo', 'TABLE', 'ElencoCartellini', 'COLUMN', 'CodEvento'
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-20
|
|
-- Mod Date: 2012-05-25
|
|
-- Description: trigger x movimenti di inserimento
|
|
-- nella tab GiornaleMagazzino
|
|
-- =============================================
|
|
alter TRIGGER trg_InsMovAS
|
|
ON ElencoCartellini
|
|
AFTER INSERT
|
|
AS
|
|
BEGIN
|
|
|
|
-- setup variabili e verbosità
|
|
SET NOCOUNT ON;
|
|
-- metto in Giornale Magazzino i record inseriti
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, CodEvento, ModDate, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'I', GETDATE(), CodEvento, ModDate, UDC, ISNULL(Particolare,''), 'NEW', CodStato, 0, IdxPosizione, 0, Qta
|
|
FROM inserted
|
|
)
|
|
|
|
END
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-20
|
|
-- Mod Date: 2012-05-25
|
|
-- Description: trigger x movimenti di cancellazione
|
|
-- nella tab GiornaleMagazzino
|
|
-- =============================================
|
|
alter TRIGGER trg_DelMovAS
|
|
ON ElencoCartellini
|
|
AFTER DELETE
|
|
AS
|
|
BEGIN
|
|
|
|
-- setup variabili e verbosità
|
|
SET NOCOUNT ON;
|
|
-- inserisco movimenti AS
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, CodEvento, ModDate, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'D', GETDATE(), CodEvento, ModDate, UDC, ISNULL(Particolare,''), CodStato, 'DEL', IdxPosizione, 0, Qta, 0
|
|
FROM deleted
|
|
)
|
|
|
|
END
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-09-20 mod. 2012-03-14
|
|
-- Description: trigger x inserimento movimenti
|
|
-- nella tab GiornaleMagazzino
|
|
-- =============================================
|
|
alter TRIGGER trg_updMovAS
|
|
ON ElencoCartellini
|
|
AFTER UPDATE
|
|
AS
|
|
BEGIN
|
|
|
|
|
|
/*******************************************************************************
|
|
* Gestione UPDATE ElencoCartellini --> GiornaleMagazzino
|
|
*
|
|
* regola1: si fanno registrazioni solo se varia ALMENO UNO tra
|
|
* - quantità
|
|
* - IdxPosizione
|
|
* - CodStato
|
|
*
|
|
* regola 2:
|
|
* - Particolare deve essere valorizzato ALMENO a '' (blank)
|
|
*
|
|
* regola3: in caso di update SIA di quantità che di posizione/stato
|
|
* - si genera UN PRIMO RECORD di modifica quantità a posizione e stato FISSI
|
|
* - si genera UN SECONDO RECORD con variazione posizione/stato
|
|
*
|
|
*******************************************************************************/
|
|
|
|
-- setup variabili e verbosità
|
|
SET NOCOUNT ON;
|
|
DECLARE @dataOra AS DATETIME
|
|
SET @dataOra = GETDATE()
|
|
|
|
-- PRIMO STEP: quantità!
|
|
IF( UPDATE(Qta) )
|
|
BEGIN
|
|
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, CodEvento, ModDate, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'U', @dataOra, d.CodEvento, d.ModDate, i.UDC, ISNULL(d.Particolare,''), d.CodStato, d.CodStato, d.IdxPosizione, d.IdxPosizione, d.Qta, i.Qta
|
|
FROM inserted AS i
|
|
INNER JOIN deleted AS d ON i.UDC = d.UDC
|
|
WHERE ( (i.Qta <> d.Qta) )
|
|
)
|
|
|
|
END
|
|
|
|
-- ora controllo in caso di modifica di stato o posizione
|
|
IF(UPDATE(CodStato) OR UPDATE(IdxPosizione))
|
|
BEGIN
|
|
|
|
INSERT INTO GiornaleMagazzino(OP, DataOra, CodEvento, ModDate, UDC, Particolare, CodStatoFrom, CodStatoTo, IdxPosizioneFrom, IdxPosizioneTo, QtaFrom, QtaTo)
|
|
(
|
|
SELECT 'U', @dataOra, i.CodEvento, i.ModDate, i.UDC, ISNULL(d.Particolare,''), d.CodStato, i.CodStato, d.IdxPosizione, i.IdxPosizione, i.Qta, i.Qta
|
|
FROM inserted AS i
|
|
INNER JOIN deleted AS d ON i.UDC = d.UDC
|
|
WHERE ( ( i.IdxPosizione <> d.IdxPosizione) OR (i.CodStato <> d.CodStato) )
|
|
)
|
|
|
|
END
|
|
|
|
END
|
|
go
|
|
|
|
-- =============================================
|
|
-- Author: Samuele E. Locatelli
|
|
-- Create date: 2009-10-27
|
|
-- Description: trigger x inserimento valori in archivio storico alla cancellazione/modifica del dato
|
|
-- =============================================
|
|
alter TRIGGER trg_storicoUDC
|
|
ON ElencoCartellini
|
|
AFTER DELETE,UPDATE
|
|
AS
|
|
BEGIN
|
|
-- SET NOCOUNT ON added to prevent extra result sets from
|
|
-- interfering with SELECT statements.
|
|
SET NOCOUNT ON;
|
|
|
|
-- metto in storico la posizione attuale dell'UDC (SE esiste) CANCELLATO
|
|
INSERT INTO StoricoCartellini(DataEv, CodEvento, ModDate, UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare, DisegnoGrezzo, Esponente, CodImpianto,
|
|
DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo, CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, Note)
|
|
(
|
|
|
|
SELECT GETDATE(), CodEvento, ModDate, UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare, DisegnoGrezzo, Esponente, CodImpianto, DescImpianto,
|
|
CodStampo, Figura, DataFus, TurnoFus, CodImballo, CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, Note
|
|
FROM deleted
|
|
)
|
|
|
|
END
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
set xact_abort on
|
|
go
|
|
|
|
begin transaction
|
|
go
|
|
|
|
set ANSI_NULLS on
|
|
go
|
|
|
|
-- =================================================================================================
|
|
-- =================================================================================================
|
|
|
|
|
|
/***************************************
|
|
* STORED stp_UDC_insNewFull
|
|
*
|
|
* crea un nuovo record nella TabStatoOdpUdc FULL (con pesi, qta...) e restituisce il codice UDC appena creato
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.04.28
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_UDC_insNewFull
|
|
(
|
|
@CodCS VARCHAR(2),
|
|
@Flusso VARCHAR(2),
|
|
@Anno VARCHAR(2),
|
|
@CodCliente VARCHAR(6),
|
|
@Particolare VARCHAR(15),
|
|
@CodImpianto AS VARCHAR(50),
|
|
@CodStampo VARCHAR(8),
|
|
@Esponente VARCHAR(6),
|
|
@Figura VARCHAR(4),
|
|
@DataFus DATETIME,
|
|
@TurnoFus INT,
|
|
@CodImballo VARCHAR(15),
|
|
@CodSoggetto VARCHAR(17),
|
|
@Tara FLOAT,
|
|
@IdxPosizione INT,
|
|
@CodTipoDichiaraz CHAR(1),
|
|
@CodEvento VARCHAR(10),
|
|
@Qta DECIMAL(10,2),
|
|
@PesoTot FLOAT,
|
|
@PesoCad FLOAT,
|
|
@CodStato VARCHAR(50),
|
|
@UDC_parent VARCHAR(50),
|
|
@DoDeleteUdcParent BIT,
|
|
@Note NVARCHAR(500)
|
|
)
|
|
AS
|
|
|
|
-- DECLARE iniziali
|
|
DECLARE @UDC AS VARCHAR(50)
|
|
DECLARE @RagSociale AS VARCHAR(35)
|
|
DECLARE @DescParticolare AS VARCHAR(30)
|
|
DECLARE @DescImpianto AS VARCHAR(50)
|
|
DECLARE @DisegnoGrezzo AS VARCHAR(30)
|
|
DECLARE @NumCont AS INT
|
|
DECLARE @numFlu AS INT
|
|
DECLARE @numUdc AS INT
|
|
DECLARE @nextUdc AS INT
|
|
DECLARE @IdxCella AS INT
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Caricamento Dati da anagrafica
|
|
------------------------------------------------------------------------------------------------------
|
|
-- cerco la ragione sociale...
|
|
SET @RagSociale = ISNULL(
|
|
(
|
|
SELECT RagSociale
|
|
FROM RilPro.AnagClienti
|
|
WHERE (CodCliente = @CodCliente)
|
|
)
|
|
, '')
|
|
|
|
-- Cerco descrizione del particolare...
|
|
SET @DescParticolare = ISNULL(
|
|
(
|
|
SELECT DescParticolare
|
|
FROM RilPro.AnagParticolari
|
|
WHERE (Particolare = @Particolare)
|
|
)
|
|
, 'ND')
|
|
|
|
-- se non lo trova provo anche nell'anagrafica leghe
|
|
IF(@DescParticolare = 'ND')-- OR (@DescParticolare is null)
|
|
BEGIN
|
|
SET @DescParticolare = ISNULL(
|
|
(
|
|
SELECT DescLega
|
|
FROM RilPro.AnagLeghe
|
|
WHERE ('L'+CodLega = @Particolare)
|
|
)
|
|
, '')
|
|
END
|
|
-- cerco codice disegno grezzo
|
|
SET @DisegnoGrezzo = ISNULL(
|
|
(
|
|
SELECT DisegnoGrezzo
|
|
FROM RilPro.AnagParticolari
|
|
WHERE (Particolare = @Particolare)
|
|
)
|
|
, '')
|
|
|
|
-- cerco descrizione Impianto
|
|
SET @DescImpianto = ISNULL(
|
|
(
|
|
SELECT DescImpianto
|
|
FROM AnagImpianti
|
|
WHERE (CodImpianto = @CodImpianto)
|
|
)
|
|
, '')
|
|
|
|
|
|
-- Calcolo contatore intero successivo x il contenitore...
|
|
SET @NumCont = (
|
|
SELECT ISNULL(MAX(NumCont), 0) + 1 AS NumCont
|
|
FROM ElencoCartellini
|
|
WHERE (Particolare = @Particolare)
|
|
AND (DataFus = @DataFus)
|
|
AND (TurnoFus = @TurnoFus)
|
|
AND (CodImpianto = @CodImpianto)
|
|
AND (CodStampo = @CodStampo)
|
|
AND (Figura = @Figura)
|
|
)
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Flusso
|
|
------------------------------------------------------------------------------------------------------
|
|
-- controllo se esiste il flusso (bilancia)...
|
|
SET @numFlu = (
|
|
SELECT count(*)
|
|
FROM AnagBilance
|
|
WHERE CodBilancia = @Flusso
|
|
)
|
|
-- ...sennò lo creo...
|
|
IF(@numFlu = 0)
|
|
BEGIN
|
|
-- se c'è inserisco in tab
|
|
INSERT INTO AnagBilance(CodBilancia, DescrImpianto, CodCS)
|
|
VALUES (@Flusso, @Flusso, @CodCS)
|
|
END
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- UDC
|
|
------------------------------------------------------------------------------------------------------
|
|
-- controllo se ci sia già un UDC per company / flusso anno
|
|
BEGIN TRAN
|
|
-- cerco nella tab contatori se esiste contatore x il flusso
|
|
-- controllo se record c'è...
|
|
IF EXISTS( SELECT TOP 1 Flusso FROM ContatoriUdc
|
|
WHERE CodCS = @CodCS
|
|
AND Flusso = @Flusso
|
|
AND Anno = @Anno )
|
|
BEGIN
|
|
-- se c'è incremento di 1 in tab
|
|
UPDATE ContatoriUdc
|
|
SET LastIdx = LastIdx + 1
|
|
WHERE CodCS = @CodCS
|
|
AND Flusso = @Flusso
|
|
AND Anno = @Anno
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- lo creo!
|
|
INSERT INTO ContatoriUdc(CodCS, Flusso, Anno, LastIdx)
|
|
VALUES (@CodCS, @Flusso, @Anno, 1)
|
|
END
|
|
-- aggiorno numero UDC
|
|
SET @numUdc = (
|
|
SELECT LastIdx
|
|
FROM ContatoriUdc
|
|
WHERE CodCS = @CodCS
|
|
AND Flusso = @Flusso
|
|
AND Anno = @Anno
|
|
)
|
|
COMMIT TRAN
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo principale x inserimento nuovo record
|
|
------------------------------------------------------------------------------------------------------
|
|
BEGIN TRAN
|
|
-- ottengo il nuovo codice UDC completo
|
|
SET @UDC = dbo.componiUdc(@CodCS, @Flusso, @Anno, @numUdc)
|
|
|
|
-- inserisco un nuovo record
|
|
INSERT INTO ElencoCartellini(UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare, DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo, CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, CreateDate, ModDate, Note, CodEvento)
|
|
VALUES (@UDC, @CodCS, @CodCliente, @RagSociale, @Particolare, @DescParticolare, @DisegnoGrezzo, @Esponente, @CodImpianto, @DescImpianto, @CodStampo, @Figura, @DataFus, @TurnoFus, @CodImballo, @CodSoggetto, @NumCont, @Tara, @Qta, @CodStato, @IdxPosizione, @PesoTot, @PesoCad, GETDATE(), GETDATE(), @Note, @CodEvento)
|
|
|
|
-- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa) SSE UDC_parent valido
|
|
IF((NOT @UDC_parent IS NULL) AND (NOT @UDC_parent = ''))
|
|
BEGIN
|
|
INSERT INTO RelazUDC(UDC_parent, UDC_child)
|
|
VALUES (@UDC_parent, @UDC)
|
|
END
|
|
COMMIT TRAN
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo secondario x eventuale cancellazione UDC tara parent e inserimento in posizione
|
|
------------------------------------------------------------------------------------------------------
|
|
-- se richiesto elimino l'UDC parent (tara)
|
|
IF(@DoDeleteUdcParent = 1)
|
|
BEGIN
|
|
DELETE FROM ElencoCartellini WHERE UDC = @UDC_parent
|
|
END
|
|
|
|
-- calcolo la prima cella della posizione indicata..
|
|
SET @IdxCella = (
|
|
SELECT TOP 1 c.IdxCella
|
|
FROM Celle c INNER JOIN Blocchi b ON c.IdxBlocco=b.IdxBlocco
|
|
WHERE b.CodMag = CAST(@IdxPosizione AS NVARCHAR(50))
|
|
)
|
|
-- inserisco il cartellino nella prima cella della posizione indicata..
|
|
INSERT INTO PosizioneUdcCorrente
|
|
VALUES (@UDC, @IdxCella, @CodCS, GETDATE())
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- restituisco la tab dati con l'udc appena inserito
|
|
------------------------------------------------------------------------------------------------------
|
|
SELECT *
|
|
FROM ElencoCartellini
|
|
WHERE UDC = @UDC
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
RETURN
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_UDC_insNewFull_fixUDC
|
|
*
|
|
* crea un nuovo record nella TabStatoOdpUdc FULL (con pesi, qta...) avendo in entrata il codice UDC da
|
|
|
|
utilizzare
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2011.12.07
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_UDC_insNewFull_fixUDC
|
|
(
|
|
@UDC AS NVARCHAR(50),
|
|
@CodCS VARCHAR(2),
|
|
@Flusso VARCHAR(2),
|
|
@Anno VARCHAR(2),
|
|
@CodCliente VARCHAR(6),
|
|
@Particolare VARCHAR(15),
|
|
@CodImpianto AS VARCHAR(50),
|
|
@CodStampo VARCHAR(8),
|
|
@Esponente VARCHAR(6),
|
|
@Figura VARCHAR(4),
|
|
@DataFus DATETIME,
|
|
@TurnoFus INT,
|
|
@CodImballo VARCHAR(15),
|
|
@CodSoggetto VARCHAR(17),
|
|
@Tara FLOAT,
|
|
@IdxPosizione INT,
|
|
@CodTipoDichiaraz CHAR(1),
|
|
@CodEvento VARCHAR(10),
|
|
@Qta DECIMAL(10,2),
|
|
@PesoTot FLOAT,
|
|
@PesoCad FLOAT,
|
|
@CodStato VARCHAR(50),
|
|
@UDC_parent VARCHAR(50),
|
|
@DoDeleteUdcParent BIT,
|
|
@Note NVARCHAR(500)
|
|
)
|
|
AS
|
|
|
|
-- DECLARE iniziali
|
|
DECLARE @RagSociale AS VARCHAR(35)
|
|
DECLARE @DescParticolare AS VARCHAR(30)
|
|
DECLARE @DescImpianto AS VARCHAR(50)
|
|
DECLARE @DisegnoGrezzo AS VARCHAR(30)
|
|
DECLARE @NumCont AS INT
|
|
DECLARE @numFlu AS INT
|
|
DECLARE @numUdc AS INT
|
|
DECLARE @nextUdc AS INT
|
|
DECLARE @IdxCella AS INT
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Caricamento Dati da anagrafica
|
|
------------------------------------------------------------------------------------------------------
|
|
-- cerco la ragione sociale...
|
|
SET @RagSociale = ISNULL(
|
|
(
|
|
SELECT RagSociale
|
|
FROM RilPro.AnagClienti
|
|
WHERE (CodCliente = @CodCliente)
|
|
)
|
|
, '')
|
|
|
|
-- Cerco descrizione del particolare...
|
|
SET @DescParticolare = ISNULL(
|
|
(
|
|
SELECT DescParticolare
|
|
FROM RilPro.AnagParticolari
|
|
WHERE (Particolare = @Particolare)
|
|
)
|
|
, 'ND')
|
|
|
|
-- se non lo trova provo anche nell'anagrafica leghe
|
|
IF(@DescParticolare = 'ND')-- OR (@DescParticolare is null)
|
|
BEGIN
|
|
SET @DescParticolare = ISNULL(
|
|
(
|
|
SELECT DescLega
|
|
FROM RilPro.AnagLeghe
|
|
WHERE ('L'+CodLega = @Particolare)
|
|
)
|
|
, '')
|
|
END
|
|
-- cerco codice disegno grezzo
|
|
SET @DisegnoGrezzo = ISNULL(
|
|
(
|
|
SELECT DisegnoGrezzo
|
|
FROM RilPro.AnagParticolari
|
|
WHERE (Particolare = @Particolare)
|
|
)
|
|
, '')
|
|
|
|
-- cerco descrizione Impianto
|
|
SET @DescImpianto = ISNULL(
|
|
(
|
|
SELECT DescImpianto
|
|
FROM AnagImpianti
|
|
WHERE (CodImpianto = @CodImpianto)
|
|
)
|
|
, '')
|
|
|
|
|
|
|
|
-- Calcolo contatore intero successivo x il contenitore...
|
|
SET @NumCont = (
|
|
SELECT ISNULL(MAX(NumCont), 0) + 1 AS NumCont
|
|
FROM ElencoCartellini
|
|
WHERE (Particolare = @Particolare)
|
|
AND (DataFus = @DataFus)
|
|
AND (TurnoFus = @TurnoFus)
|
|
AND (CodImpianto = @CodImpianto)
|
|
AND (CodStampo = @CodStampo)
|
|
AND (Figura = @Figura)
|
|
)
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo principale x inserimento nuovo record
|
|
------------------------------------------------------------------------------------------------------
|
|
BEGIN TRAN
|
|
|
|
-- inserisco un nuovo record
|
|
INSERT INTO ElencoCartellini(UDC, CodCS, CodCliente, RagSociale, Particolare, DescParticolare,
|
|
|
|
DisegnoGrezzo, Esponente, CodImpianto, DescImpianto, CodStampo, Figura, DataFus, TurnoFus, CodImballo,
|
|
|
|
CodSoggetto, NumCont, Tara, Qta, CodStato, IdxPosizione, PesoTot, PesoCad, CreateDate, ModDate, Note, CodEvento)
|
|
VALUES (@UDC, @CodCS, @CodCliente, @RagSociale, @Particolare, @DescParticolare, @DisegnoGrezzo,
|
|
|
|
@Esponente, @CodImpianto, @DescImpianto, @CodStampo, @Figura, @DataFus, @TurnoFus, @CodImballo,
|
|
|
|
@CodSoggetto, @NumCont, @Tara, @Qta, @CodStato, @IdxPosizione, @PesoTot, @PesoCad, GETDATE(), GETDATE(),
|
|
|
|
@Note, @CodEvento)
|
|
|
|
-- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa) SSE UDC_parent valido
|
|
IF((NOT @UDC_parent IS NULL) AND (NOT @UDC_parent = ''))
|
|
BEGIN
|
|
INSERT INTO RelazUDC(UDC_parent, UDC_child)
|
|
VALUES (@UDC_parent, @UDC)
|
|
END
|
|
COMMIT TRAN
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo secondario x eventuale cancellazione UDC tara parent e inserimento in posizione
|
|
------------------------------------------------------------------------------------------------------
|
|
-- se richiesto elimino l'UDC parent (tara)
|
|
IF(@DoDeleteUdcParent = 1)
|
|
BEGIN
|
|
DELETE FROM ElencoCartellini WHERE UDC = @UDC_parent
|
|
END
|
|
|
|
-- calcolo la prima cella della posizione indicata..
|
|
SET @IdxCella = (
|
|
SELECT TOP 1 c.IdxCella
|
|
FROM Celle c INNER JOIN Blocchi b ON
|
|
|
|
c.IdxBlocco=b.IdxBlocco
|
|
WHERE b.CodMag = CAST(@IdxPosizione AS NVARCHAR(50))
|
|
)
|
|
-- inserisco il cartellino nella prima cella della posizione indicata..
|
|
INSERT INTO PosizioneUdcCorrente
|
|
VALUES (@UDC, @IdxCella, @CodCS, GETDATE())
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- restituisco la tab dati con l'udc appena inserito
|
|
------------------------------------------------------------------------------------------------------
|
|
SELECT *
|
|
FROM ElencoCartellini
|
|
WHERE UDC = @UDC
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
RETURN
|
|
go
|
|
|
|
-- =================================================================================================
|
|
|
|
/***************************************
|
|
* STORED stp_UDC_update
|
|
*
|
|
* aggiorna un cartellino dato il suo codice UDC e tutti i parametri da aggiornare
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.04.30
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_UDC_update
|
|
(
|
|
@UDC_edit VARCHAR(50),
|
|
@CodCS VARCHAR(2),
|
|
@Flusso VARCHAR(2),
|
|
@Anno VARCHAR(2),
|
|
@CodCliente VARCHAR(6),
|
|
@Particolare VARCHAR(15),
|
|
@CodImpianto AS VARCHAR(50),
|
|
@CodStampo VARCHAR(8),
|
|
@Esponente VARCHAR(6),
|
|
@Figura VARCHAR(4),
|
|
@DataFus DATETIME,
|
|
@TurnoFus INT,
|
|
@CodImballo VARCHAR(15),
|
|
@CodSoggetto VARCHAR(17),
|
|
@Tara FLOAT,
|
|
@IdxPosizione INT,
|
|
@CodTipoDichiaraz CHAR(1),
|
|
@CodEvento VARCHAR(10),
|
|
@Qta DECIMAL(10,2),
|
|
@PesoTot FLOAT,
|
|
@PesoCad FLOAT,
|
|
@CodStato VARCHAR(50),
|
|
@UDC_parent VARCHAR(50),
|
|
@Note NVARCHAR(500)
|
|
)
|
|
AS
|
|
|
|
-- DECLARE iniziali
|
|
DECLARE @RagSociale AS VARCHAR(35)
|
|
DECLARE @DescParticolare AS VARCHAR(30)
|
|
DECLARE @DescImpianto AS VARCHAR(50)
|
|
DECLARE @DisegnoGrezzo AS VARCHAR(30)
|
|
DECLARE @NumCont AS INT
|
|
DECLARE @numFlu AS INT
|
|
DECLARE @numUdc AS INT
|
|
DECLARE @nextUdc AS INT
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Caricamento Dati da anagrafica
|
|
------------------------------------------------------------------------------------------------------
|
|
-- cerco la ragione sociale...
|
|
SET @RagSociale = ISNULL(
|
|
(
|
|
SELECT RagSociale
|
|
FROM RilPro.AnagClienti
|
|
WHERE (CodCliente = @CodCliente)
|
|
)
|
|
, '')
|
|
|
|
-- Cerco descrizione del particolare...
|
|
SET @DescParticolare = ISNULL(
|
|
(
|
|
SELECT DescParticolare
|
|
FROM RilPro.AnagParticolari
|
|
WHERE (Particolare = @Particolare)
|
|
)
|
|
, 'ND')
|
|
|
|
-- se non lo trova provo anche nell'anagrafica leghe
|
|
IF(@DescParticolare = 'ND')-- OR (@DescParticolare is null)
|
|
BEGIN
|
|
SET @DescParticolare = ISNULL(
|
|
(
|
|
SELECT DescLega
|
|
FROM RilPro.AnagLeghe
|
|
WHERE ('L'+CodLega = @Particolare)
|
|
)
|
|
, '')
|
|
END
|
|
-- cerco codice disegno grezzo
|
|
SET @DisegnoGrezzo = ISNULL(
|
|
(
|
|
SELECT DisegnoGrezzo
|
|
FROM RilPro.AnagParticolari
|
|
WHERE (Particolare = @Particolare)
|
|
)
|
|
, '')
|
|
|
|
-- cerco descrizione Impianto
|
|
SET @DescImpianto = ISNULL(
|
|
(
|
|
SELECT DescImpianto
|
|
FROM AnagImpianti
|
|
WHERE (CodImpianto = @CodImpianto)
|
|
)
|
|
, '')
|
|
|
|
-- Calcolo contatore intero successivo x il contenitore...
|
|
SET @NumCont = (
|
|
SELECT NumCont
|
|
FROM ElencoCartellini
|
|
WHERE (UDC = @UDC_edit)
|
|
)
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Flusso
|
|
------------------------------------------------------------------------------------------------------
|
|
-- controllo se esiste il flusso (bilancia)...
|
|
SET @numFlu = (
|
|
SELECT count(*)
|
|
FROM AnagBilance
|
|
WHERE CodBilancia = @Flusso
|
|
)
|
|
-- ...sennò lo creo...
|
|
IF(@numFlu = 0)
|
|
BEGIN
|
|
-- se c'è inserisco in tab
|
|
INSERT INTO AnagBilance(CodBilancia, DescrImpianto, CodCS)
|
|
VALUES (@Flusso, @Flusso, @CodCS)
|
|
END
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo principale x edit record
|
|
------------------------------------------------------------------------------------------------------
|
|
BEGIN TRAN
|
|
|
|
-- elimino vecchio record parent/child
|
|
DELETE FROM RelazUDC
|
|
WHERE (UDC_child = @UDC_edit)
|
|
|
|
-- modifico il record
|
|
UPDATE ElencoCartellini
|
|
SET CodCS = @CodCS, CodCliente = @CodCliente, RagSociale = @RagSociale, Particolare = @Particolare, DescParticolare = @DescParticolare,
|
|
DisegnoGrezzo = @DisegnoGrezzo, Esponente = @Esponente, CodImpianto = @CodImpianto, DescImpianto = @DescImpianto, CodStampo = @CodStampo,
|
|
Figura = @Figura, DataFus = @DataFus, TurnoFus = @TurnoFus, CodImballo = @CodImballo, CodSoggetto = @CodSoggetto, NumCont = @NumCont,
|
|
Tara = @Tara, Qta = @Qta, CodStato = @CodStato, IdxPosizione = @IdxPosizione, PesoTot = @PesoTot, PesoCad = @PesoCad, ModDate = GETDATE(), Note = @Note, CodEvento = @CodEvento
|
|
WHERE UDC = @UDC_edit
|
|
|
|
-- inserisco relazione parent-child tra UDC vecchio (tara) e nuovo (pesa)
|
|
INSERT INTO RelazUDC(UDC_parent, UDC_child)
|
|
VALUES (@UDC_parent, @UDC_edit)
|
|
COMMIT TRAN
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- restituisco la tab dati con l'udc appena inserito
|
|
------------------------------------------------------------------------------------------------------
|
|
SELECT *
|
|
FROM ElencoCartellini
|
|
WHERE UDC = @UDC_edit
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
RETURN
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_UDC_updateIdxPosizione
|
|
*
|
|
* aggiorna un cartellino x la sua posizione logica
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.06.12
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_UDC_updateIdxPosizione
|
|
(
|
|
@UDC VARCHAR(50),
|
|
@IdxPosizione INT
|
|
)
|
|
AS
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo principale x edit record
|
|
------------------------------------------------------------------------------------------------------
|
|
BEGIN TRAN
|
|
|
|
-- modifico il record
|
|
UPDATE ElencoCartellini
|
|
SET IdxPosizione = @IdxPosizione, ModDate = GETDATE(), CodEvento='UDC_MOV'
|
|
WHERE UDC = @UDC
|
|
|
|
COMMIT TRAN
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- restituisco la tab dati con l'udc appena inserito
|
|
------------------------------------------------------------------------------------------------------
|
|
SELECT *
|
|
FROM ElencoCartellini
|
|
WHERE UDC = @UDC
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
RETURN
|
|
go
|
|
|
|
/*****************************************
|
|
* STORED stp_UDC_updateNoteByRQ
|
|
*
|
|
* Aggiorna note UDC dato il rapp di qualità cui sono legate
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2012.02.14
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_UDC_updateNoteByRQ
|
|
(
|
|
@nRapQual NUMERIC(6,0),
|
|
@note NVARCHAR(500)
|
|
)
|
|
AS
|
|
|
|
UPDATE ElencoCartellini
|
|
SET note = @note
|
|
,ModDate=GETDATE(),
|
|
CodEvento = 'UDC_RDQ'
|
|
FROM ElencoCartellini AS ec INNER JOIN v_RapQualNote AS rq ON ec.UDC = rq.UDC
|
|
WHERE (rq.nRapQual = @nRapQual)
|
|
|
|
RETURN
|
|
go
|
|
|
|
/***************************************
|
|
* STORED stp_UDC_updateQty
|
|
*
|
|
* aggiorna un cartellino x la sua quantità
|
|
*
|
|
* Steamware, S.E.L.
|
|
* mod: 2010.06.12
|
|
*
|
|
****************************************/
|
|
alter PROCEDURE stp_UDC_updateQty
|
|
(
|
|
@UDC VARCHAR(50),
|
|
@CodSoggetto VARCHAR(17),
|
|
@CodTipoDichiaraz CHAR(1),
|
|
@CodEvento VARCHAR(10),
|
|
@Qta DECIMAL(10,2)
|
|
)
|
|
AS
|
|
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- Ciclo principale x edit record
|
|
------------------------------------------------------------------------------------------------------
|
|
BEGIN TRAN
|
|
|
|
-- modifico il record
|
|
UPDATE ElencoCartellini
|
|
SET Qta = @Qta, ModDate = GETDATE(), CodEvento = @CodEvento
|
|
WHERE UDC = @UDC
|
|
|
|
COMMIT TRAN
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
------------------------------------------------------------------------------------------------------
|
|
-- restituisco la tab dati con l'udc appena inserito
|
|
------------------------------------------------------------------------------------------------------
|
|
SELECT *
|
|
FROM ElencoCartellini
|
|
WHERE UDC = @UDC
|
|
------------------------------------------------------------------------------------------------------
|
|
|
|
RETURN
|
|
go
|
|
|
|
commit
|
|
go
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-- registro versione...
|
|
INSERT INTO [dbo].[LogUpdateDb] ([Versione],[Data]) VALUES(449, GETDATE())
|
|
GO
|