diff --git a/C2P_Project/C2P_Project.publish.xml b/C2P_Project/C2P_Project.publish.xml
new file mode 100644
index 0000000..d22f3c5
--- /dev/null
+++ b/C2P_Project/C2P_Project.publish.xml
@@ -0,0 +1,11 @@
+
+
+
+ True
+ C2P_Project
+ C2P_Project.sql
+ True
+ True
+ 1
+
+
\ No newline at end of file
diff --git a/C2P_Project/C2P_Project.sqlproj b/C2P_Project/C2P_Project.sqlproj
new file mode 100644
index 0000000..6082c13
--- /dev/null
+++ b/C2P_Project/C2P_Project.sqlproj
@@ -0,0 +1,197 @@
+
+
+
+ 10.0
+ True
+ 10.0
+
+
+
+ Debug
+ AnyCPU
+ C2P_Project
+ 2.0
+ 4.1
+ {84db66e4-9663-47f7-9dd1-3cb562629ff5}
+ Microsoft.Data.Tools.Schema.Sql.Sql100DatabaseSchemaProvider
+ Database
+
+
+ C2P_Project
+ C2P_Project
+ 1033,CI
+ BySchemaAndSchemaType
+ True
+ v4.5
+ CS
+ Properties
+ False
+ True
+ SQL_Latin1_General_CP1_CI_AS
+ PRIMARY
+ True
+ True
+
+
+ bin\Release\
+ $(MSBuildProjectName).sql
+ False
+ pdbonly
+ true
+ false
+ true
+ prompt
+ 4
+
+
+ bin\Debug\
+ $(MSBuildProjectName).sql
+ false
+ true
+ full
+ false
+ true
+ true
+ prompt
+ 4
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/C2P_Project/C2P_Project_20140218040151.sqlproj b/C2P_Project/C2P_Project_20140218040151.sqlproj
new file mode 100644
index 0000000..6f110f1
--- /dev/null
+++ b/C2P_Project/C2P_Project_20140218040151.sqlproj
@@ -0,0 +1,194 @@
+
+
+
+
+ Debug
+ AnyCPU
+ C2P_Project
+ 2.0
+ 4.1
+ {84db66e4-9663-47f7-9dd1-3cb562629ff5}
+ Microsoft.Data.Tools.Schema.Sql.Sql100DatabaseSchemaProvider
+ Database
+
+
+ C2P_Project
+ C2P_Project
+ 1033,CI
+ BySchemaAndSchemaType
+ True
+ v4.5
+ CS
+ Properties
+ False
+ True
+ SQL_Latin1_General_CP1_CI_AS
+ PRIMARY
+ True
+ True
+
+
+ bin\Release\
+ $(MSBuildProjectName).sql
+ False
+ pdbonly
+ true
+ false
+ true
+ prompt
+ 4
+
+
+ bin\Debug\
+ $(MSBuildProjectName).sql
+ false
+ true
+ full
+ false
+ true
+ true
+ prompt
+ 4
+
+
+
+ 10.0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/C2P_Project/C2P_compare_dev2prod.scmp b/C2P_Project/C2P_compare_dev2prod.scmp
new file mode 100644
index 0000000..8c5b55f
--- /dev/null
+++ b/C2P_Project/C2P_compare_dev2prod.scmp
@@ -0,0 +1,532 @@
+
+
+ 10
+
+
+ {84db66e4-9663-47f7-9dd1-3cb562629ff5}
+ C2P_Project
+
+
+
+
+ Data Source=10.74.82.217\SQL2008R2;Initial Catalog=Proxima_C2P_prod;Persist Security Info=True;User ID=sa;Pooling=False
+
+
+
+
+
+ Version
+ 1
+
+
+
+
+ PlanGenerationType
+ SqlDeploymentOptions
+
+
+ AllowExistingModelErrors
+ False
+
+
+ AllowIncompatiblePlatform
+ False
+
+
+ BackupDatabaseBeforeChanges
+ False
+
+
+ BlockOnPossibleDataLoss
+ False
+
+
+ BlockWhenDriftDetected
+ False
+
+
+ CompareUsingTargetCollation
+ False
+
+
+ CommentOutSetVarDeclarations
+ False
+
+
+ CreateNewDatabase
+ False
+
+
+ DeployDatabaseInSingleUserMode
+ False
+
+
+ DisableAndReenableDdlTriggers
+ True
+
+
+ DoNotAlterChangeDataCaptureObjects
+ True
+
+
+ DoNotAlterReplicatedObjects
+ True
+
+
+ DropConstraintsNotInSource
+ True
+
+
+ DropDmlTriggersNotInSource
+ True
+
+
+ DropExtendedPropertiesNotInSource
+ True
+
+
+ DropIndexesNotInSource
+ True
+
+
+ DropPermissionsNotInSource
+ False
+
+
+ DropObjectsNotInSource
+ True
+
+
+ DropRoleMembersNotInSource
+ False
+
+
+ GenerateSmartDefaults
+ False
+
+
+ IgnoreDdlTriggerOrder
+ False
+
+
+ IgnoreDdlTriggerState
+ False
+
+
+ IgnoreObjectPlacementOnPartitionScheme
+ True
+
+
+ IgnoreAuthorizer
+ False
+
+
+ IgnoreDefaultSchema
+ False
+
+
+ IgnoreRouteLifetime
+ True
+
+
+ IgnoreCryptographicProviderFilePath
+ True
+
+
+ IgnoreComments
+ False
+
+
+ IgnoreWhitespace
+ True
+
+
+ IgnoreKeywordCasing
+ True
+
+
+ IgnoreSemicolonBetweenStatements
+ True
+
+
+ IgnorePartitionSchemes
+ False
+
+
+ IgnoreWithNocheckOnCheckConstraints
+ False
+
+
+ IgnoreWithNocheckOnForeignKeys
+ False
+
+
+ IgnoreIdentitySeed
+ False
+
+
+ IgnoreIncrement
+ False
+
+
+ IgnoreFillFactor
+ True
+
+
+ IgnoreIndexPadding
+ True
+
+
+ IgnoreColumnCollation
+ False
+
+
+ IgnoreLockHintsOnIndexes
+ False
+
+
+ IgnoreTableOptions
+ False
+
+
+ IgnoreIndexOptions
+ False
+
+
+ IgnoreDmlTriggerOrder
+ False
+
+
+ IgnoreDmlTriggerState
+ False
+
+
+ IgnoreAnsiNulls
+ True
+
+
+ IgnoreQuotedIdentifiers
+ True
+
+
+ IgnoreUserSettingsObjects
+ False
+
+
+ IgnoreFilegroupPlacement
+ True
+
+
+ IgnoreFullTextCatalogFilePath
+ True
+
+
+ IgnoreFileAndLogFilePath
+ True
+
+
+ IgnoreLoginSids
+ True
+
+
+ IgnoreNotForReplication
+ False
+
+
+ IgnoreFileSize
+ True
+
+
+ IncludeCompositeObjects
+ False
+
+
+ IncludeTransactionalScripts
+ False
+
+
+ NoAlterStatementsToChangeCLRTypes
+ False
+
+
+ PopulateFilesOnFileGroups
+ True
+
+
+ RegisterDataTierApplication
+ False
+
+
+ ScriptDatabaseCollation
+ False
+
+
+ ScriptDatabaseCompatibility
+ False
+
+
+ ScriptDatabaseOptions
+ False
+
+
+ ScriptDeployStateChecks
+ False
+
+
+ ScriptFileSize
+ False
+
+
+ ScriptNewConstraintValidation
+ True
+
+
+ ScriptRefreshModule
+ True
+
+
+ TargetConnectionString
+ Integrated Security=True;Pooling=False;Connect Timeout=30
+
+
+ TreatVerificationErrorsAsWarnings
+ False
+
+
+ UnmodifiableObjectWarnings
+ True
+
+
+ VerifyCollationCompatibility
+ True
+
+
+ VerifyDeployment
+ True
+
+
+ AllowDropBlockingAssemblies
+ False
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlDatabaseOptions
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlErrorMessage
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlLogin
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerRoleMembership
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlLinkedServer
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlLinkedServerLogin
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlFile
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerDdlTrigger
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlMasterKey
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlCredential
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlRoute
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlEventNotification
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlEndpoint
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlDatabaseAuditSpecification
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerAudit
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerAuditSpecification
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlCryptographicProvider
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlDatabaseEncryptionKey
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlEventSession
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlUserDefinedServerRole
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlAssemblyFile
+ ExcludedType
+
+
+
+
+ 2
+ 100
+ Equals_Objects,Not_Supported_Deploy
+
+
+
+ tmp
+ importDiesGroupRaw
+
+
+ tmp
+ importDiesRaw
+ @fileType
+
+
+ tmp
+ importClientsRaw
+ @fileType
+
+
+ tmp
+ importDiesRaw
+
+
+ tmp
+ importClientsRaw
+
+
+ tmp
+ importDiesGroupRaw
+ @fileType
+
+
+ tmp
+ importItemsRaw
+
+
+ tmp
+ importItemsRaw
+ @fileType
+
+
+ tmp
+ importPackagRaw
+
+
+ tmp
+ importPackagRaw
+ @fileType
+
+
+ tmp
+ importProductionLogRaw
+
+
+ tmp
+ importProductionLogRaw
+ @fileType
+
+
+ tmp
+ importTranspCostRaw
+
+
+ tmp
+ importTranspCostRaw
+ @fileType
+
+
+
+
+ tmp
+ importDiesRaw
+ @fileType
+
+
+ tmp
+ importClientsRaw
+ @fileType
+
+
+ tmp
+ importDiesRaw
+
+
+ tmp
+ importClientsRaw
+
+
+ tmp
+ importDiesGroupRaw
+ @fileType
+
+
+ tmp
+ importDiesGroupRaw
+
+
+ tmp
+ importItemsRaw
+
+
+ tmp
+ importItemsRaw
+ @fileType
+
+
+ tmp
+ importPackagRaw
+
+
+ tmp
+ importPackagRaw
+ @fileType
+
+
+ tmp
+ importProductionLogRaw
+
+
+ tmp
+ importProductionLogRaw
+ @fileType
+
+
+ tmp
+ importTranspCostRaw
+
+
+ tmp
+ importTranspCostRaw
+ @fileType
+
+
+
\ No newline at end of file
diff --git a/C2P_Project/Import Schema Logs/C2P_Project_20140218030130.log b/C2P_Project/Import Schema Logs/C2P_Project_20140218030130.log
new file mode 100644
index 0000000..fff5251
--- /dev/null
+++ b/C2P_Project/Import Schema Logs/C2P_Project_20140218030130.log
@@ -0,0 +1,71 @@
+2/18/2014 4:01:30 PM This log contains information about the import schema operation into project 'C2P_Project' on computer 'W2012R2SAM' by user 'samuele'.
+2/18/2014 4:01:31 PM Import of database schema has started.
+2/18/2014 4:01:37 PM Gathering database options
+2/18/2014 4:01:37 PM Gathering users
+2/18/2014 4:01:37 PM Gathering roles
+2/18/2014 4:01:37 PM Gathering application roles
+2/18/2014 4:01:37 PM Gathering role memberships
+2/18/2014 4:01:37 PM Gathering filegroups
+2/18/2014 4:01:37 PM Gathering full-text catalogs
+2/18/2014 4:01:37 PM Gathering assemblies
+2/18/2014 4:01:37 PM Gathering certificates
+2/18/2014 4:01:37 PM Gathering asymmetric keys
+2/18/2014 4:01:37 PM Gathering symmetric keys
+2/18/2014 4:01:37 PM Gathering encrypted symmetric keys
+2/18/2014 4:01:37 PM Gathering schemas
+2/18/2014 4:01:37 PM Gathering XML schema collections
+2/18/2014 4:01:37 PM Gathering user-defined data types
+2/18/2014 4:01:37 PM Gathering user-defined types
+2/18/2014 4:01:37 PM Gathering table types
+2/18/2014 4:01:37 PM Gathering unique keys for table types
+2/18/2014 4:01:37 PM Gathering primary keys for table types
+2/18/2014 4:01:37 PM Gathering check constraints for table types
+2/18/2014 4:01:37 PM Gathering default constraints for table types
+2/18/2014 4:01:37 PM Gathering partition functions
+2/18/2014 4:01:37 PM Gathering partition schemes
+2/18/2014 4:01:37 PM Gathering functions
+2/18/2014 4:01:37 PM Gathering encrypted functions
+2/18/2014 4:01:37 PM Gathering aggregates
+2/18/2014 4:01:37 PM Gathering procedures
+2/18/2014 4:01:38 PM Gathering encrypted procedures
+2/18/2014 4:01:38 PM Gathering tables
+2/18/2014 4:01:38 PM Gathering primary keys
+2/18/2014 4:01:38 PM Gathering unique constraints
+2/18/2014 4:01:38 PM Gathering foreign keys
+2/18/2014 4:01:38 PM Gathering default constraints
+2/18/2014 4:01:38 PM Gathering check constraints
+2/18/2014 4:01:38 PM Gathering views
+2/18/2014 4:01:38 PM Gathering encrypted views
+2/18/2014 4:01:38 PM Gathering indexes
+2/18/2014 4:01:38 PM Gathering statistics
+2/18/2014 4:01:38 PM Gathering full-text index stoplists
+2/18/2014 4:01:38 PM Gathering full-text indexes
+2/18/2014 4:01:38 PM Gathering spatial indexes
+2/18/2014 4:01:38 PM Gathering XML indexes
+2/18/2014 4:01:38 PM Gathering encrypted triggers
+2/18/2014 4:01:38 PM Gathering triggers
+2/18/2014 4:01:38 PM Gathering encrypted and clr ddl triggers
+2/18/2014 4:01:38 PM Gathering ddl triggers
+2/18/2014 4:01:38 PM Gathering synonyms
+2/18/2014 4:01:38 PM Gathering defaults
+2/18/2014 4:01:38 PM Gathering data constraint uddt bindings
+2/18/2014 4:01:38 PM Gathering rules
+2/18/2014 4:01:38 PM Gathering data constraint uddt bindings
+2/18/2014 4:01:38 PM Gathering message types
+2/18/2014 4:01:38 PM Gathering queues
+2/18/2014 4:01:38 PM Gathering contracts
+2/18/2014 4:01:38 PM Gathering services
+2/18/2014 4:01:38 PM Gathering event notifications
+2/18/2014 4:01:38 PM Gathering remote service bindings
+2/18/2014 4:01:38 PM Gathering broker priorities
+2/18/2014 4:01:38 PM Gathering signatures
+2/18/2014 4:01:38 PM Gathering data compression options
+2/18/2014 4:01:38 PM Gathering extended properties
+2/18/2014 4:01:38 PM Gathering credentials
+2/18/2014 4:01:38 PM Gathering logins
+2/18/2014 4:01:38 PM Gathering server audits
+2/18/2014 4:01:39 PM Scanning project for duplicate elements
+2/18/2014 4:01:39 PM Finished duplicate element processing
+2/18/2014 4:01:40 PM Finished importing database.
+2/18/2014 4:01:40 PM A summary of the import was saved to the following location: C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\Import Schema Logs\C2P_Project_20140218030130.log
+2/18/2014 4:01:40 PM Click Finish to continue...
diff --git a/C2P_Project/Security/ext.sql b/C2P_Project/Security/ext.sql
new file mode 100644
index 0000000..c5a3af9
--- /dev/null
+++ b/C2P_Project/Security/ext.sql
@@ -0,0 +1,3 @@
+CREATE SCHEMA [ext]
+ AUTHORIZATION [dbo];
+
diff --git a/C2P_Project/Security/tmp.sql b/C2P_Project/Security/tmp.sql
new file mode 100644
index 0000000..656723f
--- /dev/null
+++ b/C2P_Project/Security/tmp.sql
@@ -0,0 +1,3 @@
+CREATE SCHEMA [tmp]
+ AUTHORIZATION [dbo];
+
diff --git a/C2P_Project/Security/voc.sql b/C2P_Project/Security/voc.sql
new file mode 100644
index 0000000..788a11d
--- /dev/null
+++ b/C2P_Project/Security/voc.sql
@@ -0,0 +1,3 @@
+CREATE SCHEMA [voc]
+ AUTHORIZATION [dbo];
+
diff --git a/C2P_Project/Snapshots/C2P_Project_20140218_04-25-36.dacpac b/C2P_Project/Snapshots/C2P_Project_20140218_04-25-36.dacpac
new file mode 100644
index 0000000..91501ff
Binary files /dev/null and b/C2P_Project/Snapshots/C2P_Project_20140218_04-25-36.dacpac differ
diff --git a/C2P_Project/Snapshots/C2P_Project_20140218_17-06-52.dacpac b/C2P_Project/Snapshots/C2P_Project_20140218_17-06-52.dacpac
new file mode 100644
index 0000000..11d9e6b
Binary files /dev/null and b/C2P_Project/Snapshots/C2P_Project_20140218_17-06-52.dacpac differ
diff --git a/C2P_Project/Snapshots/C2P_Project_orig.dacpac b/C2P_Project/Snapshots/C2P_Project_orig.dacpac
new file mode 100644
index 0000000..512f99c
Binary files /dev/null and b/C2P_Project/Snapshots/C2P_Project_orig.dacpac differ
diff --git a/C2P_Project/dbo/Functions/f_dtFromRaw.sql b/C2P_Project/dbo/Functions/f_dtFromRaw.sql
new file mode 100644
index 0000000..6b31b83
--- /dev/null
+++ b/C2P_Project/dbo/Functions/f_dtFromRaw.sql
@@ -0,0 +1,23 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Functions/f_getCodPackag_OLD.sql b/C2P_Project/dbo/Functions/f_getCodPackag_OLD.sql
new file mode 100644
index 0000000..cd37da2
--- /dev/null
+++ b/C2P_Project/dbo/Functions/f_getCodPackag_OLD.sql
@@ -0,0 +1,42 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/dbo/Functions/f_getDataCodPackag.sql b/C2P_Project/dbo/Functions/f_getDataCodPackag.sql
new file mode 100644
index 0000000..b3e8c5b
--- /dev/null
+++ b/C2P_Project/dbo/Functions/f_getDataCodPackag.sql
@@ -0,0 +1,69 @@
+
+
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/dbo/Functions/f_getSubstring.sql b/C2P_Project/dbo/Functions/f_getSubstring.sql
new file mode 100644
index 0000000..e25bc5d
--- /dev/null
+++ b/C2P_Project/dbo/Functions/f_getSubstring.sql
@@ -0,0 +1,67 @@
+
+
+
+
+-- ================================================================
+-- 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
+
+
+
diff --git a/C2P_Project/dbo/Functions/f_trim.sql b/C2P_Project/dbo/Functions/f_trim.sql
new file mode 100644
index 0000000..8b42a45
--- /dev/null
+++ b/C2P_Project/dbo/Functions/f_trim.sql
@@ -0,0 +1,18 @@
+/***************************************
+* 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
\ No newline at end of file
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_fullData.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_fullData.sql
new file mode 100644
index 0000000..7e6801d
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_fullData.sql
@@ -0,0 +1,48 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataAll.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataAll.sql
new file mode 100644
index 0000000..445bdfe
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataAll.sql
@@ -0,0 +1,15 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataSearch.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataSearch.sql
new file mode 100644
index 0000000..a8cf944
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataSearch.sql
@@ -0,0 +1,23 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataUpdate.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataUpdate.sql
new file mode 100644
index 0000000..323eb08
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_fullDataUpdate.sql
@@ -0,0 +1,307 @@
+
+-- =============================================
+-- 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
+
+
+
+
+
+
+
+
+
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_update.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_update.sql
new file mode 100644
index 0000000..f83815d
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_update.sql
@@ -0,0 +1,679 @@
+
+
+
+
+-- =============================================
+-- 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
+
+
+
+
+
+
+
+
+
+
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_update_07_02.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_update_07_02.sql
new file mode 100644
index 0000000..17d70cc
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_update_07_02.sql
@@ -0,0 +1,747 @@
+
+
+
+
+-- =============================================
+-- 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
+
+
+
+
+
+
+
+
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_update_30_01.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_update_30_01.sql
new file mode 100644
index 0000000..5b4f4fe
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_update_30_01.sql
@@ -0,0 +1,705 @@
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QL_update_SAM.sql b/C2P_Project/dbo/Stored Procedures/stp_QL_update_SAM.sql
new file mode 100644
index 0000000..c6238ce
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QL_update_SAM.sql
@@ -0,0 +1,747 @@
+
+
+
+
+
+
+
+-- =============================================
+-- 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
+
+
+
+
+
+
+
diff --git a/C2P_Project/dbo/Stored Procedures/stp_QuoteFull_Q_update.sql b/C2P_Project/dbo/Stored Procedures/stp_QuoteFull_Q_update.sql
new file mode 100644
index 0000000..31e419d
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_QuoteFull_Q_update.sql
@@ -0,0 +1,26 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Stored Procedures/stp_TD_upsert.sql b/C2P_Project/dbo/Stored Procedures/stp_TD_upsert.sql
new file mode 100644
index 0000000..90010e6
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_TD_upsert.sql
@@ -0,0 +1,45 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Stored Procedures/stp_TI_upsert.sql b/C2P_Project/dbo/Stored Procedures/stp_TI_upsert.sql
new file mode 100644
index 0000000..d43d30f
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_TI_upsert.sql
@@ -0,0 +1,62 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/dbo/Stored Procedures/stp_TPS_upsert.sql b/C2P_Project/dbo/Stored Procedures/stp_TPS_upsert.sql
new file mode 100644
index 0000000..cdb4246
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_TPS_upsert.sql
@@ -0,0 +1,132 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Stored Procedures/stp_VSCli_SearchLike.sql b/C2P_Project/dbo/Stored Procedures/stp_VSCli_SearchLike.sql
new file mode 100644
index 0000000..0a6f4fe
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_VSCli_SearchLike.sql
@@ -0,0 +1,18 @@
+-- =============================================
+-- 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 + '%')
diff --git a/C2P_Project/dbo/Stored Procedures/stp_VSItem_SearchLike.sql b/C2P_Project/dbo/Stored Procedures/stp_VSItem_SearchLike.sql
new file mode 100644
index 0000000..8ae9ce4
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_VSItem_SearchLike.sql
@@ -0,0 +1,18 @@
+-- =============================================
+-- 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 + '%')
diff --git a/C2P_Project/dbo/Stored Procedures/stp_esplodiVocab.sql b/C2P_Project/dbo/Stored Procedures/stp_esplodiVocab.sql
new file mode 100644
index 0000000..0bb0cfd
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_esplodiVocab.sql
@@ -0,0 +1,53 @@
+-- =============================================
+-- 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
diff --git a/C2P_Project/dbo/Stored Procedures/stp_packageCost.sql b/C2P_Project/dbo/Stored Procedures/stp_packageCost.sql
new file mode 100644
index 0000000..2855095
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_packageCost.sql
@@ -0,0 +1,67 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/dbo/Stored Procedures/stp_zzz_scratch.sql b/C2P_Project/dbo/Stored Procedures/stp_zzz_scratch.sql
new file mode 100644
index 0000000..32060dc
--- /dev/null
+++ b/C2P_Project/dbo/Stored Procedures/stp_zzz_scratch.sql
@@ -0,0 +1,244 @@
+
+
+
+
+
+-- =============================================
+-- 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
+
+
+
+
+
+
diff --git a/C2P_Project/dbo/Tables/AgentsDet.sql b/C2P_Project/dbo/Tables/AgentsDet.sql
new file mode 100644
index 0000000..24fb027
--- /dev/null
+++ b/C2P_Project/dbo/Tables/AgentsDet.sql
@@ -0,0 +1,24 @@
+CREATE TABLE [dbo].[AgentsDet] (
+ [CodAg] NVARCHAR (50) NOT NULL,
+ [Lastname] NVARCHAR (50) NOT NULL,
+ [Firstname] NVARCHAR (50) NOT NULL,
+ [QuotaProvvAg] DECIMAL (9, 6) CONSTRAINT [DF_AgentsDet_QuotaPerc] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_AgentsDet] PRIMARY KEY CLUSTERED ([CodAg] ASC)
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/ClientDet.sql b/C2P_Project/dbo/Tables/ClientDet.sql
new file mode 100644
index 0000000..c9ef492
--- /dev/null
+++ b/C2P_Project/dbo/Tables/ClientDet.sql
@@ -0,0 +1,49 @@
+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) CONSTRAINT [DF_ClientDet_Class01] DEFAULT ('') NULL,
+ CONSTRAINT [PK_ClientDet] PRIMARY KEY CLUSTERED ([CodClient] ASC),
+ CONSTRAINT [FK_ClientDet_AgentsDet] FOREIGN KEY ([CodAg]) REFERENCES [dbo].[AgentsDet] ([CodAg]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Config.sql b/C2P_Project/dbo/Tables/Config.sql
new file mode 100644
index 0000000..883654e
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Config.sql
@@ -0,0 +1,6 @@
+CREATE TABLE [dbo].[Config] (
+ [Parameter] NVARCHAR (50) NOT NULL,
+ [Value] NVARCHAR (50) NULL,
+ CONSTRAINT [PK_Config] PRIMARY KEY CLUSTERED ([Parameter] ASC)
+);
+
diff --git a/C2P_Project/dbo/Tables/Cost2Plant.sql b/C2P_Project/dbo/Tables/Cost2Plant.sql
new file mode 100644
index 0000000..03318b9
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Cost2Plant.sql
@@ -0,0 +1,45 @@
+CREATE TABLE [dbo].[Cost2Plant] (
+ [CodPlant] NVARCHAR (50) NOT NULL,
+ [ProcessNum] NVARCHAR (50) NOT NULL,
+ [FC] DECIMAL (9, 4) NOT NULL,
+ [VC] DECIMAL (9, 4) CONSTRAINT [DF_Cost2Plant_VC] DEFAULT ((0)) NOT NULL,
+ [OH] DECIMAL (9, 4) CONSTRAINT [DF_Cost2Plant_OH] DEFAULT ((0)) NOT NULL,
+ [SC] DECIMAL (9, 4) CONSTRAINT [DF_Cost2Plant_OH1] DEFAULT ((0)) NOT NULL,
+ [QuotaPlantStd] DECIMAL (9, 4) CONSTRAINT [DF_Cost2Plant_QuotaPlantStd] DEFAULT ((0)) NOT NULL,
+ [QuotaManStd] DECIMAL (9, 4) CONSTRAINT [DF_Cost2Plant_QuotaManStd] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_Cost2Plant] PRIMARY KEY CLUSTERED ([CodPlant] ASC, [ProcessNum] ASC),
+ CONSTRAINT [FK_Cost2Plant_PlantsDet] FOREIGN KEY ([CodPlant]) REFERENCES [dbo].[PlantsDet] ([CodPlant]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/DiesDet.sql b/C2P_Project/dbo/Tables/DiesDet.sql
new file mode 100644
index 0000000..324dea9
--- /dev/null
+++ b/C2P_Project/dbo/Tables/DiesDet.sql
@@ -0,0 +1,59 @@
+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) CONSTRAINT [DF_DiesDet_Price] DEFAULT ((0)) NOT NULL,
+ [TestCost] DECIMAL (9, 3) CONSTRAINT [DF_DiesDet_Price1] DEFAULT ((0)) 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),
+ CONSTRAINT [FK_DiesDet_DiesGroupDet] FOREIGN KEY ([CodDiesGroup]) REFERENCES [dbo].[DiesGroupDet] ([CodDiesGroup]) ON UPDATE CASCADE,
+ CONSTRAINT [FK_DiesDet_ItemDet] FOREIGN KEY ([CodItem]) REFERENCES [dbo].[ItemDet] ([CodItem]) ON UPDATE CASCADE
+);
+
+
+GO
+CREATE NONCLUSTERED INDEX [i_DiesDet_CodItem_CodDiesGroup_Active]
+ ON [dbo].[DiesDet]([CodItem] ASC, [CodDiesGroup] ASC, [Active] ASC)
+ INCLUDE([Price], [ExpLife], [ActLife]);
+
+
+GO
+CREATE NONCLUSTERED INDEX [i_DiesDet_Active_CodDiesGroup_Filtered]
+ ON [dbo].[DiesDet]([Active] ASC, [CodDiesGroup] ASC)
+ INCLUDE([CodItem]) WHERE ([Active]=(0));
+
+
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/DiesGroupDet.sql b/C2P_Project/dbo/Tables/DiesGroupDet.sql
new file mode 100644
index 0000000..34106cc
--- /dev/null
+++ b/C2P_Project/dbo/Tables/DiesGroupDet.sql
@@ -0,0 +1,36 @@
+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) CONSTRAINT [DF_DiesGroupDet_ExpLife] DEFAULT ((1)) NOT NULL,
+ [EOLLife] DECIMAL (9, 2) CONSTRAINT [DF_DiesGroupDet_EOLLife] DEFAULT ((1)) NOT NULL,
+ [DateMod] DATE NULL,
+ [UserMod] NVARCHAR (50) NULL,
+ CONSTRAINT [PK_DiesGroupDet] PRIMARY KEY CLUSTERED ([CodDiesGroup] ASC)
+);
+
+
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Incoterms.sql b/C2P_Project/dbo/Tables/Incoterms.sql
new file mode 100644
index 0000000..2782ca2
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Incoterms.sql
@@ -0,0 +1,19 @@
+CREATE TABLE [dbo].[Incoterms] (
+ [CodInco] NVARCHAR (5) NOT NULL,
+ [Descript] NVARCHAR (250) NOT NULL,
+ [HasTC] INT CONSTRAINT [DF_Incoterms_HasTC] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_Incoterms] PRIMARY KEY CLUSTERED ([CodInco] ASC)
+);
+
+
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/ItemDet.sql b/C2P_Project/dbo/Tables/ItemDet.sql
new file mode 100644
index 0000000..6731550
--- /dev/null
+++ b/C2P_Project/dbo/Tables/ItemDet.sql
@@ -0,0 +1,34 @@
+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) CONSTRAINT [DF_ItemDet_Class01] DEFAULT ('') NOT NULL,
+ [Class02] NVARCHAR (50) CONSTRAINT [DF_ItemDet_Class02] DEFAULT ('') NOT NULL,
+ [Class03] NVARCHAR (50) CONSTRAINT [DF_ItemDet_Class03] DEFAULT ('') NOT NULL,
+ [Class04] NVARCHAR (50) CONSTRAINT [DF_ItemDet_Class04] DEFAULT ('') NOT NULL,
+ [Class05] NVARCHAR (50) CONSTRAINT [DF_ItemDet_Class05] DEFAULT ('') NOT NULL,
+ CONSTRAINT [PK_AnagArticoli] PRIMARY KEY CLUSTERED ([CodItem] ASC)
+);
+
+
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Lingue.sql b/C2P_Project/dbo/Tables/Lingue.sql
new file mode 100644
index 0000000..9ae1331
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Lingue.sql
@@ -0,0 +1,6 @@
+CREATE TABLE [dbo].[Lingue] (
+ [Lingua] NVARCHAR (3) NOT NULL,
+ [DescrizioneLingua] NVARCHAR (50) NOT NULL,
+ CONSTRAINT [PK_Lingue] PRIMARY KEY CLUSTERED ([Lingua] ASC)
+);
+
diff --git a/C2P_Project/dbo/Tables/PackagDet.sql b/C2P_Project/dbo/Tables/PackagDet.sql
new file mode 100644
index 0000000..541ec2e
--- /dev/null
+++ b/C2P_Project/dbo/Tables/PackagDet.sql
@@ -0,0 +1,16 @@
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Package2.sql b/C2P_Project/dbo/Tables/Package2.sql
new file mode 100644
index 0000000..abb0685
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Package2.sql
@@ -0,0 +1,23 @@
+CREATE TABLE [dbo].[Package2] (
+ [CodPackag] NVARCHAR (50) NOT NULL,
+ [TotQta] DECIMAL (18, 3) CONSTRAINT [DF_Package2_TotQty] DEFAULT ((0)) NOT NULL,
+ [Weight] DECIMAL (18, 6) CONSTRAINT [DF_Package2_Weight] DEFAULT ((0)) NOT NULL,
+ [Tare] DECIMAL (18, 6) CONSTRAINT [DF_Package2_Tare] DEFAULT ((0)) NOT NULL,
+ [NumImb] DECIMAL (9, 6) CONSTRAINT [DF_Package2_NumImb] DEFAULT ((0)) NOT NULL,
+ [Durata] DECIMAL (18, 6) CONSTRAINT [DF_Package2_Durata] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_Package2] PRIMARY KEY CLUSTERED ([CodPackag] ASC),
+ CONSTRAINT [FK_Package2_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Package2Item.sql b/C2P_Project/dbo/Tables/Package2Item.sql
new file mode 100644
index 0000000..b9fba64
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Package2Item.sql
@@ -0,0 +1,29 @@
+CREATE TABLE [dbo].[Package2Item] (
+ [CodItem] NVARCHAR (50) NOT NULL,
+ [CodPackag] NVARCHAR (50) NOT NULL,
+ [TotQta] DECIMAL (18, 3) CONSTRAINT [DF_Package2Item_TotQty] DEFAULT ((0)) NOT NULL,
+ [Weight] DECIMAL (9, 4) CONSTRAINT [DF_Package2Item_Weight] DEFAULT ((0)) NOT NULL,
+ [Tare] DECIMAL (9, 4) CONSTRAINT [DF_Package2Item_Tare] DEFAULT ((0)) NOT NULL,
+ [NumImb] DECIMAL (9, 6) CONSTRAINT [DF_Package2Item_NumImb] DEFAULT ((0)) NOT NULL,
+ [Durata] DECIMAL (18, 6) CONSTRAINT [DF_Package2Item_Durata] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_Package2Item] PRIMARY KEY CLUSTERED ([CodItem] ASC, [CodPackag] ASC),
+ CONSTRAINT [FK_Package2Item_ItemDet] FOREIGN KEY ([CodItem]) REFERENCES [dbo].[ItemDet] ([CodItem]) ON UPDATE CASCADE,
+ CONSTRAINT [FK_Package2Item_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Package2ItemClient.sql b/C2P_Project/dbo/Tables/Package2ItemClient.sql
new file mode 100644
index 0000000..0239293
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Package2ItemClient.sql
@@ -0,0 +1,35 @@
+CREATE TABLE [dbo].[Package2ItemClient] (
+ [CodItem] NVARCHAR (50) NOT NULL,
+ [CodClient] NVARCHAR (50) NOT NULL,
+ [CodPackag] NVARCHAR (50) NOT NULL,
+ [TotQta] DECIMAL (18, 3) CONSTRAINT [DF_Package2ItemClient_TotQty] DEFAULT ((0)) NOT NULL,
+ [Weight] DECIMAL (18, 6) CONSTRAINT [DF_Package2ItemClient_Weight] DEFAULT ((0)) NOT NULL,
+ [Tare] DECIMAL (18, 6) CONSTRAINT [DF_Package2ItemClient_Tare] DEFAULT ((0)) NOT NULL,
+ [NumImb] DECIMAL (9, 6) CONSTRAINT [DF_Package2ItemClient_NumImb] DEFAULT ((0)) NOT NULL,
+ [Durata] DECIMAL (18, 6) CONSTRAINT [DF_Package2ItemClient_Durata] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_Package2ItemClient] PRIMARY KEY CLUSTERED ([CodItem] ASC, [CodClient] ASC, [CodPackag] ASC),
+ CONSTRAINT [FK_Package2ItemClient_ClientDet] FOREIGN KEY ([CodClient]) REFERENCES [dbo].[ClientDet] ([CodClient]) ON UPDATE CASCADE,
+ CONSTRAINT [FK_Package2ItemClient_ItemDet] FOREIGN KEY ([CodItem]) REFERENCES [dbo].[ItemDet] ([CodItem]) ON UPDATE CASCADE,
+ CONSTRAINT [FK_Package2ItemClient_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/PlantsDet.sql b/C2P_Project/dbo/Tables/PlantsDet.sql
new file mode 100644
index 0000000..8054128
--- /dev/null
+++ b/C2P_Project/dbo/Tables/PlantsDet.sql
@@ -0,0 +1,19 @@
+CREATE TABLE [dbo].[PlantsDet] (
+ [CodPlant] NVARCHAR (50) NOT NULL,
+ [Descript] NVARCHAR (250) NOT NULL,
+ [Charge] DECIMAL (9, 6) CONSTRAINT [DF_PlantsDet_OH] DEFAULT ((1)) NOT NULL,
+ CONSTRAINT [PK_PlantsDet] PRIMARY KEY CLUSTERED ([CodPlant] ASC)
+);
+
+
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/ProductionLog.sql b/C2P_Project/dbo/Tables/ProductionLog.sql
new file mode 100644
index 0000000..314990b
--- /dev/null
+++ b/C2P_Project/dbo/Tables/ProductionLog.sql
@@ -0,0 +1,134 @@
+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) CONSTRAINT [DF_ProductionLog_NrPos] DEFAULT ('') 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 CONSTRAINT [DF_ProductionLog_okPr] DEFAULT ((1)) NOT NULL,
+ [okQM] BIT CONSTRAINT [DF_ProductionLog_okQM] DEFAULT ((1)) NOT NULL,
+ [okSc] BIT CONSTRAINT [DF_ProductionLog_okSc] DEFAULT ((1)) NOT NULL,
+ [okDi] BIT CONSTRAINT [DF_ProductionLog_okDi] DEFAULT ((1)) NOT NULL,
+ CONSTRAINT [PK_ProductionLog_1] PRIMARY KEY CLUSTERED ([EventStart] ASC, [EventEnd] ASC, [CodPlant] ASC, [ProcessNum] ASC, [NrPos] ASC, [CodDies] ASC),
+ CONSTRAINT [FK_ProductionLog_ClientDet] FOREIGN KEY ([CodClient]) REFERENCES [dbo].[ClientDet] ([CodClient]) ON UPDATE CASCADE,
+ CONSTRAINT [FK_ProductionLog_PackagDet] FOREIGN KEY ([CodPackag]) REFERENCES [dbo].[PackagDet] ([CodPackag]) ON UPDATE CASCADE,
+ CONSTRAINT [FK_ProductionLog_PlantsDet] FOREIGN KEY ([CodPlant]) REFERENCES [dbo].[PlantsDet] ([CodPlant]) ON UPDATE CASCADE,
+ CONSTRAINT [FK_ProductionLog_RawMatDet] FOREIGN KEY ([RawMat]) REFERENCES [dbo].[RawMatDet] ([RawMat]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/QuoteFull_Q.sql b/C2P_Project/dbo/Tables/QuoteFull_Q.sql
new file mode 100644
index 0000000..810b6ac
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteFull_Q.sql
@@ -0,0 +1,76 @@
+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) CONSTRAINT [DF_QuoteFull_Q_PriceOff] DEFAULT ((0)) 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
+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';
+
diff --git a/C2P_Project/dbo/Tables/QuoteFull_Q_old.sql b/C2P_Project/dbo/Tables/QuoteFull_Q_old.sql
new file mode 100644
index 0000000..6a49cd3
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteFull_Q_old.sql
@@ -0,0 +1,73 @@
+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
+);
+
diff --git a/C2P_Project/dbo/Tables/QuoteList.sql b/C2P_Project/dbo/Tables/QuoteList.sql
new file mode 100644
index 0000000..eda7fae
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteList.sql
@@ -0,0 +1,77 @@
+CREATE TABLE [dbo].[QuoteList] (
+ [QuoteType] CHAR (1) CONSTRAINT [DF_QuoteList_QuoteType] DEFAULT ('Q') NOT NULL,
+ [CodQuote] BIGINT NOT NULL,
+ [QuoteRev] INT CONSTRAINT [DF_QuoteList_QuoteRev] DEFAULT ((0)) NOT NULL,
+ [CodClient] NVARCHAR (50) NOT NULL,
+ [CodItem] NVARCHAR (50) CONSTRAINT [DF_QuoteList_CodItem] DEFAULT ('') NOT NULL,
+ [CodItemGroup] NVARCHAR (50) CONSTRAINT [DF_QuoteList_CodItemGroup] DEFAULT ('') NOT NULL,
+ [RawMat] NVARCHAR (50) NOT NULL,
+ [UnitWeight] DECIMAL (9, 3) CONSTRAINT [DF_QuoteList_UnitWeight] DEFAULT ((0)) NOT NULL,
+ [BatchQty] INT CONSTRAINT [DF_QuoteList_BathQty] DEFAULT ((0)) NOT NULL,
+ [CodInco] NVARCHAR (5) NOT NULL,
+ [KeyAM] AS (([CodItem]+'-')+[RawMat]),
+ [Note] NVARCHAR (2500) CONSTRAINT [DF_QuoteList_Note] DEFAULT ('') NOT NULL,
+ [PriceOff] DECIMAL (9, 6) CONSTRAINT [DF_QuoteList_OrdPrice1] DEFAULT ((0)) NOT NULL,
+ [OrdDate] DATE NULL,
+ [OrdNum] NVARCHAR (50) CONSTRAINT [DF_QuoteList_OrdNum] DEFAULT ((0)) NOT NULL,
+ [OrdRow] NVARCHAR (50) CONSTRAINT [DF_QuoteList_OrdRow] DEFAULT ((0)) NOT NULL,
+ [OrdPrice] DECIMAL (9, 6) CONSTRAINT [DF_QuoteList_PriceOff1] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_QuoteList_1] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC)
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/QuoteOC.sql b/C2P_Project/dbo/Tables/QuoteOC.sql
new file mode 100644
index 0000000..f2ec5b3
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteOC.sql
@@ -0,0 +1,87 @@
+CREATE TABLE [dbo].[QuoteOC] (
+ [QuoteType] CHAR (1) CONSTRAINT [DF_QuoteExtra_QuoteType] DEFAULT ('Q') NOT NULL,
+ [CodQuote] BIGINT NOT NULL,
+ [QuoteRev] INT CONSTRAINT [DF_QuoteExtra_QuoteRev] DEFAULT ((0)) NOT NULL,
+ [NumEx] INT NOT NULL,
+ [ProcessNum] NVARCHAR (50) CONSTRAINT [DF_QuoteExtra_ResType] DEFAULT ((0)) NOT NULL,
+ [CodPlant] NVARCHAR (50) NOT NULL,
+ [Class01] NVARCHAR (50) CONSTRAINT [DF_QuoteExtra_Class01] DEFAULT ('') NOT NULL,
+ [Class02] NVARCHAR (50) CONSTRAINT [DF_QuoteExtra_Class02] DEFAULT ('') NOT NULL,
+ [Class03] NVARCHAR (50) CONSTRAINT [DF_QuoteExtra_Class03] DEFAULT ('') NOT NULL,
+ [Class04] NVARCHAR (50) CONSTRAINT [DF_QuoteExtra_Class04] DEFAULT ('') NOT NULL,
+ [Class05] NVARCHAR (50) CONSTRAINT [DF_QuoteExtra_Class05] DEFAULT ('') NOT NULL,
+ [TotQty] DECIMAL (18, 6) CONSTRAINT [DF_QuoteExtra_TotQty] DEFAULT ((1)) NOT NULL,
+ [TotCost] DECIMAL (18, 6) CONSTRAINT [DF_QuoteExtra_TotCost] DEFAULT ((0)) NOT NULL,
+ [Quota] DECIMAL (18, 6) CONSTRAINT [DF_QuoteExtra_Quota] DEFAULT ((1)) NOT NULL,
+ [C4UG] AS (([TotCost]*[Quota])/[TotQty]) PERSISTED,
+ [valid] BIT CONSTRAINT [DF_QuoteOC_valid] DEFAULT ((1)) NOT NULL,
+ CONSTRAINT [PK_QuoteExtra] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC, [NumEx] ASC),
+ CONSTRAINT [FK_QuoteExtra_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/QuoteParam.sql b/C2P_Project/dbo/Tables/QuoteParam.sql
new file mode 100644
index 0000000..faeef1f
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteParam.sql
@@ -0,0 +1,28 @@
+CREATE TABLE [dbo].[QuoteParam] (
+ [QuoteType] CHAR (1) CONSTRAINT [DF_QuoteParam_QuoteType] DEFAULT ('Q') NOT NULL,
+ [CodQuote] BIGINT NOT NULL,
+ [QuoteRev] INT CONSTRAINT [DF_QuoteParam_QuoteRev] DEFAULT ((0)) NOT NULL,
+ [NumP] INT NOT NULL,
+ [ProcessNum] NVARCHAR (50) CONSTRAINT [DF_QuoteParam_ProcessNum] DEFAULT ((0)) NOT NULL,
+ [Descr] NVARCHAR (50) NOT NULL,
+ [Parameter] NVARCHAR (100) CONSTRAINT [DF_QuoteParam_Parameter] DEFAULT ('') NOT NULL,
+ CONSTRAINT [PK_QuoteParam] PRIMARY KEY CLUSTERED ([NumP] ASC, [QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC),
+ CONSTRAINT [FK_QuoteParam_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/QuoteRM.sql b/C2P_Project/dbo/Tables/QuoteRM.sql
new file mode 100644
index 0000000..9376f1c
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteRM.sql
@@ -0,0 +1,53 @@
+CREATE TABLE [dbo].[QuoteRM] (
+ [QuoteType] CHAR (1) CONSTRAINT [DF_QuoteRM_QuoteType] DEFAULT ('Q') NOT NULL,
+ [CodQuote] BIGINT NOT NULL,
+ [QuoteRev] INT CONSTRAINT [DF_QuoteRM_QuoteRev] DEFAULT ((0)) NOT NULL,
+ [NumRM] INT NOT NULL,
+ [RawMat] NVARCHAR (50) NOT NULL,
+ [RawMatCost] DECIMAL (18, 6) CONSTRAINT [DF_QuoteRM_RawMatCost] DEFAULT ((0)) NOT NULL,
+ [RawMatExtraCost] DECIMAL (18, 6) CONSTRAINT [DF_QuoteRM_RawMatExtraCost] DEFAULT ((0)) NOT NULL,
+ [CodPackag] NVARCHAR (50) CONSTRAINT [DF_QuoteRM_CodPackag] DEFAULT ((0)) NOT NULL,
+ [FCR] DECIMAL (18, 6) CONSTRAINT [DF_QuoteRM_ConvRatio] DEFAULT ((1)) NOT NULL,
+ [FYR] AS ((1)/[FCR]),
+ [FSR] AS ((1)-(1)/[FCR]),
+ [valid] BIT CONSTRAINT [DF_QuoteRM_valid] DEFAULT ((1)) NOT NULL,
+ CONSTRAINT [PK_QuoteRM] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC, [NumRM] ASC),
+ CONSTRAINT [FK_QuoteRM_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/QuoteWorkExt.sql b/C2P_Project/dbo/Tables/QuoteWorkExt.sql
new file mode 100644
index 0000000..4f6f0bf
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteWorkExt.sql
@@ -0,0 +1,32 @@
+CREATE TABLE [dbo].[QuoteWorkExt] (
+ [QuoteType] CHAR (1) CONSTRAINT [DF_QuoteWorkExt_QuoteType] DEFAULT ('Q') NOT NULL,
+ [CodQuote] BIGINT NOT NULL,
+ [QuoteRev] INT CONSTRAINT [DF_QuoteWorkExt_QuoteRev] DEFAULT ((0)) NOT NULL,
+ [NumWE] INT NOT NULL,
+ [EWC4UG] DECIMAL (9, 6) CONSTRAINT [DF_QuoteWorkExt_FC4UG] DEFAULT ((0)) NOT NULL,
+ [UM] NVARCHAR (50) CONSTRAINT [DF_QuoteWorkExt_EWC4UG1] DEFAULT ((0)) NOT NULL,
+ [valid] BIT CONSTRAINT [DF_QuoteWorkExt_valid] DEFAULT ((1)) NOT NULL,
+ CONSTRAINT [PK_QuoteWorkExt] PRIMARY KEY CLUSTERED ([QuoteRev] ASC, [QuoteType] ASC, [CodQuote] ASC, [NumWE] ASC),
+ CONSTRAINT [FK_QuoteWorkExt_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/QuoteWorkInt.sql b/C2P_Project/dbo/Tables/QuoteWorkInt.sql
new file mode 100644
index 0000000..5794268
--- /dev/null
+++ b/C2P_Project/dbo/Tables/QuoteWorkInt.sql
@@ -0,0 +1,127 @@
+CREATE TABLE [dbo].[QuoteWorkInt] (
+ [QuoteType] CHAR (1) CONSTRAINT [DF_QuoteWorkInt_QuoteType] DEFAULT ('Q') NOT NULL,
+ [CodQuote] BIGINT NOT NULL,
+ [QuoteRev] INT CONSTRAINT [DF_QuoteWorkInt_QuoteRev] DEFAULT ((0)) NOT NULL,
+ [NumWI] INT NOT NULL,
+ [ProcessNum] NVARCHAR (50) CONSTRAINT [DF_QuoteWorkInt_WorkType] DEFAULT ((0)) NOT NULL,
+ [CodPlant] NVARCHAR (50) NOT NULL,
+ [Class01] NVARCHAR (50) CONSTRAINT [DF_QuoteWorkInt_Prod_LUK] DEFAULT ('') NOT NULL,
+ [Class02] NVARCHAR (50) CONSTRAINT [DF_QuoteWorkInt_Class011] DEFAULT ('') NOT NULL,
+ [Class03] NVARCHAR (50) CONSTRAINT [DF_QuoteWorkInt_Class021] DEFAULT ('') NOT NULL,
+ [Class04] NVARCHAR (50) CONSTRAINT [DF_QuoteWorkInt_Class031] DEFAULT ('') NOT NULL,
+ [Class05] NVARCHAR (50) CONSTRAINT [DF_QuoteWorkInt_Class032] DEFAULT ('') NOT NULL,
+ [NetProd] DECIMAL (9, 3) CONSTRAINT [DF_QuoteWorkInt_NetProd] DEFAULT ((0)) NOT NULL,
+ [WSR] DECIMAL (9, 8) CONSTRAINT [DF_QuoteWorkInt_TSR] DEFAULT ((0)) NOT NULL,
+ [MSR] DECIMAL (9, 8) CONSTRAINT [DF_QuoteWorkInt_CSR] DEFAULT ((0)) NOT NULL,
+ [DSR] DECIMAL (9, 8) CONSTRAINT [DF_QuoteWorkInt_CSR1] DEFAULT ((0)) NOT NULL,
+ [FC4UG] DECIMAL (9, 6) CONSTRAINT [DF_QuoteWorkInt_RUFG] DEFAULT ((0)) NOT NULL,
+ [VC4UG] DECIMAL (9, 6) CONSTRAINT [DF_QuoteWorkInt_RCFG] DEFAULT ((0)) NOT NULL,
+ [OH4UG] DECIMAL (9, 6) CONSTRAINT [DF_QuoteWorkInt_VC4UG1] DEFAULT ((0)) NOT NULL,
+ [SC4UG] DECIMAL (9, 6) CONSTRAINT [DF_QuoteWorkInt_VC4UG1_1] DEFAULT ((0)) 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 CONSTRAINT [DF_QuoteWorkInt_valid] DEFAULT ((1)) NOT NULL,
+ CONSTRAINT [PK_QuoteWorkInt] PRIMARY KEY CLUSTERED ([QuoteType] ASC, [CodQuote] ASC, [QuoteRev] ASC, [NumWI] ASC),
+ CONSTRAINT [FK_QuoteWorkInt_QuoteList] FOREIGN KEY ([QuoteType], [CodQuote], [QuoteRev]) REFERENCES [dbo].[QuoteList] ([QuoteType], [CodQuote], [QuoteRev]) ON UPDATE CASCADE
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Work Conversion Ratio, Messa a Cento, 1 / RESA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'WCR';
+
+
+GO
+EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'Material Conversion Ratio, Messa a Cento, 1 / RESA', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'QuoteWorkInt', @level2type = N'COLUMN', @level2name = N'MCR';
+
+
+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';
+
diff --git a/C2P_Project/dbo/Tables/RawMatDet.sql b/C2P_Project/dbo/Tables/RawMatDet.sql
new file mode 100644
index 0000000..722e271
--- /dev/null
+++ b/C2P_Project/dbo/Tables/RawMatDet.sql
@@ -0,0 +1,49 @@
+CREATE TABLE [dbo].[RawMatDet] (
+ [RawMat] NVARCHAR (50) NOT NULL,
+ [ProcCost] DECIMAL (18, 6) CONSTRAINT [DF_RawMatDet_ProcCost] DEFAULT ((0)) NOT NULL,
+ [ProcYield] DECIMAL (9, 6) CONSTRAINT [DF_RawMatDet_ProcYield] DEFAULT ((0)) NOT NULL,
+ [CSR] DECIMAL (9, 6) CONSTRAINT [DF_RawMatDet_CSR] DEFAULT ((0)) NOT NULL,
+ [SSR] DECIMAL (9, 6) CONSTRAINT [DF_RawMatDet_SSR] DEFAULT ((0)) NULL,
+ [SSVA] DECIMAL (9, 6) CONSTRAINT [DF_RawMatDet_SSVA] DEFAULT ((0)) NULL,
+ [SSVR] DECIMAL (9, 6) CONSTRAINT [DF_RawMatDet_SSVR] DEFAULT ((0)) NULL,
+ [ExtraMatCost] DECIMAL (9, 6) CONSTRAINT [DF_RawMatDet_ExtraMatCost] DEFAULT ((0)) NULL,
+ [ExtraServCost] DECIMAL (9, 6) CONSTRAINT [DF_RawMatDet_ExtraServCost] DEFAULT ((0)) NULL,
+ CONSTRAINT [PK_RawMatDet] PRIMARY KEY CLUSTERED ([RawMat] ASC)
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/RevHistory.sql b/C2P_Project/dbo/Tables/RevHistory.sql
new file mode 100644
index 0000000..df34a7f
--- /dev/null
+++ b/C2P_Project/dbo/Tables/RevHistory.sql
@@ -0,0 +1,24 @@
+CREATE TABLE [dbo].[RevHistory] (
+ [RevType] NVARCHAR (50) CONSTRAINT [DF_RevHistory_RevType] DEFAULT (N'P') NOT NULL,
+ [RevNum] INT CONSTRAINT [DF_RevHistory_RevNum] DEFAULT ((0)) NOT NULL,
+ [DateRev] DATETIME NOT NULL,
+ [Description] NVARCHAR (250) CONSTRAINT [DF_RevHistory_Description] DEFAULT ('') NOT NULL,
+ CONSTRAINT [PK_RevHistory] PRIMARY KEY CLUSTERED ([RevType] ASC, [RevNum] ASC)
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/TabDifett.sql b/C2P_Project/dbo/Tables/TabDifett.sql
new file mode 100644
index 0000000..32646a3
--- /dev/null
+++ b/C2P_Project/dbo/Tables/TabDifett.sql
@@ -0,0 +1,21 @@
+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
+CREATE CLUSTERED INDEX [i_TabDifett_ProcessNum_KeyAMI]
+ ON [dbo].[TabDifett]([ProcessNum] ASC, [KeyAMI] ASC);
+
+
+GO
+CREATE NONCLUSTERED INDEX [i_TabDifett_KeyAMI_ProcessNum]
+ ON [dbo].[TabDifett]([KeyAMI] ASC, [ProcessNum] ASC)
+ INCLUDE([TotOUT], [TotIn]);
+
diff --git a/C2P_Project/dbo/Tables/TabImbArt.sql b/C2P_Project/dbo/Tables/TabImbArt.sql
new file mode 100644
index 0000000..917a316
--- /dev/null
+++ b/C2P_Project/dbo/Tables/TabImbArt.sql
@@ -0,0 +1,8 @@
+CREATE TABLE [dbo].[TabImbArt] (
+ [KeyA] NVARCHAR (50) NOT NULL,
+ [NumImb] DECIMAL (9, 6) CONSTRAINT [DF_TabImbArt_NumImb] DEFAULT ((0)) NOT NULL,
+ [TotOut] DECIMAL (18, 6) CONSTRAINT [DF_TabImbArt_TotOut] DEFAULT ((0)) NOT NULL,
+ [Durata] DECIMAL (18, 6) CONSTRAINT [DF_TabImbArt_Durata] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_TabImbArt] PRIMARY KEY CLUSTERED ([KeyA] ASC)
+);
+
diff --git a/C2P_Project/dbo/Tables/TabImbGrp.sql b/C2P_Project/dbo/Tables/TabImbGrp.sql
new file mode 100644
index 0000000..580126e
--- /dev/null
+++ b/C2P_Project/dbo/Tables/TabImbGrp.sql
@@ -0,0 +1,8 @@
+CREATE TABLE [dbo].[TabImbGrp] (
+ [CodPackag] NVARCHAR (50) NOT NULL,
+ [NumImb] DECIMAL (9, 6) CONSTRAINT [DF_TabImbGrp_NumImb] DEFAULT ((0)) NOT NULL,
+ [TotOut] DECIMAL (18, 6) CONSTRAINT [DF_TabImbGrp_TotOut] DEFAULT ((0)) NOT NULL,
+ [Durata] DECIMAL (18, 6) CONSTRAINT [DF_TabImbGrp_Durata] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_TabImbGrp] PRIMARY KEY CLUSTERED ([CodPackag] ASC)
+);
+
diff --git a/C2P_Project/dbo/Tables/TabProdSc.sql b/C2P_Project/dbo/Tables/TabProdSc.sql
new file mode 100644
index 0000000..2fa4794
--- /dev/null
+++ b/C2P_Project/dbo/Tables/TabProdSc.sql
@@ -0,0 +1,31 @@
+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
+CREATE NONCLUSTERED INDEX [i_TabProdSc_KeyAM]
+ ON [dbo].[TabProdSc]([KeyAM] ASC)
+ INCLUDE([KgTeo]);
+
+
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/TranspCostDet.sql b/C2P_Project/dbo/Tables/TranspCostDet.sql
new file mode 100644
index 0000000..6ff2472
--- /dev/null
+++ b/C2P_Project/dbo/Tables/TranspCostDet.sql
@@ -0,0 +1,14 @@
+CREATE TABLE [dbo].[TranspCostDet] (
+ [TranspZone] NVARCHAR (50) CONSTRAINT [DF_Table_1_ClassCli01] DEFAULT ('') NOT NULL,
+ [TranspCost] DECIMAL (9, 6) NOT NULL,
+ CONSTRAINT [PK_TranspCostDet_1] PRIMARY KEY CLUSTERED ([TranspZone] ASC)
+);
+
+
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Utilities.sql b/C2P_Project/dbo/Tables/Utilities.sql
new file mode 100644
index 0000000..cb401ef
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Utilities.sql
@@ -0,0 +1,23 @@
+CREATE TABLE [dbo].[Utilities] (
+ [CodUtil] NVARCHAR (50) NOT NULL,
+ [CodPlant] NVARCHAR (50) NOT NULL,
+ [UnitCost] DECIMAL (9, 6) CONSTRAINT [DF_Utilities_unitCost] DEFAULT ((0)) NOT NULL,
+ CONSTRAINT [PK_Utilities] PRIMARY KEY CLUSTERED ([CodUtil] ASC, [CodPlant] ASC)
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/dbo/Tables/Vocabolario.sql b/C2P_Project/dbo/Tables/Vocabolario.sql
new file mode 100644
index 0000000..4c1d463
--- /dev/null
+++ b/C2P_Project/dbo/Tables/Vocabolario.sql
@@ -0,0 +1,13 @@
+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),
+ CONSTRAINT [FK_Vocabolario_Lingue] FOREIGN KEY ([Lingua]) REFERENCES [dbo].[Lingue] ([Lingua]) ON UPDATE CASCADE
+);
+
+
+GO
+CREATE NONCLUSTERED INDEX [I_lemma]
+ ON [dbo].[Vocabolario]([Lemma] ASC);
+
diff --git a/C2P_Project/dbo/Tables/test.sql b/C2P_Project/dbo/Tables/test.sql
new file mode 100644
index 0000000..4749e81
--- /dev/null
+++ b/C2P_Project/dbo/Tables/test.sql
@@ -0,0 +1,12 @@
+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)
+);
+
diff --git a/C2P_Project/dbo/Views/v_QuoteFull_Q.sql b/C2P_Project/dbo/Views/v_QuoteFull_Q.sql
new file mode 100644
index 0000000..0409a80
--- /dev/null
+++ b/C2P_Project/dbo/Views/v_QuoteFull_Q.sql
@@ -0,0 +1,136 @@
+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
+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
+EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_QuoteFull_Q';
+
diff --git a/C2P_Project/dbo/Views/v_selClient.sql b/C2P_Project/dbo/Views/v_selClient.sql
new file mode 100644
index 0000000..214d5af
--- /dev/null
+++ b/C2P_Project/dbo/Views/v_selClient.sql
@@ -0,0 +1,130 @@
+CREATE VIEW dbo.v_selClient
+AS
+SELECT CodClient AS value, ClientName + ' [' + CodClient + ']' AS label
+FROM dbo.ClientDet
+WHERE (CodClient <> '')
+
+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
+EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selClient';
+
diff --git a/C2P_Project/dbo/Views/v_selItems.sql b/C2P_Project/dbo/Views/v_selItems.sql
new file mode 100644
index 0000000..1d71ff6
--- /dev/null
+++ b/C2P_Project/dbo/Views/v_selItems.sql
@@ -0,0 +1,130 @@
+CREATE VIEW dbo.v_selItems
+AS
+SELECT CodItem AS value, ItemDescr + ' [' + CodItem + ']' AS label
+FROM dbo.ItemDet
+WHERE (CodItem <> '')
+
+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
+EXECUTE sp_addextendedproperty @name = N'MS_DiagramPaneCount', @value = 1, @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selItems';
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_filterProductionLogRow.sql b/C2P_Project/ext/Stored Procedures/stp_filterProductionLogRow.sql
new file mode 100644
index 0000000..9a2b36d
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_filterProductionLogRow.sql
@@ -0,0 +1,76 @@
+
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeAgentsDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergeAgentsDet.sql
new file mode 100644
index 0000000..a467944
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeAgentsDet.sql
@@ -0,0 +1,38 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeClientDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergeClientDet.sql
new file mode 100644
index 0000000..f2aff21
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeClientDet.sql
@@ -0,0 +1,55 @@
+
+
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeCost2Plant.sql b/C2P_Project/ext/Stored Procedures/stp_mergeCost2Plant.sql
new file mode 100644
index 0000000..800ce52
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeCost2Plant.sql
@@ -0,0 +1,51 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeDiesDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergeDiesDet.sql
new file mode 100644
index 0000000..652b781
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeDiesDet.sql
@@ -0,0 +1,104 @@
+
+
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeDiesGroupDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergeDiesGroupDet.sql
new file mode 100644
index 0000000..2f891e3
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeDiesGroupDet.sql
@@ -0,0 +1,50 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeItemDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergeItemDet.sql
new file mode 100644
index 0000000..ead02ba
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeItemDet.sql
@@ -0,0 +1,52 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergePackagDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergePackagDet.sql
new file mode 100644
index 0000000..09506f1
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergePackagDet.sql
@@ -0,0 +1,53 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergePackage2.sql b/C2P_Project/ext/Stored Procedures/stp_mergePackage2.sql
new file mode 100644
index 0000000..5642c32
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergePackage2.sql
@@ -0,0 +1,93 @@
+
+
+
+
+-- =============================================
+-- 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
+
+
+
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergePackage2Item.sql b/C2P_Project/ext/Stored Procedures/stp_mergePackage2Item.sql
new file mode 100644
index 0000000..87c1dea
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergePackage2Item.sql
@@ -0,0 +1,90 @@
+
+
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergePackage2ItemClient.sql b/C2P_Project/ext/Stored Procedures/stp_mergePackage2ItemClient.sql
new file mode 100644
index 0000000..e09a3c4
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergePackage2ItemClient.sql
@@ -0,0 +1,93 @@
+
+
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergePlantsDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergePlantsDet.sql
new file mode 100644
index 0000000..56bf7a9
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergePlantsDet.sql
@@ -0,0 +1,51 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeRawMat.sql b/C2P_Project/ext/Stored Procedures/stp_mergeRawMat.sql
new file mode 100644
index 0000000..9b8923d
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeRawMat.sql
@@ -0,0 +1,51 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_mergeTranspCostDet.sql b/C2P_Project/ext/Stored Procedures/stp_mergeTranspCostDet.sql
new file mode 100644
index 0000000..fb3a44a
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_mergeTranspCostDet.sql
@@ -0,0 +1,38 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Stored Procedures/stp_updateProductionLog.sql b/C2P_Project/ext/Stored Procedures/stp_updateProductionLog.sql
new file mode 100644
index 0000000..bef7502
--- /dev/null
+++ b/C2P_Project/ext/Stored Procedures/stp_updateProductionLog.sql
@@ -0,0 +1,41 @@
+
+-- =============================================
+-- 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
+
diff --git a/C2P_Project/ext/Tables/ClientsRaw.sql b/C2P_Project/ext/Tables/ClientsRaw.sql
new file mode 100644
index 0000000..4114c0a
--- /dev/null
+++ b/C2P_Project/ext/Tables/ClientsRaw.sql
@@ -0,0 +1,48 @@
+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) CONSTRAINT [DF_ClientsRaw_ClassZona] DEFAULT ('') NOT NULL,
+ CONSTRAINT [PK_ClientiRaw] PRIMARY KEY CLUSTERED ([CodClient] ASC)
+);
+
+
+GO
+EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'', @level0type = N'SCHEMA', @level0name = N'ext', @level1type = N'TABLE', @level1name = N'ClientsRaw';
+
+
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/ext/Tables/DiesGroupRaw.sql b/C2P_Project/ext/Tables/DiesGroupRaw.sql
new file mode 100644
index 0000000..f38f96a
--- /dev/null
+++ b/C2P_Project/ext/Tables/DiesGroupRaw.sql
@@ -0,0 +1,10 @@
+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)
+);
+
diff --git a/C2P_Project/ext/Tables/DiesRaw.sql b/C2P_Project/ext/Tables/DiesRaw.sql
new file mode 100644
index 0000000..34ec69d
--- /dev/null
+++ b/C2P_Project/ext/Tables/DiesRaw.sql
@@ -0,0 +1,12 @@
+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)
+);
+
diff --git a/C2P_Project/ext/Tables/ItemsRaw.sql b/C2P_Project/ext/Tables/ItemsRaw.sql
new file mode 100644
index 0000000..bd43e4d
--- /dev/null
+++ b/C2P_Project/ext/Tables/ItemsRaw.sql
@@ -0,0 +1,26 @@
+CREATE TABLE [ext].[ItemsRaw] (
+ [CodItem] NVARCHAR (50) NOT NULL,
+ [ItemDescr] NVARCHAR (250) NOT NULL,
+ [UnitWeight] DECIMAL (9, 3) NOT NULL,
+ [CodPlant] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_CodPlant] DEFAULT ('') NOT NULL,
+ [CodItemGroup] NVARCHAR (50) NOT NULL,
+ [Class01] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class01_1] DEFAULT ('') NOT NULL,
+ [Class02] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class02_1] DEFAULT ('') NOT NULL,
+ [Class03] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class03_1] DEFAULT ('') NOT NULL,
+ [Class04] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class04_1] DEFAULT ('') NOT NULL,
+ [Class05] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class05_1] DEFAULT ('') NOT NULL,
+ CONSTRAINT [PK_ArticoliRaw] PRIMARY KEY CLUSTERED ([CodItem] ASC)
+);
+
+
+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
+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
+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';
+
diff --git a/C2P_Project/ext/Tables/PackagRaw.sql b/C2P_Project/ext/Tables/PackagRaw.sql
new file mode 100644
index 0000000..1017493
--- /dev/null
+++ b/C2P_Project/ext/Tables/PackagRaw.sql
@@ -0,0 +1,26 @@
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/ext/Tables/ProductionLogRaw.sql b/C2P_Project/ext/Tables/ProductionLogRaw.sql
new file mode 100644
index 0000000..52c019f
--- /dev/null
+++ b/C2P_Project/ext/Tables/ProductionLogRaw.sql
@@ -0,0 +1,125 @@
+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) CONSTRAINT [DF_ProductionLogRaw_NrPos_1] DEFAULT ('') NOT NULL,
+ [CodDies] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_CodDies] DEFAULT ('') NOT NULL,
+ [CodClient] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_CodClient] DEFAULT ('') NOT NULL,
+ [OrderNum] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_OrderNum] DEFAULT ('') NOT NULL,
+ [BatchNum] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_BatchNum] DEFAULT ('') NOT NULL,
+ [ProcessType] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_ProcessType] DEFAULT ('') NOT NULL,
+ [EventType] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_EventType] DEFAULT ('') NOT NULL,
+ [RawMat] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_RawMat] DEFAULT ('') NOT NULL,
+ [CodPackag] NVARCHAR (50) CONSTRAINT [DF_ProductionLogRaw_CodPackag] DEFAULT ('') NOT NULL,
+ [QtyIN] DECIMAL (18, 4) CONSTRAINT [DF_ProductionLogRaw_QtyIN] DEFAULT ((0)) NOT NULL,
+ [QtyOUT] DECIMAL (18, 4) CONSTRAINT [DF_ProductionLogRaw_QtyOUT] DEFAULT ((0)) NOT NULL,
+ [QtyEXT] DECIMAL (18, 4) CONSTRAINT [DF_ProductionLogRaw_QtyEXT] DEFAULT ((0)) NOT NULL,
+ [NumIN] INT CONSTRAINT [DF_ProductionLogRaw_NumIN] DEFAULT ((0)) NOT NULL,
+ [NumOUT] INT CONSTRAINT [DF_ProductionLogRaw_NumOUT] DEFAULT ((0)) NOT NULL,
+ [QuotaPlant] DECIMAL (9, 4) CONSTRAINT [DF_ProductionLogRaw_QuotaPlant] DEFAULT ((0)) NOT NULL,
+ [QuotaMan] DECIMAL (9, 4) CONSTRAINT [DF_ProductionLogRaw_QuotaMan] DEFAULT ((0)) NOT NULL,
+ [Tags] NVARCHAR (250) CONSTRAINT [DF_ProductionLogRaw_Tags] DEFAULT ('') NOT NULL,
+ [okPr] BIT CONSTRAINT [DF_ProductionLogRaw_okPr_1] DEFAULT ((1)) NOT NULL,
+ [okQM] BIT CONSTRAINT [DF_ProductionLogRaw_okQM_1] DEFAULT ((1)) NOT NULL,
+ [okSc] BIT CONSTRAINT [DF_ProductionLogRaw_okSc_1] DEFAULT ((1)) NOT NULL,
+ [okDi] BIT CONSTRAINT [DF_ProductionLogRaw_okDi_1] DEFAULT ((1)) NOT NULL,
+ CONSTRAINT [PK_ProductionLogRaw] PRIMARY KEY CLUSTERED ([EventStart] ASC, [EventEnd] ASC, [CodPlant] ASC, [ProcessNum] ASC, [NrPos] ASC, [CodDies] ASC)
+);
+
+
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/ext/Tables/ProductionLogRaw_KO.sql b/C2P_Project/ext/Tables/ProductionLogRaw_KO.sql
new file mode 100644
index 0000000..ca63991
--- /dev/null
+++ b/C2P_Project/ext/Tables/ProductionLogRaw_KO.sql
@@ -0,0 +1,46 @@
+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 CONSTRAINT [DF_ProductionLogRaw_KO_okPr] DEFAULT ((1)) NOT NULL,
+ [okQM] BIT CONSTRAINT [DF_ProductionLogRaw_KO_okQM] DEFAULT ((1)) NOT NULL,
+ [okSc] BIT CONSTRAINT [DF_ProductionLogRaw_KO_okSc] DEFAULT ((1)) NOT NULL,
+ [okDi] BIT CONSTRAINT [DF_ProductionLogRaw_KO_okDi] DEFAULT ((1)) NOT NULL,
+ [ImportDateExt] DATETIME CONSTRAINT [DF_ProductionLogRaw_KO_ImportDateExt] DEFAULT (getdate()) NULL,
+ CONSTRAINT [PK_ProductionLogRaw_KO] PRIMARY KEY CLUSTERED ([EventStart] ASC, [EventEnd] ASC, [CodPlant] ASC, [ProcessNum] ASC, [NrPos] ASC, [CodDies] ASC)
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/ext/Tables/TranspCostRaw.sql b/C2P_Project/ext/Tables/TranspCostRaw.sql
new file mode 100644
index 0000000..d849bbc
--- /dev/null
+++ b/C2P_Project/ext/Tables/TranspCostRaw.sql
@@ -0,0 +1,6 @@
+CREATE TABLE [ext].[TranspCostRaw] (
+ [TranspZone] NVARCHAR (50) CONSTRAINT [DF_TraspZoneExt] DEFAULT ('') NOT NULL,
+ [TranspCost] DECIMAL (9, 6) NOT NULL,
+ CONSTRAINT [PK_TranspCostDet_1] PRIMARY KEY CLUSTERED ([TranspZone] ASC)
+);
+
diff --git a/C2P_Project/obj/Debug/C2P_Project.dll b/C2P_Project/obj/Debug/C2P_Project.dll
new file mode 100644
index 0000000..32039b0
Binary files /dev/null and b/C2P_Project/obj/Debug/C2P_Project.dll differ
diff --git a/C2P_Project/obj/Debug/C2P_Project.sqlproj.FileListAbsolute.txt b/C2P_Project/obj/Debug/C2P_Project.sqlproj.FileListAbsolute.txt
new file mode 100644
index 0000000..c047c8d
--- /dev/null
+++ b/C2P_Project/obj/Debug/C2P_Project.sqlproj.FileListAbsolute.txt
@@ -0,0 +1,5 @@
+C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\bin\Debug\C2P_Project.dacpac
+C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\obj\Debug\C2P_Project.dll
+C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\obj\Debug\C2P_Project.pdb
+C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\bin\Debug\C2P_Project.dll
+C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\bin\Debug\C2P_Project.pdb
diff --git a/C2P_Project/tmp/Stored Procedures/convertClientsRaw.sql b/C2P_Project/tmp/Stored Procedures/convertClientsRaw.sql
new file mode 100644
index 0000000..c3c9b77
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/convertClientsRaw.sql
@@ -0,0 +1,43 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/convertDiesGroupRaw.sql b/C2P_Project/tmp/Stored Procedures/convertDiesGroupRaw.sql
new file mode 100644
index 0000000..e60142a
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/convertDiesGroupRaw.sql
@@ -0,0 +1,43 @@
+
+
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/convertDiesRaw.sql b/C2P_Project/tmp/Stored Procedures/convertDiesRaw.sql
new file mode 100644
index 0000000..c73e10f
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/convertDiesRaw.sql
@@ -0,0 +1,43 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/convertItemsRaw.sql b/C2P_Project/tmp/Stored Procedures/convertItemsRaw.sql
new file mode 100644
index 0000000..838a971
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/convertItemsRaw.sql
@@ -0,0 +1,45 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/convertPackagRaw.sql b/C2P_Project/tmp/Stored Procedures/convertPackagRaw.sql
new file mode 100644
index 0000000..a78b696
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/convertPackagRaw.sql
@@ -0,0 +1,41 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/convertProductionLogRaw.sql b/C2P_Project/tmp/Stored Procedures/convertProductionLogRaw.sql
new file mode 100644
index 0000000..fd5c8e6
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/convertProductionLogRaw.sql
@@ -0,0 +1,63 @@
+
+
+
+-- =============================================
+-- 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
+
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/convertTranspCostRaw.sql b/C2P_Project/tmp/Stored Procedures/convertTranspCostRaw.sql
new file mode 100644
index 0000000..7d7f031
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/convertTranspCostRaw.sql
@@ -0,0 +1,38 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/importClientsRaw.sql b/C2P_Project/tmp/Stored Procedures/importClientsRaw.sql
new file mode 100644
index 0000000..912293a
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/importClientsRaw.sql
@@ -0,0 +1,35 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/importDiesGroupRaw.sql b/C2P_Project/tmp/Stored Procedures/importDiesGroupRaw.sql
new file mode 100644
index 0000000..68578dc
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/importDiesGroupRaw.sql
@@ -0,0 +1,35 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/importDiesRaw.sql b/C2P_Project/tmp/Stored Procedures/importDiesRaw.sql
new file mode 100644
index 0000000..c53e773
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/importDiesRaw.sql
@@ -0,0 +1,35 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/importItemsRaw.sql b/C2P_Project/tmp/Stored Procedures/importItemsRaw.sql
new file mode 100644
index 0000000..84d027e
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/importItemsRaw.sql
@@ -0,0 +1,35 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/importPackagRaw.sql b/C2P_Project/tmp/Stored Procedures/importPackagRaw.sql
new file mode 100644
index 0000000..f7af421
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/importPackagRaw.sql
@@ -0,0 +1,35 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/importProductionLogRaw.sql b/C2P_Project/tmp/Stored Procedures/importProductionLogRaw.sql
new file mode 100644
index 0000000..edacd7c
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/importProductionLogRaw.sql
@@ -0,0 +1,99 @@
+
+
+
+
+-- =============================================
+-- 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
+
+
+
+
diff --git a/C2P_Project/tmp/Stored Procedures/importTranspCostRaw.sql b/C2P_Project/tmp/Stored Procedures/importTranspCostRaw.sql
new file mode 100644
index 0000000..dd31056
--- /dev/null
+++ b/C2P_Project/tmp/Stored Procedures/importTranspCostRaw.sql
@@ -0,0 +1,35 @@
+
+
+-- =============================================
+-- 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
+
+
diff --git a/C2P_Project/tmp/Tables/ClientsRaw.sql b/C2P_Project/tmp/Tables/ClientsRaw.sql
new file mode 100644
index 0000000..49b9ab1
--- /dev/null
+++ b/C2P_Project/tmp/Tables/ClientsRaw.sql
@@ -0,0 +1,47 @@
+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) CONSTRAINT [DF_ClientsRaw_TranspZone] DEFAULT ('') NOT NULL
+);
+
+
+GO
+EXECUTE sp_addextendedproperty @name = N'MS_Description', @value = N'', @level0type = N'SCHEMA', @level0name = N'tmp', @level1type = N'TABLE', @level1name = N'ClientsRaw';
+
+
+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
+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
+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
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/tmp/Tables/DiesGroupRaw.sql b/C2P_Project/tmp/Tables/DiesGroupRaw.sql
new file mode 100644
index 0000000..c0c2f0a
--- /dev/null
+++ b/C2P_Project/tmp/Tables/DiesGroupRaw.sql
@@ -0,0 +1,9 @@
+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
+);
+
diff --git a/C2P_Project/tmp/Tables/DiesRaw.sql b/C2P_Project/tmp/Tables/DiesRaw.sql
new file mode 100644
index 0000000..db4f14e
--- /dev/null
+++ b/C2P_Project/tmp/Tables/DiesRaw.sql
@@ -0,0 +1,11 @@
+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
+);
+
diff --git a/C2P_Project/tmp/Tables/ExcludeCondFilter.sql b/C2P_Project/tmp/Tables/ExcludeCondFilter.sql
new file mode 100644
index 0000000..194f86b
--- /dev/null
+++ b/C2P_Project/tmp/Tables/ExcludeCondFilter.sql
@@ -0,0 +1,7 @@
+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)
+);
+
diff --git a/C2P_Project/tmp/Tables/ItemsRaw.sql b/C2P_Project/tmp/Tables/ItemsRaw.sql
new file mode 100644
index 0000000..25cec4d
--- /dev/null
+++ b/C2P_Project/tmp/Tables/ItemsRaw.sql
@@ -0,0 +1,25 @@
+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) CONSTRAINT [DF_ItemsRaw_Class01] DEFAULT ('') NOT NULL,
+ [Class02] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class02] DEFAULT ('') NOT NULL,
+ [Class03] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class03] DEFAULT ('') NOT NULL,
+ [Class04] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class04] DEFAULT ('') NOT NULL,
+ [Class05] NVARCHAR (50) CONSTRAINT [DF_ItemsRaw_Class05] DEFAULT ('') NOT NULL
+);
+
+
+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
+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
+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';
+
diff --git a/C2P_Project/tmp/Tables/PackagRaw.sql b/C2P_Project/tmp/Tables/PackagRaw.sql
new file mode 100644
index 0000000..8826267
--- /dev/null
+++ b/C2P_Project/tmp/Tables/PackagRaw.sql
@@ -0,0 +1,25 @@
+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
+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
+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
+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
+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';
+
diff --git a/C2P_Project/tmp/Tables/ProductionLogRaw.sql b/C2P_Project/tmp/Tables/ProductionLogRaw.sql
new file mode 100644
index 0000000..ff35a26
--- /dev/null
+++ b/C2P_Project/tmp/Tables/ProductionLogRaw.sql
@@ -0,0 +1,44 @@
+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) CONSTRAINT [DF_ProductionLogRaw_NrPos] DEFAULT ('') 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 CONSTRAINT [DF_ProductionLogRaw_okPr] DEFAULT ((1)) NOT NULL,
+ [okQM] BIT CONSTRAINT [DF_ProductionLogRaw_okQM] DEFAULT ((1)) NOT NULL,
+ [okSc] BIT CONSTRAINT [DF_ProductionLogRaw_okSc] DEFAULT ((1)) NOT NULL,
+ [okDi] BIT CONSTRAINT [DF_ProductionLogRaw_okDi] DEFAULT ((1)) NOT NULL
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/tmp/Tables/ProductionLogRaw_KO.sql b/C2P_Project/tmp/Tables/ProductionLogRaw_KO.sql
new file mode 100644
index 0000000..ff393a6
--- /dev/null
+++ b/C2P_Project/tmp/Tables/ProductionLogRaw_KO.sql
@@ -0,0 +1,45 @@
+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) CONSTRAINT [DF_ProductionLogRaw_NrPos_KO] DEFAULT ('') 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 CONSTRAINT [DF_ProductionLogRaw_KO_okPr] DEFAULT ((1)) NOT NULL,
+ [okQM] BIT CONSTRAINT [DF_ProductionLogRaw_KO_okQM] DEFAULT ((1)) NOT NULL,
+ [okSc] BIT CONSTRAINT [DF_ProductionLogRaw_KO_okSc] DEFAULT ((1)) NOT NULL,
+ [okDi] BIT CONSTRAINT [DF_ProductionLogRaw_KO_okDi] DEFAULT ((1)) NOT NULL,
+ [ImportDate] DATETIME CONSTRAINT [DF_ProductionLogRaw_KO_ImportDate] DEFAULT (getdate()) NULL
+);
+
+
+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
+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
+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
+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';
+
diff --git a/C2P_Project/tmp/Tables/ProductionLogRaw_old.sql b/C2P_Project/tmp/Tables/ProductionLogRaw_old.sql
new file mode 100644
index 0000000..6b329af
--- /dev/null
+++ b/C2P_Project/tmp/Tables/ProductionLogRaw_old.sql
@@ -0,0 +1,24 @@
+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
+);
+
diff --git a/C2P_Project/tmp/Tables/TranspCostRaw.sql b/C2P_Project/tmp/Tables/TranspCostRaw.sql
new file mode 100644
index 0000000..e15dfff
--- /dev/null
+++ b/C2P_Project/tmp/Tables/TranspCostRaw.sql
@@ -0,0 +1,5 @@
+CREATE TABLE [tmp].[TranspCostRaw] (
+ [TranspZone] NVARCHAR (50) CONSTRAINT [DF_TraspZoneRaw] DEFAULT ('') NOT NULL,
+ [TranspCost] NVARCHAR (50) NOT NULL
+);
+
diff --git a/C2P_Project/voc/Stored Procedures/stp_insNewLemma.sql b/C2P_Project/voc/Stored Procedures/stp_insNewLemma.sql
new file mode 100644
index 0000000..75ebe50
--- /dev/null
+++ b/C2P_Project/voc/Stored Procedures/stp_insNewLemma.sql
@@ -0,0 +1,30 @@
+/*************************************
+* 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
diff --git a/C2P_compare_dev2prod.scmp b/C2P_compare_dev2prod.scmp
new file mode 100644
index 0000000..70bc2e8
--- /dev/null
+++ b/C2P_compare_dev2prod.scmp
@@ -0,0 +1,512 @@
+
+
+ 10
+
+
+ {84db66e4-9663-47f7-9dd1-3cb562629ff5}
+ C2P_Project
+
+
+
+
+ Data Source=10.74.82.217\SQL2008R2;Initial Catalog=Proxima_C2P_prod;Persist Security Info=True;User ID=sa;Pooling=False
+
+
+
+
+
+ Version
+ 1
+
+
+
+
+ PlanGenerationType
+ SqlDeploymentOptions
+
+
+ AllowExistingModelErrors
+ False
+
+
+ AllowIncompatiblePlatform
+ False
+
+
+ BackupDatabaseBeforeChanges
+ False
+
+
+ BlockOnPossibleDataLoss
+ False
+
+
+ BlockWhenDriftDetected
+ False
+
+
+ CompareUsingTargetCollation
+ False
+
+
+ CommentOutSetVarDeclarations
+ False
+
+
+ CreateNewDatabase
+ False
+
+
+ DeployDatabaseInSingleUserMode
+ False
+
+
+ DisableAndReenableDdlTriggers
+ True
+
+
+ DoNotAlterChangeDataCaptureObjects
+ True
+
+
+ DoNotAlterReplicatedObjects
+ True
+
+
+ DropConstraintsNotInSource
+ True
+
+
+ DropDmlTriggersNotInSource
+ True
+
+
+ DropExtendedPropertiesNotInSource
+ True
+
+
+ DropIndexesNotInSource
+ True
+
+
+ DropPermissionsNotInSource
+ False
+
+
+ DropObjectsNotInSource
+ True
+
+
+ DropRoleMembersNotInSource
+ False
+
+
+ GenerateSmartDefaults
+ False
+
+
+ IgnoreDdlTriggerOrder
+ False
+
+
+ IgnoreDdlTriggerState
+ False
+
+
+ IgnoreObjectPlacementOnPartitionScheme
+ True
+
+
+ IgnoreAuthorizer
+ False
+
+
+ IgnoreDefaultSchema
+ False
+
+
+ IgnoreRouteLifetime
+ True
+
+
+ IgnoreCryptographicProviderFilePath
+ True
+
+
+ IgnoreComments
+ False
+
+
+ IgnoreWhitespace
+ True
+
+
+ IgnoreKeywordCasing
+ True
+
+
+ IgnoreSemicolonBetweenStatements
+ True
+
+
+ IgnorePartitionSchemes
+ False
+
+
+ IgnoreWithNocheckOnCheckConstraints
+ False
+
+
+ IgnoreWithNocheckOnForeignKeys
+ False
+
+
+ IgnoreIdentitySeed
+ False
+
+
+ IgnoreIncrement
+ False
+
+
+ IgnoreFillFactor
+ True
+
+
+ IgnoreIndexPadding
+ True
+
+
+ IgnoreColumnCollation
+ False
+
+
+ IgnoreLockHintsOnIndexes
+ False
+
+
+ IgnoreTableOptions
+ False
+
+
+ IgnoreIndexOptions
+ False
+
+
+ IgnoreDmlTriggerOrder
+ False
+
+
+ IgnoreDmlTriggerState
+ False
+
+
+ IgnoreAnsiNulls
+ True
+
+
+ IgnoreQuotedIdentifiers
+ True
+
+
+ IgnoreUserSettingsObjects
+ False
+
+
+ IgnoreFilegroupPlacement
+ True
+
+
+ IgnoreFullTextCatalogFilePath
+ True
+
+
+ IgnoreFileAndLogFilePath
+ True
+
+
+ IgnoreLoginSids
+ True
+
+
+ IgnoreNotForReplication
+ False
+
+
+ IgnoreFileSize
+ True
+
+
+ IncludeCompositeObjects
+ False
+
+
+ IncludeTransactionalScripts
+ False
+
+
+ NoAlterStatementsToChangeCLRTypes
+ False
+
+
+ PopulateFilesOnFileGroups
+ True
+
+
+ RegisterDataTierApplication
+ False
+
+
+ ScriptDatabaseCollation
+ False
+
+
+ ScriptDatabaseCompatibility
+ False
+
+
+ ScriptDatabaseOptions
+ False
+
+
+ ScriptDeployStateChecks
+ False
+
+
+ ScriptFileSize
+ False
+
+
+ ScriptNewConstraintValidation
+ True
+
+
+ ScriptRefreshModule
+ True
+
+
+ TargetConnectionString
+ Integrated Security=True;Pooling=False;Connect Timeout=30
+
+
+ TreatVerificationErrorsAsWarnings
+ False
+
+
+ UnmodifiableObjectWarnings
+ True
+
+
+ VerifyCollationCompatibility
+ True
+
+
+ VerifyDeployment
+ True
+
+
+ AllowDropBlockingAssemblies
+ False
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlDatabaseOptions
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlErrorMessage
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlLogin
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerRoleMembership
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlLinkedServer
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlLinkedServerLogin
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlFile
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerDdlTrigger
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlMasterKey
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlCredential
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlRoute
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlEventNotification
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlEndpoint
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlDatabaseAuditSpecification
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerAudit
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlServerAuditSpecification
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlCryptographicProvider
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlDatabaseEncryptionKey
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlEventSession
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlUserDefinedServerRole
+ ExcludedType
+
+
+ Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlAssemblyFile
+ ExcludedType
+
+
+
+
+ 2
+ 100
+ Equals_Objects,Not_Supported_Deploy
+
+
+
+ voc
+ stp_insNewLemma
+
+
+ voc
+ stp_insNewLemma
+ @lemma
+
+
+ voc
+ stp_insNewLemma
+ @traduzione
+
+
+ dbo
+ stp_VSItem_SearchLike
+
+
+ dbo
+ stp_VSItem_SearchLike
+ @value
+
+
+ dbo
+ stp_esplodiVocab
+
+
+ SqlView
+ dbo
+ v_selItems
+ MS_DiagramPane1
+
+
+ SqlView
+ dbo
+ v_selItems
+ MS_DiagramPaneCount
+
+
+ dbo
+ v_selItems
+
+
+
+
+ tmp
+ importClientsRaw
+
+
+ tmp
+ importClientsRaw
+ @fileType
+
+
+ tmp
+ importDiesGroupRaw
+
+
+ tmp
+ importDiesGroupRaw
+ @fileType
+
+
+ tmp
+ importDiesRaw
+
+
+ tmp
+ importDiesRaw
+ @fileType
+
+
+ tmp
+ importItemsRaw
+
+
+ tmp
+ importItemsRaw
+ @fileType
+
+
+ tmp
+ importPackagRaw
+
+
+ tmp
+ importPackagRaw
+ @fileType
+
+
+ tmp
+ importProductionLogRaw
+
+
+ tmp
+ importProductionLogRaw
+ @fileType
+
+
+ tmp
+ importTranspCostRaw
+
+
+ tmp
+ importTranspCostRaw
+ @fileType
+
+
+
\ No newline at end of file
diff --git a/UpgradeLog.htm b/UpgradeLog.htm
new file mode 100644
index 0000000..41b7205
Binary files /dev/null and b/UpgradeLog.htm differ