diff --git a/BusinessLogic/BusinessLogic.csproj b/BusinessLogic/BusinessLogic.csproj
index cc3f6ab..0a20a62 100644
--- a/BusinessLogic/BusinessLogic.csproj
+++ b/BusinessLogic/BusinessLogic.csproj
@@ -52,6 +52,7 @@
DS_Utility.xsd
+
@@ -77,5 +78,11 @@
DS_Utility.xsd
+
+
+ {2872dcfe-8b46-43b2-baa0-842a816a2dd5}
+ SteamWare
+
+
\ No newline at end of file
diff --git a/BusinessLogic/stateMachine.cs b/BusinessLogic/stateMachine.cs
new file mode 100644
index 0000000..8d0b263
--- /dev/null
+++ b/BusinessLogic/stateMachine.cs
@@ -0,0 +1,142 @@
+using SteamWare;
+
+namespace BusinessLogic
+{
+ ///
+ /// macchina di gestione degli stati
+ ///
+ public class stateMachine
+ {
+#if false
+ protected DS_applicazioneTableAdapters.EventiTableAdapter taEv;
+ private DS_applicazioneTableAdapters.TraEv2StatiTableAdapter taEv2St;
+ private DS_applicazioneTableAdapters.IstObjTableAdapter taIstObj;
+#endif
+ protected stateMachine()
+ {
+ avvioTA();
+ setupConnectionStringBase();
+ }
+ ///
+ /// avvia table adapters
+ ///
+ private void avvioTA()
+ {
+#if false
+ taEv = new DS_applicazioneTableAdapters.EventiTableAdapter();
+ taEv2St = new DS_applicazioneTableAdapters.TraEv2StatiTableAdapter();
+ taIstObj = new DS_applicazioneTableAdapters.IstObjTableAdapter();
+#endif
+ }
+ ///
+ /// effettua setup dei connection strings da web.config delal singola applicazione
+ ///
+ protected virtual void setupConnectionStringBase()
+ {
+#if false
+ string connString = memLayer.ML.confReadString("XPSConnectionString");
+ // connections strings del db
+ taEv.Connection.ConnectionString = connString;
+ taEv2St.Connection.ConnectionString = connString;
+ taIstObj.Connection.ConnectionString = connString;
+#endif
+ }
+ public static stateMachine st = new stateMachine();
+ ///
+ /// restituisce il tipo di comando associato...
+ ///
+ ///
+ ///
+ public tipoAzione azioneComando(inputComando comando)
+ {
+ tipoAzione _azione = tipoAzione.noAct;
+ string toDo = "";
+#if false
+ try
+ {
+ toDo = taEv.getByCodEvento(comando.currCmdIn)[0].Action;
+ }
+ catch
+ { }
+ switch (toDo)
+ {
+ case "ok":
+ _azione = tipoAzione.conferma;
+ break;
+ case "ko":
+ _azione = tipoAzione.annulla;
+ break;
+ case "act":
+ _azione = tipoAzione.esegui;
+ break;
+ default:
+ _azione = tipoAzione.noAct;
+ break;
+ }
+#endif
+ return _azione;
+ }
+ ///
+ /// verifica se sia possibile, dagli input segnalati, eseguire un comando secondo la tab transizione stati e restituisce adeguato output su esecuzione/errore e eventuali messaggi
+ ///
+ /// mappa di riferimento
+ /// oggetto di riferimento
+ /// stato corrente
+ /// evento
+ /// oggetto di risposta x esito ok/ko
+ public tipoEsito doAction(string codMappa, string idxObj, string codStato, string codEvento)
+ {
+ tipoEsito answ = tipoEsito.undef;
+ string codTipoObj = ""; // di default pongo a vuoto...
+#if false
+ try
+ {
+ codTipoObj = taIstObj.getByIdxObj(idxObj)[0].CodObj;
+ }
+ catch
+ { }
+ // controllo su tab se ci sia riga con transizione
+ DS_applicazione.TraEv2StatiDataTable tabEv2St = taEv2St.getByKey(codMappa, codTipoObj, codStato, codEvento);
+ if (tabEv2St.Rows.Count > 0)
+ {
+ switch (codTipoObj)
+ {
+ case "U":
+ // aggiorno singolo obj
+ XPS.obj.taObj.updateStato(tabEv2St[0].NextCodStato, user_std.UtSn.utente, DateTime.Now, idxObj);
+ // chiamo update stato obj ancestors:
+ XPS.obj.taSP.sp_updateAncestorState(string.Format("{0}%", idxObj.Substring(0, 8)));
+ break;
+ case "D":
+ // sto scannando il DDT aggiorno tutto il tree...
+ string codObjCommon = idxObj.Replace("D", "%");
+ XPS.obj.taObj.updateStatoTree(tabEv2St[0].NextCodStato, user_std.UtSn.utente, DateTime.Now, codObjCommon);
+ break;
+ }
+ // salvo esito
+ answ = tipoEsito.ok;
+ }
+ else
+ {
+ // non c'è, segnalo errore...
+ answ = tipoEsito.error;
+ }
+#endif
+ return answ;
+ }
+ }
+
+ public enum tipoAzione
+ {
+ annulla,
+ conferma,
+ esegui,
+ noAct
+ }
+ public enum tipoEsito
+ {
+ error,
+ ok,
+ undef
+ }
+}
\ No newline at end of file
diff --git a/C-TRACK/Bundle.config b/C-TRACK/Bundle.config
index de5e842..8905a83 100644
--- a/C-TRACK/Bundle.config
+++ b/C-TRACK/Bundle.config
@@ -3,5 +3,8 @@
+
+
+
\ No newline at end of file
diff --git a/C-TRACK/C-TRACK.csproj b/C-TRACK/C-TRACK.csproj
index a15e7d9..a451769 100644
--- a/C-TRACK/C-TRACK.csproj
+++ b/C-TRACK/C-TRACK.csproj
@@ -141,7 +141,19 @@
+
+ fonts.less
+
+
+ fonts.css
+
+
+ Style.less
+
+
+ Style.css
+
@@ -221,6 +233,14 @@
+
+
+
+
+
+
+ compilerconfig.json
+
Designer
@@ -261,7 +281,9 @@
-
+
+ Designer
+
diff --git a/C-TRACK/Content/OpenSans.woff b/C-TRACK/Content/OpenSans.woff
new file mode 100644
index 0000000..55b25f8
Binary files /dev/null and b/C-TRACK/Content/OpenSans.woff differ
diff --git a/C-TRACK/Content/OpenSansCondensed.woff b/C-TRACK/Content/OpenSansCondensed.woff
new file mode 100644
index 0000000..aedbd93
Binary files /dev/null and b/C-TRACK/Content/OpenSansCondensed.woff differ
diff --git a/C-TRACK/Content/Site.css b/C-TRACK/Content/Site.css
index a9f8615..5942d25 100644
--- a/C-TRACK/Content/Site.css
+++ b/C-TRACK/Content/Site.css
@@ -1,26 +1,26 @@
/* Move down content because we have a fixed navbar that is 50px tall */
-body {
+/*body {
padding-top: 50px;
padding-bottom: 20px;
-}
+}*/
/* Wrapping element */
/* Set some basic padding to keep content from hitting the edges */
-.body-content {
+/*.body-content {
padding-left: 15px;
padding-right: 15px;
-}
+}*/
/* Set widths on the form inputs since otherwise they're 100% wide */
-input,
+/*input,
select,
textarea {
max-width: 280px;
-}
+}*/
/* Responsive: Portrait tablets and up */
-@media screen and (min-width: 768px) {
+/*@media screen and (min-width: 768px) {
.jumbotron {
margin-top: 20px;
}
@@ -28,4 +28,4 @@ textarea {
.body-content {
padding: 0;
}
-}
+}*/
diff --git a/C-TRACK/Content/Style.css b/C-TRACK/Content/Style.css
new file mode 100644
index 0000000..eadfe7f
--- /dev/null
+++ b/C-TRACK/Content/Style.css
@@ -0,0 +1,482 @@
+body {
+ margin-top: 0px;
+ margin-left: 0px;
+ margin-bottom: 0px;
+ margin-right: 0px;
+ font-family: Verdana, Arial;
+ font-size: small;
+}
+.fullscreen {
+ display: block;
+ /*set the div in the top-left corner of the screen*/
+ position: absolute;
+ top: 0;
+ left: 0;
+ /*set the width and height to 100% of the screen*/
+ width: 100%;
+ height: 100%;
+}
+#content {
+ width: 210px;
+ height: 240px;
+ padding: 0px;
+ border: 1px black solid;
+ background-position: center bottom;
+ background-image: url('images/logo_sw.jpg');
+ background-repeat: no-repeat;
+}
+#activeContent {
+ height: 200px;
+}
+#topBanner {
+ height: 20px;
+}
+#smallTable {
+ width: 98%;
+ padding: 1px;
+ white-space: nowrap;
+ font-size: 10pt;
+}
+#smallGrid {
+ width: 100%;
+ font-size: 8pt;
+}
+#smallGridDetail {
+ width: 100%;
+ font-size: 9pt;
+}
+.quadro1,
+.quadro3,
+.quadro5 {
+ float: left;
+ width: 48%;
+ text-align: center;
+ vertical-align: middle;
+ margin-top: 2px;
+ margin-bottom: 2px;
+}
+.quadro2,
+.quadro4,
+.quadro6 {
+ float: right;
+ width: 48%;
+ text-align: center;
+ vertical-align: middle;
+ margin-top: 2px;
+ margin-bottom: 2px;
+}
+.userBanner {
+ padding-top: 2px;
+ padding-bottom: 2px;
+ background-color: #6969AC;
+ text-align: center;
+ font-weight: bold;
+ color: White;
+}
+.taskBanner {
+ height: 16px;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ background-color: #ABABFF;
+ text-align: center;
+ color: Black;
+}
+.ctrHeaderPager {
+ background-color: #b8b8b8;
+ font-weight: bold;
+ color: White;
+ text-align: center;
+}
+.ctrHeaderPagerMini {
+ background-color: #b8b8b8;
+ color: White;
+ text-align: center;
+ font-size: x-small;
+ height: 10px;
+}
+.ctrHeaderPagerWide {
+ background-color: #b8b8b8;
+ font-weight: bold;
+ color: White;
+ font-size: 10pt;
+}
+.ctrRowStyle {
+ vertical-align: top;
+ background-color: #EFF3FB;
+ text-align: left;
+}
+.ctrAltRowStyle {
+ vertical-align: top;
+ background-color: White;
+ text-align: left;
+}
+.ctrRowStyleRight {
+ background-color: #EFF3FB;
+ text-align: right;
+}
+.ctrAltRowStyleRight {
+ background-color: White;
+ text-align: right;
+}
+.ctrInsRowStyle {
+ background-color: #b8b8b8;
+}
+.ctrEditRowStyle {
+ background-color: #D1DDF1;
+}
+.ctrSelRowStyle {
+ font-weight: bold;
+ color: #333333;
+ background-color: #D1DDF1;
+}
+.ctrFooterMini {
+ font-size: x-small;
+ height: 15px;
+}
+.btnDeposita {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnSposta {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnRettifica {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #5454FF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+ color: White;
+}
+.btnPreleva {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnRiattiva {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCFF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnConferma {
+ display: block;
+ width: 56px;
+ height: 40px;
+ border: solid 2px #DDDD99;
+ background-color: #FFFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnCellaPiena {
+ display: block;
+ width: 56px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnBarcode {
+ display: block;
+ width: 80px;
+ height: 40px;
+ text-align: center;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnChiudi {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px #DDDD99;
+ background-color: #FFFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnChiudiInput {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnDeliberaFusi {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnDeliberaWipPre {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnDeliberaWipPost {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnUpdate {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+}
+.btnCancel {
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #AAAAFF;
+ font-size: x-small;
+ font-weight: bold;
+}
+/* classe generale per div dei bottoni */
+.divButtons {
+ float: left;
+}
+/* bottoni homepage */
+.btnBarcodeBigWide1 {
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #88FFFF;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide2 {
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #FF88FF;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide3 {
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #FFFF88;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide4 {
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #F8F8F8;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide5 {
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #44FF44;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide6 {
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #FF4444;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBig {
+ width: 95px;
+ height: 90px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-weight: bold;
+ text-align: center;
+ white-space: pre;
+}
+.btnBarcodeBigWide {
+ width: 155px;
+ height: 80px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-weight: bold;
+ text-align: center;
+ white-space: nowrap;
+}
+.btnSearchBig {
+ width: 95px;
+ height: 90px;
+ border: solid 2px #DDDD99;
+ background-color: #FFFFAA;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnCaricaBig {
+ width: 95px;
+ height: 90px;
+ border: solid 2px #99DD99;
+ background-color: #AAFFAA;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnScaricaBig {
+ width: 95px;
+ height: 90px;
+ border: solid 2px #FF6666;
+ background-color: #FFAA88;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnListBig {
+ width: 95px;
+ height: 90px;
+ border: solid 2px #BBBB33;
+ background-color: #FFFF00;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnListBigWide {
+ width: 190px;
+ height: 90px;
+ border: solid 2px red;
+ background-color: #FFAA88;
+ font-weight: bold;
+ white-space: nowrap;
+}
+.btnTaskBig {
+ width: 95px;
+ height: 90px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnHome {
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnLogout {
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFAAAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnShowPeriodo {
+ height: 40px;
+ border: solid 2px Orange;
+ background-color: #FFCCAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnBarcodeSmall {
+ width: 80px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnPrendiInCarico {
+ width: 140px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnCarica {
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnScarica {
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFAAAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.errore {
+ color: Red;
+ font-weight: bold;
+}
+.divSx {
+ float: left;
+}
+.divDx {
+ float: right;
+}
\ No newline at end of file
diff --git a/C-TRACK/Content/Style.less b/C-TRACK/Content/Style.less
new file mode 100644
index 0000000..c1fc16c
--- /dev/null
+++ b/C-TRACK/Content/Style.less
@@ -0,0 +1,559 @@
+body
+{
+ margin-top: 0px;
+ margin-left: 0px;
+ margin-bottom: 0px;
+ margin-right: 0px;
+ font-family: Verdana, Arial;
+ font-size: small;
+}
+.fullscreen
+{
+ display: block; /*set the div in the top-left corner of the screen*/
+ position: absolute;
+ top: 0;
+ left: 0; /*set the width and height to 100% of the screen*/
+ width: 100%;
+ height: 100%;
+}
+#content
+{
+ width: 210px;
+ height: 240px;
+ padding: 0px;
+ border: 1px black solid;
+ background-position: center bottom;
+ background-image: url('images/logo_sw.jpg');
+ background-repeat: no-repeat;
+}
+
+#activeContent
+{
+ height: 200px;
+}
+#topBanner
+{
+ height: 20px;
+}
+#smallTable
+{
+ width: 98%;
+ padding: 1px;
+ white-space: nowrap;
+ font-size: 10pt;
+}
+#smallGrid
+{
+ width: 100%;
+ font-size: 8pt;
+}
+#smallGridDetail
+{
+ width: 100%;
+ font-size: 9pt;
+}
+
+.quadro1, .quadro3, .quadro5
+{
+ float: left;
+ width: 48%;
+ text-align: center;
+ vertical-align: middle;
+ margin-top: 2px;
+ margin-bottom: 2px;
+}
+.quadro2, .quadro4, .quadro6
+{
+ float: right;
+ width: 48%;
+ text-align: center;
+ vertical-align: middle;
+ margin-top: 2px;
+ margin-bottom: 2px;
+}
+
+.userBanner
+{
+ padding-top: 2px;
+ padding-bottom: 2px;
+ background-color: #6969AC;
+ text-align: center;
+ font-weight: bold;
+ color: White;
+}
+.taskBanner
+{
+ height: 16px;
+ padding-top: 0px;
+ padding-bottom: 0px;
+ background-color: #ABABFF;
+ text-align: center;
+ color: Black;
+}
+.ctrHeaderPager
+{
+ background-color: #b8b8b8;
+ font-weight: bold;
+ color: White;
+ text-align: center;
+}
+
+.ctrHeaderPagerMini
+{
+ background-color: #b8b8b8;
+ color: White;
+ text-align: center;
+ font-size: x-small;
+ height: 10px;
+}
+
+.ctrHeaderPagerWide
+{
+ background-color: #b8b8b8;
+ font-weight: bold;
+ color: White;
+ font-size: 10pt;
+}
+.ctrRowStyle
+{
+ vertical-align: top;
+ background-color: #EFF3FB;
+ text-align: left;
+}
+.ctrAltRowStyle
+{
+ vertical-align: top;
+ background-color: White;
+ text-align: left;
+}
+.ctrRowStyleRight
+{
+ background-color: #EFF3FB;
+ text-align: right;
+}
+.ctrAltRowStyleRight
+{
+ background-color: White;
+ text-align: right;
+}
+.ctrInsRowStyle
+{
+ background-color: #b8b8b8;
+}
+.ctrEditRowStyle
+{
+ background-color: #D1DDF1;
+}
+.ctrSelRowStyle
+{
+ font-weight: bold;
+ color: #333333;
+ background-color: #D1DDF1;
+}
+
+.ctrFooterMini
+{
+ font-size: x-small;
+ height: 15px;
+}
+.btnDeposita
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnSposta
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnRettifica
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #5454FF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+ color: White;
+}
+.btnPreleva
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnRiattiva
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCFF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnConferma
+{
+ display: block;
+ width: 56px;
+ height: 40px;
+ border: solid 2px #DDDD99;
+ background-color: #FFFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnCellaPiena
+{
+ display: block;
+ width: 56px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnBarcode
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ text-align: center;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnChiudi
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px #DDDD99;
+ background-color: #FFFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnChiudiInput
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnDeliberaFusi
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnDeliberaWipPre
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnDeliberaWipPost
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnUpdate
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-size: x-small;
+ font-weight: bold;
+}
+.btnCancel
+{
+ display: block;
+ width: 80px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #AAAAFF;
+ font-size: x-small;
+ font-weight: bold;
+}
+
+/* classe generale per div dei bottoni */
+
+.divButtons
+{
+ float: left;
+}
+
+
+/* bottoni homepage */
+
+.btnBarcodeBigWide1
+{
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #88FFFF;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide2
+{
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #FF88FF;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide3
+{
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #FFFF88;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide4
+{
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #F8F8F8;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide5
+{
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #44FF44;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+.btnBarcodeBigWide6
+{
+ width: 320px;
+ height: 140px;
+ border: solid 2px blue;
+ background-color: #FF4444;
+ font-weight: bold;
+ font-size: 20pt;
+ text-align: center;
+}
+
+.btnBarcodeBig
+{
+ width: 95px;
+ height: 90px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-weight: bold;
+ text-align: center;
+ white-space: pre;
+}
+.btnBarcodeBigWide
+{
+ width: 155px;
+ height: 80px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ font-weight: bold;
+ text-align: center;
+ white-space: nowrap;
+}
+
+.btnSearchBig
+{
+ width: 95px;
+ height: 90px;
+ border: solid 2px #DDDD99;
+ background-color: #FFFFAA;
+ font-weight: bold;
+ white-space: pre;
+}
+
+.btnCaricaBig
+{
+ width: 95px;
+ height: 90px;
+ border: solid 2px #99DD99;
+ background-color: #AAFFAA;
+ font-weight: bold;
+ white-space: pre;
+}
+
+.btnScaricaBig
+{
+ width: 95px;
+ height: 90px;
+ border: solid 2px #FF6666;
+ background-color: #FFAA88;
+ font-weight: bold;
+ white-space: pre;
+}
+
+.btnListBig
+{
+ width: 95px;
+ height: 90px;
+ border: solid 2px #BBBB33;
+ background-color: #FFFF00;
+ font-weight: bold;
+ white-space: pre;
+}
+.btnListBigWide
+{
+ width: 190px;
+ height: 90px;
+ border: solid 2px red;
+ background-color: #FFAA88;
+ font-weight: bold;
+ white-space: nowrap;
+}
+
+
+.btnTaskBig
+{
+ width: 95px;
+ height: 90px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ font-weight: bold;
+ white-space: pre;
+}
+
+.btnHome
+{
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnLogout
+{
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFAAAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnShowPeriodo
+{
+ height: 40px;
+ border: solid 2px Orange;
+ background-color: #FFCCAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnBarcodeSmall
+{
+ width: 80px;
+ height: 40px;
+ border: solid 2px blue;
+ background-color: #AAFFFF;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+
+.btnPrendiInCarico
+{
+ width: 140px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFCCAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnCarica
+{
+ width: 80px;
+ height: 40px;
+ border: solid 2px green;
+ background-color: #AAFFAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.btnScarica
+{
+ width: 80px;
+ height: 40px;
+ border: solid 2px red;
+ background-color: #FFAAAA;
+ white-space: pre;
+ font-size: 9pt;
+ font-weight: bold;
+}
+.errore
+{
+ color: Red;
+ font-weight: bold;
+}
+.divSx
+{
+ float: left;
+}
+.divDx
+{
+ float: right;
+}
diff --git a/C-TRACK/Content/Style.min.css b/C-TRACK/Content/Style.min.css
new file mode 100644
index 0000000..4153f29
--- /dev/null
+++ b/C-TRACK/Content/Style.min.css
@@ -0,0 +1 @@
+body{margin-top:0;margin-left:0;margin-bottom:0;margin-right:0;font-family:Verdana,Arial;font-size:small;}.fullscreen{display:block;position:absolute;top:0;left:0;width:100%;height:100%;}#content{width:210px;height:240px;padding:0;border:1px #000 solid;background-position:center bottom;background-image:url('images/logo_sw.jpg');background-repeat:no-repeat;}#activeContent{height:200px;}#topBanner{height:20px;}#smallTable{width:98%;padding:1px;white-space:nowrap;font-size:10pt;}#smallGrid{width:100%;font-size:8pt;}#smallGridDetail{width:100%;font-size:9pt;}.quadro1,.quadro3,.quadro5{float:left;width:48%;text-align:center;vertical-align:middle;margin-top:2px;margin-bottom:2px;}.quadro2,.quadro4,.quadro6{float:right;width:48%;text-align:center;vertical-align:middle;margin-top:2px;margin-bottom:2px;}.userBanner{padding-top:2px;padding-bottom:2px;background-color:#6969ac;text-align:center;font-weight:bold;color:#fff;}.taskBanner{height:16px;padding-top:0;padding-bottom:0;background-color:#ababff;text-align:center;color:#000;}.ctrHeaderPager{background-color:#b8b8b8;font-weight:bold;color:#fff;text-align:center;}.ctrHeaderPagerMini{background-color:#b8b8b8;color:#fff;text-align:center;font-size:x-small;height:10px;}.ctrHeaderPagerWide{background-color:#b8b8b8;font-weight:bold;color:#fff;font-size:10pt;}.ctrRowStyle{vertical-align:top;background-color:#eff3fb;text-align:left;}.ctrAltRowStyle{vertical-align:top;background-color:#fff;text-align:left;}.ctrRowStyleRight{background-color:#eff3fb;text-align:right;}.ctrAltRowStyleRight{background-color:#fff;text-align:right;}.ctrInsRowStyle{background-color:#b8b8b8;}.ctrEditRowStyle{background-color:#d1ddf1;}.ctrSelRowStyle{font-weight:bold;color:#333;background-color:#d1ddf1;}.ctrFooterMini{font-size:x-small;height:15px;}.btnDeposita{display:block;width:80px;height:40px;border:solid 2px #f00;background-color:#fca;font-size:x-small;font-weight:bold;white-space:pre;}.btnSposta{display:block;width:80px;height:40px;border:solid 2px #008000;background-color:#afa;font-size:x-small;font-weight:bold;white-space:pre;}.btnRettifica{display:block;width:80px;height:40px;border:solid 2px #00f;background-color:#5454ff;font-size:x-small;font-weight:bold;white-space:pre;color:#fff;}.btnPreleva{display:block;width:80px;height:40px;border:solid 2px #f00;background-color:#fca;font-size:x-small;font-weight:bold;white-space:pre;}.btnRiattiva{display:block;width:80px;height:40px;border:solid 2px #f00;background-color:#fcf;font-size:x-small;font-weight:bold;white-space:pre;}.btnConferma{display:block;width:56px;height:40px;border:solid 2px #dd9;background-color:#ffa;font-size:x-small;font-weight:bold;white-space:pre;}.btnCellaPiena{display:block;width:56px;height:40px;border:solid 2px #00f;background-color:#aff;font-size:x-small;font-weight:bold;white-space:pre;}.btnBarcode{display:block;width:80px;height:40px;text-align:center;border:solid 2px #00f;background-color:#aff;font-size:x-small;font-weight:bold;white-space:pre;}.btnChiudi{display:block;width:80px;height:40px;border:solid 2px #dd9;background-color:#ffa;font-size:x-small;font-weight:bold;white-space:pre;}.btnChiudiInput{display:block;width:80px;height:40px;border:solid 2px #f00;background-color:#fca;font-size:x-small;font-weight:bold;white-space:pre;}.btnDeliberaFusi{display:block;width:80px;height:40px;border:solid 2px #008000;background-color:#afa;font-size:x-small;font-weight:bold;white-space:pre;}.btnDeliberaWipPre{display:block;width:80px;height:40px;border:solid 2px #008000;background-color:#afa;font-size:x-small;font-weight:bold;white-space:pre;}.btnDeliberaWipPost{display:block;width:80px;height:40px;border:solid 2px #008000;background-color:#afa;font-size:x-small;font-weight:bold;white-space:pre;}.btnUpdate{display:block;width:80px;height:40px;border:solid 2px #008000;background-color:#afa;font-size:x-small;font-weight:bold;}.btnCancel{display:block;width:80px;height:40px;border:solid 2px #00f;background-color:#aaf;font-size:x-small;font-weight:bold;}.divButtons{float:left;}.btnBarcodeBigWide1{width:320px;height:140px;border:solid 2px #00f;background-color:#8ff;font-weight:bold;font-size:20pt;text-align:center;}.btnBarcodeBigWide2{width:320px;height:140px;border:solid 2px #00f;background-color:#f8f;font-weight:bold;font-size:20pt;text-align:center;}.btnBarcodeBigWide3{width:320px;height:140px;border:solid 2px #00f;background-color:#ff8;font-weight:bold;font-size:20pt;text-align:center;}.btnBarcodeBigWide4{width:320px;height:140px;border:solid 2px #00f;background-color:#f8f8f8;font-weight:bold;font-size:20pt;text-align:center;}.btnBarcodeBigWide5{width:320px;height:140px;border:solid 2px #00f;background-color:#4f4;font-weight:bold;font-size:20pt;text-align:center;}.btnBarcodeBigWide6{width:320px;height:140px;border:solid 2px #00f;background-color:#f44;font-weight:bold;font-size:20pt;text-align:center;}.btnBarcodeBig{width:95px;height:90px;border:solid 2px #00f;background-color:#aff;font-weight:bold;text-align:center;white-space:pre;}.btnBarcodeBigWide{width:155px;height:80px;border:solid 2px #00f;background-color:#aff;font-weight:bold;text-align:center;white-space:nowrap;}.btnSearchBig{width:95px;height:90px;border:solid 2px #dd9;background-color:#ffa;font-weight:bold;white-space:pre;}.btnCaricaBig{width:95px;height:90px;border:solid 2px #9d9;background-color:#afa;font-weight:bold;white-space:pre;}.btnScaricaBig{width:95px;height:90px;border:solid 2px #f66;background-color:#fa8;font-weight:bold;white-space:pre;}.btnListBig{width:95px;height:90px;border:solid 2px #bb3;background-color:#ff0;font-weight:bold;white-space:pre;}.btnListBigWide{width:190px;height:90px;border:solid 2px #f00;background-color:#fa8;font-weight:bold;white-space:nowrap;}.btnTaskBig{width:95px;height:90px;border:solid 2px #008000;background-color:#afa;font-weight:bold;white-space:pre;}.btnHome{width:80px;height:40px;border:solid 2px #008000;background-color:#afa;white-space:pre;font-size:9pt;font-weight:bold;}.btnLogout{width:80px;height:40px;border:solid 2px #f00;background-color:#faa;white-space:pre;font-size:9pt;font-weight:bold;}.btnShowPeriodo{height:40px;border:solid 2px #ffa500;background-color:#fca;white-space:pre;font-size:9pt;font-weight:bold;}.btnBarcodeSmall{width:80px;height:40px;border:solid 2px #00f;background-color:#aff;white-space:pre;font-size:9pt;font-weight:bold;}.btnPrendiInCarico{width:140px;height:40px;border:solid 2px #f00;background-color:#fca;white-space:pre;font-size:9pt;font-weight:bold;}.btnCarica{width:80px;height:40px;border:solid 2px #008000;background-color:#afa;white-space:pre;font-size:9pt;font-weight:bold;}.btnScarica{width:80px;height:40px;border:solid 2px #f00;background-color:#faa;white-space:pre;font-size:9pt;font-weight:bold;}.errore{color:#f00;font-weight:bold;}.divSx{float:left;}.divDx{float:right;}
\ No newline at end of file
diff --git a/C-TRACK/Content/fonts.css b/C-TRACK/Content/fonts.css
new file mode 100644
index 0000000..02f8a33
--- /dev/null
+++ b/C-TRACK/Content/fonts.css
@@ -0,0 +1,12 @@
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('OpenSans.woff') format('woff');
+}
+@font-face {
+ font-family: 'Open Sans Condensed';
+ font-style: normal;
+ font-weight: 300;
+ src: url('OpenSansCondensed.woff') format('woff');
+}
\ No newline at end of file
diff --git a/C-TRACK/Content/fonts.less b/C-TRACK/Content/fonts.less
new file mode 100644
index 0000000..8f157b2
--- /dev/null
+++ b/C-TRACK/Content/fonts.less
@@ -0,0 +1,13 @@
+@font-face {
+ font-family: 'Open Sans';
+ font-style: normal;
+ font-weight: 400;
+ src: url('OpenSans.woff') format('woff');
+}
+
+@font-face {
+ font-family: 'Open Sans Condensed';
+ font-style: normal;
+ font-weight: 300;
+ src: url('OpenSansCondensed.woff') format('woff');
+}
diff --git a/C-TRACK/Content/fonts.min.css b/C-TRACK/Content/fonts.min.css
new file mode 100644
index 0000000..846107e
--- /dev/null
+++ b/C-TRACK/Content/fonts.min.css
@@ -0,0 +1 @@
+@font-face{font-family:'Open Sans';font-style:normal;font-weight:400;src:url('OpenSans.woff') format('woff');}@font-face{font-family:'Open Sans Condensed';font-style:normal;font-weight:300;src:url('OpenSansCondensed.woff') format('woff');}
\ No newline at end of file
diff --git a/C-TRACK/Site.Master b/C-TRACK/Site.Master
deleted file mode 100644
index 5deeba8..0000000
--- a/C-TRACK/Site.Master
+++ /dev/null
@@ -1,72 +0,0 @@
-<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.master.cs" Inherits="C_TRACK.SiteMaster" %>
-
-
-
-
-
-
-
-
- <%: Page.Title %> - Applicazione ASP.NET
-
-
- <%: Scripts.Render("~/bundles/modernizr") %>
-
-
-
-
-
-
-
-
-
-
diff --git a/C-TRACK/Site.Master.cs b/C-TRACK/Site.Master.cs
deleted file mode 100644
index 003657d..0000000
--- a/C-TRACK/Site.Master.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Web;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-
-namespace C_TRACK
-{
- public partial class SiteMaster : MasterPage
- {
- protected void Page_Load(object sender, EventArgs e)
- {
-
- }
- }
-}
\ No newline at end of file
diff --git a/C-TRACK/Site.Master.designer.cs b/C-TRACK/Site.Master.designer.cs
deleted file mode 100644
index b76bf09..0000000
--- a/C-TRACK/Site.Master.designer.cs
+++ /dev/null
@@ -1,35 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// Codice generato da uno strumento.
-//
-// Le modifiche apportate a questo file possono causare un comportamento non corretto e andranno perse se
-// il codice viene rigenerato.
-//
-//------------------------------------------------------------------------------
-
-namespace C_TRACK
-{
-
-
- public partial class SiteMaster
- {
-
- ///
- /// Controllo HeadContent.
- ///
- ///
- /// Campo generato automaticamente.
- /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
- ///
- protected global::System.Web.UI.WebControls.ContentPlaceHolder HeadContent;
-
- ///
- /// Controllo MainContent.
- ///
- ///
- /// Campo generato automaticamente.
- /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
- ///
- protected global::System.Web.UI.WebControls.ContentPlaceHolder MainContent;
- }
-}
diff --git a/C-TRACK/Site.Mobile.Master b/C-TRACK/Site.Mobile.Master
deleted file mode 100644
index a748840..0000000
--- a/C-TRACK/Site.Mobile.Master
+++ /dev/null
@@ -1,23 +0,0 @@
-<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="Site.Mobile.master.cs" Inherits="C_TRACK.Site_Mobile" %>
-<%@ Register Src="~/ViewSwitcher.ascx" TagPrefix="friendlyUrls" TagName="ViewSwitcher" %>
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/C-TRACK/Site.Mobile.Master.cs b/C-TRACK/Site.Mobile.Master.cs
deleted file mode 100644
index 239869e..0000000
--- a/C-TRACK/Site.Mobile.Master.cs
+++ /dev/null
@@ -1,17 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Web;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-
-namespace C_TRACK
-{
- public partial class Site_Mobile : System.Web.UI.MasterPage
- {
- protected void Page_Load(object sender, EventArgs e)
- {
-
- }
- }
-}
\ No newline at end of file
diff --git a/C-TRACK/Site.Mobile.Master.designer.cs b/C-TRACK/Site.Mobile.Master.designer.cs
deleted file mode 100644
index 766eb9f..0000000
--- a/C-TRACK/Site.Mobile.Master.designer.cs
+++ /dev/null
@@ -1,51 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace C_TRACK {
-
-
- public partial class Site_Mobile {
-
- ///
- /// HeadContent control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.ContentPlaceHolder HeadContent;
-
- ///
- /// form1 control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.HtmlControls.HtmlForm form1;
-
- ///
- /// FeaturedContent control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.ContentPlaceHolder FeaturedContent;
-
- ///
- /// MainContent control.
- ///
- ///
- /// Auto-generated field.
- /// To modify move field declaration from designer file to code-behind file.
- ///
- protected global::System.Web.UI.WebControls.ContentPlaceHolder MainContent;
- }
-}
diff --git a/C-TRACK/ViewSwitcher.ascx b/C-TRACK/ViewSwitcher.ascx
deleted file mode 100644
index 16252a9..0000000
--- a/C-TRACK/ViewSwitcher.ascx
+++ /dev/null
@@ -1,4 +0,0 @@
-<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ViewSwitcher.ascx.cs" Inherits="C_TRACK.ViewSwitcher" %>
-
\ No newline at end of file
diff --git a/C-TRACK/ViewSwitcher.ascx.cs b/C-TRACK/ViewSwitcher.ascx.cs
deleted file mode 100644
index 99eeedf..0000000
--- a/C-TRACK/ViewSwitcher.ascx.cs
+++ /dev/null
@@ -1,43 +0,0 @@
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Web;
-using System.Web.Routing;
-using System.Web.UI;
-using System.Web.UI.WebControls;
-using Microsoft.AspNet.FriendlyUrls.Resolvers;
-
-namespace C_TRACK
-{
- public partial class ViewSwitcher : System.Web.UI.UserControl
- {
- protected string CurrentView { get; private set; }
-
- protected string AlternateView { get; private set; }
-
- protected string SwitchUrl { get; private set; }
-
- protected void Page_Load(object sender, EventArgs e)
- {
- // Determine current view
- var isMobile = WebFormsFriendlyUrlResolver.IsMobileView(new HttpContextWrapper(Context));
- CurrentView = isMobile ? "Mobile" : "Desktop";
-
- // Determine alternate view
- AlternateView = isMobile ? "Desktop" : "Mobile";
-
- // Create switch URL from the route, e.g. ~/__FriendlyUrls_SwitchView/Mobile?ReturnUrl=/Page
- var switchViewRouteName = "AspNet.FriendlyUrls.SwitchView";
- var switchViewRoute = RouteTable.Routes[switchViewRouteName];
- if (switchViewRoute == null)
- {
- // Friendly URLs is not enabled or the name of the switch view route is out of sync
- this.Visible = false;
- return;
- }
- var url = GetRouteUrl(switchViewRouteName, new { view = AlternateView, __FriendlyUrls_SwitchViews = true });
- url += "?ReturnUrl=" + HttpUtility.UrlEncode(Request.RawUrl);
- SwitchUrl = url;
- }
- }
-}
\ No newline at end of file
diff --git a/C-TRACK/ViewSwitcher.ascx.designer.cs b/C-TRACK/ViewSwitcher.ascx.designer.cs
deleted file mode 100644
index 9c245fe..0000000
--- a/C-TRACK/ViewSwitcher.ascx.designer.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-//------------------------------------------------------------------------------
-//
-// This code was generated by a tool.
-//
-// Changes to this file may cause incorrect behavior and will be lost if
-// the code is regenerated.
-//
-//------------------------------------------------------------------------------
-
-namespace C_TRACK {
-
-
- public partial class ViewSwitcher {
- }
-}
diff --git a/C-TRACK/WebMasterPages/Bootstrap.Master.designer.cs b/C-TRACK/WebMasterPages/Bootstrap.Master.designer.cs
index 3c1a0fb..8fabcad 100644
--- a/C-TRACK/WebMasterPages/Bootstrap.Master.designer.cs
+++ b/C-TRACK/WebMasterPages/Bootstrap.Master.designer.cs
@@ -64,7 +64,7 @@ namespace C_TRACK.WebMasterPages {
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
///
- protected global::System.Web.UI.UserControl mod_menuTopCompact;
+ protected global::C_TRACK.WebUserControls.mod_menuTopCompact mod_menuTopCompact;
///
/// Controllo uppContainer.
@@ -91,7 +91,7 @@ namespace C_TRACK.WebMasterPages {
/// Campo generato automaticamente.
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
///
- protected global::System.Web.UI.UserControl mod_footer;
+ protected global::C_TRACK.WebUserControls.mod_footer mod_footer;
///
/// Controllo PlaceHolder2.
diff --git a/C-TRACK/WebUserControls/mod_barcode.ascx b/C-TRACK/WebUserControls/mod_barcode.ascx
index 34ae798..c125fbf 100644
--- a/C-TRACK/WebUserControls/mod_barcode.ascx
+++ b/C-TRACK/WebUserControls/mod_barcode.ascx
@@ -1 +1,39 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_barcode.ascx.cs" Inherits="C_TRACK.WebUserControls.mod_barcode" %>
+
+
+
+
+
\ No newline at end of file
diff --git a/C-TRACK/WebUserControls/mod_barcode.ascx.cs b/C-TRACK/WebUserControls/mod_barcode.ascx.cs
index 5c7f922..1d663cb 100644
--- a/C-TRACK/WebUserControls/mod_barcode.ascx.cs
+++ b/C-TRACK/WebUserControls/mod_barcode.ascx.cs
@@ -1,17 +1,276 @@
-using System;
+using SteamWare;
+using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Web;
using System.Web.UI;
-using System.Web.UI.WebControls;
namespace C_TRACK.WebUserControls
{
public partial class mod_barcode : System.Web.UI.UserControl
{
+ #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 void Page_Load(object sender, EventArgs e)
{
-
+ DetectAgent();
+ myInitialize();
}
+ ///
+ /// inizializzazione specifica barcode
+ ///
+ private void myInitialize()
+ {
+ lblInput.Text = traduci("PregoInserireBarcode");
+ if (!Page.IsPostBack)
+ {
+ comando = new inputComando();
+ }
+ }
+
+ public string BCodeVal
+ {
+ get
+ {
+ return txtInput.Text.Trim().ToUpper();
+ }
+ set
+ {
+ txtInput.Text = value;
+ }
+ }
+
+ ///
+ /// barcode completato con invio...
+ ///
+ ///
+ ///
+ protected void txtInput_TextChanged(object sender, EventArgs e)
+ {
+ processInput();
+ }
+
+ private void processInput()
+ {
+ // 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 = BCodeVal;
+ comando = new inputComando();
+ }
+ BCodeVal = "";
+ }
+ ///
+ /// verifico se sia un valore compreso nell'elenco fornito
+ ///
+ private void isValore()
+ {
+ if (_tabValori.ContainsKey(BCodeVal)) // verifico se il comando digitato esista...
+ {
+ comando.isValid = true;
+ comando.valore = BCodeVal;
+ _tabValori.TryGetValue(BCodeVal, out comando.valoreTrad);
+ }
+ }
+ ///
+ /// verifica se il comando inserito sia valido
+ ///
+ private void isInputEvent()
+ {
+ if (_comandi.ContainsKey(BCodeVal)) // verifico se il comando digitato esista...
+ {
+ comando.isValid = true;
+ // salvo comando precedente (se c'è...)
+ comando.prevCmdIn = comando.currCmdIn;
+ comando.descrComandoPrev = comando.descrComando;
+ comando.currCmdIn = BCodeVal;
+ _comandi.TryGetValue(BCodeVal, out comando.descrComando);
+ }
+ }
+ ///
+ /// verifica quale browser usato e applica css corretto al div attorno al box
+ ///
+ private void DetectAgent()
+ {
+ System.Web.HttpBrowserCapabilities browser = Request.Browser;
+ if (browser.Browser == "IE")
+ {
+ pnlBarcodeBox.CssClass = "barcodeBoxIE";
+ }
+ else
+ {
+ pnlBarcodeBox.CssClass = "barcodeBoxOther";
+ }
+ }
+
+
+ #endregion
+
+ #region area public
+
+ ///
+ /// effettua al ettura da sessione del comando cliccato e lo inserisce come fosse barcode
+ ///
+ public void loadBtnClickComando()
+ {
+ BCodeVal = memLayer.ML.StringSessionObj("btnCmdPress");
+ memLayer.ML.emptySessionVal("btnCmdPress");
+ processInput();
+ }
+
+ ///
+ /// 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 = "";
+ }
+ ///
+ /// wrapper traduzione termini
+ ///
+ ///
+ ///
+ public string traduci(string lemma)
+ {
+ return user_std.UtSn.Traduci(lemma);
+ }
+
+ #endregion
}
}
\ No newline at end of file
diff --git a/C-TRACK/WebUserControls/mod_barcode.ascx.designer.cs b/C-TRACK/WebUserControls/mod_barcode.ascx.designer.cs
index 7738034..383e977 100644
--- a/C-TRACK/WebUserControls/mod_barcode.ascx.designer.cs
+++ b/C-TRACK/WebUserControls/mod_barcode.ascx.designer.cs
@@ -1,17 +1,78 @@
//------------------------------------------------------------------------------
-//
+//
// Codice generato da uno strumento.
//
// Le modifiche a questo file possono causare un comportamento non corretto e verranno perse se
-// il codice viene rigenerato.
-//
+// il codice viene rigenerato.
+//
//------------------------------------------------------------------------------
-namespace C_TRACK.WebUserControls
-{
-
-
- public partial class mod_barcode
- {
- }
+namespace C_TRACK.WebUserControls {
+
+
+ public partial class mod_barcode {
+
+ ///
+ /// Controllo txtInput.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.TextBox txtInput;
+
+ ///
+ /// Controllo lbtCerca.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.LinkButton lbtCerca;
+
+ ///
+ /// Controllo pnlBarcodeBox.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Panel pnlBarcodeBox;
+
+ ///
+ /// Controllo lblInput.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblInput;
+
+ ///
+ /// Controllo lblValore.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblValore;
+
+ ///
+ /// Controllo lblRichiesta.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblRichiesta;
+
+ ///
+ /// Controllo lblBrowser.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.Label lblBrowser;
+ }
}
diff --git a/C-TRACK/WebUserControls/mod_btnComandi.ascx b/C-TRACK/WebUserControls/mod_btnComandi.ascx
index 417ee2f..e1f0082 100644
--- a/C-TRACK/WebUserControls/mod_btnComandi.ascx
+++ b/C-TRACK/WebUserControls/mod_btnComandi.ascx
@@ -1 +1,38 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_btnComandi.ascx.cs" Inherits="C_TRACK.WebUserControls.mod_btnComandi" %>
+
+
+
+
+ <%: comandiAmmessi["04"] %>
+
+
+
+
+ <%: comandiAmmessi["05"] %>
+
+
+
+
+
+
+ <%: comandiAmmessi["06"] %>
+
+
+
+
+ <%: comandiAmmessi["07"] %>
+
+
+
+
+
+
+ <%: comandiAmmessi["ok"] %>
+
+
+
+
+ <%: comandiAmmessi["ko"] %>
+
+
+
diff --git a/C-TRACK/WebUserControls/mod_btnComandi.ascx.cs b/C-TRACK/WebUserControls/mod_btnComandi.ascx.cs
index 080d118..ee977ad 100644
--- a/C-TRACK/WebUserControls/mod_btnComandi.ascx.cs
+++ b/C-TRACK/WebUserControls/mod_btnComandi.ascx.cs
@@ -1,17 +1,358 @@
-using System;
+using SteamWare;
+using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Web;
-using System.Web.UI;
-using System.Web.UI.WebControls;
namespace C_TRACK.WebUserControls
{
public partial class mod_btnComandi : System.Web.UI.UserControl
{
+ ///
+ /// evento comando clicked
+ ///
+ public event EventHandler eh_clickComando;
+
protected void Page_Load(object sender, EventArgs e)
{
+ setupComandiBarcode();
+ updateBtn();
+ }
+ ///
+ /// Restituisce email dest da codCliente + check conf da web.config con forzatura a email interna
+ ///
+ ///
+ ///
+ protected string getEmailDest(string CodCliente)
+ {
+ string answ = "";
+#if false
+ if (memLayer.ML.CRS("_forcedDestEmail") != "")
+ {
+ answ = memLayer.ML.CRS("_forcedDestEmail");
+ }
+ else
+ {
+ answ = XPS_data.XPS.obj.taAnCli.getByKey(CodCliente)[0].email;
+ }
+#endif
+ return answ;
+ }
+ ///
+ /// Aggiorna stato buttons
+ ///
+ public void updateBtn()
+ {
+ // determino visibilità lbt4: SOLO se ho un UDC valido ed è in stato 05...
+ int currState = 0;
+ bool emailReq = false;
+ string emailSent = "";
+ string emailDest = "";
+ string CodCliente = "";
+#if false
+ DS_applicazione.IstObjRow rigaIstObj;
+ // calcolo lo stato dell'oggetto...
+ try
+ {
+ rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
+ currState = Convert.ToInt32(rigaIstObj.CodStato);
+ emailReq = rigaIstObj.emailReq;
+ CodCliente = rigaIstObj.CodCliente;
+ emailDest = getEmailDest(CodCliente);
+ }
+ catch
+ { }
+ try
+ {
+ rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
+ emailSent = rigaIstObj.emailSent.ToString("dd/MM/yy HH:mm");
+ }
+ catch
+ { }
+#endif
+
+ switch (currState)
+ {
+ case 1:
+ case 2:
+ case 3:
+ lbt1.Enabled = true;
+ lbt2.Enabled = false;
+ lbt3.Enabled = false;
+ lbt4.Enabled = false;
+ break;
+ case 4:
+ lbt1.Enabled = false;
+ lbt2.Enabled = true;
+ lbt3.Enabled = false;
+ lbt4.Enabled = false;
+ break;
+ case 5:
+ lbt1.Enabled = false;
+ lbt2.Enabled = false;
+ lbt3.Enabled = true;
+ lbt4.Enabled = true;
+ break;
+ case 6:
+ case 7:
+ lbt1.Enabled = false;
+ lbt2.Enabled = false;
+ lbt3.Enabled = false;
+ lbt4.Enabled = true;
+ break;
+ default:
+ lbt1.Enabled = false;
+ lbt2.Enabled = false;
+ lbt3.Enabled = false;
+ lbt4.Enabled = false;
+ break;
+ }
+
+ // fix CSS... inizio togliendo disabled...
+ lbt1.CssClass = lbt1.CssClass.Replace("disabled", "").Trim();
+ lbt2.CssClass = lbt2.CssClass.Replace("disabled", "").Trim();
+ lbt3.CssClass = lbt3.CssClass.Replace("disabled", "").Trim();
+ lbt4.CssClass = lbt4.CssClass.Replace("disabled", "").Trim();
+ lbt5.CssClass = lbt5.CssClass.Replace("disabled", "").Trim();
+ lbt6.CssClass = lbt6.CssClass.Replace("disabled", "").Trim();
+
+
+
+ // rimetto dove serve disabled...
+ if (!lbt1.Enabled)
+ {
+ lbt1.CssClass += " disabled";
+ }
+
+ if (!lbt2.Enabled)
+ {
+ lbt2.CssClass += " disabled";
+ }
+
+ if (!lbt3.Enabled)
+ {
+ lbt3.CssClass += " disabled";
+ }
+
+ if (!lbt4.Enabled)
+ {
+ lbt4.CssClass += " disabled";
+ }
+
+ if (!lbt5.Enabled)
+ {
+ lbt5.CssClass += " disabled";
+ }
+
+ if (!lbt6.Enabled)
+ {
+ lbt6.CssClass += " disabled";
+ }
+
+ if (currState >= 5)
+ {
+ // controllo se c'è email del cliente...
+ if (emailDest != "")
+ {
+ lbt4.Enabled = true;
+ }
+ else
+ {
+ lbt4.Enabled = false;
+ }
+ // controllo se era indicato email richiesta!
+ if (emailReq)
+ {
+ lbt4.Text = string.Format("{0}{1}{2}", comandiAmmessi["07"], Environment.NewLine, user_std.UtSn.Traduci("emailReq"));
+ }
+ else
+ {
+ lbt4.Enabled = false;
+ }
+ // controllo se mai spedita email...
+ if (emailSent != "")
+ {
+ lbt4.Text += string.Format("{0}{1}: {2}", Environment.NewLine, user_std.UtSn.Traduci("emailSent"), emailSent);
+ }
+ }
+ // se autoconferma nascondo button conferma...
+ if (memLayer.ML.confReadBool("autoConfCmd"))
+ {
+ lbt5.Visible = false;
+ }
+ else
+ {
+ lbt5.Visible = true;
+ }
+ }
+ ///
+ /// carico da tab i comandi ammessi per il barcode...
+ ///
+ private void setupComandiBarcode()
+ {
+#if false
+ XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter taTrEv2St = new XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter();
+ DS_applicazione.TraEv2StatiDataTable _tabTran = taTrEv2St.getByCodMappa("E_BC");
+ Dictionary comandi = new Dictionary();
+ foreach (DS_applicazione.TraEv2StatiRow riga in _tabTran)
+ {
+ comandi.Add(riga.CodEvento, user_std.UtSn.Traduci(riga.text2show));
+ }
+ // impongo i comandi al barcode...
+ comandiAmmessi = comandi;
+#endif
+ }
+ ///
+ /// dictionary comandi ammessi
+ ///
+ protected Dictionary _comandi = new Dictionary();
+ ///
+ /// elenco dei comandi riconosciuti
+ ///
+ public Dictionary comandiAmmessi
+ {
+ get
+ {
+ return _comandi;
+ }
+ set
+ {
+ _comandi = value;
+ }
+ }
+ ///
+ /// segnala click su button comando
+ ///
+ public void segnalaClick()
+ {
+ if (eh_clickComando != null)
+ {
+ eh_clickComando(this, new EventArgs());
+ }
+
+ }
+
+ protected void lbt1_Click(object sender, EventArgs e)
+ {
+ memLayer.ML.setSessionVal("btnCmdPress", "04", false);
+ segnalaClick();
+ }
+ protected void lbt2_Click(object sender, EventArgs e)
+ {
+ memLayer.ML.setSessionVal("btnCmdPress", "05", false);
+ segnalaClick();
+ }
+ protected void lbt3_Click(object sender, EventArgs e)
+ {
+ memLayer.ML.setSessionVal("btnCmdPress", "06", false);
+ segnalaClick();
+ }
+ protected void lbt4_Click(object sender, EventArgs e)
+ {
+#if false
+ logger.lg.scriviLog("Richiesto invio email...");
+ // mi limito a mandare email e non segnalo altro... carico dati!
+ // determino visibilità lbt4: SOLO se ho un UDC valido ed è in stato 05...
+ int currState = 0;
+ bool emailReq = false;
+ string emailSent = "";
+ string emailDest = "";
+ string CodCliente = "";
+ string ddt = "";
+ string dataRif = "";
+ string descr = "";
+ string peso = "";
+ DS_applicazione.IstObjRow rigaIstObj = null;
+
+ // calcolo lo stato dell'oggetto...
+ try
+ {
+ rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
+ currState = Convert.ToInt32(rigaIstObj.CodStato);
+ emailReq = rigaIstObj.emailReq;
+ CodCliente = rigaIstObj.CodCliente;
+ emailDest = getEmailDest(CodCliente);
+ logger.lg.scriviLog(string.Format("Recuperati dati per invio email: {0} | {1} | {2}", comando.valore, CodCliente, emailDest));
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog(String.Format("Eccezione in recupero dati commessa x email: {0}", exc), tipoLog.EXCEPTION);
+ }
+ try
+ {
+ rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
+ emailSent = rigaIstObj.emailSent.ToString("dd/MM/yy HH:mm");
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog(String.Format("Eccezione in invio email: {0}", exc), tipoLog.EXCEPTION);
+ }
+ try
+ {
+ ddt = rigaIstObj.Nome;
+ dataRif = rigaIstObj.DataRif.ToString("dd/MM/yy HH:mm");
+ descr = rigaIstObj.Note;
+ peso = rigaIstObj.Peso.ToString();
+ }
+ catch (Exception exc)
+ {
+ ddt = "n.d.";
+ dataRif = "n.d.";
+ descr = "n.d.";
+ peso = "n.d.";
+ logger.lg.scriviLog(String.Format("Eccezione in recupero dati x email: {0}", exc), tipoLog.EXCEPTION);
+ }
+ if (currState >= 5 && emailDest != "")
+ {
+ // invio email
+ string subject = user_std.UtSn.Traduci("emailSubject"); // 'Notifica merce pronta'
+ string bodyMsg = string.Format(user_std.UtSn.Traduci("emailBody"), ddt, dataRif, descr, peso); //'Attenzione, la merce relativa al DDT {0} del {1}, ({2}, peso {3} kg) è pronta per il ritiro presso EQUA s.p.a di Pedrengo'
+ // se è forzato invio interno cambio subject e body...
+ if (memLayer.ML.CRS("_forcedDestEmail") != "")
+ {
+ DS_applicazione.v_commesseRow rigaComm = XPS_data.XPS.obj.taComm.getByCod(comando.valore)[0];
+ subject += string.Format(" | cliente: {0}", rigaComm.Cliente);
+ bodyMsg += string.Format("
Link diretto al DDT {2} - {3}", memLayer.ML.CRS("mainSite"), rigaComm.Cod, rigaComm.DDT, rigaComm.descrizione);
+ }
+ // invio email!
+ bool fatto = gestEmail.geAuth.mandaEmail(memLayer.ML.confReadString("_emailUser"), emailDest, subject, bodyMsg);
+ if (fatto)
+ {
+ // aggiorno stato obj
+ XPS_data.XPS.obj.taObj.updateEmailSent(comando.valore);
+ }
+ }
+#endif
+ updateBtn();
+ }
+ protected void lbt5_Click(object sender, EventArgs e)
+ {
+ memLayer.ML.setSessionVal("btnCmdPress", "ok", false);
+ segnalaClick();
+ }
+ protected void lbt6_Click(object sender, EventArgs e)
+ {
+ memLayer.ML.setSessionVal("btnCmdPress", "ko", false);
+ segnalaClick();
+ }
+
+ ///
+ /// 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;
+ }
}
}
}
\ No newline at end of file
diff --git a/C-TRACK/WebUserControls/mod_btnComandi.ascx.designer.cs b/C-TRACK/WebUserControls/mod_btnComandi.ascx.designer.cs
index 001c701..2c4e790 100644
--- a/C-TRACK/WebUserControls/mod_btnComandi.ascx.designer.cs
+++ b/C-TRACK/WebUserControls/mod_btnComandi.ascx.designer.cs
@@ -1,17 +1,69 @@
//------------------------------------------------------------------------------
-//
+//
// Codice generato da uno strumento.
//
// Le modifiche a questo file possono causare un comportamento non corretto e verranno perse se
-// il codice viene rigenerato.
-//
+// il codice viene rigenerato.
+//
//------------------------------------------------------------------------------
-namespace C_TRACK.WebUserControls
-{
-
-
- public partial class mod_btnComandi
- {
- }
+namespace C_TRACK.WebUserControls {
+
+
+ public partial class mod_btnComandi {
+
+ ///
+ /// Controllo lbt1.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.LinkButton lbt1;
+
+ ///
+ /// Controllo lbt2.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.LinkButton lbt2;
+
+ ///
+ /// Controllo lbt3.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.LinkButton lbt3;
+
+ ///
+ /// Controllo lbt4.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.LinkButton lbt4;
+
+ ///
+ /// Controllo lbt5.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.LinkButton lbt5;
+
+ ///
+ /// Controllo lbt6.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.WebControls.LinkButton lbt6;
+ }
}
diff --git a/C-TRACK/barcode.aspx.cs b/C-TRACK/barcode.aspx.cs
index a91b1ae..d9c9b53 100644
--- a/C-TRACK/barcode.aspx.cs
+++ b/C-TRACK/barcode.aspx.cs
@@ -1,9 +1,8 @@
-using System;
+using SteamWare;
+using System;
using System.Collections.Generic;
-using System.Linq;
-using System.Web;
+using System.Diagnostics;
using System.Web.UI;
-using System.Web.UI.WebControls;
namespace C_TRACK
{
@@ -12,6 +11,433 @@ namespace C_TRACK
protected void Page_Load(object sender, EventArgs e)
{
+ if (!Page.IsPostBack)
+ {
+ // Crea stopwatch.
+ Stopwatch stopwatch = new Stopwatch();
+ // Avvio...
+ stopwatch.Start();
+ traduciObj();
+ // registro che i valori in cache sono scaduti...
+ lastDataRefresh = DateTime.Now.AddDays(-1);
+ numDD = memLayer.ML.CRI("numDD");
+ cacheValSec = memLayer.ML.CRI("cacheValSec");
+ // registro
+ stopwatch.Stop();
+ lastUpdDuration = stopwatch.Elapsed;
+ }
+ // effettuo load valori...
+ setupComandiBarcode();
+ setupValoriBarcode();
+ // registro eventi
+ mod_barcode1.eh_comandoRegistrato += new EventHandler(mod_barcode1_eh_comandoRegistrato);
+ mod_btnComandi1.eh_clickComando += new EventHandler(mod_btnComandi1_eh_clickComando);
+ }
+ ///
+ /// Numero comandi ammessi caricati
+ ///
+ public int nComandi
+ {
+ get
+ {
+ return comandiAmmessiBCode.Count;
+ }
+ }
+ ///
+ /// Numero record BCode caricati
+ ///
+ public int nBCodeRec
+ {
+ get
+ {
+ return valoriAmmessiBCode.Count;
+ }
+ }
+ ///
+ /// Memorizzo durata ultimo update (lettura record...) come timespan
+ ///
+ public TimeSpan lastUpdDuration
+ {
+ get
+ {
+ return (TimeSpan)memLayer.ML.objSessionObj("lastUpdDuration");
+ }
+ set
+ {
+ memLayer.ML.setSessionVal("lastUpdDuration", value);
+ }
+ }
+ ///
+ /// inviato un comando dai link buttons
+ ///
+ ///
+ ///
+ void mod_btnComandi1_eh_clickComando(object sender, EventArgs e)
+ {
+ // chiamo metodo caricamento comandi in modulo barcode...
+ mod_barcode1.loadBtnClickComando();
+ }
+
+ private void traduciObj()
+ {
+ }
+ ///
+ /// imposta/recupera valore num gg da rileggere...
+ ///
+ public int numDD
+ {
+ get
+ {
+ int answ = 85;
+ try
+ {
+ answ = Convert.ToInt32(txtNumDD.Text.Trim());
+ }
+ catch
+ { }
+ return answ;
+ }
+ set
+ {
+ txtNumDD.Text = value.ToString();
+ }
+ }
+ ///
+ /// logLevel impostato...
+ ///
+ public int logLevel
+ {
+ get
+ {
+ int answ = 1;
+ try
+ {
+ answ = memLayer.ML.CRI("_logLevel");
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ ///
+ /// imposta/recupera valore num sec validità cache...
+ ///
+ public int cacheValSec
+ {
+ get
+ {
+ int answ = 55;
+ try
+ {
+ answ = Convert.ToInt32(txtCacheSec.Text.Trim());
+ }
+ catch
+ { }
+
+ return answ;
+ }
+ set
+ {
+ txtCacheSec.Text = value.ToString();
+ }
+ }
+ ///
+ /// Variabile x controllo scadenza valori in cache
+ ///
+ protected DateTime lastDataRefresh
+ {
+ get
+ {
+ DateTime answ = DateTime.Now.AddDays(-1);
+ try
+ {
+ answ = Convert.ToDateTime(memLayer.ML.objCacheObj("lastBCodeDataRead"));
+ }
+ catch
+ { }
+ return answ;
+ }
+ set
+ {
+ // registro che i valori in cache sono scaduti...
+ memLayer.ML.setCacheVal("lastBCodeDataRead", value);
+ if (logLevel > 5)
+ {
+ logger.lg.scriviLog("impostata validità cache");
+ }
+ }
+ }
+ protected bool cacheValida
+ {
+ get
+ {
+ bool answ = false;
+ try
+ {
+ if (DateTime.Now.Subtract(lastDataRefresh).TotalSeconds < cacheValSec)
+ {
+ answ = true;
+ }
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ ///
+ /// Elenco (da cache) dei valori ammessi x BCode
+ ///
+ protected Dictionary valoriAmmessiBCode
+ {
+ get
+ {
+ Dictionary answ = new Dictionary();
+ if (memLayer.ML.isInCacheObject("valoriAmmessiBCode") && cacheValida)
+ {
+ answ = (Dictionary)memLayer.ML.objCacheObj("valoriAmmessiBCode");
+ }
+ return answ;
+ }
+ set
+ {
+ memLayer.ML.setCacheVal("valoriAmmessiBCode", value);
+ }
+ }
+ ///
+ /// Elenco (da cache) dei comandi ammessi x BCode
+ ///
+ protected Dictionary comandiAmmessiBCode
+ {
+ get
+ {
+ Dictionary answ = new Dictionary();
+ if (memLayer.ML.isInCacheObject("comandiAmmessiBCode"))
+ {
+ answ = (Dictionary)memLayer.ML.objCacheObj("comandiAmmessiBCode");
+ }
+ return answ;
+ }
+ set
+ {
+ memLayer.ML.setCacheVal("comandiAmmessiBCode", value);
+ }
+ }
+ ///
+ /// effettuo il setup dei valori ammessi x il barcode...
+ ///
+ private void setupValoriBarcode()
+ {
+ if (valoriAmmessiBCode.Count > 0)
+ {
+ // assegno valori al barcode...
+ mod_barcode1.tabValori = valoriAmmessiBCode;
+ if (logLevel > 5)
+ {
+ logger.lg.scriviLog("Letti da cache VALORI Barcode", tipoLog.INFO);
+ }
+ }
+ else
+ {
+ // Crea stopwatch.
+ Stopwatch stopwatch = new Stopwatch();
+ // Avvio...
+ stopwatch.Start();
+ // carico dati!
+ if (logLevel > 5)
+ {
+ logger.lg.scriviLog("Inizio setup valori Barcode", tipoLog.INFO);
+ }
+
+ Dictionary valori = new Dictionary();
+#if false
+ XPS_data.DS_applicazioneTableAdapters.v_commesseTableAdapter taCommesse = new XPS_data.DS_applicazioneTableAdapters.v_commesseTableAdapter();
+ DS_applicazione.v_commesseDataTable _tabComm = taCommesse.getLastDD(numDD);
+ // aggiungo i DDT...
+ foreach (DS_applicazione.v_commesseRow riga in _tabComm)
+ {
+ // QUI formattazione campi mostrati a barcode
+ // 2017.05.23 tolto stato...
+ valori.Add(riga.Cod.ToString(), string.Format("{0} - {6}
{1} DDT {2} del {3:dd MMM yyyy}
{4} colli ({5} kg)", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Colli, riga.Peso, riga.Ciclo));
+ //valori.Add(riga.Cod.ToString(), string.Format("{0} - {7}
{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, riga.Ciclo));
+ }
+ if (logLevel > 5)
+ {
+ logger.lg.scriviLog("Caricato commesse per Barcode", tipoLog.INFO);
+ }
+ // ora aggiungo i singoli ULP...
+ XPS_data.DS_applicazioneTableAdapters.v_ULPTableAdapter taULP = new XPS_data.DS_applicazioneTableAdapters.v_ULPTableAdapter();
+ DS_applicazione.v_ULPDataTable _tabUlp = taULP.getLastDD(numDD);
+ // aggiungo colli (ULP)...
+ foreach (DS_applicazione.v_ULPRow riga in _tabUlp)
+ {
+ // QUI formattazione campi mostrati a barcode
+ // 2017.05.23 tolto stato...
+ valori.Add(riga.Cod.ToString(), string.Format("{0} - {6}
{1} DDT {2} del {3:dd MMM yyyy}
nr {4} items ({5} kg)", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Qta, riga.Peso, riga.CodCli));
+ //valori.Add(riga.Cod.ToString(), string.Format("{0} - {7}
{1} DDT {2} del {3:dd MMM yyyy}
nr {4} items ({5} kg)
{6}", riga.Cod, riga.Cliente, riga.DDT, riga.DataDDT, riga.Qta, riga.Peso, riga.Stato, riga.CodCli));
+ }
+ if (logLevel > 5)
+ {
+ logger.lg.scriviLog("Caricato RIGHE per Barcode", tipoLog.INFO);
+ }
+#endif
+ // assegno valori al barcode...
+ mod_barcode1.tabValori = valori;
+ valoriAmmessiBCode = valori;
+ lastDataRefresh = DateTime.Now;
+ logger.lg.scriviLog("Letti da DB VALORI Barcode", tipoLog.INFO);
+ stopwatch.Start();
+ lastUpdDuration = stopwatch.Elapsed;
+ }
+ }
+ ///
+ /// carico da tab i comandi ammessi per il barcode...
+ ///
+ private void setupComandiBarcode()
+ {
+ if (comandiAmmessiBCode.Count > 0)
+ {
+ // assegno valori al barcode...
+ mod_barcode1.comandiAmmessi = comandiAmmessiBCode;
+ if (logLevel > 5)
+ {
+ logger.lg.scriviLog("Letti da cache COMANDI Barcode", tipoLog.INFO);
+ }
+ }
+ else
+ {
+#if false
+ XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter taTrEv2St = new XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter();
+ DS_applicazione.TraEv2StatiDataTable _tabTran = taTrEv2St.getByCodMappa("E_BC");
+ Dictionary comandi = new Dictionary();
+ foreach (DS_applicazione.TraEv2StatiRow riga in _tabTran)
+ {
+ comandi.Add(riga.CodEvento, user_std.UtSn.Traduci(riga.text2show));
+ }
+ // impongo i comandi al barcode...
+ mod_barcode1.comandiAmmessi = comandi;
+ comandiAmmessiBCode = comandi;
+ logger.lg.scriviLog("Letti da DB COMANDI Barcode", tipoLog.INFO);
+#endif
+ }
+ }
+ ///
+ /// il barcode ha registrato un evento...
+ ///
+ ///
+ ///
+ void mod_barcode1_eh_comandoRegistrato(object sender, EventArgs e)
+ {
+#if false
+ switch (stateMachine.st.azioneComando(mod_barcode1.comandoRegistrato))
+ {
+ case tipoAzione.annulla:
+ mod_barcode1.resetMe();
+ break;
+ case tipoAzione.conferma:
+ // se input completo eseguo...
+ if (mod_barcode1.comandoRegistrato.currCmdIn != "" && mod_barcode1.comandoRegistrato.valore != "")
+ {
+ eseguiComando();
+ }
+ else // altrimenti warning... e rimetto valori precedenti
+ {
+ 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 tipoAzione.esegui:
+ // se ho auto conferma eseguo!
+ if (memLayer.ML.confReadBool("autoConfCmd"))
+ {
+ mod_barcode1.comandoRegistrato.prevCmdIn = mod_barcode1.comandoRegistrato.currCmdIn;
+ mod_barcode1.comandoRegistrato.currCmdIn = "ok";
+ eseguiComando();
+ }
+ else
+ {
+ if (mod_barcode1.comandoRegistrato.valore != "")
+ {
+ mod_barcode1.txtRich2show = user_std.UtSn.Traduci("pleaseConfirm");
+ }
+ else
+ {
+ mod_barcode1.txtRich2show = user_std.UtSn.Traduci("codObjUnknown");
+ }
+ }
+ break;
+ case tipoAzione.noAct:
+ break;
+ default:
+ break;
+ }
+#endif
+ mod_btnComandi1.updateBtn();
+ }
+ ///
+ /// eseguo il comando
+ ///
+ private void eseguiComando()
+ {
+ // in primis: sono in esecuzione, x cui il comando è valido...
+ string msg2show = "";
+ string currState = "";
+#if false
+ DS_applicazione.IstObjRow rigaIstObj;
+ // calcolo lo stato dell'oggetto...
+ try
+ {
+ rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(mod_barcode1.comandoRegistrato.valore)[0];
+ currState = rigaIstObj.CodStato;
+ }
+ catch
+ {
+ }
+ tipoEsito esito = stateMachine.st.doAction("E_Stati", mod_barcode1.comandoRegistrato.valore, currState, mod_barcode1.comandoRegistrato.prevCmdIn);
+ if (esito == tipoEsito.ok)
+ {
+ msg2show = string.Format("{0}: {1}", mod_barcode1.comandoRegistrato.valore, user_std.UtSn.Traduci("chgStateDone"));
+ }
+ else if (esito == tipoEsito.error)
+ {
+ msg2show = user_std.UtSn.Traduci("cannotStateChange");
+ }
+ else
+ {
+ msg2show = user_std.UtSn.Traduci("unknownCmd");
+ }
+#endif
+ // reset e mostro output...
+ mod_barcode1.resetMe();
+ if (msg2show != "")
+ {
+ mod_barcode1.txtInput2show = msg2show;
+ }
+ }
+
+ protected void btnReload_Click(object sender, EventArgs e)
+ {
+ resetCache();
+ }
+
+ private void resetCache()
+ {
+ // resetto tutto!
+ comandiAmmessiBCode = new Dictionary();
+ valoriAmmessiBCode = new Dictionary();
+ lastDataRefresh = DateTime.Now.AddDays(-1);
+ }
+
+ protected void txtCacheSec_TextChanged(object sender, EventArgs e)
+ {
+ resetCache();
+ }
+
+ protected void txtNumDD_TextChanged(object sender, EventArgs e)
+ {
+ resetCache();
}
}
-}
\ No newline at end of file
+}
+
diff --git a/C-TRACK/compilerconfig.json b/C-TRACK/compilerconfig.json
new file mode 100644
index 0000000..b7b558e
--- /dev/null
+++ b/C-TRACK/compilerconfig.json
@@ -0,0 +1,10 @@
+[
+ {
+ "outputFile": "Content/fonts.css",
+ "inputFile": "Content/fonts.less"
+ },
+ {
+ "outputFile": "Content/Style.css",
+ "inputFile": "Content/Style.less"
+ }
+]
\ No newline at end of file
diff --git a/C-TRACK/compilerconfig.json.defaults b/C-TRACK/compilerconfig.json.defaults
new file mode 100644
index 0000000..c75eb7d
--- /dev/null
+++ b/C-TRACK/compilerconfig.json.defaults
@@ -0,0 +1,49 @@
+{
+ "compilers": {
+ "less": {
+ "autoPrefix": "",
+ "cssComb": "none",
+ "ieCompat": true,
+ "strictMath": false,
+ "strictUnits": false,
+ "relativeUrls": true,
+ "rootPath": "",
+ "sourceMapRoot": "",
+ "sourceMapBasePath": "",
+ "sourceMap": false
+ },
+ "sass": {
+ "includePath": "",
+ "indentType": "space",
+ "indentWidth": 2,
+ "outputStyle": "nested",
+ "Precision": 5,
+ "relativeUrls": true,
+ "sourceMapRoot": "",
+ "sourceMap": false
+ },
+ "stylus": {
+ "sourceMap": false
+ },
+ "babel": {
+ "sourceMap": false
+ },
+ "coffeescript": {
+ "bare": false,
+ "runtimeMode": "node",
+ "sourceMap": false
+ }
+ },
+ "minifiers": {
+ "css": {
+ "enabled": true,
+ "termSemicolons": true,
+ "gzip": false
+ },
+ "javascript": {
+ "enabled": true,
+ "termSemicolons": true,
+ "gzip": false
+ }
+ }
+}
\ No newline at end of file
diff --git a/C-TRACK/favicon.ico b/C-TRACK/favicon.ico
index f309759..4f0e0ad 100644
Binary files a/C-TRACK/favicon.ico and b/C-TRACK/favicon.ico differ