From 2bc104e9d440f913957e8182e9bf59061c4ffa11 Mon Sep 17 00:00:00 2001 From: "Samuele E. Locatelli" Date: Mon, 24 Feb 2014 15:51:31 +0100 Subject: [PATCH] update comapre DB --- C2P_Project/C2P_DB.sqlproj | 14 +- .../Compare Proxima_C2P vs C2P_DB.scmp | 406 + .../Snapshots/C2P_DB_20140224_15-48-32.dacpac | Bin 0 -> 90269 bytes .../C2P_Project_20140218_04-25-36.dacpac | Bin 87649 -> 0 bytes .../C2P_Project_20140218_17-06-52.dacpac | Bin 87236 -> 0 bytes .../dbo/Functions/dbo.f_getNewCodQuote.sql | 23 + C2P_Project/dbo/Functions/dbo.f_padLeft.sql | 22 + C2P_Project/dbo/Functions/dbo.f_padRight.sql | 21 + .../Stored Procedures/dbo.stp_QL_getByKey.sql | 20 + .../Stored Procedures/dbo.stp_QL_insNew.sql | 57 + .../dbo.stp_QRM_getByKey.sql | 22 + .../dbo.stp_QuoteFull_delete.sql | 62 + .../dbo.stp_VSRM_SearchLike.sql | 18 + C2P_Project/dbo/Tables/QuoteWorkInt.sql | 18 +- C2P_Project/dbo/Views/dbo.v_selCons.sql | 129 + C2P_Project/dbo/Views/dbo.v_selRawMat.sql | 6 + C2P_Project/dbo/Views/v_QuoteFull_Q.sql | 5 +- C2P_Project/dbo/Views/v_selClient.sql | 5 +- C2P_Project/dbo/Views/v_selItems.sql | 5 +- .../Debug/C2P_DB.sqlproj.FileListAbsolute.txt | 4 + C2P_Project/obj/Debug/C2P_Project.dll | Bin 3584 -> 3584 bytes C2P_Project/obj/Debug/Model.xml | 39465 ++++++++++++++++ 22 files changed, 40293 insertions(+), 9 deletions(-) create mode 100644 C2P_Project/Compare Proxima_C2P vs C2P_DB.scmp create mode 100644 C2P_Project/Snapshots/C2P_DB_20140224_15-48-32.dacpac delete mode 100644 C2P_Project/Snapshots/C2P_Project_20140218_04-25-36.dacpac delete mode 100644 C2P_Project/Snapshots/C2P_Project_20140218_17-06-52.dacpac create mode 100644 C2P_Project/dbo/Functions/dbo.f_getNewCodQuote.sql create mode 100644 C2P_Project/dbo/Functions/dbo.f_padLeft.sql create mode 100644 C2P_Project/dbo/Functions/dbo.f_padRight.sql create mode 100644 C2P_Project/dbo/Stored Procedures/dbo.stp_QL_getByKey.sql create mode 100644 C2P_Project/dbo/Stored Procedures/dbo.stp_QL_insNew.sql create mode 100644 C2P_Project/dbo/Stored Procedures/dbo.stp_QRM_getByKey.sql create mode 100644 C2P_Project/dbo/Stored Procedures/dbo.stp_QuoteFull_delete.sql create mode 100644 C2P_Project/dbo/Stored Procedures/dbo.stp_VSRM_SearchLike.sql create mode 100644 C2P_Project/dbo/Views/dbo.v_selCons.sql create mode 100644 C2P_Project/dbo/Views/dbo.v_selRawMat.sql create mode 100644 C2P_Project/obj/Debug/Model.xml diff --git a/C2P_Project/C2P_DB.sqlproj b/C2P_Project/C2P_DB.sqlproj index 9dc56f0..b00c9e7 100644 --- a/C2P_Project/C2P_DB.sqlproj +++ b/C2P_Project/C2P_DB.sqlproj @@ -189,12 +189,22 @@ + + + + + + + + + + - - + + \ No newline at end of file diff --git a/C2P_Project/Compare Proxima_C2P vs C2P_DB.scmp b/C2P_Project/Compare Proxima_C2P vs C2P_DB.scmp new file mode 100644 index 0000000..301eb61 --- /dev/null +++ b/C2P_Project/Compare Proxima_C2P vs C2P_DB.scmp @@ -0,0 +1,406 @@ + + + 10 + + + Data Source=10.74.82.217\SQL2008R2;Initial Catalog=Proxima_C2P;Integrated Security=True;Pooling=False + + + + + {84db66e4-9663-47f7-9dd1-3cb562629ff5} + C2P_DB + + + + + + Version + 1 + + + + + PlanGenerationType + SqlDeploymentOptions + + + AllowExistingModelErrors + False + + + AllowIncompatiblePlatform + False + + + BackupDatabaseBeforeChanges + False + + + BlockOnPossibleDataLoss + True + + + 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 + + + RunDeploymentPlanExecutors + False + + + 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 + + \ No newline at end of file diff --git a/C2P_Project/Snapshots/C2P_DB_20140224_15-48-32.dacpac b/C2P_Project/Snapshots/C2P_DB_20140224_15-48-32.dacpac new file mode 100644 index 0000000000000000000000000000000000000000..2beb45bf8938b0e7386f56461b24fe3c60e372f9 GIT binary patch literal 90269 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¬wxZI$BOCaT`PyqJ#F9j^Wo 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 TBmZSaN;o$N*E()J|PF1ho-F3S9 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

DKa@^oy8lUzu66 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 '') \ No newline at end of file diff --git a/C2P_Project/dbo/Views/v_QuoteFull_Q.sql b/C2P_Project/dbo/Views/v_QuoteFull_Q.sql index 0409a80..0adbb16 100644 --- a/C2P_Project/dbo/Views/v_QuoteFull_Q.sql +++ b/C2P_Project/dbo/Views/v_QuoteFull_Q.sql @@ -128,7 +128,10 @@ Begin DesignProperties = Or = 1350 End End -End', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_QuoteFull_Q'; +End +', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_QuoteFull_Q'; + + GO diff --git a/C2P_Project/dbo/Views/v_selClient.sql b/C2P_Project/dbo/Views/v_selClient.sql index 214d5af..28eef27 100644 --- a/C2P_Project/dbo/Views/v_selClient.sql +++ b/C2P_Project/dbo/Views/v_selClient.sql @@ -122,7 +122,10 @@ Begin DesignProperties = Or = 1350 End End -End', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selClient'; +End +', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selClient'; + + GO diff --git a/C2P_Project/dbo/Views/v_selItems.sql b/C2P_Project/dbo/Views/v_selItems.sql index 1d71ff6..7482962 100644 --- a/C2P_Project/dbo/Views/v_selItems.sql +++ b/C2P_Project/dbo/Views/v_selItems.sql @@ -122,7 +122,10 @@ Begin DesignProperties = Or = 1350 End End -End', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selItems'; +End +', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'VIEW', @level1name = N'v_selItems'; + + GO diff --git a/C2P_Project/obj/Debug/C2P_DB.sqlproj.FileListAbsolute.txt b/C2P_Project/obj/Debug/C2P_DB.sqlproj.FileListAbsolute.txt index f7d06c7..538d0dd 100644 --- a/C2P_Project/obj/Debug/C2P_DB.sqlproj.FileListAbsolute.txt +++ b/C2P_Project/obj/Debug/C2P_DB.sqlproj.FileListAbsolute.txt @@ -3,3 +3,7 @@ C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\bin\Debug C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\bin\Debug\C2P_Project.pdb 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\obj\Debug\Model.xml +C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\obj\Debug\refactor.xml +C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\obj\Debug\postdeploy.sql +C:\Users\samuele\Documents\Visual Studio 2012\Projects\C2P\C2P_Project\obj\Debug\predeploy.sql diff --git a/C2P_Project/obj/Debug/C2P_Project.dll b/C2P_Project/obj/Debug/C2P_Project.dll index fb81909b512fec1e30e4302f0998ffa8520bd2e5..553ff8a12b4d51afd6eeafb4133e784264b81338 100644 GIT binary patch delta 50 zcmZpWX^@%F!Mrz`dt>)bW&x%9&s}Cq-0>=-6?gyu diff --git a/C2P_Project/obj/Debug/Model.xml b/C2P_Project/obj/Debug/Model.xml new file mode 100644 index 0000000..c9083f1 --- /dev/null +++ b/C2P_Project/obj/Debug/Model.xml @@ -0,0 +1,39465 @@ + + +

+ + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' +CONVERT(NVARCHAR(20), @dateTo, 120) + FROM RevHistory + WHERE RevType = 'P' + + COMMIT TRAN + +END]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' +CONVERT(NVARCHAR(20), @dateTo, 120) + FROM RevHistory + WHERE RevType = 'P' + + COMMIT TRAN + +END]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + ' +CONVERT(NVARCHAR(20), @dateTo, 120) + FROM RevHistory + WHERE RevType = 'P' + + COMMIT TRAN + +END]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '')]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '')]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '')]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' + --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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' + -- GROUP BY plr.CodPackag + -- ) + -- AS Source + -- ON Target.CodPackag = Source.CodPackag + -- WHEN MATCHED THEN + -- UPDATE SET TotQty = Source.TotQta + -- , [Weight] = Source.PesoMedio + -- , Tare = Source.TaraMedia + -- WHEN NOT MATCHED BY TARGET THEN + -- INSERT (CodPackag, TotQty, [Weight], Tare) VALUES (CodPackag, TotQta, PesoMedio, TaraMedia) + -- OUTPUT $action INTO @SummaryOfChanges; + + -- END + ----ELSE IF @source = 'ItemsRaw' -- carico da anagrafica + ---- BEGIN + ---- MERGE INTO Item2Package AS Target + ---- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) + ---- AS Source + ---- ON Target.CodItem = Source.CodItem + ---- WHEN MATCHED THEN + ---- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup + ---- WHEN NOT MATCHED BY TARGET THEN + ---- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) + ---- OUTPUT $action INTO @SummaryOfChanges; + + ---- END + + ---- Query the results of the table variable. + --SELECT Change, COUNT(*) AS CountPerChange + --FROM @SummaryOfChanges + --GROUP BY Change; +END]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' + --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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' + -- GROUP BY dd.CodItem, plr.CodPackag + -- ) + -- AS Source + -- ON Target.CodItem = Source.CodItem AND Target.CodPackag = Source.CodPackag + -- WHEN MATCHED THEN + -- UPDATE SET TotQty = Source.TotQta + -- , [Weight] = Source.PesoMedio + -- , Tare = Source.TaraMedia + -- WHEN NOT MATCHED BY TARGET THEN + -- INSERT (CodItem, CodPackag, TotQty, [Weight], Tare) VALUES (CodItem, CodPackag, TotQta, PesoMedio, TaraMedia) + -- OUTPUT $action INTO @SummaryOfChanges; + + -- END + ----ELSE IF @source = 'ItemsRaw' -- carico da anagrafica + ---- BEGIN + ---- MERGE INTO Item2Package AS Target + ---- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) + ---- AS Source + ---- ON Target.CodItem = Source.CodItem + ---- WHEN MATCHED THEN + ---- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup + ---- WHEN NOT MATCHED BY TARGET THEN + ---- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) + ---- OUTPUT $action INTO @SummaryOfChanges; + + ---- END + + ---- Query the results of the table variable. + --SELECT Change, COUNT(*) AS CountPerChange + --FROM @SummaryOfChanges + --GROUP BY Change; +END]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' + --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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + '' + -- GROUP BY dd.CodItem, plr.CodClient, plr.CodPackag + -- ) + -- AS Source + -- ON Target.CodItem = Source.CodItem AND Target.CodClient = Source.CodClient AND Target.CodPackag = Source.CodPackag + -- WHEN MATCHED THEN + -- UPDATE SET TotQty = Source.TotQta + -- , [Weight] = Source.PesoMedio + -- , Tare = Source.TaraMedia + -- WHEN NOT MATCHED BY TARGET THEN + -- INSERT (CodItem, CodClient, CodPackag, TotQty, [Weight], Tare) VALUES (CodItem, CodClient, CodPackag, TotQta, PesoMedio, TaraMedia) + -- OUTPUT $action INTO @SummaryOfChanges; + + -- END + ----ELSE IF @source = 'ItemsRaw' -- carico da anagrafica + ---- BEGIN + ---- MERGE INTO Item2PackageClient AS Target + ---- USING (SELECT CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup FROM ItemsRaw) + ---- AS Source + ---- ON Target.CodItem = Source.CodItem + ---- WHEN MATCHED THEN + ---- UPDATE SET ItemDescr = Source.ItemDescr, CodPlant = Source.CodPlant, UnitWeight = Source.UnitWeight, CodItemGroup = Source.CodItemGroup + ---- WHEN NOT MATCHED BY TARGET THEN + ---- INSERT (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) VALUES (CodItem, ItemDescr, CodPlant, UnitWeight, CodItemGroup) + ---- OUTPUT $action INTO @SummaryOfChanges; + + ---- END + + ---- Query the results of the table variable. + --SELECT Change, COUNT(*) AS CountPerChange + --FROM @SummaryOfChanges + --GROUP BY Change; +END]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + in C = costi di contab industriale, P = da ProductionLog, S = Sistema di calcolo']]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file