Compare commits
343 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6411d247b4 | |||
| 6f621a29df | |||
| 780c2f42eb | |||
| d3b2b9e329 | |||
| a8f1ff26be | |||
| f43647cd8d | |||
| 65e3b9bbbc | |||
| 8bf4afba99 | |||
| a84c50adb0 | |||
| 39363279d7 | |||
| 4db476b01f | |||
| cf2a7e8c26 | |||
| f953976c53 | |||
| 6f5f44de8e | |||
| c455a2347f | |||
| edca6ca957 | |||
| 0e7e0aaed0 | |||
| 8525d81201 | |||
| 12b85c2572 | |||
| 1cdefe6af8 | |||
| a6c743d8b6 | |||
| 59249c189a | |||
| c865420e95 | |||
| a9acd2ca69 | |||
| e416f5c3d4 | |||
| fabfeb7a08 | |||
| 1508a3dbbe | |||
| 82d9ceed85 | |||
| 22a7aa4477 | |||
| d9c59a05a5 | |||
| f4c7799859 | |||
| e8201e9099 | |||
| 879e515188 | |||
| fc3e4e7372 | |||
| 6c9e5f403f | |||
| 9a2b7fbefe | |||
| 301d597dff | |||
| aaf27bbea7 | |||
| 7521e64053 | |||
| 09fc6e601c | |||
| 46148de703 | |||
| c2d1d20730 | |||
| f28649c58a | |||
| 3acf0fd545 | |||
| 26a9feaf36 | |||
| ae81204ea6 | |||
| 6789b0403e | |||
| 653504843e | |||
| 2062754086 | |||
| 7087118de8 | |||
| d05768c7eb | |||
| 7fe2bb284b | |||
| 87f9e25692 | |||
| e7d821bb68 | |||
| 451275fbce | |||
| b024f32740 | |||
| 0dfdbb67a4 | |||
| 13e17a28ae | |||
| da7cfb9668 | |||
| 863cb3d3a9 | |||
| 0b21a06a45 | |||
| e4beba61e2 | |||
| 6d020b1201 | |||
| c7005ec513 | |||
| 593ebfce5e | |||
| 39a534b727 | |||
| 9a68a597ec | |||
| d4cf7eebd2 | |||
| 35eab707a4 | |||
| c1a427f3a9 | |||
| e2e6bc48a0 | |||
| c0b444d210 | |||
| 2b30e7e8bb | |||
| 0ff38c19a4 | |||
| ce4a42265e | |||
| acf43e8f43 | |||
| 9a111d2b8a | |||
| 0742741b91 | |||
| a66da619d8 | |||
| 412f538867 | |||
| 1f16e654ab | |||
| 46b940f9a5 | |||
| 0f9f5e0d9f | |||
| 52f1bd94ef | |||
| f3bfe84fe3 | |||
| 99f1936e87 | |||
| 29b8b2982d | |||
| 0723f607ab | |||
| 479f652514 | |||
| 9720ecf32e | |||
| 51ffd61a6c | |||
| 105e29f577 | |||
| 5ce82b0e19 | |||
| 3cfb050874 | |||
| f900437399 | |||
| 2707f9e023 | |||
| fb38958765 | |||
| bccbc9c079 | |||
| be16a428f7 | |||
| 54e707ff08 | |||
| d8388b2746 | |||
| ae21e4ba55 | |||
| 58359adc9b | |||
| 7f1a6ffc5f | |||
| f317c9fd23 | |||
| b62a5c4c13 | |||
| 4b41ed6dde | |||
| 366e6adc94 | |||
| e3fc22a553 | |||
| 2dc5d2758e | |||
| 92c83da129 | |||
| 4c21b97bc9 | |||
| 3c4b697292 | |||
| 9e75f7424f | |||
| d83bf57b0a | |||
| 29762cd69c | |||
| da13dbc417 | |||
| 328673f192 | |||
| 050e698eed | |||
| d6085b56ab | |||
| fee246f3fe | |||
| 3977b5398f | |||
| 0b04856907 | |||
| ddb9bf4347 | |||
| 4328747e3e | |||
| 7a3d9bb81c | |||
| 194208fd89 | |||
| 8d3166dbe9 | |||
| bdf4b6b8bd | |||
| 79e1d71ce4 | |||
| b45a91e194 | |||
| fccc1372ea | |||
| 24e3b63980 | |||
| bd51f368b1 | |||
| e405942d03 | |||
| 7ac353e8c6 | |||
| 2bd50a4bc6 | |||
| 19b4b8ccf0 | |||
| 266ee95b1b | |||
| f76c88d65d | |||
| 25c6ba7fd2 | |||
| 0c6c2ac78e | |||
| b0e6f410f6 | |||
| dec92ec530 | |||
| 7909d68b29 | |||
| 3eafecd756 | |||
| c7128e19a8 | |||
| d9d0ee9e28 | |||
| 3ba155eb99 | |||
| efc0f0ebb1 | |||
| db29fc6274 | |||
| fc66013385 | |||
| 33de4d3616 | |||
| f3143573be | |||
| c762b4e74b | |||
| e0d2323f5d | |||
| d039202670 | |||
| 4d58189581 | |||
| e455bb217e | |||
| 10dde714e2 | |||
| c031fe76ba | |||
| 82fc76b11f | |||
| 42b30e1941 | |||
| ed163d7af2 | |||
| e16135fbc8 | |||
| 110b473f60 | |||
| d6c32c34fd | |||
| a17a586ddb | |||
| d144d94a25 | |||
| fb9874bbf2 | |||
| 3c923ecf97 | |||
| a577ef73aa | |||
| 1a91e26889 | |||
| 45c2f9bb45 | |||
| 678c01a668 | |||
| 009dca4f75 | |||
| ac397783be | |||
| 8530434732 | |||
| a692e1edb4 | |||
| ab197081d3 | |||
| 29b9fcb3a9 | |||
| 1f2a89e6f0 | |||
| 9fe3f55843 | |||
| 1f792414ff | |||
| f1a1abd01c | |||
| 0be708298d | |||
| 30168c4b2f | |||
| 93fb00f578 | |||
| 14f0a59735 | |||
| 2fda59f6f0 | |||
| b0e1dcee8a | |||
| d8abf28daa | |||
| 2e40246d1f | |||
| 1e6efc742f | |||
| c1db6ca7af | |||
| 29765b910c | |||
| 742243a535 | |||
| 4b5c8b2252 | |||
| c80e6dbf48 | |||
| c071537424 | |||
| f91edeee5e | |||
| 190495b7db | |||
| 27f9277f6b | |||
| 7ef594326d | |||
| 53e69c0b78 | |||
| fe03d05930 | |||
| e6914a4844 | |||
| 0685c93139 | |||
| f91920790e | |||
| 2020eb6345 | |||
| e2028e0a4f | |||
| 60b054670d | |||
| 019d92c270 | |||
| e5bc914931 | |||
| ca7c964eb1 | |||
| d45bbf6584 | |||
| c736cbc801 | |||
| 946397bede | |||
| f1d4c26764 | |||
| 0e6faace39 | |||
| 12d1090540 | |||
| 869ec0ef1c | |||
| a59e256c98 | |||
| 67b8d15334 | |||
| bea6909bee | |||
| 60ecb70e38 | |||
| a154539950 | |||
| 3b3a02580e | |||
| 2a18895363 | |||
| 6cf54dc715 | |||
| 02f0150d09 | |||
| d4cfe83a9e | |||
| 23bf2f0b65 | |||
| ae68fe976d | |||
| 3f839c17f1 | |||
| 9d0c18c3b8 | |||
| 4c1d09942f | |||
| 32b5a94a51 | |||
| 17201d746f | |||
| 4cef12e37f | |||
| 0e1c22f96b | |||
| 3124f08474 | |||
| f8441f933f | |||
| e987a80d29 | |||
| c5d3ee3504 | |||
| 8c957edad8 | |||
| 84144b4beb | |||
| 151224bc56 | |||
| b2b3ed53e1 | |||
| 29112f8f48 | |||
| 320d2626fb | |||
| 00868a24c0 | |||
| db89b3d0d3 | |||
| a288ed6a5b | |||
| 9388ad6493 | |||
| ec58c870ea | |||
| 4916dd42ff | |||
| 4aa21de3b7 | |||
| 1b4c4d7cb8 | |||
| 10cecc4139 | |||
| 1cc55a6057 | |||
| 669b5b36f1 | |||
| 252f07cb29 | |||
| 07eacd022e | |||
| 72a880fb11 | |||
| 0d5e3b6698 | |||
| a205f4f77e | |||
| 40193db94f | |||
| 1d5e80df53 | |||
| 9f8ce27816 | |||
| 7b4b3294f0 | |||
| 85ea97634e | |||
| 72627f8128 | |||
| 912af1e60e | |||
| fd40a6906f | |||
| 2b97d85014 | |||
| 3081e8a908 | |||
| 0b58359db7 | |||
| d4f26def6f | |||
| 1ec15d956d | |||
| d2de5f4657 | |||
| 3b311a8ce1 | |||
| 95ed44155b | |||
| 8d9ddaa4a0 | |||
| b375148943 | |||
| 58f130e059 | |||
| 2310fa020a | |||
| 2c1bf139c9 | |||
| e3b9c6e0e7 | |||
| e73766589d | |||
| f59d4c9876 | |||
| b629b5ce1f | |||
| cb51e3f7fc | |||
| 5593ddc7fc | |||
| edaa834a9c | |||
| 490011bae5 | |||
| cc9e69efda | |||
| 7b72561b8f | |||
| 0d47f1ae7c | |||
| 35ba495030 | |||
| 274f0ed3ae | |||
| 0b3fb477dd | |||
| dc63e7677d | |||
| 66e8eae0f1 | |||
| 3964eddd45 | |||
| b1d69ba8f8 | |||
| 93ffb43953 | |||
| fc5c4f6abd | |||
| 36e3c59114 | |||
| d587ee3a45 | |||
| 99d64bdb60 | |||
| 0214ebec10 | |||
| e52d64bd08 | |||
| 349cce9462 | |||
| e5f0d7976a | |||
| 273fa4fc0c | |||
| 0813e3b2d2 | |||
| b55d30654f | |||
| ea228a9691 | |||
| a6f42b827e | |||
| 5b74509348 | |||
| 0404435ec3 | |||
| f5181dd4f3 | |||
| 870cf85e3f | |||
| 3ec1511aec | |||
| 9989c7767e | |||
| 7c5adc9012 | |||
| 0f61efdf58 | |||
| 3079068c62 | |||
| f70814d444 | |||
| afaa9a5516 | |||
| 8195f63702 | |||
| ac6695e7b0 | |||
| 2e05e8cac6 | |||
| 9e1946c636 | |||
| d560cf97d9 | |||
| 6a1e5ff3f3 | |||
| 5d656f2dce | |||
| 179d358604 | |||
| 26f64d1ecf | |||
| 8897c3cc3b | |||
| 2588ef155c | |||
| ae634079f9 |
+76
-15
@@ -11,8 +11,6 @@ variables:
|
||||
NUGET_PATH: 'C:\Tools\nuget.exe'
|
||||
DEST: 'install'
|
||||
|
||||
# nota: cer creazione rules: https://docs.gitlab.com/ee/ci/jobs/job_control.html#common-if-clauses-for-rules
|
||||
|
||||
# helper x fix pacchetti nuget da repo locale nexus.steamware.net
|
||||
.nuget-fix: &nuget-fix
|
||||
- |
|
||||
@@ -47,19 +45,6 @@ variables:
|
||||
dotnet nuget list source
|
||||
|
||||
|
||||
## helper x fix appsettings config nei casi installer / office
|
||||
#.appsettings-fix: &appsettings-fix
|
||||
# - |
|
||||
# echo "esecuzione FIX appsettings.json"
|
||||
# $srcFile="$env:APP_NAME/appsettings.Production-install.json"
|
||||
# $dstFile="$env:APP_NAME/appsettings.Production.json"
|
||||
# if (($env:DEST -ne 'install')) {
|
||||
# $srcFile="$env:APP_NAME/appsettings.Production-office.json"
|
||||
# }
|
||||
# echo "Copy-Item -Path $srcFile -Destination $dstFile -force"
|
||||
# Copy-Item -Path $srcFile -Destination $dstFile -force
|
||||
# echo "Completata copia file appsettings.json corretto"
|
||||
|
||||
# helper creazione hash files x IIS
|
||||
.hashBuild: &hashBuild
|
||||
- |
|
||||
@@ -185,6 +170,44 @@ Lux.API:build:
|
||||
- echo $CI_COMMIT_BRANCH
|
||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
||||
|
||||
Lux.RepMan:build:
|
||||
stage: build
|
||||
tags:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: Lux.Report.Manager
|
||||
SOL_NAME: Lux.Report
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == 'develop'
|
||||
- if: $CI_COMMIT_BRANCH == 'main'
|
||||
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
|
||||
when: always
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
- dotnet restore "$env:SOL_NAME.sln"
|
||||
script:
|
||||
- echo $CI_COMMIT_BRANCH
|
||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
||||
|
||||
Lux.RepSrv:build:
|
||||
stage: build
|
||||
tags:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: Lux.Report.Server
|
||||
SOL_NAME: Lux.Report
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == 'develop'
|
||||
- if: $CI_COMMIT_BRANCH == 'main'
|
||||
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
|
||||
when: always
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
- dotnet restore "$env:SOL_NAME.sln"
|
||||
script:
|
||||
- echo $CI_COMMIT_BRANCH
|
||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
||||
|
||||
# --------------------------------
|
||||
# DEPLOY develop (IIS01 + beta nuget)
|
||||
# --------------------------------
|
||||
@@ -226,6 +249,44 @@ Lux.API:IIS01:deploy:
|
||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
||||
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
|
||||
|
||||
Lux.RepMan:IIS01:deploy:
|
||||
stage: deploy
|
||||
tags:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: Lux.Report.Manager
|
||||
SOL_NAME: Lux.Report
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
- dotnet restore "$env:SOL_NAME.sln"
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == 'develop'
|
||||
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
|
||||
when: always
|
||||
needs: ["Lux.RepMan:build"]
|
||||
script:
|
||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
||||
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
|
||||
|
||||
Lux.RepSrv:IIS01:deploy:
|
||||
stage: deploy
|
||||
tags:
|
||||
- win
|
||||
variables:
|
||||
APP_NAME: Lux.Report.Server
|
||||
SOL_NAME: Lux.Report
|
||||
before_script:
|
||||
- *nuget-fix
|
||||
- dotnet restore "$env:SOL_NAME.sln"
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == 'develop'
|
||||
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
|
||||
when: always
|
||||
needs: ["Lux.RepSrv:build"]
|
||||
script:
|
||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
||||
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
|
||||
|
||||
EgwCoreLib.Lux.Core:SDK:deploy:
|
||||
stage: deploy
|
||||
tags:
|
||||
|
||||
+18
-12
@@ -8,11 +8,17 @@
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageVersion>
|
||||
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.3.916" />
|
||||
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.3.916" />
|
||||
<PackageVersion Include="DevExpress.AspNetCore.Reporting" Version="25.2.5" />
|
||||
<PackageVersion Include="DevExpress.Blazor" Version="25.2.5" />
|
||||
<PackageVersion Include="DevExpress.Blazor.Reporting.JSBasedControls" Version="25.2.5" />
|
||||
<PackageVersion Include="DevExpress.Blazor.Reporting.Viewer" Version="25.2.5" />
|
||||
<PackageVersion Include="Microsoft.CodeAnalysis" Version="5.3.0" />
|
||||
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.5" />
|
||||
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.4.3017" />
|
||||
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.4.3017" />
|
||||
<PackageVersion Include="Egw.Window.Data" Version="2.8.1.2611" />
|
||||
<PackageVersion Include="EgwCoreLib.Razor" Version="1.5.2511.312" />
|
||||
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2511.312" />
|
||||
<PackageVersion Include="EgwCoreLib.Razor" Version="1.5.2605.511" />
|
||||
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2605.511" />
|
||||
<PackageVersion Include="EgwMultiEngineManager.Data" Version="3.1.1.2" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.23" />
|
||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="8.0.23" />
|
||||
@@ -29,16 +35,16 @@
|
||||
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.12" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.12" />
|
||||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
|
||||
<PackageVersion Include="NLog" Version="6.0.7" />
|
||||
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.6" />
|
||||
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.0" />
|
||||
<PackageVersion Include="NLog" Version="6.1.2" />
|
||||
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.7" />
|
||||
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.2" />
|
||||
<PackageVersion Include="OpenTelemetry.Api" Version="1.15.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.3" />
|
||||
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
|
||||
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.0-beta.1" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
|
||||
<PackageVersion Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
|
||||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
|
||||
<PackageVersion Include="Radzen.Blazor" Version="8.6.5" />
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
{
|
||||
public static class CloneExtensions
|
||||
{
|
||||
#region Public Methods
|
||||
|
||||
/// <summary>
|
||||
/// Clone profondo tramite serializzazione/deserializzazione di obj generici
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="obj"></param>
|
||||
/// <returns></returns>
|
||||
public static T DeepClone<T>(this T obj)
|
||||
{
|
||||
// Configurazione serializzatore JSON per risolvere errore di loop circolare
|
||||
var JSSettings = new JsonSerializerSettings()
|
||||
{
|
||||
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
|
||||
};
|
||||
var json = JsonConvert.SerializeObject(obj, JSSettings);
|
||||
return JsonConvert.DeserializeObject<T>(json)!;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Comparatore statico tra entità
|
||||
/// </summary>
|
||||
/// <typeparam name="T"></typeparam>
|
||||
/// <param name="original"></param>
|
||||
/// <param name="edited"></param>
|
||||
/// <returns></returns>
|
||||
public static bool IsChanged<T>(T original, T edited) => !EqualityComparer<T>.Default.Equals(original, edited);
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
//// <Auto-Generated>
|
||||
//// <Auto-Generated>
|
||||
//// This is here so CodeMaid doesn't reorganize this document
|
||||
//// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
@@ -12,7 +6,7 @@ namespace EgwCoreLib.Lux.Core
|
||||
/// <summary>
|
||||
/// Configurazione costanti applicative
|
||||
/// </summary>
|
||||
public class Constants
|
||||
public class Const
|
||||
{
|
||||
|
||||
// dati conf REDIS Cache
|
||||
@@ -1,12 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
{
|
||||
public class DtUtils
|
||||
public class DateTimeUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// Formattazione dataora fissa come HH:mm:ss
|
||||
@@ -0,0 +1,27 @@
|
||||
namespace EgwCoreLib.Lux.Core.Dto
|
||||
{
|
||||
public class ParamConfigDto
|
||||
{
|
||||
/// <summary>
|
||||
/// Nome parametro
|
||||
/// </summary>
|
||||
public string Name { get; set; } = "fix";
|
||||
|
||||
/// <summary>
|
||||
/// Tipo parametro:
|
||||
/// - fix (fisso)
|
||||
/// - url (prende da URL QueryString)
|
||||
/// </summary>
|
||||
public string Type { get; set; } = "fix";
|
||||
|
||||
/// <summary>
|
||||
/// Per recuperare da ingresso (es URL)
|
||||
/// </summary>
|
||||
public string vIN { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Valore out (da passare come apram x report)
|
||||
/// </summary>
|
||||
public string vOUT { get; set; } = "";
|
||||
}
|
||||
}
|
||||
@@ -4,6 +4,19 @@
|
||||
{
|
||||
#region Public Enums
|
||||
|
||||
/// <summary>
|
||||
/// Stato compilazione offerta
|
||||
/// </summary>
|
||||
public enum CompileStep
|
||||
{
|
||||
Draft = 0,
|
||||
Header = 1,
|
||||
General,
|
||||
Rows,
|
||||
Delivery,
|
||||
FinalCheck
|
||||
}
|
||||
|
||||
public enum DisplayMode
|
||||
{
|
||||
Standard,
|
||||
@@ -44,6 +57,27 @@
|
||||
JobCycle
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tipologia immagine
|
||||
/// </summary>
|
||||
public enum ImageType
|
||||
{
|
||||
/// <summary>
|
||||
/// Non definita (da calcolare...)
|
||||
/// </summary>
|
||||
ND = 0,
|
||||
|
||||
/// <summary>
|
||||
/// Calcolata (es JWD, BTL)
|
||||
/// </summary>
|
||||
Calculated,
|
||||
|
||||
/// <summary>
|
||||
/// Fissa (tipicamente prodotto da rivendita/servizio)
|
||||
/// </summary>
|
||||
Fixed
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tipologia item (classe/natura articolo)
|
||||
/// </summary>
|
||||
@@ -77,25 +111,6 @@
|
||||
BomAlt
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tipologia immagine
|
||||
/// </summary>
|
||||
public enum ImageType
|
||||
{
|
||||
/// <summary>
|
||||
/// Non definita (da calcolare...)
|
||||
/// </summary>
|
||||
ND = 0,
|
||||
/// <summary>
|
||||
/// Calcolata (es JWD, BTL)
|
||||
/// </summary>
|
||||
Calculated,
|
||||
/// <summary>
|
||||
/// Fissa (tipicamente prodotto da rivendita/servizio)
|
||||
/// </summary>
|
||||
Fixed
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tipologia item per Source (modalità costruzione)
|
||||
/// </summary>
|
||||
@@ -147,6 +162,9 @@
|
||||
Lost
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Status ordini cliente
|
||||
/// </summary>
|
||||
public enum OrderStates
|
||||
{
|
||||
/// <summary>
|
||||
@@ -195,6 +213,39 @@
|
||||
Closed
|
||||
}
|
||||
|
||||
public enum BuyOrderStates
|
||||
{
|
||||
/// <summary>
|
||||
/// Ordine acquisto creato da BOM di 1/+ ordini
|
||||
/// </summary>
|
||||
Created,
|
||||
|
||||
/// <summary>
|
||||
/// Richiesta quotazione fornitori
|
||||
/// </summary>
|
||||
Requested,
|
||||
|
||||
/// <summary>
|
||||
/// Assegnato a supplier (e inviato)
|
||||
/// </summary>
|
||||
Assigned,
|
||||
|
||||
/// <summary>
|
||||
/// Parzialmente ricevuto
|
||||
/// </summary>
|
||||
Partial,
|
||||
|
||||
/// <summary>
|
||||
/// Completato poiché ho ricevuto Merce (e DDT)
|
||||
/// </summary>
|
||||
Completed,
|
||||
|
||||
/// <summary>
|
||||
/// Ordine chiuso (con fatturazione)
|
||||
/// </summary>
|
||||
Closed
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Enum risultati verifica lavorabilità part (e tempo)
|
||||
/// </summary>
|
||||
@@ -205,6 +256,34 @@
|
||||
MACHINABLE = 1,
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tipo di code del Prod
|
||||
/// </summary>
|
||||
public enum ProdQueueType
|
||||
{
|
||||
waiting,
|
||||
running,
|
||||
done
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Modalità raggruppamento (giornalieri, orari...)
|
||||
/// </summary>
|
||||
public enum RuidGroupMode
|
||||
{
|
||||
Day,
|
||||
Hour
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tipo di dati raggruppamento gestiti
|
||||
/// </summary>
|
||||
public enum RuidTagMode
|
||||
{
|
||||
Envir,
|
||||
Mode
|
||||
}
|
||||
|
||||
#endregion Public Enums
|
||||
|
||||
#if false
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
{
|
||||
public class FileUtils
|
||||
{
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
{
|
||||
public class EditStepDto
|
||||
{
|
||||
public Enums.CompileStep SrcStep { get; set; }
|
||||
public bool Changed { get; set; } = false;
|
||||
}
|
||||
}
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
{
|
||||
public class EventDto
|
||||
{
|
||||
@@ -43,7 +37,7 @@ namespace EgwCoreLib.Lux.Core.Generic
|
||||
Conf = this.Conf,
|
||||
IsCompany = this.IsCompany,
|
||||
#endif
|
||||
Abbrev = this.Abbrev,
|
||||
Abbrev = this.Abbrev,
|
||||
Titolo = this.Titolo,
|
||||
Descrizione = this.Descrizione,
|
||||
Tooltip = this.Tooltip,
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
{
|
||||
public class GroupDetailDTO
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
{
|
||||
/// <summary>
|
||||
/// Definizione di item raw x calcolo lavorazioni
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
namespace EgwCoreLib.Lux.Core.Generic
|
||||
{
|
||||
public class TaskHistDTO
|
||||
{
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
global using Newtonsoft.Json;
|
||||
global using NLog;
|
||||
@@ -1,9 +1,4 @@
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.MachineCalc
|
||||
{
|
||||
@@ -75,7 +70,7 @@ namespace EgwCoreLib.Lux.Core.MachineCalc
|
||||
}
|
||||
|
||||
return results;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Calcolo intersezioni anche dell'insieme nullo (= UNWORKABLE)
|
||||
@@ -287,7 +282,7 @@ namespace EgwCoreLib.Lux.Core.MachineCalc
|
||||
return machines
|
||||
.Select(m => m.PartList.Where(predicate).Select(p => p.Tag).ToHashSet())
|
||||
.Aggregate((set1, set2) => { set1.IntersectWith(set2); return set1; });
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
{
|
||||
/// <summary>
|
||||
/// Generico dizionario parametri con funzione ricerca valore (SE presente)
|
||||
@@ -77,6 +75,11 @@ namespace EgwCoreLib.Lux.Core
|
||||
|
||||
#endregion Public Methods
|
||||
|
||||
public Dictionary<string, string> DictReadOnly
|
||||
{
|
||||
get => DictVals;
|
||||
}
|
||||
|
||||
#region Private Properties
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
public class ParamDictFlex<TValue>
|
||||
{
|
||||
private Dictionary<string, TValue> DictVals { get; set; } = new Dictionary<string, TValue>();
|
||||
|
||||
// Costruttore da stringa JSON (TValue è un tipo concreto serializzabile)
|
||||
public ParamDictFlex(string rawVal)
|
||||
{
|
||||
if (string.IsNullOrWhiteSpace(rawVal))
|
||||
{
|
||||
DictVals = new Dictionary<string, TValue>();
|
||||
return;
|
||||
}
|
||||
|
||||
DictVals = JsonConvert.DeserializeObject<Dictionary<string, TValue>>(rawVal)
|
||||
?? new Dictionary<string, TValue>();
|
||||
}
|
||||
|
||||
// Costruttore da dizionario
|
||||
public ParamDictFlex(Dictionary<string, TValue> newDict)
|
||||
{
|
||||
DictVals = newDict ?? new Dictionary<string, TValue>();
|
||||
}
|
||||
|
||||
// Versione serializzata del dizionario
|
||||
public string Serialized
|
||||
{
|
||||
get => JsonConvert.SerializeObject(DictVals);
|
||||
}
|
||||
|
||||
// Recupera valore; ritorna default(TValue) se la chiave non esiste
|
||||
public TValue GetVal(string reqKey)
|
||||
{
|
||||
if (reqKey is null) throw new ArgumentNullException(nameof(reqKey));
|
||||
return DictVals.TryGetValue(reqKey, out var val) ? val : default!;
|
||||
}
|
||||
|
||||
// Imposta valore (aggiunge o aggiorna)
|
||||
public void SetVal(string key, TValue val)
|
||||
{
|
||||
if (key is null) throw new ArgumentNullException(nameof(key));
|
||||
DictVals[key] = val;
|
||||
}
|
||||
|
||||
// Rimuove chiave
|
||||
public bool Remove(string key)
|
||||
{
|
||||
if (key is null) throw new ArgumentNullException(nameof(key));
|
||||
return DictVals.Remove(key);
|
||||
}
|
||||
|
||||
// Controlla esistenza chiave
|
||||
public bool ContainsKey(string key)
|
||||
{
|
||||
if (key is null) throw new ArgumentNullException(nameof(key));
|
||||
return DictVals.ContainsKey(key);
|
||||
}
|
||||
|
||||
// Espone una copia di sola lettura del dizionario
|
||||
public IReadOnlyDictionary<string, TValue> AsReadOnly() => new Dictionary<string, TValue>(DictVals);
|
||||
}
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
{
|
||||
public class PubSubEventArgs : EventArgs
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
public class BomDTO
|
||||
{
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
@@ -31,7 +26,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
/// Numero Item
|
||||
/// </summary>
|
||||
public int ItemQty { get; set; } = 0;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Volume relativo (m3)
|
||||
/// </summary>
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using Newtonsoft.Json.Converters;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.Json.Serialization;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
public class CalcRequestDTO
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe DTO x richieste di stima lavorazioni
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
@@ -18,7 +12,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
|
||||
public double Width { get; set; } = 800;
|
||||
public double Height { get; set; } = 800;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// FAKE: nome del file svg da leggere direttamente...
|
||||
/// </summary>
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection.PortableExecutable;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe per deserializzazione risposta stima lavorabilità e tempi x macchina
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
public class NestingReqPayloadDTO
|
||||
{
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
/// <summary>
|
||||
/// Dati di dettaglio per Tempi / Costi di uno step (
|
||||
@@ -1,12 +1,4 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Reflection.PortableExecutable;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe per definizione WorkLoad in dettaglio x un dato task (POR tipicamente)
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Stats
|
||||
namespace EgwCoreLib.Lux.Core.Stats
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe per trasferimento dati RT da redis
|
||||
@@ -15,7 +9,7 @@ namespace EgwCoreLib.Lux.Core.Stats
|
||||
/// Tag Classificazione del dato
|
||||
/// </summary>
|
||||
public string TagClass { get; set; } = "";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// DataOra riferimento
|
||||
/// </summary>
|
||||
@@ -25,7 +19,7 @@ namespace EgwCoreLib.Lux.Core.Stats
|
||||
/// num eventi registrati
|
||||
/// </summary>
|
||||
public int EventCount { get; set; }
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Durata totale registrata
|
||||
/// </summary>
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Stats
|
||||
namespace EgwCoreLib.Lux.Core.Stats
|
||||
{
|
||||
public class StatsRangeDto
|
||||
{
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core.Stats
|
||||
namespace EgwCoreLib.Lux.Core.Stats
|
||||
{
|
||||
public class StatsRealtimeDto
|
||||
{
|
||||
|
||||
@@ -1,13 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.Data.DbModel.Admin;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
{
|
||||
public partial class AdminContext : DbContext
|
||||
{
|
||||
@@ -30,7 +21,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
|
||||
public AdminContext(DbContextOptions<AdminContext> options) : base(options)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Constructors
|
||||
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using EgwCoreLib.Lux.Core.Generic;
|
||||
using EgwMultiEngineManager.Data;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.Controllers
|
||||
{
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,17 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Config;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Production;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Stats;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Stock;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Task;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NLog;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
{
|
||||
public partial class DataLayerContext : DbContext
|
||||
{
|
||||
@@ -56,7 +43,14 @@ namespace EgwCoreLib.Lux.Data
|
||||
public virtual DbSet<TagsModel> DbSetTags { get; set; }
|
||||
public virtual DbSet<CustomerModel> DbSetCustomer { get; set; }
|
||||
public virtual DbSet<DealerModel> DbSetDealer { get; set; }
|
||||
|
||||
public virtual DbSet<SupplierModel> DbSetSupplier { get; set; }
|
||||
public virtual DbSet<SupplierQualifyModel> DbSetSupplierQualify { get; set; }
|
||||
public virtual DbSet<BuyOrderModel> DbSetBuyOrder { get; set; }
|
||||
public virtual DbSet<BuyOrderRowModel> DbSetBuyOrderRow { get; set; }
|
||||
public virtual DbSet<MatReqModel> DbSetMaterialReq { get; set; }
|
||||
public virtual DbSet<BuyOrderRow2MatReqModel> DbSetBuyOrdRow2MatReq { get; set; }
|
||||
|
||||
public virtual DbSet<OfferModel> DbSetOffer { get; set; }
|
||||
public virtual DbSet<OfferRowModel> DbSetOfferRow { get; set; }
|
||||
public virtual DbSet<OrderModel> DbSetOrder { get; set; }
|
||||
@@ -136,8 +130,15 @@ namespace EgwCoreLib.Lux.Data
|
||||
modelBuilder.Entity<JobStepTagModel>()
|
||||
.HasKey(jst => new { jst.JobStepID, jst.CodTag });
|
||||
|
||||
// area Buy
|
||||
modelBuilder.Entity<SupplierQualifyModel>()
|
||||
.HasKey(sq => new { sq.SupplierID, sq.CodGroup });
|
||||
modelBuilder.Entity<BuyOrderRow2MatReqModel>()
|
||||
.HasKey(bm => new { bm.BuyOrderRowID, bm.MatReqID });
|
||||
|
||||
|
||||
modelBuilder.Entity<ProductionItem2ODLModel>()
|
||||
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
|
||||
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
|
||||
|
||||
modelBuilder.Entity<ProductionItem2ODLModel>()
|
||||
.HasOne(x => x.ProductionItemNav)
|
||||
|
||||
@@ -0,0 +1,121 @@
|
||||
using EgwCoreLib.Lux.Data.Repository.Report;
|
||||
using EgwCoreLib.Lux.Data.Repository.Supplier;
|
||||
using EgwCoreLib.Lux.Data.Services.Catalog;
|
||||
using EgwCoreLib.Lux.Data.Services.Config;
|
||||
using EgwCoreLib.Lux.Data.Services.Cost;
|
||||
using EgwCoreLib.Lux.Data.Services.General;
|
||||
using EgwCoreLib.Lux.Data.Services.Internal;
|
||||
using EgwCoreLib.Lux.Data.Services.Items;
|
||||
using EgwCoreLib.Lux.Data.Services.Job;
|
||||
using EgwCoreLib.Lux.Data.Services.Production;
|
||||
using EgwCoreLib.Lux.Data.Services.Report;
|
||||
using EgwCoreLib.Lux.Data.Services.Sales;
|
||||
using EgwCoreLib.Lux.Data.Services.Supplier;
|
||||
using EgwCoreLib.Lux.Data.Services.Utils;
|
||||
using EgwCoreLib.Lux.Data.Services.Warehouse;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
{
|
||||
public static class DataServiceCollectionExtensions
|
||||
{
|
||||
public static IServiceCollection AddLuxData(this IServiceCollection services, string connectionString)
|
||||
{
|
||||
//// DbContextFactory: preferibile in Blazor Server e scenari concorrenti
|
||||
//services.AddDbContextFactory<DataLayerContext>(options =>
|
||||
// options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));
|
||||
|
||||
// servizi preliminari
|
||||
//services.TryAddSingleton<IConnectionMultiplexer>(redisConn);
|
||||
services.TryAddSingleton<IRedisService, RedisService>();
|
||||
services.TryAddSingleton<IRedisSubscriptionManager, RedisSubscriptionManager>();
|
||||
|
||||
// Repository Scoped
|
||||
services.TryAddScoped<IBuyOrderRepository, BuyOrderRepository>();
|
||||
services.TryAddScoped<IConfGlassRepository, ConfGlassRepository>();
|
||||
services.TryAddScoped<IConfProfileRepository, ConfProfileRepository>();
|
||||
services.TryAddScoped<IConfWoodRepository, ConfWoodRepository>();
|
||||
services.TryAddScoped<ICostDriverRepository, CostDriverRepository>();
|
||||
services.TryAddScoped<ICustomerRepository, CustomerRepository>();
|
||||
services.TryAddScoped<IDealerRepository, DealerRepository>();
|
||||
services.TryAddScoped<IEnvirParamRepository, EnvirParamRepository>();
|
||||
services.TryAddScoped<IGenClassRepository, GenClassRepository>();
|
||||
services.TryAddScoped<IGenValRepository, GenValRepository>();
|
||||
services.TryAddScoped<IItemGroupRepository, ItemGroupRepository>();
|
||||
services.TryAddScoped<IItemRepository, ItemRepository>();
|
||||
services.TryAddScoped<IJobStepRepository, JobStepRepository>();
|
||||
services.TryAddScoped<IJobTaskRepository, JobTaskRepository>();
|
||||
services.TryAddScoped<IMatReqRepository, MatReqRepository>();
|
||||
services.TryAddScoped<IOfferRepository, OfferRepository>();
|
||||
services.TryAddScoped<IOfferRowRepository, OfferRowRepository>();
|
||||
services.TryAddScoped<IOrderRepository, OrderRepository>();
|
||||
services.TryAddScoped<IOrderRowRepository, OrderRowRepository>();
|
||||
services.TryAddScoped<IPhaseRepository, PhaseRepository>();
|
||||
services.TryAddScoped<IProductionBatchRepository, ProductionBatchRepository>();
|
||||
services.TryAddScoped<IProductionGroupRepository, ProductionGroupRepository>();
|
||||
services.TryAddScoped<IProductionItemRepository, ProductionItemRepository>();
|
||||
services.TryAddScoped<IProductionOdlRepository, ProductionOdlRepository>();
|
||||
services.TryAddScoped<IProductionPlantRepository, ProductionPlantRepository>();
|
||||
services.TryAddScoped<IResourceRepository, ResourceRepository>();
|
||||
services.TryAddScoped<IReportRepository, ReportRepository>();
|
||||
services.TryAddScoped<ISellingItemRepository, SellingItemRepository>();
|
||||
services.TryAddScoped<IStatsAggrRepository, StatsAggrRepository>();
|
||||
services.TryAddScoped<IStatsDetailRepository, StatsDetailRepository>();
|
||||
services.TryAddScoped<ITagRepository, TagRepository>();
|
||||
services.TryAddScoped<ITemplateRepository, TemplateRepository>();
|
||||
services.TryAddScoped<ITemplateRowRepository, TemplateRowRepository>();
|
||||
|
||||
// Servizi Scoped
|
||||
services.TryAddScoped<IBuyOrderService, BuyOrderService>();
|
||||
services.TryAddScoped<IConfGlassService, ConfGlassService>();
|
||||
services.TryAddScoped<IConfProfileService, ConfProfileService>();
|
||||
services.TryAddScoped<IConfWoodService, ConfWoodService>();
|
||||
services.TryAddScoped<ICostDriverService, CostDriverService>();
|
||||
services.TryAddScoped<ICustomerService, CustomerService>();
|
||||
services.TryAddScoped<IDealerService, DealerService>();
|
||||
services.TryAddScoped<IEnvirParamService, EnvirParamService>();
|
||||
services.TryAddScoped<IGenClassService, GenClassService>();
|
||||
services.TryAddScoped<IGenValService, GenValService>();
|
||||
services.TryAddScoped<IItemService, ItemService>();
|
||||
services.TryAddScoped<IItemGroupService, ItemGroupService>();
|
||||
services.TryAddScoped<IJobStepService, JobStepService>();
|
||||
services.TryAddScoped<IJobTaskService, JobTaskService>();
|
||||
services.TryAddScoped<IMatReqService, MatReqService>();
|
||||
services.TryAddScoped<IOfferService, OfferService>();
|
||||
services.TryAddScoped<IOfferRowService, OfferRowService>();
|
||||
services.TryAddScoped<IOrderService, OrderService>();
|
||||
services.TryAddScoped<IOrderRowService, OrderRowService>();
|
||||
services.TryAddScoped<IPhaseService, PhaseService>();
|
||||
services.TryAddScoped<IProductionGroupService, ProductionGroupService>();
|
||||
services.TryAddScoped<IProductionItemService, ProductionItemService>();
|
||||
services.TryAddScoped<IProductionBatchService, ProductionBatchService>();
|
||||
services.TryAddScoped<IProductionOdlService, ProductionOdlService>();
|
||||
services.TryAddScoped<IProductionPlantService, ProductionPlantService>();
|
||||
services.TryAddScoped<IResourceService, ResourceService>();
|
||||
services.TryAddScoped<IReportService, ReportService>();
|
||||
services.TryAddScoped<ISellingItemService, SellingItemService>();
|
||||
services.TryAddScoped<IStatsAggrService, StatsAggrService>();
|
||||
services.TryAddScoped<IStatsDetailService, StatsDetailService>();
|
||||
services.TryAddScoped<ITagService, TagService>();
|
||||
services.TryAddScoped<ITemplateService, TemplateService>();
|
||||
services.TryAddScoped<ITemplateRowService, TemplateRowService>();
|
||||
|
||||
// Facade / DataLayerService
|
||||
services.TryAddScoped<IDataLayerServices, DataLayerServices>();
|
||||
services.TryAddScoped<ICalcRuidService, CalcRuidService>();
|
||||
//builder.Services.AddSingleton<DataLayerServices>();
|
||||
//services.TryAddScoped<IDataLayerServices, DataLayerServices>();
|
||||
|
||||
// aggiunta servizi finali Singleton...
|
||||
services.TryAddSingleton<IImageCacheService, ImageCacheService>();
|
||||
services.TryAddSingleton<IConfigDataService, ConfigDataService>();
|
||||
services.TryAddSingleton<ICalcRequestService, CalcRequestService>();
|
||||
services.TryAddSingleton<IFileService, FileService>();
|
||||
services.TryAddSingleton<IProdService, ProdService>();
|
||||
//services.TryAddSingleton<CalcRequestService>();
|
||||
|
||||
|
||||
return services;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,4 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
{
|
||||
public class DbAdmin : IDisposable
|
||||
{
|
||||
@@ -81,7 +73,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
return answ;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using NLog;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
{
|
||||
public class DbConfig
|
||||
{
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.Data.DbModel.Admin
|
||||
namespace EgwCoreLib.Lux.Data.Data.DbModel.Admin
|
||||
{
|
||||
/// <summary>
|
||||
/// Tabella dei USER di MySql
|
||||
|
||||
+1
-5
@@ -1,8 +1,4 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe dei template di oggetti gestiti
|
||||
+37
-22
@@ -1,12 +1,7 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
||||
{
|
||||
[Table("sales_template_row")]
|
||||
public class TemplateRowModel
|
||||
@@ -49,15 +44,14 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
[NotMapped]
|
||||
public string TemplateRowDtx
|
||||
{
|
||||
get => $"TLR.{TemplateRowID:X12}";
|
||||
//get => $"TLR.{Inserted:yy}.{TemplateRowID:X8}";
|
||||
get => CodeUid(TemplateRowID);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce UID da impiegare x immagine
|
||||
/// Restituisce URL da impiegare x immagine
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string ImgUID
|
||||
public string ImgUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -65,7 +59,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
switch (ImgType)
|
||||
{
|
||||
case ImageType.Calculated:
|
||||
answ = ImgUrl(TemplateRowID);
|
||||
answ = CodeUid(TemplateRowID);
|
||||
break;
|
||||
case ImageType.Fixed:
|
||||
answ = FileName;
|
||||
@@ -78,14 +72,25 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = ImgUrl(TemplateRowID);
|
||||
answ = CodeUid(TemplateRowID);
|
||||
}
|
||||
answ = $"static/{answ}";
|
||||
break;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// URL Immagine calcolato
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public static string CodeUid(int id)
|
||||
{
|
||||
return $"TLR.{id:X12}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tipo immagine da visualizzare
|
||||
/// </summary>
|
||||
@@ -199,6 +204,24 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public long FileSize { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Definisce se sia calcolabile, dato il tipo SellingItem
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool CalcEnabled
|
||||
{
|
||||
get => ImgType == ImageType.Calculated;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Definisce presenza file
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool HasFile
|
||||
{
|
||||
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// BOM serializzata per la produzione dell'item
|
||||
/// </summary>
|
||||
@@ -281,14 +304,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
[ForeignKey("SellingItemID")]
|
||||
public virtual SellingItemModel? SellingItemNav { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// URL Immagine calcolato
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public static string ImgUrl(int id)
|
||||
{
|
||||
return $"TLR.{id:X12}";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,11 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||
{
|
||||
{
|
||||
/// <summary>
|
||||
/// Risorsa tipo di Glass x EF
|
||||
/// </summary>
|
||||
/// Risorsa tipo di Glass x EF
|
||||
/// </summary>
|
||||
[Table("conf_envir")]
|
||||
public class EnvirParamModel
|
||||
{
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
||||
|
||||
@@ -1,14 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Task;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
{ // <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Task;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
@@ -90,12 +85,54 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
public ImageType ImgType { get; set; } = ImageType.ND;
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce UID da impiegare x immagine
|
||||
/// URL Immagine calcolato
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public static string CodeUid(int id)
|
||||
{
|
||||
return $"SP.{id:X12}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce Url da impiegare x immagine
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string ImgUID
|
||||
{
|
||||
get => ImgType == ImageType.Fixed ? FileName : ImgUrl(SellingItemID);
|
||||
get => ImgType == ImageType.Fixed ? FileName : CodeUid(SellingItemID);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Definisce se sia calcolabile, dato il tipo SellingItem
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool CalcEnabled
|
||||
{
|
||||
get => ImgType == ImageType.Calculated;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce Url immagine già calcolato (da sistemare!!!)
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string ImgUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "empty.svg";
|
||||
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
|
||||
if (CalcEnabled)
|
||||
{
|
||||
string rndImg = $"{DateTime.Now:HHmmssfff}";
|
||||
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = $"static/{ImgUID}";
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
#if false
|
||||
@@ -126,20 +163,18 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
get => false;
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public bool HasBOM
|
||||
{
|
||||
get => SourceType == ItemSourceType.Jwd || SourceType == ItemSourceType.FileBTL;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Job/Cicli
|
||||
/// </summary>
|
||||
[ForeignKey("JobID")]
|
||||
public virtual JobTaskModel JobNav { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// URL Immagine calcolato
|
||||
/// </summary>
|
||||
/// <param name="id"></param>
|
||||
/// <returns></returns>
|
||||
public static string ImgUrl(int id)
|
||||
{
|
||||
return $"SP.{id:X12}";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
+2
-11
@@ -1,16 +1,7 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
/// <summary>
|
||||
/// Configurazione JobDriver abilitati per un Job e relativi coefficienti di conversione verso CostDriver
|
||||
+1
-10
@@ -1,13 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
/// <summary>
|
||||
/// Definizione driver di calcolo dall'Engine x la stima del CostDriver equivalente tempi/costi
|
||||
+2
-6
@@ -1,11 +1,7 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
[Table("task_job_step_item")]
|
||||
public class JobStepItemModel
|
||||
+2
-8
@@ -1,13 +1,7 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Task;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
/// <summary>
|
||||
/// Routing dei cicli di lavoro, con riferimento a risorse e fasi
|
||||
+1
-9
@@ -1,12 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
[Table("task_job_step_tag")]
|
||||
public class JobStepTagModel
|
||||
+2
-6
@@ -1,11 +1,7 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
/// <summary>
|
||||
/// Definizione macro dei Cicli di Lavoro / Job
|
||||
+1
-9
@@ -1,12 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
[Table("task_job_task_tag")]
|
||||
public class JobTaskTagModel
|
||||
+2
-10
@@ -1,15 +1,7 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Task
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
/// <summary>
|
||||
/// Fase di lavorazione / ProductionStage
|
||||
@@ -1,7 +1,4 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using EgwCoreLib.Lux.Core.Generic;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||
{
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||
|
||||
@@ -1,10 +1,6 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||
{
|
||||
/// <summary>
|
||||
@@ -95,6 +91,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||
/// <summary>
|
||||
/// Navigazione verso tabella Item2Odl
|
||||
/// </summary>
|
||||
public ICollection<ProductionItem2ODLModel> Item2OdlNav { get; set; } = new List<ProductionItem2ODLModel>();
|
||||
public ICollection<ProductionItem2ODLModel> Item2OdlNav { get; set; } = new List<ProductionItem2ODLModel>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Task;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Job;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
|
||||
@@ -1,15 +1,5 @@
|
||||
using EgwCoreLib.Lux.Core.Generic;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Task;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
|
||||
@@ -1,14 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||
|
||||
@@ -0,0 +1,70 @@
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Report
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe dei report gestiti
|
||||
/// </summary>
|
||||
[Table("report_list")]
|
||||
public class ReportModel
|
||||
{
|
||||
/// <summary>
|
||||
/// ID del record
|
||||
/// </summary>
|
||||
[Key]
|
||||
public int ReportID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Denominazione
|
||||
/// </summary>
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Descrizione
|
||||
/// </summary>
|
||||
public string Description { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Valore completo Json per recupero dati, con segnaposto con [[param_01]]
|
||||
/// </summary>
|
||||
public string JsonDSN { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Nome del report Active tra quelli nella folder
|
||||
/// </summary>
|
||||
public string ActRepFileName { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Conf dei parametri per il report
|
||||
/// </summary>
|
||||
public string ParamConfigRaw { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Conf relative ai file report
|
||||
/// </summary>
|
||||
public string FileConfDataRaw { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Elenco dei parametri da gestire x il ReportTemplate
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public List<ParamConfigDto> ParamConfig
|
||||
{
|
||||
get
|
||||
{
|
||||
List<ParamConfigDto> answ = new();
|
||||
if (!string.IsNullOrEmpty(ParamConfigRaw) && ParamConfigRaw.Length > 2)
|
||||
{
|
||||
answ = JsonConvert.DeserializeObject<List<ParamConfigDto>>(ParamConfigRaw) ?? new();
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
string rawVal = JsonConvert.SerializeObject(value);
|
||||
ParamConfigRaw = rawVal;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
@@ -69,6 +65,27 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public string DictPresel { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario valorizzato dei parametri attivi
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public Dictionary<string, string> DictParameter
|
||||
{
|
||||
get
|
||||
{
|
||||
Dictionary<string, string> answ = new();
|
||||
if (!string.IsNullOrEmpty(DictPresel))
|
||||
{
|
||||
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPresel) ?? new Dictionary<string, string>();
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
//set
|
||||
//{
|
||||
// DictPresel = JsonConvert.SerializeObject(value);
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Validità Offerta
|
||||
/// </summary>
|
||||
|
||||
@@ -1,9 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
@@ -50,10 +45,16 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// <summary>
|
||||
/// ID dell'articolo di vendita offerto
|
||||
/// </summary>
|
||||
public int SellingItemID { get; set; }
|
||||
public int? SellingItemID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Riferimento (opzionale9 al template da cui è derivato
|
||||
/// Definisce se sia calcolabile, dato il tipo SellingItem
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool IsNote => SellingItemID == null;
|
||||
|
||||
/// <summary>
|
||||
/// Riferimento (opzionale) al template da cui è derivato
|
||||
/// </summary>
|
||||
public int? TemplateRowID { get; set; } = null;
|
||||
|
||||
@@ -64,16 +65,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
public bool CalcEnabled
|
||||
{
|
||||
get => ImgType == ImageType.Calculated;
|
||||
#if false
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Definisce presenza file
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool HasFile
|
||||
{
|
||||
bool answ = false;
|
||||
if (SellingItemNav != null)
|
||||
{
|
||||
answ = SellingItemNav.SourceType == ItemSourceType.Jwd || SellingItemNav.SourceType == ItemSourceType.FileBTL;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
#endif
|
||||
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -103,13 +103,36 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
}
|
||||
else if (SellingItemID > 0)
|
||||
{
|
||||
answ = SellingItemModel.ImgUrl(SellingItemID);
|
||||
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce Url immagine già calcolato (da sistemare!!!)
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string ImgUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "empty.svg";
|
||||
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
|
||||
string rndImg = $"{DateTime.Now:HHmmssfff}";
|
||||
if (CalcEnabled)
|
||||
{
|
||||
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = $"static/{ImgUID}";
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Quantità della risorsa
|
||||
/// </summary>
|
||||
@@ -296,6 +319,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public bool AwaitPrice { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario serializzato delle preselezioni (pending, da applicare)
|
||||
/// </summary>
|
||||
public string DictPendPresRaw { get; set; } = "";
|
||||
|
||||
[NotMapped]
|
||||
public bool HasPendReq
|
||||
{
|
||||
get => !string.IsNullOrEmpty(DictPendPresRaw) && DictPendingPresel.Count > 0;
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public Dictionary<string, string> DictPendingPresel
|
||||
{
|
||||
get
|
||||
{
|
||||
Dictionary<string, string> answ = new();
|
||||
if (!string.IsNullOrEmpty(DictPendPresRaw))
|
||||
{
|
||||
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPendPresRaw) ?? new Dictionary<string, string>();
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
//set
|
||||
//{
|
||||
// DictPendPresRaw = JsonConvert.SerializeObject(value);
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Offer
|
||||
/// </summary>
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
using EgwCoreLib.Lux.Core.Generic;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Production;
|
||||
using Newtonsoft.Json;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
@@ -91,7 +84,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public DateTime Modified { get; set; } = DateTime.Now;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// DataOra richiesta per il completamento dell'ordine
|
||||
/// </summary>
|
||||
@@ -107,6 +99,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public string ConsNote { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
|
||||
/// </summary>
|
||||
public string RawItemData { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Enum stato Ordine
|
||||
/// </summary>
|
||||
@@ -199,6 +196,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
get => (TotalCost > 0 && TotalPrice > TotalCost) ? (TotalPrice - TotalCost) / TotalPrice : 0;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Verifica se ci siano TUTTE le righe coperte da Fabbisogni (con o senza ordine...)
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool AllRowsWithReq
|
||||
{
|
||||
get => OrderRowNav != null && !OrderRowNav.Any(x => x.MatReqNav.Count == 0);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Customer
|
||||
/// </summary>
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Production;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
@@ -57,10 +51,10 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// <summary>
|
||||
/// ID dell'articolo di vendita Orderto
|
||||
/// </summary>
|
||||
public int SellingItemID { get; set; }
|
||||
public int? SellingItemID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Riferimento (opzionale9 al template da cui è derivato
|
||||
/// Riferimento (opzionale) al template da cui è derivato
|
||||
/// </summary>
|
||||
public int? TemplateRowID { get; set; } = null;
|
||||
|
||||
@@ -152,16 +146,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
public bool CalcEnabled
|
||||
{
|
||||
get => ImgType == ImageType.Calculated;
|
||||
#if false
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Definisce presenza file
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool HasFile
|
||||
{
|
||||
bool answ = false;
|
||||
if (SellingItemNav != null)
|
||||
{
|
||||
answ = SellingItemNav.SourceType == ItemSourceType.Jwd || SellingItemNav.SourceType == ItemSourceType.FileBTL;
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
#endif
|
||||
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -189,19 +182,42 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
if (TemplateRowID != null && TemplateRowID > 0)
|
||||
{
|
||||
//answ= $"TR.{TemplateRowID:X16}";
|
||||
answ = TemplateRowModel.ImgUrl(TemplateRowID ?? 0);
|
||||
answ = TemplateRowModel.CodeUid(TemplateRowID ?? 0);
|
||||
}
|
||||
// altrimenti da selling item...
|
||||
else if (SellingItemID > 0)
|
||||
{
|
||||
//answ = $"SP.{SellingItemID:X12}";
|
||||
answ = SellingItemModel.ImgUrl(SellingItemID);
|
||||
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Restituisce Url immagine già calcolato (da sistemare!!!)
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string ImgUrl
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = "empty.svg";
|
||||
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
|
||||
string rndImg = $"{DateTime.Now:HHmmssfff}";
|
||||
if (CalcEnabled)
|
||||
{
|
||||
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = $"static/{ImgUID}";
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Valore serializzato della composizione articolo (in formato JWD x finestra)
|
||||
/// </summary>
|
||||
@@ -228,6 +244,30 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public string ItemBOM { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Lista BOM deserializzata
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public List<BomItemDTO> ListBOM
|
||||
{
|
||||
get
|
||||
{
|
||||
List<BomItemDTO> answ = new();
|
||||
if (!string.IsNullOrEmpty(ItemBOM) && ItemBOM.Length > 2)
|
||||
{
|
||||
answ = JsonConvert.DeserializeObject<List<BomItemDTO>>(ItemBOM) ?? new();
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public bool HasMatReqRow
|
||||
{
|
||||
get => MatReqNav != null && MatReqNav.Count > 0;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Lista dei Job Cost Drivers calcolati dall'engine (necessari x calcolo Steps)
|
||||
/// </summary>
|
||||
@@ -273,6 +313,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public string ProdEstimate { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
|
||||
/// </summary>
|
||||
public string RawItemData { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Validazione dati BOM (Inteso come gruppi tutti trovati/esistenti)
|
||||
/// </summary>
|
||||
@@ -317,6 +362,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public bool AwaitPrice { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario serializzato delle preselezioni (pending, da applicare)
|
||||
/// </summary>
|
||||
public string DictPendPresRaw { get; set; } = "";
|
||||
|
||||
[NotMapped]
|
||||
public bool HasPendReq
|
||||
{
|
||||
get => !string.IsNullOrEmpty(DictPendPresRaw) && DictPendingPresel.Count > 0;
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public Dictionary<string, string> DictPendingPresel
|
||||
{
|
||||
get
|
||||
{
|
||||
Dictionary<string, string> answ = new();
|
||||
if (!string.IsNullOrEmpty(DictPendPresRaw))
|
||||
{
|
||||
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPendPresRaw) ?? new Dictionary<string, string>();
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
//set
|
||||
//{
|
||||
// DictPendPresRaw = JsonConvert.SerializeObject(value);
|
||||
//}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Order
|
||||
/// </summary>
|
||||
@@ -339,5 +413,10 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// Navigazione alle righe ProdItem
|
||||
/// </summary>
|
||||
public virtual ICollection<ProductionItemModel> ProdItemNav { get; set; } = new List<ProductionItemModel>();
|
||||
|
||||
/// <summary>
|
||||
/// Many-to-many verso associazione con MatReqNav
|
||||
/// </summary>
|
||||
public virtual ICollection<MatReqModel> MatReqNav { get; set; } = new List<MatReqModel>();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Stats
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Stats
|
||||
|
||||
@@ -1,13 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Stock
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Stock
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
|
||||
@@ -1,13 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Stock
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Stock
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
|
||||
@@ -0,0 +1,92 @@
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
|
||||
[Table("buy_order")]
|
||||
public class BuyOrderModel
|
||||
{
|
||||
/// <summary>
|
||||
/// ID del record
|
||||
/// </summary>
|
||||
[Key]
|
||||
public int BuyOrderID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Anno rif Ordine Fornitore
|
||||
/// </summary>
|
||||
public int RefYear { get; set; } = DateTime.Today.Year;
|
||||
|
||||
/// <summary>
|
||||
/// Numero prog Ordine nell'anno (da calcolare)
|
||||
/// </summary>
|
||||
public int RefNum { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Indice revisione
|
||||
/// </summary>
|
||||
public int RefRev { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Codice calcolato Ordine ANNO.NUMERO.REV
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public string BuyOrderCode
|
||||
{
|
||||
get => $"BO.{RefYear:00}.{RefNum:00000}.{RefRev:00}";
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Descrizione generale
|
||||
/// </summary>
|
||||
public string Description { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Fornitore (quandoa ssegnato, altrimenti è quotazione)
|
||||
/// </summary>
|
||||
public int? SupplierID { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Ordine assegnato se ho un supplier definito
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public bool Assigned => SupplierID != null;
|
||||
|
||||
/// <summary>
|
||||
/// DataOra inserimento
|
||||
/// </summary>
|
||||
public DateTime Inserted { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// DataOra ultima modifica
|
||||
/// </summary>
|
||||
public DateTime Modified { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// DataOra richiesta per il completamento dell'ordine di fornitura
|
||||
/// </summary>
|
||||
public DateTime DueDateReq { get; set; } = DateTime.Today.AddDays(30);
|
||||
|
||||
/// <summary>
|
||||
/// note di consegna (opzionali)
|
||||
/// </summary>
|
||||
public string ConsNote { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Enum stato Ordine Acquisto
|
||||
/// </summary>
|
||||
public BuyOrderStates OrderState { get; set; } = BuyOrderStates.Created;
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Supplier
|
||||
/// </summary>
|
||||
[ForeignKey("SupplierID")]
|
||||
public virtual SupplierModel? SupplierNav { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione alle righe Ordine Acquisto
|
||||
/// </summary>
|
||||
public virtual ICollection<BuyOrderRowModel> BuyOrderRowNav { get; set; } = new List<BuyOrderRowModel>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Warehouse;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
|
||||
{
|
||||
|
||||
[Table("buy_order_row_2_mat_req")]
|
||||
public class BuyOrderRow2MatReqModel
|
||||
{
|
||||
public int BuyOrderRowID { get; set; }
|
||||
public int MatReqID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Quantità richiesta
|
||||
/// </summary>
|
||||
public double Qty { get; set; } = 0;
|
||||
|
||||
[ForeignKey("BuyOrderRowID")]
|
||||
public virtual BuyOrderRowModel BuyOrderRowNav { get; set; } = null!;
|
||||
|
||||
[ForeignKey("MatReqID")]
|
||||
public virtual MatReqModel MatReqNav { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,107 @@
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
|
||||
[Table("buy_order_row")]
|
||||
public class BuyOrderRowModel
|
||||
{
|
||||
/// <summary>
|
||||
/// ID del record
|
||||
/// </summary>
|
||||
[Key]
|
||||
public int BuyOrderRowID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// ID Ordine di acquisto di riferimento
|
||||
/// </summary>
|
||||
public int BuyOrderID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Riga Ordine (per ordinamento)
|
||||
/// </summary>
|
||||
public int RowNum { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// ID dell'item richiesto (se disponibile)
|
||||
/// </summary>
|
||||
public int? ItemID { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Classificazione Item
|
||||
/// </summary>
|
||||
public string ClassCode { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Descrizione Item
|
||||
/// </summary>
|
||||
public string DescriptionCode { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Codice Item
|
||||
/// </summary>
|
||||
public string ItemCode { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Quantità articolo TOTALE
|
||||
/// </summary>
|
||||
public double TotQty
|
||||
{
|
||||
get => MatReqNav.Sum(x => x.Qty);
|
||||
}
|
||||
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Quantità articolo TOTALE
|
||||
/// </summary>
|
||||
public double TotQty
|
||||
{
|
||||
get => DictOrderRowDetail.Sum(x => x.Value);
|
||||
}
|
||||
/// <summary>
|
||||
/// Dizionario serializzato di RigheOrdine + Qty
|
||||
/// </summary>
|
||||
public string OrderRowData { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Dizionario escplicito degli OrderRow esplosi rispetto a ItemId delle BOM
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public Dictionary<int, double> DictOrderRowDetail
|
||||
{
|
||||
get
|
||||
{
|
||||
Dictionary<int, double> answ = new();
|
||||
if (!string.IsNullOrEmpty(OrderRowData) && OrderRowData.Count() > 2)
|
||||
{
|
||||
answ = JsonConvert.DeserializeObject<Dictionary<int, double>>(OrderRowData) ?? new();
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
OrderRowData = JsonConvert.SerializeObject(value);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Ordine Acquisto
|
||||
/// </summary>
|
||||
[ForeignKey("BuyOrderID")]
|
||||
public virtual BuyOrderModel? BuyOrderNav { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Item
|
||||
/// </summary>
|
||||
[ForeignKey("ItemID")]
|
||||
public virtual ItemModel? ItemNav { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Many-to-many verso associazione con MatReq
|
||||
/// </summary>
|
||||
public virtual ICollection<BuyOrderRow2MatReqModel> MatReqNav { get; set; } = new List<BuyOrderRow2MatReqModel>();
|
||||
}
|
||||
}
|
||||
+4
-22
@@ -1,18 +1,10 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
|
||||
[Table("item_supplier")]
|
||||
[Table("buy_supplier")]
|
||||
public class SupplierModel
|
||||
{
|
||||
/// <summary>
|
||||
@@ -21,13 +13,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
[Key]
|
||||
public int SupplierID { get; set; }
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Ruolo assocaito da anagrafica esterna
|
||||
/// </summary>
|
||||
public int RoleID { get; set; }
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Denominazione se persona giuridica
|
||||
/// </summary>
|
||||
@@ -48,12 +33,9 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
/// </summary>
|
||||
public string VAT { get; set; } = "";
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Navigazione al ruolo
|
||||
/// Many-to-many with Qualifica Fornitori
|
||||
/// </summary>
|
||||
[ForeignKey("RoleID")]
|
||||
public virtual RoleModel RoleNav { get; set; } = null!;
|
||||
#endif
|
||||
public virtual ICollection<SupplierQualifyModel> QualifNav { get; set; } = new List<SupplierQualifyModel>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
|
||||
{
|
||||
[Table("buy_supplier_qualify")]
|
||||
public class SupplierQualifyModel
|
||||
{
|
||||
public int SupplierID { get; set; }
|
||||
public string CodGroup { get; set; } = "";
|
||||
|
||||
[ForeignKey("SupplierID")]
|
||||
public virtual SupplierModel SupplierNav { get; set; } = null!;
|
||||
|
||||
[ForeignKey("CodGroup")]
|
||||
public virtual ItemGroupModel GroupNav { get; set; } = null!;
|
||||
}
|
||||
}
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
@@ -24,7 +16,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
/// Chiave del counter annuale
|
||||
/// </summary>
|
||||
public string CountName { get; set; } = "";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Valore dell'ultimo contatore staccato
|
||||
/// </summary>
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
@@ -20,7 +17,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
/// Descrizione
|
||||
/// </summary>
|
||||
public string Description { get; set; } = "";
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Numero Item compresi
|
||||
/// </summary>
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
|
||||
@@ -1,12 +1,4 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
{ // <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Task;
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||
{
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
|
||||
@@ -0,0 +1,90 @@
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Warehouse
|
||||
{
|
||||
[Table("warehouse_material_req")]
|
||||
public class MatReqModel
|
||||
{
|
||||
/// <summary>
|
||||
/// ID del record
|
||||
/// </summary>
|
||||
[Key]
|
||||
public int MatReqID { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Order cui è riferito
|
||||
/// </summary>
|
||||
public int? OrderID { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// OrderRow cui è riferito (vince su OrderID)
|
||||
/// </summary>
|
||||
public int? OrderRowID { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// DataOra inserimento
|
||||
/// </summary>
|
||||
public DateTime Inserted { get; set; } = DateTime.Now;
|
||||
|
||||
/// <summary>
|
||||
/// ID dell'item richiesto
|
||||
/// </summary>
|
||||
public int? ItemID { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Quantità richiesta per Item (complessiva)
|
||||
/// </summary>
|
||||
public double TotQty { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
|
||||
/// </summary>
|
||||
public string RawItemData { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Cod gruppo articolo (per selezione omogenea alternative)
|
||||
/// </summary>
|
||||
public string CodGroup { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// CodArticolo (opzionale)
|
||||
/// </summary>
|
||||
public string ItemCode { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Desdcrizione item ordinato
|
||||
/// </summary>
|
||||
public string Description { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Quantità Item finali relativi al fabbisogno
|
||||
/// </summary>
|
||||
public int NumItems { get; set; } = 1;
|
||||
|
||||
/// <summary>
|
||||
/// Indica che è stato processato: generato un ordine di acquisto
|
||||
/// </summary>
|
||||
public bool Processed { get; set; } = false;
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Item Order
|
||||
/// </summary>
|
||||
[ForeignKey("OrderID")]
|
||||
public virtual OrderModel? OrderNav { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Item OrderRow
|
||||
/// </summary>
|
||||
[ForeignKey("OrderRowID")]
|
||||
public virtual OrderRowModel? OrderRowNav { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione Item
|
||||
/// </summary>
|
||||
[ForeignKey("ItemID")]
|
||||
public virtual ItemModel? ItemNav { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Many-to-many verso associazione con BuyOrderRow
|
||||
/// </summary>
|
||||
public virtual ICollection<BuyOrderRow2MatReqModel> BuyOrderRowNav { get; set; } = new List<BuyOrderRow2MatReqModel>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
global using System.ComponentModel.DataAnnotations;
|
||||
global using System.ComponentModel.DataAnnotations.Schema;
|
||||
global using static EgwCoreLib.Lux.Core.Enums;
|
||||
@@ -0,0 +1,146 @@
|
||||
namespace EgwCoreLib.Lux.Data.Domains
|
||||
{
|
||||
public static class BomCalculator
|
||||
{
|
||||
#region Public Methods
|
||||
|
||||
public static List<BomItemDTO> GetBomList(string itemBOM)
|
||||
{
|
||||
List<BomItemDTO> answ = new List<BomItemDTO>();
|
||||
if (!string.IsNullOrEmpty(itemBOM) && itemBOM.Length > 2)
|
||||
{
|
||||
var bomList = JsonConvert.DeserializeObject<List<BomItemDTO>>(itemBOM);
|
||||
if (bomList != null)
|
||||
{
|
||||
answ = bomList;
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Esegue completamento e la validazione dei dati BOM da lista articoli + gruppi,
|
||||
/// validando i dati stessi
|
||||
/// </summary>
|
||||
/// <param name="itemGroupList">Elenco ItemGroup da considerare</param>
|
||||
/// <param name="bomGenList">Item di tipo BOM/BomAlt AMMESSI</param>
|
||||
/// <param name="bomList">Lista BOM ricevuta da validare</param>
|
||||
/// <param name="bomList">Lista BOM precedente da confrontare x scelta alternativi</param>
|
||||
/// <param name="totCost">Costo netto componenti BOM calcolato</param>
|
||||
/// <param name="totPrice">Prezzo complessivo calcolato (con aggiunta marginalità)</param>
|
||||
/// <param name="totItemQty">Numero toale di item dello step BOM</param>
|
||||
/// <param name="numGroupOk">Controllo coerenza calcoli sui gruppi list2upd</param>
|
||||
/// <param name="numItemOk">Controllo coerenza calcoli su num list2upd</param>
|
||||
public static void Validate(
|
||||
List<ItemGroupModel> itemGroupList,
|
||||
List<ItemModel> bomGenList,
|
||||
ref List<BomItemDTO> bomList,
|
||||
List<BomItemDTO>? bomListPrev,
|
||||
ref double totCost,
|
||||
ref double totPrice,
|
||||
ref int totItemQty,
|
||||
ref int numGroupOk,
|
||||
ref int numItemOk)
|
||||
{
|
||||
double margin = 0;
|
||||
// ciclo x ogni elemento della BOM, cercando x gruppo e ExtItemCode
|
||||
foreach (var item in bomList)
|
||||
{
|
||||
// init del margine
|
||||
margin = 0;
|
||||
// verifico item group esistente...
|
||||
if (itemGroupList.Where(x => x.CodGroup == item.ClassCode).Count() > 0)
|
||||
{
|
||||
numGroupOk++;
|
||||
}
|
||||
|
||||
// 2025.09.16: se il prezzo arriva dalla BOM calcolata uso quello...
|
||||
if (item.Price > 0)
|
||||
{
|
||||
// resetto ItemID ma NON il prezzo
|
||||
item.ItemID = 0;
|
||||
// conto l'item
|
||||
numItemOk++;
|
||||
item.PriceEff = item.Price;
|
||||
// dovrei recuperare margine da BOM... da rivedere, x ora cablato 20%...
|
||||
margin = 0.2;
|
||||
}
|
||||
else
|
||||
{
|
||||
/*************************************************
|
||||
* Ricerca costo item:
|
||||
* - se ho un itemID --> cerco record ESATTO e sostituisco descrizioni & co...
|
||||
* - se non ho itemID --> cerco dati di selezione + qtyRange
|
||||
*************************************************/
|
||||
ItemModel? recCost = null;
|
||||
bool selExact = item.ItemID > 0;
|
||||
if (selExact)
|
||||
{
|
||||
recCost = bomGenList
|
||||
.Where(x => x.ItemID == item.ItemID)
|
||||
.FirstOrDefault();
|
||||
}
|
||||
else
|
||||
{
|
||||
recCost = bomGenList
|
||||
.Where(x => x.CodGroup == item.ClassCode
|
||||
&& x.ItemIDParent == 0 // voglio NON sia un record CHILD
|
||||
&& x.ExtItemCode == item.ItemCode
|
||||
&& item.Qty >= x.QtyMin
|
||||
&& item.Qty < x.QtyMax)
|
||||
.OrderByDescending(x => x.Cost)
|
||||
.FirstOrDefault();
|
||||
// 2025.09.24: se ho un elenco item della BOM precedente
|
||||
if (bomListPrev != null && bomListPrev.Count > 0 && recCost != null)
|
||||
{
|
||||
// ...cerco item trovato come PARENT di altri item
|
||||
var listAlt = bomGenList.Where(x => x.ItemIDParent == recCost.ItemID).ToList();
|
||||
|
||||
// che cerco nella nella BOM precedente...
|
||||
var result = listAlt
|
||||
.Join(
|
||||
bomListPrev,
|
||||
l1 => l1.ItemID,
|
||||
l2 => l2.ItemID,
|
||||
(l1, l2) => l1)
|
||||
.ToList();
|
||||
// nel caso ne trovassi solo 1 uso quello al posto del recCost...
|
||||
if (result.Count == 1)
|
||||
{
|
||||
recCost = result.FirstOrDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// se trovato valorizzo!
|
||||
if (recCost != null)
|
||||
{
|
||||
numItemOk++;
|
||||
item.ItemID = recCost.ItemID;
|
||||
//item.PriceEff = recCost.BomCost * (1 + recCost.Margin);
|
||||
item.PriceEff = recCost.Cost;
|
||||
// se selezione esatta sovrascrivo altri valori
|
||||
if (selExact)
|
||||
{
|
||||
item.ItemCode = recCost.ExtItemCode;
|
||||
//item.DescriptionCode = recCost.Name;
|
||||
}
|
||||
margin = recCost.Margin;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.ItemID = 0;
|
||||
item.PriceEff = 0;
|
||||
}
|
||||
}
|
||||
// ...e aggiorno totale
|
||||
totCost += item.TotalCost;
|
||||
// e prezzo totale compreso margine
|
||||
totPrice += item.TotalCost * (1 + margin);
|
||||
totItemQty += item.ItemQty;
|
||||
}
|
||||
}
|
||||
|
||||
#endregion Public Methods
|
||||
}
|
||||
}
|
||||
@@ -48,7 +48,6 @@
|
||||
<PackageReference Include="NLog" />
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" />
|
||||
<PackageReference Include="RestSharp" />
|
||||
<PackageReference Include="Scrutor" />
|
||||
<PackageReference Include="StackExchange.Redis" />
|
||||
</ItemGroup>
|
||||
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
global using EgwCoreLib.Lux.Core.Dto;
|
||||
global using EgwCoreLib.Lux.Core.RestPayload;
|
||||
global using EgwCoreLib.Lux.Data.Data.DbModel.Admin;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Catalog;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Config;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Job;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Production;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Report;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Sales;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Stats;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Stock;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Supplier;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
global using EgwCoreLib.Lux.Data.DbModel.Warehouse;
|
||||
global using Microsoft.EntityFrameworkCore;
|
||||
global using Microsoft.Extensions.Configuration;
|
||||
global using Newtonsoft.Json;
|
||||
global using NLog;
|
||||
+4111
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,251 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class EnableSellItemNullable : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "SellingItemID",
|
||||
table: "sales_order_row",
|
||||
type: "int",
|
||||
nullable: true,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int");
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "SellingItemID",
|
||||
table: "sales_offer_row",
|
||||
type: "int",
|
||||
nullable: true,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2026) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2044) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2051) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2057) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 5,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 6,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 7,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 8,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 9,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 10,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "SellingItemID",
|
||||
table: "sales_order_row",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
defaultValue: 0,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.AlterColumn<int>(
|
||||
name: "SellingItemID",
|
||||
table: "sales_offer_row",
|
||||
type: "int",
|
||||
nullable: false,
|
||||
defaultValue: 0,
|
||||
oldClrType: typeof(int),
|
||||
oldType: "int",
|
||||
oldNullable: true);
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1262) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1276) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1282) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1289) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 5,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 6,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 7,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 8,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 9,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 10,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
}
|
||||
}
|
||||
}
|
||||
+4129
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,237 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class OffRow_AddPendingSel : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "DictPendPresRaw",
|
||||
table: "sales_order_row",
|
||||
type: "longtext",
|
||||
nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.AddColumn<string>(
|
||||
name: "DictPendPresRaw",
|
||||
table: "sales_offer_row",
|
||||
type: "longtext",
|
||||
nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4789) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4807) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4813) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4820) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 5,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 6,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 7,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 8,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 9,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 10,
|
||||
columns: new[] { "DictPendPresRaw", "Inserted", "Modified" },
|
||||
values: new object[] { "", new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropColumn(
|
||||
name: "DictPendPresRaw",
|
||||
table: "sales_order_row");
|
||||
|
||||
migrationBuilder.DropColumn(
|
||||
name: "DictPendPresRaw",
|
||||
table: "sales_offer_row");
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2026) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2044) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2051) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2057) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 5,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 6,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 7,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 8,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 9,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 10,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,385 @@
|
||||
using System;
|
||||
using Microsoft.EntityFrameworkCore.Metadata;
|
||||
using Microsoft.EntityFrameworkCore.Migrations;
|
||||
|
||||
#nullable disable
|
||||
|
||||
#pragma warning disable CA1814 // Prefer jagged arrays over multidimensional
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.Migrations
|
||||
{
|
||||
/// <inheritdoc />
|
||||
public partial class AddBuyOrder : Migration
|
||||
{
|
||||
/// <inheritdoc />
|
||||
protected override void Up(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "item_supplier");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "buy_supplier",
|
||||
columns: table => new
|
||||
{
|
||||
SupplierID = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
||||
CompanyName = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
FirstName = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
LastName = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
VAT = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_buy_supplier", x => x.SupplierID);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "buy_order",
|
||||
columns: table => new
|
||||
{
|
||||
BuyOrderID = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
||||
RefYear = table.Column<int>(type: "int", nullable: false),
|
||||
RefNum = table.Column<int>(type: "int", nullable: false),
|
||||
RefRev = table.Column<int>(type: "int", nullable: false),
|
||||
Description = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
SupplierID = table.Column<int>(type: "int", nullable: true),
|
||||
Inserted = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||
Modified = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||
DueDateReq = table.Column<DateTime>(type: "datetime(6)", nullable: false),
|
||||
ConsNote = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
OrderState = table.Column<int>(type: "int", nullable: false)
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_buy_order", x => x.BuyOrderID);
|
||||
table.ForeignKey(
|
||||
name: "FK_buy_order_buy_supplier_SupplierID",
|
||||
column: x => x.SupplierID,
|
||||
principalTable: "buy_supplier",
|
||||
principalColumn: "SupplierID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "buy_order_row",
|
||||
columns: table => new
|
||||
{
|
||||
BuyOrderRowID = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
||||
BuyOrderID = table.Column<int>(type: "int", nullable: false),
|
||||
OrderID = table.Column<int>(type: "int", nullable: false),
|
||||
ItemID = table.Column<int>(type: "int", nullable: false),
|
||||
ClassCode = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
DescriptionCode = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
ItemCode = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
OrderRowData = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_buy_order_row", x => x.BuyOrderRowID);
|
||||
table.ForeignKey(
|
||||
name: "FK_buy_order_row_buy_order_BuyOrderID",
|
||||
column: x => x.BuyOrderID,
|
||||
principalTable: "buy_order",
|
||||
principalColumn: "BuyOrderID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
table.ForeignKey(
|
||||
name: "FK_buy_order_row_item_item_ItemID",
|
||||
column: x => x.ItemID,
|
||||
principalTable: "item_item",
|
||||
principalColumn: "ItemID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
table.ForeignKey(
|
||||
name: "FK_buy_order_row_sales_order_OrderID",
|
||||
column: x => x.OrderID,
|
||||
principalTable: "sales_order",
|
||||
principalColumn: "OrderID",
|
||||
onDelete: ReferentialAction.Restrict);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "buy_supplier",
|
||||
columns: new[] { "SupplierID", "CompanyName", "FirstName", "LastName", "VAT" },
|
||||
values: new object[,]
|
||||
{
|
||||
{ 1, "Company One", "Supplier A", "Egalware", "7294857103879254" },
|
||||
{ 2, "Company Two", "Supplier B", "User", "7294857103879254" },
|
||||
{ 3, "Company Two", "Supplier C", "User Test", "7294857103879254" }
|
||||
});
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 6, 13, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 11, 22, 33, 792, DateTimeKind.Local).AddTicks(5680) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 6, 13, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 11, 22, 33, 792, DateTimeKind.Local).AddTicks(5692) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 6, 13, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 11, 22, 33, 792, DateTimeKind.Local).AddTicks(5699) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 6, 13, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 5, 14, 11, 22, 33, 792, DateTimeKind.Local).AddTicks(5705) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 5,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 6,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 7,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 8,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 9,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 10,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 14, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_buy_order_SupplierID",
|
||||
table: "buy_order",
|
||||
column: "SupplierID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_buy_order_row_BuyOrderID",
|
||||
table: "buy_order_row",
|
||||
column: "BuyOrderID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_buy_order_row_ItemID",
|
||||
table: "buy_order_row",
|
||||
column: "ItemID");
|
||||
|
||||
migrationBuilder.CreateIndex(
|
||||
name: "IX_buy_order_row_OrderID",
|
||||
table: "buy_order_row",
|
||||
column: "OrderID");
|
||||
}
|
||||
|
||||
/// <inheritdoc />
|
||||
protected override void Down(MigrationBuilder migrationBuilder)
|
||||
{
|
||||
migrationBuilder.DropTable(
|
||||
name: "buy_order_row");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "buy_order");
|
||||
|
||||
migrationBuilder.DropTable(
|
||||
name: "buy_supplier");
|
||||
|
||||
migrationBuilder.CreateTable(
|
||||
name: "item_supplier",
|
||||
columns: table => new
|
||||
{
|
||||
SupplierID = table.Column<int>(type: "int", nullable: false)
|
||||
.Annotation("MySql:ValueGenerationStrategy", MySqlValueGenerationStrategy.IdentityColumn),
|
||||
CompanyName = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
FirstName = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
LastName = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4"),
|
||||
VAT = table.Column<string>(type: "longtext", nullable: false)
|
||||
.Annotation("MySql:CharSet", "utf8mb4")
|
||||
},
|
||||
constraints: table =>
|
||||
{
|
||||
table.PrimaryKey("PK_item_supplier", x => x.SupplierID);
|
||||
})
|
||||
.Annotation("MySql:CharSet", "utf8mb4");
|
||||
|
||||
migrationBuilder.InsertData(
|
||||
table: "item_supplier",
|
||||
columns: new[] { "SupplierID", "CompanyName", "FirstName", "LastName", "VAT" },
|
||||
values: new object[,]
|
||||
{
|
||||
{ 1, "Company One", "Supplier A", "Egalware", "7294857103879254" },
|
||||
{ 2, "Company Two", "Supplier B", "User", "7294857103879254" },
|
||||
{ 3, "Company Two", "Supplier C", "User Test", "7294857103879254" }
|
||||
});
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4789) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4807) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4813) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer",
|
||||
keyColumn: "OfferID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
|
||||
values: new object[] { new DateTime(2026, 5, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 26, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 27, 17, 9, 50, 585, DateTimeKind.Local).AddTicks(4820) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 1,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 2,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 3,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 4,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 5,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 6,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 7,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 8,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 9,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
|
||||
migrationBuilder.UpdateData(
|
||||
table: "sales_offer_row",
|
||||
keyColumn: "OfferRowID",
|
||||
keyValue: 10,
|
||||
columns: new[] { "Inserted", "Modified" },
|
||||
values: new object[] { new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 27, 0, 0, 0, 0, DateTimeKind.Local) });
|
||||
}
|
||||
}
|
||||
}
|
||||
+4291
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user