using MapoDb; using SteamWare; using System; using System.Data; using System.Web.UI; using System.Web.UI.WebControls; namespace ES3.WebUserControls { public partial class mod_gestPromODL_OUT : System.Web.UI.UserControl { /// /// Determina se sia solo readonly il controllo... /// public bool readOnly; /// /// Chiave PRE selezione tipo richiesta ordine /// public string codOrdPre { get { return hfCodPre.Value.Trim(); } set { hfCodPre.Value = value; } } /// /// dimensione pagina /// public int pageSize { get { int answ = 10; try { answ = Convert.ToInt32(txtPageSize.Text); } catch { } return answ; } set { txtPageSize.Text = value.ToString(); } } /// /// Abilitazione modifica selettore fase /// public bool enableSelFase { get { return ddlCodGruppo.Enabled; } set { ddlCodGruppo.Enabled = value; } } /// /// Gruppo selezionato /// public string CodGruppo { get { return ddlCodGruppo.SelectedValue; } set { ddlCodGruppo.SelectedValue = value; } } #region area da NON modificare #region area protected protected string _idxGridView; /// /// reset della selezione /// /// /// protected void btnReset_Click(object sender, EventArgs e) { resetSelezione(); } /// /// salvo comando /// /// /// protected void lbt_Command(object sender, CommandEventArgs e) { SteamWare.memLayer.ML.setSessionVal("nextObjCommand", ((LinkButton)sender).CommandArgument); } /// /// gestione cambio selezione valore /// /// /// protected void grView_SelectedIndexChanged(object sender, EventArgs e) { // salvo in session il valore selezionato... memLayer.ML.setSessionVal(string.Format("{0}_sel", _idxGridView), grView.SelectedValue, false); bool doClone = false; bool doEdit = false; // gestione buttons richieste string _comando = ""; if (memLayer.ML.isInSessionObject("nextObjCommand")) { _comando = memLayer.ML.StringSessionObj("nextObjCommand"); memLayer.ML.emptySessionVal("nextObjCommand"); } switch (_comando) { case "Clona": doClone = true; break; case "Edit": doEdit = true; break; default: break; } if (doClone) { memLayer.ML.setSessionVal("idxProm2Clone", grView.SelectedValue, false); showAddNewPODL(); mod_newPromessaODL.doSelPODL(); } else if (doEdit) { memLayer.ML.setSessionVal("idxProm2Edit", grView.SelectedValue, false); showAddNewPODL(); mod_newPromessaODL.doSelPODL(); } else { // mostro edit quantità... divEditQta.Visible = true; lbtNewPODL.Visible = true; mod_newPromessaODL.Visible = false; var riga = DataLayer.obj.taPODL.getByKey(idxPOdlSel)[0]; numPz = riga.NumPezzi; pzPallet = riga.PzPallet; } } /// /// traduce gli header delle colonne /// /// /// protected void grView_DataBound(object sender, EventArgs e) { if (grView.Rows.Count > 0) { LinkButton lb; // aggiorno gli headers foreach (TableCell cella in grView.HeaderRow.Cells) { try { lb = (LinkButton)cella.Controls[0]; lb.Text = traduci(lb.Text); } catch { } } int totRecord = grView.Rows.Count + grView.PageSize * (grView.PageCount - 1); lblNumRec.Text = string.Format("{0} records of ~ {1}", grView.Rows.Count, totRecord); } else { lblNumRec.Text = ""; } } /// /// recupera i dati di un nuovo record contenuti nel footer di un gridView; /// questi devono esses opportunamente nominati (es: txt{0}, dl{0}, ...) /// /// /// protected void recuperaFooter(object sender, ObjectDataSourceMethodEventArgs e) { //recupero la riga footer... DataColumnCollection colonne = colonneObj(); string nomeCol; string tipoColonna = ""; foreach (DataColumn colonna in colonne) { nomeCol = colonna.ColumnName; // cerco un textbox o quello che sia... if (grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol)) != null) { tipoColonna = "textBox"; } else if (grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol)) != null) { tipoColonna = "dropDownList"; } else if (grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol)) != null) { tipoColonna = "checkBox"; } else if (grView.FooterRow.FindControl(string.Format("selAjax_{0}", nomeCol)) != null) { tipoColonna = "selAjax"; } // in base al tipo salvo negli inputparameters dell'ODS switch (tipoColonna) { case "textBox": e.InputParameters[nomeCol] = ((TextBox)grView.FooterRow.FindControl(string.Format("txt{0}", nomeCol))).Text; break; case "dropDownList": e.InputParameters[nomeCol] = ((DropDownList)grView.FooterRow.FindControl(string.Format("dl{0}", nomeCol))).SelectedValue; break; case "checkBox": e.InputParameters[nomeCol] = ((CheckBox)grView.FooterRow.FindControl(string.Format("chk{0}", nomeCol))).Checked; break; //case "selAjax": // e.InputParameters[nomeCol] = ((mod_selettore_ajax)grView.FooterRow.FindControl(string.Format("selAjax_{0}", nomeCol))).valore; // break; default: break; } tipoColonna = ""; } } /// /// svuoto da cache post update /// /// /// protected void ods_Updated(object sender, ObjectDataSourceStatusEventArgs e) { // evento come nuovo... if (eh_nuovoValore != null) { eh_nuovoValore(this, new EventArgs()); } } #endregion #region are public /// /// effettua traduzione del lemma /// /// /// public string traduci(string lemma) { return user_std.UtSn.Traduci(lemma); } /// /// effettua traduzione in inglese del lemma /// /// /// public string traduciEn(string lemma) { return user_std.UtSn.TraduciEn(lemma); } /// /// resetta la selezione dei valori in caso di modifiche su altri controlli /// public void resetSelezione() { memLayer.ML.emptySessionVal(string.Format("{0}_sel", _idxGridView)); grView.SelectedIndex = -1; grView.DataBind(); divEditQta.Visible = false; mod_newPromessaODL.Visible = false; lbtNewPODL.Visible = true; lblWarning.Visible = false; if (eh_resetSelezione != null) { eh_resetSelezione(this, new EventArgs()); } } #endregion #endregion #region gestione eventi public event EventHandler eh_resetSelezione; public event EventHandler eh_nuovoValore; #endregion #region area da modificare protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (!Page.IsPostBack) { mod_newPromessaODL.Visible = false; grView.PageSize = pageSize; // se ho in sessione selezione la recupero... if (memLayer.ML.isInSessionObject("selFaseBCode") && enableSelFase) { ddlCodGruppo.SelectedValue = memLayer.ML.StringSessionObj("selFaseBCode"); } } mod_newPromessaODL.eh_nuovoValore += new EventHandler(mod_newOdl1_eh_nuovoValore); } /// inizializzazione valori di default /// /// protected override void OnInit(EventArgs e) { base.OnInit(e); _idxGridView = "IdxODL"; } /// /// nuovo valore creato... /// /// /// void mod_newOdl1_eh_nuovoValore(object sender, EventArgs e) { // nascondo controllo e mostro button mod_newPromessaODL.Visible = false; lbtNewPODL.Visible = true; // aggiorno! resetSelezione(); } /// /// elenco colonne del datagrid /// /// protected DataColumnCollection colonneObj() { MapoDb.DS_ProdTempi.ODLDataTable tabella = new MapoDb.DS_ProdTempi.ODLDataTable(); DataColumnCollection colonne = tabella.Columns; return colonne; } public bool delEnabled(object _idxOdl) { bool answ = false; int idxOdl = 0; // controllo non sia già stata iniziata la produzione sennò non posso cancellare... try { idxOdl = Convert.ToInt32(_idxOdl); answ = (MapoDb.DataLayer.obj.taODL.getByIdx(idxOdl, true).Count > 0); } catch { } return answ; } /// /// mostra creazione nuovo ODL /// /// /// protected void lbtNewPODL_Click(object sender, EventArgs e) { showAddNewPODL(); } private void showAddNewPODL() { // mostro controllo creazione ODL mod_newPromessaODL.Visible = true; divEditQta.Visible = false; lbtNewPODL.Visible = false; grView.SelectedIndex = -1; grView.DataBind(); } /// /// formatot url x stampa ODL /// /// /// public string formattaUrlOdl(object idx) { string answ = String.Format(memLayer.ML.CRS("exportFormat1"), Convert.ToInt32(reportRichiesto.SchedaODL), idx); return answ; } /// /// cambio dim pagina /// /// /// protected void txtPageSize_TextChanged(object sender, EventArgs e) { grView.PageSize = pageSize; } /// /// elimina commento /// /// /// protected void lbtDel_Click(object sender, EventArgs e) { LinkButton imgBtn = (LinkButton)sender; int IdxProm = 0; int.TryParse(imgBtn.CommandArgument, out IdxProm); DataLayer.obj.taPODL.deleteQuery(IdxProm); doUpdate(); } protected void doUpdate() { updateGrView(); } #endregion protected void btnOk_Click(object sender, EventArgs e) { if (idxPOdlSel > 0) { DataLayer.obj.taPODL.updateQta(numPz, pzPallet, idxPOdlSel); } updateCtrl(); } private void updateCtrl() { divEditQta.Visible = false; grView.SelectedIndex = -1; grView.DataBind(); } /// /// idxOdl selezionato /// protected int idxPOdlSel { get { int answ = 0; try { answ = Convert.ToInt32(grView.SelectedValue); } catch { } return answ; } } /// /// Nuovo num pz /// protected int numPz { get { int answ = 0; try { answ = Convert.ToInt32(txtNewQta.Text.Trim()); } catch { } return answ; } set { txtNewQta.Text = value.ToString(); } } /// /// Nuovo num pz per pallet /// protected int pzPallet { get { int answ = 1; try { answ = Convert.ToInt32(txtNewPzPallet.Text.Trim()); } catch { } // controllo sia > 0... if (answ < 1) { answ = 1; } return answ; } set { txtNewPzPallet.Text = value.ToString(); } } protected void btnCancel_Click(object sender, EventArgs e) { updateCtrl(); } protected void chkUnassigned_CheckedChanged(object sender, EventArgs e) { updateGrView(); } /// /// Aggiorno Gridview /// private void updateGrView() { grView.DataBind(); } /// /// IdxMacchina filtrata /// protected string idxMacc { get { return lblIdxMacc.Text; } set { lblIdxMacc.Text = value; } } /// /// Nome filtrata /// protected string NomeMacc { get { return lblNomeMacc.Text; } set { lblNomeMacc.Text = value; } } /// /// CodArt filtrato /// protected string CodArt { get { return lblCodArt.Text; } set { lblCodArt.Text = value; } } /// /// CodArt filtrato /// protected string DescArt { get { return lblDescArt.Text; } set { lblDescArt.Text = value; } } /// /// Selezionato un condominio --> riporto selezione /// /// /// protected void lbtSelArt_Click(object sender, EventArgs e) { LinkButton lb = (LinkButton)sender; // imposto articolo, splittando string[] artData = lb.CommandArgument.Split('|'); CodArt = artData[0]; DescArt = artData[1]; updateGrView(); } /// /// Selezionato un condominio --> riporto selezione /// /// /// protected void lbtSelMacc_Click(object sender, EventArgs e) { LinkButton lb = (LinkButton)sender; // imposto articolo, splittando string[] maccData = lb.CommandArgument.Split('|'); idxMacc = maccData[0]; NomeMacc = maccData[1]; updateGrView(); } /// /// Richiesto abbassamento priorità = ANTICIPA /// /// /// protected void lnkMoveDown_Click(object sender, EventArgs e) { LinkButton lb = (LinkButton)sender; // imposto articolo, splittando int IdxPromessa = 0; int.TryParse(lb.CommandArgument, out IdxPromessa); // chiamo stored DataLayer.obj.taPromOut.movePrio(IdxPromessa, -1); //update! updateGrView(); } /// /// Richiesto aumento priorità = RITARDA /// /// /// protected void lnkMoveUp_Click(object sender, EventArgs e) { LinkButton lb = (LinkButton)sender; // imposto articolo, splittando int IdxPromessa = 0; int.TryParse(lb.CommandArgument, out IdxPromessa); // chiamo stored DataLayer.obj.taPromOut.movePrio(IdxPromessa, 1); //update! updateGrView(); } protected void lbtResArt_Click(object sender, EventArgs e) { CodArt = ""; DescArt = ""; updateGrView(); } protected void lbtResMacc_Click(object sender, EventArgs e) { idxMacc = ""; NomeMacc = ""; updateGrView(); } protected void ddlCodGruppo_SelectedIndexChanged(object sender, EventArgs e) { // salvo in sessione selezione... memLayer.ML.setSessionVal("selFaseBCode", ddlCodGruppo.SelectedValue); } /// /// Verifica se sia permesso cambio priorità (NON può andare a 0 ne oltre il max x macchina) /// /// /// /// /// public bool checkChgPrio(string IdxMacchina, string priorStr, int delta) { bool answ = false; int priorita = 0; int.TryParse(priorStr, out priorita); // calcolo i limiti priorità x macchina (0 --> max x macchina)... LPI/LPS liminte priorità inferiore / superiore int LPI = 1; int LPS = 1; var tabella = DataLayer.obj.taPromOut.getMaxPrioByMacc(IdxMacchina, true); if (tabella.Rows.Count > 0) { LPS = tabella[0].Priorita; } // è ok SE sono ENTRO i 2 limiti answ = ((priorita + delta) >= LPI && (priorita + delta) <= LPS); //return return answ; } } }