Compare commits
307 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e7e32810d3 | |||
| 43ebea0eb9 | |||
| 99545e210a | |||
| afb912908c | |||
| ec9eb5e0db | |||
| c6ade34567 | |||
| afbb1b29cb | |||
| 7250dfd00d | |||
| 7b8e4e1b58 | |||
| 9fd74e6e82 | |||
| c21d0faad5 | |||
| 8e2bebbdf2 | |||
| 1ba9414b21 | |||
| 69998ac20e | |||
| 3251035b47 | |||
| 747b7dba50 | |||
| b95d3f461a | |||
| d6880e681f | |||
| 19b3543985 | |||
| 36ec472679 | |||
| e7a93a01cb | |||
| 80dd3f78e7 | |||
| 2f953aef74 | |||
| c367dec37e | |||
| e7147798d0 | |||
| 08b0f99620 | |||
| 532113a738 | |||
| 6674fe5429 | |||
| 79e5d4bd9d | |||
| bebaca6ef5 | |||
| 463eb23a67 | |||
| 314c18551e | |||
| 153ead851b | |||
| 3b7dab23bf | |||
| f0fcf5cafe | |||
| 5735efcdef | |||
| 13bc423cb4 | |||
| 935050d618 | |||
| 2943c4e01a | |||
| 077a9f3627 | |||
| eabc87104e | |||
| a017277711 | |||
| 9fa99793fa | |||
| e209835dce | |||
| 82a79256d4 | |||
| 9464cff197 | |||
| fb50fb26de | |||
| 19a01d258f | |||
| 7e65c8a406 | |||
| 7f957a8e05 | |||
| 17719cd668 | |||
| 822a46ab4a | |||
| 380533a4be | |||
| 51e8251953 | |||
| 6550d9cf93 | |||
| 25eb1e436f | |||
| d05465f9f3 | |||
| ef7e3552cd | |||
| fce26a59f8 | |||
| b5d7482c86 | |||
| db71237786 | |||
| da814bc858 | |||
| c67c40d81b | |||
| ea16fd59c9 | |||
| 01b7c2c7de | |||
| 91133789e7 | |||
| 7a4e50f2ad | |||
| 5c8adc9eb8 | |||
| 745c11d537 | |||
| b3c4022864 | |||
| dd36901d88 | |||
| 1f8418e724 | |||
| b3d08f012d | |||
| babbd01c52 | |||
| 23ad75e11d | |||
| a2199d4fc6 | |||
| 177504acf4 | |||
| 7c4c4432dc | |||
| 8af969a999 | |||
| 1ce1f58a4c | |||
| dfea26610d | |||
| a13563b603 | |||
| 93dea86d85 | |||
| bb358790ea | |||
| a0ab1ba5f6 | |||
| 07069ce151 | |||
| 8183de796c | |||
| 560c56353f | |||
| 652d1dee4a | |||
| d521c44646 | |||
| f3537821b1 | |||
| 4d79061eda | |||
| e621e0a74e | |||
| 9113d9f279 | |||
| 8359512015 | |||
| 1c735ea3ec | |||
| 1d43e05045 | |||
| 0ad786bc1c | |||
| 54257db9a4 | |||
| 339d3a4a85 | |||
| 5cb023e142 | |||
| 6ecbaa58ac | |||
| 857bbbcb53 | |||
| 2da9ad46ae | |||
| 9667ab1a82 | |||
| 0759cbd2f6 | |||
| 7fa3b47271 | |||
| ed74ccb839 | |||
| 38f2c73c14 | |||
| e3a5683029 | |||
| 1013463c3c | |||
| d9513297a7 | |||
| 4aac4ca825 | |||
| b3376e290e | |||
| 44a17bf44c | |||
| 828b34b487 | |||
| 891af9c1bb | |||
| 5092a6f360 | |||
| 2b4cad4234 | |||
| 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 |
+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:
|
||||
|
||||
@@ -0,0 +1,81 @@
|
||||
# LUX - Agent Instructions
|
||||
|
||||
.NET 8 MES (Manufacturing Execution System) for window/door/casing production.
|
||||
|
||||
## Solutions & Projects
|
||||
|
||||
Two solutions:
|
||||
|
||||
**`Lux.All.sln`** - Main application (build this):
|
||||
- `Lux.UI` - Blazor Server (identity-secured app), entry point
|
||||
- `Lux.UI.Client` - Blazor WASM (shared client lib)
|
||||
- `Lux.API` - REST API (JWD-to-SVG/Engine calls via Redis)
|
||||
- `EgwCoreLib.Lux.Core` - Core domain/business library (NuGet package)
|
||||
- `EgwCoreLib.Lux.Data` - EF Core data layer + migrations (NuGet package)
|
||||
|
||||
**`Lux.Report.sln`** - Reporting:
|
||||
- `Lux.Report.Server` - Blazor Server report host
|
||||
- `Lux.Report.Manager` - Blazor Server report manager
|
||||
- `Lux.Report.Data` - Report domain + EF models
|
||||
|
||||
## Commands
|
||||
|
||||
```
|
||||
dotnet restore Lux.All.sln
|
||||
dotnet build Lux.All.sln
|
||||
dotnet run --project Lux.UI # run main app (development)
|
||||
dotnet run --project Lux.API # run API
|
||||
```
|
||||
|
||||
No test project exists. `TestDevExpress/` is a Blazor demo app, not unit tests.
|
||||
|
||||
Central package management: `Directory.Packages.props` controls all versions. Edit there, not in individual `.csproj` files.
|
||||
|
||||
## Architecture notes
|
||||
|
||||
- `Lux.UI` depends on both `EgwCoreLib.Lux.Core` and `EgwCoreLib.Lux.Data`
|
||||
- `Lux.API` depends on Core + Data (no UI layer)
|
||||
- `Lux.UI.Client` (WASM) shares `Components/` Blazor components with `Lux.UI`
|
||||
- Data layer uses **both** SQL Server (Identità via `ApplicationDbContext`) e MySQL (Pomelo, via `DataLayerContext`)
|
||||
- Redis is used for Engine communication channels and caching
|
||||
- All projects use `<Nullable>enable</Nullable>` and `<ImplicitUsings>enable</ImplicitUsings>`
|
||||
- `.pubxml` IIS publish profiles are version-controlled under `Properties/PublishProfiles/`
|
||||
- Every project has a `post-build.ps1` that runs version stamping
|
||||
|
||||
## Migrations
|
||||
|
||||
- Identity migrations: `Lux.UI/Data/Migrations/` (SQL Server, `ApplicationDbContext`)
|
||||
- Domain migrations: `EgwCoreLib.Lux.Data/Migrations/` (MySQL, `DataLayerContext`)
|
||||
|
||||
## CI/CD
|
||||
|
||||
GitLab CI in `.gitlab-ci.yml`. NuGet sources must be fixed before restore:
|
||||
```
|
||||
dotnet nuget remove source "Steamware Nexus Proxy"
|
||||
dotnet nuget remove source "nexus-proxy-v3"
|
||||
dotnet nuget remove source "nexus-hosted"
|
||||
dotnet nuget add source https://nexus.steamware.net/repository/nuget-proxy-v3/index.json -n nexus-proxy-v3 -u nugetUser -p $NEXUS_PASSWD --store-password-in-clear-text
|
||||
dotnet nuget add source https://nexus.steamware.net/repository/nuget-hosted/ -n nexus-hosted -u nugetUser -p $NEXUS_PASSWD --store-password-in-clear-text
|
||||
```
|
||||
|
||||
## Frameworks
|
||||
|
||||
- Radzen.Blazor (UI components)
|
||||
- DevExpress (Blazor reporting, used in Report projects + TestDevExpress)
|
||||
- Newtonsoft.Json, Swashbuckle, NLog, OpenTelemetry (API + UX)
|
||||
- Scrutor (DI extensions)
|
||||
- **ZiggyCreatures.FusionCache** (L1 memory + L2 Redis caching, used in VocabolarioService)
|
||||
|
||||
## VocabolarioService (translation/i18n)
|
||||
|
||||
Located in `EgwCoreLib.Lux.Data\Services\Admin\`. Follows **Repository + Service** pattern:
|
||||
- `VocabolarioRepository` (EF Core access via `IDbContextFactory`)
|
||||
- `VocabolarioService` (Cache orchestration + domain logic)
|
||||
- `VocabModel` / `LinguaModel` (EF Core entities, table: `admin_vocabolario`, `admin_lingua`)
|
||||
|
||||
**FusionCache** (`GetOrFetchAsync` helper): L1 Memory (1/3 of total duration) + L2 Redis (fail-safe). Tags
|
||||
used for partial invalidation.
|
||||
- `GetAll` e `GetById` usano 10 min expiration
|
||||
- `GetByLang` e `ListLingue` usano 5 min expiration
|
||||
- `Traduci()` usa 5 min L1 + 15 min fail-safe
|
||||
- CRUD operations (Clone/Delete/Upsert/UpsertMany) invalidano la cache Fusion con `_cache.ClearAsync()`
|
||||
+23
-12
@@ -8,11 +8,18 @@
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
</PackageVersion>
|
||||
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.3.2010" />
|
||||
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.3.2010" />
|
||||
<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.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.23" />
|
||||
<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.8.1211" />
|
||||
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.8.1211" />
|
||||
<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.2606.2416" />
|
||||
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2606.2416" />
|
||||
<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" />
|
||||
@@ -26,19 +33,20 @@
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.23" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.23" />
|
||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.23" />
|
||||
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="8.0.27" />
|
||||
<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" />
|
||||
@@ -46,5 +54,8 @@
|
||||
<PackageVersion Include="Scrutor" Version="7.0.0" />
|
||||
<PackageVersion Include="StackExchange.Redis" Version="2.10.1" />
|
||||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.6.2" />
|
||||
<PackageVersion Include="ZiggyCreatures.FusionCache" Version="2.6.0" />
|
||||
<PackageVersion Include="ZiggyCreatures.FusionCache.Backplane.StackExchangeRedis" Version="2.6.0" />
|
||||
<PackageVersion Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" Version="2.6.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -1,8 +1,4 @@
|
||||
|
||||
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
namespace EgwCoreLib.Lux.Core
|
||||
{
|
||||
public static class CloneExtensions
|
||||
{
|
||||
|
||||
@@ -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; } = "";
|
||||
}
|
||||
}
|
||||
@@ -24,6 +24,8 @@
|
||||
<PackageReference Include="Egw.Lux.WebWindow.Base" />
|
||||
<PackageReference Include="Egw.Lux.WebWindowComplex" />
|
||||
<PackageReference Include="Egw.Window.Data" />
|
||||
<PackageReference Include="EgwCoreLib.Razor" />
|
||||
<PackageReference Include="EgwCoreLib.Utils" />
|
||||
<PackageReference Include="EgwMultiEngineManager.Data" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@@ -162,6 +162,9 @@
|
||||
Lost
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Status ordini cliente
|
||||
/// </summary>
|
||||
public enum OrderStates
|
||||
{
|
||||
/// <summary>
|
||||
@@ -210,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>
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
|
||||
public string SearchVal { get; set; } = "";
|
||||
public string SelCodGroup { get; set; } = "";
|
||||
public EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS Envir { get; set; } = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.NULL;
|
||||
public EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS Envir { get; set; } = EgwMultiEngineManager.Data.Constants.EXECENVIRONMENTS.WINDOW;
|
||||
public Enums.ItemClassType SelType { get; set; } = Enums.ItemClassType.ND;
|
||||
public Enums.ItemSourceType SourceType { get; set; } = Enums.ItemSourceType.ND;
|
||||
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
public int GroupIdx { get; set; } = 0;
|
||||
|
||||
public int BarLenght { get; set; } = 10000;
|
||||
public Dictionary<string, double> MachineBalance { get; set; } = new Dictionary<string, double>();
|
||||
public List<string> TagList { get; set; } = new List<string>();
|
||||
|
||||
@@ -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
|
||||
@@ -19,6 +12,11 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
/// </summary>
|
||||
public string Name { get; set; } = "";
|
||||
|
||||
/// <summary>
|
||||
/// Tempo Totale
|
||||
/// </summary>
|
||||
public decimal Time { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Numero di parts totali
|
||||
/// </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.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)
|
||||
@@ -27,12 +19,13 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
machineCalcResults = JsonConvert.DeserializeObject<List<MachineCalcResultDTO>>(rawData) ?? new List<MachineCalcResultDTO>();
|
||||
if (!string.IsNullOrEmpty(rawData) && rawData.Count() > 2)
|
||||
{
|
||||
// calcolo "esito sinteico" della lavorabilità (NESSUNA part UnHealthy su ogni macchina)
|
||||
// calcolo "esito sinteitco" della lavorabilità (NESSUNA part UnHealthy su ogni macchina)
|
||||
workable = machineCalcResults.Sum(x => x.NumPartsKo) == 0;
|
||||
// lista completa...
|
||||
// cerco la prima macchina (in caso multi macchina), da valutare se fosse suddiviso
|
||||
var firstMachine = machineCalcResults.FirstOrDefault();
|
||||
if (firstMachine != null)
|
||||
{
|
||||
// lista completa...
|
||||
listComplete = firstMachine.PartList.Select(x => x.Tag).ToList();
|
||||
// pezzi lavorabili
|
||||
listWorkable = MachineCalc.Utils.IntersectTags(machineCalcResults, p => p.CalcResult == Enums.PartVerificationResult.MACHINABLE).ToList();
|
||||
@@ -45,6 +38,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
numKo = listUnWorkable.Count();
|
||||
numOk = listWorkable.Count();
|
||||
numOkVin = listVincolated.Count();
|
||||
time = firstMachine.Time;
|
||||
// se non ok verifico SE ci siano part unhealty su OGNI macchina (altrimenti è cmq lavorabile
|
||||
if (!workable)
|
||||
{
|
||||
@@ -151,7 +145,23 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
/// </summary>
|
||||
public decimal TotMaxTime
|
||||
{
|
||||
get => LoadDetail != null ? LoadDetail.Max(x => x.MaxTime) : 0;
|
||||
get
|
||||
{
|
||||
decimal ans = 0;
|
||||
// eventualmente decisione sul tipo di timing con una variabile esplicita (bool)?
|
||||
if (time > 0)
|
||||
{
|
||||
ans = time;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (LoadDetail != null && LoadDetail.Count > 0)
|
||||
ans = LoadDetail.Sum(x => x.MaxTime);
|
||||
else
|
||||
ans = 0;
|
||||
}
|
||||
return ans;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -185,6 +195,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
||||
private int numKo = 0;
|
||||
private int numOk = 0;
|
||||
private int numOkVin = 0;
|
||||
private decimal time = 0;
|
||||
private string uID = "";
|
||||
private bool workable = 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.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
|
||||
{
|
||||
|
||||
@@ -1,16 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Catalog;
|
||||
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.Job;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using NLog;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Admin;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
{
|
||||
@@ -57,7 +45,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; }
|
||||
@@ -86,6 +81,9 @@ namespace EgwCoreLib.Lux.Data
|
||||
public virtual DbSet<TemplateModel> DbSetTemplate { get; set; }
|
||||
public virtual DbSet<TemplateRowModel> DbSetTemplateRow { get; set; }
|
||||
|
||||
public virtual DbSet<LinguaModel> DbSetLingua { get; set; }
|
||||
public virtual DbSet<VocabolarioModel> DbSetVocabolario { get; set; }
|
||||
|
||||
|
||||
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
|
||||
|
||||
@@ -137,8 +135,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)
|
||||
@@ -152,6 +157,10 @@ namespace EgwCoreLib.Lux.Data
|
||||
.HasForeignKey(x => x.ProdODLID)
|
||||
.OnDelete(DeleteBehavior.Restrict);
|
||||
|
||||
|
||||
modelBuilder.Entity<VocabolarioModel>()
|
||||
.HasKey(jst => new { jst.Lingua, jst.Lemma });
|
||||
|
||||
// gestione dati DTX calcolati nel DB
|
||||
#if false
|
||||
modelBuilder.Entity<ProductionItemModel>()
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
using EgwCoreLib.Lux.Data.Repository.Config;
|
||||
using EgwCoreLib.Lux.Data.Repository.Cost;
|
||||
using EgwCoreLib.Lux.Data.Repository.Items;
|
||||
using EgwCoreLib.Lux.Data.Repository.Job;
|
||||
using EgwCoreLib.Lux.Data.Repository.Production;
|
||||
using EgwCoreLib.Lux.Data.Repository.Sales;
|
||||
using EgwCoreLib.Lux.Data.Repository.Stats;
|
||||
using EgwCoreLib.Lux.Data.Repository.Utils;
|
||||
using EgwCoreLib.Lux.Data.Repository.Admin;
|
||||
using EgwCoreLib.Lux.Data.Repository.Report;
|
||||
using EgwCoreLib.Lux.Data.Repository.Supplier;
|
||||
using EgwCoreLib.Lux.Data.Services.Admin;
|
||||
using EgwCoreLib.Lux.Data.Services.Catalog;
|
||||
using EgwCoreLib.Lux.Data.Services.Config;
|
||||
using EgwCoreLib.Lux.Data.Services.Cost;
|
||||
using EgwCoreLib.Lux.Data.Services.General;
|
||||
@@ -13,10 +10,11 @@ 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.Stats;
|
||||
using EgwCoreLib.Lux.Data.Services.Supplier;
|
||||
using EgwCoreLib.Lux.Data.Services.Utils;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using EgwCoreLib.Lux.Data.Services.Warehouse;
|
||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data
|
||||
@@ -32,9 +30,11 @@ namespace EgwCoreLib.Lux.Data
|
||||
// servizi preliminari
|
||||
//services.TryAddSingleton<IConnectionMultiplexer>(redisConn);
|
||||
services.TryAddSingleton<IRedisService, RedisService>();
|
||||
services.TryAddSingleton<RedisSubscriptionManager>();
|
||||
services.TryAddSingleton<IRedisSubscriptionManager, RedisSubscriptionManager>();
|
||||
services.TryAddSingleton<IVocabolarioRepository, VocabolarioRepository>();
|
||||
|
||||
// Repository Scoped
|
||||
services.TryAddScoped<IBuyOrderRepository, BuyOrderRepository>();
|
||||
services.TryAddScoped<IConfGlassRepository, ConfGlassRepository>();
|
||||
services.TryAddScoped<IConfProfileRepository, ConfProfileRepository>();
|
||||
services.TryAddScoped<IConfWoodRepository, ConfWoodRepository>();
|
||||
@@ -48,6 +48,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
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>();
|
||||
@@ -59,6 +60,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
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>();
|
||||
@@ -67,6 +69,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
services.TryAddScoped<ITemplateRowRepository, TemplateRowRepository>();
|
||||
|
||||
// Servizi Scoped
|
||||
services.TryAddScoped<IBuyOrderService, BuyOrderService>();
|
||||
services.TryAddScoped<IConfGlassService, ConfGlassService>();
|
||||
services.TryAddScoped<IConfProfileService, ConfProfileService>();
|
||||
services.TryAddScoped<IConfWoodService, ConfWoodService>();
|
||||
@@ -80,6 +83,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
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>();
|
||||
@@ -91,6 +95,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
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>();
|
||||
@@ -98,6 +103,9 @@ namespace EgwCoreLib.Lux.Data
|
||||
services.TryAddScoped<ITemplateService, TemplateService>();
|
||||
services.TryAddScoped<ITemplateRowService, TemplateRowService>();
|
||||
|
||||
// scoped user services
|
||||
services.TryAddScoped<IMessageService, MessageService>();
|
||||
|
||||
// Facade / DataLayerService
|
||||
services.TryAddScoped<IDataLayerServices, DataLayerServices>();
|
||||
services.TryAddScoped<ICalcRuidService, CalcRuidService>();
|
||||
@@ -110,6 +118,7 @@ namespace EgwCoreLib.Lux.Data
|
||||
services.TryAddSingleton<ICalcRequestService, CalcRequestService>();
|
||||
services.TryAddSingleton<IFileService, FileService>();
|
||||
services.TryAddSingleton<IProdService, ProdService>();
|
||||
services.TryAddSingleton<IVocabolarioService, VocabolarioService>();
|
||||
//services.TryAddSingleton<CalcRequestService>();
|
||||
|
||||
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Admin
|
||||
{
|
||||
[Table("admin_lingua")]
|
||||
public partial class LinguaModel
|
||||
{
|
||||
#region Public Properties
|
||||
|
||||
[Key]
|
||||
public string Lingua { get; set; } = "ND";
|
||||
public string FlagUrl { get; set; } = "";
|
||||
public string Note { get; set; } = "";
|
||||
|
||||
#endregion Public Properties
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Admin
|
||||
{
|
||||
[Table("admin_vocabolario")]
|
||||
public partial class VocabolarioModel
|
||||
{
|
||||
|
||||
public string Lingua { get; set; } = "ND";
|
||||
public string Lemma { get; set; } = "";
|
||||
public string Traduzione { get; set; } = "";
|
||||
|
||||
[ForeignKey("Lingua")]
|
||||
public virtual LinguaModel LinguaNav { get; set; } = null!;
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,8 +1,4 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using static EgwCoreLib.Lux.Core.Enums;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
||||
{
|
||||
/// <summary>
|
||||
/// Classe dei template di oggetti gestiti
|
||||
|
||||
@@ -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.Catalog
|
||||
@@ -49,15 +44,14 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
||||
[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.Catalog
|
||||
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.Catalog
|
||||
}
|
||||
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.Catalog
|
||||
/// </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.Catalog
|
||||
[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.Job;
|
||||
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.Job;
|
||||
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
|
||||
@@ -138,14 +175,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||
[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}";
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
// <Auto-Generated>
|
||||
// <Auto-Generated>
|
||||
// This is here so CodeMaid doesn't reorganize this document
|
||||
// </Auto-Generated>
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
|
||||
@@ -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.Job
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
/// <summary>
|
||||
/// Definizione driver di calcolo dall'Engine x la stima del CostDriver equivalente tempi/costi
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
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.Job
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Job;
|
||||
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.Job
|
||||
|
||||
@@ -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.Job
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
[Table("task_job_step_tag")]
|
||||
public class JobStepTagModel
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
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.Job
|
||||
|
||||
@@ -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.Job
|
||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||
{
|
||||
[Table("task_job_task_tag")]
|
||||
public class JobTaskTagModel
|
||||
|
||||
@@ -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.Job
|
||||
|
||||
@@ -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
|
||||
{
|
||||
@@ -79,9 +74,29 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||
|
||||
/// <summary>
|
||||
/// Num parts complessivamente incluse
|
||||
/// - se BarQty = 0 --> MAX
|
||||
/// - se BarQty > 0 --> SUM
|
||||
/// </summary>
|
||||
[NotMapped]
|
||||
public int NumParts => WorkGroupList?.Sum(x => x.Value.NumParts) ?? 0;
|
||||
public int NumParts
|
||||
{
|
||||
get
|
||||
{
|
||||
int answ = 0;
|
||||
if (WorkGroupList != null && WorkGroupList.Count > 0)
|
||||
{
|
||||
if (WorkGroupList?.FirstOrDefault().Value.BarQty > 0)
|
||||
{
|
||||
answ = WorkGroupList?.Sum(x => x.Value.NumParts) ?? 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
answ = WorkGroupList?.Max(x => x.Value.NumParts) ?? 0;
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Tempo stimato complessivo
|
||||
|
||||
@@ -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,15 +1,5 @@
|
||||
using EgwCoreLib.Lux.Core.Generic;
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Job;
|
||||
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
|
||||
@@ -48,6 +40,34 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public string VAT { get; set; } = "";
|
||||
|
||||
[NotMapped]
|
||||
public bool HasChildren
|
||||
{
|
||||
get => OfferNav.Any();
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public int NumOffers
|
||||
{
|
||||
get => OfferNav.Count();
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public int NumOrders
|
||||
{
|
||||
get => OrderNav.Count();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione alle Offerte
|
||||
/// </summary>
|
||||
public virtual ICollection<OfferModel> OfferNav { get; set; } = new List<OfferModel>();
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione agli Ordini
|
||||
/// </summary>
|
||||
public virtual ICollection<OrderModel> OrderNav { get; set; } = new List<OrderModel>();
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Navigazione al ruolo
|
||||
|
||||
@@ -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
|
||||
@@ -48,6 +40,34 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// </summary>
|
||||
public string VAT { get; set; } = "";
|
||||
|
||||
[NotMapped]
|
||||
public bool HasChildren
|
||||
{
|
||||
get => OfferNav.Any();
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public int NumOffers
|
||||
{
|
||||
get => OfferNav.Count();
|
||||
}
|
||||
|
||||
[NotMapped]
|
||||
public int NumOrders
|
||||
{
|
||||
get => OrderNav.Count();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione alle Offerte
|
||||
/// </summary>
|
||||
public virtual ICollection<OfferModel> OfferNav { get; set; } = new List<OfferModel>();
|
||||
|
||||
/// <summary>
|
||||
/// Navigazione agli Ordini
|
||||
/// </summary>
|
||||
public virtual ICollection<OrderModel> OrderNav { get; set; } = new List<OrderModel>();
|
||||
|
||||
#if false
|
||||
/// <summary>
|
||||
/// Navigazione al ruolo
|
||||
|
||||
@@ -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,10 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Catalog;
|
||||
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
|
||||
@@ -52,6 +46,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
/// ID dell'articolo di vendita offerto
|
||||
/// </summary>
|
||||
public int? SellingItemID { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Definisce se sia calcolabile, dato il tipo SellingItem
|
||||
/// </summary>
|
||||
@@ -72,6 +67,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
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>
|
||||
/// Tipo immagine da visualizzare
|
||||
/// </summary>
|
||||
@@ -99,13 +103,36 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
}
|
||||
else if (SellingItemID > 0)
|
||||
{
|
||||
answ = SellingItemModel.ImgUrl(SellingItemID ?? 0);
|
||||
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>
|
||||
@@ -292,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,11 +1,4 @@
|
||||
using EgwCoreLib.Lux.Data.DbModel.Catalog;
|
||||
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
|
||||
@@ -61,7 +54,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||
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;
|
||||
|
||||
@@ -153,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>
|
||||
@@ -190,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 ?? 0);
|
||||
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>
|
||||
@@ -229,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>
|
||||
@@ -274,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>
|
||||
@@ -318,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>
|
||||
@@ -340,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.Job;
|
||||
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;
|
||||
@@ -1,8 +1,4 @@
|
||||
using EgwCoreLib.Lux.Core.RestPayload;
|
||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace EgwCoreLib.Lux.Data.Domains
|
||||
namespace EgwCoreLib.Lux.Data.Domains
|
||||
{
|
||||
public static class BomCalculator
|
||||
{
|
||||
|
||||
@@ -49,12 +49,14 @@
|
||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" />
|
||||
<PackageReference Include="RestSharp" />
|
||||
<PackageReference Include="StackExchange.Redis" />
|
||||
<PackageReference Include="ZiggyCreatures.FusionCache" />
|
||||
<PackageReference Include="ZiggyCreatures.FusionCache.Backplane.StackExchangeRedis" />
|
||||
<PackageReference Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Folder Include="DbModel\Engine\" />
|
||||
<Folder Include="Migrations\" />
|
||||
<Folder Include="Services\Internal\" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
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.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;
|
||||
+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) });
|
||||
}
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user