344 Commits

Author SHA1 Message Date
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 Locatelli 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 Locatelli 39363279d7 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-05-05 11:27:22 +02:00
Samuele Locatelli 4db476b01f refresh 2026-05-05 11:26:29 +02:00
Samuele Locatelli 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 Locatelli edca6ca957 update insomnia test 2026-04-30 15:00:26 +02:00
Samuele Locatelli 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 Locatelli c865420e95 Aggiunti repository + servizi x reports in LUX UI 2026-04-24 17:42:49 +02:00
Samuele Locatelli a9acd2ca69 Commit ultime modifiche info file report 2026-04-24 16:12:43 +02:00
Samuele Locatelli 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 Locatelli d9c59a05a5 Bozza inserimento btn stampa report 2026-04-23 14:43:34 +02:00
Samuele Locatelli f4c7799859 Bozza link download pdf + fix displ BuyOrd 2026-04-23 12:23:08 +02:00
Samuele Locatelli 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 Locatelli 9a2b7fbefe Aggiunta chiamata x record BuyOrder 2026-04-22 10:40:40 +02:00
Samuele Locatelli 301d597dff UPdate REST API test 2026-04-22 10:40:33 +02:00
Samuele Locatelli aaf27bbea7 Centralizzata gestione insert/update ordini 2026-04-22 10:30:29 +02:00
Samuele Locatelli 7521e64053 Update display BuyOrderRow 2026-04-22 09:55:58 +02:00
Samuele Locatelli 09fc6e601c Primo add buyOrder 2026-04-22 09:22:10 +02:00
Samuele Locatelli 46148de703 test positivo creazione ordini fornitore 2026-04-21 18:38:22 +02:00
Samuele Locatelli c2d1d20730 Update metodo repository x creazone
BuyOrder - BuyOrderRow - MatReq (link)
2026-04-21 18:19:05 +02:00
Samuele Locatelli f28649c58a Fix migrazione e metodo preliminare repository x insert nuovi ordini fornitore 2026-04-21 18:12:04 +02:00
Samuele Locatelli 3acf0fd545 Completata logica selezione righe fabbisogni x creazione BuyOrder 2026-04-21 16:39:30 +02:00
Samuele Locatelli 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 Locatelli 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 Locatelli d05768c7eb Fix api x cache metodo ord/ordRow non esatti + update insomnia 2026-04-20 16:06:03 +02:00
Samuele Locatelli 7fe2bb284b Aggiunta metodi x recupero REST degli ordini fabbisogni 2026-04-17 18:06:25 +02:00
Samuele Locatelli 87f9e25692 Fix gestione Ferramenta (no ItemID...) 2026-04-17 17:52:28 +02:00
Samuele Locatelli e7d821bb68 Update migrations e struttura ext ref key 2026-04-17 17:40:38 +02:00
Samuele Locatelli 451275fbce Modifica ulteriore tracciato fabbisogni e review migrazioni relative 2026-04-17 17:09:47 +02:00
Samuele Locatelli b024f32740 Fix migrazione x gestione fabbisogni (iniziale) 2026-04-17 16:48:20 +02:00
Samuele Locatelli 0dfdbb67a4 Update struttura modelli con nuove info x rawItem (es barre) 2026-04-17 16:41:02 +02:00
Samuele Locatelli 13e17a28ae Fix ritorno BOM su Ordini 2026-04-17 12:35:21 +02:00
Samuele Locatelli da7cfb9668 Spostamento servizi warehouse + inserimento prime funzioni calcolo fabbisogni 2026-04-17 12:07:08 +02:00
Samuele Locatelli 863cb3d3a9 Bozza info x stato ordine (display fabbisogni presenti) 2026-04-17 10:13:28 +02:00
Samuele Locatelli 0b21a06a45 Aggiunta CI/CD x report server + relativo deploy 2026-04-17 09:42:32 +02:00
Samuele Locatelli e4beba61e2 Continuo implementazione repo fabbisogni 2026-04-17 09:40:10 +02:00
Samuele Locatelli 6d020b1201 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-17 09:39:24 +02:00
Samuele Locatelli c7005ec513 completo modifiche deploy 2026-04-17 09:38:25 +02:00
Samuele Locatelli 593ebfce5e Aggiunta publish profile x repSrv e primo test pubblicazione da VS2026 2026-04-17 09:38:10 +02:00
Samuele Locatelli 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 Locatelli 35eab707a4 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-14 17:42:51 +02:00
Samuele Locatelli 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 Locatelli 2b30e7e8bb Aggiunta migrazione x BuyOrder 2026-04-14 12:25:10 +02:00
Samuele Locatelli 0ff38c19a4 Completo repository BuyOrder + aggiungo repository BuyOrderRow 2026-04-14 12:06:29 +02:00
Samuele Locatelli ce4a42265e Bozza itnerfacce BuyOrder/OrderRow 2026-04-14 11:40:11 +02:00
Samuele Locatelli acf43e8f43 Implementazione interfaccia + repository x supplier 2026-04-14 11:40:01 +02:00
Samuele Locatelli 9a111d2b8a Aggiunta area BuyOrder
- spostato SUppliers
- creato order/OrderRow x acquisti
- migratoin + update DB
2026-04-14 11:24:01 +02:00
Samuele Locatelli 0742741b91 Prima versione con LUX download attivato! 2026-04-10 15:43:17 +02:00
Samuele Locatelli 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 Locatelli 1f16e654ab Fix gestione report con check file tempalte 2026-04-09 15:01:57 +02:00
Samuele Locatelli 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 Locatelli 52f1bd94ef Update gestione ceck esistenza tipo report (da subfolder) 2026-04-09 12:18:23 +02:00
Samuele Locatelli f3bfe84fe3 Completata gestione report x preview con parametri dinamici 2026-04-09 11:34:04 +02:00
Samuele Locatelli 99f1936e87 Selezione template report da elenco attivata 2026-04-09 10:55:59 +02:00
Samuele Locatelli 29b8b2982d Prima bozza visualizzatore reports 2026-04-09 09:54:31 +02:00
Samuele Locatelli 0723f607ab Continuo implementazione viewer 2026-04-09 09:05:57 +02:00
Samuele Locatelli 479f652514 Update parziale apgina srv x view/export reports 2026-04-08 18:51:52 +02:00
Samuele Locatelli 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 Locatelli 105e29f577 Update con refresh conteggio template disponibili 2026-04-08 17:26:21 +02:00
Samuele Locatelli 5ce82b0e19 Aggiunta metodi conteggio e lista file senza template nascosti + clone/copy template 2026-04-08 17:24:24 +02:00
Samuele Locatelli 3cfb050874 Update layout grafico MainLayout + footer + version 2026-04-08 16:47:13 +02:00
Samuele Locatelli f900437399 Aggiunta pipeline x compilazione ReportManager + deploy su IIS01 2026-04-08 16:28:22 +02:00
Samuele Locatelli 2707f9e023 Update file x pubblicazione 2026-04-08 16:25:43 +02:00
Samuele Locatelli fb38958765 Aggiunta conf XML x pubblicazione sito RepMan 2026-04-08 16:25:37 +02:00
Samuele Locatelli bccbc9c079 Continuo fix gestione editing report DevExpress 2026-04-08 15:59:40 +02:00
Samuele Locatelli be16a428f7 Update gestione elenco report 2026-04-07 18:39:46 +02:00
Samuele Locatelli 54e707ff08 Continuo implementazione report mgmt 2026-04-07 16:54:53 +02:00
Samuele Locatelli d8388b2746 implementazione preliminare repository x report 2026-04-07 16:54:42 +02:00
Samuele Locatelli ae21e4ba55 Update struttura dati + migrations 2026-04-07 16:54:31 +02:00
Samuele Locatelli 58359adc9b Continuo conf dei parametri webapp report 2026-04-07 16:04:55 +02:00
Samuele Locatelli 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 Locatelli 366e6adc94 Completo reorg helpers immagini da API 2026-04-02 15:48:02 +02:00
Samuele Locatelli e3fc22a553 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-02 15:08:04 +02:00
Samuele Locatelli 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 Locatelli 4c21b97bc9 Inizio fix templates img 2026-04-01 18:44:26 +02:00
Samuele Locatelli 3c4b697292 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 18:34:34 +02:00
Samuele Locatelli 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 Locatelli da13dbc417 Inizio semplificazione imgUrl in UI 2026-04-01 12:59:16 +02:00
Samuele Locatelli 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 Locatelli fee246f3fe Prime immagini sistemate... 2026-04-01 12:34:05 +02:00
Samuele Locatelli 3977b5398f Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-04-01 12:28:59 +02:00
Samuele Locatelli 0b04856907 Inizio modifica img cache x API 2026-04-01 12:28:57 +02:00
Samuele Locatelli 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 Locatelli 7a3d9bb81c fIX REPORT: FINALMENTE è DINAMICO! 2026-04-01 11:26:51 +02:00
Samuele Locatelli 194208fd89 Finto fix img url 2026-04-01 10:40:05 +02:00
Samuele Locatelli 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 Locatelli 24e3b63980 update parziale report controller 2026-03-31 18:47:34 +02:00
Samuele Locatelli bd51f368b1 Fix json output con serializzazione globale + update return x Report controller API 2026-03-31 18:33:33 +02:00
Samuele Locatelli e405942d03 Fix log x controllers File e Report 2026-03-31 18:22:10 +02:00
Samuele Locatelli 7ac353e8c6 Aggiunta sorgente dati JSON x Offerta + righe 2026-03-31 17:09:39 +02:00
Samuele Locatelli 2bd50a4bc6 Update test insomnia x report JSON via API 2026-03-31 17:03:21 +02:00
Samuele Locatelli 19b4b8ccf0 Aggiunta metodi x REST call API con risposta JSON delle offerte 2026-03-31 16:58:03 +02:00
Samuele Locatelli 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 Locatelli 25c6ba7fd2 Fix selezione template da elenco 2026-03-30 17:22:00 +02:00
Samuele Locatelli 0c6c2ac78e Fix gestione insert da template 2026-03-30 16:25:03 +02:00
Samuele Locatelli b0e6f410f6 Refresh 2026-03-30 16:01:59 +02:00
Samuele Locatelli 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 Locatelli 7909d68b29 Aggiunta preliminare gestione update JWD da template secondo parametri preselezionati 2026-03-30 12:24:25 +02:00
Samuele Locatelli 3eafecd756 Update parziale componente x gestione modifiche parametri 2026-03-30 11:21:59 +02:00
Samuele Locatelli c7128e19a8 Update ciclo aggiornamento dictParamReq 2026-03-27 18:55:08 +01:00
Samuele Locatelli d9d0ee9e28 Update componente WebWindow e test parziale 2026-03-27 18:10:59 +01:00
Samuele Locatelli 3ba155eb99 Aggiunta update display offerte x modifiche pending 2026-03-27 17:30:01 +01:00
Samuele Locatelli efc0f0ebb1 Aggiunta migration con nuova colonna dati x pendingReq configurazione righe ordine 2026-03-27 17:14:18 +01:00
Samuele Locatelli db29fc6274 Update x gestione parametri... 2026-03-27 12:23:13 +01:00
Samuele Locatelli 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 Locatelli e0d2323f5d Ancora fix warnings compilazione 2026-03-25 16:16:55 +01:00
Samuele Locatelli d039202670 Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-03-25 16:13:42 +01:00
Samuele Locatelli 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 Locatelli 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 Locatelli 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 Locatelli 45c2f9bb45 Fix Using x progetto UI 2026-03-25 09:05:06 +01:00
Samuele Locatelli 678c01a668 Ancora fix API 2026-03-25 08:33:53 +01:00
Samuele Locatelli 009dca4f75 Fix global Using in API proj 2026-03-25 08:32:52 +01:00
Samuele Locatelli ac397783be Completo refactor using in classi Lux.Data 2026-03-25 08:24:25 +01:00
Samuele Locatelli 8530434732 Fix namespace in repository 2026-03-25 07:27:51 +01:00
Samuele Locatelli a692e1edb4 Continuo implementazione DAL (mancano repo e services) 2026-03-25 07:24:21 +01:00
Samuele Locatelli ab197081d3 Riorganizzazione pesante namespace con global using & co (inizio) 2026-03-25 07:19:45 +01:00
Samuele Locatelli 29b9fcb3a9 Refresh vers 2026-03-24 19:08:31 +01:00
Samuele Locatelli 1f2a89e6f0 Aggiunta metodi RedisService x ProdService 2026-03-24 18:58:04 +01:00
Samuele Locatelli 9fe3f55843 Fix display download solo ove coerente in OfferRow 2026-03-24 18:28:27 +01:00
Samuele Locatelli 1f792414ff Fix imagecaches ervice: usa metodiposti da RedisService x flush 2026-03-24 18:26:50 +01:00
Samuele Locatelli f1a1abd01c Fix dispose x MessagePipe e RedisSubscriptionManager 2026-03-24 18:16:12 +01:00
Samuele Locatelli 0be708298d Fix file controller x download jwd 2026-03-24 17:29:44 +01:00
Samuele Locatelli 30168c4b2f Cleanup obj/metodi inutilizzati 2026-03-24 16:54:00 +01:00
Samuele Locatelli 93fb00f578 Merge tag 'MoveCompoGroup' into develop
Spostamento componenti in subfolder specifiche
2026-03-24 16:43:24 +01:00
Samuele Locatelli 14f0a59735 Merge branch 'release/MoveCompoGroup' 2026-03-24 16:43:07 +01:00
Samuele Locatelli 2fda59f6f0 Rimozione compo inutilizzato 2026-03-24 16:42:49 +01:00
Samuele Locatelli b0e1dcee8a Fix GenValMan/GenList 2026-03-24 16:41:19 +01:00
Samuele Locatelli d8abf28daa Spostamento compo generic 2026-03-24 16:38:41 +01:00
Samuele Locatelli 2e40246d1f Move common e order compo 2026-03-24 16:34:48 +01:00
Samuele Locatelli 1e6efc742f Continuo spostamenti offer 2026-03-24 16:29:23 +01:00
Samuele Locatelli c1db6ca7af Update spostamento componenti offerta 2026-03-24 16:25:53 +01:00
Samuele Locatelli 29765b910c Update gestione offerte + spostamento in components 2026-03-24 16:25:00 +01:00
Samuele Locatelli 742243a535 Fix gestione immagini offerta 2026-03-24 16:20:39 +01:00
Samuele Locatelli 4b5c8b2252 Update gesitone async contesto di transazione su DB 2026-03-24 16:01:34 +01:00
Samuele Locatelli c80e6dbf48 Fix gestione note offerta (inseribili dopo riga item) 2026-03-24 16:01:22 +01:00
Annamaria Sassi c071537424 Layout Template 2026-03-24 13:26:25 +01:00
Samuele Locatelli f91edeee5e Merge tag 'FixSavetemplateRow_serStruct' into develop
Completo Fix x TemplateRow che dava errori upsert SerStruct
2026-03-24 13:04:47 +01:00
Samuele Locatelli 190495b7db Merge branch 'release/FixSavetemplateRow_serStruct' 2026-03-24 13:04:28 +01:00
Samuele Locatelli 27f9277f6b Ancora fix templateRow 2026-03-24 13:03:57 +01:00
Samuele Locatelli 7ef594326d Fix interface IIDataLayerServices x metodi non riportati + Fix save TemplateRow 2026-03-24 13:03:51 +01:00
Samuele Locatelli 53e69c0b78 Completamento move DataLayerServices 2026-03-24 12:55:16 +01:00
Samuele Locatelli fe03d05930 Merge tag 'CompleteServiceMove' into develop
Completamento move dei servizi + refactor vari x ottimizzarne la
gestione
2026-03-24 12:38:06 +01:00
Samuele Locatelli e6914a4844 Merge branch 'release/CompleteServiceMove' 2026-03-24 12:37:47 +01:00
Samuele Locatelli 0685c93139 Spostamento StatsCollectServices 2026-03-24 12:31:58 +01:00
Samuele Locatelli f91920790e Move di RedisSubscriptionManager 2026-03-24 12:29:23 +01:00
Samuele Locatelli 2020eb6345 Spostamento MessagePipe in subfolder Internal 2026-03-24 12:20:44 +01:00
Samuele Locatelli e2028e0a4f Ancora fix per move RedisServices in General folder 2026-03-24 12:02:36 +01:00
Samuele Locatelli 60b054670d mOVE SERVIZI REDIS PER INIT 2026-03-24 11:59:48 +01:00
Samuele Locatelli 019d92c270 Renaming async metodi ProdService 2026-03-24 11:50:22 +01:00
Samuele Locatelli e5bc914931 Fix interfaccia prodservice 2026-03-24 11:47:25 +01:00
Samuele Locatelli ca7c964eb1 implementazioe meccasmo di lock al processing risposte su ch Pub/Sub via Redis 2026-03-24 11:40:44 +01:00
Samuele Locatelli d45bbf6584 Fix configurazioni in Async 2026-03-24 11:14:47 +01:00
Samuele Locatelli c736cbc801 Fix API proj file 2026-03-24 10:39:57 +01:00
Samuele Locatelli 946397bede Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-03-24 10:39:03 +01:00
Samuele Locatelli f1d4c26764 Fix naming convention: Async sui reloadDAta asincroni 2026-03-24 10:39:01 +01:00
Annamaria Sassi 0e6faace39 Gestione modifica campi delivery offerta 2026-03-24 10:36:13 +01:00
Samuele Locatelli 12d1090540 Completo le modifiche del config data service in async x ottimizzare chaimate 2026-03-24 10:31:19 +01:00
Samuele Locatelli 869ec0ef1c Inizio migrazione ProdService 2026-03-24 10:22:15 +01:00
Samuele Locatelli a59e256c98 Rename metodi cancel x offerta + rimozione step final check offerta 2026-03-24 10:05:09 +01:00
Samuele Locatelli 67b8d15334 Fix metodo cancel edit offerta 2026-03-24 10:01:32 +01:00
Annamaria Sassi bea6909bee Merge branch 'develop' of https://gitlab.steamware.net/etis/lux into develop 2026-03-24 09:37:02 +01:00
Annamaria Sassi 60ecb70e38 Gestione modifica campi generali offerta 2026-03-24 09:36:55 +01:00
Samuele Locatelli a154539950 Ancora fileservice 2026-03-24 09:34:46 +01:00
Samuele Locatelli 3b3a02580e move + fix namespace per FileService 2026-03-24 09:31:30 +01:00
Samuele Locatelli 2a18895363 Aggiunta interfaccia x servizio CalcRequest 2026-03-24 09:24:04 +01:00
Samuele Locatelli 6cf54dc715 Modifica servizio CalcRequestService 2026-03-24 09:22:19 +01:00
Samuele Locatelli 02f0150d09 Fix integrazione servizio ConfigDataService 2026-03-24 08:33:51 +01:00
Samuele Locatelli d4cfe83a9e ancora fix selezione metodo 2026-03-24 08:30:59 +01:00
Samuele Locatelli 23bf2f0b65 Fix gestione ConfigDataService con interfaccia 2026-03-24 08:30:52 +01:00
Samuele Locatelli ae68fe976d Fix metodi ImageCache x minro fix 2026-03-24 08:23:15 +01:00
Samuele Locatelli 3f839c17f1 Completo move CalcRuidService 2026-03-24 07:25:55 +01:00
Samuele Locatelli 9d0c18c3b8 cleanup commenti 2026-03-24 07:18:58 +01:00
Samuele Locatelli 4c1d09942f Clenaup + move CalcRuid in fer General 2026-03-24 07:18:44 +01:00
Samuele Locatelli 32b5a94a51 Ancora review metodi da interface 2026-03-23 19:46:00 +01:00
Samuele Locatelli 17201d746f Refresh (da testare) 2026-03-23 19:39:17 +01:00
Samuele Locatelli 4cef12e37f Fix CalcRuid x interface 2026-03-23 19:39:11 +01:00
Samuele Locatelli 0e1c22f96b Reorg progetto CalcRuid 2026-03-23 19:13:11 +01:00
Samuele Locatelli 3124f08474 refresh 2026-03-23 19:01:40 +01:00
Samuele Locatelli f8441f933f Move ImageCacheServices + fix vari in cascata 2026-03-23 19:01:36 +01:00
Samuele Locatelli e987a80d29 Review metodo chiamata RestSharp x CalcRequest 2026-03-23 18:55:31 +01:00
Samuele Locatelli c5d3ee3504 Rimozione metodi inutilizzati in repository x updateCost, oltretutto antipattern 2026-03-23 18:21:11 +01:00
Samuele Locatelli 8c957edad8 Update x gestione metodi upsert 2026-03-23 17:17:31 +01:00
Samuele Locatelli 84144b4beb Fix metodi folder Offer 2026-03-23 10:25:42 +01:00
Samuele Locatelli 151224bc56 Update gestione selezione detail preview offerte 2026-03-23 09:50:40 +01:00
Samuele Locatelli b2b3ed53e1 Merge tag 'AddMigratedDataServicesResult' into develop
Completata migrazione DataServices con
- rimozione LuxControler
- Mantenimento DataLayerServices come solo facade di instradamento
- nuovo pattern repository + Services x dominio
- testing vario
2026-03-21 12:47:56 +01:00
Samuele Locatelli 29112f8f48 Merge branch 'release/AddMigratedDataServicesResult' 2026-03-21 12:47:17 +01:00
Samuele Locatelli 320d2626fb Merge branch 'feature/MigrateDataLayerService' into develop 2026-03-21 12:46:41 +01:00
Samuele Locatelli 00868a24c0 Code Cleanup commenti! 2026-03-21 12:46:11 +01:00
Samuele Locatelli db89b3d0d3 Completato cleanup metodi rimasti in DataLayer gestiti altrove 2026-03-21 12:45:14 +01:00
Samuele Locatelli a288ed6a5b Fix nome parametro batch 2026-03-21 12:38:07 +01:00
Samuele Locatelli 9388ad6493 Fix stored ProductioBatch + fix DataLayerService commenti 2026-03-21 12:20:42 +01:00
Samuele Locatelli ec58c870ea Completata dismissione LuxController!!! 2026-03-21 12:14:35 +01:00
Samuele Locatelli 4916dd42ff Migrazione controller stats e CalcRuid (complessa...) 2026-03-21 11:33:49 +01:00
Samuele Locatelli 4aa21de3b7 Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-20 19:03:44 +01:00
Samuele Locatelli 1b4c4d7cb8 Continuo porting metodi 2026-03-20 19:03:32 +01:00
Samuele E. Locatelli (W11-AI) 10cecc4139 Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-20 15:38:11 +01:00
Samuele E. Locatelli (W11-AI) 1cc55a6057 Aggiunta conf opencode (da valutare vs continue) 2026-03-20 15:38:05 +01:00
Samuele Locatelli 669b5b36f1 Update componente window x display corretto 2026-03-20 10:41:52 +01:00
Samuele Locatelli 252f07cb29 Continuo embedding metodi profile 2026-03-20 08:27:38 +01:00
Samuele Locatelli 07eacd022e Spostamento altri metodi... 2026-03-19 16:42:19 +01:00
Samuele Locatelli 72a880fb11 Spostamento metodi PROD da DataLayer + fix Cache namespace 2026-03-19 16:07:02 +01:00
Samuele Locatelli 0d5e3b6698 Refresh 2026-03-19 14:36:29 +01:00
Samuele Locatelli a205f4f77e Continuo implementazione Repo/Serv spostati 2026-03-19 14:36:24 +01:00
Samuele Locatelli 40193db94f Semplificazione init Repo/Servizi x DI 2026-03-19 14:36:03 +01:00
Samuele Locatelli 1d5e80df53 Code cleanup 2026-03-19 12:15:30 +01:00
Samuele Locatelli 9f8ce27816 migrazione repo/Service ProdItem x assegnazioni prodGroup / prodBatch 2026-03-19 10:13:18 +01:00
Samuele Locatelli 7b4b3294f0 Aggiunto metodi x CostDriver e ProdItem come Repo/service 2026-03-19 09:37:15 +01:00
Samuele Locatelli 85ea97634e FIX DI/inclusione ProdGroup per Repo/service in UI 2026-03-18 19:29:28 +01:00
Samuele E. Locatelli (W11-AI) 72627f8128 Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 19:27:21 +01:00
Samuele E. Locatelli (W11-AI) 912af1e60e Aggiunta commenti, part I 2026-03-18 19:27:19 +01:00
Samuele Locatelli fd40a6906f Move Repo/Serv x TagModel... 2026-03-18 19:25:50 +01:00
Samuele Locatelli 2b97d85014 Completo move Repo/Serv di ProdGroup 2026-03-18 19:18:43 +01:00
Samuele Locatelli 3081e8a908 Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 18:56:28 +01:00
Samuele Locatelli 0b58359db7 Completo porting ItemGroup 2026-03-18 18:56:24 +01:00
Samuele Locatelli d4f26def6f Aggiunta ItemGroup Repo/Serv 2026-03-18 18:52:59 +01:00
Samuele E. Locatelli (W11-AI) 1ec15d956d Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 18:50:42 +01:00
Samuele E. Locatelli (W11-AI) d2de5f4657 Fix null input vari 2026-03-18 18:50:37 +01:00
Samuele Locatelli 3b311a8ce1 Completo porting nuove classi Customer/Dealer 2026-03-18 18:45:21 +01:00
Samuele Locatelli 95ed44155b Update nuovi servizi (da completare) 2026-03-18 18:39:24 +01:00
Samuele Locatelli 8d9ddaa4a0 Update conf x cache GetAll lato key REDIS 2026-03-18 18:39:16 +01:00
Samuele Locatelli b375148943 Aggiunta Repo/Serv x Customer/Dealers 2026-03-18 18:38:57 +01:00
Samuele Locatelli 58f130e059 Move Repo/servizio counters (NON impiegato al momento) 2026-03-18 18:26:38 +01:00
Samuele E. Locatelli (W11-AI) 2310fa020a Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 18:11:31 +01:00
Samuele E. Locatelli (W11-AI) 2c1bf139c9 Fix controli null ingresso 2026-03-18 18:11:29 +01:00
Samuele Locatelli e3b9c6e0e7 Eliminazione commenti e fix nome servizi 2026-03-18 18:09:43 +01:00
Samuele Locatelli e73766589d Migrazione serivce/repository production 2026-03-18 18:07:02 +01:00
Samuele Locatelli f59d4c9876 Inizio aggiunta repo/servizi x ProdPlant 2026-03-18 16:20:10 +01:00
Samuele Locatelli b629b5ce1f Inizio inserimento info Production 2026-03-18 16:14:56 +01:00
Samuele Locatelli cb51e3f7fc registrazione repository/servizi orderRow 2026-03-18 16:14:47 +01:00
Samuele Locatelli 5593ddc7fc Code cleanup 2026-03-18 13:16:30 +01:00
Samuele Locatelli edaa834a9c Completato sostituzione metodi (DA TESTARE!!!) 2026-03-18 13:15:07 +01:00
Samuele Locatelli 490011bae5 Fix metodo post merge... 2026-03-18 13:05:08 +01:00
Samuele Locatelli cc9e69efda Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 13:03:29 +01:00
Samuele Locatelli 7b72561b8f Fix img calcolata x update offerta su serStruc e FileData 2026-03-18 12:58:56 +01:00
Samuele E. Locatelli (W11-AI) 0d47f1ae7c Correzioni minori update OfferRow 2026-03-18 12:58:21 +01:00
Samuele Locatelli 35ba495030 Completo implementazione base porting OrdeRow a servizio a se 2026-03-18 12:44:27 +01:00
Samuele Locatelli 274f0ed3ae Inizio aggiunta servizi OrderRow e metodi relativi (DA PROVARE) 2026-03-18 12:29:25 +01:00
Samuele Locatelli 0b3fb477dd Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 11:20:47 +01:00
Samuele Locatelli dc63e7677d Aggiungo force ricalcolo immagine (non basta maybe) 2026-03-18 11:20:45 +01:00
Samuele E. Locatelli (W11-AI) 66e8eae0f1 Aggiunta transaction x Offer, OfferRow, Order e GenVal 2026-03-18 10:59:04 +01:00
Samuele Locatelli 3964eddd45 Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 10:30:02 +01:00
Samuele Locatelli b1d69ba8f8 Refresh e inizio interfaccia OrderRow 2026-03-18 10:29:59 +01:00
Samuele Locatelli 93ffb43953 Aggiunta pagina distinta x selling vs buy items 2026-03-18 10:29:39 +01:00
Samuele Locatelli fc5c4f6abd ELiminazione commenti 2026-03-18 10:29:22 +01:00
Samuele E. Locatelli (W11-AI) 36e3c59114 Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 10:25:57 +01:00
Samuele E. Locatelli (W11-AI) d587ee3a45 Update transaction x jobs repository 2026-03-18 10:25:42 +01:00
Samuele Locatelli 99d64bdb60 Fix clona x servizi/prodotti vendita 2026-03-18 09:30:36 +01:00
Samuele Locatelli 0214ebec10 Merge branch 'feature/MigrateDataLayerService' of https://gitlab.steamware.net/etis/lux into feature/MigrateDataLayerService 2026-03-18 09:17:56 +01:00
Samuele Locatelli e52d64bd08 Fix nuova nota 2026-03-18 09:17:54 +01:00
Samuele E. Locatelli (W11-AI) 349cce9462 Aggiunta transactionx clone/save rows 2026-03-18 09:17:30 +01:00
Samuele Locatelli e5f0d7976a Fix button ricalcolo prezzi/BOM x offerta 2026-03-18 08:29:10 +01:00
Samuele Locatelli 273fa4fc0c Migration + fix gestione note in offerta 2026-03-18 08:12:19 +01:00
Samuele Locatelli 0813e3b2d2 Fix delete righe offerta + fix (maybe) calcolo BOM selettivo 2026-03-18 07:22:10 +01:00
Samuele Locatelli b55d30654f Primi test OrderRow sembra OK 2026-03-18 07:05:53 +01:00
Samuele Locatelli ea228a9691 Da testare ma completato porting OrderRows 2026-03-17 19:17:49 +01:00
Samuele Locatelli a6f42b827e Inizio migrazione metodi OfferRow 2026-03-17 18:33:05 +01:00
Samuele Locatelli 5b74509348 Rimozione commenti 2026-03-17 17:10:35 +01:00
Samuele Locatelli 0404435ec3 Implementazione testata ordini 2026-03-17 17:09:41 +01:00
Samuele Locatelli f5181dd4f3 Inizio implementazione Repositori x Offerte (Testata) 2026-03-17 16:25:49 +01:00
Samuele Locatelli 870cf85e3f Migrazione gestione risorse in obj separati (Repository/Service) 2026-03-17 15:23:05 +01:00
Samuele Locatelli 3ec1511aec pulizia commenti 2026-03-17 14:56:46 +01:00
Samuele Locatelli 9989c7767e Review namespace Task --> Job + fix JobStep/JobTask 2026-03-17 14:54:16 +01:00
Samuele Locatelli 7c5adc9012 Fix implementazione parametrica cache x servizi 2026-03-17 11:35:38 +01:00
Samuele Locatelli 0f61efdf58 Code cleanup 2026-03-17 11:19:21 +01:00
Samuele Locatelli 3079068c62 Implementazione repository/servizio x ITEM 2026-03-17 11:17:27 +01:00
Samuele Locatelli f70814d444 Review schema gestione repository x evitare concorrezza contesto DbContext 2026-03-17 09:15:52 +01:00
Samuele Locatelli afaa9a5516 INserito servizi, problemi primo render (due chiamate sovrapposte da gestire?) 2026-03-16 19:09:37 +01:00
Samuele Locatelli 8195f63702 Aggiunta repository x Glass, Profile, Wood e servizi (da integrare) 2026-03-16 18:47:16 +01:00
Samuele Locatelli ac6695e7b0 Completato porting/estrazione Template e Template Row da DataLayer 2026-03-16 11:27:33 +01:00
Samuele Locatelli 2e05e8cac6 ELiminazione vecchio metodo validazione bom embedded in DataLayer 2026-03-16 09:41:54 +01:00
Samuele Locatelli 9e1946c636 Code cleanup 2026-03-16 09:38:57 +01:00
Samuele Locatelli d560cf97d9 Impiego nuovi servizi implementati 2026-03-16 09:37:26 +01:00
Samuele Locatelli 6a1e5ff3f3 implementazione servizi x gestione Template 2026-03-16 09:37:18 +01:00
Samuele Locatelli 5d656f2dce Spostamento area BomCalculator 2026-03-16 09:36:50 +01:00
Samuele Locatelli 179d358604 Inizio implementazione template service (DA TESTARE e spostare fuori) 2026-03-14 17:17:27 +01:00
Samuele Locatelli 26f64d1ecf inizio porting template
- oggetto statico BomCalculator
- sezioni #if true in LuxController
- creazione Repository
2026-03-14 17:10:06 +01:00
Samuele Locatelli 8897c3cc3b Riorganizzazione area Template in Catalog x estrazione metodi 2026-03-14 16:29:27 +01:00
Samuele Locatelli 2588ef155c Fix filtro logging da console 2026-03-14 16:21:22 +01:00
Samuele Locatelli ae634079f9 Completo spostamento Utils.GenClass eUtils. GenVal da oggetti generici a repository/servizi specializzati e separati 2026-03-14 16:09:11 +01:00
988 changed files with 307796 additions and 17549 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:
+18 -12
View File
@@ -8,11 +8,17 @@
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageVersion>
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.3.916" />
<PackageVersion Include="Egw.Lux.WebWindowComplex" Version="3.1.3.916" />
<PackageVersion Include="DevExpress.AspNetCore.Reporting" Version="25.2.5" />
<PackageVersion Include="DevExpress.Blazor" Version="25.2.5" />
<PackageVersion Include="DevExpress.Blazor.Reporting.JSBasedControls" Version="25.2.5" />
<PackageVersion Include="DevExpress.Blazor.Reporting.Viewer" Version="25.2.5" />
<PackageVersion Include="Microsoft.CodeAnalysis" Version="5.3.0" />
<PackageVersion Include="Microsoft.Data.Sqlite" Version="10.0.5" />
<PackageVersion Include="Egw.Lux.WebWindow.Base" Version="3.1.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.2605.511" />
<PackageVersion Include="EgwCoreLib.Utils" Version="1.5.2605.511" />
<PackageVersion Include="EgwMultiEngineManager.Data" Version="3.1.1.2" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly" Version="8.0.23" />
<PackageVersion Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="8.0.23" />
@@ -29,16 +35,16 @@
<PackageVersion Include="Microsoft.Extensions.Configuration.Binder" Version="9.0.12" />
<PackageVersion Include="Microsoft.Extensions.Hosting.Abstractions" Version="9.0.12" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
<PackageVersion Include="NLog" Version="6.0.7" />
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.6" />
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.0" />
<PackageVersion Include="NLog" Version="6.1.2" />
<PackageVersion Include="NLog.Targets.OpenTelemetryProtocol" Version="1.2.7" />
<PackageVersion Include="NLog.Web.AspNetCore" Version="6.1.2" />
<PackageVersion Include="OpenTelemetry.Api" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Exporter.Console" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Exporter.OpenTelemetryProtocol" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Extensions.Hosting" Version="1.15.3" />
<PackageVersion Include="OpenTelemetry.Instrumentation.AspNetCore" Version="1.15.2" />
<PackageVersion Include="OpenTelemetry.Instrumentation.EntityFrameworkCore" Version="1.15.0-beta.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.0" />
<PackageVersion Include="OpenTelemetry.Instrumentation.Http" Version="1.15.1" />
<PackageVersion Include="OpenTelemetry.Instrumentation.StackExchangeRedis" Version="1.15.0-beta.1" />
<PackageVersion Include="Pomelo.EntityFrameworkCore.MySql" Version="8.0.3" />
<PackageVersion Include="Radzen.Blazor" Version="8.6.5" />
+35
View File
@@ -0,0 +1,35 @@
namespace EgwCoreLib.Lux.Core
{
public static class CloneExtensions
{
#region Public Methods
/// <summary>
/// Clone profondo tramite serializzazione/deserializzazione di obj generici
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="obj"></param>
/// <returns></returns>
public static T DeepClone<T>(this T obj)
{
// Configurazione serializzatore JSON per risolvere errore di loop circolare
var JSSettings = new JsonSerializerSettings()
{
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
var json = JsonConvert.SerializeObject(obj, JSSettings);
return JsonConvert.DeserializeObject<T>(json)!;
}
/// <summary>
/// Comparatore statico tra entità
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="original"></param>
/// <param name="edited"></param>
/// <returns></returns>
public static bool IsChanged<T>(T original, T edited) => !EqualityComparer<T>.Default.Equals(original, edited);
#endregion Public Methods
}
}
@@ -1,10 +1,4 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
//// <Auto-Generated>
//// <Auto-Generated>
//// This is here so CodeMaid doesn't reorganize this document
//// </Auto-Generated>
namespace EgwCoreLib.Lux.Core
@@ -12,7 +6,7 @@ namespace EgwCoreLib.Lux.Core
/// <summary>
/// Configurazione costanti applicative
/// </summary>
public class Constants
public class Const
{
// dati conf REDIS Cache
@@ -1,12 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Core
namespace EgwCoreLib.Lux.Core
{
public class DtUtils
public class DateTimeUtils
{
/// <summary>
/// Formattazione dataora fissa come HH:mm:ss
+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; } = "";
}
}
+98 -19
View File
@@ -4,6 +4,19 @@
{
#region Public Enums
/// <summary>
/// Stato compilazione offerta
/// </summary>
public enum CompileStep
{
Draft = 0,
Header = 1,
General,
Rows,
Delivery,
FinalCheck
}
public enum DisplayMode
{
Standard,
@@ -44,6 +57,27 @@
JobCycle
}
/// <summary>
/// Tipologia immagine
/// </summary>
public enum ImageType
{
/// <summary>
/// Non definita (da calcolare...)
/// </summary>
ND = 0,
/// <summary>
/// Calcolata (es JWD, BTL)
/// </summary>
Calculated,
/// <summary>
/// Fissa (tipicamente prodotto da rivendita/servizio)
/// </summary>
Fixed
}
/// <summary>
/// Tipologia item (classe/natura articolo)
/// </summary>
@@ -77,25 +111,6 @@
BomAlt
}
/// <summary>
/// Tipologia immagine
/// </summary>
public enum ImageType
{
/// <summary>
/// Non definita (da calcolare...)
/// </summary>
ND = 0,
/// <summary>
/// Calcolata (es JWD, BTL)
/// </summary>
Calculated,
/// <summary>
/// Fissa (tipicamente prodotto da rivendita/servizio)
/// </summary>
Fixed
}
/// <summary>
/// Tipologia item per Source (modalità costruzione)
/// </summary>
@@ -147,6 +162,9 @@
Lost
}
/// <summary>
/// Status ordini cliente
/// </summary>
public enum OrderStates
{
/// <summary>
@@ -195,6 +213,39 @@
Closed
}
public enum BuyOrderStates
{
/// <summary>
/// Ordine acquisto creato da BOM di 1/+ ordini
/// </summary>
Created,
/// <summary>
/// Richiesta quotazione fornitori
/// </summary>
Requested,
/// <summary>
/// Assegnato a supplier (e inviato)
/// </summary>
Assigned,
/// <summary>
/// Parzialmente ricevuto
/// </summary>
Partial,
/// <summary>
/// Completato poiché ho ricevuto Merce (e DDT)
/// </summary>
Completed,
/// <summary>
/// Ordine chiuso (con fatturazione)
/// </summary>
Closed
}
/// <summary>
/// Enum risultati verifica lavorabilità part (e tempo)
/// </summary>
@@ -205,6 +256,34 @@
MACHINABLE = 1,
}
/// <summary>
/// Tipo di code del Prod
/// </summary>
public enum ProdQueueType
{
waiting,
running,
done
}
/// <summary>
/// Modalità raggruppamento (giornalieri, orari...)
/// </summary>
public enum RuidGroupMode
{
Day,
Hour
}
/// <summary>
/// Tipo di dati raggruppamento gestiti
/// </summary>
public enum RuidTagMode
{
Envir,
Mode
}
#endregion Public Enums
#if false
+1 -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
{
@@ -0,0 +1,8 @@
namespace EgwCoreLib.Lux.Core.Generic
{
public class EditStepDto
{
public Enums.CompileStep SrcStep { get; set; }
public bool Changed { get; set; } = false;
}
}
+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
@@ -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)
+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
{
File diff suppressed because it is too large Load Diff
+16 -15
View File
@@ -1,17 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Config;
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Items;
using EgwCoreLib.Lux.Data.DbModel.Production;
using EgwCoreLib.Lux.Data.DbModel.Sales;
using EgwCoreLib.Lux.Data.DbModel.Stats;
using EgwCoreLib.Lux.Data.DbModel.Stock;
using EgwCoreLib.Lux.Data.DbModel.Task;
using EgwCoreLib.Lux.Data.DbModel.Utils;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NLog;
namespace EgwCoreLib.Lux.Data
namespace EgwCoreLib.Lux.Data
{
public partial class DataLayerContext : DbContext
{
@@ -56,7 +43,14 @@ namespace EgwCoreLib.Lux.Data
public virtual DbSet<TagsModel> DbSetTags { get; set; }
public virtual DbSet<CustomerModel> DbSetCustomer { get; set; }
public virtual DbSet<DealerModel> DbSetDealer { get; set; }
public virtual DbSet<SupplierModel> DbSetSupplier { get; set; }
public virtual DbSet<SupplierQualifyModel> DbSetSupplierQualify { get; set; }
public virtual DbSet<BuyOrderModel> DbSetBuyOrder { get; set; }
public virtual DbSet<BuyOrderRowModel> DbSetBuyOrderRow { get; set; }
public virtual DbSet<MatReqModel> DbSetMaterialReq { get; set; }
public virtual DbSet<BuyOrderRow2MatReqModel> DbSetBuyOrdRow2MatReq { get; set; }
public virtual DbSet<OfferModel> DbSetOffer { get; set; }
public virtual DbSet<OfferRowModel> DbSetOfferRow { get; set; }
public virtual DbSet<OrderModel> DbSetOrder { get; set; }
@@ -136,8 +130,15 @@ namespace EgwCoreLib.Lux.Data
modelBuilder.Entity<JobStepTagModel>()
.HasKey(jst => new { jst.JobStepID, jst.CodTag });
// area Buy
modelBuilder.Entity<SupplierQualifyModel>()
.HasKey(sq => new { sq.SupplierID, sq.CodGroup });
modelBuilder.Entity<BuyOrderRow2MatReqModel>()
.HasKey(bm => new { bm.BuyOrderRowID, bm.MatReqID });
modelBuilder.Entity<ProductionItem2ODLModel>()
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
.HasKey(x => new { x.ProdItemID, x.ProdODLID });
modelBuilder.Entity<ProductionItem2ODLModel>()
.HasOne(x => x.ProductionItemNav)
@@ -0,0 +1,121 @@
using EgwCoreLib.Lux.Data.Repository.Report;
using EgwCoreLib.Lux.Data.Repository.Supplier;
using EgwCoreLib.Lux.Data.Services.Catalog;
using EgwCoreLib.Lux.Data.Services.Config;
using EgwCoreLib.Lux.Data.Services.Cost;
using EgwCoreLib.Lux.Data.Services.General;
using EgwCoreLib.Lux.Data.Services.Internal;
using EgwCoreLib.Lux.Data.Services.Items;
using EgwCoreLib.Lux.Data.Services.Job;
using EgwCoreLib.Lux.Data.Services.Production;
using EgwCoreLib.Lux.Data.Services.Report;
using EgwCoreLib.Lux.Data.Services.Sales;
using EgwCoreLib.Lux.Data.Services.Supplier;
using EgwCoreLib.Lux.Data.Services.Utils;
using EgwCoreLib.Lux.Data.Services.Warehouse;
using Microsoft.Extensions.DependencyInjection.Extensions;
namespace EgwCoreLib.Lux.Data
{
public static class DataServiceCollectionExtensions
{
public static IServiceCollection AddLuxData(this IServiceCollection services, string connectionString)
{
//// DbContextFactory: preferibile in Blazor Server e scenari concorrenti
//services.AddDbContextFactory<DataLayerContext>(options =>
// options.UseMySql(connectionString, ServerVersion.AutoDetect(connectionString)));
// servizi preliminari
//services.TryAddSingleton<IConnectionMultiplexer>(redisConn);
services.TryAddSingleton<IRedisService, RedisService>();
services.TryAddSingleton<IRedisSubscriptionManager, RedisSubscriptionManager>();
// Repository Scoped
services.TryAddScoped<IBuyOrderRepository, BuyOrderRepository>();
services.TryAddScoped<IConfGlassRepository, ConfGlassRepository>();
services.TryAddScoped<IConfProfileRepository, ConfProfileRepository>();
services.TryAddScoped<IConfWoodRepository, ConfWoodRepository>();
services.TryAddScoped<ICostDriverRepository, CostDriverRepository>();
services.TryAddScoped<ICustomerRepository, CustomerRepository>();
services.TryAddScoped<IDealerRepository, DealerRepository>();
services.TryAddScoped<IEnvirParamRepository, EnvirParamRepository>();
services.TryAddScoped<IGenClassRepository, GenClassRepository>();
services.TryAddScoped<IGenValRepository, GenValRepository>();
services.TryAddScoped<IItemGroupRepository, ItemGroupRepository>();
services.TryAddScoped<IItemRepository, ItemRepository>();
services.TryAddScoped<IJobStepRepository, JobStepRepository>();
services.TryAddScoped<IJobTaskRepository, JobTaskRepository>();
services.TryAddScoped<IMatReqRepository, MatReqRepository>();
services.TryAddScoped<IOfferRepository, OfferRepository>();
services.TryAddScoped<IOfferRowRepository, OfferRowRepository>();
services.TryAddScoped<IOrderRepository, OrderRepository>();
services.TryAddScoped<IOrderRowRepository, OrderRowRepository>();
services.TryAddScoped<IPhaseRepository, PhaseRepository>();
services.TryAddScoped<IProductionBatchRepository, ProductionBatchRepository>();
services.TryAddScoped<IProductionGroupRepository, ProductionGroupRepository>();
services.TryAddScoped<IProductionItemRepository, ProductionItemRepository>();
services.TryAddScoped<IProductionOdlRepository, ProductionOdlRepository>();
services.TryAddScoped<IProductionPlantRepository, ProductionPlantRepository>();
services.TryAddScoped<IResourceRepository, ResourceRepository>();
services.TryAddScoped<IReportRepository, ReportRepository>();
services.TryAddScoped<ISellingItemRepository, SellingItemRepository>();
services.TryAddScoped<IStatsAggrRepository, StatsAggrRepository>();
services.TryAddScoped<IStatsDetailRepository, StatsDetailRepository>();
services.TryAddScoped<ITagRepository, TagRepository>();
services.TryAddScoped<ITemplateRepository, TemplateRepository>();
services.TryAddScoped<ITemplateRowRepository, TemplateRowRepository>();
// Servizi Scoped
services.TryAddScoped<IBuyOrderService, BuyOrderService>();
services.TryAddScoped<IConfGlassService, ConfGlassService>();
services.TryAddScoped<IConfProfileService, ConfProfileService>();
services.TryAddScoped<IConfWoodService, ConfWoodService>();
services.TryAddScoped<ICostDriverService, CostDriverService>();
services.TryAddScoped<ICustomerService, CustomerService>();
services.TryAddScoped<IDealerService, DealerService>();
services.TryAddScoped<IEnvirParamService, EnvirParamService>();
services.TryAddScoped<IGenClassService, GenClassService>();
services.TryAddScoped<IGenValService, GenValService>();
services.TryAddScoped<IItemService, ItemService>();
services.TryAddScoped<IItemGroupService, ItemGroupService>();
services.TryAddScoped<IJobStepService, JobStepService>();
services.TryAddScoped<IJobTaskService, JobTaskService>();
services.TryAddScoped<IMatReqService, MatReqService>();
services.TryAddScoped<IOfferService, OfferService>();
services.TryAddScoped<IOfferRowService, OfferRowService>();
services.TryAddScoped<IOrderService, OrderService>();
services.TryAddScoped<IOrderRowService, OrderRowService>();
services.TryAddScoped<IPhaseService, PhaseService>();
services.TryAddScoped<IProductionGroupService, ProductionGroupService>();
services.TryAddScoped<IProductionItemService, ProductionItemService>();
services.TryAddScoped<IProductionBatchService, ProductionBatchService>();
services.TryAddScoped<IProductionOdlService, ProductionOdlService>();
services.TryAddScoped<IProductionPlantService, ProductionPlantService>();
services.TryAddScoped<IResourceService, ResourceService>();
services.TryAddScoped<IReportService, ReportService>();
services.TryAddScoped<ISellingItemService, SellingItemService>();
services.TryAddScoped<IStatsAggrService, StatsAggrService>();
services.TryAddScoped<IStatsDetailService, StatsDetailService>();
services.TryAddScoped<ITagService, TagService>();
services.TryAddScoped<ITemplateService, TemplateService>();
services.TryAddScoped<ITemplateRowService, TemplateRowService>();
// Facade / DataLayerService
services.TryAddScoped<IDataLayerServices, DataLayerServices>();
services.TryAddScoped<ICalcRuidService, CalcRuidService>();
//builder.Services.AddSingleton<DataLayerServices>();
//services.TryAddScoped<IDataLayerServices, DataLayerServices>();
// aggiunta servizi finali Singleton...
services.TryAddSingleton<IImageCacheService, ImageCacheService>();
services.TryAddSingleton<IConfigDataService, ConfigDataService>();
services.TryAddSingleton<ICalcRequestService, CalcRequestService>();
services.TryAddSingleton<IFileService, FileService>();
services.TryAddSingleton<IProdService, ProdService>();
//services.TryAddSingleton<CalcRequestService>();
return services;
}
}
}
+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
{
@@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.Data.DbModel.Admin
namespace EgwCoreLib.Lux.Data.Data.DbModel.Admin
{
/// <summary>
/// Tabella dei USER di MySql
@@ -1,8 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Sales
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
{
/// <summary>
/// Classe dei template di oggetti gestiti
@@ -1,12 +1,7 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
namespace EgwCoreLib.Lux.Data.DbModel.Catalog
{
[Table("sales_template_row")]
public class TemplateRowModel
@@ -49,15 +44,14 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
[NotMapped]
public string TemplateRowDtx
{
get => $"TLR.{TemplateRowID:X12}";
//get => $"TLR.{Inserted:yy}.{TemplateRowID:X8}";
get => CodeUid(TemplateRowID);
}
/// <summary>
/// Restituisce UID da impiegare x immagine
/// Restituisce URL da impiegare x immagine
/// </summary>
[NotMapped]
public string ImgUID
public string ImgUrl
{
get
{
@@ -65,7 +59,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
switch (ImgType)
{
case ImageType.Calculated:
answ = ImgUrl(TemplateRowID);
answ = CodeUid(TemplateRowID);
break;
case ImageType.Fixed:
answ = FileName;
@@ -78,14 +72,25 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
}
else
{
answ = ImgUrl(TemplateRowID);
answ = CodeUid(TemplateRowID);
}
answ = $"static/{answ}";
break;
}
return answ;
}
}
/// <summary>
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string CodeUid(int id)
{
return $"TLR.{id:X12}";
}
/// <summary>
/// Tipo immagine da visualizzare
/// </summary>
@@ -199,6 +204,24 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public long FileSize { get; set; } = 0;
/// <summary>
/// Definisce se sia calcolabile, dato il tipo SellingItem
/// </summary>
[NotMapped]
public bool CalcEnabled
{
get => ImgType == ImageType.Calculated;
}
/// <summary>
/// Definisce presenza file
/// </summary>
[NotMapped]
public bool HasFile
{
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
}
/// <summary>
/// BOM serializzata per la produzione dell'item
/// </summary>
@@ -281,14 +304,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
[ForeignKey("SellingItemID")]
public virtual SellingItemModel? SellingItemNav { get; set; }
/// <summary>
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string ImgUrl(int id)
{
return $"TLR.{id:X12}";
}
}
}
@@ -1,14 +1,11 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
{
{
/// <summary>
/// Risorsa tipo di Glass x EF
/// </summary>
/// Risorsa tipo di Glass x EF
/// </summary>
[Table("conf_envir")]
public class EnvirParamModel
{
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Config
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Cost
@@ -1,14 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Sales;
using EgwCoreLib.Lux.Data.DbModel.Task;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Cost
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Items
{ // <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
@@ -1,8 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Items
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,9 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Task;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Items
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -90,12 +85,54 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
public ImageType ImgType { get; set; } = ImageType.ND;
/// <summary>
/// Restituisce UID da impiegare x immagine
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string CodeUid(int id)
{
return $"SP.{id:X12}";
}
/// <summary>
/// Restituisce Url da impiegare x immagine
/// </summary>
[NotMapped]
public string ImgUID
{
get => ImgType == ImageType.Fixed ? FileName : ImgUrl(SellingItemID);
get => ImgType == ImageType.Fixed ? FileName : CodeUid(SellingItemID);
}
/// <summary>
/// Definisce se sia calcolabile, dato il tipo SellingItem
/// </summary>
[NotMapped]
public bool CalcEnabled
{
get => ImgType == ImageType.Calculated;
}
/// <summary>
/// Restituisce Url immagine già calcolato (da sistemare!!!)
/// </summary>
[NotMapped]
public string ImgUrl
{
get
{
string answ = "empty.svg";
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
if (CalcEnabled)
{
string rndImg = $"{DateTime.Now:HHmmssfff}";
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
}
else
{
answ = $"static/{ImgUID}";
}
return answ;
}
}
#if false
@@ -126,20 +163,18 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
get => false;
}
[NotMapped]
public bool HasBOM
{
get => SourceType == ItemSourceType.Jwd || SourceType == ItemSourceType.FileBTL;
}
/// <summary>
/// Navigazione Job/Cicli
/// </summary>
[ForeignKey("JobID")]
public virtual JobTaskModel JobNav { get; set; } = null!;
/// <summary>
/// URL Immagine calcolato
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
public static string ImgUrl(int id)
{
return $"SP.{id:X12}";
}
}
}
@@ -1,16 +1,7 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
/// <summary>
/// Configurazione JobDriver abilitati per un Job e relativi coefficienti di conversione verso CostDriver
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
/// <summary>
/// Definizione driver di calcolo dall'Engine x la stima del CostDriver equivalente tempi/costi
@@ -1,11 +1,7 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
[Table("task_job_step_item")]
public class JobStepItemModel
@@ -1,13 +1,7 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Task;
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
/// <summary>
/// Routing dei cicli di lavoro, con riferimento a risorse e fasi
@@ -1,12 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
[Table("task_job_step_tag")]
public class JobStepTagModel
@@ -1,11 +1,7 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
/// <summary>
/// Definizione macro dei Cicli di Lavoro / Job
@@ -1,12 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
[Table("task_job_task_tag")]
public class JobTaskTagModel
@@ -1,15 +1,7 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Task
namespace EgwCoreLib.Lux.Data.DbModel.Job
{
/// <summary>
/// Fase di lavorazione / ProductionStage
@@ -1,7 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
@@ -1,9 +1,4 @@
using EgwCoreLib.Lux.Core.Generic;
using EgwCoreLib.Lux.Data.DbModel.Sales;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
namespace EgwCoreLib.Lux.Data.DbModel.Production
{
@@ -1,11 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
@@ -1,10 +1,6 @@
using EgwCoreLib.Lux.Data.DbModel.Sales;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
{
/// <summary>
@@ -95,6 +91,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Production
/// <summary>
/// Navigazione verso tabella Item2Odl
/// </summary>
public ICollection<ProductionItem2ODLModel> Item2OdlNav { get; set; } = new List<ProductionItem2ODLModel>();
public ICollection<ProductionItem2ODLModel> Item2OdlNav { get; set; } = new List<ProductionItem2ODLModel>();
}
}
@@ -1,5 +1,5 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Task;
using EgwCoreLib.Lux.Data.DbModel.Job;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
@@ -1,15 +1,5 @@
using EgwCoreLib.Lux.Core.Generic;
using EgwCoreLib.Lux.Core.RestPayload;
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Task;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,14 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Cost;
using EgwCoreLib.Lux.Data.DbModel.Sales;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Production
@@ -0,0 +1,70 @@
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Report
{
/// <summary>
/// Classe dei report gestiti
/// </summary>
[Table("report_list")]
public class ReportModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int ReportID { get; set; }
/// <summary>
/// Denominazione
/// </summary>
public string Name { get; set; } = "";
/// <summary>
/// Descrizione
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Valore completo Json per recupero dati, con segnaposto con [[param_01]]
/// </summary>
public string JsonDSN { get; set; } = "";
/// <summary>
/// Nome del report Active tra quelli nella folder
/// </summary>
public string ActRepFileName { get; set; } = "";
/// <summary>
/// Conf dei parametri per il report
/// </summary>
public string ParamConfigRaw { get; set; } = "";
/// <summary>
/// Conf relative ai file report
/// </summary>
public string FileConfDataRaw { get; set; } = "";
/// <summary>
/// Elenco dei parametri da gestire x il ReportTemplate
/// </summary>
[NotMapped]
public List<ParamConfigDto> ParamConfig
{
get
{
List<ParamConfigDto> answ = new();
if (!string.IsNullOrEmpty(ParamConfigRaw) && ParamConfigRaw.Length > 2)
{
answ = JsonConvert.DeserializeObject<List<ParamConfigDto>>(ParamConfigRaw) ?? new();
}
return answ;
}
set
{
string rawVal = JsonConvert.SerializeObject(value);
ParamConfigRaw = rawVal;
}
}
}
}
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Sales
namespace EgwCoreLib.Lux.Data.DbModel.Sales
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Sales
namespace EgwCoreLib.Lux.Data.DbModel.Sales
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,8 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -69,6 +65,27 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string DictPresel { get; set; } = "";
/// <summary>
/// Dizionario valorizzato dei parametri attivi
/// </summary>
[NotMapped]
public Dictionary<string, string> DictParameter
{
get
{
Dictionary<string, string> answ = new();
if (!string.IsNullOrEmpty(DictPresel))
{
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPresel) ?? new Dictionary<string, string>();
}
return answ;
}
//set
//{
// DictPresel = JsonConvert.SerializeObject(value);
//}
}
/// <summary>
/// Validità Offerta
/// </summary>
@@ -1,9 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -50,10 +45,16 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// <summary>
/// ID dell'articolo di vendita offerto
/// </summary>
public int SellingItemID { get; set; }
public int? SellingItemID { get; set; }
/// <summary>
/// Riferimento (opzionale9 al template da cui è derivato
/// Definisce se sia calcolabile, dato il tipo SellingItem
/// </summary>
[NotMapped]
public bool IsNote => SellingItemID == null;
/// <summary>
/// Riferimento (opzionale) al template da cui è derivato
/// </summary>
public int? TemplateRowID { get; set; } = null;
@@ -64,16 +65,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
public bool CalcEnabled
{
get => ImgType == ImageType.Calculated;
#if false
}
/// <summary>
/// Definisce presenza file
/// </summary>
[NotMapped]
public bool HasFile
{
bool answ = false;
if (SellingItemNav != null)
{
answ = SellingItemNav.SourceType == ItemSourceType.Jwd || SellingItemNav.SourceType == ItemSourceType.FileBTL;
}
return answ;
}
#endif
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
}
/// <summary>
@@ -103,13 +103,36 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
}
else if (SellingItemID > 0)
{
answ = SellingItemModel.ImgUrl(SellingItemID);
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
}
}
return answ;
}
}
/// <summary>
/// Restituisce Url immagine già calcolato (da sistemare!!!)
/// </summary>
[NotMapped]
public string ImgUrl
{
get
{
string answ = "empty.svg";
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
string rndImg = $"{DateTime.Now:HHmmssfff}";
if (CalcEnabled)
{
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
}
else
{
answ = $"static/{ImgUID}";
}
return answ;
}
}
/// <summary>
/// Quantità della risorsa
/// </summary>
@@ -296,6 +319,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public bool AwaitPrice { get; set; } = false;
/// <summary>
/// Dizionario serializzato delle preselezioni (pending, da applicare)
/// </summary>
public string DictPendPresRaw { get; set; } = "";
[NotMapped]
public bool HasPendReq
{
get => !string.IsNullOrEmpty(DictPendPresRaw) && DictPendingPresel.Count > 0;
}
[NotMapped]
public Dictionary<string, string> DictPendingPresel
{
get
{
Dictionary<string, string> answ = new();
if (!string.IsNullOrEmpty(DictPendPresRaw))
{
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPendPresRaw) ?? new Dictionary<string, string>();
}
return answ;
}
//set
//{
// DictPendPresRaw = JsonConvert.SerializeObject(value);
//}
}
/// <summary>
/// Navigazione Offer
/// </summary>
@@ -1,11 +1,4 @@
using EgwCoreLib.Lux.Core.Generic;
using EgwCoreLib.Lux.Data.DbModel.Production;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -91,7 +84,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public DateTime Modified { get; set; } = DateTime.Now;
/// <summary>
/// DataOra richiesta per il completamento dell'ordine
/// </summary>
@@ -107,6 +99,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string ConsNote { get; set; } = "";
/// <summary>
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
/// </summary>
public string RawItemData { get; set; } = "";
/// <summary>
/// Enum stato Ordine
/// </summary>
@@ -199,6 +196,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
get => (TotalCost > 0 && TotalPrice > TotalCost) ? (TotalPrice - TotalCost) / TotalPrice : 0;
}
/// <summary>
/// Verifica se ci siano TUTTE le righe coperte da Fabbisogni (con o senza ordine...)
/// </summary>
[NotMapped]
public bool AllRowsWithReq
{
get => OrderRowNav != null && !OrderRowNav.Any(x => x.MatReqNav.Count == 0);
}
/// <summary>
/// Navigazione Customer
/// </summary>
@@ -1,10 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using EgwCoreLib.Lux.Data.DbModel.Production;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using static EgwCoreLib.Lux.Core.Enums;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Sales
@@ -57,10 +51,10 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// <summary>
/// ID dell'articolo di vendita Orderto
/// </summary>
public int SellingItemID { get; set; }
public int? SellingItemID { get; set; }
/// <summary>
/// Riferimento (opzionale9 al template da cui è derivato
/// Riferimento (opzionale) al template da cui è derivato
/// </summary>
public int? TemplateRowID { get; set; } = null;
@@ -152,16 +146,15 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
public bool CalcEnabled
{
get => ImgType == ImageType.Calculated;
#if false
}
/// <summary>
/// Definisce presenza file
/// </summary>
[NotMapped]
public bool HasFile
{
bool answ = false;
if (SellingItemNav != null)
{
answ = SellingItemNav.SourceType == ItemSourceType.Jwd || SellingItemNav.SourceType == ItemSourceType.FileBTL;
}
return answ;
}
#endif
get => !string.IsNullOrEmpty(FileName) && FileSize > 0 || (CalcEnabled && Envir != Constants.EXECENVIRONMENTS.WINDOW);
}
/// <summary>
@@ -189,19 +182,42 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
if (TemplateRowID != null && TemplateRowID > 0)
{
//answ= $"TR.{TemplateRowID:X16}";
answ = TemplateRowModel.ImgUrl(TemplateRowID ?? 0);
answ = TemplateRowModel.CodeUid(TemplateRowID ?? 0);
}
// altrimenti da selling item...
else if (SellingItemID > 0)
{
//answ = $"SP.{SellingItemID:X12}";
answ = SellingItemModel.ImgUrl(SellingItemID);
answ = SellingItemModel.CodeUid(SellingItemID ?? 0);
}
}
return answ;
}
}
/// <summary>
/// Restituisce Url immagine già calcolato (da sistemare!!!)
/// </summary>
[NotMapped]
public string ImgUrl
{
get
{
string answ = "empty.svg";
string fType = Envir == Constants.EXECENVIRONMENTS.WINDOW ? "svg" : "png";
string rndImg = $"{DateTime.Now:HHmmssfff}";
if (CalcEnabled)
{
answ = $"cache/{ImgUID}-{rndImg}.{fType}?env={Envir}";
}
else
{
answ = $"static/{ImgUID}";
}
return answ;
}
}
/// <summary>
/// Valore serializzato della composizione articolo (in formato JWD x finestra)
/// </summary>
@@ -228,6 +244,30 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string ItemBOM { get; set; } = "";
/// <summary>
/// Lista BOM deserializzata
/// </summary>
[NotMapped]
public List<BomItemDTO> ListBOM
{
get
{
List<BomItemDTO> answ = new();
if (!string.IsNullOrEmpty(ItemBOM) && ItemBOM.Length > 2)
{
answ = JsonConvert.DeserializeObject<List<BomItemDTO>>(ItemBOM) ?? new();
}
return answ;
}
}
[NotMapped]
public bool HasMatReqRow
{
get => MatReqNav != null && MatReqNav.Count > 0;
}
/// <summary>
/// Lista dei Job Cost Drivers calcolati dall'engine (necessari x calcolo Steps)
/// </summary>
@@ -273,6 +313,11 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public string ProdEstimate { get; set; } = "";
/// <summary>
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
/// </summary>
public string RawItemData { get; set; } = "";
/// <summary>
/// Validazione dati BOM (Inteso come gruppi tutti trovati/esistenti)
/// </summary>
@@ -317,6 +362,35 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// </summary>
public bool AwaitPrice { get; set; } = false;
/// <summary>
/// Dizionario serializzato delle preselezioni (pending, da applicare)
/// </summary>
public string DictPendPresRaw { get; set; } = "";
[NotMapped]
public bool HasPendReq
{
get => !string.IsNullOrEmpty(DictPendPresRaw) && DictPendingPresel.Count > 0;
}
[NotMapped]
public Dictionary<string, string> DictPendingPresel
{
get
{
Dictionary<string, string> answ = new();
if (!string.IsNullOrEmpty(DictPendPresRaw))
{
answ = JsonConvert.DeserializeObject<Dictionary<string, string>>(DictPendPresRaw) ?? new Dictionary<string, string>();
}
return answ;
}
//set
//{
// DictPendPresRaw = JsonConvert.SerializeObject(value);
//}
}
/// <summary>
/// Navigazione Order
/// </summary>
@@ -339,5 +413,10 @@ namespace EgwCoreLib.Lux.Data.DbModel.Sales
/// Navigazione alle righe ProdItem
/// </summary>
public virtual ICollection<ProductionItemModel> ProdItemNav { get; set; } = new List<ProductionItemModel>();
/// <summary>
/// Many-to-many verso associazione con MatReqNav
/// </summary>
public virtual ICollection<MatReqModel> MatReqNav { get; set; } = new List<MatReqModel>();
}
}
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Stats
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Stats
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Utils;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Stock
namespace EgwCoreLib.Lux.Data.DbModel.Stock
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -1,13 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Items;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Stock
namespace EgwCoreLib.Lux.Data.DbModel.Stock
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -0,0 +1,92 @@
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("buy_order")]
public class BuyOrderModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int BuyOrderID { get; set; }
/// <summary>
/// Anno rif Ordine Fornitore
/// </summary>
public int RefYear { get; set; } = DateTime.Today.Year;
/// <summary>
/// Numero prog Ordine nell'anno (da calcolare)
/// </summary>
public int RefNum { get; set; } = 0;
/// <summary>
/// Indice revisione
/// </summary>
public int RefRev { get; set; } = 1;
/// <summary>
/// Codice calcolato Ordine ANNO.NUMERO.REV
/// </summary>
[NotMapped]
public string BuyOrderCode
{
get => $"BO.{RefYear:00}.{RefNum:00000}.{RefRev:00}";
}
/// <summary>
/// Descrizione generale
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Fornitore (quandoa ssegnato, altrimenti è quotazione)
/// </summary>
public int? SupplierID { get; set; } = null;
/// <summary>
/// Ordine assegnato se ho un supplier definito
/// </summary>
[NotMapped]
public bool Assigned => SupplierID != null;
/// <summary>
/// DataOra inserimento
/// </summary>
public DateTime Inserted { get; set; } = DateTime.Now;
/// <summary>
/// DataOra ultima modifica
/// </summary>
public DateTime Modified { get; set; } = DateTime.Now;
/// <summary>
/// DataOra richiesta per il completamento dell'ordine di fornitura
/// </summary>
public DateTime DueDateReq { get; set; } = DateTime.Today.AddDays(30);
/// <summary>
/// note di consegna (opzionali)
/// </summary>
public string ConsNote { get; set; } = "";
/// <summary>
/// Enum stato Ordine Acquisto
/// </summary>
public BuyOrderStates OrderState { get; set; } = BuyOrderStates.Created;
/// <summary>
/// Navigazione Supplier
/// </summary>
[ForeignKey("SupplierID")]
public virtual SupplierModel? SupplierNav { get; set; } = null;
/// <summary>
/// Navigazione alle righe Ordine Acquisto
/// </summary>
public virtual ICollection<BuyOrderRowModel> BuyOrderRowNav { get; set; } = new List<BuyOrderRowModel>();
}
}
@@ -0,0 +1,23 @@
using EgwCoreLib.Lux.Data.DbModel.Warehouse;
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
[Table("buy_order_row_2_mat_req")]
public class BuyOrderRow2MatReqModel
{
public int BuyOrderRowID { get; set; }
public int MatReqID { get; set; }
/// <summary>
/// Quantità richiesta
/// </summary>
public double Qty { get; set; } = 0;
[ForeignKey("BuyOrderRowID")]
public virtual BuyOrderRowModel BuyOrderRowNav { get; set; } = null!;
[ForeignKey("MatReqID")]
public virtual MatReqModel MatReqNav { get; set; } = null!;
}
}
@@ -0,0 +1,107 @@
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("buy_order_row")]
public class BuyOrderRowModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int BuyOrderRowID { get; set; }
/// <summary>
/// ID Ordine di acquisto di riferimento
/// </summary>
public int BuyOrderID { get; set; }
/// <summary>
/// Riga Ordine (per ordinamento)
/// </summary>
public int RowNum { get; set; } = 0;
/// <summary>
/// ID dell'item richiesto (se disponibile)
/// </summary>
public int? ItemID { get; set; } = null;
/// <summary>
/// Classificazione Item
/// </summary>
public string ClassCode { get; set; } = "";
/// <summary>
/// Descrizione Item
/// </summary>
public string DescriptionCode { get; set; } = "";
/// <summary>
/// Codice Item
/// </summary>
public string ItemCode { get; set; } = "";
/// <summary>
/// Quantità articolo TOTALE
/// </summary>
public double TotQty
{
get => MatReqNav.Sum(x => x.Qty);
}
#if false
/// <summary>
/// Quantità articolo TOTALE
/// </summary>
public double TotQty
{
get => DictOrderRowDetail.Sum(x => x.Value);
}
/// <summary>
/// Dizionario serializzato di RigheOrdine + Qty
/// </summary>
public string OrderRowData { get; set; } = "";
/// <summary>
/// Dizionario escplicito degli OrderRow esplosi rispetto a ItemId delle BOM
/// </summary>
[NotMapped]
public Dictionary<int, double> DictOrderRowDetail
{
get
{
Dictionary<int, double> answ = new();
if (!string.IsNullOrEmpty(OrderRowData) && OrderRowData.Count() > 2)
{
answ = JsonConvert.DeserializeObject<Dictionary<int, double>>(OrderRowData) ?? new();
}
return answ;
}
set
{
OrderRowData = JsonConvert.SerializeObject(value);
}
}
#endif
/// <summary>
/// Navigazione Ordine Acquisto
/// </summary>
[ForeignKey("BuyOrderID")]
public virtual BuyOrderModel? BuyOrderNav { get; set; } = null;
/// <summary>
/// Navigazione Item
/// </summary>
[ForeignKey("ItemID")]
public virtual ItemModel? ItemNav { get; set; } = null;
/// <summary>
/// Many-to-many verso associazione con MatReq
/// </summary>
public virtual ICollection<BuyOrderRow2MatReqModel> MatReqNav { get; set; } = new List<BuyOrderRow2MatReqModel>();
}
}
@@ -1,18 +1,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Items
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("item_supplier")]
[Table("buy_supplier")]
public class SupplierModel
{
/// <summary>
@@ -21,13 +13,6 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
[Key]
public int SupplierID { get; set; }
#if false
/// <summary>
/// Ruolo assocaito da anagrafica esterna
/// </summary>
public int RoleID { get; set; }
#endif
/// <summary>
/// Denominazione se persona giuridica
/// </summary>
@@ -48,12 +33,9 @@ namespace EgwCoreLib.Lux.Data.DbModel.Items
/// </summary>
public string VAT { get; set; } = "";
#if false
/// <summary>
/// Navigazione al ruolo
/// Many-to-many with Qualifica Fornitori
/// </summary>
[ForeignKey("RoleID")]
public virtual RoleModel RoleNav { get; set; } = null!;
#endif
public virtual ICollection<SupplierQualifyModel> QualifNav { get; set; } = new List<SupplierQualifyModel>();
}
}
@@ -0,0 +1,15 @@
namespace EgwCoreLib.Lux.Data.DbModel.Supplier
{
[Table("buy_supplier_qualify")]
public class SupplierQualifyModel
{
public int SupplierID { get; set; }
public string CodGroup { get; set; } = "";
[ForeignKey("SupplierID")]
public virtual SupplierModel SupplierNav { get; set; } = null!;
[ForeignKey("CodGroup")]
public virtual ItemGroupModel GroupNav { get; set; } = null!;
}
}
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Utils
namespace EgwCoreLib.Lux.Data.DbModel.Utils
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -24,7 +16,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
/// Chiave del counter annuale
/// </summary>
public string CountName { get; set; } = "";
/// <summary>
/// Valore dell'ultimo contatore staccato
/// </summary>
@@ -1,7 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Utils
@@ -20,7 +17,7 @@ namespace EgwCoreLib.Lux.Data.DbModel.Utils
/// Descrizione
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Numero Item compresi
/// </summary>
@@ -1,7 +1,4 @@
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
// <Auto-Generated>
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
namespace EgwCoreLib.Lux.Data.DbModel.Utils
@@ -1,12 +1,4 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace EgwCoreLib.Lux.Data.DbModel.Utils
namespace EgwCoreLib.Lux.Data.DbModel.Utils
{ // <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
@@ -1,8 +1,4 @@
using EgwCoreLib.Lux.Data.DbModel.Task;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace EgwCoreLib.Lux.Data.DbModel.Utils
namespace EgwCoreLib.Lux.Data.DbModel.Utils
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
@@ -0,0 +1,90 @@
namespace EgwCoreLib.Lux.Data.DbModel.Warehouse
{
[Table("warehouse_material_req")]
public class MatReqModel
{
/// <summary>
/// ID del record
/// </summary>
[Key]
public int MatReqID { get; set; } = 0;
/// <summary>
/// Order cui è riferito
/// </summary>
public int? OrderID { get; set; } = null;
/// <summary>
/// OrderRow cui è riferito (vince su OrderID)
/// </summary>
public int? OrderRowID { get; set; } = null;
/// <summary>
/// DataOra inserimento
/// </summary>
public DateTime Inserted { get; set; } = DateTime.Now;
/// <summary>
/// ID dell'item richiesto
/// </summary>
public int? ItemID { get; set; } = null;
/// <summary>
/// Quantità richiesta per Item (complessiva)
/// </summary>
public double TotQty { get; set; } = 0;
/// <summary>
/// Valore serializzato info sui RawItem (es: lungh barra / qty barre)
/// </summary>
public string RawItemData { get; set; } = "";
/// <summary>
/// Cod gruppo articolo (per selezione omogenea alternative)
/// </summary>
public string CodGroup { get; set; } = "";
/// <summary>
/// CodArticolo (opzionale)
/// </summary>
public string ItemCode { get; set; } = "";
/// <summary>
/// Desdcrizione item ordinato
/// </summary>
public string Description { get; set; } = "";
/// <summary>
/// Quantità Item finali relativi al fabbisogno
/// </summary>
public int NumItems { get; set; } = 1;
/// <summary>
/// Indica che è stato processato: generato un ordine di acquisto
/// </summary>
public bool Processed { get; set; } = false;
/// <summary>
/// Navigazione Item Order
/// </summary>
[ForeignKey("OrderID")]
public virtual OrderModel? OrderNav { get; set; } = null;
/// <summary>
/// Navigazione Item OrderRow
/// </summary>
[ForeignKey("OrderRowID")]
public virtual OrderRowModel? OrderRowNav { get; set; } = null;
/// <summary>
/// Navigazione Item
/// </summary>
[ForeignKey("ItemID")]
public virtual ItemModel? ItemNav { get; set; } = null;
/// <summary>
/// Many-to-many verso associazione con BuyOrderRow
/// </summary>
public virtual ICollection<BuyOrderRow2MatReqModel> BuyOrderRowNav { get; set; } = new List<BuyOrderRow2MatReqModel>();
}
}
+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;
@@ -0,0 +1,146 @@
namespace EgwCoreLib.Lux.Data.Domains
{
public static class BomCalculator
{
#region Public Methods
public static List<BomItemDTO> GetBomList(string itemBOM)
{
List<BomItemDTO> answ = new List<BomItemDTO>();
if (!string.IsNullOrEmpty(itemBOM) && itemBOM.Length > 2)
{
var bomList = JsonConvert.DeserializeObject<List<BomItemDTO>>(itemBOM);
if (bomList != null)
{
answ = bomList;
}
}
return answ;
}
/// <summary>
/// Esegue completamento e la validazione dei dati BOM da lista articoli + gruppi,
/// validando i dati stessi
/// </summary>
/// <param name="itemGroupList">Elenco ItemGroup da considerare</param>
/// <param name="bomGenList">Item di tipo BOM/BomAlt AMMESSI</param>
/// <param name="bomList">Lista BOM ricevuta da validare</param>
/// <param name="bomList">Lista BOM precedente da confrontare x scelta alternativi</param>
/// <param name="totCost">Costo netto componenti BOM calcolato</param>
/// <param name="totPrice">Prezzo complessivo calcolato (con aggiunta marginalità)</param>
/// <param name="totItemQty">Numero toale di item dello step BOM</param>
/// <param name="numGroupOk">Controllo coerenza calcoli sui gruppi list2upd</param>
/// <param name="numItemOk">Controllo coerenza calcoli su num list2upd</param>
public static void Validate(
List<ItemGroupModel> itemGroupList,
List<ItemModel> bomGenList,
ref List<BomItemDTO> bomList,
List<BomItemDTO>? bomListPrev,
ref double totCost,
ref double totPrice,
ref int totItemQty,
ref int numGroupOk,
ref int numItemOk)
{
double margin = 0;
// ciclo x ogni elemento della BOM, cercando x gruppo e ExtItemCode
foreach (var item in bomList)
{
// init del margine
margin = 0;
// verifico item group esistente...
if (itemGroupList.Where(x => x.CodGroup == item.ClassCode).Count() > 0)
{
numGroupOk++;
}
// 2025.09.16: se il prezzo arriva dalla BOM calcolata uso quello...
if (item.Price > 0)
{
// resetto ItemID ma NON il prezzo
item.ItemID = 0;
// conto l'item
numItemOk++;
item.PriceEff = item.Price;
// dovrei recuperare margine da BOM... da rivedere, x ora cablato 20%...
margin = 0.2;
}
else
{
/*************************************************
* Ricerca costo item:
* - se ho un itemID --> cerco record ESATTO e sostituisco descrizioni & co...
* - se non ho itemID --> cerco dati di selezione + qtyRange
*************************************************/
ItemModel? recCost = null;
bool selExact = item.ItemID > 0;
if (selExact)
{
recCost = bomGenList
.Where(x => x.ItemID == item.ItemID)
.FirstOrDefault();
}
else
{
recCost = bomGenList
.Where(x => x.CodGroup == item.ClassCode
&& x.ItemIDParent == 0 // voglio NON sia un record CHILD
&& x.ExtItemCode == item.ItemCode
&& item.Qty >= x.QtyMin
&& item.Qty < x.QtyMax)
.OrderByDescending(x => x.Cost)
.FirstOrDefault();
// 2025.09.24: se ho un elenco item della BOM precedente
if (bomListPrev != null && bomListPrev.Count > 0 && recCost != null)
{
// ...cerco item trovato come PARENT di altri item
var listAlt = bomGenList.Where(x => x.ItemIDParent == recCost.ItemID).ToList();
// che cerco nella nella BOM precedente...
var result = listAlt
.Join(
bomListPrev,
l1 => l1.ItemID,
l2 => l2.ItemID,
(l1, l2) => l1)
.ToList();
// nel caso ne trovassi solo 1 uso quello al posto del recCost...
if (result.Count == 1)
{
recCost = result.FirstOrDefault();
}
}
}
// se trovato valorizzo!
if (recCost != null)
{
numItemOk++;
item.ItemID = recCost.ItemID;
//item.PriceEff = recCost.BomCost * (1 + recCost.Margin);
item.PriceEff = recCost.Cost;
// se selezione esatta sovrascrivo altri valori
if (selExact)
{
item.ItemCode = recCost.ExtItemCode;
//item.DescriptionCode = recCost.Name;
}
margin = recCost.Margin;
}
else
{
item.ItemID = 0;
item.PriceEff = 0;
}
}
// ...e aggiorno totale
totCost += item.TotalCost;
// e prezzo totale compreso margine
totPrice += item.TotalCost * (1 + margin);
totItemQty += item.ItemQty;
}
}
#endregion Public Methods
}
}
@@ -48,7 +48,6 @@
<PackageReference Include="NLog" />
<PackageReference Include="Pomelo.EntityFrameworkCore.MySql" />
<PackageReference Include="RestSharp" />
<PackageReference Include="Scrutor" />
<PackageReference Include="StackExchange.Redis" />
</ItemGroup>
+20
View File
@@ -0,0 +1,20 @@
global using EgwCoreLib.Lux.Core.Dto;
global using EgwCoreLib.Lux.Core.RestPayload;
global using EgwCoreLib.Lux.Data.Data.DbModel.Admin;
global using EgwCoreLib.Lux.Data.DbModel.Catalog;
global using EgwCoreLib.Lux.Data.DbModel.Config;
global using EgwCoreLib.Lux.Data.DbModel.Cost;
global using EgwCoreLib.Lux.Data.DbModel.Items;
global using EgwCoreLib.Lux.Data.DbModel.Job;
global using EgwCoreLib.Lux.Data.DbModel.Production;
global using EgwCoreLib.Lux.Data.DbModel.Report;
global using EgwCoreLib.Lux.Data.DbModel.Sales;
global using EgwCoreLib.Lux.Data.DbModel.Stats;
global using EgwCoreLib.Lux.Data.DbModel.Stock;
global using EgwCoreLib.Lux.Data.DbModel.Supplier;
global using EgwCoreLib.Lux.Data.DbModel.Utils;
global using EgwCoreLib.Lux.Data.DbModel.Warehouse;
global using Microsoft.EntityFrameworkCore;
global using Microsoft.Extensions.Configuration;
global using Newtonsoft.Json;
global using NLog;
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,251 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EgwCoreLib.Lux.Data.Migrations
{
/// <inheritdoc />
public partial class EnableSellItemNullable : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<int>(
name: "SellingItemID",
table: "sales_order_row",
type: "int",
nullable: true,
oldClrType: typeof(int),
oldType: "int");
migrationBuilder.AlterColumn<int>(
name: "SellingItemID",
table: "sales_offer_row",
type: "int",
nullable: true,
oldClrType: typeof(int),
oldType: "int");
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 1,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2026) });
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 2,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2044) });
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 3,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2051) });
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 4,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 17, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 18, 7, 36, 8, 630, DateTimeKind.Local).AddTicks(2057) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 1,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 2,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 3,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 4,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 5,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 6,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 7,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 8,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 9,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 10,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 18, 0, 0, 0, 0, DateTimeKind.Local) });
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.AlterColumn<int>(
name: "SellingItemID",
table: "sales_order_row",
type: "int",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "int",
oldNullable: true);
migrationBuilder.AlterColumn<int>(
name: "SellingItemID",
table: "sales_offer_row",
type: "int",
nullable: false,
defaultValue: 0,
oldClrType: typeof(int),
oldType: "int",
oldNullable: true);
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 1,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1262) });
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 2,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1276) });
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 3,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1282) });
migrationBuilder.UpdateData(
table: "sales_offer",
keyColumn: "OfferID",
keyValue: 4,
columns: new[] { "DueDateProm", "DueDateReq", "ValidUntil" },
values: new object[] { new DateTime(2026, 5, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 11, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 4, 12, 5, 41, 29, 364, DateTimeKind.Local).AddTicks(1289) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 1,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 2,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 3,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 4,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 5,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 6,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 7,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 8,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 9,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
migrationBuilder.UpdateData(
table: "sales_offer_row",
keyColumn: "OfferRowID",
keyValue: 10,
columns: new[] { "Inserted", "Modified" },
values: new object[] { new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local), new DateTime(2026, 3, 12, 0, 0, 0, 0, DateTimeKind.Local) });
}
}
}
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