/* Deployment script for C2P_Project This code was generated by a tool. Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. */ GO SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON; SET NUMERIC_ROUNDABORT OFF; GO :setvar DatabaseName "C2P_Project" :setvar DefaultFilePrefix "C2P_Project" :setvar DefaultDataPath "" :setvar DefaultLogPath "" GO :on error exit GO /* Detect SQLCMD mode and disable script execution if SQLCMD mode is not supported. To re-enable the script after enabling SQLCMD mode, execute the following: SET NOEXEC OFF; */ :setvar __IsSqlCmdEnabled "True" GO IF N'$(__IsSqlCmdEnabled)' NOT LIKE N'True' BEGIN PRINT N'SQLCMD mode must be enabled to successfully execute this script.'; SET NOEXEC ON; END GO USE [master]; GO IF (DB_ID(N'$(DatabaseName)') IS NOT NULL) BEGIN ALTER DATABASE [$(DatabaseName)] SET SINGLE_USER WITH ROLLBACK IMMEDIATE; DROP DATABASE [$(DatabaseName)]; END GO PRINT N'Creating $(DatabaseName)...' GO CREATE DATABASE [$(DatabaseName)] COLLATE SQL_Latin1_General_CP1_CI_AS GO IF EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)') BEGIN ALTER DATABASE [$(DatabaseName)] SET ANSI_NULLS ON, ANSI_PADDING ON, ANSI_WARNINGS ON, ARITHABORT ON, CONCAT_NULL_YIELDS_NULL ON, NUMERIC_ROUNDABORT OFF, QUOTED_IDENTIFIER ON, ANSI_NULL_DEFAULT ON, CURSOR_DEFAULT LOCAL, RECOVERY FULL, CURSOR_CLOSE_ON_COMMIT OFF, AUTO_CREATE_STATISTICS ON, AUTO_SHRINK OFF, AUTO_UPDATE_STATISTICS ON, RECURSIVE_TRIGGERS OFF WITH ROLLBACK IMMEDIATE; ALTER DATABASE [$(DatabaseName)] SET AUTO_CLOSE OFF WITH ROLLBACK IMMEDIATE; END GO IF EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)') BEGIN ALTER DATABASE [$(DatabaseName)] SET ALLOW_SNAPSHOT_ISOLATION OFF; END GO IF EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)') BEGIN ALTER DATABASE [$(DatabaseName)] SET READ_COMMITTED_SNAPSHOT OFF; END GO IF EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)') BEGIN ALTER DATABASE [$(DatabaseName)] SET AUTO_UPDATE_STATISTICS_ASYNC OFF, PAGE_VERIFY NONE, DATE_CORRELATION_OPTIMIZATION OFF, DISABLE_BROKER, PARAMETERIZATION SIMPLE, SUPPLEMENTAL_LOGGING OFF WITH ROLLBACK IMMEDIATE; END GO IF IS_SRVROLEMEMBER(N'sysadmin') = 1 BEGIN IF EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)') BEGIN EXECUTE sp_executesql N'ALTER DATABASE [$(DatabaseName)] SET TRUSTWORTHY OFF, DB_CHAINING OFF WITH ROLLBACK IMMEDIATE'; END END ELSE BEGIN PRINT N'The database settings cannot be modified. You must be a SysAdmin to apply these settings.'; END GO IF IS_SRVROLEMEMBER(N'sysadmin') = 1 BEGIN IF EXISTS (SELECT 1 FROM [master].[dbo].[sysdatabases] WHERE [name] = N'$(DatabaseName)') BEGIN EXECUTE sp_executesql N'ALTER DATABASE [$(DatabaseName)] SET HONOR_BROKER_PRIORITY OFF WITH ROLLBACK IMMEDIATE'; END END ELSE BEGIN PRINT N'The database settings cannot be modified. You must be a SysAdmin to apply these settings.'; END GO USE [$(DatabaseName)]; GO IF fulltextserviceproperty(N'IsFulltextInstalled') = 1 EXECUTE sp_fulltext_database 'enable'; GO PRINT N'Creating [voc]...'; GO CREATE SCHEMA [voc] AUTHORIZATION [dbo]; GO PRINT N'Creating [ext]...'; GO CREATE SCHEMA [ext] AUTHORIZATION [dbo]; GO PRINT N'Creating [tmp]...'; GO CREATE SCHEMA [tmp] AUTHORIZATION [dbo]; GO PRINT N'Creating [dbo].[Vocabolario]...'; GO CREATE TABLE [dbo].[Vocabolario] ( [Lingua] NVARCHAR (3) NOT NULL, [Lemma] NVARCHAR (50) NOT NULL, [Traduzione] NVARCHAR (500) NOT NULL, CONSTRAINT [PK_Vocabolario] PRIMARY KEY CLUSTERED ([Lingua] ASC, [Lemma] ASC) ); GO PRINT N'Creating [dbo].[Vocabolario].[I_lemma]...'; GO CREATE NONCLUSTERED INDEX [I_lemma] ON [dbo].[Vocabolario]([Lemma] ASC); GO PRINT N'Creating [dbo].[Lingue]...'; GO CREATE TABLE [dbo].[Lingue] ( [Lingua] NVARCHAR (3) NOT NULL, [DescrizioneLingua] NVARCHAR (50) NOT NULL, CONSTRAINT [PK_Lingue] PRIMARY KEY CLUSTERED ([Lingua] ASC) ); GO PRINT N'Creating [dbo].[QuoteParam]...'; GO CREATE TABLE [dbo].[QuoteParam] ( [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [NumP] INT NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [Descr] NVARCHAR (50) NOT NULL, [Parameter] NVARCHAR (100) NOT NULL, CONSTRAINT [PK_QuoteParam] PRIMARY KEY CLUSTERED ([NumP] ASC, [QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC) ); GO PRINT N'Creating [dbo].[QuoteFull_Q]...'; GO CREATE TABLE [dbo].[QuoteFull_Q] ( [Vers] VARCHAR (5) NOT NULL, [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [ClientName] NVARCHAR (250) NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [CodItemGroup] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [UnitWeight] DECIMAL (9, 3) NOT NULL, [BatchQty] INT NOT NULL, [CodInco] NVARCHAR (5) NOT NULL, [KeyAM] NVARCHAR (101) NOT NULL, [Note] NVARCHAR (2500) NOT NULL, [PriceOff] DECIMAL (9, 6) NOT NULL, [CodClientAssoc] NVARCHAR (100) NULL, [ClientNameAssoc] NVARCHAR (100) NULL, [ItemDescr] NVARCHAR (100) NULL, [CodifProfilo] NVARCHAR (100) NULL, [ClasseMerc] NVARCHAR (100) NULL, [TipoDies] NVARCHAR (100) NULL, [CodDiesGroup] NVARCHAR (100) NULL, [DiamDies] DECIMAL (18, 6) NULL, [HoleNumDies] INT NULL, [DiesPrice] DECIMAL (18, 6) NULL, [DiesExpLife] DECIMAL (18, 6) NULL, [DiesEOLife] DECIMAL (18, 6) NULL, [NumDiesInList] DECIMAL (18, 6) NULL, [NumDiesExaust] DECIMAL (18, 6) NULL, [CodPlant] NVARCHAR (100) NULL, [KeyAMIL] NVARCHAR (100) NULL, [KgTeo] DECIMAL (18, 6) NULL, [NumSMED] DECIMAL (18, 6) NULL, [QuotaMan] DECIMAL (18, 6) NULL, [PRMWeight] DECIMAL (18, 6) NULL, [PWeight] DECIMAL (18, 6) NULL, [PTare] DECIMAL (18, 6) NULL, [LivPackage] NVARCHAR (100) NULL, [LivPackageDett] NVARCHAR (100) NULL, [RawMatCost] DECIMAL (18, 6) NOT NULL, [RawMatExtraCost] DECIMAL (18, 6) NOT NULL, [RawMatFullCost] DECIMAL (18, 6) NULL, [CodPackag] NVARCHAR (50) NOT NULL, [PkgDesc] NVARCHAR (100) NULL, [FSR] DECIMAL (18, 6) NULL, [ProvvCost] DECIMAL (18, 6) NOT NULL, [EECost] DECIMAL (18, 6) NOT NULL, [GasCost] DECIMAL (18, 6) NOT NULL, [DiesCost] DECIMAL (18, 6) NOT NULL, [PackCost] DECIMAL (18, 6) NOT NULL, [TranspCost] DECIMAL (18, 6) NOT NULL, [SellCost01] DECIMAL (18, 6) NOT NULL, [RefCost01] DECIMAL (18, 6) NOT NULL, [SellCost04] DECIMAL (18, 6) NOT NULL, [RefCost04] DECIMAL (18, 6) NOT NULL, [WSR01] DECIMAL (9, 8) NOT NULL, [MSR01] DECIMAL (9, 8) NOT NULL, [NetProd01] DECIMAL (9, 3) NOT NULL, [FC4UG01] DECIMAL (9, 6) NOT NULL, [VC4UG01] DECIMAL (9, 6) NOT NULL, [OH4UG01] DECIMAL (9, 6) NOT NULL, [SC4UG01] DECIMAL (9, 6) NOT NULL, [DSR] DECIMAL (18, 6) NULL, [NetProd04] DECIMAL (9, 3) NOT NULL, [FC4UG04] DECIMAL (9, 6) NOT NULL, [VC4UG04] DECIMAL (9, 6) NOT NULL, [FVC] DECIMAL (18, 6) NULL, [Charge] DECIMAL (9, 6) NOT NULL, CONSTRAINT [PK_QuoteFull_Q_1] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC) ); GO PRINT N'Creating [dbo].[Config]...'; GO CREATE TABLE [dbo].[Config] ( [Parameter] NVARCHAR (50) NOT NULL, [Value] NVARCHAR (50) NULL, CONSTRAINT [PK_Config] PRIMARY KEY CLUSTERED ([Parameter] ASC) ); GO PRINT N'Creating [dbo].[QuoteOC]...'; GO CREATE TABLE [dbo].[QuoteOC] ( [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [NumEx] INT NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [Class01] NVARCHAR (50) NOT NULL, [Class02] NVARCHAR (50) NOT NULL, [Class03] NVARCHAR (50) NOT NULL, [Class04] NVARCHAR (50) NOT NULL, [Class05] NVARCHAR (50) NOT NULL, [TotQty] DECIMAL (18, 6) NOT NULL, [TotCost] DECIMAL (18, 6) NOT NULL, [Quota] DECIMAL (18, 6) NOT NULL, [C4UG] AS (([TotCost] * [Quota]) / [TotQty]) PERSISTED, [valid] BIT NOT NULL, CONSTRAINT [PK_QuoteExtra] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC, [NumEx] ASC) ); GO PRINT N'Creating [dbo].[test]...'; GO CREATE TABLE [dbo].[test] ( [Row] BIGINT IDENTITY (1, 1) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [EventStart] DATETIME NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [CodDies] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [OrderNum] NVARCHAR (50) NOT NULL, [BatchNum] NVARCHAR (50) NOT NULL, CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED ([Row] ASC) ); GO PRINT N'Creating [dbo].[QuoteWorkInt]...'; GO CREATE TABLE [dbo].[QuoteWorkInt] ( [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [NumWI] INT NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [Class01] NVARCHAR (50) NOT NULL, [Class02] NVARCHAR (50) NOT NULL, [Class03] NVARCHAR (50) NOT NULL, [Class04] NVARCHAR (50) NOT NULL, [Class05] NVARCHAR (50) NOT NULL, [NetProd] DECIMAL (9, 3) NOT NULL, [WSR] DECIMAL (9, 8) NOT NULL, [MSR] DECIMAL (9, 8) NOT NULL, [DSR] DECIMAL (9, 8) NOT NULL, [FC4UG] DECIMAL (9, 6) NOT NULL, [VC4UG] DECIMAL (9, 6) NOT NULL, [OH4UG] DECIMAL (9, 6) NOT NULL, [SC4UG] DECIMAL (9, 6) NOT NULL, [WYR] AS ((1) - [WSR]), [MYR] AS ((1) - [MSR]), [DYR] AS ((1) - [DSR]), [WCR] AS ((1) / ((1) - [WSR])), [MCR] AS ((1) / ((1) - [MSR])), [DCR] AS ((1) / ((1) - [DSR])), [valid] BIT NOT NULL, CONSTRAINT [PK_QuoteWorkInt] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC, [NumWI] ASC) ); GO PRINT N'Creating [dbo].[QuoteWorkExt]...'; GO CREATE TABLE [dbo].[QuoteWorkExt] ( [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [NumWE] INT NOT NULL, [EWC4UG] DECIMAL (9, 6) NOT NULL, [UM] NVARCHAR (50) NOT NULL, [valid] BIT NOT NULL, CONSTRAINT [PK_QuoteWorkExt] PRIMARY KEY CLUSTERED ([QuoteRev] ASC, [QuoteType] ASC, [CodQuote] ASC, [NumWE] ASC) ); GO PRINT N'Creating [dbo].[QuoteList]...'; GO CREATE TABLE [dbo].[QuoteList] ( [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [CodItemGroup] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [UnitWeight] DECIMAL (9, 3) NOT NULL, [BatchQty] INT NOT NULL, [CodInco] NVARCHAR (5) NOT NULL, [KeyAM] AS (([CodItem] + '-') + [RawMat]), [Note] NVARCHAR (2500) NOT NULL, [PriceOff] DECIMAL (9, 6) NOT NULL, [OrdDate] DATE NULL, [OrdNum] NVARCHAR (50) NOT NULL, [OrdRow] NVARCHAR (50) NOT NULL, [OrdPrice] DECIMAL (9, 6) NOT NULL, CONSTRAINT [PK_QuoteList_1] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC) ); GO PRINT N'Creating [dbo].[Package2Item]...'; GO CREATE TABLE [dbo].[Package2Item] ( [CodItem] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [TotQta] DECIMAL (18, 3) NOT NULL, [Weight] DECIMAL (9, 4) NOT NULL, [Tare] DECIMAL (9, 4) NOT NULL, [NumImb] DECIMAL (9, 6) NOT NULL, [Durata] DECIMAL (18, 6) NOT NULL, CONSTRAINT [PK_Package2Item] PRIMARY KEY CLUSTERED ([CodItem] ASC, [CodPackag] ASC) ); GO PRINT N'Creating [dbo].[QuoteFull_Q_old]...'; GO CREATE TABLE [dbo].[QuoteFull_Q_old] ( [Vers] VARCHAR (5) NOT NULL, [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [ClientName] NVARCHAR (250) NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [CodItemGroup] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [UnitWeight] DECIMAL (9, 3) NOT NULL, [BatchQty] INT NOT NULL, [CodInco] NVARCHAR (5) NOT NULL, [KeyAM] NVARCHAR (101) NOT NULL, [Note] NVARCHAR (2500) NOT NULL, [FullCost] DECIMAL (9, 6) NOT NULL, [MinPrice] DECIMAL (9, 6) NOT NULL, [PriceOff] DECIMAL (9, 6) NOT NULL, [CodClientAssoc] NVARCHAR (100) NULL, [ClientNameAssoc] NVARCHAR (100) NULL, [ItemDescr] NVARCHAR (100) NULL, [CodifProfilo] NVARCHAR (100) NULL, [ClasseMerc] NVARCHAR (100) NULL, [TipoDies] NVARCHAR (100) NULL, [CodDiesGroup] NVARCHAR (100) NULL, [DiamDies] NVARCHAR (100) NULL, [HoleNumDies] NVARCHAR (100) NULL, [DiesPrice] NVARCHAR (100) NULL, [DiesExpLife] NVARCHAR (100) NULL, [DiesEOLife] NVARCHAR (100) NULL, [NumDiesInList] NVARCHAR (100) NULL, [NumDiesExaust] NVARCHAR (100) NULL, [CodPlant] NVARCHAR (100) NULL, [KeyAMIL] NVARCHAR (100) NULL, [KgTeo] NVARCHAR (100) NULL, [NumSMED] NVARCHAR (100) NULL, [QuotaMan] NVARCHAR (100) NULL, [PRMWeight] NVARCHAR (100) NULL, [PWeight] NVARCHAR (100) NULL, [PTare] NVARCHAR (100) NULL, [LivPackage] NVARCHAR (100) NULL, [LivPackageDett] NVARCHAR (100) NULL, [RawMatCost] DECIMAL (18, 6) NOT NULL, [RawMatExtraCost] DECIMAL (18, 6) NOT NULL, [RawMatFullCost] DECIMAL (19, 6) NULL, [CodPackag] NVARCHAR (50) NOT NULL, [PkgDesc] NVARCHAR (100) NULL, [FSR] DECIMAL (27, 19) NULL, [ProvvCost] DECIMAL (38, 7) NOT NULL, [EECost] DECIMAL (38, 7) NOT NULL, [GasCost] DECIMAL (38, 7) NOT NULL, [DiesCost] DECIMAL (38, 7) NOT NULL, [PackCost] DECIMAL (38, 7) NOT NULL, [TranspCost] DECIMAL (38, 7) NOT NULL, [SellCost01] DECIMAL (38, 7) NOT NULL, [RefCost01] DECIMAL (38, 7) NOT NULL, [SellCost04] DECIMAL (38, 7) NOT NULL, [RefCost04] DECIMAL (38, 7) NOT NULL, [WSR01] DECIMAL (9, 8) NOT NULL, [MSR01] DECIMAL (9, 8) NOT NULL, [NetProd01] DECIMAL (9, 3) NOT NULL, [FC4UG01] DECIMAL (9, 6) NOT NULL, [VC4UG01] DECIMAL (9, 6) NOT NULL, [OH4UG01] DECIMAL (9, 6) NOT NULL, [SC4UG01] DECIMAL (9, 6) NOT NULL, [DSR] DECIMAL (38, 27) NULL, [NetProd04] DECIMAL (9, 3) NOT NULL, [FC4UG04] DECIMAL (9, 6) NOT NULL, [VC4UG04] DECIMAL (9, 6) NOT NULL, [FVC] DECIMAL (38, 7) NULL, [Charge] DECIMAL (9, 6) NOT NULL ); GO PRINT N'Creating [dbo].[ProductionLog]...'; GO CREATE TABLE [dbo].[ProductionLog] ( [EventStart] DATETIME NOT NULL, [EventEnd] DATETIME NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [NrPos] NVARCHAR (50) NOT NULL, [CodDies] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [OrderNum] NVARCHAR (50) NOT NULL, [BatchNum] NVARCHAR (50) NOT NULL, [ProcessType] NVARCHAR (50) NOT NULL, [EventType] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [QtyIN] DECIMAL (18, 4) NOT NULL, [QtyOUT] DECIMAL (18, 4) NOT NULL, [QtyEXT] DECIMAL (18, 4) NOT NULL, [NumIN] INT NOT NULL, [NumOUT] INT NOT NULL, [QuotaPlant] DECIMAL (9, 4) NOT NULL, [QuotaMan] DECIMAL (9, 4) NOT NULL, [Tags] NVARCHAR (250) NOT NULL, [Duration] AS (datediff(second, [EventStart], [EventEnd]) / (3600.00)) PERSISTED, [okPr] BIT NOT NULL, [okQM] BIT NOT NULL, [okSc] BIT NOT NULL, [okDi] BIT NOT NULL, CONSTRAINT [PK_ProductionLog_1] PRIMARY KEY CLUSTERED ([EventStart] ASC, [EventEnd] ASC, [CodPlant] ASC, [ProcessNum] ASC, [NrPos] ASC, [CodDies] ASC) ); GO PRINT N'Creating [dbo].[Package2ItemClient]...'; GO CREATE TABLE [dbo].[Package2ItemClient] ( [CodItem] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [TotQta] DECIMAL (18, 3) NOT NULL, [Weight] DECIMAL (18, 6) NOT NULL, [Tare] DECIMAL (18, 6) NOT NULL, [NumImb] DECIMAL (9, 6) NOT NULL, [Durata] DECIMAL (18, 6) NOT NULL, CONSTRAINT [PK_Package2ItemClient] PRIMARY KEY CLUSTERED ([CodItem] ASC, [CodClient] ASC, [CodPackag] ASC) ); GO PRINT N'Creating [dbo].[PackagDet]...'; GO CREATE TABLE [dbo].[PackagDet] ( [CodPackag] NVARCHAR (50) NOT NULL, [PackagDesc] NVARCHAR (250) NOT NULL, [RMCost] DECIMAL (9, 3) NOT NULL, [RMWeight] DECIMAL (9, 4) NOT NULL, CONSTRAINT [PK_PackagDet] PRIMARY KEY CLUSTERED ([CodPackag] ASC) ); GO PRINT N'Creating [dbo].[TabImbArt]...'; GO CREATE TABLE [dbo].[TabImbArt] ( [KeyA] NVARCHAR (50) NOT NULL, [NumImb] DECIMAL (9, 6) NOT NULL, [TotOut] DECIMAL (18, 6) NOT NULL, [Durata] DECIMAL (18, 6) NOT NULL, CONSTRAINT [PK_TabImbArt] PRIMARY KEY CLUSTERED ([KeyA] ASC) ); GO PRINT N'Creating [dbo].[PlantsDet]...'; GO CREATE TABLE [dbo].[PlantsDet] ( [CodPlant] NVARCHAR (50) NOT NULL, [Descript] NVARCHAR (250) NOT NULL, [Charge] DECIMAL (9, 6) NOT NULL, CONSTRAINT [PK_PlantsDet] PRIMARY KEY CLUSTERED ([CodPlant] ASC) ); GO PRINT N'Creating [dbo].[RevHistory]...'; GO CREATE TABLE [dbo].[RevHistory] ( [RevType] NVARCHAR (50) NOT NULL, [RevNum] INT NOT NULL, [DateRev] DATETIME NOT NULL, [Description] NVARCHAR (250) NOT NULL, CONSTRAINT [PK_RevHistory] PRIMARY KEY CLUSTERED ([RevType] ASC, [RevNum] ASC) ); GO PRINT N'Creating [dbo].[DiesGroupDet]...'; GO CREATE TABLE [dbo].[DiesGroupDet] ( [CodDiesGroup] NVARCHAR (50) NOT NULL, [Price] DECIMAL (9, 3) NOT NULL, [QtyTot] INT NOT NULL, [QtyEOL] INT NOT NULL, [ExpLife] DECIMAL (9, 2) NOT NULL, [EOLLife] DECIMAL (9, 2) NOT NULL, [DateMod] DATE NULL, [UserMod] NVARCHAR (50) NULL, CONSTRAINT [PK_DiesGroupDet] PRIMARY KEY CLUSTERED ([CodDiesGroup] ASC) ); GO PRINT N'Creating [dbo].[Cost2Plant]...'; GO CREATE TABLE [dbo].[Cost2Plant] ( [CodPlant] NVARCHAR (50) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [FC] DECIMAL (9, 4) NOT NULL, [VC] DECIMAL (9, 4) NOT NULL, [OH] DECIMAL (9, 4) NOT NULL, [SC] DECIMAL (9, 4) NOT NULL, [QuotaPlantStd] DECIMAL (9, 4) NOT NULL, [QuotaManStd] DECIMAL (9, 4) NOT NULL, CONSTRAINT [PK_Cost2Plant] PRIMARY KEY CLUSTERED ([CodPlant] ASC, [ProcessNum] ASC) ); GO PRINT N'Creating [dbo].[TabProdSc]...'; GO CREATE TABLE [dbo].[TabProdSc] ( [KeyAMIL] NVARCHAR (250) NOT NULL, [CodDiesGroup] NVARCHAR (50) NOT NULL, [KeyAM] NVARCHAR (250) NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [HoleNum] INT NOT NULL, [NumSMED] INT NOT NULL, [KgTeo] DECIMAL (18, 6) NOT NULL, [KgLor] DECIMAL (18, 6) NOT NULL, [Duration] DECIMAL (18, 6) NOT NULL, [ProdTeo] AS (isnull([KgTeo], (0)) / CASE isnull([Duration], (1)) WHEN (0) THEN (1) ELSE isnull([Duration], (1)) END), [ScTec] AS ((1) - [KgTeo] / CASE [KgLor] WHEN (0) THEN (1) ELSE [KgLor] END), CONSTRAINT [PK_TabProdSc] PRIMARY KEY CLUSTERED ([KeyAMIL] ASC, [CodDiesGroup] ASC) ); GO PRINT N'Creating [dbo].[TabProdSc].[i_TabProdSc_KeyAM]...'; GO CREATE NONCLUSTERED INDEX [i_TabProdSc_KeyAM] ON [dbo].[TabProdSc]([KeyAM] ASC) INCLUDE([KgTeo]); GO PRINT N'Creating [dbo].[ClientDet]...'; GO CREATE TABLE [dbo].[ClientDet] ( [CodClient] NVARCHAR (50) NOT NULL, [ClientName] NVARCHAR (250) NOT NULL, [CodAg] NVARCHAR (50) NOT NULL, [ZipCode] NVARCHAR (50) NOT NULL, [City] NVARCHAR (50) NOT NULL, [State] NVARCHAR (50) NOT NULL, [Nation] NVARCHAR (50) NOT NULL, [TranspZone] NVARCHAR (50) NULL, CONSTRAINT [PK_ClientDet] PRIMARY KEY CLUSTERED ([CodClient] ASC) ); GO PRINT N'Creating [dbo].[AgentsDet]...'; GO CREATE TABLE [dbo].[AgentsDet] ( [CodAg] NVARCHAR (50) NOT NULL, [Lastname] NVARCHAR (50) NOT NULL, [Firstname] NVARCHAR (50) NOT NULL, [QuotaProvvAg] DECIMAL (9, 6) NOT NULL, CONSTRAINT [PK_AgentsDet] PRIMARY KEY CLUSTERED ([CodAg] ASC) ); GO PRINT N'Creating [dbo].[Utilities]...'; GO CREATE TABLE [dbo].[Utilities] ( [CodUtil] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [UnitCost] DECIMAL (9, 6) NOT NULL, CONSTRAINT [PK_Utilities] PRIMARY KEY CLUSTERED ([CodUtil] ASC, [CodPlant] ASC) ); GO PRINT N'Creating [dbo].[DiesDet]...'; GO CREATE TABLE [dbo].[DiesDet] ( [CodDies] NVARCHAR (50) NOT NULL, [HoleNum] INT NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [CodDiesGroup] NVARCHAR (50) NOT NULL, [Price] DECIMAL (9, 3) NOT NULL, [TestCost] DECIMAL (9, 3) NOT NULL, [ExpLife] DECIMAL (9, 2) NOT NULL, [ActLife] DECIMAL (9, 2) NOT NULL, [Active] INT NOT NULL, CONSTRAINT [PK_DiesDet] PRIMARY KEY CLUSTERED ([CodDies] ASC) ); GO PRINT N'Creating [dbo].[DiesDet].[i_DiesDet_CodItem_CodDiesGroup_Active]...'; GO CREATE NONCLUSTERED INDEX [i_DiesDet_CodItem_CodDiesGroup_Active] ON [dbo].[DiesDet]([CodItem] ASC, [CodDiesGroup] ASC, [Active] ASC) INCLUDE([Price], [ExpLife], [ActLife]); GO PRINT N'Creating [dbo].[DiesDet].[i_DiesDet_Active_CodDiesGroup_Filtered]...'; GO CREATE NONCLUSTERED INDEX [i_DiesDet_Active_CodDiesGroup_Filtered] ON [dbo].[DiesDet]([Active] ASC, [CodDiesGroup] ASC) INCLUDE([CodItem]) WHERE ([Active]=(0)); GO PRINT N'Creating [dbo].[Incoterms]...'; GO CREATE TABLE [dbo].[Incoterms] ( [CodInco] NVARCHAR (5) NOT NULL, [Descript] NVARCHAR (250) NOT NULL, [HasTC] INT NOT NULL, CONSTRAINT [PK_Incoterms] PRIMARY KEY CLUSTERED ([CodInco] ASC) ); GO PRINT N'Creating [dbo].[TranspCostDet]...'; GO CREATE TABLE [dbo].[TranspCostDet] ( [TranspZone] NVARCHAR (50) NOT NULL, [TranspCost] DECIMAL (9, 6) NOT NULL, CONSTRAINT [PK_TranspCostDet_1] PRIMARY KEY CLUSTERED ([TranspZone] ASC) ); GO PRINT N'Creating [dbo].[QuoteRM]...'; GO CREATE TABLE [dbo].[QuoteRM] ( [QuoteType] CHAR (1) NOT NULL, [CodQuote] BIGINT NOT NULL, [QuoteRev] INT NOT NULL, [NumRM] INT NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [RawMatCost] DECIMAL (18, 6) NOT NULL, [RawMatExtraCost] DECIMAL (18, 6) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [FCR] DECIMAL (18, 6) NOT NULL, [FYR] AS ((1) / [FCR]), [FSR] AS ((1) - (1) / [FCR]), [valid] BIT NOT NULL, CONSTRAINT [PK_QuoteRM] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC, [NumRM] ASC) ); GO PRINT N'Creating [dbo].[ItemDet]...'; GO CREATE TABLE [dbo].[ItemDet] ( [CodItem] NVARCHAR (50) NOT NULL, [ItemDescr] NVARCHAR (250) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [UnitWeight] DECIMAL (9, 3) NOT NULL, [CodItemGroup] NVARCHAR (50) NOT NULL, [Class01] NVARCHAR (50) NOT NULL, [Class02] NVARCHAR (50) NOT NULL, [Class03] NVARCHAR (50) NOT NULL, [Class04] NVARCHAR (50) NOT NULL, [Class05] NVARCHAR (50) NOT NULL, CONSTRAINT [PK_AnagArticoli] PRIMARY KEY CLUSTERED ([CodItem] ASC) ); GO PRINT N'Creating [dbo].[TabDifett]...'; GO CREATE TABLE [dbo].[TabDifett] ( [KeyAMI] NVARCHAR (152) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [TotOUT] INT NULL, [TotIn] INT NULL ); GO PRINT N'Creating [dbo].[TabDifett].[i_TabDifett_ProcessNum_KeyAMI]...'; GO CREATE CLUSTERED INDEX [i_TabDifett_ProcessNum_KeyAMI] ON [dbo].[TabDifett]([ProcessNum] ASC, [KeyAMI] ASC); GO PRINT N'Creating [dbo].[TabDifett].[i_TabDifett_KeyAMI_ProcessNum]...'; GO CREATE NONCLUSTERED INDEX [i_TabDifett_KeyAMI_ProcessNum] ON [dbo].[TabDifett]([KeyAMI] ASC, [ProcessNum] ASC) INCLUDE([TotOUT], [TotIn]); GO PRINT N'Creating [dbo].[Package2]...'; GO CREATE TABLE [dbo].[Package2] ( [CodPackag] NVARCHAR (50) NOT NULL, [TotQta] DECIMAL (18, 3) NOT NULL, [Weight] DECIMAL (18, 6) NOT NULL, [Tare] DECIMAL (18, 6) NOT NULL, [NumImb] DECIMAL (9, 6) NOT NULL, [Durata] DECIMAL (18, 6) NOT NULL, CONSTRAINT [PK_Package2] PRIMARY KEY CLUSTERED ([CodPackag] ASC) ); GO PRINT N'Creating [dbo].[RawMatDet]...'; GO CREATE TABLE [dbo].[RawMatDet] ( [RawMat] NVARCHAR (50) NOT NULL, [ProcCost] DECIMAL (18, 6) NOT NULL, [ProcYield] DECIMAL (9, 6) NOT NULL, [CSR] DECIMAL (9, 6) NOT NULL, [SSR] DECIMAL (9, 6) NULL, [SSVA] DECIMAL (9, 6) NULL, [SSVR] DECIMAL (9, 6) NULL, [ExtraMatCost] DECIMAL (9, 6) NULL, [ExtraServCost] DECIMAL (9, 6) NULL, CONSTRAINT [PK_RawMatDet] PRIMARY KEY CLUSTERED ([RawMat] ASC) ); GO PRINT N'Creating [dbo].[TabImbGrp]...'; GO CREATE TABLE [dbo].[TabImbGrp] ( [CodPackag] NVARCHAR (50) NOT NULL, [NumImb] DECIMAL (9, 6) NOT NULL, [TotOut] DECIMAL (18, 6) NOT NULL, [Durata] DECIMAL (18, 6) NOT NULL, CONSTRAINT [PK_TabImbGrp] PRIMARY KEY CLUSTERED ([CodPackag] ASC) ); GO PRINT N'Creating [ext].[DiesRaw]...'; GO CREATE TABLE [ext].[DiesRaw] ( [CodDies] NVARCHAR (50) NOT NULL, [HoleNum] INT NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [CodDiesGroup] NVARCHAR (50) NOT NULL, [Price] DECIMAL (9, 3) NOT NULL, [ExpLife] DECIMAL (9, 2) NOT NULL, [ActLife] DECIMAL (9, 2) NOT NULL, [Active] INT NOT NULL, CONSTRAINT [PK_DiesDet] PRIMARY KEY CLUSTERED ([CodDies] ASC) ); GO PRINT N'Creating [ext].[TranspCostRaw]...'; GO CREATE TABLE [ext].[TranspCostRaw] ( [TranspZone] NVARCHAR (50) NOT NULL, [TranspCost] DECIMAL (9, 6) NOT NULL, CONSTRAINT [PK_TranspCostDet_1] PRIMARY KEY CLUSTERED ([TranspZone] ASC) ); GO PRINT N'Creating [ext].[ClientsRaw]...'; GO CREATE TABLE [ext].[ClientsRaw] ( [CodClient] NVARCHAR (50) NOT NULL, [ClientName] NVARCHAR (250) NOT NULL, [CodAg] NVARCHAR (50) NOT NULL, [ZipCode] NVARCHAR (50) NOT NULL, [City] NVARCHAR (50) NOT NULL, [State] NVARCHAR (50) NOT NULL, [Nation] NVARCHAR (50) NOT NULL, [TranspZone] NVARCHAR (50) NOT NULL, CONSTRAINT [PK_ClientiRaw] PRIMARY KEY CLUSTERED ([CodClient] ASC) ); GO PRINT N'Creating [ext].[ProductionLogRaw]...'; GO CREATE TABLE [ext].[ProductionLogRaw] ( [EventStart] DATETIME NOT NULL, [EventEnd] DATETIME NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [NrPos] NVARCHAR (50) NOT NULL, [CodDies] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [OrderNum] NVARCHAR (50) NOT NULL, [BatchNum] NVARCHAR (50) NOT NULL, [ProcessType] NVARCHAR (50) NOT NULL, [EventType] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [QtyIN] DECIMAL (18, 4) NOT NULL, [QtyOUT] DECIMAL (18, 4) NOT NULL, [QtyEXT] DECIMAL (18, 4) NOT NULL, [NumIN] INT NOT NULL, [NumOUT] INT NOT NULL, [QuotaPlant] DECIMAL (9, 4) NOT NULL, [QuotaMan] DECIMAL (9, 4) NOT NULL, [Tags] NVARCHAR (250) NOT NULL, [okPr] BIT NOT NULL, [okQM] BIT NOT NULL, [okSc] BIT NOT NULL, [okDi] BIT NOT NULL, CONSTRAINT [PK_ProductionLogRaw] PRIMARY KEY CLUSTERED ([EventStart] ASC, [EventEnd] ASC, [CodPlant] ASC, [ProcessNum] ASC, [NrPos] ASC, [CodDies] ASC) ); GO PRINT N'Creating [ext].[ProductionLogRaw_KO]...'; GO CREATE TABLE [ext].[ProductionLogRaw_KO] ( [EventStart] DATETIME NOT NULL, [EventEnd] DATETIME NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [NrPos] NVARCHAR (50) NOT NULL, [CodDies] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [OrderNum] NVARCHAR (50) NOT NULL, [BatchNum] NVARCHAR (50) NOT NULL, [ProcessType] NVARCHAR (50) NOT NULL, [EventType] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [QtyIN] DECIMAL (18, 4) NOT NULL, [QtyOUT] DECIMAL (18, 4) NOT NULL, [QtyEXT] DECIMAL (18, 4) NOT NULL, [NumIN] INT NOT NULL, [NumOUT] INT NOT NULL, [QuotaPlant] DECIMAL (9, 4) NOT NULL, [QuotaMan] DECIMAL (9, 4) NOT NULL, [Tags] NVARCHAR (250) NOT NULL, [okPr] BIT NOT NULL, [okQM] BIT NOT NULL, [okSc] BIT NOT NULL, [okDi] BIT NOT NULL, [ImportDateExt] DATETIME NULL, CONSTRAINT [PK_ProductionLogRaw_KO] PRIMARY KEY CLUSTERED ([EventStart] ASC, [EventEnd] ASC, [CodPlant] ASC, [ProcessNum] ASC, [NrPos] ASC, [CodDies] ASC) ); GO PRINT N'Creating [ext].[ItemsRaw]...'; GO CREATE TABLE [ext].[ItemsRaw] ( [CodItem] NVARCHAR (50) NOT NULL, [ItemDescr] NVARCHAR (250) NOT NULL, [UnitWeight] DECIMAL (9, 3) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [CodItemGroup] NVARCHAR (50) NOT NULL, [Class01] NVARCHAR (50) NOT NULL, [Class02] NVARCHAR (50) NOT NULL, [Class03] NVARCHAR (50) NOT NULL, [Class04] NVARCHAR (50) NOT NULL, [Class05] NVARCHAR (50) NOT NULL, CONSTRAINT [PK_ArticoliRaw] PRIMARY KEY CLUSTERED ([CodItem] ASC) ); GO PRINT N'Creating [ext].[PackagRaw]...'; GO CREATE TABLE [ext].[PackagRaw] ( [CodPackag] NVARCHAR (50) NOT NULL, [PackagDesc] NVARCHAR (250) NOT NULL, [RMCost] DECIMAL (9, 3) NOT NULL, [RMWeight] DECIMAL (9, 4) NOT NULL, [Tare] DECIMAL (9, 4) NOT NULL, [FullWeight] DECIMAL (9, 4) NOT NULL, CONSTRAINT [PK_PackagDet] PRIMARY KEY CLUSTERED ([CodPackag] ASC) ); GO PRINT N'Creating [ext].[DiesGroupRaw]...'; GO CREATE TABLE [ext].[DiesGroupRaw] ( [CodDiesGroup] NVARCHAR (50) NOT NULL, [Price] DECIMAL (9, 3) NOT NULL, [QtyTot] INT NOT NULL, [QtyEOL] INT NOT NULL, [ExpLife] DECIMAL (9, 3) NOT NULL, [EOLLife] DECIMAL (9, 3) NOT NULL, CONSTRAINT [PK_DiesGroupRaw] PRIMARY KEY CLUSTERED ([CodDiesGroup] ASC) ); GO PRINT N'Creating [tmp].[ProductionLogRaw_old]...'; GO CREATE TABLE [tmp].[ProductionLogRaw_old] ( [EventStart] NVARCHAR (50) NOT NULL, [EventEnd] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [NrPos] NVARCHAR (50) NOT NULL, [CodDies] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [OrderNum] NVARCHAR (50) NOT NULL, [BatchNum] NVARCHAR (50) NOT NULL, [ProcessType] NVARCHAR (50) NOT NULL, [EventType] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [QtyIN] NVARCHAR (50) NOT NULL, [QtyOUT] NVARCHAR (50) NOT NULL, [QtyEXT] NVARCHAR (50) NOT NULL, [NumIN] NVARCHAR (50) NOT NULL, [NumOUT] NVARCHAR (50) NOT NULL, [QuotaPlant] NVARCHAR (50) NOT NULL, [QuotaMan] NVARCHAR (50) NOT NULL, [Tags] NVARCHAR (250) NOT NULL ); GO PRINT N'Creating [tmp].[DiesRaw]...'; GO CREATE TABLE [tmp].[DiesRaw] ( [CodDies] NVARCHAR (50) NOT NULL, [HoleNum] NVARCHAR (50) NOT NULL, [CodItem] NVARCHAR (50) NOT NULL, [CodDiesGroup] NVARCHAR (50) NOT NULL, [Price] NVARCHAR (50) NOT NULL, [ExpLife] NVARCHAR (50) NOT NULL, [ActLife] NVARCHAR (50) NOT NULL, [Active] NVARCHAR (50) NOT NULL ); GO PRINT N'Creating [tmp].[ProductionLogRaw_KO]...'; GO CREATE TABLE [tmp].[ProductionLogRaw_KO] ( [EventStart] NVARCHAR (50) NOT NULL, [EventEnd] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [NrPos] NVARCHAR (50) NOT NULL, [CodDies] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [OrderNum] NVARCHAR (50) NOT NULL, [BatchNum] NVARCHAR (50) NOT NULL, [ProcessType] NVARCHAR (50) NOT NULL, [EventType] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [QtyIN] NVARCHAR (50) NOT NULL, [QtyOUT] NVARCHAR (50) NOT NULL, [QtyEXT] NVARCHAR (50) NOT NULL, [NumIN] NVARCHAR (50) NOT NULL, [NumOUT] NVARCHAR (50) NOT NULL, [QuotaPlant] NVARCHAR (50) NOT NULL, [QuotaMan] NVARCHAR (50) NOT NULL, [Tags] NVARCHAR (250) NOT NULL, [okPr] BIT NOT NULL, [okQM] BIT NOT NULL, [okSc] BIT NOT NULL, [okDi] BIT NOT NULL, [ImportDate] DATETIME NULL ); GO PRINT N'Creating [tmp].[ClientsRaw]...'; GO CREATE TABLE [tmp].[ClientsRaw] ( [CodClient] NVARCHAR (50) NOT NULL, [ClientName] NVARCHAR (250) NOT NULL, [CodAg] NVARCHAR (50) NOT NULL, [ZipCode] NVARCHAR (50) NOT NULL, [City] NVARCHAR (50) NOT NULL, [State] NVARCHAR (50) NOT NULL, [Nation] NVARCHAR (50) NOT NULL, [TranspZone] NVARCHAR (50) NOT NULL ); GO PRINT N'Creating [tmp].[ItemsRaw]...'; GO CREATE TABLE [tmp].[ItemsRaw] ( [CodItem] NVARCHAR (50) NOT NULL, [ItemDescr] NVARCHAR (250) NOT NULL, [UnitWeight] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [CodItemGroup] NVARCHAR (50) NOT NULL, [Class01] NVARCHAR (50) NOT NULL, [Class02] NVARCHAR (50) NOT NULL, [Class03] NVARCHAR (50) NOT NULL, [Class04] NVARCHAR (50) NOT NULL, [Class05] NVARCHAR (50) NOT NULL ); GO PRINT N'Creating [tmp].[TranspCostRaw]...'; GO CREATE TABLE [tmp].[TranspCostRaw] ( [TranspZone] NVARCHAR (50) NOT NULL, [TranspCost] NVARCHAR (50) NOT NULL ); GO PRINT N'Creating [tmp].[DiesGroupRaw]...'; GO CREATE TABLE [tmp].[DiesGroupRaw] ( [CodDiesGroup] NVARCHAR (50) NOT NULL, [Price] NVARCHAR (50) NOT NULL, [QtyTot] NVARCHAR (50) NOT NULL, [QtyEOL] NVARCHAR (50) NOT NULL, [ExpLife] NVARCHAR (50) NOT NULL, [EOLLife] NVARCHAR (50) NOT NULL ); GO PRINT N'Creating [tmp].[ExcludeCondFilter]...'; GO CREATE TABLE [tmp].[ExcludeCondFilter] ( [TableName] NVARCHAR (50) NOT NULL, [FieldName] NVARCHAR (50) NOT NULL, [WhereCond] NVARCHAR (MAX) NULL, CONSTRAINT [PK_ExtFieldsFilter] PRIMARY KEY CLUSTERED ([TableName] ASC, [FieldName] ASC) ); GO PRINT N'Creating [tmp].[ProductionLogRaw]...'; GO CREATE TABLE [tmp].[ProductionLogRaw] ( [EventStart] NVARCHAR (50) NOT NULL, [EventEnd] NVARCHAR (50) NOT NULL, [CodPlant] NVARCHAR (50) NOT NULL, [ProcessNum] NVARCHAR (50) NOT NULL, [NrPos] NVARCHAR (50) NOT NULL, [CodDies] NVARCHAR (50) NOT NULL, [CodClient] NVARCHAR (50) NOT NULL, [OrderNum] NVARCHAR (50) NOT NULL, [BatchNum] NVARCHAR (50) NOT NULL, [ProcessType] NVARCHAR (50) NOT NULL, [EventType] NVARCHAR (50) NOT NULL, [RawMat] NVARCHAR (50) NOT NULL, [CodPackag] NVARCHAR (50) NOT NULL, [QtyIN] NVARCHAR (50) NOT NULL, [QtyOUT] NVARCHAR (50) NOT NULL, [QtyEXT] NVARCHAR (50) NOT NULL, [NumIN] NVARCHAR (50) NOT NULL, [NumOUT] NVARCHAR (50) NOT NULL, [QuotaPlant] NVARCHAR (50) NOT NULL, [QuotaMan] NVARCHAR (50) NOT NULL, [Tags] NVARCHAR (250) NOT NULL, [okPr] BIT NOT NULL, [okQM] BIT NOT NULL, [okSc] BIT NOT NULL, [okDi] BIT NOT NULL ); GO PRINT N'Creating [tmp].[PackagRaw]...'; GO CREATE TABLE [tmp].[PackagRaw] ( [CodPackag] NVARCHAR (50) NOT NULL, [PackagDesc] NVARCHAR (250) NOT NULL, [RMCost] NVARCHAR (50) NOT NULL, [RMWeight] NVARCHAR (50) NOT NULL, [Tare] NVARCHAR (50) NOT NULL, [FullWeight] NVARCHAR (50) NOT NULL ); GO PRINT N'Creating DF_QuoteParam_QuoteType...'; GO ALTER TABLE [dbo].[QuoteParam] ADD CONSTRAINT [DF_QuoteParam_QuoteType] DEFAULT ('Q') FOR [QuoteType]; GO PRINT N'Creating DF_QuoteParam_QuoteRev...'; GO ALTER TABLE [dbo].[QuoteParam] ADD CONSTRAINT [DF_QuoteParam_QuoteRev] DEFAULT ((0)) FOR [QuoteRev]; GO PRINT N'Creating DF_QuoteParam_ProcessNum...'; GO ALTER TABLE [dbo].[QuoteParam] ADD CONSTRAINT [DF_QuoteParam_ProcessNum] DEFAULT ((0)) FOR [ProcessNum]; GO PRINT N'Creating DF_QuoteParam_Parameter...'; GO ALTER TABLE [dbo].[QuoteParam] ADD CONSTRAINT [DF_QuoteParam_Parameter] DEFAULT ('') FOR [Parameter]; GO PRINT N'Creating DF_QuoteFull_Q_PriceOff...'; GO ALTER TABLE [dbo].[QuoteFull_Q] ADD CONSTRAINT [DF_QuoteFull_Q_PriceOff] DEFAULT ((0)) FOR [PriceOff]; GO PRINT N'Creating DF_QuoteExtra_QuoteType...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_QuoteType] DEFAULT ('Q') FOR [QuoteType]; GO PRINT N'Creating DF_QuoteExtra_QuoteRev...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_QuoteRev] DEFAULT ((0)) FOR [QuoteRev]; GO PRINT N'Creating DF_QuoteExtra_ResType...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_ResType] DEFAULT ((0)) FOR [ProcessNum]; GO PRINT N'Creating DF_QuoteExtra_Class01...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_Class01] DEFAULT ('') FOR [Class01]; GO PRINT N'Creating DF_QuoteExtra_Class02...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_Class02] DEFAULT ('') FOR [Class02]; GO PRINT N'Creating DF_QuoteExtra_Class03...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_Class03] DEFAULT ('') FOR [Class03]; GO PRINT N'Creating DF_QuoteExtra_Class04...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_Class04] DEFAULT ('') FOR [Class04]; GO PRINT N'Creating DF_QuoteExtra_Class05...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_Class05] DEFAULT ('') FOR [Class05]; GO PRINT N'Creating DF_QuoteExtra_TotQty...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_TotQty] DEFAULT ((1)) FOR [TotQty]; GO PRINT N'Creating DF_QuoteExtra_TotCost...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_TotCost] DEFAULT ((0)) FOR [TotCost]; GO PRINT N'Creating DF_QuoteExtra_Quota...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteExtra_Quota] DEFAULT ((1)) FOR [Quota]; GO PRINT N'Creating DF_QuoteOC_valid...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [DF_QuoteOC_valid] DEFAULT ((1)) FOR [valid]; GO PRINT N'Creating DF_QuoteWorkInt_QuoteType...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_QuoteType] DEFAULT ('Q') FOR [QuoteType]; GO PRINT N'Creating DF_QuoteWorkInt_QuoteRev...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_QuoteRev] DEFAULT ((0)) FOR [QuoteRev]; GO PRINT N'Creating DF_QuoteWorkInt_WorkType...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_WorkType] DEFAULT ((0)) FOR [ProcessNum]; GO PRINT N'Creating DF_QuoteWorkInt_Prod_LUK...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_Prod_LUK] DEFAULT ('') FOR [Class01]; GO PRINT N'Creating DF_QuoteWorkInt_Class011...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_Class011] DEFAULT ('') FOR [Class02]; GO PRINT N'Creating DF_QuoteWorkInt_Class021...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_Class021] DEFAULT ('') FOR [Class03]; GO PRINT N'Creating DF_QuoteWorkInt_Class031...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_Class031] DEFAULT ('') FOR [Class04]; GO PRINT N'Creating DF_QuoteWorkInt_Class032...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_Class032] DEFAULT ('') FOR [Class05]; GO PRINT N'Creating DF_QuoteWorkInt_NetProd...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_NetProd] DEFAULT ((0)) FOR [NetProd]; GO PRINT N'Creating DF_QuoteWorkInt_TSR...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_TSR] DEFAULT ((0)) FOR [WSR]; GO PRINT N'Creating DF_QuoteWorkInt_CSR...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_CSR] DEFAULT ((0)) FOR [MSR]; GO PRINT N'Creating DF_QuoteWorkInt_CSR1...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_CSR1] DEFAULT ((0)) FOR [DSR]; GO PRINT N'Creating DF_QuoteWorkInt_RUFG...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_RUFG] DEFAULT ((0)) FOR [FC4UG]; GO PRINT N'Creating DF_QuoteWorkInt_RCFG...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_RCFG] DEFAULT ((0)) FOR [VC4UG]; GO PRINT N'Creating DF_QuoteWorkInt_VC4UG1...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_VC4UG1] DEFAULT ((0)) FOR [OH4UG]; GO PRINT N'Creating DF_QuoteWorkInt_VC4UG1_1...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_VC4UG1_1] DEFAULT ((0)) FOR [SC4UG]; GO PRINT N'Creating DF_QuoteWorkInt_valid...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [DF_QuoteWorkInt_valid] DEFAULT ((1)) FOR [valid]; GO PRINT N'Creating DF_QuoteWorkExt_QuoteType...'; GO ALTER TABLE [dbo].[QuoteWorkExt] ADD CONSTRAINT [DF_QuoteWorkExt_QuoteType] DEFAULT ('Q') FOR [QuoteType]; GO PRINT N'Creating DF_QuoteWorkExt_QuoteRev...'; GO ALTER TABLE [dbo].[QuoteWorkExt] ADD CONSTRAINT [DF_QuoteWorkExt_QuoteRev] DEFAULT ((0)) FOR [QuoteRev]; GO PRINT N'Creating DF_QuoteWorkExt_FC4UG...'; GO ALTER TABLE [dbo].[QuoteWorkExt] ADD CONSTRAINT [DF_QuoteWorkExt_FC4UG] DEFAULT ((0)) FOR [EWC4UG]; GO PRINT N'Creating DF_QuoteWorkExt_EWC4UG1...'; GO ALTER TABLE [dbo].[QuoteWorkExt] ADD CONSTRAINT [DF_QuoteWorkExt_EWC4UG1] DEFAULT ((0)) FOR [UM]; GO PRINT N'Creating DF_QuoteWorkExt_valid...'; GO ALTER TABLE [dbo].[QuoteWorkExt] ADD CONSTRAINT [DF_QuoteWorkExt_valid] DEFAULT ((1)) FOR [valid]; GO PRINT N'Creating DF_QuoteList_QuoteType...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_QuoteType] DEFAULT ('Q') FOR [QuoteType]; GO PRINT N'Creating DF_QuoteList_QuoteRev...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_QuoteRev] DEFAULT ((0)) FOR [QuoteRev]; GO PRINT N'Creating DF_QuoteList_CodItem...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_CodItem] DEFAULT ('') FOR [CodItem]; GO PRINT N'Creating DF_QuoteList_CodItemGroup...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_CodItemGroup] DEFAULT ('') FOR [CodItemGroup]; GO PRINT N'Creating DF_QuoteList_UnitWeight...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_UnitWeight] DEFAULT ((0)) FOR [UnitWeight]; GO PRINT N'Creating DF_QuoteList_BathQty...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_BathQty] DEFAULT ((0)) FOR [BatchQty]; GO PRINT N'Creating DF_QuoteList_Note...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_Note] DEFAULT ('') FOR [Note]; GO PRINT N'Creating DF_QuoteList_OrdPrice1...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_OrdPrice1] DEFAULT ((0)) FOR [PriceOff]; GO PRINT N'Creating DF_QuoteList_OrdNum...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_OrdNum] DEFAULT ((0)) FOR [OrdNum]; GO PRINT N'Creating DF_QuoteList_OrdRow...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_OrdRow] DEFAULT ((0)) FOR [OrdRow]; GO PRINT N'Creating DF_QuoteList_PriceOff1...'; GO ALTER TABLE [dbo].[QuoteList] ADD CONSTRAINT [DF_QuoteList_PriceOff1] DEFAULT ((0)) FOR [OrdPrice]; GO PRINT N'Creating DF_Package2Item_TotQty...'; GO ALTER TABLE [dbo].[Package2Item] ADD CONSTRAINT [DF_Package2Item_TotQty] DEFAULT ((0)) FOR [TotQta]; GO PRINT N'Creating DF_Package2Item_Weight...'; GO ALTER TABLE [dbo].[Package2Item] ADD CONSTRAINT [DF_Package2Item_Weight] DEFAULT ((0)) FOR [Weight]; GO PRINT N'Creating DF_Package2Item_Tare...'; GO ALTER TABLE [dbo].[Package2Item] ADD CONSTRAINT [DF_Package2Item_Tare] DEFAULT ((0)) FOR [Tare]; GO PRINT N'Creating DF_Package2Item_NumImb...'; GO ALTER TABLE [dbo].[Package2Item] ADD CONSTRAINT [DF_Package2Item_NumImb] DEFAULT ((0)) FOR [NumImb]; GO PRINT N'Creating DF_Package2Item_Durata...'; GO ALTER TABLE [dbo].[Package2Item] ADD CONSTRAINT [DF_Package2Item_Durata] DEFAULT ((0)) FOR [Durata]; GO PRINT N'Creating DF_ProductionLog_NrPos...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [DF_ProductionLog_NrPos] DEFAULT ('') FOR [NrPos]; GO PRINT N'Creating DF_ProductionLog_okPr...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [DF_ProductionLog_okPr] DEFAULT ((1)) FOR [okPr]; GO PRINT N'Creating DF_ProductionLog_okQM...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [DF_ProductionLog_okQM] DEFAULT ((1)) FOR [okQM]; GO PRINT N'Creating DF_ProductionLog_okSc...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [DF_ProductionLog_okSc] DEFAULT ((1)) FOR [okSc]; GO PRINT N'Creating DF_ProductionLog_okDi...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [DF_ProductionLog_okDi] DEFAULT ((1)) FOR [okDi]; GO PRINT N'Creating DF_Package2ItemClient_TotQty...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [DF_Package2ItemClient_TotQty] DEFAULT ((0)) FOR [TotQta]; GO PRINT N'Creating DF_Package2ItemClient_Weight...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [DF_Package2ItemClient_Weight] DEFAULT ((0)) FOR [Weight]; GO PRINT N'Creating DF_Package2ItemClient_Tare...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [DF_Package2ItemClient_Tare] DEFAULT ((0)) FOR [Tare]; GO PRINT N'Creating DF_Package2ItemClient_NumImb...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [DF_Package2ItemClient_NumImb] DEFAULT ((0)) FOR [NumImb]; GO PRINT N'Creating DF_Package2ItemClient_Durata...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [DF_Package2ItemClient_Durata] DEFAULT ((0)) FOR [Durata]; GO PRINT N'Creating DF_TabImbArt_NumImb...'; GO ALTER TABLE [dbo].[TabImbArt] ADD CONSTRAINT [DF_TabImbArt_NumImb] DEFAULT ((0)) FOR [NumImb]; GO PRINT N'Creating DF_TabImbArt_TotOut...'; GO ALTER TABLE [dbo].[TabImbArt] ADD CONSTRAINT [DF_TabImbArt_TotOut] DEFAULT ((0)) FOR [TotOut]; GO PRINT N'Creating DF_TabImbArt_Durata...'; GO ALTER TABLE [dbo].[TabImbArt] ADD CONSTRAINT [DF_TabImbArt_Durata] DEFAULT ((0)) FOR [Durata]; GO PRINT N'Creating DF_PlantsDet_OH...'; GO ALTER TABLE [dbo].[PlantsDet] ADD CONSTRAINT [DF_PlantsDet_OH] DEFAULT ((1)) FOR [Charge]; GO PRINT N'Creating DF_RevHistory_RevType...'; GO ALTER TABLE [dbo].[RevHistory] ADD CONSTRAINT [DF_RevHistory_RevType] DEFAULT (N'P') FOR [RevType]; GO PRINT N'Creating DF_RevHistory_RevNum...'; GO ALTER TABLE [dbo].[RevHistory] ADD CONSTRAINT [DF_RevHistory_RevNum] DEFAULT ((0)) FOR [RevNum]; GO PRINT N'Creating DF_RevHistory_Description...'; GO ALTER TABLE [dbo].[RevHistory] ADD CONSTRAINT [DF_RevHistory_Description] DEFAULT ('') FOR [Description]; GO PRINT N'Creating DF_DiesGroupDet_ExpLife...'; GO ALTER TABLE [dbo].[DiesGroupDet] ADD CONSTRAINT [DF_DiesGroupDet_ExpLife] DEFAULT ((1)) FOR [ExpLife]; GO PRINT N'Creating DF_DiesGroupDet_EOLLife...'; GO ALTER TABLE [dbo].[DiesGroupDet] ADD CONSTRAINT [DF_DiesGroupDet_EOLLife] DEFAULT ((1)) FOR [EOLLife]; GO PRINT N'Creating DF_Cost2Plant_VC...'; GO ALTER TABLE [dbo].[Cost2Plant] ADD CONSTRAINT [DF_Cost2Plant_VC] DEFAULT ((0)) FOR [VC]; GO PRINT N'Creating DF_Cost2Plant_OH...'; GO ALTER TABLE [dbo].[Cost2Plant] ADD CONSTRAINT [DF_Cost2Plant_OH] DEFAULT ((0)) FOR [OH]; GO PRINT N'Creating DF_Cost2Plant_OH1...'; GO ALTER TABLE [dbo].[Cost2Plant] ADD CONSTRAINT [DF_Cost2Plant_OH1] DEFAULT ((0)) FOR [SC]; GO PRINT N'Creating DF_Cost2Plant_QuotaPlantStd...'; GO ALTER TABLE [dbo].[Cost2Plant] ADD CONSTRAINT [DF_Cost2Plant_QuotaPlantStd] DEFAULT ((0)) FOR [QuotaPlantStd]; GO PRINT N'Creating DF_Cost2Plant_QuotaManStd...'; GO ALTER TABLE [dbo].[Cost2Plant] ADD CONSTRAINT [DF_Cost2Plant_QuotaManStd] DEFAULT ((0)) FOR [QuotaManStd]; GO PRINT N'Creating DF_ClientDet_Class01...'; GO ALTER TABLE [dbo].[ClientDet] ADD CONSTRAINT [DF_ClientDet_Class01] DEFAULT ('') FOR [TranspZone]; GO PRINT N'Creating DF_AgentsDet_QuotaPerc...'; GO ALTER TABLE [dbo].[AgentsDet] ADD CONSTRAINT [DF_AgentsDet_QuotaPerc] DEFAULT ((0)) FOR [QuotaProvvAg]; GO PRINT N'Creating DF_Utilities_unitCost...'; GO ALTER TABLE [dbo].[Utilities] ADD CONSTRAINT [DF_Utilities_unitCost] DEFAULT ((0)) FOR [UnitCost]; GO PRINT N'Creating DF_DiesDet_Price...'; GO ALTER TABLE [dbo].[DiesDet] ADD CONSTRAINT [DF_DiesDet_Price] DEFAULT ((0)) FOR [Price]; GO PRINT N'Creating DF_DiesDet_Price1...'; GO ALTER TABLE [dbo].[DiesDet] ADD CONSTRAINT [DF_DiesDet_Price1] DEFAULT ((0)) FOR [TestCost]; GO PRINT N'Creating DF_Incoterms_HasTC...'; GO ALTER TABLE [dbo].[Incoterms] ADD CONSTRAINT [DF_Incoterms_HasTC] DEFAULT ((0)) FOR [HasTC]; GO PRINT N'Creating DF_Table_1_ClassCli01...'; GO ALTER TABLE [dbo].[TranspCostDet] ADD CONSTRAINT [DF_Table_1_ClassCli01] DEFAULT ('') FOR [TranspZone]; GO PRINT N'Creating DF_QuoteRM_QuoteType...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [DF_QuoteRM_QuoteType] DEFAULT ('Q') FOR [QuoteType]; GO PRINT N'Creating DF_QuoteRM_QuoteRev...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [DF_QuoteRM_QuoteRev] DEFAULT ((0)) FOR [QuoteRev]; GO PRINT N'Creating DF_QuoteRM_RawMatCost...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [DF_QuoteRM_RawMatCost] DEFAULT ((0)) FOR [RawMatCost]; GO PRINT N'Creating DF_QuoteRM_RawMatExtraCost...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [DF_QuoteRM_RawMatExtraCost] DEFAULT ((0)) FOR [RawMatExtraCost]; GO PRINT N'Creating DF_QuoteRM_CodPackag...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [DF_QuoteRM_CodPackag] DEFAULT ((0)) FOR [CodPackag]; GO PRINT N'Creating DF_QuoteRM_ConvRatio...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [DF_QuoteRM_ConvRatio] DEFAULT ((1)) FOR [FCR]; GO PRINT N'Creating DF_QuoteRM_valid...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [DF_QuoteRM_valid] DEFAULT ((1)) FOR [valid]; GO PRINT N'Creating DF_ItemDet_Class01...'; GO ALTER TABLE [dbo].[ItemDet] ADD CONSTRAINT [DF_ItemDet_Class01] DEFAULT ('') FOR [Class01]; GO PRINT N'Creating DF_ItemDet_Class02...'; GO ALTER TABLE [dbo].[ItemDet] ADD CONSTRAINT [DF_ItemDet_Class02] DEFAULT ('') FOR [Class02]; GO PRINT N'Creating DF_ItemDet_Class03...'; GO ALTER TABLE [dbo].[ItemDet] ADD CONSTRAINT [DF_ItemDet_Class03] DEFAULT ('') FOR [Class03]; GO PRINT N'Creating DF_ItemDet_Class04...'; GO ALTER TABLE [dbo].[ItemDet] ADD CONSTRAINT [DF_ItemDet_Class04] DEFAULT ('') FOR [Class04]; GO PRINT N'Creating DF_ItemDet_Class05...'; GO ALTER TABLE [dbo].[ItemDet] ADD CONSTRAINT [DF_ItemDet_Class05] DEFAULT ('') FOR [Class05]; GO PRINT N'Creating DF_Package2_TotQty...'; GO ALTER TABLE [dbo].[Package2] ADD CONSTRAINT [DF_Package2_TotQty] DEFAULT ((0)) FOR [TotQta]; GO PRINT N'Creating DF_Package2_Weight...'; GO ALTER TABLE [dbo].[Package2] ADD CONSTRAINT [DF_Package2_Weight] DEFAULT ((0)) FOR [Weight]; GO PRINT N'Creating DF_Package2_Tare...'; GO ALTER TABLE [dbo].[Package2] ADD CONSTRAINT [DF_Package2_Tare] DEFAULT ((0)) FOR [Tare]; GO PRINT N'Creating DF_Package2_NumImb...'; GO ALTER TABLE [dbo].[Package2] ADD CONSTRAINT [DF_Package2_NumImb] DEFAULT ((0)) FOR [NumImb]; GO PRINT N'Creating DF_Package2_Durata...'; GO ALTER TABLE [dbo].[Package2] ADD CONSTRAINT [DF_Package2_Durata] DEFAULT ((0)) FOR [Durata]; GO PRINT N'Creating DF_RawMatDet_ProcCost...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_ProcCost] DEFAULT ((0)) FOR [ProcCost]; GO PRINT N'Creating DF_RawMatDet_ProcYield...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_ProcYield] DEFAULT ((0)) FOR [ProcYield]; GO PRINT N'Creating DF_RawMatDet_CSR...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_CSR] DEFAULT ((0)) FOR [CSR]; GO PRINT N'Creating DF_RawMatDet_SSR...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_SSR] DEFAULT ((0)) FOR [SSR]; GO PRINT N'Creating DF_RawMatDet_SSVA...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_SSVA] DEFAULT ((0)) FOR [SSVA]; GO PRINT N'Creating DF_RawMatDet_SSVR...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_SSVR] DEFAULT ((0)) FOR [SSVR]; GO PRINT N'Creating DF_RawMatDet_ExtraMatCost...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_ExtraMatCost] DEFAULT ((0)) FOR [ExtraMatCost]; GO PRINT N'Creating DF_RawMatDet_ExtraServCost...'; GO ALTER TABLE [dbo].[RawMatDet] ADD CONSTRAINT [DF_RawMatDet_ExtraServCost] DEFAULT ((0)) FOR [ExtraServCost]; GO PRINT N'Creating DF_TabImbGrp_NumImb...'; GO ALTER TABLE [dbo].[TabImbGrp] ADD CONSTRAINT [DF_TabImbGrp_NumImb] DEFAULT ((0)) FOR [NumImb]; GO PRINT N'Creating DF_TabImbGrp_TotOut...'; GO ALTER TABLE [dbo].[TabImbGrp] ADD CONSTRAINT [DF_TabImbGrp_TotOut] DEFAULT ((0)) FOR [TotOut]; GO PRINT N'Creating DF_TabImbGrp_Durata...'; GO ALTER TABLE [dbo].[TabImbGrp] ADD CONSTRAINT [DF_TabImbGrp_Durata] DEFAULT ((0)) FOR [Durata]; GO PRINT N'Creating DF_TraspZoneExt...'; GO ALTER TABLE [ext].[TranspCostRaw] ADD CONSTRAINT [DF_TraspZoneExt] DEFAULT ('') FOR [TranspZone]; GO PRINT N'Creating DF_ClientsRaw_ClassZona...'; GO ALTER TABLE [ext].[ClientsRaw] ADD CONSTRAINT [DF_ClientsRaw_ClassZona] DEFAULT ('') FOR [TranspZone]; GO PRINT N'Creating DF_ProductionLogRaw_NrPos_1...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_NrPos_1] DEFAULT ('') FOR [NrPos]; GO PRINT N'Creating DF_ProductionLogRaw_CodDies...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_CodDies] DEFAULT ('') FOR [CodDies]; GO PRINT N'Creating DF_ProductionLogRaw_CodClient...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_CodClient] DEFAULT ('') FOR [CodClient]; GO PRINT N'Creating DF_ProductionLogRaw_OrderNum...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_OrderNum] DEFAULT ('') FOR [OrderNum]; GO PRINT N'Creating DF_ProductionLogRaw_BatchNum...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_BatchNum] DEFAULT ('') FOR [BatchNum]; GO PRINT N'Creating DF_ProductionLogRaw_ProcessType...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_ProcessType] DEFAULT ('') FOR [ProcessType]; GO PRINT N'Creating DF_ProductionLogRaw_EventType...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_EventType] DEFAULT ('') FOR [EventType]; GO PRINT N'Creating DF_ProductionLogRaw_RawMat...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_RawMat] DEFAULT ('') FOR [RawMat]; GO PRINT N'Creating DF_ProductionLogRaw_CodPackag...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_CodPackag] DEFAULT ('') FOR [CodPackag]; GO PRINT N'Creating DF_ProductionLogRaw_QtyIN...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_QtyIN] DEFAULT ((0)) FOR [QtyIN]; GO PRINT N'Creating DF_ProductionLogRaw_QtyOUT...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_QtyOUT] DEFAULT ((0)) FOR [QtyOUT]; GO PRINT N'Creating DF_ProductionLogRaw_QtyEXT...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_QtyEXT] DEFAULT ((0)) FOR [QtyEXT]; GO PRINT N'Creating DF_ProductionLogRaw_NumIN...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_NumIN] DEFAULT ((0)) FOR [NumIN]; GO PRINT N'Creating DF_ProductionLogRaw_NumOUT...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_NumOUT] DEFAULT ((0)) FOR [NumOUT]; GO PRINT N'Creating DF_ProductionLogRaw_QuotaPlant...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_QuotaPlant] DEFAULT ((0)) FOR [QuotaPlant]; GO PRINT N'Creating DF_ProductionLogRaw_QuotaMan...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_QuotaMan] DEFAULT ((0)) FOR [QuotaMan]; GO PRINT N'Creating DF_ProductionLogRaw_Tags...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_Tags] DEFAULT ('') FOR [Tags]; GO PRINT N'Creating DF_ProductionLogRaw_okPr_1...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okPr_1] DEFAULT ((1)) FOR [okPr]; GO PRINT N'Creating DF_ProductionLogRaw_okQM_1...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okQM_1] DEFAULT ((1)) FOR [okQM]; GO PRINT N'Creating DF_ProductionLogRaw_okSc_1...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okSc_1] DEFAULT ((1)) FOR [okSc]; GO PRINT N'Creating DF_ProductionLogRaw_okDi_1...'; GO ALTER TABLE [ext].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okDi_1] DEFAULT ((1)) FOR [okDi]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okPr...'; GO ALTER TABLE [ext].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okPr] DEFAULT ((1)) FOR [okPr]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okQM...'; GO ALTER TABLE [ext].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okQM] DEFAULT ((1)) FOR [okQM]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okSc...'; GO ALTER TABLE [ext].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okSc] DEFAULT ((1)) FOR [okSc]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okDi...'; GO ALTER TABLE [ext].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okDi] DEFAULT ((1)) FOR [okDi]; GO PRINT N'Creating DF_ProductionLogRaw_KO_ImportDateExt...'; GO ALTER TABLE [ext].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_ImportDateExt] DEFAULT (getdate()) FOR [ImportDateExt]; GO PRINT N'Creating DF_ItemsRaw_CodPlant...'; GO ALTER TABLE [ext].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_CodPlant] DEFAULT ('') FOR [CodPlant]; GO PRINT N'Creating DF_ItemsRaw_Class01_1...'; GO ALTER TABLE [ext].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class01_1] DEFAULT ('') FOR [Class01]; GO PRINT N'Creating DF_ItemsRaw_Class02_1...'; GO ALTER TABLE [ext].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class02_1] DEFAULT ('') FOR [Class02]; GO PRINT N'Creating DF_ItemsRaw_Class03_1...'; GO ALTER TABLE [ext].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class03_1] DEFAULT ('') FOR [Class03]; GO PRINT N'Creating DF_ItemsRaw_Class04_1...'; GO ALTER TABLE [ext].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class04_1] DEFAULT ('') FOR [Class04]; GO PRINT N'Creating DF_ItemsRaw_Class05_1...'; GO ALTER TABLE [ext].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class05_1] DEFAULT ('') FOR [Class05]; GO PRINT N'Creating DF_ProductionLogRaw_NrPos_KO...'; GO ALTER TABLE [tmp].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_NrPos_KO] DEFAULT ('') FOR [NrPos]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okPr...'; GO ALTER TABLE [tmp].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okPr] DEFAULT ((1)) FOR [okPr]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okQM...'; GO ALTER TABLE [tmp].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okQM] DEFAULT ((1)) FOR [okQM]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okSc...'; GO ALTER TABLE [tmp].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okSc] DEFAULT ((1)) FOR [okSc]; GO PRINT N'Creating DF_ProductionLogRaw_KO_okDi...'; GO ALTER TABLE [tmp].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_okDi] DEFAULT ((1)) FOR [okDi]; GO PRINT N'Creating DF_ProductionLogRaw_KO_ImportDate...'; GO ALTER TABLE [tmp].[ProductionLogRaw_KO] ADD CONSTRAINT [DF_ProductionLogRaw_KO_ImportDate] DEFAULT (getdate()) FOR [ImportDate]; GO PRINT N'Creating DF_ClientsRaw_TranspZone...'; GO ALTER TABLE [tmp].[ClientsRaw] ADD CONSTRAINT [DF_ClientsRaw_TranspZone] DEFAULT ('') FOR [TranspZone]; GO PRINT N'Creating DF_ItemsRaw_Class01...'; GO ALTER TABLE [tmp].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class01] DEFAULT ('') FOR [Class01]; GO PRINT N'Creating DF_ItemsRaw_Class02...'; GO ALTER TABLE [tmp].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class02] DEFAULT ('') FOR [Class02]; GO PRINT N'Creating DF_ItemsRaw_Class03...'; GO ALTER TABLE [tmp].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class03] DEFAULT ('') FOR [Class03]; GO PRINT N'Creating DF_ItemsRaw_Class04...'; GO ALTER TABLE [tmp].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class04] DEFAULT ('') FOR [Class04]; GO PRINT N'Creating DF_ItemsRaw_Class05...'; GO ALTER TABLE [tmp].[ItemsRaw] ADD CONSTRAINT [DF_ItemsRaw_Class05] DEFAULT ('') FOR [Class05]; GO PRINT N'Creating DF_TraspZoneRaw...'; GO ALTER TABLE [tmp].[TranspCostRaw] ADD CONSTRAINT [DF_TraspZoneRaw] DEFAULT ('') FOR [TranspZone]; GO PRINT N'Creating DF_ProductionLogRaw_NrPos...'; GO ALTER TABLE [tmp].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_NrPos] DEFAULT ('') FOR [NrPos]; GO PRINT N'Creating DF_ProductionLogRaw_okPr...'; GO ALTER TABLE [tmp].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okPr] DEFAULT ((1)) FOR [okPr]; GO PRINT N'Creating DF_ProductionLogRaw_okQM...'; GO ALTER TABLE [tmp].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okQM] DEFAULT ((1)) FOR [okQM]; GO PRINT N'Creating DF_ProductionLogRaw_okSc...'; GO ALTER TABLE [tmp].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okSc] DEFAULT ((1)) FOR [okSc]; GO PRINT N'Creating DF_ProductionLogRaw_okDi...'; GO ALTER TABLE [tmp].[ProductionLogRaw] ADD CONSTRAINT [DF_ProductionLogRaw_okDi] DEFAULT ((1)) FOR [okDi]; GO PRINT N'Creating FK_Vocabolario_Lingue...'; GO ALTER TABLE [dbo].[Vocabolario] ADD CONSTRAINT [FK_Vocabolario_Lingue] FOREIGN KEY ([Lingua]) REFERENCES [dbo].[Lingue] ([Lingua]) ON UPDATE CASCADE; GO PRINT N'Creating FK_QuoteParam_QuoteList...'; GO ALTER TABLE [dbo].[QuoteParam] ADD CONSTRAINT [FK_QuoteParam_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE; GO PRINT N'Creating FK_QuoteExtra_QuoteList...'; GO ALTER TABLE [dbo].[QuoteOC] ADD CONSTRAINT [FK_QuoteExtra_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE; GO PRINT N'Creating FK_QuoteWorkInt_QuoteList...'; GO ALTER TABLE [dbo].[QuoteWorkInt] ADD CONSTRAINT [FK_QuoteWorkInt_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE; GO PRINT N'Creating FK_QuoteWorkExt_QuoteList...'; GO ALTER TABLE [dbo].[QuoteWorkExt] ADD CONSTRAINT [FK_QuoteWorkExt_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE; GO PRINT N'Creating FK_Package2Item_ItemDet...'; GO ALTER TABLE [dbo].[Package2Item] ADD CONSTRAINT [FK_Package2Item_ItemDet] FOREIGN KEY ([CodItem]) REFERENCES [dbo].[ItemDet] ([CodItem]) ON UPDATE CASCADE; GO PRINT N'Creating FK_Package2Item_PackagDet...'; GO ALTER TABLE [dbo].[Package2Item] ADD CONSTRAINT [FK_Package2Item_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE; GO PRINT N'Creating FK_ProductionLog_ClientDet...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [FK_ProductionLog_ClientDet] FOREIGN KEY ([CodClient]) REFERENCES [dbo].[ClientDet] ([CodClient]) ON UPDATE CASCADE; GO PRINT N'Creating FK_ProductionLog_PackagDet...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [FK_ProductionLog_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE; GO PRINT N'Creating FK_ProductionLog_PlantsDet...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [FK_ProductionLog_PlantsDet] FOREIGN KEY ([CodPlant]) REFERENCES [dbo].[PlantsDet] ([CodPlant]) ON UPDATE CASCADE; GO PRINT N'Creating FK_ProductionLog_RawMatDet...'; GO ALTER TABLE [dbo].[ProductionLog] ADD CONSTRAINT [FK_ProductionLog_RawMatDet] FOREIGN KEY ([RawMat]) REFERENCES [dbo].[RawMatDet] ([RawMat]) ON UPDATE CASCADE; GO PRINT N'Creating FK_Package2ItemClient_ClientDet...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [FK_Package2ItemClient_ClientDet] FOREIGN KEY ([CodClient]) REFERENCES [dbo].[ClientDet] ([CodClient]) ON UPDATE CASCADE; GO PRINT N'Creating FK_Package2ItemClient_ItemDet...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [FK_Package2ItemClient_ItemDet] FOREIGN KEY ([CodItem]) REFERENCES [dbo].[ItemDet] ([CodItem]) ON UPDATE CASCADE; GO PRINT N'Creating FK_Package2ItemClient_PackagDet...'; GO ALTER TABLE [dbo].[Package2ItemClient] ADD CONSTRAINT [FK_Package2ItemClient_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE; GO PRINT N'Creating FK_Cost2Plant_PlantsDet...'; GO ALTER TABLE [dbo].[Cost2Plant] ADD CONSTRAINT [FK_Cost2Plant_PlantsDet] FOREIGN KEY ([CodPlant]) REFERENCES [dbo].[PlantsDet] ([CodPlant]) ON UPDATE CASCADE; GO PRINT N'Creating FK_ClientDet_AgentsDet...'; GO ALTER TABLE [dbo].[ClientDet] ADD CONSTRAINT [FK_ClientDet_AgentsDet] FOREIGN KEY ([CodAg]) REFERENCES [dbo].[AgentsDet] ([CodAg]) ON UPDATE CASCADE; GO PRINT N'Creating FK_DiesDet_DiesGroupDet...'; GO ALTER TABLE [dbo].[DiesDet] ADD CONSTRAINT [FK_DiesDet_DiesGroupDet] FOREIGN KEY ([CodDiesGroup]) REFERENCES [dbo].[DiesGroupDet] ([CodDiesGroup]) ON UPDATE CASCADE; GO PRINT N'Creating FK_DiesDet_ItemDet...'; GO ALTER TABLE [dbo].[DiesDet] ADD CONSTRAINT [FK_DiesDet_ItemDet] FOREIGN KEY ([CodItem]) REFERENCES [dbo].[ItemDet] ([CodItem]) ON UPDATE CASCADE; GO PRINT N'Creating FK_QuoteRM_QuoteList...'; GO ALTER TABLE [dbo].[QuoteRM] ADD CONSTRAINT [FK_QuoteRM_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE; GO PRINT N'Creating FK_Package2_PackagDet...'; GO ALTER TABLE [dbo].[Package2] ADD CONSTRAINT [FK_Package2_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE; GO PRINT N'Creating [dbo].[f_getSubstring]...'; GO -- ================================================================ -- Author : Steamware -- Create date: 2017-01-17 -- -- Description: Data una stringa con una serie di valori separati da un separatore ( es. ; ) -- ritorna l'elemento nella posizione richiesta -- -- esempio : SELECT dbo.f_GetSubstring('asda-fff-bbb','-' , 2) -- ================================================================ CREATE FUNCTION [dbo].[f_getSubstring] ( @str_in NVARCHAR(4000), @separator NVARCHAR(4)= '-', @PosizValue INT = 1 ) RETURNS NVARCHAR(4000) AS BEGIN DECLARE @Occurrences INT, @Counter INT, @tmpStr NVARCHAR(4000), @str_out NVARCHAR(4000) IF RIGHT(@str_in, DATALENGTH(@separator)/2 ) <> @separator SET @str_out = @str_in + @separator ; ELSE SET @str_out = @str_in ; -- calcolo il numero di elementi della nella stringa SET @Occurrences = ( (DATALENGTH( REPLACE(@str_out, @separator, @separator+'#')) - DATALENGTH(@str_out)) ) / 2 -- se l'elemento richiesto esiste proseguo altrimenti ritorno NULL IF @Occurrences >= @PosizValue AND @PosizValue <> 0 BEGIN SET @tmpStr = @str_out ; SET @Counter = 1 ; WHILE @Counter <= @PosizValue BEGIN SET @Counter = @Counter + 1 ; SET @str_out = SUBSTRING( @tmpStr, 1, CHARINDEX(@separator,@tmpStr) - 1) ; -- metto via il resto della stringa SET @tmpStr = SUBSTRING( @tmpStr, CHARINDEX(@separator,@tmpStr) + DATALENGTH(@separator)/2, 4000) ; IF DATALENGTH(@tmpStr) = 0 BREAK END -- pulisco da caratteri NON voluti --SET @str_out = REPLACE(@str_out, char(13), '') ; -- carriage return --SET @str_out = REPLACE(@str_out, char(10), '') ; -- line feed --SET @str_out = REPLACE(@str_out, char(9), '') ; -- tab --SET @str_out = LTRIM ( RTRIM (@str_out) ) ; -- blank END ELSE SET @str_out = NULL ; RETURN @str_out END GO PRINT N'Creating [dbo].[f_dtFromRaw]...'; GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2013.11.28 -- Description: Conversione datetime da yyyyMMddHHmmssnn -- ============================================= CREATE FUNCTION f_dtFromRaw ( -- Add the parameters for the function here @origDt nvarchar(50) ) RETURNS datetime AS BEGIN DECLARE @output datetime DECLARE @strDt NVARCHAR(50) SELECT @strDt = LEFT(@origDt, 4) + '-' + SUBSTRING(@origDt, 5,2 ) + '-' + SUBSTRING(@origDt, 7,2 ) + ' ' + SUBSTRING(@origDt, 9,2 ) + ':' + SUBSTRING(@origDt, 11,2 ) + ':' + SUBSTRING(@origDt, 13,2 ) + '.' + SUBSTRING(@origDt, 15,2 ) +'0' SELECT @output = CONVERT(DATETIME, @strDt, 121) RETURN @output END GO PRINT N'Creating [dbo].[f_trim]...'; GO /*************************************** * FUNCTION f_trim * * trim completo: LTRIM(RTRIM(...)) * * Steamware, S.E.L. * mod: 2013.05.10 * ****************************************/ create FUNCTION [dbo].[f_trim] (@string NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN -- Prefix the required number of spaces to bulk up the string and then replace the spaces with the desired character RETURN LTRIM(RTRIM(@string)) END GO PRINT N'Creating [dbo].[f_getCodPackag_OLD]...'; GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2014.01.15 -- Description: Recupera CodPackage dato CodItem e CodClient secondo albero decisionale -- SOSTITUITA da fun Table-value f_getDataCodPackag in QL_Update -- ============================================= CREATE FUNCTION [dbo].[f_getCodPackag_OLD] ( @CodItem NVARCHAR(50), @CodClient NVARCHAR(50) ) RETURNS NVARCHAR(50) AS BEGIN DECLARE @output NVARCHAR(50) DECLARE @trovati INT = 0 -- setup iniziale: imposto a zero... SET @output = '0' SELECT @trovati = COUNT(*) FROM Package2ItemClient WHERE CodClient = @CodClient AND CodItem = @CodItem IF(@trovati > 0) -- primo tentativo: cerco il package dato SIA cliente che ITEM BEGIN SELECT TOP 1 @output = CodPackag FROM Package2ItemClient WHERE CodClient = @CodClient AND CodItem = @CodItem ORDER BY TotQta DESC END ELSE -- secondo tentativo: se non lo trovo cerco per SOLO ITEM BEGIN SELECT TOP 1 @output = CodPackag FROM Package2Item WHERE CodItem = @CodItem ORDER BY TotQta DESC END RETURN @output END GO PRINT N'Creating [dbo].[f_getDataCodPackag]...'; GO -- ============================================= -- Author: Steamware -- Create date: 2014-01-30 -- Description: Ritorna l'imballo e i dati associati -- ============================================= CREATE FUNCTION [dbo].[f_getDataCodPackag] ( @CodItem NVARCHAR(50), @CodClient NVARCHAR(50) ) RETURNS @Table TABLE ( [CodItem] [nvarchar](50) NOT NULL, [CodClient] [nvarchar](50) NOT NULL, [CodPackag] [nvarchar](50) NOT NULL, [TotQta] [decimal](18, 3) NOT NULL, [Weight] [decimal](18, 6) NOT NULL, [Tare] [decimal](18, 6) NOT NULL, [NumImb] [decimal](9, 6) NOT NULL, [Durata] [decimal](18, 6) NOT NULL, [LivPackag] [nvarchar](50) NOT NULL, [LivPackagDet] [nvarchar](50) NOT NULL ) AS BEGIN DECLARE @output NVARCHAR(50) DECLARE @trovati INT = 0 -- setup iniziale: imposto a zero... SET @output = '0' SELECT @trovati = COUNT(*) FROM Package2ItemClient WHERE CodClient = @CodClient AND CodItem = @CodItem IF(@trovati > 0) -- primo tentativo: cerco il package dato SIA cliente che ITEM BEGIN INSERT @Table SELECT TOP 1 CodItem, CodClient , CodPackag, TotQta, Weight, Tare, NumImb, Durata ,'Item-Client-Package', @CodItem + '-' + @CodClient + '-' + CodPackag FROM Package2ItemClient WHERE CodClient = @CodClient AND CodItem = @CodItem ORDER BY TotQta DESC END ELSE IF EXISTS ( SELECT * FROM Package2Item WHERE CodItem = @CodItem ) -- secondo tentativo: se non lo trovo cerco per SOLO ITEM BEGIN INSERT @Table SELECT TOP 1 CodItem, 'ND' AS CodClient , CodPackag, TotQta, Weight, Tare, NumImb, Durata ,'Item-Package', @CodItem + '-' + CodPackag FROM Package2Item WHERE CodItem = @CodItem ORDER BY TotQta DESC END ELSE -- secondo tentativo: se non lo trovo cerco per SOLO ITEM BEGIN INSERT @Table SELECT TOP 1 'ND', 'ND' AS CodClient , CodPackag, TotQta, Weight, Tare, NumImb, Durata ,'Package', CodPackag FROM dbo.Package2 WHERE CodPackag = 0 END RETURN END GO PRINT N'Creating [dbo].[v_selItems]...'; GO CREATE VIEW dbo.v_selItems AS SELECT CodItem AS value, ItemDescr + ' [' + CodItem + ']' AS label FROM dbo.ItemDet WHERE (CodItem <> '') GO PRINT N'Creating [dbo].[v_selClient]...'; GO CREATE VIEW dbo.v_selClient AS SELECT CodClient AS value, ClientName + ' [' + CodClient + ']' AS label FROM dbo.ClientDet WHERE (CodClient <> '') GO PRINT N'Creating [dbo].[v_QuoteFull_Q]...'; GO 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, 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, FC4UG01 + OH4UG01 AS CPS, FC4UG01 + OH4UG01 + FVC + RawMatFullCost AS P_CPS, FC4UG04 + FVC + RawMatFullCost AS P_FC4UG04, FVC + FC4UG01 + OH4UG01 + FC4UG04 AS FullCost, FVC + FC4UG01 + OH4UG01 + FC4UG04 + RawMatFullCost AS P_FullCost, Charge * (FVC + FC4UG01 + OH4UG01 + FC4UG04) AS MinPrice, Charge * (FVC + FC4UG01 + OH4UG01 + FC4UG04 + RawMatFullCost) AS P_MinPrice, PriceOff + RawMatFullCost AS P_PriceOff, FVC + FC4UG01 + OH4UG01 + FC4UG04 - PriceOff AS NetMar, (PriceOff - FVC) / (FC4UG01 + OH4UG01 + FC4UG04) AS FCShield, (PRMWeight - PTare) * (PriceOff + RawMatFullCost) / PWeight AS PckSur FROM dbo.QuoteFull_Q GO PRINT N'Creating [dbo].[stp_QL_update]...'; GO -- ============================================= -- 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 ) AS BEGIN SET NOCOUNT ON; -- 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 -- 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 @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 DECLARE @TranspCost DECIMAL(9,6) -- costo di trasporto DECLARE @HasTC INT -- PROVVIGIONI DECLARE @Provvig DECIMAL(9,6) -- provvigione agente -- 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 CREATE TABLE #Quoteparam ( Quotetype CHAR( 1 ) NOT NULL, Codquote BIGINT NOT NULL, Quoterev INT NOT NULL, Nump INT IDENTITY( 1,1 ) NOT NULL, Processnum NVARCHAR( 50 ) NOT NULL, Descr NVARCHAR( 50 ) NOT NULL, Parameter NVARCHAR( 100 ) NOT NULL, --PRIMARY KEY -- ( 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 CREATE TABLE #QuoteWorkInt ( QuoteType CHAR(1) NOT NULL, CodQuote BIGINT NOT NULL, QuoteRev INT NOT NULL, NumWI 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 (''), NetProd DECIMAL(9, 3) NOT NULL DEFAULT ((0)), WSR DECIMAL(9, 8) NOT NULL DEFAULT ((0)), MSR DECIMAL(9, 8) NOT NULL DEFAULT ((0)), DSR DECIMAL(9, 8) NOT NULL DEFAULT ((0)), FC4UG DECIMAL(9, 6) NOT NULL DEFAULT ((0)), VC4UG DECIMAL(9, 6) NOT NULL DEFAULT ((0)), OH4UG DECIMAL(9, 6) NOT NULL DEFAULT ((0)), SC4UG DECIMAL(9, 6) NOT NULL DEFAULT ((0)), -- campi calcolati WYR AS ((1)-WSR), MYR AS ((1)-MSR), DYR AS ((1)-DSR), WCR AS ((1)/((1)-WSR)), MCR AS ((1)/((1)-MSR)), DCR AS ((1)/((1)-DSR)), valid BIT NOT NULL DEFAULT((1)), ) -- elimino e ricreo #QuoteParam 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)) ) -- =================================== -- INIZIO TRANSAZIONE -- =================================== SET XACT_ABORT ON; BEGIN TRAN --------------------------------------- -- 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 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 -- 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 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 , @CodifProfilo = i.Class01 , @ClasseMerc = i.Class02 , @CodClientAssoc = i.Class03 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 -- ================================================================================= -- 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 ) ) -- attenzione è una function tabellare SELECT @CodPackag = CodPackag, @PTotQta = TotQta, @PWeight = Weight, @PTare = Tare, @NumImb = NumImb, @PDurata = Durata, @PLiv = LivPackag , @PLivDett = LivPackagDet FROM f_getDataCodPackag ( @CodItem, @CodClient) -- e aggiorno il CodPackage in QuoteRM UPDATE dbo.QuoteRM SET CodPackag = @CodPackag 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 ) , ( @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 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) 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 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 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 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 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 -- 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 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 -- 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 * *************************************************************/ -- (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 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) -- (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) BEGIN -- (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 -- 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 *************************************************************/ 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 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 ,( @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 -- 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 , @PRMWeight = RMWeight , @PkgDesc = PackagDesc , @PTareStRatio = ( RMWeight - @PTare) / @PWeight 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 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 -- 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 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 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 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 , Class05, TotQty, TotCost, Quota, valid 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 END GO PRINT N'Creating [dbo].[stp_TD_upsert]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.17 -- Description: Crea TabDifett (tabella difettosità) -- ============================================= CREATE PROCEDURE [dbo].[stp_TD_upsert] ( @dateFrom DATETIME, -- data da cui iniziare a caricare @dateTo DATETIME -- data fino a cui caricare ) AS BEGIN BEGIN TRAN SET NOCOUNT ON; -- svuoto tabella... TRUNCATE TABLE TabDifett -- riempio di nuovo valori! INSERT INTO TabDifett SELECT dd.CodItem + '-' + pl.RawMat + '-' + pl.CodPlant as KeyAMI , pl.ProcessNum , dd.CodItem, pl.RawMat, pl.CodPlant , SUM(NumOUT) as TotOUT , SUM(NumIN) as TotIn FROM ProductionLog pl INNER JOIN DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum IN ('02', '04') AND pl.okDi = 1 -- and pl.EventType=1 AND pl.EventStart BETWEEN @dateFrom AND @dateTo GROUP BY dd.CodItem, pl.RawMat, pl.CodPlant, pl.ProcessNum ORDER BY dd.CodItem, pl.RawMat, pl.ProcessNum--, SUM(NumOUT) DESC -- salvo nuova revisione dati di produzione... INSERT INTO RevHistory SELECT 'P', ISNULL(MAX(RevNum),0) + 1, GETDATE(), 'Aggiornamento dati di produzione x fasi 02/03 ' + CONVERT(NVARCHAR(20), @dateFrom, 120) + ' --> ' +CONVERT(NVARCHAR(20), @dateTo, 120) FROM RevHistory WHERE RevType = 'P' COMMIT TRAN END GO PRINT N'Creating [dbo].[stp_esplodiVocab]...'; GO -- ============================================= -- Author: S.E.Locatelli -- Create date: 2011-10-24 -- Description: -- ============================================= create PROCEDURE stp_esplodiVocab AS BEGIN -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- svuoto vocabolario DELETE FROM ZZZ_VocabExpl -- carico termini ITA INSERT INTO ZZZ_VocabExpl(Lemma,IT) SELECT Lemma, Traduzione AS IT FROM Vocabolario WHERE Lingua = 'IT' -- update termini ENG UPDATE ZZZ_VocabExpl SET EN=ISNULL(v.Traduzione,ve.EN) FROM ZZZ_VocabExpl ve INNER JOIN Vocabolario v ON ve.Lemma=v.Lemma WHERE v.Lingua='EN' -- update termini BRA UPDATE ZZZ_VocabExpl SET BR=ISNULL(v.Traduzione,ve.BR) FROM ZZZ_VocabExpl ve INNER JOIN Vocabolario v ON ve.Lemma=v.Lemma WHERE v.Lingua='BR' -- update termini CHN UPDATE ZZZ_VocabExpl SET CN=ISNULL(v.Traduzione,ve.CN) FROM ZZZ_VocabExpl ve INNER JOIN Vocabolario v ON ve.Lemma=v.Lemma WHERE v.Lingua='CN' -- update termini CHN UPDATE ZZZ_VocabExpl SET MX=ISNULL(v.Traduzione,ve.MX) FROM ZZZ_VocabExpl ve INNER JOIN Vocabolario v ON ve.Lemma=v.Lemma WHERE v.Lingua='MX' -- update termini CHN UPDATE ZZZ_VocabExpl SET PL=ISNULL(v.Traduzione,ve.PL) FROM ZZZ_VocabExpl ve INNER JOIN Vocabolario v ON ve.Lemma=v.Lemma WHERE v.Lingua='PL' END GO PRINT N'Creating [dbo].[stp_VSItem_SearchLike]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.02.18 -- Description: Ricerca items -- ============================================= create PROCEDURE [dbo].stp_VSItem_SearchLike ( @value NVARCHAR(50) ) AS SET NOCOUNT ON; SELECT value ,label FROM v_selItems WHERE (value LIKE '%' + @value + '%') OR (label LIKE '%' + @value + '%') GO PRINT N'Creating [dbo].[stp_QL_fullDataSearch]...'; GO -- ============================================= -- STORED PROCEDURE stp_QL_fullDataSearch -- -- Author: Steamware -- 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) = '' ) AS SET NOCOUNT ON -- calcolo con aggiunta campi sommati... SELECT * 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 RETURN GO PRINT N'Creating [dbo].[stp_VSCli_SearchLike]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.02.11 -- Description: Ricerca clienti -- ============================================= CREATE PROCEDURE [dbo].stp_VSCli_SearchLike ( @value NVARCHAR(50) ) AS SET NOCOUNT ON; SELECT value ,label FROM v_selClient WHERE (value LIKE '%' + @value + '%') OR (label LIKE '%' + @value + '%') GO PRINT N'Creating [dbo].[stp_QL_update_07_02]...'; GO -- ============================================= -- Author: Steamware -- Create date: 2014.01.22 -- Description: aggiorna le tabelle QuoteList con i dati selezionati dalla TabProdSc -- ============================================= CREATE PROCEDURE [dbo].[stp_QL_update_07_02] ( @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" 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 @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 @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 DECLARE @TranspCost DECIMAL(9,6) -- costo di trasporto DECLARE @HasTC INT -- PROVVIGIONI DECLARE @Provvig DECIMAL(9,6) -- provvigione agente -- 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 CREATE TABLE #QuoteParam ( [QuoteType] [char](1) NOT NULL, [CodQuote] [bigint] NOT NULL, [QuoteRev] [int] NOT NULL, [NumP] [int] IDENTITY(1,1) NOT NULL, [ProcessNum] [nvarchar](50) NOT NULL, [Descr] [nvarchar](50) NOT NULL, [Parameter] [nvarchar](100) NOT NULL, --PRIMARY KEY -- ( [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 CREATE TABLE #QuoteWorkInt ( [QuoteType] [char](1) NOT NULL, [CodQuote] [bigint] NOT NULL, [QuoteRev] [int] NOT NULL, [NumWI] [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 (''), [NetProd] [decimal](9, 3) NOT NULL DEFAULT ((0)), [WSR] [decimal](9, 8) NOT NULL DEFAULT ((0)), [MSR] [decimal](9, 8) NOT NULL DEFAULT ((0)), [DSR] [decimal](9, 8) NOT NULL DEFAULT ((0)), [FC4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [VC4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [OH4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [SC4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [WYR] AS ((1)-[WSR]), [MYR] AS ((1)-[MSR]), [DYR] AS ((1)-[DSR]), [WCR] AS ((1)/((1)-[WSR])), [MCR] AS ((1)/((1)-[MSR])), [DCR] AS ((1)/((1)-[DSR])), [valid] [bit] NOT NULL DEFAULT((1)), ) -- elimino e ricreo #QuoteParam 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)) ) -- =================================== -- INIZIO TRANSAZIONE -- =================================== SET XACT_ABORT ON; BEGIN TRAN --------------------------------------- -- 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 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 -- 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 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 , @CodifProfilo = i.Class01 , @ClasseMerc = i.Class02 , @CodClientAssoc = i.Class03 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 -- ================================================================================= -- 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 ) ) -- attenzione è una function tabellare SELECT @CodPackag = CodPackag, @PTotQta = TotQta, @PWeight = [Weight], @PTare = Tare, @NumImb = NumImb, @PDurata = Durata, @PLiv = LivPackag , @PLivDett = LivPackagDet FROM f_getDataCodPackag ( @CodItem, @CodClient) -- e aggiorno il CodPackage in QuoteRM UPDATE dbo.QuoteRM SET CodPackag = @CodPackag 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) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'CodifProfilo', @CodifProfilo --FROM dbo.ItemDet --WHERE CodItem = @CodItem INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'ClasseMerc', @ClasseMerc --FROM dbo.ItemDet --WHERE CodItem = @CodItem INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'CodClientAssoc', @CodClientAssoc --FROM dbo.ItemDet --WHERE CodItem = @CodItem INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'ClientNameAssoc', ClientDet.ClientName FROM dbo.ClientDet WHERE ClientDet.CodClient = @CodClientAssoc --FROM dbo.ItemDet --INNER JOIN dbo.ClientDet ON ItemDet.Class03 = ClientDet.CodClient --WHERE CodItem = @CodItem -- 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) 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(50) , @NumSMED ) ) ,( @QuoteType, @CodQuote, @QuoteRev, '01', 'KgTeo' , CONVERT(NVARCHAR(50) , @KgTeo ) ) --INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) --SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KeyAM', @KeyAM --INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) --SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KeyAMIL', @KeyAMIL --INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) --SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'NumSMED', @NumSMED --INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) --SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KgTeo', @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 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 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 -- calcolo produttività netta nella fase imballo -- UPDATE qwi -- SET NetProd = CASE ti.Durata WHEN 0 THEN 0 ELSE ti.TotOut / ti.Durata END -- FROM #QuoteWorkInt qwi -- INNER JOIN dbo.TabImbArt ti ON qwi.Class04 = ti.KeyA -- WHERE qwi.ProcessNum = '04' -- solo imballo 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 -- ADESSO LO FACCIO GIA' NELLA FUNZIONE DI RECUPERO DATI PACKAGE f_getDataCodPackag ---- Se Produttività netta ancora = 0 la leggo nella tabella Gruppo Imballo ( Packaging ) --IF ( SELECT NetProd FROM #QuoteWorkInt WHERE ProcessNum = '04' ) = 0 -- BEGIN -- UPDATE qwi -- SET NetProd = CASE ti.Durata WHEN 0 THEN 0 ELSE ti.TotOut / ti.Durata END -- FROM #QuoteWorkInt qwi -- INNER JOIN dbo.TabImbGrp ti ON ti.CodPackag = @CodPackag -- packag generico dell' offerta -- WHERE qwi.ProcessNum = '04' -- solo imballo -- END -- salvo numero imballatori --SELECT @NumImb = ISNULL(NumImb,0) --FROM dbo.TabImbArt --WHERE KeyA = @CodItem -- 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 -- 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 qwi 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 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 -- 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 /************************************************************* * 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 -- (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) -- (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) BEGIN SET @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, 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) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesPrice', @DiesPrice INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesExpLife', @DiesExpLife INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesEOLife', @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 *************************************************************/ 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 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) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF01 * @BatchQty, @SSR -- inserisco costi per ROTTAME INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF01 * @BatchQty, 1 - @SSR -- inserisco costi per VENDITA INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF04 * @BatchQty, @SSR -- inserisco costi per ROTTAME INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) SELECT @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 , @PRMWeight = RMWeight , @PkgDesc = PackagDesc , @PTareStRatio = ( RMWeight - @PTare) / @PWeight 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 parametri calcolati x imballaggio INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PkgDesc', @PkgDesc INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PRMWeight', @PRMWeight INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PWeight', @PWeight INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PTare', @PTare INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'TareStRatio', @PTareStRatio --------------------------------------------- -- 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 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 --------------------------------------------- -- 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 /* ================================================== CARICO TABELLE EFFETTIVE ==================================================*/ -- 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 , 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 , Class05, TotQty, TotCost, Quota, valid 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 END GO PRINT N'Creating [dbo].[stp_QL_fullDataAll]...'; GO -- ============================================= -- STORED PROCEDURE stp_QL_fullDataAll -- -- Author: Steamware -- Create date: 2014.02.07 -- Description: Recupera tutti i dati di tutte le offerte salvate -- ============================================= CREATE PROCEDURE dbo.stp_QL_fullDataAll AS SELECT * FROM v_QuoteFull_Q ORDER BY CodQuote DESC RETURN GO PRINT N'Creating [dbo].[stp_packageCost]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.15 -- Description: stp_packageCost -- SOSTITUITA da query + funzione -- ============================================= CREATE PROCEDURE [dbo].[stp_packageCost] ( @CodItem NVARCHAR(50) = '', @CodClient NVARCHAR(50) = '', @CodPackag NVARCHAR(50) = '', @PDesc NVARCHAR(50) OUTPUT, @RMWeight DECIMAL(9,4) OUTPUT, @Weight DECIMAL(9,4) OUTPUT, @Tare DECIMAL(9,4) OUTPUT, @PackCost DECIMAL(9,6) OUTPUT, @TareStRat DECIMAL(9,4) OUTPUT ) AS BEGIN SET NOCOUNT ON; DECLARE @trovati INT = 0, @RMCost DECIMAL(9,3) -- calcolo RMCost e RMWeight da tab PackageDet SELECT @RMCost = RMCost, @RMWeight = RMWeight, @PDesc= PackagDesc FROM PackagDet WHERE CodPackag = @CodPackag -- Calcolo peso e tara da selezione gerarchica SELECT @trovati = COUNT(*) FROM Package2ItemClient WHERE CodItem = @CodItem AND CodClient = @CodClient AND CodPackag = @CodPackag IF(@trovati > 0) -- primo tentativo: cerco il package dato SIA Cliente che Item che Package BEGIN SELECT TOP 1 @Weight = [Weight], @Tare = Tare FROM Package2ItemClient WHERE CodItem = @CodItem AND CodClient = @CodClient AND CodPackag = @CodPackag ORDER BY TotQta DESC END ELSE -- secondo tentativo: se non lo trovo cerco per SOLO ITEM e package BEGIN SELECT @trovati = COUNT(*) FROM Package2Item WHERE CodItem = @CodItem AND CodPackag = @CodPackag IF(@trovati > 0) BEGIN SELECT TOP 1 @Weight = [Weight], @Tare = Tare FROM Package2Item WHERE CodItem = @CodItem AND CodPackag = @CodPackag ORDER BY TotQta DESC END ELSE BEGIN SELECT @Weight = [Weight], @Tare = Tare FROM Package2 WHERE CodPackag = @CodPackag END END -- faccio ultimi calcoli! SELECT @PackCost = @RMCost / @Weight, @TareStRat = (@RMWeight - @Tare) / @Weight END GO PRINT N'Creating [dbo].[stp_QL_fullDataUpdate]...'; GO -- ============================================= -- STORED PROCEDURE stp_QL_fullDataUpdate -- -- Author: Steamware -- Create date: 2014.01.27 -- 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 ) AS SET NOCOUNT ON /* va rifatta struttura: * * tab temporanea * calcolo parametri * salvataggio in QuoteList dei 3 valori di sunto * calcolo dei valori aggregati e restituzione riga risultati finali * * ATTENZIONE NON CONTROLLA IL CAMPO VALID DEVE ESSERE SEMPRE 1 PER ESSERE VALIDO * */ --DECLARE @FullCost DECIMAL(9,6) -- , @MinPrice DECIMAL(9,6) IF (@DoUpdate = 'Y') BEGIN EXEC stp_QL_update @QuoteType , @CodQuote , @QuoteRev END -- inserire in tabelle: QuoteFull_Q (quotazioni/preventivi) -- inserire in tabelle: QuoteFull_R (resoconto di commessa) -- inserire in tabelle: QuoteFull_S (simulazioni) -- elimino eventuale temp table... IF OBJECT_ID('tempdb..#TempFullData') IS NOT NULL DROP TABLE #TempFullData; -- Costruisco la "superselect" di tutti i valori necessari... -- ================================================= -- PIVOT TABELLA QuoteParameter -- ================================================= ;WITH ctePivotQuoteP AS ( SELECT * FROM ( SELECT QuoteType , CodQuote , QuoteRev , Descr , Parameter FROM dbo.QuoteParam WHERE CodQuote = @CodQuote 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 , LivPackage , LivPackageDett ) ) AS PivotData ), -- ================================================= -- PIVOT TABELLA QuoteOC -- ================================================= ctePivotQuoteOC AS ( SELECT * FROM ( SELECT QuoteType , CodQuote , QuoteRev , Class01 + ProcessNum AS ClassProc , C4UG FROM dbo.QuoteOC WHERE CodQuote = @CodQuote AND QuoteType = @QuoteType AND QuoteRev = @QuoteRev ) AS SourceTable PIVOT(SUM(C4UG) FOR ClassProc IN ( EE01 , 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 , pQP.LivPackage , pQP.LivPackageDett , 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 INTO #TempFullData -- carico in temp table FROM dbo.QuoteList AS QL INNER JOIN dbo.ClientDet CD 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 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 INNER JOIN ctePivotQuoteOC AS pQOC 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' 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' 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' 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' INNER JOIN dbo.PlantsDet AS PD ON PD.CodPlant = pQP.CodPlant ---- salvo i dati dell'ordine: FullCost, MinPrice, PriceOff (se zero lo pongo uguale a MinPrice) --UPDATE QuoteList --SET FullCost = @FullCost -- , MinPrice = @MinPrice -- , PriceOff = CASE WHEN ISNULL(PriceOff,0) = 0 THEN @MinPrice ELSE PriceOff END --WHERE QuoteType = @QuoteType -- AND CodQuote = @CodQuote -- AND QuoteRev = @QuoteRev IF @QuoteType = 'Q' BEGIN IF OBJECT_ID('QuoteFull_Q') IS NULL -- DROP TABLE QuoteFull_Q SELECT * INTO dbo.QuoteFull_Q FROM #TempFullData ELSE BEGIN --DELETE dbo.QuoteFull_Q WHERE QuoteType = @QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev DELETE dbo.QuoteFull_Q WHERE QuoteType = @QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev INSERT dbo.QuoteFull_Q SELECT * FROM #TempFullData END END ELSE IF @QuoteType = 'R' BEGIN IF OBJECT_ID('QuoteFull_R') IS NULL -- DROP TABLE QuoteFull_R SELECT * INTO dbo.QuoteFull_R FROM #TempFullData ELSE BEGIN INSERT dbo.QuoteFull_R SELECT * FROM #TempFullData END END ELSE IF @QuoteType = 'S' BEGIN IF OBJECT_ID('QuoteFull_S') IS NULL -- DROP TABLE QuoteFull_S SELECT * INTO dbo.QuoteFull_S FROM #TempFullData ELSE BEGIN INSERT dbo.QuoteFull_S SELECT * FROM #TempFullData END END -- elimino temp table... IF OBJECT_ID('tempdb..#TempFullData') IS NOT NULL DROP TABLE #TempFullData RETURN GO PRINT N'Creating [dbo].[stp_QL_update_SAM]...'; GO -- ============================================= -- 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 ) AS BEGIN 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" 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 -- PROVVIGIONI DECLARE @Provvig DECIMAL(9,6) -- provvigione agente -- 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 -- 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 ), '' ) -- 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 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 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 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', '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, '-', 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 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 -- 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', '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', '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 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 -- 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 -- 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 -- 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 -- 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 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 /************************************************************* * 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 -- (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 -- 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 -- 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', '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 *************************************************************/ 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... 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, '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 -- 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', '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', '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 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 --------------------------------------------- -- 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 COMMIT TRAN END GO PRINT N'Creating [dbo].[stp_TPS_upsert]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.13 -- Description: Crea TabProdSc (tabella produttività/scarti) -- ============================================= CREATE PROCEDURE [dbo].[stp_TPS_upsert] ( @dateFrom DATETIME, -- data da cui iniziare a caricare @dateTo DATETIME -- data fino a cui caricare ) AS BEGIN BEGIN TRAN SET NOCOUNT ON; -- svuoto tabella... TRUNCATE TABLE TabProdSc -- riempio di nuovo valori! INSERT INTO TabProdSc SELECT dd.CodItem + '-' + pl.RawMat + '-' + pl.CodPlant + '-' + CAST(dd.HoleNum AS NVARCHAR(19)) as KeyAMIL , dd.CodDiesGroup , dd.CodItem + '-' + pl.RawMat as KeyAM , dd.CodItem, pl.RawMat, pl.CodPlant, dd.HoleNum , 0 as NumSMED -- numero cambi, da sistemare... , SUM(QtyOUT) as KgTeorici , SUM(QtyIN) as KgLordi , SUM(Duration) AS Durata FROM ProductionLog pl INNER JOIN DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum='01' and pl.EventType=1 AND pl.okPr = 1 AND pl.okSc = 1 AND pl.EventStart BETWEEN @dateFrom AND @dateTo GROUP BY dd.CodItem, pl.RawMat, dd.CodDiesGroup, pl.CodPlant, dd.HoleNum ORDER BY dd.CodItem, pl.RawMat, dd.CodDiesGroup, SUM(QtyOUT) DESC -- calcolo cambi SMED -- con cte ; WITH cteCambiPre AS ( SELECT ROW_NUMBER() OVER(ORDER BY CodPlant, EventStart ASC) AS Row, CodPlant, RawMat, EventStart, ProcessNum, CodDies, CodClient, OrderNum, BatchNum FROM ProductionLog pl WHERE pl.ProcessNum='01' and pl.EventType=1 AND pl.okPr = 1 AND pl.okSc = 1 AND pl.EventStart BETWEEN @dateFrom AND @dateTo ) , cteCambi AS ( SELECT dd.CodItem + '-' + a.RawMat + '-' + a.CodPlant + '-' + CAST(dd.HoleNum AS NVARCHAR(19)) as KeyAMIL , dd.CodDiesGroup , a.* --, b.Row --, ISNULL(b.Row, 0) AS Cambio -- se 0 c'è cambio --, CASE ISNULL(b.Row, 0) WHEN 0 THEN 1 ELSE 0 END AS Cambio2 , CASE ISNULL(b.Row, 0) WHEN 0 THEN 1 ELSE 0 END AS Cambio2 FROM cteCambiPre AS a LEFT JOIN cteCambiPre AS b ON a.Row-1 = b.Row AND a.CodPlant = b.CodPlant AND a.CodDies = b.CodDies INNER JOIN DiesDet dd ON a.CodDies=dd.CodDies WHERE b.Row IS NULL -- se voglio vedere solo i cambi --ORDER BY a.CodPlant, a.EventStart ) UPDATE tps SET NumSMED = cc.NumSMED FROM TabProdSc tps INNER JOIN ( SELECT KeyAMIL, CodDiesGroup, SUM(Cambio2) as NumSMED FROM cteCambi GROUP BY KeyAMIL, CodDiesGroup --ORDER BY KeyAMIL, CodDiesGroup ) AS cc ON tps.KeyAMIL= cc.KeyAMIL AND tps.CodDiesGroup = cc.CodDiesGroup -- -- altro metodo, forse + veloce... -- DROP TABLE test -- CREATE TABLE [dbo].[test]( -- [Row] [bigint] IDENTITY(1,1) NOT NULL, -- [CodPlant] [nvarchar](50) NOT NULL, -- [EventStart] [datetime] NOT NULL, -- [ProcessNum] [nvarchar](50) NOT NULL, -- [CodDies] [nvarchar](50) NOT NULL, -- [CodClient] [nvarchar](50) NOT NULL, -- [OrderNum] [nvarchar](50) NOT NULL, -- [BatchNum] [nvarchar](50) NOT NULL, -- CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED -- ( -- [Row] ASC -- )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] -- ) ON [PRIMARY] -- INSERT INTO TEST -- SELECT CodPlant, EventStart, ProcessNum, CodDies, CodClient, OrderNum, BatchNum -- FROM ProductionLog pl -- WHERE pl.ProcessNum='01' and pl.EventType=1 -- ORDER BY CodPlant, EventStart ---- SELECT * FROM Test -- SELECT a.* -- , b.Row -- , ISNULL(b.Row, 0) AS Cambio -- se 0 c'è cambio -- , CASE ISNULL(b.Row, 0) WHEN 0 THEN 1 ELSE 0 END AS Cambio2 -- FROM test AS a -- LEFT JOIN test AS b -- ON a.Row - 1 = b.Row -- aggancio record precedente -- AND a.CodPlant = b.CodPlant AND a.CodDies = b.CodDies -- WHERE b.Row IS NULL -- solo i cambi -- ORDER BY a.CodPlant, a.EventStart -- salvo nuova revisione dati di produzione... INSERT INTO RevHistory SELECT 'P', ISNULL(MAX(RevNum),0) + 1, GETDATE(), 'Aggiornamento dati di produzione fase 01 ' + CONVERT(NVARCHAR(20), @dateFrom, 120) + ' --> ' +CONVERT(NVARCHAR(20), @dateTo, 120) FROM RevHistory WHERE RevType = 'P' COMMIT TRAN END GO PRINT N'Creating [dbo].[stp_TI_upsert]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.20 -- Description: Crea TabImb (tabella imballi) -- NON SERVE PIU' le due tabelle sono state inglobate in Package2/Item/Client -- ============================================= CREATE PROCEDURE [dbo].[stp_TI_upsert] ( @dateFrom DATETIME, -- data da cui iniziare a caricare @dateTo DATETIME -- data fino a cui caricare ) AS BEGIN BEGIN TRAN SET NOCOUNT ON; -- svuoto tabella... TRUNCATE TABLE TabImbArt TRUNCATE TABLE TabImbGrp -- riempio di nuovo valori x articolo! INSERT INTO TabImbArt SELECT dd.CodItem as KeyA , ROUND(SUM(QtyOUT* QuotaMan) / CASE WHEN SUM(QtyOUT) = 0 THEN 1 ELSE SUM(QtyOUT) END,0) as NumImb , SUM(QtyOUT) AS TotOut , SUM(Duration) AS Durata FROM ProductionLog pl INNER JOIN DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum = '04' AND pl.okPr = 1 AND pl.okQM = 1 AND pl.EventStart BETWEEN @dateFrom AND @dateTo GROUP BY dd.CodItem ORDER BY dd.CodItem -- riempio di nuovo valori x gruppo imballo! INSERT INTO TabImbGrp SELECT pl.CodPackag , ROUND(SUM(QtyOUT* QuotaMan) / CASE WHEN SUM(QtyOUT) = 0 THEN 1 ELSE SUM(QtyOUT) END,0) as NumImb , SUM(QtyOUT) AS TotOut , SUM(Duration) AS Durata FROM ProductionLog pl INNER JOIN DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum = '04' AND pl.okPr = 1 AND pl.okQM = 1 AND pl.EventStart BETWEEN @dateFrom AND @dateTo GROUP BY pl.CodPackag ORDER BY pl.CodPackag -- salvo nuova revisione dati di produzione... INSERT INTO RevHistory SELECT 'P', ISNULL(MAX(RevNum),0) + 1, GETDATE(), 'Aggiornamento dati di produzione x fase 04 ' + CONVERT(NVARCHAR(20), @dateFrom, 120) + ' --> ' +CONVERT(NVARCHAR(20), @dateTo, 120) FROM RevHistory WHERE RevType = 'P' COMMIT TRAN END GO PRINT N'Creating [voc].[stp_insNewLemma]...'; GO /************************************* * STORED PROCEDURE stp_insNewLemma * * elimina record anagrafica classe prodotto * * mod : 14/05/2012 * aut : S.E. Locatelli **************************************/ CREATE PROCEDURE [voc].[stp_insNewLemma] ( @lemma NVARCHAR(50), @traduzione NVARCHAR(500) ) AS -- elimino se c'era già... DELETE FROM Vocabolario WHERE lemma = @lemma -- inserisco x tutte le lingue attive... INSERT INTO Vocabolario SELECT lingua, @lemma, @traduzione FROM Lingue SELECT * FROM Vocabolario WHERE lemma = @lemma RETURN GO PRINT N'Creating [ext].[stp_mergePackage2ItemClient]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.27 -- Description: Procedura per import dati in Package2ItemClient da dati ProductionLogRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergePackage2ItemClient] ( @source NVARCHAR(20) = 'ProductionLog', -- nome della tabella sorgente tra ProductionLogRaw e ItemsRaw @dateFrom DATETIME, -- data da cui iniziare a caricare @dateTo DATETIME -- data fino a cui caricare ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLog' -- carico da tracciato produzione BEGIN MERGE INTO Package2ItemClient AS Target USING ( --SELECT dd.CodItem, plr.CodClient, plr.CodPackag, SUM(QtyOUT) AS TotQta, COUNT(*) AS NumEv -- , SUM(QtyOUT) / COUNT(*) AS PesoMedio -- , SUM(QtyEXT) / COUNT(*) AS TaraMedia --FROM ext.ProductionLogRaw plr -- INNER JOIN DiesDet dd ON plr.CodDies = dd.CodDies -- WHERE ISNULL(plr.CodPackag, '') <> '' --GROUP BY dd.CodItem, plr.CodClient, plr.CodPackag SELECT dd.CodItem , pl.CodClient , pl.CodPackag , SUM(QtyOUT) AS TotQta -- , COUNT(*) AS NumEv , SUM(QtyOUT) / COUNT(*) AS PesoMedio , SUM(QtyEXT) / COUNT(*) AS TaraMedia -- dati produttività imballo , ROUND(SUM(QtyOUT* QuotaMan) / CASE WHEN SUM(QtyOUT) = 0 THEN 1 ELSE SUM(QtyOUT) END,0) as NumImb , SUM(Duration) AS Durata FROM dbo.ProductionLog pl INNER JOIN dbo.DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum = '04' AND pl.okPr = 1 AND pl.okQM = 1 AND ISNULL(pl.CodPackag, '') <> '' AND pl.EventStart BETWEEN @dateFrom AND @dateTo GROUP BY dd.CodItem, pl.CodClient, pl.CodPackag ) AS Source ON Target.CodItem = Source.CodItem AND Target.CodClient = Source.CodClient AND Target.CodPackag = Source.CodPackag WHEN MATCHED THEN UPDATE SET TotQta = Source.TotQta , [Weight] = Source.PesoMedio , Tare = Source.TaraMedia , NumImb = Source.NumImb , Durata = Source.Durata WHEN NOT MATCHED BY TARGET THEN INSERT (CodItem, CodClient, CodPackag, TotQta, [Weight], Tare, NumImb, Durata) VALUES (CodItem, CodClient, CodPackag, TotQta, PesoMedio, TaraMedia, NumImb, Durata) WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT $action INTO @SummaryOfChanges; END --ELSE IF @source = 'ItemsRaw' -- carico da anagrafica -- BEGIN -- MERGE INTO Item2PackageClient AS Target -- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) -- AS Source -- ON Target.CodItem = Source.CodItem -- WHEN MATCHED THEN -- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) -- OUTPUT $action INTO @SummaryOfChanges; -- END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergePackage2Item]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.15 -- Description: Procedura per import dati in Package2Item da dati ProductionLogRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergePackage2Item] ( @source NVARCHAR(20) = 'ProductionLog', -- nome della tabella sorgente tra ProductionLogRaw e ItemsRaw @dateFrom DATETIME, -- data da cui iniziare a caricare @dateTo DATETIME -- data fino a cui caricare ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLog' -- carico da tracciato produzione BEGIN MERGE INTO Package2Item AS Target USING ( --SELECT dd.CodItem, plr.CodPackag, SUM(QtyOUT) AS TotQta, COUNT(*) AS NumEv -- , SUM(QtyOUT) / COUNT(*) AS PesoMedio -- , SUM(QtyEXT) / COUNT(*) AS TaraMedia --FROM ext.ProductionLogRaw plr -- INNER JOIN DiesDet dd ON plr.CodDies = dd.CodDies -- WHERE ISNULL(plr.CodPackag, '') <> '' --GROUP BY dd.CodItem, plr.CodPackag SELECT dd.CodItem , pl.CodPackag , SUM(QtyOUT) AS TotQta -- , COUNT(*) AS NumEv , SUM(QtyOUT) / COUNT(*) AS PesoMedio , SUM(QtyEXT) / COUNT(*) AS TaraMedia -- dati produttività imballo , ROUND(SUM(QtyOUT* QuotaMan) / CASE WHEN SUM(QtyOUT) = 0 THEN 1 ELSE SUM(QtyOUT) END,0) as NumImb , SUM(Duration) AS Durata FROM ProductionLog pl INNER JOIN DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum = '04' AND pl.okPr = 1 AND pl.okQM = 1 AND ISNULL(pl.CodPackag, '') <> '' AND pl.EventStart BETWEEN @dateFrom AND @dateTo GROUP BY dd.CodItem, pl.CodPackag ) AS Source ON Target.CodItem = Source.CodItem AND Target.CodPackag = Source.CodPackag WHEN MATCHED THEN UPDATE SET TotQta = Source.TotQta , [Weight] = Source.PesoMedio , Tare = Source.TaraMedia , NumImb = Source.NumImb , Durata = Source.Durata WHEN NOT MATCHED BY TARGET THEN INSERT (CodItem, CodPackag, TotQta, [Weight], Tare, NumImb, Durata) VALUES (CodItem, CodPackag, TotQta, PesoMedio, TaraMedia, NumImb, Durata) WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT $action INTO @SummaryOfChanges; END --ELSE IF @source = 'ItemsRaw' -- carico da anagrafica -- BEGIN -- MERGE INTO Item2Package AS Target -- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) -- AS Source -- ON Target.CodItem = Source.CodItem -- WHEN MATCHED THEN -- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) -- OUTPUT $action INTO @SummaryOfChanges; -- END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergeItemDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.27 -- Description: Procedura per import dati in ItemDet da dati ProductionLogRaw/ItemsRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergeItemDet] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e ItemsRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLogRaw' -- carico da tracciato produzione BEGIN --MERGE INTO ItemDet AS Target --USING (SELECT DISTINCT CodItem FROM ext.ProductionLogRaw) -- AS Source --ON Target.CodItem = Source.CodItem ----WHEN MATCHED THEN ---- UPDATE SET ClientName = Source.ClientName --WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, '#### - ' + CodItem, '', 0, '') --OUTPUT $action INTO @SummaryOfChanges; select 1 END ELSE IF @source = 'ItemsRaw' -- carico da anagrafica BEGIN MERGE INTO ItemDet AS Target USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup, Class01, Class02, Class03, Class04, Class05 FROM ext.ItemsRaw) AS Source ON Target.CodItem = Source.CodItem WHEN MATCHED THEN UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup, Class01 = Source.Class01, Class02 = Source.Class02, Class03 = Source.Class03, Class04 = Source.Class04, Class05 = Source.Class05 WHEN NOT MATCHED BY TARGET THEN INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup, Class01, Class02, Class03, Class04, Class05) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup, Class01, Class02, Class03, Class04, Class05) OUTPUT $action INTO @SummaryOfChanges; END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergeClientDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.27 -- Description: Procedura per import dati in ClientDet da dati ProductionLogRaw/ClientsRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergeClientDet] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e ClientsRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLogRaw' -- carico da tracciato produzione BEGIN MERGE INTO ClientDet AS Target USING (SELECT DISTINCT CodClient FROM ext.ProductionLogRaw) AS Source ON Target.CodClient = Source.CodClient --WHEN MATCHED THEN -- UPDATE SET ClientName = Source.ClientName WHEN NOT MATCHED BY TARGET THEN INSERT (CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone) VALUES (CodClient, '#### - ' + CodClient, '', '', '', '', '', '') OUTPUT $action INTO @SummaryOfChanges; END ELSE IF @source = 'ClientsRaw' -- carico da anagrafica BEGIN MERGE INTO ClientDet AS Target USING (SELECT DISTINCT CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone FROM ext.ClientsRaw) AS Source ON Target.CodClient = Source.CodClient WHEN MATCHED THEN UPDATE SET ClientName = Source.ClientName, CodAg = Source.CodAg, ZipCode = Source.ZipCode, City = Source.City, [State] = Source.[State], Nation = Source.Nation, TranspZone = Source.TranspZone WHEN NOT MATCHED BY TARGET THEN INSERT (CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone) VALUES (CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone) OUTPUT $action INTO @SummaryOfChanges; END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergeDiesDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.02 -- Description: Procedura per import dati in DiesDet da dati ProductionLogRaw/DiesRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergeDiesDet] AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); SET XACT_ABORT ON BEGIN tran -- ======================================= -- ora aggiungiamo eventuali item mancanti -- ======================================= MERGE INTO ItemDet AS Target USING (SELECT DISTINCT CodItem FROM ext.DiesRaw) AS Source ON Target.CodItem = Source.CodItem --WHEN MATCHED THEN -- UPDATE SET ClientName = Source.ClientName WHEN NOT MATCHED BY TARGET THEN INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, '#### - ' + CodItem, '', 0, '') OUTPUT $action INTO @SummaryOfChanges; -- ======================================= -- ora carico i dati delle singole matrici -- ======================================= MERGE INTO DiesDet AS Target USING (SELECT CodDies, HoleNum, CodItem, CodDiesGroup, Price, ExpLife, ActLife, Active FROM ext.DiesRaw) AS Source ON Target.CodDies = Source.CodDies WHEN MATCHED THEN UPDATE SET HoleNum = Source.HoleNum, CodItem = Source.CodItem, CodDiesGroup = Source.CodDiesGroup, Price = Source.Price, ExpLife = Source.ExpLife, ActLife = Source.ActLife, Active = Source.Active WHEN NOT MATCHED BY TARGET THEN INSERT (CodDies, HoleNum, CodItem, CodDiesGroup, Price, ExpLife, ActLife, Active) VALUES (CodDies, HoleNum, CodItem, CodDiesGroup, Price, ExpLife, ActLife, Active) OUTPUT $action INTO @SummaryOfChanges; -- ================================================= -- Carico i dati dei GRUPPI DI MATRICI ( DiesGroupDet ) -- nel caso debbano essere integrati vanno caricati nella tabella ext.DiesGroupRaw -- ================================================= MERGE INTO dbo.DiesGroupDet AS Target USING ( SELECT CodDiesGroup , ISNULL ( AVG( Price ),0) AS Price -- prezzo medio ( valori nulli non considerati ) , COUNT (*) AS QtyTot -- N. Matrici nel gruppo , COUNT ( CASE Active WHEN 0 THEN 1 END ) AS QtyEOL -- Qta Matrici rottamate , ISNULL( AVG( ExpLife ), 0 ) AS ExpLife -- Vita stimata matrice ( iniziale ) , ISNULL( AVG ( CASE WHEN Active = 0 AND ActLife > 5000 THEN ActLife END ),0 ) AS EOLLife -- solo Matrici rottamate e vita > 5000KG FROM dbo.DiesDet GROUP BY CodDiesGroup ) AS Source ON Target.CodDiesGroup = Source.CodDiesGroup WHEN MATCHED THEN UPDATE SET CodDiesGroup = Source.CodDiesGroup, Price = Source.Price, QtyTot = Source.QtyTot , QtyEOL = Source.QtyEOL, ExpLife = Source.ExpLife, EOLLife = Source.EOLLife , DateMod = GETDATE(), UserMod = 'IMPORT_DiesRaw' WHEN NOT MATCHED BY TARGET THEN INSERT ( CodDiesGroup, Price, QtyTot, QtyEOL, ExpLife, EOLLife, DateMod ,UserMod ) VALUES ( CodDiesGroup, Source.Price, Source.QtyTot, Source.QtyEOL, Source.ExpLife, Source.EOLLife, GETDATE(), 'IMPORT_DiesRaw' ) -- mi da errori in calcoli successivi altrimenti con zero a ExpLife e EOLLife OUTPUT $action INTO @SummaryOfChanges; ---- a questo punto calcolo il VERO update dalle inforamzioni di dbo.DiesDet --> dbo.DiesGroupDet --MERGE INTO dbo.DiesGroupDet AS Target --USING ( -- SELECT coddiesgroup, -- Avg(Isnull(price, 0)) AS Price, -- Count(*) AS QtyTot, -- Count(*) - Sum(Active) AS QtyEOL, -- Avg(Isnull(ExpLife, 0.1)) AS ExpLife, -- mi da errori in calcoli successivi altrimenti con zero a ExpLife e EOLLife -- Sum(Isnull(ActLife * (1 - Active), 0)) / (Count(*) - Sum(Active)) AS EOLLife -- FROM dbo.DiesDet -- WHERE ActLife > 5000 -- GROUP BY CodDiesGroup -- HAVING Count(*) > Sum(Active) -- ci siano rottamate -- ) -- AS Source --ON Target.CodDiesGroup = Source.CodDiesGroup --WHEN MATCHED THEN -- UPDATE SET Price = Source.Price, QtyTot = Source.QtyTot, QtyEOL = Source.QtyEOL, ExpLife = Source.ExpLife, EOLLife = Source.EOLLife --OUTPUT $action INTO @SummaryOfChanges; COMMIT tran -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergeTranspCostDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.16 -- Description: Procedura per import dati in ClientDet da dati ProductionLogRaw/ClientsRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergeTranspCostDet] ( @source NVARCHAR(20) = 'TranspCostRaw' -- nome della tabella sorgente tra ProductionLogRaw e ClientsRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'TranspCostRaw' -- carico da anagrafica BEGIN MERGE INTO TranspCostDet AS Target USING (SELECT DISTINCT TranspZone, TranspCost FROM ext.TranspCostRaw) AS Source ON Target.TranspZone = Source.TranspZone WHEN MATCHED THEN UPDATE SET TranspCost = Source.TranspCost WHEN NOT MATCHED BY TARGET THEN INSERT (TranspZone, TranspCost) VALUES (TranspZone, TranspCost) OUTPUT $action INTO @SummaryOfChanges; END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergePackage2]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.15 -- Description: Procedura per import dati in Package2Item da dati ProductionLogRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergePackage2] ( @source NVARCHAR(20) = 'ProductionLog', -- nome della tabella sorgente tra ProductionLogRaw e ItemsRaw @dateFrom DATETIME, -- data da cui iniziare a caricare @dateTo DATETIME -- data fino a cui caricare ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLog' -- carico da tracciato produzione BEGIN MERGE INTO Package2 AS Target USING ( --SELECT plr.CodPackag, SUM(QtyOUT) AS TotQta, COUNT(*) AS NumEv -- , SUM(QtyOUT) / COUNT(*) AS PesoMedio -- , SUM(QtyEXT) / COUNT(*) AS TaraMedia --FROM ext.ProductionLogRaw plr -- INNER JOIN DiesDet dd ON plr.CodDies = dd.CodDies -- WHERE ISNULL(plr.CodPackag, '') <> '' --GROUP BY plr.CodPackag SELECT pl.CodPackag , SUM(QtyOUT) AS TotQta -- , COUNT(*) AS NumEv , SUM(QtyOUT) / COUNT(*) AS PesoMedio , SUM(QtyEXT) / COUNT(*) AS TaraMedia -- dati produttività imballo , ROUND(SUM(QtyOUT * QuotaMan) / CASE WHEN SUM(QtyOUT) = 0 THEN 1 ELSE SUM(QtyOUT) END,0) as NumImb -- , SUM(QtyOUT) AS TotOut -- unificata a TotQta , SUM(Duration) AS Durata FROM ProductionLog pl INNER JOIN DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum = '04' AND pl.okPr = 1 AND pl.okQM = 1 AND ISNULL(pl.CodPackag, '') <> '' -- cmq filtro righe con package VUOTO AND pl.EventStart BETWEEN @dateFrom AND @dateTo GROUP BY pl.CodPackag ) AS Source ON Target.CodPackag = Source.CodPackag WHEN MATCHED THEN UPDATE SET TotQta = Source.TotQta , [Weight] = Source.PesoMedio , Tare = Source.TaraMedia , NumImb = Source.NumImb , Durata = Source.Durata WHEN NOT MATCHED BY TARGET THEN INSERT (CodPackag, TotQta, [Weight], Tare, NumImb, Durata) VALUES (CodPackag, TotQta, PesoMedio, TaraMedia, NumImb, Durata) WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT $action INTO @SummaryOfChanges; END --ELSE IF @source = 'ItemsRaw' -- carico da anagrafica -- BEGIN -- MERGE INTO Item2Package AS Target -- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) -- AS Source -- ON Target.CodItem = Source.CodItem -- WHEN MATCHED THEN -- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) -- OUTPUT $action INTO @SummaryOfChanges; -- END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_filterProductionLogRow]...'; GO -- ============================================= -- Author: -- Create date: 2013.11.29 -- Description: Procedura per pulizia dati della tabella ext.ProductionLogRaw -- -- Use: -- EXECUTE ext.stp_filterProductionLogRow 0 -- selezione record -- EXECUTE ext.stp_filterProductionLogRow 1 -- cancellazione record -- -- SELECT * FROM tmp.ExcludeCondFilter -- Tabella con i filtri -- SELECT * FROM ext.ProductionLogRaw_KO -- Tabella dove eseguo delete -- -- ============================================= CREATE PROCEDURE [ext].[stp_filterProductionLogRow] ( @flgDelete AS TINYINT = 0 -- 0 = solo select 1 = fa delete ) AS BEGIN -- DECLARE @flgDelete AS TINYINT = 1; -- 0 DECLARE @Sql AS NVARCHAR(MAX) = ''; DECLARE @TotRighe AS INT = 0; DECLARE @Riga AS INT = 1; DECLARE @WhereCond AS NVARCHAR(4000); IF OBJECT_ID('tempdb..#tmpTable') IS NOT NULL DROP TABLE #tmpTable -- creo sql di base x select o delete IF @flgDelete = 0 -- voglio fare solo select SET @Sql = 'SELECT * FROM ext.ProductionLogRaw WHERE 1=0' -- per test ELSE SET @Sql = 'DELETE FROM ext.ProductionLogRaw WITH (TABLOCK) OUTPUT deleted.* INTO ext.ProductionLogRaw_KO -- salvo i record cancellati in tabella KO ( EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies, CodClient, OrderNum, BatchNum, ProcessType, EventType, RawMat, CodPackag, QtyIN, QtyOUT, QtyEXT, NumIN, NumOUT, QuotaPlant, QuotaMan, Tags ) WHERE 1=0' -- carico in tabella i filtri ( record da cancellare ) SELECT ROW_NUMBER() OVER ( ORDER BY TableName, FieldName) AS Riga, * INTO #tmpTable FROM tmp.ExcludeCondFilter WHERE TableName = 'ProductionLogRaw' SET @TotRighe = @@ROWCOUNT; -- accodo le condizioni di where allo statement iniziale ( collegate con OR ) IF @TotRighe > 0 BEGIN WHILE @Riga <= @TotRighe BEGIN SELECT @WhereCond = WhereCond FROM #tmpTable WHERE Riga = @Riga SET @Sql = @Sql + ' OR ' + @WhereCond; SET @Riga = @Riga + 1; END END -- Ritorno la select eseguita SELECT @Sql -- ======================================================= -- Eseguo la select/delete e ritorno i record elaborati -- ======================================================= EXEC sp_executesql @Sql SELECT @@ROWCOUNT -- SELECT * FROM ext.ProductionLogRaw_KO IF OBJECT_ID('tempdb..#tmpTable') IS NOT NULL DROP TABLE #tmpTable END GO PRINT N'Creating [ext].[stp_mergePackagDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.29 -- Description: Procedura per import dati in PackagDet da dati ProductionLogRaw/PackagRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergePackagDet] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e PackagRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLogRaw' -- carico da tracciato produzione BEGIN MERGE INTO PackagDet AS Target USING (SELECT DISTINCT CodPackag FROM ext.ProductionLogRaw) AS Source ON Target.CodPackag = Source.CodPackag --WHEN MATCHED THEN -- UPDATE SET PackagName = Source.PackagName WHEN NOT MATCHED BY TARGET THEN INSERT (CodPackag, PackagDesc, RMCost, RMWeight) VALUES (CodPackag, '#### - ' + CodPackag, 0, 0) OUTPUT $action INTO @SummaryOfChanges; END ELSE IF @source = 'PackagRaw' -- carico da anagrafica BEGIN MERGE INTO PackagDet AS Target USING (SELECT CodPackag, PackagDesc, RMCost, RMWeight FROM ext.PackagRaw) AS Source ON Target.CodPackag = Source.CodPackag WHEN MATCHED THEN UPDATE SET PackagDesc = Source.PackagDesc, RMCost = Source.RMCost, RMWeight = Source.RMWeight WHEN NOT MATCHED BY TARGET THEN INSERT (CodPackag, PackagDesc, RMCost, RMWeight) VALUES (CodPackag, PackagDesc, RMCost, RMWeight) OUTPUT $action INTO @SummaryOfChanges; END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergeDiesGroupDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.08 -- Description: Procedura per import dati in DiesDet da dati DiesGroupRaw -- Il caricamento principale avviene tramite DiesRaw, questa -- serve solo per completare i dati mancanti -- ============================================= CREATE PROCEDURE [ext].[stp_mergeDiesGroupDet] AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); SET XACT_ABORT ON BEGIN TRAN -- vado ad aggiornare i dati dei gruppi di matrici SOLO x i campi <> 0 ( li ritengo come non passati ) MERGE INTO dbo.DiesGroupDet AS Target USING ( SELECT * FROM ext.DiesGroupRaw ) AS Source ON Target.CodDiesGroup = Source.CodDiesGroup WHEN MATCHED THEN UPDATE SET Price = CASE Source.Price WHEN 0 THEN Target.Price ELSE Source.Price END , QtyTot = CASE Source.QtyTot WHEN 0 THEN Target.QtyTot ELSE Source.QtyTot END , QtyEOL = CASE Source.QtyEOL WHEN 0 THEN Target.QtyEOL ELSE Source.QtyEOL END , ExpLife = CASE Source.ExpLife WHEN 0 THEN Target.ExpLife ELSE Source.ExpLife END , EOLLife = CASE Source.EOLLife WHEN 0 THEN Target.EOLLife ELSE Source.EOLLife END , DateMod = GETDATE() , UserMod = 'UPDATE_DiesGroupRaw' WHEN NOT MATCHED BY TARGET THEN INSERT ( CodDiesGroup, Price, QtyTot, QtyEOL, ExpLife, EOLLife, DateMod, UserMod ) VALUES ( Source.CodDiesGroup, Source.Price, Source.QtyTot, Source.QtyEOL, Source.ExpLife, Source.EOLLife, GETDATE(), 'INSERT_DiesGroupRaw' ) -- VALUES ( CodDiesGroup, 0, 1, 0, 0.1, 0.1 ) -- mi da errori in calcoli successivi altrimenti con 0 a ExpLife e EOLLife OUTPUT $action INTO @SummaryOfChanges; COMMIT TRAN -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergeCost2Plant]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.03 -- Description: Procedura per import dati in Cost2Plant da dati ProductionLogRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergeCost2Plant] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLogRaw' -- carico da tracciato produzione BEGIN MERGE INTO Cost2Plant AS Target USING (SELECT DISTINCT CodPlant, ProcessNum FROM ext.ProductionLogRaw) AS Source ON Target.CodPlant = Source.CodPlant --WHEN MATCHED THEN -- UPDATE SET PackagName = Source.PackagName WHEN NOT MATCHED BY TARGET THEN INSERT (CodPlant, ProcessNum) VALUES (CodPlant, ProcessNum) OUTPUT $action INTO @SummaryOfChanges; END --ELSE IF @source = 'PackagRaw' -- carico da anagrafica -- BEGIN -- MERGE INTO PackagDet AS Target -- USING (SELECT CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight FROM ext.PackagRaw) -- AS Source -- ON Target.CodPackag = Source.CodPackag -- WHEN MATCHED THEN -- UPDATE SET PackagDesc = Source.PackagDesc, RMCost = Source.RMCost, RMWeight = Source.RMWeight, Tare = Source.Tare, FullWeight = Source.FullWeight -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight) VALUES (CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight) -- OUTPUT $action INTO @SummaryOfChanges; -- END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergePlantsDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.03 -- Description: Procedura per import dati in PlantsDet da dati ProductionLogRaw -- ============================================= create PROCEDURE [ext].[stp_mergePlantsDet] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e PackagRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLogRaw' -- carico da tracciato produzione BEGIN MERGE INTO PlantsDet AS Target USING (SELECT DISTINCT CodPlant FROM ext.ProductionLogRaw) AS Source ON Target.CodPlant = Source.CodPlant --WHEN MATCHED THEN -- UPDATE SET PackagName = Source.PackagName WHEN NOT MATCHED BY TARGET THEN INSERT (CodPlant, Descript) VALUES (CodPlant, '#### - ' + CodPlant) OUTPUT $action INTO @SummaryOfChanges; END --ELSE IF @source = 'PackagRaw' -- carico da anagrafica -- BEGIN -- MERGE INTO PackagDet AS Target -- USING (SELECT CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight FROM ext.PackagRaw) -- AS Source -- ON Target.CodPackag = Source.CodPackag -- WHEN MATCHED THEN -- UPDATE SET PackagDesc = Source.PackagDesc, RMCost = Source.RMCost, RMWeight = Source.RMWeight, Tare = Source.Tare, FullWeight = Source.FullWeight -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight) VALUES (CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight) -- OUTPUT $action INTO @SummaryOfChanges; -- END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergeAgentsDet]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.03 -- Description: Procedura per import dati in AgentsDet da dati ClientsRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergeAgentsDet] ( @source NVARCHAR(20) = 'ClientsRaw' -- nome della tabella sorgente tra ProductionLogRaw e AgentssRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ClientsRaw' -- carico da anagrafica BEGIN MERGE INTO AgentsDet AS Target USING (SELECT DISTINCT CodAg FROM ext.ClientsRaw) AS Source ON Target.CodAg = Source.CodAg --WHEN MATCHED THEN -- UPDATE SET AgentsName = Source.AgentsName, CodAg = Source.CodAg, ZipCode = Source.ZipCode, City = Source.City, [State] = Source.[State], Nation = Source.Nation WHEN NOT MATCHED BY TARGET THEN INSERT (CodAg, Firstname, Lastname, QuotaProvvAg) VALUES (CodAg, '#### - '+ CodAg, '#### - ' + CodAg, 0) OUTPUT $action INTO @SummaryOfChanges; END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_updateProductionLog]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.29 -- Description: Procedura per import dati in ProductionLog da dati ProductionLogRaw -- -- ATTENZIONE: dato l'intervallo temporale in ext.ProductionLogRaw eventuali dati precedenti in dbo.ProductionLog saranno eliminati -- ============================================= CREATE PROCEDURE [ext].[stp_updateProductionLog] AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @deleted INT = 0 ,@inserted INT = 0 ,@fromDate DATETIME = GETDATE() ,@toDate DATETIME = GETDATE() -- primo step: calcolo inizio/fine periodo... SELECT @fromDate=MIN(EventStart), @toDate=MAX(EventStart) FROM ext.ProductionLogRaw -- secondo step: elimino dal tracciato tutti i dati dal periodo indicato DELETE FROM dbo.ProductionLog WHERE EventStart BETWEEN @fromDate AND @toDate SELECT @deleted = ISNULL(@@ROWCOUNT,0) -- inserisco i nuovi dati INSERT INTO dbo.ProductionLog SELECT * FROM ext.ProductionLogRaw SELECT @inserted = ISNULL(@@ROWCOUNT,0) -- riporto in output quanto eliminato/inserito SELECT @deleted as RecDeleted, @inserted as RecInserted END GO PRINT N'Creating [ext].[stp_mergeRawMat]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.02 -- Description: Procedura per import dati in PackagDet da dati ProductionLogRaw/PackagRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergeRawMat] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e PackagRaw ) AS BEGIN SET NOCOUNT ON; -- Create a temporary table variable to hold the output actions. DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- import con MERGE... verifico tipo di caricamento richiesto! IF @source = 'ProductionLogRaw' -- carico da tracciato produzione BEGIN MERGE INTO RawMatDet AS Target USING (SELECT DISTINCT RawMat FROM ext.ProductionLogRaw) AS Source ON Target.RawMat = Source.RawMat --WHEN MATCHED THEN -- UPDATE SET PackagName = Source.PackagName WHEN NOT MATCHED BY TARGET THEN INSERT (RawMat, ProcCost, ProcYield, CSR) VALUES (RawMat, 0, 0, 0) OUTPUT $action INTO @SummaryOfChanges; END --ELSE IF @source = 'PackagRaw' -- carico da anagrafica -- BEGIN -- MERGE INTO PackagDet AS Target -- USING (SELECT CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight FROM ext.PackagRaw) -- AS Source -- ON Target.CodPackag = Source.CodPackag -- WHEN MATCHED THEN -- UPDATE SET PackagDesc = Source.PackagDesc, RMCost = Source.RMCost, RMWeight = Source.RMWeight, Tare = Source.Tare, FullWeight = Source.FullWeight -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight) VALUES (CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight) -- OUTPUT $action INTO @SummaryOfChanges; -- END -- Query the results of the table variable. SELECT Change, COUNT(*) AS CountPerChange FROM @SummaryOfChanges GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergePackage2_OLD]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.15 -- Description: Procedura per import dati in Package2Item da dati ProductionLogRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergePackage2_OLD] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e ItemsRaw ) AS BEGIN SET NOCOUNT ON; ---- Create a temporary table variable to hold the output actions. --DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- -- import con MERGE... verifico tipo di caricamento richiesto! --IF @source = 'ProductionLogRaw' -- carico da tracciato produzione -- BEGIN -- MERGE INTO Package2 AS Target -- USING ( -- SELECT plr.CodPackag, SUM(QtyOUT) AS TotQta, COUNT(*) AS NumEv -- , SUM(QtyOUT) / COUNT(*) AS PesoMedio -- , SUM(QtyEXT) / COUNT(*) AS TaraMedia -- FROM ext.ProductionLogRaw plr -- INNER JOIN DiesDet dd ON plr.CodDies = dd.CodDies -- WHERE ISNULL(plr.CodPackag, '') <> '' -- GROUP BY plr.CodPackag -- ) -- AS Source -- ON Target.CodPackag = Source.CodPackag -- WHEN MATCHED THEN -- UPDATE SET TotQty = Source.TotQta -- , [Weight] = Source.PesoMedio -- , Tare = Source.TaraMedia -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodPackag, TotQty, [Weight], Tare) VALUES (CodPackag, TotQta, PesoMedio, TaraMedia) -- OUTPUT $action INTO @SummaryOfChanges; -- END ----ELSE IF @source = 'ItemsRaw' -- carico da anagrafica ---- BEGIN ---- MERGE INTO Item2Package AS Target ---- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) ---- AS Source ---- ON Target.CodItem = Source.CodItem ---- WHEN MATCHED THEN ---- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup ---- WHEN NOT MATCHED BY TARGET THEN ---- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) ---- OUTPUT $action INTO @SummaryOfChanges; ---- END ---- Query the results of the table variable. --SELECT Change, COUNT(*) AS CountPerChange --FROM @SummaryOfChanges --GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergePackage2Item_OLD]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.15 -- Description: Procedura per import dati in Package2Item da dati ProductionLogRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergePackage2Item_OLD] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e ItemsRaw ) AS BEGIN SET NOCOUNT ON; ---- Create a temporary table variable to hold the output actions. --DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- -- import con MERGE... verifico tipo di caricamento richiesto! --IF @source = 'ProductionLogRaw' -- carico da tracciato produzione -- BEGIN -- MERGE INTO Package2Item AS Target -- USING ( -- SELECT dd.CodItem, plr.CodPackag, SUM(QtyOUT) AS TotQta, COUNT(*) AS NumEv -- , SUM(QtyOUT) / COUNT(*) AS PesoMedio -- , SUM(QtyEXT) / COUNT(*) AS TaraMedia -- FROM ext.ProductionLogRaw plr -- INNER JOIN DiesDet dd ON plr.CodDies = dd.CodDies -- WHERE ISNULL(plr.CodPackag, '') <> '' -- GROUP BY dd.CodItem, plr.CodPackag -- ) -- AS Source -- ON Target.CodItem = Source.CodItem AND Target.CodPackag = Source.CodPackag -- WHEN MATCHED THEN -- UPDATE SET TotQty = Source.TotQta -- , [Weight] = Source.PesoMedio -- , Tare = Source.TaraMedia -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodItem, CodPackag, TotQty, [Weight], Tare) VALUES (CodItem, CodPackag, TotQta, PesoMedio, TaraMedia) -- OUTPUT $action INTO @SummaryOfChanges; -- END ----ELSE IF @source = 'ItemsRaw' -- carico da anagrafica ---- BEGIN ---- MERGE INTO Item2Package AS Target ---- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) ---- AS Source ---- ON Target.CodItem = Source.CodItem ---- WHEN MATCHED THEN ---- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup ---- WHEN NOT MATCHED BY TARGET THEN ---- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) ---- OUTPUT $action INTO @SummaryOfChanges; ---- END ---- Query the results of the table variable. --SELECT Change, COUNT(*) AS CountPerChange --FROM @SummaryOfChanges --GROUP BY Change; END GO PRINT N'Creating [ext].[stp_mergePackage2ItemClient_OLD]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.27 -- Description: Procedura per import dati in Package2ItemClient da dati ProductionLogRaw -- ============================================= CREATE PROCEDURE [ext].[stp_mergePackage2ItemClient_OLD] ( @source NVARCHAR(20) = 'ProductionLogRaw' -- nome della tabella sorgente tra ProductionLogRaw e ItemsRaw ) AS BEGIN SET NOCOUNT ON; ---- Create a temporary table variable to hold the output actions. --DECLARE @SummaryOfChanges TABLE(Change VARCHAR(20)); -- -- import con MERGE... verifico tipo di caricamento richiesto! --IF @source = 'ProductionLogRaw' -- carico da tracciato produzione -- BEGIN -- MERGE INTO Package2ItemClient AS Target -- USING ( -- SELECT dd.CodItem, plr.CodClient, plr.CodPackag, SUM(QtyOUT) AS TotQta, COUNT(*) AS NumEv -- , SUM(QtyOUT) / COUNT(*) AS PesoMedio -- , SUM(QtyEXT) / COUNT(*) AS TaraMedia -- FROM ext.ProductionLogRaw plr -- INNER JOIN DiesDet dd ON plr.CodDies = dd.CodDies -- WHERE ISNULL(plr.CodPackag, '') <> '' -- GROUP BY dd.CodItem, plr.CodClient, plr.CodPackag -- ) -- AS Source -- ON Target.CodItem = Source.CodItem AND Target.CodClient = Source.CodClient AND Target.CodPackag = Source.CodPackag -- WHEN MATCHED THEN -- UPDATE SET TotQty = Source.TotQta -- , [Weight] = Source.PesoMedio -- , Tare = Source.TaraMedia -- WHEN NOT MATCHED BY TARGET THEN -- INSERT (CodItem, CodClient, CodPackag, TotQty, [Weight], Tare) VALUES (CodItem, CodClient, CodPackag, TotQta, PesoMedio, TaraMedia) -- OUTPUT $action INTO @SummaryOfChanges; -- END ----ELSE IF @source = 'ItemsRaw' -- carico da anagrafica ---- BEGIN ---- MERGE INTO Item2PackageClient AS Target ---- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) ---- AS Source ---- ON Target.CodItem = Source.CodItem ---- WHEN MATCHED THEN ---- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup ---- WHEN NOT MATCHED BY TARGET THEN ---- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) ---- OUTPUT $action INTO @SummaryOfChanges; ---- END ---- Query the results of the table variable. --SELECT Change, COUNT(*) AS CountPerChange --FROM @SummaryOfChanges --GROUP BY Change; END GO PRINT N'Creating [tmp].[importClientsRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.29 -- Description: Procedura per import dati in tabella tmp da file csv -- ============================================= CREATE PROCEDURE [tmp].[importClientsRaw] ( @fileType NVARCHAR(50) = 'ClientsRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'ClientsRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE tmp.ClientsRaw -- carico dati bulk! BULK INSERT tmp.ClientsRaw FROM 'e:\test\ClientsRaw.csv' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorClients.log') --WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorClients.log', CODEPAGE = '1252') SELECT COUNT(*) as RecordsIn FROM tmp.ClientsRaw END END GO PRINT N'Creating [tmp].[importItemsRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.29 -- Description: Procedura per import dati in tabella tmp da file csv -- ============================================= CREATE PROCEDURE [tmp].[importItemsRaw] ( @fileType NVARCHAR(50) = 'ItemsRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'ItemsRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE tmp.ItemsRaw -- carico dati bulk! BULK INSERT tmp.ItemsRaw FROM 'e:\test\ItemsRaw.csv' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorItems.log') --WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorItems.log', CODEPAGE = '1252') SELECT COUNT(*) as RecordsIn FROM tmp.ItemsRaw END END GO PRINT N'Creating [tmp].[importDiesGroupRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.02 -- Description: Procedura per import dati in tabella tmp da file csv -- ============================================= CREATE PROCEDURE [tmp].[importDiesGroupRaw] ( @fileType NVARCHAR(50) = 'DiesGroupRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'DiesGroupRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE tmp.DiesGroupRaw -- carico dati bulk! BULK INSERT tmp.DiesGroupRaw FROM 'e:\test\DiesGroupRaw.csv' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorDiesGroup.log') --WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorDiesGroup.log', CODEPAGE = '1252') SELECT COUNT(*) as RecordsIn FROM tmp.DiesGroupRaw END END GO PRINT N'Creating [tmp].[importTranspCostRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.16 -- Description: Procedura per import dati in tabella tmp da file csv -- ============================================= create PROCEDURE [tmp].[importTranspCostRaw] ( @fileType NVARCHAR(50) = 'TranspCostRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'TranspCostRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE tmp.TranspCostRaw -- carico dati bulk! BULK INSERT tmp.TranspCostRaw FROM 'e:\test\TranspCostRaw.csv' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorTranspCost.log') --WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorTranspCost.log', CODEPAGE = '1252') SELECT COUNT(*) as RecordsIn FROM tmp.TranspCostRaw END END GO PRINT N'Creating [tmp].[convertDiesRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.02 -- Description: Procedura per conversione e tipizzazione dati da tmp a ext x DiesRaw -- ============================================= CREATE PROCEDURE [tmp].[convertDiesRaw] ( @fileType NVARCHAR(50) = 'DiesRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'DiesRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE ext.DiesRaw -- inserisco con cast valori... INSERT ext.DiesRaw WITH (TABLOCK) ( CodDies, HoleNum, CodItem, CodDiesGroup, Price, ExpLife, ActLife, Active ) SELECT CodDies, CAST(ISNULL(HoleNum,0) AS INT) AS HoleNum, CodItem, CodDiesGroup, CAST( CAST( REPLACE( '0' + Price,',','.' )AS float )AS decimal( 9,3 )) AS Price, CAST( CAST( REPLACE( '0' + ExpLife,',','.' )AS float )AS decimal( 9,2 )) AS ExpLife, CAST( CAST( REPLACE( '0' + ActLife,',','.' )AS float )AS decimal( 9,2 )) AS ActLife, CAST(ISNULL(Active,0) AS INT) AS Active FROM tmp.DiesRaw; SELECT COUNT(*) as RecordsIn FROM ext.DiesRaw END END GO PRINT N'Creating [tmp].[convertClientsRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.28 -- Description: Procedura per conversioen e tipizzazione dati da tmp a ext x ClientsRaw -- ============================================= CREATE PROCEDURE [tmp].[convertClientsRaw] ( @fileType NVARCHAR(50) = 'ClientsRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'ClientsRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE ext.ClientsRaw -- inserisco con cast valori... INSERT ext.ClientsRaw WITH (TABLOCK) ( CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone) SELECT CodClient, ClientName, CodAg, ZipCode, City, [State], Nation, TranspZone FROM tmp.ClientsRaw; SELECT COUNT(*) as RecordsIn FROM ext.ClientsRaw END END GO PRINT N'Creating [tmp].[importDiesRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.12.02 -- Description: Procedura per import dati in tabella tmp da file csv -- ============================================= create PROCEDURE [tmp].[importDiesRaw] ( @fileType NVARCHAR(50) = 'DiesRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'DiesRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE tmp.DiesRaw -- carico dati bulk! BULK INSERT tmp.DiesRaw FROM 'e:\test\DiesRaw.csv' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorDies.log') --WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorDies.log', CODEPAGE = '1252') SELECT COUNT(*) as RecordsIn FROM tmp.DiesRaw END END GO PRINT N'Creating [tmp].[convertItemsRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.28 -- Description: Procedura per conversioen e tipizzazione dati da tmp a ext x ItemsRaw -- ============================================= CREATE PROCEDURE [tmp].[convertItemsRaw] ( @fileType NVARCHAR(50) = 'ItemsRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'ItemsRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE ext.ItemsRaw -- inserisco con cast valori... INSERT ext.ItemsRaw WITH (TABLOCK) ( CodItem, ItemDescr, UnitWeight, CodPlant, CodItemGroup, Class01, Class02, Class03, Class04, Class05 ) SELECT DISTINCT CodItem, ItemDescr, CAST( CAST( REPLACE( '0' + UnitWeight,',','.' )AS float )AS decimal( 9,3 )) AS UnitWeight, CodPlant, CodItemGroup, Class01, Class02, Class03, Class04, Class05 FROM tmp.ItemsRaw; SELECT COUNT(*) as RecordsIn FROM ext.ItemsRaw END END GO PRINT N'Creating [tmp].[convertDiesGroupRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2014.01.08 -- Description: Procedura per conversione e tipizzazione dati da tmp a ext x DiesGroupRaw -- ============================================= CREATE PROCEDURE [tmp].[convertDiesGroupRaw] ( @fileType NVARCHAR(50) = 'DiesGroupRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'DiesGroupRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE ext.DiesGroupRaw -- inserisco con cast valori... INSERT ext.DiesGroupRaw WITH (TABLOCK) ( CodDiesGroup, Price, QtyTot, QtyEOL, ExpLife, EOLLife) SELECT CodDiesGroup, CAST( CAST( REPLACE( '0' + REPLACE(Price,'.',''),',','.' ) AS float )AS decimal( 9,3 )) AS Price, CAST(ISNULL(QtyTot,0) AS INT) AS QtyTot, CAST(ISNULL(QtyEOL,0) AS INT) AS QtyEOL, CAST( CAST( REPLACE( '0' + REPLACE(ExpLife,'.',''),',','.' ) AS float )AS decimal( 9,2 )) AS ExpLife, CAST( CAST( REPLACE( '0' + REPLACE(EOLLife,'.',''),',','.' ) AS float )AS decimal( 9,2 )) AS EOLLife FROM tmp.DiesGroupRaw; SELECT COUNT(*) as RecordsIn FROM ext.DiesGroupRaw END END GO PRINT N'Creating [tmp].[convertPackagRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.29 -- Description: Procedura per conversioen e tipizzazione dati da tmp a ext x PackagRaw -- ============================================= CREATE PROCEDURE [tmp].[convertPackagRaw] ( @fileType NVARCHAR(50) = 'PackagRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'PackagRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE ext.PackagRaw -- inserisco con cast valori... INSERT ext.PackagRaw WITH (TABLOCK) ( CodPackag, PackagDesc, RMCost, RMWeight, Tare, FullWeight ) SELECT CodPackag, PackagDesc, CAST( CAST( REPLACE( '0' + RMCost,',','.' )AS float )AS decimal( 9,3 )) AS RMCost, CAST( CAST( REPLACE( '0' + RMWeight,',','.' )AS float )AS decimal( 9,4 )) AS RMWeight, CAST( CAST( REPLACE( '0' + Tare,',','.' )AS float )AS decimal( 9,4 )) AS Tare, CAST( CAST( REPLACE( '0' + FullWeight,',','.' )AS float )AS decimal( 9,4 )) AS FullWeight FROM tmp.PackagRaw; SELECT COUNT(*) as RecordsIn FROM ext.PackagRaw END END GO PRINT N'Creating [tmp].[importPackagRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.29 -- Description: Procedura per import dati in tabella tmp da file csv -- ============================================= create PROCEDURE [tmp].[importPackagRaw] ( @fileType NVARCHAR(50) = 'PackagRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'PackagRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE tmp.PackagRaw -- carico dati bulk! BULK INSERT tmp.PackagRaw FROM 'e:\test\PackagRaw.csv' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorPackag.log') --WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorPackag.log', CODEPAGE = '1252') SELECT COUNT(*) as RecordsIn FROM tmp.PackagRaw END END GO PRINT N'Creating [tmp].[convertProductionLogRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.28 -- Description: Procedura per conversioen e tipizzazione dati da tmp a ext x ProductionLogRaw -- ============================================= CREATE PROCEDURE [tmp].[convertProductionLogRaw] ( @fileType NVARCHAR(50) = 'ProductionLogRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'ProductionLogRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE ext.ProductionLogRaw -- inserisco con cast valori... INSERT ext.ProductionLogRaw WITH (TABLOCK) ( EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies, CodClient, OrderNum, BatchNum, ProcessType, EventType, RawMat, CodPackag, QtyIN, QtyOUT, QtyEXT, NumIN, NumOUT, QuotaPlant, QuotaMan, Tags, okPr, okQM, okSc, okDi ) SELECT dbo.f_dtFromRaw( EventStart ) AS EventStart, -- record nulli sono già stati cancellati dbo.f_dtFromRaw( EventEnd ) AS EventEnd, -- record nulli sono già stati cancellati dbo.f_trim(ISNULL(CodPlant ,'')), dbo.f_trim(ISNULL(ProcessNum ,'')), dbo.f_trim(ISNULL(NrPos ,'')), dbo.f_trim(ISNULL(CodDies ,'')), dbo.f_trim(ISNULL(CodClient ,'')), dbo.f_trim(ISNULL(OrderNum ,'')), dbo.f_trim(ISNULL(BatchNum ,'')), dbo.f_trim(ISNULL(ProcessType,'')), dbo.f_trim(ISNULL(EventType ,'')), dbo.f_trim(ISNULL(RawMat ,'')), dbo.f_trim(ISNULL(CodPackag ,'')), CAST( CAST( REPLACE( '0' + ISNULL(QtyIN,'') ,',','.' ) AS float ) AS decimal( 18,4 )) AS QtyIN, CAST( CAST( REPLACE( '0' + ISNULL(QtyOUT,''),',','.' ) AS float ) AS decimal( 18,4 )) AS QtyOUT, CAST( CAST( REPLACE( '0' + ISNULL(QtyEXT,''),',','.' ) AS float ) AS decimal( 18,4 )) AS QtyEXT, CAST( ISNULL(NumIN ,'') AS int )AS NumIN, CAST( ISNULL(NumOUT ,'') AS int )AS NumOUT, CAST( CAST( REPLACE( '0' + ISNULL(QuotaPlant,''),',','.' ) AS float )AS decimal( 9,4 )) AS QuotaPlant, CAST( CAST( REPLACE( '0' + ISNULL(QuotaMan,''),',','.' ) AS float )AS decimal( 9,4 )) AS QuotaMan, dbo.f_trim(ISNULL(Tags ,'')), okPr, okQM, okSc, okDi FROM tmp.ProductionLogRaw; SELECT COUNT(*) as RecordsIn FROM ext.ProductionLogRaw END END GO PRINT N'Creating [tmp].[importProductionLogRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.28 -- Description: Procedura per import dati in tabelal tmp da file csv -- -- TRUNCATE TABLE tmp.ProductionLogRaw_KO -- -- ============================================= CREATE PROCEDURE [tmp].[importProductionLogRaw] ( @fileType NVARCHAR(50) = 'ProductionLogRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'ProductionLogRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE tmp.ProductionLogRaw -- carico dati bulk! BULK INSERT tmp.ProductionLogRaw FROM 'e:\test\ProductRaw.csv' WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorProduct.log') --WITH (FIELDTERMINATOR = ';', ROWTERMINATOR = '\n', FIRSTROW = 2, ERRORFILE = 'e:\test\errorProduct.log', CODEPAGE = '1252') -- =============================================================================== -- pulisco l tabella dai record con chiave duplicata ( se doppi li elimino tutti ) -- =============================================================================== SET XACT_ABORT ON; BEGIN TRAN -- salvo i dati con chiave duplicata INSERT INTO tmp.ProductionLogRaw_KO SELECT Prod.*, GETDATE() FROM tmp.ProductionLogRaw AS Prod INNER JOIN ( SELECT EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies FROM tmp.ProductionLogRaw GROUP BY EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies HAVING COUNT(*)>1 ) AS Dupl ON Prod.EventStart = Dupl.EventStart AND Prod.EventEnd = Dupl.EventEnd AND Prod.CodPlant = Dupl.CodPlant AND Prod.ProcessNum = Dupl.ProcessNum AND Prod.NrPos = Dupl.NrPos AND Prod.CodDies = Dupl.CodDies -- Cancello i record con chiave duplicata DELETE Prod WITH (TABLOCK) FROM tmp.ProductionLogRaw AS Prod INNER JOIN ( SELECT EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies FROM tmp.ProductionLogRaw GROUP BY EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies HAVING COUNT(*)>1 ) AS Dupl ON Prod.EventStart = Dupl.EventStart AND Prod.EventEnd = Dupl.EventEnd AND Prod.CodPlant = Dupl.CodPlant AND Prod.ProcessNum = Dupl.ProcessNum AND Prod.NrPos = Dupl.NrPos AND Prod.CodDies = Dupl.CodDies -- =============================================================================== -- pulisco la tabella dai record con date non corrette -- =============================================================================== DELETE FROM tmp.ProductionLogRaw WITH (TABLOCK) OUTPUT deleted.* INTO tmp.ProductionLogRaw_KO -- salvo i record cancellati in tabella KO ( EventStart, EventEnd, CodPlant, ProcessNum, NrPos, CodDies, CodClient, OrderNum, BatchNum, ProcessType, EventType, RawMat , CodPackag, QtyIN, QtyOUT, QtyEXT, NumIN, NumOUT, QuotaPlant, QuotaMan, Tags, okPr, okQM, okSc, okDi ) WHERE EventStart >= EventEnd OR CONVERT( BIGINT , EventStart ) + 68000000000000 <= EventEnd -- record che darebbero errore poi nel datediff > 68 anni OR EventStart IS NULL OR EventEnd IS NULL -- SELECT * FROM tmp.ProductionLogRaw_KO --ROLLBACK COMMIT SELECT COUNT(*) AS RecordsIn FROM tmp.ProductionLogRaw END END GO PRINT N'Creating [tmp].[convertTranspCostRaw]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.28 -- Description: Procedura per conversioen e tipizzazione dati da tmp a ext x TranspCostRaw -- ============================================= CREATE PROCEDURE [tmp].[convertTranspCostRaw] ( @fileType NVARCHAR(50) = 'TranspCostRaw' ) AS BEGIN SET NOCOUNT ON; -- per Giancarlo: rendere parametrico con esecuzione sql x poter inserire nei parametri il separatore ed il resto? http://www.sqlteam.com/article/using-bulk-insert-to-load-a-text-file IF @fileType = 'TranspCostRaw' BEGIN -- svuoto tabella temp TRUNCATE TABLE ext.TranspCostRaw -- inserisco con cast valori... INSERT ext.TranspCostRaw WITH (TABLOCK) (TranspZone, TranspCost) SELECT TranspZone, MAX(CAST( CAST( REPLACE( '0' + TranspCost,',','.' )AS float )AS decimal( 18,9 ))) AS TranspCost FROM tmp.TranspCostRaw GROUP BY TranspZone SELECT COUNT(*) as RecordsIn FROM ext.TranspCostRaw END END GO PRINT N'Creating [dbo].[stp_QL_fullData]...'; GO -- ============================================= -- STORED PROCEDURE stp_QL_fullData -- -- Author: Steamware -- Create date: 2014.01.27 -- Description: Recupera tutti i dati dalle tab QuoteList x avere schema x report/gestioen web -- ============================================= CREATE PROCEDURE [dbo].[stp_QL_fullData] ( @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 EXEC stp_QL_fullDataUpdate @QuoteType , @CodQuote , @QuoteRev , @DoUpdate ---- calcolo con aggiunta campi sommati... --SELECT * -- , FVC + RawMatFullCost AS P_FVC -- , FC4UG01 + OH4UG01 AS CPS -- , FC4UG01 + OH4UG01 + FVC + RawMatFullCost AS P_CPS -- , FC4UG04 + FVC + RawMatFullCost AS P_FC4UG04 -- , FVC + FC4UG01 + OH4UG01 + FC4UG04 AS FullCost -- , FVC + FC4UG01 + OH4UG01 + FC4UG04 + RawMatFullCost AS P_FullCost -- , Charge * (FVC + FC4UG01 + OH4UG01 + FC4UG04) AS MinPrice -- , Charge * (FVC + FC4UG01 + OH4UG01 + FC4UG04 + RawMatFullCost) AS P_MinPrice -- , PriceOff + RawMatFullCost AS P_PriceOff -- , (FVC + FC4UG01 + OH4UG01 + FC4UG04) - PriceOff AS NetMar -- , (PriceOff - FVC) / (FC4UG01 + OH4UG01 + FC4UG04) AS FCShield -- , (PRMWeight - Ptare) * (PriceOff + RawMatFullCost) / Pweight AS PckSur --FROM QuoteFull_Q --WHERE QuoteType = @QuoteType -- AND CodQuote = @CodQuote -- AND QuoteRev = @QuoteRev -- calcolo con aggiunta campi sommati... SELECT * FROM v_QuoteFull_Q WHERE QuoteType = @QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev RETURN GO PRINT N'Creating [dbo].[stp_QuoteFull_Q_update]...'; GO -- ============================================= -- Author: Steamware -- Create date: 2014.02.07 -- Description: update valori tab QuoteList -- ============================================= CREATE PROCEDURE [dbo].[stp_QuoteFull_Q_update] ( @Original_QuoteType CHAR(1) = 'Q' ,@Original_CodQuote BIGINT = 0 ,@Original_QuoteRev INT = 0 ,@PriceOff DECIMAL(9, 6) = 0 ) AS BEGIN -- aggiorno valori! 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 END GO PRINT N'Creating [dbo].[stp_zzz_scratch]...'; GO -- ============================================= -- Author: S.E. Locatelli -- Create date: 2013.11.20 -- Description: Procedure x calcoli e test import dati e prove varie -- ============================================= CREATE PROCEDURE [dbo].[stp_zzz_scratch] AS BEGIN -- dichiaro e imposto periodo di calcolo dei valori -- andrà impostato in una tabella e mi determinerà la versione dei dati DECLARE @dateFrom AS DateTime; DECLARE @dateTo AS DateTime; SET @dateFrom = '20100101' SET @dateTo = '20130929' -- ========================================== -- IMPORTAZIONE DATI CSV -- ========================================== exec tmp.importProductionLogRaw exec tmp.importClientsRaw exec tmp.importTranspCostRaw exec tmp.importItemsRaw exec tmp.importPackagRaw exec tmp.importDiesRaw -- questo sotto va fatto solo se ci sono dati da integrare in DiesRaw exec tmp.importDiesGroupRaw select top 10 * FROM tmp.ProductionLogRaw select * FROM tmp.ClientsRaw select * FROM tmp.ItemsRaw select * FROM tmp.PackagRaw select * FROM tmp.DiesRaw select * FROM tmp.DiesGroupRaw -- Se ci sono record con Item doppi li cancello???? SELECT CodItem,COUNT(*) as qty FROM ( SELECT DISTINCT * FROM tmp.ItemsRaw ) AS a GROUP BY CodItem having COUNT(*)>1 delete from tmp.ItemsRaw where CodItem IN ( SELECT CodItem FROM ( SELECT DISTINCT * FROM tmp.ItemsRaw ) AS a GROUP BY CodItem having COUNT(*)>1 ) -- ========================================== -- CARICO DATI IN RAW ( da Char a Tipi corretti ) -- ========================================== exec tmp.convertClientsRaw exec tmp.convertTranspCostRaw exec tmp.convertItemsRaw exec tmp.convertProductionLogRaw exec tmp.convertPackagRaw exec tmp.convertDiesRaw -- necessario se integriamo i dati x i gruppi di matrici con un file exec tmp.convertDiesGroupRaw select top 10 * FROM ext.ProductionLogRaw select * FROM ext.ClientsRaw select * FROM ext.ItemsRaw select * FROM ext.PackagRaw select * FROM ext.DiesRaw SELECT * FROM ext.DiesGroupRaw -- elimino a mano dato con oltre 68 anni di evento... select * --delete from ext.ProductionLogRaw where DATEDIFF(YEAR,EventStart,EventEnd)> 10 exec ext.stp_mergeAgentsDet exec ext.stp_mergeClientDet 'ProductionLogRaw' exec ext.stp_mergeClientDet 'ClientsRaw' exec ext.stp_mergeTranspCostDet 'TranspCostRaw' exec ext.stp_mergePlantsDet exec ext.stp_mergeCost2Plant exec ext.stp_mergeItemDet 'ItemsRaw' exec ext.stp_mergePackagDet 'ProductionLogRaw' -- 'PackagRaw' exec ext.stp_mergePackage2ItemClient 'ProductionLog', @dateFrom, @dateTo exec ext.stp_mergePackage2Item 'ProductionLog', @dateFrom, @dateTo exec ext.stp_mergePackage2 'ProductionLog', @dateFrom, @dateTo exec ext.stp_mergeDiesDet -- se ricarico diesgroup... ricarico solo i campi che nel file sono <> '' exec ext.stp_mergeDiesGroupDet exec ext.stp_mergeRawMat exec ext.stp_updateProductionLog ---- aggiorno quota agenti a 0.037 ----update AgentsDet set quotaperc=0.0374 SELECT DISTINCT dr.CodItem FROM ext.DiesRaw dr LEFT OUTER JOIN ItemDet id ON dr.CodItem = id.CodItem where id.CodItemGroup is null select * from ClientDet select * from ItemDet select * from Package2ItemClient select * from Package2Item select * from Package2 select * from PackagDet select * from DiesGroupDet where EOLLife > 0 select * from DiesDet select * from DiesGroupDet select * from AgentsDet select * from PlantsDet select * from Cost2Plant select * from utilities select top 100 * from ProductionLog --update tmp.ProductionLogRaw --set -- okPr = 1 -- , okDi = 1 -- , okQM = 1 -- , okSc = 1 select distinct ProcessNum from ProductionLog select top 10 * from ext.ProductionLogRaw ---- fix errore packaging --update tmp.ProductionLogRaw --SET CodPackag='4' --where CodPackag LIKE '%4%' and CodPackag <> '4' --select * from tmp.ProductionLogRaw where CodPackag LIKE '%4%' and CodPackag <> '4' SELECT p.CodDies, CodItem, CodClient, CodPackag, p.* FROM ext.ProductionLogRaw AS p LEFT JOIN dbo.DiesDet AS d ON p.CodDies = d.CodDies WHERE CodItem IS NULL -- parte CALCOLI!!! select * from QuoteList select * from ClientDet where CodClient='05000001048' select * from itemdet where CodItem like '1PT00102%' select * from RawMatDet --Q 1312130001 0 05000001048 1PT00102 A 7020 7673,400 1000 CPT NULL NULL NULL NULL SELECT --TOP 10 dd.CodItem, pl.RawMat, dd.CodItem + '-' + pl.RawMat as KeyAM, dd.CodDiesGroup, pl.CodPlant, dd.HoleNum ,dd.CodItem + '-' + pl.RawMat + '-' + pl.CodPlant + '-' + CAST(dd.HoleNum AS NVARCHAR(19)) as KeyAMIL ,0 as NumSMED -- numero cambi, da sistemare... , SUM(QtyOUT) as KgTeorici, SUM(Duration) AS Durata ,ISNULL(SUM(QtyOUT),0)/ISNULL(SUM(Duration), 1) as ProduttTeo FROM ProductionLog pl INNER JOIN DiesDet dd ON pl.CodDies=dd.CodDies WHERE pl.ProcessNum='01' and pl.EventType=1 GROUP BY dd.CodItem, pl.RawMat, dd.CodDiesGroup, pl.CodPlant, dd.HoleNum ORDER BY dd.CodItem, pl.RawMat, dd.CodDiesGroup, SUM(QtyOUT) DESC -- ========================================== -- re-insert dei dati di produzione x statistiche -- ========================================== exec stp_TPS_upsert @dateFrom, @dateTo exec stp_TD_upsert @dateFrom , @dateTo -- exec stp_TI_upsert @dateFrom , @dateTo -- adesso sono già calcolati e inseriti in Package2 / Package2Item -- ========================================== -- salvo nuova revisione dati di produzione... -- Va messa in ogni procedura di update con 'procedura' e versione anno-mese-giorno -- ========================================== INSERT INTO RevHistory SELECT 'P', ISNULL(MAX(RevNum),0) + 1, GETDATE(), 'Aggiornamento dati di produzione x fase 04 ' + CONVERT(NVARCHAR(20), @dateFrom, 120) + ' --> ' +CONVERT(NVARCHAR(20), @dateTo, 120) FROM RevHistory WHERE RevType = 'P' select * from RevHistory -- simulazione tempo di calcolo: circa 50/sec ---- aggiornamento dei dati dell'offerta in oggetto --DECLARE @tick DATETIME, -- @idx INT = 100 --SET @tick = GETDATE() --WHILE @idx > 0 --BEGIN -- EXEC stp_QL_update 'Q', 1312130001, 0 -- SELECT @idx = @idx - 1 --END --SELECT GETDATE() - @tick as tempo DECLARE @QuoteType CHAR(1) = 'Q', @CodQuote BIGINT = 1312130001, @QuoteRev INT = 0 EXEC stp_QL_update @QuoteType, @CodQuote, @QuoteRev SELECT * FROM QuoteList WHERE QuoteType=@QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev SELECT * FROM QuoteRM WHERE QuoteType=@QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev SELECT * FROM QuoteWorkInt WHERE QuoteType=@QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev SELECT * FROM QuoteWorkExt WHERE QuoteType=@QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev SELECT * FROM QuoteOC WHERE QuoteType=@QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev SELECT * FROM QuoteParam WHERE QuoteType=@QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev select top 10 * from ItemDet SELECT * FROM RawMatDet SELECT top 10 * FROM TabProdSc SELECT top 10 * FROM TabDifett -- SELECT * FROM TabImbArt -- SELECT * FROM TabImbGrp SELECT * FROM PackagDet SELECT * FROM Package2 ---- test gestione selezione CodPackag corretto --SELECT TOP 5 * FROM Package2ItemClient --SELECT TOP 5 * FROM Package2Item --SELECT TOP 5 * FROM Package2 SELECT dbo.f_getCodPackag('1EL00005', '05000001048') --SELECT dbo.f_getCodPackag('1AN00001', '05000000137') END GO PRINT N'Creating [dbo].[stp_QL_update_30_01]...'; GO -- ============================================= -- Author: Steamware -- Create date: 2014.01.22 -- Description: aggiorna le tabelle QuoteList con i dati selezionati dalla TabProdSc -- ============================================= CREATE PROCEDURE [dbo].[stp_QL_update_30_01] ( @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" 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 -- PROVVIGIONI DECLARE @Provvig DECIMAL(9,6) -- provvigione agente -- 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 CREATE TABLE #QuoteParam ( [QuoteType] [char](1) NOT NULL, [CodQuote] [bigint] NOT NULL, [QuoteRev] [int] NOT NULL, [NumP] [int] IDENTITY(1,1) NOT NULL, [ProcessNum] [nvarchar](50) NOT NULL, [Descr] [nvarchar](50) NOT NULL, [Parameter] [nvarchar](100) NOT NULL, --PRIMARY KEY -- ( [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 CREATE TABLE #QuoteWorkInt ( [QuoteType] [char](1) NOT NULL, [CodQuote] [bigint] NOT NULL, [QuoteRev] [int] NOT NULL, [NumWI] [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 (''), [NetProd] [decimal](9, 3) NOT NULL DEFAULT ((0)), [WSR] [decimal](9, 8) NOT NULL DEFAULT ((0)), [MSR] [decimal](9, 8) NOT NULL DEFAULT ((0)), [DSR] [decimal](9, 8) NOT NULL DEFAULT ((0)), [FC4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [VC4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [OH4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [SC4UG] [decimal](9, 6) NOT NULL DEFAULT ((0)), [WYR] AS ((1)-[WSR]), [MYR] AS ((1)-[MSR]), [DYR] AS ((1)-[DSR]), [WCR] AS ((1)/((1)-[WSR])), [MCR] AS ((1)/((1)-[MSR])), [DCR] AS ((1)/((1)-[DSR])), [valid] [bit] NOT NULL DEFAULT((1)), ) -- elimino e ricreo #QuoteParam 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)) ) -- =================================== -- INIZIO TRANSAZIONE -- =================================== SET XACT_ABORT ON; BEGIN TRAN --------------------------------------- -- svuotamento iniziale --------------------------------------- -- 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 ), '' ) -- 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 , @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 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 -- recupero da dati dell'offerta il valore del package scelto SET @CodPackag = ( SELECT dbo.f_getCodPackag( @CodItem , @CodClient ) ) -- e aggiorno QuoteRM UPDATE dbo.QuoteRM SET CodPackag = @CodPackag 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) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'CodifProfilo', Class01 FROM dbo.ItemDet WHERE CodItem = @CodItem INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'ClasseMerc', Class02 FROM dbo.ItemDet WHERE CodItem = @CodItem INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'CodClientAssoc', Class03 FROM dbo.ItemDet WHERE CodItem = @CodItem INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'ClientNameAssoc', ClientDet.ClientName FROM dbo.ItemDet INNER JOIN ClientDet ON ItemDet.Class03=ClientDet.CodClient WHERE CodItem = @CodItem -- 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) --@strTemp = SUBSTRING(@CodDiesGroup, 0, CHARINDEX('-', @CodDiesGroup)) -- !!!fare con finc Gian INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'TipoDies', @strTemp) 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, ProcessNum, Descr, Parameter) VALUES (@QuoteType, @CodQuote, @QuoteRev, '01', 'DiamDies', @strTemp) 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, 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) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'CodPlant', @CodPlant INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KeyAM', @KeyAM INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KeyAMIL', @KeyAMIL INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'NumSMED', @NumSMED INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'KgTeo', @KgTeo -- tolto: è duplicato di HoleNumDies --INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) --SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'HoleNum', @HoleNum -- 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 --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 #QuoteWorkInt qwi INNER JOIN dbo.RawMatDet rmd ON qwi.Class03 = rmd.RawMat -- 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 #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 qwi 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 -- calcolo produttività netta nella fase imballo UPDATE qwi SET NetProd = CASE ti.Durata WHEN 0 THEN 0 ELSE ti.TotOut / ti.Durata END FROM #QuoteWorkInt qwi INNER JOIN dbo.TabImbArt ti ON qwi.Class04 = ti.KeyA WHERE qwi.ProcessNum = '04' -- solo imballo -- Se Produttività netta ancora = 0 la leggo nella tabella Gruppo Imballo ( Packaging ) IF ( SELECT NetProd FROM #QuoteWorkInt WHERE ProcessNum = '04' ) = 0 BEGIN UPDATE qwi SET NetProd = CASE ti.Durata WHEN 0 THEN 0 ELSE ti.TotOut / ti.Durata END FROM #QuoteWorkInt qwi INNER JOIN dbo.TabImbGrp ti ON ti.CodPackag = @CodPackag -- packag generico dell' offerta WHERE qwi.ProcessNum = '04' -- solo imballo END -- salvo numero imballatori SELECT @NumImb = ISNULL(NumImb,0) FROM dbo.TabImbArt WHERE KeyA = @CodItem -- parametro num imballatori INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'QuotaMan', @NumImb -- calcolo i costi legati alla fase di imballo! -- QUI VA FATTO CALCOLO PUNTUALE SU quotaPlant tramite Articolo-Cliente / Articolo / Packaging 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 #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 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 #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 WITH (NOLOCK) WHERE ProcessNum = '01' -- recupero le MAC fase 02 SELECT @MAC_IN = DCR FROM #QuoteWorkInt WITH (NOLOCK) WHERE ProcessNum = '02' -- recupero le MAC fase 04 SELECT @MAC_IM = DCR FROM #QuoteWorkInt WITH (NOLOCK) 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 -- 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 /************************************************************* * 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 -- (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 -- controllo che non sia nulla/vuota la durata... IF (@DiesEOLife = 0) BEGIN SET @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, 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) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesPrice', @DiesPrice INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesExpLife', @DiesExpLife INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', 'DiesEOLife', @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 *************************************************************/ SELECT @OCF01 = SUM(ISNULL(C4UG,0)) FROM #QuoteOC WITH (NOLOCK) 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 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, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF01 * @BatchQty, @SSR -- inserisco costi per ROTTAME INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) SELECT @QuoteType, @CodQuote, @QuoteRev, '01', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF01 * @BatchQty, 1 - @SSR -- inserisco costi per VENDITA INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'VENDITA', @RawMat, @BatchQty, @SellCostF04 * @BatchQty, @SSR -- inserisco costi per ROTTAME INSERT INTO #QuoteOC(QuoteType, CodQuote, QuoteRev, ProcessNum, CodPlant, Class01, Class02, TotQty, TotCost, Quota) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', @CodPlant, 'ROTTAME', @RawMat, @BatchQty, @RefCostF04 * @BatchQty, 1 - @SSR 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, 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) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PkgDesc', @PkgDesc INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PRMWeight', @PRMWeight INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PWeight', @PWeight INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'PTare', @PTare INSERT INTO #QuoteParam(QuoteType, CodQuote, QuoteRev, ProcessNum, Descr, Parameter) SELECT @QuoteType, @CodQuote, @QuoteRev, '04', 'TareStRatio', @PTareStRatio --------------------------------------------- -- 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 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 --------------------------------------------- -- 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 /* ================================================== CANCELLO E CARICO TABELLE EFFETTIVE ==================================================*/ -- elimino e carico parametri! DELETE FROM dbo.QuoteParam WHERE QuoteType = @QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev INSERT dbo.QuoteParam SELECT * FROM #QuoteParam WITH (NOLOCK) -- elimino e carico lavorazioni interne! DELETE FROM dbo.QuoteWorkInt WHERE QuoteType = @QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev 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 WITH (NOLOCK) -- elimino e carico OtherCosts DELETE FROM dbo.QuoteOC WHERE QuoteType = @QuoteType AND CodQuote = @CodQuote AND QuoteRev = @QuoteRev 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 WITH (NOLOCK) 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 END GO PRINT N'Creating [dbo].[QuoteParam].[QuoteType].[MS_Description]...'; 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'QuoteParam', @level2type = N'COLUMN', @level2name = N'QuoteType'; GO PRINT N'Creating [dbo].[QuoteParam].[CodQuote].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero nel formato yyMMddnnnn dove nnn è incrementale giornaliero', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteParam', @level2type = N'COLUMN', @level2name = N'CodQuote'; GO PRINT N'Creating [dbo].[QuoteParam].[NumP].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'progressivo interno', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteParam', @level2type = N'COLUMN', @level2name = N'NumP'; GO PRINT N'Creating [dbo].[QuoteParam].[ProcessNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tipo risorsa (e lavorazione): 01 .. 04', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteParam', @level2type = N'COLUMN', @level2name = N'ProcessNum'; GO PRINT N'Creating [dbo].[QuoteFull_Q].[PriceOff].[MS_Description]...'; 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 PRINT N'Creating [dbo].[QuoteOC].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Altri costi (diretti-indiretti)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC'; GO PRINT N'Creating [dbo].[QuoteOC].[QuoteType].[MS_Description]...'; 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'QuoteOC', @level2type = N'COLUMN', @level2name = N'QuoteType'; GO PRINT N'Creating [dbo].[QuoteOC].[CodQuote].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero nel formato yyMMddnnnn dove nnn è incrementale giornaliero', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'CodQuote'; GO PRINT N'Creating [dbo].[QuoteOC].[NumEx].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'progressivo del costo OTHER', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'NumEx'; GO PRINT N'Creating [dbo].[QuoteOC].[ProcessNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tipo risorsa (e lavorazione): 01 .. 04', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'ProcessNum'; GO PRINT N'Creating [dbo].[QuoteOC].[CodPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice impianto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'CodPlant'; GO PRINT N'Creating [dbo].[QuoteOC].[Class01].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 01, tipo di costo : - UTIL (EE/GAS) - ROTTAME (costo rifusione + quota perdita x ri-vendita) - CONS - TRASP - PROVV - EXTRA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'Class01'; GO PRINT N'Creating [dbo].[QuoteOC].[Class02].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 02, codice di ricerca per tipo di costo extra, es se consumabili è codice matrice', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'Class02'; GO PRINT N'Creating [dbo].[QuoteOC].[Class03].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 03', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'Class03'; GO PRINT N'Creating [dbo].[QuoteOC].[Class04].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 04', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'Class04'; GO PRINT N'Creating [dbo].[QuoteOC].[Class05].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 05', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'Class05'; GO PRINT N'Creating [dbo].[QuoteOC].[TotQty].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'quantità totale di riferimento', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'TotQty'; GO PRINT N'Creating [dbo].[QuoteOC].[TotCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Costo totale di riferimento', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'TotCost'; GO PRINT N'Creating [dbo].[QuoteOC].[Quota].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Quota di impiego', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'Quota'; GO PRINT N'Creating [dbo].[QuoteOC].[C4UG].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Costo pro quota di impiego (per matrici, imballi,...)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteOC', @level2type = N'COLUMN', @level2name = N'C4UG'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[QuoteType].[MS_Description]...'; 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'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[CodQuote].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero nel formato yyMMddnnnn dove nnn è incrementale giornaliero', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'CodQuote'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[NumWI].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'progressivo interno', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'NumWI'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[ProcessNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tipo risorsa (e lavorazione): estrusione/imballo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'ProcessNum'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[CodPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice impianto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'CodPlant'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[Class01].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 01, ARTICOLO + MATERIALE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'Class01'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[Class02].[MS_Description]...'; 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'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[Class03].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 03, tipo imballo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'Class03'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[Class04].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 04', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'Class04'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[Class05].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Riclass. 05', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'Class05'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[NetProd].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Produttivita netta (teorica) kg/h', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'NetProd'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[WSR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Work Scrape Ratio, percentuale scarto della lavorazione (tecnico)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'WSR'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[MSR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Material Scrape Ratio, percentuale scarto legato alla MP (cesoia x alx)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'MSR'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[DSR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Defect Scrape Ratio, percentuale scarto per difettosità prodotto (qualità)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'DSR'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[FC4UG].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Fixed Cost FOR Unit of Good, quota dei costi fissi per unità di prodotto finito (Copertura Costo Struttura e Linea)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'FC4UG'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[VC4UG].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Variables Cost FOR Unit of Good, quota dei costi variabili per unità di prodotto finito (Costo del personale x Alx)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'VC4UG'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[OH4UG].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'OH Cost FOR Unit of Good, quota dei costi Over Head per unità di prodotto finito', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'OH4UG'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[SC4UG].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Setup Cost FOR Unit of Good, quota dei costi di setup per unità di prodotto finito (costo cambio matrice x Alx)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'SC4UG'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[WYR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Work Yield Ratio, percentuale RESA della lavorazione (tecnico), 1 - scarto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'WYR'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[MYR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Material Yield Ratio, percentuale RESA legato alla MP (cesoia x alx), 1 - scarto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'MYR'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[DYR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Defect Yield Ratio, percentuale RESA per difettosità prodotto (qualità), 1 - scarto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'DYR'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[WCR].[MS_Description]...'; 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'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[MCR].[MS_Description]...'; 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'; GO PRINT N'Creating [dbo].[QuoteWorkInt].[DCR].[MS_Description]...'; 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'; GO PRINT N'Creating [dbo].[QuoteWorkExt].[QuoteType].[MS_Description]...'; 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'QuoteWorkExt', @level2type = N'COLUMN', @level2name = N'QuoteType'; GO PRINT N'Creating [dbo].[QuoteWorkExt].[CodQuote].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero nel formato yyMMddnnnn dove nnn è incrementale giornaliero', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkExt', @level2type = N'COLUMN', @level2name = N'CodQuote'; GO PRINT N'Creating [dbo].[QuoteWorkExt].[NumWE].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'progressivo interno', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkExt', @level2type = N'COLUMN', @level2name = N'NumWE'; GO PRINT N'Creating [dbo].[QuoteWorkExt].[EWC4UG].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'External Work Cost FOR Unit of Good, quota dei costi fissi per unità di prodotto finito (Copertura Costo Struttura e Linea)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkExt', @level2type = N'COLUMN', @level2name = N'EWC4UG'; GO PRINT N'Creating [dbo].[QuoteWorkExt].[UM].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Unità di misura di riferimento per il costo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkExt', @level2type = N'COLUMN', @level2name = N'UM'; GO PRINT N'Creating [dbo].[QuoteList].[QuoteType].[MS_Description]...'; 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'; GO PRINT N'Creating [dbo].[QuoteList].[CodQuote].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero nel formato yyMMddnnnn dove nnn è incrementale giornaliero', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'CodQuote'; GO PRINT N'Creating [dbo].[QuoteList].[CodClient].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice cliente', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'CodClient'; GO PRINT N'Creating [dbo].[QuoteList].[CodItem].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice articolo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'CodItem'; GO PRINT N'Creating [dbo].[QuoteList].[CodItemGroup].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'classe raggruppamento (es complessità disegno)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'CodItemGroup'; GO PRINT N'Creating [dbo].[QuoteList].[RawMat].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice MP', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'RawMat'; GO PRINT N'Creating [dbo].[QuoteList].[UnitWeight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'peso espresso come g/m (grammi / metro)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'UnitWeight'; GO PRINT N'Creating [dbo].[QuoteList].[BatchQty].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Quantità lotto kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'BatchQty'; GO PRINT N'Creating [dbo].[QuoteList].[CodInco].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Codice Incoterms', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'CodInco'; GO PRINT N'Creating [dbo].[QuoteList].[PriceOff].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Prezzo Offerto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'PriceOff'; GO PRINT N'Creating [dbo].[QuoteList].[OrdDate].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'data dell''ordine', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'OrdDate'; GO PRINT N'Creating [dbo].[QuoteList].[OrdNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero ordine', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'OrdNum'; GO PRINT N'Creating [dbo].[QuoteList].[OrdRow].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'riga ordine', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteList', @level2type = N'COLUMN', @level2name = N'OrdRow'; GO PRINT N'Creating [dbo].[QuoteList].[OrdPrice].[MS_Description]...'; 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 PRINT N'Creating [dbo].[Package2Item].[CodItem].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice articolo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2Item', @level2type = N'COLUMN', @level2name = N'CodItem'; GO PRINT N'Creating [dbo].[Package2Item].[TotQta].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Quantità totale lavorata', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2Item', @level2type = N'COLUMN', @level2name = N'TotQta'; GO PRINT N'Creating [dbo].[Package2Item].[Weight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Peso medio', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2Item', @level2type = N'COLUMN', @level2name = N'Weight'; GO PRINT N'Creating [dbo].[Package2Item].[Tare].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tara', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2Item', @level2type = N'COLUMN', @level2name = N'Tare'; GO PRINT N'Creating [dbo].[ProductionLog].[EventStart].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'inizio evento - formato INT 16 cifre yyyyMMddHHmmssnn dove nn = centesimi di sec oppure 00', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'EventStart'; GO PRINT N'Creating [dbo].[ProductionLog].[EventEnd].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'fine evento - formato INT 16 cifre yyyyMMddHHmmssnn dove nn = centesimi di sec oppure 00', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'EventEnd'; GO PRINT N'Creating [dbo].[ProductionLog].[CodPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice impianto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'CodPlant'; GO PRINT N'Creating [dbo].[ProductionLog].[ProcessNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice fase, da qui si crea anagrafica fasi distinct', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'ProcessNum'; GO PRINT N'Creating [dbo].[ProductionLog].[CodDies].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice matrice', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'CodDies'; GO PRINT N'Creating [dbo].[ProductionLog].[CodClient].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice cliente', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'CodClient'; GO PRINT N'Creating [dbo].[ProductionLog].[OrderNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'rif codice ordine', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'OrderNum'; GO PRINT N'Creating [dbo].[ProductionLog].[BatchNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice lotto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'BatchNum'; GO PRINT N'Creating [dbo].[ProductionLog].[ProcessType].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice del TIPO di fase, x raggruppamento funzionale', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'ProcessType'; GO PRINT N'Creating [dbo].[ProductionLog].[EventType].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'tipo evento: produzione, prova, guasto, setup...', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'EventType'; GO PRINT N'Creating [dbo].[ProductionLog].[RawMat].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice MP', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'RawMat'; GO PRINT N'Creating [dbo].[ProductionLog].[CodPackag].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice imballo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'CodPackag'; GO PRINT N'Creating [dbo].[ProductionLog].[QtyIN].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg materiale in ingresso', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'QtyIN'; GO PRINT N'Creating [dbo].[ProductionLog].[QtyOUT].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg materiale BUONO prodotto in OUTput', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'QtyOUT'; GO PRINT N'Creating [dbo].[ProductionLog].[QtyEXT].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg materiale dbora che fa parte dell''OUT, es imballi/tara', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'QtyEXT'; GO PRINT N'Creating [dbo].[ProductionLog].[NumIN].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'qta materiale in ingresso', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'NumIN'; GO PRINT N'Creating [dbo].[ProductionLog].[NumOUT].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'qta materiale BUONO prodotto in OUTput', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'NumOUT'; GO PRINT N'Creating [dbo].[ProductionLog].[QuotaPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'indicazione della quota macchina per produrre quanto registrato', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'QuotaPlant'; GO PRINT N'Creating [dbo].[ProductionLog].[QuotaMan].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'indicazione della quota uomo per produrre quanto registrato', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'QuotaMan'; GO PRINT N'Creating [dbo].[ProductionLog].[Tags].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'categorie LIBERE, separatore #', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'Tags'; GO PRINT N'Creating [dbo].[ProductionLog].[Duration].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Durata espressa in ore', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'Duration'; GO PRINT N'Creating [dbo].[ProductionLog].[okPr].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo produttività', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'okPr'; GO PRINT N'Creating [dbo].[ProductionLog].[okQM].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo quota MAN', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'okQM'; GO PRINT N'Creating [dbo].[ProductionLog].[okSc].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo scarti', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'okSc'; GO PRINT N'Creating [dbo].[ProductionLog].[okDi].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo difettosità', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ProductionLog', @level2type = N'COLUMN', @level2name = N'okDi'; GO PRINT N'Creating [dbo].[Package2ItemClient].[CodItem].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice articolo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2ItemClient', @level2type = N'COLUMN', @level2name = N'CodItem'; GO PRINT N'Creating [dbo].[Package2ItemClient].[CodClient].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice cliente', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2ItemClient', @level2type = N'COLUMN', @level2name = N'CodClient'; GO PRINT N'Creating [dbo].[Package2ItemClient].[TotQta].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Quantità totale lavorata', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2ItemClient', @level2type = N'COLUMN', @level2name = N'TotQta'; GO PRINT N'Creating [dbo].[Package2ItemClient].[Weight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Peso medio', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2ItemClient', @level2type = N'COLUMN', @level2name = N'Weight'; GO PRINT N'Creating [dbo].[Package2ItemClient].[Tare].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tara', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2ItemClient', @level2type = N'COLUMN', @level2name = N'Tare'; GO PRINT N'Creating [dbo].[PackagDet].[RMCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Raw Material Cost - costo dei materiali', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'PackagDet', @level2type = N'COLUMN', @level2name = N'RMCost'; GO PRINT N'Creating [dbo].[PackagDet].[RMWeight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg peso medio', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'PackagDet', @level2type = N'COLUMN', @level2name = N'RMWeight'; GO PRINT N'Creating [dbo].[PlantsDet].[CodPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice impianto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'PlantsDet', @level2type = N'COLUMN', @level2name = N'CodPlant'; GO PRINT N'Creating [dbo].[PlantsDet].[Descript].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'descrizione impianto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'PlantsDet', @level2type = N'COLUMN', @level2name = N'Descript'; GO PRINT N'Creating [dbo].[PlantsDet].[Charge].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Over Head costo €/h per CDC + FASE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'PlantsDet', @level2type = N'COLUMN', @level2name = N'Charge'; GO PRINT N'Creating [dbo].[RevHistory].[RevType].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tipo di revisione indicata coem S.C.P --> in C = costi di contab industriale, P = da ProductionLog, S = Sistema di calcolo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RevHistory', @level2type = N'COLUMN', @level2name = N'RevType'; GO PRINT N'Creating [dbo].[RevHistory].[RevNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'incrementale del numero di revisione', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RevHistory', @level2type = N'COLUMN', @level2name = N'RevNum'; GO PRINT N'Creating [dbo].[RevHistory].[DateRev].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'data revisione', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RevHistory', @level2type = N'COLUMN', @level2name = N'DateRev'; GO PRINT N'Creating [dbo].[RevHistory].[Description].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'descrizione revisione', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RevHistory', @level2type = N'COLUMN', @level2name = N'Description'; GO PRINT N'Creating [dbo].[DiesGroupDet].[CodDiesGroup].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice CLASSE matrice, es tipo + diametro', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesGroupDet', @level2type = N'COLUMN', @level2name = N'CodDiesGroup'; GO PRINT N'Creating [dbo].[DiesGroupDet].[Price].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'prezzo di acquisto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesGroupDet', @level2type = N'COLUMN', @level2name = N'Price'; GO PRINT N'Creating [dbo].[DiesGroupDet].[QtyTot].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Totale matrici del gruppo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesGroupDet', @level2type = N'COLUMN', @level2name = N'QtyTot'; GO PRINT N'Creating [dbo].[DiesGroupDet].[QtyEOL].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero rottamate nel gruppo (End Of Life)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesGroupDet', @level2type = N'COLUMN', @level2name = N'QtyEOL'; GO PRINT N'Creating [dbo].[DiesGroupDet].[ExpLife].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Durata attesa in kg PREVISTA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesGroupDet', @level2type = N'COLUMN', @level2name = N'ExpLife'; GO PRINT N'Creating [dbo].[DiesGroupDet].[EOLLife].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Durata attuale (delle rottamate, media) in kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesGroupDet', @level2type = N'COLUMN', @level2name = N'EOLLife'; GO PRINT N'Creating [dbo].[Cost2Plant].[CodPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice impianto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'CodPlant'; GO PRINT N'Creating [dbo].[Cost2Plant].[ProcessNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice fase, da qui si crea anagrafica fasi distinct', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'ProcessNum'; GO PRINT N'Creating [dbo].[Cost2Plant].[FC].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Costo Fissi €/h per CDC + FASE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'FC'; GO PRINT N'Creating [dbo].[Cost2Plant].[VC].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Costi Variabili €/h per CDC + FASE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'VC'; GO PRINT N'Creating [dbo].[Cost2Plant].[OH].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Over Head costo €/h per CDC + FASE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'OH'; GO PRINT N'Creating [dbo].[Cost2Plant].[SC].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'costoSETUP €/cambio per CDC + FASE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'SC'; GO PRINT N'Creating [dbo].[Cost2Plant].[QuotaPlantStd].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'indicazione della quota macchina per produrre quanto registrato', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'QuotaPlantStd'; GO PRINT N'Creating [dbo].[Cost2Plant].[QuotaManStd].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'indicazione della quota uomo per produrre quanto registrato', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Cost2Plant', @level2type = N'COLUMN', @level2name = N'QuotaManStd'; GO PRINT N'Creating [dbo].[TabProdSc].[ProdTeo].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'produttività teorica (kgTeorici / durata h)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'TabProdSc', @level2type = N'COLUMN', @level2name = N'ProdTeo'; GO PRINT N'Creating [dbo].[TabProdSc].[ScTec].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'scarto tecnico: 1 - (KgTeorici/ISNULL(KgLordi,1))', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'TabProdSc', @level2type = N'COLUMN', @level2name = N'ScTec'; GO PRINT N'Creating [dbo].[ClientDet].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Client Details Table', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet'; GO PRINT N'Creating [dbo].[ClientDet].[CodClient].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice cliente', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'CodClient'; GO PRINT N'Creating [dbo].[ClientDet].[ClientName].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Ragione Sociale', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'ClientName'; GO PRINT N'Creating [dbo].[ClientDet].[CodAg].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice agente...', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'CodAg'; GO PRINT N'Creating [dbo].[ClientDet].[ZipCode].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'cap', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'ZipCode'; GO PRINT N'Creating [dbo].[ClientDet].[City].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'città', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'City'; GO PRINT N'Creating [dbo].[ClientDet].[State].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'stato/provincia', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'State'; GO PRINT N'Creating [dbo].[ClientDet].[Nation].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'nazione', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'Nation'; GO PRINT N'Creating [dbo].[ClientDet].[TranspZone].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Classificazione cliente (es zona, provincia...) x incrocio con tab costi trasporto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ClientDet', @level2type = N'COLUMN', @level2name = N'TranspZone'; GO PRINT N'Creating [dbo].[AgentsDet].[CodAg].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice agente...', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'AgentsDet', @level2type = N'COLUMN', @level2name = N'CodAg'; GO PRINT N'Creating [dbo].[AgentsDet].[Lastname].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Cognome', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'AgentsDet', @level2type = N'COLUMN', @level2name = N'Lastname'; GO PRINT N'Creating [dbo].[AgentsDet].[Firstname].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Nome', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'AgentsDet', @level2type = N'COLUMN', @level2name = N'Firstname'; GO PRINT N'Creating [dbo].[AgentsDet].[QuotaProvvAg].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Provvigione come €/kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'AgentsDet', @level2type = N'COLUMN', @level2name = N'QuotaProvvAg'; GO PRINT N'Creating [dbo].[Utilities].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'costo unitario per unità di PF (€/kg)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Utilities'; GO PRINT N'Creating [dbo].[Utilities].[CodUtil].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice dell''utility (Energia elettrica / gas)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Utilities', @level2type = N'COLUMN', @level2name = N'CodUtil'; GO PRINT N'Creating [dbo].[Utilities].[CodPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice impianto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Utilities', @level2type = N'COLUMN', @level2name = N'CodPlant'; GO PRINT N'Creating [dbo].[Utilities].[UnitCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Costo al kg per impianto ed utility', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Utilities', @level2type = N'COLUMN', @level2name = N'UnitCost'; GO PRINT N'Creating [dbo].[DiesDet].[CodDies].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice matrice', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'CodDies'; GO PRINT N'Creating [dbo].[DiesDet].[CodItem].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice articolo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'CodItem'; GO PRINT N'Creating [dbo].[DiesDet].[CodDiesGroup].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice CLASSE matrice, es tipo + diametro; nota: massima numerosità pari a numero articoli, minima numerosità 1', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'CodDiesGroup'; GO PRINT N'Creating [dbo].[DiesDet].[Price].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'prezzo di acquisto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'Price'; GO PRINT N'Creating [dbo].[DiesDet].[TestCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'costo di prove e correzioni', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'TestCost'; GO PRINT N'Creating [dbo].[DiesDet].[ExpLife].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Durata attesa in kg PREVISTA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'ExpLife'; GO PRINT N'Creating [dbo].[DiesDet].[ActLife].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Durata attuale (delle rottamate, media) in kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'ActLife'; GO PRINT N'Creating [dbo].[DiesDet].[Active].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Stato: 1 = disponibile, 0 = rottamata', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'DiesDet', @level2type = N'COLUMN', @level2name = N'Active'; GO PRINT N'Creating [dbo].[Incoterms].[CodInco].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Codice Incoterms', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Incoterms', @level2type = N'COLUMN', @level2name = N'CodInco'; GO PRINT N'Creating [dbo].[Incoterms].[Descript].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Descrizione Incoterms', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Incoterms', @level2type = N'COLUMN', @level2name = N'Descript'; GO PRINT N'Creating [dbo].[Incoterms].[HasTC].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Indica se ha costi di trasporto (1) o non lil ha (0)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Incoterms', @level2type = N'COLUMN', @level2name = N'HasTC'; GO PRINT N'Creating [dbo].[TranspCostDet].[TranspZone].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Classificazione cliente (es zona, provincia...) x incrocio con tab costi trasporto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'TranspCostDet', @level2type = N'COLUMN', @level2name = N'TranspZone'; GO PRINT N'Creating [dbo].[TranspCostDet].[TranspCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'costi di traporto €/kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'TranspCostDet', @level2type = N'COLUMN', @level2name = N'TranspCost'; GO PRINT N'Creating [dbo].[QuoteRM].[QuoteType].[MS_Description]...'; 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'QuoteRM', @level2type = N'COLUMN', @level2name = N'QuoteType'; GO PRINT N'Creating [dbo].[QuoteRM].[CodQuote].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'numero nel formato yyMMddnnnn dove nnn è incrementale giornaliero', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'CodQuote'; GO PRINT N'Creating [dbo].[QuoteRM].[NumRM].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'progressivo interno', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'NumRM'; GO PRINT N'Creating [dbo].[QuoteRM].[RawMat].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice MP', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'RawMat'; GO PRINT N'Creating [dbo].[QuoteRM].[RawMatCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'costo della MP €/kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'RawMatCost'; GO PRINT N'Creating [dbo].[QuoteRM].[RawMatExtraCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'costo degli extra della MP €/kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'RawMatExtraCost'; GO PRINT N'Creating [dbo].[QuoteRM].[FCR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tasso di conversione TOTALE, messa al cento, quantità di MP necessaria per produrre un unità di prodotto', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'FCR'; GO PRINT N'Creating [dbo].[QuoteRM].[FYR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'FULL Yield Ratio, percentuale RESA TOTALE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'FYR'; GO PRINT N'Creating [dbo].[QuoteRM].[FSR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'FULL Scrape Ratio, percentuale scarto TOTALE', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteRM', @level2type = N'COLUMN', @level2name = N'FSR'; GO PRINT N'Creating [dbo].[ItemDet].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Item Details Table', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ItemDet'; GO PRINT N'Creating [dbo].[ItemDet].[CodItem].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice articolo', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ItemDet', @level2type = N'COLUMN', @level2name = N'CodItem'; GO PRINT N'Creating [dbo].[ItemDet].[UnitWeight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'peso espresso come g/m (grammi / metro)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ItemDet', @level2type = N'COLUMN', @level2name = N'UnitWeight'; GO PRINT N'Creating [dbo].[ItemDet].[CodItemGroup].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'classe raggruppamento (es complessità disegno)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ItemDet', @level2type = N'COLUMN', @level2name = N'CodItemGroup'; GO PRINT N'Creating [dbo].[ItemDet].[Class01].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'ItemDet', @level2type = N'COLUMN', @level2name = N'Class01'; GO PRINT N'Creating [dbo].[v_selItems].[MS_DiagramPane1]...'; 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 = "ItemDet" Begin Extent = Top = 6 Left = 38 Bottom = 254 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 = 4635 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_selItems'; GO PRINT N'Creating [dbo].[v_selItems].[MS_DiagramPaneCount]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selItems'; GO PRINT N'Creating [dbo].[v_selClient].[MS_DiagramPane1]...'; 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 = "ClientDet" Begin Extent = Top = 6 Left = 38 Bottom = 258 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 = 4290 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_selClient'; GO PRINT N'Creating [dbo].[v_selClient].[MS_DiagramPaneCount]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selClient'; GO PRINT N'Creating [dbo].[v_QuoteFull_Q].[MS_DiagramPane1]...'; 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 = "QuoteFull_Q" Begin Extent = Top = 6 Left = 38 Bottom = 136 Right = 221 End DisplayFlags = 280 TopColumn = 0 End End End Begin SQLPane = End Begin DataPane = Begin ParameterDefaults = "" End Begin ColumnWidths = 9 Width = 284 Width = 1500 Width = 1500 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_QuoteFull_Q'; GO PRINT N'Creating [dbo].[v_QuoteFull_Q].[MS_DiagramPaneCount]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_QuoteFull_Q'; GO PRINT N'Creating [dbo].[Package2].[TotQta].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Quantità totale lavorata', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2', @level2type = N'COLUMN', @level2name = N'TotQta'; GO PRINT N'Creating [dbo].[Package2].[Weight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Peso medio', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2', @level2type = N'COLUMN', @level2name = N'Weight'; GO PRINT N'Creating [dbo].[Package2].[Tare].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Tara', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'Package2', @level2type = N'COLUMN', @level2name = N'Tare'; GO PRINT N'Creating [dbo].[RawMatDet].[RawMat].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice MP', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'RawMat'; GO PRINT N'Creating [dbo].[RawMatDet].[ProcCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'costo del processo di rifusione €/kg', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'ProcCost'; GO PRINT N'Creating [dbo].[RawMatDet].[ProcYield].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'resa del processo di rifusione %', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'ProcYield'; GO PRINT N'Creating [dbo].[RawMatDet].[CSR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Cut Scrape Ratio, percentuale scarto cesoia', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'CSR'; GO PRINT N'Creating [dbo].[RawMatDet].[SSR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Scrape Sell Ratio, percentuale di vendita dello scarto (0-100)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'SSR'; GO PRINT N'Creating [dbo].[RawMatDet].[SSVA].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Scrape Sell Value - ABSOLUTE, valore di vendita dello scarto ASSOLUTO', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'SSVA'; GO PRINT N'Creating [dbo].[RawMatDet].[SSVR].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Scrape Sell Value - RELATIVE come valore % del valore lega', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'SSVR'; GO PRINT N'Creating [dbo].[RawMatDet].[ExtraMatCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Costo extra di acquisto del materiale', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'ExtraMatCost'; GO PRINT N'Creating [dbo].[RawMatDet].[ExtraServCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Costo extra dei servizi sul materiale (es ultrasuoni)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'RawMatDet', @level2type = N'COLUMN', @level2name = N'ExtraServCost'; GO PRINT N'Creating [ext].[ClientsRaw].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw'; GO PRINT N'Creating [ext].[ClientsRaw].[CodClient].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice cliente', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'CodClient'; GO PRINT N'Creating [ext].[ClientsRaw].[ClientName].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Ragione Sociale', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'ClientName'; GO PRINT N'Creating [ext].[ClientsRaw].[CodAg].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice agente...', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'CodAg'; GO PRINT N'Creating [ext].[ClientsRaw].[ZipCode].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'cap', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'ZipCode'; GO PRINT N'Creating [ext].[ClientsRaw].[City].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'città', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'City'; GO PRINT N'Creating [ext].[ClientsRaw].[State].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'stato/provincia', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'State'; GO PRINT N'Creating [ext].[ClientsRaw].[Nation].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'nazione', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'Nation'; GO PRINT N'Creating [ext].[ClientsRaw].[TranspZone].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Classificazione cliente (es zona, provincia...) x incrocio con tab costi trasporto', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'TranspZone'; GO PRINT N'Creating [ext].[ProductionLogRaw].[EventStart].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'inizio evento - formato INT 16 cifre yyyyMMddHHmmssnn dove nn = centesimi di sec oppure 00', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'EventStart'; GO PRINT N'Creating [ext].[ProductionLogRaw].[EventEnd].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'fine evento - formato INT 16 cifre yyyyMMddHHmmssnn dove nn = centesimi di sec oppure 00', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'EventEnd'; GO PRINT N'Creating [ext].[ProductionLogRaw].[CodPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice impianto', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'CodPlant'; GO PRINT N'Creating [ext].[ProductionLogRaw].[ProcessNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice fase, da qui si crea anagrafica fasi distinct', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'ProcessNum'; GO PRINT N'Creating [ext].[ProductionLogRaw].[CodDies].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice matrice', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'CodDies'; GO PRINT N'Creating [ext].[ProductionLogRaw].[CodClient].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice cliente', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'CodClient'; GO PRINT N'Creating [ext].[ProductionLogRaw].[OrderNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'rif codice ordine', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'OrderNum'; GO PRINT N'Creating [ext].[ProductionLogRaw].[BatchNum].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice lotto', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'BatchNum'; GO PRINT N'Creating [ext].[ProductionLogRaw].[ProcessType].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice del TIPO di fase, x raggruppamento funzionale', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'ProcessType'; GO PRINT N'Creating [ext].[ProductionLogRaw].[EventType].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'tipo evento: produzione, prova, guasto, setup...', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'EventType'; GO PRINT N'Creating [ext].[ProductionLogRaw].[RawMat].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice MP', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'RawMat'; GO PRINT N'Creating [ext].[ProductionLogRaw].[CodPackag].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice imballo', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'CodPackag'; GO PRINT N'Creating [ext].[ProductionLogRaw].[QtyIN].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg materiale in ingresso', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'QtyIN'; GO PRINT N'Creating [ext].[ProductionLogRaw].[QtyOUT].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg materiale BUONO prodotto in OUTput', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'QtyOUT'; GO PRINT N'Creating [ext].[ProductionLogRaw].[QtyEXT].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg materiale extra che fa parte dell''OUT, es imballi/tara', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'QtyEXT'; GO PRINT N'Creating [ext].[ProductionLogRaw].[NumIN].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'qta materiale in ingresso', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'NumIN'; GO PRINT N'Creating [ext].[ProductionLogRaw].[NumOUT].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'qta materiale BUONO prodotto in OUTput', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'NumOUT'; GO PRINT N'Creating [ext].[ProductionLogRaw].[QuotaPlant].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'indicazione della quota macchina per produrre quanto registrato', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'QuotaPlant'; GO PRINT N'Creating [ext].[ProductionLogRaw].[QuotaMan].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'indicazione della quota uomo per produrre quanto registrato', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'QuotaMan'; GO PRINT N'Creating [ext].[ProductionLogRaw].[Tags].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'categorie LIBERE, separatore #', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'Tags'; GO PRINT N'Creating [ext].[ProductionLogRaw].[okPr].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo produttività', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okPr'; GO PRINT N'Creating [ext].[ProductionLogRaw].[okQM].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo quota MAN', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okQM'; GO PRINT N'Creating [ext].[ProductionLogRaw].[okSc].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo scarti', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okSc'; GO PRINT N'Creating [ext].[ProductionLogRaw].[okDi].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo difettosità', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okDi'; GO PRINT N'Creating [ext].[ProductionLogRaw_KO].[okPr].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo produttività', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okPr'; GO PRINT N'Creating [ext].[ProductionLogRaw_KO].[okQM].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo quota MAN', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okQM'; GO PRINT N'Creating [ext].[ProductionLogRaw_KO].[okSc].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo scarti', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okSc'; GO PRINT N'Creating [ext].[ProductionLogRaw_KO].[okDi].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo difettosità', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okDi'; GO PRINT N'Creating [ext].[ItemsRaw].[CodItem].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice articolo', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ItemsRaw', @level2type = N'COLUMN', @level2name = N'CodItem'; GO PRINT N'Creating [ext].[ItemsRaw].[CodItemGroup].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'calsse raggruppamento (es complessità disegno)', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ItemsRaw', @level2type = N'COLUMN', @level2name = N'CodItemGroup'; GO PRINT N'Creating [ext].[ItemsRaw].[Class01].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ItemsRaw', @level2type = N'COLUMN', @level2name = N'Class01'; GO PRINT N'Creating [ext].[PackagRaw].[RMCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Raw Material Cost - costo dei materiali', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'RMCost'; GO PRINT N'Creating [ext].[PackagRaw].[RMWeight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg peso medio', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'RMWeight'; GO PRINT N'Creating [ext].[PackagRaw].[Tare].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg tara standard', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'Tare'; GO PRINT N'Creating [ext].[PackagRaw].[FullWeight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'peso medio del pacco (compelssivo)', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'FullWeight'; GO PRINT N'Creating [tmp].[ProductionLogRaw_KO].[okPr].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo produttività', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okPr'; GO PRINT N'Creating [tmp].[ProductionLogRaw_KO].[okQM].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo quota MAN', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okQM'; GO PRINT N'Creating [tmp].[ProductionLogRaw_KO].[okSc].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo scarti', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okSc'; GO PRINT N'Creating [tmp].[ProductionLogRaw_KO].[okDi].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo difettosità', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw_KO', @level2type = N'COLUMN', @level2name = N'okDi'; GO PRINT N'Creating [tmp].[ClientsRaw].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw'; GO PRINT N'Creating [tmp].[ClientsRaw].[CodClient].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice cliente', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'CodClient'; GO PRINT N'Creating [tmp].[ClientsRaw].[ClientName].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Ragione Sociale', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'ClientName'; GO PRINT N'Creating [tmp].[ClientsRaw].[CodAg].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice agente...', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'CodAg'; GO PRINT N'Creating [tmp].[ClientsRaw].[ZipCode].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'cap', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'ZipCode'; GO PRINT N'Creating [tmp].[ClientsRaw].[City].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'città', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'City'; GO PRINT N'Creating [tmp].[ClientsRaw].[State].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'stato/provincia', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'State'; GO PRINT N'Creating [tmp].[ClientsRaw].[Nation].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'nazione', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'Nation'; GO PRINT N'Creating [tmp].[ClientsRaw].[TranspZone].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Classificazione cliente (es zona, provincia...) x incrocio con tab costi trasporto', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw', @level2type = N'COLUMN', @level2name = N'TranspZone'; GO PRINT N'Creating [tmp].[ItemsRaw].[CodItem].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'codice articolo', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ItemsRaw', @level2type = N'COLUMN', @level2name = N'CodItem'; GO PRINT N'Creating [tmp].[ItemsRaw].[CodItemGroup].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'calsse raggruppamento (es complessità disegno)', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ItemsRaw', @level2type = N'COLUMN', @level2name = N'CodItemGroup'; GO PRINT N'Creating [tmp].[ItemsRaw].[Class01].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ItemsRaw', @level2type = N'COLUMN', @level2name = N'Class01'; GO PRINT N'Creating [tmp].[ProductionLogRaw].[okPr].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo produttività', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okPr'; GO PRINT N'Creating [tmp].[ProductionLogRaw].[okQM].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo quota MAN', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okQM'; GO PRINT N'Creating [tmp].[ProductionLogRaw].[okSc].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo scarti', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okSc'; GO PRINT N'Creating [tmp].[ProductionLogRaw].[okDi].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'validazione riga x calcolo difettosità', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ProductionLogRaw', @level2type = N'COLUMN', @level2name = N'okDi'; GO PRINT N'Creating [tmp].[PackagRaw].[RMCost].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Raw Material Cost - costo dei materiali', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'RMCost'; GO PRINT N'Creating [tmp].[PackagRaw].[RMWeight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg peso medio', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'RMWeight'; GO PRINT N'Creating [tmp].[PackagRaw].[Tare].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'kg tara standard', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'Tare'; GO PRINT N'Creating [tmp].[PackagRaw].[FullWeight].[MS_Description]...'; GO EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'peso medio del pacco (compelssivo)', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'PackagRaw', @level2type = N'COLUMN', @level2name = N'FullWeight'; GO DECLARE @VarDecimalSupported AS BIT; SELECT @VarDecimalSupported = 0; IF ((ServerProperty(N'EngineEdition') = 3) AND (((@@microsoftversion / power(2, 24) = 9) AND (@@microsoftversion & 0xffff >= 3024)) OR ((@@microsoftversion / power(2, 24) = 10) AND (@@microsoftversion & 0xffff >= 1600)))) SELECT @VarDecimalSupported = 1; IF (@VarDecimalSupported > 0) BEGIN EXECUTE sp_db_vardecimal_storage_format N'$(DatabaseName)', 'ON'; END GO ALTER DATABASE [$(DatabaseName)] SET MULTI_USER WITH ROLLBACK IMMEDIATE; GO PRINT N'Update complete.'; GO