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