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'
|
NUGET_PATH: 'C:\Tools\nuget.exe'
|
||||||
DEST: 'install'
|
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
|
# helper x fix pacchetti nuget da repo locale nexus.steamware.net
|
||||||
.nuget-fix: &nuget-fix
|
.nuget-fix: &nuget-fix
|
||||||
- |
|
- |
|
||||||
@@ -47,19 +45,6 @@ variables:
|
|||||||
dotnet nuget list source
|
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
|
# helper creazione hash files x IIS
|
||||||
.hashBuild: &hashBuild
|
.hashBuild: &hashBuild
|
||||||
- |
|
- |
|
||||||
@@ -185,6 +170,44 @@ Lux.API:build:
|
|||||||
- echo $CI_COMMIT_BRANCH
|
- echo $CI_COMMIT_BRANCH
|
||||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
- 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)
|
# DEPLOY develop (IIS01 + beta nuget)
|
||||||
# --------------------------------
|
# --------------------------------
|
||||||
@@ -226,6 +249,44 @@ Lux.API:IIS01:deploy:
|
|||||||
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
|
- 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
|
- 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:
|
EgwCoreLib.Lux.Core:SDK:deploy:
|
||||||
stage: deploy
|
stage: deploy
|
||||||
tags:
|
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>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
</PackageVersion>
|
</PackageVersion>
|
||||||
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.3.2010" />
|
<PackageVersion Include="DevExpress.AspNetCore.Reporting" Version="25.2.5" />
|
||||||
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.3.2010" />
|
<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="Egw.Window.Data" Version="2.8.1.2611" />
|
||||||
<PackageVersion Include="EgwCoreLib.Razor" Version="1.5.2511.312" />
|
<PackageVersion Include="EgwCoreLib.Razor" Version="1.5.2606.2416" />
|
||||||
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2511.312" />
|
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2606.2416" />
|
||||||
<PackageVersion Include="EgwMultiEngineManager.Data" Version="3.1.1.2" />
|
<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" Version="8.0.23" />
|
||||||
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" 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.Relational" Version="8.0.23" />
|
||||||
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" 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.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.Configuration.Binder" Version="9.0.12" />
|
||||||
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.12" />
|
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.12" />
|
||||||
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
|
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
|
||||||
<PackageVersion Include="NLog" Version="6.0.7" />
|
<PackageVersion Include="NLog" Version="6.1.2" />
|
||||||
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.6" />
|
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.7" />
|
||||||
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.0" />
|
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.2" />
|
||||||
<PackageVersion Include="OpenTelemetry.Api" Version="1.15.0" />
|
<PackageVersion Include="OpenTelemetry.Api" Version="1.15.0" />
|
||||||
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.0" />
|
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.3" />
|
||||||
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
|
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
|
||||||
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
|
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
|
||||||
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.0" />
|
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
|
||||||
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.0-beta.1" />
|
<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="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
|
||||||
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
|
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
|
||||||
<PackageVersion Include="Radzen.Blazor" Version="8.6.5" />
|
<PackageVersion Include="Radzen.Blazor" Version="8.6.5" />
|
||||||
@@ -46,5 +54,8 @@
|
|||||||
<PackageVersion Include="Scrutor" Version="7.0.0" />
|
<PackageVersion Include="Scrutor" Version="7.0.0" />
|
||||||
<PackageVersion Include="StackExchange.Redis" Version="2.10.1" />
|
<PackageVersion Include="StackExchange.Redis" Version="2.10.1" />
|
||||||
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.6.2" />
|
<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>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -1,8 +1,4 @@
|
|||||||
|
namespace EgwCoreLib.Lux.Core
|
||||||
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core
|
|
||||||
{
|
{
|
||||||
public static class CloneExtensions
|
public static class CloneExtensions
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
//// <Auto-Generated>
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
//// <Auto-Generated>
|
|
||||||
//// This is here so CodeMaid doesn't reorganize this document
|
//// This is here so CodeMaid doesn't reorganize this document
|
||||||
//// </Auto-Generated>
|
//// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Core
|
namespace EgwCoreLib.Lux.Core
|
||||||
@@ -12,7 +6,7 @@ namespace EgwCoreLib.Lux.Core
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Configurazione costanti applicative
|
/// Configurazione costanti applicative
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class Constants
|
public class Const
|
||||||
{
|
{
|
||||||
|
|
||||||
// dati conf REDIS Cache
|
// dati conf REDIS Cache
|
||||||
@@ -1,12 +1,6 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core
|
|
||||||
{
|
{
|
||||||
public class DtUtils
|
public class DateTimeUtils
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Formattazione dataora fissa come HH:mm:ss
|
/// 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.WebWindow.Base" />
|
||||||
<PackageReference Include="Egw.Lux.WebWindowComplex" />
|
<PackageReference Include="Egw.Lux.WebWindowComplex" />
|
||||||
<PackageReference Include="Egw.Window.Data" />
|
<PackageReference Include="Egw.Window.Data" />
|
||||||
|
<PackageReference Include="EgwCoreLib.Razor" />
|
||||||
|
<PackageReference Include="EgwCoreLib.Utils" />
|
||||||
<PackageReference Include="EgwMultiEngineManager.Data" />
|
<PackageReference Include="EgwMultiEngineManager.Data" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
</Project>
|
</Project>
|
||||||
|
|||||||
@@ -162,6 +162,9 @@
|
|||||||
Lost
|
Lost
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Status ordini cliente
|
||||||
|
/// </summary>
|
||||||
public enum OrderStates
|
public enum OrderStates
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -210,6 +213,39 @@
|
|||||||
Closed
|
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>
|
/// <summary>
|
||||||
/// Enum risultati verifica lavorabilità part (e tempo)
|
/// Enum risultati verifica lavorabilità part (e tempo)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
using NLog;
|
namespace EgwCoreLib.Lux.Core
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core
|
|
||||||
{
|
{
|
||||||
public class FileUtils
|
public class FileUtils
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,6 +7,8 @@
|
|||||||
{
|
{
|
||||||
#region Public Properties
|
#region Public Properties
|
||||||
|
|
||||||
|
public int GroupIdx { get; set; } = 0;
|
||||||
|
|
||||||
public int BarLenght { get; set; } = 10000;
|
public int BarLenght { get; set; } = 10000;
|
||||||
public Dictionary<string, double> MachineBalance { get; set; } = new Dictionary<string, double>();
|
public Dictionary<string, double> MachineBalance { get; set; } = new Dictionary<string, double>();
|
||||||
public List<string> TagList { get; set; } = new List<string>();
|
public List<string> TagList { get; set; } = new List<string>();
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.Generic
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Generic
|
|
||||||
{
|
{
|
||||||
public class EventDto
|
public class EventDto
|
||||||
{
|
{
|
||||||
@@ -43,7 +37,7 @@ namespace EgwCoreLib.Lux.Core.Generic
|
|||||||
Conf = this.Conf,
|
Conf = this.Conf,
|
||||||
IsCompany = this.IsCompany,
|
IsCompany = this.IsCompany,
|
||||||
#endif
|
#endif
|
||||||
Abbrev = this.Abbrev,
|
Abbrev = this.Abbrev,
|
||||||
Titolo = this.Titolo,
|
Titolo = this.Titolo,
|
||||||
Descrizione = this.Descrizione,
|
Descrizione = this.Descrizione,
|
||||||
Tooltip = this.Tooltip,
|
Tooltip = this.Tooltip,
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.Generic
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Generic
|
|
||||||
{
|
{
|
||||||
public class GroupDetailDTO
|
public class GroupDetailDTO
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.Generic
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Generic
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Definizione di item raw x calcolo lavorazioni
|
/// Definizione di item raw x calcolo lavorazioni
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
using System;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Generic
|
namespace EgwCoreLib.Lux.Core.Generic
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.Generic
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Generic
|
|
||||||
{
|
{
|
||||||
public class TaskHistDTO
|
public class TaskHistDTO
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
global using Newtonsoft.Json;
|
||||||
|
global using NLog;
|
||||||
@@ -1,9 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Core.RestPayload;
|
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
|
namespace EgwCoreLib.Lux.Core.MachineCalc
|
||||||
{
|
{
|
||||||
@@ -75,7 +70,7 @@ namespace EgwCoreLib.Lux.Core.MachineCalc
|
|||||||
}
|
}
|
||||||
|
|
||||||
return results;
|
return results;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Calcolo intersezioni anche dell'insieme nullo (= UNWORKABLE)
|
/// Calcolo intersezioni anche dell'insieme nullo (= UNWORKABLE)
|
||||||
@@ -287,7 +282,7 @@ namespace EgwCoreLib.Lux.Core.MachineCalc
|
|||||||
return machines
|
return machines
|
||||||
.Select(m => m.PartList.Where(predicate).Select(p => p.Tag).ToHashSet())
|
.Select(m => m.PartList.Where(predicate).Select(p => p.Tag).ToHashSet())
|
||||||
.Aggregate((set1, set2) => { set1.IntersectWith(set2); return set1; });
|
.Aggregate((set1, set2) => { set1.IntersectWith(set2); return set1; });
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,4 @@
|
|||||||
using Newtonsoft.Json;
|
namespace EgwCoreLib.Lux.Core
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Generico dizionario parametri con funzione ricerca valore (SE presente)
|
/// Generico dizionario parametri con funzione ricerca valore (SE presente)
|
||||||
@@ -77,6 +75,11 @@ namespace EgwCoreLib.Lux.Core
|
|||||||
|
|
||||||
#endregion Public Methods
|
#endregion Public Methods
|
||||||
|
|
||||||
|
public Dictionary<string, string> DictReadOnly
|
||||||
|
{
|
||||||
|
get => DictVals;
|
||||||
|
}
|
||||||
|
|
||||||
#region Private Properties
|
#region Private Properties
|
||||||
|
|
||||||
/// <summary>
|
/// <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;
|
namespace EgwCoreLib.Lux.Core
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core
|
|
||||||
{
|
{
|
||||||
public class PubSubEventArgs : EventArgs
|
public class PubSubEventArgs : EventArgs
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
|
||||||
{
|
{
|
||||||
public class BomDTO
|
public class BomDTO
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
using System;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
{
|
{
|
||||||
@@ -31,7 +26,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
|||||||
/// Numero Item
|
/// Numero Item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int ItemQty { get; set; } = 0;
|
public int ItemQty { get; set; } = 0;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Volume relativo (m3)
|
/// Volume relativo (m3)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using Newtonsoft.Json.Converters;
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
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
|
|
||||||
{
|
{
|
||||||
public class CalcRequestDTO
|
public class CalcRequestDTO
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Classe DTO x richieste di stima lavorazioni
|
/// Classe DTO x richieste di stima lavorazioni
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
@@ -18,7 +12,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
|||||||
|
|
||||||
public double Width { get; set; } = 800;
|
public double Width { get; set; } = 800;
|
||||||
public double Height { get; set; } = 800;
|
public double Height { get; set; } = 800;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// FAKE: nome del file svg da leggere direttamente...
|
/// FAKE: nome del file svg da leggere direttamente...
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Reflection.PortableExecutable;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Classe per deserializzazione risposta stima lavorabilità e tempi x macchina
|
/// Classe per deserializzazione risposta stima lavorabilità e tempi x macchina
|
||||||
@@ -19,6 +12,11 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; } = "";
|
public string Name { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Tempo Totale
|
||||||
|
/// </summary>
|
||||||
|
public decimal Time { get; set; } = 0;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Numero di parts totali
|
/// Numero di parts totali
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
|
||||||
{
|
{
|
||||||
public class NestingReqPayloadDTO
|
public class NestingReqPayloadDTO
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
using System;
|
using static EgwCoreLib.Lux.Core.Enums;
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
using static EgwCoreLib.Lux.Core.Enums;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.RestPayload
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
{
|
{
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Dati di dettaglio per Tempi / Costi di uno step (
|
/// Dati di dettaglio per Tempi / Costi di uno step (
|
||||||
@@ -1,12 +1,4 @@
|
|||||||
using Newtonsoft.Json;
|
namespace EgwCoreLib.Lux.Core.RestPayload
|
||||||
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
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Classe per definizione WorkLoad in dettaglio x un dato task (POR tipicamente)
|
/// 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>();
|
machineCalcResults = JsonConvert.DeserializeObject<List<MachineCalcResultDTO>>(rawData) ?? new List<MachineCalcResultDTO>();
|
||||||
if (!string.IsNullOrEmpty(rawData) && rawData.Count() > 2)
|
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;
|
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();
|
var firstMachine = machineCalcResults.FirstOrDefault();
|
||||||
if (firstMachine != null)
|
if (firstMachine != null)
|
||||||
{
|
{
|
||||||
|
// lista completa...
|
||||||
listComplete = firstMachine.PartList.Select(x => x.Tag).ToList();
|
listComplete = firstMachine.PartList.Select(x => x.Tag).ToList();
|
||||||
// pezzi lavorabili
|
// pezzi lavorabili
|
||||||
listWorkable = MachineCalc.Utils.IntersectTags(machineCalcResults, p => p.CalcResult == Enums.PartVerificationResult.MACHINABLE).ToList();
|
listWorkable = MachineCalc.Utils.IntersectTags(machineCalcResults, p => p.CalcResult == Enums.PartVerificationResult.MACHINABLE).ToList();
|
||||||
@@ -45,6 +38,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
|||||||
numKo = listUnWorkable.Count();
|
numKo = listUnWorkable.Count();
|
||||||
numOk = listWorkable.Count();
|
numOk = listWorkable.Count();
|
||||||
numOkVin = listVincolated.Count();
|
numOkVin = listVincolated.Count();
|
||||||
|
time = firstMachine.Time;
|
||||||
// se non ok verifico SE ci siano part unhealty su OGNI macchina (altrimenti è cmq lavorabile
|
// se non ok verifico SE ci siano part unhealty su OGNI macchina (altrimenti è cmq lavorabile
|
||||||
if (!workable)
|
if (!workable)
|
||||||
{
|
{
|
||||||
@@ -151,7 +145,23 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public decimal TotMaxTime
|
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>
|
/// <summary>
|
||||||
@@ -185,6 +195,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
|
|||||||
private int numKo = 0;
|
private int numKo = 0;
|
||||||
private int numOk = 0;
|
private int numOk = 0;
|
||||||
private int numOkVin = 0;
|
private int numOkVin = 0;
|
||||||
|
private decimal time = 0;
|
||||||
private string uID = "";
|
private string uID = "";
|
||||||
private bool workable = false;
|
private bool workable = false;
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.Stats
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Stats
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Classe per trasferimento dati RT da redis
|
/// Classe per trasferimento dati RT da redis
|
||||||
@@ -15,7 +9,7 @@ namespace EgwCoreLib.Lux.Core.Stats
|
|||||||
/// Tag Classificazione del dato
|
/// Tag Classificazione del dato
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string TagClass { get; set; } = "";
|
public string TagClass { get; set; } = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DataOra riferimento
|
/// DataOra riferimento
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -25,7 +19,7 @@ namespace EgwCoreLib.Lux.Core.Stats
|
|||||||
/// num eventi registrati
|
/// num eventi registrati
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int EventCount { get; set; }
|
public int EventCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Durata totale registrata
|
/// Durata totale registrata
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.Stats
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Stats
|
|
||||||
{
|
{
|
||||||
public class StatsRangeDto
|
public class StatsRangeDto
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Core.Stats
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Core.Stats
|
|
||||||
{
|
{
|
||||||
public class StatsRealtimeDto
|
public class StatsRealtimeDto
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,13 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.Data.DbModel.Admin;
|
namespace EgwCoreLib.Lux.Data
|
||||||
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
|
|
||||||
{
|
{
|
||||||
public partial class AdminContext : DbContext
|
public partial class AdminContext : DbContext
|
||||||
{
|
{
|
||||||
@@ -30,7 +21,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
|
|
||||||
public AdminContext(DbContextOptions<AdminContext> options) : base(options)
|
public AdminContext(DbContextOptions<AdminContext> options) : base(options)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion Public Constructors
|
#endregion Public Constructors
|
||||||
|
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Core.Generic;
|
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
|
namespace EgwCoreLib.Lux.Data.Controllers
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,16 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Catalog;
|
using EgwCoreLib.Lux.Data.DbModel.Admin;
|
||||||
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;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data
|
namespace EgwCoreLib.Lux.Data
|
||||||
{
|
{
|
||||||
@@ -57,7 +45,14 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
public virtual DbSet<TagsModel> DbSetTags { get; set; }
|
public virtual DbSet<TagsModel> DbSetTags { get; set; }
|
||||||
public virtual DbSet<CustomerModel> DbSetCustomer { get; set; }
|
public virtual DbSet<CustomerModel> DbSetCustomer { get; set; }
|
||||||
public virtual DbSet<DealerModel> DbSetDealer { get; set; }
|
public virtual DbSet<DealerModel> DbSetDealer { get; set; }
|
||||||
|
|
||||||
public virtual DbSet<SupplierModel> DbSetSupplier { 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<OfferModel> DbSetOffer { get; set; }
|
||||||
public virtual DbSet<OfferRowModel> DbSetOfferRow { get; set; }
|
public virtual DbSet<OfferRowModel> DbSetOfferRow { get; set; }
|
||||||
public virtual DbSet<OrderModel> DbSetOrder { 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<TemplateModel> DbSetTemplate { get; set; }
|
||||||
public virtual DbSet<TemplateRowModel> DbSetTemplateRow { 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);
|
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
|
||||||
|
|
||||||
@@ -137,8 +135,15 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
modelBuilder.Entity<JobStepTagModel>()
|
modelBuilder.Entity<JobStepTagModel>()
|
||||||
.HasKey(jst => new { jst.JobStepID, jst.CodTag });
|
.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>()
|
modelBuilder.Entity<ProductionItem2ODLModel>()
|
||||||
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
|
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
|
||||||
|
|
||||||
modelBuilder.Entity<ProductionItem2ODLModel>()
|
modelBuilder.Entity<ProductionItem2ODLModel>()
|
||||||
.HasOne(x => x.ProductionItemNav)
|
.HasOne(x => x.ProductionItemNav)
|
||||||
@@ -152,6 +157,10 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
.HasForeignKey(x => x.ProdODLID)
|
.HasForeignKey(x => x.ProdODLID)
|
||||||
.OnDelete(DeleteBehavior.Restrict);
|
.OnDelete(DeleteBehavior.Restrict);
|
||||||
|
|
||||||
|
|
||||||
|
modelBuilder.Entity<VocabolarioModel>()
|
||||||
|
.HasKey(jst => new { jst.Lingua, jst.Lemma });
|
||||||
|
|
||||||
// gestione dati DTX calcolati nel DB
|
// gestione dati DTX calcolati nel DB
|
||||||
#if false
|
#if false
|
||||||
modelBuilder.Entity<ProductionItemModel>()
|
modelBuilder.Entity<ProductionItemModel>()
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
using EgwCoreLib.Lux.Data.Repository.Config;
|
using EgwCoreLib.Lux.Data.Repository.Admin;
|
||||||
using EgwCoreLib.Lux.Data.Repository.Cost;
|
using EgwCoreLib.Lux.Data.Repository.Report;
|
||||||
using EgwCoreLib.Lux.Data.Repository.Items;
|
using EgwCoreLib.Lux.Data.Repository.Supplier;
|
||||||
using EgwCoreLib.Lux.Data.Repository.Job;
|
using EgwCoreLib.Lux.Data.Services.Admin;
|
||||||
using EgwCoreLib.Lux.Data.Repository.Production;
|
using EgwCoreLib.Lux.Data.Services.Catalog;
|
||||||
using EgwCoreLib.Lux.Data.Repository.Sales;
|
|
||||||
using EgwCoreLib.Lux.Data.Repository.Stats;
|
|
||||||
using EgwCoreLib.Lux.Data.Repository.Utils;
|
|
||||||
using EgwCoreLib.Lux.Data.Services.Config;
|
using EgwCoreLib.Lux.Data.Services.Config;
|
||||||
using EgwCoreLib.Lux.Data.Services.Cost;
|
using EgwCoreLib.Lux.Data.Services.Cost;
|
||||||
using EgwCoreLib.Lux.Data.Services.General;
|
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.Items;
|
||||||
using EgwCoreLib.Lux.Data.Services.Job;
|
using EgwCoreLib.Lux.Data.Services.Job;
|
||||||
using EgwCoreLib.Lux.Data.Services.Production;
|
using EgwCoreLib.Lux.Data.Services.Production;
|
||||||
|
using EgwCoreLib.Lux.Data.Services.Report;
|
||||||
using EgwCoreLib.Lux.Data.Services.Sales;
|
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 EgwCoreLib.Lux.Data.Services.Utils;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using EgwCoreLib.Lux.Data.Services.Warehouse;
|
||||||
using Microsoft.Extensions.DependencyInjection.Extensions;
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data
|
namespace EgwCoreLib.Lux.Data
|
||||||
@@ -32,9 +30,11 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
// servizi preliminari
|
// servizi preliminari
|
||||||
//services.TryAddSingleton<IConnectionMultiplexer>(redisConn);
|
//services.TryAddSingleton<IConnectionMultiplexer>(redisConn);
|
||||||
services.TryAddSingleton<IRedisService, RedisService>();
|
services.TryAddSingleton<IRedisService, RedisService>();
|
||||||
services.TryAddSingleton<RedisSubscriptionManager>();
|
services.TryAddSingleton<IRedisSubscriptionManager, RedisSubscriptionManager>();
|
||||||
|
services.TryAddSingleton<IVocabolarioRepository, VocabolarioRepository>();
|
||||||
|
|
||||||
// Repository Scoped
|
// Repository Scoped
|
||||||
|
services.TryAddScoped<IBuyOrderRepository, BuyOrderRepository>();
|
||||||
services.TryAddScoped<IConfGlassRepository, ConfGlassRepository>();
|
services.TryAddScoped<IConfGlassRepository, ConfGlassRepository>();
|
||||||
services.TryAddScoped<IConfProfileRepository, ConfProfileRepository>();
|
services.TryAddScoped<IConfProfileRepository, ConfProfileRepository>();
|
||||||
services.TryAddScoped<IConfWoodRepository, ConfWoodRepository>();
|
services.TryAddScoped<IConfWoodRepository, ConfWoodRepository>();
|
||||||
@@ -48,6 +48,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
services.TryAddScoped<IItemRepository, ItemRepository>();
|
services.TryAddScoped<IItemRepository, ItemRepository>();
|
||||||
services.TryAddScoped<IJobStepRepository, JobStepRepository>();
|
services.TryAddScoped<IJobStepRepository, JobStepRepository>();
|
||||||
services.TryAddScoped<IJobTaskRepository, JobTaskRepository>();
|
services.TryAddScoped<IJobTaskRepository, JobTaskRepository>();
|
||||||
|
services.TryAddScoped<IMatReqRepository, MatReqRepository>();
|
||||||
services.TryAddScoped<IOfferRepository, OfferRepository>();
|
services.TryAddScoped<IOfferRepository, OfferRepository>();
|
||||||
services.TryAddScoped<IOfferRowRepository, OfferRowRepository>();
|
services.TryAddScoped<IOfferRowRepository, OfferRowRepository>();
|
||||||
services.TryAddScoped<IOrderRepository, OrderRepository>();
|
services.TryAddScoped<IOrderRepository, OrderRepository>();
|
||||||
@@ -59,6 +60,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
services.TryAddScoped<IProductionOdlRepository, ProductionOdlRepository>();
|
services.TryAddScoped<IProductionOdlRepository, ProductionOdlRepository>();
|
||||||
services.TryAddScoped<IProductionPlantRepository, ProductionPlantRepository>();
|
services.TryAddScoped<IProductionPlantRepository, ProductionPlantRepository>();
|
||||||
services.TryAddScoped<IResourceRepository, ResourceRepository>();
|
services.TryAddScoped<IResourceRepository, ResourceRepository>();
|
||||||
|
services.TryAddScoped<IReportRepository, ReportRepository>();
|
||||||
services.TryAddScoped<ISellingItemRepository, SellingItemRepository>();
|
services.TryAddScoped<ISellingItemRepository, SellingItemRepository>();
|
||||||
services.TryAddScoped<IStatsAggrRepository, StatsAggrRepository>();
|
services.TryAddScoped<IStatsAggrRepository, StatsAggrRepository>();
|
||||||
services.TryAddScoped<IStatsDetailRepository, StatsDetailRepository>();
|
services.TryAddScoped<IStatsDetailRepository, StatsDetailRepository>();
|
||||||
@@ -67,6 +69,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
services.TryAddScoped<ITemplateRowRepository, TemplateRowRepository>();
|
services.TryAddScoped<ITemplateRowRepository, TemplateRowRepository>();
|
||||||
|
|
||||||
// Servizi Scoped
|
// Servizi Scoped
|
||||||
|
services.TryAddScoped<IBuyOrderService, BuyOrderService>();
|
||||||
services.TryAddScoped<IConfGlassService, ConfGlassService>();
|
services.TryAddScoped<IConfGlassService, ConfGlassService>();
|
||||||
services.TryAddScoped<IConfProfileService, ConfProfileService>();
|
services.TryAddScoped<IConfProfileService, ConfProfileService>();
|
||||||
services.TryAddScoped<IConfWoodService, ConfWoodService>();
|
services.TryAddScoped<IConfWoodService, ConfWoodService>();
|
||||||
@@ -80,6 +83,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
services.TryAddScoped<IItemGroupService, ItemGroupService>();
|
services.TryAddScoped<IItemGroupService, ItemGroupService>();
|
||||||
services.TryAddScoped<IJobStepService, JobStepService>();
|
services.TryAddScoped<IJobStepService, JobStepService>();
|
||||||
services.TryAddScoped<IJobTaskService, JobTaskService>();
|
services.TryAddScoped<IJobTaskService, JobTaskService>();
|
||||||
|
services.TryAddScoped<IMatReqService, MatReqService>();
|
||||||
services.TryAddScoped<IOfferService, OfferService>();
|
services.TryAddScoped<IOfferService, OfferService>();
|
||||||
services.TryAddScoped<IOfferRowService, OfferRowService>();
|
services.TryAddScoped<IOfferRowService, OfferRowService>();
|
||||||
services.TryAddScoped<IOrderService, OrderService>();
|
services.TryAddScoped<IOrderService, OrderService>();
|
||||||
@@ -91,6 +95,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
services.TryAddScoped<IProductionOdlService, ProductionOdlService>();
|
services.TryAddScoped<IProductionOdlService, ProductionOdlService>();
|
||||||
services.TryAddScoped<IProductionPlantService, ProductionPlantService>();
|
services.TryAddScoped<IProductionPlantService, ProductionPlantService>();
|
||||||
services.TryAddScoped<IResourceService, ResourceService>();
|
services.TryAddScoped<IResourceService, ResourceService>();
|
||||||
|
services.TryAddScoped<IReportService, ReportService>();
|
||||||
services.TryAddScoped<ISellingItemService, SellingItemService>();
|
services.TryAddScoped<ISellingItemService, SellingItemService>();
|
||||||
services.TryAddScoped<IStatsAggrService, StatsAggrService>();
|
services.TryAddScoped<IStatsAggrService, StatsAggrService>();
|
||||||
services.TryAddScoped<IStatsDetailService, StatsDetailService>();
|
services.TryAddScoped<IStatsDetailService, StatsDetailService>();
|
||||||
@@ -110,6 +115,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
services.TryAddSingleton<ICalcRequestService, CalcRequestService>();
|
services.TryAddSingleton<ICalcRequestService, CalcRequestService>();
|
||||||
services.TryAddSingleton<IFileService, FileService>();
|
services.TryAddSingleton<IFileService, FileService>();
|
||||||
services.TryAddSingleton<IProdService, ProdService>();
|
services.TryAddSingleton<IProdService, ProdService>();
|
||||||
|
services.TryAddSingleton<IVocabolarioService, VocabolarioService>();
|
||||||
//services.TryAddSingleton<CalcRequestService>();
|
//services.TryAddSingleton<CalcRequestService>();
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
namespace EgwCoreLib.Lux.Data
|
||||||
using NLog;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data
|
|
||||||
{
|
{
|
||||||
public class DbAdmin : IDisposable
|
public class DbAdmin : IDisposable
|
||||||
{
|
{
|
||||||
@@ -81,7 +73,7 @@ namespace EgwCoreLib.Lux.Data
|
|||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void Dispose()
|
public void Dispose()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using Microsoft.EntityFrameworkCore;
|
namespace EgwCoreLib.Lux.Data
|
||||||
using NLog;
|
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data
|
|
||||||
{
|
{
|
||||||
public class DbConfig
|
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;
|
namespace EgwCoreLib.Lux.Data.Data.DbModel.Admin
|
||||||
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
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tabella dei USER di MySql
|
/// 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;
|
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using static EgwCoreLib.Lux.Core.Enums;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Classe dei template di oggetti gestiti
|
/// Classe dei template di oggetti gestiti
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using static EgwCoreLib.Lux.Core.Enums;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
||||||
@@ -49,15 +44,14 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string TemplateRowDtx
|
public string TemplateRowDtx
|
||||||
{
|
{
|
||||||
get => $"TLR.{TemplateRowID:X12}";
|
get => CodeUid(TemplateRowID);
|
||||||
//get => $"TLR.{Inserted:yy}.{TemplateRowID:X8}";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Restituisce UID da impiegare x immagine
|
/// Restituisce URL da impiegare x immagine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string ImgUID
|
public string ImgUrl
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
{
|
{
|
||||||
@@ -65,7 +59,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
|||||||
switch (ImgType)
|
switch (ImgType)
|
||||||
{
|
{
|
||||||
case ImageType.Calculated:
|
case ImageType.Calculated:
|
||||||
answ = ImgUrl(TemplateRowID);
|
answ = CodeUid(TemplateRowID);
|
||||||
break;
|
break;
|
||||||
case ImageType.Fixed:
|
case ImageType.Fixed:
|
||||||
answ = FileName;
|
answ = FileName;
|
||||||
@@ -78,14 +72,25 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
answ = ImgUrl(TemplateRowID);
|
answ = CodeUid(TemplateRowID);
|
||||||
}
|
}
|
||||||
|
answ = $"static/{answ}";
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return answ;
|
return answ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// URL Immagine calcolato
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static string CodeUid(int id)
|
||||||
|
{
|
||||||
|
return $"TLR.{id:X12}";
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tipo immagine da visualizzare
|
/// Tipo immagine da visualizzare
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -199,6 +204,24 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public long FileSize { get; set; } = 0;
|
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>
|
/// <summary>
|
||||||
/// BOM serializzata per la produzione dell'item
|
/// BOM serializzata per la produzione dell'item
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -281,14 +304,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
|
|||||||
[ForeignKey("SellingItemID")]
|
[ForeignKey("SellingItemID")]
|
||||||
public virtual SellingItemModel? SellingItemNav { get; set; }
|
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;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Risorsa tipo di Glass x EF
|
/// Risorsa tipo di Glass x EF
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Table("conf_envir")]
|
[Table("conf_envir")]
|
||||||
public class EnvirParamModel
|
public class EnvirParamModel
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
namespace EgwCoreLib.Lux.Data.DbModel.Config
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
||||||
|
|||||||
@@ -1,14 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
// <Auto-Generated>
|
||||||
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>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
namespace EgwCoreLib.Lux.Data.DbModel.Cost
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||||
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
|
|
||||||
{ // <Auto-Generated>
|
{ // <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using static EgwCoreLib.Lux.Core.Enums;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Job;
|
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using static EgwCoreLib.Lux.Core.Enums;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Items
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// 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;
|
public ImageType ImgType { get; set; } = ImageType.ND;
|
||||||
|
|
||||||
/// <summary>
|
/// <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>
|
/// </summary>
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string ImgUID
|
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
|
#if false
|
||||||
@@ -138,14 +175,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
|||||||
[ForeignKey("JobID")]
|
[ForeignKey("JobID")]
|
||||||
public virtual JobTaskModel JobNav { get; set; } = null!;
|
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;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||||
|
|||||||
@@ -1,13 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
namespace 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;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Definizione driver di calcolo dall'Engine x la stima del CostDriver equivalente tempi/costi
|
/// Definizione driver di calcolo dall'Engine x la stima del CostDriver equivalente tempi/costi
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
// <Auto-Generated>
|
||||||
using EgwCoreLib.Lux.Data.DbModel.Job;
|
|
||||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||||
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
|
|
||||||
{
|
{
|
||||||
[Table("task_job_step_tag")]
|
[Table("task_job_step_tag")]
|
||||||
public class JobStepTagModel
|
public class JobStepTagModel
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||||
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
|
|
||||||
{
|
{
|
||||||
[Table("task_job_task_tag")]
|
[Table("task_job_task_tag")]
|
||||||
public class JobTaskTagModel
|
public class JobTaskTagModel
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
namespace EgwCoreLib.Lux.Data.DbModel.Job
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||||
|
|||||||
@@ -1,9 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Core.Generic;
|
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
|
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||||
{
|
{
|
||||||
@@ -79,9 +74,29 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Num parts complessivamente incluse
|
/// Num parts complessivamente incluse
|
||||||
|
/// - se BarQty = 0 --> MAX
|
||||||
|
/// - se BarQty > 0 --> SUM
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[NotMapped]
|
[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>
|
/// <summary>
|
||||||
/// Tempo stimato complessivo
|
/// Tempo stimato complessivo
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
using System.Collections.Generic;
|
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||||
|
|||||||
@@ -1,10 +1,6 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Sales;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations;
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
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
|
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -95,6 +91,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Navigazione verso tabella Item2Odl
|
/// Navigazione verso tabella Item2Odl
|
||||||
/// </summary>
|
/// </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.Generic;
|
||||||
using EgwCoreLib.Lux.Core.RestPayload;
|
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>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
|
|||||||
@@ -1,14 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Cost;
|
// <Auto-Generated>
|
||||||
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>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Production
|
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;
|
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||||
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
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
@@ -48,6 +40,34 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string VAT { get; set; } = "";
|
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
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Navigazione al ruolo
|
/// Navigazione al ruolo
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||||
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
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
@@ -48,6 +40,34 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string VAT { get; set; } = "";
|
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
|
#if false
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Navigazione al ruolo
|
/// Navigazione al ruolo
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using static EgwCoreLib.Lux.Core.Enums;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||||
@@ -69,6 +65,27 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string DictPresel { get; set; } = "";
|
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>
|
/// <summary>
|
||||||
/// Validità Offerta
|
/// Validità Offerta
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,10 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Catalog;
|
// <Auto-Generated>
|
||||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
using static EgwCoreLib.Lux.Core.Enums;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||||
@@ -52,6 +46,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// ID dell'articolo di vendita offerto
|
/// ID dell'articolo di vendita offerto
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? SellingItemID { get; set; }
|
public int? SellingItemID { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Definisce se sia calcolabile, dato il tipo SellingItem
|
/// Definisce se sia calcolabile, dato il tipo SellingItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -72,6 +67,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
get => ImgType == ImageType.Calculated;
|
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>
|
/// <summary>
|
||||||
/// Tipo immagine da visualizzare
|
/// Tipo immagine da visualizzare
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -99,13 +103,36 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
}
|
}
|
||||||
else if (SellingItemID > 0)
|
else if (SellingItemID > 0)
|
||||||
{
|
{
|
||||||
answ = SellingItemModel.ImgUrl(SellingItemID ?? 0);
|
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return answ;
|
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>
|
/// <summary>
|
||||||
/// Quantità della risorsa
|
/// Quantità della risorsa
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -292,6 +319,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool AwaitPrice { get; set; } = false;
|
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>
|
/// <summary>
|
||||||
/// Navigazione Offer
|
/// Navigazione Offer
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Core.Generic;
|
// <Auto-Generated>
|
||||||
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>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||||
@@ -91,7 +84,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime Modified { get; set; } = DateTime.Now;
|
public DateTime Modified { get; set; } = DateTime.Now;
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// DataOra richiesta per il completamento dell'ordine
|
/// DataOra richiesta per il completamento dell'ordine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -107,6 +99,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string ConsNote { get; set; } = "";
|
public string ConsNote { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
|
||||||
|
/// </summary>
|
||||||
|
public string RawItemData { get; set; } = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Enum stato Ordine
|
/// Enum stato Ordine
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -199,6 +196,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
get => (TotalCost > 0 && TotalPrice > TotalCost) ? (TotalPrice - TotalCost) / TotalPrice : 0;
|
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>
|
/// <summary>
|
||||||
/// Navigazione Customer
|
/// Navigazione Customer
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Catalog;
|
// <Auto-Generated>
|
||||||
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>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
||||||
@@ -61,7 +54,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
public int? SellingItemID { get; set; }
|
public int? SellingItemID { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Riferimento (opzionale9 al template da cui è derivato
|
/// Riferimento (opzionale) al template da cui è derivato
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? TemplateRowID { get; set; } = null;
|
public int? TemplateRowID { get; set; } = null;
|
||||||
|
|
||||||
@@ -153,16 +146,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
public bool CalcEnabled
|
public bool CalcEnabled
|
||||||
{
|
{
|
||||||
get => ImgType == ImageType.Calculated;
|
get => ImgType == ImageType.Calculated;
|
||||||
#if false
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Definisce presenza file
|
||||||
|
/// </summary>
|
||||||
|
[NotMapped]
|
||||||
|
public bool HasFile
|
||||||
{
|
{
|
||||||
bool answ = false;
|
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
|
||||||
if (SellingItemNav != null)
|
|
||||||
{
|
|
||||||
answ = SellingItemNav.SourceType == ItemSourceType.Jwd || SellingItemNav.SourceType == ItemSourceType.FileBTL;
|
|
||||||
}
|
|
||||||
return answ;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -190,19 +182,42 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
if (TemplateRowID != null && TemplateRowID > 0)
|
if (TemplateRowID != null && TemplateRowID > 0)
|
||||||
{
|
{
|
||||||
//answ= $"TR.{TemplateRowID:X16}";
|
//answ= $"TR.{TemplateRowID:X16}";
|
||||||
answ = TemplateRowModel.ImgUrl(TemplateRowID ?? 0);
|
answ = TemplateRowModel.CodeUid(TemplateRowID ?? 0);
|
||||||
}
|
}
|
||||||
// altrimenti da selling item...
|
// altrimenti da selling item...
|
||||||
else if (SellingItemID > 0)
|
else if (SellingItemID > 0)
|
||||||
{
|
{
|
||||||
//answ = $"SP.{SellingItemID:X12}";
|
//answ = $"SP.{SellingItemID:X12}";
|
||||||
answ = SellingItemModel.ImgUrl(SellingItemID ?? 0);
|
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return answ;
|
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>
|
/// <summary>
|
||||||
/// Valore serializzato della composizione articolo (in formato JWD x finestra)
|
/// Valore serializzato della composizione articolo (in formato JWD x finestra)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -229,6 +244,30 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string ItemBOM { get; set; } = "";
|
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>
|
/// <summary>
|
||||||
/// Lista dei Job Cost Drivers calcolati dall'engine (necessari x calcolo Steps)
|
/// Lista dei Job Cost Drivers calcolati dall'engine (necessari x calcolo Steps)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -274,6 +313,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string ProdEstimate { get; set; } = "";
|
public string ProdEstimate { get; set; } = "";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
|
||||||
|
/// </summary>
|
||||||
|
public string RawItemData { get; set; } = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Validazione dati BOM (Inteso come gruppi tutti trovati/esistenti)
|
/// Validazione dati BOM (Inteso come gruppi tutti trovati/esistenti)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -318,6 +362,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool AwaitPrice { get; set; } = false;
|
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>
|
/// <summary>
|
||||||
/// Navigazione Order
|
/// Navigazione Order
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -340,5 +413,10 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
|
|||||||
/// Navigazione alle righe ProdItem
|
/// Navigazione alle righe ProdItem
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public virtual ICollection<ProductionItemModel> ProdItemNav { get; set; } = new List<ProductionItemModel>();
|
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;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Stats
|
namespace EgwCoreLib.Lux.Data.DbModel.Stats
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
// <Auto-Generated>
|
||||||
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
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Stats
|
namespace EgwCoreLib.Lux.Data.DbModel.Stats
|
||||||
|
|||||||
@@ -1,13 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Utils;
|
namespace EgwCoreLib.Lux.Data.DbModel.Stock
|
||||||
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
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
|
|||||||
@@ -1,13 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
namespace EgwCoreLib.Lux.Data.DbModel.Stock
|
||||||
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
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// 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;
|
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
|
||||||
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
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
|
|
||||||
[Table("item_supplier")]
|
[Table("buy_supplier")]
|
||||||
public class SupplierModel
|
public class SupplierModel
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -21,13 +13,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
|||||||
[Key]
|
[Key]
|
||||||
public int SupplierID { get; set; }
|
public int SupplierID { get; set; }
|
||||||
|
|
||||||
#if false
|
|
||||||
/// <summary>
|
|
||||||
/// Ruolo assocaito da anagrafica esterna
|
|
||||||
/// </summary>
|
|
||||||
public int RoleID { get; set; }
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Denominazione se persona giuridica
|
/// Denominazione se persona giuridica
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -48,12 +33,9 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public string VAT { get; set; } = "";
|
public string VAT { get; set; } = "";
|
||||||
|
|
||||||
#if false
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Navigazione al ruolo
|
/// Many-to-many with Qualifica Fornitori
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[ForeignKey("RoleID")]
|
public virtual ICollection<SupplierQualifyModel> QualifNav { get; set; } = new List<SupplierQualifyModel>();
|
||||||
public virtual RoleModel RoleNav { get; set; } = null!;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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;
|
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||||
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
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
@@ -24,7 +16,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
|||||||
/// Chiave del counter annuale
|
/// Chiave del counter annuale
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string CountName { get; set; } = "";
|
public string CountName { get; set; } = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Valore dell'ultimo contatore staccato
|
/// Valore dell'ultimo contatore staccato
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||||
@@ -20,7 +17,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
|||||||
/// Descrizione
|
/// Descrizione
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Description { get; set; } = "";
|
public string Description { get; set; } = "";
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Numero Item compresi
|
/// Numero Item compresi
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,7 +1,4 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
// <Auto-Generated>
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
// <Auto-Generated>
|
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||||
|
|||||||
@@ -1,12 +1,4 @@
|
|||||||
using System;
|
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||||
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
|
|
||||||
{ // <Auto-Generated>
|
{ // <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// This is here so CodeMaid doesn't reorganize this document
|
||||||
// </Auto-Generated>
|
// </Auto-Generated>
|
||||||
|
|||||||
@@ -1,8 +1,4 @@
|
|||||||
using EgwCoreLib.Lux.Data.DbModel.Job;
|
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data.DbModel.Utils
|
|
||||||
{
|
{
|
||||||
// <Auto-Generated>
|
// <Auto-Generated>
|
||||||
// This is here so CodeMaid doesn't reorganize this document
|
// 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;
|
namespace EgwCoreLib.Lux.Data.Domains
|
||||||
using EgwCoreLib.Lux.Data.DbModel.Items;
|
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace EgwCoreLib.Lux.Data.Domains
|
|
||||||
{
|
{
|
||||||
public static class BomCalculator
|
public static class BomCalculator
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -49,12 +49,14 @@
|
|||||||
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" />
|
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" />
|
||||||
<PackageReference Include="RestSharp" />
|
<PackageReference Include="RestSharp" />
|
||||||
<PackageReference Include="StackExchange.Redis" />
|
<PackageReference Include="StackExchange.Redis" />
|
||||||
|
<PackageReference Include="ZiggyCreatures.FusionCache" />
|
||||||
|
<PackageReference Include="ZiggyCreatures.FusionCache.Backplane.StackExchangeRedis" />
|
||||||
|
<PackageReference Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Folder Include="DbModel\Engine\" />
|
<Folder Include="DbModel\Engine\" />
|
||||||
<Folder Include="Migrations\" />
|
<Folder Include="Migrations\" />
|
||||||
<Folder Include="Services\Internal\" />
|
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<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