diff --git a/C2P_Project/C2P_DB.dbmdl b/C2P_Project/C2P_DB.dbmdl new file mode 100644 index 0000000..b13fa3e Binary files /dev/null and b/C2P_Project/C2P_DB.dbmdl differ diff --git a/C2P_Project/C2P_DB.sqlproj b/C2P_Project/C2P_DB.sqlproj index b00c9e7..52c9e82 100644 --- a/C2P_Project/C2P_DB.sqlproj +++ b/C2P_Project/C2P_DB.sqlproj @@ -199,6 +199,11 @@ + + + + + diff --git a/C2P_Project/dbo/Stored Procedures/dbo.stp_QLF_UpdCosts.sql b/C2P_Project/dbo/Stored Procedures/dbo.stp_QLF_UpdCosts.sql new file mode 100644 index 0000000..2cf9ec9 --- /dev/null +++ b/C2P_Project/dbo/Stored Procedures/dbo.stp_QLF_UpdCosts.sql @@ -0,0 +1,43 @@ +-- ============================================= +-- Author: Steamware - S.E.L. +-- Create date: 2014.04.15 +-- Description: update di un record in QL (Full) e poi aggiorna a cascata +-- ============================================= +create PROCEDURE [dbo].[stp_QLF_UpdCosts] +( + @Original_QuoteType CHAR(1) = 'Q', + @Original_CodQuote BIGINT = 0, + @Original_QuoteRev INT = 0, + @PriceOff DECIMAL(18, 6) +) +AS + +BEGIN TRAN + + -- aggiorno valori QuoteList! + UPDATE QuoteList + SET PriceOff = @PriceOff + WHERE QuoteType = @Original_QuoteType + AND CodQuote = @Original_CodQuote + AND QuoteRev = @Original_QuoteRev + + + -- update dei valori calcolati! + EXEC stp_QL_fullDataUpdate @Original_QuoteType + ,@Original_CodQuote + ,@Original_QuoteRev + ,'Y' + +COMMIT TRAN + + +-- seleziono intera riga! + +SELECT * +FROM v_QuoteFull_Q +WHERE QuoteType = @Original_QuoteType + AND CodQuote = @Original_CodQuote + AND QuoteRev = @Original_QuoteRev + + +RETURN \ No newline at end of file diff --git a/C2P_Project/dbo/Stored Procedures/dbo.stp_QLF_UpdHead.sql b/C2P_Project/dbo/Stored Procedures/dbo.stp_QLF_UpdHead.sql new file mode 100644 index 0000000..0d4199f --- /dev/null +++ b/C2P_Project/dbo/Stored Procedures/dbo.stp_QLF_UpdHead.sql @@ -0,0 +1,63 @@ +-- ============================================= +-- Author: Steamware - S.E.L. +-- Create date: 2014.04.11 +-- Description: update di un record in QL (Full) e poi aggiorna a cascata +-- ============================================= +CREATE PROCEDURE [dbo].[stp_QLF_UpdHead] +( + @Original_QuoteType CHAR(1) = 'Q', + @Original_CodQuote BIGINT = 0, + @Original_QuoteRev INT = 0, + @CodClient NVARCHAR(50) = '', + @CodItem NVARCHAR(50) = '', + @RawMat NVARCHAR(50), + @RawMatCost DECIMAL(18, 6), + @RawMatExtraCost DECIMAL(18, 6), + @BatchQty INT, + @CodInco NVARCHAR(5), + @Note NVARCHAR(2500) = '' +) +AS + +BEGIN TRAN + + -- aggiorno valori QuoteList! + UPDATE QuoteList + SET CodClient = @CodClient + , CodItem = @CodItem + , RawMat = @RawMat + , BatchQty = @BatchQty + , CodInco = @CodInco + , Note = @Note + WHERE QuoteType = @Original_QuoteType + AND CodQuote = @Original_CodQuote + AND QuoteRev = @Original_QuoteRev + + -- aggiorno valori QuoteRM + UPDATE QuoteRM + SET RawMat = @RawMat + , RawMatCost = @RawMatCost + , RawMatExtraCost = @RawMatExtraCost + WHERE QuoteType = @Original_QuoteType + AND CodQuote = @Original_CodQuote + AND QuoteRev = @Original_QuoteRev + + -- update dei valori calcolati! + EXEC stp_QL_fullDataUpdate @Original_QuoteType + ,@Original_CodQuote + ,@Original_QuoteRev + ,'Y' + +COMMIT TRAN + + +-- seleziono intera riga! + +SELECT * +FROM v_QuoteFull_Q +WHERE QuoteType = @Original_QuoteType + AND CodQuote = @Original_CodQuote + AND QuoteRev = @Original_QuoteRev + + +RETURN \ No newline at end of file diff --git a/C2P_Project/dbo/Stored Procedures/dbo.stp_insNewLemma.sql b/C2P_Project/dbo/Stored Procedures/dbo.stp_insNewLemma.sql new file mode 100644 index 0000000..e07fb76 --- /dev/null +++ b/C2P_Project/dbo/Stored Procedures/dbo.stp_insNewLemma.sql @@ -0,0 +1,32 @@ + + +/************************************* +* STORED PROCEDURE stp_insNewLemma +* +* elimina record anagrafica classe prodotto +* +* mod : 14/05/2012 +* aut : S.E. Locatelli +**************************************/ +CREATE PROCEDURE [dbo].[stp_insNewLemma] +( + @lemma NVARCHAR(50), + @traduzione NVARCHAR(500) +) +AS + +-- elimino se c'era già... +DELETE +FROM dbo.Vocabolario +WHERE lemma = @lemma + +-- inserisco x tutte le lingue attive... +INSERT INTO dbo.Vocabolario +SELECT lingua, @lemma, @traduzione +FROM Lingue + +SELECT * +FROM dbo.Vocabolario +WHERE lemma = @lemma + +RETURN \ No newline at end of file diff --git a/C2P_Project/dbo/Stored Procedures/dbo.stp_test.sql b/C2P_Project/dbo/Stored Procedures/dbo.stp_test.sql new file mode 100644 index 0000000..0ec67bd --- /dev/null +++ b/C2P_Project/dbo/Stored Procedures/dbo.stp_test.sql @@ -0,0 +1,6 @@ +CREATE PROCEDURE stp_test +AS + SELECT TOP 1 * INTO #QuoteParam FROM dbo.ClientDet + EXEC stp_QL_update 'Q', 1312130001, 0 --WITH RECOMPILE + SELECT * FROM #QuoteParam + DROP TABLE #QuoteParam \ No newline at end of file diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataSearch.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataSearch.sql index a8cf944..1c82fa5 100644 --- a/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataSearch.sql +++ b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataSearch.sql @@ -5,11 +5,14 @@ -- Create date: 2014.02.11 -- Description: Recupera tutti i dati dalle tab QuoteList x avere schema con ricerca x cliente, item, materiale -- ============================================= -create PROCEDURE [dbo].[stp_QL_fullDataSearch] ( - @CodClient NVARCHAR(50) = '' - , @CodItem NVARCHAR(50) = '' - , @RawMat NVARCHAR(50) = '' - ) +CREATE PROCEDURE [dbo].[stp_QL_fullDataSearch] +( + @CodClient NVARCHAR(50) = '' + , @CodItem NVARCHAR(50) = '' + , @RawMat NVARCHAR(50) = '' + , @DataMin DATETIME + , @DataMax DATETIME +) AS SET NOCOUNT ON @@ -19,5 +22,6 @@ FROM v_QuoteFull_Q WHERE CodClient = CASE WHEN ISNULL(@CodClient,'') = '' THEN CodClient ELSE @CodClient END AND CodItem = CASE WHEN ISNULL(@CodItem,'') = '' THEN CodItem ELSE @CodItem END AND RawMat = CASE WHEN ISNULL(@RawMat,'') = '' THEN RawMat ELSE @RawMat END + --AND CodQuote BETWEEN CONVERT(NVARCHAR(30), @DataMin, 12)*10000 AND (CONVERT(NVARCHAR(30), @DataMax, 12) +1 )*10000 -- FARE FILTRO DATE!!! non c'è vero campo data... RETURN diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataUpdate.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataUpdate.sql index 323eb08..ffb7eaa 100644 --- a/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataUpdate.sql +++ b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataUpdate.sql @@ -1,5 +1,4 @@ - --- ============================================= +-- ============================================= -- STORED PROCEDURE stp_QL_fullDataUpdate -- -- Author: Steamware @@ -7,11 +6,11 @@ -- Description: Recupera tutti i dati dalle tab QuoteList x avere schema x report/gestioen web -- ============================================= CREATE PROCEDURE [dbo].[stp_QL_fullDataUpdate] ( - @QuoteType CHAR(1) = 'Q' - , @CodQuote BIGINT = 0 - , @QuoteRev INT = 0 - , @DoUpdate CHAR(1) = 'N' -- se si debba fare ricalcolo Y/N - ) + @QuoteType CHAR(1) = 'Q' + , @CodQuote BIGINT = 0 + , @QuoteRev INT = 0 + , @DoUpdate CHAR(1) = 'N' -- se si debba fare ricalcolo Y/N + ) AS SET NOCOUNT ON @@ -27,15 +26,13 @@ SET NOCOUNT ON */ - - --DECLARE @FullCost DECIMAL(9,6) -- , @MinPrice DECIMAL(9,6) IF (@DoUpdate = 'Y') BEGIN - EXEC stp_QL_update @QuoteType - , @CodQuote - , @QuoteRev + EXEC stp_QL_update @QuoteType + , @CodQuote + , @QuoteRev END @@ -58,46 +55,46 @@ AS ( SELECT * FROM ( SELECT QuoteType - , CodQuote - , QuoteRev - , Descr - , Parameter + , CodQuote + , QuoteRev + , Descr + , Parameter FROM dbo.QuoteParam WHERE CodQuote = @CodQuote - AND QuoteType = @QuoteType - AND QuoteRev = @QuoteRev + AND QuoteType = @QuoteType + AND QuoteRev = @QuoteRev ) AS SourceTable PIVOT(MIN(Parameter) FOR Descr IN ( - ItemDescr - , CodifProfilo - , ClasseMerc - , CodClientAssoc - , ClientNameAssoc - , CodDiesGroup - , TipoDies - , DiamDies - , HoleNumDies - , NumDiesInList - , NumDiesExaust - , CodPlant - , KeyAM - , KeyAMIL - , NumSMED - , KgTeo - , KgProdotti - , QuotaMan - , DiesPrice - , DiesExpLife - , DiesEOLife - , PkgDesc - , PRMWeight - , PWeight - , PTare - , TareStRatio + ItemDescr + , CodifProfilo + , ClasseMerc + , CodClientAssoc + , ClientNameAssoc + , CodDiesGroup + , TipoDies + , DiamDies + , HoleNumDies + , NumDiesInList + , NumDiesExaust + , CodPlant + , KeyAM + , KeyAMIL + , NumSMED + , KgTeo + , KgProdotti + , QuotaMan + , DiesPrice + , DiesExpLife + , DiesEOLife + , PkgDesc + , PRMWeight + , PWeight + , PTare + , TareStRatio , LivPackage , LivPackageDett - ) + ) ) AS PivotData ), -- ================================================= @@ -107,145 +104,146 @@ ctePivotQuoteOC AS ( SELECT * FROM ( SELECT QuoteType - , CodQuote - , QuoteRev - , Class01 + ProcessNum AS ClassProc - , C4UG + , CodQuote + , QuoteRev + , Class01 + ProcessNum AS ClassProc + , C4UG FROM dbo.QuoteOC WHERE CodQuote = @CodQuote - AND QuoteType = @QuoteType - AND QuoteRev = @QuoteRev + AND QuoteType = @QuoteType + AND QuoteRev = @QuoteRev ) AS SourceTable PIVOT(SUM(C4UG) FOR ClassProc IN ( EE01 - , GAS01 - , MATRICE01 - , VENDITA01 - , ROTTAME01 - , VENDITA04 - , ROTTAME04 - , IMBALLO04 - , TRASPORTI04 - , PROVVIGIONI04 - ) + , GAS01 + , MATRICE01 + , VENDITA01 + , ROTTAME01 + , VENDITA04 + , ROTTAME04 + , IMBALLO04 + , TRASPORTI04 + , PROVVIGIONI04 + ) ) AS PivotData ) -- ================================================= -- MAIN Select Tabella con INTO temp table -- ================================================= SELECT 'V14.1' AS Vers - , QL.QuoteType - , QL.CodQuote - , QL.QuoteRev - , QL.CodClient - , CD.ClientName - , QL.CodItem - , QL.CodItemGroup - , QL.RawMat - , QL.UnitWeight - , QL.BatchQty - , QL.CodInco - , QL.KeyAM - , QL.Note - , QL.PriceOff - , pQP.CodClientAssoc - , pQP.ClientNameAssoc - , pQP.ItemDescr - , pQP.CodifProfilo - , pQP.ClasseMerc - , pQP.TipoDies - , pQP.CodDiesGroup - , pQP.DiamDies - , pQP.HoleNumDies - , pQP.DiesPrice - , pQP.DiesExpLife - , pQP.DiesEOLife - , pQP.NumDiesInList - , pQP.NumDiesExaust - , pQP.CodPlant - , pQP.KeyAMIL - , pQP.KgTeo - , pQP.NumSMED - , pQP.QuotaMan - , pQP.PRMWeight - , pQP.PWeight - , pQP.PTare + , QL.QuoteType + , QL.CodQuote + , QL.QuoteRev + , QL.IdxQState + , QL.CodClient + , CD.ClientName + , QL.CodItem + , QL.CodItemGroup + , QL.RawMat + , QL.UnitWeight + , QL.BatchQty + , QL.CodInco + , QL.KeyAM + , QL.Note + , QL.PriceOff + , pQP.CodClientAssoc + , pQP.ClientNameAssoc + , pQP.ItemDescr + , pQP.CodifProfilo + , pQP.ClasseMerc + , pQP.TipoDies + , pQP.CodDiesGroup + , pQP.DiamDies + , pQP.HoleNumDies + , pQP.DiesPrice + , pQP.DiesExpLife + , pQP.DiesEOLife + , pQP.NumDiesInList + , pQP.NumDiesExaust + , pQP.CodPlant + , pQP.KeyAMIL + , pQP.KgTeo + , pQP.NumSMED + , pQP.QuotaMan + , pQP.PRMWeight + , pQP.PWeight + , pQP.PTare , pQP.LivPackage , pQP.LivPackageDett - , QRM.RawMatCost - , QRM.RawMatExtraCost - , QRM.RawMatCost + QRM.RawMatExtraCost AS RawMatFullCost -- fare campo calcolato ?!? - , QRM.CodPackag + , QRM.RawMatCost + , QRM.RawMatExtraCost + , QRM.RawMatCost + QRM.RawMatExtraCost AS RawMatFullCost -- fare campo calcolato ?!? + , QRM.CodPackag , pQP.PkgDesc - , QRM.FSR - , ISNULL(pQOC.PROVVIGIONI04, 0) AS ProvvCost - , ISNULL(pQOC.EE01, 0) AS EECost - , ISNULL(pQOC.GAS01, 0) AS GasCost - , ISNULL(pQOC.MATRICE01, 0) AS DiesCost - , ISNULL(pQOC.IMBALLO04, 0) AS PackCost - , ISNULL(pQOC.TRASPORTI04, 0) AS TranspCost - , ISNULL(pQOC.VENDITA01, 0) AS SellCost01 - , ISNULL(pQOC.ROTTAME01, 0) AS RefCost01 - , ISNULL(pQOC.VENDITA04, 0) AS SellCost04 - , ISNULL(pQOC.ROTTAME04, 0) AS RefCost04 - , QWI01.WSR AS WSR01 - , QWI01.MSR AS MSR01 - , QWI01.NetProd AS NetProd01 - , QWI01.FC4UG AS FC4UG01 - , QWI01.VC4UG AS VC4UG01 - , QWI01.OH4UG AS OH4UG01 - , QWI01.SC4UG AS SC4UG01 - , 1 - (QWI01.DYR * QWI02.DYR * QWI03.DYR * QWI04.DYR) AS DSR - , QWI04.NetProd AS NetProd04 - , QWI04.FC4UG AS FC4UG04 - , QWI04.VC4UG AS VC4UG04 - , ISNULL(pQOC.VENDITA01, 0) + ISNULL(pQOC.ROTTAME01, 0) + ISNULL(pQOC.VENDITA04, 0) + ISNULL(pQOC.ROTTAME04, 0) + ISNULL(pQOC.EE01, 0) + ISNULL(pQOC.GAS01, 0) + ISNULL(pQOC.MATRICE01, 0) + ISNULL(pQOC.IMBALLO04, 0) + ISNULL(pQOC.PROVVIGIONI04, 0) + ISNULL(pQOC.TRASPORTI04, 0) + QWI01.VC4UG + QWI04.VC4UG + QWI01.SC4UG AS FVC - , PD.Charge + , QRM.FSR + , ISNULL(pQOC.PROVVIGIONI04, 0) AS ProvvCost + , ISNULL(pQOC.EE01, 0) AS EECost + , ISNULL(pQOC.GAS01, 0) AS GasCost + , ISNULL(pQOC.MATRICE01, 0) AS DiesCost + , ISNULL(pQOC.IMBALLO04, 0) AS PackCost + , ISNULL(pQOC.TRASPORTI04, 0) AS TranspCost + , ISNULL(pQOC.VENDITA01, 0) AS SellCost01 + , ISNULL(pQOC.ROTTAME01, 0) AS RefCost01 + , ISNULL(pQOC.VENDITA04, 0) AS SellCost04 + , ISNULL(pQOC.ROTTAME04, 0) AS RefCost04 + , QWI01.WSR AS WSR01 + , QWI01.MSR AS MSR01 + , QWI01.NetProd AS NetProd01 + , QWI01.FC4UG AS FC4UG01 + , QWI01.VC4UG AS VC4UG01 + , QWI01.OH4UG AS OH4UG01 + , QWI01.SC4UG AS SC4UG01 + , 1 - (QWI01.DYR * QWI02.DYR * QWI03.DYR * QWI04.DYR) AS DSR + , QWI04.NetProd AS NetProd04 + , QWI04.FC4UG AS FC4UG04 + , QWI04.VC4UG AS VC4UG04 + , ISNULL(pQOC.VENDITA01, 0) + ISNULL(pQOC.ROTTAME01, 0) + ISNULL(pQOC.VENDITA04, 0) + ISNULL(pQOC.ROTTAME04, 0) + ISNULL(pQOC.EE01, 0) + ISNULL(pQOC.GAS01, 0) + ISNULL(pQOC.MATRICE01, 0) + ISNULL(pQOC.IMBALLO04, 0) + ISNULL(pQOC.PROVVIGIONI04, 0) + ISNULL(pQOC.TRASPORTI04, 0) + QWI01.VC4UG + QWI04.VC4UG + QWI01.SC4UG AS FVC + , PD.Charge INTO #TempFullData -- carico in temp table FROM dbo.QuoteList AS QL INNER JOIN dbo.ClientDet CD - ON QL.CodClient = CD.CodClient + ON QL.CodClient = CD.CodClient INNER JOIN ctePivotQuoteP AS pQP - ON QL.QuoteType = pQP.QuoteType - AND QL.CodQuote = pQP.CodQuote - AND QL.QuoteRev = pQP.QuoteRev + ON QL.QuoteType = pQP.QuoteType + AND QL.CodQuote = pQP.CodQuote + AND QL.QuoteRev = pQP.QuoteRev INNER JOIN dbo.QuoteRM AS QRM - ON QL.QuoteType = QRM.QuoteType - AND QL.CodQuote = QRM.CodQuote - AND QL.QuoteRev = QRM.QuoteRev - AND QL.rawmat = QRM.RawMat + ON QL.QuoteType = QRM.QuoteType + AND QL.CodQuote = QRM.CodQuote + AND QL.QuoteRev = QRM.QuoteRev + AND QL.rawmat = QRM.RawMat INNER JOIN ctePivotQuoteOC AS pQOC - ON QL.QuoteType = pQOC.QuoteType - AND QL.CodQuote = pQOC.CodQuote - AND QL.QuoteRev = pQOC.QuoteRev + ON QL.QuoteType = pQOC.QuoteType + AND QL.CodQuote = pQOC.CodQuote + AND QL.QuoteRev = pQOC.QuoteRev INNER JOIN dbo.QuoteWorkInt AS QWI01 - ON QL.QuoteType = QWI01.QuoteType - AND QL.CodQuote = QWI01.CodQuote - AND QL.QuoteRev = QWI01.QuoteRev - AND QWI01.ProcessNum = '01' + ON QL.QuoteType = QWI01.QuoteType + AND QL.CodQuote = QWI01.CodQuote + AND QL.QuoteRev = QWI01.QuoteRev + AND QWI01.ProcessNum = '01' INNER JOIN dbo.QuoteWorkInt AS QWI02 - ON QL.QuoteType = QWI02.QuoteType - AND QL.CodQuote = QWI02.CodQuote - AND QL.QuoteRev = QWI02.QuoteRev - AND QWI02.ProcessNum = '02' + ON QL.QuoteType = QWI02.QuoteType + AND QL.CodQuote = QWI02.CodQuote + AND QL.QuoteRev = QWI02.QuoteRev + AND QWI02.ProcessNum = '02' INNER JOIN dbo.QuoteWorkInt AS QWI03 - ON QL.QuoteType = QWI03.QuoteType - AND QL.CodQuote = QWI03.CodQuote - AND QL.QuoteRev = QWI03.QuoteRev - AND QWI03.ProcessNum = '03' + ON QL.QuoteType = QWI03.QuoteType + AND QL.CodQuote = QWI03.CodQuote + AND QL.QuoteRev = QWI03.QuoteRev + AND QWI03.ProcessNum = '03' INNER JOIN dbo.QuoteWorkInt AS QWI04 - ON QL.QuoteType = QWI04.QuoteType - AND QL.CodQuote = QWI04.CodQuote - AND QL.QuoteRev = QWI04.QuoteRev - AND QWI04.ProcessNum = '04' + ON QL.QuoteType = QWI04.QuoteType + AND QL.CodQuote = QWI04.CodQuote + AND QL.QuoteRev = QWI04.QuoteRev + AND QWI04.ProcessNum = '04' INNER JOIN dbo.PlantsDet AS PD - ON PD.CodPlant = pQP.CodPlant + ON PD.CodPlant = pQP.CodPlant ---- salvo i dati dell'ordine: FullCost, MinPrice, PriceOff (se zero lo pongo uguale a MinPrice) --UPDATE QuoteList @@ -292,8 +290,8 @@ ELSE IF @QuoteType = 'S' END -- elimino temp table... -IF OBJECT_ID('tempdb..#TempFullData') IS NOT NULL - DROP TABLE #TempFullData +--IF OBJECT_ID('tempdb..#TempFullData') IS NOT NULL +-- DROP TABLE #TempFullData RETURN diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_update.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_update.sql index f83815d..d94d248 100644 --- a/C2P_Project/dbo/Stored Procedures/stp_QL_update.sql +++ b/C2P_Project/dbo/Stored Procedures/stp_QL_update.sql @@ -1,95 +1,91 @@ - - - - --- ============================================= +-- ============================================= -- Author: Steamware -- Create date: 2014.01.22 -- Description: aggiorna le tabelle QuoteList con i dati selezionati dalla TabProdSc -- ============================================= CREATE PROCEDURE [dbo].[stp_QL_update] ( - @QuoteType CHAR(1) = 'Q', - @CodQuote BIGINT = 0, - @QuoteRev INT = 0 + @QuoteType CHAR(1) = 'Q', + @CodQuote BIGINT = 0, + @QuoteRev INT = 0 ) AS BEGIN SET NOCOUNT ON; - -- dichiaro valori da recuperare - DECLARE @strTemp NVARCHAR(50) = '' --stringa temporanea x variabili "locali" + -- dichiaro valori da recuperare + DECLARE @strTemp NVARCHAR(50) = '' --stringa temporanea x variabili "locali" - DECLARE @valid BIT - DECLARE @CodDiesGroup NVARCHAR(50) - DECLARE @CodPlant NVARCHAR(50) - DECLARE @CodPlantFix NVARCHAR(50) = '' - DECLARE @HoleNum INT + DECLARE @valid BIT + DECLARE @CodDiesGroup NVARCHAR(50) + DECLARE @CodPlant NVARCHAR(50) + DECLARE @CodPlantFix NVARCHAR(50) = '' + DECLARE @HoleNum INT -- ITEM - DECLARE @CodItem NVARCHAR(50) = '' --cod item - DECLARE @ItemDescr NVARCHAR(50) = '' -- descrizione item + DECLARE @CodItem NVARCHAR(50) = '' --cod item + DECLARE @ItemDescr NVARCHAR(50) = '' -- descrizione item DECLARE @CodifProfilo NVARCHAR(50) = '' -- Cod. Profilo DECLARE @ClasseMerc NVARCHAR(50) = '' DECLARE @CodClientAssoc NVARCHAR(50) = '' - DECLARE @KeyAM NVARCHAR(50) = '' - DECLARE @KeyAMI NVARCHAR(50) = '' - DECLARE @KeyAMIL NVARCHAR(50) = '' - DECLARE @NumSMED INT = 0 -- numero cambi - DECLARE @KgTeo DECIMAL(18, 6) = 0 -- kg totali - DECLARE @RawMat NVARCHAR(50) - DECLARE @ProdTeo DECIMAL(18,6) - DECLARE @ScTec DECIMAL(18,6) - DECLARE @BatchQty INT - DECLARE @MAC_SC DECIMAL(18,6) -- Messa a cento scarto cesoia - DECLARE @MAC_ST DECIMAL(18,6) -- Messa a cento scarto tecnico - DECLARE @MAC_IN DECIMAL(18,6) -- Messa a cento difettosità all'incestatura - DECLARE @MAC_IM DECIMAL(18,6) -- Messa a cento difettosità all'imballo - DECLARE @SSR DECIMAL(9,6) -- percentuale vendita rottame - DECLARE @DiesPrice DECIMAL(9,3) -- prezzo matrice - DECLARE @DiesEOLife DECIMAL(9,2) -- durata matrice - DECLARE @DiesExpLife DECIMAL(9,2) -- durata matrice - DECLARE @DiesPriceLife DECIMAL(18,6) -- Price/Life matrice - DECLARE @OCF01 DECIMAL(18,6) = 0 -- altri costi di fase 01 - DECLARE @VCF01 DECIMAL(18,6) = 0 -- costi variabili di fase 01 - DECLARE @VCF04 DECIMAL(18,6) = 0 -- costi variabili di fase 04 - DECLARE @SellCostF01 DECIMAL(18,6) = 0 -- costo vendita fase 01 - DECLARE @SellCostF04 DECIMAL(18,6) = 0 -- costo vendita fase 04 - DECLARE @RefCostF01 DECIMAL(18,6) = 0 -- costo rifusione fase 01 - DECLARE @RefCostF04 DECIMAL(18,6) = 0 -- costo rifusione fase 04 - -- IMBALLO - DECLARE @CodPackag NVARCHAR(50) = '0' -- codice dell'imballo - DECLARE @CodClient NVARCHAR(50) = '' -- codice cliente - DECLARE @NumImb DECIMAL(9,6) = 0 -- num imballatori - DECLARE @PkgDesc NVARCHAR(50) = '' -- descrizione imballo - DECLARE @PRMWeight DECIMAL(9,4) = 0 -- peso dell'imballo - DECLARE @PWeight DECIMAL(9,4) = 0 -- peso del pacco - DECLARE @PTare DECIMAL(9,4) = 0 -- media delal tara di imballo dichiarata - DECLARE @PCost DECIMAL(9,6) = 0 -- costo unitario dell'imballo (al kg) - DECLARE @PTareStRatio DECIMAL(9,4) = 0 -- coefficiente di recupero tara/prodotto + DECLARE @KeyAM NVARCHAR(50) = '' + DECLARE @KeyAMI NVARCHAR(50) = '' + DECLARE @KeyAMIL NVARCHAR(50) = '' + DECLARE @NumSMED INT = 0 -- numero cambi + DECLARE @KgTeo DECIMAL(18, 6) = 0 -- kg totali + DECLARE @RawMat NVARCHAR(50) + DECLARE @ProdTeo DECIMAL(18,6) + DECLARE @ScTec DECIMAL(18,6) + DECLARE @BatchQty INT + DECLARE @MAC_SC DECIMAL(18,6) -- Messa a cento scarto cesoia + DECLARE @MAC_ST DECIMAL(18,6) -- Messa a cento scarto tecnico + DECLARE @MAC_IN DECIMAL(18,6) -- Messa a cento difettosità all'incestatura + DECLARE @MAC_IM DECIMAL(18,6) -- Messa a cento difettosità all'imballo + DECLARE @SSR DECIMAL(9,6) -- percentuale vendita rottame + DECLARE @DiesPrice DECIMAL(9,3) -- prezzo matrice + DECLARE @DiesEOLife DECIMAL(9,2) -- durata matrice + DECLARE @DiesExpLife DECIMAL(9,2) -- durata matrice + DECLARE @DiesPriceLife DECIMAL(18,6) -- Price/Life matrice + DECLARE @OCF01 DECIMAL(18,6) = 0 -- altri costi di fase 01 + DECLARE @VCF01 DECIMAL(18,6) = 0 -- costi variabili di fase 01 + DECLARE @VCF04 DECIMAL(18,6) = 0 -- costi variabili di fase 04 + DECLARE @SellCostF01 DECIMAL(18,6) = 0 -- costo vendita fase 01 + DECLARE @SellCostF04 DECIMAL(18,6) = 0 -- costo vendita fase 04 + DECLARE @RefCostF01 DECIMAL(18,6) = 0 -- costo rifusione fase 01 + DECLARE @RefCostF04 DECIMAL(18,6) = 0 -- costo rifusione fase 04 + -- IMBALLO + DECLARE @CodPackag NVARCHAR(50) = '0' -- codice dell'imballo + DECLARE @CodClient NVARCHAR(50) = '' -- codice cliente + DECLARE @NumImb DECIMAL(9,6) = 0 -- num imballatori + DECLARE @PkgDesc NVARCHAR(50) = '' -- descrizione imballo + DECLARE @PRMWeight DECIMAL(9,4) = 0 -- peso dell'imballo + DECLARE @PWeight DECIMAL(9,4) = 0 -- peso del pacco + DECLARE @PTare DECIMAL(9,4) = 0 -- media delal tara di imballo dichiarata + DECLARE @PCost DECIMAL(9,6) = 0 -- costo unitario dell'imballo (al kg) + DECLARE @PTareStRatio DECIMAL(9,4) = 0 -- coefficiente di recupero tara/prodotto DECLARE @PTotQta DECIMAL(18,3) = 0 -- Qta Kg Tot Imballati DECLARE @PDurata DECIMAL(18,6) = 0 -- Tempo d'imballaggio DECLARE @PLiv NVARCHAR(50) = '' -- Livello Search dati Imballo DECLARE @PLivDett NVARCHAR(50) = '' -- Key Livello Search Dati Imballo - -- TRASPORTI - DECLARE @TranspZone NVARCHAR(50) = '' -- codice ZONA + -- TRASPORTI + DECLARE @TranspZone NVARCHAR(50) = '' -- codice ZONA DECLARE @TranspCost DECIMAL(9,6) -- costo di trasporto DECLARE @HasTC INT - -- PROVVIGIONI - DECLARE @Provvig DECIMAL(9,6) -- provvigione agente + -- PROVVIGIONI + DECLARE @Provvig DECIMAL(9,6) -- provvigione agente - -- default: validità è true! - SET @valid = 1 + -- default: validità è true! + SET @valid = 1 -- ================================================= -- CREAZIONE TEMP TABLE -- ================================================= - -- elimino e ricreo #QuoteParam temp table... - IF OBJECT_ID('tempdb..#QuoteParam') IS NOT NULL - DROP TABLE #QuoteParam + -- elimino e ricreo #QuoteParam temp table... NON Serve nella stored + --IF OBJECT_ID('tempdb..#QuoteParam') IS NOT NULL + -- DROP TABLE #QuoteParam CREATE TABLE #Quoteparam ( @@ -104,9 +100,9 @@ BEGIN -- ( NumP ASC, QuoteType ASC, CodQuote ASC, QuoteRev ASC ) WITH (PAD_INDEX = ON, FILLFACTOR = 90 ) ); - -- elimino e ricreo #QuoteParam temp table... - IF OBJECT_ID('tempdb..#QuoteWorkInt') IS NOT NULL - DROP TABLE #QuoteWorkInt + -- elimino e ricreo ##QuoteWorkInt temp table... + --IF OBJECT_ID('tempdb..#QuoteWorkInt') IS NOT NULL + -- DROP TABLE #QuoteWorkInt CREATE TABLE #QuoteWorkInt ( @@ -139,107 +135,107 @@ BEGIN valid BIT NOT NULL DEFAULT((1)), ) - -- elimino e ricreo #QuoteParam temp table... - IF OBJECT_ID('tempdb..#QuoteOC') IS NOT NULL - DROP TABLE #QuoteOC + -- elimino e ricreo #QuoteOC temp table... +--IF OBJECT_ID('tempdb..#QuoteOC') IS NOT NULL +-- DROP TABLE #QuoteOC CREATE TABLE #QuoteOC ( - QuoteType CHAR(1) NOT NULL, - CodQuote BIGINT NOT NULL, - QuoteRev INT NOT NULL, - NumEx INT IDENTITY(1,1) NOT NULL, - ProcessNum NVARCHAR(50) NOT NULL, - CodPlant NVARCHAR(50) NOT NULL, - Class01 NVARCHAR(50) NOT NULL DEFAULT (''), - Class02 NVARCHAR(50) NOT NULL DEFAULT (''), - Class03 NVARCHAR(50) NOT NULL DEFAULT (''), - Class04 NVARCHAR(50) NOT NULL DEFAULT (''), - Class05 NVARCHAR(50) NOT NULL DEFAULT (''), - TotQty DECIMAL(18, 6) NOT NULL DEFAULT ((1)), - TotCost DECIMAL(18, 6) NOT NULL DEFAULT ((0)), - Quota DECIMAL(18, 6) NOT NULL DEFAULT ((1)), - C4UG AS ((TotCost*Quota)/TotQty), - valid BIT NOT NULL DEFAULT ((1)) + QuoteType CHAR(1) NOT NULL, + CodQuote BIGINT NOT NULL, + QuoteRev INT NOT NULL, + NumEx INT IDENTITY(1,1) NOT NULL, + ProcessNum NVARCHAR(50) NOT NULL, + CodPlant NVARCHAR(50) NOT NULL, + Class01 NVARCHAR(50) NOT NULL DEFAULT (''), + Class02 NVARCHAR(50) NOT NULL DEFAULT (''), + Class03 NVARCHAR(50) NOT NULL DEFAULT (''), + Class04 NVARCHAR(50) NOT NULL DEFAULT (''), + Class05 NVARCHAR(50) NOT NULL DEFAULT (''), + TotQty DECIMAL(18, 6) NOT NULL DEFAULT ((1)), + TotCost DECIMAL(18, 6) NOT NULL DEFAULT ((0)), + Quota DECIMAL(18, 6) NOT NULL DEFAULT ((1)), + C4UG AS ((TotCost*Quota)/TotQty), + valid BIT NOT NULL DEFAULT ((1)) ) -- =================================== -- INIZIO TRANSAZIONE -- =================================== - SET XACT_ABORT ON; - BEGIN TRAN + SET XACT_ABORT ON; + BEGIN TRAN - --------------------------------------- - -- svuotamento iniziale - --------------------------------------- - - -- elimino quote PARAMETRI! - DELETE FROM dbo.QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + --------------------------------------- + -- svuotamento iniziale + --------------------------------------- + + -- elimino quote PARAMETRI! + DELETE FROM dbo.QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- elimino lavorazioni ESTERNE! - DELETE FROM dbo.QuoteWorkExt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- elimino lavorazioni ESTERNE! + DELETE FROM dbo.QuoteWorkExt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- elimino lavorazioni INTERNE - DELETE FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- elimino lavorazioni INTERNE + DELETE FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- elimino OtherCosts - DELETE FROM dbo.QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- elimino OtherCosts + DELETE FROM dbo.QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- se ci sono eccezioni nella tab dell'anagrafico articoli imposto il codPlant desiderato - SET @CodPlantFix = ISNULL ( ( SELECT id.CodPlant FROM dbo.ItemDet id + -- se ci sono eccezioni nella tab dell'anagrafico articoli imposto il codPlant desiderato + SET @CodPlantFix = ISNULL ( ( SELECT id.CodPlant FROM dbo.ItemDet id INNER JOIN dbo.QuoteList ql ON id.CodItem = ql.CodItem - WHERE ql.QuoteType = @QuoteType - AND ql.CodQuote = @CodQuote - AND ql.QuoteRev = @QuoteRev ), '' ) + WHERE ql.QuoteType = @QuoteType + AND ql.CodQuote = @CodQuote + AND ql.QuoteRev = @QuoteRev ), '' ) - -- recupero da dati dell'offerta il valore del cliente - SELECT @CodClient = CodClient - FROM dbo.QuoteList - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- recupero da dati dell'offerta il valore del cliente + SELECT @CodClient = CodClient + FROM dbo.QuoteList + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- recupero dati!! - SELECT TOP 1 @CodItem = ql.CodItem - , @CodDiesGroup = tps.CodDiesGroup + -- recupero dati!! + SELECT TOP 1 @CodItem = ql.CodItem + , @CodDiesGroup = tps.CodDiesGroup , @CodPlant = CASE WHEN @CodPlantFix <> '' THEN @CodPlantFix ELSE tps.CodPlant END - , @HoleNum = tps.HoleNum - , @KeyAM = ql.KeyAM - , @KeyAMI = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') - , @KeyAMIL = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') + '-' + CAST(ISNULL(tps.HoleNum,0) AS NVARCHAR(10)) - , @ProdTeo = tps.ProdTeo - , @ScTec = tps.ScTec - , @KgTeo = tps.KgTeo - , @NumSMED = tps.NumSMED - , @RawMat = ql.RawMat - , @BatchQty = ql.BatchQty - , @ItemDescr = i.ItemDescr + , @HoleNum = tps.HoleNum + , @KeyAM = ql.KeyAM + , @KeyAMI = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') + , @KeyAMIL = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') + '-' + CAST(ISNULL(tps.HoleNum,0) AS NVARCHAR(10)) + , @ProdTeo = tps.ProdTeo + , @ScTec = tps.ScTec + , @KgTeo = tps.KgTeo + , @NumSMED = tps.NumSMED + , @RawMat = ql.RawMat + , @BatchQty = ql.BatchQty + , @ItemDescr = i.ItemDescr , @CodifProfilo = i.Class01 , @ClasseMerc = i.Class02 , @CodClientAssoc = i.Class03 - FROM dbo.QuoteList ql + FROM dbo.QuoteList ql INNER JOIN dbo.TabProdSc tps ON ql.KeyAM = tps.KeyAM INNER JOIN dbo.ItemDet i ON ql.CodItem = i.CodItem - WHERE ql.QuoteType = @QuoteType - AND ql.CodQuote = @CodQuote - AND ql.QuoteRev = @QuoteRev - ORDER BY tps.KgTeo DESC - + WHERE ql.QuoteType = @QuoteType + AND ql.CodQuote = @CodQuote + AND ql.QuoteRev = @QuoteRev + ORDER BY tps.KgTeo DESC + -- ================================================================================= - -- recupero dall'offerta il valore del PACKAGE/IMBALLO scelto e i dati relativi + -- recupero dall'offerta il valore del PACKAGE/IMBALLO scelto e i dati relativi -- Secondo la logica Client-Item-Package ( vedi funzione ) -- ================================================================================= -- SET @CodPackag = ( SELECT dbo.f_getCodPackag( @CodItem , @CodClient ) ) @@ -249,422 +245,422 @@ BEGIN FROM f_getDataCodPackag ( @CodItem, @CodClient) -- e aggiorno il CodPackage in QuoteRM - UPDATE dbo.QuoteRM + UPDATE dbo.QuoteRM SET CodPackag = @CodPackag - FROM dbo.QuoteRM - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + FROM dbo.QuoteRM + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - VALUES ( @QuoteType, @CodQuote, @QuoteRev, '01', 'ItemDescr', @ItemDescr ) + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + VALUES ( @QuoteType, @CodQuote, @QuoteRev, '01', 'ItemDescr', @ItemDescr ) , ( @QuoteType, @CodQuote, @QuoteRev, '01', 'CodifProfilo', @CodifProfilo ) , ( @QuoteType, @CodQuote, @QuoteRev, '01', 'ClasseMerc', @ClasseMerc ) , ( @QuoteType, @CodQuote, @QuoteRev, '01', 'CodClientAssoc', @CodClientAssoc ) - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'ClientNameAssoc', ClientDet.ClientName + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'ClientNameAssoc', ClientDet.ClientName FROM dbo.ClientDet WHERE ClientDet.CodClient = @CodClientAssoc - - -- INFORMAZIONI su MATRICE - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'CodDiesGroup', @CodDiesGroup ) - - SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 1) - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'TipoDies', @strTemp) - - SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 2) - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'DiamDies', @strTemp) - SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 3) - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'HoleNumDies', @strTemp) + -- INFORMAZIONI su MATRICE + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'CodDiesGroup', @CodDiesGroup ) - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'NumDiesInList', COUNT(CodDies) - FROM dbo.DiesDet - WHERE CodDiesGroup = @CodDiesGroup AND CodItem = @CodItem + SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 1) + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'TipoDies', @strTemp) - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'NumDiesExaust', COUNT(CodDies) - FROM dbo.DiesDet - WHERE CodDiesGroup = @CodDiesGroup AND Active = 0 - - -- inserisco parametri calcolati x lavorazione estruzione - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - VALUES ( @QuoteType, @CodQuote, @QuoteRev, '01', 'CodPlant' , @CodPlant ) + SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 2) + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'DiamDies', @strTemp) + + SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 3) + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'HoleNumDies', @strTemp) + + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'NumDiesInList', COUNT(CodDies) + FROM dbo.DiesDet + WHERE CodDiesGroup = @CodDiesGroup AND CodItem = @CodItem + + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'NumDiesExaust', COUNT(CodDies) + FROM dbo.DiesDet + WHERE CodDiesGroup = @CodDiesGroup AND Active = 0 + + -- inserisco parametri calcolati x lavorazione estruzione + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + VALUES ( @QuoteType, @CodQuote, @QuoteRev, '01', 'CodPlant' , @CodPlant ) ,( @QuoteType, @CodQuote, @QuoteRev, '01', 'KeyAM' , @KeyAM ) ,( @QuoteType, @CodQuote, @QuoteRev, '01', 'KeyAMIL' , @KeyAMIL ) ,( @QuoteType, @CodQuote, @QuoteRev, '01', 'NumSMED' , CONVERT(NVARCHAR(100) , @NumSMED ) ) ,( @QuoteType, @CodQuote, @QuoteRev, '01', 'KgTeo' , CONVERT(NVARCHAR(100) , @KgTeo ) ) - -- inserisco lavorazione estrusione! - INSERT INTO #QuoteWorkInt (QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03, NetProd, WSR) - SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @ProdTeo, @ScTec + -- inserisco lavorazione estrusione! + INSERT INTO #QuoteWorkInt (QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03, NetProd, WSR) + SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @ProdTeo, @ScTec - INSERT INTO #QuoteParam (QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KgProdotti', SUM(KgTeo) - FROM dbo.QuoteList ql - INNER JOIN dbo.TabProdSc tps ON ql.KeyAM = tps.KeyAM - WHERE ql.QuoteType = @QuoteType - AND ql.CodQuote = @CodQuote - AND ql.QuoteRev = @QuoteRev - - -- inserisco dati mancanti di MSR/CSR (scarto cesoia x estrusione) - DSR è NULLO x estrusione! - UPDATE #QuoteWorkInt - SET MSR = rmd.CSR - FROM #QuoteWorkInt qwi - INNER JOIN dbo.RawMatDet rmd ON qwi.Class03 = rmd.RawMat + INSERT INTO #QuoteParam (QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KgProdotti', SUM(KgTeo) + FROM dbo.QuoteList ql + INNER JOIN dbo.TabProdSc tps ON ql.KeyAM = tps.KeyAM + WHERE ql.QuoteType = @QuoteType + AND ql.CodQuote = @CodQuote + AND ql.QuoteRev = @QuoteRev + + -- inserisco dati mancanti di MSR/CSR (scarto cesoia x estrusione) - DSR è NULLO x estrusione! + UPDATE #QuoteWorkInt + SET MSR = rmd.CSR + FROM #QuoteWorkInt qwi + INNER JOIN dbo.RawMatDet rmd ON qwi.Class03 = rmd.RawMat - -- calcolo i costi legati alla fase estrusione! - UPDATE #QuoteWorkInt - SET FC4UG = (cp.FC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , VC4UG = (cp.VC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , OH4UG = (cp.OH * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , SC4UG = cp.SC / ql.BatchQty - FROM #QuoteWorkInt qwi - INNER JOIN dbo.Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum - INNER JOIN dbo.QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev + -- calcolo i costi legati alla fase estrusione! + UPDATE #QuoteWorkInt + SET FC4UG = (cp.FC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , VC4UG = (cp.VC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , OH4UG = (cp.OH * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , SC4UG = cp.SC / ql.BatchQty + FROM #QuoteWorkInt qwi + INNER JOIN dbo.Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum + INNER JOIN dbo.QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev WHERE qwi.ProcessNum = '01' - -- inserisco lavorazione incestatura! - INSERT INTO #QuoteWorkInt (QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03) - SELECT @QuoteType, @CodQuote, @QuoteRev, '02', @CodPlant, @KeyAM, @KeyAMI, @RawMat - - -- inserisco dati mancanti di DSR x incestatura come 1 - OUT/IN - UPDATE #QuoteWorkInt - SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) - FROM #QuoteWorkInt qwi - INNER JOIN dbo.TabDifett td ON qwi.Class02 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum - WHERE qwi.ProcessNum = '02' -- solo incestatura - - -- inserisco lavorazione FORNO! - INSERT INTO #QuoteWorkInt(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03) - SELECT @QuoteType, @CodQuote, @QuoteRev, '03', @CodPlant, @KeyAM, @KeyAMI, @RawMat - - -- inserisco lavorazione imballo! - INSERT INTO #QuoteWorkInt(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03, Class04, Class05) - SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @CodItem, @KeyAMI + -- inserisco lavorazione incestatura! + INSERT INTO #QuoteWorkInt (QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03) + SELECT @QuoteType, @CodQuote, @QuoteRev, '02', @CodPlant, @KeyAM, @KeyAMI, @RawMat + + -- inserisco dati mancanti di DSR x incestatura come 1 - OUT/IN + UPDATE #QuoteWorkInt + SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) + FROM #QuoteWorkInt qwi + INNER JOIN dbo.TabDifett td ON qwi.Class02 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum + WHERE qwi.ProcessNum = '02' -- solo incestatura + + -- inserisco lavorazione FORNO! + INSERT INTO #QuoteWorkInt(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03) + SELECT @QuoteType, @CodQuote, @QuoteRev, '03', @CodPlant, @KeyAM, @KeyAMI, @RawMat + + -- inserisco lavorazione imballo! + INSERT INTO #QuoteWorkInt(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, Class03, Class04, Class05) + SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @CodItem, @KeyAMI - UPDATE qwi - SET NetProd = CASE @PDurata WHEN 0 THEN 0 ELSE @PTotQta / @PDurata END - FROM #QuoteWorkInt AS qwi + UPDATE qwi + SET NetProd = CASE @PDurata WHEN 0 THEN 0 ELSE @PTotQta / @PDurata END + FROM #QuoteWorkInt AS qwi -- INNER JOIN dbo.TabImbArt ti ON qwi.Class04 = ti.KeyA WHERE qwi.ProcessNum = '04' -- solo imballo - -- parametro num imballatori - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'QuotaMan', @NumImb - - -- parametro Livello search package/imballo - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'LivPackage', @PLiv + -- parametro num imballatori + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'QuotaMan', @NumImb + + -- parametro Livello search package/imballo + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'LivPackage', @PLiv - -- parametro Livello search package/imballo - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'LivPackageDett', @PLivDett + -- parametro Livello search package/imballo + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'LivPackageDett', @PLivDett - -- calcolo i costi legati alla fase di imballo! - UPDATE #QuoteWorkInt - SET FC4UG = ( ( cp.FC * cp.QuotaPlantStd ) * ( @NumImb / cp.QuotaManStd ) ) / qwi.NetProd - , VC4UG = ( ( cp.VC * cp.QuotaPlantStd ) * ( @NumImb / cp.QuotaManStd ) ) / qwi.NetProd - , OH4UG = ( ( cp.OH * cp.QuotaPlantStd ) * ( @NumImb / cp.QuotaManStd ) ) / qwi.NetProd - , SC4UG = cp.SC / ql.BatchQty - FROM #QuoteWorkInt qwi - INNER JOIN dbo.Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum - INNER JOIN dbo.QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev - WHERE qwi.ProcessNum = '04' -- solo imballo + -- calcolo i costi legati alla fase di imballo! + UPDATE #QuoteWorkInt + SET FC4UG = ( ( cp.FC * cp.QuotaPlantStd ) * ( @NumImb / cp.QuotaManStd ) ) / qwi.NetProd + , VC4UG = ( ( cp.VC * cp.QuotaPlantStd ) * ( @NumImb / cp.QuotaManStd ) ) / qwi.NetProd + , OH4UG = ( ( cp.OH * cp.QuotaPlantStd ) * ( @NumImb / cp.QuotaManStd ) ) / qwi.NetProd + , SC4UG = cp.SC / ql.BatchQty + FROM #QuoteWorkInt qwi + INNER JOIN dbo.Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum + INNER JOIN dbo.QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev + WHERE qwi.ProcessNum = '04' -- solo imballo - -- inserisco dati mancanti di DSR x imballo come 1 - OUT/IN - UPDATE #QuoteWorkInt - SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) - FROM #QuoteWorkInt qwi - INNER JOIN dbo.TabDifett td ON qwi.Class05 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum - WHERE qwi.ProcessNum = '04' -- solo imballo - - -- recupero le MAC fase 01 - SELECT @MAC_SC = MCR - ,@MAC_ST = WCR - FROM #QuoteWorkInt - WHERE ProcessNum = '01' + -- inserisco dati mancanti di DSR x imballo come 1 - OUT/IN + UPDATE #QuoteWorkInt + SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) + FROM #QuoteWorkInt qwi + INNER JOIN dbo.TabDifett td ON qwi.Class05 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum + WHERE qwi.ProcessNum = '04' -- solo imballo + + -- recupero le MAC fase 01 + SELECT @MAC_SC = MCR + ,@MAC_ST = WCR + FROM #QuoteWorkInt + WHERE ProcessNum = '01' - -- recupero le MAC fase 02 - SELECT @MAC_IN = DCR - FROM #QuoteWorkInt - WHERE ProcessNum = '02' + -- recupero le MAC fase 02 + SELECT @MAC_IN = DCR + FROM #QuoteWorkInt + WHERE ProcessNum = '02' - -- recupero le MAC fase 04 - SELECT @MAC_IM = DCR - FROM #QuoteWorkInt - WHERE ProcessNum = '04' - - -- calcolo percentuale vendita rottame - SELECT @SSR = SSR - FROM dbo.RawMatDet - WHERE RawMat = @RawMat - + -- recupero le MAC fase 04 + SELECT @MAC_IM = DCR + FROM #QuoteWorkInt + WHERE ProcessNum = '04' + + -- calcolo percentuale vendita rottame + SELECT @SSR = SSR + FROM dbo.RawMatDet + WHERE RawMat = @RawMat + -- NOTA : la transazione posso probabilmente iniziarla qui visto che è il -- primo Update/insert/delete su tabelle non temporanee delete a parte - -- update rese RawMat! - UPDATE dbo.QuoteRM - SET FCR = @MAC_SC * @MAC_ST * @MAC_IN * @MAC_IM - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - AND RawMat = @RawMat + -- update rese RawMat! + UPDATE dbo.QuoteRM + SET FCR = @MAC_SC * @MAC_ST * @MAC_IN * @MAC_IM + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + AND RawMat = @RawMat - -- inserisco i costi delle utilities in QuoteOC - - -- inserisco altri costi x lavorazione estrusione! GAS ed EE - INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, CodUtil, @RawMat, @BatchQty, UnitCost * @BatchQty, 1 - FROM dbo.Utilities - WHERE CodPlant = @CodPlant - + -- inserisco i costi delle utilities in QuoteOC + + -- inserisco altri costi x lavorazione estrusione! GAS ed EE + INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, CodUtil, @RawMat, @BatchQty, UnitCost * @BatchQty, 1 + FROM dbo.Utilities + WHERE CodPlant = @CodPlant + - /************************************************************* - * MATRICE - * - * calcolo prezzo e durata matrice con procedura a 5 step... - * A) media ponderata prezzo ed ExpLife da DiesDet selezionando x CodItem + CodDiesGroup - * B) EOLLife x media ponderata su DiesDet dove Active = 0 e vita cmq superiore 5000 KG ( escludendo rotture accidentali ) - * C) SE prezzo = 0 --> prendo prezzo da DiesGroupDet selezionando x CodDiesGroup - * D) Se EOL = 0 --> prendo ExpLife della singola matrice, se è 0 --> prendo EOLLife da DiesGroupDet selezionando x CodDiesGroup - * E) Calcolo Price / Life - * - *************************************************************/ + /************************************************************* + * MATRICE + * + * calcolo prezzo e durata matrice con procedura a 5 step... + * A) media ponderata prezzo ed ExpLife da DiesDet selezionando x CodItem + CodDiesGroup + * B) EOLLife x media ponderata su DiesDet dove Active = 0 e vita cmq superiore 5000 KG ( escludendo rotture accidentali ) + * C) SE prezzo = 0 --> prendo prezzo da DiesGroupDet selezionando x CodDiesGroup + * D) Se EOL = 0 --> prendo ExpLife della singola matrice, se è 0 --> prendo EOLLife da DiesGroupDet selezionando x CodDiesGroup + * E) Calcolo Price / Life + * + *************************************************************/ - -- (A) da DiesDet - SELECT @DiesPrice = SUM(ISNULL(Price, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)), - @DiesExpLife = SUM(ISNULL(ExpLife, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)) - FROM dbo.DiesDet - WHERE CodItem = @CodItem - AND CodDiesGroup = @CodDiesGroup - GROUP BY CodItem, CodDiesGroup + -- (A) da DiesDet + SELECT @DiesPrice = SUM(ISNULL(Price, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)), + @DiesExpLife = SUM(ISNULL(ExpLife, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)) + FROM dbo.DiesDet + WHERE CodItem = @CodItem + AND CodDiesGroup = @CodDiesGroup + GROUP BY CodItem, CodDiesGroup - -- (B) da DiesDet - SELECT @DiesEOLife = AVG( ISNULL(ActLife, 0)) - FROM dbo.DiesDet - WHERE CodItem = @CodItem - AND CodDiesGroup = @CodDiesGroup - AND Active = 0 -- solo matrici rottamate + -- (B) da DiesDet + SELECT @DiesEOLife = AVG( ISNULL(ActLife, 0)) + FROM dbo.DiesDet + WHERE CodItem = @CodItem + AND CodDiesGroup = @CodDiesGroup + AND Active = 0 -- solo matrici rottamate AND ActLife > 5000 -- solo se hanno Life > 5000 Kg ( non rotture accidentali ) - GROUP BY CodItem, CodDiesGroup - - SET @DiesPrice = ISNULL(@DiesPrice,0) - SET @DiesExpLife = ISNULL(@DiesExpLife,0) - SET @DiesEOLife = ISNULL(@DiesEOLife,0) + GROUP BY CodItem, CodDiesGroup + + SET @DiesPrice = ISNULL(@DiesPrice,0) + SET @DiesExpLife = ISNULL(@DiesExpLife,0) + SET @DiesEOLife = ISNULL(@DiesEOLife,0) - -- (C) verifico se prezzo è OK... - IF (@DiesPrice = 0) - BEGIN - -- calcolo da DiesGroupDet - SELECT @DiesPrice = ISNULL(Price, 0) - FROM dbo.DiesGroupDet - WHERE CodDiesGroup = @CodDiesGroup - END - - -- (D) verifico se vita è OK... - IF (@DiesEOLife = 0) - BEGIN - -- uso exp life articolo... - SET @DiesEOLife = @DiesExpLife - END - -- controllo che non sia nulla/vuota la durata... - IF (@DiesEOLife = 0) - BEGIN - SELECT @DiesEOLife = CASE WHEN EOLLife > 0 THEN EOLLife ELSE ExpLife END - FROM DiesGroupDet - WHERE CodDiesGroup = @CodDiesGroup - END + -- (C) verifico se prezzo è OK... + IF (@DiesPrice = 0) + BEGIN + -- calcolo da DiesGroupDet + SELECT @DiesPrice = ISNULL(Price, 0) + FROM dbo.DiesGroupDet + WHERE CodDiesGroup = @CodDiesGroup + END + + -- (D) verifico se vita è OK... + IF (@DiesEOLife = 0) + BEGIN + -- uso exp life articolo... + SET @DiesEOLife = @DiesExpLife + END + -- controllo che non sia nulla/vuota la durata... + IF (@DiesEOLife = 0) + BEGIN + SELECT @DiesEOLife = CASE WHEN EOLLife > 0 THEN EOLLife ELSE ExpLife END + FROM DiesGroupDet + WHERE CodDiesGroup = @CodDiesGroup + END - -- controllo che non sia nulla/vuota la durata... - IF ( @DiesEOLife > 0) + -- controllo che non sia nulla/vuota la durata... + IF ( @DiesEOLife > 0) BEGIN - -- (E) Calcolo price/life! - SET @DiesPriceLife = @DiesPrice / @DiesEOLife + -- (E) Calcolo price/life! + SET @DiesPriceLife = @DiesPrice / @DiesEOLife END ELSE - BEGIN - SET @DiesPriceLife = 0 -- metto a zero il DiesPriceLife - SET @valid = 0 -- indico che valore non è valido ( ND excel ) - END - - -- inserisco costi per Matrice: costo e durata da matrice, se non ci sono da gruppo, (anche solo uno dei due, ovviamente più facile trovare durata x matrice...) - INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota, valid) - SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'MATRICE', @RawMat, @BatchQty, @DiesPriceLife * @BatchQty, 1, @valid + BEGIN + SET @DiesPriceLife = 0 -- metto a zero il DiesPriceLife + SET @valid = 0 -- indico che valore non è valido ( ND excel ) + END + + -- inserisco costi per Matrice: costo e durata da matrice, se non ci sono da gruppo, (anche solo uno dei due, ovviamente più facile trovare durata x matrice...) + INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota, valid) + SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'MATRICE', @RawMat, @BatchQty, @DiesPriceLife * @BatchQty, 1, @valid - -- inserisco parametri calcolati x matrice - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + -- inserisco parametri calcolati x matrice + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) VALUES ( @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesPrice', CONVERT(NVARCHAR(100), @DiesPrice) ) ,( @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesExpLife', CONVERT(NVARCHAR(100), @DiesExpLife) ) ,( @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesEOLife', CONVERT(NVARCHAR(100), @DiesEOLife) ) - /************************************************************* - * VENDITA ROTTAME - * - * calcolo COSTO DI VENDITA PER LE 2 FASI ESTRUSIONE 01 ED IMBALLO 04 - * - calcolo costi variabili fase 01 / 04 - * - calcolo costo di vendita x fase 01 / 04 - *************************************************************/ + /************************************************************* + * VENDITA ROTTAME + * + * calcolo COSTO DI VENDITA PER LE 2 FASI ESTRUSIONE 01 ED IMBALLO 04 + * - calcolo costi variabili fase 01 / 04 + * - calcolo costo di vendita x fase 01 / 04 + *************************************************************/ - SELECT @OCF01 = SUM(ISNULL(C4UG,0)) - FROM #QuoteOC - - SELECT @VCF01 = @OCF01 + VC4UG - FROM #QuoteWorkInt - WHERE ProcessNum = '01' - - SELECT @VCF04 = @OCF01 + SUM(VC4UG) - FROM #QuoteWorkInt - - SELECT @SellCostF01 = ((@MAC_ST * @MAC_SC * @MAC_IN) - 1) * (q.RawMatCost + q.RawMatExtraCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 01) - , @RefCostF01 = -- ( (A - B) / 100 - C ) - ( - -- (A) = (costo pieno di acquisto + costi fase 1) * MAC * 100 (IN CENTESIMI) - ((q.RawMatCost + q.RawMatExtraCost + @VCF01) * (@MAC_ST * @MAC_SC * @MAC_IN * 100)) - -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) - - ((@MAC_ST * @MAC_SC * @MAC_IN * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 - rmd.ProcCost) - ) / 100 -- divido per 100 finale - -- (C) = sottraggo costo pieno alluminio - - (q.RawMatCost + q.RawMatExtraCost + @VCF01) - FROM dbo.RawMatDet rmd - INNER JOIN dbo.QuoteRM q ON q.RawMat = rmd.RawMat - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev - AND q.RawMat = @RawMat - - SELECT @SellCostF04 = ((@MAC_IM) - 1) * (q.RawMatCost + q.RawMatExtraCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01 + @VCF04) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 04) - , @RefCostF04 = -- ( (A - B) / 100 - C ) - ( - -- (A) = (costo pieno di acquisto + costi variabili fase 1 e 4) * MAC * 100 (IN CENTESIMI) - ((q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) * (@MAC_IM * 100)) - -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) - - ((@MAC_IM * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04 - rmd.ProcCost) - ) / 100 -- divido per 100 finale - -- (C) = sottraggo costo pieno alluminio - - (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) - - -- NOTA: usiamo (q.RawMatCost + q.RawMatExtraCost + @VCF01) e non (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @RefCostF01) perché la differenza è minimale, si tratta di 10/20 PPM... - - FROM dbo.RawMatDet rmd + SELECT @OCF01 = SUM(ISNULL(C4UG,0)) + FROM #QuoteOC + + SELECT @VCF01 = @OCF01 + VC4UG + FROM #QuoteWorkInt + WHERE ProcessNum = '01' + + SELECT @VCF04 = @OCF01 + SUM(VC4UG) + FROM #QuoteWorkInt + + SELECT @SellCostF01 = ((@MAC_ST * @MAC_SC * @MAC_IN) - 1) * (q.RawMatCost + q.RawMatExtraCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 01) + , @RefCostF01 = -- ( (A - B) / 100 - C ) + ( + -- (A) = (costo pieno di acquisto + costi fase 1) * MAC * 100 (IN CENTESIMI) + ((q.RawMatCost + q.RawMatExtraCost + @VCF01) * (@MAC_ST * @MAC_SC * @MAC_IN * 100)) + -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) + - ((@MAC_ST * @MAC_SC * @MAC_IN * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 - rmd.ProcCost) + ) / 100 -- divido per 100 finale + -- (C) = sottraggo costo pieno alluminio + - (q.RawMatCost + q.RawMatExtraCost + @VCF01) + FROM dbo.RawMatDet rmd INNER JOIN dbo.QuoteRM q ON q.RawMat = rmd.RawMat - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev - AND q.RawMat = @RawMat - - -- inserisco costi per VENDITA - INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - VALUES ( @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF01 * @BatchQty, @SSR ) - -- inserisco costi per ROTTAME + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev + AND q.RawMat = @RawMat + + SELECT @SellCostF04 = ((@MAC_IM) - 1) * (q.RawMatCost + q.RawMatExtraCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01 + @VCF04) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 04) + , @RefCostF04 = -- ( (A - B) / 100 - C ) + ( + -- (A) = (costo pieno di acquisto + costi variabili fase 1 e 4) * MAC * 100 (IN CENTESIMI) + ((q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) * (@MAC_IM * 100)) + -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) + - ((@MAC_IM * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04 - rmd.ProcCost) + ) / 100 -- divido per 100 finale + -- (C) = sottraggo costo pieno alluminio + - (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) + + -- NOTA: usiamo (q.RawMatCost + q.RawMatExtraCost + @VCF01) e non (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @RefCostF01) perché la differenza è minimale, si tratta di 10/20 PPM... + + FROM dbo.RawMatDet rmd + INNER JOIN dbo.QuoteRM q ON q.RawMat = rmd.RawMat + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev + AND q.RawMat = @RawMat + + -- inserisco costi per VENDITA + INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + VALUES ( @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF01 * @BatchQty, @SSR ) + -- inserisco costi per ROTTAME ,( @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF01 * @BatchQty, 1 - @SSR ) - -- inserisco costi per VENDITA + -- inserisco costi per VENDITA ,( @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF04 * @BatchQty, @SSR ) - -- inserisco costi per ROTTAME - ,( @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF04 * @BatchQty, 1 - @SSR ) - - -- calcolo Package Cost e RMWeight da tab PackageDet + -- inserisco costi per ROTTAME + ,( @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF04 * @BatchQty, 1 - @SSR ) + + -- calcolo Package Cost e RMWeight da tab PackageDet -- EXEC stp_packageCost @CodItem, @CodClient, @CodPackag, @PDesc=@PkgDesc OUTPUT, @RMWeight=@PRMWeight OUTPUT, @Weight=@PWeight OUTPUT, @Tare=@PTare OUTPUT, @PackCost=@PCost OUTPUT, @TareStRat=@PTareStRatio OUTPUT -- stored sostituita perchè la maggior parte dei calcoli li ho già fatti - SELECT @PCost = RMCost / @PWeight + SELECT @PCost = RMCost / @PWeight , @PRMWeight = RMWeight , @PkgDesc = PackagDesc , @PTareStRatio = ( RMWeight - @PTare) / @PWeight - FROM dbo.PackagDet - WHERE CodPackag = @CodPackag + FROM dbo.PackagDet + WHERE CodPackag = @CodPackag - -- inserisco costi per IMBALLO - INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'IMBALLO', @RawMat, @BatchQty, @PCost * @BatchQty, 1 + -- inserisco costi per IMBALLO + INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'IMBALLO', @RawMat, @BatchQty, @PCost * @BatchQty, 1 - -- inserisco parametri calcolati x imballaggio - INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) - VALUES ( @QuoteType, @CodQuote, @QuoteRev, '04', 'PkgDesc', @PkgDesc ) - ,( @QuoteType, @CodQuote, @QuoteRev, '04', 'PRMWeight', CONVERT(NVARCHAR(100), @PRMWeight ) ) - ,( @QuoteType, @CodQuote, @QuoteRev, '04', 'PWeight', CONVERT(NVARCHAR(100), @PWeight ) ) - ,( @QuoteType, @CodQuote, @QuoteRev, '04', 'PTare', CONVERT(NVARCHAR(100), @PTare) ) + -- inserisco parametri calcolati x imballaggio + INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) + VALUES ( @QuoteType, @CodQuote, @QuoteRev, '04', 'PkgDesc', @PkgDesc ) + ,( @QuoteType, @CodQuote, @QuoteRev, '04', 'PRMWeight', CONVERT(NVARCHAR(100), @PRMWeight ) ) + ,( @QuoteType, @CodQuote, @QuoteRev, '04', 'PWeight', CONVERT(NVARCHAR(100), @PWeight ) ) + ,( @QuoteType, @CodQuote, @QuoteRev, '04', 'PTare', CONVERT(NVARCHAR(100), @PTare) ) ,( @QuoteType, @CodQuote, @QuoteRev, '04', 'TareStRatio', CONVERT(NVARCHAR(100), @PTareStRatio ) ) - - - --------------------------------------------- - -- inserisco costi per TRASPORTI - --------------------------------------------- - -- recupero zona da cliente... - SELECT @TranspZone = TranspZone - FROM dbo.ClientDet - WHERE CodClient = @CodClient + + + --------------------------------------------- + -- inserisco costi per TRASPORTI + --------------------------------------------- + -- recupero zona da cliente... + SELECT @TranspZone = TranspZone + FROM dbo.ClientDet + WHERE CodClient = @CodClient - -- recupero tipo di trasporto - SELECT @HasTC = ISNULL(i.HasTC, 0) - FROM dbo.QuoteList q INNER JOIN Incoterms i ON q.CodInco = i.CodInco - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev + -- recupero tipo di trasporto + SELECT @HasTC = ISNULL(i.HasTC, 0) + FROM dbo.QuoteList q INNER JOIN Incoterms i ON q.CodInco = i.CodInco + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev - -- recupero costi trasporto - SELECT @TranspCost = TranspCost - FROM dbo.TranspCostDet - WHERE TranspZone = @TranspZone + -- recupero costi trasporto + SELECT @TranspCost = TranspCost + FROM dbo.TranspCostDet + WHERE TranspZone = @TranspZone - INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'TRASPORTI', @RawMat, @BatchQty, @HasTC * @TranspCost * @BatchQty, 1 + INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'TRASPORTI', @RawMat, @BatchQty, @HasTC * @TranspCost * @BatchQty, 1 - - --------------------------------------------- - -- inserisco costi per PROVVIGIONI - --------------------------------------------- - SELECT @Provvig = ISNULL(a.QuotaProvvAg, 0) - FROM dbo.AgentsDet a - INNER JOIN ClientDet c ON a.CodAg = c.CodAg - INNER JOIN QuoteList q ON q.CodClient = c.CodClient - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev + + --------------------------------------------- + -- inserisco costi per PROVVIGIONI + --------------------------------------------- + SELECT @Provvig = ISNULL(a.QuotaProvvAg, 0) + FROM dbo.AgentsDet a + INNER JOIN ClientDet c ON a.CodAg = c.CodAg + INNER JOIN QuoteList q ON q.CodClient = c.CodClient + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev - -- inserisco costi per PROVVIGIONI - INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'PROVVIGIONI', @RawMat, @BatchQty, @Provvig * @BatchQty, 1 + -- inserisco costi per PROVVIGIONI + INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'PROVVIGIONI', @RawMat, @BatchQty, @Provvig * @BatchQty, 1 /* ================================================== CARICO TABELLE EFFETTIVE ==================================================*/ - -- carico quote parametri! - INSERT dbo.QuoteParam - SELECT * FROM #QuoteParam + -- carico quote parametri! + INSERT dbo.QuoteParam + SELECT * FROM #QuoteParam - -- carico lavorazioni INTERNE! - INSERT dbo.QuoteWorkInt -- ci sono valori calcolati quindi devo selezionare i campi - SELECT QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03, Class04, Class05 + -- carico lavorazioni INTERNE! + INSERT dbo.QuoteWorkInt -- ci sono valori calcolati quindi devo selezionare i campi + SELECT QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03, Class04, Class05 , NetProd, WSR, MSR, DSR, FC4UG, VC4UG, OH4UG, SC4UG, valid FROM #QuoteWorkInt - -- carico OTHERCOSTS - INSERT dbo.QuoteOC -- ci sono valori calcolati quindi devo selezionare i campi - SELECT QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, Class03, Class04 + -- carico OTHERCOSTS + INSERT dbo.QuoteOC -- ci sono valori calcolati quindi devo selezionare i campi + SELECT QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, Class03, Class04 , Class05, TotQty, TotCost, Quota, valid FROM #QuoteOC - COMMIT TRAN; - - --SELECT * FROM #QuoteParam - --SELECT * FROM #QuoteWorkInt - --SELECT * FROM #QuoteOC + COMMIT TRAN; + + --SELECT * FROM #QuoteParam + --SELECT * FROM #QuoteWorkInt + --SELECT * FROM #QuoteOC - -- elimino temp table... - IF OBJECT_ID('tempdb..#QuoteParam') IS NOT NULL - DROP TABLE #QuoteParam - IF OBJECT_ID('tempdb..#QuoteWorkInt') IS NOT NULL - DROP TABLE #QuoteWorkInt - IF OBJECT_ID('tempdb..#QuoteOC') IS NOT NULL - DROP TABLE #QuoteOC + -- elimino temp table... NON serve nella stored + --IF OBJECT_ID('tempdb..#QuoteParam') IS NOT NULL + -- DROP TABLE #QuoteParam + --IF OBJECT_ID('tempdb..#QuoteWorkInt') IS NOT NULL + -- DROP TABLE #QuoteWorkInt + --IF OBJECT_ID('tempdb..#QuoteOC') IS NOT NULL + -- DROP TABLE #QuoteOC END diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_update_SAM.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_update_SAM.sql index c6238ce..9170e92 100644 --- a/C2P_Project/dbo/Stored Procedures/stp_QL_update_SAM.sql +++ b/C2P_Project/dbo/Stored Procedures/stp_QL_update_SAM.sql @@ -1,741 +1,734 @@ - - - - - - - --- ============================================= +-- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.13 -- Description: aggiorna tabella QuoteList con i dati selezionati dalla TabProdSc -- ============================================= CREATE PROCEDURE [dbo].[stp_QL_update_SAM] ( - @QuoteType CHAR(1) = 'Q', - @CodQuote BIGINT = 0, - @QuoteRev INT = 0 + @QuoteType CHAR(1) = 'Q', + @CodQuote BIGINT = 0, + @QuoteRev INT = 0 ) AS BEGIN - SET NOCOUNT ON; - SET XACT_ABORT ON; - - BEGIN TRAN + SET NOCOUNT ON; + SET XACT_ABORT ON; + + BEGIN TRAN - -- dichiaro valori da recuperare - DECLARE @cont INT = 0 -- contatore x numeri consecutivi... - DECLARE @strTemp NVARCHAR(50) = '' --stringa temporanea x variabili "locali" + -- dichiaro valori da recuperare + DECLARE @cont INT = 0 -- contatore x numeri consecutivi... + DECLARE @strTemp NVARCHAR(50) = '' --stringa temporanea x variabili "locali" - DECLARE @valid BIT - DECLARE @CodDiesGroup NVARCHAR(50) - DECLARE @CodPlant NVARCHAR(50) - DECLARE @CodPlantFix NVARCHAR(50) = '' - DECLARE @HoleNum INT - DECLARE @CodItem NVARCHAR(50) = '' --cod item - DECLARE @ItemDescr NVARCHAR(50) = '' -- descrizione item - DECLARE @KeyAM NVARCHAR(50) = '' - DECLARE @KeyAMI NVARCHAR(50) = '' - DECLARE @KeyAMIL NVARCHAR(50) = '' - DECLARE @NumSMED INT = 0 -- numero cambi - DECLARE @KgTeo DECIMAL(18, 6) = 0 -- kg totali - DECLARE @RawMat NVARCHAR(50) - DECLARE @ProdTeo DECIMAL(18,6) - DECLARE @ScTec DECIMAL(18,6) - DECLARE @BatchQty INT - DECLARE @MAC_SC DECIMAL(18,6) -- Messa a cento scarto cesoia - DECLARE @MAC_ST DECIMAL(18,6) -- Messa a cento scarto tecnico - DECLARE @MAC_IN DECIMAL(18,6) -- Messa a cento difettosità all'incestatura - DECLARE @MAC_IM DECIMAL(18,6) -- Messa a cento difettosità all'imballo - DECLARE @SSR DECIMAL(9,6) -- percentuale vendita rottame - DECLARE @DiesPrice DECIMAL(9,3) -- prezzo matrice - DECLARE @DiesEOLife DECIMAL(9,2) -- durata matrice - DECLARE @DiesExpLife DECIMAL(9,2) -- durata matrice - DECLARE @DiesPriceLife DECIMAL(18,6) -- Price/Life matrice - DECLARE @OCF01 DECIMAL(18,6) = 0 -- altri costi di fase 01 - DECLARE @VCF01 DECIMAL(18,6) = 0 -- costi variabili di fase 01 - DECLARE @VCF04 DECIMAL(18,6) = 0 -- costi variabili di fase 04 - DECLARE @SellCostF01 DECIMAL(18,6) = 0 -- costo vendita fase 01 - DECLARE @SellCostF04 DECIMAL(18,6) = 0 -- costo vendita fase 04 - DECLARE @RefCostF01 DECIMAL(18,6) = 0 -- costo rifusione fase 01 - DECLARE @RefCostF04 DECIMAL(18,6) = 0 -- costo rifusione fase 04 - -- IMBALLO - DECLARE @CodPackag NVARCHAR(50) = '0' -- codice dell'imballo - DECLARE @CodClient NVARCHAR(50) = '' -- codice cliente - DECLARE @NumImb DECIMAL(9,6) = 0 -- num imballatori - DECLARE @PkgDesc NVARCHAR(50) = '' -- descrizione imballo - DECLARE @PRMWeight DECIMAL(9,4) = 0 -- peso dell'imballo - DECLARE @PWeight DECIMAL(9,4) = 0 -- peso del pacco - DECLARE @PTare DECIMAL(9,4) = 0 -- media delal tara di imballo dichiarata - DECLARE @PCost DECIMAL(9,6) = 0 -- costo unitario dell'imballo (al kg) - DECLARE @PTareStRatio DECIMAL(9,4) = 0 -- coefficiente di recupero tara/prodotto + DECLARE @valid BIT + DECLARE @CodDiesGroup NVARCHAR(50) + DECLARE @CodPlant NVARCHAR(50) + DECLARE @CodPlantFix NVARCHAR(50) = '' + DECLARE @HoleNum INT + DECLARE @CodItem NVARCHAR(50) = '' --cod item + DECLARE @ItemDescr NVARCHAR(50) = '' -- descrizione item + DECLARE @KeyAM NVARCHAR(50) = '' + DECLARE @KeyAMI NVARCHAR(50) = '' + DECLARE @KeyAMIL NVARCHAR(50) = '' + DECLARE @NumSMED INT = 0 -- numero cambi + DECLARE @KgTeo DECIMAL(18, 6) = 0 -- kg totali + DECLARE @RawMat NVARCHAR(50) + DECLARE @ProdTeo DECIMAL(18,6) + DECLARE @ScTec DECIMAL(18,6) + DECLARE @BatchQty INT + DECLARE @MAC_SC DECIMAL(18,6) -- Messa a cento scarto cesoia + DECLARE @MAC_ST DECIMAL(18,6) -- Messa a cento scarto tecnico + DECLARE @MAC_IN DECIMAL(18,6) -- Messa a cento difettosità all'incestatura + DECLARE @MAC_IM DECIMAL(18,6) -- Messa a cento difettosità all'imballo + DECLARE @SSR DECIMAL(9,6) -- percentuale vendita rottame + DECLARE @DiesPrice DECIMAL(9,3) -- prezzo matrice + DECLARE @DiesEOLife DECIMAL(9,2) -- durata matrice + DECLARE @DiesExpLife DECIMAL(9,2) -- durata matrice + DECLARE @DiesPriceLife DECIMAL(18,6) -- Price/Life matrice + DECLARE @OCF01 DECIMAL(18,6) = 0 -- altri costi di fase 01 + DECLARE @VCF01 DECIMAL(18,6) = 0 -- costi variabili di fase 01 + DECLARE @VCF04 DECIMAL(18,6) = 0 -- costi variabili di fase 04 + DECLARE @SellCostF01 DECIMAL(18,6) = 0 -- costo vendita fase 01 + DECLARE @SellCostF04 DECIMAL(18,6) = 0 -- costo vendita fase 04 + DECLARE @RefCostF01 DECIMAL(18,6) = 0 -- costo rifusione fase 01 + DECLARE @RefCostF04 DECIMAL(18,6) = 0 -- costo rifusione fase 04 + -- IMBALLO + DECLARE @CodPackag NVARCHAR(50) = '0' -- codice dell'imballo + DECLARE @CodClient NVARCHAR(50) = '' -- codice cliente + DECLARE @NumImb DECIMAL(9,6) = 0 -- num imballatori + DECLARE @PkgDesc NVARCHAR(50) = '' -- descrizione imballo + DECLARE @PRMWeight DECIMAL(9,4) = 0 -- peso dell'imballo + DECLARE @PWeight DECIMAL(9,4) = 0 -- peso del pacco + DECLARE @PTare DECIMAL(9,4) = 0 -- media delal tara di imballo dichiarata + DECLARE @PCost DECIMAL(9,6) = 0 -- costo unitario dell'imballo (al kg) + DECLARE @PTareStRatio DECIMAL(9,4) = 0 -- coefficiente di recupero tara/prodotto - -- TRASPORTI - DECLARE @TranspZone NVARCHAR(50) = '', -- codice ZONA - @TranspCost DECIMAL(9,6), -- costo di trasporto - @HasTC INT + -- TRASPORTI + DECLARE @TranspZone NVARCHAR(50) = '', -- codice ZONA + @TranspCost DECIMAL(9,6), -- costo di trasporto + @HasTC INT - -- PROVVIGIONI - DECLARE @Provvig DECIMAL(9,6) -- provvigione agente + -- PROVVIGIONI + DECLARE @Provvig DECIMAL(9,6) -- provvigione agente - -- default: validità è true! - SET @valid = 1 + -- default: validità è true! + SET @valid = 1 - --------------------------------------- - -- svuotamento iniziale - --------------------------------------- - -- elimino parametri! - DELETE - FROM dbo.QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - -- elimino lavorazioni interne! - DELETE - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - -- elimino preventivamente OtherCosts già inseriti! - DELETE - FROM dbo.QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + --------------------------------------- + -- svuotamento iniziale + --------------------------------------- + -- elimino parametri! + DELETE + FROM dbo.QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + -- elimino lavorazioni interne! + DELETE + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + -- elimino preventivamente OtherCosts già inseriti! + DELETE + FROM dbo.QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- elimino lavorazioni esterne! - DELETE - FROM dbo.QuoteWorkExt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- elimino lavorazioni esterne! + DELETE + FROM dbo.QuoteWorkExt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- se ci sono eccezioni nella tab dell'anagrafico articoli imposto il codPlant desiderato - SET @CodPlantFix = ISNULL ( ( SELECT id.CodPlant FROM dbo.ItemDet id INNER JOIN dbo.QuoteList ql ON id.CodItem = ql.CodItem - WHERE ql.QuoteType = @QuoteType - AND ql.CodQuote = @CodQuote - AND ql.QuoteRev = @QuoteRev ), '' ) + -- se ci sono eccezioni nella tab dell'anagrafico articoli imposto il codPlant desiderato + SET @CodPlantFix = ISNULL ( ( SELECT id.CodPlant FROM dbo.ItemDet id INNER JOIN dbo.QuoteList ql ON id.CodItem = ql.CodItem + WHERE ql.QuoteType = @QuoteType + AND ql.CodQuote = @CodQuote + AND ql.QuoteRev = @QuoteRev ), '' ) - -- recupero da dati dell'offerta il valore del cliente - SELECT @CodClient = CodClient - FROM dbo.QuoteList - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- recupero da dati dell'offerta il valore del cliente + SELECT @CodClient = CodClient + FROM dbo.QuoteList + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - - -- recupero da dati dell'offerta il valore del package scelto - SELECT @CodPackag = CodPackag - FROM dbo.QuoteRM - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + + -- recupero da dati dell'offerta il valore del package scelto + SELECT @CodPackag = CodPackag + FROM dbo.QuoteRM + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- recupero dati!! - SELECT TOP 1 @CodItem = ql.CodItem - , @CodDiesGroup = tps.CodDiesGroup + -- recupero dati!! + SELECT TOP 1 @CodItem = ql.CodItem + , @CodDiesGroup = tps.CodDiesGroup , @CodPlant = CASE WHEN @CodPlantFix <> '' THEN @CodPlantFix ELSE tps.CodPlant END - , @HoleNum = tps.HoleNum - , @KeyAM = ql.KeyAM - , @KeyAMI = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') - , @KeyAMIL = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') + '-' + CAST(ISNULL(tps.HoleNum,0) AS NVARCHAR(10)) - , @ProdTeo = tps.ProdTeo - , @ScTec = tps.ScTec - , @KgTeo = tps.KgTeo - , @NumSMED = tps.NumSMED - , @RawMat = ql.RawMat - , @BatchQty = ql.BatchQty - , @ItemDescr= i.ItemDescr - FROM dbo.QuoteList ql + , @HoleNum = tps.HoleNum + , @KeyAM = ql.KeyAM + , @KeyAMI = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') + , @KeyAMIL = ql.KeyAM + '-' + ISNULL(@CodPlant,'0000') + '-' + CAST(ISNULL(tps.HoleNum,0) AS NVARCHAR(10)) + , @ProdTeo = tps.ProdTeo + , @ScTec = tps.ScTec + , @KgTeo = tps.KgTeo + , @NumSMED = tps.NumSMED + , @RawMat = ql.RawMat + , @BatchQty = ql.BatchQty + , @ItemDescr= i.ItemDescr + FROM dbo.QuoteList ql INNER JOIN dbo.TabProdSc tps ON ql.KeyAM = tps.KeyAM INNER JOIN dbo.ItemDet i ON ql.CodItem = i.CodItem - WHERE ql.QuoteType = @QuoteType - AND ql.CodQuote = @CodQuote - AND ql.QuoteRev = @QuoteRev - ORDER BY tps.KgTeo DESC - - - -- inserisco note sull'articolo - SELECT @cont = ISNULL(MAX(NumP),0) + 1 - FROM dbo.QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + WHERE ql.QuoteType = @QuoteType + AND ql.CodQuote = @CodQuote + AND ql.QuoteRev = @QuoteRev + ORDER BY tps.KgTeo DESC + + + -- inserisco note sull'articolo + SELECT @cont = ISNULL(MAX(NumP),0) + 1 + FROM dbo.QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'ItemDescr', @ItemDescr) + INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'ItemDescr', @ItemDescr) - SELECT @cont = @cont + 1 - INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'CodifProfilo', Class01 - FROM dbo.ItemDet - WHERE CodItem = @CodItem + SELECT @cont = @cont + 1 + INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'CodifProfilo', Class01 + FROM dbo.ItemDet + WHERE CodItem = @CodItem - SELECT @cont = @cont + 1 - INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'ClasseMerc', Class02 - FROM dbo.ItemDet - WHERE CodItem = @CodItem - - SELECT @cont = @cont + 1 - INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'ClienteAssoc', Class03 - FROM dbo.ItemDet - WHERE CodItem = @CodItem - - -- INFORMAZIONI su MATRICE - SELECT @cont = @cont + 1 - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'CodDiesGroup', @CodDiesGroup) + SELECT @cont = @cont + 1 + INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'ClasseMerc', Class02 + FROM dbo.ItemDet + WHERE CodItem = @CodItem + + SELECT @cont = @cont + 1 + INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'ClienteAssoc', Class03 + FROM dbo.ItemDet + WHERE CodItem = @CodItem + + -- INFORMAZIONI su MATRICE + SELECT @cont = @cont + 1 + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'CodDiesGroup', @CodDiesGroup) - SELECT @cont = @cont + 1 - SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 1) --@strTemp = SUBSTRING(@CodDiesGroup, 0, CHARINDEX('-', @CodDiesGroup)) -- !!!fare con finc Gian - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'TipoDies', @strTemp) + SELECT @cont = @cont + 1 + SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 1) --@strTemp = SUBSTRING(@CodDiesGroup, 0, CHARINDEX('-', @CodDiesGroup)) -- !!!fare con finc Gian + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'TipoDies', @strTemp) - SELECT @cont = @cont + 1 - SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 2) --@strTemp = SUBSTRING(REPLACE(@CodDiesGroup, @strTemp,''), 2, CHARINDEX('-', @CodDiesGroup)) -- !!!fare con finc Gian - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'DiamDies', @strTemp) + SELECT @cont = @cont + 1 + SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 2) --@strTemp = SUBSTRING(REPLACE(@CodDiesGroup, @strTemp,''), 2, CHARINDEX('-', @CodDiesGroup)) -- !!!fare con finc Gian + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'DiamDies', @strTemp) - SELECT @cont = @cont + 1 - SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 3) --@strTemp = SUBSTRING(REPLACE(@CodDiesGroup, @strTemp,''), 5, CHARINDEX('-', @CodDiesGroup)) -- !!!fare con finc Gian - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'HoleNumDies', @strTemp) + SELECT @cont = @cont + 1 + SET @strTemp = dbo.f_getSubstring(@CodDiesGroup, '-', 3) --@strTemp = SUBSTRING(REPLACE(@CodDiesGroup, @strTemp,''), 5, CHARINDEX('-', @CodDiesGroup)) -- !!!fare con finc Gian + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + VALUES (@QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'HoleNumDies', @strTemp) - SELECT @cont = @cont + 1 - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'NumDiesInList', COUNT(CodDies) - FROM dbo.DiesDet - WHERE CodDiesGroup = @CodDiesGroup AND CodItem = @CodItem + SELECT @cont = @cont + 1 + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'NumDiesInList', COUNT(CodDies) + FROM dbo.DiesDet + WHERE CodDiesGroup = @CodDiesGroup AND CodItem = @CodItem - SELECT @cont = @cont + 1 - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'NumDiesExaust', COUNT(CodDies) - FROM dbo.DiesDet - WHERE CodDiesGroup = @CodDiesGroup AND Active = 0 - - - -- inserisco lavorazione estrusione! - INSERT INTO dbo.QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03, NetProd, WSR) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '01', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @ProdTeo, @ScTec - FROM QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + SELECT @cont = @cont + 1 + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'NumDiesExaust', COUNT(CodDies) + FROM dbo.DiesDet + WHERE CodDiesGroup = @CodDiesGroup AND Active = 0 + + + -- inserisco lavorazione estrusione! + INSERT INTO dbo.QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03, NetProd, WSR) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '01', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @ProdTeo, @ScTec + FROM QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - - -- inserisco parametri calcolati x lavorazione estruzione - INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'CodPlant', @CodPlant - FROM dbo.QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + + -- inserisco parametri calcolati x lavorazione estruzione + INSERT INTO dbo.QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'CodPlant', @CodPlant + FROM dbo.QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'KeyAM', @KeyAM - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'KeyAM', @KeyAM + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'KeyAMIL', @KeyAMIL - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'KeyAMIL', @KeyAMIL + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'NumCambi', @NumSMED - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'NumCambi', @NumSMED + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'KgTeo', @KgTeo - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'KgTeo', @KgTeo + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'HoleNum', @HoleNum - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'HoleNum', @HoleNum + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - SELECT @cont = ISNULL(MAX(NumP),0) + 1 - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + SELECT @cont = ISNULL(MAX(NumP),0) + 1 + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'KgProdotti', SUM(KgTeo) - FROM QuoteList ql - INNER JOIN TabProdSc tps ON ql.KeyAM = tps.KeyAM - WHERE ql.QuoteType = @QuoteType - AND ql.CodQuote = @CodQuote - AND ql.QuoteRev = @QuoteRev - - --SELECT @cont = @cont + 1 - --INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - --SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'NumLotti', COUNT(*) - --FROM QuoteList ql INNER JOIN TabProdSc tps ON ql.KeyAM = tps.KeyAM - --WHERE ql.QuoteType = @QuoteType - -- AND ql.CodQuote = @CodQuote - -- AND ql.QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'KgProdotti', SUM(KgTeo) + FROM QuoteList ql + INNER JOIN TabProdSc tps ON ql.KeyAM = tps.KeyAM + WHERE ql.QuoteType = @QuoteType + AND ql.CodQuote = @CodQuote + AND ql.QuoteRev = @QuoteRev + + --SELECT @cont = @cont + 1 + --INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + --SELECT @QuoteType, @CodQuote, @QuoteRev, @cont, '01', 'NumLotti', COUNT(*) + --FROM QuoteList ql INNER JOIN TabProdSc tps ON ql.KeyAM = tps.KeyAM + --WHERE ql.QuoteType = @QuoteType + -- AND ql.CodQuote = @CodQuote + -- AND ql.QuoteRev = @QuoteRev - -- inserisco dati mancanti di MSR/CSR (scarto cesoia x estrusione) - DSR è NULLO x estrusione! - UPDATE qwi - SET MSR = rmd.CSR - FROM dbo.QuoteWorkInt qwi - INNER JOIN RawMatDet rmd ON qwi.Class03 = rmd.RawMat - WHERE qwi.QuoteType = @QuoteType - AND qwi.CodQuote = @CodQuote - AND qwi.QuoteRev = @QuoteRev + -- inserisco dati mancanti di MSR/CSR (scarto cesoia x estrusione) - DSR è NULLO x estrusione! + UPDATE qwi + SET MSR = rmd.CSR + FROM dbo.QuoteWorkInt qwi + INNER JOIN RawMatDet rmd ON qwi.Class03 = rmd.RawMat + WHERE qwi.QuoteType = @QuoteType + AND qwi.CodQuote = @CodQuote + AND qwi.QuoteRev = @QuoteRev - -- calcolo i costi legati alla fase estrusione! - UPDATE qwi - SET FC4UG = (cp.FC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , VC4UG = (cp.VC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , OH4UG = (cp.OH * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , SC4UG = cp.SC / ql.BatchQty - FROM dbo.QuoteWorkInt qwi - INNER JOIN Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum - INNER JOIN QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev - WHERE qwi.QuoteType = @QuoteType - AND qwi.CodQuote = @CodQuote - AND qwi.QuoteRev = @QuoteRev + -- calcolo i costi legati alla fase estrusione! + UPDATE qwi + SET FC4UG = (cp.FC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , VC4UG = (cp.VC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , OH4UG = (cp.OH * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , SC4UG = cp.SC / ql.BatchQty + FROM dbo.QuoteWorkInt qwi + INNER JOIN Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum + INNER JOIN QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev + WHERE qwi.QuoteType = @QuoteType + AND qwi.CodQuote = @CodQuote + AND qwi.QuoteRev = @QuoteRev - -- inserisco lavorazione incestatura! - INSERT INTO QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '02', @CodPlant, @KeyAM, @KeyAMI, @RawMat - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - - -- inserisco dati mancanti di DSR x incestatura come 1 - OUT/IN - UPDATE qwi - SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) - FROM dbo.QuoteWorkInt qwi - INNER JOIN dbo.TabDifett td ON qwi.Class02 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum - WHERE qwi.ProcessNum = '02' -- solo incestatura - - -- inserisco lavorazione FORNO! - INSERT INTO dbo.QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '03', @CodPlant, @KeyAM, @KeyAMI, @RawMat - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - -- inserisco lavorazione imballo! - INSERT INTO dbo.QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03, Class04, Class05) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '04', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @CodItem, @KeyAMI - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- inserisco lavorazione incestatura! + INSERT INTO QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '02', @CodPlant, @KeyAM, @KeyAMI, @RawMat + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + + -- inserisco dati mancanti di DSR x incestatura come 1 - OUT/IN + UPDATE qwi + SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) + FROM dbo.QuoteWorkInt qwi + INNER JOIN dbo.TabDifett td ON qwi.Class02 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum + WHERE qwi.ProcessNum = '02' -- solo incestatura + + -- inserisco lavorazione FORNO! + INSERT INTO dbo.QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '03', @CodPlant, @KeyAM, @KeyAMI, @RawMat + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + -- inserisco lavorazione imballo! + INSERT INTO dbo.QuoteWorkInt(QuoteType, CodQuote, QuoteRev, NumWI, ProcessNum, CodPlant, Class01, Class02, Class03, Class04, Class05) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumWI),0) + 1, '04', @CodPlant, @KeyAM, @KeyAMIL, @RawMat, @CodItem, @KeyAMI + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- calcolo produttività netta nella fase imballo - UPDATE qwi - SET NetProd = ti.TotOut/ ti.Durata - FROM dbo.QuoteWorkInt qwi - INNER JOIN TabImbArt ti ON qwi.Class04 = ti.KeyA + -- calcolo produttività netta nella fase imballo + UPDATE qwi + SET NetProd = ti.TotOut/ ti.Durata + FROM dbo.QuoteWorkInt qwi + INNER JOIN TabImbArt ti ON qwi.Class04 = ti.KeyA - -- salvo numero imballatori - SELECT @NumImb = ISNULL(NumImb,0) - FROM TabImbArt - WHERE KeyA = @CodItem + -- salvo numero imballatori + SELECT @NumImb = ISNULL(NumImb,0) + FROM TabImbArt + WHERE KeyA = @CodItem - -- parametro num imballatori - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'NumImballatori', @NumImb - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - -- calcolo i costi legati alla fase di imballo! - UPDATE qwi - SET FC4UG = (cp.FC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , VC4UG = (cp.VC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , OH4UG = (cp.OH * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd - , SC4UG = cp.SC / ql.BatchQty - FROM dbo.QuoteWorkInt qwi - INNER JOIN Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum - INNER JOIN QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev - WHERE qwi.ProcessNum = '04' -- solo imballo + -- parametro num imballatori + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'NumImballatori', @NumImb + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + -- calcolo i costi legati alla fase di imballo! + UPDATE qwi + SET FC4UG = (cp.FC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , VC4UG = (cp.VC * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , OH4UG = (cp.OH * cp.QuotaPlantStd / cp.QuotaManStd) / qwi.NetProd + , SC4UG = cp.SC / ql.BatchQty + FROM dbo.QuoteWorkInt qwi + INNER JOIN Cost2Plant cp ON qwi.CodPlant = cp.CodPlant AND qwi.ProcessNum = cp.ProcessNum + INNER JOIN QuoteList ql ON qwi.QuoteType = ql.QuoteType AND qwi.CodQuote = ql.CodQuote AND qwi.QuoteRev = ql.QuoteRev + WHERE qwi.ProcessNum = '04' -- solo imballo - - -- inserisco dati mancanti di DSR x incestatura come 1 - OUT/IN - UPDATE qwi - SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) - FROM dbo.QuoteWorkInt qwi - INNER JOIN TabDifett td ON qwi.Class05 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum - WHERE qwi.ProcessNum = '04' -- solo imballo - - - -- recupero le MAC fase 01 - SELECT - @MAC_SC = MCR - ,@MAC_ST = WCR - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - AND ProcessNum = '01' + + -- inserisco dati mancanti di DSR x incestatura come 1 - OUT/IN + UPDATE qwi + SET DSR = 1 - CAST(td.TotOUT AS DECIMAL(18,6))/CAST(td.TotIN AS DECIMAL(18,6)) + FROM dbo.QuoteWorkInt qwi + INNER JOIN TabDifett td ON qwi.Class05 = td.KeyAMI AND qwi.ProcessNum = td.ProcessNum + WHERE qwi.ProcessNum = '04' -- solo imballo + + + -- recupero le MAC fase 01 + SELECT + @MAC_SC = MCR + ,@MAC_ST = WCR + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + AND ProcessNum = '01' - -- recupero le MAC fase 02 - SELECT - @MAC_IN = DCR - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - AND ProcessNum = '02' + -- recupero le MAC fase 02 + SELECT + @MAC_IN = DCR + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + AND ProcessNum = '02' - -- recupero le MAC fase 04 - SELECT - @MAC_IM = DCR - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - AND ProcessNum = '04' - - -- calcolo percentuale vendita rottame - SELECT @SSR = SSR - FROM dbo.RawMatDet - WHERE RawMat = @RawMat - - -- update rese RawMat! - UPDATE dbo.QuoteRM - SET FCR = @MAC_SC * @MAC_ST * @MAC_IN * @MAC_IM - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - AND RawMat = @RawMat + -- recupero le MAC fase 04 + SELECT + @MAC_IM = DCR + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + AND ProcessNum = '04' + + -- calcolo percentuale vendita rottame + SELECT @SSR = SSR + FROM dbo.RawMatDet + WHERE RawMat = @RawMat + + -- update rese RawMat! + UPDATE dbo.QuoteRM + SET FCR = @MAC_SC * @MAC_ST * @MAC_IN * @MAC_IM + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + AND RawMat = @RawMat - -- inserisco i costi delle utilities in QuoteOC - - -- inserisco altri costi x lavorazione estrusione! GAS ed EE - INSERT INTO dbo.QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ROW_NUMBER() OVER(ORDER BY CodUtil ASC) AS Row, '01', @CodPlant, CodUtil, @RawMat, @BatchQty, UnitCost * @BatchQty, 1 - FROM dbo.Utilities - WHERE CodPlant = @CodPlant - + -- inserisco i costi delle utilities in QuoteOC + + -- inserisco altri costi x lavorazione estrusione! GAS ed EE + INSERT INTO dbo.QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ROW_NUMBER() OVER(ORDER BY CodUtil ASC) AS Row, '01', @CodPlant, CodUtil, @RawMat, @BatchQty, UnitCost * @BatchQty, 1 + FROM dbo.Utilities + WHERE CodPlant = @CodPlant + - /************************************************************* - * MATRICE - * - * calcolo prezzo e durata matrice con procedura a 5 step... - * A) media ponderata prezzo ed ExpLife da DiesDet selezionando x CodItem + CodDiesGroup - * B) EOLLife x media ponderata su DiesDet dove Active = 0 - * C) SE prezzo = 0 --> prendo prezzo da DiesGroupDet selezionando x CodDiesGroup - * D) Se EOL = 0 --> prendo ExpLife della singola matrice, se è 0 --> prendo EOLLife da DiesGroupDet selezionando x CodDiesGroup - * E) Calcolo Price / Life - * - *************************************************************/ + /************************************************************* + * MATRICE + * + * calcolo prezzo e durata matrice con procedura a 5 step... + * A) media ponderata prezzo ed ExpLife da DiesDet selezionando x CodItem + CodDiesGroup + * B) EOLLife x media ponderata su DiesDet dove Active = 0 + * C) SE prezzo = 0 --> prendo prezzo da DiesGroupDet selezionando x CodDiesGroup + * D) Se EOL = 0 --> prendo ExpLife della singola matrice, se è 0 --> prendo EOLLife da DiesGroupDet selezionando x CodDiesGroup + * E) Calcolo Price / Life + * + *************************************************************/ - -- (A) da DiesDet - SELECT @DiesPrice = SUM(ISNULL(Price, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)), - @DiesExpLife = SUM(ISNULL(ExpLife, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)) - FROM dbo.DiesDet - WHERE CodItem = @CodItem - AND CodDiesGroup = @CodDiesGroup - GROUP BY CodItem, CodDiesGroup + -- (A) da DiesDet + SELECT @DiesPrice = SUM(ISNULL(Price, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)), + @DiesExpLife = SUM(ISNULL(ExpLife, 0) * ISNULL(ActLife, 1)) / SUM(ISNULL(ActLife, 1)) + FROM dbo.DiesDet + WHERE CodItem = @CodItem + AND CodDiesGroup = @CodDiesGroup + GROUP BY CodItem, CodDiesGroup - -- (B) da DiesDet - SELECT @DiesEOLife = AVG(ISNULL(ActLife, 0)) - FROM dbo.DiesDet - WHERE CodItem = @CodItem - AND CodDiesGroup = @CodDiesGroup - AND Active = 0 - GROUP BY CodItem, CodDiesGroup - - SET @DiesPrice = ISNULL(@DiesPrice,0) - SET @DiesExpLife = ISNULL(@DiesExpLife,0) - SET @DiesEOLife = ISNULL(@DiesEOLife,0) + -- (B) da DiesDet + SELECT @DiesEOLife = AVG(ISNULL(ActLife, 0)) + FROM dbo.DiesDet + WHERE CodItem = @CodItem + AND CodDiesGroup = @CodDiesGroup + AND Active = 0 + GROUP BY CodItem, CodDiesGroup + + SET @DiesPrice = ISNULL(@DiesPrice,0) + SET @DiesExpLife = ISNULL(@DiesExpLife,0) + SET @DiesEOLife = ISNULL(@DiesEOLife,0) - -- (C) verifico se prezzo è OK... - IF (@DiesPrice = 0) - BEGIN - -- calcolo da DiesGroupDet - SELECT @DiesPrice = ISNULL(Price, 0) - FROM DiesGroupDet - WHERE CodDiesGroup = @CodDiesGroup - END - - -- (D) verifico se vita è OK... - IF (@DiesEOLife = 0) - BEGIN - -- uso exp life articolo... - SET @DiesEOLife = @DiesExpLife - END - -- controllo che non sia nulla/vuota la durata... - IF (@DiesEOLife = 0) - BEGIN - SELECT @DiesEOLife = CASE WHEN EOLLife > 0 THEN EOLLife ELSE ExpLife END - FROM DiesGroupDet - WHERE CodDiesGroup = @CodDiesGroup - END + -- (C) verifico se prezzo è OK... + IF (@DiesPrice = 0) + BEGIN + -- calcolo da DiesGroupDet + SELECT @DiesPrice = ISNULL(Price, 0) + FROM DiesGroupDet + WHERE CodDiesGroup = @CodDiesGroup + END + + -- (D) verifico se vita è OK... + IF (@DiesEOLife = 0) + BEGIN + -- uso exp life articolo... + SET @DiesEOLife = @DiesExpLife + END + -- controllo che non sia nulla/vuota la durata... + IF (@DiesEOLife = 0) + BEGIN + SELECT @DiesEOLife = CASE WHEN EOLLife > 0 THEN EOLLife ELSE ExpLife END + FROM DiesGroupDet + WHERE CodDiesGroup = @CodDiesGroup + END - -- controllo che non sia nulla/vuota la durata... - IF (@DiesEOLife = 0) - BEGIN - SELECT @DiesEOLife = 1 -- metto 1 kg che è sbagliato e mi fa esplodere prezzo matrice ma non blocca calcoli - END + -- controllo che non sia nulla/vuota la durata... + IF (@DiesEOLife = 0) + BEGIN + SELECT @DiesEOLife = 1 -- metto 1 kg che è sbagliato e mi fa esplodere prezzo matrice ma non blocca calcoli + END - -- (E) Calcolo price/life! - SET @DiesPriceLife = @DiesPrice / @DiesEOLife - - -- (D) verifico se vita è OK... - IF (@DiesPriceLife = 0) - BEGIN - SET @DiesPriceLife = 1 - SET @valid = 0 - END - - -- inserisco costi per Matrice: costo e durata da matrice, se non ci sono da gruppo, (anche solo uno dei due, ovviamente più facile trovare durata x matrice...) - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota, valid) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '01', @CodPlant, 'MATRICE', @RawMat, @BatchQty, @DiesPriceLife * @BatchQty, 1, @valid - FROM QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- (E) Calcolo price/life! + SET @DiesPriceLife = @DiesPrice / @DiesEOLife + + -- (D) verifico se vita è OK... + IF (@DiesPriceLife = 0) + BEGIN + SET @DiesPriceLife = 1 + SET @valid = 0 + END + + -- inserisco costi per Matrice: costo e durata da matrice, se non ci sono da gruppo, (anche solo uno dei due, ovviamente più facile trovare durata x matrice...) + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota, valid) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '01', @CodPlant, 'MATRICE', @RawMat, @BatchQty, @DiesPriceLife * @BatchQty, 1, @valid + FROM QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - - -- inserisco parametri calcolati x matrice - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'DiesPrice', @DiesPrice - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + + -- inserisco parametri calcolati x matrice + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'DiesPrice', @DiesPrice + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'DiesExpLife', @DiesExpLife - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'DiesExpLife', @DiesExpLife + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'DiesEOLife', @DiesEOLife - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '01', 'DiesEOLife', @DiesEOLife + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - /************************************************************* - * VENDITA ROTTAME - * - * calcolo COSTO DI VENDITA PER LE 2 FASI ESTRUSIONE 01 ED IMBALLO 04 - * - calcolo costi variabili fase 01 / 04 - * - calcolo costo di vendita x fase 01 / 04 - *************************************************************/ + /************************************************************* + * VENDITA ROTTAME + * + * calcolo COSTO DI VENDITA PER LE 2 FASI ESTRUSIONE 01 ED IMBALLO 04 + * - calcolo costi variabili fase 01 / 04 + * - calcolo costo di vendita x fase 01 / 04 + *************************************************************/ - SELECT @OCF01 = SUM(ISNULL(C4UG,0)) - FROM QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - SELECT @VCF01 = @OCF01 + VC4UG - FROM QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - AND ProcessNum = '01' - - SELECT @VCF04 = @OCF01 + SUM(VC4UG) - FROM dbo.QuoteWorkInt - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - SELECT @SellCostF01 = ((@MAC_ST * @MAC_SC * @MAC_IN) - 1) * (q.RawMatCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 01) - , @RefCostF01 = -- ( (A - B) / 100 - C ) - ( - -- (A) = (costo pieno di acquisto + costi fase 1) * MAC * 100 (IN CENTESIMI) - ((q.RawMatCost + q.RawMatExtraCost + @VCF01) * (@MAC_ST * @MAC_SC * @MAC_IN * 100)) - -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) - - ((@MAC_ST * @MAC_SC * @MAC_IN * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 - rmd.ProcCost) - ) / 100 -- divido per 100 finale - -- (C) = sottraggo costo pieno alluminio - - (q.RawMatCost + q.RawMatExtraCost + @VCF01) - FROM dbo.RawMatDet rmd - INNER JOIN dbo.QuoteRM q ON q.RawMat = rmd.RawMat - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev - AND q.RawMat = @RawMat - - SELECT @SellCostF04 = ((@MAC_IM) - 1) * (q.RawMatCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01 + @VCF04) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 04) - , @RefCostF04 = -- ( (A - B) / 100 - C ) - ( - -- (A) = (costo pieno di acquisto + costi fase 1) * MAC * 100 (IN CENTESIMI) - ((q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) * (@MAC_IM * 100)) - -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) - - ((@MAC_IM * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04 - rmd.ProcCost) - ) / 100 -- divido per 100 finale - -- (C) = sottraggo costo pieno alluminio - - (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) + SELECT @OCF01 = SUM(ISNULL(C4UG,0)) + FROM QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + SELECT @VCF01 = @OCF01 + VC4UG + FROM QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + AND ProcessNum = '01' + + SELECT @VCF04 = @OCF01 + SUM(VC4UG) + FROM dbo.QuoteWorkInt + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + SELECT @SellCostF01 = ((@MAC_ST * @MAC_SC * @MAC_IN) - 1) * (q.RawMatCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 01) + , @RefCostF01 = -- ( (A - B) / 100 - C ) + ( + -- (A) = (costo pieno di acquisto + costi fase 1) * MAC * 100 (IN CENTESIMI) + ((q.RawMatCost + q.RawMatExtraCost + @VCF01) * (@MAC_ST * @MAC_SC * @MAC_IN * 100)) + -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) + - ((@MAC_ST * @MAC_SC * @MAC_IN * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 - rmd.ProcCost) + ) / 100 -- divido per 100 finale + -- (C) = sottraggo costo pieno alluminio + - (q.RawMatCost + q.RawMatExtraCost + @VCF01) + FROM dbo.RawMatDet rmd + INNER JOIN dbo.QuoteRM q ON q.RawMat = rmd.RawMat + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev + AND q.RawMat = @RawMat + + SELECT @SellCostF04 = ((@MAC_IM) - 1) * (q.RawMatCost - CASE WHEN SSVA > 0 THEN SSVA ELSE q.RawMatCost * SSVR END + @VCF01 + @VCF04) -- ((prodotto delle MAC = inverso del prodotto delle rese) - 1) * (costo Al - prezzo rivendita + costi var fase 04) + , @RefCostF04 = -- ( (A - B) / 100 - C ) + ( + -- (A) = (costo pieno di acquisto + costi fase 1) * MAC * 100 (IN CENTESIMI) + ((q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) * (@MAC_IM * 100)) + -- (B) = ((MAC * 100) - 100) * Resa di fonderia * (costo pieno acquisto - costo di trasformazione)) + - ((@MAC_IM * 100) - 100) * rmd.ProcYield * (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04 - rmd.ProcCost) + ) / 100 -- divido per 100 finale + -- (C) = sottraggo costo pieno alluminio + - (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @VCF04) - -- NOTA: usiamo (q.RawMatCost + q.RawMatExtraCost + @VCF01) e non (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @RefCostF01) perché la differenza è minimale, si tratta di 10/20 PPM... + -- NOTA: usiamo (q.RawMatCost + q.RawMatExtraCost + @VCF01) e non (q.RawMatCost + q.RawMatExtraCost + @VCF01 + @RefCostF01) perché la differenza è minimale, si tratta di 10/20 PPM... - FROM RawMatDet rmd INNER JOIN QuoteRM q ON q.RawMat = rmd.RawMat - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev - AND q.RawMat = @RawMat - - -- inserisco costi per VENDITA - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '01', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF01 * @BatchQty, @SSR - FROM QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + FROM RawMatDet rmd INNER JOIN QuoteRM q ON q.RawMat = rmd.RawMat + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev + AND q.RawMat = @RawMat + + -- inserisco costi per VENDITA + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '01', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF01 * @BatchQty, @SSR + FROM QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- inserisco costi per ROTTAME - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '01', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF01 * @BatchQty, 1 - @SSR - FROM QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - -- inserisco costi per VENDITA - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF04 * @BatchQty, @SSR - FROM QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- inserisco costi per ROTTAME + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '01', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF01 * @BatchQty, 1 - @SSR + FROM QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + -- inserisco costi per VENDITA + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF04 * @BatchQty, @SSR + FROM QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- inserisco costi per ROTTAME - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF04 * @BatchQty, 1 - @SSR - FROM dbo.QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- inserisco costi per ROTTAME + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF04 * @BatchQty, 1 - @SSR + FROM dbo.QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - - EXEC stp_packageCost @CodItem, @CodClient, @CodPackag, @PDesc=@PkgDesc OUTPUT, @RMWeight=@PRMWeight OUTPUT, @Weight=@PWeight OUTPUT, @Tare=@PTare OUTPUT, @PackCost=@PCost OUTPUT, @TareStRat=@PTareStRatio OUTPUT - - -- inserisco costi per IMBALLO - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'IMBALLO', @RawMat, @BatchQty, @PCost * @BatchQty, 1 - FROM dbo.QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + + EXEC stp_packageCost @CodItem, @CodClient, @CodPackag, @PDesc=@PkgDesc OUTPUT, @RMWeight=@PRMWeight OUTPUT, @Weight=@PWeight OUTPUT, @Tare=@PTare OUTPUT, @PackCost=@PCost OUTPUT, @TareStRat=@PTareStRatio OUTPUT + + -- inserisco costi per IMBALLO + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'IMBALLO', @RawMat, @BatchQty, @PCost * @BatchQty, 1 + FROM dbo.QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - -- inserisco parametri calcolati x imballaggio - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'PkgDesc', @PkgDesc - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- inserisco parametri calcolati x imballaggio + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'PkgDesc', @PkgDesc + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'RMWeight', @PRMWeight - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'RMWeight', @PRMWeight + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'PWeight', @PWeight - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'PWeight', @PWeight + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'PTare', @PTare - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'PTare', @PTare + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'TareStRatio', @PTareStRatio - FROM QuoteParam - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev - - - --------------------------------------------- - -- inserisco costi per TRASPORTI - --------------------------------------------- - -- recupero zona da cliente... - SELECT @TranspZone = TranspZone - FROM dbo.ClientDet - WHERE CodClient = @CodClient + INSERT INTO QuoteParam(QuoteType, CodQuote, QuoteRev, NumP, ProcessNum, Descr, Parameter) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumP),0) + 1, '04', 'TareStRatio', @PTareStRatio + FROM QuoteParam + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev + + + --------------------------------------------- + -- inserisco costi per TRASPORTI + --------------------------------------------- + -- recupero zona da cliente... + SELECT @TranspZone = TranspZone + FROM dbo.ClientDet + WHERE CodClient = @CodClient - -- recupero tipo di trasporto - SELECT @HasTC = ISNULL(i.HasTC, 0) - FROM QuoteList q INNER JOIN Incoterms i ON q.CodInco = i.CodInco - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev + -- recupero tipo di trasporto + SELECT @HasTC = ISNULL(i.HasTC, 0) + FROM QuoteList q INNER JOIN Incoterms i ON q.CodInco = i.CodInco + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev - -- recupero costi trasporto - SELECT @TranspCost = TranspCost - FROM dbo.TranspCostDet - WHERE TranspZone = @TranspZone + -- recupero costi trasporto + SELECT @TranspCost = TranspCost + FROM dbo.TranspCostDet + WHERE TranspZone = @TranspZone - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'TRASPORTI', @RawMat, @BatchQty, @HasTC * @TranspCost * @BatchQty, 1 - FROM dbo.QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'TRASPORTI', @RawMat, @BatchQty, @HasTC * @TranspCost * @BatchQty, 1 + FROM dbo.QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - - --------------------------------------------- - -- inserisco costi per PROVVIGIONI - --------------------------------------------- - SELECT @Provvig = ISNULL(a.QuotaProvvAg, 0) - FROM dbo.AgentsDet a - INNER JOIN ClientDet c ON a.CodAg = c.CodAg - INNER JOIN QuoteList q ON q.CodClient = c.CodClient - WHERE q.QuoteType = @QuoteType - AND q.CodQuote = @CodQuote - AND q.QuoteRev = @QuoteRev + + --------------------------------------------- + -- inserisco costi per PROVVIGIONI + --------------------------------------------- + SELECT @Provvig = ISNULL(a.QuotaProvvAg, 0) + FROM dbo.AgentsDet a + INNER JOIN ClientDet c ON a.CodAg = c.CodAg + INNER JOIN QuoteList q ON q.CodClient = c.CodClient + WHERE q.QuoteType = @QuoteType + AND q.CodQuote = @CodQuote + AND q.QuoteRev = @QuoteRev - -- inserisco costi per PROVVIGIONI - INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) - SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'PROVVIGIONI', @RawMat, @BatchQty, @Provvig * @BatchQty, 1 - FROM dbo.QuoteOC - WHERE QuoteType = @QuoteType - AND CodQuote = @CodQuote - AND QuoteRev = @QuoteRev + -- inserisco costi per PROVVIGIONI + INSERT INTO QuoteOC(QuoteType, CodQuote, QuoteRev, NumEx, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) + SELECT @QuoteType, @CodQuote, @QuoteRev, ISNULL(MAX(NumEx),0) + 1, '04', @CodPlant, 'PROVVIGIONI', @RawMat, @BatchQty, @Provvig * @BatchQty, 1 + FROM dbo.QuoteOC + WHERE QuoteType = @QuoteType + AND CodQuote = @CodQuote + AND QuoteRev = @QuoteRev - COMMIT TRAN + COMMIT TRAN END diff --git a/C2P_Project/dbo/Tables/QuoteFull_Q.sql b/C2P_Project/dbo/Tables/QuoteFull_Q.sql index 810b6ac..07c772e 100644 --- a/C2P_Project/dbo/Tables/QuoteFull_Q.sql +++ b/C2P_Project/dbo/Tables/QuoteFull_Q.sql @@ -3,6 +3,7 @@ [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, + [IdxQState] INT CONSTRAINT [DF_QuoteFull_Q_IdxQState] DEFAULT ((0)) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [ClientName] NVARCHAR (250) NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, @@ -71,6 +72,12 @@ ); + + GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Prezzo Offerto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteFull_Q', @level2type = N'COLUMN', @level2name = N'PriceOff'; + +GO +EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Stato offerta: 0 = bozza, 10 = completata / in approvazione, 20 = approvata, 30 rilasciata', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteFull_Q', @level2type = N'COLUMN', @level2name = N'IdxQState'; + diff --git a/C2P_Project/dbo/Tables/QuoteList.sql b/C2P_Project/dbo/Tables/QuoteList.sql index eda7fae..2d57a38 100644 --- a/C2P_Project/dbo/Tables/QuoteList.sql +++ b/C2P_Project/dbo/Tables/QuoteList.sql @@ -2,6 +2,7 @@ [QuoteType] CHAR (1) CONSTRAINT [DF_QuoteList_QuoteType] DEFAULT ('Q') NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT CONSTRAINT [DF_QuoteList_QuoteRev] DEFAULT ((0)) NOT NULL, + [IdxQState] INT CONSTRAINT [DF_QuoteList_State] DEFAULT ((0)) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [CodItem] NVARCHAR (50) CONSTRAINT [DF_QuoteList_CodItem] DEFAULT ('') NOT NULL, [CodItemGroup] NVARCHAR (50) CONSTRAINT [DF_QuoteList_CodItemGroup] DEFAULT ('') NOT NULL, @@ -20,6 +21,8 @@ ); + + GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'tipo di preventivo: Q = quote, S = simulation', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'QuoteType'; @@ -75,3 +78,7 @@ EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'riga ordine GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Prezzo finale ordine', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'OrdPrice'; + +GO +EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Stato offerta: 0 = bozza, 10 = completata / in approvazione, 20 = approvata, 30 rilasciata', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'IdxQState'; + diff --git a/C2P_Project/dbo/Tables/QuoteWorkInt.sql b/C2P_Project/dbo/Tables/QuoteWorkInt.sql index b8e098f..23a978b 100644 --- a/C2P_Project/dbo/Tables/QuoteWorkInt.sql +++ b/C2P_Project/dbo/Tables/QuoteWorkInt.sql @@ -32,6 +32,8 @@ + + GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'tipo di preventivo: Q = quote, S = simulation', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'QuoteType'; @@ -57,7 +59,9 @@ EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 01 GO -EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 02, codice di ricerca per prod - es cod imballo o Chiave di ricerca Articolo/ClasseArt + RawMat+ Impianto + NumLuci ', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'Class02'; +EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 02, codice di ricerca per prod - es cod imballo o Chiave di ricerca Articolo/ClasseArt + RawMat+ Impianto + NumLuci', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'Class02'; + + @@ -119,19 +123,25 @@ EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Defect Yiel GO -EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Work Conversion Ratio, Messa a Cento, 1 / RESA ', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'WCR'; +EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Work Conversion Ratio, Messa a Cento, 1 / RESA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'WCR'; + + GO -EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Material Conversion Ratio, Messa a Cento, 1 / RESA ', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'MCR'; +EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Material Conversion Ratio, Messa a Cento, 1 / RESA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'MCR'; + + GO -EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Defect Conversion Ratio, Messa a Cento, 1 / RESA ', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'DCR'; +EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Defect Conversion Ratio, Messa a Cento, 1 / RESA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'DCR'; + + diff --git a/C2P_Project/dbo/Views/dbo.v_selIncoterms.sql b/C2P_Project/dbo/Views/dbo.v_selIncoterms.sql new file mode 100644 index 0000000..36e9ac5 --- /dev/null +++ b/C2P_Project/dbo/Views/dbo.v_selIncoterms.sql @@ -0,0 +1,129 @@ +CREATE VIEW dbo.v_selIncoterms +AS +SELECT CodInco AS value, CodInco + ' - ' + Descript AS label +FROM dbo.Incoterms +GO +EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selIncoterms'; + + +GO +EXECUTE sp_addextendedproperty @name = N'MS_DiagramPane1', @value = N'[0E232FF0-B466-11cf-A24F-00AA00A3EFFF, 1.00] +Begin DesignProperties = + Begin PaneConfigurations = + Begin PaneConfiguration = 0 + NumPanes = 4 + Configuration = "(H (1[40] 4[20] 2[20] 3) )" + End + Begin PaneConfiguration = 1 + NumPanes = 3 + Configuration = "(H (1 [50] 4 [25] 3))" + End + Begin PaneConfiguration = 2 + NumPanes = 3 + Configuration = "(H (1 [50] 2 [25] 3))" + End + Begin PaneConfiguration = 3 + NumPanes = 3 + Configuration = "(H (4 [30] 2 [40] 3))" + End + Begin PaneConfiguration = 4 + NumPanes = 2 + Configuration = "(H (1 [56] 3))" + End + Begin PaneConfiguration = 5 + NumPanes = 2 + Configuration = "(H (2 [66] 3))" + End + Begin PaneConfiguration = 6 + NumPanes = 2 + Configuration = "(H (4 [50] 3))" + End + Begin PaneConfiguration = 7 + NumPanes = 1 + Configuration = "(V (3))" + End + Begin PaneConfiguration = 8 + NumPanes = 3 + Configuration = "(H (1[56] 4[18] 2) )" + End + Begin PaneConfiguration = 9 + NumPanes = 2 + Configuration = "(H (1 [75] 4))" + End + Begin PaneConfiguration = 10 + NumPanes = 2 + Configuration = "(H (1[66] 2) )" + End + Begin PaneConfiguration = 11 + NumPanes = 2 + Configuration = "(H (4 [60] 2))" + End + Begin PaneConfiguration = 12 + NumPanes = 1 + Configuration = "(H (1) )" + End + Begin PaneConfiguration = 13 + NumPanes = 1 + Configuration = "(V (4))" + End + Begin PaneConfiguration = 14 + NumPanes = 1 + Configuration = "(V (2))" + End + ActivePaneConfig = 0 + End + Begin DiagramPane = + Begin Origin = + Top = 0 + Left = 0 + End + Begin Tables = + Begin Table = "Incoterms" + Begin Extent = + Top = 6 + Left = 38 + Bottom = 119 + Right = 208 + End + DisplayFlags = 280 + TopColumn = 0 + End + End + End + Begin SQLPane = + End + Begin DataPane = + Begin ParameterDefaults = "" + End + Begin ColumnWidths = 9 + Width = 284 + Width = 1500 + Width = 5055 + Width = 1500 + Width = 1500 + Width = 1500 + Width = 1500 + Width = 1500 + Width = 1500 + End + End + Begin CriteriaPane = + Begin ColumnWidths = 11 + Column = 1440 + Alias = 900 + Table = 1170 + Output = 720 + Append = 1400 + NewValue = 1170 + SortType = 1350 + SortOrder = 1410 + GroupBy = 1350 + Filter = 1350 + Or = 1350 + Or = 1350 + Or = 1350 + End + End +End +', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selIncoterms'; + diff --git a/C2P_Project/dbo/Views/v_QuoteFull_Q.sql b/C2P_Project/dbo/Views/v_QuoteFull_Q.sql index 0adbb16..ecf05d1 100644 --- a/C2P_Project/dbo/Views/v_QuoteFull_Q.sql +++ b/C2P_Project/dbo/Views/v_QuoteFull_Q.sql @@ -1,6 +1,6 @@ CREATE VIEW dbo.v_QuoteFull_Q AS -SELECT Vers, QuoteType, CodQuote, QuoteRev, CodClient, ClientName, CodItem, CodItemGroup, RawMat, UnitWeight, BatchQty, CodInco, KeyAM, Note, PriceOff, CodClientAssoc, ClientNameAssoc, ItemDescr, +SELECT Vers, QuoteType, CodQuote, QuoteRev, IdxQState, CodClient, ClientName, CodItem, CodItemGroup, RawMat, UnitWeight, BatchQty, CodInco, KeyAM, Note, PriceOff, CodClientAssoc, ClientNameAssoc, ItemDescr, CodifProfilo, ClasseMerc, TipoDies, CodDiesGroup, DiamDies, HoleNumDies, DiesPrice, DiesExpLife, DiesEOLife, NumDiesInList, NumDiesExaust, CodPlant, KeyAMIL, KgTeo, NumSMED, QuotaMan, PRMWeight, PWeight, PTare, LivPackage, LivPackageDett, RawMatCost, RawMatExtraCost, RawMatFullCost, CodPackag, PkgDesc, FSR, ProvvCost, EECost, GasCost, DiesCost, PackCost, TranspCost, SellCost01, RefCost01, SellCost04, RefCost04, WSR01, MSR01, NetProd01, FC4UG01, VC4UG01, OH4UG01, SC4UG01, DSR, NetProd04, FC4UG04, VC4UG04, FVC, Charge, FVC + RawMatFullCost AS P_FVC, @@ -86,7 +86,7 @@ Begin DesignProperties = Begin Extent = Top = 6 Left = 38 - Bottom = 136 + Bottom = 235 Right = 221 End DisplayFlags = 280 @@ -134,6 +134,8 @@ End + + GO EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_QuoteFull_Q'; diff --git a/C2P_Project/dbo/Views/v_selClient.sql b/C2P_Project/dbo/Views/v_selClient.sql index 28eef27..09abf2a 100644 --- a/C2P_Project/dbo/Views/v_selClient.sql +++ b/C2P_Project/dbo/Views/v_selClient.sql @@ -1,6 +1,6 @@ CREATE VIEW dbo.v_selClient AS -SELECT CodClient AS value, ClientName + ' [' + CodClient + ']' AS label +SELECT CodClient AS value, CASE WHEN LEN(ClientName) > 40 THEN SUBSTRING(ClientName, 0, 40) + '...' ELSE ClientName END + ' [' + CodClient + ']' AS label FROM dbo.ClientDet WHERE (CodClient <> '') @@ -96,7 +96,7 @@ Begin DesignProperties = Begin ColumnWidths = 9 Width = 284 Width = 1500 - Width = 4290 + Width = 11790 Width = 1500 Width = 1500 Width = 1500 @@ -128,6 +128,8 @@ End + + GO EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selClient'; diff --git a/C2P_Project/dbo/Views/v_selItems.sql b/C2P_Project/dbo/Views/v_selItems.sql index 7482962..11cb59a 100644 --- a/C2P_Project/dbo/Views/v_selItems.sql +++ b/C2P_Project/dbo/Views/v_selItems.sql @@ -122,8 +122,9 @@ Begin DesignProperties = Or = 1350 End End -End -', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selItems'; +End', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selItems'; + +