diff --git a/MP-TAB/BasePage.cs b/MP-TAB/BasePage.cs index b6f0a54b..bc62a3a1 100644 --- a/MP-TAB/BasePage.cs +++ b/MP-TAB/BasePage.cs @@ -54,9 +54,7 @@ namespace MoonProTablet { get { - bool answ = false; - answ = DataLayerObj.isMaster(idxMacchina); - return answ; + return DataLayerObj.isMaster(idxMacchina); } } @@ -67,9 +65,7 @@ namespace MoonProTablet { get { - bool answ = false; - answ = DataLayerObj.isMulti(idxMacchina); - return answ; + return DataLayerObj.isMulti(idxMacchina); } } @@ -80,9 +76,7 @@ namespace MoonProTablet { get { - bool answ = false; - answ = DataLayerObj.isSlave(idxMacchina); - return answ; + return DataLayerObj.isSlave(idxMacchina); } } diff --git a/MP-TAB/WebUserControls/BaseUserControl.cs b/MP-TAB/WebUserControls/BaseUserControl.cs index 611924b5..7d40dd73 100644 --- a/MP-TAB/WebUserControls/BaseUserControl.cs +++ b/MP-TAB/WebUserControls/BaseUserControl.cs @@ -7,14 +7,61 @@ using System.Web; namespace MoonProTablet.WebUserControls { - public class BaseUserControl : System.Web.UI.UserControl //SteamWare.UserControl // + public class BaseUserControl : System.Web.UI.UserControl //SteamWare.UserControl // { - public string encodeAuthKey(object plainUserAuthKey) + #region Internal Fields + + /// + /// classe MapoDB x uso locale + /// + internal MapoDb.MapoDb controllerMapo = new MapoDb.MapoDb(); + + /// + /// Oggetto datalayer specifico + /// + internal DataLayer DataLayerObj = new DataLayer(); + + #endregion Internal Fields + + #region Internal Properties + + /// + /// Verifica se la macchina MAIN sia MASTER + /// + internal bool isMaster { - string answ = ""; - answ = SteamCrypto.EncryptString(plainUserAuthKey.ToString(), memLayer.ML.CRS("cookieName")); - return answ; + get + { + return DataLayerObj.isMaster(idxMacchina); + } } + + /// + /// Verifica se la macchina MAIN sia MULTI (da DatiMacchina / redis...) + /// + internal bool isMulti + { + get + { + return DataLayerObj.isMulti(idxMacchina); + } + } + + /// + /// Verifica se la macchina MAIN sia SLAVE + /// + internal bool isSlave + { + get + { + return DataLayerObj.isSlave(idxMacchina); + } + } + + #endregion Internal Properties + + #region Public Properties + /// /// idx macchina selezionata /// @@ -29,42 +76,142 @@ namespace MoonProTablet.WebUserControls memLayer.ML.setSessionVal("IdxMacchina", value); } } + /// - /// Oggetto datalayer specifico + /// idxOdl corrente in sessione /// - internal DataLayer DataLayerObj = new DataLayer(); - /// - /// classe MapoDB x uso locale - /// - internal MapoDb.MapoDb controllerMapo = new MapoDb.MapoDb(); - /// - /// effettua traduzione del lemma - /// - /// - /// - public string traduci(string lemma) + public int idxOdl { - return user_std.UtSn.Traduci(lemma); + get + { + return memLayer.ML.IntSessionObj("idxODL"); + } + set + { + memLayer.ML.setSessionVal("idxODL", value); + } } + /// - /// effettua traduzione del lemma + /// Sotto sistema (macchina) selezionato in sessione /// - /// - /// - public string traduci(object _lemma) + public string subMaccSel { - _lemma = _lemma == null ? "" : _lemma; - return user_std.UtSn.Traduci(_lemma.ToString()); + get + { + return memLayer.ML.StringSessionObj("subMaccSel"); + } + set + { + memLayer.ML.setSessionVal("subMaccSel", value); + } } + /// - /// effettua traduzione in inglese del lemma + /// titolo pagina /// - /// - /// - public string traduciEn(string lemma) + public string titolo { - return user_std.UtSn.TraduciEn(lemma); + get + { + return devicesAuthProxy.getPage(Request.Url); + } } + + /// + /// stringa UID univoca + /// + public string uid + { + get + { + return this.UniqueID.Replace("$", "_").Replace("-", "_"); + } + } + + #endregion Public Properties + + #region Protected Methods + + /// + /// conversione da tempo minuti centesimali a minuti/secondi + /// + /// + /// + protected TimeSpan minCent2Sec(decimal valore) + { + TimeSpan answ = new TimeSpan(0, 0, 1); + try + { + answ = new TimeSpan(0, Convert.ToInt32(valore), Convert.ToInt32((valore - Convert.ToInt32(valore)) * 60)); + } + catch + { } + return answ; + } + + /// + /// conversione da tempo minuti/secondi a minuti centesimali + /// + /// + /// + protected decimal minSec2Cent(TimeSpan valore) + { + Decimal answ = 0; + try + { + answ = Math.Round((valore.Minutes + (decimal)valore.Seconds / 60), 3); + } + catch + { } + return answ; + } + + #endregion Protected Methods + + #region Public Methods + + public string encodeAuthKey(object plainUserAuthKey) + { + string answ = ""; + answ = SteamCrypto.EncryptString(plainUserAuthKey.ToString(), memLayer.ML.CRS("cookieName")); + return answ; + } + + /// + /// fomratta durata in minuti/ore/gg a seconda del totale... + /// + /// + /// + public string formatDurata(object min) + { + return utility.formatDurata(min); + } + + /// + /// url completo immagine icona + /// + /// + /// + public string ImgUrlIcon(object url) + { + return string.Format("./images/iconDic/{0}.png", url); + } + + /// + /// url completo immagine + /// + /// + /// + public string ImgUrlMacc(object url) + { + if (string.IsNullOrEmpty(url.ToString())) + { + url = "empty.png"; + } + return string.Format("./images/macchine/{0}", url); + } + public string TCMinSec(object _TC) { string TC_MinSec = ""; @@ -83,75 +230,38 @@ namespace MoonProTablet.WebUserControls { } return TC_MinSec; } + /// - /// Sotto sistema (macchina) selezionato in sessione + /// effettua traduzione del lemma /// - public string subMaccSel - { - get - { - return memLayer.ML.StringSessionObj("subMaccSel"); - } - set - { - memLayer.ML.setSessionVal("subMaccSel", value); - } - } - /// - /// idxOdl corrente in sessione - /// - public int idxOdl - { - get - { - return memLayer.ML.IntSessionObj("idxODL"); - } - set - { - memLayer.ML.setSessionVal("idxODL", value); - } - } - /// - /// url completo immagine - /// - /// + /// /// - public string ImgUrlMacc(object url) + public string traduci(string lemma) { - if (string.IsNullOrEmpty(url.ToString())) - { - url = "empty.png"; - } - return string.Format("./images/macchine/{0}", url); + return user_std.UtSn.Traduci(lemma); } + /// - /// url completo immagine icona + /// effettua traduzione del lemma /// - /// + /// /// - public string ImgUrlIcon(object url) + public string traduci(object _lemma) { - return string.Format("./images/iconDic/{0}.png", url); + _lemma = _lemma == null ? "" : _lemma; + return user_std.UtSn.Traduci(_lemma.ToString()); } + /// - /// titolo pagina + /// effettua traduzione in inglese del lemma /// - public string titolo - { - get - { - return devicesAuthProxy.getPage(Request.Url); - } - } - /// - /// fomratta durata in minuti/ore/gg a seconda del totale... - /// - /// + /// /// - public string formatDurata(object min) + public string traduciEn(string lemma) { - return utility.formatDurata(min); + return user_std.UtSn.TraduciEn(lemma); } + public string urlDisegno(object _codArticolo) { // default è ND... @@ -159,7 +269,6 @@ namespace MoonProTablet.WebUserControls // recupero da anagrafica articoli... try { - DS_ProdTempi.AnagArticoliRow riga = selData.mng.rigaArt(_codArticolo.ToString()); if (riga != null) { @@ -176,57 +285,7 @@ namespace MoonProTablet.WebUserControls } return outVal; } - /// - /// Verifica se la macchina MAIN sia MULTI (da DatiMacchina / redis...) - /// - internal bool isMulti - { - get - { - return DataLayerObj.isMulti(idxMacchina); - } - } - /// - /// stringa UID univoca - /// - public string uid - { - get - { - return this.UniqueID.Replace("$", "_").Replace("-", "_"); - } - } - /// - /// conversione da tempo minuti/secondi a minuti centesimali - /// - /// - /// - protected decimal minSec2Cent(TimeSpan valore) - { - Decimal answ = 0; - try - { - answ = Math.Round((valore.Minutes + (decimal)valore.Seconds / 60), 3); - } - catch - { } - return answ; - } - /// - /// conversione da tempo minuti centesimali a minuti/secondi - /// - /// - /// - protected TimeSpan minCent2Sec(decimal valore) - { - TimeSpan answ = new TimeSpan(0, 0, 1); - try - { - answ = new TimeSpan(0, Convert.ToInt32(valore), Convert.ToInt32((valore - Convert.ToInt32(valore)) * 60)); - } - catch - { } - return answ; - } + + #endregion Public Methods } } \ No newline at end of file diff --git a/MP-TAB/WebUserControls/mod_ODL.ascx.cs b/MP-TAB/WebUserControls/mod_ODL.ascx.cs index 19fca8e8..baa0357f 100644 --- a/MP-TAB/WebUserControls/mod_ODL.ascx.cs +++ b/MP-TAB/WebUserControls/mod_ODL.ascx.cs @@ -10,18 +10,354 @@ namespace MoonProTablet.WebUserControls { public partial class mod_ODL : BaseUserControl { - /// - /// registrato nuovo valore - /// - public event EventHandler eh_reqUpdate; - /// - /// Valore protected idxODL - /// - protected string _idxOdlMacc; + #region Protected Fields + /// /// Valore protected idxODL /// protected string _idxOdlAltraMacc; + + /// + /// Valore protected idxODL + /// + protected string _idxOdlMacc; + + #endregion Protected Fields + + #region Public Events + + /// + /// registrato nuovo valore + /// + public event EventHandler eh_reqUpdate; + + #endregion Public Events + + #region Protected Properties + + /// + /// Verifica chiave chkCloseOdl in tab Config + /// + protected bool chkCloseOdlVal + { + get + { + return memLayer.ML.cdvb("chkCloseOdl"); + } + } + + /// + /// Verifica (su tab config) se sia abilitata la gestione flusso RPO (Richieste - Promesse - ODL) + /// + protected bool enableRPO + { + get + { + return memLayer.ML.cdvb("enableRPO"); + } + } + + /// + /// Restituisce il codice IdxMacchina dell'altra tavola (se multi) altrimenti la stessa macchina... + /// + protected string idxMaccAltraTav + { + get + { + string answ = ""; + try + { + // verifico se SIA una tavola (ha char "#") + int iSharp = idxMacchinaFix.IndexOf('#'); + if (iSharp > 0) + { + // ora verifico SE ALTRA TAVOLA ha ODL... + string nomeTav = idxMacchinaFix.Substring(iSharp); + string altraTav = nomeTav.Substring(0, nomeTav.Length - 1); + altraTav += nomeTav.EndsWith("1") ? "2" : "1"; + // sistemo nome + answ = idxMacchinaFix.Replace(nomeTav, altraTav); + } + } + catch + { } + return answ; + } + } + + /// + /// Restituisce il codice IdxMacchina dell'impianto PARENT (se multi) altrimenti la stessa macchina... + /// + protected string idxMaccParent + { + get + { + string answ = ""; + // se è multi controllo + if (isMulti) + { + // verifico se SIA una tavola (ha char "#") + int iSharp = idxMacchinaFix.IndexOf('#'); + if (iSharp > 0) + { + // sistemo nome + answ = idxMacchinaFix.Substring(0, iSharp); + } + } + return answ; + } + } + + /// + /// valore INT di num Pz per Pallet... + /// + protected int PzPallet + { + get + { + int answ = 0; + try + { + answ = cmp_selPzPallet.pzPallet; + } + catch + { } + return answ; + } + set + { + cmp_selPzPallet.pzPallet = value; + } + } + + /// + /// Verifica chiave showChkCloseOdl in tab Config + /// + protected bool showChkCloseOdlVal + { + get + { + return memLayer.ML.cdvb("showChkCloseOdl"); + } + } + + /// + /// Verifica chiave showOdlProvv in tab Config + /// + protected bool showOdlProvvVal + { + get + { + return memLayer.ML.cdvb("showOdlProvv"); + } + } + + /// + /// Verifica visibilità btn riprendi ODL su 2° tavola SE: + /// - sia un impianto MULTI (= con + tavole) + /// - sia disattrezzata la tavola + /// - in tab congif: se sia abilitato la ripresa ODL sulla seconda tavola + /// - in tab config: sia il grace period + /// - NON SIANO passati i minuti indicati dalla chiusura + /// + protected bool showReopOdlTav + { + get + { + bool answ = false; + // se è multi controllo + if (isMulti) + { + // verifico se NON HA ODL... + if (emptyOdlMacc) + { + // verifico SE siamo nel gracePeriod + int gPeriod = memLayer.ML.cdvi("gPeriodReopenOdlTav"); + DateTime adesso = DateTime.Now; + DateTime dtChiusura = DateTime.Now.AddHours(-1); + try + { + dtChiusura = DataLayerObj.taODL.getLastByMacc(idxMacchinaFix)[0].DataFine; + } + catch + { } + + // ora verifico SE E SOLO SE è ANCORA in attrezzaggio + if (maccInAttr) + { + // ora verifico SE ALTRA TAVOLA ha ODL... + if (dtChiusura.AddMinutes(gPeriod) > adesso) + { + answ = memLayer.ML.cdvb("showReopenOdlTav"); + } + } + } + } + return answ; + } + } + + /// + /// Verifica visibilità btn split ODL su 2° tavola SE: + /// - sia un impianto MULTI (= con + tavole) + /// - sia già attrezzata la prima tavola + /// - in tab Congif: se sia abilitato lo split ODL sulla seconda tavola + /// - la macchina SIA ANCORA in attrezzaggio (2019.07.08) = 2 + /// + protected bool showSplitOdlOnTavVal + { + get + { + bool answ = false; + // se è multi controllo + if (isMulti) + { + // verifico se NON HA ODL ma ce l'ha altra tavola... + if (emptyOdlMacc) + { + // ora verifico SE ALTRA TAVOLA ha ODL... + if (!emptyOdlAltraMacc) + { + // ora verifico SE E SOLO SE è ANCORA in attrezzaggio + if (maccInAttr) + { + answ = memLayer.ML.cdvb("showSplitOdlOnTav"); + } + } + } + } + return answ; + } + } + + /// + /// Verifica se la tavola SIA in fase di attrezzaggio, ovvero SE: + /// - sia un impianto MULTI (= con + tavole) + /// - sia già attrezzata + /// + protected bool tavHasOdl + { + get + { + bool answ = false; + // se è multi controllo + if (isMulti) + { + answ = !emptyOdlMacc; + } + return answ; + } + } + + /// + /// valore decimal del TC richiesto... + /// + protected decimal TCRichAttr + { + get + { + decimal answ = 0; + try + { + answ = mod_tempoMSMC.tempoMC; + } + catch + { } + return answ; + } + set + { + mod_tempoMSMC.tempoMC = value; + } + } + + #endregion Protected Properties + + #region Public Properties + + /// + /// Cod articolo dell'ODL selezionato + /// + public string CodArtSel + { + get + { + string CodArticolo = ""; + try + { + CodArticolo = DataLayerObj.taODL.getByIdx(idxODLSel, false)[0].CodArticolo; + } + catch + { } + return CodArticolo; + } + } + + /// + /// Verifica se la macchina NON abbia ODL (valido, > 0) + /// + public bool emptyOdlAltraMacc + { + get + { + return (idxOdlAltraMacc == "" || idxOdlAltraMacc == "0"); + } + } + + /// + /// Verifica se la macchina NON abbia ODL (valido, > 0) + /// + public bool emptyOdlMacc + { + get + { + return (idxOdlMacc == "" || idxOdlMacc == "0"); + } + } + + /// + /// idx macchina selezionata + /// + public string idxMacchinaFix + { + get + { + string answ = ""; + try + { + answ = memLayer.ML.StringSessionObj(string.Format("idxMacchina-{0}", uid)); + } + catch + { } + return answ; + } + set + { + memLayer.ML.setSessionVal(string.Format("idxMacchina-{0}", uid), value); + hfIdxMacchina.Value = value; + cmp_newODL.idxMacchina = value; + } + } + + /// + /// IdxODL su ALTRA macchina (se multi) + /// + public string idxOdlAltraMacc + { + get + { + if (_idxOdlAltraMacc == null) + { + _idxOdlAltraMacc = DataLayerObj.currODL(idxMaccAltraTav, true); + } + return _idxOdlAltraMacc; + } + set + { + _idxOdlAltraMacc = value; + } + } + /// /// IdxODL sulla macchina /// @@ -40,22 +376,60 @@ namespace MoonProTablet.WebUserControls _idxOdlMacc = value; } } + /// - /// IdxODL su ALTRA macchina (se multi) + /// codice odl selezionato /// - public string idxOdlAltraMacc + public int idxODLSel { get { - if (_idxOdlAltraMacc == null) + int answ = 0; + try { - _idxOdlAltraMacc = DataLayerObj.currODL(idxMaccAltraTav, true); + answ = Convert.ToInt32(ddlODL.SelectedValue); } - return _idxOdlAltraMacc; + catch + { } + return answ; + } + } + + /// + /// Determina se sia abilitato il controllo x editing + /// + public bool isEnabled + { + get + { + bool answ = false; + try + { + answ = memLayer.ML.BoolSessionObj(string.Format("isEnabled-{0}", uid)); + } + catch + { } + return answ; } set { - _idxOdlAltraMacc = value; + memLayer.ML.setSessionVal(string.Format("isEnabled-{0}", uid), value); + } + } + + /// + /// Testo x button creazione nuovo ODL + /// + public string lblCreaOdl + { + get + { + string answ = "CREAZIONE ODL PROVVISORIO"; + if (cmp_newODL.Visible) + { + answ = "NASCONDI creazione ODL provvisorio"; + } + return answ; } } @@ -86,353 +460,10 @@ namespace MoonProTablet.WebUserControls return answ; } } - /// - /// Verifica se la macchina NON abbia ODL (valido, > 0) - /// - public bool emptyOdlMacc - { - get - { - return (idxOdlMacc == "" || idxOdlMacc == "0"); - } - } - /// - /// Verifica se la macchina NON abbia ODL (valido, > 0) - /// - public bool emptyOdlAltraMacc - { - get - { - return (idxOdlAltraMacc == "" || idxOdlAltraMacc == "0"); - } - } - /// - /// Verifica visibilità btn split ODL su 2° tavola SE: - /// - sia un impianto MULTI (= con + tavole) - /// - sia già attrezzata la prima tavola - /// - in tab Congif: se sia abilitato lo split ODL sulla seconda tavola - /// - la macchina SIA ANCORA in attrezzaggio (2019.07.08) = 2 - /// - protected bool showSplitOdlOnTavVal - { - get - { - bool answ = false; - // se è multi controllo - if (isMulti) - { - // verifico se NON HA ODL ma ce l'ha altra tavola... - if (emptyOdlMacc) - { - // ora verifico SE ALTRA TAVOLA ha ODL... - if (!emptyOdlAltraMacc) - { - // ora verifico SE E SOLO SE è ANCORA in attrezzaggio - if (maccInAttr) - { - answ = memLayer.ML.cdvb("showSplitOdlOnTav"); - } - } - } - } - return answ; - } - } - /// - /// Verifica visibilità btn riprendi ODL su 2° tavola SE: - /// - sia un impianto MULTI (= con + tavole) - /// - sia disattrezzata la tavola - /// - in tab congif: se sia abilitato la ripresa ODL sulla seconda tavola - /// - in tab config: sia il grace period - /// - NON SIANO passati i minuti indicati dalla chiusura - /// - protected bool showReopOdlTav - { - get - { - bool answ = false; - // se è multi controllo - if (isMulti) - { - // verifico se NON HA ODL... - if (emptyOdlMacc) - { - // verifico SE siamo nel gracePeriod - int gPeriod = memLayer.ML.cdvi("gPeriodReopenOdlTav"); - DateTime adesso = DateTime.Now; - DateTime dtChiusura = DateTime.Now.AddHours(-1); - try - { - dtChiusura = DataLayerObj.taODL.getLastByMacc(idxMacchinaFix)[0].DataFine; - } - catch - { } - // ora verifico SE E SOLO SE è ANCORA in attrezzaggio - if (maccInAttr) - { - // ora verifico SE ALTRA TAVOLA ha ODL... - if (dtChiusura.AddMinutes(gPeriod) > adesso) - { - answ = memLayer.ML.cdvb("showReopenOdlTav"); - } - } - } - } - return answ; - } - } - /// - /// Verifica se la tavola SIA in fase di attrezzaggio, ovvero SE: - /// - sia un impianto MULTI (= con + tavole) - /// - sia già attrezzata - /// - protected bool tavHasOdl - { - get - { - bool answ = false; - // se è multi controllo - if (isMulti) - { - answ = !emptyOdlMacc; - } - return answ; - } - } - /// - /// Restituisce il codice IdxMacchina dell'altra tavola (se multi) altrimenti la stessa macchina... - /// - protected string idxMaccAltraTav - { - get - { - string answ = ""; - try - { - // verifico se SIA una tavola (ha char "#") - int iSharp = idxMacchinaFix.IndexOf('#'); - if (iSharp > 0) - { - // ora verifico SE ALTRA TAVOLA ha ODL... - string nomeTav = idxMacchinaFix.Substring(iSharp); - string altraTav = nomeTav.Substring(0, nomeTav.Length - 1); - altraTav += nomeTav.EndsWith("1") ? "2" : "1"; - // sistemo nome - answ = idxMacchinaFix.Replace(nomeTav, altraTav); - } - } - catch - { } - return answ; - } - } - /// - /// Restituisce il codice IdxMacchina dell'impianto PARENT (se multi) altrimenti la stessa macchina... - /// - protected string idxMaccParent - { - get - { - string answ = ""; - // se è multi controllo - if (isMulti) - { - // verifico se SIA una tavola (ha char "#") - int iSharp = idxMacchinaFix.IndexOf('#'); - if (iSharp > 0) - { - // sistemo nome - answ = idxMacchinaFix.Substring(0, iSharp); - } - } - return answ; - } - } + #endregion Public Properties - /// - /// Verifica chiave chkCloseOdl in tab Config - /// - protected bool chkCloseOdlVal - { - get - { - return memLayer.ML.cdvb("chkCloseOdl"); - } - } - /// - /// Verifica chiave showChkCloseOdl in tab Config - /// - protected bool showChkCloseOdlVal - { - get - { - return memLayer.ML.cdvb("showChkCloseOdl"); - } - } - /// - /// Verifica chiave showOdlProvv in tab Config - /// - protected bool showOdlProvvVal - { - get - { - return memLayer.ML.cdvb("showOdlProvv"); - } - } - - /// - /// idx macchina selezionata - /// - public string idxMacchinaFix - { - get - { - string answ = ""; - try - { - answ = memLayer.ML.StringSessionObj(string.Format("idxMacchina-{0}", uid)); - } - catch - { } - return answ; - } - set - { - memLayer.ML.setSessionVal(string.Format("idxMacchina-{0}", uid), value); - hfIdxMacchina.Value = value; - cmp_newODL.idxMacchina = value; - } - } - /// - /// Determina se sia abilitato il controllo x editing - /// - public bool isEnabled - { - get - { - bool answ = false; - try - { - answ = memLayer.ML.BoolSessionObj(string.Format("isEnabled-{0}", uid)); - } - catch - { } - return answ; - } - set - { - memLayer.ML.setSessionVal(string.Format("isEnabled-{0}", uid), value); - } - } - /// - /// codice odl selezionato - /// - public int idxODLSel - { - get - { - int answ = 0; - try - { - answ = Convert.ToInt32(ddlODL.SelectedValue); - } - catch - { } - return answ; - } - } - /// - /// Cod articolo dell'ODL selezionato - /// - public string CodArtSel - { - get - { - string CodArticolo = ""; - try - { - CodArticolo = DataLayerObj.taODL.getByIdx(idxODLSel, false)[0].CodArticolo; - } - catch - { } - return CodArticolo; - } - } - /// - /// avvio pagina - /// - /// - /// - protected void Page_Load(object sender, EventArgs e) - { - if (!Page.IsPostBack) - { - // fix modo tempo... - if (memLayer.ML.cdvb("TAB_TC_MinSec")) - { - mod_tempoMSMC.modoTempo = timeMode.MS; - } - else - { - mod_tempoMSMC.modoTempo = timeMode.MC; - } - } - cmp_newODL.eh_newVal += Cmp_newODL_eh_newVal; - } - /// - /// Verifica (su tab config) se sia abilitata la gestione flusso RPO (Richieste - Promesse - ODL) - /// - protected bool enableRPO - { - get - { - return memLayer.ML.cdvb("enableRPO"); - } - } - - private void Cmp_newODL_eh_newVal(object sender, EventArgs e) - { - // creato nuovo ODL, faccio refresh ricaricando pagina! - Response.Redirect("~/ODL"); - } - - public void hideAll() - { - divDettOdl.Visible = false; - } - - public void checkAll() - { - lblOut.Text = ""; - checkBtnStatus(); - chkCloseOdl.Checked = chkCloseOdlVal; - chkCloseOdl.Visible = showChkCloseOdlVal; - divOdlProvv.Visible = showOdlProvvVal; - divOpRiattr.Visible = (showSplitOdlOnTavVal || showReopOdlTav); - lbtSplitOdlSuTav.Visible = showSplitOdlOnTavVal; - lbtReopOdlSuTav.Visible = showReopOdlTav; - lbtFixEndSetup.Visible = !maccInAttr && memLayer.ML.CRB("OptEnableFixSetup"); - } - /// - /// Sistema CSS x status enabled/disabled - /// - /// - protected void fixWCtrStatus(object lbtn) - { - // tolgo (eventuale) classe - try - { - ((WebControl)lbtn).CssClass = ((WebControl)lbtn).CssClass.Replace("disabled", ""); - // se richiesto metto disabled... - if (!((WebControl)lbtn).Enabled) - { - ((WebControl)lbtn).CssClass += " disabled"; - } - } - catch - { } - } + #region Private Methods /// /// controlla stato bottoni abilitato @@ -523,9 +554,70 @@ namespace MoonProTablet.WebUserControls divWarningArt.Visible = showWarn; } } + + private void checkDDL() + { + if (ddlODL.SelectedIndex > 0) + { + showNoteTC(true); + updateTempoTc(idxODLSel, false); + updateNoteTC(idxODLSel); + } + else + { + showNoteTC(false); + } + } + + private void Cmp_newODL_eh_newVal(object sender, EventArgs e) + { + // creato nuovo ODL, faccio refresh ricaricando pagina! + Response.Redirect("~/ODL"); + } + + /// + /// verifica se sia necessario confermare la prod dell'ODL precedente prima di chiudere e lo fa in automatico... + /// + /// boolean, true = deve confermare 0 pezzi (es. in setup) + private void confermaProdOdl(bool confZero) + { + // 2016.11.17 NOTA: introdotti scarti, li confermiamo SEMPRE a zero se in setup, però da valutare SE a FINE ATTREZZAGGIO chiedere num pezzi e num scarti (saldo zero buoni) da inserire... + if (confZero) + { + // confermo produzione ZERO pezzi (in setup) + DataLayerObj.confermaProdMacchina(idxMacchinaFix, memLayer.ML.CRI("modoConfProd"), 0, 0, DateTime.Now); + } + else // se NON sono in setup verifico se ho pz da confermare + { + // recupero pz da confermare + DS_ProdTempi.stp_PzProd_getByMacchinaRow rigaProd = DataLayerObj.taPzProd2conf.GetData(idxMacchinaFix)[0]; + if (rigaProd.pezziNonConfermati > 0) + { + DataLayerObj.confermaProdMacchina(idxMacchinaFix, memLayer.ML.CRI("modoConfProd"), rigaProd.pezziNonConfermati, 0, DateTime.Now); + } + } + } + + /// + /// sistema buttons split + /// + /// + private void fixSplitBtn(bool splitOdl) + { + lbtShowSplitODL.Visible = !splitOdl; + chkCloseOdl.Visible = !splitOdl; + lbtSplitODL.Visible = splitOdl; + showNoteTC(splitOdl); + ddlODL.Visible = !splitOdl; + chkTutti.Visible = !splitOdl; + lbtStartAttr.Visible = !splitOdl; + lbtStartProd.Visible = !splitOdl; + lbtEndProd.Visible = !splitOdl; + } + /// /// processa evento richiesto - /// + /// /// /// /// @@ -553,73 +645,351 @@ namespace MoonProTablet.WebUserControls logger.lg.scriviLog(userMsg, tipoLog.INFO); checkBtnStatus(); } + /// - /// valore decimal del TC richiesto... + /// mostra/nasconde note /// - protected decimal TCRichAttr + private void showNoteTC(bool show) { - get + // mostra/nasconde note da compilare + divTempo.Visible = show; + divNote.Visible = show; + divPzPallet.Visible = show; + lbtStartAttr.Visible = show; + cmp_dettODL.idxODLSel = idxODLSel; + divDettOdl.Visible = show && idxODLSel > 0; + // se abilitato da config su DB mostro selezione del numPzPallet... + cmp_selPzPallet.enableSet = memLayer.ML.CRB("enableTabSetPzPallet"); + } + + /// + /// aggiorna note ODL + /// + /// + private void updateNoteTC(int idxOdl) + { + string testo = ""; + if (idxOdl > 0) { - decimal answ = 0; try { - answ = mod_tempoMSMC.tempoMC; + testo = DataLayerObj.taODL.getByIdx(idxOdl, false)[0].Note; } catch { } - return answ; - } - set - { - mod_tempoMSMC.tempoMC = value; } + txtNote.Text = testo; } + /// - /// valore INT di num Pz per Pallet... + /// update TC mostrato /// - protected int PzPallet + /// idx dell'ODL / PODL + /// + private void updateTempoTc(int idxOdlPodl, bool inAttr) { - get + // riporta TC + decimal _TCRichAttr = 0; + int pzPallet = 1; + if (enableRPO && !inAttr) { - int answ = 0; - try - { - answ = cmp_selPzPallet.pzPallet; - } - catch - { } - return answ; + var rigaProm = DataLayerObj.taPODL.getByKey(idxOdlPodl)[0]; + _TCRichAttr = rigaProm.TCAssegnato; + pzPallet = rigaProm.PzPallet; } - set + else { - cmp_selPzPallet.pzPallet = value; - } - } - /// - /// valore decimal del TC ASSEGNATO... - /// - protected decimal TCAssegnato(int idxODL) - { - decimal answ = 0; - try - { - if (enableRPO) + DS_ProdTempi.ODLRow rigaOdl = DataLayerObj.taODL.getByIdx(idxOdlPodl, false)[0]; + if (rigaOdl.TCRichAttr > 0) { - // leggo info da promessa... - var rigaProm = DataLayerObj.taPODL.getByKey(idxODL)[0]; - answ = rigaProm.TCAssegnato; + _TCRichAttr = rigaOdl.TCRichAttr; } else { - // leggo idxOdl da ultimo odl attivo x macchina - DS_ProdTempi.ODLRow rigaOdl = DataLayerObj.taODL.getByIdx(idxODL, false)[0]; - answ = rigaOdl.TCAssegnato; + _TCRichAttr = rigaOdl.TCAssegnato; + } + pzPallet = rigaOdl.PzPallet; + } + // aggiorno dati! + TCRichAttr = _TCRichAttr; + PzPallet = pzPallet; + } + + #endregion Private Methods + + #region Protected Methods + + protected void chkTutti_CheckedChanged(object sender, EventArgs e) + { + checkBtnStatus(); + } + + /// + /// selezionato un ODL mostro note/tempo da validare + /// + /// + /// + protected void ddlODL_SelectedIndexChanged(object sender, EventArgs e) + { + checkDDL(); + } + + /// + /// Sistema CSS x status enabled/disabled + /// + /// + protected void fixWCtrStatus(object lbtn) + { + // tolgo (eventuale) classe + try + { + ((WebControl)lbtn).CssClass = ((WebControl)lbtn).CssClass.Replace("disabled", ""); + // se richiesto metto disabled... + if (!((WebControl)lbtn).Enabled) + { + ((WebControl)lbtn).CssClass += " disabled"; } } catch { } - return answ; } + + protected void lbtConfNewRevProd_Click(object sender, EventArgs e) + { + // chiamo stored x allineare revProd a revUT + string CodArticolo = DataLayerObj.taODL.getByIdx(idxODLSel, false)[0].CodArticolo; + DataLayerObj.taAnagArt.setNewRev(CodArticolo); + checkBtnStatus(); + } + + /// + /// fine prod + /// + /// + /// + protected void lbtEndProd_Click(object sender, EventArgs e) + { + // leggo idxOdl da ultimo odl attivo x macchina + int idxODL = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0].IdxODL; + int idxEvento = 7; // !!!HARD CODED + + // confermo prod vecchio ODL + confermaProdOdl(false); + + // se chk flaggato ovvero richiesta di chiudere ODL procedo come prima (chiudendo ODL senza averne altri...) + if (chkCloseOdl.Checked) + { + // aggiungo try/catch x capire se sia qui che si "impasta" in chiusura ODL + try + { + // processo x macchina selezionata + DataLayerObj.taODL.fineProd(idxODL, idxMacchinaFix); + string evText = "Registrata fine produzione per ODL {0}"; + StringBuilder sb = new StringBuilder(); + sb.AppendLine(String.Format(evText, idxODL)); + processaEvento(idxMacchinaFix, idxEvento, sb.ToString(), idxODL); + // se è multi processo ANCHE x altra tavola... + if (isMulti) + { + sb.AppendLine("---"); + int idxOdlAltra = 0; + string _idxOdl = idxOdlAltraMacc; + int.TryParse(_idxOdl, out idxOdlAltra); + DataLayerObj.taODL.fineProd(idxOdlAltra, idxMaccAltraTav); + sb.AppendLine(String.Format(evText, idxOdlAltra)); + processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra); + } + // se è master --> chiamo update child! + if (isMaster) + { + DataLayerObj.taODL.fixMachineSlave(idxMacchina, 30, 1); + } + // riporto stringa + lblOut.Text = sb.ToString().Replace("---", "
"); + } + catch (Exception exc) + { + logger.lg.scriviLog(string.Format("Eccezione in operazione chiusura ODL! {0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); + Response.Redirect("~/DettaglioMacchina.aspx"); + } + } + // altrimenti split ODL x completare IN FUTURO la produzione... + else + { + try + { + // effettuo split su nuovo ODL + DataLayerObj.taODL.splitODL(idxODL, DataLayerObj.MatrOpr, idxMacchinaFix, TCAssegnato(idxODL), PzPallet, string.Format("Fine Produzione, Sospensione ODL {0}, generato residuo con pari TCiclo: {1}", idxODL, TCAssegnato(idxODL)), false); + // processo chiusura setup + processaEvento(idxMacchinaFix, idxEvento, String.Format("Registrata fine produzione per ODL {0}, nuovo ODL per quantità residua", idxODL), idxODL); + + // se è multi processo ANCHE x altra tavola... + if (isMulti) + { + int idxOdlAltra = 0; + string _idxOdl = idxOdlAltraMacc; + int.TryParse(_idxOdl, out idxOdlAltra); + // effettuo split su nuovo ODL + DataLayerObj.taODL.splitODL(idxOdlAltra, DataLayerObj.MatrOpr, idxMaccAltraTav, TCAssegnato(idxOdlAltra), PzPallet, string.Format("Fine Produzione, Sospensione ODL {0}, generato residuo con pari TCiclo: {1}", idxOdlAltra, TCAssegnato(idxOdlAltra)), false); + // processo chiusura setup + processaEvento(idxMaccAltraTav, idxEvento, String.Format("Registrata fine produzione per ODL {0}, nuovo ODL per quantità residua", idxOdlAltra), idxOdlAltra); + } + // se è master --> chiamo update child! + if (isMaster) + { + DataLayerObj.taODL.fixMachineSlave(idxMacchina, 30, 1); + } + // sistemo buttons! + bool splitOdl = false; + fixSplitBtn(splitOdl); + } + catch (Exception exc) + { + logger.lg.scriviLog(string.Format("Eccezione in operazione Chiusura + Split ODL su nuovo! {0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); + Response.Redirect("~/DettaglioMacchina.aspx"); + } + } + // resetto ODL su redis... + DataLayerObj.emptyCurrODL(idxMacchinaFix); + // aggiorno visualizzazione + checkAll(); + // sollevo evento! + if (eh_reqUpdate != null) + { + eh_reqUpdate(this, new EventArgs()); + } + } + + protected void lbtFixEndSetup_Click(object sender, EventArgs e) + { + string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now); + string outData = $"TS:{ts}|MATR:{DataLayerObj.MatrOpr}|ODL:{idxOdlMacc}"; + DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.fixStopSetup, outData); + outData = "Inserita richiesta invio Fix chiusura attrezzaggio " + outData; + lblOut.Text = outData; + } + + /// + /// Effettua ripresa ODL su tavola + /// + /// + /// + protected void lbtReopOdlSuTav_Click(object sender, EventArgs e) + { + // chiamo stored x riprendere ODL (toglie data chiusura...) + DS_ProdTempi.ODLDataTable tabRes = DataLayerObj.taODL.reopenGetLast(idxMacchinaFix); + if (tabRes.Rows.Count > 0) + { + var riga = tabRes[0]; + // messaggio utente + string evText = "Registrato riapertura ODL {0} | art {1}"; + StringBuilder sb = new StringBuilder(); + sb.AppendLine(String.Format(evText, riga.IdxODL, riga.CodArticolo)); + lblOut.Text = sb.ToString(); + } + // update buttons... + checkAll(); + // sollevo evento! + if (eh_reqUpdate != null) + { + eh_reqUpdate(this, new EventArgs()); + } + } + + /// + /// toggle visualizzazione creazioen ODL provvisorio + /// + /// + /// + protected void lbtShowCreaOdlProvv_Click(object sender, EventArgs e) + { + cmp_newODL.Visible = !cmp_newODL.Visible; + } + + /// + /// mostra dati ed opzione x split ODL + /// + /// + /// + protected void lbtShowSplitODL_Click(object sender, EventArgs e) + { + bool splitOdl = true; + fixSplitBtn(splitOdl); + // recupero current idx + int currODL = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0].IdxODL; + updateTempoTc(currODL, true); + updateNoteTC(currODL); + } + + /// + /// split ODL con creazione nuovo ODL + /// + /// + /// + protected void lbtSplitODL_Click(object sender, EventArgs e) + { + // chiamo stored che genera nuovo ODL, mette note e tempo, chiude vecchi e assegna nuovo... + int currODL = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0].IdxODL; + int idxEvento = 1; // !!!HARD CODED + // controllo se TC è valorizzato.. + if (TCRichAttr == 0) + { + mod_tempoMSMC.checkTC(); + } + + // confermo prod vecchio ODL + confermaProdOdl(false); + + // effettuo split su nuovo ODL + DataLayerObj.taODL.splitODL(currODL, DataLayerObj.MatrOpr, idxMacchinaFix, TCRichAttr, PzPallet, txtNote.Text, true); + + // resetto ODL su redis... + DataLayerObj.emptyCurrODL(idxMacchinaFix); + + // invio email! + DataLayerObj.sendWarnTcChangeReq(memLayer.ML.CRS("_adminEmail")); + // processo chiusura setup + processaEvento(idxMacchinaFix, idxEvento, String.Format("Registrato Riattrezzaggio ODL (old: {0})", currODL), currODL); + // sistemo buttons! + bool splitOdl = false; + fixSplitBtn(splitOdl); + + // sollevo evento! + if (eh_reqUpdate != null) + { + eh_reqUpdate(this, new EventArgs()); + } + } + + /// + /// Effettua split ODL da ALTRA tavola su tav corrente + /// + /// + /// + protected void lbtSplitOdlSuTav_Click(object sender, EventArgs e) + { + // chiamo stored x splittare ODL... + int idxOdlAltra = 0; + int.TryParse(idxOdlAltraMacc, out idxOdlAltra); + // se ho trovato... + if (idxOdlAltra > 0) + { + DataLayerObj.taODL.dividiDaAltraTav(idxOdlAltra, DataLayerObj.MatrOpr, idxMacchinaFix); + // messaggio utente + string evText = "Registrata inizio attrezzaggio da split ODL {0} (come da altra tavola)"; + StringBuilder sb = new StringBuilder(); + sb.AppendLine(String.Format(evText, idxOdlAltra)); + lblOut.Text = sb.ToString(); + } + // update button x setup da altra tavola... + checkAll(); + // sollevo evento! + if (eh_reqUpdate != null) + { + eh_reqUpdate(this, new EventArgs()); + } + } + /// /// dichiara inizio attrezzaggio ODL indicato.. /// @@ -633,8 +1003,8 @@ namespace MoonProTablet.WebUserControls * - ogni volta che si fa setup LEADER --> si ripete su impianti FOLLOWER (eventi!!!) * - viene fatto reset contapezzi sui follower (+ altre operazioni opzionali, ES imposstazione nome commessa, quantità, articolo...) * - viene fatto reset + nuovo ODL (con stessi articoli e quantità) su follower, SENZA avere gestione x ODL di un codice esterno (quindi registra TUTTO ma NON RITORNERA' dati on avendo link verso esterno) - * - serve NUOVA TABELLA delle macchine LEADER | FOLLOWER (1:n) e gestione da MP/IO - * + * - serve NUOVA TABELLA delle macchine LEADER | FOLLOWER (1:n) e gestione da MP/IO + * ***************************************************/ bool inAttr = false; @@ -643,7 +1013,7 @@ namespace MoonProTablet.WebUserControls { try { - // controllo se NON SONO già in attrezzaggio... + // controllo se NON SONO già in attrezzaggio... DS_applicazione.StatoMacchineRow rigaStato = selData.mng.rigaStato(idxMaccParent); inAttr = (rigaStato.IdxStato == 2); } @@ -736,6 +1106,11 @@ namespace MoonProTablet.WebUserControls // update buttons... checkAll(); } + // se è master --> chiamo update child! + if (isMaster) + { + DataLayerObj.taODL.fixMachineSlave(idxMacchina, 30, 1); + } // resetto contapezzi redis... DataLayerObj.saveCounter(idxMacchinaFix, "0"); // imposto ODL su redis... @@ -751,6 +1126,7 @@ namespace MoonProTablet.WebUserControls eh_reqUpdate(this, new EventArgs()); } } + /// /// inizio prod /// @@ -776,7 +1152,7 @@ namespace MoonProTablet.WebUserControls // invio email! DataLayerObj.sendWarnTcChangeReq(memLayer.ML.CRS("_adminEmail")); } - // processo chiusura setup + // processo chiusura setup string evText = "Registrata inizio produzione per ODL {0}"; StringBuilder sb = new StringBuilder(); sb.AppendLine(String.Format(evText, idxODL)); @@ -793,6 +1169,11 @@ namespace MoonProTablet.WebUserControls sb.AppendLine(String.Format(evText, idxOdlAltra)); processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra); } + // se è master --> chiamo update child! + if (isMaster) + { + DataLayerObj.taODL.fixMachineSlave(idxMacchina, 30, 1); + } // riporto stringa lblOut.Text = sb.ToString().Replace("---", "
"); // nascondo note! @@ -805,367 +1186,53 @@ namespace MoonProTablet.WebUserControls eh_reqUpdate(this, new EventArgs()); } } + /// - /// fine prod + /// avvio pagina /// /// /// - protected void lbtEndProd_Click(object sender, EventArgs e) + protected void Page_Load(object sender, EventArgs e) { - // leggo idxOdl da ultimo odl attivo x macchina - int idxODL = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0].IdxODL; - int idxEvento = 7; // !!!HARD CODED - - // confermo prod vecchio ODL - confermaProdOdl(false); - - // se chk flaggato ovvero richiesta di chiudere ODL procedo come prima (chiudendo ODL senza averne altri...) - if (chkCloseOdl.Checked) + if (!Page.IsPostBack) { - // aggiungo try/catch x capire se sia qui che si "impasta" in chiusura ODL - try + // fix modo tempo... + if (memLayer.ML.cdvb("TAB_TC_MinSec")) { - // processo x macchina selezionata - DataLayerObj.taODL.fineProd(idxODL, idxMacchinaFix); - string evText = "Registrata fine produzione per ODL {0}"; - StringBuilder sb = new StringBuilder(); - sb.AppendLine(String.Format(evText, idxODL)); - processaEvento(idxMacchinaFix, idxEvento, sb.ToString(), idxODL); - // se è multi processo ANCHE x altra tavola... - if (isMulti) - { - sb.AppendLine("---"); - int idxOdlAltra = 0; - string _idxOdl = idxOdlAltraMacc; - int.TryParse(_idxOdl, out idxOdlAltra); - DataLayerObj.taODL.fineProd(idxOdlAltra, idxMaccAltraTav); - sb.AppendLine(String.Format(evText, idxOdlAltra)); - processaEvento(idxMaccAltraTav, idxEvento, String.Format(evText, idxOdlAltra), idxOdlAltra); - } - // riporto stringa - lblOut.Text = sb.ToString().Replace("---", "
"); - } - catch (Exception exc) - { - logger.lg.scriviLog(string.Format("Eccezione in operazione chiusura ODL! {0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); - Response.Redirect("~/DettaglioMacchina.aspx"); - } - } - // altrimenti split ODL x completare IN FUTURO la produzione... - else - { - try - { - // effettuo split su nuovo ODL - DataLayerObj.taODL.splitODL(idxODL, DataLayerObj.MatrOpr, idxMacchinaFix, TCAssegnato(idxODL), PzPallet, string.Format("Fine Produzione, Sospensione ODL {0}, generato residuo con pari TCiclo: {1}", idxODL, TCAssegnato(idxODL)), false); - // processo chiusura setup - processaEvento(idxMacchinaFix, idxEvento, String.Format("Registrata fine produzione per ODL {0}, nuovo ODL per quantità residua", idxODL), idxODL); - - // se è multi processo ANCHE x altra tavola... - if (isMulti) - { - int idxOdlAltra = 0; - string _idxOdl = idxOdlAltraMacc; - int.TryParse(_idxOdl, out idxOdlAltra); - // effettuo split su nuovo ODL - DataLayerObj.taODL.splitODL(idxOdlAltra, DataLayerObj.MatrOpr, idxMaccAltraTav, TCAssegnato(idxOdlAltra), PzPallet, string.Format("Fine Produzione, Sospensione ODL {0}, generato residuo con pari TCiclo: {1}", idxOdlAltra, TCAssegnato(idxOdlAltra)), false); - // processo chiusura setup - processaEvento(idxMaccAltraTav, idxEvento, String.Format("Registrata fine produzione per ODL {0}, nuovo ODL per quantità residua", idxOdlAltra), idxOdlAltra); - } - // sistemo buttons! - bool splitOdl = false; - fixSplitBtn(splitOdl); - } - catch (Exception exc) - { - logger.lg.scriviLog(string.Format("Eccezione in operazione Chiusura + Split ODL su nuovo! {0}{1}", Environment.NewLine, exc), tipoLog.EXCEPTION); - Response.Redirect("~/DettaglioMacchina.aspx"); - } - } - // resetto ODL su redis... - DataLayerObj.emptyCurrODL(idxMacchinaFix); - // aggiorno visualizzazione - checkAll(); - // sollevo evento! - if (eh_reqUpdate != null) - { - eh_reqUpdate(this, new EventArgs()); - } - } - /// - /// verifica se sia necessario confermare la prod dell'ODL precedente prima di chiudere e lo fa in automatico... - /// - /// boolean, true = deve confermare 0 pezzi (es. in setup) - private void confermaProdOdl(bool confZero) - { - // 2016.11.17 NOTA: introdotti scarti, li confermiamo SEMPRE a zero se in setup, però da valutare SE a FINE ATTREZZAGGIO chiedere num pezzi e num scarti (saldo zero buoni) da inserire... - if (confZero) - { - // confermo produzione ZERO pezzi (in setup) - DataLayerObj.confermaProdMacchina(idxMacchinaFix, memLayer.ML.CRI("modoConfProd"), 0, 0, DateTime.Now); - } - else // se NON sono in setup verifico se ho pz da confermare - { - // recupero pz da confermare - DS_ProdTempi.stp_PzProd_getByMacchinaRow rigaProd = DataLayerObj.taPzProd2conf.GetData(idxMacchinaFix)[0]; - if (rigaProd.pezziNonConfermati > 0) - { - DataLayerObj.confermaProdMacchina(idxMacchinaFix, memLayer.ML.CRI("modoConfProd"), rigaProd.pezziNonConfermati, 0, DateTime.Now); - } - } - } - /// - /// mostra dati ed opzione x split ODL - /// - /// - /// - protected void lbtShowSplitODL_Click(object sender, EventArgs e) - { - bool splitOdl = true; - fixSplitBtn(splitOdl); - // recupero current idx - int currODL = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0].IdxODL; - updateTempoTc(currODL, true); - updateNoteTC(currODL); - } - /// - /// sistema buttons split - /// - /// - private void fixSplitBtn(bool splitOdl) - { - lbtShowSplitODL.Visible = !splitOdl; - chkCloseOdl.Visible = !splitOdl; - lbtSplitODL.Visible = splitOdl; - showNoteTC(splitOdl); - ddlODL.Visible = !splitOdl; - chkTutti.Visible = !splitOdl; - lbtStartAttr.Visible = !splitOdl; - lbtStartProd.Visible = !splitOdl; - lbtEndProd.Visible = !splitOdl; - } - /// - /// split ODL con creazione nuovo ODL - /// - /// - /// - protected void lbtSplitODL_Click(object sender, EventArgs e) - { - // chiamo stored che genera nuovo ODL, mette note e tempo, chiude vecchi e assegna nuovo... - int currODL = DataLayerObj.taODL.getByMacchina(idxMacchinaFix)[0].IdxODL; - int idxEvento = 1; // !!!HARD CODED - // controllo se TC è valorizzato.. - if (TCRichAttr == 0) - { - mod_tempoMSMC.checkTC(); - } - - // confermo prod vecchio ODL - confermaProdOdl(false); - - // effettuo split su nuovo ODL - DataLayerObj.taODL.splitODL(currODL, DataLayerObj.MatrOpr, idxMacchinaFix, TCRichAttr, PzPallet, txtNote.Text, true); - - // resetto ODL su redis... - DataLayerObj.emptyCurrODL(idxMacchinaFix); - - // invio email! - DataLayerObj.sendWarnTcChangeReq(memLayer.ML.CRS("_adminEmail")); - // processo chiusura setup - processaEvento(idxMacchinaFix, idxEvento, String.Format("Registrato Riattrezzaggio ODL (old: {0})", currODL), currODL); - // sistemo buttons! - bool splitOdl = false; - fixSplitBtn(splitOdl); - - // sollevo evento! - if (eh_reqUpdate != null) - { - eh_reqUpdate(this, new EventArgs()); - } - } - /// - /// selezionato un ODL mostro note/tempo da validare - /// - /// - /// - protected void ddlODL_SelectedIndexChanged(object sender, EventArgs e) - { - checkDDL(); - } - - private void checkDDL() - { - if (ddlODL.SelectedIndex > 0) - { - showNoteTC(true); - updateTempoTc(idxODLSel, false); - updateNoteTC(idxODLSel); - } - else - { - showNoteTC(false); - } - } - - - /// - /// mostra/nasconde note - /// - private void showNoteTC(bool show) - { - // mostra/nasconde note da compilare - divTempo.Visible = show; - divNote.Visible = show; - divPzPallet.Visible = show; - lbtStartAttr.Visible = show; - cmp_dettODL.idxODLSel = idxODLSel; - divDettOdl.Visible = show && idxODLSel > 0; - // se abilitato da config su DB mostro selezione del numPzPallet... - cmp_selPzPallet.enableSet = memLayer.ML.CRB("enableTabSetPzPallet"); - - } - /// - /// aggiorna note ODL - /// - /// - private void updateNoteTC(int idxOdl) - { - string testo = ""; - if (idxOdl > 0) - { - try - { - testo = DataLayerObj.taODL.getByIdx(idxOdl, false)[0].Note; - } - catch - { } - } - txtNote.Text = testo; - } - - /// - /// update TC mostrato - /// - /// idx dell'ODL / PODL - /// - private void updateTempoTc(int idxOdlPodl, bool inAttr) - { - // riporta TC - decimal _TCRichAttr = 0; - int pzPallet = 1; - if (enableRPO && !inAttr) - { - var rigaProm = DataLayerObj.taPODL.getByKey(idxOdlPodl)[0]; - _TCRichAttr = rigaProm.TCAssegnato; - pzPallet = rigaProm.PzPallet; - } - else - { - DS_ProdTempi.ODLRow rigaOdl = DataLayerObj.taODL.getByIdx(idxOdlPodl, false)[0]; - if (rigaOdl.TCRichAttr > 0) - { - _TCRichAttr = rigaOdl.TCRichAttr; + mod_tempoMSMC.modoTempo = timeMode.MS; } else { - _TCRichAttr = rigaOdl.TCAssegnato; + mod_tempoMSMC.modoTempo = timeMode.MC; } - pzPallet = rigaOdl.PzPallet; } - // aggiorno dati! - TCRichAttr = _TCRichAttr; - PzPallet = pzPallet; + cmp_newODL.eh_newVal += Cmp_newODL_eh_newVal; } - protected void lbtConfNewRevProd_Click(object sender, EventArgs e) - { - // chiamo stored x allineare revProd a revUT - string CodArticolo = DataLayerObj.taODL.getByIdx(idxODLSel, false)[0].CodArticolo; - DataLayerObj.taAnagArt.setNewRev(CodArticolo); - checkBtnStatus(); - } /// - /// toggle visualizzazione creazioen ODL provvisorio + /// valore decimal del TC ASSEGNATO... /// - /// - /// - protected void lbtShowCreaOdlProvv_Click(object sender, EventArgs e) + protected decimal TCAssegnato(int idxODL) { - cmp_newODL.Visible = !cmp_newODL.Visible; - } - /// - /// Testo x button creazione nuovo ODL - /// - public string lblCreaOdl - { - get + decimal answ = 0; + try { - string answ = "CREAZIONE ODL PROVVISORIO"; - if (cmp_newODL.Visible) + if (enableRPO) { - answ = "NASCONDI creazione ODL provvisorio"; + // leggo info da promessa... + var rigaProm = DataLayerObj.taPODL.getByKey(idxODL)[0]; + answ = rigaProm.TCAssegnato; + } + else + { + // leggo idxOdl da ultimo odl attivo x macchina + DS_ProdTempi.ODLRow rigaOdl = DataLayerObj.taODL.getByIdx(idxODL, false)[0]; + answ = rigaOdl.TCAssegnato; } - return answ; - } - } - - protected void chkTutti_CheckedChanged(object sender, EventArgs e) - { - checkBtnStatus(); - } - /// - /// Effettua split ODL da ALTRA tavola su tav corrente - /// - /// - /// - protected void lbtSplitOdlSuTav_Click(object sender, EventArgs e) - { - // chiamo stored x splittare ODL... - int idxOdlAltra = 0; - int.TryParse(idxOdlAltraMacc, out idxOdlAltra); - // se ho trovato... - if (idxOdlAltra > 0) - { - DataLayerObj.taODL.dividiDaAltraTav(idxOdlAltra, DataLayerObj.MatrOpr, idxMacchinaFix); - // messaggio utente - string evText = "Registrata inizio attrezzaggio da split ODL {0} (come da altra tavola)"; - StringBuilder sb = new StringBuilder(); - sb.AppendLine(String.Format(evText, idxOdlAltra)); - lblOut.Text = sb.ToString(); - } - // update button x setup da altra tavola... - checkAll(); - // sollevo evento! - if (eh_reqUpdate != null) - { - eh_reqUpdate(this, new EventArgs()); - } - } - /// - /// Effettua ripresa ODL su tavola - /// - /// - /// - protected void lbtReopOdlSuTav_Click(object sender, EventArgs e) - { - // chiamo stored x riprendere ODL (toglie data chiusura...) - DS_ProdTempi.ODLDataTable tabRes = DataLayerObj.taODL.reopenGetLast(idxMacchinaFix); - if (tabRes.Rows.Count > 0) - { - var riga = tabRes[0]; - // messaggio utente - string evText = "Registrato riapertura ODL {0} | art {1}"; - StringBuilder sb = new StringBuilder(); - sb.AppendLine(String.Format(evText, riga.IdxODL, riga.CodArticolo)); - lblOut.Text = sb.ToString(); - } - // update buttons... - checkAll(); - // sollevo evento! - if (eh_reqUpdate != null) - { - eh_reqUpdate(this, new EventArgs()); } + catch + { } + return answ; } protected void txtSearchODL_TextChanged(object sender, EventArgs e) @@ -1173,13 +1240,28 @@ namespace MoonProTablet.WebUserControls odsODL.DataBind(); } - protected void lbtFixEndSetup_Click(object sender, EventArgs e) + #endregion Protected Methods + + #region Public Methods + + public void checkAll() { - string ts = string.Format("{0:yyMMdd}T{0:HHmmss.fff}Z", DateTime.Now); - string outData = $"TS:{ts}|MATR:{DataLayerObj.MatrOpr}|ODL:{idxOdlMacc}"; - DataLayerObj.addTask4Machine(idxMacchinaFix, taskType.fixStopSetup, outData); - outData = "Inserita richiesta invio Fix chiusura attrezzaggio " + outData; - lblOut.Text = outData; + lblOut.Text = ""; + checkBtnStatus(); + chkCloseOdl.Checked = chkCloseOdlVal; + chkCloseOdl.Visible = showChkCloseOdlVal; + divOdlProvv.Visible = showOdlProvvVal; + divOpRiattr.Visible = (showSplitOdlOnTavVal || showReopOdlTav); + lbtSplitOdlSuTav.Visible = showSplitOdlOnTavVal; + lbtReopOdlSuTav.Visible = showReopOdlTav; + lbtFixEndSetup.Visible = !maccInAttr && memLayer.ML.CRB("OptEnableFixSetup"); } + + public void hideAll() + { + divDettOdl.Visible = false; + } + + #endregion Public Methods } } \ No newline at end of file