Compare commits
300 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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.5.1509" />
|
||||
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.5.1509" />
|
||||
<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
|
||||
{
|
||||
|
||||
@@ -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>();
|
||||
@@ -110,6 +115,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) });
|
||||
}
|
||||
}
|
||||
}
|
||||
+4291
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user