300 Commits

Author SHA1 Message Date
Annamaria Sassi 7250dfd00d Piccole correzioni 2026-07-17 15:28:00 +02:00
Annamaria Sassi 7b8e4e1b58 Aggiunto statistiche per offerte Beam 2026-07-16 11:24:21 +02:00
Annamaria Sassi 9fd74e6e82 Modificata riga di ricerca offerte e ordini 2026-07-10 09:41:59 +02:00
Annamaria Sassi c21d0faad5 Aggiunto filtro ambiente 2026-07-03 17:37:42 +02:00
Annamaria Sassi 8e2bebbdf2 Modificate interfacce 2026-07-03 15:05:21 +02:00
Annamaria Sassi 1ba9414b21 - Modificata modale con parti
- Modificata modale con scelta grezzi
- Modificata modale per bilanciamento
2026-07-03 10:48:31 +02:00
Annamaria Sassi 69998ac20e - Aggiunti odl disponibili a pianificazione
- Modificata pagina bilanciamento macchine
2026-07-03 09:03:30 +02:00
samuele 3251035b47 Fix stored creazione batch 2026-07-02 16:02:43 +02:00
Annamaria Sassi 747b7dba50 Tolto salvataggio stima 2026-07-02 14:28:03 +02:00
Annamaria Sassi b95d3f461a Correzione 2026-07-02 13:03:04 +02:00
Annamaria Sassi d6880e681f Fix 2026-07-02 12:56:02 +02:00
Annamaria Sassi 19b3543985 Aggiunta modale bilanciamento per carico macchine e correzioni interfaccia 2026-07-02 12:43:55 +02:00
Annamaria Sassi 36ec472679 Bilanciamento tramite tre bottoni (0,50,100) e non modificabile a mano 2026-07-02 09:36:01 +02:00
Annamaria Sassi e7a93a01cb - Pulizia codice
- Modifica modale bilanciamento
- Modifica Carico macchine
2026-07-01 18:10:28 +02:00
samuele 80dd3f78e7 Update gestione calcolo durate da prodGroup calcolati 2026-07-01 10:58:45 +02:00
Annamaria Sassi 2f953aef74 Correzione grafica elementi producibili ovunque 2026-06-30 16:54:58 +02:00
samuele c367dec37e Update per test qty 2026-06-30 11:01:28 +02:00
samuele e7147798d0 test fix ritorno bilanciamento lavorazioni 2026-06-30 10:44:32 +02:00
samuele 08b0f99620 Fix gestione gruppo x sistemare correttamente ritorno dati 2026-06-30 10:23:12 +02:00
samuele 532113a738 update insomnia rest file 2026-06-29 16:25:51 +02:00
samuele 6674fe5429 refresh in IIS01 2026-06-29 16:25:22 +02:00
Annamaria Sassi 79e5d4bd9d Modifica passaggio parametri per assegnazione e bilanciamento 2026-06-29 15:59:41 +02:00
samuele bebaca6ef5 updat egestione assegnazioni carichi macchine 2026-06-29 12:30:05 +02:00
Annamaria Sassi 463eb23a67 Modifica modale assegnazione e bilanciamento 2026-06-29 10:52:57 +02:00
Annamaria Sassi 314c18551e Modifica assegnazione 2026-06-26 17:56:43 +02:00
samuele 153ead851b Avanzamento anche x balance 2026-06-26 17:48:28 +02:00
samuele 3b7dab23bf Fix assegnazione diretta prodgroup 2026-06-26 17:36:03 +02:00
Annamaria Sassi f0fcf5cafe Modificata modale stima tempi 2026-06-26 17:04:26 +02:00
samuele 5735efcdef Fix display dettaglio bilanciamento 2026-06-26 15:20:29 +02:00
Annamaria Sassi 13bc423cb4 Modifica interfaccia stima tempi 2026-06-26 14:43:40 +02:00
Annamaria Sassi 935050d618 Fix interfaccia 2026-06-25 17:40:41 +02:00
Annamaria Sassi 2943c4e01a Modificata rappresentazione codice in offerRow e OrderRow 2026-06-25 11:16:31 +02:00
Annamaria Sassi 077a9f3627 Ordinamento offerte e ordini decrescente di data inserimento 2026-06-25 10:38:18 +02:00
Annamaria Sassi eabc87104e Offerte per Beam 2026-06-25 10:23:14 +02:00
samuele a017277711 Update x gestione richiesta ENVIR in creazione offerta 2026-06-24 17:11:05 +02:00
Annamaria Sassi 9fa99793fa Correzioni interfaccia per tabelle 2026-06-24 15:23:25 +02:00
Annamaria Sassi e209835dce Correzioni interfaccia e traduzioni 2026-06-22 17:35:05 +02:00
Annamaria Sassi 82a79256d4 Aggiornate interfacce 2026-06-11 13:17:38 +02:00
Annamaria Sassi 9464cff197 Correzione warning 2026-06-11 12:19:14 +02:00
Annamaria Sassi fb50fb26de Modifica interfaccia ordini fornitori 2026-06-11 12:19:00 +02:00
Annamaria Sassi 19a01d258f Correzione warning 2026-06-11 12:17:08 +02:00
samuele 7e65c8a406 Varie code cleanup 2026-06-10 16:57:13 +02:00
samuele 7f957a8e05 Update grafici pag ordini fornitore 2026-06-10 16:15:51 +02:00
Annamaria Sassi 17719cd668 - Modifica interfaccia carico macchine
- Modifica salvataggio stima produzione per finestre
2026-06-10 14:40:14 +02:00
Annamaria Sassi 822a46ab4a Modificate interfacce 2026-06-10 12:24:33 +02:00
Annamaria Sassi 380533a4be Modificate pagine Template, Items, SellItem 2026-06-09 17:18:48 +02:00
Annamaria Sassi 51e8251953 - Modificate pagine Offerte e Ordini
- Aggiornato componente EgwCoreLib.Razor
2026-06-09 14:52:03 +02:00
samuele 6550d9cf93 Refresh offers pages 2026-06-09 12:50:40 +02:00
Annamaria Sassi 25eb1e436f Iniziato a modificare OfferRowMan 2026-06-09 11:06:07 +02:00
Annamaria Sassi d05465f9f3 Modificata interfaccia pagina ordini 2026-06-09 10:46:35 +02:00
Annamaria Sassi ef7e3552cd Modificata interfaccia pagina offerta 2026-06-09 09:41:47 +02:00
samuele fce26a59f8 refresh header 2026-06-08 18:24:09 +02:00
samuele b5d7482c86 Fix display pagina principale + test footer 2026-06-08 18:05:46 +02:00
samuele db71237786 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-08 17:37:18 +02:00
samuele da814bc858 Fix addmissing lemma 2026-06-08 17:35:44 +02:00
samuele c67c40d81b Fix vocabolario 2026-06-08 17:21:30 +02:00
Annamaria Sassi ea16fd59c9 Correzioni e modifiche vocabolario 2026-06-08 17:16:55 +02:00
Annamaria Sassi 01b7c2c7de - Aggiunte traduzioni
- Modificato filtro envir in carico macchine
2026-06-08 13:03:02 +02:00
Annamaria Sassi 91133789e7 Aggiunte traduzioni 2026-06-08 10:08:28 +02:00
Annamaria Sassi 7a4e50f2ad Modificato header con titolo pagina e prova pagina Customer 2026-06-05 15:29:39 +02:00
Annamaria Sassi 5c8adc9eb8 Aggiunte traduzioni per elenchi enum 2026-06-05 15:29:13 +02:00
Annamaria Sassi 745c11d537 Aggiornato vocabolario 2026-06-05 12:25:03 +02:00
Annamaria Sassi b3c4022864 Aggiornato vocabolario 2026-06-05 08:41:20 +02:00
samuele dd36901d88 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-04 16:09:57 +02:00
samuele 1f8418e724 Aggiunta ricerca in calendario 2026-06-04 16:09:20 +02:00
Annamaria Sassi b3d08f012d Aggiornamento vocabolario 2026-06-04 16:05:59 +02:00
samuele babbd01c52 Fix traduzione navMenu 2026-06-04 13:06:19 +02:00
samuele 23ad75e11d Bozza traduzione realtime da selezione alto/dx 2026-06-04 13:02:34 +02:00
samuele a2199d4fc6 update man 2026-06-04 12:44:59 +02:00
samuele 177504acf4 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-04 12:44:37 +02:00
samuele 7c4c4432dc inizio gestione selezione 2026-06-04 12:44:10 +02:00
Annamaria Sassi 8af969a999 Scelta lingue 2026-06-04 12:42:35 +02:00
Annamaria Sassi 1ce1f58a4c Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-04 12:06:58 +02:00
Annamaria Sassi dfea26610d - Aggiornamento vocabolario
- Modificata interfaccia carico macchine
2026-06-04 12:05:56 +02:00
samuele a13563b603 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-04 11:46:37 +02:00
samuele 93dea86d85 Vocabolario: preselezioni IT/EN 2026-06-04 11:46:35 +02:00
samuele bb358790ea Fix servizi e repository vocabolario 2026-06-04 11:42:35 +02:00
Annamaria Sassi a0ab1ba5f6 Aggiornamento vocabolario 2026-06-04 10:27:40 +02:00
samuele 07069ce151 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-04 10:09:33 +02:00
samuele 8183de796c Funx flush cache x vocabolario 2026-06-04 10:09:31 +02:00
Annamaria Sassi 560c56353f Aggiornamento vocabolario 2026-06-04 09:56:29 +02:00
Annamaria Sassi 652d1dee4a Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-04 09:25:01 +02:00
Annamaria Sassi d521c44646 Traduzioni vocabolario 2026-06-04 09:24:57 +02:00
samuele f3537821b1 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-06-04 09:24:00 +02:00
samuele 4d79061eda Update x prima integrazione vocabolario 2026-06-04 09:23:17 +02:00
Annamaria Sassi e621e0a74e Traduzioni vocabolario 2026-06-03 17:36:39 +02:00
samuele 9113d9f279 Update con componente comune che contiene metodi traduzione 2026-06-03 11:14:10 +02:00
samuele 8359512015 Bozza inserimento traduzione vocabolario 2026-06-03 09:55:01 +02:00
samuele 1c735ea3ec Aggiunto cloning lingua 2026-05-29 19:34:56 +02:00
samuele 1d43e05045 Aggiunta pagina gestione vocabolario 2026-05-29 19:21:52 +02:00
samuele 0ad786bc1c Aggiunta repository e servizi vocabolario 2026-05-29 19:21:45 +02:00
samuele 54257db9a4 Aggiunta modello e migrazioni vocabolario 2026-05-29 19:21:33 +02:00
samuele 339d3a4a85 Fix display carico ordini con card + check invio req balance (manca gestione errore in return) 2026-05-29 16:06:20 +02:00
samuele 5cb023e142 Fix display x elenco ordini (modalità Kanban) 2026-05-29 15:29:53 +02:00
Annamaria Sassi 6ecbaa58ac Aggiornata pagina di prova 2026-05-29 13:32:16 +02:00
Annamaria Sassi 857bbbcb53 Aggiunto conteggio offerte/ordini di Dealer 2026-05-29 13:26:22 +02:00
Annamaria Sassi 2da9ad46ae Aggiornata interfaccia Customer 2026-05-29 11:18:07 +02:00
samuele 9667ab1a82 Aggiunta repository e servizi x Customer in modo analogo a Dealer... 2026-05-29 10:37:01 +02:00
samuele 0759cbd2f6 Aggiunta repository + servizi x gestione Dealer + update interfaccia relativa 2026-05-29 10:32:05 +02:00
Annamaria Sassi 7fa3b47271 Correzione colori OfferStats 2026-05-28 14:51:50 +02:00
Annamaria Sassi ed74ccb839 - Aggiunta possibile nuova pagina configurazioni
- Correzioni inserimento nuova offerta
2026-05-28 14:28:01 +02:00
Annamaria Sassi 38f2c73c14 Fix bottone 2026-05-21 09:32:36 +02:00
Annamaria Sassi e3a5683029 Correzione pulsante in Offers e OffStats 2026-05-21 09:09:51 +02:00
Annamaria Sassi 1013463c3c Aggiunto pulsante in OffStats per tornare in Offer 2026-05-20 15:58:53 +02:00
Annamaria Sassi d9513297a7 Aggiunto filtro per ambiente in pagina Carico macchine 2026-05-19 16:11:44 +02:00
Annamaria Sassi 4aac4ca825 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-05-19 09:12:34 +02:00
Annamaria Sassi b3376e290e Aggiunto componente per gruppi elementi della barra laterale 2026-05-19 09:10:52 +02:00
samuele 44a17bf44c Fix serializzazione risposte 2026-05-18 17:55:27 +02:00
samuele 828b34b487 Update logica registrazione data modifica offerte: calcolata always 2026-05-18 10:00:16 +02:00
samuele 891af9c1bb Minor fix: chewron a sx x menù 2026-05-18 10:00:01 +02:00
Annamaria Sassi 5092a6f360 Modificato oggetto per risposta calcolo stima tempi finestre 2026-05-18 09:16:44 +02:00
Annamaria Sassi 2b4cad4234 - Aggiunte pagine: clienti e fornitori
- Inserito filtro in offerte in base allo stato
2026-05-15 09:30:38 +02:00
Annamaria Sassi 6411d247b4 - Modificato NavMenu
- Aggiornata ricerca stato in Offerte
2026-05-12 12:23:20 +02:00
Annamaria Sassi 6f621a29df Corretto gestione DataPager in BuyOrderList 2026-05-12 09:34:02 +02:00
samuele 780c2f42eb Buy Items: fix clone con evento tornato a parent
Template: fix display righe cancellabili/non cancellabili
2026-05-11 11:45:36 +02:00
Annamaria Sassi d3b2b9e329 Correzioni 2026-05-11 11:24:46 +02:00
Annamaria Sassi a8f1ff26be Modificate modali di eliminazione/conferma azioni 2026-05-07 16:18:33 +02:00
Annamaria Sassi f43647cd8d Conferma generazione fabbisogni da ordini da modale 2026-05-06 09:29:50 +02:00
Annamaria Sassi 65e3b9bbbc Conferma aggiornamento parametri/ricalcolo offerta tramite modale 2026-05-05 18:16:44 +02:00
Annamaria Sassi 8bf4afba99 Conferma eliminazione/clonazione per singolo template da modale 2026-05-05 17:15:36 +02:00
Annamaria Sassi a84c50adb0 Conferma eliminazione e clonazione template da lista tramite modale 2026-05-05 17:04:41 +02:00
samuele 39363279d7 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-05-05 11:27:22 +02:00
samuele 4db476b01f refresh 2026-05-05 11:26:29 +02:00
samuele cf2a7e8c26 Update EgwCoreLibs razor + altri nuget 2026-05-05 11:26:14 +02:00
Annamaria Sassi f953976c53 Aggiornata versione componente: configuratore serramenti 2026-04-30 17:43:28 +02:00
Annamaria Sassi 6f5f44de8e Selezione codGroup per report 2026-04-30 17:31:48 +02:00
Annamaria Sassi c455a2347f Aggiunto parametro codGroup nella sorgente dati dei report 2026-04-30 17:12:28 +02:00
samuele edca6ca957 update insomnia test 2026-04-30 15:00:26 +02:00
samuele 0e7e0aaed0 packages update
Update gestione generazione fabbisogni a livello di ordine
update metodo API x recupero filtrato x CodGroup
2026-04-30 11:50:24 +02:00
Annamaria Sassi 8525d81201 Correzioni 2026-04-28 18:47:30 +02:00
Annamaria Sassi 12b85c2572 Modificato MassEdit 2026-04-28 18:10:23 +02:00
Annamaria Sassi 1cdefe6af8 Aggiornata grafica modiali configurazioni 2026-04-28 18:09:33 +02:00
Annamaria Sassi a6c743d8b6 Correzioni icone bottoni 2026-04-28 18:08:45 +02:00
Annamaria Sassi 59249c189a Aggiunta descrizione selezione file report 2026-04-24 18:52:21 +02:00
samuele c865420e95 Aggiunti repository + servizi x reports in LUX UI 2026-04-24 17:42:49 +02:00
samuele a9acd2ca69 Commit ultime modifiche info file report 2026-04-24 16:12:43 +02:00
samuele e416f5c3d4 Update x gestione configurazione aprametri di traduzione nome da tipo file report 2026-04-24 15:57:49 +02:00
Annamaria Sassi fabfeb7a08 Aggiunta selezione template stampa offerte, ordini e ordini fornitore 2026-04-24 13:33:50 +02:00
Annamaria Sassi 1508a3dbbe Modificato nome salvataggio report 2026-04-24 09:04:26 +02:00
Annamaria Sassi 82d9ceed85 Aggiunti download a offerta e ordini 2026-04-23 17:58:38 +02:00
Annamaria Sassi 22a7aa4477 Fix btn stampa report 2026-04-23 16:12:43 +02:00
samuele d9c59a05a5 Bozza inserimento btn stampa report 2026-04-23 14:43:34 +02:00
samuele f4c7799859 Bozza link download pdf + fix displ BuyOrd 2026-04-23 12:23:08 +02:00
samuele e8201e9099 Fix ricerca fabbisogni componibile 2026-04-23 11:45:10 +02:00
Annamaria Sassi 879e515188 Aggiornata pagina BuyOrder 2026-04-23 10:58:33 +02:00
Annamaria Sassi fc3e4e7372 Aggiornato menù laterale 2026-04-23 10:44:56 +02:00
Annamaria Sassi 6c9e5f403f Creato report BuyOrder 2026-04-22 14:54:41 +02:00
samuele 9a2b7fbefe Aggiunta chiamata x record BuyOrder 2026-04-22 10:40:40 +02:00
samuele 301d597dff UPdate REST API test 2026-04-22 10:40:33 +02:00
samuele aaf27bbea7 Centralizzata gestione insert/update ordini 2026-04-22 10:30:29 +02:00
samuele 7521e64053 Update display BuyOrderRow 2026-04-22 09:55:58 +02:00
samuele 09fc6e601c Primo add buyOrder 2026-04-22 09:22:10 +02:00
samuele 46148de703 test positivo creazione ordini fornitore 2026-04-21 18:38:22 +02:00
samuele c2d1d20730 Update metodo repository x creazone
BuyOrder - BuyOrderRow - MatReq (link)
2026-04-21 18:19:05 +02:00
samuele f28649c58a Fix migrazione e metodo preliminare repository x insert nuovi ordini fornitore 2026-04-21 18:12:04 +02:00
samuele 3acf0fd545 Completata logica selezione righe fabbisogni x creazione BuyOrder 2026-04-21 16:39:30 +02:00
samuele 26a9feaf36 Fix display con nuovo blazor control 2026-04-21 15:31:51 +02:00
Annamaria Sassi ae81204ea6 Pagina BuyOrder: elenco Fabbisogni suddivisi per gruppo 2026-04-21 14:44:19 +02:00
samuele 6789b0403e Bozza pagina costruzione BuyOrder al fornitore 2026-04-21 12:26:27 +02:00
Annamaria Sassi 653504843e Correzioni interfaccia ordini 2026-04-21 11:45:15 +02:00
Annamaria Sassi 2062754086 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-21 10:19:24 +02:00
Annamaria Sassi 7087118de8 Aggiunti report MaterialReqOrd e MaterialReqOrdRow 2026-04-21 10:18:12 +02:00
samuele d05768c7eb Fix api x cache metodo ord/ordRow non esatti + update insomnia 2026-04-20 16:06:03 +02:00
samuele 7fe2bb284b Aggiunta metodi x recupero REST degli ordini fabbisogni 2026-04-17 18:06:25 +02:00
samuele 87f9e25692 Fix gestione Ferramenta (no ItemID...) 2026-04-17 17:52:28 +02:00
samuele e7d821bb68 Update migrations e struttura ext ref key 2026-04-17 17:40:38 +02:00
samuele 451275fbce Modifica ulteriore tracciato fabbisogni e review migrazioni relative 2026-04-17 17:09:47 +02:00
samuele b024f32740 Fix migrazione x gestione fabbisogni (iniziale) 2026-04-17 16:48:20 +02:00
samuele 0dfdbb67a4 Update struttura modelli con nuove info x rawItem (es barre) 2026-04-17 16:41:02 +02:00
samuele 13e17a28ae Fix ritorno BOM su Ordini 2026-04-17 12:35:21 +02:00
samuele da7cfb9668 Spostamento servizi warehouse + inserimento prime funzioni calcolo fabbisogni 2026-04-17 12:07:08 +02:00
samuele 863cb3d3a9 Bozza info x stato ordine (display fabbisogni presenti) 2026-04-17 10:13:28 +02:00
samuele 0b21a06a45 Aggiunta CI/CD x report server + relativo deploy 2026-04-17 09:42:32 +02:00
samuele e4beba61e2 Continuo implementazione repo fabbisogni 2026-04-17 09:40:10 +02:00
samuele 6d020b1201 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-17 09:39:24 +02:00
samuele c7005ec513 completo modifiche deploy 2026-04-17 09:38:25 +02:00
samuele 593ebfce5e Aggiunta publish profile x repSrv e primo test pubblicazione da VS2026 2026-04-17 09:38:10 +02:00
samuele 39a534b727 Aggiunta migration fabbisogni 2026-04-16 17:52:58 +02:00
Annamaria Sassi 9a68a597ec Aggiornato componente configuratore finestre 2026-04-16 16:22:40 +02:00
Annamaria Sassi d4cf7eebd2 Modificate interfacce Ordini, offerte e cataloghi 2026-04-16 16:09:08 +02:00
samuele 35eab707a4 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-14 17:42:51 +02:00
samuele c1a427f3a9 Aggiunta metodi repository x Fabbisogni (materialReq) 2026-04-14 17:42:16 +02:00
Annamaria Sassi e2e6bc48a0 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-14 15:50:12 +02:00
Annamaria Sassi c0b444d210 Modificato OfferReport 2026-04-14 15:48:17 +02:00
samuele 2b30e7e8bb Aggiunta migrazione x BuyOrder 2026-04-14 12:25:10 +02:00
samuele 0ff38c19a4 Completo repository BuyOrder + aggiungo repository BuyOrderRow 2026-04-14 12:06:29 +02:00
samuele ce4a42265e Bozza itnerfacce BuyOrder/OrderRow 2026-04-14 11:40:11 +02:00
samuele acf43e8f43 Implementazione interfaccia + repository x supplier 2026-04-14 11:40:01 +02:00
samuele 9a111d2b8a Aggiunta area BuyOrder
- spostato SUppliers
- creato order/OrderRow x acquisti
- migratoin + update DB
2026-04-14 11:24:01 +02:00
samuele 0742741b91 Prima versione con LUX download attivato! 2026-04-10 15:43:17 +02:00
samuele a66da619d8 Completata gestione hide menù come da js preparato da Annamaria 2026-04-10 14:55:28 +02:00
Annamaria Sassi 412f538867 - Modificati report di base
- Sidebar che collassa lateralmente
2026-04-10 09:31:53 +02:00
samuele 1f16e654ab Fix gestione report con check file tempalte 2026-04-09 15:01:57 +02:00
samuele 46b940f9a5 Update repository x dati navigazione ordini e template 2026-04-09 14:55:26 +02:00
Annamaria Sassi 0f9f5e0d9f Iniziato ad aggiungere report di Order e Template base 2026-04-09 14:38:35 +02:00
samuele 52f1bd94ef Update gestione ceck esistenza tipo report (da subfolder) 2026-04-09 12:18:23 +02:00
samuele f3bfe84fe3 Completata gestione report x preview con parametri dinamici 2026-04-09 11:34:04 +02:00
samuele 99f1936e87 Selezione template report da elenco attivata 2026-04-09 10:55:59 +02:00
samuele 29b8b2982d Prima bozza visualizzatore reports 2026-04-09 09:54:31 +02:00
samuele 0723f607ab Continuo implementazione viewer 2026-04-09 09:05:57 +02:00
samuele 479f652514 Update parziale apgina srv x view/export reports 2026-04-08 18:51:52 +02:00
samuele 9720ecf32e Fix edit preliminare report e configurazione con parametro edit completo 2026-04-08 18:34:44 +02:00
Annamaria Sassi 51ffd61a6c Aggiunta eliminazione offerta/ordine report 2026-04-08 17:53:28 +02:00
samuele 105e29f577 Update con refresh conteggio template disponibili 2026-04-08 17:26:21 +02:00
samuele 5ce82b0e19 Aggiunta metodi conteggio e lista file senza template nascosti + clone/copy template 2026-04-08 17:24:24 +02:00
samuele 3cfb050874 Update layout grafico MainLayout + footer + version 2026-04-08 16:47:13 +02:00
samuele f900437399 Aggiunta pipeline x compilazione ReportManager + deploy su IIS01 2026-04-08 16:28:22 +02:00
samuele 2707f9e023 Update file x pubblicazione 2026-04-08 16:25:43 +02:00
samuele fb38958765 Aggiunta conf XML x pubblicazione sito RepMan 2026-04-08 16:25:37 +02:00
samuele bccbc9c079 Continuo fix gestione editing report DevExpress 2026-04-08 15:59:40 +02:00
samuele be16a428f7 Update gestione elenco report 2026-04-07 18:39:46 +02:00
samuele 54e707ff08 Continuo implementazione report mgmt 2026-04-07 16:54:53 +02:00
samuele d8388b2746 implementazione preliminare repository x report 2026-04-07 16:54:42 +02:00
samuele ae21e4ba55 Update struttura dati + migrations 2026-04-07 16:54:31 +02:00
samuele 58359adc9b Continuo conf dei parametri webapp report 2026-04-07 16:04:55 +02:00
samuele 7f1a6ffc5f Aggiunta preliminare progetti gestioen report (Server e Manager) 2026-04-07 15:03:53 +02:00
Annamaria Sassi f317c9fd23 Nuovo test per passaggio sorgente dati 2026-04-07 14:36:24 +02:00
Annamaria Sassi b62a5c4c13 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-03 12:31:47 +02:00
Annamaria Sassi 4b41ed6dde - Gestito ReportDesign
- Importazione ReportDesign in ReportViewer
2026-04-03 12:31:42 +02:00
samuele 366e6adc94 Completo reorg helpers immagini da API 2026-04-02 15:48:02 +02:00
samuele e3fc22a553 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-02 15:08:04 +02:00
samuele 2dc5d2758e Continuo fix img:grafica Selling Item fixed 2026-04-02 15:07:59 +02:00
Annamaria Sassi 92c83da129 Aggiornata grafica preventivo 2026-04-02 09:42:07 +02:00
samuele 4c21b97bc9 Inizio fix templates img 2026-04-01 18:44:26 +02:00
samuele 3c4b697292 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 18:34:34 +02:00
samuele 9e75f7424f Ancora update metodo calcolo URL immagine semplificato (x offerte) 2026-04-01 18:34:31 +02:00
Annamaria Sassi d83bf57b0a Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 17:59:54 +02:00
Annamaria Sassi 29762cd69c UPdate report con stampa PDF 2026-04-01 17:59:49 +02:00
samuele da13dbc417 Inizio semplificazione imgUrl in UI 2026-04-01 12:59:16 +02:00
samuele 328673f192 Fix calcolo IMG x report 2026-04-01 12:53:01 +02:00
Annamaria Sassi 050e698eed Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 12:35:14 +02:00
Annamaria Sassi d6085b56ab Modificato grafica report 2026-04-01 12:35:10 +02:00
samuele fee246f3fe Prime immagini sistemate... 2026-04-01 12:34:05 +02:00
samuele 3977b5398f Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 12:28:59 +02:00
samuele 0b04856907 Inizio modifica img cache x API 2026-04-01 12:28:57 +02:00
samuele ddb9bf4347 Inizio modifica servizio API x rotte img static 2026-04-01 12:27:46 +02:00
Annamaria Sassi 4328747e3e Aggiornati package usati 2026-04-01 11:59:22 +02:00
samuele 7a3d9bb81c fIX REPORT: FINALMENTE è DINAMICO! 2026-04-01 11:26:51 +02:00
samuele 194208fd89 Finto fix img url 2026-04-01 10:40:05 +02:00
samuele 8d3166dbe9 Update API x inserire URL immagine diretto + spostamento report e pulizia 2026-04-01 10:25:11 +02:00
Annamaria Sassi bdf4b6b8bd Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 09:01:59 +02:00
Annamaria Sassi 79e1d71ce4 Gestione parametro in URL per Report 2026-04-01 09:01:55 +02:00
Samuele E. Locatelli (W11-AI) b45a91e194 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 08:25:35 +02:00
Samuele E. Locatelli (W11-AI) fccc1372ea Update commenti servizi 2026-04-01 08:25:32 +02:00
samuele 24e3b63980 update parziale report controller 2026-03-31 18:47:34 +02:00
samuele bd51f368b1 Fix json output con serializzazione globale + update return x Report controller API 2026-03-31 18:33:33 +02:00
samuele e405942d03 Fix log x controllers File e Report 2026-03-31 18:22:10 +02:00
samuele 7ac353e8c6 Aggiunta sorgente dati JSON x Offerta + righe 2026-03-31 17:09:39 +02:00
samuele 2bd50a4bc6 Update test insomnia x report JSON via API 2026-03-31 17:03:21 +02:00
samuele 19b4b8ccf0 Aggiunta metodi x REST call API con risposta JSON delle offerte 2026-03-31 16:58:03 +02:00
samuele 266ee95b1b Spostamento proj Test report x DevExpress 2026-03-31 16:57:47 +02:00
Annamaria Sassi f76c88d65d Aggiunto progetto per reporting con DevExpress 2026-03-31 15:58:48 +02:00
samuele 25c6ba7fd2 Fix selezione template da elenco 2026-03-30 17:22:00 +02:00
samuele 0c6c2ac78e Fix gestione insert da template 2026-03-30 16:25:03 +02:00
samuele b0e6f410f6 Refresh 2026-03-30 16:01:59 +02:00
samuele dec92ec530 Update nuget compoennte window + test parametri da template, test ok su jwd esistenti anceh con cambio material/wood che invalida i JED da DB 2026-03-30 12:42:08 +02:00
samuele 7909d68b29 Aggiunta preliminare gestione update JWD da template secondo parametri preselezionati 2026-03-30 12:24:25 +02:00
samuele 3eafecd756 Update parziale componente x gestione modifiche parametri 2026-03-30 11:21:59 +02:00
samuele c7128e19a8 Update ciclo aggiornamento dictParamReq 2026-03-27 18:55:08 +01:00
samuele d9d0ee9e28 Update componente WebWindow e test parziale 2026-03-27 18:10:59 +01:00
samuele 3ba155eb99 Aggiunta update display offerte x modifiche pending 2026-03-27 17:30:01 +01:00
samuele efc0f0ebb1 Aggiunta migration con nuova colonna dati x pendingReq configurazione righe ordine 2026-03-27 17:14:18 +01:00
samuele db29fc6274 Update x gestione parametri... 2026-03-27 12:23:13 +01:00
samuele fc66013385 fix correzioni region 2026-03-25 17:25:58 +01:00
Samuele E. Locatelli (W11-AI) 33de4d3616 Completo prima revisione repository x commenti 2026-03-25 17:25:00 +01:00
Samuele E. Locatelli (W11-AI) f3143573be Continuo fix manuale interfacce e commenti 2026-03-25 17:23:42 +01:00
Samuele E. Locatelli (W11-AI) c762b4e74b Continuo con fix manuali su correzioni 2026-03-25 17:21:26 +01:00
samuele e0d2323f5d Ancora fix warnings compilazione 2026-03-25 16:16:55 +01:00
samuele d039202670 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-03-25 16:13:42 +01:00
samuele 4d58189581 Async/Await fix vari 2026-03-25 16:13:40 +01:00
Samuele E. Locatelli (W11-AI) e455bb217e Continuo fix interfaces 2026-03-25 16:12:13 +01:00
samuele 10dde714e2 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-03-25 16:01:43 +01:00
Samuele E. Locatelli (W11-AI) c031fe76ba Continuo fix Repository fino Job 2026-03-25 16:01:21 +01:00
samuele 82fc76b11f Fix catalog dependency 2026-03-25 15:59:20 +01:00
Samuele E. Locatelli (W11-AI) 42b30e1941 Continuo con Config e Cost 2026-03-25 15:54:30 +01:00
Samuele E. Locatelli (W11-AI) ed163d7af2 Fix area repository: comincio da catalog 2026-03-25 15:52:07 +01:00
Samuele E. Locatelli (W11-AI) e16135fbc8 Continuo fix XML 2026-03-25 15:28:03 +01:00
Samuele E. Locatelli (W11-AI) 110b473f60 Continuo fix interfaces XML comments 2026-03-25 15:26:16 +01:00
Samuele E. Locatelli (W11-AI) d6c32c34fd Continuo fix interfacce 2026-03-25 15:02:26 +01:00
Samuele E. Locatelli (W11-AI) a17a586ddb COmpleto review doc interfacce 2026-03-25 14:02:28 +01:00
Samuele E. Locatelli (W11-AI) d144d94a25 Inizio fix production serices 2026-03-25 13:51:16 +01:00
Samuele E. Locatelli (W11-AI) fb9874bbf2 Continuo fix commenti 2026-03-25 11:15:00 +01:00
Samuele E. Locatelli (W11-AI) 3c923ecf97 Continuo fix commenti 2026-03-25 11:05:52 +01:00
Samuele E. Locatelli (W11-AI) a577ef73aa Continuo fix commenti 2026-03-25 10:18:34 +01:00
Samuele E. Locatelli (W11-AI) 1a91e26889 Spostamento commenti verso interfaces (da implementazioni) x DAL 2026-03-25 10:03:13 +01:00
samuele 45c2f9bb45 Fix Using x progetto UI 2026-03-25 09:05:06 +01:00
samuele 678c01a668 Ancora fix API 2026-03-25 08:33:53 +01:00
samuele 009dca4f75 Fix global Using in API proj 2026-03-25 08:32:52 +01:00
samuele ac397783be Completo refactor using in classi Lux.Data 2026-03-25 08:24:25 +01:00
samuele 8530434732 Fix namespace in repository 2026-03-25 07:27:51 +01:00
samuele a692e1edb4 Continuo implementazione DAL (mancano repo e services) 2026-03-25 07:24:21 +01:00
samuele ab197081d3 Riorganizzazione pesante namespace con global using & co (inizio) 2026-03-25 07:19:45 +01:00
samuele 29b9fcb3a9 Refresh vers 2026-03-24 19:08:31 +01:00
samuele 1f2a89e6f0 Aggiunta metodi RedisService x ProdService 2026-03-24 18:58:04 +01:00
samuele 9fe3f55843 Fix display download solo ove coerente in OfferRow 2026-03-24 18:28:27 +01:00
samuele 1f792414ff Fix imagecaches ervice: usa metodiposti da RedisService x flush 2026-03-24 18:26:50 +01:00
samuele f1a1abd01c Fix dispose x MessagePipe e RedisSubscriptionManager 2026-03-24 18:16:12 +01:00
samuele 0be708298d Fix file controller x download jwd 2026-03-24 17:29:44 +01:00
samuele 30168c4b2f Cleanup obj/metodi inutilizzati 2026-03-24 16:54:00 +01:00
samuele 93fb00f578 Merge tag 'MoveCompoGroup' into develop
Spostamento componenti in subfolder specifiche
2026-03-24 16:43:24 +01:00
1023 changed files with 299538 additions and 7027 deletions
+76 -15
View File
@@ -11,8 +11,6 @@ variables:
NUGET_PATH: 'C:\Tools\nuget.exe'
DEST: 'install'
# nota: cer creazione rules: https://docs.gitlab.com/ee/ci/jobs/job_control.html#common-if-clauses-for-rules
# helper x fix pacchetti nuget da repo locale nexus.steamware.net
.nuget-fix: &nuget-fix
- |
@@ -47,19 +45,6 @@ variables:
dotnet nuget list source
## helper x fix appsettings config nei casi installer / office
#.appsettings-fix: &appsettings-fix
# - |
# echo "esecuzione FIX appsettings.json"
# $srcFile="$env:APP_NAME/appsettings.Production-install.json"
# $dstFile="$env:APP_NAME/appsettings.Production.json"
# if (($env:DEST -ne 'install')) {
# $srcFile="$env:APP_NAME/appsettings.Production-office.json"
# }
# echo "Copy-Item -Path $srcFile -Destination $dstFile -force"
# Copy-Item -Path $srcFile -Destination $dstFile -force
# echo "Completata copia file appsettings.json corretto"
# helper creazione hash files x IIS
.hashBuild: &hashBuild
- |
@@ -185,6 +170,44 @@ Lux.API:build:
- echo $CI_COMMIT_BRANCH
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
Lux.RepMan:build:
stage: build
tags:
- win
variables:
APP_NAME: Lux.Report.Manager
SOL_NAME: Lux.Report
rules:
- if: $CI_COMMIT_BRANCH == 'develop'
- if: $CI_COMMIT_BRANCH == 'main'
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
when: always
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- echo $CI_COMMIT_BRANCH
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
Lux.RepSrv:build:
stage: build
tags:
- win
variables:
APP_NAME: Lux.Report.Server
SOL_NAME: Lux.Report
rules:
- if: $CI_COMMIT_BRANCH == 'develop'
- if: $CI_COMMIT_BRANCH == 'main'
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
when: always
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
script:
- echo $CI_COMMIT_BRANCH
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
# --------------------------------
# DEPLOY develop (IIS01 + beta nuget)
# --------------------------------
@@ -226,6 +249,44 @@ Lux.API:IIS01:deploy:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
Lux.RepMan:IIS01:deploy:
stage: deploy
tags:
- win
variables:
APP_NAME: Lux.Report.Manager
SOL_NAME: Lux.Report
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
rules:
- if: $CI_COMMIT_BRANCH == 'develop'
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
when: always
needs: ["Lux.RepMan:build"]
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
Lux.RepSrv:IIS01:deploy:
stage: deploy
tags:
- win
variables:
APP_NAME: Lux.Report.Server
SOL_NAME: Lux.Report
before_script:
- *nuget-fix
- dotnet restore "$env:SOL_NAME.sln"
rules:
- if: $CI_COMMIT_BRANCH == 'develop'
- if: $CI_COMMIT_BRANCH =~ /^feature\/Lux.API.+/
when: always
needs: ["Lux.RepSrv:build"]
script:
- dotnet build $env:APP_NAME/$env:APP_NAME.csproj
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=$IIS_PWD -p:AllowUntrustedCertificate=true -p:verbosity=quiet $env:APP_NAME/$env:APP_NAME.csproj
EgwCoreLib.Lux.Core:SDK:deploy:
stage: deploy
tags:
+81
View File
@@ -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
View File
@@ -8,11 +8,18 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageVersion>
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.3.2010" />
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.3.2010" />
<PackageVersion Include="DevExpress.AspNetCore.Reporting" Version="25.2.5" />
<PackageVersion Include="DevExpress.Blazor" Version="25.2.5" />
<PackageVersion Include="DevExpress.Blazor.Reporting.JSBasedControls" Version="25.2.5" />
<PackageVersion Include="DevExpress.Blazor.Reporting.Viewer" Version="25.2.5" />
<PackageVersion Include="Microsoft.AspNetCore.Mvc.NewtonsoftJson" Version="8.0.23" />
<PackageVersion Include="Microsoft.CodeAnalysis" Version="5.3.0" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.5" />
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.5.1509" />
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.5.1509" />
<PackageVersion Include="Egw.Window.Data" Version="2.8.1.2611" />
<PackageVersion Include="EgwCoreLib.Razor" Version="1.5.2511.312" />
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2511.312" />
<PackageVersion Include="EgwCoreLib.Razor" Version="1.5.2606.2416" />
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2606.2416" />
<PackageVersion Include="EgwMultiEngineManager.Data" Version="3.1.1.2" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.23" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="8.0.23" />
@@ -26,19 +33,20 @@
<PackageVersion Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.23" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.23" />
<PackageVersion Include="Microsoft.EntityFrameworkCore.Tools" Version="8.0.23" />
<PackageVersion Include="Microsoft.Extensions.Caching.StackExchangeRedis" Version="8.0.27" />
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.12" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.12" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
<PackageVersion Include="NLog" Version="6.0.7" />
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.6" />
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.0" />
<PackageVersion Include="NLog" Version="6.1.2" />
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.7" />
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.2" />
<PackageVersion Include="OpenTelemetry.Api" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.0-beta.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
<PackageVersion Include="Radzen.Blazor" Version="8.6.5" />
@@ -46,5 +54,8 @@
<PackageVersion Include="Scrutor" Version="7.0.0" />
<PackageVersion Include="StackExchange.Redis" Version="2.10.1" />
<PackageVersion Include="Swashbuckle.AspNetCore" Version="6.6.2" />
<PackageVersion Include="ZiggyCreatures.FusionCache" Version="2.6.0" />
<PackageVersion Include="ZiggyCreatures.FusionCache.Backplane.StackExchangeRedis" Version="2.6.0" />
<PackageVersion Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" Version="2.6.0" />
</ItemGroup>
</Project>
+1 -5
View File
@@ -1,8 +1,4 @@
using Newtonsoft.Json;
namespace EgwCoreLib.Lux.Core
namespace EgwCoreLib.Lux.Core
{
public static class CloneExtensions
{
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//// <Auto-Generated>
//// <Auto-Generated>
//// This is here so CodeMaid doesn't reorganize this document
//// </Auto-Generated>
namespace EgwCoreLib.Lux.Core
@@ -12,7 +6,7 @@ namespace EgwCoreLib.Lux.Core
/// <summary>
/// Configurazione costanti applicative
/// </summary>
public class Constants
public class Const
{
// dati conf REDIS Cache
@@ -1,12 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core
namespace EgwCoreLib.Lux.Core
{
public class DtUtils
public class DateTimeUtils
{
/// <summary>
/// Formattazione dataora fissa come HH:mm:ss
+27
View File
@@ -0,0 +1,27 @@
namespace EgwCoreLib.Lux.Core.Dto
{
public class ParamConfigDto
{
/// <summary>
/// Nome parametro
/// </summary>
public string Name { get; set; } = "fix";
/// <summary>
/// Tipo parametro:
/// - fix (fisso)
/// - url (prende da URL QueryString)
/// </summary>
public string Type { get; set; } = "fix";
/// <summary>
/// Per recuperare da ingresso (es URL)
/// </summary>
public string vIN { get; set; } = "";
/// <summary>
/// Valore out (da passare come apram x report)
/// </summary>
public string vOUT { get; set; } = "";
}
}
@@ -24,6 +24,8 @@
<PackageReference Include="Egw.Lux.WebWindow.Base" />
<PackageReference Include="Egw.Lux.WebWindowComplex" />
<PackageReference Include="Egw.Window.Data" />
<PackageReference Include="EgwCoreLib.Razor" />
<PackageReference Include="EgwCoreLib.Utils" />
<PackageReference Include="EgwMultiEngineManager.Data" />
</ItemGroup>
</Project>
+36
View File
@@ -162,6 +162,9 @@
Lost
}
/// <summary>
/// Status ordini cliente
/// </summary>
public enum OrderStates
{
/// <summary>
@@ -210,6 +213,39 @@
Closed
}
public enum BuyOrderStates
{
/// <summary>
/// Ordine acquisto creato da BOM di 1/+ ordini
/// </summary>
Created,
/// <summary>
/// Richiesta quotazione fornitori
/// </summary>
Requested,
/// <summary>
/// Assegnato a supplier (e inviato)
/// </summary>
Assigned,
/// <summary>
/// Parzialmente ricevuto
/// </summary>
Partial,
/// <summary>
/// Completato poiché ho ricevuto Merce (e DDT)
/// </summary>
Completed,
/// <summary>
/// Ordine chiuso (con fatturazione)
/// </summary>
Closed
}
/// <summary>
/// Enum risultati verifica lavorabilità part (e tempo)
/// </summary>
+1 -8
View File
@@ -1,11 +1,4 @@
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core
namespace EgwCoreLib.Lux.Core
{
public class FileUtils
{
@@ -7,6 +7,8 @@
{
#region Public Properties
public int GroupIdx { get; set; } = 0;
public int BarLenght { get; set; } = 10000;
public Dictionary<string, double> MachineBalance { get; set; } = new Dictionary<string, double>();
public List<string> TagList { get; set; } = new List<string>();
+2 -8
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.Generic
namespace EgwCoreLib.Lux.Core.Generic
{
public class EventDto
{
@@ -43,7 +37,7 @@ namespace EgwCoreLib.Lux.Core.Generic
Conf = this.Conf,
IsCompany = this.IsCompany,
#endif
Abbrev = this.Abbrev,
Abbrev = this.Abbrev,
Titolo = this.Titolo,
Descrizione = this.Descrizione,
Tooltip = this.Tooltip,
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.Generic
namespace EgwCoreLib.Lux.Core.Generic
{
public class GroupDetailDTO
{
+1 -7
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.Generic
namespace EgwCoreLib.Lux.Core.Generic
{
/// <summary>
/// Definizione di item raw x calcolo lavorazioni
@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations.Schema;
namespace EgwCoreLib.Lux.Core.Generic
{
+1 -7
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.Generic
namespace EgwCoreLib.Lux.Core.Generic
{
public class TaskHistDTO
{
+2
View File
@@ -0,0 +1,2 @@
global using Newtonsoft.Json;
global using NLog;
+2 -7
View File
@@ -1,9 +1,4 @@
using EgwCoreLib.Lux.Core.RestPayload;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.MachineCalc
{
@@ -75,7 +70,7 @@ namespace EgwCoreLib.Lux.Core.MachineCalc
}
return results;
}
}
/// <summary>
/// Calcolo intersezioni anche dell'insieme nullo (= UNWORKABLE)
@@ -287,7 +282,7 @@ namespace EgwCoreLib.Lux.Core.MachineCalc
return machines
.Select(m => m.PartList.Where(predicate).Select(p => p.Tag).ToHashSet())
.Aggregate((set1, set2) => { set1.IntersectWith(set2); return set1; });
}
}
#endregion Public Methods
+6 -3
View File
@@ -1,6 +1,4 @@
using Newtonsoft.Json;
namespace EgwCoreLib.Lux.Core
namespace EgwCoreLib.Lux.Core
{
/// <summary>
/// Generico dizionario parametri con funzione ricerca valore (SE presente)
@@ -77,6 +75,11 @@ namespace EgwCoreLib.Lux.Core
#endregion Public Methods
public Dictionary<string, string> DictReadOnly
{
get => DictVals;
}
#region Private Properties
/// <summary>
+60
View File
@@ -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 -7
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core
namespace EgwCoreLib.Lux.Core
{
public class PubSubEventArgs : EventArgs
{
+1 -7
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.RestPayload
namespace EgwCoreLib.Lux.Core.RestPayload
{
public class BomDTO
{
@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.ComponentModel.DataAnnotations.Schema;
namespace EgwCoreLib.Lux.Core.RestPayload
{
@@ -31,7 +26,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
/// Numero Item
/// </summary>
public int ItemQty { get; set; } = 0;
/// <summary>
/// Volume relativo (m3)
/// </summary>
@@ -1,12 +1,4 @@
using Newtonsoft.Json.Converters;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.Json.Serialization;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.RestPayload
namespace EgwCoreLib.Lux.Core.RestPayload
{
public class CalcRequestDTO
{
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.RestPayload
namespace EgwCoreLib.Lux.Core.RestPayload
{
/// <summary>
/// Classe DTO x richieste di stima lavorazioni
+2 -8
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Core.RestPayload
@@ -18,7 +12,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
public double Width { get; set; } = 800;
public double Height { get; set; } = 800;
/// <summary>
/// FAKE: nome del file svg da leggere direttamente...
/// </summary>
@@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.RestPayload
namespace EgwCoreLib.Lux.Core.RestPayload
{
/// <summary>
/// Classe per deserializzazione risposta stima lavorabilità e tempi x macchina
@@ -19,6 +12,11 @@ namespace EgwCoreLib.Lux.Core.RestPayload
/// </summary>
public string Name { get; set; } = "";
/// <summary>
/// Tempo Totale
/// </summary>
public decimal Time { get; set; } = 0;
/// <summary>
/// Numero di parts totali
/// </summary>
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.RestPayload
namespace EgwCoreLib.Lux.Core.RestPayload
{
public class NestingReqPayloadDTO
{
@@ -1,9 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static EgwCoreLib.Lux.Core.Enums;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Core.RestPayload
{
@@ -1,7 +1,7 @@
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Cost
namespace EgwCoreLib.Lux.Core.RestPayload
{
/// <summary>
/// Dati di dettaglio per Tempi / Costi di uno step (
@@ -1,12 +1,4 @@
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection.PortableExecutable;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.RestPayload
namespace EgwCoreLib.Lux.Core.RestPayload
{
/// <summary>
/// Classe per definizione WorkLoad in dettaglio x un dato task (POR tipicamente)
@@ -27,12 +19,13 @@ namespace EgwCoreLib.Lux.Core.RestPayload
machineCalcResults = JsonConvert.DeserializeObject<List<MachineCalcResultDTO>>(rawData) ?? new List<MachineCalcResultDTO>();
if (!string.IsNullOrEmpty(rawData) && rawData.Count() > 2)
{
// calcolo "esito sinteico" della lavorabilità (NESSUNA part UnHealthy su ogni macchina)
// calcolo "esito sinteitco" della lavorabilità (NESSUNA part UnHealthy su ogni macchina)
workable = machineCalcResults.Sum(x => x.NumPartsKo) == 0;
// lista completa...
// cerco la prima macchina (in caso multi macchina), da valutare se fosse suddiviso
var firstMachine = machineCalcResults.FirstOrDefault();
if (firstMachine != null)
{
// lista completa...
listComplete = firstMachine.PartList.Select(x => x.Tag).ToList();
// pezzi lavorabili
listWorkable = MachineCalc.Utils.IntersectTags(machineCalcResults, p => p.CalcResult == Enums.PartVerificationResult.MACHINABLE).ToList();
@@ -45,6 +38,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
numKo = listUnWorkable.Count();
numOk = listWorkable.Count();
numOkVin = listVincolated.Count();
time = firstMachine.Time;
// se non ok verifico SE ci siano part unhealty su OGNI macchina (altrimenti è cmq lavorabile
if (!workable)
{
@@ -151,7 +145,23 @@ namespace EgwCoreLib.Lux.Core.RestPayload
/// </summary>
public decimal TotMaxTime
{
get => LoadDetail != null ? LoadDetail.Max(x => x.MaxTime) : 0;
get
{
decimal ans = 0;
// eventualmente decisione sul tipo di timing con una variabile esplicita (bool)?
if (time > 0)
{
ans = time;
}
else
{
if (LoadDetail != null && LoadDetail.Count > 0)
ans = LoadDetail.Sum(x => x.MaxTime);
else
ans = 0;
}
return ans;
}
}
/// <summary>
@@ -185,6 +195,7 @@ namespace EgwCoreLib.Lux.Core.RestPayload
private int numKo = 0;
private int numOk = 0;
private int numOkVin = 0;
private decimal time = 0;
private string uID = "";
private bool workable = false;
+3 -9
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.Stats
namespace EgwCoreLib.Lux.Core.Stats
{
/// <summary>
/// Classe per trasferimento dati RT da redis
@@ -15,7 +9,7 @@ namespace EgwCoreLib.Lux.Core.Stats
/// Tag Classificazione del dato
/// </summary>
public string TagClass { get; set; } = "";
/// <summary>
/// DataOra riferimento
/// </summary>
@@ -25,7 +19,7 @@ namespace EgwCoreLib.Lux.Core.Stats
/// num eventi registrati
/// </summary>
public int EventCount { get; set; }
/// <summary>
/// Durata totale registrata
/// </summary>
+1 -7
View File
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.Stats
namespace EgwCoreLib.Lux.Core.Stats
{
public class StatsRangeDto
{
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core.Stats
namespace EgwCoreLib.Lux.Core.Stats
{
public class StatsRealtimeDto
{
+2 -11
View File
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.Data.DbModel.Admin;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data
namespace EgwCoreLib.Lux.Data
{
public partial class AdminContext : DbContext
{
@@ -30,7 +21,7 @@ namespace EgwCoreLib.Lux.Data
public AdminContext(DbContextOptions<AdminContext> options) : base(options)
{
}
}
#endregion Public Constructors
@@ -1,10 +1,4 @@
using EgwCoreLib.Lux.Core.Generic;
using EgwMultiEngineManager.Data;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.Controllers
{
+23 -14
View File
@@ -1,16 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Catalog;
using EgwCoreLib.Lux.Data.DbModel.Config;
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Items;
using EgwCoreLib.Lux.Data.DbModel.Production;
using EgwCoreLib.Lux.Data.DbModel.Sales;
using EgwCoreLib.Lux.Data.DbModel.Stats;
using EgwCoreLib.Lux.Data.DbModel.Stock;
using EgwCoreLib.Lux.Data.DbModel.Job;
using EgwCoreLib.Lux.Data.DbModel.Utils;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NLog;
using EgwCoreLib.Lux.Data.DbModel.Admin;
namespace EgwCoreLib.Lux.Data
{
@@ -57,7 +45,14 @@ namespace EgwCoreLib.Lux.Data
public virtual DbSet<TagsModel> DbSetTags { get; set; }
public virtual DbSet<CustomerModel> DbSetCustomer { get; set; }
public virtual DbSet<DealerModel> DbSetDealer { get; set; }
public virtual DbSet<SupplierModel> DbSetSupplier { get; set; }
public virtual DbSet<SupplierQualifyModel> DbSetSupplierQualify { get; set; }
public virtual DbSet<BuyOrderModel> DbSetBuyOrder { get; set; }
public virtual DbSet<BuyOrderRowModel> DbSetBuyOrderRow { get; set; }
public virtual DbSet<MatReqModel> DbSetMaterialReq { get; set; }
public virtual DbSet<BuyOrderRow2MatReqModel> DbSetBuyOrdRow2MatReq { get; set; }
public virtual DbSet<OfferModel> DbSetOffer { get; set; }
public virtual DbSet<OfferRowModel> DbSetOfferRow { get; set; }
public virtual DbSet<OrderModel> DbSetOrder { get; set; }
@@ -86,6 +81,9 @@ namespace EgwCoreLib.Lux.Data
public virtual DbSet<TemplateModel> DbSetTemplate { get; set; }
public virtual DbSet<TemplateRowModel> DbSetTemplateRow { get; set; }
public virtual DbSet<LinguaModel> DbSetLingua { get; set; }
public virtual DbSet<VocabolarioModel> DbSetVocabolario { get; set; }
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
@@ -137,8 +135,15 @@ namespace EgwCoreLib.Lux.Data
modelBuilder.Entity<JobStepTagModel>()
.HasKey(jst => new { jst.JobStepID, jst.CodTag });
// area Buy
modelBuilder.Entity<SupplierQualifyModel>()
.HasKey(sq => new { sq.SupplierID, sq.CodGroup });
modelBuilder.Entity<BuyOrderRow2MatReqModel>()
.HasKey(bm => new { bm.BuyOrderRowID, bm.MatReqID });
modelBuilder.Entity<ProductionItem2ODLModel>()
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
modelBuilder.Entity<ProductionItem2ODLModel>()
.HasOne(x => x.ProductionItemNav)
@@ -152,6 +157,10 @@ namespace EgwCoreLib.Lux.Data
.HasForeignKey(x => x.ProdODLID)
.OnDelete(DeleteBehavior.Restrict);
modelBuilder.Entity<VocabolarioModel>()
.HasKey(jst => new { jst.Lingua, jst.Lemma });
// gestione dati DTX calcolati nel DB
#if false
modelBuilder.Entity<ProductionItemModel>()
@@ -1,11 +1,8 @@
using EgwCoreLib.Lux.Data.Repository.Config;
using EgwCoreLib.Lux.Data.Repository.Cost;
using EgwCoreLib.Lux.Data.Repository.Items;
using EgwCoreLib.Lux.Data.Repository.Job;
using EgwCoreLib.Lux.Data.Repository.Production;
using EgwCoreLib.Lux.Data.Repository.Sales;
using EgwCoreLib.Lux.Data.Repository.Stats;
using EgwCoreLib.Lux.Data.Repository.Utils;
using EgwCoreLib.Lux.Data.Repository.Admin;
using EgwCoreLib.Lux.Data.Repository.Report;
using EgwCoreLib.Lux.Data.Repository.Supplier;
using EgwCoreLib.Lux.Data.Services.Admin;
using EgwCoreLib.Lux.Data.Services.Catalog;
using EgwCoreLib.Lux.Data.Services.Config;
using EgwCoreLib.Lux.Data.Services.Cost;
using EgwCoreLib.Lux.Data.Services.General;
@@ -13,10 +10,11 @@ using EgwCoreLib.Lux.Data.Services.Internal;
using EgwCoreLib.Lux.Data.Services.Items;
using EgwCoreLib.Lux.Data.Services.Job;
using EgwCoreLib.Lux.Data.Services.Production;
using EgwCoreLib.Lux.Data.Services.Report;
using EgwCoreLib.Lux.Data.Services.Sales;
using EgwCoreLib.Lux.Data.Services.Stats;
using EgwCoreLib.Lux.Data.Services.Supplier;
using EgwCoreLib.Lux.Data.Services.Utils;
using Microsoft.Extensions.DependencyInjection;
using EgwCoreLib.Lux.Data.Services.Warehouse;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace EgwCoreLib.Lux.Data
@@ -32,9 +30,11 @@ namespace EgwCoreLib.Lux.Data
// servizi preliminari
//services.TryAddSingleton<IConnectionMultiplexer>(redisConn);
services.TryAddSingleton<IRedisService, RedisService>();
services.TryAddSingleton<RedisSubscriptionManager>();
services.TryAddSingleton<IRedisSubscriptionManager, RedisSubscriptionManager>();
services.TryAddSingleton<IVocabolarioRepository, VocabolarioRepository>();
// Repository Scoped
services.TryAddScoped<IBuyOrderRepository, BuyOrderRepository>();
services.TryAddScoped<IConfGlassRepository, ConfGlassRepository>();
services.TryAddScoped<IConfProfileRepository, ConfProfileRepository>();
services.TryAddScoped<IConfWoodRepository, ConfWoodRepository>();
@@ -48,6 +48,7 @@ namespace EgwCoreLib.Lux.Data
services.TryAddScoped<IItemRepository, ItemRepository>();
services.TryAddScoped<IJobStepRepository, JobStepRepository>();
services.TryAddScoped<IJobTaskRepository, JobTaskRepository>();
services.TryAddScoped<IMatReqRepository, MatReqRepository>();
services.TryAddScoped<IOfferRepository, OfferRepository>();
services.TryAddScoped<IOfferRowRepository, OfferRowRepository>();
services.TryAddScoped<IOrderRepository, OrderRepository>();
@@ -59,6 +60,7 @@ namespace EgwCoreLib.Lux.Data
services.TryAddScoped<IProductionOdlRepository, ProductionOdlRepository>();
services.TryAddScoped<IProductionPlantRepository, ProductionPlantRepository>();
services.TryAddScoped<IResourceRepository, ResourceRepository>();
services.TryAddScoped<IReportRepository, ReportRepository>();
services.TryAddScoped<ISellingItemRepository, SellingItemRepository>();
services.TryAddScoped<IStatsAggrRepository, StatsAggrRepository>();
services.TryAddScoped<IStatsDetailRepository, StatsDetailRepository>();
@@ -67,6 +69,7 @@ namespace EgwCoreLib.Lux.Data
services.TryAddScoped<ITemplateRowRepository, TemplateRowRepository>();
// Servizi Scoped
services.TryAddScoped<IBuyOrderService, BuyOrderService>();
services.TryAddScoped<IConfGlassService, ConfGlassService>();
services.TryAddScoped<IConfProfileService, ConfProfileService>();
services.TryAddScoped<IConfWoodService, ConfWoodService>();
@@ -80,6 +83,7 @@ namespace EgwCoreLib.Lux.Data
services.TryAddScoped<IItemGroupService, ItemGroupService>();
services.TryAddScoped<IJobStepService, JobStepService>();
services.TryAddScoped<IJobTaskService, JobTaskService>();
services.TryAddScoped<IMatReqService, MatReqService>();
services.TryAddScoped<IOfferService, OfferService>();
services.TryAddScoped<IOfferRowService, OfferRowService>();
services.TryAddScoped<IOrderService, OrderService>();
@@ -91,6 +95,7 @@ namespace EgwCoreLib.Lux.Data
services.TryAddScoped<IProductionOdlService, ProductionOdlService>();
services.TryAddScoped<IProductionPlantService, ProductionPlantService>();
services.TryAddScoped<IResourceService, ResourceService>();
services.TryAddScoped<IReportService, ReportService>();
services.TryAddScoped<ISellingItemService, SellingItemService>();
services.TryAddScoped<IStatsAggrService, StatsAggrService>();
services.TryAddScoped<IStatsDetailService, StatsDetailService>();
@@ -110,6 +115,7 @@ namespace EgwCoreLib.Lux.Data
services.TryAddSingleton<ICalcRequestService, CalcRequestService>();
services.TryAddSingleton<IFileService, FileService>();
services.TryAddSingleton<IProdService, ProdService>();
services.TryAddSingleton<IVocabolarioService, VocabolarioService>();
//services.TryAddSingleton<CalcRequestService>();
+2 -10
View File
@@ -1,12 +1,4 @@
using Microsoft.EntityFrameworkCore;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data
namespace EgwCoreLib.Lux.Data
{
public class DbAdmin : IDisposable
{
@@ -81,7 +73,7 @@ namespace EgwCoreLib.Lux.Data
return answ;
}
public void Dispose()
{
+1 -9
View File
@@ -1,12 +1,4 @@
using Microsoft.EntityFrameworkCore;
using NLog;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data
namespace EgwCoreLib.Lux.Data
{
public class DbConfig
{
@@ -0,0 +1,15 @@
namespace EgwCoreLib.Lux.Data.DbModel.Admin
{
[Table("admin_lingua")]
public partial class LinguaModel
{
#region Public Properties
[Key]
public string Lingua { get; set; } = "ND";
public string FlagUrl { get; set; } = "";
public string Note { get; set; } = "";
#endregion Public Properties
}
}
@@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.Data.DbModel.Admin
namespace EgwCoreLib.Lux.Data.Data.DbModel.Admin
{
/// <summary>
/// Tabella dei USER di MySql
@@ -0,0 +1,15 @@
namespace EgwCoreLib.Lux.Data.DbModel.Admin
{
[Table("admin_vocabolario")]
public partial class VocabolarioModel
{
public string Lingua { get; set; } = "ND";
public string Lemma { get; set; } = "";
public string Traduzione { get; set; } = "";
[ForeignKey("Lingua")]
public virtual LinguaModel LinguaNav { get; set; } = null!;
}
}
@@ -1,8 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
{
/// <summary>
/// Classe dei template di oggetti gestiti
@@ -1,9 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
@@ -49,15 +44,14 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
[NotMapped]
public string TemplateRowDtx
{
get => $"TLR.{TemplateRowID:X12}";
//get => $"TLR.{Inserted:yy}.{TemplateRowID:X8}";
get => CodeUid(TemplateRowID);
}
/// <summary>
/// Restituisce UID da impiegare x immagine
/// Restituisce URL da impiegare x immagine
/// </summary>
[NotMapped]
public string ImgUID
public string ImgUrl
{
get
{
@@ -65,7 +59,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
switch (ImgType)
{
case ImageType.Calculated:
answ = ImgUrl(TemplateRowID);
answ = CodeUid(TemplateRowID);
break;
case ImageType.Fixed:
answ = FileName;
@@ -78,14 +72,25 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
}
else
{
answ = ImgUrl(TemplateRowID);
answ = CodeUid(TemplateRowID);
}
answ = $"static/{answ}";
break;
}
return answ;
}
}
/// <summary>
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string CodeUid(int id)
{
return $"TLR.{id:X12}";
}
/// <summary>
/// Tipo immagine da visualizzare
/// </summary>
@@ -199,6 +204,24 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
/// </summary>
public long FileSize { get; set; } = 0;
/// <summary>
/// Definisce se sia calcolabile, dato il tipo SellingItem
/// </summary>
[NotMapped]
public bool CalcEnabled
{
get => ImgType == ImageType.Calculated;
}
/// <summary>
/// Definisce presenza file
/// </summary>
[NotMapped]
public bool HasFile
{
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
}
/// <summary>
/// BOM serializzata per la produzione dell'item
/// </summary>
@@ -281,14 +304,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Catalog
[ForeignKey("SellingItemID")]
public virtual SellingItemModel? SellingItemNav { get; set; }
/// <summary>
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string ImgUrl(int id)
{
return $"TLR.{id:X12}";
}
}
}
@@ -1,14 +1,11 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
{
{
/// <summary>
/// Risorsa tipo di Glass x EF
/// </summary>
/// Risorsa tipo di Glass x EF
/// </summary>
[Table("conf_envir")]
public class EnvirParamModel
{
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Cost
@@ -1,14 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Sales;
using EgwCoreLib.Lux.Data.DbModel.Job;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Cost
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Items
{ // <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
@@ -1,8 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Items
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,9 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Job;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Items
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -90,12 +85,54 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
public ImageType ImgType { get; set; } = ImageType.ND;
/// <summary>
/// Restituisce UID da impiegare x immagine
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string CodeUid(int id)
{
return $"SP.{id:X12}";
}
/// <summary>
/// Restituisce Url da impiegare x immagine
/// </summary>
[NotMapped]
public string ImgUID
{
get => ImgType == ImageType.Fixed ? FileName : ImgUrl(SellingItemID);
get => ImgType == ImageType.Fixed ? FileName : CodeUid(SellingItemID);
}
/// <summary>
/// Definisce se sia calcolabile, dato il tipo SellingItem
/// </summary>
[NotMapped]
public bool CalcEnabled
{
get => ImgType == ImageType.Calculated;
}
/// <summary>
/// Restituisce Url immagine già calcolato (da sistemare!!!)
/// </summary>
[NotMapped]
public string ImgUrl
{
get
{
string answ = "empty.svg";
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
if (CalcEnabled)
{
string rndImg = $"{DateTime.Now:HHmmssfff}";
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
}
else
{
answ = $"static/{ImgUID}";
}
return answ;
}
}
#if false
@@ -138,14 +175,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
[ForeignKey("JobID")]
public virtual JobTaskModel JobNav { get; set; } = null!;
/// <summary>
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string ImgUrl(int id)
{
return $"SP.{id:X12}";
}
}
}
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Job
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Job
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
/// <summary>
/// Definizione driver di calcolo dall'Engine x la stima del CostDriver equivalente tempi/costi
@@ -1,8 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Job
@@ -1,10 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Job;
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Job
@@ -1,12 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Job
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
[Table("task_job_step_tag")]
public class JobStepTagModel
@@ -1,8 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Job
@@ -1,12 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Job
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
[Table("task_job_task_tag")]
public class JobTaskTagModel
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Job
@@ -1,7 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
@@ -1,9 +1,4 @@
using EgwCoreLib.Lux.Core.Generic;
using EgwCoreLib.Lux.Data.DbModel.Sales;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Production
{
@@ -79,9 +74,29 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
/// <summary>
/// Num parts complessivamente incluse
/// - se BarQty = 0 --> MAX
/// - se BarQty > 0 --> SUM
/// </summary>
[NotMapped]
public int NumParts => WorkGroupList?.Sum(x => x.Value.NumParts) ?? 0;
public int NumParts
{
get
{
int answ = 0;
if (WorkGroupList != null && WorkGroupList.Count > 0)
{
if (WorkGroupList?.FirstOrDefault().Value.BarQty > 0)
{
answ = WorkGroupList?.Sum(x => x.Value.NumParts) ?? 0;
}
else
{
answ = WorkGroupList?.Max(x => x.Value.NumParts) ?? 0;
}
}
return answ;
}
}
/// <summary>
/// Tempo stimato complessivo
@@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
@@ -1,10 +1,6 @@
using EgwCoreLib.Lux.Data.DbModel.Sales;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
{
/// <summary>
@@ -95,6 +91,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
/// <summary>
/// Navigazione verso tabella Item2Odl
/// </summary>
public ICollection<ProductionItem2ODLModel> Item2OdlNav { get; set; } = new List<ProductionItem2ODLModel>();
public ICollection<ProductionItem2ODLModel> Item2OdlNav { get; set; } = new List<ProductionItem2ODLModel>();
}
}
@@ -1,15 +1,5 @@
using EgwCoreLib.Lux.Core.Generic;
using EgwCoreLib.Lux.Core.RestPayload;
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Job;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,14 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Sales;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
@@ -0,0 +1,70 @@
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Report
{
/// <summary>
/// Classe dei report gestiti
/// </summary>
[Table("report_list")]
public class ReportModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int ReportID { get; set; }
/// <summary>
/// Denominazione
/// </summary>
public string Name { get; set; } = "";
/// <summary>
/// Descrizione
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Valore completo Json per recupero dati, con segnaposto con [[param_01]]
/// </summary>
public string JsonDSN { get; set; } = "";
/// <summary>
/// Nome del report Active tra quelli nella folder
/// </summary>
public string ActRepFileName { get; set; } = "";
/// <summary>
/// Conf dei parametri per il report
/// </summary>
public string ParamConfigRaw { get; set; } = "";
/// <summary>
/// Conf relative ai file report
/// </summary>
public string FileConfDataRaw { get; set; } = "";
/// <summary>
/// Elenco dei parametri da gestire x il ReportTemplate
/// </summary>
[NotMapped]
public List<ParamConfigDto> ParamConfig
{
get
{
List<ParamConfigDto> answ = new();
if (!string.IsNullOrEmpty(ParamConfigRaw) && ParamConfigRaw.Length > 2)
{
answ = JsonConvert.DeserializeObject<List<ParamConfigDto>>(ParamConfigRaw) ?? new();
}
return answ;
}
set
{
string rawVal = JsonConvert.SerializeObject(value);
ParamConfigRaw = rawVal;
}
}
}
}
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Sales
namespace EgwCoreLib.Lux.Data.DbModel.Sales
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -48,6 +40,34 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string VAT { get; set; } = "";
[NotMapped]
public bool HasChildren
{
get => OfferNav.Any();
}
[NotMapped]
public int NumOffers
{
get => OfferNav.Count();
}
[NotMapped]
public int NumOrders
{
get => OrderNav.Count();
}
/// <summary>
/// Navigazione alle Offerte
/// </summary>
public virtual ICollection<OfferModel> OfferNav { get; set; } = new List<OfferModel>();
/// <summary>
/// Navigazione agli Ordini
/// </summary>
public virtual ICollection<OrderModel> OrderNav { get; set; } = new List<OrderModel>();
#if false
/// <summary>
/// Navigazione al ruolo
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Sales
namespace EgwCoreLib.Lux.Data.DbModel.Sales
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -48,6 +40,34 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string VAT { get; set; } = "";
[NotMapped]
public bool HasChildren
{
get => OfferNav.Any();
}
[NotMapped]
public int NumOffers
{
get => OfferNav.Count();
}
[NotMapped]
public int NumOrders
{
get => OrderNav.Count();
}
/// <summary>
/// Navigazione alle Offerte
/// </summary>
public virtual ICollection<OfferModel> OfferNav { get; set; } = new List<OfferModel>();
/// <summary>
/// Navigazione agli Ordini
/// </summary>
public virtual ICollection<OrderModel> OrderNav { get; set; } = new List<OrderModel>();
#if false
/// <summary>
/// Navigazione al ruolo
@@ -1,8 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -69,6 +65,27 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string DictPresel { get; set; } = "";
/// <summary>
/// Dizionario valorizzato dei parametri attivi
/// </summary>
[NotMapped]
public Dictionary<string, string> DictParameter
{
get
{
Dictionary<string, string> answ = new();
if (!string.IsNullOrEmpty(DictPresel))
{
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPresel) ?? new Dictionary<string, string>();
}
return answ;
}
//set
//{
// DictPresel = JsonConvert.SerializeObject(value);
//}
}
/// <summary>
/// Validità Offerta
/// </summary>
@@ -1,10 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Catalog;
using EgwCoreLib.Lux.Data.DbModel.Items;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -52,6 +46,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// ID dell'articolo di vendita offerto
/// </summary>
public int? SellingItemID { get; set; }
/// <summary>
/// Definisce se sia calcolabile, dato il tipo SellingItem
/// </summary>
@@ -72,6 +67,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
get => ImgType == ImageType.Calculated;
}
/// <summary>
/// Definisce presenza file
/// </summary>
[NotMapped]
public bool HasFile
{
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
}
/// <summary>
/// Tipo immagine da visualizzare
/// </summary>
@@ -99,13 +103,36 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
}
else if (SellingItemID > 0)
{
answ = SellingItemModel.ImgUrl(SellingItemID ?? 0);
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
}
}
return answ;
}
}
/// <summary>
/// Restituisce Url immagine già calcolato (da sistemare!!!)
/// </summary>
[NotMapped]
public string ImgUrl
{
get
{
string answ = "empty.svg";
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
string rndImg = $"{DateTime.Now:HHmmssfff}";
if (CalcEnabled)
{
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
}
else
{
answ = $"static/{ImgUID}";
}
return answ;
}
}
/// <summary>
/// Quantità della risorsa
/// </summary>
@@ -292,6 +319,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public bool AwaitPrice { get; set; } = false;
/// <summary>
/// Dizionario serializzato delle preselezioni (pending, da applicare)
/// </summary>
public string DictPendPresRaw { get; set; } = "";
[NotMapped]
public bool HasPendReq
{
get => !string.IsNullOrEmpty(DictPendPresRaw) && DictPendingPresel.Count > 0;
}
[NotMapped]
public Dictionary<string, string> DictPendingPresel
{
get
{
Dictionary<string, string> answ = new();
if (!string.IsNullOrEmpty(DictPendPresRaw))
{
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPendPresRaw) ?? new Dictionary<string, string>();
}
return answ;
}
//set
//{
// DictPendPresRaw = JsonConvert.SerializeObject(value);
//}
}
/// <summary>
/// Navigazione Offer
/// </summary>
@@ -1,11 +1,4 @@
using EgwCoreLib.Lux.Core.Generic;
using EgwCoreLib.Lux.Data.DbModel.Production;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -91,7 +84,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public DateTime Modified { get; set; } = DateTime.Now;
/// <summary>
/// DataOra richiesta per il completamento dell'ordine
/// </summary>
@@ -107,6 +99,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string ConsNote { get; set; } = "";
/// <summary>
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
/// </summary>
public string RawItemData { get; set; } = "";
/// <summary>
/// Enum stato Ordine
/// </summary>
@@ -199,6 +196,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
get => (TotalCost > 0 && TotalPrice > TotalCost) ? (TotalPrice - TotalCost) / TotalPrice : 0;
}
/// <summary>
/// Verifica se ci siano TUTTE le righe coperte da Fabbisogni (con o senza ordine...)
/// </summary>
[NotMapped]
public bool AllRowsWithReq
{
get => OrderRowNav != null && !OrderRowNav.Any(x => x.MatReqNav.Count == 0);
}
/// <summary>
/// Navigazione Customer
/// </summary>
@@ -1,11 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Catalog;
using EgwCoreLib.Lux.Data.DbModel.Items;
using EgwCoreLib.Lux.Data.DbModel.Production;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -61,7 +54,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
public int? SellingItemID { get; set; }
/// <summary>
/// Riferimento (opzionale9 al template da cui è derivato
/// Riferimento (opzionale) al template da cui è derivato
/// </summary>
public int? TemplateRowID { get; set; } = null;
@@ -153,16 +146,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
public bool CalcEnabled
{
get => ImgType == ImageType.Calculated;
#if false
}
/// <summary>
/// Definisce presenza file
/// </summary>
[NotMapped]
public bool HasFile
{
bool answ = false;
if (SellingItemNav != null)
{
answ = SellingItemNav.SourceType == ItemSourceType.Jwd || SellingItemNav.SourceType == ItemSourceType.FileBTL;
}
return answ;
}
#endif
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
}
/// <summary>
@@ -190,19 +182,42 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
if (TemplateRowID != null && TemplateRowID > 0)
{
//answ= $"TR.{TemplateRowID:X16}";
answ = TemplateRowModel.ImgUrl(TemplateRowID ?? 0);
answ = TemplateRowModel.CodeUid(TemplateRowID ?? 0);
}
// altrimenti da selling item...
else if (SellingItemID > 0)
{
//answ = $"SP.{SellingItemID:X12}";
answ = SellingItemModel.ImgUrl(SellingItemID ?? 0);
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
}
}
return answ;
}
}
/// <summary>
/// Restituisce Url immagine già calcolato (da sistemare!!!)
/// </summary>
[NotMapped]
public string ImgUrl
{
get
{
string answ = "empty.svg";
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
string rndImg = $"{DateTime.Now:HHmmssfff}";
if (CalcEnabled)
{
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
}
else
{
answ = $"static/{ImgUID}";
}
return answ;
}
}
/// <summary>
/// Valore serializzato della composizione articolo (in formato JWD x finestra)
/// </summary>
@@ -229,6 +244,30 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string ItemBOM { get; set; } = "";
/// <summary>
/// Lista BOM deserializzata
/// </summary>
[NotMapped]
public List<BomItemDTO> ListBOM
{
get
{
List<BomItemDTO> answ = new();
if (!string.IsNullOrEmpty(ItemBOM) && ItemBOM.Length > 2)
{
answ = JsonConvert.DeserializeObject<List<BomItemDTO>>(ItemBOM) ?? new();
}
return answ;
}
}
[NotMapped]
public bool HasMatReqRow
{
get => MatReqNav != null && MatReqNav.Count > 0;
}
/// <summary>
/// Lista dei Job Cost Drivers calcolati dall'engine (necessari x calcolo Steps)
/// </summary>
@@ -274,6 +313,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string ProdEstimate { get; set; } = "";
/// <summary>
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
/// </summary>
public string RawItemData { get; set; } = "";
/// <summary>
/// Validazione dati BOM (Inteso come gruppi tutti trovati/esistenti)
/// </summary>
@@ -318,6 +362,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public bool AwaitPrice { get; set; } = false;
/// <summary>
/// Dizionario serializzato delle preselezioni (pending, da applicare)
/// </summary>
public string DictPendPresRaw { get; set; } = "";
[NotMapped]
public bool HasPendReq
{
get => !string.IsNullOrEmpty(DictPendPresRaw) && DictPendingPresel.Count > 0;
}
[NotMapped]
public Dictionary<string, string> DictPendingPresel
{
get
{
Dictionary<string, string> answ = new();
if (!string.IsNullOrEmpty(DictPendPresRaw))
{
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPendPresRaw) ?? new Dictionary<string, string>();
}
return answ;
}
//set
//{
// DictPendPresRaw = JsonConvert.SerializeObject(value);
//}
}
/// <summary>
/// Navigazione Order
/// </summary>
@@ -340,5 +413,10 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// Navigazione alle righe ProdItem
/// </summary>
public virtual ICollection<ProductionItemModel> ProdItemNav { get; set; } = new List<ProductionItemModel>();
/// <summary>
/// Many-to-many verso associazione con MatReqNav
/// </summary>
public virtual ICollection<MatReqModel> MatReqNav { get; set; } = new List<MatReqModel>();
}
}
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Stats
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Stats
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Stock
namespace EgwCoreLib.Lux.Data.DbModel.Stock
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Stock
namespace EgwCoreLib.Lux.Data.DbModel.Stock
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -0,0 +1,92 @@
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("buy_order")]
public class BuyOrderModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int BuyOrderID { get; set; }
/// <summary>
/// Anno rif Ordine Fornitore
/// </summary>
public int RefYear { get; set; } = DateTime.Today.Year;
/// <summary>
/// Numero prog Ordine nell'anno (da calcolare)
/// </summary>
public int RefNum { get; set; } = 0;
/// <summary>
/// Indice revisione
/// </summary>
public int RefRev { get; set; } = 1;
/// <summary>
/// Codice calcolato Ordine ANNO.NUMERO.REV
/// </summary>
[NotMapped]
public string BuyOrderCode
{
get => $"BO.{RefYear:00}.{RefNum:00000}.{RefRev:00}";
}
/// <summary>
/// Descrizione generale
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Fornitore (quandoa ssegnato, altrimenti è quotazione)
/// </summary>
public int? SupplierID { get; set; } = null;
/// <summary>
/// Ordine assegnato se ho un supplier definito
/// </summary>
[NotMapped]
public bool Assigned => SupplierID != null;
/// <summary>
/// DataOra inserimento
/// </summary>
public DateTime Inserted { get; set; } = DateTime.Now;
/// <summary>
/// DataOra ultima modifica
/// </summary>
public DateTime Modified { get; set; } = DateTime.Now;
/// <summary>
/// DataOra richiesta per il completamento dell'ordine di fornitura
/// </summary>
public DateTime DueDateReq { get; set; } = DateTime.Today.AddDays(30);
/// <summary>
/// note di consegna (opzionali)
/// </summary>
public string ConsNote { get; set; } = "";
/// <summary>
/// Enum stato Ordine Acquisto
/// </summary>
public BuyOrderStates OrderState { get; set; } = BuyOrderStates.Created;
/// <summary>
/// Navigazione Supplier
/// </summary>
[ForeignKey("SupplierID")]
public virtual SupplierModel? SupplierNav { get; set; } = null;
/// <summary>
/// Navigazione alle righe Ordine Acquisto
/// </summary>
public virtual ICollection<BuyOrderRowModel> BuyOrderRowNav { get; set; } = new List<BuyOrderRowModel>();
}
}
@@ -0,0 +1,23 @@
using EgwCoreLib.Lux.Data.DbModel.Warehouse;
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
[Table("buy_order_row_2_mat_req")]
public class BuyOrderRow2MatReqModel
{
public int BuyOrderRowID { get; set; }
public int MatReqID { get; set; }
/// <summary>
/// Quantità richiesta
/// </summary>
public double Qty { get; set; } = 0;
[ForeignKey("BuyOrderRowID")]
public virtual BuyOrderRowModel BuyOrderRowNav { get; set; } = null!;
[ForeignKey("MatReqID")]
public virtual MatReqModel MatReqNav { get; set; } = null!;
}
}
@@ -0,0 +1,107 @@
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("buy_order_row")]
public class BuyOrderRowModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int BuyOrderRowID { get; set; }
/// <summary>
/// ID Ordine di acquisto di riferimento
/// </summary>
public int BuyOrderID { get; set; }
/// <summary>
/// Riga Ordine (per ordinamento)
/// </summary>
public int RowNum { get; set; } = 0;
/// <summary>
/// ID dell'item richiesto (se disponibile)
/// </summary>
public int? ItemID { get; set; } = null;
/// <summary>
/// Classificazione Item
/// </summary>
public string ClassCode { get; set; } = "";
/// <summary>
/// Descrizione Item
/// </summary>
public string DescriptionCode { get; set; } = "";
/// <summary>
/// Codice Item
/// </summary>
public string ItemCode { get; set; } = "";
/// <summary>
/// Quantità articolo TOTALE
/// </summary>
public double TotQty
{
get => MatReqNav.Sum(x => x.Qty);
}
#if false
/// <summary>
/// Quantità articolo TOTALE
/// </summary>
public double TotQty
{
get => DictOrderRowDetail.Sum(x => x.Value);
}
/// <summary>
/// Dizionario serializzato di RigheOrdine + Qty
/// </summary>
public string OrderRowData { get; set; } = "";
/// <summary>
/// Dizionario escplicito degli OrderRow esplosi rispetto a ItemId delle BOM
/// </summary>
[NotMapped]
public Dictionary<int, double> DictOrderRowDetail
{
get
{
Dictionary<int, double> answ = new();
if (!string.IsNullOrEmpty(OrderRowData) && OrderRowData.Count() > 2)
{
answ = JsonConvert.DeserializeObject<Dictionary<int, double>>(OrderRowData) ?? new();
}
return answ;
}
set
{
OrderRowData = JsonConvert.SerializeObject(value);
}
}
#endif
/// <summary>
/// Navigazione Ordine Acquisto
/// </summary>
[ForeignKey("BuyOrderID")]
public virtual BuyOrderModel? BuyOrderNav { get; set; } = null;
/// <summary>
/// Navigazione Item
/// </summary>
[ForeignKey("ItemID")]
public virtual ItemModel? ItemNav { get; set; } = null;
/// <summary>
/// Many-to-many verso associazione con MatReq
/// </summary>
public virtual ICollection<BuyOrderRow2MatReqModel> MatReqNav { get; set; } = new List<BuyOrderRow2MatReqModel>();
}
}
@@ -1,18 +1,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("item_supplier")]
[Table("buy_supplier")]
public class SupplierModel
{
/// <summary>
@@ -21,13 +13,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
[Key]
public int SupplierID { get; set; }
#if false
/// <summary>
/// Ruolo assocaito da anagrafica esterna
/// </summary>
public int RoleID { get; set; }
#endif
/// <summary>
/// Denominazione se persona giuridica
/// </summary>
@@ -48,12 +33,9 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
/// </summary>
public string VAT { get; set; } = "";
#if false
/// <summary>
/// Navigazione al ruolo
/// Many-to-many with Qualifica Fornitori
/// </summary>
[ForeignKey("RoleID")]
public virtual RoleModel RoleNav { get; set; } = null!;
#endif
public virtual ICollection<SupplierQualifyModel> QualifNav { get; set; } = new List<SupplierQualifyModel>();
}
}
@@ -0,0 +1,15 @@
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
[Table("buy_supplier_qualify")]
public class SupplierQualifyModel
{
public int SupplierID { get; set; }
public string CodGroup { get; set; } = "";
[ForeignKey("SupplierID")]
public virtual SupplierModel SupplierNav { get; set; } = null!;
[ForeignKey("CodGroup")]
public virtual ItemGroupModel GroupNav { get; set; } = null!;
}
}
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Utils
namespace EgwCoreLib.Lux.Data.DbModel.Utils
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -24,7 +16,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
/// Chiave del counter annuale
/// </summary>
public string CountName { get; set; } = "";
/// <summary>
/// Valore dell'ultimo contatore staccato
/// </summary>
@@ -1,7 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Utils
@@ -20,7 +17,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
/// Descrizione
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Numero Item compresi
/// </summary>
@@ -1,7 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Utils
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Utils
namespace EgwCoreLib.Lux.Data.DbModel.Utils
{ // <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
@@ -1,8 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Job;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace EgwCoreLib.Lux.Data.DbModel.Utils
namespace EgwCoreLib.Lux.Data.DbModel.Utils
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -0,0 +1,90 @@
namespace EgwCoreLib.Lux.Data.DbModel.Warehouse
{
[Table("warehouse_material_req")]
public class MatReqModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int MatReqID { get; set; } = 0;
/// <summary>
/// Order cui è riferito
/// </summary>
public int? OrderID { get; set; } = null;
/// <summary>
/// OrderRow cui è riferito (vince su OrderID)
/// </summary>
public int? OrderRowID { get; set; } = null;
/// <summary>
/// DataOra inserimento
/// </summary>
public DateTime Inserted { get; set; } = DateTime.Now;
/// <summary>
/// ID dell'item richiesto
/// </summary>
public int? ItemID { get; set; } = null;
/// <summary>
/// Quantità richiesta per Item (complessiva)
/// </summary>
public double TotQty { get; set; } = 0;
/// <summary>
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
/// </summary>
public string RawItemData { get; set; } = "";
/// <summary>
/// Cod gruppo articolo (per selezione omogenea alternative)
/// </summary>
public string CodGroup { get; set; } = "";
/// <summary>
/// CodArticolo (opzionale)
/// </summary>
public string ItemCode { get; set; } = "";
/// <summary>
/// Desdcrizione item ordinato
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Quantità Item finali relativi al fabbisogno
/// </summary>
public int NumItems { get; set; } = 1;
/// <summary>
/// Indica che è stato processato: generato un ordine di acquisto
/// </summary>
public bool Processed { get; set; } = false;
/// <summary>
/// Navigazione Item Order
/// </summary>
[ForeignKey("OrderID")]
public virtual OrderModel? OrderNav { get; set; } = null;
/// <summary>
/// Navigazione Item OrderRow
/// </summary>
[ForeignKey("OrderRowID")]
public virtual OrderRowModel? OrderRowNav { get; set; } = null;
/// <summary>
/// Navigazione Item
/// </summary>
[ForeignKey("ItemID")]
public virtual ItemModel? ItemNav { get; set; } = null;
/// <summary>
/// Many-to-many verso associazione con BuyOrderRow
/// </summary>
public virtual ICollection<BuyOrderRow2MatReqModel> BuyOrderRowNav { get; set; } = new List<BuyOrderRow2MatReqModel>();
}
}
+3
View File
@@ -0,0 +1,3 @@
global using System.ComponentModel.DataAnnotations;
global using System.ComponentModel.DataAnnotations.Schema;
global using static EgwCoreLib.Lux.Core.Enums;
+1 -5
View File
@@ -1,8 +1,4 @@
using EgwCoreLib.Lux.Core.RestPayload;
using EgwCoreLib.Lux.Data.DbModel.Items;
using Newtonsoft.Json;
namespace EgwCoreLib.Lux.Data.Domains
namespace EgwCoreLib.Lux.Data.Domains
{
public static class BomCalculator
{
@@ -49,12 +49,14 @@
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" />
<PackageReference Include="RestSharp" />
<PackageReference Include="StackExchange.Redis" />
<PackageReference Include="ZiggyCreatures.FusionCache" />
<PackageReference Include="ZiggyCreatures.FusionCache.Backplane.StackExchangeRedis" />
<PackageReference Include="ZiggyCreatures.FusionCache.Serialization.NewtonsoftJson" />
</ItemGroup>
<ItemGroup>
<Folder Include="DbModel\Engine\" />
<Folder Include="Migrations\" />
<Folder Include="Services\Internal\" />
</ItemGroup>
<ItemGroup>
+21
View File
@@ -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;
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) });
}
}
}
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