Compare commits

..

904 Commits

Author SHA1 Message Date
Samuele Locatelli 156f61a87b Merge tag 'AddYeldPreview_04' into develop
Update evento pagiazione x cui si perdono % recuperate
2025-06-18 09:00:05 +02:00
Samuele Locatelli 1661671cc4 Merge branch 'release/AddYeldPreview_04' 2025-06-18 08:59:51 +02:00
Samuele Locatelli 6bdfb70448 Fix perdita % in cambio pagina 2025-06-18 08:59:30 +02:00
Samuele Locatelli 4185bd1dad Merge tag 'AddYeldPreview_03' into develop
Update della gestione pagina BatchPreview per mostrare rese sia per
foglio che x materiale, fix paginazioni e problemi grafici vari
2025-06-18 08:37:00 +02:00
Samuele Locatelli 1a704be449 Merge branch 'release/AddYeldPreview_03' 2025-06-18 08:36:29 +02:00
Samuele Locatelli ba8eef2aeb COmpletata review pagina BatchPreview
-- fix grafici
- ingrandimento generale
- fix pagina che debordava
- paginazione lista sheets
2025-06-18 08:36:07 +02:00
Samuele Locatelli 01551f6b20 typo appunti 2025-06-17 18:43:23 +02:00
Samuele Locatelli c6e909e6f2 Merge tag 'AddYeldPreview_02' into develop
Update con report calcolo rendimento Yeld x materiale e x sheet
2025-06-17 18:35:27 +02:00
Samuele Locatelli 566dcf3812 Merge branch 'release/AddYeldPreview_02' 2025-06-17 18:33:49 +02:00
Samuele Locatelli be059c483d Commentata area calcolo non + usata da MongoDB 2025-06-17 18:32:43 +02:00
Samuele Locatelli b503cd9527 Recupero statistiche foglio da obj REDIS OK... 2025-06-17 18:31:35 +02:00
Samuele Locatelli 5207c591eb Aggiunta calcolo statistiche x materiale + cache in REDIS valori yeld calcolati 2025-06-17 18:19:11 +02:00
Samuele Locatelli 3f3a1c3d0b Merge tag 'AddYeldPreview_01' into develop
Aggiunta calcolo numpart + yeld %
2025-06-17 13:15:42 +02:00
Samuele Locatelli b9df0cb31a Merge branch 'release/AddYeldPreview_01' 2025-06-17 13:15:28 +02:00
Samuele Locatelli bb2c2680ac Aggiunto display yeald % su ogni foglio 2025-06-17 13:15:00 +02:00
Samuele Locatelli 1926d39386 Merge tag 'FixSentinelProxy_01' into develop
Fix release proxy x redis
2025-05-13 16:22:22 +02:00
Samuele Locatelli c80551797f Merge branch 'release/FixSentinelProxy_01' 2025-05-13 16:22:14 +02:00
Samuele Locatelli e7c526c6c9 update conf sentinel in haproxy invece che locale 2025-05-13 16:21:49 +02:00
Samuele Locatelli b9e3fafd89 Merge tag 'AddAllSheetCalc_01' into develop
Aggiunta chkbox x selezionare tutti i fogli in statistiche
2025-04-24 16:24:30 +02:00
Samuele Locatelli 1d778e2f1f Merge branch 'release/AddAllSheetCalc_01' 2025-04-24 16:24:13 +02:00
Samuele Locatelli 515441e4e3 Aggiunto chk x calcolare anche ultimo foglio in statistiche OEE materiali 2025-04-24 16:23:42 +02:00
Samuele Locatelli f859432067 Merge tag 'AddHistorySelectDetail_02' into develop
update controlli visibilità buttons x evitare comandi in history
2025-04-23 19:24:22 +02:00
Samuele Locatelli 25885bbf4c Merge branch 'release/AddHistorySelectDetail_02' 2025-04-23 19:23:56 +02:00
Samuele Locatelli e16d3001e2 Esteso gestione controlli abilitazione buttons per CSV man e disabilitazione in history page 2025-04-23 19:22:46 +02:00
Samuele Locatelli 8c4b81f7f1 Merge tag 'AddHistorySelectDetail_01' into develop
Aggiunta visualizzazione buttons in histyory (hide non ancora completo)
2025-04-23 18:00:20 +02:00
Samuele Locatelli 3da5992cbb Merge branch 'release/AddHistorySelectDetail_01' 2025-04-23 18:00:07 +02:00
Samuele Locatelli ad0879a295 Order History:
- aggiunti buttons x detail
- gestione blocco buttons dove non gestiti (history page)
2025-04-23 17:59:20 +02:00
Samuele Locatelli 1ea789e99a Merge tag 'AddSearchOrderPage_03' into develop
Update visualizzazione e gestione num righe in OrderSearch
2025-03-20 10:18:30 +01:00
Samuele Locatelli 638c981d6d Merge branch 'release/AddSearchOrderPage_03' 2025-03-20 10:18:14 +01:00
Samuele Locatelli ceffa2e175 fix numRow errato in orderSearch 2025-03-20 10:17:55 +01:00
Samuele Locatelli 0935eda0f9 Merge tag 'AddSearchOrderPage_02' into develop
Update messaggio pagina con dettaglio scopo
2025-03-20 09:25:14 +01:00
Samuele Locatelli 77ddf796d4 Merge branch 'release/AddSearchOrderPage_02' 2025-03-20 09:24:39 +01:00
Samuele Locatelli 8cfabbd046 Update messaggi 2025-03-20 09:23:53 +01:00
Samuele Locatelli b074758755 Merge tag 'AddSearchOrderPage_01' into develop
Completata pagina ricerca
2025-03-19 19:21:19 +01:00
Samuele Locatelli b434d7fb4f Merge branch 'release/AddSearchOrderPage_01' 2025-03-19 19:20:40 +01:00
Samuele Locatelli f653721db0 Completo pagina ricerca in update panel 2025-03-19 19:20:16 +01:00
Samuele Locatelli da5f9a2a68 OK pagina ricerca! 2025-03-19 18:54:06 +01:00
Samuele Locatelli 16667a70b6 DataSet: nuovo obj search + minor refresh 2025-03-19 17:12:24 +01:00
Samuele Locatelli 463a32f024 Inizio aggiunta order search 2025-03-19 16:19:13 +01:00
Samuele Locatelli 2226388f92 Aggiunto modifiche testata-filtro 2025-03-19 12:11:28 +01:00
Samuele Locatelli 47392fa3ba Completato la aprte di filtro in testata... 2025-03-19 12:11:18 +01:00
Samuele Locatelli 82ce925634 Merge branch 'develop' of https://gitlab.steamware.net/steamware/NKC into develop 2025-03-19 10:52:31 +01:00
Samuele Locatelli 7d2d503301 Leggero cambio styling, inizio aggiunta pag ricerca ordini, fix display errori import KIT 2025-03-19 10:52:27 +01:00
Giancarlo Rottoli 1eaa91d2bb Footer con Data-Ora 2024-12-20 16:00:35 +01:00
Samuele Locatelli 897465b282 Merge tag 'AddCheckRebalance_04' into develop
Fix errore bilanciamento e ordinamento ORD da durata
2024-12-13 15:45:08 +01:00
Samuele Locatelli c545d19a85 Merge branch 'release/AddCheckRebalance_04' 2024-12-13 15:44:53 +01:00
Samuele Locatelli 3c45e71312 Fix rebalance 2024-12-13 15:44:19 +01:00
Samuele Locatelli a0400d99bd Merge tag 'AddCheckRebalance_03' into develop
Ancora fix display warning rebalance
2024-12-13 09:24:03 +01:00
Samuele Locatelli b55136d302 Merge branch 'release/AddCheckRebalance_03' 2024-12-13 09:23:55 +01:00
Samuele Locatelli 346f50694a Ancora fix display warning 2024-12-13 09:23:39 +01:00
Samuele Locatelli acea59ec47 Fix warning split suggestion 2024-12-13 09:14:56 +01:00
Samuele Locatelli c5eddb3d61 Merge tag 'AddCheckRebalance_02' into develop
Fix calcolo KIT su ordini OLT da parent
2024-12-13 09:05:12 +01:00
Samuele Locatelli b3721b5f2f Merge branch 'release/AddCheckRebalance_02' 2024-12-13 09:04:13 +01:00
Samuele Locatelli 47855a6f27 Fix controllo anche su num KIT spostati in split 2024-12-13 09:03:55 +01:00
Samuele Locatelli cc5c6e55f6 Merge tag 'AddCheckRebalance_01' into develop
Aggiunta controlli rebalance x casi in cui orderlisttree restino
assegnati a ancestor (da validare)
2024-12-12 19:41:56 +01:00
Samuele Locatelli 4d833794af Merge branch 'release/AddCheckRebalance_01' 2024-12-12 19:41:36 +01:00
Samuele Locatelli 1f120161ac Altra modifica check errore balance, su OrderListTree 2024-12-12 19:41:09 +01:00
Samuele Locatelli 1dc78d4b3d Aggiunta controlli fase split batch da stima a nesting 2024-12-12 19:22:28 +01:00
Samuele Locatelli 5254bd8429 Merge tag 'AddCheckRebalanceError01' into develop
Aggiunto controllo (bloccante) in caso di errori rebalance
2024-09-20 09:41:08 +02:00
Samuele Locatelli 794a6641ec Merge branch 'release/AddCheckRebalanceError01' 2024-09-20 09:40:30 +02:00
Samuele Locatelli a667f8e22f Update gestione display errori rebalance... 2024-09-20 09:40:16 +02:00
Samuele Locatelli af21406d87 Merge tag 'UpdateStoredUploadBatch02' into develop
Aggiunta gestione condizionale impiego delle 2 stored alternative
normale e light
2024-07-22 11:09:18 +02:00
Samuele Locatelli 0e0c1d8a94 Merge branch 'release/UpdateStoredUploadBatch02' 2024-07-22 11:08:55 +02:00
Samuele Locatelli 59bb86e17d Update x impiego stored accelerata in elenco upload batch condizionale da config 2024-07-22 11:08:37 +02:00
Samuele Locatelli 60f9d783db Merge tag 'UpdateStoredUploadBatch' into develop
iUpdate stored lettura stato batch x pagina upload
2024-07-22 09:40:41 +02:00
Samuele Locatelli b1f02e969f Merge branch 'release/UpdateStoredUploadBatch' 2024-07-22 09:39:50 +02:00
Samuele Locatelli f8eb636133 Impiego nuova stored x calcolo batch list x evitare lock DB 2024-07-22 09:21:31 +02:00
Samuele Locatelli bc78540bcd Merge tag 'UpdateTimerManagement02' into develop
Modifiche ulteriori x timer e metodi lettura forzata refresh
2024-06-14 09:20:18 +02:00
Samuele Locatelli 950c31c1b2 Merge branch 'release/UpdateTimerManagement02' 2024-06-14 09:20:02 +02:00
Samuele Locatelli bd2ea7dab0 Ancora spostamento timers vari in tab config 2024-06-14 09:18:36 +02:00
Samuele Locatelli 53c8620be0 Merge tag 'UpdateTimerManagement01' into develop
Gestione timer pagina unload rivista:
- timer separati da tab config
- gestione refresh migliorata
2024-06-13 19:08:22 +02:00
Samuele Locatelli 834f4517e3 Merge branch 'release/UpdateTimerManagement01' 2024-06-13 19:07:52 +02:00
Samuele Locatelli 601b3937f9 Update gestione separata 3 timers x pagina unload (pesante):
timerCss
timerStatus
timerUnload
2024-06-13 19:07:15 +02:00
Samuele Locatelli 721ddaae22 Merge tag 'UpdateNuget01' into develop
Update massiva nuget packages
2024-05-31 16:22:44 +02:00
Samuele Locatelli 7f81b29afc Merge branch 'release/UpdateNuget01' 2024-05-31 16:22:32 +02:00
Samuele Locatelli 5570712970 update nuget:
- compression
2024-05-31 16:22:06 +02:00
Samuele Locatelli 602b271d6b Update nuget vari:
- Microsoft.*
- AWS.*
2024-05-31 16:15:18 +02:00
Samuele Locatelli 07b3473341 Update nuget vari:
- Redis
- System.*
- Mongo
- NLog
2024-05-31 16:03:13 +02:00
Samuele Locatelli cb75d386d2 Update nuget vari
- system*
- aspnet.mvc
2024-05-31 15:43:27 +02:00
Samuele Locatelli b741ab3231 Fix pacchetti deprecati 2024-05-31 15:40:33 +02:00
Samuele Locatelli c3fefe2abc Merge tag 'AddCheckPartMiaOnPackList01' into develop
Aggiunto controllo partMIA x PackList (mostra button solo se presenti)
2024-05-31 15:36:57 +02:00
Samuele Locatelli 03c7470057 Merge branch 'release/AddCheckPartMiaOnPackList01' 2024-05-31 15:36:31 +02:00
Samuele Locatelli f2e03b6702 Aggiunta visibilità MIA packList condizionale 2024-05-31 15:35:48 +02:00
Samuele Locatelli 99d615aee7 Merge tag 'AddSearchInfoPart' into develop
Aggiunta info data-ora in ricerca part
2024-05-17 07:51:31 +02:00
Samuele Locatelli 005ae3a51e Update display info x ricerca DMTX estesa (macchina, data-ora lav) 2024-05-17 07:50:54 +02:00
Samuele Locatelli 8c0a550465 Bozza pagina ricerca estesa 2024-05-08 11:42:00 +02:00
Samuele Locatelli 6448210ab0 Merge branch 'develop' 2024-03-20 08:55:22 +01:00
Samuele Locatelli acd603ba23 Fix js missing 2024-03-20 08:55:14 +01:00
Samuele Locatelli ac28d5fd62 Merge tag 'FixReportsChartJs01' into develop
Update in produzione grafici
2024-03-20 08:46:11 +01:00
Samuele Locatelli bad086334e Merge branch 'release/FixReportsChartJs01' 2024-03-20 08:36:06 +01:00
Samuele Locatelli 010a05377e Completata semplificazione pagine reports 2024-03-20 08:33:41 +01:00
Samuele Locatelli 7539c6f985 refresh display 2024-03-20 07:27:02 +01:00
Samuele Locatelli 2d7cbf7d60 Completo review pagine x gestioen report su pag diverse 2024-03-20 07:18:34 +01:00
Samuele Locatelli 1d3ef90402 Inizio fix gestione report su pagine distinte 2024-03-20 07:18:24 +01:00
Samuele Locatelli c7463e4358 Fix test grafici 2024-03-19 18:13:51 +01:00
Samuele Locatelli a85ec6aefb Merge tag 'FixSentinelLocalhost' into develop
Fix gestione sentinel da localhost x deploy
2024-03-16 12:10:42 +01:00
Samuele Locatelli 768bcd91e7 Merge branch 'release/FixSentinelLocalhost' 2024-03-16 12:10:25 +01:00
Samuele Locatelli 86024d8dbc Fix conf x sentinel locale 2024-03-16 12:09:52 +01:00
Samuele Locatelli 0c17ea9f9b Test configurazione REDIS
- webconfig --> tramite redis sentinel (su redis01)
2024-03-15 15:05:16 +01:00
Samuele Locatelli ba8bb7d085 Merge tag 'AddSheetMissingDateProcess02' into develop
Fix loggin + process x NKC in caso di date missing
2024-03-08 17:19:29 +01:00
Samuele Locatelli 07bae712b8 Merge branch 'release/AddSheetMissingDateProcess02' 2024-03-08 17:19:17 +01:00
Samuele Locatelli df7fa95a62 Miglioramento fase di log in caso errori dal PROD 2024-03-08 17:19:02 +01:00
Samuele Locatelli 405e55b2c7 Merge tag 'AddSheetMissingDateProcess01' into develop
Aggiunta gestione date missing da sheets, per intercettare errori invio
da prod parziale
2024-03-08 16:50:47 +01:00
Samuele Locatelli f60c91bca5 Merge branch 'release/AddSheetMissingDateProcess01' 2024-03-08 16:50:31 +01:00
Samuele Locatelli 1977490dc0 Merge branch 'develop' of https://gitlab.steamware.net/steamware/NKC into develop 2024-03-08 16:48:05 +01:00
Samuele Locatelli d653d614a3 Update x logging & fix data-ora su avanzamento fogli se ci fossero mancanti 2024-03-08 16:48:02 +01:00
Giancarlo Rottoli bb0b6fce9b Modifica report Part - Diminuito carattere Destination 2023-12-20 10:19:17 +01:00
Samuele Locatelli 910d305f60 Merge tag 'AddSmartUnloadLog02' into develop
Ancora fine tuning x tempo cache
2023-12-19 11:38:53 +01:00
Samuele Locatelli d75af60266 Merge branch 'release/AddSmartUnloadLog02' 2023-12-19 11:38:46 +01:00
Samuele Locatelli a33175a92a riduzione tempo cache stsatus items 2023-12-19 11:38:30 +01:00
Samuele Locatelli ca39a70197 Merge tag 'AddSmartUnloadLog01' into develop
Update log x vedere cosa succede su smart unload
2023-12-19 11:01:00 +01:00
Samuele Locatelli 81aa06961d Merge branch 'release/AddSmartUnloadLog01' 2023-12-19 11:00:24 +01:00
Samuele Locatelli ff73f8d804 fix display errore SOLO in caso di lock 2023-12-19 11:00:01 +01:00
Samuele Locatelli 5840e770f8 Update timing reload + log x problemi smart debice 2023-12-19 10:59:45 +01:00
Samuele Locatelli 84e7adce70 Merge tag 'FixLogWrite01' into develop
Fix gestione log + api x svuotamento dati vecchi REDIS/Mongo
2023-11-29 09:56:22 +01:00
Samuele Locatelli e664a30d3d Merge branch 'release/FixLogWrite01' 2023-11-29 09:56:09 +01:00
Samuele Locatelli 0df7a2cd81 Fix gestione Log instance
Aggiunta api alive x cancellazione vecchi dati redis e mongoDB
2023-11-29 09:55:45 +01:00
Samuele Locatelli 378a465b59 Merge tag 'FixReloadPageUnload01' into develop
Fix condizione reload pagina unload troppo frequente
2023-11-29 08:44:43 +01:00
Samuele Locatelli 8c45274b09 Merge branch 'release/FixReloadPageUnload01' 2023-11-29 08:44:28 +01:00
Samuele Locatelli 5f37dd0cd3 inizio procedure x eliminaizone redis/mongo dati storici 2023-11-29 08:43:59 +01:00
Samuele Locatelli 087782cd7c Fix refresh pagina unload + stato 2023-11-29 08:43:49 +01:00
Samuele Locatelli 5cfc78c991 Merge tag 'FixCartNumbStart' into develop
Fix calcolo num index cart da nome macchina
2023-11-28 16:48:55 +01:00
Samuele Locatelli 52c95334ce Merge branch 'release/FixCartNumbStart' 2023-11-28 16:48:44 +01:00
Samuele Locatelli 2c564d1973 Update calcolo idxcart da nome macchina 2023-11-28 16:45:32 +01:00
Samuele Locatelli 548f847cc9 Aggiunto gestione timer da web.config (da 1 a 3 sec refresh kitting page) 2023-11-21 16:33:58 +01:00
Samuele Locatelli 32248abb56 Merge tag 'ForceReloadBarcode01' into develop
Forza rilettura barcode in caso resti fermo oltre 60sec
2023-11-16 12:30:34 +01:00
Samuele Locatelli c569c85596 Merge branch 'release/ForceReloadBarcode01' 2023-11-16 12:30:16 +01:00
Samuele Locatelli 3080536577 Fix gestione rilettura pagine barcode se "ferme" 2023-11-16 12:29:07 +01:00
Samuele Locatelli 6356abb519 Merge tag 'BatchProcAddLogNesting01' into develop
Aggiunta log + dettagliato fasi invio a nesting x problemi cartellini
2023-11-15 18:28:06 +01:00
Samuele Locatelli a4400bfb77 Merge branch 'release/BatchProcAddLogNesting01' 2023-11-15 18:27:42 +01:00
Samuele Locatelli 6ed30bbaa7 aggiunta log x fasi invio nesting 2023-11-15 18:25:03 +01:00
Samuele Locatelli 07d52cbff8 Evita itempickup reset se foglio == 0 2023-11-09 17:22:08 +01:00
Samuele Locatelli 9fd6e0054a Merge tag 'AddCacheOnSheetLoadState01' into develop
Aggiunta gestione in cache dello stato SheetLoad x macchina/batch/stato
min/max
2023-10-27 17:12:21 +02:00
Samuele Locatelli b68997b7f2 Merge branch 'release/AddCacheOnSheetLoadState01' 2023-10-27 17:12:01 +02:00
Samuele Locatelli 41d3eee204 Gestione COMPLETA cache SHL da redis:
- su ComLib nuovo metodo
- nuove chiavi redis cache x macchina/batch/stati
- intercettate tutte le chiamate
2023-10-27 17:09:00 +02:00
Samuele Locatelli 712bc6e734 Merge tag 'FixDisplayNoBatchOnMachineLoad01' into develop
Fix pagina machineLoad che chiama troppe volte (sbagliando) batchID a
zero...
2023-10-27 15:23:15 +02:00
Samuele Locatelli 05c5d68cee Merge branch 'release/FixDisplayNoBatchOnMachineLoad01' 2023-10-27 15:18:53 +02:00
Samuele Locatelli 4d65af1ec8 NKC:
- problema chaimate status
- fix con NON disegno del dettaglio sheet in machine LOAD
2023-10-27 15:04:24 +02:00
Samuele Locatelli bfa6295798 Merge tag 'FiltBatchIdZeroStoredCall01' into develop
Fix call batch 0 evitata x calcolo sheet corrente
2023-10-27 09:11:34 +02:00
Samuele Locatelli 02894f326f Merge branch 'release/FiltBatchIdZeroStoredCall01' 2023-10-27 09:11:19 +02:00
Samuele Locatelli ec6422d280 Update check stato folgli: evitato con batch a zero... 2023-10-27 09:10:49 +02:00
Samuele Locatelli 8d526a5760 Merge tag 'AddStoredDtmxCKD_01' into develop
Spostamento da lettura globale a stored x CKD
2023-10-26 15:00:00 +02:00
Samuele Locatelli 5b4d354dfe Merge branch 'release/AddStoredDtmxCKD_01' 2023-10-26 14:59:41 +02:00
Samuele Locatelli b7841a4a47 Aggiunta stored x filtro dtmx su vista cartOnKit 2023-10-26 14:58:10 +02:00
Samuele Locatelli f43ab6493e Merge tag 'AddTryCatchOnPartMIA01' into develop
Aggiunte alcune aprti di gesitone try/catch x pagine PartMIA
2023-10-25 11:20:58 +02:00
Samuele Locatelli 8c30699efa Merge branch 'release/AddTryCatchOnPartMIA01' 2023-10-25 11:20:46 +02:00
Samuele Locatelli 846db7e4e4 Aggiunta gestione eccezioni pagine PartMIA 2023-10-25 11:20:25 +02:00
Samuele Locatelli 935a0cef0c Merge tag 'AddDataCache01' into develop
Aggiunta data cache
2023-10-25 10:37:54 +02:00
Samuele Locatelli 535d65e7fc Merge branch 'release/AddDataCache01' 2023-10-25 10:37:41 +02:00
Samuele Locatelli cca431d9f9 Cache stampanti a 10 min 2023-10-25 10:37:04 +02:00
Samuele Locatelli ca867b172f LAsciato updateProgress panel 2023-10-24 17:14:18 +02:00
Samuele Locatelli a6b7235aeb UnloadSmart:
- Update  barcode e prelievo x avere pronto un updateProgress
2023-10-24 17:07:52 +02:00
Samuele Locatelli c122b688a8 Merge tag 'removeresetItem02' into develop
Update x fix PlaceCod
2023-10-24 11:08:27 +02:00
Samuele Locatelli 1ad3ee2fc4 Merge branch 'release/removeresetItem02' 2023-10-24 11:08:19 +02:00
Samuele Locatelli 1417b18bb9 Fix x placeCod 2023-10-24 11:07:55 +02:00
Samuele Locatelli 61c1f3511f Merge tag 'removeresetItem01' into develop
Update x procedura di reset sbagliata item
2023-10-24 10:34:37 +02:00
Samuele Locatelli 0361e5abb5 Merge branch 'release/removeresetItem01' 2023-10-24 10:34:27 +02:00
Samuele Locatelli 0e6dc318a3 Tolti casi discutibili di reset su second screen 2023-10-24 10:33:56 +02:00
Samuele Locatelli 5c0197f863 Merge tag 'FixBatchrefreshPage02' into develop
Update refresh page
2023-10-20 10:01:52 +02:00
Samuele Locatelli 3b02e5c33f Merge branch 'release/FixBatchrefreshPage02' 2023-10-20 10:01:42 +02:00
Samuele Locatelli f861fca046 speedup refresh + fix label 2023-10-20 10:01:07 +02:00
Samuele Locatelli 94fb21901d Merge tag 'FixBatchrefreshPage01' into develop
Fix batch refresh page (si piantava)
2023-10-20 09:50:40 +02:00
Samuele Locatelli 73db07587d Merge branch 'release/FixBatchrefreshPage01' 2023-10-20 09:50:17 +02:00
Samuele Locatelli b800fb9866 Update x gestione refresh pagina batch locked 2023-10-20 09:49:57 +02:00
Samuele Locatelli e67e6994ea Merge tag 'FixRequeueTask' into develop
Fix log + gestione requeue task disattivata
2023-10-19 19:04:38 +02:00
Samuele Locatelli 8c692045a4 Merge branch 'release/FixRequeueTask' 2023-10-19 19:04:16 +02:00
Samuele Locatelli feaaded2ee cambio log message C.1 2023-10-19 19:03:54 +02:00
Samuele Locatelli 29490b3aa0 cambio periodo refresh 2023-10-19 18:40:51 +02:00
Samuele Locatelli c899b39d3d update reset richiesta 2023-10-19 18:40:19 +02:00
Samuele Locatelli f7394292b5 Fix altra memoria rapida 2023-10-19 18:25:49 +02:00
Samuele Locatelli 0d2b95ebcd ancora log update 2023-10-19 17:42:39 +02:00
Samuele Locatelli a70aeb39d9 Ancora update log 2023-10-19 17:38:53 +02:00
Samuele Locatelli 7966f9c403 cambio modalità memoria batch descendant in cache 2023-10-19 17:25:54 +02:00
Samuele Locatelli cc4338e5ae ancora log esteso 2023-10-19 17:17:29 +02:00
Samuele Locatelli 066282208d add log x chiusura nesting 2023-10-19 17:16:34 +02:00
Samuele Locatelli 7d6fade7a4 update modalità processing rispsota 2023-10-19 17:11:09 +02:00
Samuele Locatelli aa85e8ef2e update log risposta nesting 2023-10-19 16:57:29 +02:00
Samuele Locatelli 11e2b7f80a Merge tag 'FixReportConfMissing01' into develop
Fix errore reportconf missing
2023-10-19 14:31:58 +02:00
Samuele Locatelli f9a2c9921d Merge branch 'release/FixReportConfMissing01' 2023-10-19 14:31:43 +02:00
Samuele Locatelli f9d6f4846d fir reportConf controller:
- NON necessario (serve a MAG)
- inserita classe, NON da errore in download
2023-10-19 14:31:15 +02:00
Samuele Locatelli de47035a55 Merge tag 'FixHomeShortcut01' into develop
Fix shortcut pag home (buttons)
2023-10-16 15:38:29 +02:00
Samuele Locatelli 06f672a2c7 Merge branch 'release/FixHomeShortcut01' 2023-10-16 15:38:19 +02:00
Samuele Locatelli ad768e36eb Update style x btn home 2023-10-16 15:37:45 +02:00
Samuele Locatelli 39bf8650cc Merge tag 'FixErrorsMessages02' into develop
Fix error messages
2023-10-13 17:05:30 +02:00
Samuele Locatelli 80985fa9b9 Merge branch 'release/FixErrorsMessages02' 2023-10-13 17:05:23 +02:00
Samuele Locatelli 4bb73f4da8 Fix display note json/mongoDb 2023-10-13 17:05:09 +02:00
Samuele Locatelli 6177aaf236 Fix visibilità btn x errori x mandare stima 2023-10-13 17:01:14 +02:00
Samuele Locatelli 37d83f4545 Merge tag 'FixErrorsMessages' into develop
Fix gestione errori (spero)
2023-10-13 16:50:25 +02:00
Samuele Locatelli d85120b58a Merge branch 'release/FixErrorsMessages' 2023-10-13 16:50:14 +02:00
Samuele Locatelli ac10dbf2c4 refresh clickability 2023-10-13 16:50:03 +02:00
Samuele Locatelli b9b04c4aa6 Fix reset messaggi errore precedenti 2023-10-13 16:44:48 +02:00
Samuele Locatelli a76c45a3d0 Aggiunta decodifica errori dettagliata
- stima vs nesting
- traduzione errori
- fix grafico
2023-10-13 16:27:59 +02:00
Samuele Locatelli a4d4405b22 Merge tag 'FixerrorResetOnEstim01' into develop
Fix errori: reset in fase di richiesta nuova stima/nesting
2023-10-13 08:59:07 +02:00
Samuele Locatelli 0375a1c181 Merge branch 'release/FixerrorResetOnEstim01' 2023-10-13 08:58:38 +02:00
Samuele Locatelli 0fd6e6d55d fix reset errori in richiesta stima/nesting 2023-10-13 08:58:11 +02:00
Samuele Locatelli 2f29e966d5 Merge tag 'CheckBalance05' into develop
Aggiunta try-catch x rebalance
2023-08-10 17:21:33 +02:00
Samuele Locatelli be37b61b53 Merge branch 'release/CheckBalance05' 2023-08-10 17:21:25 +02:00
Samuele Locatelli db92f2681a Aggiunta try-catch generale metodo rebalance 2023-08-10 17:21:04 +02:00
Samuele Locatelli 9aac1ec792 Merge tag 'CheckBalance04' into develop
Aggiunta ulteriore log x debug
2023-08-10 16:59:39 +02:00
Samuele Locatelli 5cd1a753c7 Merge branch 'release/CheckBalance04' 2023-08-10 16:59:27 +02:00
Samuele Locatelli 1e93e7470c Aggiunta altro log 2023-08-10 16:59:13 +02:00
Samuele Locatelli c6c5d83e99 Merge tag 'CheckBalance03' into develop
Fix gestione cache ordini da batch/batchtree
2023-08-10 15:50:48 +02:00
Samuele Locatelli 81ca443003 Merge branch 'release/CheckBalance03' 2023-08-10 15:50:35 +02:00
Samuele Locatelli 2838b96f62 Fix gestione cache x ricalcolo ordini 2023-08-10 15:50:08 +02:00
Samuele Locatelli 54f9413165 Merge tag 'CheckBalance02' into develop
Aggiunto log trace verboso...
2023-08-10 14:53:04 +02:00
Samuele Locatelli e15fe62fc4 Merge branch 'release/CheckBalance02' 2023-08-10 14:52:52 +02:00
Samuele Locatelli ca80f29278 Aggiunta trace log x capire cosa non vada in calcoli 2023-08-10 14:52:37 +02:00
Samuele Locatelli cf0590103a Merge tag 'CheckBalance01' into develop
Update log x check balance
2023-08-10 13:09:37 +02:00
Samuele Locatelli 8b0d3d8d8e Merge branch 'release/CheckBalance01' 2023-08-10 13:09:29 +02:00
Samuele Locatelli d7de8c1e19 Update log + verboso 2023-08-10 13:09:08 +02:00
Samuele Locatelli 8cb2087c2e Merge tag 'FixTimerOnBatchPage' into develop
Fix timer, cambia secondo stato show detail o normale il refresh pagina
2023-08-10 12:51:26 +02:00
Samuele Locatelli 809296759d Merge branch 'release/FixTimerOnBatchPage' 2023-08-10 12:51:13 +02:00
Samuele Locatelli d088346519 Fix gestione timer refresh aggiornamento batch 2023-08-10 12:50:51 +02:00
Samuele Locatelli 65dcd8d859 Fix reload continuo pagina batch 2023-08-10 12:35:10 +02:00
Samuele Locatelli facc6f0c0d Merge tag 'FixPageInfiniteReload' into develop
Fix pagina master con continuo reload dati
2023-08-10 10:03:06 +02:00
Samuele Locatelli 53f29f7e61 Merge branch 'release/FixPageInfiniteReload' 2023-08-10 10:02:54 +02:00
Samuele Locatelli 8cddc5ae26 Fix problema reload pagina parziale 2023-08-10 10:02:25 +02:00
Samuele Locatelli 182492b273 Merge tag 'Add3rdMachineMan02' into develop
update con altri conf x usare NE03
2023-08-09 15:45:45 +02:00
Samuele Locatelli 188e1a6ff4 Merge branch 'release/Add3rdMachineMan02' 2023-08-09 15:45:37 +02:00
Samuele Locatelli d6a9962004 refresh note 2023-08-09 15:45:10 +02:00
Samuele Locatelli d4b119faf8 Update conf code + pagine x usare NE03 2023-08-09 15:43:36 +02:00
Samuele Locatelli 12df9d8f55 VersGen aggiornato a 2.5 2023-08-09 15:43:26 +02:00
Samuele Locatelli debd9be877 update yaml x conf branch 2023-08-08 08:20:19 +02:00
Samuele Locatelli 4d247b0904 Merge tag 'Add3rdMachineMan01' into develop
release di prova x 3 macchine con installer
2023-08-07 19:22:32 +02:00
Samuele Locatelli d1986eec80 Merge branch 'release/Add3rdMachineMan01' 2023-08-07 19:22:22 +02:00
Samuele Locatelli 0558a85bb4 Cambio modalità focus x migliorare sensibilità buttons 2023-08-07 19:22:07 +02:00
Samuele Locatelli 456d7ec7a7 Fix colori 2023-08-07 18:35:27 +02:00
Samuele Locatelli 5533ad6b93 Typo + fix check displaymode 2023-08-07 16:28:38 +02:00
Samuele Locatelli 8a89dbaec0 Update x permettere split parziali 2023-08-07 12:13:38 +02:00
Samuele Locatelli 39c77a0f88 Aggiunto metodi spostamento TOTALE ordini 2023-08-07 10:34:24 +02:00
Samuele Locatelli d689c3c619 Update algoritmo riempimento, ok 1° step 2023-08-07 09:27:11 +02:00
Samuele Locatelli 13619851bb Update comportamento bilanciamento 2023-08-05 16:19:13 +02:00
Samuele Locatelli 43b5611d85 Update gestione balance ordini a 3 macchine 2023-08-05 15:38:33 +02:00
Samuele Locatelli a48e4dc8f2 Completato editing spostamento 1:1 2023-08-04 18:52:24 +02:00
Samuele Locatelli 9cc93b8d75 Ok taggle enable tra blocchi 2023-08-04 18:45:43 +02:00
Samuele Locatelli f1c6246c91 typo code reorg 2023-08-04 18:45:37 +02:00
Samuele Locatelli 71c9260115 OK gestione display ratio NE 2023-08-04 18:11:25 +02:00
Samuele Locatelli c3d49dff05 Gestione log eccezione x metodi controller 2023-08-04 15:40:48 +02:00
Samuele Locatelli 513fa79e82 cambio sequenza chiusura richieste con Post() 2023-08-04 14:34:44 +02:00
Samuele Locatelli aa122d625b - Update x primi test split 3 macchine
- log chiusura proc stima/nesting
2023-08-04 12:17:33 +02:00
Samuele Locatelli 87b528f565 Merge tag 'AddErrCleanOnValidationEnd' into develop
Fix problema reset errori in validazione
2023-06-28 09:30:47 +02:00
Samuele Locatelli 8a943ce376 Merge branch 'release/AddErrCleanOnValidationEnd' 2023-06-28 09:30:32 +02:00
Samuele Locatelli 45309f07d6 fix webconfig 2023-06-28 09:23:48 +02:00
Samuele Locatelli af75bea003 reset errori da BatchID in risp validazione 2023-06-28 09:10:33 +02:00
Samuele Locatelli 352bb3bc53 Merge tag 'AddLogAndUserCheck4Mat' into develop
Aggiunta log esteso x satart/reset KITTING sui cart + fix gestione
edit/ADD su materials x SuperAdmin soltanto
2023-06-26 19:31:39 +02:00
Samuele Locatelli 849d1fbccd Merge branch 'release/AddLogAndUserCheck4Mat' 2023-06-26 19:31:12 +02:00
Samuele Locatelli de1425bbde Aggiunta log azioni x reset/start kitting su cart:
- nel LOG "KittingStart = [NULL/GETDATE()]"
2023-06-26 19:30:30 +02:00
Samuele Locatelli 080b3fed43 Merge branch 'develop' of https://gitlab.steamware.net/steamware/NKC into develop 2023-06-26 19:24:20 +02:00
Samuele Locatelli 85ab836515 Aggiunto filtro SuperAdmin x edit/new materials 2023-06-26 19:23:53 +02:00
Giancarlo Rottoli 17be6e963c Modifica per immagine _SP in SpecialCart 2023-06-22 16:13:39 +02:00
Samuele Locatelli ab7841fd4e Merge tag 'FixCanyonPrintAll04' into develop
update conf code stampa
2023-06-09 18:14:17 +02:00
Samuele Locatelli e61139479f Merge branch 'release/FixCanyonPrintAll04' 2023-06-09 18:14:09 +02:00
Samuele Locatelli 1cc652c7a2 update conf code stampa cartellini canyon 2023-06-09 18:13:47 +02:00
Samuele Locatelli 15b8ffa415 Merge tag 'FixCanyonPrintAll03' into develop
Fix coda da config ElencoPostazioni
2023-06-09 18:02:40 +02:00
Samuele Locatelli e0193b0761 Merge branch 'release/FixCanyonPrintAll03' 2023-06-09 18:02:24 +02:00
Samuele Locatelli 331ea6a4d0 Fix coda SpecialPart in stampa 2023-06-09 18:02:07 +02:00
Samuele Locatelli ee2a7eb666 Merge tag 'FixCanyonPrintAll02' into develop
refresh versione
2023-06-09 11:38:13 +02:00
Samuele Locatelli edf94195a7 Merge branch 'release/FixCanyonPrintAll02' 2023-06-09 11:38:08 +02:00
Samuele Locatelli 692f61215f generazione refresh installer 2023-06-09 11:37:55 +02:00
Samuele Locatelli 70dae35204 Merge tag 'FixCanyonPrintAll' into develop
Fix gestione print canyon ALL: nel ciclo usa correttamente ID e non
valore selezionato (che dava eccezione)
2023-06-09 09:59:29 +02:00
Samuele Locatelli 310b849331 Merge branch 'release/FixCanyonPrintAll' 2023-06-09 09:59:03 +02:00
Samuele Locatelli b9d7b307aa Fix stampa CANYON su elenco multiplo cartellini 2023-06-09 09:58:30 +02:00
Samuele Locatelli e5c688c4d1 Merge tag 'UpdateLogSpecialPart' into develop
Update log x testing special parts
2023-06-05 09:48:01 +02:00
Samuele Locatelli 4495e6808a Merge branch 'release/UpdateLogSpecialPart' 2023-06-05 09:47:51 +02:00
Samuele Locatelli 1186464054 Update log x check special aprt 2023-06-05 09:47:23 +02:00
Samuele Locatelli 41a1822454 update conf iis02 --> iis01 2023-05-16 11:54:44 +02:00
Samuele Locatelli e22f2c30e7 Merge tag 'UpdateGlobalSearchSpecPart01' into develop
update display blocco special part in GlobalSearch
2023-05-10 12:34:39 +02:00
Samuele Locatelli fbd4605013 Merge branch 'release/UpdateGlobalSearchSpecPart01' 2023-05-10 12:34:26 +02:00
Samuele Locatelli b4aa19c721 Aggiunto webconfig x debug DB prod 2023-05-10 12:33:52 +02:00
Samuele Locatelli 12bcfdff31 fix display modulo special part in global search 2023-05-10 12:33:42 +02:00
Samuele Locatelli 2a4fb904f1 Merge tag 'FixLetturaConfGenerazionePNG01' into develop
Fix inizializzaizone obj batchReq con createPng
2023-05-02 09:36:48 +02:00
Samuele Locatelli 1f0e297ade Merge branch 'release/FixLetturaConfGenerazionePNG01' 2023-05-02 09:36:32 +02:00
Samuele Locatelli cefe6ce462 Fix serializzazione valore default CreatePNG 2023-05-02 09:36:14 +02:00
Samuele Locatelli 6812b1b16b Merge tag 'FixLetturaConfGenerazionePNG' into develop
Correzione area lettura conf x richeista generazione PNG
2023-05-02 09:24:22 +02:00
Samuele Locatelli f22094cb09 Merge branch 'release/FixLetturaConfGenerazionePNG' 2023-05-02 09:24:11 +02:00
Samuele Locatelli 03696d28d6 Fix lettura conf x generazione png 2023-05-02 09:23:44 +02:00
Samuele Locatelli ac2674997a Merge tag 'AddPngOnNestingReq' into develop
Aggiunta richiesta calcolo immagini png x dxf/part validation
2023-04-27 11:17:08 +02:00
Samuele Locatelli 2a4a847074 Merge branch 'release/AddPngOnNestingReq' 2023-04-27 11:16:54 +02:00
Samuele Locatelli 62ee3bfdbb Merge remote-tracking branch 'origin/develop' into develop 2023-04-27 11:16:21 +02:00
Giancarlo Rottoli 2bbf9144bc Fix minore per Cart 2023-04-27 11:13:36 +02:00
Samuele Locatelli cf3c660a09 Reorg codice con codemaid 2023-04-26 19:44:18 +02:00
Samuele Locatelli d731091076 update comlib x gestione png creation 2023-04-26 19:42:04 +02:00
Samuele Locatelli cc6529a017 update force PNG x componente 2023-04-26 19:41:52 +02:00
Samuele Locatelli 4c126045fc Update pagine x gestione default calcolo png solo x DXF/part valid 2023-04-26 19:40:25 +02:00
Samuele Locatelli 045b5636de gestione parametro opzionale PGN x batch proc controller 2023-04-26 19:39:31 +02:00
Samuele Locatelli 1147ee30ac Aggiunta parametro x creazione PNG dio default a false 2023-04-26 19:38:14 +02:00
Samuele Locatelli 3a18558a60 Merge tag 'UpdateCanyonReports01' into develop
Update reports CANYON
2023-04-07 13:44:03 +02:00
Samuele Locatelli 505f65f497 Merge branch 'release/UpdateCanyonReports01' 2023-04-07 13:43:45 +02:00
Samuele Locatelli 41cda66cf0 Merge branch 'develop' of https://gitlab.steamware.net/steamware/NKC into develop 2023-04-07 13:43:14 +02:00
Samuele Locatelli ff51b81ef6 Aggiunta metodo x reportConf (NON usato) 2023-04-07 13:43:08 +02:00
Giancarlo Rottoli 6756e30a92 Agg. coda SpecialPart a QueueConfig 2023-04-07 12:56:24 +02:00
Samuele Locatelli 3953b55e7f Merge tag 'UpdateCanyonInstaller03' into develop
fix yaml deploy in prod
2023-04-06 14:46:26 +02:00
Samuele Locatelli bd628f3d8d Merge branch 'release/UpdateCanyonInstaller03' 2023-04-06 14:46:16 +02:00
Samuele Locatelli 8cd2529b48 update deploy yaml 2023-04-06 14:45:58 +02:00
Samuele Locatelli 941e6f5e11 fix yaml CI/CD deploy 2023-04-06 14:45:51 +02:00
Samuele Locatelli 990d0866da Merge tag 'UpdateCanyonInstaller02' into develop
Fix yaml x compilazione
2023-04-06 13:04:36 +02:00
Samuele Locatelli e523ad63d5 Merge branch 'release/UpdateCanyonInstaller02' 2023-04-06 13:03:32 +02:00
Samuele Locatelli 377658e66a fix yaml x compilazione 2023-04-06 13:03:14 +02:00
Samuele Locatelli 832d1c0d5a Merge tag 'UpdateCanyonInstaller01' into develop
Update master x CANYON
2023-04-06 13:01:05 +02:00
Samuele Locatelli 0191a977ea Merge branch 'release/UpdateCanyonInstaller01' 2023-04-06 13:00:56 +02:00
Samuele Locatelli 327dd1920e Merge branch 'develop' of https://gitlab.steamware.net/steamware/NKC into develop 2023-04-06 13:00:32 +02:00
Giancarlo Rottoli 7ba4892718 Modifica Report SpecialPart + update altri 2023-04-06 12:34:09 +02:00
Samuele Locatelli 7794e1298f Update stored x reports 2023-04-06 11:58:30 +02:00
Samuele Locatelli 53eb43005a Deduplica errori con path ricorsivamente duplicato 2023-04-06 11:58:24 +02:00
Samuele Locatelli c1b11d2140 Merge tag 'UpdateStoredReportSpecialPart' into develop
Update stored x special part
2022-12-21 16:36:54 +01:00
Samuele Locatelli b3931bdf4e Merge branch 'release/UpdateStoredReportSpecialPart' 2022-12-21 16:36:23 +01:00
Samuele Locatelli bdccd9966a Update tracciato stored Special part x report 2022-12-21 16:34:56 +01:00
Samuele Locatelli 3f5dc8281c Merge branch 'develop' of https://gitlab.steamware.net/steamware/NKC into develop 2022-12-21 16:28:21 +01:00
Samuele Locatelli bbaff65fb6 Typo 2022-12-21 16:28:07 +01:00
Giancarlo Rottoli fa3e514fa9 Modifica Cartellino Special Parts con ParentOrder 2022-12-21 15:20:40 +01:00
Giancarlo Rottoli efc22ee82f Rename Cartellino SpecialParts 2022-10-28 15:12:49 +02:00
Samuele Locatelli 3a3f4492f0 Merge tag 'UpdateReportSpecialParts' into develop
Update report e stored x SpecialParts
2022-10-28 15:03:22 +02:00
Samuele Locatelli 661cf17724 Merge branch 'release/UpdateReportSpecialParts' 2022-10-28 15:03:08 +02:00
Samuele Locatelli 75b62da5a6 Refresh print report canyon
- update stored
- update dataset
2022-10-28 15:02:43 +02:00
Giancarlo Rottoli 4821808c0d Aggiunto SpecialPart (CANYON) e aggiornato Cart 2022-10-28 12:40:01 +02:00
Samuele Locatelli 63206edc15 Merge tag 'CanyonBetaTest' into develop
Prima versione beta x test Canyon
2022-10-27 12:55:56 +02:00
Samuele Locatelli 49508fb037 Merge branch 'release/CanyonBetaTest' 2022-10-27 12:55:37 +02:00
Samuele Locatelli be3dea5eed Nuget
- componenti zip/compress
- refresh finale
- versione x install CANYON
2022-10-27 12:55:06 +02:00
Samuele Locatelli fb530ebacb NugetUpdate
- Redis
- Microsoft web platforms +system vari
- Dns cli
2022-10-27 12:52:39 +02:00
Samuele Locatelli 97775bd242 Nuget update
- steamwarelibs
- relative dipendenze
2022-10-27 12:46:54 +02:00
Samuele Locatelli a6813e3150 Nuget update:
- update componente MVC
- update NLog (rimozione config/XSD schema da SDK)
2022-10-27 12:43:18 +02:00
Samuele Locatelli f8c623f5da Nuget update
- rimozione errore analyzers
- rimozione svariati analyzers
2022-10-27 12:27:50 +02:00
Samuele Locatelli 6b37941263 Canyon
- pagina serarch: completata funzione decode (mancano immagini x test)
- decode gestito
2022-10-27 12:09:44 +02:00
Samuele Locatelli 44bf039bda Modifica procedure stampa x inclusione flusso SpecParts 2022-10-27 10:14:17 +02:00
Samuele Locatelli 1676cceb37 CANYON:
- Completata review stored
- link stored in DS Report
- rifatto check da stored x decidere stampa specialPart (canyon)
2022-10-27 09:50:24 +02:00
Samuele Locatelli b1e0e9bdb7 Fix editing
- materiali
- special part
- plants
2022-10-26 19:09:20 +02:00
Samuele Locatelli 20e51e25f3 Fix editing materiali 2022-10-26 18:27:35 +02:00
Samuele Locatelli ceb4862ace PLANT:
- aggiunta stored x gestione plant
- modulo update plant
2022-10-25 20:52:32 +02:00
Samuele Locatelli bd9f5dcba8 Refresh 2022-10-25 20:01:23 +02:00
Samuele Locatelli 16724e1ee4 Aggiunte pèagine gestione nuovi items 2022-10-25 20:00:30 +02:00
Samuele Locatelli 959cc3198c Merge tag 'UpdateReportMultDates' into develop
Aggiornato report con due date mostrate
2022-04-08 11:11:47 +02:00
Samuele Locatelli e9887caadc Merge branch 'release/UpdateReportMultDates' 2022-04-08 11:11:34 +02:00
Samuele Locatelli 8baa2392b0 Aggiornato report e stored x popolarto x Cart 2022-04-08 11:10:42 +02:00
Samuele Locatelli 7bec14d9a7 Merge branch 'master' into develop 2022-04-07 11:38:12 +02:00
Samuele Locatelli 04a51988a3 update webconfig su DEV 2022-04-07 11:37:56 +02:00
Samuele Locatelli 9b9b6c92d9 Aggiunta cartellino + dataset report aggiornati 2022-04-07 11:37:50 +02:00
Samuele Locatelli 34bed895a5 Merge tag 'AddCheckBin2Cart' into develop
Aggiunta step spostamento BIN --> CART ad ogni evento lettura cart in
KIT SMART
2022-03-09 14:52:01 +01:00
Samuele Locatelli 5468632650 Merge branch 'release/AddCheckBin2Cart' 2022-03-09 14:51:38 +01:00
Samuele Locatelli f80a0390b9 Update x forzare riassegnazione BIN al cart corretto + spesso 2022-03-09 14:50:59 +01:00
Samuele Locatelli 484faa53a1 modifica controller dati prod macchina: salva ANCHE i keepalive (il primo ed i successivi) 2022-03-04 17:10:17 +01:00
Samuele Locatelli 20432974f2 refresh sheet controller, fixed su amcchina 00 2022-02-16 09:14:26 +01:00
Samuele Locatelli 8de54f0ad5 Merge tag 'FixUpdatePanelMolesto' into develop
Fix update panel molesto
2022-02-05 10:53:18 +01:00
Samuele Locatelli b63363b7f4 Merge branch 'release/FixUpdatePanelMolesto' 2022-02-05 10:53:08 +01:00
Samuele Locatelli 4dd0f37e3d Fix display riga udpate molesta, refresh packs 2022-02-05 10:52:38 +01:00
Samuele Locatelli b4be07e07b Merge tag 'FixGreenBarOnCsvUpload' into develop
Fix updateprogress on csv upload (dava reload continui)
2022-02-04 23:41:29 +01:00
Samuele Locatelli f5622c9fd6 Merge branch 'release/FixGreenBarOnCsvUpload' 2022-02-04 23:41:15 +01:00
Samuele Locatelli d132e9d440 Revert updateprogress in pagina master (problemi con file upload & co) 2022-02-04 23:40:41 +01:00
Samuele Locatelli b505845ff8 Merge tag 'FixDllMissingAndNuget' into develop
Fix dll missing + pacchetto nuget code analysis x net
2022-02-03 10:37:01 +01:00
Samuele Locatelli 59d8809d84 Merge branch 'release/FixDllMissingAndNuget' 2022-02-03 10:36:40 +01:00
Samuele Locatelli 071287f0d0 refresh 2022-02-03 10:36:13 +01:00
Samuele Locatelli c9d3e371ae Fix problema pubblicazione x pack dipendenti compressione 2022-02-03 10:36:09 +01:00
Samuele Locatelli c9ee17ab86 Merge tag 'AddUpdatePanelsAndUpdateNuget' into develop
update visualizzazione fasi aggiornamento pagina + nuget vari
2022-02-02 19:00:30 +01:00
Samuele Locatelli 6c6d286024 Merge branch 'release/AddUpdatePanelsAndUpdateNuget' 2022-02-02 19:00:18 +01:00
Samuele Locatelli e2e0e0a251 refresh web.config 2022-02-02 19:00:08 +01:00
Samuele Locatelli df4db07437 Update NuGet: pipelines, dnsclient 2022-02-02 18:58:50 +01:00
Samuele Locatelli ce5ed76112 Update NuGet: Microsoft.* 2022-02-02 18:57:17 +01:00
Samuele Locatelli 696d7bb421 Update NuGet: system.*, refresh report a 10ms 2022-02-02 18:55:22 +01:00
Samuele Locatelli e71bba2d9c Update NuGet: MongoDB 2022-02-02 18:51:16 +01:00
Samuele Locatelli 343b0ee352 Update NuGet: NLog 2022-02-02 18:49:02 +01:00
Samuele Locatelli 14ee3cf7af ricalcolo reports SOLO su click esplicito utente 2022-02-02 18:40:54 +01:00
Samuele Locatelli f551174e7f fix buttons selezione reports 2022-02-02 18:40:35 +01:00
Samuele Locatelli bd77540aad Update x mostrare info durante refresh pagina 2022-02-02 18:40:20 +01:00
Samuele Locatelli 4cb0d9d4f5 Merge tag 'UpdateCiCdAndNuget' into develop
Update CI/CD x IIS03 + nuget update
2022-02-01 17:03:49 +01:00
Samuele Locatelli 20f1facbfd Merge branch 'release/UpdateCiCdAndNuget' 2022-02-01 17:03:31 +01:00
Samuele Locatelli 8ef58e82bb Nuget update dotNetCore packs 2022-02-01 17:03:09 +01:00
Samuele Locatelli 4a2aad3779 Nuget update NLog 2022-02-01 17:02:40 +01:00
Samuele Locatelli 3102ecaed7 Fix deploy IIS03 2022-02-01 17:01:38 +01:00
Samuele Locatelli 5aaf139a55 Merge tag 'FixMissingRemnant' into develop
Modifica procedura scansioen x creare remnants se QRCode fosse missing
2022-02-01 16:52:23 +01:00
Samuele Locatelli a8b1c7a3c9 Merge branch 'release/FixMissingRemnant' 2022-02-01 16:52:07 +01:00
Samuele Locatelli 61ac5da227 Update x creazione remnant on-the-fly se missing 2022-02-01 16:51:42 +01:00
Samuele Locatelli 68c9c1c555 UPdate script deploy + installer 2022-02-01 16:51:16 +01:00
Samuele Locatelli 5474ebcf3d Merge remote-tracking branch 'gitlab.steamware/develop' into develop 2022-01-21 14:47:08 +01:00
Samuele Locatelli 875d01c823 refresh minore 2022-01-21 14:46:53 +01:00
Giancarlo Rottoli c7a52ea942 Cancello Report spazzatura 2021-12-28 10:12:05 +01:00
Giancarlo Rottoli 046161e0ce Merge branch 'report' into develop 2021-12-28 10:02:15 +01:00
Giancarlo Rottoli 1af238b30a Update Repoprt Cart 1.3 e Remnant 2021-12-28 09:49:40 +01:00
Samuele Locatelli a173fe8f5e Merge tag 'FixCiCd' into develop
Fix CiCd x pubblicazione nexus
2021-11-25 11:52:24 +01:00
Samuele Locatelli 278470356a Merge branch 'release/FixCiCd' 2021-11-25 11:52:12 +01:00
Samuele Locatelli 26335a70e7 fix versioni CORE 2021-11-25 11:49:51 +01:00
Samuele Locatelli ceb448bd4e fix path x NKC_WF? 2021-11-25 11:44:57 +01:00
Samuele Locatelli 04c5fc27b7 Merge tag 'FixCiCdNkcReman' into develop
fixed deply CI/CD x NKC e REMAN
2021-11-25 11:39:56 +01:00
Samuele Locatelli 90b26cbb40 Merge branch 'release/FixCiCdNkcReman' 2021-11-25 11:39:43 +01:00
Samuele Locatelli c5fd9d08c9 test fix yaml 2021-11-25 11:27:47 +01:00
Samuele Locatelli 86ce970e72 Fix vers num locale 2021-11-25 11:18:55 +01:00
Samuele Locatelli c2c3b88f2d update postbuild x REMAN 2021-11-25 11:17:49 +01:00
Samuele Locatelli 728a985ec5 riaggiunta publish propfiles corretti 2021-11-25 10:09:54 +01:00
Samuele Locatelli fe9b7eb730 Fix reman solution in yaml 2021-11-25 09:58:25 +01:00
Samuele Locatelli bf6d0f3159 refresh 2021-11-25 09:56:25 +01:00
Samuele Locatelli 38be0c67ac Update solution REMAN 2021-11-25 09:56:19 +01:00
Samuele Locatelli 7f3b0a3adf Spostamento progetto REMAN 2021-11-25 09:56:11 +01:00
Samuele Locatelli cae78daefd Spostamento progetto NKC Data 2021-11-25 09:56:01 +01:00
Samuele Locatelli 693b5d0eba fix pub profiles xml 2021-11-25 09:55:49 +01:00
Samuele Locatelli 1eceb82bc8 Merge tag 'UpdNKC' into develop
fix installer x NKC vers 25 nov
2021-11-25 09:07:22 +01:00
Samuele Locatelli dc75fd81c2 Merge branch 'release/UpdNKC' 2021-11-25 09:07:13 +01:00
Samuele Locatelli d2ca541109 fix yaml x dotnet restore finale 2021-11-25 08:59:17 +01:00
Samuele Locatelli 3b4eb2fce4 fix indent yaml 2021-11-25 08:55:17 +01:00
Samuele Locatelli d0ffd6ae90 test CICD x nexus upload develop 2021-11-25 08:53:19 +01:00
Samuele Locatelli 59239b70ae Fix layout base top/bottom 2021-11-25 08:51:40 +01:00
Samuele Locatelli 2499ff1250 maybe fix publish profiles 2021-11-24 19:39:37 +01:00
Samuele Locatelli 73f3c0bc71 tolto step pubblicazione zip... 2021-11-24 19:30:30 +01:00
Samuele Locatelli 4a26aa1955 COmpleto fix nullable, test CI/CD 2021-11-24 19:24:02 +01:00
Samuele Locatelli 6adbfe6375 Fix altri casi null 2021-11-24 19:12:26 +01:00
Samuele Locatelli 124a9ef75d altri fix null & pulizia codice 2021-11-24 19:11:37 +01:00
Samuele Locatelli adec730a94 fix vari nullable x context 2021-11-24 19:10:41 +01:00
Samuele Locatelli 85789538fd fix null in modelli 2021-11-24 19:09:30 +01:00
Samuele Locatelli fbcfb86d1f fix vari warning null x controller 2021-11-24 19:09:08 +01:00
Samuele Locatelli d7ffdc7852 fix yaml 2021-11-24 18:34:39 +01:00
Samuele Locatelli cb31f6a242 update CI-CD 2021-11-24 18:26:48 +01:00
Samuele Locatelli 2eb218a3c0 aggiunta profilo x deploy zip install 2021-11-24 18:26:42 +01:00
Samuele Locatelli a1a233b1f6 Fix anonymous auth x NKC 2021-11-24 18:08:34 +01:00
Samuele Locatelli 101fe9e208 Merge tag 'FixRemanReturnNkc' into develop
fix ritorno a NKC da reman
2021-11-24 17:57:58 +01:00
Samuele Locatelli 2883e85aa4 Merge branch 'release/FixRemanReturnNkc' 2021-11-24 17:57:49 +01:00
Samuele Locatelli 8032103960 aggiunta pagina rimando a NKC x REMAN 2021-11-24 17:57:19 +01:00
Samuele Locatelli 4ee3670183 pulizia 2021-11-24 17:57:12 +01:00
Samuele Locatelli d8b95d322e Merge tag 'PackUpgrade' into develop
Completato upgrade packages nuget + test redirect + update manager x
nuova app
2021-11-24 16:46:24 +01:00
Samuele Locatelli b86041d1bf Merge branch 'release/PackUpgrade' 2021-11-24 16:46:00 +01:00
Samuele Locatelli eb7e5c8502 Aggiunta pagina redirect verso REMAN + check updater 2021-11-24 16:45:49 +01:00
Samuele Locatelli 8a49e2d523 Refresh pacchetti dll mongo 2021-11-24 15:20:49 +01:00
Samuele Locatelli e6a8a0a042 Remapping parametro delle tuple 2021-11-24 15:19:17 +01:00
Samuele Locatelli 98b00efdf1 Update Redis 2021-11-24 15:09:55 +01:00
Samuele Locatelli 845dc7151d Update pack compressione 2021-11-24 15:07:42 +01:00
Samuele Locatelli 1b284c1c7d Update SDK a 4.6.2!!! 2021-11-24 15:07:36 +01:00
Samuele Locatelli 4617e6f3ee update componenti MOngoDB 2021-11-24 15:06:20 +01:00
Samuele Locatelli 6492618ff5 Update steamwarelibs 2021-11-24 15:03:35 +01:00
Samuele Locatelli 33bf62821e Update NLog 2021-11-24 14:56:38 +01:00
Samuele Locatelli 26789d4066 Fix display inch/mm x materiali/remnants 2021-11-24 11:41:06 +01:00
Samuele Locatelli 8df36b2480 Modifica Remnant con QRCode solo x lenght + quote Inch 2021-11-24 11:28:45 +01:00
Samuele Locatelli da1e3549f0 Update profili pubblicazione 2021-11-24 11:28:31 +01:00
Samuele Locatelli 07620c27a6 Fix install redis 5.0.14 su IIS01/IIS02 + update publish profile 2021-11-23 19:11:59 +01:00
Samuele Locatelli 343ba058f3 Merge tag 'ReManFirstRelease' into develop
Versione iniziale REMAN fino ad integrazione PJQ
2021-11-23 12:37:10 +01:00
Samuele Locatelli 9a8257d567 Merge branch 'release/ReManFirstRelease' 2021-11-23 12:36:57 +01:00
Samuele Locatelli 022acce553 update NKC: report remnant + conf coda... 2021-11-23 12:36:32 +01:00
Samuele Locatelli cad34c5610 fix btn stampa (mette in coda DB) 2021-11-23 12:35:58 +01:00
Samuele Locatelli f79170e72e Aggiunto model x PJQ gestione stampe 2021-11-23 12:35:50 +01:00
Samuele Locatelli 2e7e070c2a Fix display naviazione dettaglio MovMag 2021-11-23 08:45:39 +01:00
Samuele Locatelli b2677219d5 Update filtro x ultimi movimenti 2021-11-22 20:34:49 +01:00
Samuele Locatelli c9cd2b2df1 OK deposito e pickup 2021-11-22 19:49:59 +01:00
Samuele Locatelli dcedf03d2c OK x focus pagina scanner 2021-11-22 18:31:06 +01:00
Samuele Locatelli d1b59b5038 OK Remnants pickup 2021-11-22 12:16:17 +01:00
Samuele Locatelli b8373245ce Agigunta procedura ricerca x Dtmx 2021-11-22 11:09:59 +01:00
Samuele Locatelli 806cdab55a aggiunta modelli movMag con user 2021-11-22 11:09:52 +01:00
Samuele Locatelli 40bdce1141 riorg codice controller DB 2021-11-19 19:40:13 +01:00
Samuele Locatelli e28515776e Bozza modifica x gestione user che effettua variazioni magazzino 2021-11-19 19:40:06 +01:00
Samuele Locatelli c7dc020a93 Add migrazione x MovMag 2021-11-19 19:26:07 +01:00
Samuele Locatelli 8ed5f088c2 Aggiunta classe movimenti magazzino 2021-11-19 19:23:04 +01:00
Samuele Locatelli 20d89e4c79 Update pag remnants 2021-11-19 19:14:46 +01:00
Samuele Locatelli a7782d9018 Fix filtro con salto pagina x materiali --> remn 2021-11-19 18:05:48 +01:00
Samuele Locatelli 4e72c80350 Fix datapager + link vari 2021-11-19 17:04:54 +01:00
Samuele Locatelli be9bf008e5 Bozza pagine pickup / depèosito e menu nav 2021-11-19 16:46:02 +01:00
Samuele Locatelli 3aed8b7b39 inizio modifica x gestione filtro remants 2021-11-19 13:03:46 +01:00
Samuele Locatelli 8a9e87703d Aggiunto controllo duplicati su remnant esistenti 2021-11-19 13:01:04 +01:00
Samuele Locatelli 06b8edc0b2 COmpletato add, edit, incr/decr x remnants 2021-11-19 12:20:10 +01:00
Samuele Locatelli 5864eb448a Modifica con filtro remnant e + solo se selezionato 2021-11-19 09:55:41 +01:00
Samuele Locatelli 62dc3033f1 Merge tag 'ReManProjInit' into develop
Bozza preliminare sito gestione remnants
2021-11-18 19:16:21 +01:00
Samuele Locatelli d0d918ffde Merge branch 'release/ReManProjInit' 2021-11-18 19:16:11 +01:00
Samuele Locatelli 1af003f2ce Ancora update pagina Remnants 2021-11-18 19:15:56 +01:00
Samuele Locatelli e939a4b5bf Aggiunta metodi recupero remnants 2021-11-18 18:48:18 +01:00
Samuele Locatelli 30034aea7c Fix lunghezza dati 18.2 -->18.3 x decimal 2021-11-18 18:43:00 +01:00
Samuele Locatelli 17528bec75 Aggiunta remnants su DB 2021-11-18 18:34:59 +01:00
Samuele Locatelli 4d95a45279 Add initDb migration 2021-11-18 18:34:54 +01:00
Samuele Locatelli 5ac1925d1c Update ancora x materiali 2021-11-18 18:24:09 +01:00
Samuele Locatelli 418d1bdc6b Rimozione demo page forecast 2021-11-18 18:24:03 +01:00
Samuele Locatelli 25225d4fd5 bozza pagina lista materiali 2021-11-18 17:53:33 +01:00
Samuele Locatelli ba6da1514a aggiunta componenti loader + pager 2021-11-18 17:53:24 +01:00
Samuele Locatelli dc8a47b8d7 refresh layout 2021-11-18 17:53:16 +01:00
Samuele Locatelli d6c6558ba9 Aggiunta librerie fontawesome + bootstrap 2021-11-18 17:53:01 +01:00
Samuele Locatelli cea025da3b Update DB x controller materiali 2021-11-18 17:52:49 +01:00
Samuele Locatelli bbfab5ea52 Fix grafico x area NAV sito REMAN 2021-11-18 16:28:46 +01:00
Samuele Locatelli 8264498f15 update note x scaffolding 2021-11-18 16:28:31 +01:00
Samuele Locatelli c1c014b7c0 Aggiunta preliminare sito REMAN x gestione remnants 2021-11-13 09:49:29 +01:00
Samuele Locatelli e76320bf99 Merge tag 'FixSheetsStatsIndexReset' into develop
Fix calcolo statistiche sheet/batch, era un idx che si resettava x ogni
bunk
2021-11-11 19:35:56 +01:00
Samuele Locatelli 05fd8b3701 Merge branch 'release/FixSheetsStatsIndexReset' 2021-11-11 19:34:52 +01:00
Samuele Locatelli 56fdee795d Eliminata trappola post fix calcolo statistiche BATCH 2021-11-11 19:34:22 +01:00
Samuele Locatelli 7b8389e575 messo trappola x caricare json da mongo a mano da file 2021-11-11 19:34:01 +01:00
Samuele Locatelli 2a35aa08ec Merge tag 'FixCsvExport' into develop
Aggiunto csv export
2021-10-18 11:27:24 +02:00
Samuele Locatelli 54969b3b27 Merge branch 'release/FixCsvExport' 2021-10-18 11:27:05 +02:00
Samuele Locatelli 0be32f457d Aggiunto export CSV + fix 25 righe visualizzazione 2021-10-18 11:26:42 +02:00
Samuele Locatelli 06a4df8b50 Merge tag 'AddDayExportCsv' into develop
Aggiunta export day stats
2021-10-18 09:47:29 +02:00
Samuele Locatelli 53f30037aa Merge branch 'release/AddDayExportCsv' 2021-10-18 09:47:10 +02:00
Samuele Locatelli 846c195019 Fix export statistiche 2021-10-18 09:46:23 +02:00
Samuele E. Locatelli 7850d8222d bozza export csv (NOT OK) 2021-10-17 07:06:19 +02:00
Samuele Locatelli 7acf336639 Merge tag 'LogRecaltStats' into develop
Aggiunta log tempi ricalcolo statistiche
2021-10-07 10:31:36 +02:00
Samuele Locatelli 3a1604112e Merge branch 'release/LogRecaltStats' 2021-10-07 10:31:24 +02:00
Samuele Locatelli 30478f5272 Update x log tempo ricalcolo statistiche daily 2021-10-07 10:31:02 +02:00
Samuele Locatelli a0922ee29f Merge tag 'FIlterDisplayReview' into develop
Fix display review
2021-10-06 16:34:05 +02:00
Samuele Locatelli b7ba6fffeb Merge branch 'release/FIlterDisplayReview' 2021-10-06 16:33:50 +02:00
Samuele Locatelli f08f3c3c87 Update grafico filtri 2021-10-06 16:33:20 +02:00
Samuele Locatelli 4fcc8a1998 UPdate componente paginazione 2021-10-06 16:33:13 +02:00
Samuele Locatelli b353a49cc1 Merge tag 'ReportPEzziOra' into develop
Fix display pezzi/ora
2021-10-06 13:56:58 +02:00
Samuele Locatelli 1dfc180cbf Merge branch 'release/ReportPEzziOra' 2021-10-06 13:56:48 +02:00
Samuele Locatelli 9aa4f0c60c Review display pezzi/ora 2021-10-06 13:29:47 +02:00
Samuele Locatelli 32c5e0fd6c Fix ricalcolo parametrico reports daily 2021-10-06 12:53:11 +02:00
Samuele Locatelli 9cc60e93de Fix selezione asse giorno x report Daily 2021-10-06 12:53:03 +02:00
Samuele Locatelli 3b5157b4a1 Merge tag 'ReportFix' into develop
Completamento reports daily
2021-10-06 12:12:05 +02:00
Samuele Locatelli ae6ff18385 Merge branch 'release/ReportFix' 2021-10-06 12:11:50 +02:00
Samuele Locatelli e7355bea00 Completato update report x 2 grafici 2021-10-06 12:11:25 +02:00
Samuele Locatelli 8e98ae2f0a Fix display MIA in UnloadPage 2021-10-06 10:15:28 +02:00
Samuele Locatelli 53990745c6 Merge tag 'ReportPost' into develop
Aggiunta report daily post
2021-10-05 19:17:48 +02:00
Samuele Locatelli 617574a3bd Merge branch 'release/ReportPost' 2021-10-05 19:17:39 +02:00
Samuele Locatelli 52a5631675 Ok grafici + log, updatepanel NON VA 2021-10-05 19:15:39 +02:00
Samuele Locatelli b401be828f Update gestioen grafici daily 2021-10-05 19:00:21 +02:00
Samuele Locatelli ef0afc508e Bozza grafici Daily 2021-10-05 18:18:16 +02:00
Samuele Locatelli 426307f19c integrazione modulo 2021-10-05 16:21:32 +02:00
Samuele Locatelli 1f103cd87f inizio modulo daily stats 2021-10-05 16:21:28 +02:00
Samuele Locatelli 800ccf7eaa Merge tag 'ReportPre' into develop
Aggiunto modulo statistiche PRE
2021-10-05 15:34:27 +02:00
Samuele Locatelli 4ce2e41d75 Merge branch 'release/ReportPre' 2021-10-05 15:34:14 +02:00
Samuele Locatelli 3b980d1602 COmpletate statistiche PRE 2021-10-05 15:33:38 +02:00
Samuele Locatelli 03a15c34bf Test x grafici dinamici 2021-10-05 14:19:41 +02:00
Samuele Locatelli 9a4204a24c COmpletata scheda stats PRE senza grafici 2021-10-05 11:24:24 +02:00
Samuele Locatelli ddc88286ab Update visualizzazione tabella stats Batch 2021-10-05 11:00:13 +02:00
Samuele Locatelli 98625451e2 Aggancio selezione report 2021-10-04 19:13:04 +02:00
Samuele Locatelli 268c6c073f Inizio modifica pagina report 2021-10-04 19:07:00 +02:00
Samuele Locatelli e48ab33b50 Aggiunta componente selettore report 2021-10-04 19:06:51 +02:00
Samuele Locatelli 813b7d79ee Merge tag 'FixDxf_ErrorTrap' into develop
Fix gestione DXF: reset e impedimento + di 1 file x volta, aggiunta
error trap con 2° tentativo reload
2021-09-24 10:38:49 +02:00
Samuele Locatelli 06f9e23a5e Merge branch 'release/FixDxf_ErrorTrap' 2021-09-24 10:38:21 +02:00
Samuele Locatelli 37857e2c77 Riportato error message full in locale 2021-09-24 10:37:45 +02:00
Samuele Locatelli f162f4a367 Trappola error pages in pista x tentare 2 volte prima di andare in home 2021-09-24 10:37:21 +02:00
Samuele Locatelli 289fa0ffd8 Fix gestione DXF: invalidati i running nest e impedisce caricamento + di 1 x volta 2021-09-24 10:05:21 +02:00
Samuele Locatelli 3a55c155e9 Merge tag 'UpdaterFix' into develop
Completato fix updater x Nexus
2021-09-17 16:46:58 +02:00
Samuele Locatelli 9f4f96e15d Merge branch 'release/UpdaterFix' 2021-09-17 16:46:48 +02:00
Samuele Locatelli b83b29f798 Fix conf https x NEXUS 2021-09-17 16:46:34 +02:00
Samuele Locatelli 62cc21f43d Eliminazioni warnings vari codice 2021-09-17 14:51:27 +02:00
Samuele Locatelli 8ec6ce6390 Update typescript a latest 2021-09-17 14:51:19 +02:00
Samuele Locatelli 72398af0d5 fix port 61257 2021-09-17 14:39:20 +02:00
Samuele Locatelli d143857cf8 Update nuget vari 2021-09-17 14:31:54 +02:00
Samuele Locatelli d2daf33f14 UPdate nuget steamwarelibs 2021-09-17 14:26:21 +02:00
Samuele Locatelli 0a36cf3de8 Merge tag 'FixNexus' into develop
Fix nexus path https
2021-09-16 16:21:13 +02:00
Samuele Locatelli b178add115 Merge branch 'release/FixNexus' 2021-09-16 16:21:05 +02:00
Samuele Locatelli a7fcfe0eca Update nexus yaml conf 2021-09-16 16:17:06 +02:00
Samuele Locatelli 5aac6657e8 Merge tag 'CheckFIleNameCNC' into develop
Fix controllo filename/takt in fase import se già approvato
2021-09-16 16:05:16 +02:00
Samuele Locatelli f9281ece74 Merge branch 'release/CheckFIleNameCNC' 2021-09-16 16:05:04 +02:00
Samuele Locatelli 4cc1bfbd8f Fix comportamento file upload x kit e test dxf 2021-09-16 16:03:05 +02:00
Samuele Locatelli 8bb4580ba2 Aggiunto verifica batch già approvati in import 2021-09-16 16:01:48 +02:00
Samuele Locatelli a474c243f6 Merge tag 'FixManifestVErs' into develop
Fix manifest version (era 0.0.0.0)
2021-09-02 16:39:43 +02:00
Samuele Locatelli 91b36dbf5f Merge branch 'release/FixManifestVErs' 2021-09-02 16:38:40 +02:00
Samuele Locatelli 8ed38c3976 fix vers number in manifest.xml 2021-09-02 16:38:07 +02:00
Samuele Locatelli 2697a3ae09 Merge tag 'FixManifestDeploy' into develop
Fix modalità update e url manifest.xml
2021-09-02 16:32:36 +02:00
Samuele Locatelli 83f44c6d36 Merge branch 'release/FixManifestDeploy' 2021-09-02 16:30:28 +02:00
Samuele Locatelli 07e4fbe5e8 Update pagina download NKC 2021-09-02 16:30:03 +02:00
Samuele Locatelli 252387f6ca Modifica ciclo update in deploy CI/CD 2021-09-02 16:24:54 +02:00
Samuele Locatelli 8ccddec3bd Merge tag 'Gitlab_CICD' into develop
Fix gitlab CI CD deploy
2021-09-02 15:57:44 +02:00
Samuele Locatelli 06a2dc0200 Merge branch 'release/Gitlab_CICD' 2021-09-02 15:57:32 +02:00
Samuele Locatelli 0d6244365d Merge branch 'feature/Jenkins2Gitlab' into develop 2021-09-02 15:56:17 +02:00
Samuele Locatelli 4e25b172c8 Merge branch 'develop' into feature/Jenkins2Gitlab 2021-09-02 15:56:02 +02:00
Samuele Locatelli 07ff67b1c8 Fix timing esecuzioen batch stat import 2021-09-02 15:55:01 +02:00
Samuele Emilio Locatelli 7205e0a5ab Merge branch 'feature/Jenkins2Gitlab' into 'develop'
Feature/jenkins2 gitlab

See merge request steamware/NKC!1
2021-09-02 13:52:42 +00:00
Samuele Emilio Locatelli d618963565 Feature/jenkins2 gitlab 2021-09-02 13:52:42 +00:00
Samuele Locatelli 8379252c12 riduzione verbosita e path manifest/changelog x upload 2021-09-02 15:45:13 +02:00
Samuele Locatelli 17f32f80d7 fix nexus upload (hope) 2021-09-02 15:29:30 +02:00
Samuele Locatelli c7fd3961af fix typo: releases --> release 2021-09-02 15:22:37 +02:00
Samuele Locatelli fc0dfd9d2e modifica yaml CiCd 2021-09-02 15:20:05 +02:00
Samuele Locatelli 9c536f41e1 fix path x recupero filkx e nexus 2021-09-02 15:07:35 +02:00
Samuele Locatelli a5ba2a0eaf fix develop install x IIS01 2021-09-02 15:02:35 +02:00
Samuele Locatelli 836c3515da ancora modifica yaml 2021-09-02 15:02:12 +02:00
Samuele Locatelli 66f4ddc340 ancora test yaml CiCd 2021-09-02 14:55:12 +02:00
Samuele Locatelli f5dec22e60 Ancora test yaml CiCd 2021-09-02 14:35:40 +02:00
Samuele Locatelli 57aa6c9af9 cambio modalità build 2021-09-02 14:23:33 +02:00
Samuele Locatelli 763caff2e4 update tag verbosity 2021-09-02 14:16:27 +02:00
Samuele Locatelli 0d74d84fd6 fix yaml syntax 2021-09-02 14:13:06 +02:00
Samuele Locatelli 221c9d9a3e Update yaml x build/install 2021-09-02 14:10:06 +02:00
Samuele Emilio Locatelli ca6f82f118 Update .gitlab-ci.yml file 2021-09-02 10:22:02 +00:00
Samuele Locatelli 2e7b8f11aa Add tag x win 2021-09-02 12:20:42 +02:00
Samuele Locatelli f1bb875ecc Versione iniziale gitlab conf 2021-09-02 12:09:39 +02:00
Samuele Locatelli 7825f8e9aa Merge branch 'feature/StatistichePre' into develop 2021-09-02 11:47:31 +02:00
Samuele Locatelli 9a8272f021 Aggiunto calcolo statistiche a fine batch 2021-09-02 11:47:22 +02:00
Samuele Locatelli 385936a167 Refresh grafico pagina dev tools 2021-09-02 11:42:13 +02:00
Samuele Locatelli 8e6a086e18 Display tempo calcolo a fine esecuzione 2021-09-02 11:18:09 +02:00
Samuele Locatelli f5fefb8070 Aggiunta button in devUtils x ricalcolo 2021-09-02 11:14:44 +02:00
Samuele Locatelli 807a6d5e45 Aggiunta metodi chiamate stored ricalcolo 2021-09-02 11:14:19 +02:00
Samuele Locatelli 97984ce39c Merge tag 'GestionePngConVersioni' into develop
Gestione stsampa BIN con immagini PNG generate con indice revisione
disegno
2021-08-20 16:15:39 +02:00
Samuele Locatelli babd52629a Merge branch 'release/GestionePngConVersioni' 2021-08-20 16:15:20 +02:00
Samuele Locatelli 1b71f76d14 update schemacompare DB 2021-08-20 16:13:13 +02:00
Samuele Locatelli e1d84b29f4 Aggiunta metodo update dati da BIN 2021-08-20 15:06:29 +02:00
Samuele Locatelli 99b2983962 refresh parziale classi x update ExtCode + Rev 2021-08-20 14:46:04 +02:00
Samuele Locatelli 8a7b4dd8a0 Merge tag 'fixEmptyRedix_NugetNLog' into develop
Fix regressione gestioen redis x valori vuoti
2021-08-19 12:12:41 +02:00
Samuele Locatelli 553f488fdf Merge branch 'release/fixEmptyRedix_NugetNLog' 2021-08-19 12:12:19 +02:00
Samuele Locatelli fed4789534 FIx-update SteamwareLibs x redis vuoto 2021-08-19 12:12:08 +02:00
Samuele Locatelli 5bbeb6817b Update NLog 2021-08-19 12:09:49 +02:00
Samuele Locatelli 15df69f9fd Merge branch 'develop' 2021-08-19 11:42:42 +02:00
Samuele Locatelli ae70999f78 Clean dll inutili 2021-08-19 11:42:30 +02:00
Samuele Locatelli 1b484df0b9 Merge tag 'updateNugetSteamWareLibs' into develop
Update librerie
2021-08-19 11:39:55 +02:00
Samuele Locatelli cc00dc0804 Merge branch 'release/updateNugetSteamWareLibs' 2021-08-19 11:39:49 +02:00
Samuele Locatelli 719968ee2b Nuget update x SteamwareLibs e setRSV 2021-08-19 11:39:01 +02:00
Samuele Locatelli 78482b4833 aggiunto cacheDataTTL in web.config 2021-08-11 16:53:21 +02:00
Samuele Locatelli da292cae17 Merge tag 'ReloadConfFix' into develop
Fix corretto lettura CRS --> ConfReadString
2021-08-11 16:01:28 +02:00
Samuele Locatelli 73cabee7ee Merge branch 'release/ReloadConfFix' 2021-08-11 16:01:18 +02:00
Samuele Locatelli 18992da8bf Fix problema lettura NKC_WFConnectionString 2021-08-11 16:00:48 +02:00
Samuele Locatelli d4eabe8edd Merge tag 'FixAppConf' into develop
Rilascio produzione (master)
2021-08-11 15:33:02 +02:00
Samuele Locatelli ba88680aa1 Merge branch 'release/FixAppConf' 2021-08-11 15:32:52 +02:00
Samuele Locatelli dff09fc549 Update x fix librerie steamwarelibs 2021-08-11 15:31:17 +02:00
Samuele Locatelli 2e24c01bd9 rimozione error page specifiche (usa Oops.. ) 2021-08-11 11:44:24 +02:00
Samuele Locatelli f60f5868ca Aumento stato sessione da 120 a 480 minuti (redis) 2021-08-11 11:43:25 +02:00
Samuele Locatelli 0c7841e8d8 Merge tag 'FixdllAndVocabolario' into develop
Fix minori vocabolario e dll inserite x errore
2021-08-11 09:09:47 +02:00
Samuele Locatelli 7571b732eb Merge branch 'release/FixdllAndVocabolario' 2021-08-11 09:09:30 +02:00
Samuele Locatelli fb610a6738 fix dll inserite in root x errore da nuget + fix vocabolario 2021-08-11 09:09:06 +02:00
Samuele Locatelli 1a28398470 review gitSpread (NON forza il master) 2021-08-11 08:58:30 +02:00
Samuele Locatelli affaccc1e5 Merge tag 'NugetUpdateSteamwareLibs' into develop
Upgrade pacchetti Nuget generico, ma in particolare le steamware libs x errore restart multiplo reload conf redis x app config
2021-08-11 08:57:27 +02:00
Samuele Locatelli fb780c3328 Merge branch 'release/NugetUpdateSteamwareLibs' 2021-08-11 08:56:47 +02:00
Samuele Locatelli 3ce630a683 refresh 2021-08-11 08:55:19 +02:00
Samuele Locatelli 2f1e11072c update nuget DNSClient 2021-08-11 08:55:14 +02:00
Samuele Locatelli 6ac8959b37 update nuget Mongo 2021-08-11 08:54:55 +02:00
Samuele Locatelli 963aa925bd refresh redis lib 2021-08-11 08:49:15 +02:00
Samuele Locatelli cfd7788f71 space refresh 2021-08-11 08:48:37 +02:00
Samuele Locatelli 2865795574 Update librerie steamware x reload conf redis 2021-08-11 08:47:51 +02:00
Samuele Locatelli 66d16ed021 piccolo check preliminare 2021-08-11 08:46:23 +02:00
Samuele Locatelli 66fc9b47a2 Merge branch 'develop' into SDK 2021-07-28 20:34:52 +02:00
Samuele Locatelli d480797945 Completato fix x reset errori stima/nesting 2021-07-28 20:34:46 +02:00
Samuele Locatelli 7bd6cc5621 Update prox risp nesting 2021-07-28 18:03:34 +02:00
Samuele Locatelli 5964fcd3d6 fix ripetizione stima post errore nesting 2021-07-28 17:27:00 +02:00
Samuele Locatelli c34e919570 Merge branch 'develop' into SDK 2021-07-28 15:53:30 +02:00
Samuele Locatelli a5ac0782fe fix x gestione PartRev 2021-07-28 15:53:22 +02:00
Samuele Locatelli 3979d88a04 Aggiunto PartRev nella risposta 2021-07-28 15:45:53 +02:00
Samuele Locatelli 09711e9d1f Merge branch 'develop' into SDK 2021-07-28 11:34:38 +02:00
Samuele Locatelli 8583246fd8 Update gestioen risposta con errori estim ext 2021-07-28 11:34:28 +02:00
Samuele Locatelli ee0c85f485 rimessa possibilità rimando stima 2021-07-28 11:33:54 +02:00
Samuele Locatelli 9987a9b532 Merge branch 'develop' into SDK 2021-07-27 16:47:21 +02:00
Samuele Locatelli 27d1ad1d40 pulizia codice 2021-07-27 16:47:16 +02:00
Samuele Locatelli d8905257b0 commentata aprte check success x processing stsatus 2021-07-27 15:19:30 +02:00
Samuele Locatelli d92cb4cb96 corretto registrazione macchina x update da PROD 2021-07-27 14:45:42 +02:00
Samuele Locatelli f9d923b1bd Redis: default DB a 2... 2021-07-27 11:45:49 +02:00
Samuele Locatelli 8da509214e Merge branch 'develop' into SDK 2021-07-27 11:00:04 +02:00
Samuele Locatelli 33bc68d712 Aggiunto refresh iniziale 2021-07-27 10:59:56 +02:00
Samuele Locatelli b3184badac Fix gestione status e semafori 2021-07-27 10:51:06 +02:00
Samuele Locatelli c74c83a372 bozza modifica status machine 2021-07-26 20:02:06 +02:00
Samuele Locatelli e365778d3c Fix gestione secscreen: aggiunto selezione impianto 2021-07-26 19:30:08 +02:00
Samuele Locatelli 219a6691da Merge branch 'develop' into SDK 2021-07-26 17:02:45 +02:00
Samuele Locatelli a4a8b57163 fix preview da order History 2021-07-26 16:44:10 +02:00
Samuele Locatelli a86beaa333 Fix procedura export xls elenco fogli 2021-07-26 16:43:59 +02:00
Samuele Locatelli 0b4c1dd974 update conf code come da setup Sauder 2021-07-23 19:20:27 +02:00
Samuele Locatelli 50ea17c0e3 fix gestione bunk x machine (non necessaria) 2021-07-23 19:09:17 +02:00
Samuele Locatelli 8f0ee0933d Fix stampa cart/bin da order scheduler 2021-07-23 15:10:00 +02:00
Samuele Locatelli 17dd24abea Fix selezione machine LOAD 2021-07-23 13:23:13 +02:00
Samuele Locatelli 04946d6173 Fix display in caso di errore del send estimation 2021-07-23 10:23:42 +02:00
Samuele Locatelli ec6b801b9f fix calcolo indice carrello 2021-07-22 12:50:03 +02:00
Samuele Locatelli 3490c08a69 FIx recupero sheetList x macchina + typo 2021-07-22 07:54:49 +02:00
Samuele Locatelli 508dbbf55f Merge branch 'develop' 2021-07-21 11:43:28 +02:00
Samuele Locatelli fc4b36ad66 Completata modifica DB x selezionare sempre la stampante corretta x CNC (print/work) 2021-07-21 11:42:25 +02:00
Samuele Locatelli b47c391c63 Aggiunto check x invio SOLOS E è stato splittato 2021-07-21 10:40:58 +02:00
Samuele Locatelli 46c9dec2a9 Merge remote-tracking branch 'gitlab.steamware/develop' into develop 2021-07-21 09:49:31 +02:00
Samuele Locatelli 3cfc4f8275 Verifica risposte nesting (scarto se incoerente) 2021-07-21 09:49:26 +02:00
Samuele E. Locatelli 385bf15d22 Aggiunta decodifica watchdog 2021-07-20 19:13:03 +02:00
Samuele E. Locatelli 6f8dc47293 inizio gestione info "live state" linea 2021-07-20 18:43:06 +02:00
Samuele E. Locatelli 432e53cd24 registro anche evento 01 alive... 2021-07-20 18:17:26 +02:00
Samuele Locatelli dafad94464 Merge branch 'develop' 2021-07-20 16:37:09 +02:00
Samuele Locatelli 9082df9146 Fix gestione stop nesting anche x child 2021-07-20 16:35:55 +02:00
Samuele Locatelli d783f65c20 TYPO + Fix salvataggio eventi (redis da svuotare) 2021-07-20 16:30:51 +02:00
Samuele Locatelli 15f30baf83 Merge branch 'develop' 2021-07-20 15:42:47 +02:00
Samuele Locatelli 0c481e5169 Update x calcolo con ordine singolo + fix cancellazione a cascata 2021-07-20 15:42:36 +02:00
Samuele Locatelli 0175841f22 Merge tag 'ManNumIndexCB' into develop
Sistemata prima versione gestione num index cart/bin
2021-07-20 08:51:09 +02:00
Samuele Locatelli b22579ca6e Merge branch 'release/ManNumIndexCB' 2021-07-20 08:50:52 +02:00
Samuele Locatelli 691ae3f123 Aggiunta gestione num indice carrello da impiegare 2021-07-20 08:48:46 +02:00
Samuele Locatelli 47b85f98b3 Fix upd messages 2021-07-20 08:11:53 +02:00
Samuele Locatelli 26234bce04 modifica gestione nesting con 2 macchine (TO TEST!!!) 2021-07-19 19:01:32 +02:00
Samuele Locatelli e7eb09e44a Merge tag 'RC_2.0' into develop
COmpletata prima RC x versione 2 con stampe differenziate
2021-07-17 11:46:01 +02:00
Samuele Locatelli 669f5d8478 Merge branch 'release/RC_2.0' 2021-07-17 11:45:46 +02:00
Samuele Locatelli ae1fd38bbb Merge branch 'feature/LabelPrintingDualMachine' into develop 2021-07-17 11:42:47 +02:00
Samuele Locatelli 00cb127ac4 Update x gestione stampe su code differenti NE01/NE02 2021-07-17 11:42:31 +02:00
Samuele Locatelli c34b0d6768 Inizio modifica pagina stampa labels 2021-07-16 19:22:09 +02:00
Samuele Locatelli ac50e00c85 Fix barra bilanciamento 2021-07-16 19:14:31 +02:00
Samuele Locatelli c6bf8db9ef Code cleanup 2021-07-16 18:56:48 +02:00
Samuele Locatelli 3e65a59ae6 Merge tag 'NewUpdMan' into develop
NUova gestione update manager
2021-07-16 18:48:45 +02:00
Samuele Locatelli e32c950df3 Merge branch 'release/NewUpdMan' 2021-07-16 18:48:32 +02:00
Samuele Locatelli 239ff07970 Update gestione UpdMan con nuova libreria e metodi 2021-07-16 18:47:50 +02:00
Samuele Locatelli daff88cfd6 Mopdifica area LAST 2021-07-16 15:14:25 +02:00
Samuele Locatelli 8a52abdeb8 Merge branch 'develop' 2021-07-16 15:12:39 +02:00
Samuele Locatelli a8f2a91b6b Inizio modifica update Man da DB 2021-07-16 15:12:29 +02:00
Samuele Locatelli 85474b9546 modifica x impiegare ultimo zip (senza LAST) 2021-07-16 12:41:17 +02:00
Samuele Locatelli 2f1d54df60 correzione gestione classifier --> BRANCH_NAME + pulizia 2021-07-16 12:24:55 +02:00
Samuele Locatelli c0fe219361 update changelog & manifest + new release set 2021-07-16 12:19:06 +02:00
Samuele Locatelli 4bf90f0527 ancora semplificazione conf 2021-07-16 12:04:28 +02:00
Samuele Locatelli 7e1db3f257 modo archive/last 2021-07-16 11:56:35 +02:00
Samuele Locatelli 40baf2b3c0 update conf nexus upload 2021-07-16 11:49:42 +02:00
Samuele Locatelli a6663ec4f2 riorganizzazione folder x versione 2021-07-16 11:43:16 +02:00
Samuele Locatelli 6961350038 cambio modalità upload 2021-07-16 11:35:32 +02:00
Samuele Locatelli 8d77cce905 ancora test deploy deveop 2021-07-16 11:30:09 +02:00
Samuele Locatelli 480571721a test altro deploy 2021-07-16 11:21:54 +02:00
Samuele Locatelli e852bc9233 update verbosity & wait parallel build 2021-07-16 10:59:12 +02:00
Samuele Locatelli a6f329c244 modifica x evitare interferenza accesso progetto SDK 2021-07-16 10:47:15 +02:00
Samuele Locatelli 19d41ef464 modifica ordine chiamate update resources 2021-07-16 10:36:35 +02:00
Samuele Locatelli ebd8e1daad branch operations stabel --> master 2021-07-16 10:01:44 +02:00
Samuele Locatelli ceddd0bbfe modifica gestione beta --> develop 2021-07-16 10:00:42 +02:00
Samuele Locatelli b158a9a02d test modifica pubblicazione NEXUS 2021-07-16 09:53:29 +02:00
Samuele Locatelli 73f2288b6a rel update 2021-07-15 15:23:05 +02:00
Samuele Locatelli c9a91e294d Refresh pagine unload e MIA post testing 2021-07-15 15:14:59 +02:00
Samuele Locatelli 49ebc94313 Fix pagina debug unload 2021-07-15 10:01:30 +02:00
Samuele Locatelli cad134fc84 Merge branch 'feature/DoppiaMacchina' into develop 2021-07-14 20:07:17 +02:00
Samuele Locatelli cdc7e5be93 Update gestione chiave PlaceCod 2021-07-14 20:07:04 +02:00
Samuele Locatelli c7152d2af9 Completamento gestione display BatchID corrente 2021-07-14 19:41:50 +02:00
Samuele Locatelli 8fcfc092dd Inizio aggiunta sel macchina in unload 2021-07-14 18:00:56 +02:00
Samuele Locatelli 7b54b4bbdc Gestione update PlaceCod 2021-07-14 13:29:32 +02:00
Samuele Locatelli c9cea2edce OK x unload con 2 macchine 2021-07-14 12:14:45 +02:00
Samuele Locatelli 2926f70bae Fix colore NE01/NE02 2021-07-14 11:34:02 +02:00
Samuele Locatelli a9ecb260fb FIx next bunk da posizione macchina! 2021-07-14 08:30:42 +02:00
Samuele Locatelli c82236f133 Fix in Load e LoadSmart x curr batch 2021-07-14 08:12:44 +02:00
Samuele Locatelli f29c419b9d Fix componente batch current 2021-07-14 07:41:30 +02:00
Samuele Locatelli dc5b3bf565 Inizio filtraggio stack da macchina 2021-07-13 18:52:53 +02:00
Samuele Locatelli ca61af9eb6 Update display orders running/scheduled 2021-07-13 18:18:16 +02:00
Samuele Locatelli f47f10f2ba new rel num 2021-07-13 17:38:29 +02:00
Samuele Locatelli 2c02f6a309 Modifica pagina load smart con amchine selection 2021-07-13 17:38:03 +02:00
Samuele Locatelli 5273f6d63a base decodifica barcode x Machine Selection 2021-07-13 17:37:53 +02:00
Samuele Locatelli 27ec011a00 update vers numb 2021-07-01 17:52:46 +02:00
Samuele Locatelli 58820465b4 Merge branch 'feature/Semafori' into develop 2021-07-01 17:51:07 +02:00
Samuele Locatelli 53fd77bb8d aggiunto try-catch x decifrare status 2021-07-01 17:50:58 +02:00
Samuele Locatelli c9128811be new rel 2021-07-01 17:07:31 +02:00
Samuele Locatelli 9e7833b06f Merge branch 'feature/ApiStats' into develop 2021-07-01 17:06:41 +02:00
Samuele Locatelli aaad4e9f3a fix comportamento semaforo 2021-07-01 17:01:11 +02:00
Samuele Locatelli 3bd0c3e8b9 ok gestione semaforo da dati REDIS 2021-07-01 16:43:53 +02:00
Samuele Locatelli aaa278f363 Merge branch 'feature/ApiStats' into develop 2021-07-01 15:35:25 +02:00
Samuele Locatelli c1f5ce18ed update simulatore x status macchine 2021-07-01 15:35:15 +02:00
Samuele Locatelli 38e553a5bd Aggiunta metodi x salvataggio statistiche su DB e redis (OK!!!) 2021-07-01 15:19:08 +02:00
Samuele Locatelli 6eae5e2e23 Merge branch 'feature/UpdateMethods' into develop 2021-06-30 18:07:02 +02:00
Samuele Locatelli d365f90072 Aggiunta scrittura su MONGO DB risposta stats di Carlo 2021-06-30 18:06:53 +02:00
Samuele Locatelli d80691ac0c visibilità da sel macchina x LOAD/UNLOAD 2021-06-30 13:04:25 +02:00
Samuele Locatelli 07cbd9f029 new rel 2021-06-30 12:41:24 +02:00
Samuele Locatelli d09668270d modifiche x gestione selezione macchina 1/2 2021-06-30 12:41:02 +02:00
Samuele Locatelli 70e2c06ae5 refresh oggetti vari 2021-06-30 12:40:51 +02:00
Samuele Locatelli 0e2646c739 Aggiunta metodi REST x update status 2021-06-30 12:40:41 +02:00
Samuele Locatelli 31fb3c5669 aggiornamento metodi bilanciamento 2021-06-30 12:40:25 +02:00
Samuele Locatelli 73eb726f73 Ok comportamento display colore button balance 2021-06-17 17:59:24 +02:00
Samuele Locatelli 5de2c6576b Merge branch 'feature/UpdateMethods' into develop 2021-06-16 15:28:48 +02:00
Samuele Locatelli 75860a164a update nuget non presenti 2021-06-16 15:28:41 +02:00
Samuele Locatelli 5e9c678a02 inizio new rel 2021-06-16 15:24:56 +02:00
Samuele Locatelli 72ff8ebe74 Merge branch 'feature/UpdateMethods' into develop 2021-06-16 15:24:33 +02:00
Samuele Locatelli 00bf555add fix procedura rebalance 2021-06-16 15:24:25 +02:00
Samuele Locatelli 0841aa5584 fix salvataggio stima ext iniziale 2021-06-16 15:24:20 +02:00
Samuele Locatelli a575a20126 Fix algoritmo ricerca step minimo 2021-06-16 15:19:46 +02:00
Samuele Locatelli 0622e8a869 NewRel 2021-06-16 13:26:09 +02:00
Samuele Locatelli 38a4a7285d Aggiunto paginazione ordini 2021-06-16 13:10:39 +02:00
Samuele Locatelli 40b6d19c79 fix check/uncheck show split 2021-06-16 13:01:35 +02:00
Samuele Locatelli 3f399a670a Fix check file path con log (maybe) 2021-06-16 13:01:20 +02:00
Samuele Locatelli ca0e20abe6 Merge branch 'feature/UpdateMethods' into develop 2021-06-16 12:19:37 +02:00
Samuele Locatelli 27b6cebf74 Update NetCore 2021-06-16 11:42:04 +02:00
Samuele Locatelli db1ed098c1 Update Json 2021-06-16 11:41:09 +02:00
Samuele Locatelli f904431560 Update bootstrap 2021-06-16 11:39:53 +02:00
Samuele Locatelli d00d963ab9 refresh 2021-06-16 11:38:13 +02:00
Samuele Locatelli 3fc4fe6f52 Update jQuery 2021-06-16 11:38:09 +02:00
Samuele Locatelli cac7d73f2d MongoDB update 2021-06-16 11:36:56 +02:00
Samuele Locatelli f56661a4d6 refresh 2021-06-16 11:35:18 +02:00
Samuele Locatelli d848f7ef6c Update compression libs 2021-06-16 11:35:13 +02:00
Samuele Locatelli 5b1e49e4b6 Update SteamWareLibs + dep 2021-06-16 11:34:25 +02:00
Samuele Locatelli 2bb26258c4 Update NLog 2021-06-16 11:32:01 +02:00
Samuele Locatelli bc81c1f557 bozza metodi udpate status macchina 2021-06-15 15:51:24 +02:00
Samuele Locatelli 79a2d249f8 new rel 2021-06-15 15:19:56 +02:00
Samuele Locatelli c716f73a91 Merge branch 'feature/NewOrderPage' into develop 2021-06-15 15:19:42 +02:00
Samuele Locatelli 2879db799b fix btn spostamento 2021-06-15 15:19:28 +02:00
Samuele Locatelli e727be5dbd fix caso 100% 2021-06-15 15:06:25 +02:00
Samuele Locatelli 6011861b24 gestione casi 0% / 100% 2021-06-15 14:52:52 +02:00
Samuele Locatelli d03bda211b fix detail split 2021-06-15 14:33:08 +02:00
Samuele Locatelli b0fe09ca05 Merge branch 'feature/NewOrderPage' into develop 2021-06-15 13:36:10 +02:00
Samuele Locatelli 29a47944bf update x visualizzaizone dettaglio 2021-06-15 13:36:01 +02:00
Samuele Locatelli 59e0f85529 new rel 2021-06-15 13:35:52 +02:00
Samuele Locatelli 503de9b769 Update pagine about/contact 2021-06-15 13:35:41 +02:00
Samuele Locatelli ce8a0fa27b Merge branch 'feature/NewOrderPage' into develop 2021-06-15 09:29:51 +02:00
Samuele Locatelli 07e7e4de09 COmpletato update btn approva/resety nesting ANC/DESC 2021-06-15 09:29:42 +02:00
Samuele Locatelli c8ff3df97b Abbozzata gestione reset nesting oltre approvazione 2021-06-14 19:39:34 +02:00
Samuele Locatelli f5c7843b92 inizio nuova release 2021-06-14 18:44:15 +02:00
Samuele Locatelli 5317d41dfa Merge branch 'feature/NewOrderPage' into develop 2021-06-14 18:43:44 +02:00
Samuele Locatelli 710f7d5e35 Completato giro update info batch detail split x ora 2021-06-14 18:43:36 +02:00
Samuele Locatelli c957b10658 Fix update status ancestor (stored) + fix display preview ancestor 2021-06-14 16:10:56 +02:00
Samuele Locatelli aa93b5883f start new rel 2021-06-14 12:58:56 +02:00
Samuele Locatelli 2b95fb8d88 Merge branch 'feature/NewOrderPage' into develop 2021-06-14 12:57:09 +02:00
Samuele Locatelli ecc7f71d10 fix condizione reset errato x split request 2021-06-14 12:56:59 +02:00
Samuele Locatelli e17be03685 new rel num 2021-06-14 12:25:09 +02:00
Samuele Locatelli eb91b21076 Merge branch 'feature/NewOrderPage' into develop 2021-06-14 12:24:50 +02:00
Samuele Locatelli 099eaebaa8 update x recupero altri BATCH splitted 2021-06-14 12:24:41 +02:00
Samuele Locatelli 769a2d8f4c start new release 2021-06-14 11:19:47 +02:00
Samuele Locatelli 9cfe9fcafd Merge branch 'feature/NewOrderPage' into develop 2021-06-14 11:19:27 +02:00
Samuele Locatelli 68fd166aea Fix assegnazione KIT a veri nuovi batch 2021-06-14 11:19:19 +02:00
Samuele Locatelli ed57cfb4c8 start new release 2021-06-14 10:03:12 +02:00
Samuele Locatelli f588cc9c92 Merge branch 'feature/NewOrderPage' into develop 2021-06-14 10:02:46 +02:00
Samuele Locatelli d31290a4f3 Aggiunto processing richieste descendant 2021-06-14 10:02:39 +02:00
Samuele Locatelli e3817cfe41 Fix display detail x casi type corretti 2021-06-14 09:04:52 +02:00
Samuele Locatelli 23b2e5fcbe Refresh visualizzazione e filtraggio 2021-06-11 19:06:53 +02:00
Samuele Locatelli 79047b4587 start new release 2021-06-11 18:24:15 +02:00
Samuele Locatelli c936cbd882 Merge branch 'feature/NewOrderPage' into develop 2021-06-11 18:22:53 +02:00
Samuele Locatelli 0783f9b463 COmpletata review grafica pagina ordini e stima/nesting 2021-06-11 18:22:44 +02:00
Samuele Locatelli 29709c0da2 Fix refresh rapido post spostamento barra 2021-06-11 17:52:00 +02:00
Samuele Locatelli ee40921196 Merge branch 'feature/NewOrderPage' into develop 2021-06-11 16:31:55 +02:00
Samuele Locatelli 42a0728e4d Update refresh 2021-06-11 16:31:45 +02:00
Samuele Locatelli 13a4b4478e Continuo pagina ordini: ok step spostamento e bilanciamento xoxo 2021-06-11 15:48:45 +02:00
Samuele Locatelli 4e47b89baf Update display da tabella (OK salvataggio e tab) 2021-06-11 14:55:29 +02:00
Samuele Locatelli 93aa27e460 new rel 2021-06-11 12:57:02 +02:00
Samuele Locatelli 82e7d4d900 Merge branch 'feature/NewOrderPage' into develop 2021-06-11 12:55:35 +02:00
Samuele Locatelli a030bd1952 update ritorno messaggio da stima... 2021-06-11 12:55:20 +02:00
Samuele Locatelli 5a570d6ad0 Algoritmo bilanciamento vers 0.3 2021-06-10 19:14:24 +02:00
Samuele Locatelli dc4601ff7e Continuo redistribuzione dati ordini 2021-06-09 19:30:55 +02:00
Samuele Locatelli ce3d27bbda Ancora update visualizzazione detail 2021-06-09 18:26:01 +02:00
Samuele Locatelli 3464a50138 fix creazione descendant su set BatchID 2021-06-09 17:53:34 +02:00
Samuele Locatelli 53d2096adc Completo aggiunta metodi comLib x descendants (cache) 2021-06-09 17:50:53 +02:00
Samuele Locatelli db42222472 Aggiunta procedura generazione descendants 2021-06-09 17:50:23 +02:00
Samuele Locatelli 4046eb92f5 Continuo costruzione split ratio 2021-06-09 15:39:47 +02:00
Samuele Locatelli a31dfe70b0 Ancora restyling grafico 2021-06-09 15:16:56 +02:00
Samuele Locatelli 082a80bd3e ancora fix gfrafici pagina batch 2021-06-09 12:01:12 +02:00
Samuele Locatelli f0ef08a41b Merge branch 'feature/NewOrderPage' into develop 2021-06-09 11:53:33 +02:00
Samuele Locatelli 5a9f3f7696 Update metodo scrittura batch 2021-06-09 11:53:16 +02:00
Samuele Locatelli 935a633275 Fix display batchlist 2021-06-09 11:03:55 +02:00
Samuele Locatelli 6ff139a9f3 Merge branch 'feature/ExtendedEstimResponse' into develop 2021-06-09 10:20:26 +02:00
Samuele Locatelli 4f8ad736e0 Aggiunte chiamate update x tempi processing 2021-06-09 10:17:33 +02:00
Samuele Locatelli d9722e0da5 Continuo update x nuova stima extended 2021-06-09 10:12:16 +02:00
Samuele Locatelli 380108f911 update vers number 2021-06-09 10:11:44 +02:00
Samuele Locatelli 3d84ddab24 Aggiunta parametro x indicare stima ext.. 2021-06-08 17:36:56 +02:00
Samuele Locatelli 341c49a2a4 Fix primo testing insomnia 2021-06-08 16:33:04 +02:00
Samuele Locatelli 3c41209baa Update insomnia 2021-06-08 16:25:57 +02:00
Samuele Locatelli b0c02c1ecc vers 392: link preview a 4h default 2021-04-21 14:07:02 +02:00
Samuele Locatelli d8c2492077 Update x gestione filtro periodo previsione produzione 2021-04-09 11:13:53 +02:00
Samuele Locatelli c359e05831 Merge branch 'develop' into SDK 2021-04-07 14:47:04 +02:00
Samuele Locatelli 74d6656eb9 aggiunta modulo gestione statistiche scarico previste 2021-04-07 14:46:54 +02:00
Samuele Locatelli 55c9252e49 add chartjs 2021-04-07 14:46:43 +02:00
Samuele Locatelli 43abc4ab25 start new release 2021-04-07 14:46:22 +02:00
Samuele E. Locatelli f9c4d80cde Merge branch 'develop' into SDK 2021-03-02 11:02:58 +01:00
Samuele E. Locatelli 8aec006422 new rel 2021-03-02 11:02:45 +01:00
Samuele E. Locatelli 3066432c94 fix controlllo path pdf x UNC + timeout ping 2021-03-02 11:02:37 +01:00
Samuele E. Locatelli f5d2a9ca75 Merge branch 'develop' into SDK 2021-03-01 19:48:52 +01:00
Samuele E. Locatelli 517826de77 new rel 2021-03-01 19:48:46 +01:00
Samuele E. Locatelli 5aee27b18a Modifica x gestione validazione PDF (2test!) 2021-03-01 19:48:42 +01:00
Samuele E. Locatelli 7980ed777d Merge branch 'develop' into SDK 2021-02-08 18:57:17 +01:00
Samuele E. Locatelli b0ee9fd4d6 ancora fix dll 2021-02-08 18:57:06 +01:00
Samuele E. Locatelli 18140239d5 fix dll dependency e git inclusion 2021-02-08 18:57:01 +01:00
Samuele E. Locatelli 90b28bca07 Merge branch 'develop' into SDK 2021-02-08 18:51:18 +01:00
Samuele E. Locatelli 55a9178cfc Completo update + consol nuget aggiornabili 2021-02-08 18:51:10 +01:00
Samuele E. Locatelli eefae8438c Ancora pacchetti nuget 2021-02-08 18:39:57 +01:00
Samuele E. Locatelli 2634d30f03 refresh libs nuget + fix nuove libs 2021-02-08 18:35:51 +01:00
Samuele E. Locatelli 72a7d3dd81 update steamware loggers 2021-02-08 18:30:14 +01:00
Samuele E. Locatelli e82e7658f1 update mongo nupkg + compress 2021-02-08 18:29:24 +01:00
Samuele E. Locatelli bc2e9f236c update bootstrap 4.5.3 2021-02-08 18:26:32 +01:00
Samuele E. Locatelli f54b160964 Update Nlog nuget 2021-02-08 18:25:34 +01:00
Samuele E. Locatelli fd1b543a85 update packages vari 2021-02-08 18:24:49 +01:00
Samuele E. Locatelli 94da67d890 update stored x report 2021-02-08 18:24:36 +01:00
Samuele E. Locatelli a36ab75169 refresh footer + home 2021-02-08 18:24:00 +01:00
Samuele E. Locatelli 6f31c0f3d2 new rel 2021-02-08 18:22:59 +01:00
Samuele E. Locatelli f391968e21 Merge branch 'develop' into SDK 2020-11-27 10:30:07 +01:00
Samuele E. Locatelli 7fe834f83e fix gitSpread 2020-11-27 10:29:54 +01:00
Samuele E. Locatelli 9932206f9f new rel 2020-11-27 10:29:13 +01:00
Samuele E. Locatelli 38e4d7e94a inserito parametro conf x tipo validazione e MaxTime 2020-11-27 10:27:48 +01:00
Samuele E. Locatelli 7f929676b6 fix x invio MaxTime a 1 x validazioni 2020-11-27 10:26:20 +01:00
Samuele E. Locatelli 603cf097c9 udpate vers gitSpread 2020-11-26 19:08:37 +01:00
Samuele E. Locatelli 0b05415b47 new rel 386 2020-11-26 19:07:55 +01:00
Samuele E. Locatelli 115aa90029 Merge branch 'SDK' into develop 2020-11-26 19:05:50 +01:00
Samuele E. Locatelli 2560400d66 Merge branch 'develop' into SDK 2020-11-26 19:05:40 +01:00
Samuele E. Locatelli 0af4a73faa aggiunto gitSpread 2020-11-26 19:05:36 +01:00
Samuele E. Locatelli 32aeb0350f Aggiunto history x tutti i batch di nesting (da testare) 2020-11-26 19:03:09 +01:00
Samuele E. Locatelli b7a92f464a Merge branch 'develop' into SDK 2020-11-26 18:08:16 +01:00
Samuele E. Locatelli 2ca07f1882 new rel 385 2020-11-26 18:08:09 +01:00
Samuele E. Locatelli bf856bcf05 fix gestione errori 2020-11-26 18:07:58 +01:00
Samuele E. Locatelli 752ef12bcf Fix display FILE valid 2020-11-26 17:13:17 +01:00
Samuele E. Locatelli b064d587cf Completamento giro di validazione TEST DXF 2020-11-26 16:12:41 +01:00
Samuele E. Locatelli 760b1bc764 fix upload file 2020-11-26 12:26:02 +01:00
Samuele E. Locatelli f2949a0b34 refresh 2020-11-26 12:08:37 +01:00
Samuele E. Locatelli 58b20d2e6e update proprietà x .csv 2020-11-26 12:08:33 +01:00
Samuele E. Locatelli c98e2ee71f modifiche fileUpload x gestione dxf oltre a csv 2020-11-26 12:08:19 +01:00
Samuele E. Locatelli e73bfdf618 add iniziale pagine nuove 2020-11-26 12:07:54 +01:00
Samuele E. Locatelli e72bfbabad inizio vers 1.3 2020-11-26 10:34:40 +01:00
Samuele E. Locatelli 0fd505519f fix config elmah x MP/IO 2020-11-18 14:50:04 +01:00
Samuele E. Locatelli b4ebc1b680 Merge branch 'develop' into SDK 2020-10-28 16:02:00 +01:00
Samuele E. Locatelli 6f3e43bb77 new rel 2020-10-28 16:01:50 +01:00
Samuele E. Locatelli e1a05e7718 Typo + minor fix on PartMIA setup 2020-10-28 16:01:37 +01:00
Samuele E. Locatelli 65ae8fc4cd Merge branch 'develop' into SDK 2020-10-22 17:20:28 +02:00
Samuele E. Locatelli 6c928ac03c Aggiunta conf specifica x IIS02 2020-10-22 17:20:19 +02:00
Samuele E. Locatelli 8b53913c8c new graph test fix 2020-10-22 17:12:40 +02:00
Samuele E. Locatelli 820c000fea Merge branch 'develop' into stable 2020-10-22 17:02:55 +02:00
Samuele E. Locatelli d92de63c21 New release 378 2020-10-22 17:02:49 +02:00
Samuele E. Locatelli 83df86549b Merge branch 'develop' 2020-10-22 16:59:09 +02:00
Samuele E. Locatelli 8dc507640f fix master 2020-10-22 16:58:59 +02:00
Samuele E. Locatelli bfedc667e1 Graph fix x KITTING 2020-10-22 16:58:15 +02:00
Samuele E. Locatelli 8cdba96849 fix grafico bin al kitting + fix timer x unloading 2020-10-22 14:41:23 +02:00
Samuele E. Locatelli c0212af5de reso parametrico tempo refresh pag unload 2020-10-22 12:54:58 +02:00
Samuele E. Locatelli 632a1b4460 Merge branch 'develop' into SDK 2020-10-22 12:39:03 +02:00
Samuele E. Locatelli 3b15a769b1 update 376 con gestione cache 2020-10-22 12:38:53 +02:00
Samuele E. Locatelli 51cbacf58f Iniziate modifiche x fix pagina unload (speedup & meno carico DB) 2020-10-22 10:51:23 +02:00
Samuele E. Locatelli 6e712433b6 Merge remote-tracking branch 'GitlabSteamware/report' into develop 2020-10-22 10:06:18 +02:00
Samuele E. Locatelli 374be6825b new rel vers 2020-10-22 10:01:39 +02:00
Giancarlo 7943022f74 Modifica report Bunk 2020-10-22 09:45:00 +02:00
Samuele E. Locatelli a417d5d677 Merge branch 'develop' into SDK 2020-10-20 21:50:03 +02:00
Samuele E. Locatelli b3a82b9ab5 new rel 373 2020-10-20 21:49:36 +02:00
Samuele E. Locatelli 95cf098861 refresh spazio x kitting unload (6 blocks) 2020-10-20 21:49:23 +02:00
Samuele E. Locatelli 1dc9734921 Merge branch 'develop' into SDK 2020-10-16 20:08:33 +02:00
Samuele E. Locatelli 8f65b48be4 update visualizzazione cart/bin 2020-10-16 20:07:50 +02:00
Samuele E. Locatelli d5ab99423a fix calcolo % CART allo scarico 2020-10-16 18:42:32 +02:00
Samuele E. Locatelli 3cc0b2a91f Merge branch 'develop' into SDK 2020-10-07 13:26:00 +02:00
Samuele E. Locatelli fa18af3d45 update message error x KIT smart 2020-10-07 13:25:48 +02:00
Samuele E. Locatelli bbbea41118 Merge branch 'develop' into SDK 2020-09-25 18:41:42 +02:00
Samuele E. Locatelli 88f62a7f86 update secScreen x gestione pdf/PDF 2020-09-25 18:41:30 +02:00
Samuele E. Locatelli 230dad401f reorder codice 2020-09-23 15:43:27 +02:00
Samuele E. Locatelli cd114c3ad4 Merge branch 'develop' into SDK 2020-09-18 08:49:12 +02:00
Samuele E. Locatelli 7e128321e0 Update rdlc 2020-09-18 08:49:04 +02:00
Samuele E. Locatelli 3cda51cf45 new release 2020-09-18 08:30:16 +02:00
Giancarlo 60acca9deb update report x etichette PART (+ mod stp_prt_CART 2020-09-18 08:20:57 +02:00
Samuele E. Locatelli 4be9f5a460 Merge branch 'develop' into master 2020-09-15 19:14:03 +02:00
Samuele E. Locatelli 2fc720be92 Aggiunta idx sheet in pagina LOAD 2020-09-15 19:13:57 +02:00
Samuele E. Locatelli 8dfcc2fb4e new vers 2020-09-15 19:13:47 +02:00
Samuele E. Locatelli 50b2b64404 Merge branch 'develop' 2020-09-10 15:13:47 +02:00
Samuele E. Locatelli ad25324923 note x libreria json2html 2020-09-10 15:10:20 +02:00
Samuele E. Locatelli 8934ee9939 add err translation 2020-09-10 15:09:45 +02:00
Samuele E. Locatelli 6f082e6d0f Fix visualizzazione errori da json doc x K.01 2020-09-10 15:07:27 +02:00
Samuele E. Locatelli 775ff293fc updalche update (ma non basta) x recuperare dati tab json 2020-09-09 17:37:10 +02:00
Samuele E. Locatelli 30d6209eb3 Fix in upload x mostrare icona bug messages da dettagliare... 2020-09-09 16:55:39 +02:00
Samuele E. Locatelli f56562e8a4 new rel 2020-09-09 12:42:30 +02:00
Samuele E. Locatelli 571ab6b981 Batch preview senza reload pagina... 2020-09-09 12:42:17 +02:00
Samuele E. Locatelli 1c6ea398bb refresh update SVG 2020-09-09 10:49:57 +02:00
Samuele E. Locatelli 0bd2e74cfd Merge branch 'develop' 2020-09-08 16:37:43 +02:00
Samuele E. Locatelli 872e016964 Fix visualizzazione dettaglio sheets in BUNK 2020-09-08 16:37:26 +02:00
Samuele E. Locatelli a60bb7a4af new rel 2020-09-08 16:37:10 +02:00
Samuele E. Locatelli fa3ff2568e Merge branch 'develop' into SDK 2020-09-08 16:05:43 +02:00
Samuele E. Locatelli 2af230739d new rel 2020-09-08 16:03:30 +02:00
684 changed files with 185755 additions and 24548 deletions
+3
View File
@@ -41,3 +41,6 @@ dotnet_diagnostic.CA1716.severity = none
# CA2227: Le proprietà delle raccolte devono essere di sola lettura
dotnet_diagnostic.CA2227.severity = none
# CA1805: Do not initialize unnecessarily
dotnet_diagnostic.CA1805.severity = none
+216
View File
@@ -0,0 +1,216 @@
variables:
NUGET_PATH: 'C:\Tools\nuget.exe'
MSBUILD_PATH: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\MSBuild\Current\Bin\MSBuild.exe'
ASPNET_MERGE_PATH: 'C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools'
EXE_RELEASE_FOLDER: 'c:\Projetcs\Compiled\NKC\Release'
DEPLOY_FOLDER: 'c:\Projects\Deploy\NKC\Builds'
VERS_MAIN: '2.5'
NEW_REL: ''
NEXUS_PATH: 'NKC'
PROJ_NAME: 'NKC_WF'
APP_NAME: 'NKC'
# helper x fix pacchetti nuget da repo locale nexus.steamware.net
.nuget-fix: &nuget-fix
- |
$hasSource = C:\Tools\nuget.exe sources list | find "`"Steamware Nexus`"" /C
if ($hasSource -eq 0) {
C:\Tools\nuget.exe sources Add -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`""
} else {
C:\Tools\nuget.exe sources Update -Name "`"Steamware Nexus`"" -Source https://nexus.steamware.net/repository/nuget-group -username "`"nugetUser`"" -password "`"viaDante16`""
}
echo $hasSource
# helper x fix version number
.version-fix: &version-fix
- |
$env:NEW_REL = $env:VERS_MAIN+"."+(get-date -format yyMM)+"."+(get-date -format ddHH)
echo "Set vers: $env:NEW_REL"
$contenuto = Get-Content -path 'VersGen\VersGen.cs' -Raw
$newContenuto = $contenuto -replace '0.0.0.0', $env:NEW_REL
$newContenuto | Set-Content -path 'VersGen\VersGen.cs'
# helper x fix manifest xml
.manifest-fix: &manifest-fix
- |
echo "Set manifest.xml for branch: $CI_COMMIT_BRANCH"
$contenuto = Get-Content -path $env:PROJ_NAME'\Resources\manifest.xml' -Raw
$newContenuto = $contenuto -replace '{{BRANCHNAME}}', $CI_COMMIT_BRANCH
$newContenuto = $newContenuto -replace '0.0.0.0', $env:NEW_REL
$newContenuto | Set-Content -path $env:PROJ_NAME'\Resources\manifest.xml'
# helper creazione hash files
.hashBuild: &hashBuild
- |
$Target = $env:PROJ_NAME + "\Release\" + $env:APP_NAME + ".zip"
$MD5 = Get-FileHash $Target -Algorithm MD5
$SHA1 = Get-FileHash $Target -Algorithm SHA1
New-Item $Target".md5"
New-Item $Target".sha1"
$MD5.Hash | Set-Content -path $Target".md5"
$SHA1.Hash | Set-Content -path $Target".sha1"
echo "Created HASH files for $Target"
# helper x send su NEXUS
# $VersNumb = $Get-Content "Resources\VersNum.txt"
.nexusUpload: &nexusUpload
- |
Set-Alias mCurl C:\Windows\system32\curl.exe
$currentDate = get-date -format yyMM;
$currentTime = get-date -format ddHH;
$VersNumb = $env:NEW_REL
echo "Curr Version: $VersNumb"
if($CI_COMMIT_BRANCH -eq "master")
{
$version = "stable"
}
else
{
$version = "unstable"
}
$File2Send = Get-ChildItem($env:PROJ_NAME + "\Release\*")
ForEach ($File in $File2Send) {
$FileName = Split-path $File -leaf
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file $File https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$CI_COMMIT_BRANCH/LAST/$FileName
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file $File https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$CI_COMMIT_BRANCH/ARCHIVE/$VersNumb/$FileName
}
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file "$env:PROJ_NAME\Resources\manifest.xml" https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$CI_COMMIT_BRANCH/LAST/manifest.xml
mCurl -v -u GitLab:$NEXUS_PASSWD --upload-file "$env:PROJ_NAME\Resources\ChangeLog.html" https://nexus.steamware.net/repository/SWS/$env:NEXUS_PATH/$CI_COMMIT_BRANCH/LAST/ChangeLog.html
stages:
- build
- deploy
- installer
Net:build:
stage: build
tags:
- win
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore NKC_WF.sln -Verbosity quiet'
- *version-fix
script:
- '& "$env:MSBUILD_PATH" NKC_WF/NKC_WF.csproj -target:Build /p:Configuration=Release /p:Platform="Any CPU" /p:OutputPath=bin/ /verbosity:minimal /m'
Core:build:
stage: build
tags:
- win
before_script:
- *nuget-fix
- dotnet restore REMAN.sln
script:
- dotnet build REMAN/REMAN.csproj
Net:IIS01:deploy:
stage: deploy
tags:
- win
only:
- develop
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore NKC_WF.sln -Verbosity quiet'
- *version-fix
script:
- '& "$env:MSBUILD_PATH" /p:m=8 /p:AspnetMergePath=$env:ASPNET_MERGE_PATH /p:DeployOnBuild=true /p:Targets=Publish /p:PublishProfile=IIS01.pubxml /p:RunCodeAnalysis=false /p:Configuration=IIS01 /p:username=jenkins /p:Password=viadante16 /p:AllowUntrustedCertificate=true /p:OutputPath=bin/ /verbosity:minimal NKC_WF/NKC_WF.csproj'
needs: ["Net:build"]
Net:IIS02:deploy:
stage: deploy
tags:
- win
only:
- master
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore NKC_WF.sln -Verbosity quiet'
- *version-fix
script:
- '& "$env:MSBUILD_PATH" /p:m=8 /p:AspnetMergePath=$env:ASPNET_MERGE_PATH /p:DeployOnBuild=true /p:Targets=Publish /p:PublishProfile=IIS02.pubxml /p:RunCodeAnalysis=false /p:Configuration=IIS02 /p:username=jenkins /p:Password=viadante16 /p:AllowUntrustedCertificate=true /p:OutputPath=bin/ /verbosity:minimal NKC_WF/NKC_WF.csproj'
needs: ["Net:build"]
Core:IIS01:deploy:
stage: deploy
tags:
- win
only:
- develop
needs: ["Core:build"]
script:
- dotnet publish -p:PublishProfile=IIS01.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true REMAN/REMAN.csproj
Core:IIS02:deploy:
stage: deploy
tags:
- win
only:
- master
needs: ["Core:build"]
script:
- dotnet publish -p:PublishProfile=IIS02.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true REMAN/REMAN.csproj
- dotnet publish -p:PublishProfile=IIS04.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release -p:username=jenkins -p:Password=viadante16 -p:AllowUntrustedCertificate=true REMAN/REMAN.csproj
Net:install:
stage: installer
tags:
- win
only:
- develop
- master
variables:
APP_NAME: NKC
PROJ_NAME: NKC_WF
NEXUS_PATH: NKC
before_script:
- *nuget-fix
- '& "$env:NUGET_PATH" restore NKC_WF.sln -Verbosity quiet'
- *version-fix
- *manifest-fix
script:
- '& "$env:MSBUILD_PATH" /p:m=8 /p:AspnetMergePath=$env:ASPNET_MERGE_PATH /T:Package /P:Configuration=Release /p:PublishProfile=master.pubxml /p:RunCodeAnalysis=false /p:PackageLocation=Release/$env:APP_NAME.zip /p:DeployIisAppPath="Default Web Site/NKC" /p:PackageAsSingleFile=True /verbosity:minimal /p:OutputPath=bin/ NKC_WF/NKC_WF.csproj'
# qui il deploy su nexus...
- *hashBuild
- *nexusUpload
needs: ["Net:build"]
Core:install:
stage: installer
tags:
- win
only:
- develop
- master
needs: ["Core:build"]
variables:
APP_NAME: REMAN
PROJ_NAME: REMAN
NEXUS_PATH: REMAN
before_script:
# - *nuget-fix
- dotnet restore REMAN.sln
- *version-fix
- *manifest-fix
script:
- dotnet publish -p:PublishProfile=IISProfile.pubxml -p:RunCodeAnalysis=false -p:Configuration=Release REMAN/REMAN.csproj -o:publish
# qui il deploy su nexus...
- *hashBuild
- *nexusUpload
# VARIABILI
# Tema numero versione: si potrebbe usare la variabile CI_COMMIT_TAG con $env:CI_COMMIT_TAG, in questo caso SOLO SE c'è un tag sistema versione...
# Tema compilazione x branch: $CI_COMMIT_BRANCH == "my-branch" potrebbe essere condizione if x fare alcuni sscript...
# rif: https://docs.gitlab.com/ee/ci/variables/predefined_variables.html
# Da approfondire:
# https://gitlab.com/gitlab-org/gitlab/-/blob/master/lib/gitlab/ci/templates/dotNET.gitlab-ci.yml
# https://www.google.com/search?q=gitlab+variable+year+month&rlz=1C1GCEA_enIT945IT945&oq=gitlab+variable+year+month&aqs=chrome..69i57j69i64.5262j0j7&sourceid=chrome&ie=UTF-8
# https://docs.gitlab.com/ee/ci/examples/README.html
# https://docs.gitlab.com/ee/ci/quick_start/index.html
# https://docs.gitlab.com/ee/ci/yaml/
+127 -49
View File
@@ -41,21 +41,49 @@
<ErrorReport>prompt</ErrorReport>
<CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Prod|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\Debug-Prod\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="AegisImplicitMail, Version=1.0.3.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AIM.1.0.3\lib\AegisImplicitMail.dll</HintPath>
<Reference Include="AegisImplicitMail, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\AIM.1.1.0\lib\netstandard2.0\AegisImplicitMail.dll</HintPath>
</Reference>
<Reference Include="AjaxControlToolkit, Version=19.1.0.0, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e, processorArchitecture=MSIL">
<HintPath>..\packages\AjaxControlToolkit.19.1.0\lib\net40\AjaxControlToolkit.dll</HintPath>
<Reference Include="AjaxControlToolkit, Version=20.1.0.0, Culture=neutral, PublicKeyToken=28f01b0e84b6d53e, processorArchitecture=MSIL">
<HintPath>..\packages\AjaxControlToolkit.20.1.0\lib\net40\AjaxControlToolkit.dll</HintPath>
</Reference>
<Reference Include="Crc32C.NET, Version=1.0.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Crc32C.NET.1.0.5.0\lib\net20\Crc32C.NET.dll</HintPath>
<Reference Include="AWSSDK.Core, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
<HintPath>..\packages\AWSSDK.Core.3.7.304.8\lib\net45\AWSSDK.Core.dll</HintPath>
</Reference>
<Reference Include="DnsClient, Version=1.2.0.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
<HintPath>..\packages\DnsClient.1.2.0\lib\net45\DnsClient.dll</HintPath>
<Reference Include="AWSSDK.SecurityToken, Version=3.3.0.0, Culture=neutral, PublicKeyToken=885c28607f98e604, processorArchitecture=MSIL">
<HintPath>..\packages\AWSSDK.SecurityToken.3.7.300.99\lib\net45\AWSSDK.SecurityToken.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.2.0.246, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.2.0\lib\net45\ICSharpCode.SharpZipLib.dll</HintPath>
<Reference Include="Crc32.NET, Version=1.0.0.0, Culture=neutral, PublicKeyToken=dc0b95cf99bf4e99, processorArchitecture=MSIL">
<HintPath>..\packages\Crc32.NET.1.2.0\lib\net20\Crc32.NET.dll</HintPath>
</Reference>
<Reference Include="DnsClient, Version=1.7.0.0, Culture=neutral, PublicKeyToken=4574bb5573c51424, processorArchitecture=MSIL">
<HintPath>..\packages\DnsClient.1.7.0\lib\net45\DnsClient.dll</HintPath>
</Reference>
<Reference Include="ICSharpCode.SharpZipLib, Version=1.4.0.12, Culture=neutral, PublicKeyToken=1b03e6acf1164f73, processorArchitecture=MSIL">
<HintPath>..\packages\SharpZipLib.1.4.0\lib\netstandard2.0\ICSharpCode.SharpZipLib.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="IronSnappy, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b1d4b1dc83bdcf31, processorArchitecture=MSIL">
<HintPath>..\packages\IronSnappy.1.3.1\lib\netstandard2.0\IronSnappy.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.8.0.0\lib\net462\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.DependencyInjection.Abstractions, Version=8.0.0.1, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.DependencyInjection.Abstractions.8.0.1\lib\net462\Microsoft.Extensions.DependencyInjection.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=8.0.0.1, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.Abstractions.8.0.1\lib\net462\Microsoft.Extensions.Logging.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Microsoft.ReportViewer.Common, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ReportViewer.Runtime.Common.12.0.2402.15\lib\Microsoft.ReportViewer.Common.dll</HintPath>
@@ -69,23 +97,23 @@
<Reference Include="Microsoft.ReportViewer.WinForms, Version=12.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.ReportViewer.Runtime.WinForms.12.0.2402.15\lib\Microsoft.ReportViewer.WinForms.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Bson, Version=2.10.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Bson.2.10.2\lib\net452\MongoDB.Bson.dll</HintPath>
<Reference Include="MongoDB.Bson, Version=2.25.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Bson.2.25.0\lib\netstandard2.0\MongoDB.Bson.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver, Version=2.10.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.2.10.2\lib\net452\MongoDB.Driver.dll</HintPath>
<Reference Include="MongoDB.Driver, Version=2.25.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.2.25.0\lib\netstandard2.0\MongoDB.Driver.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Driver.Core, Version=2.10.2.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.Core.2.10.2\lib\net452\MongoDB.Driver.Core.dll</HintPath>
<Reference Include="MongoDB.Driver.Core, Version=2.25.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Driver.Core.2.25.0\lib\netstandard2.0\MongoDB.Driver.Core.dll</HintPath>
</Reference>
<Reference Include="MongoDB.Libmongocrypt, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Libmongocrypt.1.0.0\lib\net452\MongoDB.Libmongocrypt.dll</HintPath>
<Reference Include="MongoDB.Libmongocrypt, Version=1.9.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\MongoDB.Libmongocrypt.1.9.0\lib\netstandard2.0\MongoDB.Libmongocrypt.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.6.8\lib\net45\NLog.dll</HintPath>
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.5.3.2\lib\net46\NLog.dll</HintPath>
</Reference>
<Reference Include="PdfSharp, Version=1.50.5147.0, Culture=neutral, PublicKeyToken=f94615aa0424f9eb, processorArchitecture=MSIL">
<HintPath>..\packages\PDFsharp.1.50.5147\lib\net20\PdfSharp.dll</HintPath>
@@ -94,43 +122,58 @@
<HintPath>..\packages\PDFsharp.1.50.5147\lib\net20\PdfSharp.Charting.dll</HintPath>
</Reference>
<Reference Include="Pipelines.Sockets.Unofficial, Version=1.0.0.0, Culture=neutral, PublicKeyToken=42ea0a778e13fbe2, processorArchitecture=MSIL">
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.1.1\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
<HintPath>..\packages\Pipelines.Sockets.Unofficial.2.2.8\lib\net461\Pipelines.Sockets.Unofficial.dll</HintPath>
</Reference>
<Reference Include="SharpCompress, Version=0.24.0.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
<HintPath>..\packages\SharpCompress.0.24.0\lib\net45\SharpCompress.dll</HintPath>
<Reference Include="SharpCompress, Version=0.32.2.0, Culture=neutral, PublicKeyToken=afb0a02973931d96, processorArchitecture=MSIL">
<HintPath>..\packages\SharpCompress.0.32.2\lib\net461\SharpCompress.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Snappy.NET, Version=1.1.1.8, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Snappy.NET.1.1.1.8\lib\net45\Snappy.NET.dll</HintPath>
<Reference Include="Snappier, Version=1.0.0.0, Culture=neutral, PublicKeyToken=a1b25124e6e13a3a, processorArchitecture=MSIL">
<HintPath>..\packages\Snappier.1.0.0\lib\netstandard2.0\Snappier.dll</HintPath>
</Reference>
<Reference Include="StackExchange.Redis, Version=2.0.0.0, Culture=neutral, PublicKeyToken=c219ff1ca8c2ce46, processorArchitecture=MSIL">
<HintPath>..\packages\StackExchange.Redis.2.0.601\lib\net461\StackExchange.Redis.dll</HintPath>
<HintPath>..\packages\StackExchange.Redis.2.7.33\lib\net461\StackExchange.Redis.dll</HintPath>
</Reference>
<Reference Include="SteamWare, Version=3.5.2001.709, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SteamWare.3.5.2001.709\lib\net462\SteamWare.dll</HintPath>
<Reference Include="SteamWare, Version=5.3.2311.2908, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SteamWare.5.3.2311.2908\lib\net462\SteamWare.dll</HintPath>
</Reference>
<Reference Include="SteamWare.Logger, Version=5.3.2311.2908, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\SteamWare.Logger.5.3.2311.2908\lib\net462\SteamWare.Logger.dll</HintPath>
</Reference>
<Reference Include="System">
<HintPath>..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.6.2\System.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Buffers, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Buffers.4.5.0\lib\netstandard2.0\System.Buffers.dll</HintPath>
<HintPath>..\packages\System.Buffers.4.5.1\lib\net461\System.Buffers.dll</HintPath>
</Reference>
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.Diagnostics.PerformanceCounter, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.4.7.0\lib\net461\System.Diagnostics.PerformanceCounter.dll</HintPath>
<Reference Include="System.Diagnostics.PerformanceCounter, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Diagnostics.PerformanceCounter.8.0.0\lib\net462\System.Diagnostics.PerformanceCounter.dll</HintPath>
</Reference>
<Reference Include="System.Drawing" />
<Reference Include="System.IO.Compression, Version=4.2.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />
<Reference Include="System.IO.Pipelines, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.4.7.0\lib\netstandard2.0\System.IO.Pipelines.dll</HintPath>
<Reference Include="System.IO.Compression, Version=4.1.2.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Compression.4.3.0\lib\net46\System.IO.Compression.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>
<Reference Include="System.IO.Pipelines, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.Pipelines.8.0.0\lib\net462\System.IO.Pipelines.dll</HintPath>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.5\lib\net461\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Numerics" />
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.6.0.0\lib\net461\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Runtime.InteropServices.RuntimeInformation, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.InteropServices.RuntimeInformation.4.3.0\lib\net45\System.Runtime.InteropServices.RuntimeInformation.dll</HintPath>
@@ -138,22 +181,50 @@
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Security" />
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.1\lib\net461\System.Security.Cryptography.Algorithms.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Pkcs, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Pkcs.8.0.0\lib\net462\System.Security.Cryptography.Pkcs.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.2, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.2\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
</Reference>
<Reference Include="System.ServiceModel" />
<Reference Include="System.Threading.Channels, Version=4.0.2.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Channels.4.7.0\lib\netstandard2.0\System.Threading.Channels.dll</HintPath>
<Reference Include="System.Text.Encoding.CodePages, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encoding.CodePages.8.0.0\lib\net462\System.Text.Encoding.CodePages.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Channels, Version=8.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Channels.8.0.0\lib\net462\System.Threading.Channels.dll</HintPath>
</Reference>
<Reference Include="System.Threading.Tasks.Extensions, Version=4.2.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.3\lib\netstandard2.0\System.Threading.Tasks.Extensions.dll</HintPath>
<HintPath>..\packages\System.Threading.Tasks.Extensions.4.5.4\lib\net461\System.Threading.Tasks.Extensions.dll</HintPath>
</Reference>
<Reference Include="System.Transactions" />
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net461\System.ValueTuple.dll</HintPath>
</Reference>
<Reference Include="System.Web" />
<Reference Include="System.Windows.Forms" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Xml" />
<Reference Include="ZstdSharp, Version=0.7.3.0, Culture=neutral, PublicKeyToken=8d151af33a4ad5cf, processorArchitecture=MSIL">
<HintPath>..\packages\ZstdSharp.Port.0.7.3\lib\net461\ZstdSharp.dll</HintPath>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="..\VersGen\VersGen.cs">
@@ -174,7 +245,11 @@
<DesignTime>True</DesignTime>
<DependentUpon>DS_Report.xsd</DependentUpon>
</Compile>
<Compile Include="DTO\BatchYeldStatDTO.cs" />
<Compile Include="DTO\MaterialYeldStatsDTO.cs" />
<Compile Include="DTO\SheetYeldStatDTO.cs" />
<Compile Include="Enum.cs" />
<Compile Include="Objects.cs" />
<Compile Include="Properties\Settings.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTimeSharedInput>True</DesignTimeSharedInput>
@@ -198,7 +273,7 @@
<None Include="DS_App.xsd">
<SubType>Designer</SubType>
<Generator>MSDataSetGenerator</Generator>
<LastGenOutput>DS_App.Designer.cs</LastGenOutput>
<LastGenOutput>DS_App2.Designer.cs</LastGenOutput>
</None>
<None Include="DS_App.xss">
<DependentUpon>DS_App.xsd</DependentUpon>
@@ -230,16 +305,19 @@
<Content Include="App_Readme\README_SteamWare.txt" />
<Content Include="App_Readme\SteamWare_demo\example-config-table.txt" />
<Content Include="App_Readme\SteamWare_demo\example-favicon.ico" />
<Content Include="mongocrypt.dll" />
</ItemGroup>
<ItemGroup>
<Analyzer Include="..\packages\AWSSDK.SecurityToken.3.7.300.99\analyzers\dotnet\cs\AWSSDK.SecurityToken.CodeAnalysis.dll" />
<Analyzer Include="..\packages\AWSSDK.SecurityToken.3.7.300.99\analyzers\dotnet\cs\SharedAnalysisCode.dll" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\packages\MongoDB.Libmongocrypt.1.0.0\build\MongoDB.Libmongocrypt.targets" Condition="Exists('..\packages\MongoDB.Libmongocrypt.1.0.0\build\MongoDB.Libmongocrypt.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>Questo progetto fa riferimento a uno o più pacchetti NuGet che non sono presenti in questo computer. Usare lo strumento di ripristino dei pacchetti NuGet per scaricarli. Per altre informazioni, vedere http://go.microsoft.com/fwlink/?LinkID=322105. Il file mancante è {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\MongoDB.Libmongocrypt.1.0.0\build\MongoDB.Libmongocrypt.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Libmongocrypt.1.0.0\build\MongoDB.Libmongocrypt.targets'))" />
<Error Condition="!Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets'))" />
<Error Condition="!Exists('..\packages\MongoDB.Libmongocrypt.1.9.0\build\MongoDB.Libmongocrypt.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\MongoDB.Libmongocrypt.1.9.0\build\MongoDB.Libmongocrypt.targets'))" />
</Target>
<Import Project="..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets" Condition="Exists('..\packages\NETStandard.Library.2.0.3\build\netstandard2.0\NETStandard.Library.targets')" />
<Import Project="..\packages\MongoDB.Libmongocrypt.1.9.0\build\MongoDB.Libmongocrypt.targets" Condition="Exists('..\packages\MongoDB.Libmongocrypt.1.9.0\build\MongoDB.Libmongocrypt.targets')" />
</Project>
+1 -1
View File
@@ -1,5 +1,5 @@
---------------------------------------------------------------
------- SteamWareLib SDK -------
------- SteamWare SDK -------
---------------------------------------------------------------
Libreria di utility base di SteamWare.
@@ -19,13 +19,13 @@
<targets async="true">
<target xsi:type="File"
name="SteamWareLib"
name="SteamWare"
fileName="${basedir}/logs/${shortdate}-SteamWare.log"
layout="${longdate} ${uppercase:${level}} ${message}"
/>
</targets>
<rules>
<logger name="SteamWare.*" minlevel="Debug" writeTo="SteamWareLib" />
<logger name="SteamWare.*" minlevel="Debug" writeTo="SteamWare" />
</rules>
</nlog>
@@ -2,8 +2,10 @@
_adminEmail samuele@steamware.net,info@steamware.net samuele@steamware.net,info@steamware.net info@steamware.net
_allowForceUser true true abilita login forzato
_commonPages menu menu pagina comune
_emailPwd drmfsls16 drmfsls16 drmfsls16
_emailUser steamwarebot@gmail.com steamwarebot@gmail.com steamwarebot@gmail.com
_emailPwd siamoInViaNazionale93 siamoInViaNazionale93 siamoInViaNazionale93
_emailUser steamwarebot@outlook.it steamwarebot@outlook.it steamwarebot@outlook.it
_smtpCli smtp-mail.outlook.com smtp-mail.outlook.com smtp-mail.outlook.com
_fromEmail steamwarebot@outlook.it steamwarebot@outlook.it steamwarebot@outlook.it
_enableSSL true true true
_fromEmail webmaster@admodelling.org webmaster@admodelling.org email mittente eventuali msg
_righeDataGrid 30 30 Num righe datagrid std
+3082 -1680
View File
File diff suppressed because it is too large Load Diff
+15157 -4716
View File
File diff suppressed because it is too large Load Diff
+7
View File
@@ -4,6 +4,13 @@
partial class DS_App
{
partial class OffOrd2ItemDataTable
{
}
partial class SheetsPreviewDataTable
{
}
}
}
+2087 -732
View File
File diff suppressed because it is too large Load Diff
+113 -97
View File
@@ -4,187 +4,203 @@
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="435" ViewPortY="-47" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="36" ViewPortY="2195" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:BatchList" ZOrder="15" X="291" Y="375" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:StackList" ZOrder="14" X="584" Y="890" Height="381" Width="268" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:SheetList" ZOrder="20" X="254" Y="840" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OrderList" ZOrder="39" X="352" Y="29" Height="343" Width="198" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:BatchReqList" ZOrder="48" X="101" Y="100" Height="115" Width="220" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:ItemList" ZOrder="31" X="861" Y="19" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Materials" ZOrder="46" X="1197" Y="37" Height="248" Width="198" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="197" />
<Shape ID="DesignTable:Bins" ZOrder="23" X="1265" Y="529" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Carts" ZOrder="25" X="600" Y="340" Height="286" Width="204" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:OfflineOrderList" ZOrder="3" X="929" Y="866" Height="286" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:OffOrd2Item" ZOrder="44" X="1031" Y="660" Height="134" Width="219" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:KitList" ZOrder="42" X="612" Y="30" Height="248" Width="194" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
<Shape ID="DesignTable:Nesting" ZOrder="33" X="871" Y="458" Height="153" Width="228" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="83" />
<Shape ID="DesignTable:ImportLog" ZOrder="6" X="601" Y="633" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:BinList" ZOrder="36" X="1264" Y="323" Height="134" Width="216" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:FinalKit" ZOrder="17" X="23" Y="457" Height="172" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:Order2FinalKit" ZOrder="30" X="13" Y="240" Height="134" Width="234" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:Counters" ZOrder="27" X="16" Y="706" Height="172" Width="196" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:ErrorsLog" ZOrder="26" X="-6" Y="928" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:ItemValidation" ZOrder="19" X="-2" Y="1233" Height="172" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:PartValidPareto" ZOrder="18" X="324" Y="1235" Height="153" Width="236" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:UnloadStats" ZOrder="16" X="637" Y="1294" Height="172" Width="215" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
<Shape ID="DesignTable:Remnants" ZOrder="24" X="912" Y="1188" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:CartOnKit" ZOrder="22" X="1259" Y="925" Height="324" Width="202" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:PackList" ZOrder="10" X="1256" Y="1251" Height="362" Width="297" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:OtherItem" ZOrder="21" X="644" Y="1754" Height="210" Width="204" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:ItemSearchDetail" ZOrder="2" X="1476" Y="37" Height="381" Width="244" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:PackListDet" ZOrder="13" X="939" Y="1452" Height="343" Width="229" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:PackLog" ZOrder="12" X="1232" Y="1683" Height="324" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="197" />
<Shape ID="DesignTable:PackCheck" ZOrder="11" X="644" Y="1492" Height="229" Width="206" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:OKIB" ZOrder="9" X="41" Y="1425" Height="324" Width="220" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OKIB_Sum" ZOrder="8" X="50" Y="1823" Height="362" Width="220" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OKOI" ZOrder="5" X="342" Y="1417" Height="324" Width="246" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OKOI_sum" ZOrder="4" X="338" Y="1822" Height="362" Width="246" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Pack2Cart" ZOrder="7" X="919" Y="1805" Height="286" Width="203" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="197" />
<Shape ID="DesignTable:CartIRK" ZOrder="1" X="648" Y="1996" Height="305" Width="188" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:BatchList" ZOrder="15" X="325" Y="437" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:StackList" ZOrder="16" X="618" Y="961" Height="381" Width="267" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:SheetList" ZOrder="13" X="300" Y="824" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OrderList" ZOrder="25" X="284" Y="61" Height="343" Width="198" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:ItemList" ZOrder="49" X="853" Y="87" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Materials" ZOrder="7" X="1227" Y="25" Height="305" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="197" />
<Shape ID="DesignTable:Bins" ZOrder="24" X="1257" Y="597" Height="381" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Carts" ZOrder="48" X="592" Y="408" Height="286" Width="203" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:OfflineOrderList" ZOrder="47" X="921" Y="934" Height="286" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:OffOrd2Item" ZOrder="46" X="1023" Y="728" Height="134" Width="219" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:KitList" ZOrder="8" X="634" Y="129" Height="248" Width="193" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
<Shape ID="DesignTable:Nesting" ZOrder="45" X="863" Y="526" Height="153" Width="228" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="83" />
<Shape ID="DesignTable:ImportLog" ZOrder="3" X="593" Y="701" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:BinList" ZOrder="44" X="1256" Y="391" Height="134" Width="216" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:FinalKit" ZOrder="43" X="15" Y="525" Height="172" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:Order2FinalKit" ZOrder="42" X="5" Y="308" Height="134" Width="234" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:Counters" ZOrder="41" X="-12" Y="716" Height="172" Width="196" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:ErrorsLog" ZOrder="40" X="-14" Y="996" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:ItemValidation" ZOrder="39" X="-10" Y="1301" Height="172" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:PartValidPareto" ZOrder="38" X="316" Y="1303" Height="153" Width="236" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:UnloadStats" ZOrder="37" X="629" Y="1362" Height="172" Width="215" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
<Shape ID="DesignTable:Remnants" ZOrder="36" X="904" Y="1256" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:CartOnKit" ZOrder="6" X="1311" Y="988" Height="343" Width="202" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:PackList" ZOrder="5" X="1246" Y="1358" Height="362" Width="297" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:OtherItem" ZOrder="35" X="636" Y="1822" Height="210" Width="204" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:ItemSearchDetail" ZOrder="4" X="1513" Y="102" Height="381" Width="244" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:PackListDet" ZOrder="34" X="931" Y="1520" Height="343" Width="227" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:PackLog" ZOrder="33" X="1224" Y="1751" Height="324" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="197" />
<Shape ID="DesignTable:PackCheck" ZOrder="32" X="636" Y="1560" Height="229" Width="206" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:OKIB" ZOrder="31" X="33" Y="1493" Height="324" Width="218" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OKIB_Sum" ZOrder="30" X="42" Y="1891" Height="362" Width="218" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OKOI" ZOrder="29" X="334" Y="1485" Height="324" Width="244" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:OKOI_sum" ZOrder="28" X="330" Y="1890" Height="362" Width="244" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:Pack2Cart" ZOrder="19" X="911" Y="1873" Height="286" Width="203" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="197" />
<Shape ID="DesignTable:CartIRK" ZOrder="27" X="640" Y="2064" Height="305" Width="188" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:FileValidation" ZOrder="23" X="488" Y="-38" Height="191" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
<Shape ID="DesignTable:SheetsPreview" ZOrder="26" X="65" Y="839" Height="210" Width="228" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:OrderListTree" ZOrder="22" X="3" Y="-43" Height="343" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="216" />
<Shape ID="DesignTable:Places" ZOrder="17" X="862" Y="2175" Height="172" Width="180" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:StatusLog" ZOrder="20" X="1116" Y="2180" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:StatusDecode" ZOrder="18" X="849" Y="2353" Height="172" Width="224" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:UpdMan" ZOrder="14" X="636" Y="2374" Height="191" Width="195" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="140" />
<Shape ID="DesignTable:SheetStats" ZOrder="12" X="20" Y="2307" Height="248" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:BatchStats" ZOrder="11" X="369" Y="2276" Height="305" Width="206" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="216" />
<Shape ID="DesignTable:ProductionStatsDay" ZOrder="2" X="946" Y="2546" Height="210" Width="204" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:PlantList" ZOrder="9" X="25" Y="2608" Height="172" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="64" />
<Shape ID="DesignTable:SpecialParts" ZOrder="10" X="370" Y="2611" Height="210" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:OrderSearch" ZOrder="1" X="702" Y="2608" Height="172" Width="205" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="121" />
</Shapes>
<Connectors>
<Connector ID="DesignRelation:FK_BatchReqList_OrderList" ZOrder="47" LineWidth="11">
<Connector ID="DesignRelation:FK_ItemList_Materials1" ZOrder="60" LineWidth="11">
<RoutePoints>
<Point>
<X>352</X>
<Y>144</Y>
<X>1227</X>
<Y>202</Y>
</Point>
<Point>
<X>321</X>
<Y>144</Y>
<X>1153</X>
<Y>202</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_ItemList_Materials1" ZOrder="45" LineWidth="11">
<Connector ID="DesignRelation:FK_OffOrd2Item_OfflineOrderList" ZOrder="59" LineWidth="11">
<RoutePoints>
<Point>
<X>1197</X>
<Y>146</Y>
<X>1028</X>
<Y>934</Y>
</Point>
<Point>
<X>1161</X>
<Y>146</Y>
<X>1028</X>
<Y>862</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_OffOrd2Item_OfflineOrderList" ZOrder="43" LineWidth="11">
<Connector ID="DesignRelation:FK_ItemList_KitList" ZOrder="58" LineWidth="11">
<RoutePoints>
<Point>
<X>1044</X>
<Y>866</Y>
<X>827</X>
<Y>235</Y>
</Point>
<Point>
<X>1044</X>
<Y>794</Y>
<X>853</X>
<Y>235</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_ItemList_KitList" ZOrder="41" LineWidth="11">
<Connector ID="DesignRelation:FK_Nesting_ItemList" ZOrder="57" LineWidth="11">
<RoutePoints>
<Point>
<X>806</X>
<Y>68</Y>
<X>1116</X>
<Y>468</Y>
</Point>
<Point>
<X>861</X>
<Y>68</Y>
<X>1116</X>
<Y>553</Y>
</Point>
<Point>
<X>1091</X>
<Y>553</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_Nesting_ItemList" ZOrder="40" LineWidth="11">
<Connector ID="DesignRelation:FK_KitList_Carts" ZOrder="55" LineWidth="11">
<RoutePoints>
<Point>
<X>986</X>
<Y>400</Y>
<X>721</X>
<Y>408</Y>
</Point>
<Point>
<X>986</X>
<Y>458</Y>
<X>721</X>
<Y>377</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_KitList_Carts" ZOrder="37" LineWidth="11">
<Connector ID="DesignRelation:FK_KitList_OrderList" ZOrder="56" LineWidth="11">
<RoutePoints>
<Point>
<X>707</X>
<Y>340</Y>
<X>482</X>
<Y>355</Y>
</Point>
<Point>
<X>707</X>
<Y>278</Y>
<X>634</X>
<Y>355</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_KitList_OrderList" ZOrder="38" LineWidth="11">
<Connector ID="DesignRelation:FK_OffOrd2Item_ItemList" ZOrder="52" LineWidth="11">
<RoutePoints>
<Point>
<X>550</X>
<Y>97</Y>
<X>1113</X>
<Y>468</Y>
</Point>
<Point>
<X>612</X>
<Y>97</Y>
<X>1113</X>
<Y>728</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_OffOrd2Item_ItemList" ZOrder="32" LineWidth="11">
<Connector ID="DesignRelation:FK_BinList_Bins" ZOrder="54" LineWidth="11">
<RoutePoints>
<Point>
<X>1129</X>
<Y>400</Y>
<X>1364</X>
<Y>597</Y>
</Point>
<Point>
<X>1129</X>
<Y>660</Y>
<X>1364</X>
<Y>525</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_BinList_Bins" ZOrder="35" LineWidth="11">
<Connector ID="DesignRelation:FK_BinList_ItemList" ZOrder="53" LineWidth="11">
<RoutePoints>
<Point>
<X>1380</X>
<Y>529</Y>
<X>1153</X>
<Y>429</Y>
</Point>
<Point>
<X>1380</X>
<Y>457</Y>
<X>1256</X>
<Y>429</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_BinList_ItemList" ZOrder="34" LineWidth="11">
<Connector ID="DesignRelation:FK_Order2FinalKit_FinalKit" ZOrder="51" LineWidth="11">
<RoutePoints>
<Point>
<X>1161</X>
<Y>361</Y>
<X>115</X>
<Y>525</Y>
</Point>
<Point>
<X>1264</X>
<Y>361</Y>
<X>115</X>
<Y>442</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_Order2FinalKit_FinalKit" ZOrder="29" LineWidth="11">
<Connector ID="DesignRelation:FK_Order2FinalKit_OrderList" ZOrder="50" LineWidth="11">
<RoutePoints>
<Point>
<X>131</X>
<Y>457</Y>
<X>284</X>
<Y>393</Y>
</Point>
<Point>
<X>131</X>
<Y>374</Y>
<X>239</X>
<Y>393</Y>
</Point>
</RoutePoints>
</Connector>
<Connector ID="DesignRelation:FK_Order2FinalKit_OrderList" ZOrder="28" LineWidth="11">
<Connector ID="DesignRelation:FK_StatusLog_Places" ZOrder="21" LineWidth="11">
<RoutePoints>
<Point>
<X>352</X>
<Y>293</Y>
<X>1042</X>
<Y>2251</Y>
</Point>
<Point>
<X>247</X>
<Y>293</Y>
<X>1116</X>
<Y>2251</Y>
</Point>
</RoutePoints>
</Connector>
+2571 -822
View File
File diff suppressed because it is too large Load Diff
+282 -99
View File
@@ -149,8 +149,8 @@ SELECT IdxPrintJob, TipoReport, KeyParam, prtName, dtStart, dtEnd, stato, dtLast
</DbSource>
<DbSource ConnectionRef="Sauder_NKCConnectionString (Settings)" DbObjectName="Sauder_NKC.dbo.stp_PJQ_getFirtsByUdc" DbObjectType="StoredProcedure" GenerateMethods="Get" GenerateShortCommands="true" GeneratorGetMethodName="getFirstByParam" GetMethodModifier="Public" GetMethodName="getFirstByParam" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="true" UserGetMethodName="getFirstByParam" UserSourceName="getFirstByParam">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>dbo.stp_PJQ_getFirtsByUdc</CommandText>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="true">
<CommandText>dbo.stp_PJQ_getFirtsByParam</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="varchar" DbType="AnsiString" Direction="Input" ParameterName="@keyParam" Precision="0" ProviderType="VarChar" Scale="0" Size="50" SourceColumnNullMapping="false" SourceVersion="Current" />
@@ -367,6 +367,8 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
<Mapping SourceColumn="TotKit" DataSetColumn="TotKit" />
<Mapping SourceColumn="QRCodeBaseUrl" DataSetColumn="QRCodeBaseUrl" />
<Mapping SourceColumn="DueDate" DataSetColumn="DueDate" />
<Mapping SourceColumn="OrdParent" DataSetColumn="OrdParent" />
<Mapping SourceColumn="AtoReqDate" DataSetColumn="AtoReqDate" />
</Mappings>
<Sources />
</TableAdapter>
@@ -487,37 +489,93 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="stp_prt_RemnantTableAdapter" GeneratorDataComponentClassName="stp_prt_RemnantTableAdapter" Name="stp_prt_Remnant" UserDataComponentName="stp_prt_RemnantTableAdapter">
<MainSource>
<DbSource ConnectionRef="Sauder_NKCConnectionString (Settings)" DbObjectName="Sauder_NKC.prt.stp_prt_Remnant" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>prt.stp_prt_Remnant</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@ItemID" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="nvarchar" DbType="String" Direction="Input" ParameterName="@QRCodeBaseUrl" Precision="0" ProviderType="NVarChar" Scale="0" Size="400" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="QRCodeBaseUrl" DataSetColumn="QRCodeBaseUrl" />
<Mapping SourceColumn="CodRemnant" DataSetColumn="CodRemnant" />
<Mapping SourceColumn="DescRemnant01" DataSetColumn="DescRemnant01" />
<Mapping SourceColumn="DescRemnant02" DataSetColumn="DescRemnant02" />
</Mappings>
<Sources />
</TableAdapter>
<TableAdapter BaseClass="System.ComponentModel.Component" DataAccessorModifier="AutoLayout, AnsiClass, Class, Public" DataAccessorName="stp_prt_SpecialPartTableAdapter" GeneratorDataComponentClassName="stp_prt_SpecialPartTableAdapter" Name="stp_prt_SpecialPart" UserDataComponentName="stp_prt_SpecialPartTableAdapter">
<MainSource>
<DbSource ConnectionRef="Sauder_NKCConnectionString (Settings)" DbObjectName="Sauder_NKC.prt.stp_prt_SpecialPart" DbObjectType="StoredProcedure" FillMethodModifier="Public" FillMethodName="Fill" GenerateMethods="Both" GenerateShortCommands="false" GeneratorGetMethodName="GetData" GeneratorSourceName="Fill" GetMethodModifier="Public" GetMethodName="GetData" QueryType="Rowset" ScalarCallRetval="System.Object, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" UseOptimisticConcurrency="false" UserGetMethodName="GetData" UserSourceName="Fill">
<SelectCommand>
<DbCommand CommandType="StoredProcedure" ModifiedByUser="false">
<CommandText>prt.stp_prt_SpecialPart</CommandText>
<Parameters>
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="ReturnValue" ParameterName="@RETURN_VALUE" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="int" DbType="Int32" Direction="Input" ParameterName="@CartID" Precision="10" ProviderType="Int" Scale="0" Size="4" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="nvarchar" DbType="String" Direction="Input" ParameterName="@PathImage" Precision="0" ProviderType="NVarChar" Scale="0" Size="4000" SourceColumnNullMapping="false" SourceVersion="Current" />
<Parameter AllowDbNull="true" AutogeneratedName="" DataSourceName="" DataTypeServer="nvarchar" DbType="String" Direction="Input" ParameterName="@QRCodeBaseUrl" Precision="0" ProviderType="NVarChar" Scale="0" Size="400" SourceColumnNullMapping="false" SourceVersion="Current" />
</Parameters>
</DbCommand>
</SelectCommand>
</DbSource>
</MainSource>
<Mappings>
<Mapping SourceColumn="DocID" DataSetColumn="DocID" />
<Mapping SourceColumn="DocDtmx" DataSetColumn="DocDtmx" />
<Mapping SourceColumn="ItemExtCode" DataSetColumn="ItemExtCode" />
<Mapping SourceColumn="ItemDesc" DataSetColumn="ItemDesc" />
<Mapping SourceColumn="DueDate" DataSetColumn="DueDate" />
<Mapping SourceColumn="TotItem" DataSetColumn="TotItem" />
<Mapping SourceColumn="PathImageFull" DataSetColumn="PathImageFull" />
<Mapping SourceColumn="QRCodeBaseUrl" DataSetColumn="QRCodeBaseUrl" />
<Mapping SourceColumn="OrdParent" DataSetColumn="OrdParent" />
<Mapping SourceColumn="ReqDate" DataSetColumn="ReqDate" />
<Mapping SourceColumn="CartDtmx" DataSetColumn="CartDtmx" />
<Mapping SourceColumn="ModelCod" DataSetColumn="ModelCod" />
<Mapping SourceColumn="DestPlant" DataSetColumn="DestPlant" />
</Mappings>
<Sources />
</TableAdapter>
</Tables>
<Sources />
</DataSource>
</xs:appinfo>
</xs:annotation>
<xs:element name="DS_Report" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DS_Report" msprop:Generator_UserDSName="DS_Report">
<xs:element name="DS_Report" msdata:IsDataSet="true" msdata:UseCurrentLocale="true" msprop:Generator_UserDSName="DS_Report" msprop:EnableTableAdapterManager="true" msprop:Generator_DataSetName="DS_Report">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="stp_prt_BunkList" msprop:Generator_TableClassName="stp_prt_BunkListDataTable" msprop:Generator_TableVarName="tablestp_prt_BunkList" msprop:Generator_TablePropName="stp_prt_BunkList" msprop:Generator_RowDeletingName="stp_prt_BunkListRowDeleting" msprop:Generator_RowChangingName="stp_prt_BunkListRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_BunkListRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_BunkListRowDeleted" msprop:Generator_UserTableName="stp_prt_BunkList" msprop:Generator_RowChangedName="stp_prt_BunkListRowChanged" msprop:Generator_RowEvArgName="stp_prt_BunkListRowChangeEvent" msprop:Generator_RowClassName="stp_prt_BunkListRow">
<xs:element name="stp_prt_BunkList" msprop:Generator_RowEvHandlerName="stp_prt_BunkListRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_BunkListRowDeleted" msprop:Generator_RowDeletingName="stp_prt_BunkListRowDeleting" msprop:Generator_RowEvArgName="stp_prt_BunkListRowChangeEvent" msprop:Generator_TablePropName="stp_prt_BunkList" msprop:Generator_RowChangedName="stp_prt_BunkListRowChanged" msprop:Generator_UserTableName="stp_prt_BunkList" msprop:Generator_RowChangingName="stp_prt_BunkListRowChanging" msprop:Generator_RowClassName="stp_prt_BunkListRow" msprop:Generator_TableClassName="stp_prt_BunkListDataTable" msprop:Generator_TableVarName="tablestp_prt_BunkList">
<xs:complexType>
<xs:sequence>
<xs:element name="StackIndex" msprop:Generator_ColumnVarNameInTable="columnStackIndex" msprop:Generator_ColumnPropNameInRow="StackIndex" msprop:Generator_ColumnPropNameInTable="StackIndexColumn" msprop:Generator_UserColumnName="StackIndex" type="xs:int" />
<xs:element name="StackDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnStackDtmx" msprop:Generator_ColumnPropNameInRow="StackDtmx" msprop:Generator_ColumnPropNameInTable="StackDtmxColumn" msprop:Generator_UserColumnName="StackDtmx" minOccurs="0">
<xs:element name="StackIndex" msprop:Generator_ColumnPropNameInTable="StackIndexColumn" msprop:Generator_ColumnPropNameInRow="StackIndex" msprop:Generator_UserColumnName="StackIndex" msprop:Generator_ColumnVarNameInTable="columnStackIndex" type="xs:int" />
<xs:element name="StackDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="StackDtmxColumn" msprop:Generator_ColumnPropNameInRow="StackDtmx" msprop:Generator_UserColumnName="StackDtmx" msprop:Generator_ColumnVarNameInTable="columnStackDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Prepared" msprop:Generator_ColumnVarNameInTable="columnPrepared" msprop:Generator_ColumnPropNameInRow="Prepared" msprop:Generator_ColumnPropNameInTable="PreparedColumn" msprop:Generator_UserColumnName="Prepared" type="xs:dateTime" minOccurs="0" />
<xs:element name="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_UserColumnName="DueDate" type="xs:dateTime" />
<xs:element name="SheetSequ" msprop:Generator_ColumnVarNameInTable="columnSheetSequ" msprop:Generator_ColumnPropNameInRow="SheetSequ" msprop:Generator_ColumnPropNameInTable="SheetSequColumn" msprop:Generator_UserColumnName="SheetSequ" type="xs:int" />
<xs:element name="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_UserColumnName="MatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_UserColumnName="MatDesc">
<xs:element name="Prepared" msprop:Generator_ColumnPropNameInTable="PreparedColumn" msprop:Generator_ColumnPropNameInRow="Prepared" msprop:Generator_UserColumnName="Prepared" msprop:Generator_ColumnVarNameInTable="columnPrepared" type="xs:dateTime" minOccurs="0" />
<xs:element name="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_UserColumnName="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" type="xs:dateTime" />
<xs:element name="SheetSequ" msprop:Generator_ColumnPropNameInTable="SheetSequColumn" msprop:Generator_ColumnPropNameInRow="SheetSequ" msprop:Generator_UserColumnName="SheetSequ" msprop:Generator_ColumnVarNameInTable="columnSheetSequ" type="xs:int" />
<xs:element name="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_UserColumnName="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_UserColumnName="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
@@ -527,56 +585,56 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="PrintJobQueue" msprop:Generator_TableClassName="PrintJobQueueDataTable" msprop:Generator_TableVarName="tablePrintJobQueue" msprop:Generator_RowChangedName="PrintJobQueueRowChanged" msprop:Generator_TablePropName="PrintJobQueue" msprop:Generator_RowDeletingName="PrintJobQueueRowDeleting" msprop:Generator_RowChangingName="PrintJobQueueRowChanging" msprop:Generator_RowEvHandlerName="PrintJobQueueRowChangeEventHandler" msprop:Generator_RowDeletedName="PrintJobQueueRowDeleted" msprop:Generator_RowClassName="PrintJobQueueRow" msprop:Generator_UserTableName="PrintJobQueue" msprop:Generator_RowEvArgName="PrintJobQueueRowChangeEvent">
<xs:element name="PrintJobQueue" msprop:Generator_RowEvHandlerName="PrintJobQueueRowChangeEventHandler" msprop:Generator_RowDeletedName="PrintJobQueueRowDeleted" msprop:Generator_RowDeletingName="PrintJobQueueRowDeleting" msprop:Generator_RowEvArgName="PrintJobQueueRowChangeEvent" msprop:Generator_TablePropName="PrintJobQueue" msprop:Generator_RowChangedName="PrintJobQueueRowChanged" msprop:Generator_UserTableName="PrintJobQueue" msprop:Generator_RowChangingName="PrintJobQueueRowChanging" msprop:Generator_RowClassName="PrintJobQueueRow" msprop:Generator_TableClassName="PrintJobQueueDataTable" msprop:Generator_TableVarName="tablePrintJobQueue">
<xs:complexType>
<xs:sequence>
<xs:element name="IdxPrintJob" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnIdxPrintJob" msprop:Generator_ColumnPropNameInRow="IdxPrintJob" msprop:Generator_ColumnPropNameInTable="IdxPrintJobColumn" msprop:Generator_UserColumnName="IdxPrintJob" type="xs:int" />
<xs:element name="TipoReport" msprop:Generator_ColumnVarNameInTable="columnTipoReport" msprop:Generator_ColumnPropNameInRow="TipoReport" msprop:Generator_ColumnPropNameInTable="TipoReportColumn" msprop:Generator_UserColumnName="TipoReport">
<xs:element name="IdxPrintJob" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInTable="IdxPrintJobColumn" msprop:Generator_ColumnPropNameInRow="IdxPrintJob" msprop:Generator_UserColumnName="IdxPrintJob" msprop:Generator_ColumnVarNameInTable="columnIdxPrintJob" type="xs:int" />
<xs:element name="TipoReport" msprop:Generator_ColumnPropNameInTable="TipoReportColumn" msprop:Generator_ColumnPropNameInRow="TipoReport" msprop:Generator_UserColumnName="TipoReport" msprop:Generator_ColumnVarNameInTable="columnTipoReport">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="KeyParam" msprop:Generator_ColumnVarNameInTable="columnKeyParam" msprop:Generator_ColumnPropNameInRow="KeyParam" msprop:Generator_ColumnPropNameInTable="KeyParamColumn" msprop:Generator_UserColumnName="KeyParam">
<xs:element name="KeyParam" msprop:Generator_ColumnPropNameInTable="KeyParamColumn" msprop:Generator_ColumnPropNameInRow="KeyParam" msprop:Generator_UserColumnName="KeyParam" msprop:Generator_ColumnVarNameInTable="columnKeyParam">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="prtName" msprop:Generator_ColumnVarNameInTable="columnprtName" msprop:Generator_ColumnPropNameInRow="prtName" msprop:Generator_ColumnPropNameInTable="prtNameColumn" msprop:Generator_UserColumnName="prtName">
<xs:element name="prtName" msprop:Generator_ColumnPropNameInTable="prtNameColumn" msprop:Generator_ColumnPropNameInRow="prtName" msprop:Generator_UserColumnName="prtName" msprop:Generator_ColumnVarNameInTable="columnprtName">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="dtStart" msprop:Generator_ColumnVarNameInTable="columndtStart" msprop:Generator_ColumnPropNameInRow="dtStart" msprop:Generator_ColumnPropNameInTable="dtStartColumn" msprop:Generator_UserColumnName="dtStart" type="xs:dateTime" />
<xs:element name="dtEnd" msprop:Generator_ColumnVarNameInTable="columndtEnd" msprop:Generator_ColumnPropNameInRow="dtEnd" msprop:Generator_ColumnPropNameInTable="dtEndColumn" msprop:Generator_UserColumnName="dtEnd" type="xs:dateTime" minOccurs="0" />
<xs:element name="stato" msprop:Generator_ColumnVarNameInTable="columnstato" msprop:Generator_ColumnPropNameInRow="stato" msprop:Generator_ColumnPropNameInTable="statoColumn" msprop:Generator_UserColumnName="stato" type="xs:int" />
<xs:element name="dtLastTry" msprop:Generator_ColumnVarNameInTable="columndtLastTry" msprop:Generator_ColumnPropNameInRow="dtLastTry" msprop:Generator_ColumnPropNameInTable="dtLastTryColumn" msprop:Generator_UserColumnName="dtLastTry" type="xs:dateTime" minOccurs="0" />
<xs:element name="dtStart" msprop:Generator_ColumnPropNameInTable="dtStartColumn" msprop:Generator_ColumnPropNameInRow="dtStart" msprop:Generator_UserColumnName="dtStart" msprop:Generator_ColumnVarNameInTable="columndtStart" type="xs:dateTime" />
<xs:element name="dtEnd" msprop:Generator_ColumnPropNameInTable="dtEndColumn" msprop:Generator_ColumnPropNameInRow="dtEnd" msprop:Generator_UserColumnName="dtEnd" msprop:Generator_ColumnVarNameInTable="columndtEnd" type="xs:dateTime" minOccurs="0" />
<xs:element name="stato" msprop:Generator_ColumnPropNameInTable="statoColumn" msprop:Generator_ColumnPropNameInRow="stato" msprop:Generator_UserColumnName="stato" msprop:Generator_ColumnVarNameInTable="columnstato" type="xs:int" />
<xs:element name="dtLastTry" msprop:Generator_ColumnPropNameInTable="dtLastTryColumn" msprop:Generator_ColumnPropNameInRow="dtLastTry" msprop:Generator_UserColumnName="dtLastTry" msprop:Generator_ColumnVarNameInTable="columndtLastTry" type="xs:dateTime" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="ElencoPostazioni" msprop:Generator_TableClassName="ElencoPostazioniDataTable" msprop:Generator_TableVarName="tableElencoPostazioni" msprop:Generator_RowChangedName="ElencoPostazioniRowChanged" msprop:Generator_TablePropName="ElencoPostazioni" msprop:Generator_RowDeletingName="ElencoPostazioniRowDeleting" msprop:Generator_RowChangingName="ElencoPostazioniRowChanging" msprop:Generator_RowEvHandlerName="ElencoPostazioniRowChangeEventHandler" msprop:Generator_RowDeletedName="ElencoPostazioniRowDeleted" msprop:Generator_RowClassName="ElencoPostazioniRow" msprop:Generator_UserTableName="ElencoPostazioni" msprop:Generator_RowEvArgName="ElencoPostazioniRowChangeEvent">
<xs:element name="ElencoPostazioni" msprop:Generator_RowEvHandlerName="ElencoPostazioniRowChangeEventHandler" msprop:Generator_RowDeletedName="ElencoPostazioniRowDeleted" msprop:Generator_RowDeletingName="ElencoPostazioniRowDeleting" msprop:Generator_RowEvArgName="ElencoPostazioniRowChangeEvent" msprop:Generator_TablePropName="ElencoPostazioni" msprop:Generator_RowChangedName="ElencoPostazioniRowChanged" msprop:Generator_UserTableName="ElencoPostazioni" msprop:Generator_RowChangingName="ElencoPostazioniRowChanging" msprop:Generator_RowClassName="ElencoPostazioniRow" msprop:Generator_TableClassName="ElencoPostazioniDataTable" msprop:Generator_TableVarName="tableElencoPostazioni">
<xs:complexType>
<xs:sequence>
<xs:element name="codPostazione" msprop:Generator_ColumnVarNameInTable="columncodPostazione" msprop:Generator_ColumnPropNameInRow="codPostazione" msprop:Generator_ColumnPropNameInTable="codPostazioneColumn" msprop:Generator_UserColumnName="codPostazione">
<xs:element name="codPostazione" msprop:Generator_ColumnPropNameInTable="codPostazioneColumn" msprop:Generator_ColumnPropNameInRow="codPostazione" msprop:Generator_UserColumnName="codPostazione" msprop:Generator_ColumnVarNameInTable="columncodPostazione">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="stampante" msprop:Generator_ColumnVarNameInTable="columnstampante" msprop:Generator_ColumnPropNameInRow="stampante" msprop:Generator_ColumnPropNameInTable="stampanteColumn" msprop:Generator_UserColumnName="stampante" minOccurs="0">
<xs:element name="stampante" msprop:Generator_ColumnPropNameInTable="stampanteColumn" msprop:Generator_ColumnPropNameInRow="stampante" msprop:Generator_UserColumnName="stampante" msprop:Generator_ColumnVarNameInTable="columnstampante" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="note" msprop:Generator_ColumnVarNameInTable="columnnote" msprop:Generator_ColumnPropNameInRow="note" msprop:Generator_ColumnPropNameInTable="noteColumn" msprop:Generator_UserColumnName="note" minOccurs="0">
<xs:element name="note" msprop:Generator_ColumnPropNameInTable="noteColumn" msprop:Generator_ColumnPropNameInRow="note" msprop:Generator_UserColumnName="note" msprop:Generator_ColumnVarNameInTable="columnnote" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
@@ -586,92 +644,92 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_Bin" msprop:Generator_TableClassName="stp_prt_BinDataTable" msprop:Generator_TableVarName="tablestp_prt_Bin" msprop:Generator_TablePropName="stp_prt_Bin" msprop:Generator_RowDeletingName="stp_prt_BinRowDeleting" msprop:Generator_RowChangingName="stp_prt_BinRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_BinRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_BinRowDeleted" msprop:Generator_UserTableName="stp_prt_Bin" msprop:Generator_RowChangedName="stp_prt_BinRowChanged" msprop:Generator_RowEvArgName="stp_prt_BinRowChangeEvent" msprop:Generator_RowClassName="stp_prt_BinRow">
<xs:element name="stp_prt_Bin" msprop:Generator_RowEvHandlerName="stp_prt_BinRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_BinRowDeleted" msprop:Generator_RowDeletingName="stp_prt_BinRowDeleting" msprop:Generator_RowEvArgName="stp_prt_BinRowChangeEvent" msprop:Generator_TablePropName="stp_prt_Bin" msprop:Generator_RowChangedName="stp_prt_BinRowChanged" msprop:Generator_UserTableName="stp_prt_Bin" msprop:Generator_RowChangingName="stp_prt_BinRowChanging" msprop:Generator_RowClassName="stp_prt_BinRow" msprop:Generator_TableClassName="stp_prt_BinDataTable" msprop:Generator_TableVarName="tablestp_prt_Bin">
<xs:complexType>
<xs:sequence>
<xs:element name="BinID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnBinID" msprop:Generator_ColumnPropNameInRow="BinID" msprop:Generator_ColumnPropNameInTable="BinIDColumn" msprop:Generator_UserColumnName="BinID" type="xs:int" />
<xs:element name="flgPreOrPost" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnflgPreOrPost" msprop:Generator_ColumnPropNameInRow="flgPreOrPost" msprop:Generator_ColumnPropNameInTable="flgPreOrPostColumn" msprop:Generator_UserColumnName="flgPreOrPost" type="xs:boolean" minOccurs="0" />
<xs:element name="BinIndex" msprop:Generator_ColumnVarNameInTable="columnBinIndex" msprop:Generator_ColumnPropNameInRow="BinIndex" msprop:Generator_ColumnPropNameInTable="BinIndexColumn" msprop:Generator_UserColumnName="BinIndex" type="xs:int" />
<xs:element name="BinIndexChar" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnBinIndexChar" msprop:Generator_ColumnPropNameInRow="BinIndexChar" msprop:Generator_ColumnPropNameInTable="BinIndexCharColumn" msprop:Generator_UserColumnName="BinIndexChar" minOccurs="0">
<xs:element name="BinID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInTable="BinIDColumn" msprop:Generator_ColumnPropNameInRow="BinID" msprop:Generator_UserColumnName="BinID" msprop:Generator_ColumnVarNameInTable="columnBinID" type="xs:int" />
<xs:element name="flgPreOrPost" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="flgPreOrPostColumn" msprop:Generator_ColumnPropNameInRow="flgPreOrPost" msprop:Generator_UserColumnName="flgPreOrPost" msprop:Generator_ColumnVarNameInTable="columnflgPreOrPost" type="xs:boolean" minOccurs="0" />
<xs:element name="BinIndex" msprop:Generator_ColumnPropNameInTable="BinIndexColumn" msprop:Generator_ColumnPropNameInRow="BinIndex" msprop:Generator_UserColumnName="BinIndex" msprop:Generator_ColumnVarNameInTable="columnBinIndex" type="xs:int" />
<xs:element name="BinIndexChar" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="BinIndexCharColumn" msprop:Generator_ColumnPropNameInRow="BinIndexChar" msprop:Generator_UserColumnName="BinIndexChar" msprop:Generator_ColumnVarNameInTable="columnBinIndexChar" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="51" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemExtCode" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnItemExtCode" msprop:Generator_ColumnPropNameInRow="ItemExtCode" msprop:Generator_ColumnPropNameInTable="ItemExtCodeColumn" msprop:Generator_UserColumnName="ItemExtCode" minOccurs="0">
<xs:element name="ItemExtCode" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="ItemExtCodeColumn" msprop:Generator_ColumnPropNameInRow="ItemExtCode" msprop:Generator_UserColumnName="ItemExtCode" msprop:Generator_ColumnVarNameInTable="columnItemExtCode" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemDesc" msprop:Generator_ColumnVarNameInTable="columnItemDesc" msprop:Generator_ColumnPropNameInRow="ItemDesc" msprop:Generator_ColumnPropNameInTable="ItemDescColumn" msprop:Generator_UserColumnName="ItemDesc" minOccurs="0">
<xs:element name="ItemDesc" msprop:Generator_ColumnPropNameInTable="ItemDescColumn" msprop:Generator_ColumnPropNameInRow="ItemDesc" msprop:Generator_UserColumnName="ItemDesc" msprop:Generator_ColumnVarNameInTable="columnItemDesc" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BinDtmxRich" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnBinDtmxRich" msprop:Generator_ColumnPropNameInRow="BinDtmxRich" msprop:Generator_ColumnPropNameInTable="BinDtmxRichColumn" msprop:Generator_UserColumnName="BinDtmxRich" minOccurs="0">
<xs:element name="BinDtmxRich" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="BinDtmxRichColumn" msprop:Generator_ColumnPropNameInRow="BinDtmxRich" msprop:Generator_UserColumnName="BinDtmxRich" msprop:Generator_ColumnVarNameInTable="columnBinDtmxRich" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BinDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnBinDtmx" msprop:Generator_ColumnPropNameInRow="BinDtmx" msprop:Generator_ColumnPropNameInTable="BinDtmxColumn" msprop:Generator_UserColumnName="BinDtmx" minOccurs="0">
<xs:element name="BinDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="BinDtmxColumn" msprop:Generator_ColumnPropNameInRow="BinDtmx" msprop:Generator_UserColumnName="BinDtmx" msprop:Generator_ColumnVarNameInTable="columnBinDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="BinDtmxProc" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnBinDtmxProc" msprop:Generator_ColumnPropNameInRow="BinDtmxProc" msprop:Generator_ColumnPropNameInTable="BinDtmxProcColumn" msprop:Generator_UserColumnName="BinDtmxProc" minOccurs="0">
<xs:element name="BinDtmxProc" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="BinDtmxProcColumn" msprop:Generator_ColumnPropNameInRow="BinDtmxProc" msprop:Generator_UserColumnName="BinDtmxProc" msprop:Generator_ColumnVarNameInTable="columnBinDtmxProc" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TotItem" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTotItem" msprop:Generator_ColumnPropNameInRow="TotItem" msprop:Generator_ColumnPropNameInTable="TotItemColumn" msprop:Generator_UserColumnName="TotItem" type="xs:int" minOccurs="0" />
<xs:element name="PathImageFull" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnPathImageFull" msprop:Generator_ColumnPropNameInRow="PathImageFull" msprop:Generator_ColumnPropNameInTable="PathImageFullColumn" msprop:Generator_UserColumnName="PathImageFull" minOccurs="0">
<xs:element name="TotItem" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="TotItemColumn" msprop:Generator_ColumnPropNameInRow="TotItem" msprop:Generator_UserColumnName="TotItem" msprop:Generator_ColumnVarNameInTable="columnTotItem" type="xs:int" minOccurs="0" />
<xs:element name="PathImageFull" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="PathImageFullColumn" msprop:Generator_ColumnPropNameInRow="PathImageFull" msprop:Generator_UserColumnName="PathImageFull" msprop:Generator_ColumnVarNameInTable="columnPathImageFull" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="4000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_UserColumnName="DueDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_UserColumnName="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" type="xs:dateTime" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_Part" msprop:Generator_TableClassName="stp_prt_PartDataTable" msprop:Generator_TableVarName="tablestp_prt_Part" msprop:Generator_TablePropName="stp_prt_Part" msprop:Generator_RowDeletingName="stp_prt_PartRowDeleting" msprop:Generator_RowChangingName="stp_prt_PartRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_PartRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_PartRowDeleted" msprop:Generator_UserTableName="stp_prt_Part" msprop:Generator_RowChangedName="stp_prt_PartRowChanged" msprop:Generator_RowEvArgName="stp_prt_PartRowChangeEvent" msprop:Generator_RowClassName="stp_prt_PartRow">
<xs:element name="stp_prt_Part" msprop:Generator_RowEvHandlerName="stp_prt_PartRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_PartRowDeleted" msprop:Generator_RowDeletingName="stp_prt_PartRowDeleting" msprop:Generator_RowEvArgName="stp_prt_PartRowChangeEvent" msprop:Generator_TablePropName="stp_prt_Part" msprop:Generator_RowChangedName="stp_prt_PartRowChanged" msprop:Generator_UserTableName="stp_prt_Part" msprop:Generator_RowChangingName="stp_prt_PartRowChanging" msprop:Generator_RowClassName="stp_prt_PartRow" msprop:Generator_TableClassName="stp_prt_PartDataTable" msprop:Generator_TableVarName="tablestp_prt_Part">
<xs:complexType>
<xs:sequence>
<xs:element name="ItemID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnItemID" msprop:Generator_ColumnPropNameInRow="ItemID" msprop:Generator_ColumnPropNameInTable="ItemIDColumn" msprop:Generator_UserColumnName="ItemID" type="xs:int" />
<xs:element name="ItemDtmx" msprop:Generator_ColumnVarNameInTable="columnItemDtmx" msprop:Generator_ColumnPropNameInRow="ItemDtmx" msprop:Generator_ColumnPropNameInTable="ItemDtmxColumn" msprop:Generator_UserColumnName="ItemDtmx" minOccurs="0">
<xs:element name="ItemID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInTable="ItemIDColumn" msprop:Generator_ColumnPropNameInRow="ItemID" msprop:Generator_UserColumnName="ItemID" msprop:Generator_ColumnVarNameInTable="columnItemID" type="xs:int" />
<xs:element name="ItemDtmx" msprop:Generator_ColumnPropNameInTable="ItemDtmxColumn" msprop:Generator_ColumnPropNameInRow="ItemDtmx" msprop:Generator_UserColumnName="ItemDtmx" msprop:Generator_ColumnVarNameInTable="columnItemDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Destination" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnDestination" msprop:Generator_ColumnPropNameInRow="Destination" msprop:Generator_ColumnPropNameInTable="DestinationColumn" msprop:Generator_UserColumnName="Destination" minOccurs="0">
<xs:element name="Destination" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="DestinationColumn" msprop:Generator_ColumnPropNameInRow="Destination" msprop:Generator_UserColumnName="Destination" msprop:Generator_ColumnVarNameInTable="columnDestination" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
@@ -681,82 +739,90 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_Cart" msprop:Generator_TableClassName="stp_prt_CartDataTable" msprop:Generator_TableVarName="tablestp_prt_Cart" msprop:Generator_TablePropName="stp_prt_Cart" msprop:Generator_RowDeletingName="stp_prt_CartRowDeleting" msprop:Generator_RowChangingName="stp_prt_CartRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_CartRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_CartRowDeleted" msprop:Generator_UserTableName="stp_prt_Cart" msprop:Generator_RowChangedName="stp_prt_CartRowChanged" msprop:Generator_RowEvArgName="stp_prt_CartRowChangeEvent" msprop:Generator_RowClassName="stp_prt_CartRow">
<xs:element name="stp_prt_Cart" msprop:Generator_RowEvHandlerName="stp_prt_CartRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_CartRowDeleted" msprop:Generator_RowDeletingName="stp_prt_CartRowDeleting" msprop:Generator_RowEvArgName="stp_prt_CartRowChangeEvent" msprop:Generator_TablePropName="stp_prt_Cart" msprop:Generator_RowChangedName="stp_prt_CartRowChanged" msprop:Generator_UserTableName="stp_prt_Cart" msprop:Generator_RowChangingName="stp_prt_CartRowChanging" msprop:Generator_RowClassName="stp_prt_CartRow" msprop:Generator_TableClassName="stp_prt_CartDataTable" msprop:Generator_TableVarName="tablestp_prt_Cart">
<xs:complexType>
<xs:sequence>
<xs:element name="BatchID" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnBatchID" msprop:Generator_ColumnPropNameInRow="BatchID" msprop:Generator_ColumnPropNameInTable="BatchIDColumn" msprop:Generator_UserColumnName="BatchID" type="xs:int" minOccurs="0" />
<xs:element name="CartID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnCartID" msprop:Generator_ColumnPropNameInRow="CartID" msprop:Generator_ColumnPropNameInTable="CartIDColumn" msprop:Generator_UserColumnName="CartID" type="xs:int" />
<xs:element name="CartIndex" msprop:Generator_ColumnVarNameInTable="columnCartIndex" msprop:Generator_ColumnPropNameInRow="CartIndex" msprop:Generator_ColumnPropNameInTable="CartIndexColumn" msprop:Generator_UserColumnName="CartIndex" type="xs:int" />
<xs:element name="CartDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnCartDtmx" msprop:Generator_ColumnPropNameInRow="CartDtmx" msprop:Generator_ColumnPropNameInTable="CartDtmxColumn" msprop:Generator_UserColumnName="CartDtmx" minOccurs="0">
<xs:element name="BatchID" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="BatchIDColumn" msprop:Generator_ColumnPropNameInRow="BatchID" msprop:Generator_UserColumnName="BatchID" msprop:Generator_ColumnVarNameInTable="columnBatchID" type="xs:int" minOccurs="0" />
<xs:element name="CartID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInTable="CartIDColumn" msprop:Generator_ColumnPropNameInRow="CartID" msprop:Generator_UserColumnName="CartID" msprop:Generator_ColumnVarNameInTable="columnCartID" type="xs:int" />
<xs:element name="CartIndex" msprop:Generator_ColumnPropNameInTable="CartIndexColumn" msprop:Generator_ColumnPropNameInRow="CartIndex" msprop:Generator_UserColumnName="CartIndex" msprop:Generator_ColumnVarNameInTable="columnCartIndex" type="xs:int" />
<xs:element name="CartDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="CartDtmxColumn" msprop:Generator_ColumnPropNameInRow="CartDtmx" msprop:Generator_UserColumnName="CartDtmx" msprop:Generator_ColumnVarNameInTable="columnCartDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OrderExtCode" msprop:Generator_ColumnVarNameInTable="columnOrderExtCode" msprop:Generator_ColumnPropNameInRow="OrderExtCode" msprop:Generator_ColumnPropNameInTable="OrderExtCodeColumn" msprop:Generator_UserColumnName="OrderExtCode" minOccurs="0">
<xs:element name="OrderExtCode" msprop:Generator_ColumnPropNameInTable="OrderExtCodeColumn" msprop:Generator_ColumnPropNameInRow="OrderExtCode" msprop:Generator_UserColumnName="OrderExtCode" msprop:Generator_ColumnVarNameInTable="columnOrderExtCode" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="FamilyCode" msprop:Generator_ColumnVarNameInTable="columnFamilyCode" msprop:Generator_ColumnPropNameInRow="FamilyCode" msprop:Generator_ColumnPropNameInTable="FamilyCodeColumn" msprop:Generator_UserColumnName="FamilyCode" minOccurs="0">
<xs:element name="FamilyCode" msprop:Generator_ColumnPropNameInTable="FamilyCodeColumn" msprop:Generator_ColumnPropNameInRow="FamilyCode" msprop:Generator_UserColumnName="FamilyCode" msprop:Generator_ColumnVarNameInTable="columnFamilyCode" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TotKit" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTotKit" msprop:Generator_ColumnPropNameInRow="TotKit" msprop:Generator_ColumnPropNameInTable="TotKitColumn" msprop:Generator_UserColumnName="TotKit" type="xs:int" minOccurs="0" />
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="TotKit" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="TotKitColumn" msprop:Generator_ColumnPropNameInRow="TotKit" msprop:Generator_UserColumnName="TotKit" msprop:Generator_ColumnVarNameInTable="columnTotKit" type="xs:int" minOccurs="0" />
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_UserColumnName="DueDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_UserColumnName="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="OrdParent" msprop:Generator_ColumnPropNameInTable="OrdParentColumn" msprop:Generator_ColumnPropNameInRow="OrdParent" msprop:Generator_UserColumnName="OrdParent" msprop:Generator_ColumnVarNameInTable="columnOrdParent" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="AtoReqDate" msprop:Generator_ColumnPropNameInTable="AtoReqDateColumn" msprop:Generator_ColumnPropNameInRow="AtoReqDate" msprop:Generator_UserColumnName="AtoReqDate" msprop:Generator_ColumnVarNameInTable="columnAtoReqDate" type="xs:dateTime" minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_BunkGroup" msprop:Generator_TableClassName="stp_prt_BunkGroupDataTable" msprop:Generator_TableVarName="tablestp_prt_BunkGroup" msprop:Generator_TablePropName="stp_prt_BunkGroup" msprop:Generator_RowDeletingName="stp_prt_BunkGroupRowDeleting" msprop:Generator_RowChangingName="stp_prt_BunkGroupRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_BunkGroupRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_BunkGroupRowDeleted" msprop:Generator_UserTableName="stp_prt_BunkGroup" msprop:Generator_RowChangedName="stp_prt_BunkGroupRowChanged" msprop:Generator_RowEvArgName="stp_prt_BunkGroupRowChangeEvent" msprop:Generator_RowClassName="stp_prt_BunkGroupRow">
<xs:element name="stp_prt_BunkGroup" msprop:Generator_RowEvHandlerName="stp_prt_BunkGroupRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_BunkGroupRowDeleted" msprop:Generator_RowDeletingName="stp_prt_BunkGroupRowDeleting" msprop:Generator_RowEvArgName="stp_prt_BunkGroupRowChangeEvent" msprop:Generator_TablePropName="stp_prt_BunkGroup" msprop:Generator_RowChangedName="stp_prt_BunkGroupRowChanged" msprop:Generator_UserTableName="stp_prt_BunkGroup" msprop:Generator_RowChangingName="stp_prt_BunkGroupRowChanging" msprop:Generator_RowClassName="stp_prt_BunkGroupRow" msprop:Generator_TableClassName="stp_prt_BunkGroupDataTable" msprop:Generator_TableVarName="tablestp_prt_BunkGroup">
<xs:complexType>
<xs:sequence>
<xs:element name="StackIndex" msprop:Generator_ColumnVarNameInTable="columnStackIndex" msprop:Generator_ColumnPropNameInRow="StackIndex" msprop:Generator_ColumnPropNameInTable="StackIndexColumn" msprop:Generator_UserColumnName="StackIndex" type="xs:int" />
<xs:element name="StackDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnStackDtmx" msprop:Generator_ColumnPropNameInRow="StackDtmx" msprop:Generator_ColumnPropNameInTable="StackDtmxColumn" msprop:Generator_UserColumnName="StackDtmx" minOccurs="0">
<xs:element name="StackIndex" msprop:Generator_ColumnPropNameInTable="StackIndexColumn" msprop:Generator_ColumnPropNameInRow="StackIndex" msprop:Generator_UserColumnName="StackIndex" msprop:Generator_ColumnVarNameInTable="columnStackIndex" type="xs:int" />
<xs:element name="StackDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="StackDtmxColumn" msprop:Generator_ColumnPropNameInRow="StackDtmx" msprop:Generator_UserColumnName="StackDtmx" msprop:Generator_ColumnVarNameInTable="columnStackDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="Prepared" msprop:Generator_ColumnVarNameInTable="columnPrepared" msprop:Generator_ColumnPropNameInRow="Prepared" msprop:Generator_ColumnPropNameInTable="PreparedColumn" msprop:Generator_UserColumnName="Prepared" type="xs:dateTime" minOccurs="0" />
<xs:element name="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_UserColumnName="DueDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_UserColumnName="MatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_UserColumnName="MatDesc">
<xs:element name="Prepared" msprop:Generator_ColumnPropNameInTable="PreparedColumn" msprop:Generator_ColumnPropNameInRow="Prepared" msprop:Generator_UserColumnName="Prepared" msprop:Generator_ColumnVarNameInTable="columnPrepared" type="xs:dateTime" minOccurs="0" />
<xs:element name="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_UserColumnName="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_UserColumnName="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_UserColumnName="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="SheetIndexMax" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnSheetIndexMax" msprop:Generator_ColumnPropNameInRow="SheetIndexMax" msprop:Generator_ColumnPropNameInTable="SheetIndexMaxColumn" msprop:Generator_UserColumnName="SheetIndexMax" type="xs:int" minOccurs="0" />
<xs:element name="SheetSequ" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnSheetSequ" msprop:Generator_ColumnPropNameInRow="SheetSequ" msprop:Generator_ColumnPropNameInTable="SheetSequColumn" msprop:Generator_UserColumnName="SheetSequ" minOccurs="0">
<xs:element name="SheetIndexMax" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="SheetIndexMaxColumn" msprop:Generator_ColumnPropNameInRow="SheetIndexMax" msprop:Generator_UserColumnName="SheetIndexMax" msprop:Generator_ColumnVarNameInTable="columnSheetIndexMax" type="xs:int" minOccurs="0" />
<xs:element name="SheetSequ" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="SheetSequColumn" msprop:Generator_ColumnPropNameInRow="SheetSequ" msprop:Generator_UserColumnName="SheetSequ" msprop:Generator_ColumnVarNameInTable="columnSheetSequ" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="9" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="SheetTot" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnSheetTot" msprop:Generator_ColumnPropNameInRow="SheetTot" msprop:Generator_ColumnPropNameInTable="SheetTotColumn" msprop:Generator_UserColumnName="SheetTot" minOccurs="0">
<xs:element name="SheetTot" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="SheetTotColumn" msprop:Generator_ColumnPropNameInRow="SheetTot" msprop:Generator_UserColumnName="SheetTot" msprop:Generator_ColumnVarNameInTable="columnSheetTot" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
@@ -766,46 +832,46 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_OtherPart" msprop:Generator_TableClassName="stp_prt_OtherPartDataTable" msprop:Generator_TableVarName="tablestp_prt_OtherPart" msprop:Generator_RowChangedName="stp_prt_OtherPartRowChanged" msprop:Generator_TablePropName="stp_prt_OtherPart" msprop:Generator_RowDeletingName="stp_prt_OtherPartRowDeleting" msprop:Generator_RowChangingName="stp_prt_OtherPartRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_OtherPartRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_OtherPartRowDeleted" msprop:Generator_RowClassName="stp_prt_OtherPartRow" msprop:Generator_UserTableName="stp_prt_OtherPart" msprop:Generator_RowEvArgName="stp_prt_OtherPartRowChangeEvent">
<xs:element name="stp_prt_OtherPart" msprop:Generator_RowEvHandlerName="stp_prt_OtherPartRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_OtherPartRowDeleted" msprop:Generator_RowDeletingName="stp_prt_OtherPartRowDeleting" msprop:Generator_RowEvArgName="stp_prt_OtherPartRowChangeEvent" msprop:Generator_TablePropName="stp_prt_OtherPart" msprop:Generator_RowChangedName="stp_prt_OtherPartRowChanged" msprop:Generator_UserTableName="stp_prt_OtherPart" msprop:Generator_RowChangingName="stp_prt_OtherPartRowChanging" msprop:Generator_RowClassName="stp_prt_OtherPartRow" msprop:Generator_TableClassName="stp_prt_OtherPartDataTable" msprop:Generator_TableVarName="tablestp_prt_OtherPart">
<xs:complexType>
<xs:sequence>
<xs:element name="OtherItemID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnVarNameInTable="columnOtherItemID" msprop:Generator_ColumnPropNameInRow="OtherItemID" msprop:Generator_ColumnPropNameInTable="OtherItemIDColumn" msprop:Generator_UserColumnName="OtherItemID" type="xs:int" />
<xs:element name="OtherItemExtCode" msprop:Generator_ColumnVarNameInTable="columnOtherItemExtCode" msprop:Generator_ColumnPropNameInRow="OtherItemExtCode" msprop:Generator_ColumnPropNameInTable="OtherItemExtCodeColumn" msprop:Generator_UserColumnName="OtherItemExtCode">
<xs:element name="OtherItemID" msdata:ReadOnly="true" msdata:AutoIncrement="true" msdata:AutoIncrementSeed="-1" msdata:AutoIncrementStep="-1" msprop:Generator_ColumnPropNameInTable="OtherItemIDColumn" msprop:Generator_ColumnPropNameInRow="OtherItemID" msprop:Generator_UserColumnName="OtherItemID" msprop:Generator_ColumnVarNameInTable="columnOtherItemID" type="xs:int" />
<xs:element name="OtherItemExtCode" msprop:Generator_ColumnPropNameInTable="OtherItemExtCodeColumn" msprop:Generator_ColumnPropNameInRow="OtherItemExtCode" msprop:Generator_UserColumnName="OtherItemExtCode" msprop:Generator_ColumnVarNameInTable="columnOtherItemExtCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OtherItemDesc" msprop:Generator_ColumnVarNameInTable="columnOtherItemDesc" msprop:Generator_ColumnPropNameInRow="OtherItemDesc" msprop:Generator_ColumnPropNameInTable="OtherItemDescColumn" msprop:Generator_UserColumnName="OtherItemDesc">
<xs:element name="OtherItemDesc" msprop:Generator_ColumnPropNameInTable="OtherItemDescColumn" msprop:Generator_ColumnPropNameInRow="OtherItemDesc" msprop:Generator_UserColumnName="OtherItemDesc" msprop:Generator_ColumnVarNameInTable="columnOtherItemDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OtherItemDtmx" msprop:Generator_ColumnVarNameInTable="columnOtherItemDtmx" msprop:Generator_ColumnPropNameInRow="OtherItemDtmx" msprop:Generator_ColumnPropNameInTable="OtherItemDtmxColumn" msprop:Generator_UserColumnName="OtherItemDtmx" minOccurs="0">
<xs:element name="OtherItemDtmx" msprop:Generator_ColumnPropNameInTable="OtherItemDtmxColumn" msprop:Generator_ColumnPropNameInRow="OtherItemDtmx" msprop:Generator_UserColumnName="OtherItemDtmx" msprop:Generator_ColumnVarNameInTable="columnOtherItemDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OtherItemType" msprop:Generator_ColumnVarNameInTable="columnOtherItemType" msprop:Generator_ColumnPropNameInRow="OtherItemType" msprop:Generator_ColumnPropNameInTable="OtherItemTypeColumn" msprop:Generator_UserColumnName="OtherItemType">
<xs:element name="OtherItemType" msprop:Generator_ColumnPropNameInTable="OtherItemTypeColumn" msprop:Generator_ColumnPropNameInRow="OtherItemType" msprop:Generator_UserColumnName="OtherItemType" msprop:Generator_ColumnVarNameInTable="columnOtherItemType">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OtherItemNote" msprop:Generator_ColumnVarNameInTable="columnOtherItemNote" msprop:Generator_ColumnPropNameInRow="OtherItemNote" msprop:Generator_ColumnPropNameInTable="OtherItemNoteColumn" msprop:Generator_UserColumnName="OtherItemNote">
<xs:element name="OtherItemNote" msprop:Generator_ColumnPropNameInTable="OtherItemNoteColumn" msprop:Generator_ColumnPropNameInRow="OtherItemNote" msprop:Generator_UserColumnName="OtherItemNote" msprop:Generator_ColumnVarNameInTable="columnOtherItemNote">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
@@ -815,77 +881,77 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_IRK" msprop:Generator_TableClassName="stp_prt_IRKDataTable" msprop:Generator_TableVarName="tablestp_prt_IRK" msprop:Generator_RowChangedName="stp_prt_IRKRowChanged" msprop:Generator_TablePropName="stp_prt_IRK" msprop:Generator_RowDeletingName="stp_prt_IRKRowDeleting" msprop:Generator_RowChangingName="stp_prt_IRKRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_IRKRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_IRKRowDeleted" msprop:Generator_RowClassName="stp_prt_IRKRow" msprop:Generator_UserTableName="stp_prt_IRK" msprop:Generator_RowEvArgName="stp_prt_IRKRowChangeEvent">
<xs:element name="stp_prt_IRK" msprop:Generator_RowEvHandlerName="stp_prt_IRKRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_IRKRowDeleted" msprop:Generator_RowDeletingName="stp_prt_IRKRowDeleting" msprop:Generator_RowEvArgName="stp_prt_IRKRowChangeEvent" msprop:Generator_TablePropName="stp_prt_IRK" msprop:Generator_RowChangedName="stp_prt_IRKRowChanged" msprop:Generator_UserTableName="stp_prt_IRK" msprop:Generator_RowChangingName="stp_prt_IRKRowChanging" msprop:Generator_RowClassName="stp_prt_IRKRow" msprop:Generator_TableClassName="stp_prt_IRKDataTable" msprop:Generator_TableVarName="tablestp_prt_IRK">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderExtCode" msprop:Generator_ColumnVarNameInTable="columnOrderExtCode" msprop:Generator_ColumnPropNameInRow="OrderExtCode" msprop:Generator_ColumnPropNameInTable="OrderExtCodeColumn" msprop:Generator_UserColumnName="OrderExtCode">
<xs:element name="OrderExtCode" msprop:Generator_ColumnPropNameInTable="OrderExtCodeColumn" msprop:Generator_ColumnPropNameInRow="OrderExtCode" msprop:Generator_UserColumnName="OrderExtCode" msprop:Generator_ColumnVarNameInTable="columnOrderExtCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="CartDtmx" msprop:Generator_ColumnVarNameInTable="columnCartDtmx" msprop:Generator_ColumnPropNameInRow="CartDtmx" msprop:Generator_ColumnPropNameInTable="CartDtmxColumn" msprop:Generator_UserColumnName="CartDtmx">
<xs:element name="CartDtmx" msprop:Generator_ColumnPropNameInTable="CartDtmxColumn" msprop:Generator_ColumnPropNameInRow="CartDtmx" msprop:Generator_UserColumnName="CartDtmx" msprop:Generator_ColumnVarNameInTable="columnCartDtmx">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="KitExtCode" msprop:Generator_ColumnVarNameInTable="columnKitExtCode" msprop:Generator_ColumnPropNameInRow="KitExtCode" msprop:Generator_ColumnPropNameInTable="KitExtCodeColumn" msprop:Generator_UserColumnName="KitExtCode" minOccurs="0">
<xs:element name="KitExtCode" msprop:Generator_ColumnPropNameInTable="KitExtCodeColumn" msprop:Generator_ColumnPropNameInRow="KitExtCode" msprop:Generator_UserColumnName="KitExtCode" msprop:Generator_ColumnVarNameInTable="columnKitExtCode" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="StatusDesc" msprop:Generator_ColumnVarNameInTable="columnStatusDesc" msprop:Generator_ColumnPropNameInRow="StatusDesc" msprop:Generator_ColumnPropNameInTable="StatusDescColumn" msprop:Generator_UserColumnName="StatusDesc">
<xs:element name="StatusDesc" msprop:Generator_ColumnPropNameInTable="StatusDescColumn" msprop:Generator_ColumnPropNameInRow="StatusDesc" msprop:Generator_UserColumnName="StatusDesc" msprop:Generator_ColumnVarNameInTable="columnStatusDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemDtmx" msprop:Generator_ColumnVarNameInTable="columnItemDtmx" msprop:Generator_ColumnPropNameInRow="ItemDtmx" msprop:Generator_ColumnPropNameInTable="ItemDtmxColumn" msprop:Generator_UserColumnName="ItemDtmx">
<xs:element name="ItemDtmx" msprop:Generator_ColumnPropNameInTable="ItemDtmxColumn" msprop:Generator_ColumnPropNameInRow="ItemDtmx" msprop:Generator_UserColumnName="ItemDtmx" msprop:Generator_ColumnVarNameInTable="columnItemDtmx">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemExtCode" msprop:Generator_ColumnVarNameInTable="columnItemExtCode" msprop:Generator_ColumnPropNameInRow="ItemExtCode" msprop:Generator_ColumnPropNameInTable="ItemExtCodeColumn" msprop:Generator_UserColumnName="ItemExtCode">
<xs:element name="ItemExtCode" msprop:Generator_ColumnPropNameInTable="ItemExtCodeColumn" msprop:Generator_ColumnPropNameInRow="ItemExtCode" msprop:Generator_UserColumnName="ItemExtCode" msprop:Generator_ColumnVarNameInTable="columnItemExtCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemDesc" msprop:Generator_ColumnVarNameInTable="columnItemDesc" msprop:Generator_ColumnPropNameInRow="ItemDesc" msprop:Generator_ColumnPropNameInTable="ItemDescColumn" msprop:Generator_UserColumnName="ItemDesc">
<xs:element name="ItemDesc" msprop:Generator_ColumnPropNameInTable="ItemDescColumn" msprop:Generator_ColumnPropNameInRow="ItemDesc" msprop:Generator_UserColumnName="ItemDesc" msprop:Generator_ColumnVarNameInTable="columnItemDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemNote" msprop:Generator_ColumnVarNameInTable="columnItemNote" msprop:Generator_ColumnPropNameInRow="ItemNote" msprop:Generator_ColumnPropNameInTable="ItemNoteColumn" msprop:Generator_UserColumnName="ItemNote">
<xs:element name="ItemNote" msprop:Generator_ColumnPropNameInTable="ItemNoteColumn" msprop:Generator_ColumnPropNameInRow="ItemNote" msprop:Generator_UserColumnName="ItemNote" msprop:Generator_ColumnVarNameInTable="columnItemNote">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QtyReq" msprop:Generator_ColumnVarNameInTable="columnQtyReq" msprop:Generator_ColumnPropNameInRow="QtyReq" msprop:Generator_ColumnPropNameInTable="QtyReqColumn" msprop:Generator_UserColumnName="QtyReq" type="xs:int" />
<xs:element name="QtyCur" msprop:Generator_ColumnVarNameInTable="columnQtyCur" msprop:Generator_ColumnPropNameInRow="QtyCur" msprop:Generator_ColumnPropNameInTable="QtyCurColumn" msprop:Generator_UserColumnName="QtyCur" type="xs:int" />
<xs:element name="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_UserColumnName="MatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_UserColumnName="MatDesc">
<xs:element name="QtyReq" msprop:Generator_ColumnPropNameInTable="QtyReqColumn" msprop:Generator_ColumnPropNameInRow="QtyReq" msprop:Generator_UserColumnName="QtyReq" msprop:Generator_ColumnVarNameInTable="columnQtyReq" type="xs:int" />
<xs:element name="QtyCur" msprop:Generator_ColumnPropNameInTable="QtyCurColumn" msprop:Generator_ColumnPropNameInRow="QtyCur" msprop:Generator_UserColumnName="QtyCur" msprop:Generator_ColumnVarNameInTable="columnQtyCur" type="xs:int" />
<xs:element name="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_UserColumnName="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_UserColumnName="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OnCartDate" msprop:Generator_ColumnVarNameInTable="columnOnCartDate" msprop:Generator_ColumnPropNameInRow="OnCartDate" msprop:Generator_ColumnPropNameInTable="OnCartDateColumn" msprop:Generator_UserColumnName="OnCartDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="OnCartDate" msprop:Generator_ColumnPropNameInTable="OnCartDateColumn" msprop:Generator_ColumnPropNameInRow="OnCartDate" msprop:Generator_UserColumnName="OnCartDate" msprop:Generator_ColumnVarNameInTable="columnOnCartDate" type="xs:dateTime" minOccurs="0" />
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
@@ -895,55 +961,55 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_IRK_Sum" msprop:Generator_TableClassName="stp_prt_IRK_SumDataTable" msprop:Generator_TableVarName="tablestp_prt_IRK_Sum" msprop:Generator_RowChangedName="stp_prt_IRK_SumRowChanged" msprop:Generator_TablePropName="stp_prt_IRK_Sum" msprop:Generator_RowDeletingName="stp_prt_IRK_SumRowDeleting" msprop:Generator_RowChangingName="stp_prt_IRK_SumRowChanging" msprop:Generator_RowEvHandlerName="stp_prt_IRK_SumRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_IRK_SumRowDeleted" msprop:Generator_RowClassName="stp_prt_IRK_SumRow" msprop:Generator_UserTableName="stp_prt_IRK_Sum" msprop:Generator_RowEvArgName="stp_prt_IRK_SumRowChangeEvent">
<xs:element name="stp_prt_IRK_Sum" msprop:Generator_RowEvHandlerName="stp_prt_IRK_SumRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_IRK_SumRowDeleted" msprop:Generator_RowDeletingName="stp_prt_IRK_SumRowDeleting" msprop:Generator_RowEvArgName="stp_prt_IRK_SumRowChangeEvent" msprop:Generator_TablePropName="stp_prt_IRK_Sum" msprop:Generator_RowChangedName="stp_prt_IRK_SumRowChanged" msprop:Generator_UserTableName="stp_prt_IRK_Sum" msprop:Generator_RowChangingName="stp_prt_IRK_SumRowChanging" msprop:Generator_RowClassName="stp_prt_IRK_SumRow" msprop:Generator_TableClassName="stp_prt_IRK_SumDataTable" msprop:Generator_TableVarName="tablestp_prt_IRK_Sum">
<xs:complexType>
<xs:sequence>
<xs:element name="OrderExtCode" msprop:Generator_ColumnVarNameInTable="columnOrderExtCode" msprop:Generator_ColumnPropNameInRow="OrderExtCode" msprop:Generator_ColumnPropNameInTable="OrderExtCodeColumn" msprop:Generator_UserColumnName="OrderExtCode">
<xs:element name="OrderExtCode" msprop:Generator_ColumnPropNameInTable="OrderExtCodeColumn" msprop:Generator_ColumnPropNameInRow="OrderExtCode" msprop:Generator_UserColumnName="OrderExtCode" msprop:Generator_ColumnVarNameInTable="columnOrderExtCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="CartDtmx" msprop:Generator_ColumnVarNameInTable="columnCartDtmx" msprop:Generator_ColumnPropNameInRow="CartDtmx" msprop:Generator_ColumnPropNameInTable="CartDtmxColumn" msprop:Generator_UserColumnName="CartDtmx" minOccurs="0">
<xs:element name="CartDtmx" msprop:Generator_ColumnPropNameInTable="CartDtmxColumn" msprop:Generator_ColumnPropNameInRow="CartDtmx" msprop:Generator_UserColumnName="CartDtmx" msprop:Generator_ColumnVarNameInTable="columnCartDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemExtCode" msprop:Generator_ColumnVarNameInTable="columnItemExtCode" msprop:Generator_ColumnPropNameInRow="ItemExtCode" msprop:Generator_ColumnPropNameInTable="ItemExtCodeColumn" msprop:Generator_UserColumnName="ItemExtCode">
<xs:element name="ItemExtCode" msprop:Generator_ColumnPropNameInTable="ItemExtCodeColumn" msprop:Generator_ColumnPropNameInRow="ItemExtCode" msprop:Generator_UserColumnName="ItemExtCode" msprop:Generator_ColumnVarNameInTable="columnItemExtCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemDesc" msprop:Generator_ColumnVarNameInTable="columnItemDesc" msprop:Generator_ColumnPropNameInRow="ItemDesc" msprop:Generator_ColumnPropNameInTable="ItemDescColumn" msprop:Generator_UserColumnName="ItemDesc">
<xs:element name="ItemDesc" msprop:Generator_ColumnPropNameInTable="ItemDescColumn" msprop:Generator_ColumnPropNameInRow="ItemDesc" msprop:Generator_UserColumnName="ItemDesc" msprop:Generator_ColumnVarNameInTable="columnItemDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemNote" msprop:Generator_ColumnVarNameInTable="columnItemNote" msprop:Generator_ColumnPropNameInRow="ItemNote" msprop:Generator_ColumnPropNameInTable="ItemNoteColumn" msprop:Generator_UserColumnName="ItemNote">
<xs:element name="ItemNote" msprop:Generator_ColumnPropNameInTable="ItemNoteColumn" msprop:Generator_ColumnPropNameInRow="ItemNote" msprop:Generator_UserColumnName="ItemNote" msprop:Generator_ColumnVarNameInTable="columnItemNote">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="TotReq" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTotReq" msprop:Generator_ColumnPropNameInRow="TotReq" msprop:Generator_ColumnPropNameInTable="TotReqColumn" msprop:Generator_UserColumnName="TotReq" type="xs:int" minOccurs="0" />
<xs:element name="TotCur" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnTotCur" msprop:Generator_ColumnPropNameInRow="TotCur" msprop:Generator_ColumnPropNameInTable="TotCurColumn" msprop:Generator_UserColumnName="TotCur" type="xs:int" minOccurs="0" />
<xs:element name="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_UserColumnName="MatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_UserColumnName="MatDesc">
<xs:element name="TotReq" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="TotReqColumn" msprop:Generator_ColumnPropNameInRow="TotReq" msprop:Generator_UserColumnName="TotReq" msprop:Generator_ColumnVarNameInTable="columnTotReq" type="xs:int" minOccurs="0" />
<xs:element name="TotCur" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="TotCurColumn" msprop:Generator_ColumnPropNameInRow="TotCur" msprop:Generator_UserColumnName="TotCur" msprop:Generator_ColumnVarNameInTable="columnTotCur" type="xs:int" minOccurs="0" />
<xs:element name="MatExtCode" msprop:Generator_ColumnPropNameInTable="MatExtCodeColumn" msprop:Generator_ColumnPropNameInRow="MatExtCode" msprop:Generator_UserColumnName="MatExtCode" msprop:Generator_ColumnVarNameInTable="columnMatExtCode" type="xs:int" />
<xs:element name="MatDesc" msprop:Generator_ColumnPropNameInTable="MatDescColumn" msprop:Generator_ColumnPropNameInRow="MatDesc" msprop:Generator_UserColumnName="MatDesc" msprop:Generator_ColumnVarNameInTable="columnMatDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_UserColumnName="QRCodeBaseUrl" minOccurs="0">
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
@@ -953,6 +1019,119 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_Remnant" msprop:Generator_RowEvHandlerName="stp_prt_RemnantRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_RemnantRowDeleted" msprop:Generator_RowDeletingName="stp_prt_RemnantRowDeleting" msprop:Generator_RowEvArgName="stp_prt_RemnantRowChangeEvent" msprop:Generator_TablePropName="stp_prt_Remnant" msprop:Generator_RowChangedName="stp_prt_RemnantRowChanged" msprop:Generator_UserTableName="stp_prt_Remnant" msprop:Generator_RowChangingName="stp_prt_RemnantRowChanging" msprop:Generator_RowClassName="stp_prt_RemnantRow" msprop:Generator_TableClassName="stp_prt_RemnantDataTable" msprop:Generator_TableVarName="tablestp_prt_Remnant">
<xs:complexType>
<xs:sequence>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="CodRemnant" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="CodRemnantColumn" msprop:Generator_ColumnPropNameInRow="CodRemnant" msprop:Generator_UserColumnName="CodRemnant" msprop:Generator_ColumnVarNameInTable="columnCodRemnant" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="522" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DescRemnant01" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="DescRemnant01Column" msprop:Generator_ColumnPropNameInRow="DescRemnant01" msprop:Generator_UserColumnName="DescRemnant01" msprop:Generator_ColumnVarNameInTable="columnDescRemnant01" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="551" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DescRemnant02" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="DescRemnant02Column" msprop:Generator_ColumnPropNameInRow="DescRemnant02" msprop:Generator_UserColumnName="DescRemnant02" msprop:Generator_ColumnVarNameInTable="columnDescRemnant02" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="152" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="stp_prt_SpecialPart" msprop:Generator_RowEvHandlerName="stp_prt_SpecialPartRowChangeEventHandler" msprop:Generator_RowDeletedName="stp_prt_SpecialPartRowDeleted" msprop:Generator_RowDeletingName="stp_prt_SpecialPartRowDeleting" msprop:Generator_RowEvArgName="stp_prt_SpecialPartRowChangeEvent" msprop:Generator_TablePropName="stp_prt_SpecialPart" msprop:Generator_RowChangedName="stp_prt_SpecialPartRowChanged" msprop:Generator_UserTableName="stp_prt_SpecialPart" msprop:Generator_RowChangingName="stp_prt_SpecialPartRowChanging" msprop:Generator_RowClassName="stp_prt_SpecialPartRow" msprop:Generator_TableClassName="stp_prt_SpecialPartDataTable" msprop:Generator_TableVarName="tablestp_prt_SpecialPart">
<xs:complexType>
<xs:sequence>
<xs:element name="DocID" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="DocIDColumn" msprop:Generator_ColumnPropNameInRow="DocID" msprop:Generator_UserColumnName="DocID" msprop:Generator_ColumnVarNameInTable="columnDocID" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="5" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DocDtmx" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="DocDtmxColumn" msprop:Generator_ColumnPropNameInRow="DocDtmx" msprop:Generator_UserColumnName="DocDtmx" msprop:Generator_ColumnVarNameInTable="columnDocDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="1340" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemExtCode" msprop:Generator_ColumnPropNameInTable="ItemExtCodeColumn" msprop:Generator_ColumnPropNameInRow="ItemExtCode" msprop:Generator_UserColumnName="ItemExtCode" msprop:Generator_ColumnVarNameInTable="columnItemExtCode">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="250" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ItemDesc" msprop:Generator_ColumnPropNameInTable="ItemDescColumn" msprop:Generator_ColumnPropNameInRow="ItemDesc" msprop:Generator_UserColumnName="ItemDesc" msprop:Generator_ColumnVarNameInTable="columnItemDesc">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="500" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DueDate" msprop:Generator_ColumnPropNameInTable="DueDateColumn" msprop:Generator_ColumnPropNameInRow="DueDate" msprop:Generator_UserColumnName="DueDate" msprop:Generator_ColumnVarNameInTable="columnDueDate" type="xs:dateTime" />
<xs:element name="TotItem" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="TotItemColumn" msprop:Generator_ColumnPropNameInRow="TotItem" msprop:Generator_UserColumnName="TotItem" msprop:Generator_ColumnVarNameInTable="columnTotItem" type="xs:int" minOccurs="0" />
<xs:element name="PathImageFull" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="PathImageFullColumn" msprop:Generator_ColumnPropNameInRow="PathImageFull" msprop:Generator_UserColumnName="PathImageFull" msprop:Generator_ColumnVarNameInTable="columnPathImageFull" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="4000" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="QRCodeBaseUrl" msdata:ReadOnly="true" msprop:Generator_ColumnPropNameInTable="QRCodeBaseUrlColumn" msprop:Generator_ColumnPropNameInRow="QRCodeBaseUrl" msprop:Generator_UserColumnName="QRCodeBaseUrl" msprop:Generator_ColumnVarNameInTable="columnQRCodeBaseUrl" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="400" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="OrdParent" msprop:Generator_UserColumnName="OrdParent" msprop:Generator_ColumnPropNameInTable="OrdParentColumn" msprop:Generator_ColumnPropNameInRow="OrdParent" msprop:Generator_ColumnVarNameInTable="columnOrdParent">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ReqDate" msprop:Generator_UserColumnName="ReqDate" msprop:Generator_ColumnPropNameInTable="ReqDateColumn" msprop:Generator_ColumnPropNameInRow="ReqDate" msprop:Generator_ColumnVarNameInTable="columnReqDate" type="xs:dateTime" />
<xs:element name="CartDtmx" msprop:Generator_ColumnPropNameInRow="CartDtmx" msprop:Generator_ColumnPropNameInTable="CartDtmxColumn" msprop:Generator_ColumnVarNameInTable="columnCartDtmx" msprop:Generator_UserColumnName="CartDtmx" minOccurs="0">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="10" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="ModelCod" msprop:Generator_ColumnPropNameInRow="ModelCod" msprop:Generator_ColumnPropNameInTable="ModelCodColumn" msprop:Generator_ColumnVarNameInTable="columnModelCod" msprop:Generator_UserColumnName="ModelCod">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element name="DestPlant" msprop:Generator_ColumnPropNameInRow="DestPlant" msprop:Generator_ColumnPropNameInTable="DestPlantColumn" msprop:Generator_ColumnVarNameInTable="columnDestPlant" msprop:Generator_UserColumnName="DestPlant">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:maxLength value="50" />
</xs:restriction>
</xs:simpleType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="Constraint1" msdata:PrimaryKey="true">
@@ -979,5 +1158,9 @@ SELECT codPostazione, stampante, note FROM ElencoPostazioni WHERE (codPostazione
<xs:selector xpath=".//mstns:stp_prt_OtherPart" />
<xs:field xpath="mstns:OtherItemID" />
</xs:unique>
<xs:unique name="stp_prt_SpecialPart_Constraint1" msdata:ConstraintName="Constraint1" msdata:PrimaryKey="true">
<xs:selector xpath=".//mstns:stp_prt_SpecialPart" />
<xs:field xpath="mstns:DocID" />
</xs:unique>
</xs:element>
</xs:schema>
+13 -11
View File
@@ -4,18 +4,20 @@
Changes to this file may cause incorrect behavior and will be lost if
the code is regenerated.
</autogenerated>-->
<DiagramLayout xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="65" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<DiagramLayout xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ex:showrelationlabel="False" ViewPortX="-10" ViewPortY="-6" xmlns:ex="urn:schemas-microsoft-com:xml-msdatasource-layout-extended" xmlns="urn:schemas-microsoft-com:xml-msdatasource-layout">
<Shapes>
<Shape ID="DesignTable:stp_prt_BunkList" ZOrder="5" X="279" Y="642" Height="229" Width="249" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:PrintJobQueue" ZOrder="10" X="432" Y="94" Height="400" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:ElencoPostazioni" ZOrder="9" X="861" Y="123" Height="153" Width="242" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="83" />
<Shape ID="DesignTable:stp_prt_Bin" ZOrder="4" X="826" Y="646" Height="305" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:stp_prt_Part" ZOrder="8" X="49" Y="75" Height="155" Width="245" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="104" />
<Shape ID="DesignTable:stp_prt_Cart" ZOrder="7" X="552" Y="645" Height="248" Width="243" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="197" />
<Shape ID="DesignTable:stp_prt_BunkGroup" ZOrder="6" X="23" Y="641" Height="267" Width="247" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="216" />
<Shape ID="DesignTable:stp_prt_OtherPart" ZOrder="3" X="83" Y="334" Height="210" Width="275" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:stp_prt_IRK" ZOrder="2" X="280" Y="903" Height="305" Width="243" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:stp_prt_IRK_Sum" ZOrder="1" X="551" Y="918" Height="267" Width="243" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="216" />
<Shape ID="DesignTable:stp_prt_BunkList" ZOrder="7" X="279" Y="642" Height="229" Width="249" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:PrintJobQueue" ZOrder="12" X="432" Y="94" Height="400" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="178" />
<Shape ID="DesignTable:ElencoPostazioni" ZOrder="11" X="861" Y="123" Height="153" Width="242" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="83" />
<Shape ID="DesignTable:stp_prt_Bin" ZOrder="1" X="827" Y="534" Height="326" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="275" />
<Shape ID="DesignTable:stp_prt_Part" ZOrder="10" X="49" Y="75" Height="155" Width="245" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="104" />
<Shape ID="DesignTable:stp_prt_Cart" ZOrder="9" X="552" Y="645" Height="286" Width="243" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="235" />
<Shape ID="DesignTable:stp_prt_BunkGroup" ZOrder="8" X="23" Y="641" Height="267" Width="247" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="216" />
<Shape ID="DesignTable:stp_prt_OtherPart" ZOrder="6" X="83" Y="334" Height="210" Width="275" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="159" />
<Shape ID="DesignTable:stp_prt_IRK" ZOrder="5" X="280" Y="903" Height="305" Width="243" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="254" />
<Shape ID="DesignTable:stp_prt_IRK_Sum" ZOrder="4" X="551" Y="918" Height="267" Width="243" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="216" />
<Shape ID="DesignTable:stp_prt_Remnant" ZOrder="3" X="869" Y="312" Height="153" Width="245" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="102" />
<Shape ID="DesignTable:stp_prt_SpecialPart" ZOrder="2" X="828" Y="876" Height="324" Width="300" AdapterExpanded="true" DataTableExpanded="true" OldAdapterHeight="0" OldDataTableHeight="0" SplitterPosition="273" />
</Shapes>
<Connectors />
</DiagramLayout>
+24
View File
@@ -0,0 +1,24 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AppData.DTO
{
/// <summary>
/// Statistiche in termini di Yeld e quantità produzioni relative ad un singolo batch
/// </summary>
public class BatchYeldStatDTO
{
/// <summary>
/// Statistiche YELD aggregate per Material
/// </summary>
public List<MaterialYeldStatsDTO> ListByMaterial { get; set; } = new List<MaterialYeldStatsDTO>();
/// <summary>
/// Statistiche YELD aggregate per Sheet
/// </summary>
public List<SheetYeldStatDTO> ListBySheet { get; set; } = new List<SheetYeldStatDTO>();
}
}
+25
View File
@@ -0,0 +1,25 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AppData.DTO
{
/// <summary>
/// Statistiche resa materiali
/// </summary>
public class MaterialYeldStatsDTO
{
public int MatId { get; set; } = 0;
public int MatCode { get; set; } = 0;
public string MatDescript { get; set; } = "";
public int TotSheets { get; set; } = 0;
public int TotParts { get; set; } = 0;
public double YeldMin { get; set; } = 0;
public double YeldAvg { get; set; } = 0;
public double YeldMax { get; set; } = 0;
}
}
+22
View File
@@ -0,0 +1,22 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AppData.DTO
{
public class SheetYeldStatDTO
{
public int SheetId { get; set; } = 0;
public int MatId { get; set; } = 0;
public int MatCode { get; set; } = 0;
public string MatDescript { get; set; } = "";
public int BunkIdx { get; set; } = 0;
public int SheetIdx { get; set; } = 0;
public int NumParts { get; set; } = 0;
public double Yeld { get; set; } = 0;
}
}
+555 -124
View File
@@ -1,20 +1,30 @@
using NKC_SDK;
using AppData.DTO;
using Newtonsoft.Json;
using NKC_SDK;
using SteamWare;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
namespace AppData
{
public class DataLayer
{
#region oggetti public
#region Public Fields
public DS_AppTableAdapters.BatchListTableAdapter taBL;
public DS_AppTableAdapters.BinsTableAdapter taBN;
public DS_AppTableAdapters.BinListTableAdapter taBNLS;
public DS_AppTableAdapters.BatchStatsTableAdapter taBStats;
public DS_AppTableAdapters.CartsTableAdapter taCL;
public DS_AppTableAdapters.CartOnKitTableAdapter taCOK;
public DS_AppTableAdapters.CountersTableAdapter taCount;
public DS_AppTableAdapters.CartsTableAdapter taCR;
public DS_AppTableAdapters.ProductionStatsDayTableAdapter taDayStats;
public DS_AppTableAdapters.ErrorsLogTableAdapter taEL;
public DS_ReportTableAdapters.ElencoPostazioniTableAdapter taElPos;
public DS_AppTableAdapters.FileValidationTableAdapter taFV;
public DS_AppTableAdapters.ItemListTableAdapter taIL;
public DS_AppTableAdapters.ImportLogTableAdapter taImpLog;
public DS_AppTableAdapters.ItemSearchDetailTableAdapter taISD;
@@ -23,131 +33,57 @@ namespace AppData
public DS_AppTableAdapters.MaterialsTableAdapter taMat;
public DS_AppTableAdapters.NestingTableAdapter taNest;
public DS_AppTableAdapters.OfflineOrderListTableAdapter taOffOL;
public DS_AppTableAdapters.OffOrd2ItemTableAdapter taOO2I;
public DS_AppTableAdapters.OKIBTableAdapter taOKIB;
public DS_AppTableAdapters.OKIB_SumTableAdapter taOKIB_Sum;
public DS_AppTableAdapters.OKOITableAdapter taOKOI;
public DS_AppTableAdapters.OKOI_sumTableAdapter taOKOI_Sum;
public DS_AppTableAdapters.OrderListTableAdapter taOL;
public DS_AppTableAdapters.OrderListTreeTableAdapter taOLT;
public DS_AppTableAdapters.OffOrd2ItemTableAdapter taOO2I;
public DS_AppTableAdapters.OtherItemTableAdapter taOtItem;
public DS_ReportTableAdapters.PrintJobQueueTableAdapter taPJQ;
public DS_AppTableAdapters.PackListTableAdapter taPL;
public DS_AppTableAdapters.PlacesTableAdapter taPlac;
public DS_AppTableAdapters.PlantListTableAdapter taPlant;
public DS_AppTableAdapters.PackCheckTableAdapter taPLC;
public DS_AppTableAdapters.PackListDetTableAdapter taPLD;
public DS_AppTableAdapters.PackLogTableAdapter taPLog;
public DS_AppTableAdapters.PartValidParetoTableAdapter taPVP;
public DS_AppTableAdapters.RemnantsTableAdapter taRem;
public DS_AppTableAdapters.StackListTableAdapter taSTL;
public DS_AppTableAdapters.SheetListTableAdapter taSHL;
// reports
public DS_ReportTableAdapters.ElencoPostazioniTableAdapter taElPos;
public DS_ReportTableAdapters.PrintJobQueueTableAdapter taPJQ;
public DS_ReportTableAdapters.stp_prt_BinTableAdapter taRepBin;
public DS_ReportTableAdapters.stp_prt_BunkGroupTableAdapter taRepBunkGroup;
public DS_ReportTableAdapters.stp_prt_BunkListTableAdapter taRepBunkList;
public DS_ReportTableAdapters.stp_prt_CartTableAdapter taRepCart;
public DS_ReportTableAdapters.stp_prt_PartTableAdapter taRepPart;
public DS_ReportTableAdapters.stp_prt_OtherPartTableAdapter taRepOtherPart;
public DS_ReportTableAdapters.stp_prt_IRKTableAdapter taRepIRK;
public DS_ReportTableAdapters.stp_prt_IRK_SumTableAdapter taRepIRKSum;
public DS_ReportTableAdapters.stp_prt_OtherPartTableAdapter taRepOtherPart;
public DS_ReportTableAdapters.stp_prt_PartTableAdapter taRepPart;
public DS_ReportTableAdapters.stp_prt_SpecialPartTableAdapter taRepSpecPart;
public DS_AppTableAdapters.SheetListTableAdapter taSHL;
public DS_AppTableAdapters.SheetStatsTableAdapter taShStats;
public DS_AppTableAdapters.SheetsPreviewTableAdapter taSP;
public DS_AppTableAdapters.SpecialPartsTableAdapter taSpecialPart;
public DS_AppTableAdapters.StatusDecodeTableAdapter taStatDec;
public DS_AppTableAdapters.StatusLogTableAdapter taStatLog;
public DS_AppTableAdapters.StackListTableAdapter taSTL;
public DS_AppTableAdapters.UpdManTableAdapter taUpdMan;
public DS_AppTableAdapters.UnloadStatsTableAdapter taUStat;
#endregion Public Fields
#region Public Constructors
public DataLayer()
{
// inizializzaizone classe
initTA();
setupConnString();
cacheDataTTL = memLayer.ML.CRI("cacheDataTTL");
}
private void setupConnString()
{
string connString = memLayer.ML.CRS("NKC_WFConnectionString");
taBL.Connection.ConnectionString = connString;
taBN.Connection.ConnectionString = connString;
taBNLS.Connection.ConnectionString = connString;
taCOK.Connection.ConnectionString = connString;
taCount.Connection.ConnectionString = connString;
taCR.Connection.ConnectionString = connString;
taEL.Connection.ConnectionString = connString;
taIL.Connection.ConnectionString = connString;
taImpLog.Connection.ConnectionString = connString;
taISD.Connection.ConnectionString = connString;
taIV.Connection.ConnectionString = connString;
taKL.Connection.ConnectionString = connString;
taMat.Connection.ConnectionString = connString;
taNest.Connection.ConnectionString = connString;
taOffOL.Connection.ConnectionString = connString;
taOO2I.Connection.ConnectionString = connString;
taOKIB.Connection.ConnectionString = connString;
taOKIB_Sum.Connection.ConnectionString = connString;
taOKOI.Connection.ConnectionString = connString;
taOKOI_Sum.Connection.ConnectionString = connString;
taOL.Connection.ConnectionString = connString;
taOtItem.Connection.ConnectionString = connString;
taPL.Connection.ConnectionString = connString;
taPLC.Connection.ConnectionString = connString;
taPLD.Connection.ConnectionString = connString;
taPLog.Connection.ConnectionString = connString;
taPVP.Connection.ConnectionString = connString;
taRem.Connection.ConnectionString = connString;
taSTL.Connection.ConnectionString = connString;
taSHL.Connection.ConnectionString = connString;
// reports
taElPos.Connection.ConnectionString = connString;
taPJQ.Connection.ConnectionString = connString;
taRepBin.Connection.ConnectionString = connString;
taRepBunkGroup.Connection.ConnectionString = connString;
taRepBunkList.Connection.ConnectionString = connString;
taRepCart.Connection.ConnectionString = connString;
taRepPart.Connection.ConnectionString = connString;
taRepOtherPart.Connection.ConnectionString = connString;
taRepIRK.Connection.ConnectionString = connString;
taRepIRKSum.Connection.ConnectionString = connString;
}
private void initTA()
{
taBL = new DS_AppTableAdapters.BatchListTableAdapter();
taBN = new DS_AppTableAdapters.BinsTableAdapter();
taBNLS = new DS_AppTableAdapters.BinListTableAdapter();
taCOK= new DS_AppTableAdapters.CartOnKitTableAdapter ();
taCount = new DS_AppTableAdapters.CountersTableAdapter();
taCR = new DS_AppTableAdapters.CartsTableAdapter();
taEL = new DS_AppTableAdapters.ErrorsLogTableAdapter();
taIL = new DS_AppTableAdapters.ItemListTableAdapter();
taImpLog = new DS_AppTableAdapters.ImportLogTableAdapter();
taISD = new DS_AppTableAdapters.ItemSearchDetailTableAdapter();
taIV = new DS_AppTableAdapters.ItemValidationTableAdapter();
taKL = new DS_AppTableAdapters.KitListTableAdapter();
taMat = new DS_AppTableAdapters.MaterialsTableAdapter();
taNest = new DS_AppTableAdapters.NestingTableAdapter();
taOffOL = new DS_AppTableAdapters.OfflineOrderListTableAdapter();
taOO2I = new DS_AppTableAdapters.OffOrd2ItemTableAdapter();
taOKIB = new DS_AppTableAdapters.OKIBTableAdapter();
taOKIB_Sum = new DS_AppTableAdapters.OKIB_SumTableAdapter();
taOKOI = new DS_AppTableAdapters.OKOITableAdapter();
taOKOI_Sum = new DS_AppTableAdapters.OKOI_sumTableAdapter();
taOL = new DS_AppTableAdapters.OrderListTableAdapter();
taOtItem = new DS_AppTableAdapters.OtherItemTableAdapter();
taPL = new DS_AppTableAdapters.PackListTableAdapter();
taPLC = new DS_AppTableAdapters.PackCheckTableAdapter();
taPLD = new DS_AppTableAdapters.PackListDetTableAdapter();
taPLog = new DS_AppTableAdapters.PackLogTableAdapter();
taPVP = new DS_AppTableAdapters.PartValidParetoTableAdapter();
taRem = new DS_AppTableAdapters.RemnantsTableAdapter();
taSTL = new DS_AppTableAdapters.StackListTableAdapter();
taSHL = new DS_AppTableAdapters.SheetListTableAdapter();
// reports
taElPos = new DS_ReportTableAdapters.ElencoPostazioniTableAdapter();
taPJQ = new DS_ReportTableAdapters.PrintJobQueueTableAdapter();
taRepBin = new DS_ReportTableAdapters.stp_prt_BinTableAdapter();
taRepBunkGroup = new DS_ReportTableAdapters.stp_prt_BunkGroupTableAdapter();
taRepBunkList = new DS_ReportTableAdapters.stp_prt_BunkListTableAdapter();
taRepCart = new DS_ReportTableAdapters.stp_prt_CartTableAdapter();
taRepPart = new DS_ReportTableAdapters.stp_prt_PartTableAdapter();
taRepOtherPart = new DS_ReportTableAdapters.stp_prt_OtherPartTableAdapter();
taRepIRK = new DS_ReportTableAdapters.stp_prt_IRKTableAdapter();
taRepIRKSum = new DS_ReportTableAdapters.stp_prt_IRK_SumTableAdapter();
}
#endregion Public Constructors
#endregion
#region Public Properties
public string CodSoggCurrUser
{
@@ -156,6 +92,7 @@ namespace AppData
return "O000123456";
}
}
public string CognNomeCurrUser
{
get
@@ -163,6 +100,11 @@ namespace AppData
return "Mario Rossi";
}
}
#endregion Public Properties
#region Public Methods
/// <summary>
/// Main BCode decoding function
/// </summary>
@@ -253,9 +195,376 @@ namespace AppData
answ.codeInt = codeInt;
answ.description = $"{ComLib.traduci("BinPaint")}: {answ.code}";
}
else if (bcValue.StartsWith("MSEL"))
{
answ.codeType = codeType.MachSelection;
answ.code = bcValue.Replace("MSEL", "");
int codeInt = 0;
answ.codeInt = codeInt;
answ.description = $"{ComLib.traduci("BinPaint")}: {answ.code}";
}
// gestione specialParts
else
{
var tabSpecParts = getSpecialPart();
foreach (var item in tabSpecParts)
{
if (bcValue.StartsWith(item.CartCode))
{
answ.codeType = codeType.SpecialPart;
// tengo tutto perché contiene un array di valori...
answ.code = bcValue;
answ.codeInt = 0;
string[] decodedVals = bcValue.Split(';');
string code = "cod";
if (decodedVals.Length > 5)
{
code = decodedVals[3];
}
// scrivo part + descrizione
answ.description = $"{ComLib.traduci("SpecialPart")}: {code}";
}
}
}
return answ;
}
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
public DS_App.BinsDataTable getBinByBatch(int BatchID)
{
DS_App.BinsDataTable answ = new DS_App.BinsDataTable();
// controllo cache
bool trovato = false;
string redKey = memLayer.ML.redHash($"BinByBatch:{BatchID}");
string rawData = "";
rawData = memLayer.ML.getRSV(redKey);
if (!string.IsNullOrEmpty(rawData))
{
try
{
answ = JsonConvert.DeserializeObject<DS_App.BinsDataTable>(rawData);
trovato = true;
}
catch
{ }
}
if (!trovato)
{
// se non trovo leggo
answ = taBN.getByBatch(BatchID);
rawData = JsonConvert.SerializeObject(answ);
// salvo in redis
memLayer.ML.setRSV(redKey, rawData, cacheDataTTL);
}
//restituisco valore..
return answ;
}
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
public DS_App.CartsDataTable getCartByBatch(int BatchID)
{
DS_App.CartsDataTable answ = new DS_App.CartsDataTable();
// controllo cache
bool trovato = false;
string redKey = memLayer.ML.redHash($"CartByBatch:{BatchID}");
string rawData = "";
rawData = memLayer.ML.getRSV(redKey);
if (!string.IsNullOrEmpty(rawData))
{
try
{
answ = JsonConvert.DeserializeObject<DS_App.CartsDataTable>(rawData);
trovato = true;
}
catch
{ }
}
if (!trovato)
{
// se non trovo leggo
answ = taCL.getByBatch(BatchID);
rawData = JsonConvert.SerializeObject(answ);
// salvo in redis
memLayer.ML.setRSV(redKey, rawData, cacheDataTTL);
}
return answ;
}
/// <summary>
/// Restituisce tabella dati CKD dato CartID
/// </summary>
/// <param name="CartID"></param>
/// <returns></returns>
public DS_App.CartOnKitDataTable getCKD(int CartID)
{
DS_App.CartOnKitDataTable answ = new DS_App.CartOnKitDataTable();
// controllo cache
bool trovato = false;
string redKey = memLayer.ML.redHash($"CKDByCartId:{CartID}");
string rawData = "";
rawData = memLayer.ML.getRSV(redKey);
if (!string.IsNullOrEmpty(rawData))
{
try
{
answ = JsonConvert.DeserializeObject<DS_App.CartOnKitDataTable>(rawData);
trovato = true;
}
catch
{ }
}
if (!trovato)
{
// se non trovo leggo
answ = taCOK.getByKey(CartID);
rawData = JsonConvert.SerializeObject(answ);
// salvo in redis
memLayer.ML.setRSV(redKey, rawData, cacheDataTTL);
}
//restituisco valore..
return answ;
}
/// <summary>
/// Recupera printer dato codPostazione
/// </summary>
/// <param name="codPost"></param>
/// <returns></returns>
public string getPrinter(string codPost)
{
string printer = "";
// cerco su redis...
string redKey = memLayer.ML.redHash($"PrinterByPost:{codPost}");
printer = memLayer.ML.getRSV(redKey);
// ...altrimenti recupero da DB...
if (string.IsNullOrEmpty(printer))
{
try
{
DataLayer DLMan = new DataLayer();
var tabPost = DLMan.taElPos.getByKey(codPost);
if (tabPost.Count == 1)
{
printer = tabPost[0].stampante;
}
else
{
printer = "queueND";
}
// salvo in redis x 10 min
memLayer.ML.setRSV(redKey, printer, 10 * 60);
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione in getPrinter | codPost: {codPost}{Environment.NewLine}{exc}");
}
}
return printer;
}
/// <summary>
/// Restituisce tabella dati SpecialPart (con cache lungo periodo)
/// </summary>
/// <returns></returns>
public DS_App.SpecialPartsDataTable getSpecialPart()
{
DS_App.SpecialPartsDataTable answ = new DS_App.SpecialPartsDataTable();
// controllo cache
bool trovato = false;
string redKey = memLayer.ML.redHash($"SpecialPartsTable");
string rawData = "";
rawData = memLayer.ML.getRSV(redKey);
if (!string.IsNullOrEmpty(rawData))
{
try
{
answ = JsonConvert.DeserializeObject<DS_App.SpecialPartsDataTable>(rawData);
trovato = true;
}
catch
{ }
}
if (!trovato)
{
// se non trovo leggo
answ = taSpecialPart.GetData();
rawData = JsonConvert.SerializeObject(answ);
// salvo in redis x periodo LUNGO
memLayer.ML.setRSV(redKey, rawData, cacheDataTTL * 60);
}
//restituisco valore..
return answ;
}
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
public DS_App.UnloadStatsDataTable getUnloadStatsByBatch(int BatchID, int StatLevel)
{
DS_App.UnloadStatsDataTable answ = new DS_App.UnloadStatsDataTable();
// controllo cache
bool trovato = false;
string redKey = memLayer.ML.redHash($"UnloadStatsByBatch:{BatchID}:{StatLevel}");
string rawData = "";
rawData = memLayer.ML.getRSV(redKey);
if (!string.IsNullOrEmpty(rawData))
{
try
{
answ = JsonConvert.DeserializeObject<DS_App.UnloadStatsDataTable>(rawData);
trovato = true;
}
catch
{ }
}
if (!trovato)
{
// se non trovo leggo
answ = taUStat.GetData(BatchID, StatLevel);
rawData = JsonConvert.SerializeObject(answ);
// salvo in redis
memLayer.ML.setRSV(redKey, rawData, cacheDataTTL);
}
//restituisco valore..
return answ;
}
[System.ComponentModel.DataObjectMethodAttribute(System.ComponentModel.DataObjectMethodType.Select, false)]
public BatchYeldStatDTO getYeldStatsByBatch(int BatchID)
{
BatchYeldStatDTO answ = new BatchYeldStatDTO();
// controllo cache
bool trovato = false;
string redKey = memLayer.ML.redHash($"YeldStatByBatch:{BatchID}");
string rawData = "";
rawData = memLayer.ML.getRSV(redKey);
if (!string.IsNullOrEmpty(rawData) && rawData.Count() > 2)
{
try
{
answ = JsonConvert.DeserializeObject<BatchYeldStatDTO>(rawData);
trovato = true;
}
catch
{ }
}
if (!trovato)
{
// se non trovo leggo
answ = GetYeldStatsFromMongoData(BatchID);
rawData = JsonConvert.SerializeObject(answ);
// salvo in redis con cache lunga (2 volte la minima...)
memLayer.ML.setRSV(redKey, rawData, cacheDataTTL * 2);
}
return answ;
}
/// <summary>
/// Recupera da MongoDB le risposte dal supervisor e calcola statistiche Batch
/// NB. statistiche per singolo Sheet ed aggregate x materiale
/// </summary>
/// <param name="BatchId">ID del Batch di cui recuperare le info</param>
public BatchYeldStatDTO GetYeldStatsFromMongoData(int BatchId)
{
BatchYeldStatDTO answ = new BatchYeldStatDTO();
if (memLayer.ML.CRB("enableMongo"))
{
List<MaterialYeldStatsDTO> ListByMaterialTemp = new List<MaterialYeldStatsDTO>();
List<SheetYeldStatDTO> ListBySheetTemp = new List<SheetYeldStatDTO>();
// cerco da lista salvataggi Nest...
var nestAnsw = ComLib.man.getNestAnsw(BatchId);
// recupero bunk da DB
DataLayer dlMan = new DataLayer();
var bunkList = taSTL.getByBatch(BatchId);
var listSheets = taSHL.getByBatch(BatchId, "ND");
var matList = taMat.GetData();
// elenchi x ricerca duplicati
List<int> partListNest = new List<int>();
List<int> partListNestDupl = new List<int>();
if (nestAnsw != null)
{
double num = 0;
double den = 1;
double currRatio = 0;
try
{
if (nestAnsw.BunkList != null)
{
foreach (var bunk in nestAnsw.BunkList)
{
// procedo SOLO per il bunk corrente...
foreach (var sheet in bunk.SheetList)
{
num = sheet.SurfaceWork > 0 ? sheet.SurfaceWork : 0;
den = sheet.SurfaceTotal > 0 ? sheet.SurfaceTotal : 1;
currRatio = ComLib.ratioProt(num, den);
// recupero sheet dettaglio x materiale ed idx vari...
var rSheet = listSheets
.Where(x => x.SheetIndex == sheet.SheetIndex && x.StackIndex == bunk.BunkIndex)
.FirstOrDefault();
if (rSheet != null)
{
var rMat = matList
.Where(x => x.MatID == rSheet.MatID)
.FirstOrDefault();
var rSStat = ListBySheetTemp
.Where(x => x.SheetIdx == sheet.SheetIndex && x.BunkIdx == bunk.BunkIndex)
.FirstOrDefault();
if (rSStat != null)
{
rSStat.Yeld = currRatio;
rSStat.NumParts = sheet.PartList.Count;
}
else
{
// recupero la riga x indicare il materiale...
rSStat = new SheetYeldStatDTO()
{
SheetId = rSheet.SheetID,
MatId = rSheet.MatID,
MatCode = rMat.MatExtCode,
MatDescript = rMat.MatDesc,
BunkIdx = bunk.BunkIndex,
SheetIdx = sheet.SheetIndex,
NumParts = sheet.PartList.Count,
Yeld = currRatio
};
ListBySheetTemp.Add(rSStat);
}
}
}
}
// ciclo nuovamente per i dati recuperati x aggregare x materiale...
ListByMaterialTemp = ListBySheetTemp
.GroupBy(x => x.MatId)
.Select(x => new MaterialYeldStatsDTO()
{
MatId = x.Key,
MatCode = x.FirstOrDefault().MatCode,
MatDescript = x.FirstOrDefault().MatDescript,
TotParts = x.Sum(p => p.NumParts),
TotSheets = x.Count(),
YeldAvg = x.Average(p => p.Yeld),
YeldMin = x.Min(p => p.Yeld),
YeldMax = x.Max(p => p.Yeld)
}).ToList();
}
}
catch
{ }
// salvo nell'oggetto
answ.ListBySheet = ListBySheetTemp;
answ.ListByMaterial = ListByMaterialTemp;
}
}
return answ;
}
/// <summary>
/// effettua la stampa di un documento
@@ -277,19 +586,30 @@ namespace AppData
memLayer.ML.redFlushKey(ComLib.redQueueCountSet);
if (answ)
{
logger.lg.scriviLog(string.Format(" | {0} | stampato UDC {1} | stampante {2} | tipo {3}", clientIp, keyParam, printer, tipoDoc), tipoLog.INFO);
Log.Instance.Info(string.Format(" | {0} | stampato UDC {1} | stampante {2} | tipo {3}", clientIp, keyParam, printer, tipoDoc), tipoLog.INFO);
}
else
{
logger.lg.scriviLog(string.Format("ERRORE | {0} | stampato UDC {1} | stampante {2} | tipo {3}", clientIp, keyParam, printer, tipoDoc), tipoLog.ERROR);
Log.Instance.Error(string.Format("ERRORE | {0} | stampato UDC {1} | stampante {2} | tipo {3}", clientIp, keyParam, printer, tipoDoc), tipoLog.ERROR);
}
}
else
{
logger.lg.scriviLog(string.Format(" | {0} | Richiesta stampa per DOC tipo {1} | stampante {2} | key {3}", clientIp, tipoDoc, printer, keyParam), tipoLog.ERROR);
Log.Instance.Info(string.Format(" | {0} | Richiesta stampa per DOC tipo {1} | stampante {2} | key {3}", clientIp, tipoDoc, printer, keyParam), tipoLog.ERROR);
}
return answ;
}
#endregion Public Methods
#region Protected Properties
protected int cacheDataTTL { get; set; } = 2;
#endregion Protected Properties
#region Private Methods
/// <summary>
/// verifica esistenza record da tipo doc + chiave...
/// </summary>
@@ -308,6 +628,7 @@ namespace AppData
var tabBinPre = taBN.getByKey(intIdx);
answ = tabBinPre.Count > 0;
break;
case tipoDocumento.docCart:
case tipoDocumento.docCartIRK:
case tipoDocumento.docCartIRKSum:
@@ -315,49 +636,159 @@ namespace AppData
var tabCarts = taCR.getByKey(intIdx);
answ = tabCarts.Count > 0;
break;
case tipoDocumento.docPart:
int.TryParse(keyParam, out intIdx);
var tabPart = taIL.getByKey(intIdx);
answ = tabPart.Count > 0;
break;
case tipoDocumento.docOtherPart:
int.TryParse(keyParam, out intIdx);
var tabOtherPart = taOtItem.getByKey(intIdx);
answ = tabOtherPart.Count > 0;
break;
case tipoDocumento.docStack:
int.TryParse(keyParam, out intIdx);
var tabStack = taSTL.getByKey(intIdx);
answ = tabStack.Count > 0;
break;
case tipoDocumento.docCartSpecialPart:
int.TryParse(keyParam, out intIdx);
var tabSpecPart = taRepSpecPart.GetData(intIdx, "", "");
answ = tabSpecPart.Count > 0;
break;
case tipoDocumento.docND:
break;
default:
break;
}
return answ;
}
/// <summary>
/// Recupera printer dato codPostazione
/// </summary>
/// <param name="codPost"></param>
/// <returns></returns>
public string getPrinter(string codPost)
private void initTA()
{
string printer = "";
// recupero da DB...
try
{
DataLayer DLMan = new DataLayer();
var tabPost = DLMan.taElPos.getByKey(codPost);
if (tabPost.Count == 1)
{
printer = tabPost[0].stampante;
}
}
catch
{ }
return printer;
taBL = new DS_AppTableAdapters.BatchListTableAdapter();
taBN = new DS_AppTableAdapters.BinsTableAdapter();
taBNLS = new DS_AppTableAdapters.BinListTableAdapter();
taBStats = new DS_AppTableAdapters.BatchStatsTableAdapter();
taCL = new DS_AppTableAdapters.CartsTableAdapter();
taCOK = new DS_AppTableAdapters.CartOnKitTableAdapter();
taCount = new DS_AppTableAdapters.CountersTableAdapter();
taCR = new DS_AppTableAdapters.CartsTableAdapter();
taDayStats = new DS_AppTableAdapters.ProductionStatsDayTableAdapter();
taEL = new DS_AppTableAdapters.ErrorsLogTableAdapter();
taFV = new DS_AppTableAdapters.FileValidationTableAdapter();
taIL = new DS_AppTableAdapters.ItemListTableAdapter();
taImpLog = new DS_AppTableAdapters.ImportLogTableAdapter();
taISD = new DS_AppTableAdapters.ItemSearchDetailTableAdapter();
taIV = new DS_AppTableAdapters.ItemValidationTableAdapter();
taKL = new DS_AppTableAdapters.KitListTableAdapter();
taMat = new DS_AppTableAdapters.MaterialsTableAdapter();
taNest = new DS_AppTableAdapters.NestingTableAdapter();
taOffOL = new DS_AppTableAdapters.OfflineOrderListTableAdapter();
taOO2I = new DS_AppTableAdapters.OffOrd2ItemTableAdapter();
taOKIB = new DS_AppTableAdapters.OKIBTableAdapter();
taOKIB_Sum = new DS_AppTableAdapters.OKIB_SumTableAdapter();
taOKOI = new DS_AppTableAdapters.OKOITableAdapter();
taOKOI_Sum = new DS_AppTableAdapters.OKOI_sumTableAdapter();
taOL = new DS_AppTableAdapters.OrderListTableAdapter();
taOLT = new DS_AppTableAdapters.OrderListTreeTableAdapter();
taOtItem = new DS_AppTableAdapters.OtherItemTableAdapter();
taPL = new DS_AppTableAdapters.PackListTableAdapter();
taPlac = new DS_AppTableAdapters.PlacesTableAdapter();
taPlant = new DS_AppTableAdapters.PlantListTableAdapter();
taPLC = new DS_AppTableAdapters.PackCheckTableAdapter();
taPLD = new DS_AppTableAdapters.PackListDetTableAdapter();
taPLog = new DS_AppTableAdapters.PackLogTableAdapter();
taPVP = new DS_AppTableAdapters.PartValidParetoTableAdapter();
taRem = new DS_AppTableAdapters.RemnantsTableAdapter();
taStatDec = new DS_AppTableAdapters.StatusDecodeTableAdapter();
taStatLog = new DS_AppTableAdapters.StatusLogTableAdapter();
taSTL = new DS_AppTableAdapters.StackListTableAdapter();
taSHL = new DS_AppTableAdapters.SheetListTableAdapter();
taSP = new DS_AppTableAdapters.SheetsPreviewTableAdapter();
taSpecialPart = new DS_AppTableAdapters.SpecialPartsTableAdapter();
taElPos = new DS_ReportTableAdapters.ElencoPostazioniTableAdapter();
taPJQ = new DS_ReportTableAdapters.PrintJobQueueTableAdapter();
taRepBin = new DS_ReportTableAdapters.stp_prt_BinTableAdapter();
taRepBunkGroup = new DS_ReportTableAdapters.stp_prt_BunkGroupTableAdapter();
taRepBunkList = new DS_ReportTableAdapters.stp_prt_BunkListTableAdapter();
taRepCart = new DS_ReportTableAdapters.stp_prt_CartTableAdapter();
taRepPart = new DS_ReportTableAdapters.stp_prt_PartTableAdapter();
taRepSpecPart = new DS_ReportTableAdapters.stp_prt_SpecialPartTableAdapter();
taRepOtherPart = new DS_ReportTableAdapters.stp_prt_OtherPartTableAdapter();
taRepIRK = new DS_ReportTableAdapters.stp_prt_IRKTableAdapter();
taRepIRKSum = new DS_ReportTableAdapters.stp_prt_IRK_SumTableAdapter();
taShStats = new DS_AppTableAdapters.SheetStatsTableAdapter();
taUpdMan = new DS_AppTableAdapters.UpdManTableAdapter();
taUStat = new DS_AppTableAdapters.UnloadStatsTableAdapter();
}
private void setupConnString()
{
string connString = memLayer.ML.confReadString("NKC_WFConnectionString");
taBL.Connection.ConnectionString = connString;
taBN.Connection.ConnectionString = connString;
taBNLS.Connection.ConnectionString = connString;
taBStats.Connection.ConnectionString = connString;
taCL.Connection.ConnectionString = connString;
taCOK.Connection.ConnectionString = connString;
taCount.Connection.ConnectionString = connString;
taCR.Connection.ConnectionString = connString;
taDayStats.Connection.ConnectionString = connString;
taEL.Connection.ConnectionString = connString;
taFV.Connection.ConnectionString = connString;
taIL.Connection.ConnectionString = connString;
taImpLog.Connection.ConnectionString = connString;
taISD.Connection.ConnectionString = connString;
taIV.Connection.ConnectionString = connString;
taKL.Connection.ConnectionString = connString;
taMat.Connection.ConnectionString = connString;
taNest.Connection.ConnectionString = connString;
taOffOL.Connection.ConnectionString = connString;
taOO2I.Connection.ConnectionString = connString;
taOKIB.Connection.ConnectionString = connString;
taOKIB_Sum.Connection.ConnectionString = connString;
taOKOI.Connection.ConnectionString = connString;
taOKOI_Sum.Connection.ConnectionString = connString;
taOL.Connection.ConnectionString = connString;
taOLT.Connection.ConnectionString = connString;
taOtItem.Connection.ConnectionString = connString;
taPL.Connection.ConnectionString = connString;
taPlac.Connection.ConnectionString = connString;
taPlant.Connection.ConnectionString = connString;
taPLC.Connection.ConnectionString = connString;
taPLD.Connection.ConnectionString = connString;
taPLog.Connection.ConnectionString = connString;
taPVP.Connection.ConnectionString = connString;
taRem.Connection.ConnectionString = connString;
taStatDec.Connection.ConnectionString = connString;
taStatLog.Connection.ConnectionString = connString;
taSTL.Connection.ConnectionString = connString;
taSHL.Connection.ConnectionString = connString;
taSP.Connection.ConnectionString = connString;
taSpecialPart.Connection.ConnectionString = connString;
taElPos.Connection.ConnectionString = connString;
taPJQ.Connection.ConnectionString = connString;
taRepBin.Connection.ConnectionString = connString;
taRepBunkGroup.Connection.ConnectionString = connString;
taRepBunkList.Connection.ConnectionString = connString;
taRepCart.Connection.ConnectionString = connString;
taRepPart.Connection.ConnectionString = connString;
taRepSpecPart.Connection.ConnectionString = connString;
taRepOtherPart.Connection.ConnectionString = connString;
taRepIRK.Connection.ConnectionString = connString;
taRepIRKSum.Connection.ConnectionString = connString;
taShStats.Connection.ConnectionString = connString;
taUStat.Connection.ConnectionString = connString;
taUpdMan.Connection.ConnectionString = connString;
}
#endregion Private Methods
}
}
}
+40 -9
View File
@@ -6,14 +6,6 @@ using System.Threading.Tasks;
namespace AppData
{
public enum StatType
{
BATCH = 1,
BUNK,
SHEET,
CART,
BIN
}
public enum cssClass
{
ND,
@@ -25,4 +17,43 @@ namespace AppData
danger
}
}
public enum ReportType
{
/// <summary>
/// Non definito
/// </summary>
ND = 0,
/// <summary>
/// Statistiche Batch (PRE)
/// </summary>
BatchStats,
/// <summary>
/// Report previsione scarico batch (num pezzi/sheet)
/// </summary>
BatchUnloadPreview,
/// <summary>
/// Report produttività giornaliera (POST)
/// </summary>
DailyReport
}
public enum Stations
{
LINE = 0,
PRINTER,
NC_MACHINE,
UNLOADER
}
public enum StatType
{
BATCH = 1,
BUNK,
SHEET,
CART,
BIN
}
}
+98
View File
@@ -0,0 +1,98 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace AppData
{
public class chartJsTSerie
{
#region Public Properties
public string label { get; set; } = "";
public DateTime x { get; set; }
public decimal y { get; set; }
#endregion Public Properties
}
public class chartJsTVal
{
#region Public Properties
public string x { get; set; }
public decimal y { get; set; }
#endregion Public Properties
}
public class chartJsXY
{
#region Public Properties
public decimal x { get; set; }
public decimal y { get; set; }
#endregion Public Properties
}
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
public class FileBatchStats
{
public string FileCsv { get; set; } = "";
public double Yeld { get; set; } = 0;
public int NumMaterials { get; set; } = 0;
public int NumSheets { get; set; } = 0;
public int NumModels { get; set; } = 0;
public int NumKit { get; set; } = 0;
public int NumParts { get; set; } = 0;
public int NumPainted { get; set; } = 0;
}
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
public class DayStats
{
#region Public Properties
public DateTime DTime { get; set; }
public string Machine { get; set; } = "";
public double OEE
{
get
{
var denom = AvailTime > 0 ? AvailTime : 1;
return RunTime / denom;
}
}
public double AvgPartHour
{
get
{
var denom = RunTime > 0 ? RunTime : 1;
return PartProd / denom;
}
}
public double RunTime { get; set; } = 0;
public double AvailTime { get; set; } = 0;
public int PartProd { get; set; } = 0;
public int PartScrap { get; set; } = 0;
#endregion Public Properties
}
}
+7 -7
View File
@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------
// <auto-generated>
// Il codice è stato generato da uno strumento.
// Versione runtime:4.0.30319.42000
// This code was generated by a tool.
// Runtime Version:4.0.30319.42000
//
// Le modifiche apportate a questo file possono provocare un comportamento non corretto e andranno perse se
// il codice viene rigenerato.
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
@@ -12,7 +12,7 @@ namespace AppData.Properties {
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "16.2.0.0")]
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.13.0.0")]
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
@@ -26,8 +26,8 @@ namespace AppData.Properties {
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.SpecialSettingAttribute(global::System.Configuration.SpecialSetting.ConnectionString)]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=10.74.82.14;Initial Catalog=Sauder_NKC;Persist Security Info=True;Use" +
"r ID=conn_NKC;Password=pwd_NKC")]
[global::System.Configuration.DefaultSettingValueAttribute("Data Source=SQL2016DEV;Initial Catalog=Sauder_NKC;Persist Security Info=True;User" +
" ID=sa;Password=keyhammer16;TrustServerCertificate=True;")]
public string Sauder_NKCConnectionString {
get {
return ((string)(this["Sauder_NKCConnectionString"]));
+3 -3
View File
@@ -4,11 +4,11 @@
<Settings>
<Setting Name="Sauder_NKCConnectionString" Type="(Connection string)" Scope="Application">
<DesignTimeValue Profile="(Default)">&lt;?xml version="1.0" encoding="utf-16"?&gt;
&lt;SerializableConnectionString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt;
&lt;ConnectionString&gt;Data Source=10.74.82.14;Initial Catalog=Sauder_NKC;Persist Security Info=True;User ID=conn_NKC;Password=pwd_NKC&lt;/ConnectionString&gt;
&lt;SerializableConnectionString xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"&gt;
&lt;ConnectionString&gt;Data Source=SQL2016DEV;Initial Catalog=Sauder_NKC;Persist Security Info=True;User ID=sa;Password=keyhammer16;TrustServerCertificate=True;&lt;/ConnectionString&gt;
&lt;ProviderName&gt;System.Data.SqlClient&lt;/ProviderName&gt;
&lt;/SerializableConnectionString&gt;</DesignTimeValue>
<Value Profile="(Default)">Data Source=10.74.82.14;Initial Catalog=Sauder_NKC;Persist Security Info=True;User ID=conn_NKC;Password=pwd_NKC</Value>
<Value Profile="(Default)">Data Source=SQL2016DEV;Initial Catalog=Sauder_NKC;Persist Security Info=True;User ID=sa;Password=keyhammer16;TrustServerCertificate=True;</Value>
</Setting>
</Settings>
</SettingsFile>
+42 -24
View File
@@ -1,31 +1,49 @@
using SteamWare;
using NKC_SDK;
using SteamWare;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using System.Web;
namespace AppData
{
public class utils
{
/// <summary>
///
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string getPath(string filePath)
public class utils
{
string answ = "";
try
{
answ = HttpContext.Current.Server.MapPath(filePath);
}
catch (Exception exc)
{
logger.lg.scriviLog($"{ComLib.traduci("UtilsErrorMapPath")}:{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
return answ;
#region Public Methods
/// <summary>
///
/// </summary>
/// <param name="filePath"></param>
/// <returns></returns>
public static string getPath(string filePath)
{
string answ = "";
try
{
answ = HttpContext.Current.Server.MapPath(filePath);
}
catch (Exception exc)
{
Log.Instance.Error($"{ComLib.traduci("UtilsErrorMapPath")}:{Environment.NewLine}{exc}");
}
return answ;
}
public static void SaveToCsv<T>(List<T> reportData, string path)
{
var lines = new List<string>();
IEnumerable<PropertyDescriptor> props = TypeDescriptor.GetProperties(typeof(T)).OfType<PropertyDescriptor>();
var header = string.Join(";", props.ToList().Select(x => x.Name));
lines.Add(header);
var valueLines = reportData.Select(row => string.Join(";", header.Split(';').Select(a => row.GetType().GetProperty(a).GetValue(row, null))));
lines.AddRange(valueLines);
File.WriteAllLines(path, lines.ToArray());
}
#endregion Public Methods
}
}
}
}
+77 -45
View File
@@ -1,48 +1,80 @@
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
</configSections>
<connectionStrings>
<add name="AppData.Properties.Settings.Sauder_NKCConnectionString" connectionString="Data Source=SQL2016DEV;Initial Catalog=Sauder_NKC;Persist Security Info=True;User ID=conn_NKC;Password=pwd_NKC" providerName="System.Data.SqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.6.0" newVersion="4.0.6.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.1" newVersion="4.0.1.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="SharpCompress" publicKeyToken="afb0a02973931d96" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.24.0.0" newVersion="0.24.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<configSections>
</configSections>
<connectionStrings>
<add name="AppData.Properties.Settings.Sauder_NKCConnectionString" connectionString="Data Source=SQL2016DEV;Initial Catalog=Sauder_NKC;Persist Security Info=True;User ID=sa;Password=keyhammer16;TrustServerCertificate=True;" providerName="System.Data.SqlClient" />
</connectionStrings>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime.CompilerServices.Unsafe" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-6.0.0.0" newVersion="6.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Pipelines" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Memory" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.1.2" newVersion="4.0.1.2" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks.Extensions" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.1" newVersion="4.2.0.1" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Buffers" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Numerics.Vectors" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.1.4.0" newVersion="4.1.4.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Channels" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Runtime.InteropServices.RuntimeInformation" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.2.0" newVersion="4.0.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="SharpCompress" publicKeyToken="afb0a02973931d96" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-0.32.2.0" newVersion="0.32.2.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="DnsClient" publicKeyToken="4574bb5573c51424" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.7.0.0" newVersion="1.7.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.IO.Compression" publicKeyToken="b77a5c561934e089" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.2.0.0" newVersion="4.2.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Security.Cryptography.Pkcs" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="ICSharpCode.SharpZipLib" publicKeyToken="1b03e6acf1164f73" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-1.4.0.12" newVersion="1.4.0.12" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-13.0.0.0" newVersion="13.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Bcl.AsyncInterfaces" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.0" newVersion="8.0.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="Microsoft.Extensions.Logging.Abstractions" publicKeyToken="adb9793829ddae60" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-8.0.0.1" newVersion="8.0.0.1" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Binary file not shown.
+41 -24
View File
@@ -1,33 +1,50 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="AIM" version="1.0.3" targetFramework="net462" />
<package id="AjaxControlToolkit" version="19.1.0" targetFramework="net462" />
<package id="Crc32C.NET" version="1.0.5.0" targetFramework="net462" />
<package id="DnsClient" version="1.2.0" targetFramework="net462" />
<package id="Microsoft.NETCore.Platforms" version="3.1.0" targetFramework="net462" />
<package id="AIM" version="1.1.0" targetFramework="net462" />
<package id="AjaxControlToolkit" version="20.1.0" targetFramework="net462" />
<package id="AWSSDK.Core" version="3.7.304.8" targetFramework="net462" />
<package id="AWSSDK.SecurityToken" version="3.7.300.99" targetFramework="net462" />
<package id="Crc32.NET" version="1.2.0" targetFramework="net462" />
<package id="DnsClient" version="1.7.0" targetFramework="net462" />
<package id="IronSnappy" version="1.3.1" targetFramework="net462" />
<package id="Microsoft.Bcl.AsyncInterfaces" version="8.0.0" targetFramework="net462" />
<package id="Microsoft.Extensions.DependencyInjection.Abstractions" version="8.0.1" targetFramework="net462" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="8.0.1" targetFramework="net462" />
<package id="Microsoft.NETCore.Platforms" version="7.0.4" targetFramework="net462" />
<package id="Microsoft.ReportViewer.Runtime.Common" version="12.0.2402.15" targetFramework="net462" />
<package id="Microsoft.ReportViewer.Runtime.WinForms" version="12.0.2402.15" targetFramework="net462" />
<package id="MongoDB.Bson" version="2.10.2" targetFramework="net462" />
<package id="MongoDB.Driver" version="2.10.2" targetFramework="net462" />
<package id="MongoDB.Driver.Core" version="2.10.2" targetFramework="net462" />
<package id="MongoDB.Libmongocrypt" version="1.0.0" targetFramework="net462" />
<package id="MongoDB.Bson" version="2.25.0" targetFramework="net462" />
<package id="MongoDB.Driver" version="2.25.0" targetFramework="net462" />
<package id="MongoDB.Driver.Core" version="2.25.0" targetFramework="net462" />
<package id="MongoDB.Libmongocrypt" version="1.9.0" targetFramework="net462" />
<package id="NETStandard.Library" version="2.0.3" targetFramework="net462" />
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net462" />
<package id="NLog" version="4.6.8" targetFramework="net462" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
<package id="NLog" version="5.3.2" targetFramework="net462" />
<package id="PDFsharp" version="1.50.5147" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.1.1" targetFramework="net462" />
<package id="SharpCompress" version="0.24.0" targetFramework="net462" />
<package id="SharpZipLib" version="1.2.0" targetFramework="net462" />
<package id="Snappy.NET" version="1.1.1.8" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.0.601" targetFramework="net462" />
<package id="SteamWare" version="3.5.2001.709" targetFramework="net462" />
<package id="System.Buffers" version="4.5.0" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="4.7.0" targetFramework="net462" />
<package id="System.IO.Pipelines" version="4.7.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.3" targetFramework="net462" />
<package id="Pipelines.Sockets.Unofficial" version="2.2.8" targetFramework="net462" />
<package id="SharpCompress" version="0.32.2" targetFramework="net462" />
<package id="SharpZipLib" version="1.4.0" targetFramework="net462" />
<package id="Snappier" version="1.0.0" targetFramework="net462" />
<package id="StackExchange.Redis" version="2.7.33" targetFramework="net462" />
<package id="SteamWare" version="5.3.2311.2908" targetFramework="net462" />
<package id="SteamWare.Logger" version="5.3.2311.2908" targetFramework="net462" />
<package id="System.Buffers" version="4.5.1" targetFramework="net462" />
<package id="System.Diagnostics.PerformanceCounter" version="8.0.0" targetFramework="net462" />
<package id="System.IO.Compression" version="4.3.0" targetFramework="net462" />
<package id="System.IO.Pipelines" version="8.0.0" targetFramework="net462" />
<package id="System.Memory" version="4.5.5" targetFramework="net462" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net462" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net462" />
<package id="System.Runtime.CompilerServices.Unsafe" version="6.0.0" targetFramework="net462" />
<package id="System.Runtime.InteropServices.RuntimeInformation" version="4.3.0" targetFramework="net462" />
<package id="System.Threading.Channels" version="4.7.0" targetFramework="net462" />
<package id="System.Threading.Tasks.Extensions" version="4.5.3" targetFramework="net462" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.1" targetFramework="net462" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net462" />
<package id="System.Security.Cryptography.Pkcs" version="8.0.0" targetFramework="net462" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net462" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.2" targetFramework="net462" />
<package id="System.Text.Encoding.CodePages" version="8.0.0" targetFramework="net462" />
<package id="System.Threading.Channels" version="8.0.0" targetFramework="net462" />
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
<package id="ZstdSharp.Port" version="0.7.3" targetFramework="net462" />
</packages>
+274 -202
View File
@@ -16,127 +16,53 @@ namespace AppData
/// </summary>
public class reportPrinter
{
#region area codice da non modificare
#region Private Fields
private int m_currentPageIndex;
/// <summary>
/// stream del report...
/// </summary>
private IList<Stream> m_streams;
#endregion Private Fields
#region Protected Fields
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
private int m_currentPageIndex;
protected int logLevel = 0;
protected bool doPdfCopy = false;
protected int logLevel = 0;
#endregion Protected Fields
#region Public Fields
/// <summary>
/// stream del report...
/// singleton pubblico
/// </summary>
private IList<Stream> m_streams;
public static reportPrinter obj = new reportPrinter();
#endregion Public Fields
#region Protected Constructors
/// <summary>
/// ciclo da fornire al renderizzatore dei report, per salvare 1 immagine da ogni pagina del report
/// oggetto protected
/// </summary>
/// <param name="name"></param>
/// <param name="fileNameExtension"></param>
/// <param name="encoding"></param>
/// <param name="mimeType"></param>
/// <param name="willSeek"></param>
/// <returns></returns>
private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
/// <param name="args"></param>
protected reportPrinter()
{
// creo files con nomi univoci...
string filePathName = string.Format(@"~\temp\{0}_{1:HHmmss}_{1:ffff}.{2}", name, DateTime.Now, fileNameExtension);
Stream stream = new FileStream(SteamWare.SteamwareStrings.getFilePath(filePathName), FileMode.Create);
//Stream stream = new FileStream(SteamWare.SteamwareStrings.getFilePath(@"~\temp\" + name + "." + fileNameExtension), FileMode.Create);
m_streams.Add(stream);
return stream;
}
/// <summary>
/// ciclo da fornire al renderizzatore dei report, per salvare 1 pdf da ogni pagina del report
/// </summary>
/// <param name="name"></param>
/// <param name="fileNameExtension"></param>
/// <param name="encoding"></param>
/// <param name="mimeType"></param>
/// <param name="willSeek"></param>
/// <returns></returns>
private Stream CreateStreamPdf(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
// creo Directory se non c'è
SteamWare.fileMover fm = new fileMover(string.Format(@"{0}\{1:yyyy}\{1:MM}\{1:dd}\", memLayer.ML.confReadString("PdfFolder"), DateTime.Now), "");
fm.checkDir();
string pdfPathName = string.Format(@"{0}\{1:yyyy}\{1:MM}\{1:dd}\{2}_{1:HHmmss}_{1:ffff}.{3}", memLayer.ML.confReadString("PdfFolder"), DateTime.Now, name, fileNameExtension);
//Stream stream = new FileStream(SteamWare.SteamwareStrings.getFilePath(@"~\temp\" + name + "." + fileNameExtension), FileMode.Create);
Stream stream = new FileStream(SteamWare.SteamwareStrings.getFilePath(pdfPathName), FileMode.Create);
m_streams.Add(stream);
return stream;
}
/// <summary>
/// Handler per PrintPageEvents
/// </summary>
/// <param name="sender"></param>
/// <param name="ev"></param>
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
ev.Graphics.DrawImage(pageImage, ev.PageBounds);
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
/// <summary>
/// funzione di stampa...
/// </summary>
private void Print(string printerName)
{
//const string printerName = "Microsoft Office Document Image Writer";
//const string printerName = "Brother HL-2170W series";
if (m_streams == null || m_streams.Count == 0)
return;
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = printerName;
if (!printDoc.PrinterSettings.IsValid)
{
logger.lg.scriviLog(String.Format("Impostazioni non valide per la stampante \"{0}\".", printerName), tipoLog.ERROR);
return;
}
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
printDoc.Print();
}
/// <summary>
/// Export del report come EMF (Enhanced Metafile) file.
/// </summary>
/// <param name="report"></param>
private void Export(LocalReport report, string deviceInfo)
{
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams) stream.Position = 0;
}
/// <summary>
/// Export del report come PDF file.
/// </summary>
/// <param name="report"></param>
private void ExportPDF(LocalReport report, string deviceInfo)
{
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("PDF", deviceInfo, CreateStreamPdf, out warnings);
foreach (Stream stream in m_streams) stream.Position = 0;
}
/// <summary>
/// dispone l'applicazione e rilascia le risorse
/// </summary>
public void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
m_streams = null;
}
logLevel = memLayer.ML.CRI("_logLevel");
doPdfCopy = memLayer.ML.CRB("doPdfCopy");
}
#endregion
#endregion Protected Constructors
#region area codice da modificare
#region Private Methods
/// <summary>
/// carica i dati richiesti dal report dalla StoredProcedure (filtrando quindi...)
@@ -157,43 +83,228 @@ namespace AppData
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepBin.GetData(intIdx, true, imagePath, qrCodeBaseUrl);
break;
case reportRichiesto.binPre:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepBin.GetData(intIdx, false, imagePath, qrCodeBaseUrl);
break;
case reportRichiesto.bunkGroup:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepBunkGroup.GetData(intIdx, qrCodeBaseUrl);
break;
case reportRichiesto.bunkList:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepBunkList.GetData(intIdx, qrCodeBaseUrl);
break;
case reportRichiesto.cart:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepCart.GetData(intIdx, qrCodeBaseUrl);
break;
case reportRichiesto.offline:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepPart.GetData(intIdx, qrCodeBaseUrl);
break;
case reportRichiesto.part:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepPart.GetData(intIdx, qrCodeBaseUrl);
break;
case reportRichiesto.cartIRKGroup:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepIRKSum.GetData(intIdx, qrCodeBaseUrl);
break;
case reportRichiesto.cartIRKList:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepIRK.GetData(intIdx, qrCodeBaseUrl);
break;
case reportRichiesto.cartSpecParts:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepSpecPart.GetData(intIdx, imagePath, qrCodeBaseUrl);
break;
default:
break;
}
return tab;
}
/// <summary>
/// ciclo da fornire al renderizzatore dei report, per salvare 1 immagine da ogni pagina del report
/// </summary>
/// <param name="name"></param>
/// <param name="fileNameExtension"></param>
/// <param name="encoding"></param>
/// <param name="mimeType"></param>
/// <param name="willSeek"></param>
/// <returns></returns>
private Stream CreateStream(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
// creo files con nomi univoci...
string filePathName = string.Format(@"~\temp\{0}_{1:HHmmss}_{1:ffff}.{2}", name, DateTime.Now, fileNameExtension);
Stream stream = new FileStream(SteamWare.fileMover.getFilePath(filePathName), FileMode.Create);
//Stream stream = new FileStream(SteamWare.SteamwareStrings.getFilePath(@"~\temp\" + name + "." + fileNameExtension), FileMode.Create);
m_streams.Add(stream);
return stream;
}
/// <summary>
/// ciclo da fornire al renderizzatore dei report, per salvare 1 pdf da ogni pagina del report
/// </summary>
/// <param name="name"></param>
/// <param name="fileNameExtension"></param>
/// <param name="encoding"></param>
/// <param name="mimeType"></param>
/// <param name="willSeek"></param>
/// <returns></returns>
private Stream CreateStreamPdf(string name, string fileNameExtension, Encoding encoding, string mimeType, bool willSeek)
{
// creo Directory se non c'è
SteamWare.fileMover fm = new fileMover(string.Format(@"{0}\{1:yyyy}\{1:MM}\{1:dd}\", memLayer.ML.confReadString("PdfFolder"), DateTime.Now), "");
fm.checkDir();
string pdfPathName = string.Format(@"{0}\{1:yyyy}\{1:MM}\{1:dd}\{2}_{1:HHmmss}_{1:ffff}.{3}", memLayer.ML.confReadString("PdfFolder"), DateTime.Now, name, fileNameExtension);
//Stream stream = new FileStream(SteamWare.SteamwareStrings.getFilePath(@"~\temp\" + name + "." + fileNameExtension), FileMode.Create);
Stream stream = new FileStream(SteamWare.fileMover.getFilePath(pdfPathName), FileMode.Create);
m_streams.Add(stream);
return stream;
}
/// <summary>
/// esegue print vero e proprio
/// </summary>
/// <param name="printerName"></param>
/// <param name="report"></param>
/// <param name="deviceInfo"></param>
private void doEmfPrint(string printerName, LocalReport report, string deviceInfo)
{
// export in EMF
Export(report, deviceInfo);
m_currentPageIndex = 0;
// stampo
Print(printerName);
// do dispose?
Dispose();
}
/// <summary>
/// effettua stampa in PDF dei vari report in una cartella Anno/Mese/Giorno
/// </summary>
/// <param name="report"></param>
/// <param name="deviceInfo"></param>
private void doLocalPdfPrint(LocalReport report, string deviceInfo)
{
// export in PDF
ExportPDF(report, deviceInfo);
m_currentPageIndex = 0;
// do dispose?
Dispose();
}
/// <summary>
/// Export del report come EMF (Enhanced Metafile) file.
/// </summary>
/// <param name="report"></param>
private void Export(LocalReport report, string deviceInfo)
{
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("Image", deviceInfo, CreateStream, out warnings);
foreach (Stream stream in m_streams) stream.Position = 0;
}
/// <summary>
/// Export del report come PDF file.
/// </summary>
/// <param name="report"></param>
private void ExportPDF(LocalReport report, string deviceInfo)
{
Warning[] warnings;
m_streams = new List<Stream>();
report.Render("PDF", deviceInfo, CreateStreamPdf, out warnings);
foreach (Stream stream in m_streams) stream.Position = 0;
}
/// <summary>
/// funzione di stampa...
/// </summary>
private void Print(string printerName)
{
//const string printerName = "Microsoft Office Document Image Writer";
//const string printerName = "Brother HL-2170W series";
if (m_streams == null || m_streams.Count == 0)
return;
PrintDocument printDoc = new PrintDocument();
printDoc.PrinterSettings.PrinterName = printerName;
if (!printDoc.PrinterSettings.IsValid)
{
Log.Instance.Error(String.Format("Impostazioni non valide per la stampante \"{0}\".", printerName));
return;
}
printDoc.PrintPage += new PrintPageEventHandler(PrintPage);
printDoc.Print();
}
/// <summary>
/// effettua la vera e propria fase di stampa
/// </summary>
/// <param name="keyParam"></param>
/// <param name="printerName"></param>
/// <param name="answ"></param>
/// <param name="report"></param>
/// <param name="deviceInfo"></param>
/// <returns></returns>
private bool printAndLog(string keyParam, string printerName, bool answ, reportRichiesto report, devInfoParam deviceInfo)
{
try
{
if (logLevel > 5) Log.Instance.Info(String.Format("Sto per inviare un report alla stampante {0}", printerName));
reportPrinter.obj.printReport(report, printerName, keyParam, deviceInfo);
if (logLevel > 5) Log.Instance.Info(String.Format("inviato comando print alla stampante {0}", printerName));
answ = true;
}
catch (Exception e)
{
Log.Instance.Error(String.Format("Errore in fase di creazione e stampa report: stampante {0}, errore riscontrato {1}", printerName, e));
}
return answ;
}
/// <summary>
/// Handler per PrintPageEvents
/// </summary>
/// <param name="sender"></param>
/// <param name="ev"></param>
private void PrintPage(object sender, PrintPageEventArgs ev)
{
Metafile pageImage = new Metafile(m_streams[m_currentPageIndex]);
ev.Graphics.DrawImage(pageImage, ev.PageBounds);
m_currentPageIndex++;
ev.HasMorePages = (m_currentPageIndex < m_streams.Count);
}
#endregion Private Methods
#region Public Methods
/// <summary>
/// dispone l'applicazione e rilascia le risorse
/// </summary>
public void Dispose()
{
if (m_streams != null)
{
foreach (Stream stream in m_streams)
stream.Close();
m_streams = null;
}
}
/// <summary>
/// Crea un report locale da file rdlc, carica i dati, esporta report come EMF file e quindi lo invia alla stampante
/// </summary>
@@ -215,39 +326,52 @@ namespace AppData
report.ReportPath = string.Format(@"{0}\Bin.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocBin"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.binPre:
report.ReportPath = string.Format(@"{0}\Bin.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocBin"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.bunkGroup:
report.ReportPath = string.Format(@"{0}\BunkGroup.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocBunkGroup"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.bunkList:
report.ReportPath = string.Format(@"{0}\BunkList.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocBunkList"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.cart:
report.ReportPath = string.Format(@"{0}\Cart.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocCart"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.cartIRKGroup:
report.ReportPath = string.Format(@"{0}\IRK_Kitting_Group.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocIRKGroup"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.cartIRKList:
report.ReportPath = string.Format(@"{0}\IRK_Kitting_List.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocIRKList"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.offline:
case reportRichiesto.part:
report.ReportPath = string.Format(@"{0}\Part.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocPart"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.otherPart:
report.ReportPath = string.Format(@"{0}\OtherPart.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocOtherPart"), caricaDati(tipoReport, keyParam)));
break;
case reportRichiesto.cartSpecParts:
report.ReportPath = string.Format(@"{0}\SpecialParts.rdlc", repoBasePath);
report.DataSources.Add(new ReportDataSource(memLayer.ML.cdv("ReportDS_DocCartSpecPart"), caricaDati(tipoReport, keyParam)));
break;
}
deviceInfo = deviceInfoParam.xmlParam;
doEmfPrint(printerName, report, deviceInfo);
@@ -259,35 +383,38 @@ namespace AppData
doLocalPdfPrint(report, deviceInfo);
}
}
/// <summary>
/// esegue print vero e proprio
/// effettua pulizia della cartella temp x i files più vecchi di X ore (web.config)
/// </summary>
/// <param name="printerName"></param>
/// <param name="report"></param>
/// <param name="deviceInfo"></param>
private void doEmfPrint(string printerName, LocalReport report, string deviceInfo)
public void pulisciDir()
{
// export in EMF
Export(report, deviceInfo);
m_currentPageIndex = 0;
// stampo
Print(printerName);
// do dispose?
Dispose();
}
/// <summary>
/// effettua stampa in PDF dei vari report in una cartella Anno/Mese/Giorno
/// </summary>
/// <param name="report"></param>
/// <param name="deviceInfo"></param>
private void doLocalPdfPrint(LocalReport report, string deviceInfo)
{
// export in PDF
ExportPDF(report, deviceInfo);
m_currentPageIndex = 0;
// do dispose?
Dispose();
// num max ore di età x files "vecchi" da tenere in temp area...
int maxOre = memLayer.ML.CRI("maxAgeTempAreaHours");
int eliminati = 0;
// ottengo elenco files *.emf
fileMover.obj.setDirectory(@"~\temp\");
FileInfo[] _fis = fileMover.obj.elencoFiles_FI("*.emf");
bool fatto = false;
foreach (FileInfo _file in _fis)
{
if (_file.CreationTime < DateTime.Now.AddHours(-maxOre)) // elimino files vecchi...
{
fatto = fileMover.obj.eliminaFile(_file);
if (fatto)
{
Log.Instance.Info(String.Format("Eliminato file {0}", _file.Name));
eliminati++;
}
}
}
// salvo il log degli update
if (eliminati > 0)
{
Log.Instance.Info(String.Format("Eliminati {0} files temporanei da area temp", eliminati));
}
}
/// <summary>
/// effettua la stampa del cartellino indicato
/// </summary>
@@ -385,7 +512,7 @@ namespace AppData
}
catch (Exception exc)
{
logger.lg.scriviLog($"Errore in recupero IdxPrint Job:{exc}", tipoLog.EXCEPTION);
Log.Instance.Error($"Errore in recupero IdxPrint Job:{exc}");
}
// dimensioni pagina
@@ -402,34 +529,47 @@ namespace AppData
tipo = "docPaint";
report = reportRichiesto.binPre;
break;
case tipoDocumento.docBinPost:
tipo = "docPaintPost";
report = reportRichiesto.binPost;
break;
case tipoDocumento.docCart:
tipo = "docCart";
report = reportRichiesto.cart;
break;
case tipoDocumento.docCartIRK:
tipo = "docCartIRK";
report = reportRichiesto.cartIRKList;
break;
case tipoDocumento.docCartIRKSum:
tipo = "docCartIRKSum";
report = reportRichiesto.cartIRKGroup;
break;
case tipoDocumento.docPart:
tipo = "docPart";
report = reportRichiesto.part;
break;
case tipoDocumento.docOtherPart:
tipo = "docOtherPart";
report = reportRichiesto.otherPart;
break;
case tipoDocumento.docCartSpecialPart:
tipo = "docCartSpecialPart";
report = reportRichiesto.cartSpecParts;
break;
case tipoDocumento.docStack:
tipo = "docStack";
report = reportRichiesto.bunkGroup;
break;
default:
break;
}
@@ -468,79 +608,11 @@ namespace AppData
{
DLMan.taPJQ.updateStato(idxPrintJob, -1);
}
}
}
return answ;
}
/// <summary>
/// effettua la vera e propria fase di stampa
/// </summary>
/// <param name="keyParam"></param>
/// <param name="printerName"></param>
/// <param name="answ"></param>
/// <param name="report"></param>
/// <param name="deviceInfo"></param>
/// <returns></returns>
private bool printAndLog(string keyParam, string printerName, bool answ, reportRichiesto report, devInfoParam deviceInfo)
{
try
{
if (logLevel > 5) logger.lg.scriviLog(String.Format("Sto per inviare un report alla stampante {0}", printerName), tipoLog.INFO);
reportPrinter.obj.printReport(report, printerName, keyParam, deviceInfo);
if (logLevel > 5) logger.lg.scriviLog(String.Format("inviato comando print alla stampante {0}", printerName), tipoLog.INFO);
answ = true;
}
catch (Exception e)
{
logger.lg.scriviLog(String.Format("Errore in fase di creazione e stampa report: stampante {0}, errore riscontrato {1}", printerName, e), tipoLog.EXCEPTION);
}
return answ;
}
/// <summary>
/// oggetto protected
/// </summary>
/// <param name="args"></param>
protected reportPrinter()
{
logLevel = memLayer.ML.CRI("_logLevel");
doPdfCopy = memLayer.ML.CRB("doPdfCopy");
}
/// <summary>
/// singleton pubblico
/// </summary>
public static reportPrinter obj = new reportPrinter();
/// <summary>
/// effettua pulizia della cartella temp x i files più vecchi di X ore (web.config)
/// </summary>
public void pulisciDir()
{
// num max ore di età x files "vecchi" da tenere in temp area...
int maxOre = memLayer.ML.CRI("maxAgeTempAreaHours");
int eliminati = 0;
// ottengo elenco files *.emf
fileMover.obj.setDirectory(@"~\temp\");
FileInfo[] _fis = fileMover.obj.elencoFiles_FI("*.emf");
bool fatto = false;
foreach (FileInfo _file in _fis)
{
if (_file.CreationTime < DateTime.Now.AddHours(-maxOre)) // elimino files vecchi...
{
fatto = fileMover.obj.eliminaFile(_file);
if (fatto)
{
logger.lg.scriviLog(String.Format("Eliminato file {0}", _file.Name), tipoLog.INFO);
eliminati++;
}
}
}
// salvo il log degli update
if (eliminati > 0)
{
logger.lg.scriviLog(String.Format("Eliminati {0} files temporanei da area temp", eliminati), tipoLog.INFO);
}
}
#endregion
#endregion Public Methods
}
}
}
+89 -4
View File
@@ -3,12 +3,12 @@
<Version>10</Version>
<SourceModelProvider>
<ConnectionBasedModelProvider>
<ConnectionString>Data Source=SQL2016DEV;Initial Catalog=Sauder_NKC;Persist Security Info=True;User ID=sa;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False</ConnectionString>
<ConnectionString>Data Source=SQL2016DEV;Initial Catalog=Sauder_NKC;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False</ConnectionString>
</ConnectionBasedModelProvider>
</SourceModelProvider>
<TargetModelProvider>
<ConnectionBasedModelProvider>
<ConnectionString>Data Source=SQL2016PROD;Initial Catalog=Sauder_NKC_Prod;Persist Security Info=True;User ID=sa;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False</ConnectionString>
<ConnectionString>Data Source=SQL2016PROD;Initial Catalog=Sauder_NKC2_Prod;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False</ConnectionString>
</ConnectionBasedModelProvider>
</TargetModelProvider>
<SchemaCompareSettingsService>
@@ -35,6 +35,10 @@
<Name>BackupDatabaseBeforeChanges</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>IgnoreIndexesStatisticsOnEnclaveEnabledColumns</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>BlockOnPossibleDataLoss</Name>
<Value>True</Value>
@@ -63,6 +67,10 @@
<Name>DisableAndReenableDdlTriggers</Name>
<Value>True</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DisableIndexesForDataPhase</Name>
<Value>True</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotAlterChangeDataCaptureObjects</Name>
<Value>True</Value>
@@ -107,6 +115,10 @@
<Name>GenerateSmartDefaults</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>HashObjectNamesInLogs</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>IgnoreDdlTriggerOrder</Name>
<Value>False</Value>
@@ -267,10 +279,22 @@
<Name>PopulateFilesOnFileGroups</Name>
<Value>True</Value>
</PropertyElementName>
<PropertyElementName>
<Name>PreserveIdentityLastValues</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>RegisterDataTierApplication</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>RebuildIndexesOfflineForDataPhase</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>RestoreSequenceCurrentValue</Name>
<Value>True</Value>
</PropertyElementName>
<PropertyElementName>
<Name>ScriptDatabaseCollation</Name>
<Value>False</Value>
@@ -301,11 +325,11 @@
</PropertyElementName>
<PropertyElementName>
<Name>TargetDatabaseName</Name>
<Value>Sauder_NKC_Prod</Value>
<Value>Sauder_NKC2_Prod</Value>
</PropertyElementName>
<PropertyElementName>
<Name>TargetConnectionString</Name>
<Value>Data Source=SQL2016PROD;Initial Catalog=Sauder_NKC_Prod;Persist Security Info=True;User ID=sa;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False;Application Name="Microsoft SQL Server Data Tools, Schema Compare"</Value>
<Value>Data Source=SQL2016PROD;Initial Catalog=Sauder_NKC2_Prod;Integrated Security=True;Persist Security Info=False;Pooling=False;MultipleActiveResultSets=False;Connect Timeout=60;Encrypt=False;TrustServerCertificate=False;Application Name="Microsoft SQL Server Data Tools, Schema Compare"</Value>
</PropertyElementName>
<PropertyElementName>
<Name>TreatVerificationErrorsAsWarnings</Name>
@@ -331,6 +355,10 @@
<Name>AllowDropBlockingAssemblies</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotEvaluateSqlCmdVariables</Name>
<Value>True</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropAggregates</Name>
<Value>False</Value>
@@ -399,6 +427,22 @@
<Name>DoNotDropDatabaseTriggers</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>IgnoreDatabaseWorkloadGroups</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropDatabaseWorkloadGroups</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>IgnoreWorkloadClassifiers</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropWorkloadClassifiers</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropDefaults</Name>
<Value>False</Value>
@@ -431,10 +475,18 @@
<Name>DoNotDropExternalFileFormats</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropExternalStreamingJobs</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropExternalTables</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropExternalStreams</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>DoNotDropFilegroups</Name>
<Value>False</Value>
@@ -675,10 +727,18 @@
<Name>ExcludeExternalFileFormats</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>ExcludeExternalStreamingJobs</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>ExcludeExternalTables</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>ExcludeExternalStreams</Name>
<Value>False</Value>
</PropertyElementName>
<PropertyElementName>
<Name>ExcludeEventSessions</Name>
<Value>True</Value>
@@ -943,5 +1003,30 @@
<SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlUser, Microsoft.Data.Tools.Schema.Sql, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Name>conn_NKC</Name>
</SelectedItem>
<SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlTable, Microsoft.Data.Tools.Schema.Sql, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Name>dbo</Name>
<Name>ControlloDefrag</Name>
</SelectedItem>
<SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlExtendedProperty, Microsoft.Data.Tools.Schema.Sql, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Name>SqlTableBase</Name>
<Name>dbo</Name>
<Name>ControlloDefrag</Name>
<Name>Note</Name>
</SelectedItem>
<SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlTable, Microsoft.Data.Tools.Schema.Sql, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Name>dbo</Name>
<Name>BatchReqList_OLD</Name>
</SelectedItem>
<SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlExtendedProperty, Microsoft.Data.Tools.Schema.Sql, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Name>SqlColumn</Name>
<Name>dbo</Name>
<Name>BatchReqList_OLD</Name>
<Name>OrdID</Name>
<Name>MS_Description</Name>
</SelectedItem>
<SelectedItem Type="Microsoft.Data.Tools.Schema.Sql.SchemaModel.SqlPrimaryKeyConstraint, Microsoft.Data.Tools.Schema.Sql, Version=15.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
<Name>dbo</Name>
<Name>PK_BatchReqList</Name>
</SelectedItem>
</ExcludedTargetElements>
</SchemaComparison>
Vendored
-284
View File
@@ -1,284 +0,0 @@
pipeline {
// Declarative Pipeline MODE con Scripted Pipeline Syntax entro le chiamate script { }
agent none
environment {
enableIIS01 = 'Y'
enableIIS02 = 'Y'
}
stages {
stage('Checkout') {
agent any
steps {
/* calcolo numero versione... diverso x branch MASTER/DEVELOP */
script {
withEnv(['NEXT_BUILD_NUMBER=363']) {
// env.versionNumber = VersionNumber(versionNumberString : '1.2.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true)
env.versionNumber = VersionNumber(versionNumberString : '1.2.${BUILD_DATE_FORMATTED, "yyMM"}.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.versionNumberBeta = VersionNumber(versionNumberString : '1.2.${BUILD_DATE_FORMATTED, "yyMM"}-beta.${BUILDS_ALL_TIME}', projectStartDate : '2019-07-01', skipFailedBuilds: true, overrideBuildsAllTime: '${NEXT_BUILD_NUMBER}')
env.APP_NAME = 'NKC'
}
}
script {
currentBuild.displayName = "${env.versionNumber}"
if (env.BRANCH_NAME == "develop" || env.BRANCH_NAME.contains("DEMO") || env.BRANCH_NAME.contains("report")) {
currentBuild.description = "TEST ${env.versionNumber}"
}
else {
currentBuild.description = "BUILD ${env.versionNumber}"
}
}
// CAMBIO numero versione + checkout NuGet in file sorgente!!!
bat "e:\\fart.exe VersGen\\VersGen.cs 0.0.0.0 ${env.versionNumber} || EXIT /B 0"
fixNuget("${WORKSPACE}\\NKC_WF.sln")
}
}
stage('Build') {
agent any
steps {
script {
properties([buildDiscarder(logRotator(artifactDaysToKeepStr: '180', artifactNumToKeepStr: '30', daysToKeepStr: '360', numToKeepStr: '30')), pipelineTriggers([])])
// CAMBIO numero versione + checkout NuGet in file sorgente!!!
bat "e:\\fart.exe VersGen\\VersGen.cs 0.0.0.0 ${env.versionNumber} || EXIT /B 0"
fixNuget("${WORKSPACE}\\NKC_WF.sln")
}
script {
/* compilo installers in base al BRANCH del cliente... */
if (env.BRANCH_NAME == "develop") {
parallel (
NKC_SITE: {
sleep 0
bat "\"${tool 'MSBuild-16.0'}\" NKC_WF/NKC_WF.csproj -target:Build /p:Configuration=Release /p:Platform=\"Any CPU\" /p:OutputPath=bin/ /m"
},
failFast: false)
}
else {
echo 'Niente x Build (limitata a develop)...'
}
}
}
}
stage('Deploy') {
agent any
steps {
script {
// CAMBIO numero versione + checkout NuGet in file sorgente!!!
bat "e:\\fart.exe VersGen\\VersGen.cs 0.0.0.0 ${env.versionNumber} || EXIT /B 0"
fixNuget("${WORKSPACE}\\NKC_WF.sln")
}
script {
/* DEPLOY condizionale: master (Ufficio Seriate) / demo_ovh (Demo Online) */
if (env.BRANCH_NAME == "master") {
parallel (
SITE_IIS02: {
if(env.enableIIS02 == "Y")
{
sleep 1
// SITE
bat "\"${tool 'MSBuild-16.0'}\" \"/p:AspnetMergePath=C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.2 Tools\" /p:DeployOnBuild=true /p:Targets=Publish /p:PublishProfile=IIS02.pubxml /p:VisualStudioVersion=16.0 /p:RunCodeAnalysis=false /p:Configuration=Release /p:username=jenkins /p:Password=viadante16 /p:AllowUntrustedCertificate=true /p:OutputPath=bin/ NKC_WF/NKC_WF.csproj"
sleep 3
}
},
failFast: false)
}
else if (env.BRANCH_NAME == "develop") {
parallel (
SITE_IIS01: {
if(env.enableIIS01 == "Y")
{
sleep 3
// SITE
bat "\"${tool 'MSBuild-16.0'}\" \"/p:AspnetMergePath=C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.2 Tools\" /p:DeployOnBuild=true /p:Targets=Publish /p:PublishProfile=IIS01.pubxml /p:VisualStudioVersion=16.0 /p:RunCodeAnalysis=false /p:Configuration=Release /p:username=jenkins /p:Password=viadante16 /p:AllowUntrustedCertificate=true /p:OutputPath=bin/ NKC_WF/NKC_WF.csproj"
sleep 1
}
},
failFast: false)
}
else
{
echo 'Questo BRANCH non necessita di deploy...'
}
}
}
}
stage('Installers') {
// da rivedere: creare branch = versioni LEGACY, STABLE (LTS), INSIDER (ULTIMATE), e NON pubblicare DOCS (ex branch Giancarlo)... impostare filtro?
agent any
steps {
// in primis cambio versione e NuGet
script {
// CAMBIO numero versione + checkout NuGet in file sorgente!!!
bat "e:\\fart.exe VersGen\\VersGen.cs 0.0.0.0 ${env.versionNumber} || EXIT /B 0"
fixNuget("${WORKSPACE}\\NKC_WF.sln")
}
// ora mi occupo delle operazioni di compressione e copia...
script {
/* compilo installers SOLO stable / beta */
if (env.BRANCH_NAME == "stable" || env.BRANCH_NAME.contains("beta") ) {
// calcolo il config...
if (env.BRANCH_NAME == "beta") {
env.config = "Debug"
env.classifier = "unstable"
}
else if (env.BRANCH_NAME == "stable") {
env.config = "Release"
env.classifier = ""
}
parallel (
SITE_NKC: {
sleep 0
// SITE
bat "\"${tool 'MSBuild-16.0'}\" \"/p:AspnetMergePath=C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v10.0A\\bin\\NETFX 4.6.2 Tools\" /T:Package /P:Configuration=Prod /p:PublishProfile=${env.BRANCH_NAME}.pubxml /p:VisualStudioVersion=16.0 /p:RunCodeAnalysis=false /p:AutoParameterizationWebConfigConnectionStrings=False /p:PackageLocation=Releases/${env.BRANCH_NAME}/NKC.zip /p:DeployIisAppPath=\"Default Web Site/NKC\" /p:PackageAsSingleFile=True /p:OutputPath=bin/ NKC_WF/NKC_WF.csproj"
// pubblico su server deploy!
publishToDeployServer("NKC_WF\\", "c:\\inetpub\\wwwroot\\SWS\\", "NKC")
nexusArtifactUploader (
artifacts: [
[
artifactId: 'NKC',
classifier: "${env.classifier}",
file: "NKC_WF\\Releases\\${env.BRANCH_NAME}\\NKC.zip",
type: 'zip'
]
],
credentialsId: 'bc9d8e92-4302-3266-817f-7b58501d12d5',
//groupId: 'MP',
nexusUrl: 'nexus.steamware.net',
nexusVersion: 'nexus3',
protocol: 'http',
repository: 'SWS',
version: "${env.versionNumber}"
)
},
failFast: false)
}
/* preparo nuget pkg dell'SDK ma solo x branch SDK / beta */
else if (env.BRANCH_NAME == "SDK" || env.BRANCH_NAME.contains("beta") ) {
// calcolo il config...
if (env.BRANCH_NAME == "beta") {
env.config = "Debug"
env.packVers = env.versionNumberBeta
}
else if (env.BRANCH_NAME == "SDK") {
env.config = "Release"
env.packVers = env.versionNumber
}
// elimino vecchie build...
bat "del /f /q *.nupkg"
// BUILD!
bat "\"${tool 'MSBuild-16.0'}\" NKC_SDK\\NKC_SDK.csproj -target:Build /p:Configuration=${env.config} /p:Platform=\"Any CPU\" /p:OutputPath=bin/${env.config} /m"
// creo package NuGet... con version in modo da fare ANCHE le beta
bat "e:\\nuget.exe pack ${WORKSPACE}\\NKC_SDK\\NKC_SDK.csproj -properties Configuration=${env.config} -Version ${env.packVers}"
// lancio upload con nuget!
echo 'Start upload with nuget push'
bat "e:\\nuget setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-hosted"
bat "e:\\nuget.exe push NKC_SDK.${env.packVers}.nupkg -Source http://nexus.steamware.net/repository/nuget-hosted"
}
else
{
echo 'Questo BRANCH non necessita di installer...'
}
}
}
}
}
post {
success {
sendSlack("Successful", "good")
updateGitlabCommitStatus(name: 'jenkins-build', state: 'success')
}
failure {
sendSlack("Failed", "danger")
updateGitlabCommitStatus(name: 'jenkins-build', state: 'failed')
}
unstable {
sendSlack("Unstable", "warning")
updateGitlabCommitStatus(name: 'jenkins-build', state: 'failed')
}
}
}
// Funzione x pubblicazione su server IIS di deploy
def publishToDeployServer(prjPath, iisPath, packName) {
echo "Richiesto esecuzione publishToDeployServer con parametri: " + prjPath + " | " + iisPath + " | " + packName
// inizio copiando files di base da area VersGen...
bat "xcopy /y VersGen\\ChangeLog.html " + prjPath + "Resources\\ChangeLog.html "
bat "xcopy /y VersGen\\logoSteamware.png " + prjPath + "Resources\\logoSteamware.png "
bat "xcopy /y VersGen\\manifest.xml " + prjPath + "Resources\\manifest.xml "
// manifest.xml: aggiorno versNumber ed URL del branch di update...
bat "e:\\fart.exe " + prjPath + "Resources\\manifest.xml 0.0.0.0 ${env.versionNumber} || EXIT /B 0"
bat "e:\\fart.exe " + prjPath + "Resources\\manifest.xml {{BRANCHNAME}} ${env.BRANCH_NAME} || EXIT /B 0"
bat "e:\\fart.exe " + prjPath + "Resources\\manifest.xml {{PACKNAME}} " + packName + " || EXIT /B 0"
bat "e:\\fart.exe " + prjPath + "Resources\\ChangeLog.html {{CURRENT-REL}} ${env.versionNumber} || EXIT /B 0"
writeFile file: prjPath + 'changeLog.log', text: "${getChangeString()}"
powershell '(Get-Content ' + prjPath + 'Resources\\ChangeLog.html) | ForEach-Object { $_ -replace \"{{LAST-CHANGES}}\", \"${getChangeString()}\" } | Set-Content ' + prjPath + 'Resources\\ChangeLog.html'
// copio ed esporto in IIS02 i vari files .xml, .html, .zip
bat "xcopy /y " + prjPath + "Resources\\manifest.xml " + iisPath + packName + "\\${env.BRANCH_NAME}\\ "
bat "xcopy /y " + prjPath + "Resources\\ChangeLog.html " + iisPath + packName + "\\${env.BRANCH_NAME}\\ "
bat "xcopy /y " + prjPath + "Resources\\logoSteamware.png " + iisPath + packName + "\\${env.BRANCH_NAME}\\ "
// salvo copia della versione...
bat "xcopy /y " + prjPath + "\\Releases\\${env.BRANCH_NAME}\\* E:\\Staging\\byProd\\MP\\${env.BRANCH_NAME}\\" + packName + "\\${env.versionNumber}\\ "
// copio x AutoUpdate deploy
bat "xcopy /y " + prjPath + "\\Releases\\${env.BRANCH_NAME}\\" + packName + ".zip " + iisPath + packName + "\\${env.BRANCH_NAME}\\ "
}
@NonCPS
// Funzione x recupero changeLog
def getChangeString() {
MAX_MSG_LEN = 100
def changeString = ""
echo "Gathering SCM changes"
def changeLogSets = currentBuild.changeSets
for (int i = 0; i < changeLogSets.size(); i++) {
def entries = changeLogSets[i].items
for (int j = 0; j < entries.length; j++) {
def entry = entries[j]
truncated_msg = entry.msg.take(MAX_MSG_LEN)
changeString += " - ${truncated_msg} [${entry.author}]\n"
}
}
if (!changeString) {
changeString = " - Nessuna Modifica"
}
return changeString
}
// Funzione x invio slack
def sendSlack(status, colorCode) {
slackSend (
color: colorCode,
channel: "#sauder-nkc-dev",
failOnError: false,
message: "${env.JOB_NAME} ${env.versionNumber} | " + status + ": Build ${env.BUILD_NUMBER}\n\n" +
"Modifiche:\n " + getChangeString() + "\n\n Verifica build: <${env.BUILD_URL}|Apri>" + "\n"
)
}
// // Funzione x invio slack
// def sendGitlab(status) {
// gitlabCommitStatus(
// builds: status,
// [[connection: gitLabConnection('Gitlab'),
// projectId: '1',
// revisionHash: '']]
// ){
// // some block
// }
// }
// funzione x fix pacchetti nuget da NOSTRO repo Nexus con proxy
def fixNuget(solutionFile) {
// bat "e:\\nuget setapikey fe387daa-d07c-3207-877e-96c8be1be91b -source http://nexus.steamware.net/repository/nuget-group"
// solo la prima volta va aggiunta...
hasSource = bat "e:\\nuget sources list | find \"Steamware\" /C"
if (hasSource == "0")
{
bat "e:\\nuget sources Add -Name \"Steamware Nexus\" -Source http://nexus.steamware.net/repository/nuget-group -username \"nugetUser\" -password \"viaDante16\""
}
else
{
bat "e:\\nuget sources Update -Name \"Steamware Nexus\" -Source http://nexus.steamware.net/repository/nuget-group -username \"nugetUser\" -password \"viaDante16\""
}
bat "e:\\nuget.exe restore ${solutionFile}"
}
+1
View File
@@ -0,0 +1 @@
1.1.
+332
View File
@@ -0,0 +1,332 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NKC.Data.DbModels;
using NKC.Data.DTO;
using NLog;
namespace NKC.Data.Controllers
{
public class NKCController : IDisposable
{
#region Private Fields
private static IConfiguration _configuration = null!;
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
#endregion Private Fields
#region Public Constructors
public NKCController(IConfiguration configuration)
{
_configuration = configuration;
}
#endregion Public Constructors
#region Public Methods
public bool DbForceMigrate()
{
bool answ = false;
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
try
{
localDbCtx.DbForceMigrate();
answ = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione in DbForceMigrate{Environment.NewLine}{exc}");
}
}
return answ;
}
public void Dispose()
{
Log.Info("Dispose di NKCController");
}
public List<MaterialDTO> MaterialsGetAll()
{
List<MaterialDTO> dbResult = new List<MaterialDTO>();
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
dbResult = localDbCtx
.DbSetMaterials
.Where(x => x.MatID > 0)
.Select(x => new MaterialDTO()
{
MatID = x.MatID,
MatExtCode = x.MatExtCode,
MatDesc = x.MatDesc,
LMm = x.LMm,
WMm = x.WMm,
TMm = x.TMm,
ApprovUser = x.ApprovUser,
ApprovDate = x.ApprovDate,
NumSize = x.RemnantNav == null ? 0 : x.RemnantNav.Count,
TotQty = x.RemnantNav == null ? 0 : x.RemnantNav.Sum(r => r.QtyAvail)
}
)
.ToList();
}
return dbResult;
}
public List<MovMagModel> MovMagGetFilt(int RemnId, int numShow)
{
List<MovMagModel> dbResult = new List<MovMagModel>();
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
dbResult = localDbCtx
.DbSetMovMag
.Where(x => x.RemnID == RemnId)
.OrderByDescending(o => o.DtRec)
//.Include(m => m.RemnantNav)
.Take(numShow)
.ToList();
}
return dbResult;
}
public bool AddPrintJob(string tipoReport, string keyParam, string prtName)
{
bool done = false;
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
try
{
DateTime adesso = DateTime.Now;
PrintJobQueue newRec = new PrintJobQueue()
{
TipoReport = tipoReport,
KeyParam = keyParam,
PrtName = prtName,
Stato = 0,
DtStart = adesso,
DtLastTry = adesso
};
localDbCtx.DbSetPrintJobQueues.Add(newRec);
localDbCtx.SaveChanges();
done = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione in AddPrintJob:{Environment.NewLine}{exc}");
}
}
return done;
}
public List<RemnantsModel> RemnantsGetAll()
{
List<RemnantsModel> dbResult = new List<RemnantsModel>();
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
dbResult = localDbCtx
.DbSetRemnants
.ToList();
}
return dbResult;
}
public RemnantsModel RemnantGetByid(int RemnId)
{
RemnantsModel? dbResult = new RemnantsModel();
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
dbResult = localDbCtx
.DbSetRemnants
.Where(x => x.RemnID == RemnId)
.Include(m => m.MaterialNav)
.FirstOrDefault();
}
if (dbResult == null)
{
dbResult = new RemnantsModel();
}
return dbResult;
}
public List<RemnantsModel> RemnantsGetFilt(int matId, int minQty)
{
List<RemnantsModel> dbResult = new List<RemnantsModel>();
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
dbResult = localDbCtx
.DbSetRemnants
.Where(x => (x.MatID == matId || matId == 0) && (x.QtyAvail >= minQty || minQty == 0))
//.OrderBy(o => o.Area)d6
.Include(m => m.MaterialNav)
.ToList();
}
return dbResult;
}
public RemnantsModel RemnantGetByQr(string QrCode)
{
RemnantsModel? dbResult = new RemnantsModel();
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
var rawList = localDbCtx
.DbSetRemnants
.Include(m => m.MaterialNav)
.ToList();
dbResult = rawList
.Where(x => x.RemDtmx == QrCode)
.FirstOrDefault();
if (dbResult == null && QrCode.Contains("-"))
{
// split materiale/dimensione
var decodedData = QrCode.Split('-');
if (decodedData != null && decodedData.Length > 1)
{
// calcolo il codice ext
int MatExtCode = 0;
_=int.TryParse(decodedData[0].Replace("MT",""), out MatExtCode);
// cerco il materiale
var matRow = localDbCtx
.DbSetMaterials
.Where(x => x.MatExtCode == MatExtCode)
.FirstOrDefault();
if (matRow != null)
{
// calcolo lunghezza...
decimal actLmm = decimal.Parse(decodedData[1])/1000;
// creo il record...
dbResult = new RemnantsModel()
{
DtMod = DateTime.Now,
Location = "MAG",
MatID = matRow.MatID,
WMm = matRow.WMm,
TMm = matRow.TMm,
LMm = actLmm,
QtyAvail = 0
};
// salvo sul DB
localDbCtx.DbSetRemnants.Add(dbResult);
localDbCtx.SaveChanges();
}
}
}
}
if (dbResult == null)
{
dbResult = new RemnantsModel();
}
return dbResult;
}
public bool RemnantsUpsert(RemnantsModel updItem, string userId)
{
bool done = false;
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
try
{
RemnantsModel? currData = localDbCtx
.DbSetRemnants
.Where(x => x.RemnID == updItem.RemnID)
.FirstOrDefault();
if (currData != null)
{
// aggiungo record variazione quantità...
int delta = updItem.QtyAvail - currData.QtyAvail;
if (delta != 0)
{
MovMagModel recMovMag = new MovMagModel()
{
DtRec = DateTime.Now,
RemnID = updItem.RemnID,
QtyRec = delta,
UserId = userId
};
localDbCtx.DbSetMovMag.Add(recMovMag);
}
// aggiorno valori
currData.MatID = updItem.MatID;
currData.DtMod = updItem.DtMod;
currData.Location = updItem.Location;
currData.Note = updItem.Note;
currData.QtyAvail = updItem.QtyAvail;
currData.LMm = updItem.LMm;
currData.WMm = updItem.WMm;
currData.TMm = updItem.TMm;
localDbCtx.Entry(currData).State = EntityState.Modified;
}
else
{
// aggiungo record variazione quantità...
MovMagModel recMovMag = new MovMagModel()
{
DtRec = DateTime.Now,
RemnID = updItem.RemnID,
QtyRec = updItem.QtyAvail
};
localDbCtx.DbSetMovMag.Add(recMovMag);
// aggiungo record puntuale
currData = new RemnantsModel()
{
MatID = updItem.MatID,
DtMod = updItem.DtMod,
Location = updItem.Location,
Note = updItem.Note,
QtyAvail = updItem.QtyAvail,
LMm = updItem.LMm,
WMm = updItem.WMm,
TMm = updItem.TMm
};
localDbCtx
.DbSetRemnants
.Add(currData);
}
localDbCtx.SaveChanges();
done = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione in PlantUpdate:{Environment.NewLine}{exc}");
}
}
return done;
}
/// <summary>
/// Annulla modifiche su una specifica entity (cancel update)
/// </summary>
/// <param name="item"></param>
/// <returns></returns>
public bool rollBackEntity(object item)
{
bool answ = false;
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
try
{
if (localDbCtx.Entry(item).State == EntityState.Deleted || localDbCtx.Entry(item).State == EntityState.Modified)
{
localDbCtx.Entry(item).Reload();
}
}
catch (Exception exc)
{
Log.Error($"Eccezione in rollBackEntity{Environment.NewLine}{exc}");
}
}
return answ;
}
#endregion Public Methods
}
}
+47
View File
@@ -0,0 +1,47 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NKC.Data.DTO
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
public class MaterialDTO
{
public int MatID { get; set; }
public int MatExtCode { get; set; } = 0;
public string MatDesc { get; set; } = "";
public DateTime ApprovDate { get; set; } = DateTime.Now.AddYears(10);
public string ApprovUser { get; set; } = "";
public decimal LMm { get; set; } = 0;
public decimal WMm { get; set; } = 0;
public decimal TMm { get; set; } = 0;
public string MatDtmx
{
get => $"MT{MatExtCode:00000000}";
}
public decimal LIn
{
get => Math.Round(LMm / (decimal)25.4, 3);
}
public decimal WIn
{
get => Math.Round(WMm / (decimal)25.4, 3);
}
public decimal TIn
{
get => Math.Round(TMm / (decimal)25.4, 3);
}
public int NumSize { get; set; } = 0;
public int TotQty { get; set; } = 0;
}
}
+12
View File
@@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NKC.Data.DTO
{
public class RemnantDTO
{
}
}
+33
View File
@@ -0,0 +1,33 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace NKC.Data.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("Materials")]
public partial class MaterialModel
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int MatID { get; set; }
public int MatExtCode { get; set; } = 0;
public string MatDesc { get; set; } = "";
public DateTime ApprovDate { get; set; } = DateTime.Now.AddYears(10);
public string ApprovUser { get; set; } = "";
public decimal LMm { get; set; } = 0;
public decimal WMm { get; set; }=0;
public decimal TMm { get; set; }=0;
[NotMapped]
public string MatDtmx {
get => $"MT{MatExtCode:00000000}";
}
public virtual ICollection<RemnantsModel>? RemnantNav { get; set; }
}
}
+48
View File
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace NKC.Data.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
//[Index(nameof(Installazione), nameof(Active), nameof(DiskStatus))]
[Table("MovMag")]
public partial class MovMagModel
{
/// <summary>
/// Primary Key AUTO
/// </summary>
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int MovID { get; set; }
/// <summary>
/// DateTime record
/// </summary>
public DateTime DtRec { get; set; } = DateTime.Now;
/// <summary>
/// Ext ref for Remnants
/// </summary>
public int RemnID { get; set; }
/// <summary>
/// Qty recorded (delta +/-)
/// </summary>
public int QtyRec { get; set; } = 0;
/// <summary>
/// User modificatore
/// </summary>
public string UserId { get; set; } = "";
/// <summary>
/// Navigation property to Remnant
/// </summary>
[ForeignKey("RemnID")]
public virtual RemnantsModel? RemnantNav { get; set; }
}
}
+23
View File
@@ -0,0 +1,23 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
namespace NKC.Data.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
[Table("PrintJobQueue")]
public partial class PrintJobQueue
{
public int IdxPrintJob { get; set; }
public string TipoReport { get; set; } = null!;
public string KeyParam { get; set; } = null!;
public string PrtName { get; set; } = null!;
public DateTime DtStart { get; set; }
public DateTime? DtEnd { get; set; }
public int Stato { get; set; }
public DateTime? DtLastTry { get; set; }
}
}
+105
View File
@@ -0,0 +1,105 @@
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
namespace NKC.Data.DbModels
{
// <Auto-Generated>
// This is here so CodeMaid doesn't reorganize this document
// </Auto-Generated>
//[Index(nameof(Installazione), nameof(Active), nameof(DiskStatus))]
[Table("RemnantsList")]
public partial class RemnantsModel
{
/// <summary>
/// Primary Key AUTO
/// </summary>
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int RemnID { get; set; }
/// <summary>
/// Ext ref for Material
/// </summary>
public int MatID { get; set; }
/// <summary>
/// Location
/// </summary>
public string Location { get; set; } = "";
/// <summary>
/// Qty available on wharehouse
/// </summary>
public int QtyAvail { get; set; } = 0;
/// <summary>
/// DateTime last modification
/// </summary>
public DateTime DtMod { get; set; } = DateTime.Now.AddYears(10);
/// <summary>
/// Remnant's Lenght
/// </summary>
public decimal LMm { get; set; } = 0;
/// <summary>
/// Remnant's Width
/// </summary>
public decimal WMm { get; set; } = 0;
/// <summary>
/// Remnant's Thikness
/// </summary>
public decimal TMm { get; set; } = 0;
[NotMapped]
public decimal LIn
{
get => Math.Round(LMm / (decimal)25.4, 3);
}
[NotMapped]
public decimal WIn
{
get => Math.Round(WMm / (decimal)25.4, 3);
}
[NotMapped]
public decimal TIn
{
get => Math.Round(TMm / (decimal)25.4, 3);
}
/// <summary>
/// Note (optional)
/// </summary>
public string Note { get; set; } = "";
[NotMapped]
public decimal Area
{
get => LMm * WMm;
}
[NotMapped]
public string RemDtmx
{
get
{
string answ = $"MT99999999-{LMm * 1000:00000000}";
if (MaterialNav != null)
{
answ = $"MT{MaterialNav.MatExtCode:00000000}-{LMm * 1000:00000000}";
}
return answ;
}
}
/// <summary>
/// Navigation property to Material
/// </summary>
[ForeignKey("MatID")]
public virtual MaterialModel MaterialNav { get; set; } = null!;
}
}
+28
View File
@@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace NKC.Data
{
public class Enum
{
#region Public Enums
public enum RemnState
{
/// <summary>
/// Non definito
/// </summary>
ND = 0,
/// <summary>
/// Selezionato x operazioni (veto interfaccia ad altri usi)
/// </summary>
Selected
}
#endregion Public Enums
}
}
+80
View File
@@ -0,0 +1,80 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using NKC.Data;
#nullable disable
namespace NKC.Data.Migrations
{
[DbContext(typeof(NKCContext))]
[Migration("20211118172800_InitDb")]
partial class InitDb
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Property<int>("MatID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MatID"), 1L, 1);
b.Property<DateTime>("ApprovDate")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
b.Property<string>("ApprovUser")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasDefaultValueSql("('')");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("L_mm");
b.Property<string>("MatDesc")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasDefaultValueSql("('')")
.HasComment("Description");
b.Property<int>("MatExtCode")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("T_mm");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("W_mm");
b.HasKey("MatID");
b.HasIndex(new[] { "MatExtCode" }, "Idx_Materials_MatExtCode_Unique")
.IsUnique();
b.ToTable("Materials");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,44 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace NKC.Data.Migrations
{
public partial class InitDb : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "Materials",
columns: table => new
{
MatID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MatExtCode = table.Column<int>(type: "int", nullable: false),
MatDesc = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: false, defaultValueSql: "('')", comment: "Description"),
ApprovDate = table.Column<DateTime>(type: "datetime", nullable: false, defaultValueSql: "(getdate())"),
ApprovUser = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false, defaultValueSql: "('')"),
L_mm = table.Column<decimal>(type: "decimal(18,3)", nullable: false),
W_mm = table.Column<decimal>(type: "decimal(18,3)", nullable: false),
T_mm = table.Column<decimal>(type: "decimal(18,3)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_Materials", x => x.MatID);
});
migrationBuilder.CreateIndex(
name: "Idx_Materials_MatExtCode_Unique",
table: "Materials",
column: "MatExtCode",
unique: true);
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "Materials");
}
}
}
@@ -0,0 +1,132 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using NKC.Data;
#nullable disable
namespace NKC.Data.Migrations
{
[DbContext(typeof(NKCContext))]
[Migration("20211118173720_AddRemnantsTable")]
partial class AddRemnantsTable
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Property<int>("MatID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MatID"), 1L, 1);
b.Property<DateTime>("ApprovDate")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
b.Property<string>("ApprovUser")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasDefaultValueSql("('')");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("L_mm");
b.Property<string>("MatDesc")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasDefaultValueSql("('')")
.HasComment("Description");
b.Property<int>("MatExtCode")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("T_mm");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("W_mm");
b.HasKey("MatID");
b.HasIndex(new[] { "MatExtCode" }, "Idx_Materials_MatExtCode_Unique")
.IsUnique();
b.ToTable("Materials");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.Property<int>("RemnID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("RemnID"), 1L, 1);
b.Property<DateTime>("DtMod")
.HasColumnType("datetime2");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)");
b.Property<string>("Location")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("MatID")
.HasColumnType("int");
b.Property<string>("Note")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QtyAvail")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)");
b.HasKey("RemnID");
b.HasIndex("MatID");
b.ToTable("RemnantsList");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.HasOne("NKC.Data.DbModels.MaterialModel", "MaterialNav")
.WithMany()
.HasForeignKey("MatID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("MaterialNav");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,50 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace NKC.Data.Migrations
{
public partial class AddRemnantsTable : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "RemnantsList",
columns: table => new
{
RemnID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
MatID = table.Column<int>(type: "int", nullable: false),
Location = table.Column<string>(type: "nvarchar(max)", nullable: false),
QtyAvail = table.Column<int>(type: "int", nullable: false),
DtMod = table.Column<DateTime>(type: "datetime2", nullable: false),
LMm = table.Column<decimal>(type: "decimal(18,3)", nullable: false),
WMm = table.Column<decimal>(type: "decimal(18,3)", nullable: false),
TMm = table.Column<decimal>(type: "decimal(18,3)", nullable: false),
Note = table.Column<string>(type: "nvarchar(max)", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_RemnantsList", x => x.RemnID);
table.ForeignKey(
name: "FK_RemnantsList_Materials_MatID",
column: x => x.MatID,
principalTable: "Materials",
principalColumn: "MatID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_RemnantsList_MatID",
table: "RemnantsList",
column: "MatID");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "RemnantsList");
}
}
}
@@ -0,0 +1,172 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using NKC.Data;
#nullable disable
namespace NKC.Data.Migrations
{
[DbContext(typeof(NKCContext))]
[Migration("20211119182450_AddMovMagTable")]
partial class AddMovMagTable
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Property<int>("MatID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MatID"), 1L, 1);
b.Property<DateTime>("ApprovDate")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
b.Property<string>("ApprovUser")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasDefaultValueSql("('')");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("L_mm");
b.Property<string>("MatDesc")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasDefaultValueSql("('')")
.HasComment("Description");
b.Property<int>("MatExtCode")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("T_mm");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("W_mm");
b.HasKey("MatID");
b.HasIndex(new[] { "MatExtCode" }, "Idx_Materials_MatExtCode_Unique")
.IsUnique();
b.ToTable("Materials");
});
modelBuilder.Entity("NKC.Data.DbModels.MovMagModel", b =>
{
b.Property<int>("MovID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MovID"), 1L, 1);
b.Property<DateTime>("DtRec")
.HasColumnType("datetime2");
b.Property<int>("QtyRec")
.HasColumnType("int");
b.Property<int>("RemnID")
.HasColumnType("int");
b.HasKey("MovID");
b.HasIndex("RemnID");
b.ToTable("MovMag");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.Property<int>("RemnID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("RemnID"), 1L, 1);
b.Property<DateTime>("DtMod")
.HasColumnType("datetime2");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)");
b.Property<string>("Location")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("MatID")
.HasColumnType("int");
b.Property<string>("Note")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QtyAvail")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)");
b.HasKey("RemnID");
b.HasIndex("MatID");
b.ToTable("RemnantsList");
});
modelBuilder.Entity("NKC.Data.DbModels.MovMagModel", b =>
{
b.HasOne("NKC.Data.DbModels.RemnantsModel", "RemnantNav")
.WithMany()
.HasForeignKey("RemnID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("RemnantNav");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.HasOne("NKC.Data.DbModels.MaterialModel", "MaterialNav")
.WithMany("RemnantNav")
.HasForeignKey("MatID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("MaterialNav");
});
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Navigation("RemnantNav");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,47 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace NKC.Data.Migrations
{
public partial class AddMovMagTable : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.CreateTable(
name: "MovMag",
columns: table => new
{
MovID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
DtRec = table.Column<DateTime>(type: "datetime2", nullable: false),
RemnID = table.Column<int>(type: "int", nullable: false),
QtyRec = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_MovMag", x => x.MovID);
table.ForeignKey(
name: "FK_MovMag_RemnantsList_RemnID",
column: x => x.RemnID,
principalTable: "RemnantsList",
principalColumn: "RemnID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_MovMag_RemnID",
table: "MovMag",
column: "RemnID");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "MovMag");
}
}
}
@@ -0,0 +1,176 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Migrations;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using NKC.Data;
#nullable disable
namespace NKC.Data.Migrations
{
[DbContext(typeof(NKCContext))]
[Migration("20211120074650_MovMagAddUserId")]
partial class MovMagAddUserId
{
protected override void BuildTargetModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Property<int>("MatID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MatID"), 1L, 1);
b.Property<DateTime>("ApprovDate")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
b.Property<string>("ApprovUser")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasDefaultValueSql("('')");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("L_mm");
b.Property<string>("MatDesc")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasDefaultValueSql("('')")
.HasComment("Description");
b.Property<int>("MatExtCode")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("T_mm");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("W_mm");
b.HasKey("MatID");
b.HasIndex(new[] { "MatExtCode" }, "Idx_Materials_MatExtCode_Unique")
.IsUnique();
b.ToTable("Materials");
});
modelBuilder.Entity("NKC.Data.DbModels.MovMagModel", b =>
{
b.Property<int>("MovID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MovID"), 1L, 1);
b.Property<DateTime>("DtRec")
.HasColumnType("datetime2");
b.Property<int>("QtyRec")
.HasColumnType("int");
b.Property<int>("RemnID")
.HasColumnType("int");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("MovID");
b.HasIndex("RemnID");
b.ToTable("MovMag");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.Property<int>("RemnID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("RemnID"), 1L, 1);
b.Property<DateTime>("DtMod")
.HasColumnType("datetime2");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)");
b.Property<string>("Location")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("MatID")
.HasColumnType("int");
b.Property<string>("Note")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QtyAvail")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)");
b.HasKey("RemnID");
b.HasIndex("MatID");
b.ToTable("RemnantsList");
});
modelBuilder.Entity("NKC.Data.DbModels.MovMagModel", b =>
{
b.HasOne("NKC.Data.DbModels.RemnantsModel", "RemnantNav")
.WithMany()
.HasForeignKey("RemnID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("RemnantNav");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.HasOne("NKC.Data.DbModels.MaterialModel", "MaterialNav")
.WithMany("RemnantNav")
.HasForeignKey("MatID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("MaterialNav");
});
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Navigation("RemnantNav");
});
#pragma warning restore 612, 618
}
}
}
@@ -0,0 +1,29 @@
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace NKC.Data.Migrations
{
public partial class MovMagAddUserId : Migration
{
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.AddColumn<string>(
name: "UserId",
table: "MovMag",
type: "nvarchar(max)",
nullable: false,
defaultValue: "");
}
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropColumn(
name: "UserId",
table: "MovMag");
}
}
}
@@ -0,0 +1,174 @@
// <auto-generated />
using System;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Metadata;
using Microsoft.EntityFrameworkCore.Storage.ValueConversion;
using NKC.Data;
#nullable disable
namespace NKC.Data.Migrations
{
[DbContext(typeof(NKCContext))]
partial class NKCContextModelSnapshot : ModelSnapshot
{
protected override void BuildModel(ModelBuilder modelBuilder)
{
#pragma warning disable 612, 618
modelBuilder
.HasAnnotation("ProductVersion", "6.0.0")
.HasAnnotation("Relational:MaxIdentifierLength", 128);
SqlServerModelBuilderExtensions.UseIdentityColumns(modelBuilder, 1L, 1);
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Property<int>("MatID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MatID"), 1L, 1);
b.Property<DateTime>("ApprovDate")
.ValueGeneratedOnAdd()
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
b.Property<string>("ApprovUser")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(50)
.HasColumnType("nvarchar(50)")
.HasDefaultValueSql("('')");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("L_mm");
b.Property<string>("MatDesc")
.IsRequired()
.ValueGeneratedOnAdd()
.HasMaxLength(500)
.HasColumnType("nvarchar(500)")
.HasDefaultValueSql("('')")
.HasComment("Description");
b.Property<int>("MatExtCode")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("T_mm");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)")
.HasColumnName("W_mm");
b.HasKey("MatID");
b.HasIndex(new[] { "MatExtCode" }, "Idx_Materials_MatExtCode_Unique")
.IsUnique();
b.ToTable("Materials");
});
modelBuilder.Entity("NKC.Data.DbModels.MovMagModel", b =>
{
b.Property<int>("MovID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("MovID"), 1L, 1);
b.Property<DateTime>("DtRec")
.HasColumnType("datetime2");
b.Property<int>("QtyRec")
.HasColumnType("int");
b.Property<int>("RemnID")
.HasColumnType("int");
b.Property<string>("UserId")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.HasKey("MovID");
b.HasIndex("RemnID");
b.ToTable("MovMag");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.Property<int>("RemnID")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("RemnID"), 1L, 1);
b.Property<DateTime>("DtMod")
.HasColumnType("datetime2");
b.Property<decimal>("LMm")
.HasColumnType("decimal(18,3)");
b.Property<string>("Location")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("MatID")
.HasColumnType("int");
b.Property<string>("Note")
.IsRequired()
.HasColumnType("nvarchar(max)");
b.Property<int>("QtyAvail")
.HasColumnType("int");
b.Property<decimal>("TMm")
.HasColumnType("decimal(18,3)");
b.Property<decimal>("WMm")
.HasColumnType("decimal(18,3)");
b.HasKey("RemnID");
b.HasIndex("MatID");
b.ToTable("RemnantsList");
});
modelBuilder.Entity("NKC.Data.DbModels.MovMagModel", b =>
{
b.HasOne("NKC.Data.DbModels.RemnantsModel", "RemnantNav")
.WithMany()
.HasForeignKey("RemnID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("RemnantNav");
});
modelBuilder.Entity("NKC.Data.DbModels.RemnantsModel", b =>
{
b.HasOne("NKC.Data.DbModels.MaterialModel", "MaterialNav")
.WithMany("RemnantNav")
.HasForeignKey("MatID")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
b.Navigation("MaterialNav");
});
modelBuilder.Entity("NKC.Data.DbModels.MaterialModel", b =>
{
b.Navigation("RemnantNav");
});
#pragma warning restore 612, 618
}
}
}
+24
View File
@@ -0,0 +1,24 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<Folder Include="Migrations\" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="6.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="6.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="6.0.1" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="6.0.1">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="NLog" Version="4.7.13" />
</ItemGroup>
</Project>
+167
View File
@@ -0,0 +1,167 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.Configuration;
using NKC.Data.DbModels;
using NLog;
namespace NKC.Data
{
public partial class NKCContext : DbContext
{
#region Private Fields
private static NLog.Logger Log = LogManager.GetCurrentClassLogger();
private IConfiguration _configuration = null!;
#endregion Private Fields
#region Public Constructors
/// <summary>
/// Indispensabile x prima generazione migrations EFCore
/// </summary>
[Obsolete("This constructor should never be used directly, and is only needed to generate entityframework stuff. Connection string can be adapted as pleased.")]
public NKCContext()
{
}
public NKCContext(IConfiguration configuration)
{
_configuration = configuration;
}
public NKCContext(DbContextOptions<NKCContext> options) : base(options)
{
try
{
// se non ci fosse... crea o migra!
Database.Migrate();
}
catch (Exception exc)
{
Log.Error(exc, "Exception during context initialization 02");
}
}
#endregion Public Constructors
#region Public Properties
public virtual DbSet<MaterialModel> DbSetMaterials { get; set; } = null!;
public virtual DbSet<RemnantsModel> DbSetRemnants { get; set; } = null!;
public virtual DbSet<MovMagModel> DbSetMovMag { get; set; } = null!;
public virtual DbSet<PrintJobQueue> DbSetPrintJobQueues { get; set; } = null!;
#endregion Public Properties
#region Private Methods
partial void OnModelCreatingPartial(ModelBuilder modelBuilder);
#endregion Private Methods
#region Protected Methods
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (!optionsBuilder.IsConfigured)
{
string connString = _configuration.GetConnectionString("NKC.DB");
if (!string.IsNullOrEmpty(connString))
{
optionsBuilder.UseSqlServer(connString);
}
else
{
optionsBuilder.UseSqlServer("Server=SQL2016DEV;Database=Sauder_NKC;Trusted_Connection=True;");
}
}
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<MaterialModel>(entity =>
{
entity.HasIndex(e => e.MatExtCode, "Idx_Materials_MatExtCode_Unique")
.IsUnique();
entity.Property(e => e.ApprovDate)
.HasColumnType("datetime")
.HasDefaultValueSql("(getdate())");
entity.Property(e => e.ApprovUser)
.HasMaxLength(50)
.HasDefaultValueSql("('')");
entity.Property(e => e.LMm)
.HasColumnType("decimal(18, 3)")
.HasColumnName("L_mm");
entity.Property(e => e.MatDesc)
.HasMaxLength(500)
.HasDefaultValueSql("('')")
.HasComment("Description");
entity.Property(e => e.TMm)
.HasColumnType("decimal(18, 3)")
.HasColumnName("T_mm");
entity.Property(e => e.WMm)
.HasColumnType("decimal(18, 3)")
.HasColumnName("W_mm");
});
modelBuilder.Entity<PrintJobQueue>(entity =>
{
entity.HasKey(e => e.IdxPrintJob);
entity.ToTable("PrintJobQueue");
entity.Property(e => e.DtEnd)
.HasColumnType("datetime")
.HasColumnName("dtEnd");
entity.Property(e => e.DtLastTry)
.HasColumnType("datetime")
.HasColumnName("dtLastTry");
entity.Property(e => e.DtStart)
.HasColumnType("datetime")
.HasColumnName("dtStart");
entity.Property(e => e.KeyParam).HasMaxLength(50);
entity.Property(e => e.PrtName)
.HasMaxLength(500)
.HasColumnName("prtName");
entity.Property(e => e.Stato).HasColumnName("stato");
entity.Property(e => e.TipoReport).HasMaxLength(250);
});
OnModelCreatingPartial(modelBuilder);
}
#endregion Protected Methods
#region Public Methods
public void DbForceMigrate()
{
try
{
// se non ci fosse... crea o migra!
Database.Migrate();
Log.Info("DbForceMigrate: done!");
}
catch (Exception exc)
{
Log.Error(exc, "DbForceMigrate: Exception during context initialization 01");
}
}
#endregion Public Methods
}
}
+299 -214
View File
@@ -1,40 +1,5 @@
namespace NKC_SDK
{
/// <summary>
/// Stati degli oggetti TAKT e Stack
/// </summary>
public enum CStatus
{
/// <summary>
/// Programmato
/// </summary>
Programmed = 0,
/// <summary>
/// In corso
/// </summary>
Running,
/// <summary>
/// Completato
/// </summary>
Done
}
/// <summary>
/// Tipologia di macchina
/// </summary>
public enum mType
{
Multiax = 0,
Offline
}
/// <summary>
/// Tipologia di ordine
/// </summary>
public enum oType
{
BatchRequest = 0,
OfflineOrder
}
/// <summary>
/// modalità funzionamento batch list
/// </summary>
@@ -44,61 +9,23 @@
/// Modalità normale (stima/nesting)
/// </summary>
Standard,
/// <summary>
/// MOdalità validazione aprticolari
/// Modalità validazione particolari
/// </summary>
PartsEval
}
/// <summary>
/// Stati degli oggetti Batch
/// </summary>
public enum BatchStatus
{
/// <summary>
/// CSV importato
/// </summary>
Imported = 0,
/// <summary>
/// Nesting richiesto (In corso)
/// </summary>
EstimationRequested,
/// <summary>
/// Nesting Completato
/// </summary>
EstimationDone,
/// <summary>
/// Nesting richiesto (In corso)
/// </summary>
NestRequested,
/// <summary>
/// Nesting Completato
/// </summary>
NestDone,
/// <summary>
/// Nesting approvato
/// </summary>
Approved,
/// <summary>
/// Nesting scartato
/// </summary>
Discarded,
/// <summary>
/// Errori in fase di import o calcolo
/// </summary>
Errors,
/// <summary>
/// Impiegato per effettuare un test di validazione di un SINGOLO ITEM/PART
/// </summary>
PartEval,
/// <summary>
/// Test di validazione KO per un SINGOLO ITEM/PART
/// </summary>
PartKo,
/// <summary>
/// Test di validazione OK per un SINGOLO ITEM/PART
/// </summary>
PartOk
PartsEval,
/// <summary>
/// Modalità validazione file (NON ancora particolari in ordini CSV)
/// </summary>
FileEval,
/// <summary>
/// Modalità normale (stima/nesting)
/// </summary>
FullHistory
}
/// <summary>
/// Posizione / Activity degli oggetti Batch
/// </summary>
@@ -108,110 +35,106 @@
/// Non iniziato
/// </summary>
NotStarted = 0,
/// <summary>
/// Stack In corso
/// </summary>
StackStarted,
/// <summary>
/// Stack Completato
/// </summary>
StackDone,
/// <summary>
/// Stack currently in LOAD
/// </summary>
Current,
/// <summary>
/// Stack completed
/// </summary>
Completed
}
/// <summary>
/// Stati degli oggetti Batch
/// </summary>
public enum BatchStatus
{
/// <summary>
/// CSV importato
/// </summary>
Imported = 0,
/// <summary>
/// Nesting richiesto (In corso)
/// </summary>
EstimationRequested,
/// <summary>
/// Nesting Completato
/// </summary>
EstimationDone,
/// <summary>
/// Nesting richiesto (In corso)
/// </summary>
NestRequested,
/// <summary>
/// Nesting Completato
/// </summary>
NestDone,
/// <summary>
/// Nesting approvato
/// </summary>
Approved,
/// <summary>
/// Nesting scartato
/// </summary>
Discarded,
/// <summary>
/// Errori in fase di import o calcolo
/// </summary>
Errors,
/// <summary>
/// Impiegato per effettuare un test di validazione di un SINGOLO ITEM/PART
/// </summary>
PartEval,
/// <summary>
/// Test di validazione KO per un SINGOLO ITEM/PART
/// </summary>
PartKo,
/// <summary>
/// Test di validazione OK per un SINGOLO ITEM/PART
/// </summary>
PartOk,
/// <summary>
/// Errori in fase di calcolo STIMA
/// </summary>
ErrorsOnEstim,
/// <summary>
/// Errori in fase di calcolo NESTING
/// </summary>
ErrorsOnNesting
}
/// <summary>
/// Stati degli oggetti PANEL/SHEET
/// Tipologia Batch
/// </summary>
public enum PStatus
public enum BatchType
{
/// <summary>
/// Programmato
/// </summary>
Programmed = 0,
/// <summary>
/// Stampa in corso
/// </summary>
Printing,
/// <summary>
/// Stampa completata
/// </summary>
Printed,
/// <summary>
/// Lavorazione in corso
/// </summary>
Machining,
/// <summary>
/// Lavorazione completata
/// </summary>
Machined,
/// <summary>
/// In fase di scaricamento
/// </summary>
Unloading,
/// <summary>
/// Completato / scaricato da macchina (anche su tavola di scarico)
/// </summary>
Unloaded,
/// <summary>
/// Presente / letto su PROD e pronto su scissor lift
/// </summary>
Present,
/// <summary>
/// Da rilavorare
/// </summary>
ToBeRedone
}
/// <summary>
/// Destinazioni per ITEM post CNC WORK
/// </summary>
public enum ItemDest
{
/// <summary>
/// Destinato a BIN (painting)
/// </summary>
Bin,
/// <summary>
/// Destinato a Cart (KIT)
/// </summary>
Cart,
/// <summary>
/// Indefinito
/// </summary>
Undef
}
/// <summary>
/// Stati ammessi per ITEM
/// </summary>
public enum ItemStatus
{
/// <summary>
/// Programmato
/// </summary>
Programmed,
/// <summary>
/// Completato/Fatto/tagliato
/// </summary>
Made,
/// <summary>
/// Preso da operatore
/// </summary>
PickUp,
/// <summary>
/// Depositato su Bin/Cesta
/// </summary>
Removed,
/// <summary>
/// Indefinito
/// </summary>
Undef
Original = 0
, Ancestor = 1
, Descendant = 2
}
/// <summary>
@@ -230,72 +153,100 @@
Cart,
Bin,
BinProcessed,
SecScreen
SecScreen,
MachSelection,
SpecialPart
}
/// <summary>
/// tipologia di report (FILE rdlc) gestito in stampa...
/// Stati degli oggetti TAKT e Stack
/// </summary>
public enum reportRichiesto
{
binPre,
binPost,
bunkGroup,
bunkList,
cart,
offline,
part,
otherPart,
cartIRKList,
cartIRKGroup
}
/// <summary>
/// tipologia di DOCUMENTO gestito in stampa...
/// </summary>
public enum tipoDocumento
public enum CStatus
{
/// <summary>
/// Etichetta per un BIN (pre esecuzione compito, es verniciatura)
/// Programmato
/// </summary>
docBinPre,
Programmed = 0,
/// <summary>
/// Etichetta per un BIN (POST esecuzione compito, es verniciatura)
/// In corso
/// </summary>
docBinPost,
Running,
/// <summary>
/// Etichetta per un CART
/// Completato
/// </summary>
docCart,
Done
}
/// <summary>
/// Destinazioni per ITEM post CNC WORK
/// </summary>
public enum ItemDest
{
/// <summary>
/// Documento per singolo ITEM:
/// - QR code
/// - num cart/bin
/// - T/P/* (se va fatto qualcosa di speciale)
/// - codice dmtx leggibile (es IT000023) su NUOVA riga
/// Destinato a BIN (painting)
/// </summary>
docPart,
Bin,
/// <summary>
/// Documento per singolo OtherItem:
/// - QR code
/// - cod originale
/// - descrizione
/// Destinato a Cart (KIT)
/// </summary>
docOtherPart,
Cart,
/// <summary>
/// doc per STACK
/// Indefinito
/// </summary>
docStack,
Undef
}
/// <summary>
/// Stati ammessi per ITEM
/// </summary>
public enum ItemStatus
{
/// <summary>
/// NON DEFINITO
/// Programmato
/// </summary>
docND,
Programmed,
/// <summary>
/// Dettaglio massimo CART --> Item Requested Kitting
/// Completato/Fatto/tagliato
/// </summary>
docCartIRK,
Made,
/// <summary>
/// Dettaglio aggregato CART --> Item Requested Kitting
/// Preso da operatore
/// </summary>
docCartIRKSum
PickUp,
/// <summary>
/// Depositato su Bin/Cesta
/// </summary>
Removed,
/// <summary>
/// Indefinito
/// </summary>
Undef
}
/// <summary>
/// Tipologia di macchina
/// </summary>
public enum mType
{
Multiax = 0,
Offline
}
/// <summary>
/// Tipologia di ordine
/// </summary>
public enum oType
{
BatchRequest = 0,
OfflineOrder
}
/// <summary>
@@ -311,4 +262,138 @@
accepted,
refused
}
}
/// <summary>
/// Stati degli oggetti PANEL/SHEET
/// </summary>
public enum PStatus
{
/// <summary>
/// Programmato
/// </summary>
Programmed = 0,
/// <summary>
/// Stampa in corso
/// </summary>
Printing,
/// <summary>
/// Stampa completata
/// </summary>
Printed,
/// <summary>
/// Lavorazione in corso
/// </summary>
Machining,
/// <summary>
/// Lavorazione completata
/// </summary>
Machined,
/// <summary>
/// In fase di scaricamento
/// </summary>
Unloading,
/// <summary>
/// Completato / scaricato da macchina (anche su tavola di scarico)
/// </summary>
Unloaded,
/// <summary>
/// Presente / letto su PROD e pronto su scissor lift
/// </summary>
Present,
/// <summary>
/// Da rilavorare
/// </summary>
ToBeRedone
}
/// <summary>
/// tipologia di report (FILE rdlc) gestito in stampa...
/// </summary>
public enum reportRichiesto
{
binPre,
binPost,
bunkGroup,
bunkList,
cart,
offline,
part,
otherPart,
cartIRKList,
cartIRKGroup,
remnants,
cartSpecParts
}
/// <summary>
/// tipologia di DOCUMENTO gestito in stampa...
/// </summary>
public enum tipoDocumento
{
/// <summary>
/// Etichetta per un BIN (pre esecuzione compito, es verniciatura)
/// </summary>
docBinPre,
/// <summary>
/// Etichetta per un BIN (POST esecuzione compito, es verniciatura)
/// </summary>
docBinPost,
/// <summary>
/// Etichetta per un CART
/// </summary>
docCart,
/// <summary>
/// Documento per singolo ITEM:
/// - QR code
/// - num cart/bin
/// - T/P/* (se va fatto qualcosa di speciale)
/// - codice dmtx leggibile (es IT000023) su NUOVA riga
/// </summary>
docPart,
/// <summary>
/// Documento per singolo OtherItem:
/// - QR code
/// - cod originale
/// - descrizione
/// </summary>
docOtherPart,
/// <summary>
/// doc per STACK
/// </summary>
docStack,
/// <summary>
/// NON DEFINITO
/// </summary>
docND,
/// <summary>
/// Dettaglio massimo CART --> Item Requested Kitting
/// </summary>
docCartIRK,
/// <summary>
/// Dettaglio aggregato CART --> Item Requested Kitting
/// </summary>
docCartIRKSum,
/// <summary>
/// Dettaglio aggregato CART --> SpecialPart (come CANYON)
/// </summary>
docCartSpecialPart
}
}
+255 -181
View File
@@ -8,8 +8,225 @@ namespace NKC_SDK
{
public class NKC
{
#region utils comunicazione HTTP
#region Protected Fields
/// <summary>
/// file locale per persistenza BUNK
/// </summary>
protected string persistFileName = "data/persistFile.json";
#endregion Protected Fields
#region Public Constructors
/// <summary>
/// Classe per effettuare comunicazioni con NKC
/// </summary>
/// <param name="baseIp">IP di base x ping</param>
/// <param name="baseUrl">URL di base x chiamate REST</param>
/// <param name="codPost">Codice posstazione/macchina x cui si fa chiamata</param>
public NKC(string baseIp, string baseUrl, string codPost)
{
_baseIp = baseIp;
_baseUrl = baseUrl;
_codPost = codPost;
}
#endregion Public Constructors
#region Protected Properties
/// <summary>
/// DnsName/IP di base x chaimate
/// </summary>
protected string _baseIp { get; set; } = "seriate.steamware.net";
/// <summary>
/// URL di base per la comunicazione
///
/// PROD: http://seriate.steamware.net:8083/NKC/
/// DEV: https://localhost:44388/
/// </summary>
protected string _baseUrl { get; set; } = @"http://seriate.steamware.net:8083/NKC/";
/// <summary>
/// COD macchina x cui si effettua chiamata
/// </summary>
protected string _codPost { get; set; } = "";
protected string urlAlive
{
get
{
return $"{_baseUrl}api/Alive";
}
}
protected string urlAliveClock
{
get
{
return $"{_baseUrl}api/Alive/1";
}
}
protected string urlCurrBunk
{
get
{
return $"{_baseUrl}api/Bunk";
}
}
protected string urlCurrSheet4Mac
{
get
{
return $"{_baseUrl}api/Sheet/{_codPost}";
}
}
/// <summary>
/// URL x salvataggio dati MachineStat
/// </summary>
/// <returns></returns>
protected string urlPutMachStat
{
get
{
return $"{_baseUrl}api/MachineStat";
//return $"{_baseUrl}api/MachineStat/{_machine}";
}
}
/// <summary>
/// URL x salvataggio dati SHEET
/// </summary>
/// <returns></returns>
protected string urlPutSheetList
{
get
{
return $"{_baseUrl}api/Sheet/{_codPost}";
}
}
#endregion Protected Properties
#region Public Properties
/// <summary>
/// Oggetto che contiene l'oggetto SHEET WorkList corrente salvato LOCALMENTE
/// </summary>
public SheetWorkList persistedSheetList
{
get
{
SheetWorkList answ = new SheetWorkList();
try
{
string rawdata = File.ReadAllText(persistFileName);
answ = JsonConvert.DeserializeObject<SheetWorkList>(rawdata);
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione durante recupero locale della SheetList{Environment.NewLine}{exc}");
}
return answ;
}
set
{
try
{
// serializzo oggetto
string rawdata = JsonConvert.SerializeObject(value);
// salvo in locale
File.WriteAllText(persistFileName, rawdata);
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione durante salvataggio locale della SheetList{Environment.NewLine}{exc}");
}
}
}
/// <summary>
/// Effettua test alive all'indirizzo del server
/// </summary>
public bool testAlive
{
get
{
bool answ = false;
string returnData = callUrl(urlAlive);
returnData = JsonConvert.DeserializeObject<string>(returnData);
answ = returnData == "OK";
// rendo!
return answ;
}
}
/// <summary>
/// Effettua test ping all'indirizzo del server
/// </summary>
public DateTime testClock
{
get
{
DateTime oggi = DateTime.Today;
DateTime answ = oggi.AddYears(-oggi.Year + 1900).AddMonths(-oggi.Month).AddDays(-oggi.Day + 1);
// recupero!
string returnData = callUrl(urlAliveClock);
try
{
DateTime.TryParse(JsonConvert.DeserializeObject<string>(returnData), out answ);
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione durante testClock, ricevuto {returnData}{Environment.NewLine}{exc}");
}
// rendo!
return answ;
}
}
/// <summary>
/// Effettua test ping all'indirizzo del server
/// </summary>
public PingReply testPing
{
get
{
Ping myPing = new Ping();
// timeout a 1 sec!
PingReply answ = myPing.Send(_baseIp, 1000);
// rendo!
return answ;
}
}
#endregion Public Properties
#region Protected Methods
protected string urlGetBunk(int currBunkId, string CodPost)
{
return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=false&machine={CodPost}";
}
protected string urlNextBunk(int currBunkId, string CodPost)
{
return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=true&machine={CodPost}";
}
protected string urlPutBunk(int currBunkId)
{
return $"{_baseUrl}api/Bunk/{currBunkId}";
}
#endregion Protected Methods
#region Public Methods
/// <summary>
/// Effettua chiamata URL e restituisce risultato
@@ -34,6 +251,7 @@ namespace NKC_SDK
// restituisco valore!
return answ;
}
/// <summary>
/// Effettua chiamata URL e restituisce risultato
/// </summary>
@@ -86,151 +304,14 @@ namespace NKC_SDK
return answ;
}
#endregion
#region URL di base
protected string urlAlive
public static PingReply testPingDevice(string address)
{
get
{
return $"{_baseUrl}api/Alive";
}
Ping myPing = new Ping();
// timeout a 1 sec!
PingReply answ = myPing.Send(address, 2000);
// rendo!
return answ;
}
protected string urlAliveClock
{
get
{
return $"{_baseUrl}api/Alive/1";
}
}
protected string urlCurrBunk
{
get
{
return $"{_baseUrl}api/Bunk";
}
}
protected string urlCurrSheet4Mac
{
get
{
return $"{_baseUrl}api/Sheet/{_codPost}";
}
}
protected string urlGetBunk(int currBunkId)
{
return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=false";
}
protected string urlNextBunk(int currBunkId)
{
return $"{_baseUrl}api/Bunk/{currBunkId}?showNext=true";
}
protected string urlPutBunk(int currBunkId)
{
return $"{_baseUrl}api/Bunk/{currBunkId}";
}
/// <summary>
/// URL x salvataggio dati SHEET
/// </summary>
/// <returns></returns>
protected string urlPutSheetList
{
get
{
return $"{_baseUrl}api/Sheet/{_codPost}";
}
}
/// <summary>
/// file locale per persistenza BUNK
/// </summary>
protected string persistFileName = "data/persistFile.json";
#endregion
/// <summary>
/// URL di base per la comunicazione
///
/// PROD: http://seriate.steamware.net:8083/NKC/
/// DEV: https://localhost:44388/
/// </summary>
protected string _baseUrl { get; set; } = @"http://seriate.steamware.net:8083/NKC/";
/// <summary>
/// DnsName/IP di base x chaimate
/// </summary>
protected string _baseIp { get; set; } = "seriate.steamware.net";
/// <summary>
/// COD macchina x cui si effettua chiamata
/// </summary>
protected string _codPost { get; set; } = "";
/// <summary>
/// Classe per effettuare comunicazioni con NKC
/// </summary>
/// <param name="baseIp">IP di base x ping</param>
/// <param name="baseUrl">URL di abse x chiamate REST</param>
/// <param name="codPost">Codice posstazione/macchina x cui si fa chiamata</param>
public NKC(string baseIp, string baseUrl, string codPost)
{
_baseIp = baseIp;
_baseUrl = baseUrl;
_codPost = codPost;
}
/// <summary>
/// Effettua test ping all'indirizzo del server
/// </summary>
public PingReply testPing
{
get
{
Ping myPing = new Ping();
// timeout a 1 sec!
PingReply answ = myPing.Send(_baseIp, 1000);
// rendo!
return answ;
}
}
/// <summary>
/// Effettua test alive all'indirizzo del server
/// </summary>
public bool testAlive
{
get
{
bool answ = false;
string returnData = callUrl(urlAlive);
returnData = JsonConvert.DeserializeObject<string>(returnData);
answ = returnData == "OK";
// rendo!
return answ;
}
}
/// <summary>
/// Effettua test ping all'indirizzo del server
/// </summary>
public DateTime testClock
{
get
{
DateTime oggi = DateTime.Today;
DateTime answ = oggi.AddYears(-oggi.Year + 1900).AddMonths(-oggi.Month).AddDays(-oggi.Day + 1);
// recupero!
string returnData = callUrl(urlAliveClock);
try
{
DateTime.TryParse(JsonConvert.DeserializeObject<string>(returnData), out answ);
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione durante testClock, ricevuto {returnData}{Environment.NewLine}{exc}");
}
// rendo!
return answ;
}
}
#region metodi per SheetWorklist
/// <summary>
/// Recupera elenco dei fogli ATTIVI
@@ -254,6 +335,32 @@ namespace NKC_SDK
}
return answ;
}
/// <summary>
/// Effettua salvataggio dell'elenco info stati/eventi su NKC
/// </summary>
/// <param name="updatedInfo"></param>
public bool saveMachStatRecords(MachineStatData updatedInfo)
{
bool answ = false;
string rawdata = "";
try
{
// aggiungo macchina nel codice dei fogli...
updatedInfo.Machine = _codPost;
// serializzo oggetto
rawdata = JsonConvert.SerializeObject(updatedInfo);
// invio con metodo put!
putData(urlPutMachStat, rawdata);
answ = true;
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione durante saveMachStatRecords, ricevuto {rawdata}{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// Effettua salvataggio dell'elenco dei fogli (1..n) su NKC
/// </summary>
@@ -264,6 +371,8 @@ namespace NKC_SDK
string rawdata = "";
try
{
// aggiungo macchina nel codice dei fogli...
updatedSheetList.Machine = _codPost;
// serializzo oggetto
rawdata = JsonConvert.SerializeObject(updatedSheetList);
// invio con metodo put!
@@ -276,42 +385,7 @@ namespace NKC_SDK
}
return answ;
}
/// <summary>
/// Oggetto che contiene l'oggetto SHEET WorkList corrente salvato LOCALMENTE
/// </summary>
public SheetWorkList persistedSheetList
{
get
{
SheetWorkList answ = new SheetWorkList();
try
{
string rawdata = File.ReadAllText(persistFileName);
answ = JsonConvert.DeserializeObject<SheetWorkList>(rawdata);
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione durante recupero locale della SheetList{Environment.NewLine}{exc}");
}
return answ;
}
set
{
try
{
// serializzo oggetto
string rawdata = JsonConvert.SerializeObject(value);
// salvo in locale
File.WriteAllText(persistFileName, rawdata);
}
catch (Exception exc)
{
Log.Instance.Error($"Eccezione durante salvataggio locale della SheetList{Environment.NewLine}{exc}");
}
}
}
#endregion
#endregion Public Methods
}
}
}
+18 -11
View File
@@ -9,9 +9,10 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>NKC_SDK</RootNamespace>
<AssemblyName>NKC_SDK</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<Deterministic>true</Deterministic>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -21,6 +22,7 @@
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
@@ -29,17 +31,28 @@
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug-Prod|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\Debug-Prod\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
<ErrorReport>prompt</ErrorReport>
</PropertyGroup>
<ItemGroup>
<Reference Include="Newtonsoft.Json, Version=12.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.12.0.3\lib\net40\Newtonsoft.Json.dll</HintPath>
<Reference Include="Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.13.0.3\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
<Reference Include="NLog, Version=4.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.4.6.8\lib\net40-client\NLog.dll</HintPath>
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
<HintPath>..\packages\NLog.5.3.2\lib\net46\NLog.dll</HintPath>
</Reference>
<Reference Include="System" />
<Reference Include="System.Configuration" />
<Reference Include="System.Core" />
<Reference Include="System.IO.Compression" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.ServiceModel" />
<Reference Include="System.Transactions" />
@@ -61,12 +74,6 @@
<Compile Include="Utils.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="NLog.config">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
<None Include="NLog.xsd">
<SubType>Designer</SubType>
</None>
<None Include="packages.config" />
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
-34
View File
@@ -1,34 +0,0 @@
<?xml version="1.0" encoding="utf-8" ?>
<nlog xmlns="http://www.nlog-project.org/schemas/NLog.xsd"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.nlog-project.org/schemas/NLog.xsd NLog.xsd"
autoReload="true"
throwExceptions="false"
internalLogLevel="Off" internalLogFile="c:\temp\nlog-internal.log">
<!-- optional, add some variables
https://github.com/nlog/NLog/wiki/Configuration-file#variables
-->
<variable name="myvar" value="myvalue"/>
<!--
See https://github.com/nlog/nlog/wiki/Configuration-file
for information on customizing logging rules and outputs.
-->
<targets>
<!--
add your targets here
See https://github.com/nlog/NLog/wiki/Targets for possible targets.
See https://github.com/nlog/NLog/wiki/Layout-Renderers for the possible layout renderers.
-->
<!-- Write events to a file with the date in the filename. -->
<target xsi:type="File" name="f" fileName="${basedir}/logs/${shortdate}.log"
layout="${longdate} ${uppercase:${level}} ${message}" />
</targets>
<rules>
<logger name="*" minlevel="Debug" writeTo="f" />
</rules>
</nlog>
-3556
View File
File diff suppressed because it is too large Load Diff
+875 -460
View File
File diff suppressed because it is too large Load Diff
+2 -4
View File
@@ -1,7 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Newtonsoft.Json" version="12.0.3" targetFramework="net40" />
<package id="NLog" version="4.6.8" targetFramework="net40" />
<package id="NLog.Config" version="4.6.8" targetFramework="net40" />
<package id="NLog.Schema" version="4.6.8" targetFramework="net40" />
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
<package id="NLog" version="5.3.2" targetFramework="net462" />
</packages>
+20 -2
View File
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 16
VisualStudioVersion = 16.0.29102.190
# Visual Studio Version 17
VisualStudioVersion = 17.5.33627.172
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "NKC_WF", "NKC_WF\NKC_WF.csproj", "{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}"
EndProject
@@ -23,6 +23,8 @@ Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Debug-LELE|Any CPU = Debug-LELE|Any CPU
Debug-Prod|Any CPU = Debug-Prod|Any CPU
IIS02|Any CPU = IIS02|Any CPU
Prod|Any CPU = Prod|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
@@ -31,6 +33,10 @@ Global
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Debug|Any CPU.Build.0 = Debug|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Debug-LELE|Any CPU.ActiveCfg = Debug-LELE|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Debug-LELE|Any CPU.Build.0 = Debug-LELE|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Debug-Prod|Any CPU.ActiveCfg = Debug-Prod|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Debug-Prod|Any CPU.Build.0 = Debug-Prod|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.IIS02|Any CPU.ActiveCfg = IIS02|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.IIS02|Any CPU.Build.0 = IIS02|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Prod|Any CPU.ActiveCfg = Prod|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Prod|Any CPU.Build.0 = Prod|Any CPU
{6CEBB3D9-217D-42E2-8D26-2FB3A5DE2BF5}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -39,6 +45,10 @@ Global
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Debug-LELE|Any CPU.ActiveCfg = Debug-LELE|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Debug-LELE|Any CPU.Build.0 = Debug-LELE|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Debug-Prod|Any CPU.ActiveCfg = Debug-Prod|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Debug-Prod|Any CPU.Build.0 = Debug-Prod|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.IIS02|Any CPU.ActiveCfg = Release|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.IIS02|Any CPU.Build.0 = Release|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Prod|Any CPU.ActiveCfg = Release|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Prod|Any CPU.Build.0 = Release|Any CPU
{4308EA22-4C18-4A77-84DF-C6BCDD7BD07C}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -47,6 +57,10 @@ Global
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Debug|Any CPU.Build.0 = Debug|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Debug-LELE|Any CPU.ActiveCfg = Debug|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Debug-LELE|Any CPU.Build.0 = Debug|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Debug-Prod|Any CPU.ActiveCfg = Debug|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Debug-Prod|Any CPU.Build.0 = Debug|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.IIS02|Any CPU.ActiveCfg = Release|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.IIS02|Any CPU.Build.0 = Release|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Prod|Any CPU.ActiveCfg = Release|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Prod|Any CPU.Build.0 = Release|Any CPU
{175AF851-9AED-4D5F-8571-9CEC8B2D2320}.Release|Any CPU.ActiveCfg = Release|Any CPU
@@ -55,6 +69,10 @@ Global
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Debug-LELE|Any CPU.ActiveCfg = Debug|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Debug-LELE|Any CPU.Build.0 = Debug|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Debug-Prod|Any CPU.ActiveCfg = Debug|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Debug-Prod|Any CPU.Build.0 = Debug|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.IIS02|Any CPU.ActiveCfg = Release|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.IIS02|Any CPU.Build.0 = Release|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Prod|Any CPU.ActiveCfg = Release|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Prod|Any CPU.Build.0 = Release|Any CPU
{5A0B6E45-169B-44D4-9E24-13718B8EB7CC}.Release|Any CPU.ActiveCfg = Release|Any CPU
+1 -1
View File
@@ -1,5 +1,5 @@
---------------------------------------------------------------
------- SteamWareLib SDK -------
------- SteamWare SDK -------
---------------------------------------------------------------
Libreria di utility base di SteamWare.
+29
View File
@@ -0,0 +1,29 @@
Test gestione nuova conf redis con sentinel:
cambiato in web.config vari i parametri da sostituire con i nuovi tramite sentinel:
in particolare
- niente pwd
- tramite sentinel (su redis01 x ora)
- su ambiente devel
quindi diventa
* redis.ufficio:26379,serviceName=devel
oppure se non ci fosse sentinel tramite haproxy
* redis01.ufficio:26379,serviceName=devel
nuovi:
<add key="RedisConn" value="redis.ufficio:26379,serviceName=devel,abortConnect=false,ssl=false" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
<add key="RedisConnAdmin" value="redis.ufficio:26379,serviceName=devel,abortConnect=false,ssl=false,allowAdmin=true" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
vecchi:
<add key="RedisConn" value="nkcredis.steamware.net,abortConnect=false,ssl=false,password=BtN9Py1wtLfLRvmzWnOPJ7RytDM+CLiVsJ/16zduNTlV8IOPGNrtzJSXPUnImA5PqmUMhKaUqo9NdHIG" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
<add key="RedisConnAdmin" value="nkcredis.steamware.net,abortConnect=false,ssl=false,password=BtN9Py1wtLfLRvmzWnOPJ7RytDM+CLiVsJ/16zduNTlV8IOPGNrtzJSXPUnImA5PqmUMhKaUqo9NdHIG,allowAdmin=true" xdt:Transform="SetAttributes" xdt:Locator="Match(key)"/>
file interessati:
- Web.Debug.config
- Web.Debug-Lele.config
- Web.Debug-Prod.config
- Web.Release.config
Binary file not shown.
@@ -19,13 +19,13 @@
<targets async="true">
<target xsi:type="File"
name="SteamWareLib"
name="SteamWare"
fileName="${basedir}/logs/${shortdate}-SteamWare.log"
layout="${longdate} ${uppercase:${level}} ${message}"
/>
</targets>
<rules>
<logger name="SteamWare.*" minlevel="Debug" writeTo="SteamWareLib" />
<logger name="SteamWare.*" minlevel="Debug" writeTo="SteamWare" />
</rules>
</nlog>
@@ -2,8 +2,10 @@
_adminEmail samuele@steamware.net,info@steamware.net samuele@steamware.net,info@steamware.net info@steamware.net
_allowForceUser true true abilita login forzato
_commonPages menu menu pagina comune
_emailPwd drmfsls16 drmfsls16 drmfsls16
_emailUser steamwarebot@gmail.com steamwarebot@gmail.com steamwarebot@gmail.com
_emailPwd siamoInViaNazionale93 siamoInViaNazionale93 siamoInViaNazionale93
_emailUser steamwarebot@outlook.it steamwarebot@outlook.it steamwarebot@outlook.it
_smtpCli smtp-mail.outlook.com smtp-mail.outlook.com smtp-mail.outlook.com
_fromEmail steamwarebot@outlook.it steamwarebot@outlook.it steamwarebot@outlook.it
_enableSSL true true true
_fromEmail webmaster@admodelling.org webmaster@admodelling.org email mittente eventuali msg
_righeDataGrid 30 30 Num righe datagrid std
+11
View File
@@ -4,6 +4,8 @@ namespace NKC_WF
{
public class BundleConfig
{
#region Public Methods
// Per altre informazioni sulla creazione di bundle, vedere https://go.microsoft.com/fwlink/?LinkID=303951
public static void RegisterBundles(BundleCollection bundles)
{
@@ -29,9 +31,18 @@ namespace NKC_WF
bundles.Add(new ScriptBundle("~/bundles/modernizr").Include(
"~/Scripts/modernizr-*"));
bundles.Add(new ScriptBundle("~/bundles/jsMoment").Include(
"~/Scripts/moment.js"));
bundles.Add(new ScriptBundle("~/bundles/jsChart").Include(
"~/Scripts/Chart.js"
//,"~/Scripts/hammerjs@2.0.8.js"
//,"~/Scripts/chartjs-plugin-zoom@next.js"
));
// abilito bundle "forzato"!
BundleTable.EnableOptimizations = true;
}
#endregion Public Methods
}
}
+5 -4
View File
@@ -1,4 +1,5 @@
using SteamWare;
using NKC_SDK;
using SteamWare;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -10,16 +11,16 @@ namespace NKC_WF.App_Start
{
public static void Init()
{
logger.lg.scriviLog("Start NKC_Startup.init()", tipoLog.STARTUP);
Log.Instance.Info("Start NKC_Startup.init()", tipoLog.STARTUP);
try
{
// inizializzo appConf prima di tutto il resto...
memLayer.ML.resetAppConf();
logger.lg.scriviLog("Completed preliminary setup AppConf execution", tipoLog.STARTUP);
Log.Instance.Info("Completed preliminary setup AppConf execution", tipoLog.STARTUP);
}
catch (Exception exc)
{
logger.lg.scriviLog($"Exception during preliminary INIT app phase{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
Log.Instance.Info($"Exception during preliminary INIT app phase{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
}
}
+52 -34
View File
@@ -1,4 +1,5 @@
using AppData;
using NKC_SDK;
using SteamWare;
using System;
using System.IO;
@@ -8,10 +9,44 @@ namespace NKC_WF
{
public class BasePage : System.Web.UI.Page
{
#region Public Methods
/// <summary>
/// Membro gestione accessi al datalayer (istanza x ogni classe controllo)
/// Wrapper scrittura log ERROR
/// </summary>
protected DataLayer DLMan = new DataLayer();
/// <param name="message"></param>
public void lgError(string message)
{
Log.Instance.Error(message);
}
/// <summary>
/// Wrapper scrittura log EXCEPTION
/// </summary>
/// <param name="message"></param>
public void lgException(string message, Exception exc)
{
Log.Instance.Error($"{message}{Environment.NewLine}{exc}");
}
/// <summary>
/// Wrapper scrittura log FATAL
/// </summary>
/// <param name="message"></param>
public void lgFatal(string message, Exception exc)
{
Log.Instance.Error($"{message}{Environment.NewLine}{exc}");
}
/// <summary>
/// Wrapper scrittura log INFO
/// </summary>
/// <param name="message"></param>
public void lgInfo(string message)
{
Log.Instance.Info(message);
}
/// <summary>
/// Wrapper traduzione termini
/// </summary>
@@ -21,38 +56,21 @@ namespace NKC_WF
{
return user_std.UtSn.Traduci(lemma);
}
/// <summary>
/// Wrapper scrittura log INFO
/// </summary>
/// <param name="message"></param>
public void lgInfo(string message)
{
logger.lg.scriviLog(message, tipoLog.INFO);
}
/// <summary>
/// Wrapper scrittura log ERROR
/// </summary>
/// <param name="message"></param>
public void lgError(string message)
{
logger.lg.scriviLog(message, tipoLog.ERROR);
}
/// <summary>
/// Wrapper scrittura log EXCEPTION
/// </summary>
/// <param name="message"></param>
public void lgException(string message, Exception exc)
{
logger.lg.scriviLog($"{message}{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
/// <summary>
/// Wrapper scrittura log FATAL
/// </summary>
/// <param name="message"></param>
public void lgFatal(string message, Exception exc)
{
logger.lg.scriviLog(message, tipoLog.FATAL);
}
#endregion Public Methods
#region Protected Fields
/// <summary>
/// Membro gestione accessi al datalayer (istanza x ogni classe controllo)
/// </summary>
protected DataLayer DLMan = new DataLayer();
/// <summary>
/// Codice macchina (da v2)
/// </summary>
protected string PlaceCod = "WRK001";
#endregion Protected Fields
}
}
+216 -154
View File
@@ -1,23 +1,40 @@
using AppData;
using Newtonsoft.Json;
using NKC_SDK;
using SteamWare;
using System;
using System.Collections.Generic;
using System.Web;
namespace NKC_WF
{
public class BaseUserControl : System.Web.UI.UserControl
{
#region Public Fields
/// <summary>
/// Postazione attuale (per ora cablata)
/// Codice macchina (da v2)
/// </summary>
protected string PlaceId
{
get
{
return "WRK001";
}
}
public string PlaceCod = "VIRTNE";
#endregion Public Fields
#region Public Events
/// <summary>
/// Generico evento di richiesta refresh a parent
/// </summary>
public event EventHandler eh_doRefresh;
/// <summary>
/// Generico evento di richiesta refresh a aprent
/// </summary>
public event EventHandler eh_doReset;
#endregion Public Events
#region Public Properties
/// <summary>
/// verifica sia ambiente PROD (vs DEV)
/// </summary>
@@ -28,18 +45,178 @@ namespace NKC_WF
return memLayer.ML.CRS("environment") == "PROD";
}
}
/// <summary>
/// Membro gestione accessi al datalayer (istanza x ogni classe controllo)
/// Recupera IP utente
/// </summary>
protected DataLayer DLMan = new DataLayer();
/// <returns></returns>
public string currIpAddress
{
get
{
string userip = Request.UserHostAddress;
return userip;
}
}
/// <summary>
/// Generico evento di richiesta refresh a aprent
/// pagina corrente...
/// </summary>
public event EventHandler eh_doRefresh;
public string currPage
{
get
{
string url = HttpContext.Current.Request.Url.PathAndQuery;
if (url.Contains("?"))
{
url = url.Substring(0, url.IndexOf("?"));
}
return url;
}
}
#endregion Public Properties
#region Public Methods
/// <summary>
/// Generico evento di richiesta refresh a aprent
/// determina CSS x colore testo da perc svuotamento...
/// </summary>
public event EventHandler eh_doReset;
/// <param name="ratio"></param>
/// <returns></returns>
public string getCssByRatio(double ratio)
{
string answ = "text-dark";
if (ratio == 0)
{
answ = "text-danger";
}
else if (ratio == 1)
{
answ = "text-success";
}
else
{
answ = "text-warning";
}
return answ;
}
/// <summary>
/// Restituisce URL immagine QRCode
/// </summary>
/// <param name="QrValue">Parametro da renderizzare con QRCode</param>
/// <returns></returns>
public string getImgUrl(object QrValue)
{
string baseUrl = $"{memLayer.ML.CRS("matrixUrl")}/HOME/QR_site/JSON?val=";
string payload = "{'baseUrl':'{0}','parameters':['" + $"{QrValue}" + "']}";
string answ = $"{baseUrl}{payload}";
return answ;
}
/// <summary>
/// Recupera valore intero da OBJ
/// </summary>
/// <param name="_val"></param>
/// <returns></returns>
public double getInt(object _val)
{
int answ = -999999;
int.TryParse(_val.ToString(), out answ);
return answ;
}
/// <summary>
/// Calcola il rapporto tra 2 valori
/// </summary>
/// <param name="_dividendo"></param>
/// <param name="_divisore"></param>
/// <returns></returns>
public double getRatio(object _dividendo, object _divisore)
{
double ratio = 0;
double dividendo = 0;
double divisore = 1;
double.TryParse(_dividendo.ToString(), out dividendo);
double.TryParse(_divisore.ToString(), out divisore);
// se divisore 0 --> 1
divisore = divisore == 0 ? 1 : divisore;
ratio = dividendo / divisore;
return ratio;
}
/// <summary>
/// Wrapper scrittura log DEBUG
/// </summary>
/// <param name="message"></param>
public void lgDebug(string message)
{
Log.Instance.Debug(message);
}
/// <summary>
/// Wrapper scrittura log ERROR
/// </summary>
/// <param name="message"></param>
public void lgError(string message)
{
Log.Instance.Error(message);
}
/// <summary>
/// Wrapper scrittura log EXCEPTION
/// </summary>
/// <param name="message"></param>
public void lgException(string message, Exception exc)
{
Log.Instance.Error($"{message}{Environment.NewLine}{exc}");
}
/// <summary>
/// Wrapper scrittura log FATAL
/// </summary>
/// <param name="message"></param>
public void lgFatal(string message, Exception exc)
{
Log.Instance.Error($"{message}{Environment.NewLine}{exc}");
}
/// <summary>
/// Wrapper scrittura log INFO
/// </summary>
/// <param name="message"></param>
public void lgInfo(string message)
{
Log.Instance.Info(message);
}
public string matByKey(object _matId)
{
string answ = "";
int matId = 0;
int.TryParse(_matId.ToString(), out matId);
try
{
answ = anagMateriali[matId];
}
catch
{ }
return answ;
}
/// <summary>
/// Converte obja intero
/// </summary>
/// <param name="valore"></param>
/// <returns></returns>
public int obj2int(object valore)
{
int answ = 0;
int.TryParse(valore.ToString(), out answ);
return answ;
}
/// <summary>
/// Chiamata evento
/// </summary>
@@ -51,17 +228,18 @@ namespace NKC_WF
eh_doRefresh(this, new EventArgs());
}
}
/// <summary>
/// Chiamata evento
/// </summary>
public void raiseReset()
{
// se qualcuno ascolta sollevo evento nuovo valore...
if (eh_doReset != null)
{
eh_doReset(this, new EventArgs());
}
}
/// <summary>
/// Wrapper traduzione termini
/// </summary>
@@ -69,9 +247,29 @@ namespace NKC_WF
/// <returns></returns>
public string traduci(string lemma)
{
return SteamWare.user_std.UtSn.Traduci(lemma);
string answ = $"__{lemma}__";
try
{
answ = SteamWare.user_std.UtSn.Traduci(lemma);
}
catch
{ }
return answ;
}
#endregion Public Methods
#region Protected Fields
/// <summary>
/// Membro gestione accessi al datalayer (istanza x ogni classe controllo)
/// </summary>
protected DataLayer DLMan = new DataLayer();
#endregion Protected Fields
#region Protected Properties
protected Dictionary<int, string> anagMateriali
{
set
@@ -96,7 +294,7 @@ namespace NKC_WF
{
answ.Add(item.MatID, item.MatDesc);
}
// salvo in redis
// salvo in redis
anagMateriali = answ;
}
// restituisco
@@ -104,142 +302,6 @@ namespace NKC_WF
}
}
public string matByKey(object _matId)
{
string answ = "";
int matId = 0;
int.TryParse(_matId.ToString(), out matId);
try
{
answ = anagMateriali[matId];
}
catch
{ }
return answ;
}
/// <summary>
/// Recupera IP utente
/// </summary>
/// <returns></returns>
public string currIpAddress
{
get
{
string userip = Request.UserHostAddress;
return userip;
}
}
/// <summary>
/// Restituisce URL immagine QRCode
/// </summary>
/// <param name="QrValue">Parametro da renderizzare con QRCode</param>
/// <returns></returns>
public string getImgUrl(object QrValue)
{
string baseUrl = $"{memLayer.ML.CRS("matrixUrl")}/HOME/QR_site/JSON?val=";
string payload = "{'baseUrl':'{0}','parameters':['" + $"{QrValue}" + "']}";
string answ = $"{baseUrl}{payload}";
return answ;
}
/// <summary>
/// Recupera valore intero da OBJ
/// </summary>
/// <param name="_val"></param>
/// <returns></returns>
public double getInt(object _val)
{
int answ= -999999;
int.TryParse(_val.ToString(), out answ);
return answ;
}
/// <summary>
/// Calcola il rapporto tra 2 valori
/// </summary>
/// <param name="_dividendo"></param>
/// <param name="_divisore"></param>
/// <returns></returns>
public double getRatio(object _dividendo, object _divisore)
{
double ratio = 0;
double dividendo = 0;
double divisore = 1;
double.TryParse(_dividendo.ToString(), out dividendo);
double.TryParse(_divisore.ToString(), out divisore);
ratio = dividendo / divisore;
return ratio;
}
/// <summary>
/// determina CSS x colore testo da perc svuotamento...
/// </summary>
/// <param name="ratio"></param>
/// <returns></returns>
public string getCssByRatio(double ratio)
{
string answ = "text-dark";
if (ratio == 0)
{
answ = "text-danger";
}
else if (ratio == 1)
{
answ = "text-success";
}
else
{
answ = "text-warning";
}
return answ;
}
/// <summary>
/// Converte obja intero
/// </summary>
/// <param name="valore"></param>
/// <returns></returns>
public int obj2int(object valore)
{
int answ = 0;
int.TryParse(valore.ToString(), out answ);
return answ;
}
/// <summary>
/// Wrapper scrittura log INFO
/// </summary>
/// <param name="message"></param>
public void lgInfo(string message)
{
logger.lg.scriviLog(message, tipoLog.INFO);
}
/// <summary>
/// Wrapper scrittura log DEBUG
/// </summary>
/// <param name="message"></param>
public void lgDebug(string message)
{
logger.lg.scriviLog(message, tipoLog.DEBUG);
}
/// <summary>
/// Wrapper scrittura log ERROR
/// </summary>
/// <param name="message"></param>
public void lgError(string message)
{
logger.lg.scriviLog(message, tipoLog.ERROR);
}
/// <summary>
/// Wrapper scrittura log EXCEPTION
/// </summary>
/// <param name="message"></param>
public void lgException(string message, Exception exc)
{
logger.lg.scriviLog($"{message}{Environment.NewLine}{exc}", tipoLog.EXCEPTION);
}
/// <summary>
/// Wrapper scrittura log FATAL
/// </summary>
/// <param name="message"></param>
public void lgFatal(string message, Exception exc)
{
logger.lg.scriviLog(message, tipoLog.FATAL);
}
#endregion Protected Properties
}
}
+16 -9
View File
@@ -5,6 +5,7 @@ namespace NKC_WF
{
public static class Compressor
{
#region Public Methods
public static byte[] Compress(byte[] data)
{
@@ -18,22 +19,28 @@ namespace NKC_WF
public static byte[] Decompress(byte[] data)
{
byte[] answ = new byte[1];
MemoryStream input = new MemoryStream();
input.Write(data, 0, data.Length);
input.Position = 0;
GZipStream gzip = new GZipStream(input,
CompressionMode.Decompress, true);
MemoryStream output = new MemoryStream();
byte[] buff = new byte[64];
int read = -1;
read = gzip.Read(buff, 0, buff.Length);
while (read > 0)
using (MemoryStream output = new MemoryStream())
{
output.Write(buff, 0, read);
byte[] buff = new byte[64];
int read = -1;
read = gzip.Read(buff, 0, buff.Length);
while (read > 0)
{
output.Write(buff, 0, read);
read = gzip.Read(buff, 0, buff.Length);
}
gzip.Close();
answ = output.ToArray();
}
gzip.Close();
return output.ToArray();
return answ;
}
#endregion Public Methods
}
}
}
+47
View File
@@ -0,0 +1,47 @@
/*
* DOM element rendering detection
* https://davidwalsh.name/detect-node-insertion
*/
@keyframes chartjs-render-animation {
from { opacity: 0.99; }
to { opacity: 1; }
}
.chartjs-render-monitor {
animation: chartjs-render-animation 0.001s;
}
/*
* DOM element resizing detection
* https://github.com/marcj/css-element-queries
*/
.chartjs-size-monitor,
.chartjs-size-monitor-expand,
.chartjs-size-monitor-shrink {
position: absolute;
direction: ltr;
left: 0;
top: 0;
right: 0;
bottom: 0;
overflow: hidden;
pointer-events: none;
visibility: hidden;
z-index: -1;
}
.chartjs-size-monitor-expand > div {
position: absolute;
width: 1000000px;
height: 1000000px;
left: 0;
top: 0;
}
.chartjs-size-monitor-shrink > div {
position: absolute;
width: 200%;
height: 200%;
left: 0;
top: 0;
}
+1
View File
@@ -0,0 +1 @@
@keyframes chartjs-render-animation{from{opacity:.99}to{opacity:1}}.chartjs-render-monitor{animation:chartjs-render-animation 1ms}.chartjs-size-monitor,.chartjs-size-monitor-expand,.chartjs-size-monitor-shrink{position:absolute;direction:ltr;left:0;top:0;right:0;bottom:0;overflow:hidden;pointer-events:none;visibility:hidden;z-index:-1}.chartjs-size-monitor-expand>div{position:absolute;width:1000000px;height:1000000px;left:0;top:0}.chartjs-size-monitor-shrink>div{position:absolute;width:200%;height:200%;left:0;top:0}
+63 -17
View File
@@ -22,6 +22,25 @@ body {
.textBig {
font-size: 1.5em;
}
.fs-1 {
font-size: 2em;
}
.fs-2 {
font-size: 1.7em;
}
.fs-3 {
font-size: 1.5em;
}
.fs-4 {
font-size: 1.3em;
}
.fs-5 {
font-size: 1.1em;
}
/* COmpresse gridview */
.gridview-comp td {
padding: 2px;
}
/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
.jumbotron {
@@ -42,6 +61,31 @@ body {
font-family: 'Roboto Condensed', sans-serif;
font-size: 0.9rem;
}
.smallTable {
font-size: 0.7rem;
font-family: 'Open Sans Condensed', sans-serif;
}
}
.GridPager a,
.GridPager span {
display: block;
height: 1.5em;
min-width: 1.1em;
text-align: center;
text-decoration: none;
}
.GridPager a {
background-color: #f5f5f5;
color: #969696;
/*border-top: 1px solid #969696;
border-bottom: 1px solid #969696;*/
}
.GridPager span {
background-color: #A1DCF2;
color: #000;
/*border-top: 1px solid #3AC0F2;
border-bottom: 1px solid #3AC0F2;*/
font-weight: bold;
}
.border-thick {
border-width: 3px !important;
@@ -88,8 +132,8 @@ body {
.smallText {
font-size: 0.8em;
}
/* Override the default bootstrap behavior where horizontal description lists
will truncate terms that are too long to fit in the left column
/* Override the default bootstrap behavior where horizontal description lists
will truncate terms that are too long to fit in the left column
*/
.dl-horizontal dt {
white-space: normal;
@@ -157,13 +201,13 @@ body {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
border: 1px solid #ddd;
box-sizing: border-box;
border-radius: 0.5rem;
border-radius: 1rem/2;
}
.shortcuts .shortcut-sm {
min-width: 4.5rem;
min-height: 3rem;
display: inline-block;
padding: 0.25rem 0;
padding: 1rem/4 0;
margin: 0 2px 1em;
vertical-align: top;
text-decoration: none;
@@ -176,7 +220,7 @@ body {
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffeeeeee', GradientType=0);
border: 1px solid #ddd;
box-sizing: border-box;
border-radius: 0.5rem;
border-radius: 1rem/2;
}
.shortcuts .shortcut .shortcut-icon {
width: 100%;
@@ -193,22 +237,24 @@ body {
color: #333;
}
.shortcuts .shortcut:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
color: #696969;
background: #00ABDE;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#00DEEF), to(#00ABDE));
background-image: -webkit-linear-gradient(top, #00DEEF, 0%, #00ABDE, 100%);
background-image: -moz-linear-gradient(top, #00DEEF 0%, #00ABDE 100%);
background-image: linear-gradient(to bottom, #00DEEF 0%, #00ABDE 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00DEEF', endColorstr='#00ABDE', GradientType=0);
}
.shortcuts .shortcut-sm:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
color: #696969;
background: #00ABDE;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#00DEEF), to(#00ABDE));
background-image: -webkit-linear-gradient(top, #00DEEF, 0%, #00ABDE, 100%);
background-image: -moz-linear-gradient(top, #00DEEF 0%, #00ABDE 100%);
background-image: linear-gradient(to bottom, #00DEEF 0%, #00ABDE 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00DEEF', endColorstr='#00ABDE', GradientType=0);
}
.shortcuts .shortcut:active {
box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
+64 -19
View File
@@ -13,7 +13,6 @@ body {
padding-right: 15px;
}
.textCondens {
/*font-family: 'Roboto Condensed', sans-serif;*/
font-family: 'Open Sans Condensed', sans-serif;
@@ -28,6 +27,27 @@ body {
font-size: 1.5em;
}
.fs-1 {
font-size: 2.0em;
}
.fs-2 {
font-size: 1.7em;
}
.fs-3 {
font-size: 1.5em;
}
.fs-4 {
font-size: 1.3em;
}
.fs-5 {
font-size: 1.1em;
}
/* COmpresse gridview */
.gridview-comp td{
padding: 2px;
}
/* Responsive: Portrait tablets and up */
@media screen and (min-width: 768px) {
.jumbotron {
@@ -52,12 +72,37 @@ body {
font-family: 'Roboto Condensed', sans-serif;
font-size: 0.9rem;
}
.smallTable {
font-size: 0.7rem;
font-family: 'Open Sans Condensed', sans-serif;
}
}
.GridPager a,
.GridPager span {
display: block;
height: 1.5em;
min-width: 1.1em;
text-align: center;
text-decoration: none;
}
.GridPager a {
background-color: #f5f5f5;
color: #969696;
/*border-top: 1px solid #969696;
border-bottom: 1px solid #969696;*/
}
.GridPager span {
background-color: #A1DCF2;
color: #000;
/*border-top: 1px solid #3AC0F2;
border-bottom: 1px solid #3AC0F2;*/
font-weight: bold;
}
@borderThick: 3px;
.border-thick {
@@ -113,8 +158,8 @@ body {
font-size: 0.8em;
}
/* Override the default bootstrap behavior where horizontal description lists
will truncate terms that are too long to fit in the left column
/* Override the default bootstrap behavior where horizontal description lists
will truncate terms that are too long to fit in the left column
*/
.dl-horizontal dt {
white-space: normal;
@@ -178,7 +223,6 @@ body {
@blSCut: 1rem;
.shortcuts {
text-align: center;
}
@@ -187,7 +231,7 @@ body {
min-width: @blSCut * 9;
min-height: @blSCut * 5;
display: inline-block;
padding: @blSCut*2/3 0;
padding: @blSCut*(2/3) 0;
margin: 0 2px 1em;
vertical-align: top;
text-decoration: none;
@@ -240,23 +284,25 @@ body {
}
.shortcuts .shortcut:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
color: #696969;
background: #00ABDE;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#00DEEF), to(#00ABDE));
background-image: -webkit-linear-gradient(top, #00DEEF, 0%, #00ABDE, 100%);
background-image: -moz-linear-gradient(top, #00DEEF 0%, #00ABDE 100%);
background-image: linear-gradient(to bottom, #00DEEF 0%, #00ABDE 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00DEEF', endColorstr='#00ABDE', GradientType=0);
}
.shortcuts .shortcut-sm:hover {
background: #E8E8E8;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#fafafa), to(#e1e1e1));
background-image: -webkit-linear-gradient(top, #fafafa, 0%, #e1e1e1, 100%);
background-image: -moz-linear-gradient(top, #fafafa 0%, #e1e1e1 100%);
background-image: linear-gradient(to bottom, #fafafa 0%, #e1e1e1 100%);
color: #696969;
background: #00ABDE;
background-image: -webkit-gradient(linear, left 0%, left 100%, from(#00DEEF), to(#00ABDE));
background-image: -webkit-linear-gradient(top, #00DEEF, 0%, #00ABDE, 100%);
background-image: -moz-linear-gradient(top, #00DEEF 0%, #00ABDE 100%);
background-image: linear-gradient(to bottom, #00DEEF 0%, #00ABDE 100%);
background-repeat: repeat-x;
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa', endColorstr='#ffe1e1e1', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#00DEEF', endColorstr='#00ABDE', GradientType=0);
}
.shortcuts .shortcut:active {
@@ -282,10 +328,9 @@ body {
color: #666;
}
@media (max-width: 992px) {
.shortcuts .shortcut {
min-width: @blSCut * 8;
min-height: @blSCut * 4;
}
}
}
+1 -1
View File
@@ -1 +1 @@
body{font-family:'Roboto Condensed',sans-serif;padding-top:50px;padding-bottom:20px;}.body-content{padding-left:15px;padding-right:15px;}.textCondens{font-family:'Open Sans Condensed',sans-serif;}.textNormal{font-family:'Roboto',sans-serif;}.textBig{font-size:1.5em;}@media screen and (min-width:768px){.jumbotron{margin-top:20px;}.body-content{padding:0;}body{font-family:'Roboto',sans-serif;}}@media(max-width:992px){.container{width:100%;}body{font-family:'Roboto Condensed',sans-serif;font-size:.9rem;}.smallTable{font-size:.7rem;font-family:'Open Sans Condensed',sans-serif;}}.border-thick{border-width:3px !important;}.flashColor{border:3px solid #00f;-webkit-animation-name:blueFlash;-webkit-animation-duration:.5s;-webkit-animation-timing-function:linear;-webkit-animation-delay:0s;-webkit-animation-iteration-count:infinite;-webkit-animation-direction:alternate;animation-name:blueFlash;animation-duration:.5s;animation-timing-function:linear;animation-delay:0s;animation-iteration-count:infinite;animation-direction:alternate;}@-webkit-keyframes blueFlash{0%{border-color:#c4dbff;}25%{border-color:#9dc4ff;}50%{border-color:#5ca5ff;}75%{border-color:#1b82ff;}100%{border-color:#005ccc;}}.bigText{font-size:1.3em;}.smallText{font-size:.8em;}.dl-horizontal dt{white-space:normal;}.deleted{text-decoration:line-through;}.padZL{padding-left:.2em;}.padZR{padding-right:.2em;}.padZRL{padding-left:.2em;padding-right:.2em;}.colAlt{color:#c93;}.fontBig{font-size:2em;}.tNote{color:#8a8a8a;font-style:italic;}.tNoWrap{white-space:nowrap;}.navbar{min-height:0;color:#696969;}.pagination{margin:5px 0;}.pageSelDD{width:6em;}.zeroWidth{width:0;}.shortcuts{text-align:center;}.shortcuts .shortcut{min-width:9rem;min-height:5rem;display:inline-block;padding:.66666667rem 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:.5rem;}.shortcuts .shortcut-sm{min-width:4.5rem;min-height:3rem;display:inline-block;padding:.25rem 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:.5rem;}.shortcuts .shortcut .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut-sm .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0);}.shortcuts .shortcut-sm:hover{background:#e8e8e8;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fafafa),to(#e1e1e1));background-image:-webkit-linear-gradient(top,#fafafa,0%,#e1e1e1,100%);background-image:-moz-linear-gradient(top,#fafafa 0%,#e1e1e1 100%);background-image:linear-gradient(to bottom,#fafafa 0%,#e1e1e1 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffafafa',endColorstr='#ffe1e1e1',GradientType=0);}.shortcuts .shortcut:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut-sm:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut:hover .shortcut-icon{color:#c93;}.shortcuts .shortcut-sm:hover .shortcut-icon{color:#666;}.shortcuts .shortcut-label{display:block;margin-top:.75em;font-weight:400;color:#666;}@media(max-width:992px){.shortcuts .shortcut{min-width:8rem;min-height:4rem;}}
body{font-family:'Roboto Condensed',sans-serif;padding-top:50px;padding-bottom:20px;}.body-content{padding-left:15px;padding-right:15px;}.textCondens{font-family:'Open Sans Condensed',sans-serif;}.textNormal{font-family:'Roboto',sans-serif;}.textBig{font-size:1.5em;}.fs-1{font-size:2em;}.fs-2{font-size:1.7em;}.fs-3{font-size:1.5em;}.fs-4{font-size:1.3em;}.fs-5{font-size:1.1em;}.gridview-comp td{padding:2px;}@media screen and (min-width:768px){.jumbotron{margin-top:20px;}.body-content{padding:0;}body{font-family:'Roboto',sans-serif;}}@media(max-width:992px){.container{width:100%;}body{font-family:'Roboto Condensed',sans-serif;font-size:.9rem;}.smallTable{font-size:.7rem;font-family:'Open Sans Condensed',sans-serif;}}.GridPager a,.GridPager span{display:block;height:1.5em;min-width:1.1em;text-align:center;text-decoration:none;}.GridPager a{background-color:#f5f5f5;color:#969696;}.GridPager span{background-color:#a1dcf2;color:#000;font-weight:bold;}.border-thick{border-width:3px!important;}.flashColor{border:3px solid #00f;-webkit-animation-name:blueFlash;-webkit-animation-duration:.5s;-webkit-animation-timing-function:linear;-webkit-animation-delay:0s;-webkit-animation-iteration-count:infinite;-webkit-animation-direction:alternate;animation-name:blueFlash;animation-duration:.5s;animation-timing-function:linear;animation-delay:0s;animation-iteration-count:infinite;animation-direction:alternate;}@-webkit-keyframes blueFlash{0%{border-color:#c4dbff;}25%{border-color:#9dc4ff;}50%{border-color:#5ca5ff;}75%{border-color:#1b82ff;}100%{border-color:#005ccc;}}.bigText{font-size:1.3em;}.smallText{font-size:.8em;}.dl-horizontal dt{white-space:normal;}.deleted{text-decoration:line-through;}.padZL{padding-left:.2em;}.padZR{padding-right:.2em;}.padZRL{padding-left:.2em;padding-right:.2em;}.colAlt{color:#c93;}.fontBig{font-size:2em;}.tNote{color:#8a8a8a;font-style:italic;}.tNoWrap{white-space:nowrap;}.navbar{min-height:0;color:#696969;}.pagination{margin:5px 0;}.pageSelDD{width:6em;}.zeroWidth{width:0;}.shortcuts{text-align:center;}.shortcuts .shortcut{min-width:9rem;min-height:5rem;display:inline-block;padding:.66666667rem 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2;}.shortcuts .shortcut-sm{min-width:4.5rem;min-height:3rem;display:inline-block;padding:1rem/4 0;margin:0 2px 1em;vertical-align:top;text-decoration:none;background:#f3f3f3;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#fff),to(#eee));background-image:-webkit-linear-gradient(top,#fff,0%,#eee,100%);background-image:-moz-linear-gradient(top,#fff 0%,#eee 100%);background-image:linear-gradient(to bottom,#fff 0%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff',endColorstr='#ffeeeeee',GradientType=0);border:1px solid #ddd;box-sizing:border-box;border-radius:1rem/2;}.shortcuts .shortcut .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut-sm .shortcut-icon{width:100%;margin-top:0;margin-bottom:0;font-size:2rem;color:#333;}.shortcuts .shortcut:hover{color:#696969;background:#00abde;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#00deef),to(#00abde));background-image:-webkit-linear-gradient(top,#00deef,0%,#00abde,100%);background-image:-moz-linear-gradient(top,#00deef 0%,#00abde 100%);background-image:linear-gradient(to bottom,#00deef 0%,#00abde 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00DEEF',endColorstr='#00ABDE',GradientType=0);}.shortcuts .shortcut-sm:hover{color:#696969;background:#00abde;background-image:-webkit-gradient(linear,left 0%,left 100%,from(#00deef),to(#00abde));background-image:-webkit-linear-gradient(top,#00deef,0%,#00abde,100%);background-image:-moz-linear-gradient(top,#00deef 0%,#00abde 100%);background-image:linear-gradient(to bottom,#00deef 0%,#00abde 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#00DEEF',endColorstr='#00ABDE',GradientType=0);}.shortcuts .shortcut:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut-sm:active{box-shadow:inset 0 3px 5px rgba(0,0,0,.125);}.shortcuts .shortcut:hover .shortcut-icon{color:#c93;}.shortcuts .shortcut-sm:hover .shortcut-icon{color:#666;}.shortcuts .shortcut-label{display:block;margin-top:.75em;font-weight:400;color:#666;}@media(max-width:992px){.shortcuts .shortcut{min-width:8rem;min-height:4rem;}}
+10 -37
View File
@@ -1,8 +1,8 @@
/*!
* Bootstrap Grid v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Bootstrap Grid v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
html {
box-sizing: border-box;
@@ -15,39 +15,12 @@ html {
box-sizing: inherit;
}
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
.container,
.container-fluid,
.container-sm,
.container-md,
.container-lg,
.container-xl {
width: 100%;
padding-right: 15px;
padding-left: 15px;
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+15 -17
View File
@@ -1,8 +1,8 @@
/*!
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Bootstrap Reboot v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/
*,
@@ -24,7 +24,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
@@ -133,12 +133,12 @@ a:hover {
text-decoration: underline;
}
a:not([href]) {
a:not([href]):not([class]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
@@ -155,6 +155,7 @@ pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
@@ -185,6 +186,7 @@ caption {
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
label {
@@ -196,9 +198,8 @@ button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
button:focus:not(:focus-visible) {
outline: 0;
}
input,
@@ -222,6 +223,10 @@ select {
text-transform: none;
}
[role="button"] {
cursor: pointer;
}
select {
word-wrap: normal;
}
@@ -254,13 +259,6 @@ input[type="checkbox"] {
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
File diff suppressed because one or more lines are too long
+5 -5
View File
@@ -1,8 +1,8 @@
/*!
* Bootstrap Reboot v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Bootstrap Reboot v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
* Forked from Normalize.css, licensed MIT (https://github.com/necolas/normalize.css/blob/master/LICENSE.md)
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]){color:inherit;text-decoration:none}a:not([href]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
*/*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans","Liberation Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus:not(:focus-visible){outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([class]){color:inherit;text-decoration:none}a:not([href]):not([class]):hover{color:inherit;text-decoration:none}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg{overflow:hidden;vertical-align:middle}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit;text-align:-webkit-match-parent}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus:not(:focus-visible){outline:0}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[role=button]{cursor:pointer}select{word-wrap:normal}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]:not(:disabled),[type=reset]:not(:disabled),[type=submit]:not(:disabled),button:not(:disabled){cursor:pointer}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}
/*# sourceMappingURL=bootstrap-reboot.min.css.map */
File diff suppressed because one or more lines are too long
+230 -156
View File
@@ -1,8 +1,8 @@
/*!
* Bootstrap v4.4.1 (https://getbootstrap.com/)
* Copyright 2011-2019 The Bootstrap Authors
* Copyright 2011-2019 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
* Bootstrap v4.6.0 (https://getbootstrap.com/)
* Copyright 2011-2021 The Bootstrap Authors
* Copyright 2011-2021 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
*/
:root {
--blue: #007bff;
@@ -31,7 +31,7 @@
--breakpoint-md: 768px;
--breakpoint-lg: 992px;
--breakpoint-xl: 1200px;
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
}
@@ -54,7 +54,7 @@ article, aside, figcaption, figure, footer, header, hgroup, main, nav, section {
body {
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
font-weight: 400;
line-height: 1.5;
@@ -163,12 +163,12 @@ a:hover {
text-decoration: underline;
}
a:not([href]) {
a:not([href]):not([class]) {
color: inherit;
text-decoration: none;
}
a:not([href]):hover {
a:not([href]):not([class]):hover {
color: inherit;
text-decoration: none;
}
@@ -185,6 +185,7 @@ pre {
margin-top: 0;
margin-bottom: 1rem;
overflow: auto;
-ms-overflow-style: scrollbar;
}
figure {
@@ -215,6 +216,7 @@ caption {
th {
text-align: inherit;
text-align: -webkit-match-parent;
}
label {
@@ -226,9 +228,8 @@ button {
border-radius: 0;
}
button:focus {
outline: 1px dotted;
outline: 5px auto -webkit-focus-ring-color;
button:focus:not(:focus-visible) {
outline: 0;
}
input,
@@ -252,6 +253,10 @@ select {
text-transform: none;
}
[role="button"] {
cursor: pointer;
}
select {
word-wrap: normal;
}
@@ -284,13 +289,6 @@ input[type="checkbox"] {
padding: 0;
}
input[type="date"],
input[type="time"],
input[type="datetime-local"],
input[type="month"] {
-webkit-appearance: listbox;
}
textarea {
overflow: auto;
resize: vertical;
@@ -541,39 +539,12 @@ pre code {
overflow-y: scroll;
}
.container {
width: 100%;
padding-right: 15px;
padding-left: 15px;
margin-right: auto;
margin-left: auto;
}
@media (min-width: 576px) {
.container {
max-width: 540px;
}
}
@media (min-width: 768px) {
.container {
max-width: 720px;
}
}
@media (min-width: 992px) {
.container {
max-width: 960px;
}
}
@media (min-width: 1200px) {
.container {
max-width: 1140px;
}
}
.container-fluid, .container-sm, .container-md, .container-lg, .container-xl {
.container,
.container-fluid,
.container-sm,
.container-md,
.container-lg,
.container-xl {
width: 100%;
padding-right: 15px;
padding-left: 15px;
@@ -2100,6 +2071,15 @@ pre code {
opacity: 1;
}
input[type="date"].form-control,
input[type="time"].form-control,
input[type="datetime-local"].form-control,
input[type="month"].form-control {
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
select.form-control:focus::-ms-value {
color: #495057;
background-color: #fff;
@@ -2247,6 +2227,7 @@ textarea.form-control {
.valid-tooltip {
position: absolute;
top: 100%;
left: 0;
z-index: 5;
display: none;
max-width: 100%;
@@ -2259,6 +2240,11 @@ textarea.form-control {
border-radius: 0.25rem;
}
.form-row > .col > .valid-tooltip,
.form-row > [class*="col-"] > .valid-tooltip {
left: 5px;
}
.was-validated :valid ~ .valid-feedback,
.was-validated :valid ~ .valid-tooltip,
.is-valid ~ .valid-feedback,
@@ -2288,7 +2274,7 @@ textarea.form-control {
.was-validated .custom-select:valid, .custom-select.is-valid {
border-color: #28a745;
padding-right: calc(0.75em + 2.3125rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='8' height='8' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
}
.was-validated .custom-select:valid:focus, .custom-select.is-valid:focus {
@@ -2347,6 +2333,7 @@ textarea.form-control {
.invalid-tooltip {
position: absolute;
top: 100%;
left: 0;
z-index: 5;
display: none;
max-width: 100%;
@@ -2359,6 +2346,11 @@ textarea.form-control {
border-radius: 0.25rem;
}
.form-row > .col > .invalid-tooltip,
.form-row > [class*="col-"] > .invalid-tooltip {
left: 5px;
}
.was-validated :invalid ~ .invalid-feedback,
.was-validated :invalid ~ .invalid-tooltip,
.is-invalid ~ .invalid-feedback,
@@ -2388,7 +2380,7 @@ textarea.form-control {
.was-validated .custom-select:invalid, .custom-select.is-invalid {
border-color: #dc3545;
padding-right: calc(0.75em + 2.3125rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px, url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") #fff no-repeat center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem);
background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat, #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23dc3545' viewBox='0 0 12 12'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e") center right 1.75rem/calc(0.75em + 0.375rem) calc(0.75em + 0.375rem) no-repeat;
}
.was-validated .custom-select:invalid:focus, .custom-select.is-invalid:focus {
@@ -2517,7 +2509,6 @@ textarea.form-control {
color: #212529;
text-align: center;
vertical-align: middle;
cursor: pointer;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
@@ -2551,6 +2542,10 @@ textarea.form-control {
opacity: 0.65;
}
.btn:not(:disabled):not(.disabled) {
cursor: pointer;
}
a.btn.disabled,
fieldset:disabled a.btn {
pointer-events: none;
@@ -3121,7 +3116,6 @@ fieldset:disabled a.btn {
.btn-link:focus, .btn-link.focus {
text-decoration: underline;
box-shadow: none;
}
.btn-link:disabled, .btn-link.disabled {
@@ -3403,7 +3397,7 @@ input[type="button"].btn-block {
.dropdown-item:hover, .dropdown-item:focus {
color: #16181b;
text-decoration: none;
background-color: #f8f9fa;
background-color: #e9ecef;
}
.dropdown-item.active, .dropdown-item:active {
@@ -3413,7 +3407,7 @@ input[type="button"].btn-block {
}
.dropdown-item.disabled, .dropdown-item:disabled {
color: #6c757d;
color: #adb5bd;
pointer-events: none;
background-color: transparent;
}
@@ -3580,8 +3574,9 @@ input[type="button"].btn-block {
.input-group > .custom-select,
.input-group > .custom-file {
position: relative;
-ms-flex: 1 1 0%;
flex: 1 1 0%;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
width: 1%;
min-width: 0;
margin-bottom: 0;
}
@@ -3611,12 +3606,6 @@ input[type="button"].btn-block {
z-index: 4;
}
.input-group > .form-control:not(:last-child),
.input-group > .custom-select:not(:last-child) {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .form-control:not(:first-child),
.input-group > .custom-select:not(:first-child) {
border-top-left-radius: 0;
@@ -3631,14 +3620,23 @@ input[type="button"].btn-block {
}
.input-group > .custom-file:not(:last-child) .custom-file-label,
.input-group > .custom-file:not(:last-child) .custom-file-label::after {
.input-group > .custom-file:not(:first-child) .custom-file-label {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
}
.input-group:not(.has-validation) > .form-control:not(:last-child),
.input-group:not(.has-validation) > .custom-select:not(:last-child),
.input-group:not(.has-validation) > .custom-file:not(:last-child) .custom-file-label::after {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group > .custom-file:not(:first-child) .custom-file-label {
border-top-left-radius: 0;
border-bottom-left-radius: 0;
.input-group.has-validation > .form-control:nth-last-child(n + 3),
.input-group.has-validation > .custom-select:nth-last-child(n + 3),
.input-group.has-validation > .custom-file:nth-last-child(n + 3) .custom-file-label::after {
border-top-right-radius: 0;
border-bottom-right-radius: 0;
}
.input-group-prepend,
@@ -3741,8 +3739,10 @@ input[type="button"].btn-block {
.input-group > .input-group-prepend > .btn,
.input-group > .input-group-prepend > .input-group-text,
.input-group > .input-group-append:not(:last-child) > .btn,
.input-group > .input-group-append:not(:last-child) > .input-group-text,
.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .btn,
.input-group:not(.has-validation) > .input-group-append:not(:last-child) > .input-group-text,
.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .btn,
.input-group.has-validation > .input-group-append:nth-last-child(n + 3) > .input-group-text,
.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),
.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {
border-top-right-radius: 0;
@@ -3761,9 +3761,12 @@ input[type="button"].btn-block {
.custom-control {
position: relative;
z-index: 1;
display: block;
min-height: 1.5rem;
padding-left: 1.5rem;
-webkit-print-color-adjust: exact;
color-adjust: exact;
}
.custom-control-inline {
@@ -3836,7 +3839,7 @@ input[type="button"].btn-block {
width: 1rem;
height: 1rem;
content: "";
background: no-repeat 50% / 50% 50%;
background: 50% / 50% 50% no-repeat;
}
.custom-checkbox .custom-control-label::before {
@@ -3925,7 +3928,7 @@ input[type="button"].btn-block {
line-height: 1.5;
color: #495057;
vertical-align: middle;
background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") no-repeat right 0.75rem center/8px 10px;
background: #fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='4' height='5' viewBox='0 0 4 5'%3e%3cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3e%3c/svg%3e") right 0.75rem center/8px 10px no-repeat;
border: 1px solid #ced4da;
border-radius: 0.25rem;
-webkit-appearance: none;
@@ -3994,6 +3997,7 @@ input[type="button"].btn-block {
width: 100%;
height: calc(1.5em + 0.75rem + 2px);
margin: 0;
overflow: hidden;
opacity: 0;
}
@@ -4023,6 +4027,7 @@ input[type="button"].btn-block {
z-index: 1;
height: calc(1.5em + 0.75rem + 2px);
padding: 0.375rem 0.75rem;
overflow: hidden;
font-weight: 400;
line-height: 1.5;
color: #495057;
@@ -4059,7 +4064,7 @@ input[type="button"].btn-block {
}
.custom-range:focus {
outline: none;
outline: 0;
}
.custom-range:focus::-webkit-slider-thumb {
@@ -4254,11 +4259,8 @@ input[type="button"].btn-block {
border-bottom: 1px solid #dee2e6;
}
.nav-tabs .nav-item {
margin-bottom: -1px;
}
.nav-tabs .nav-link {
margin-bottom: -1px;
border: 1px solid transparent;
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
@@ -4297,12 +4299,14 @@ input[type="button"].btn-block {
background-color: #007bff;
}
.nav-fill > .nav-link,
.nav-fill .nav-item {
-ms-flex: 1 1 auto;
flex: 1 1 auto;
text-align: center;
}
.nav-justified > .nav-link,
.nav-justified .nav-item {
-ms-flex-preferred-size: 0;
flex-basis: 0;
@@ -4412,8 +4416,12 @@ input[type="button"].btn-block {
height: 1.5em;
vertical-align: middle;
content: "";
background: no-repeat center center;
background-size: 100% 100%;
background: 50% / 100% 100% no-repeat;
}
.navbar-nav-scroll {
max-height: 75vh;
overflow-y: auto;
}
@media (max-width: 575.98px) {
@@ -4447,6 +4455,9 @@ input[type="button"].btn-block {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-sm .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-sm .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4489,6 +4500,9 @@ input[type="button"].btn-block {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-md .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-md .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4531,6 +4545,9 @@ input[type="button"].btn-block {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-lg .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-lg .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4573,6 +4590,9 @@ input[type="button"].btn-block {
-ms-flex-wrap: nowrap;
flex-wrap: nowrap;
}
.navbar-expand-xl .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand-xl .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4617,6 +4637,10 @@ input[type="button"].btn-block {
flex-wrap: nowrap;
}
.navbar-expand .navbar-nav-scroll {
overflow: visible;
}
.navbar-expand .navbar-collapse {
display: -ms-flexbox !important;
display: flex !important;
@@ -4661,7 +4685,7 @@ input[type="button"].btn-block {
}
.navbar-light .navbar-toggler-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(0, 0, 0, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-light .navbar-text {
@@ -4709,7 +4733,7 @@ input[type="button"].btn-block {
}
.navbar-dark .navbar-toggler-icon {
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba(255, 255, 255, 0.5)' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' width='30' height='30' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.5%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar-dark .navbar-text {
@@ -4743,14 +4767,26 @@ input[type="button"].btn-block {
margin-left: 0;
}
.card > .list-group:first-child .list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
.card > .list-group {
border-top: inherit;
border-bottom: inherit;
}
.card > .list-group:last-child .list-group-item:last-child {
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
.card > .list-group:first-child {
border-top-width: 0;
border-top-left-radius: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
.card > .list-group:last-child {
border-bottom-width: 0;
border-bottom-right-radius: calc(0.25rem - 1px);
border-bottom-left-radius: calc(0.25rem - 1px);
}
.card > .card-header + .list-group,
.card > .list-group + .card-footer {
border-top: 0;
}
.card-body {
@@ -4792,10 +4828,6 @@ input[type="button"].btn-block {
border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;
}
.card-header + .list-group .list-group-item:first-child {
border-top: 0;
}
.card-footer {
padding: 0.75rem 1.25rem;
background-color: rgba(0, 0, 0, 0.03);
@@ -4825,6 +4857,7 @@ input[type="button"].btn-block {
bottom: 0;
left: 0;
padding: 1.25rem;
border-radius: calc(0.25rem - 1px);
}
.card-img,
@@ -4936,6 +4969,10 @@ input[type="button"].btn-block {
}
}
.accordion {
overflow-anchor: none;
}
.accordion > .card {
overflow: hidden;
}
@@ -4973,7 +5010,7 @@ input[type="button"].btn-block {
}
.breadcrumb-item + .breadcrumb-item::before {
display: inline-block;
float: left;
padding-right: 0.5rem;
color: #6c757d;
content: "/";
@@ -5283,6 +5320,7 @@ a.badge-dark:focus, a.badge-dark.focus {
position: absolute;
top: 0;
right: 0;
z-index: 2;
padding: 0.75rem 1.25rem;
color: inherit;
}
@@ -5422,6 +5460,7 @@ a.badge-dark:focus, a.badge-dark.focus {
display: flex;
height: 1rem;
overflow: hidden;
line-height: 0;
font-size: 0.75rem;
background-color: #e9ecef;
border-radius: 0.25rem;
@@ -5454,8 +5493,8 @@ a.badge-dark:focus, a.badge-dark.focus {
}
.progress-bar-animated {
-webkit-animation: progress-bar-stripes 1s linear infinite;
animation: progress-bar-stripes 1s linear infinite;
-webkit-animation: 1s linear infinite progress-bar-stripes;
animation: 1s linear infinite progress-bar-stripes;
}
@media (prefers-reduced-motion: reduce) {
@@ -5484,6 +5523,7 @@ a.badge-dark:focus, a.badge-dark.focus {
flex-direction: column;
padding-left: 0;
margin-bottom: 0;
border-radius: 0.25rem;
}
.list-group-item-action {
@@ -5513,13 +5553,13 @@ a.badge-dark:focus, a.badge-dark.focus {
}
.list-group-item:first-child {
border-top-left-radius: 0.25rem;
border-top-right-radius: 0.25rem;
border-top-left-radius: inherit;
border-top-right-radius: inherit;
}
.list-group-item:last-child {
border-bottom-right-radius: 0.25rem;
border-bottom-left-radius: 0.25rem;
border-bottom-right-radius: inherit;
border-bottom-left-radius: inherit;
}
.list-group-item.disabled, .list-group-item:disabled {
@@ -5549,26 +5589,26 @@ a.badge-dark:focus, a.badge-dark.focus {
flex-direction: row;
}
.list-group-horizontal .list-group-item:first-child {
.list-group-horizontal > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal .list-group-item:last-child {
.list-group-horizontal > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
.list-group-horizontal .list-group-item.active {
.list-group-horizontal > .list-group-item.active {
margin-top: 0;
}
.list-group-horizontal .list-group-item + .list-group-item {
.list-group-horizontal > .list-group-item + .list-group-item {
border-top-width: 1px;
border-left-width: 0;
}
.list-group-horizontal .list-group-item + .list-group-item.active {
.list-group-horizontal > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
@@ -5578,22 +5618,22 @@ a.badge-dark:focus, a.badge-dark.focus {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-sm .list-group-item:first-child {
.list-group-horizontal-sm > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-sm .list-group-item:last-child {
.list-group-horizontal-sm > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
.list-group-horizontal-sm .list-group-item.active {
.list-group-horizontal-sm > .list-group-item.active {
margin-top: 0;
}
.list-group-horizontal-sm .list-group-item + .list-group-item {
.list-group-horizontal-sm > .list-group-item + .list-group-item {
border-top-width: 1px;
border-left-width: 0;
}
.list-group-horizontal-sm .list-group-item + .list-group-item.active {
.list-group-horizontal-sm > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
@@ -5604,22 +5644,22 @@ a.badge-dark:focus, a.badge-dark.focus {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-md .list-group-item:first-child {
.list-group-horizontal-md > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-md .list-group-item:last-child {
.list-group-horizontal-md > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
.list-group-horizontal-md .list-group-item.active {
.list-group-horizontal-md > .list-group-item.active {
margin-top: 0;
}
.list-group-horizontal-md .list-group-item + .list-group-item {
.list-group-horizontal-md > .list-group-item + .list-group-item {
border-top-width: 1px;
border-left-width: 0;
}
.list-group-horizontal-md .list-group-item + .list-group-item.active {
.list-group-horizontal-md > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
@@ -5630,22 +5670,22 @@ a.badge-dark:focus, a.badge-dark.focus {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-lg .list-group-item:first-child {
.list-group-horizontal-lg > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-lg .list-group-item:last-child {
.list-group-horizontal-lg > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
.list-group-horizontal-lg .list-group-item.active {
.list-group-horizontal-lg > .list-group-item.active {
margin-top: 0;
}
.list-group-horizontal-lg .list-group-item + .list-group-item {
.list-group-horizontal-lg > .list-group-item + .list-group-item {
border-top-width: 1px;
border-left-width: 0;
}
.list-group-horizontal-lg .list-group-item + .list-group-item.active {
.list-group-horizontal-lg > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
@@ -5656,38 +5696,36 @@ a.badge-dark:focus, a.badge-dark.focus {
-ms-flex-direction: row;
flex-direction: row;
}
.list-group-horizontal-xl .list-group-item:first-child {
.list-group-horizontal-xl > .list-group-item:first-child {
border-bottom-left-radius: 0.25rem;
border-top-right-radius: 0;
}
.list-group-horizontal-xl .list-group-item:last-child {
.list-group-horizontal-xl > .list-group-item:last-child {
border-top-right-radius: 0.25rem;
border-bottom-left-radius: 0;
}
.list-group-horizontal-xl .list-group-item.active {
.list-group-horizontal-xl > .list-group-item.active {
margin-top: 0;
}
.list-group-horizontal-xl .list-group-item + .list-group-item {
.list-group-horizontal-xl > .list-group-item + .list-group-item {
border-top-width: 1px;
border-left-width: 0;
}
.list-group-horizontal-xl .list-group-item + .list-group-item.active {
.list-group-horizontal-xl > .list-group-item + .list-group-item.active {
margin-left: -1px;
border-left-width: 1px;
}
}
.list-group-flush .list-group-item {
border-right-width: 0;
border-left-width: 0;
.list-group-flush {
border-radius: 0;
}
.list-group-flush .list-group-item:first-child {
border-top-width: 0;
.list-group-flush > .list-group-item {
border-width: 0 0 1px;
}
.list-group-flush:last-child .list-group-item:last-child {
.list-group-flush > .list-group-item:last-child {
border-bottom-width: 0;
}
@@ -5842,9 +5880,6 @@ button.close {
padding: 0;
background-color: transparent;
border: 0;
-webkit-appearance: none;
-moz-appearance: none;
appearance: none;
}
a.close.disabled {
@@ -5852,15 +5887,14 @@ a.close.disabled {
}
.toast {
-ms-flex-preferred-size: 350px;
flex-basis: 350px;
max-width: 350px;
overflow: hidden;
font-size: 0.875rem;
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border: 1px solid rgba(0, 0, 0, 0.1);
box-shadow: 0 0.25rem 0.75rem rgba(0, 0, 0, 0.1);
-webkit-backdrop-filter: blur(10px);
backdrop-filter: blur(10px);
opacity: 0;
border-radius: 0.25rem;
}
@@ -5892,6 +5926,8 @@ a.close.disabled {
background-color: rgba(255, 255, 255, 0.85);
background-clip: padding-box;
border-bottom: 1px solid rgba(0, 0, 0, 0.05);
border-top-left-radius: calc(0.25rem - 1px);
border-top-right-radius: calc(0.25rem - 1px);
}
.toast-body {
@@ -5982,6 +6018,9 @@ a.close.disabled {
.modal-dialog-centered::before {
display: block;
height: calc(100vh - 1rem);
height: -webkit-min-content;
height: -moz-min-content;
height: min-content;
content: "";
}
@@ -6107,6 +6146,9 @@ a.close.disabled {
}
.modal-dialog-centered::before {
height: calc(100vh - 3.5rem);
height: -webkit-min-content;
height: -moz-min-content;
height: min-content;
}
.modal-sm {
max-width: 300px;
@@ -6131,7 +6173,7 @@ a.close.disabled {
z-index: 1070;
display: block;
margin: 0;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal;
font-weight: 400;
line-height: 1.5;
@@ -6244,7 +6286,7 @@ a.close.disabled {
z-index: 1060;
display: block;
max-width: 276px;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-style: normal;
font-weight: 400;
line-height: 1.5;
@@ -6532,7 +6574,7 @@ a.close.disabled {
display: inline-block;
width: 20px;
height: 20px;
background: no-repeat 50% / 100% 100%;
background: 50% / 100% 100% no-repeat;
}
.carousel-control-prev-icon {
@@ -6621,8 +6663,8 @@ a.close.disabled {
border: 0.25em solid currentColor;
border-right-color: transparent;
border-radius: 50%;
-webkit-animation: spinner-border .75s linear infinite;
animation: spinner-border .75s linear infinite;
-webkit-animation: .75s linear infinite spinner-border;
animation: .75s linear infinite spinner-border;
}
.spinner-border-sm {
@@ -6638,6 +6680,8 @@ a.close.disabled {
}
50% {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@@ -6648,6 +6692,8 @@ a.close.disabled {
}
50% {
opacity: 1;
-webkit-transform: none;
transform: none;
}
}
@@ -6659,8 +6705,8 @@ a.close.disabled {
background-color: currentColor;
border-radius: 50%;
opacity: 0;
-webkit-animation: spinner-grow .75s linear infinite;
animation: spinner-grow .75s linear infinite;
-webkit-animation: .75s linear infinite spinner-grow;
animation: .75s linear infinite spinner-grow;
}
.spinner-grow-sm {
@@ -6668,6 +6714,14 @@ a.close.disabled {
height: 1rem;
}
@media (prefers-reduced-motion: reduce) {
.spinner-border,
.spinner-grow {
-webkit-animation-duration: 1.5s;
animation-duration: 1.5s;
}
}
.align-baseline {
vertical-align: baseline !important;
}
@@ -7933,6 +7987,26 @@ button.bg-dark:focus {
}
}
.user-select-all {
-webkit-user-select: all !important;
-moz-user-select: all !important;
user-select: all !important;
}
.user-select-auto {
-webkit-user-select: auto !important;
-moz-user-select: auto !important;
-ms-user-select: auto !important;
user-select: auto !important;
}
.user-select-none {
-webkit-user-select: none !important;
-moz-user-select: none !important;
-ms-user-select: none !important;
user-select: none !important;
}
.overflow-auto {
overflow: auto !important;
}
@@ -8088,18 +8162,6 @@ button.bg-dark:focus {
height: 100vh !important;
}
.stretched-link::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
pointer-events: auto;
content: "";
background-color: rgba(0, 0, 0, 0);
}
.m-0 {
margin: 0 !important;
}
@@ -9912,6 +9974,18 @@ button.bg-dark:focus {
}
}
.stretched-link::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
z-index: 1;
pointer-events: auto;
content: "";
background-color: rgba(0, 0, 0, 0);
}
.text-monospace {
font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
}
@@ -10128,7 +10202,7 @@ a.text-dark:hover, a.text-dark:focus {
.text-break {
word-break: break-word !important;
overflow-wrap: break-word !important;
word-wrap: break-word !important;
}
.text-reset {
File diff suppressed because one or more lines are too long
+5 -5
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+29 -4
View File
@@ -1,4 +1,6 @@
using System;
using AppData;
using System;
using System.Diagnostics;
using System.Web.Http;
namespace NKC_WF.Controllers
@@ -8,6 +10,8 @@ namespace NKC_WF.Controllers
/// </summary>
public class AliveController : ApiController
{
#region Public Methods
// GET: api/Alive
[HttpGet]
public string Get()
@@ -15,12 +19,33 @@ namespace NKC_WF.Controllers
return "OK";
}
// GET: api/Alive/Clock
/// <summary>
/// Effettua operazioni pulizia memoria dati su redis e MongoDB
/// GET: api/Alive/MaxRec
/// </summary>
/// <param name="id">Rappresenta il num di record MAX da mantenere in memoria</param>
/// <returns></returns>
[HttpGet]
public string Get(int id)
{
return DateTime.Now.ToString($"yyyy-MM-dd HH:mm:ss.fff - ID: {id}");
// check valore minimo ammesso parametro numero env da mantenere
int n2k = 1500;
id = id > n2k ? id : n2k;
Stopwatch sw = new Stopwatch();
sw.Start();
// recupero contatore attuale
var currCount = ComLib.GetCurrMCount();
// calcolo ultimo ID da tenere
var idxMin = currCount - id;
// elimino da mongo DB i record registrati...
int numDelMongo = ComLib.CleanupMongo(idxMin);
// inizio processando 1:1 da MList ed elimino hash + relativa cache
int numDelRedis = ComLib.CleanupRedis(idxMin);
sw.Stop();
return $"Effettuata pulizia memoria Redis + MongoDB | idx min: {idxMin} | Redis del: {numDelRedis} | Mongo del: {numDelMongo} | {(double)sw.ElapsedMilliseconds / 1000:N2} sec";
}
#endregion Public Methods
}
}
}
+447 -136
View File
@@ -1,8 +1,10 @@
using AppData;
using Newtonsoft.Json;
using NKC_SDK;
using NLog;
using SteamWare;
using System;
using System.Diagnostics;
using System.IO;
using System.Web.Http;
@@ -10,11 +12,7 @@ namespace NKC_WF.Controllers
{
public class BatchProcController : ApiController
{
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
#region Public Methods
/// <summary>
/// Restituisce SE C'E' la richiesta di elaborazione BATCH corrente
@@ -43,8 +41,10 @@ namespace NKC_WF.Controllers
// aggiungo LA SUA ENV NUM!!!!
answ.EnvNum = envNum;
}
catch
{ }
catch (Exception exc)
{
Log.Instance.Error($"EXCEPTION api/BatchProc | get{Environment.NewLine}{exc}");
}
}
// altrimenti NULL!
else
@@ -74,8 +74,10 @@ namespace NKC_WF.Controllers
{
answ = JsonConvert.DeserializeObject<batchRequest>(redVal);
}
catch
{ }
catch (Exception exc)
{
Log.Instance.Error($"EXCEPTION api/BatchProc | get(id) {id}{Environment.NewLine}{exc}");
}
}
return answ;
}
@@ -90,7 +92,13 @@ namespace NKC_WF.Controllers
[HttpPost]
public string Post()
{
string logIdKey = "BatchProcController.Post()";
string answ = "";
bool resetOk = false;
string envNum = "";
bool isSplitReq = false;
bool isValidation = false;
bool isTesting = false;
// questa classe è derivata da Controller.Response... x cui recupero lo stream in altro modo...
string content = "";
System.Web.HttpContext.Current.Request.InputStream.Position = 0;
@@ -100,19 +108,32 @@ namespace NKC_WF.Controllers
}
//Rest
System.Web.HttpContext.Current.Request.InputStream.Position = 0;
baseNestAnsw batchProcAnsw = new baseNestAnsw();
// procedo a deserializzare in blocco l'oggetto...
try
{
// DEBUG: salvo su redis x fare DEBUG
string redKey = $"{ComLib.redNestAnsw}:LAST_CALL";
memLayer.ML.setRSV(redKey, content);
Log.Instance.Info($"{logIdKey} | Post() data received | length: {content.Length}");
// deserializzo.
baseNestAnsw batchProcAnsw = JsonConvert.DeserializeObject<baseNestAnsw>(content);
// deserializzo
batchProcAnsw = JsonConvert.DeserializeObject<baseNestAnsw>(content);
// per prima cosa salvo richiesta e la resetto se corrisponde...
envNum = ComLib.currBatchReq;
if (envNum == batchProcAnsw.EnvNum)
{
resetOk = ComLib.resetBatchReq();
Log.Instance.Info($"{logIdKey} | resetBatchReq() DONE | envNum: {envNum}");
}
else
{
Log.Instance.Info($"{logIdKey} | resetBatchReq() NOT executed | envNum: {envNum} | batchProcAnsw.EnvNum: {batchProcAnsw.EnvNum}");
}
// procedura idempotente: elimino eventuali dati della "busta" precedente...
DLMan.taEL.deteteByParent("", batchProcAnsw.EnvNum);
// se ho errori inizio a salvarli...
if (batchProcAnsw.ErrorList.Count > 0)
if (batchProcAnsw.ErrorList != null && batchProcAnsw.ErrorList.Count > 0)
{
// ora insert
foreach (var item in batchProcAnsw.ErrorList)
@@ -124,162 +145,414 @@ namespace NKC_WF.Controllers
// se non nullo...
if (batchProcAnsw != null)
{
Log.Instance.Info($"{logIdKey} | OrderType: {batchProcAnsw.OrderType} | ProcType: {batchProcAnsw.ProcType}");
/*************************************************
* IN BASE al tipo di risposta saprò se
* - è BatchReq / OfflineOrder
* - è stima iniziale o NEST dettagliato
* - si tratta di una stima di validazione ITEM ...
*
*
* 2021.07.21: aggiunto controllo coerenza risposta: accetto solo se sono in stato di richiesta (se ho annullato in precedenza scarto la risposta)
*
*************************************************/
if (batchProcAnsw.OrderType == oType.BatchRequest)
{
Log.Instance.Info($"{logIdKey} | Processing oType.BatchRequest");
// stima "classica"
if (batchProcAnsw.ProcType == 1)
{
int bStatus = 0;
Log.Instance.Info($"{logIdKey} | Processing ProcType == 1");
BatchStatus bStatus = BatchStatus.Imported;
// deserializzo come BatchreqIniziale (stima)
nestReplyBatchInitial rispStima = JsonConvert.DeserializeObject<nestReplyBatchInitial>(content);
// 2020.01.16 salvo su mongoDb la risposta...
ComLib.man.saveEstAnsw(rispStima);
// recupero info sul batch / KIT specifico x capire se sia di tipo "validation"
bool isValidation = false;
var tabOrd = DLMan.taOL.getByBatch(rispStima.BatchID);
if (tabOrd.Count > 0)
// idempotenza: elimino errori costruiti con altri step...
DLMan.taEL.deteteByParent("", $"B.{rispStima.BatchID}");
// verifica preliminare che il batch possa accettare la risposta
var currBatchStatus = ComLib.BStatus(rispStima.BatchID);
if (currBatchStatus != BatchStatus.EstimationRequested)
{
isValidation = tabOrd[0].OrdType == "V";
string message = $"E.BR.1 Impossibile processing della risposta da EgtNest | ProcType: {batchProcAnsw.ProcType} | BatchID: {rispStima.BatchID} | stato da DB: {currBatchStatus} | stato richiesto: {BatchStatus.EstimationRequested}";
Log.Instance.Error($"{logIdKey} | {message}");
// registro KO
answ = "KO";
}
// calcolo status del batch...
switch (rispStima.ProcessStatus)
else
{
case procStatus.waiting:
case procStatus.running:
bStatus = 1;
break;
case procStatus.completed:
if (isValidation)
{
// verifico se il tempo di procesisng stimato sia > minimo...
if (rispStima.EstimatedWorktime > memLayer.ML.CRI("minValidEstSec"))
// 2020.01.16 salvo su mongoDb la risposta...
ComLib.man.saveEstAnsw(rispStima);
// recupero info sul batch / KIT specifico x capire se sia di tipo "validation"
var tabOrd = DLMan.taOL.getByBatch(rispStima.BatchID);
if (tabOrd.Count > 0)
{
isValidation = tabOrd[0].OrdType == "V";
isTesting = tabOrd[0].OrdType == "T";
}
// calcolo status del batch...
switch (rispStima.ProcessStatus)
{
case procStatus.waiting:
case procStatus.running:
bStatus = BatchStatus.EstimationRequested;
break;
case procStatus.completed:
if (isValidation || isTesting)
{
bStatus = 10;
bool pdfOk = true;
// se richiesto CheckPDF
if (memLayer.ML.CRB("checkPdfPathTV"))
{
// verifico PDF, se NON OK --> errore
string pdfPath = "";
foreach (var item in rispStima.PartList)
{
pdfOk = pdfOk && ComLib.checkPdfExistAccessible(item, out pdfPath);
if (!pdfOk)
{
// codice è B.xxx dove xxx = BatchID
DLMan.taEL.insertQuery(DateTime.Now, "Check PDF path", $"B.{rispStima.BatchID}", $"{rispStima.BatchID}.{item.PartExtCode}", $"Error: PDF file not found: {pdfPath}");
}
}
}
// se non OK --> registro errore...
if (!pdfOk)
{
bStatus = BatchStatus.PartKo;
}
// verifico se il tempo di procesisng stimato sia > minimo...
else if (rispStima.EstimatedWorktime > memLayer.ML.CRI("minValidEstSec"))
{
bStatus = BatchStatus.PartOk;
}
else
{
bStatus = BatchStatus.PartKo;
}
}
else
{
bStatus = 9;
bStatus = BatchStatus.EstimationDone;
}
break;
case procStatus.accepted:
bStatus = BatchStatus.Approved;
break;
case procStatus.refused:
if (isValidation || isTesting)
{
bStatus = BatchStatus.PartKo;
}
else
{
bStatus = BatchStatus.Discarded;
}
break;
case procStatus.error:
if (isValidation || isTesting)
{
bStatus = BatchStatus.PartKo;
}
else
{
bStatus = BatchStatus.ErrorsOnEstim;
}
break;
case procStatus.aborted:
default:
if (isValidation || isTesting)
{
bStatus = BatchStatus.PartKo;
}
else
{
bStatus = BatchStatus.Imported;
}
break;
}
Log.Instance.Info($"{logIdKey} | Batch Status calculated | BatchID: {rispStima.BatchID} | bStatus {bStatus}");
// SALVO info riguardo al batch running
DLMan.taBL.updateStatus(rispStima.BatchID, (int)bStatus, rispStima.EnvNum, (decimal)rispStima.EstimatedWorktime / 60);
// salvo update elenco ITEMS
ComLib.updatePartsFromNesting(rispStima.PartList);
// aggiorno cadPath x items che non abbiano valorizzato...
string dxfFolder = memLayer.ML.CRS("drawingFolder");
if (isTesting)
{
dxfFolder = memLayer.ML.CRS("fileTestFolder");
}
string cadBasePath = $"{memLayer.ML.CRS("nestBasePath")}{dxfFolder}/";
DLMan.taIL.updateCadPath(cadBasePath, rispStima.BatchID, false);
// verifico IN CASO di validazione andata a buon fine --> valorizzo tabella!
if (bStatus > BatchStatus.Errors)
{
if (isValidation)
{
// recupero ordine da batch
if (tabOrd.Count > 0)
{
DLMan.taIV.upsertQuery(tabOrd[0].OrderExtCode, rispStima.BatchID, (int)bStatus, rispStima.EstimatedWorktime);
}
}
else
else if (isTesting)
{
bStatus = 2;
// recupero ordine da batch
if (tabOrd.Count > 0)
{
DLMan.taFV.upsertQuery(tabOrd[0].OrderExtCode, rispStima.BatchID, (int)bStatus, rispStima.EstimatedWorktime);
}
}
break;
case procStatus.accepted:
bStatus = 5;
break;
case procStatus.refused:
if (isValidation)
{
bStatus = 9;
}
else
{
bStatus = 6;
}
break;
case procStatus.error:
if (isValidation)
{
bStatus = 9;
}
else
{
bStatus = 7;
}
break;
case procStatus.aborted:
default:
if (isValidation)
{
bStatus = 9;
}
else
{
bStatus = 0;
}
break;
}
// registro OK
answ = "OK";
}
// SALVO info riguardo al batch running
DLMan.taBL.updateStatus(rispStima.BatchID, bStatus, rispStima.EnvNum, (decimal)rispStima.EstimatedWorktime / 60);
// salvo udpate elenco ITEMS
ComLib.updatePartsFromNesting(rispStima.PartList);
// aggiorno cadPath x items che non abbiano valorizzato...
string cadBasePath = $"{memLayer.ML.CRS("nestBasePath")}{memLayer.ML.CRS("drawingFolder")}/";
DLMan.taIL.updateCadPath(cadBasePath, rispStima.BatchID, false);
// verifico IN CASO di validazione andata a buon fine --> valorizzo tabella!
if (bStatus > 7)
}
// stima "extended" x splitting
else if (batchProcAnsw.ProcType == 3)
{
Log.Instance.Info($"{logIdKey} | Processing ProcType == 3");
BatchStatus bStatus = BatchStatus.Imported;
// deserializzo come BatchreqIniziale (stima)
nestReplyBatchExtEst rispStima = JsonConvert.DeserializeObject<nestReplyBatchExtEst>(content);
// verifica preliminare che il batch possa accettare la risposta
var currBatchStatus = ComLib.BStatus(rispStima.BatchID);
if (currBatchStatus != BatchStatus.EstimationRequested)
{
// recupero ordine da batch
string message = $"E.BR.2 Impossibile processing della risposta da EgtNest | ProcType: {batchProcAnsw.ProcType} | BatchID: {rispStima.BatchID} | stato da DB: {currBatchStatus} | stato richiesto: {BatchStatus.EstimationRequested}";
Log.Instance.Error($"{logIdKey} | {message}");
// registro KO
answ = "KO";
}
else
{
// salvo su mongoDb la risposta...
ComLib.man.saveExtEstAnsw(rispStima);
// recupero info sul batch / KIT specifico x capire se sia di tipo "validation"
var tabOrd = DLMan.taOL.getByBatch(rispStima.BatchID);
if (tabOrd.Count > 0)
{
DLMan.taIV.upsertQuery(tabOrd[0].OrderExtCode, rispStima.BatchID, bStatus, rispStima.EstimatedWorktime);
isValidation = tabOrd[0].OrdType == "V";
isTesting = tabOrd[0].OrdType == "T";
}
// calcolo status del batch...
switch (rispStima.ProcessStatus)
{
case procStatus.waiting:
case procStatus.running:
bStatus = BatchStatus.EstimationRequested;
break;
case procStatus.completed:
if (isValidation || isTesting)
{
bool pdfOk = true;
// se richiesto CheckPDF
if (memLayer.ML.CRB("checkPdfPathTV"))
{
// verifico PDF, se NON OK --> errore
string pdfPath = "";
foreach (var item in rispStima.PartList)
{
pdfOk = pdfOk && ComLib.checkPdfExistAccessible(item, out pdfPath);
if (!pdfOk)
{
// codice è B.xxx dove xxx = BatchID
DLMan.taEL.insertQuery(DateTime.Now, "Check PDF path", $"B.{rispStima.BatchID}", $"{rispStima.BatchID}.{item.PartExtCode}", $"Error: PDF file not found: {pdfPath}");
}
}
}
// se non OK --> registro errore...
if (!pdfOk)
{
bStatus = BatchStatus.PartKo;
}
// verifico se il tempo di procesisng stimato sia > minimo...
else if (rispStima.EstimatedWorktime > memLayer.ML.CRI("minValidEstSec"))
{
bStatus = BatchStatus.PartOk;
}
else
{
bStatus = BatchStatus.PartKo;
}
}
else
{
bStatus = BatchStatus.EstimationDone;
}
break;
case procStatus.accepted:
bStatus = BatchStatus.Approved;
break;
case procStatus.refused:
if (isValidation || isTesting)
{
bStatus = BatchStatus.PartKo;
}
else
{
bStatus = BatchStatus.Discarded;
}
break;
case procStatus.error:
if (isValidation || isTesting)
{
bStatus = BatchStatus.PartKo;
}
else
{
bStatus = BatchStatus.ErrorsOnEstim;
}
break;
case procStatus.aborted:
default:
if (isValidation || isTesting)
{
bStatus = BatchStatus.PartKo;
}
else
{
bStatus = BatchStatus.Imported;
}
break;
}
Log.Instance.Info($"{logIdKey} | Batch Status calculated | BatchID: {rispStima.BatchID} | bStatus {bStatus}");
// SALVO info riguardo al batch running
DLMan.taBL.updateStatus(rispStima.BatchID, (int)bStatus, rispStima.EnvNum, (decimal)rispStima.EstimatedWorktime / 60);
// salvo update elenco ITEMS
if (rispStima.PartList != null && rispStima.PartList.Count > 0)
{
ComLib.updatePartsFromNesting(rispStima.PartList);
}
// aggiorno la risposta dei tempi di esecuzione (+ NUM cart/part)
// degli ordini x permettere aggiustamenti
if (rispStima.EstOrderList != null && rispStima.EstOrderList.Count > 0)
{
ComLib.updateExtEstimFromNesting(rispStima.BatchID, rispStima.EstOrderList);
}
// aggiorno cadPath x items che non abbiano valorizzato...
string dxfFolder = memLayer.ML.CRS("drawingFolder");
if (isTesting)
{
dxfFolder = memLayer.ML.CRS("fileTestFolder");
}
string cadBasePath = $"{memLayer.ML.CRS("nestBasePath")}{dxfFolder}/";
DLMan.taIL.updateCadPath(cadBasePath, rispStima.BatchID, false);
// registro OK
answ = "OK";
}
// registro OK
answ = "OK";
}
else
// nesting
else if (batchProcAnsw.ProcType == 2)
{
Log.Instance.Info($"{logIdKey} | Processing ProcType == 2 | NESTING");
// deserializzo come BatchreqFinale
nestReplyBatchFinal rispNest = JsonConvert.DeserializeObject<nestReplyBatchFinal>(content);
// 2020.01.16 salvo su mongoDb la risposta...
ComLib.man.saveNestAnsw(rispNest);
// verifica preliminare che il batch possa accettare la risposta
var currBatchStatus = ComLib.BStatus(rispNest.BatchID);
//if (!(currBatchStatus == BatchStatus.NestRequested || currBatchStatus == BatchStatus.NestDone))
if (currBatchStatus != BatchStatus.NestRequested)
{
string message = $"E.BR.3 Impossibile processing della risposta da EgtNest | ProcType: {batchProcAnsw.ProcType} | BatchID: {rispNest.BatchID} | stato da DB: {currBatchStatus} | stato richiesto: {BatchStatus.NestRequested}";
Log.Instance.Error($"{logIdKey} | {message}");
// registro KO
answ = "KO";
}
else
{
Log.Instance.Info($"{logIdKey} | Response status OK | ProcType: {batchProcAnsw.ProcType} | BatchID: {rispNest.BatchID} | stato da DB: {currBatchStatus} | stato richiesto: {BatchStatus.NestRequested}");
// 2020.01.16 salvo su mongoDb la risposta...
ComLib.man.saveNestAnsw(rispNest);
// calcolo status del batch...
int bStatus = 2;
switch (rispNest.ProcessStatus)
{
case procStatus.waiting:
case procStatus.running:
bStatus = 3;
break;
case procStatus.completed:
bStatus = 4;
break;
case procStatus.accepted:
bStatus = 5;
break;
case procStatus.refused:
bStatus = 6;
break;
case procStatus.error:
bStatus = 7;
break;
case procStatus.aborted:
default:
bStatus = 2;
break;
// calcolo status del batch...
BatchStatus bStatus = BatchStatus.EstimationDone;
switch (rispNest.ProcessStatus)
{
case procStatus.waiting:
case procStatus.running:
bStatus = BatchStatus.NestRequested;
break;
case procStatus.completed:
bStatus = BatchStatus.NestDone;
break;
case procStatus.accepted:
bStatus = BatchStatus.Approved;
break;
case procStatus.refused:
bStatus = BatchStatus.Discarded;
break;
case procStatus.error:
bStatus = BatchStatus.ErrorsOnNesting;
break;
case procStatus.aborted:
default:
bStatus = BatchStatus.EstimationDone;
break;
}
Log.Instance.Info($"{logIdKey} | Batch Status calculated | BatchID: {rispNest.BatchID} | bStatus {bStatus} | stato da DB: {currBatchStatus} | rispNest.ProcessStatus: {rispNest.ProcessStatus}");
// aggiorno il resto SOLO SE status == completo...
if (rispNest.ProcessStatus == procStatus.completed || rispNest.ProcessStatus == procStatus.error)
{
// resetto le precedenti elaborazioni: elimino dati child MA NON il batch...
DLMan.taBL.resetTree(rispNest.BatchID);
// SALVO info riguardo al batch completato
DLMan.taBL.updateStatus(rispNest.BatchID, (int)bStatus, rispNest.EnvNum, (decimal)rispNest.EstimatedWorktime / 60);
Log.Instance.Info($"{logIdKey} | BL.updateStatus | BatchID: {rispNest.BatchID} | bStatus: {bStatus} | EnvNum: {rispNest.EnvNum} | EstimatedWorktime: {rispNest.EstimatedWorktime}");
// salvo info riguardo ai vari Bunk / Sheets / Items...
if (rispNest.BunkList != null && rispNest.BunkList.Count > 0)
{
ComLib.updateBunksFromNesting(rispNest.BatchID, rispNest.BunkList);
}
// salvo info x CART & BINS previsti
if (rispNest.BinList != null && rispNest.BinList.Count > 0)
{
ComLib.updateBinsFromNesting(rispNest.BatchID, rispNest.BinList);
}
if (rispNest.CartList != null && rispNest.CartList.Count > 0)
{
ComLib.updateCartsFromNesting(rispNest.BatchID, rispNest.CartList);
}
//
isSplitReq = ComLib.checkSendBatchSplit(rispNest.BatchID);
// effettuo calcolo statistiche
Stopwatch stopWatchLap = new Stopwatch();
stopWatchLap.Start();
ComLib.man.updateSheetStatsByBatch(rispNest.BatchID);
stopWatchLap.Stop();
Log.Instance.Info($"{logIdKey} | Batch Stat Calculation after NEST answ | BatchID: {rispNest.BatchID} | elapsed {stopWatchLap.Elapsed.TotalMilliseconds} ms");
}
// registro OK
answ = "OK";
}
// aggiorno il resto SOLO SE status == completo...
if (rispNest.ProcessStatus == procStatus.completed || rispNest.ProcessStatus == procStatus.error)
{
// resetto le precedenti elaborazioni: elimino dati child MA NON il batch...
DLMan.taBL.resetTree(rispNest.BatchID);
// SALVO info riguardo al batch completato
DLMan.taBL.updateStatus(rispNest.BatchID, bStatus, rispNest.EnvNum, (decimal)rispNest.EstimatedWorktime / 60);
// salvo info riguardo ai vari Bunk / Sheets / Items...
ComLib.updateBunksFromNesting(rispNest.BatchID, rispNest.BunkList);
// salvo info x CART & BINS previsti
ComLib.updateBinsFromNesting(rispNest.BatchID, rispNest.BinList);
ComLib.updateCartsFromNesting(rispNest.BatchID, rispNest.CartList);
}
// registro OK
answ = "OK";
}
}
else if (batchProcAnsw.OrderType == oType.OfflineOrder)
{
Log.Instance.Info($"{logIdKey} | Processing oType.OfflineOrder");
// deserializzo come OfflineOrder
nestReplyOffOrd rispOffOrd = JsonConvert.DeserializeObject<nestReplyOffOrd>(content);
@@ -314,7 +587,9 @@ namespace NKC_WF.Controllers
string servBasePath = memLayer.ML.CRS("servBasePath").ToLower();
string fixPathDraw = rispOffOrd.DrawingPath.ToLower().Replace(nestBasePath, servBasePath).Replace('/', '\\');
string fixPathCnc = rispOffOrd.CncPath.ToLower().Replace(nestBasePath, servBasePath).Replace('/', '\\');
// segno offline order come processato registrando il disegno e segno ogni PART come lavorata da OffOrd2Item (status 992)
// segno offline order come processato registrando il
// disegno e segno ogni PART come lavorata da OffOrd2Item
// (status 992)
DLMan.taOffOL.updateDrawing(Math.Abs(rispOffOrd.BatchID), fixPathDraw, fixPathCnc);
}
}
@@ -327,26 +602,62 @@ namespace NKC_WF.Controllers
else
{
answ = "WRONG DATA (expected baseNestAnsw object)";
//Log.inf
Log.Instance.Error($"{logIdKey} | {answ}");
}
}
catch
catch (Exception exc)
{
answ = "NO";
Log.Instance.Error($"{logIdKey} | EXCEPTION api/BatchProc{Environment.NewLine}{exc}");
}
// se tutto OK --> tolgo ultimo batch
if (answ == "OK")
{
// invio notifica che c'è una busta da processare
bool resetOk = ComLib.resetBatchReq();
// se tutto ok e ci sono da validare parts --> procedo!
if (resetOk)
Log.Instance.Info($"{logIdKey} | Close A.01 | batchProcAnsw.EnvNum {batchProcAnsw.EnvNum}");
// se è una split req --> NON resetto...
if (!isSplitReq)
{
bool nextValidSent = ComLib.sendFirstValidationBatch();
Log.Instance.Info($"{logIdKey} | Close B.01");
// reset
resetOk = ComLib.resetBatchReq();
Log.Instance.Info($"{logIdKey} | Effettuato reset resetBatchReq");
// se tutto ok e ci sono da validare parts --> procedo!
Log.Instance.Info($"{logIdKey} | Close B.02");
if (resetOk)
{
Log.Instance.Info($"{logIdKey} | Close B.03");
bool PartValForCreatePng = memLayer.ML.cdvb("PartValidationForceCreatePng");
bool DxfValForceCreatePng = memLayer.ML.cdvb("DxfValidationForceCreatePng");
bool forceCreatePng = (isValidation || isTesting) && (PartValForCreatePng || DxfValForceCreatePng);
bool nextValidSent = ComLib.sendFirstValidationBatch(forceCreatePng);
Log.Instance.Info($"{logIdKey} | Close B.04");
}
}
else
{
#if false
//// rimetto in coda la richiesta SUCCESSIVA
//ComLib.currBatchReq = envNum;
#endif
Log.Instance.Info($"{logIdKey} | Close C.01 - requeue DENIED for {envNum}");
}
}
Log.Instance.Info($"{logIdKey} | Close D.01");
// restituisco risposta
return answ;
}
#endregion Public Methods
#region Protected Fields
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
#endregion Protected Fields
}
}
}
+140
View File
@@ -0,0 +1,140 @@
using AppData;
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Http;
namespace NKC_WF.Controllers
{
public class BatchStatsController : ApiController
{
#region Protected Fields
protected string dateFormat = "yyyyMMdd";
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
#endregion Protected Fields
#region Private Methods
/// <summary>
/// Metodo effettivo recupero dati
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
private List<chartJsTVal> getDataFilt(int id)
{
List<chartJsTVal> answ = new List<chartJsTVal>();
var tabDati = DLMan.taBStats.getLast(id);
// ciclo
foreach (var item in tabDati.OrderBy(x => x.Takt))
{
// prendo valore default = NumParts
answ.Add(new chartJsTVal() { x = item.Takt, y = item.NumParts });
}
// restituisco
return answ;
}
/// <summary>
/// Metodo effettivo recupero dati
/// </summary>
/// <param name="id"></param>
/// <param name="maxHour"></param>
/// <returns></returns>
private List<chartJsTVal> getDataFilt(int id, string PlotType)
{
List<chartJsTVal> answ = new List<chartJsTVal>();
var tabDati = DLMan.taBStats.getLast(id);
DateTime startTime = DateTime.Now.AddYears(1);
// ciclo
foreach (var item in tabDati.OrderBy(x => x.Takt))
{
//// converto in data il valore takt... primi 8 char
//DateTime dataRif = DateTime.Today;
//DateTime.TryParseExact(item.Takt.Substring(0, 8), dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dataRif);
decimal value = 0;
switch (PlotType)
{
case "Yeld":
value = item.AvgYeld * 100;
break;
case "NumMat":
value = item.NumMat;
break;
case "NumSheets":
value = item.NumSheets;
break;
case "NumModel":
value = item.NumModel;
break;
case "NumKit":
value = item.NumKit;
break;
case "NumPainted":
value = item.NumPainted;
break;
case "NumParts":
default:
value = item.NumParts;
break;
}
answ.Add(new chartJsTVal() { x = item.Takt, y = value });
}
// restituisco
return answ;
}
#endregion Private Methods
#region Public Methods
// GET api/TempRil
public string Get()
{
return "NA";
}
/// <summary>
/// Recupero dati x ultimi batch stats
/// GET api/BatchStats/5
/// </summary>
/// <param name="id">NUmLast</param>
/// <returns></returns>
public List<chartJsTVal> Get(int id)
{
DateTime dtRif = DateTime.Today;
// restituisco oggetto!
return getDataFilt(id);
}
/// <summary>
/// Recupero dati x statistiche ultimi batch
/// GET api/BatchStats/50
/// </summary>
/// <param name="id">Num record da recuperare DESC</param>
/// <param name="PlotType">Tipo di grafico</param>
/// <returns></returns>
public List<chartJsTVal> Get(int id, string PlotType)
{
List<chartJsTVal> answ = new List<chartJsTVal>();
answ = getDataFilt(id, PlotType);
// restituisco oggetto!
return answ;
}
#endregion Public Methods
}
}
+63 -55
View File
@@ -1,6 +1,7 @@
using AppData;
using Newtonsoft.Json;
using NKC_SDK;
using System;
using System.IO;
using System.Web.Http;
@@ -8,14 +9,22 @@ namespace NKC_WF.Controllers
{
public class BunkController : ApiController
{
#region Protected Fields
/// <summary>
/// COdice macchina (HARD CODED)
/// </summary>
protected string CodPost = "WRK001";
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
/// <summary>
/// COdice macchina (HARD CODED)
/// </summary>
protected string machine = "WRK001";
#endregion Protected Fields
#region Public Methods
/// <summary>
/// Restituisce il FIRST BUNK da lavorare
/// GET: api/Bunk
@@ -27,10 +36,12 @@ namespace NKC_WF.Controllers
ProdBunk answ = null;
try
{
answ = ComLib.prodGetFirstBunk();
answ = ComLib.prodGetFirstBunk(CodPost);
}
catch (Exception exc)
{
Log.Instance.Error($"EXCEPTION api/Bunk | get{Environment.NewLine}{exc}");
}
catch
{ }
return answ;
}
@@ -42,30 +53,33 @@ namespace NKC_WF.Controllers
/// <param name="showNext"></param>
/// <returns></returns>
[HttpGet]
public ProdBunk Get(int id, bool showNext)
public ProdBunk Get(int id, bool showNext, string machine)
{
ProdBunk answ = null;
CodPost = machine;
try
{
if (showNext)
{
answ = ComLib.prodGetNextBunk(id);
answ = ComLib.prodGetNextBunk(id, CodPost);
}
else
{
answ = ComLib.prodGetBunk(id);
answ = ComLib.prodGetBunk(id, CodPost);
}
}
catch
{ }
catch (Exception exc)
{
Log.Instance.Error($"EXCEPTION api/Bunk | get(int {id}, bool {showNext}, string {machine}) {Environment.NewLine}{exc}");
}
return answ;
}
/************************************
* METODI PUT
*
*
* per abilitare è necessario agire sulla conf di IIS:
*
*
* - modificare il file applicationHost.config che si trova in C:\Windows\System32\inetsrv\config
* - disinstallare webDav oppure commentare le righe
* <!-- <add name="WebDAVModule" /> -->
@@ -74,44 +88,9 @@ namespace NKC_WF.Controllers
* - aggiungere PUT/DELETE a handler:
* <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
* <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
*
*
**************************************/
/// <summary>
/// Effettua la chiamata di update
/// </summary>
/// <param name="id"></param>
/// <param name="value"></param>
// PUT: api/Bunk/5
[HttpPut]
public void Put(ProdBunk currBunk)
{
// NB. decodifico direttamente come oggetto, vedere qui:
// https://weblog.west-wind.com/posts/2013/dec/13/accepting-raw-request-body-content-with-aspnet-web-api
// https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers
// se non nullo...
if (currBunk != null)
{
foreach (var item in currBunk.SheetList)
{
DLMan.taSHL.updateDate(item.SheetId, item.Printing.DtStart, item.Printing.DtEnd, item.Machining.DtStart, item.Machining.DtEnd, item.Unloading.DtStart, item.Unloading.DtEnd, (int)item.Status);
// verifico SE SIA AVVENUTO CON SUCCESSO lo step di lavorazione...
if (item.Machining.Success)
{
// SE machining completato --> status a LAVORATO!
if (item.Machining.DtEnd != null)
{
DLMan.taIL.updateSheetStatus(item.SheetId, 1, "PROD");
}
}
}
}
// INVALIDO eventuale valore BUNK in REDIS...
ComLib.resetRedisBunkData(machine);
}
/// <summary>
/// Processa una chiamata POST per l'invio in blocco status BUNK
/// POST: api/Bunk
@@ -140,9 +119,6 @@ namespace NKC_WF.Controllers
{
foreach (var item in currBunk.SheetList)
{
// calcolo stsatus dalle date valide...
DLMan.taSHL.updateDate(item.SheetId, item.Printing.DtStart, item.Printing.DtEnd, item.Machining.DtStart, item.Machining.DtEnd, item.Unloading.DtStart, item.Unloading.DtEnd, (int)item.Status);
// SE machining completato --> status a LAVORATO!
if (item.Machining.DtEnd != null)
@@ -155,12 +131,44 @@ namespace NKC_WF.Controllers
}
answ = "OK";
}
catch
catch(Exception exc)
{
Log.Instance.Error($"EXCEPTION api/Bunk | Post(){Environment.NewLine}{exc}");
answ = "NO";
}
return answ;
}
/// <summary>
/// Effettua la chiamata di update
/// </summary>
/// <param name="id"></param>
/// <param name="value"></param>
// PUT: api/Bunk/5
[HttpPut]
public void Put(ProdBunk currBunk)
{
// NB. decodifico direttamente come oggetto, vedere qui:
// https://weblog.west-wind.com/posts/2013/dec/13/accepting-raw-request-body-content-with-aspnet-web-api
// https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers
// se non nullo...
if (currBunk != null)
{
foreach (var item in currBunk.SheetList)
{
DLMan.taSHL.updateDate(item.SheetId, item.Printing.DtStart, item.Printing.DtEnd, item.Machining.DtStart, item.Machining.DtEnd, item.Unloading.DtStart, item.Unloading.DtEnd, (int)item.Status);
// SE machining completato --> status a LAVORATO!
if (item.Machining.DtEnd != null)
{
DLMan.taIL.updateSheetStatus(item.SheetId, 1, "PROD");
}
}
}
// INVALIDO eventuale valore BUNK in REDIS...
ComLib.resetRedisBunkData(CodPost);
}
#endregion Public Methods
}
}
}
+164
View File
@@ -0,0 +1,164 @@
using AppData;
using NKC_SDK;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.Http;
namespace NKC_WF.Controllers
{
public class DayStatsController : ApiController
{
#region Protected Fields
protected string dateFormat = "yyyy-MM-dd";
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
#endregion Protected Fields
#region Private Methods
/// <summary>
/// Metodo effettivo recupero dati
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
private List<chartJsTSerie> getDataFilt(string id)
{
DateTime endDate = DateTime.Today.AddDays(1);
DateTime startDate = endDate.AddDays(-10);
List<chartJsTSerie> answ = new List<chartJsTSerie>();
var tabDati = DLMan.taDayStats.getFilt(startDate, endDate, id);
// ciclo
decimal value = 0;
foreach (var item in tabDati.OrderBy(x => x.DataOraRif))
{
decimal denom = item.MinDisp != 0 ? item.MinDisp : 1;
value = item.MinRun / denom * 100;
// prendo valore default = NumParts
answ.Add(new chartJsTSerie() { x = item.DataOraRif, y = value });
}
// restituisco
return answ;
}
/// <summary>
/// Metodo effettivo recupero dati
/// </summary>
/// <param name="id">Macchina/PlaceCod</param>
/// <param name="StartDate">Inizio Periodo</param>
/// <param name="EndDate">Fine Periodo</param>
/// <param name="PlotType">Tipo di grafico</param>
/// <returns></returns>
private List<chartJsTSerie> getDataFilt(string id, DateTime StartDate, DateTime EndDate, string PlotType)
{
// effettuo calcolo statistiche
Stopwatch stopWatchLap = new Stopwatch();
stopWatchLap.Start();
List<chartJsTSerie> answ = new List<chartJsTSerie>();
var tabDati = DLMan.taDayStats.getFilt(StartDate, EndDate, id);
stopWatchLap.Stop();
Log.Instance.Info($"DayStats DB retrieve | machine: {id} | start: {StartDate} | end: {EndDate} | elapsed: {stopWatchLap.Elapsed.TotalMilliseconds} ms");
stopWatchLap.Restart();
DateTime startTime = DateTime.Now.AddYears(1);
// ciclo
foreach (var item in tabDati.OrderBy(x => x.DataOraRif))
{
decimal value = 0;
decimal denom = 1;
switch (PlotType)
{
case "AvailTime":
value = item.MinDisp;
break;
case "NumPartsProd":
value = item.ItmProd;
break;
case "NumPartsScrap":
value = item.ItmScrap;
break;
case "RunTime":
value = item.MinRun;
break;
case "AvgPartsHour":
denom = item.MinRun != 0 ? item.MinRun : 1;
value = item.ItmProd / denom * 100;
break;
default:
case "OEE":
denom = item.MinDisp != 0 ? item.MinDisp : 1;
value = item.MinRun / denom * 100;
break;
}
answ.Add(new chartJsTSerie() { x = item.DataOraRif, y = value, label = item.PlaceCod });
}
stopWatchLap.Stop();
Log.Instance.Info($"DayStats data conversion | machine: {id} | start: {StartDate} | end: {EndDate} | elapsed: {stopWatchLap.Elapsed.TotalMilliseconds} ms");
// restituisco
return answ;
}
#endregion Private Methods
#region Public Methods
// GET api/DayStats
public string Get()
{
return "NA";
}
/// <summary>
/// Recupero dati x ultimi batch stats
/// GET api/DayStats/5
/// </summary>
/// <param name="id">NUmLast</param>
/// <returns></returns>
public List<chartJsTSerie> Get(string id)
{
// bonifica ID: [ALL] --> *
id = id == "[ALL]" ? "*" : id;
// restituisco oggetto!
return getDataFilt(id);
}
/// <summary>
/// Recupero dati x statistiche ultimi batch
/// GET api/DayStats/NE01
/// </summary>
/// <param name="id">Macchina/PlaceCod</param>
/// <param name="StartDate">Inizio Periodo</param>
/// <param name="EndDate">Fine Periodo</param>
/// <param name="PlotType">Tipo di grafico</param>
/// <returns></returns>
public List<chartJsTSerie> Get(string id, string StartDate, string EndDate, string PlotType)
{
// bonifica ID: [ALL] --> *
id = id == "[ALL]" ? "*" : id;
DateTime dateEnd = DateTime.Today.AddDays(1);
DateTime dateStart = dateEnd.AddDays(-10);
DateTime.TryParseExact(StartDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateStart);
DateTime.TryParseExact(EndDate, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out dateEnd);
List<chartJsTSerie> answ = new List<chartJsTSerie>();
answ = getDataFilt(id, dateStart, dateEnd, PlotType);
// restituisco oggetto!
return answ;
}
#endregion Public Methods
}
}
+127
View File
@@ -0,0 +1,127 @@
using AppData;
using Newtonsoft.Json;
using NKC_SDK;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web.Http;
namespace NKC_WF.Controllers
{
/// <summary>
/// Classe controller per gestione eventi stats
/// Riceve una lista di 1..n eventi con
/// * CodMacchina
/// * DataOra
/// * Codice (Evento/stato) - codice 00 = KeepAlive, imposto dataora/drift
/// * Valore/Descrizione
///
/// e la salva su DB per successiva elaborazione
/// </summary>
public class MachineStatController : ApiController
{
#region Protected Fields
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
/// <summary>
/// Codice macchina (HARD CODED)
/// </summary>
protected string machine = "WRK000";
#endregion Protected Fields
#region Public Methods
/// <summary>
/// Restituisce un array di stati macchina correnti
/// GET: api/MachineStat
/// </summary>
/// <returns></returns>
[HttpGet]
public MachineStatData Get()
{
MachineStatData answ = new MachineStatData();
try
{
answ = ComLib.prodMachStateDataGet(machine);
}
catch (Exception exc)
{
Log.Instance.Error($"EXCEPTION api/MachineStat | get{Environment.NewLine}{exc}");
}
// se vuoto metto 1 finto...
if (answ == null)
{
answ = new MachineStatData() { Machine = machine };
}
return answ;
}
/// <summary>
/// Fornisce il record dello stato macchina corrente
/// GET: api/MachineStat/WRK001
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
[HttpGet]
public MachineStatData Get(string id)
{
MachineStatData answ = new MachineStatData() { Machine = id };
try
{
answ = ComLib.prodMachStateDataGet(id);
}
catch (Exception exc)
{
Log.Instance.Error($"EXCEPTION api/MachineStat | get({id}){Environment.NewLine}{exc}");
}
return answ;
}
/************************************
* METODI PUT
*
* per abilitare è necessario agire sulla conf di IIS:
*
* - modificare il file applicationHost.config che si trova in C:\Windows\System32\inetsrv\config
* - disinstallare webDav oppure commentare le righe
* <!-- <add name="WebDAVModule" /> -->
* <!-- <add name="WebDAVModule" image="%windir%\System32\inetsrv\webdav.dll" /> -->
* <!-- <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
* - aggiungere PUT/DELETE a handler:
* <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
* <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
*
**************************************/
/// <summary>
/// Effettua la chiamata di update x un set di dati delle macchine
/// </summary>
/// <param name="updatedInfo">Oggetto con macchina + Elenco record da aggiornare</param>
// PUT: api/Sheet
[HttpPut]
public void Put(MachineStatData updatedInfo)
{
// NB. decodifico direttamente come oggetto, vedere qui:
// https://weblog.west-wind.com/posts/2013/dec/13/accepting-raw-request-body-content-with-aspnet-web-api
// https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers
if (updatedInfo != null)
{
// mi limito a chiamnare procedura di update...
ComLib.prodMachStateDataInsert(updatedInfo);
}
}
#endregion Public Methods
}
}
@@ -1,5 +1,6 @@
using Newtonsoft.Json;
using SteamWare;
using SteamWare.Logger;
using System;
using System.Collections.Generic;
using System.IO;
@@ -10,6 +11,8 @@ namespace NKC_WF.Controllers
{
public class PrintQueueConfController : ApiController
{
#region Public Methods
/// <summary>
/// Restituisce un array JSon x le conf delle code di stampa
/// GET: api/PrintQueueConf
@@ -32,7 +35,7 @@ namespace NKC_WF.Controllers
}
catch (Exception exc)
{
Log.Instance.Error(exc, "Eccezione in decodifica file conf printQueue");
Logging.Instance.Error(exc, "Eccezione in decodifica file conf printQueue");
}
}
}
@@ -57,5 +60,6 @@ namespace NKC_WF.Controllers
return answ;
}
#endregion Public Methods
}
}
}
@@ -117,6 +117,17 @@ namespace NKC_WF.Controllers
tab = (DataTable)DLMan.taRepIRK.GetData(intIdx, qrCodeBaseUrl);
answ.Add(memLayer.ML.cdv("ReportDS_DocIRKList"), tab);
break;
case reportRichiesto.cartSpecParts:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepSpecPart.GetData(intIdx, imagePath, qrCodeBaseUrl);
answ.Add(memLayer.ML.cdv("ReportDS_DocCartSpecPart"), tab);
break;
case reportRichiesto.remnants:
int.TryParse(keyParam, out intIdx);
tab = (DataTable)DLMan.taRepIRK.GetData(intIdx, qrCodeBaseUrl);
answ.Add(memLayer.ML.cdv("ReportDS_DocIRKList"), tab);
break;
default:
break;
}
@@ -169,6 +180,9 @@ namespace NKC_WF.Controllers
case "docOffline":
report = reportRichiesto.offline;
break;
case "docCartSpecialPart":
report = reportRichiesto.cartSpecParts;
break;
default:
break;
}
@@ -0,0 +1,70 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
using static NKC_WF.WebUserControls.cmp_OOIL_drawings;
using SteamWare;
using SteamWare.Reports;
using System.Web;
using System.IO;
using Newtonsoft.Json;
namespace NKC_WF.Controllers
{
public class ReportConfController : ApiController
{
/// <summary>
/// Restituisce un array JSon x le conf dei report
/// GET: api/PrintQueueConf
/// </summary>
/// <returns>lista oggetto Json in formato SteamwareSDK.queueConf</returns>
public List<reportConf> Get()
{
List<reportConf> answ = reportConfJson;
// se vuoto... creo!
if (answ.Count == 0)
{
reportConf currConf = new reportConf()
{
name = "none",
template = "none.rdlc"
};
answ.Add(currConf);
}
return answ;
}
/// <summary>
/// Restituisce un array JSon x le conf dei report/template di stampa leggendo dal file
/// </summary>
/// <returns>lista oggetto Json in formato SteamwareSDK.templateConf</returns>
protected List<reportConf> reportConfJson
{
get
{
List<reportConf> answ = new List<reportConf>();
string dirPath = HttpContext.Current.Server.MapPath("~/Reports/");
string nomeFile = "reportConf.json";
bool fileExist = fileMover.obj.fileExist(dirPath, nomeFile);
if (fileExist)
{
string rawData = File.ReadAllText($"{dirPath}\\{nomeFile}");
if (!string.IsNullOrEmpty(rawData))
{
try
{
answ = JsonConvert.DeserializeObject<List<reportConf>>(rawData);
}
catch (Exception exc)
{
SteamWare.Logger.Logging.Instance.Error(exc, "Eccezione in decodifica file conf reportConfJson");
}
}
}
return answ;
}
}
}
}
+4 -3
View File
@@ -1,4 +1,5 @@
using SteamWare;
using NKC_SDK;
using SteamWare;
using System;
using System.IO;
using System.Web;
@@ -43,7 +44,7 @@ namespace NKC_WF.Controllers
}
catch (Exception exc)
{
logger.lg.scriviLog($"Errore in get elenco reports{Environment.NewLine}{exc}");
Log.Instance.Error($"Errore in get elenco reports{Environment.NewLine}{exc}");
}
return answ;
}
@@ -83,7 +84,7 @@ namespace NKC_WF.Controllers
}
catch (Exception exc)
{
logger.lg.scriviLog($"Errore in get singolo report{Environment.NewLine}{exc}");
Log.Instance.Error($"Errore in get singolo report{Environment.NewLine}{exc}");
}
return answ;
}
+238 -92
View File
@@ -1,6 +1,8 @@
using AppData;
using Newtonsoft.Json;
using NKC_SDK;
using SteamWare;
using System;
using System.IO;
using System.Web.Http;
@@ -8,15 +10,20 @@ namespace NKC_WF.Controllers
{
public class SheetController : ApiController
{
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
#region Public Constructors
public SheetController()
{
dfWrkStart = memLayer.ML.CRB("dateFix_WrkStart");
dfWrkEnd = memLayer.ML.CRB("dateFix_WrkEnd");
dfUnlStart = memLayer.ML.CRB("dateFix_UnlStart");
dfUnlEnd = memLayer.ML.CRB("dateFix_UnlEnd");
}
#endregion Public Constructors
#region Public Methods
/// <summary>
/// COdice macchina (HARD CODED)
/// </summary>
protected string machine = "WRK001";
/// <summary>
/// Restituisce un array di sheet da lavorare (quindi NON ancora scaricati, anche di + BUNK)
/// GET: api/Sheet
@@ -25,20 +32,23 @@ namespace NKC_WF.Controllers
[HttpGet]
public SheetWorkList Get()
{
// fisso su machcina 1
string machineName = "WRK001";
// fisso su macchina 0 (NON esistente)
string machineName = "NE00";
SheetWorkList answ = null;
try
{
answ = ComLib.prodGetSheetWorkList(machineName);
}
catch
{ }
catch (Exception exc)
{
Log.Instance.Error($"EXCEPTION api/Sheet | get{Environment.NewLine}{exc}");
}
return answ;
}
/// <summary>
/// Ottengo elenco specifico dato cod MACCHINA
/// GET: api/Sheet/WRK001
/// Ottengo elenco specifico dato cod MACCHINA (es NE01)
/// GET: api/Sheet/NE01
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
@@ -50,80 +60,12 @@ namespace NKC_WF.Controllers
{
answ = ComLib.prodGetSheetWorkList(id);
}
catch
{ }
return answ;
}
/************************************
* METODI PUT
*
* per abilitare è necessario agire sulla conf di IIS:
*
* - modificare il file applicationHost.config che si trova in C:\Windows\System32\inetsrv\config
* - disinstallare webDav oppure commentare le righe
* <!-- <add name="WebDAVModule" /> -->
* <!-- <add name="WebDAVModule" image="%windir%\System32\inetsrv\webdav.dll" /> -->
* <!-- <add name="WebDAV" path="*" verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule" resourceType="Unspecified" requireAccess="None" /> -->
* - aggiungere PUT/DELETE a handler:
* <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule" scriptProcessor="%windir%\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll" preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" />
* <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
*
**************************************/
/// <summary>
/// Effettua la chiamata di update x SINGOLO foglio
/// </summary>
/// <param name="sheetUpdated">Oggetto con Elenco fogli da aggiornare</param>
// PUT: api/Sheet/5
[HttpPut]
public void Put(SheetWorkList sheetUpdated)
{
// NB. decodifico direttamente come oggetto, vedere qui:
// https://weblog.west-wind.com/posts/2013/dec/13/accepting-raw-request-body-content-with-aspnet-web-api
// https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers
int BunkId = 0;
int BatchId = 0;
if (sheetUpdated != null)
catch (Exception exc)
{
// 2020.01.16 salvo su mongoDb la risposta...
ComLib.man.saveProdAnsw(sheetUpdated);
if (sheetUpdated.SheetList != null)
{
foreach (var currSheet in sheetUpdated.SheetList)
{
// se non nullo...
if (currSheet != null)
{
DLMan.taSHL.updateDate(currSheet.SheetId, currSheet.Printing.DtStart, currSheet.Printing.DtEnd, currSheet.Machining.DtStart, currSheet.Machining.DtEnd, currSheet.Unloading.DtStart, currSheet.Unloading.DtEnd, (int)currSheet.Status);
// verifico SE SIA AVVENUTO CON SUCCESSO lo step di lavorazione...
if (currSheet.Machining.Success)
{
// SE machining completato --> status a LAVORATO!
if (currSheet.Machining.DtEnd != null)
{
// hard coded su multiax
DLMan.taIL.updateSheetStatus(currSheet.SheetId, 1, machine);
}
}
// segnalo avanzamento su redis x pagina unload
ComLib.advaceSheetRevByBunk(currSheet.BunkId);
// calcolo Batch
BunkId = currSheet.BunkId;
}
}
var tabBunks = DLMan.taSTL.getByKey(BunkId);
if (tabBunks.Count > 0)
{
BatchId = tabBunks[0].BatchID;
}
}
// ricalcolo stato BUNK
ComLib.updateBatchPosition(BatchId);
// INVALIDO eventuale valore BUNK in REDIS...
ComLib.resetRedisBunkData(machine);
Log.Instance.Error($"EXCEPTION api/Sheet | get({id}){Environment.NewLine}{exc}");
}
Log.Instance.Trace($"api/Sheet | get({id}) | answ: {answ}");
return answ;
}
/// <summary>
@@ -158,21 +100,25 @@ namespace NKC_WF.Controllers
if (sheetUpdated.SheetList != null)
{
// salvo macchina
machine = sheetUpdated.Machine;
foreach (var currSheet in sheetUpdated.SheetList)
{
// se non nullo...
if (currSheet != null)
{
DLMan.taSHL.updateDate(currSheet.SheetId, currSheet.Printing.DtStart, currSheet.Printing.DtEnd, currSheet.Machining.DtStart, currSheet.Machining.DtEnd, currSheet.Unloading.DtStart, currSheet.Unloading.DtEnd, (int)currSheet.Status);
// verifico il fixSheet
ProdSheetExt fixSheet = checkFixSheet(currSheet);
DLMan.taSHL.updateDate(fixSheet.SheetId, fixSheet.Printing.DtStart, fixSheet.Printing.DtEnd, fixSheet.Machining.DtStart, fixSheet.Machining.DtEnd, fixSheet.Unloading.DtStart, fixSheet.Unloading.DtEnd, (int)fixSheet.Status);
// SE machining completato --> status a LAVORATO x item!
if (currSheet.Machining.DtEnd != null)
if (fixSheet.Machining.DtEnd != null)
{
// hard coded su multiax
DLMan.taIL.updateSheetStatus(currSheet.SheetId, 1, "WRK001");
DLMan.taIL.updateSheetStatus(fixSheet.SheetId, 1, sheetUpdated.Machine);
}
// segnalo avanzamento su redis x pagina unload
ComLib.advaceSheetRevByBunk(currSheet.BunkId);
BunkId = currSheet.BunkId;
ComLib.advaceSheetRevByBunk(fixSheet.BunkId);
BunkId = fixSheet.BunkId;
answ = "OK";
}
}
@@ -192,7 +138,207 @@ namespace NKC_WF.Controllers
{
answ = "NO";
}
Log.Instance.Trace($"api/Sheet | post() | machine: {machine} | BatchId: {BatchId} | answ: {answ}");
return answ;
}
/// <summary> Effettua la chiamata di update x SINGOLO foglio
///
///
/// *********************************** METODI PUT
///
/// per abilitare è necessario agire sulla conf di IIS:
///
/// - modificare il file applicationHost.config che si trova in C:\Windows\System32\inetsrv\config
/// - disinstallare webDav oppure commentare le righe <!-- <add name="WebDAVModule" /> -->
/// <!-- <add name="WebDAVModule" image="%windir%\System32\inetsrv\webdav.dll" /> --> <!--
/// <add name="WebDAV" path="*"
/// verb="PROPFIND,PROPPATCH,MKCOL,PUT,COPY,DELETE,MOVE,LOCK,UNLOCK" modules="WebDAVModule"
/// /r esourceType="Unspecified"// requireAccess="None" /> -->
/// - aggiungere PUT/DELETE a handler: <add name="ExtensionlessUrlHandler-ISAPI-4.0_64bit"
/// path="*." verb="GET,HEAD,POST,DEBUG,PUT,DELETE" modules="IsapiModule"
/// scriptProcessor="%w indir/%//\Microsoft.NET\Framework64\v4.0.30319\aspnet_isapi.dll"
/// preCondition="classicMode,runtimeVersionv4.0,bitness64" responseBufferLimit="0" /> <add
/// name="ExtensionlessUrlHandler-Integrated-4.0" path="*."
/// verb="GET,HEAD,POST,DEBUG,PUT,DELETE" ///t
/// ype="System.Web.Handlers.TransferRequestHandler"
/// preCondition="integratedMode,runtimeVersionv4.0" responseBufferLimit="0" />
///
/// *************************************/ </summary> <param name="sheetUpdated">Oggetto con
/// Elenco fogli da aggiornare</param>
/// PUT: api/Sheet/machine_ID
[HttpPut]
public void Put(SheetWorkList sheetUpdated)
{
// NB. decodifico direttamente come oggetto, vedere qui:
// https://weblog.west-wind.com/posts/2013/dec/13/accepting-raw-request-body-content-with-aspnet-web-api https://weblog.west-wind.com/posts/2017/sep/14/accepting-raw-request-body-content-in-aspnet-core-api-controllers
int BunkId = 0;
int BatchId = 0;
if (sheetUpdated != null)
{
// 2020.01.16 salvo su mongoDb la risposta...
ComLib.man.saveProdAnsw(sheetUpdated);
if (sheetUpdated.SheetList != null)
{
foreach (var currSheet in sheetUpdated.SheetList)
{
// se non nullo...
if (currSheet != null)
{
DLMan.taSHL.updateDate(currSheet.SheetId, currSheet.Printing.DtStart, currSheet.Printing.DtEnd, currSheet.Machining.DtStart, currSheet.Machining.DtEnd, currSheet.Unloading.DtStart, currSheet.Unloading.DtEnd, (int)currSheet.Status);
// SE machining completato --> status a LAVORATO!
if (currSheet.Machining.DtEnd != null)
{
// hard coded su multiax
DLMan.taIL.updateSheetStatus(currSheet.SheetId, 1, sheetUpdated.Machine);
}
// segnalo avanzamento su redis x pagina unload
ComLib.advaceSheetRevByBunk(currSheet.BunkId);
// calcolo Batch
BunkId = currSheet.BunkId;
}
}
var tabBunks = DLMan.taSTL.getByKey(BunkId);
if (tabBunks.Count > 0)
{
BatchId = tabBunks[0].BatchID;
}
}
// ricalcolo stato BUNK
ComLib.updateBatchPosition(BatchId);
// INVALIDO eventuale valore BUNK in REDIS...
ComLib.resetRedisBunkData(sheetUpdated.Machine);
}
}
#endregion Public Methods
#region Protected Fields
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
/// <summary>
/// COdice macchina (HARD CODED)
/// </summary>
protected string machine = "WRK001";
#endregion Protected Fields
#region Private Fields
/// <summary>
/// Forza fix date al momento ricezione UnlEnd valido
/// </summary>
private bool dfUnlEnd = false;
/// <summary>
/// Forza fix date al momento ricezione UnlStart valido
/// </summary>
private bool dfUnlStart = false;
/// <summary>
/// Forza fix date al momento ricezione WrkEnd valido
/// </summary>
private bool dfWrkEnd = false;
/// <summary>
/// Forza fix date al momento ricezione WrkStart valido
/// </summary>
private bool dfWrkStart = false;
#endregion Private Fields
#region Private Methods
/// <summary>
/// Verifica sheet loggando le eventuali anomalie sulle date e sistemando quelle mancanti in
/// base a setup
/// </summary>
/// <param name="CurrSheet">Sheet da verificare ed eventualmente sistemare</param>
/// <returns></returns>
private ProdSheetExt checkFixSheet(ProdSheetExt CurrSheet)
{
var fixSheet = CurrSheet;
// controllo SOLO SE se non sia ne in attesa ne completato...
if (!fixSheet.Waiting || !fixSheet.Done)
{
// calcolo SE sia in errore secondo i 4 punti di controllo work/unload
if (fixSheet.Unloading.OkE)
{
// loggo
LogSheetError(fixSheet);
if (dfUnlEnd)
{
// sistemo...
fixSheet.Unloading.DtStart = fixSheet.Unloading.OkS ? fixSheet.Unloading.DtStart : fixSheet.Unloading.DtEnd;
fixSheet.Machining.DtEnd = fixSheet.Machining.OkE ? fixSheet.Machining.DtEnd : fixSheet.Unloading.DtEnd;
fixSheet.Machining.DtStart = fixSheet.Machining.OkS ? fixSheet.Machining.DtStart : fixSheet.Unloading.DtEnd;
fixSheet.Printing.DtEnd = fixSheet.Printing.OkE ? fixSheet.Printing.DtEnd : fixSheet.Unloading.DtEnd;
fixSheet.Printing.DtStart = fixSheet.Printing.OkS ? fixSheet.Printing.DtStart : fixSheet.Unloading.DtEnd;
}
}
else if (fixSheet.Unloading.OkS && (!fixSheet.Printing.Done || !fixSheet.Machining.Done))
{
// loggo
LogSheetError(fixSheet);
if (dfUnlStart)
{
// sistemo...
fixSheet.Machining.DtEnd = fixSheet.Machining.OkE ? fixSheet.Machining.DtEnd : fixSheet.Unloading.DtEnd;
fixSheet.Machining.DtStart = fixSheet.Machining.OkS ? fixSheet.Machining.DtStart : fixSheet.Unloading.DtEnd;
fixSheet.Printing.DtEnd = fixSheet.Printing.OkE ? fixSheet.Printing.DtEnd : fixSheet.Unloading.DtEnd;
fixSheet.Printing.DtStart = fixSheet.Printing.OkS ? fixSheet.Printing.DtStart : fixSheet.Unloading.DtEnd;
}
}
else if (fixSheet.Machining.OkE && (!fixSheet.Printing.Done || !fixSheet.Machining.Done))
{
// loggo
LogSheetError(fixSheet);
if (dfWrkEnd)
{
// sistemo...
fixSheet.Machining.DtStart = fixSheet.Machining.OkS ? fixSheet.Machining.DtStart : fixSheet.Unloading.DtEnd;
fixSheet.Printing.DtEnd = fixSheet.Printing.OkE ? fixSheet.Printing.DtEnd : fixSheet.Unloading.DtEnd;
fixSheet.Printing.DtStart = fixSheet.Printing.OkS ? fixSheet.Printing.DtStart : fixSheet.Unloading.DtEnd;
}
}
else if (fixSheet.Machining.OkS && !fixSheet.Printing.Done)
{
// loggo
LogSheetError(fixSheet);
if (dfWrkStart)
{
// sistemo...
fixSheet.Printing.DtEnd = fixSheet.Printing.OkE ? fixSheet.Printing.DtEnd : fixSheet.Unloading.DtEnd;
fixSheet.Printing.DtStart = fixSheet.Printing.OkS ? fixSheet.Printing.DtStart : fixSheet.Unloading.DtEnd;
}
}
}
return fixSheet;
}
private void LogSheetError(ProdSheetExt cSheet)
{
// loggo
Log.Instance.Error($"Sheet Date error | SheetId: {cSheet.SheetId} | Print: {prtDate(cSheet.Printing)} | Work: {prtDate(cSheet.Machining)} | Unload: {prtDate(cSheet.Unloading)}");
}
private string prtDate(WorkData wrkRec)
{
string dtSta = wrkRec.DtStart == null ? "NULL" : $"{wrkRec.DtStart:yyyy.MM.dd HH:mm:ss}";
string dtEnd = wrkRec.DtEnd == null ? "NULL" : $"{wrkRec.DtEnd:yyyy.MM.dd HH:mm:ss}";
return $"{dtSta} ... {dtEnd}";
}
#endregion Private Methods
}
}
}
+126
View File
@@ -0,0 +1,126 @@
using AppData;
using Newtonsoft.Json;
using NKC_SDK;
using SteamWare;
using System;
using System.Collections.Generic;
using System.Data;
using System.IO;
using System.Linq;
using System.Web.Http;
namespace NKC_WF.Controllers
{
public class SheetStatsController : ApiController
{
#region Protected Fields
/// <summary>
/// oggetto static/singleton per fare chiamate sul datalayer
/// </summary>
protected DataLayer DLMan = new DataLayer();
#endregion Protected Fields
#region Private Methods
/// <summary>
/// Metodo effettivo recupero dati
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
private List<chartJsTSerie> getDataFilt(int id)
{
List<chartJsTSerie> answ = new List<chartJsTSerie>();
var tabDati = DLMan.taSP.GetData(id);
DateTime startTime = DateTime.Now.AddYears(1);
// ciclo
foreach (var item in tabDati)
{
if (item.PrevTime < startTime)
{
startTime = item.PrevTime;
}
answ.Add(new chartJsTSerie() { x = item.PrevTime, y = item.NumParts });
}
// restituisco
return answ;
}
/// <summary>
/// Metodo effettivo recupero dati
/// </summary>
/// <param name="id"></param>
/// <param name="maxHour"></param>
/// <returns></returns>
private List<chartJsTSerie> getDataFilt(int id, int maxHour)
{
List<chartJsTSerie> answ = new List<chartJsTSerie>();
var tabDati = DLMan.taSP.GetData(id);
DateTime startTime = DateTime.Now.AddYears(1);
// ciclo
foreach (var item in tabDati)
{
if (item.PrevTime < startTime)
{
startTime = item.PrevTime;
}
answ.Add(new chartJsTSerie() { x = item.PrevTime, y = item.NumParts });
if (item.PrevTime > startTime.AddHours(maxHour))
{
break;
}
}
// restituisco
return answ;
}
#endregion Private Methods
#region Public Methods
// GET api/TempRil
public string Get()
{
return "NA";
}
/// <summary>
/// Recupero dati x batch selezionato
/// GET api/SheetStats/5
/// </summary>
/// <param name="id">BatchID</param>
/// <returns></returns>
public List<chartJsTSerie> Get(int id)
{
DateTime dtRif = DateTime.Today;
// restituisco oggetto!
return getDataFilt(id);
}
/// <summary>
/// Recupero dati x batch selezionato
/// GET api/SheetStats/5
/// </summary>
/// <param name="id">BatchID</param>
/// <param name="MaxHour">num max ore da mostrare</param>
/// <returns></returns>
public List<chartJsTSerie> Get(int id, int MaxHour)
{
List<chartJsTSerie> answ = new List<chartJsTSerie>();
// se maxHour < 0 --> mostro tutto
if (MaxHour < 0)
{
answ = getDataFilt(id);
}
else
{
answ = getDataFilt(id, MaxHour);
}
// restituisco oggetto!
return answ;
}
#endregion Public Methods
}
}
+2 -2
View File
@@ -12,7 +12,7 @@ namespace NKC_WF.Controllers
// GET api/getMUCssController
public HttpResponseMessage Get()
{
string answ = getCssByPost(0);
string answ = $"{getCssByPost(0)}";
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(answ, Encoding.UTF8, "text/css")
@@ -22,7 +22,7 @@ namespace NKC_WF.Controllers
// GET api/getMUCssController/5
public HttpResponseMessage Get(int id)
{
string answ = getCssByPost(id);
string answ = $"{getCssByPost(id)}";
return new HttpResponseMessage(HttpStatusCode.OK)
{
Content = new StringContent(answ, Encoding.UTF8, "text/css")
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More