From 0e231b0068a999dcbe3271237d837c9cc39ae0b6 Mon Sep 17 00:00:00 2001 From: samuele Date: Wed, 29 Oct 2008 15:45:10 +0000 Subject: [PATCH] Update con gestione COMPLETA via barcode!!! git-svn-id: https://keyhammer.ath.cx/svn/XPS/trunk@34 43c8e981-f90d-406c-a89a-24a2c4268d51 --- XPS/App_Code/DS_applicazione.xsd | 200 ++- XPS/App_Code/DS_applicazione.xss | 40 +- XPS/Appunti.txt | 7 +- XPS/Bin/SteamWare.XML | 2371 ++++++++++++++++++++++++++++++ XPS/Bin/SteamWare.dll | Bin 340480 -> 340992 bytes XPS/Bin/SteamWare.pdb | Bin 783872 -> 787968 bytes XPS/Bin/SteamWareXPS.XML | 210 +++ XPS/Bin/SteamWareXPS.dll | Bin 167936 -> 167936 bytes XPS/Bin/SteamWareXPS.pdb | Bin 327168 -> 327168 bytes XPS/Style.css | 6 +- XPS/Web.config | 2 +- XPS/barcode.aspx | 8 + XPS/barcode.aspx.cs | 177 +++ XPS/elencoBarcode.aspx | 8 + XPS/elencoBarcode.aspx.cs | 13 + XPS/logs/20081029.txt | 13 + XPS/mod_barcode.ascx | 16 + XPS/mod_barcode.ascx.cs | 220 +++ XPS/mod_elencoBarcode.ascx | 39 + XPS/mod_elencoBarcode.ascx.cs | 22 + XPS/mod_elencoComm.ascx | 44 +- XPS/mod_elencoComm.ascx.cs | 3 +- 22 files changed, 3352 insertions(+), 47 deletions(-) create mode 100644 XPS/barcode.aspx create mode 100644 XPS/barcode.aspx.cs create mode 100644 XPS/elencoBarcode.aspx create mode 100644 XPS/elencoBarcode.aspx.cs create mode 100644 XPS/mod_barcode.ascx create mode 100644 XPS/mod_barcode.ascx.cs create mode 100644 XPS/mod_elencoBarcode.ascx create mode 100644 XPS/mod_elencoBarcode.ascx.cs diff --git a/XPS/App_Code/DS_applicazione.xsd b/XPS/App_Code/DS_applicazione.xsd index c370b83..1d83922 100644 --- a/XPS/App_Code/DS_applicazione.xsd +++ b/XPS/App_Code/DS_applicazione.xsd @@ -193,6 +193,7 @@ ORDER BY DataArrivo DESC + @@ -208,13 +209,7 @@ ORDER BY DataArrivo DESC - SELECT v_commesse.Cod, v_commesse.Stato, v_commesse.CodCliente, v_commesse.Cliente, v_commesse.CodCli, v_commesse.descrizione, v_commesse.DDT, - v_commesse.DataDDT, v_commesse.DataArrivo, v_commesse.Posizione, v_commesse.Qta, v_commesse.Peso, v_commesse.Righe, v_commesse.Colli, - v_commesse.DataPrevista, v_commesse.CodStato -FROM v_commesse INNER JOIN - Filtro2Stati ON v_commesse.CodStato = Filtro2Stati.CodStato -WHERE (Filtro2Stati.CodFiltro = @CodFiltro) -ORDER BY v_commesse.DataArrivo DESC + SELECT v_commesse.Ciclo, v_commesse.Cliente, v_commesse.Cod, v_commesse.CodCli, v_commesse.CodCliente, v_commesse.CodStato, v_commesse.Colli, v_commesse.DDT, v_commesse.DataArrivo, v_commesse.DataDDT, v_commesse.DataPrevista, v_commesse.Peso, v_commesse.Posizione, v_commesse.Qta, v_commesse.Righe, v_commesse.Stato, v_commesse.descrizione FROM v_commesse INNER JOIN Filtro2Stati ON v_commesse.CodStato = Filtro2Stati.CodStato WHERE (Filtro2Stati.CodFiltro = @CodFiltro) ORDER BY v_commesse.DataArrivo DESC @@ -343,7 +338,18 @@ ORDER BY v_commesse.DataArrivo DESC - + + + + SELECT IdxObj, CodCliente, CodStato, Posizione, Livello, Rev, CodObj, Nome, IdxObjMamma, Note, ExtKey, DueDate, LeadTime, LeadTimeUM, UserCreaz, DataCreaz, UserMod, DataMod FROM dbo.IstObj +where IdxObj=@IdxObj + + + + + + + UPDATE IstObj @@ -358,7 +364,7 @@ WHERE (IdxObj LIKE @IdxObjCommon) AND (Livello = 3) - + UPDATE IstObj @@ -562,6 +568,117 @@ WHERE (IdxObj = @Original_Cod) + + + + + + DELETE FROM [dbo].[TransizioneEventi] WHERE (([codInviato] = @Original_codInviato)) + + + + + + + + INSERT INTO [dbo].[TransizioneEventi] ([codInviato], [prec_codInviato], [IdxTipoEvento], [text2show], [descrComando]) VALUES (@codInviato, @prec_codInviato, @IdxTipoEvento, @text2show, @descrComando) + + + + + + + + + + + + SELECT codInviato, prec_codInviato, IdxTipoEvento, text2show, descrComando FROM dbo.TransizioneEventi + + + + + + UPDATE [dbo].[TransizioneEventi] SET [codInviato] = @codInviato, [prec_codInviato] = @prec_codInviato, [IdxTipoEvento] = @IdxTipoEvento, [text2show] = @text2show, [descrComando] = @descrComando WHERE (([codInviato] = @Original_codInviato)) + + + + + + + + + + + + + + + + + + + + + + + + + + + DELETE FROM [dbo].[AnagraficaEventi] WHERE (([IdxTipoEvento] = @Original_IdxTipoEvento)) + + + + + + + + INSERT INTO [dbo].[AnagraficaEventi] ([IdxTipoEvento], [Nome]) VALUES (@IdxTipoEvento, @Nome) + + + + + + + + + SELECT IdxTipoEvento, Nome FROM dbo.AnagraficaEventi + + + + + + UPDATE [dbo].[AnagraficaEventi] SET [IdxTipoEvento] = @IdxTipoEvento, [Nome] = @Nome WHERE (([IdxTipoEvento] = @Original_IdxTipoEvento)) + + + + + + + + + + + + + + + + + + SELECT AnagraficaEventi.IdxTipoEvento, AnagraficaEventi.Nome +FROM AnagraficaEventi INNER JOIN + TransizioneEventi ON AnagraficaEventi.IdxTipoEvento = TransizioneEventi.IdxTipoEvento +WHERE (TransizioneEventi.codInviato = @codInviato) + + + + + + + + @@ -710,6 +827,13 @@ WHERE (IdxObj = @Original_Cod) + + + + + + + @@ -979,6 +1103,55 @@ WHERE (IdxObj = @Original_Cod) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1010,12 +1183,21 @@ WHERE (IdxObj = @Original_Cod) + + + + + + + + + \ No newline at end of file diff --git a/XPS/App_Code/DS_applicazione.xss b/XPS/App_Code/DS_applicazione.xss index 8557ba8..279ed02 100644 --- a/XPS/App_Code/DS_applicazione.xss +++ b/XPS/App_Code/DS_applicazione.xss @@ -4,19 +4,21 @@ Changes to this file may cause incorrect behavior and will be lost if the code is regenerated. --> - + - - - - - - - - + + + + + + + + + + - + 927 @@ -28,11 +30,11 @@ - + 1116 - 384 + 401 1116 @@ -40,7 +42,7 @@ - + 689 @@ -52,5 +54,17 @@ + + + + 1162 + 923 + + + 1162 + 823 + + + \ No newline at end of file diff --git a/XPS/Appunti.txt b/XPS/Appunti.txt index f4b5449..b821541 100644 --- a/XPS/Appunti.txt +++ b/XPS/Appunti.txt @@ -16,7 +16,7 @@ OK + override con click method e lasciare selected OK + mostrare un panel con i dettagli data/ora e pulsante di salvataggio che prende selected + altro x salvare query... OK - segreteria OK - admin (da magazzino... con altri editing & co...) - - barcode da web? +OK - barcode da web? - avanzamento stato: obj mamma ha stato min tra i vari child... + in visualizzazione mostrare stato min e Max ------------------------------------------------ @@ -31,17 +31,18 @@ OK - 2 label - icone diverse?!? - cosa può fare ogni funzione? OK - magazzino: crea, aggiunge righe/ULP e cancella e modifica descrizione fino a quando approva, poi è fuori dal gioco... - - indica spedito con barcode +OK - indica spedito con barcode OK - direzione: OK - può cambiare lo stato... OK - prod: OK - indica DueDate in massa o per ogni ULP - segreteria: + - indica che è stato fatturato con pulsante ------------------------------------------------ - 20081025 ------------------------------------------------ -- obbligatorio dire fosfatazione/brunitura +OK - obbligatorio dire fosfatazione/brunitura (usato ExtKey) - fare 2 schede: 1 fosf/brun - elenco mostra sempre da oggi in poi - nelle schede x giorno riportare elenco comm + scadute diff --git a/XPS/Bin/SteamWare.XML b/XPS/Bin/SteamWare.XML index 6809ec2..c877e5b 100644 --- a/XPS/Bin/SteamWare.XML +++ b/XPS/Bin/SteamWare.XML @@ -4,5 +4,2376 @@ SteamWare + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + classe gestione logging esteso di eventi e note utente (correlabili) + + + + + TableAdapter di accesso alla tabella anagrafica filtraggi + + + + + TableAdapter di accesso alla tabella anagrafica record + + + + + TableAdapter di accesso alla tabella logging record di eventi + + + + + TableAdapter di accesso alla tabella logging utente + + + + + TableAdapter di accesso alla vista logging eventi + + + + + TableAdapter di accesso alla vista logging utente + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + avvio i tari tableAdapters + + + + + avvio della classe istanziando db e + + + + + oggetto statico di accesso ai metodi della classe... + + + + + tabella eventi + + + + + + tabella note + + + + + + tabella eventi secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella note secondo filtro + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + + + + + tabella eventi secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + tabella note secondo filtro e condizione ulteriore WHERE esplicitata + + filtro gestito come condizione "LIKE '%{0}%'" rispetto al filtro salvato con l'evento + ulteriore condizione WHERE per filtrare i dati (testo {0} della condizione "WHERE {0}" + + + + + inserisce l'evento indicato dai parametri + + datetime dell'evento + user che ha generato l'evento + pagina/form applicaizone in cui l'evento si è generato + valore originale(se c'è) + valore nuovo/modificato + descrizione evento (poi gestita con anagrafica interna) + filtro logico evento (poi gestita con anagrafica interna) + + + + inserisce la nota utente indicata dai parametri, restituisce idx della nota creata... + + datetime della nota utente + user che ha inserito la nota + testo della nota + valore ulteriore da associare alla nota (es: label, codice, versione, ...) + filtro logico evento (poi gestita con anagrafica interna) + intero dell'idx della nota creata + + + + associa l'evento e la nota indicati + + idx del record da associare + idx chiave della nota da associare + + + + associa l'ultimo evento del filtro indicato alla nota + + filtro associato all'ultimo evento... + idx chiave della nota da associare + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + segna come cestinati tutti gli eventi dell'utente indicato non ancora associati o cestinati + + utente generatore dell'evento + + + + Elimina gli eventi cestinati generati dall'utente indicato + + utente generatore dell'evento + + + + Elimina gli eventi cestinati anteriori alla data selezionata + + dataOra dell'evento + + + + effettua la registrazione dell'evento in session + + + + + metodo di comportamento del controllo di logging + + + + + metodo di comportamento del controllo di logging + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Accesso in lettura e scrittura al filesystem per gestione files upload e download + + + + + path di lavoro dei metodi leggi/scrivi + + + + + verifica esistenza directory ed eventualmente crea restituendo nome completo di "/" finale + + + + + + + restituisce una tab di files dato l'elenco dei files + + + + + + + setta le directory + + + + + + + oggetto WebClient + + + + + inizializza il metodo alla cartella indicata + + cartella di lavoro + + + + metodo di avvio empty + + + + + Legge i dati da uno stream fino a quando arriva alla fine. + I dati sono restituiti come un byte[] array. un eccezione IOException è + sollevata se una delle chiamate IO sottostanti fallisce. + + Lo stream da cui leggere + Lunghezza buffer iniziale (-1 = default 32k) + + + + verifica esistenza directory, eventualmente crea e restituisce controllo DirectoryInfo + + + + + + ottiene il dataset dei files presenti nella directory indicata esplicitamente + + dir da indicizzare... già mappata! ( es SteamwareStrings.getFilePath(...) ) + + + + + ottiene il dataset dei files presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + ottiene il dataset dei files DEL TIPO "like {param}" presenti nella directory indicata all'istanziazione dell'oggetto + + + + + + elimina la directory di lavoro se è dir virtuale mappata + + + + + + + verifica se il file indicato esista in workDir + + + + + + + elimina il file indicato dalla directory di lavoro + + + + + + + restituisce lo stream del file richiesto + + + + + + + restituisce la stringa letta dal file richiesto + + + + + + + scrive il file dallo stream byte[] inviato + + + + + + + + scrive il file dalla stringa inviata + + + + + + + converte una string in un byte[] + + + + + + + converte un byte[] in una string + + + + + + + sposta il file da From a To... + + + + + + + + + copia il file da From a To... + + + + + + + + + imposta la dir di lavoro + + + + + + + imposta la dir di lavoro impostandola dal mapPath corretto della web app... + + + + + + + esegue un comando in shell + + + + + + + + + esegue un comando in shell + + + + + + + + + Scarica un file dall'url fornito nella directory indicata x il filemover col nome richiesto + + url del file + nome con cui salvare il file + + + + + versione statica (singleton) del'oggetto fileMover + + + + + classe di wrap verso i TableAdapter impiegati + + + + + metodo protected di avvio della classe + + + + + procedura di avvio dei tableAdapter + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + setup delle tabelle vocabolario + + + + + prende l'oggetto tabVocabolario in ram e lo trasforma in dictionary + + + + + + tableAdapter diritti + + + + + tableAdapter permessi + + + + + tableAdapter funzione + + + + + tableAdapter permessi2funzione + + + + + tableAdapter CdC + + + + + tableAdapter utenti + + + + + table adapter lingue + + + + + table adapter vocabolario + + + + + oggetto volabolario organizzato come dizionario con chiave lang#lemma e valore la traduzione + + + + + resetta il vocabolario rileggendo i dati... + + + + + crea nel db corrente il lemma richiesto e lo valorizza come "--{0}--" + + + + + + + classe singleton x la gestione dei tableadapters + + + + + elenco lingue ammesse da vocabolario... + + + + + Pagina base applicazioni SteamWare da cui derivare le altre + + + + + Iniziazlizzazione void (non fa nulla) + + + + + Metodo MAIN: viene eseguita al caricamento ed effettua delle routines per il controllo utente e istanzia l'oggetto memLayer + + + + + + + rimanda alla pagina di Work In Progress salvando in session un titolo ed una descrizione che al pagina wip poi mostrerà all'utente + + titolo da mostrare nella pagina WIP + descrizione da mostrare nella pagina WIP + + + + enumeratore modalità login + + + + + login AD normale + + + + + forza utente fornendo password + + + + + enumeratore modalità scrittura tag siteMap + + + + + nodo di tipo iniziale - apertura + + + + + nodo di tipo foglia + + + + + nodo di tipo finale - chiusura + + + + + enumeratore tipi di anagrafica + + + + + tipo di anagrafica Brembo + + + + + tipo di anagrafica generica + + + + + tipo di vista del modulo + + + + + modalità selezione + + + + + modalità editing + + + + + tipo di immagini usate per le icone di comando in web applications + + + + + dimensione immagini usate per le icone di comando in web applications + + + + + classe per effettuare confronto tra valori disomogeneri per tipo e costruire diff testuali + + + + + inizializzazione classe + + + + + valorizza i diff dei valori old e new + + + + + calcola solo il vettore dei valori old (x delete) + + + + + oggetto statico per il confronto valori + + + + + stringa diff dei valori originali modificati + + + + + stringa diff dei valori nuovi modificati + + + + + dictionary dei parametri old + + + + + dictionary dei parametri new + + + + + classe di gestione lettura + + + + + Summary description for selettori + + + + + + + + + + + + + + + carica i dati CdC se in cache o da TableAdapter + + + + + restituisce l'elenco di tutti i cdc + + + + + + restituisce l'elenco di tutti i cdc della gerarchia dell'utente + + + + + + disegna la leggenda html laterale... + + + + + + disegna piechart 2-dim + + + + + + disegna piechart 3d ellittica + + + + + + traduce la stringa colore in oggetto colore + + + + + + + layer gestione vari tipi di memoria: cache, session... + + + + + lettore file configurazione + + + + + oggetto singleton x accesso al layer di memoria + + + + + classe gestione accessi a Session, cache, viewstate, configuration... + + + + + legge dalla config un valore bool + + + + + + + legge dalla config un valore string + + + + + + + legge dalla config un valore int + + + + + + + carica dalla sessione un dato di tipo object generico + + + + + + + carica dalla sessione un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla sessione un dato di tipo string + + + + + + + carica dalla sessione un dato di tipo long + + + + + + + carica dalla sessione un dato di tipo int + + + + + + + inserisce in session un valore + + + + + + + inserisce in session un valore + + nome della variabile + valore associato + indica se debba sopravvivere ad update (inserita in elenco valSess2SurvUpd) + + + + + svuota una variabile dalla session + + + + + + restituisce true se è presente in session l'oggetto richiesto + + + + + + + carica dalla Cache un dato di tipo object generico + + + + + + + carica dalla Cachee un dato di tipo boolean (se vuoto false) + + + + + + + carica dalla Cachee un dato di tipo string + + + + + + + inserisce in Cache un valore + + nome della variabile + valore + + + + inserisce in Cache un valore e su richiesta regitra tra le tab in cache da svuotare on update.. + + nome della variabile + valore + da registrare come tabella da svuotare on update? + + + + + svuota una variabile dalla Cache + + + + + + restituisce true se è presente in cache l'oggetto richiesto + + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in cache e da aggiornare su comando update + + + + + + aggiunge la stringa corrente nel dictionary delle tabelle messe in session che vanno preservate da comando update (es: oggetto selezionato...) + + + + + + forza lo svuotamento delel tabelle indicate come in cache... + + + + + elenco dictionary delle tab in cache da aggiornare con update svuotando da cache... + + + + + elenco dictionary dei valori in session da NON aggiornare con update... + + + + + definisce un intervalo di 2 date + + + + + struttura orario ordinarie/strordinarie + + + + + classe di funzioni inerenti le date + + + + + inizializzazione empty + + + + + effettua l'operazione di intersezione tra 2 intervali di date restituendo ulteriore intervallo: NB se sono intervali disgiunti restituisce 9/9/9999 x inizio e fine + + + + + + + + oggetto mese precedente alla dataLilmite + + + + + + oggetto mese corrente fino alla dataLilmite + + + + + + confronta le date e restituisce true se le date sono nello stesso mese + + + + + + + + restituisce l'intervallo del giorno completo che comprende la data indicata + + + + + + + restituisce l'intervallo di N giorni fino alla data indicata + + + + + + + restituisce l'intervallo della settimana corrente per la data indicata + + + + + + + restituisce l'intervallo del mese corrente per la data indicata + + + + + + + restituisce l'intervallo del mese che comprendela data indicata + + + + + + + metodo static per la gestione delle email + + + + + + + metodo static per la gestione delle email + + + + + + + procedura invio email + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + procedura invio email + scrittura in log! + + email mittente + email destinatario + oggetto dell'email + corpo del messaggio + + + + metodo singleton gestione email... + + + + + Tipo di comparazione, Binary == CaseSensitive, Text = insensitive + + + + + tipo controllo : binario + + + + + tipo controllo : text + + + + + Funzione di splitting compatibile con multi-character e multi-line + + + + + stringa da splittare + + + + + Delimiter con cui splittare + + + + + Costruttore dello Splitter + + + + + comparatore case sensitive + + + + + + + + comparatore case insensitive + + + + + + + + parte principale dello splitter + + stringa da splittare + delimitatore ricercato + true=il delimiter è un blocco unico, false=qualsiasi oggetto del delimiter fa split (come split base) + + 0 -> Binary=CaseSensitive, 1 -> Text=case insensitive + + + + + elimina dal nome file il tipo (desinenza) + + + + + + + Classe di metodi che estendono quelli base applicati alle string + + + + + Trasforma in MAIUSCOLo il primo carattere della stringa + + stringa da processare + stringa processata + + + + restituisce la stringa completa e corretta del filepath del server (anche con vDir) + + path relativo alla cartella iis dell'applicativo + path fisico tradotto + + + + fornisce dati di base per l'utente + + + + + fornisce cognome e nome utente formattati a partire dall'username e dalla tabella UTENTE + + + + + + + restituisce la riga completa dall'username richiesto + + + + + + + Base class for every user control in the application, containing some common + behaviour and utility methods. + It is not meant to be be used directly. + + + + + tipo id controllo con classi di base comune da cui derivare gli *.asmx + + + + + nome della pagina correntemente caricata + + + + + memorizza la pagina precedente (ovvero la corrente ma non da page-object ma in session... + + + + + stringa con CDC in (...) dei cdc abilitati (da permesso gerarchicamente a discendere...) + + + + + stringa con elenco CDC abilitati (da permesso gerarchicamente a discendere...) + + + + + tabella diritti + + + + + tabella di tutti i cdc + + + + + tipo di anagrafica usata + + + + + importo il tipo di vista del modulo + + + + + elenco testuale csv dei cdc accessibili all'utente (x filtri tipo IN(...)) + + + + + numero di righe standard x i datagrid + + + + + numero di righe standard x i datagrid di anagrafica + + + + + numero di righe standard x i datagrid lunghi + + + + + numero di righe standard x i datagrid medi + + + + + numero di righe standard x i datagrid su mezza pagina + + + + + numero di righe standard x i selettori popup + + + + + indirizzo email dell'admin applicativo cui vanno le email in caso di anomalie... + + + + + indirizzo email dell'applicativo da cui partono le email in caso di anomalie... + + + + + indirizzo server SMTP + + + + + elenco delle pagine "safe" ovvero da non autorizzare - da web.config + + + + + elenco delle pagine "common" ovvero da autorizzare ma senza bisogno diritti in anagrafica - da web.config + + + + + valore che determina se è possibile forzare impersonificazioen utente... + + + + + livello di log (1-->5) + + + + + dir di logging + + + + + MAIN: esecuzione al caricamento del modulo delle routines di controllo utente e creazione pagina + + + + + + + predisposizione dati x pagina da cache/database a seconda della disponibilità in cache o refresh (B.1.4) + + + + + popola gli oggetti e le labels... (B.1.6) + + + + + disegna la pagina: prima i controlli poi il datagrid + + + + + aggiunge i link x i selettori + + + + + sistema i vari controlli della pagina + + + + + aggiorna eventuali datalist e datagrid + + + + + sistema tutte le labels traducendo i lemmi nella lingua utente ed in inglese + + + + + limita una stringa al numero max di caratteri imposto + + + + + + + + Reads data from a stream until the end is reached. The + data is returned as a byte array. An IOException is + thrown if any of the underlying IO calls fail. + + The stream to read data from + The initial buffer length + + + + converte una data in formato aaaammgg in stringa gg/mm/aaaa + + + + + + + converte una data in formato aaaammgg in stringa aaaa-mm-gg + + + + + + + converte una stringa in formato gg/mm/aaaa in stringa(intero data) in formato aaaammgg + + + + + + + converte una datetime in un intero tipo yyyymmddhhmmss + + + + + + + formatta la data in formato dateTime in una data formato italiano come stringa gg/mm/aaaa + + + + + + + invia un alert jscript con messaggio indicato... + + messaggio dell'alert da mandare + + + + scrive immediatamente sulla pagina web il messaggio di avanzamento... + + + + + + restituisce una scringa formattata in testa e coda x essere un corretto comando javascript + + + + + + + invio email senza log + + + + + + + + + + invio email con log + + + + + + + + + + caricamento dati applicazione da sessione (B.1.3) + + + + + setup datamanagers... + + + + + reset update del modulo corrente + + + + + (ri)carica i dataset del modulo + + + + + verifica se tutti i dataset richiesti sono disponibili i cache + + + + + + salva nella cache i dataset caricati + + + + + carica dalla cache i dataset necessari + + + + + legge i valori standard x dataset e parametri + + + + + leggi i parametri di configurazione standard dell'applicativo + + + + + genera la stringa dei cdc autorizzati dell'utente + + + + + legge il dataset dei CdC + + + + + caricamento dati user da sessione (B.1.1) + + + + + verifica che l'utente abbia almeno un permesso per la pagina corrente altrimenti redirect ad unauthorized + + + + + salva in variabile pagina il nome della pagina corrente + + + + + selezione delle posizioni cdc autorizzate come stringa di filtraggio su POSIZIONE LIKE, se non ce ne fossero redirige su unauthorized.aspx + + + + + + risponde alla domanda se l'utente abbia permesso tipo writable (S) nel permessi2funzione + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio da accodare al filtro x CdC autorizzati + + condizione + tipo di eguaglianza + nome parametro + valore parametro + + + + + crea la stringa di filtraggio x data secondo modalità tipo inizio/fine/durante... + + + + + + crea la stringa di filtraggio x data secondo modalità tipo minoreUguale / uguale / maggioreUguale... + + + + + + verifica la condizione booleana e formatta di conseguenza la stringa di filtraggio tipo LIKE x i campi inseriti separati da # SE valParam !="" + + + + + + + + esegue la ricerca dei cdc nelle posizioni indicate dal filtro e restituisce elenco distinct degli stessi + + filtro con cui cercare i cdc (del tipo " (POSIZIONE LIKE 'T.1.2.3%') OR ... " + stringa di filtraggio ricostruita per l'elenco dei cdc fino a quel momento trovati + ultimo cdc trovato + cdc corrente + + + + + restituisce il cdc dell'utente data la sua matricola + + + + + + + restituisce l'utente AS dall'utente win + + + + + + + restituisce la descr del CdC + + + + + + + invia la stringa jscript di conferma pre-cancellazione + + + + + + restituisce la stringa del path corretto per l'immagine richiesta nel formato "~/images/{0}{1}" + + verrà usato x posizione {0}, tipo "view" + verrà usato x posizione {1}, tipo "_s.png" + + + + + effettua traduzione del lemma + + + + + + + effettua traduzione in inglese del lemma + + + + + + + definisce visibilità + + + + + + + effettua la registrazione degli eventi + + + + + effettua l'inserimento vero e proprio dell'evento letto dai valori in session x l'utente corrente... + + evento da loggare + valori originali + nuovi valori + filtro associato + + + + salva in sessione i valori indicati + + dictionary dei valori vecchi + dictionary dei valori nuovi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + salva in sessione i valori per un oggetto che sta x essere eliminato + + dictionary dei valori vecchi + bool su abilitazione al log dell'oggetto + descrizione evento da loggare + filtro associato all'evento + restituisce il numero di elementi contenuti, -1 significa nessuna differenza... + + + + imposto il tipo di anagrafica del controlloS + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + variabile salvata in view state x la stringa di sorting - dg 2 + + + + + legge e scrive in viewState la stringa di filtraggio... + + + + + variabile salvata in viewstate x la direzione del sorting + + + + + genera la stringa filtro x i cdc autorizzati x l'user + + + + + + tipo di vista del modulo + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe gestione utente: auth e permission/ruoli - versione GENERICA + + + + + cancella da session l'utente + + + + + carica la riga dati utente + + + + + Carica la tabella diritti dell'utente da db e salva in session + + + + + imposta la lingua utente dal valore della riga DB + + + + + costruisce la mappa del sito per l'utente + + + + + formatta un nodo in modo corretto dai dati indicati + + + + + + + + + inizializza la gestione utente... + + + + + traduce il lemma nella lingua dell'user corrente + + + + + + + traduce il lemma in inglese + + + + + + + traduce il lemma nella lingua dell'user e in inglese tra parentesi + + + + + + + Procedura da chiamare DOPO aver messo in session i dati utente/dominio x caricare gli altri dati + + + + + salva dati accessori quali il cdc dell'utente... + + + + + verifica nella tab diritti se l'utente abbia il right richiesto e fornisce bool in risposta + + + + + + + verifica le credenziali AD dell'utente... + + + + + + + + conta il numero di permessi utente per la pagina attuale e restituisce true se ne trova almeno 1 + + + + + + + verifica se il permesso utente per la pagina attuale sia write per almeno 1 diritto assegnato (restituisce true se ne trova almeno 1 con permessi2funzione.readwrite='S') + + + + + + + ricarica e ri-traduce la mappa sito per l'utente... + + + + + retituisce il nome apgina dai permessi utente + + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente data la matricola... + + matricola + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username... + + username + + + + + restituisce cognome e nome di un utente dato username e dominio... + + username + dominio + + + + + restituisce cognome e nome di un utente dato username eventualmente comprensivo di dominio... + + {dominio\}userName + + + + + restituisce l'elenco delle funzioni abilitate datto modulo ed username + + + + + + + + restituisce l'elenco degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + tabella utenti + + + + restituisce l'elenco delle email degli utenti dato i diritti che devono avere come modulo/funzione + + nome del modulo + nome della funzione + stringa di email separate da "," + + + + versione statica della classe utente come singleton UtenTeSignletoN + + + + + restituisce la tabella diritti da session + + + + + tabella dei permessi utente + + + + + tabella dei permessi utente di tipo "WRITE" enabled + + + + + retituisce username AD + + + + + oggetto utente con metodi get/set + + + + + oggetto dominio con metodi get/set + + + + + oggetto modulo (applicazione) con metodi get/set + + + + + oggetto lingua utente con metodi get/set + + + + + restituisce true se utente forzato da forceUser.aspx + + + + + restituisce i valori della riga utente da db + + + + + restituisce una stringa formattata con cognome, nome e matricola + + + + + restituisce una stringa della sigla dell'utente + + + + + restituisce una stringa formattata con cognome e nome + + + + + restituisce una stringa formattata con cognome + + + + + restituisce una stringa formattata con nome + + + + + fornisce un file XML della mappa del sito abilitato per l'utente... + + + + + è un boolean che indica se in session ci siano user/dominio e quindi utente autenticato in rpecedenza... + + + + + classe gesione log files applicazioni + + + + + directory base x logs + + + + + nome del file corrente + + + + + max mb di log da accumulare + + + + + singleton del logger + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata + + + + + avvio del logger nella dir desiderata con il max di dati indicato + + + + + scrive sul file log di default il valore della variabile string passata su una riga... (tab delim?!?) + + testo iniziale del log + + + + + scrive un messaggio di log con etichetta pre + + testo messaggio + tipo di log da registrare (etichetta [...]) + + + + + fornisce il nome del file in cui loggare (ed eventualmente crea...) + + + + + provvede a verificare la dim della cartella dei log e cancella i + vecchi fino a restare a dim inferiori a _logMaxMb + + + + + calcola la dim di una directory + + + + + + + fornisce il file + vecchio + + + + + + + tipo di log ammesso + + + + + struttura di comando da input utente (es: via barcode) + + + + + definisce se il comando sia valido o no + + + + + testo da mostrare dato il comando + + + + + comando registrato + + + + + comando precedentemente inserito + + + + + descrizione del comando + + + + + descrizione del comando precedente + + + + + valore del comando + + + + + valore tradotto del comando + + + + + costruttore del metodo... + + diff --git a/XPS/Bin/SteamWare.dll b/XPS/Bin/SteamWare.dll index a826e24868ee52365dbc72b571bcca2d87547175..2b26e26056f6aa28b14d4a665e7ad2ea0fca32f9 100644 GIT binary patch delta 45144 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 aq-=3I5ScE1s#d+67l_Ul|0VQi&-)J}88Zg} delta 44914 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ê~i>dQh1-* zD?}+=tl}Or9+u#e%2bnw`1)sZxJ1oa$wtoMQniW6Q-YPS%j@G*6i z39o;Y!^c$8Bh=C4@NrcjL^&*1+k_~GPbmGUanS?U^rVVmGAVpY6|7?$r*OSm!DLdn zUX6H+Y$k;pR56p^^*+`#Q*Bg>40@kuDi@;sZd4UQm25jCbeQRk5M_I#ig}#fd(TEh zIU7}5BucOM@;c5Y)mJDH=@~Ur$nA&tth!ThB+_QJOlT?67PU#}X{4>{b)h3j&#BLZ zenfg+{fb1vzoc0sXPb&FucBto3o4Jv9HKka97AxEi!Y6LsP&8{zdO`!CX?SCD&q+n z#^iU0%6!rcdTFz^&JLBwWb(U1O&6m4?o`W#D7`z?Q6W0ZzO0g-qEYBggF8o6r~*OC z?<;B>lOI~+Dt4(#CX?S+RnpV!p7Xm~HX_de4sQ|(c`gesVZ z3ms^N@Bj9wV!`8VTqHyp-J>=MosGzF_NaG}D5D`seVs~mN~j*v>neDYv0a7qhH4-* z80k&bL1-q@UX>-Z1j&6%jTYRF__p#3?MK?D9zvpwewj4T*{{|I=mzH<75NO=Ohyl? zWJ7$w9#lC@CZPw_I3|MRfn{PpS z)@3yAKUMq1NbWyV=Y`1qXDVi!akvw0pR0~S2hjGp$}$8eo4d|2wVuh0c}(qBs2p(e5FcWGf#>piWCgwC;TnUJ?7*|rG9w`7MxP1yDwlZn%56|)2IKfiZS%TntbHH3)n z|88nohFBoRQ7s>_zE#_VrnD?aIw15fw4G7)cbZ{J(RN046ndzo-}z3>5?b4GF477^ zumPv`y?R+_8&2(eb(qQZ!)`X(FY};qfQ|KqzF=E-p|fnu74jt0pfiP{l4;Nf4B^qV z#Q9!rG2~sExI~{*dxhxH!#Q=#kc&;9aLy@RVb-)X@eTc>N)V!^KdLlC*m9fmqv{)I zsh#sGuUgCVYI>mMTWDJzXxY~JMQy6q@)uPpE%E)|XJ|YYXqxZfR|{V;lOgx`7TplK zPsOhtCNa(Mu204<)>ygHa$9l)(juWf$(JBy?V?d;dEZM;@F;5z6TTn9s3~iOkako2 zh~R1&_CTex9l=rBgiCSGNM~I?U*V@8FQM=Vs*V6A(%U!BZ%0AnzXLS+GMq@oI zH$azr>RYn{l_0-8FV<(rPjF*3}vTGw;NlZZnX&MgiuDSPwlo=%n{Qv18r?Bw~JukR)vsmO&1#6YMCe9 z+9ostshySaiRn1L)e290Yq`+vt;TygSlfi|ZS{z!qm^;gw0x-56P`}iaHd)C6!z<4 z%@W$$YNMyCwZ@gEFSpw2>1M@!YC67-bfvXk=-pO}>`ZH$&{3qTtz%4!;ascjo?ce^ zXVh;o1f{;}xz@^O!XHCZ7unZY4>Fkta#_}6O!PxqDr8v|pSjerLM5dVrhRURo?K>G z8OMlbL1(s=3l*jA^JH0vz95?)eq`G@q0qE4E6XZA&NgqIw0-sfYbld)KfrpJ$+#b2 ztv}A!zY5hVtwzuQYojqj$FxQEKKZ>z_BP^*+yFD+iITPB*sB4H|5X6B>iIA=VtB zX=oc_J-}qvG}J0*TI}7>+6@|NRY=PhaH2!4V?sxmd?$^Epf+SnCZg+KbH+Sl}hj1x+n?I!k}T+`T#8n%C#y3v?Az6>&(~W5Ra`k>w<2!+MHtd>|wao ziHSe|xhZJ4RcwrKw$1ZFBdh~VGa#gGsWrkH_YHNN0ZrOgpe^{@--fxxieaiy9oweD zEmk?xF4d#$LHibK_!(-sOZ8{+eaHR01#R~Q-C{K|r@J+7`lX)+V8#bU)H|AvZStlb})7 z0l`btKSw$$l$QRHop0gCw(&o|w^RCwpnR)|P-c3mHQE|1)GxgZX&h4pj73lw*JGdE-MAr>&C_zEx^wP!jrUBlGK6y5g?lGk1w#4l+{WHQ zYm4Ai>{w)-7rF~OPO&oZ>yk9g{q2&xQ>_xAbvVp4>yXgqb}8Ost3G}cj9PAP*VcQ7 zRV?%hjyc2HF7yu4otD<7<>&1hyWW{rrr@_|oMp`ug7)J*v#tF?5$#jFev7_zNG>AU zxAo4kGKFflU*@^nnkUp0X`Z#$khfj?eV%))Nc!s;^?HAc4R(<^96uE!6eJU)pRxp`EbfHylY@CXP))r~`bNe3N zg;p_sql)@Pb-2#E$T}rdAL%~V$_zHf<{bum7hCg$($ToYIv~`w!wBzED>=lp?1Q#t z)&ZeGNXxBs{JIvo7>@LSb*~|uOqundwIx7{?1!wQ(sD|NvEG%II|sk%L>=!!eAqh2 zWY)CKs)671K^w1WomHP{0c`Ft!@JHZ5qbmZam$C_{h5iq|P1Y*cG-VghSmn|&vg3HqGnOyP40CD6CEjPPOhepqv(@(k z$~WX~-|->uW^0yE-;NI>&1W*#m@U>OrdhD)id1;cIu?cB|Dx;PYR2GbqFJzksR>hs zdWor-P$g3fp%0i+guY`+WAX!Z+TeZ8nj_@vwAs7Os$eodw7h5)*TC=pQt;zCz2Mz$ zovUHi+X!igRS;t+6=|onSEzHRo!*zNj+Yo)uTHOdE38dIgF2O2uUOv-4M*B#MaG(z zlRJ&~ylSN}%>v5(ZYu`~{m|T6?WV2}FLlp)*Y_lW7)=?7Y{z*D9(*Hg^^jbUxtSZ!M{3Iu@YuJ2l0_)Y^0@ksq3NdBJ;E>GsI;i?u|E?v8%3a+0W{xjXvRn#W}Bj()Y) z2+`fquhx1db9V&xpk(T2?vB8oE|i+$rs6x&!;Ex$)FT+|q!emOw?~~p*?B_QXjAr_ z0QCyC?D7C5du;nafZBMpeNJd-%5}kxos(+D9G(*H4YK>D8Olz{af7{f{WevY8|=_Tc7rLO(<4T|W;_x3l^a znK)fx=P{W$U12Y0GI6@X-YZ0Ly238WqJAb$oou&)(FCfKeMpD`)yY1_WCGRM-ZOwY znmBc~PYF?+I@{iXW@0$2=P#e!x_8B4C`I&ZBt{Ibd z{?&G`8x7&k55C4uxS6kiyHs{cZt%5s`pslC8NJT##bhFLojsk&MCLkslMqGbI=f&v z^)r#_Z?9!Ck?C)57oy1Yw=0=UWU}m(0>1v4jAq$6h?HLnO_rTE&CIlCiWQP&ZxZU0 z(jNxcr-ZW6Ho%T7HZ8MLdIe|OX#q<14776t)W(xzPZt`R;td&OpPPaGTs+YXPe}^7 z+0LC^HO#dk`F7-S*8ll+`udTWaqW8ilmTUUaXq-O=?wA@|vNC59HFZLyuS zz|iWh8J;q`NvWX?U5|u3V5cu4a(AhUu3v>bWM|z+XoA1e&SNscUuiFAGQnSI?-iop zue3`RQ$G{@RdxlF3H~bkkProbm3@rK1b?;Na0&Ip&tK6~zSVZ7K@R?EJ9jA=XXVWKYwTk}nO%q2YwUvif1CEh_Fg9Q3hH6I@&UGaKkt?h`lx+W=<99`kj@La zKXz+^h+pla)q8`ww?Ik~is_z)lp%C^_x4CbgxYlPf>gj{K7913Jx_=}eDtWjL|W2^ zkJj4jh3LaaYwg`k_}L>DzY@LHK5RPD%Oj+ihiEe9!$)iFCPMV#qqTNNA^PyqT6_9R z(~`b|z0Q7~N!|iFsf9d`$8c@gEI z{|?aHh)toD0iu3;FX;DHz?K)WJ#=4y=0@xeea8(Tbv$@M$M*uZyomjwhXOP=;!x;^ z0iu3KF6j43z?K(rEcDX=&5bw}`gwq;-=P=Rxnr`ZZ-TN`JnZxNT zdpMKdo1KxVzP5{n@|YG0-N95YM6Ynawkw6sMw}1*+Ws1;J|1Z+GrYc2w%2{!;3mY= zcB0S$q;Kr@LdTK5wfhT&U+MLovGauzk-oEM3tfryz5SrjK%}$wW+Yr7 zP^|9``J!-lE}Q!{n<_vq8GZq*nOYm>!0}u#xM2~G15EwU+u#}^hOtSlc&ru z^hQ_daZG-gk885@bSCpg*VczOuzS8w*4p9s5?@Kencn-DOA5CbSIKe zA0VRVpGy$K^l35fL<-j-n~aNhks@?MB+B8}J$m>eby|RW`=WHQ(D@z%d^L1AlSyHW zt~A6cjL~P9ObTOk=rc5?YjPN)J2ILa#%S-e#$ni1Lwqs136sfTjP4>tIlM#<5u%s! zm*_P@l)_kjLWojWQ>SgFG0iut;&d?+e*dr5RXu$1dLE<6VJ&@PE4$|$*4A;)5t$s; z)*mpL946>9Onz_fRhg=;_C3%2yoF4SgeZk|b%xN{h>^a!`c@=Lp}X>`Nxph|y5Lr% z`g*C*=SYeAX`x?`8t6SjNtu&;4fRo>45UW-XQ2s5m+IJU#>HJom+6*Bl)}}S#lFV6 zOBK19Gks0;9KokE@Ah4;w=kI;Hq!?TaSoelc!7p7Ic%nDGMN-M)0s>rh0S!#i^kzA znG1c*bQ+UMVKd!JXit$u zmoS+Wrs#7!*gdDPm2R|?$fU59{(^~9=t8Q7m$|98ch5}KTE__uXG#{Dz?3O8lPOnd z5mS*69lot~i4f(!wO%iDHsT>)YrPMNa=*Ff<36{IJ|XxfVq5K07~{`K>AJ2^%+-(k z+Ud4J-H_VrzCza{b1CwAw;?FseP}RVJP=k>ntWeer5e>-!*zTlgWKAU9pGVbMAZV zQ%olJz4bGdWHX0vA6@A(`Z@P~^-&=@n)~YWLVd0wig}#}VZgn zG+*=a$ve!7Q-P;>BOs{7$86Bo~3sFXM^-&>8Xs%9ri~5;QN!_Rmgeajm z>1{}O{WE9eo3(!1xJd1N!Z%#UFqw>w&;|S1#u>duuV6A6y+x0BhioRJx9VahzxQ9g zGu24FNQi!B8mY^L=z2R+R}j(lkFq^d9}?p-?s!Isj^B|w=0EHnKi7Ck*ht+LiITRb zcVgIWy06d?q)~dLPZOTbupGAjnkhAtwS2G ze?_8f@9fhgY=Vw_w~AVZP1NN=d;4??E7Hf9Oty=)_W-rr#n~>_$xP<(E!LS#GhP0L zQN_A~(PX<=7rkd({M@HkSg~HhWU^hX*9%d$Z`YMVlNP@i z_)ga+nEc>|UfU#WhCa_|vVEr>@*%tDY|qqlm`t{3>fRrb&18F)9?sNmm-o2yp~K8eP=^){gjq!2g-9%^5gA9k;f3(&-{61_#J$#qM-EA=rZvn^L??DSE-TcsN@nQggBcNC&+xmxE4(Y9QzR|wHnWsN>2MBDOVS0^8* zLCs0%5naTDzlaFe^r)W0WVYp6ee49aq>VVoTBp5V@npP>`13hQ{$)s+LY>j} zxGoX87HyB~wL-(tR<7Msf}_z`uDvJC3a9ligeP<}p?mtLB4rA#VB096^=z9Xw4;An z*c19FlbPrfT7PXOdJ-Kzsgs0$Mt@K03|Ek5`jnn0L^FL#uQ3EPnf3ZrA)3s3eN@Po zRTj2hcRBT2WY+6kCcn3FR;h(w#}G=-DnnW!)Dvw_>tm-}Gq*u#d|Km&88N_q7>Qp1 z-l!W2P0LC}>LN5h>%p*%dbtp}->A(ybxcV3LaG|Gg^)KjRp%(@$^u4H`6ncF?G16Wpy#9SKpwjn}w$7SCzZ&o~ zQX@m~Gp=yEzDg)8I~D0hCX?;$db;#$l3i-;&})U-WS1dr7otOSr#>b`hv-fX=h&a? zrNiQ7-Nc}m4vUv{7a>}2h0YVA^;YQVLK*1r6}?+%Fgkoi9~PRBeVK2Uj{dGtdh zq%h(M%>z|JL)QU*y12YmeS9RM#C?hIm3S35}IH?I+`+Bibr;FQHy&dtEOQ z%0b)fx?G5M{u}y?5bgXowC}tbg@XU4&Jv>Fzp3+uh7WY{HL>0#I0gsZt1E>lqi^Xm zLX^?BwC`s#D1ABoZJi}VUrv8p=L;3#MEB`ULUVD23A zk}Oz(9pBMKLi@1eJGw;Z2-^Om4+wpQw*Tl;Lg&!-u1^2e3>uVEhSXOmHmB4&pqB_W zK-&SmUZ@4y+=Kd@V0$zk)RFk{Upyyxd!X?>og*{=ZSUdl=PRb4(V@&N^(+>A{F<8m268D+DJARzZz5uy{#A-z$EPBe$~UZGEn zL!r~gp=HK|LDVl*$Tx`k;h#t0lRSO>{*ZPj3ewl_59t!2c<#7Ss5y7sE7Xl`-wNfh zEfPO{OlQ)u#-Y%3<4|ZJ+a?M<#I_Pw@CoBk=tbjDXs>Z7^r3O6jl-{uL!qCHL!prC zX@wJoYG2O_6l%`4joLNCT*1b@Vx+71A)Vx~4S(F&jg)B!Kg)iZ??as{M4u4rABx&JQgh)yzu zEh~LTb%qeRKdOfWTI%qlx+u`n8}^wlsn+r{y*AJ?KKwIXfkf9o9JE*1F@307(_{Kf zplOTnV>&X3Cxb2Lh8@>UgvkAI-Ng{!EgaWbOyytX`{rwh?*%M&^`l5F(mEIs^$ zE*I*Pk`VfpJ|^_`^_|1N(m7Go65s#5e|?Yele%xT>6ncjPwR03x;Fe9y(mD*o^SQ` z0JZU)(T9cTv-98SqcLU_`t1BUof}&F(HatkaLE~M9u4bT$lQpsCgZ4Jwq;q&Fkbb zQrL!td!0=}eNq~P20N#Ove6doMAolb#kJufPFjGHJ)ur+fZBL`&U7LAe0-R5Ceiex z&&NkNjT*`*E`C5h%1OAiYS1e@mpJK6=9NsG(~HSOCeE48WFiyiY!af##5o0*(I_S| z@y=Q%6Pb8tyAVYt-l=4w$l&K+YB^gkr;a8xwVcC36q#BMB$=u8Ot~ezmeWh9PfC-} z+RhxIPp=;xUfW4-UbTo@!s|GF19WY8U8f*G$)0-7iU757J@uXKf)uDkC#|I!h62^l z8J=7<=ydy1XGp6my28`cDPl5lN^<5gnK&gm+nG$9lAJR_6sII-Q!0&O;^a1Wjxm}* zHFxlv1!(kpDNxNFACuWaEu4c_kj=!Yg#(=oQJh*hxlFW!CWW_f%7yx*vmBZTR)h zp#UX&20PyVW*GVq(GaJJ5S@00I(xH>jZQncPFi+V%M8!W&hnfpnr@GDo@X+V8SU)N zami>xGuqLEh)ifkJLy6cnbFQUCKH)4PSW+%(nMyAlOaTr8RPV2GLaeU++i;{}$2XF%f3y=%hR<+v@~b*#c_&YXLQC{E|YOP&2feNwuFE^;F08(ZXHJ7STuMX2H6(1^uO#=XYY z3aQN5D|9u|5~oWE+3@<8gB_PTu)s9MPdkM#bLt1^+VJI0Mu3t%4>;oj)W-9mQzA4p zB|73E=iD+g%5bFh4y>vgGbv(+b7(^q4T<=~Y5g=2{{G*wgHu6!@)#@Bbf$8lxlCK0 zp{5n;A*PsT4L!~@WHS!~&kepiLVGHi{N7gww-5Dtz7g6t_`V3Q$Ge4E`n?|wZV?*n zX(8mE7`!|p*pngn0~$j-w+V#~SsoGMxx)}&s6##T#8zhr{zfd%CZQyzcZAvw!QYSN zIU&>yZ9Y%fR^z@8+I*fyLf5-!4D)0Pj$j%oG!C1Fd8P|Z8-l-R%Ck~v-Vi_1HlYWG z%ngh191$uXl8fpanJ4%K8#f7k$8^XL{4!*`C(<+I zc^(ElL&tlfJnMxbk)l0^4SC~-mRdDDYMXJ`cxV|?oFQmE^a)Rl=N_gC)qQBH3$dPZ zF=h{4=85$jW7?%|#-=qrSudDj@`n~eyl0*vD8!cWp6x=jk!pD&Uo=x&GBg!xdoqL` z!>QHwtPpw$DZ!&(GA-Xha_e~V1z#F^#9P<1SLhTP>w6k)H%(8WEzwgX1UHQLH1r%2 zioRiVcq0$&Ff9{rup=(>G!ja=;fS}1=NyyyRsnt)b0@dt{dBqO$q!(eb-BkMp!s$) z&k94Jhb{9o_w;?)xX{C%h-l#{W|{@z!%`vHvqh*5(;1=0!=8yq_VlWtezTzEux$}3 zp6yI#GOaxL^S^@8!|3m6PC!*~eGAg5T%N&tH(M8Sc@b+F*F4DO>ek=NHav`04b)P> zldON(%SH45MYn&f7ykW^|8kE1n6nFgJws7(F9`ng94M25zpp#E*Wfx7>VB-RaE(dX z#cJA{RJuHie{2#(b!jKfK(%2ms^$qfa4(kePaLscFgf?4nO2|OKRY>cZvn;02AZhG ziMoJ)pM_@X;W-9D1<&yhX8OM~QQH62Gi_GiydH(C0qX_f`o|~XUg+LT#Y`e3k-`;? zYC}A#hS$+Oemy>yqE#Pjf}jbi7usS?Fto(7f_AKbd(tlavpFXB7SPmfo;v>3G%P#3 z01r@HgLnscc>%%T(h5R&XNLaYtpG;i>MxAq#WmGaT)jNfy{L0_^Tp+hhrYPx;$DAV zv>SDxQ2$>5uwR z?n|-kfn}%)R-;<*1gZ@iQStn53})kO!7BViq&%o8)1XS)nDP#;`OVq?==zDj|Bypu z&eFe?|MmqGC-*<;<&xw7SI+*xmpT9cv*&<+V}dN$(3}>w8CAh!sHR52g{LOo|J5&% z=Gu?yHyo_okACld$-@6FC207#5n{|C6b>klvE!(iznT zniu|kHZ1=>PybsJa;u*jO~C6U(}WtJ+K_~bf7uiDzcZn~K6_qZb$L5nQ1vG@)hGIQ zPSStpth!?u?*BhJKUa5ln$LGef8w%zBgG?>H3rp!MyNKVa?NiC+r@{UsnI~a9O~ub znb~xsBh_Mq&BJM_|ILBoqq%yU3opBWXQEeCn<5>Gxc`4UF7b~DqFIA!MCK}IrsgK@ zoX1LK3&vhlKGlZm3%LGH)_JU@f2=N$!GZ?@W((GFc_WAV87^<*HoH)5Zm;0tnm?P+ z8{GFl-1kFN1=VX@Q}r1)I?3jBkaHMhKi z^=j4utV64*S#kAUbqiYY`R_PxG=%`})5xqc=p{!EOjfm%9n zAF6`l;e7rlgUtplhU&Ba>(lCk*cX4a;^C_Qcuw^;*PCYmRX-|m0^+RYAj z^EMB96jj6bs1DF@9?&CbHGlo^;g7AZc{YKM?{J_XAO~I`2f^$hgdK#k1D`y<_~U{8 z{y6wIlJOaX#ZMhHsQ5?D zu?9c?_ItyHXZXKPN?UewH4i$N2OWj#up19YE(oS!jTh#j26K!FWG*KVWM8kk48jcgi{U5>;Ka;U{`K4e!DRIzr7iCA09>r!~d^mz-4s*Yr%i_QTji3V~YD< z!QTEfi36zkC$>>d&41^P=l^;_zn%Zh&NR1R30YMWQb6VZy{X{-uYO2WFPo`6%2V0I zlc4fHJQep(-CsPF+Xqlo=Azm#9~Cdws17Vg^>F$WP@DhG6#wDp|1aVx$byroHq_0g zshCOsY2>Ou|2F~u-+1&=_ZFH~S5*9=9#z9kR0n>}=KcRI&eY~XC8$1Fh8hN| zP{ZK~)ChP6H4O~AY|@MC|4t3}{iFSVap&sC!k@XkxXqu{ zR3HC>=Rbee;eS$3yX23aut>dm{{LSz;wJ&s+f<*B`4NqF20qH*eO`<=toU>r%L@MN zC&U-HF1!F1FxC_xQ}HK=%*L5+l6s8R49s)E0~n7RMh)$A|b{HYiBzjx7$=AhN!n8k3+ zF5#HPa?EOS%;Gp^@f@>S9JAUSvjmP=9gbODj#)ie<6?;FbI=kwXbt{O&}23AX4}ix z{$RfLhw!yOl&}3hzV?UlwLhG%{SkcakK}8A6fYwhmx24g2CpNA*KrB2BbL`ulh+Z) z>xk!d)Z%s2=5-|SI_mH`>T>Su@iOZ3G7@DOU*YmBID={fjHDf=QLCM*fB*AO^?hEw zT>ZJ1DI04T4rf6u4_cp<_B=i zvaVy@z`B)n2kUF7et3(^2U$O6{Q`AE+REoIU73W8A=*->1MM=i4wQSo7pm!rl|x#O4z(b{cHTP)M>5DSLaeM3>{ z7m?9azC!E3F*MzgW6nh0#YN+u)3~S&@Zp$xQ7dt#DN$2! zeQmMab9DEpt*|oj+Nd2Ip{+c`4pExuYgUi31ESutdX659Z6=Jp35TX%OSS>rv8DL8 z(o4rK^K5|SW8yRmJibMAyiF^P=ii194}-?{ zj!wb8{i8ny-2a0RdX65B-TdQki|&al8yDRbYo?(2>G6K}7%EuzvwqBaVmwWVzGAM_ z(!{uErRWPu@jzcQkH^35L`uKyAPT1y9X$xgoR7bh)|xPv%L}4Ewj!~-!)oVFxIcO% zn(=QT+PM?TtdaIe)E!VXVL((<+y|G|Xo~BeV>N|)CrnUOa}(Aqosd^!3icX{<##9C zQDcGq*@Rg&a6%JCLsNi>|H5+EL@Fmvd>-4hn7Fe>3MXr+J$Pc7)lL#OZlb%lMhwD_ zsD%?DCV|WAaA-elKrOR+nx^WRiM3*zD*B*#ym}SO@#-KeO?@jbV5@x|hu&)Y3P{@( zG>_eZQA~|}%bs1(A@(4ayW$AcK3cq)~SWcRp3jM6q$;&+btd5ft zYxdOLCqIJLEY@2lm*SsZrQ@X?Piv5#Iys|eSM}kTYir)9pB;M(>I0MWYmU@wCy)2^ zRO=@f*CZ`P9h%~Y6!t|UKUTA+tB2yp>{C?5BT)w->z<_ZBbapgtSX*n3bv!4i)uh;T=Awi1!CG`= zw}_^oZLSsUP&|SiItK(hDN`!2hBj9e*GDOK3U-@gk5q3>nN@qddVk72wR>Vs zY3-5f`ziO=9)x9_iVB_jaP44KV`@PZ)=Yi8_DJWNsq1TZb^1?z7F$v*yE>%fo#kWk zDx+?m`XaW^pZbbhJ09GrU)Ek=|7+^$+7$5b(M`$Jd$8M%sSyb?&_Qg%UF@=_b7(3# z{%mSO!UE^psZCM;Pi^NP6vcVQ@ptcTFLw|;K?0oI9vmQs-{24QVo9VRf(m*dsiNYK z;xw^Ndnd6L@79eG6BBC@8v~BUWHgQ>Av0o#S53@lYSJHZI!WtH>!h8A=s0PbnZ{_1 z5R&$JzHb(ok^YgHmOnoG-S6}4^S-<9yYKR2Zux@vu=3^BLQjsBm(_ zdU+J|W#~4{`8I_gwVl?>;rq2dn-=P_thEh=>$Cw}%K==)0aXi4b>s^z#Is>@{Az6} z&5u@XC9O11kmi{&Xi(9^np2q(d7G}m+{iJ~3rRbbrpPJMEfE@HWn+XdmmWDw&hE&s zh)=_R7VL`*Xl{Gv-7crw{z2q%;Ui7sZU0wfNZW25iu}UDcZ%ZOZaeg2zF!jcRIj3X z^>lB*Vr1)6Xme#wE;x-iO}`dDDDKz&q^op(QhA9XT%nMt(|JCB=O;2vmdyjs`>$jgk zlUnHQlz`<;{UgV6+dKNpG&9=uxU_OQvveXq%>s6Q@GQ6A(p%F!Vwk$+!4jSb?YC`d z4aWQFGj~{K@RBOHC)fW?-XwcxM^7H!DK=L$F{9YaMLO zew1`S_&GRzDm%BQwiCa5FY`(8kKm1*UF4MIGTXu5gM)cLBWG4Vb5p*-n-kdCSGi0P z;&Q5*IZOyGeR+3Oj2+(@(Vsab+_5*TJtrnJJr(P35Q?lpW1ZHP|YJWfodY zg`_jK+*J=}%A&Gi+3E3$a;91BF{&2O_zJDij*t#|S^w1gD(UUsBlNQ${Slr6GN}Vv zCdmUvQb#gn&IJ_8NaJz^XuaE1S+D1Q$LmL#}#>_yb86bb=h_+_^ zgS0E_Ix#8h3u1cKSH#>bt8KjLc~3SEK?Ya|n!|CJ@@2GVD(4tx;1UIv=diUNH2oM= zi0VA{8$p?~4tf)4W|mQALIG!LU;#J>G;=ml&PxS6Kz(4;kUQ44k$_Uj;iX^`IJ>BW zq7M{}`c*|dWJ`*8ytQKXGm2T~gENXbzt?w!XkJ&YZ|Zl(Xyb!1JD-i{9VJWcLhLSS zB0f{HhS*cWpXK{+e%=fonq4!wD{_i;%naToL^oJnx|8&hQjUheePDkn=KsL#Ne&^d z;brKbf;Ye~XLFNwznh}*eje{+KbJUjAD8|u_@}w|IfeN9T=s8*UxUtaJ~p|WeP8)p z${D}wH2=pB{Qv!rE2?7YcdwsTEQ%H4MnyewxMCSmt!ySHSGEw-DmM`CT!0VG*$1V@&TIr1p)gPcFz zag3UI!0|Hi1{~R>Y(-{%1wX^lXHb$nAjc6U{X@rDVqFs#S_Za&vPoHJBOF;;F3FqV zJle!v+zWjWJOaJ~z6PEJe*^aV`r>H*o67<>Z)!dRQ}cP4dcuTJojFExr)AE!yqoCV zW8ZSA`CsKPZ07rGMME>+ax1|N&3xH6gAuSD+zsw)<|XC1W@AZq0kH;?z@z&wq9?>T#&unFWI%+H1`ETS#1}R>g%}Rn#|B zHgp_|*>kRKL+$gmb$_c5HkMhs2J+PJC$!Yis{hT`HrDB#z9eg~M(x^?uO5%mi!_F; Rmc9OH{518SN@ww1{{ifQ=urRw diff --git a/XPS/Bin/SteamWare.pdb b/XPS/Bin/SteamWare.pdb index 60cd5c03e61701c885a9e4a8cad4702cfe90032d..bf69cb1c812ea468dadc9bc1e06bc45b830719d1 100644 GIT binary patch delta 58235 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
  • 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 delta 60463 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 diff --git a/XPS/Bin/SteamWareXPS.XML b/XPS/Bin/SteamWareXPS.XML index edee1c2..285187b 100644 --- a/XPS/Bin/SteamWareXPS.XML +++ b/XPS/Bin/SteamWareXPS.XML @@ -4,5 +4,215 @@ SteamWareXPS + + + Represents a strongly typed in-memory cache of data. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents the strongly named DataTable class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Represents strongly named DataRow class. + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Row event argument class + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + Represents the connection and commands used to retrieve and save data. + + + + + classe wrapper di accesso ai dati + + + + + avvio componenti + + + + + avvio dei vari oggetti esposti + + + + + effettua setup dei connection strings da web.config delal singola applicazione + + + + + singleton di accesso ai dati di tracking + + diff --git a/XPS/Bin/SteamWareXPS.dll b/XPS/Bin/SteamWareXPS.dll index 55b87ad6f14e4ef1bb6c5ecbba622c0742acd16a..91d554a364b0f7da948d28a7f2052d97586adf77 100644 GIT binary patch delta 62 zcmZozz}2vTYeENea6U(4cWXD})@~-zGJ#V`3lvk2aXQUaEX`k3pyj%KLm88RAV|^l R!|hC(j4a#VwlfKH007rh72p5> delta 62 zcmZozz}2vTYeEO}uLo?6-L2h>Tf3P=%LGbage|yyv(RZ*2Wpz|EGhMMvrC6n>Xrv>5 znLGHv(J0B!uhdz&mZYq$iABj~tyFBHJ+{=ZrnY>d?mg%JAAH~XeK_Zwd+vGs?m6e) znbP*2rR_a~eUnIBT-hCpx?9S{%XjytiIN8X)eYd7|dqW^I!b9FvAJK7HHxt?`PN_so?$}O9FQfmR z@2UT}TWfj@xVlRA35qw0rX?Gx)2>=%MgT|=yGq>Ak<;&lpbS?_an`589%8rUgTu_l+JjGmGM$LW1I37TNyuXXZ*C4 zTeR^Rn~arMq>;KzXT0o#8|bz^Mp5W}Gp0NNG3^d-$MAPlVL%1z?SO(CFrd3P>3}vX zWg}8u4IjSE`@u*Am}n%@&%(TQ3%HH`w6(t}F*0h<``((lF4zH3?6IJzGog?gioLey zlD9P!`z$Ex&1{W`P5Iv44hE}}EB2d<(a3%)>1g8tn~XJBq>*|MgQ+<<1%o-JPwCiX zI3*F7L6Z&FaX5H&)?gft+-UwZWRWGG11bC$sM{F$MJ0$Ez5p8{5@v3r_{&#J&1hQd zVykA1+JD!9IPlf$pow16PHa_0df>!1C8?O7Y?QQ}Gj|$gC()hf6lSN^+D@&8wW6Jve}Xn}mm1o^TCx!nQziU#?b3GzB(;#e86DB&Xn z#en5&^?jA#y!^-4k2 zjVPT?pg4qU27xlfL>gz1mjJ#=h2$98c~*HCHjAu9M%B1zn?<1fRBj?Xn?U7=*lFq( zBOfKdnN~#J9KFysM}w@KMIO`6ymN_Fc;f6_tycQDBg>hGGO1F_1b9QsF*sSXoJ@sA zgD6Gn^A0c>FDQUXFFEZ+asvXS+D?|gMD$n%rgjA!fr(J8jC4*=jET@16QN)Sgo20= zqE))qM$22F6KJTwfJB=?lI2o^)B#+BE6JBuaGsFP3VKyEhHSJ-1W0bv3yD?C*M zyIVym&Q=lVUC}U8fmyYl;52|_b2eyu%^Mt)$~S76XA{bFFs++NAL!uFE)%j{WC}nQ z+GFy2Izsri4WY<*N2352mK?c{*f*9euQ%&5_%2DY(XHR#0o|4Z1aGa-VbjZDV%=LJ z`$M~Do2;Jw$n4pVJM`>PvuFQl_v|NDPl|{``i|K>`>C}qBcIy6DH}g?=-9t(TBNp^ zJ=;PirvS)!Hm;w@CB?v;7M>WQk93o!g};y_i={skxTdfgGJe5o&MIA-u9w;-lkD!-rhv@yuF25^VUPnt3X5?($||>cR?R(T}Jv)=PtO_p<{h*TBPeSy93f-^kZ!*#%QmszB_)ip`3UIOD=|QnJ6=-FMcj=!g%wU)*o~ab)`Oc~6 zO^M{3X>^%YZS4UH)rJGKX*%wLKBzN?dB#i>Ni}~kX|UKU))VYgXFH&_EiRB@dB96R>3lMhEOZ1$TX~_yRwlX_~<}#f^V5Jjo+A6KK zbCn~T_cF@r$|;W3ig2>X-fTBT#A=EyW>akK&=jwlP4SxD6t7!FFCq@<+h#XKt+g&A zwRZ8##y1=~w%w*h>JGChcF@UiOPc5&Fww0?v--ZTr|Xphz*72moww_tT_24Hu|D9s zcZ-65(EVU5cup}x4t2n}KG*=hA3i`^ zSb1$9;C`gbKGdLVhfTJUY-ytXAg#I+R?t}3y7;ZH z>Ag_u@aRhXmS%zmM49)U?lLIUg8%5|_MCEyh2PUF%Azd#!7(kuryXT={E2es8T!z5 zmgCg(dSFbtKzl(n!n=j304~xY$ia(1G+v?y)e^qOBA4luc+k_ePZ+j4yuv(`!Kol* z&6Hv5V<#~N-7H+3!K4)poWayYv`XV~4NrAI0`3>Vlj^bXc>;r$Kx3ty&=@41k;q^i z0NJcb8AxK)3L|l?GdpaVZM{yrEb79nQIOLWMY6do)AJ8Pi*?iPVE~1%M=!$bVsLK= zHHzKh2bT^5l!M*1QGNV9oQ1X?wiQ{{lYN1sp>QCB$s|4L>=d=)N*%;-5G!*sBa`Vj z-eA_@jpt>~q^%vIG}KnaJ(k73il>|V$mVSJ9HF^b2Xlra9QyL^ayNrpT{8_P6Uf1A z0I<|tR7ObabM^V)^tlI90TtH>Z7(u{!C=NGm?-d}iMo*tAM3(1N-x4wLbi@#Hv;;D zKcXq3>u6SGM^HZ+!@;91x{rOVltzqUAF66T+Lj`Ek7e+(#xotK^jly>SMUNn z65%S+Rf$m)Ij%|tzRG{*F&*;k2CHag~dBKv7CHYre5Z+34E^U8h zH^aNRZY>*SO_2NwtT>z|5rbtaxjed#*%M|!2#*gUhril33dY63VxI5UCt-* zK$69-E$0(>(ZyUeFpuxNtSIHTko#?yfnwfC{PYUX<^C&bRfVyL$3PEV9$C%r<-xAX zo@s;vCi zv@>sL7EchLfG83N`zv@UFG|!~dy7LADjz>sQvPofxrTDnu670?hQBF}H$Zke_jUYX z?gP8XRs!q4L0h^_bg$%oMif^nc)D0!sSd>p;Un8E#Aom}FpO+9utisat>T#?OQ`5P zU`ef(@a9XoX`!$RvjH{0+?!!#F3x5%tN277xS;o!@P=;pq}8qGSMo@YUqbD8u#uP0*Hd8IK-kkkA`(lzzZ-z6??kvRDye-C~&b{UP=yF}v|o*gYu j$?qid&+{B2!x#7*LY7E!iL0+S^LUT{3xrBS`DyY$&7kX{ delta 5876 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 N{;vZn3FYU>{{Z!HI|l#& diff --git a/XPS/Style.css b/XPS/Style.css index 6f24a00..de633d6 100644 --- a/XPS/Style.css +++ b/XPS/Style.css @@ -30,7 +30,11 @@ text-align: right; vertical-align: bottom; } - +.barcodeFont +{ + font-family:@Free 3 of 9 Extended; + font-size: 60pt; +} /*Popup Control*/ .popupControl diff --git a/XPS/Web.config b/XPS/Web.config index b93d682..8dd6afc 100644 --- a/XPS/Web.config +++ b/XPS/Web.config @@ -98,7 +98,7 @@ - + diff --git a/XPS/barcode.aspx b/XPS/barcode.aspx new file mode 100644 index 0000000..1dbe975 --- /dev/null +++ b/XPS/barcode.aspx @@ -0,0 +1,8 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/AjaxTitle.master" AutoEventWireup="true" CodeFile="barcode.aspx.cs" Inherits="barcode" %> + +<%@ Register src="mod_barcode.ascx" tagname="mod_barcode" tagprefix="uc1" %> + + + + + diff --git a/XPS/barcode.aspx.cs b/XPS/barcode.aspx.cs new file mode 100644 index 0000000..fd661d4 --- /dev/null +++ b/XPS/barcode.aspx.cs @@ -0,0 +1,177 @@ +using System; +using System.Collections.Generic; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using SteamWare; + +public partial class barcode : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + setupComandiBarcode(); + setupValoriBarcode(); + mod_barcode1.eh_comandoRegistrato += new EventHandler(mod_barcode1_eh_comandoRegistrato); + } + /// + /// effettuo il setup dei valori ammessi x il barcode... + /// + private void setupValoriBarcode() + { + DS_applicazioneTableAdapters.v_commesseTableAdapter taCommesse = new DS_applicazioneTableAdapters.v_commesseTableAdapter(); + DS_applicazione.v_commesseDataTable _tabComm = taCommesse.GetData(); + Dictionary valori = new Dictionary(); + foreach (DS_applicazione.v_commesseRow riga in _tabComm) + { + valori.Add(riga.Cod.ToString(), string.Format("{0}
    {1} DDT {2} del {3:dd MMM yyyy}
    {4} colli ({5} kg)
    {6}", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Colli, riga.Peso, riga.Stato)); + } + // assegno valori al barcode... + mod_barcode1.tabValori = valori; + } + /// + /// carico da tab i comandi ammessi per il barcode... + /// + private void setupComandiBarcode() + { + DS_applicazioneTableAdapters.TransizioneEventiTableAdapter taTran = new DS_applicazioneTableAdapters.TransizioneEventiTableAdapter(); + DS_applicazione.TransizioneEventiDataTable _tabTran = taTran.GetData(); + Dictionary comandi = new Dictionary(); + foreach (DS_applicazione.TransizioneEventiRow riga in _tabTran) + { + comandi.Add(riga.codInviato, user_std.UtSn.Traduci(riga.text2show)); + } + // impongo i comandi al barcode... + mod_barcode1.comandiAmmessi = comandi; + } + /// + /// il barcode ha registrato un evento... + /// + /// + /// + void mod_barcode1_eh_comandoRegistrato(object sender, EventArgs e) + { + // lookUp tabella transizione... + string toDo = ""; + DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter taAE = new DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter(); + try + { + toDo = taAE.getByCodInviato(mod_barcode1.comandoRegistrato.currCmdIn)[0].Nome; + } + catch + { } + // in base al contenuto del comando scelgo cosa fare... + switch (toDo) + { + case "Barcode - cambio stato": + if (mod_barcode1.comandoRegistrato.valore != "") + { + mod_barcode1.txtRich2show = user_std.UtSn.Traduci("pleaseConfirm"); + } + else + { + mod_barcode1.txtRich2show = user_std.UtSn.Traduci("codObjUnknown"); + } + break; + case "Barcode - interrogazione": + mod_barcode1.txtRich2show = user_std.UtSn.Traduci("pleaseConfirm"); + break; + case "Barcode - conferma": + // se input completo eseguo... + if (mod_barcode1.comandoRegistrato.currCmdIn != "" && mod_barcode1.comandoRegistrato.valore != "") + { + eseguiComando(); + }// altrimenti warning.. + else + { + mod_barcode1.txtRich2show = user_std.UtSn.Traduci("codObjUnknown"); + mod_barcode1.comandoRegistrato.currCmdIn = mod_barcode1.comandoRegistrato.prevCmdIn; + mod_barcode1.comandoRegistrato.descrComando = mod_barcode1.comandoRegistrato.descrComandoPrev; + mod_barcode1.txtInput2show = mod_barcode1.comandoRegistrato.descrComandoPrev; + } + break; + case "Barcode - reset": + mod_barcode1.resetMe(); + break; + default: + break; + } + } + /// + /// eseguo il comando + /// + private void eseguiComando() + { + // lookUp tabella transizione... + string toDo = ""; + DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter taAE = new DS_applicazioneTableAdapters.AnagraficaEventiTableAdapter(); + try + { + toDo = taAE.getByCodInviato(mod_barcode1.comandoRegistrato.prevCmdIn)[0].Nome; + } + catch + { } + DS_applicazioneTableAdapters.IstObjTableAdapter taIstObj = new DS_applicazioneTableAdapters.IstObjTableAdapter(); + string msg2show = ""; + // in base al contenuto del comando scelgo cosa fare... + switch (toDo) + { + case "Barcode - cambio stato": + // verifico se lo stato sia corretto (cioè successivo a quello corrente...) + if (chkCommandValid(mod_barcode1.comandoRegistrato.valore, mod_barcode1.comandoRegistrato.prevCmdIn)) + { + string codObjCommon = mod_barcode1.comandoRegistrato.valore.Replace("D", "%"); + XPS.obj.taObj.UpdStatoTree(mod_barcode1.comandoRegistrato.prevCmdIn, user_std.UtSn.utente, DateTime.Now, codObjCommon); + msg2show = string.Format("{0}: {1}", mod_barcode1.comandoRegistrato.valore, user_std.UtSn.Traduci("chgStateDone")); + } + else // altrimenti segnalo errore... + { + msg2show = user_std.UtSn.Traduci("cannotStateChange"); + } + break; + case "Barcode - interrogazione": + // mostro il dettaglio direttamente in detComm.aspx +#if false + // mostro timbrature... + // apro maschera dipendenti + LogAccessi childForm = new LogAccessi(); + childForm.MdiParent = this.ParentForm; + childForm.Text = "Log accessi dipendenti"; + childForm.ricerca = mod_barcode1.comandoRegistrato.valoreTrad; + childForm.Show(); +#endif + break; + default: + break; + } + mod_barcode1.resetMe(); + if (msg2show != "") mod_barcode1.txtInput2show = msg2show; + } + /// + /// verifica se il comando richiesto sia corretto, ovvero che si stia avanzando di 1 solo stato rispetto a quello corrente... + /// + /// + /// + /// + /// + protected bool chkCommandValid(string codObj, string reqState) + { + bool answ = false; + string currState = ""; + // calcolo lo stato dell'oggetto... + try + { + currState = XPS.obj.taObj.getByIdxObj(codObj)[0].CodStato; + if ((Convert.ToInt32(currState.Substring(0, 2)) + 1) == Convert.ToInt32(reqState.Substring(0, 2))) answ = true; + } + catch + { } + // guardo se lo stato sia quello appena prima + return answ; + } + + protected override void OnUnload(EventArgs e) + { + base.OnUnload(e); + mod_barcode1.eh_comandoRegistrato -= new EventHandler(mod_barcode1_eh_comandoRegistrato); + } +} diff --git a/XPS/elencoBarcode.aspx b/XPS/elencoBarcode.aspx new file mode 100644 index 0000000..afe45bb --- /dev/null +++ b/XPS/elencoBarcode.aspx @@ -0,0 +1,8 @@ +<%@ Page Title="" Language="C#" MasterPageFile="~/Standard.master" AutoEventWireup="true" CodeFile="elencoBarcode.aspx.cs" Inherits="elencoBarcode" %> + +<%@ Register src="mod_elencoBarcode.ascx" tagname="mod_elencoBarcode" tagprefix="uc1" %> + + + + + diff --git a/XPS/elencoBarcode.aspx.cs b/XPS/elencoBarcode.aspx.cs new file mode 100644 index 0000000..21f2d7b --- /dev/null +++ b/XPS/elencoBarcode.aspx.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class elencoBarcode : System.Web.UI.Page +{ + protected void Page_Load(object sender, EventArgs e) + { + + } +} diff --git a/XPS/logs/20081029.txt b/XPS/logs/20081029.txt index bbb44a2..0ef373e 100644 --- a/XPS/logs/20081029.txt +++ b/XPS/logs/20081029.txt @@ -8,3 +8,16 @@ 29/10/2008 12.08.02 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente 29/10/2008 12.23.52 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente 29/10/2008 13.32.10 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 13.55.34 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 14.13.49 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 15.13.11 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 15.32.01 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 15.36.35 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 15.38.05 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 15.42.14 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 16.10.00 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 16.31.43 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 16.51.47 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 16.55.51 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 17.17.39 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente +29/10/2008 17.23.19 [INFO] - L'utente Locatelli Samuele (VOSTRO410\Administrator) ha effettuato il login correttamente diff --git a/XPS/mod_barcode.ascx b/XPS/mod_barcode.ascx new file mode 100644 index 0000000..d29806f --- /dev/null +++ b/XPS/mod_barcode.ascx @@ -0,0 +1,16 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeFile="mod_barcode.ascx.cs" Inherits="mod_barcode" %> +
    +
    + +
    +
    + +
    +
    + +
    +
    + +
    +
    diff --git a/XPS/mod_barcode.ascx.cs b/XPS/mod_barcode.ascx.cs new file mode 100644 index 0000000..6dc587d --- /dev/null +++ b/XPS/mod_barcode.ascx.cs @@ -0,0 +1,220 @@ +using System; +using System.Collections.Generic; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using SteamWare; + +public partial class mod_barcode : ApplicationUserControl +{ + #region area protected + + /// + /// dictionary comandi ammessi + /// + protected Dictionary _comandi = new Dictionary(); + /// + /// dictionary dei valori ammessi + /// + protected Dictionary _tabValori = new Dictionary(); + /// + /// oggetto comando locale alla classe + /// + protected inputComando comando + { + get + { + inputComando answ; + if (memLayer.ML.isInSessionObject("barcodeCmd")) + { + answ = (inputComando)memLayer.ML.objSessionObj("barcodeCmd"); + } + else + { + answ = new inputComando(); + } + return answ; + } + set + { + memLayer.ML.setSessionVal("barcodeCmd", value, false); + } + } + /// + /// al caricamento della pagina... + /// + /// + /// + protected override void Page_Load(object sender, EventArgs e) + { + base.Page_Load(sender, e); + myInitialize(); + } + /// + /// inizializzazione specifica barcode + /// + private void myInitialize() + { + lblInput.Text = traduci("PregoInserireBarcode"); + if (!Page.IsPostBack) comando = new inputComando(); + txtComando.Focus(); + } + /// + /// barcode completato con invio... + /// + /// + /// + protected void txtComando_TextChanged(object sender, EventArgs e) + { + // verifico se sia un comando o un valore valido... + isInputEvent(); + isValore(); + // verifico se c'è stato input evento + if (comando.isValid) + { + if (comando.currCmdIn != "") + { + txtInput2show = comando.descrComando; + } + else + { + txtInput2show = "---"; + } + if (comando.valore != "") + { + txtVal2show = comando.valoreTrad; + } + else + { + txtVal2show = "---"; + } + if (eh_comandoRegistrato != null) + { + eh_comandoRegistrato(this, new EventArgs()); + } + } + else + { + lblInput.Text = traduci("ComandoSconosciuto"); + lblValore.Text = txtComando.Text; + comando = new inputComando(); + } + txtComando.Text = ""; + } + /// + /// verifico se sia un valore compreso nell'elenco fornito + /// + private void isValore() + { + if (_tabValori.ContainsKey(txtComando.Text)) // verifico se il comando digitato esista... + { + comando.isValid = true; + comando.valore = txtComando.Text; + _tabValori.TryGetValue(txtComando.Text, out comando.valoreTrad); + } + } + /// + /// verifica se il comando inserito sia valido + /// + private void isInputEvent() + { + if (_comandi.ContainsKey(txtComando.Text)) // verifico se il comando digitato esista... + { + comando.isValid = true; + // salvo comando precedente (se c'è...) + comando.prevCmdIn = comando.currCmdIn; + comando.descrComandoPrev = comando.descrComando; + comando.currCmdIn = txtComando.Text; + _comandi.TryGetValue(txtComando.Text, out comando.descrComando); + } + } + + #endregion + + #region area public + + /// + /// elenco dei comandi riconosciuti + /// + public Dictionary comandiAmmessi + { + get + { + return _comandi; + } + set + { + _comandi = value; + } + } + /// + /// tabella di valori ammissibili + /// + public Dictionary tabValori + { + get + { + return _tabValori; + } + set + { + _tabValori = value; + } + } + /// + /// evento comando registrato + /// + public event EventHandler eh_comandoRegistrato; + /// + /// comando registrato dal barcode + /// + public inputComando comandoRegistrato + { + get + { + return comando; + } + } + /// + /// scrive nella label input + /// + public string txtInput2show + { + set + { + lblInput.Text = value; + } + } + /// + /// scrive nella label valore + /// + public string txtVal2show + { + set + { + lblValore.Text = value; + } + } + /// + /// scrive nella label richiesta + /// + public string txtRich2show + { + set + { + lblRichiesta.Text = value; + } + } + /// + /// reset del controllo + /// + public void resetMe() + { + comando = new inputComando(); + txtInput2show = "Prego inserire barcode"; + txtVal2show = ""; + txtRich2show = ""; + } + + #endregion +} diff --git a/XPS/mod_elencoBarcode.ascx b/XPS/mod_elencoBarcode.ascx new file mode 100644 index 0000000..83ddf21 --- /dev/null +++ b/XPS/mod_elencoBarcode.ascx @@ -0,0 +1,39 @@ +<%@ Control Language="C#" AutoEventWireup="true" CodeFile="mod_elencoBarcode.ascx.cs" + Inherits="mod_elencoBarcode" %> +
    + + + + + + +
    + +
    +
    +
    +
    +
    +
    + + + + + + + + + + + + + + + + + + + diff --git a/XPS/mod_elencoBarcode.ascx.cs b/XPS/mod_elencoBarcode.ascx.cs new file mode 100644 index 0000000..64df450 --- /dev/null +++ b/XPS/mod_elencoBarcode.ascx.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +public partial class mod_elencoBarcode : System.Web.UI.UserControl +{ + protected void Page_Load(object sender, EventArgs e) + { + + } + /// + /// formatta correttamente per stampa barcode + /// + /// + /// + public string barcodeFormat(object valore) + { + return string.Format("*{0}*", valore); + } +} diff --git a/XPS/mod_elencoComm.ascx b/XPS/mod_elencoComm.ascx index 566ed60..6dfe933 100644 --- a/XPS/mod_elencoComm.ascx +++ b/XPS/mod_elencoComm.ascx @@ -32,15 +32,15 @@ - - + + - - + + Brunitura + Fosfatazione + - - @@ -48,6 +48,16 @@ + + + + + + + + + + @@ -58,9 +68,7 @@ TargetControlID="txtDataDDT" Format="dd/MM/yyyy"> - - - + @@ -109,6 +117,7 @@ Target="_blank" ToolTip='<%# traduci("stampaBarcode") %>' /> + @@ -121,7 +130,7 @@ - @@ -191,8 +200,7 @@    - + @@ -201,12 +209,11 @@

    - + - + @@ -216,8 +223,7 @@    - +
    diff --git a/XPS/mod_elencoComm.ascx.cs b/XPS/mod_elencoComm.ascx.cs index 99d4012..afbc111 100644 --- a/XPS/mod_elencoComm.ascx.cs +++ b/XPS/mod_elencoComm.ascx.cs @@ -193,6 +193,7 @@ public partial class mod_elencoComm : ApplicationUserControl lblNumDDT.Text = traduci("lblNumDDT"); lblDataDDT.Text = traduci("lblDataDDT"); lblDescr.Text = traduci("lblDescr"); + lblCicloEqua.Text = traduci("lblCicloEqua"); lblDataPrev.Text = traduci("updateAllObjChild"); txtDueDate.Text = DateTime.Now.AddDays(memLayer.ML.confReadint("defDayLeadTime")).ToString("dd/MM/yyyy"); btnCancel.Text = traduci("btnCancel"); @@ -248,7 +249,7 @@ public partial class mod_elencoComm : ApplicationUserControl catch { } // creazione di un nuovo set... - taComm.sp_creaSetObj(string.Format("{0:yyMMdd}{1:00}", DateTime.Now, nextIdx), "EQUA", mf_cliNew.valore, txtDDT.Text, Convert.ToDateTime(txtDataDDT.Text), "", user_std.UtSn.utente, txtDescr.Text); + taComm.sp_creaSetObj(string.Format("{0:yyMMdd}{1:00}", DateTime.Now, nextIdx), "EQUA", mf_cliNew.valore, txtDDT.Text, Convert.ToDateTime(txtDataDDT.Text), ddlCiclo.SelectedValue, user_std.UtSn.utente, txtDescr.Text); // nascondo tutto... txtDDT.Text = ""; txtDataDDT.Text = "";