+
+ <%: traduci("Destinazione") %> (UDC)
-
-
- <%: traduci("lblCesta") %>
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%: traduci("Reset") %>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ /
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ <%: traduci("lblQtaPart") %>
+
+
+
+
<%: traduci("updateQty") %>
+
+
+
+
+ <%: traduci("CodImballo") %>
+
+
diff --git a/GMW/WebUserControls/mod_PostFin_DT.ascx.cs b/GMW/WebUserControls/mod_PostFin_DT.ascx.cs
index 8d66282d..972c7196 100644
--- a/GMW/WebUserControls/mod_PostFin_DT.ascx.cs
+++ b/GMW/WebUserControls/mod_PostFin_DT.ascx.cs
@@ -1,27 +1,12 @@
using GMW_data;
using SteamWare;
using System;
-using System.Globalization;
using System.Web.UI;
-using System.Web.UI.WebControls;
namespace GMW.WebUserControls
{
public partial class mod_PostFin_DT : System.Web.UI.UserControl
{
- ///
- /// flusso associato (hard coded) a RX
- ///
- protected string flusso = "RX";
- ///
- /// stato associato (hard coded) a Controllato RX
- ///
- protected string statoUDC = "ContrRx";
- ///
- /// codice evento dell'UDC che si crea
- ///
- protected string codEventoUdc = "UDC_RX_DT";
- public event EventHandler eh_reqUpdate;
///
/// stringa UID univoca
///
@@ -33,23 +18,190 @@ namespace GMW.WebUserControls
}
}
///
- /// caricamento pagina
+ /// flusso associato (hard coded) a LI (finiti)
///
- ///
- ///
- protected void Page_Load(object sender, EventArgs e)
+ protected string flusso = "FI";
+ ///
+ /// flusso associato (hard coded) ad ancestor TT (Trattati)
+ ///
+ protected string flussoAnc = "TT";
+ ///
+ /// flusso associato (hard coded) a temporaneo TL (Trattati/Liquidi)
+ ///
+ protected string flussoTemp = "TL";
+ ///
+ /// stato associato (hard coded) a UDC in OUT: Finito
+ ///
+ protected string statoUdcOut = "Fin";
+ ///
+ /// stato associato (hard coded) a UDC in IN: Trattato da travaso AL
+ ///
+ protected string statoUdcIn = "Tratt";
+ ///
+ /// codice evento dell'UDC definitivo (OUT) che si crea
+ ///
+ protected string codEventoUdcOut = "UDC_TL_DT";
+ ///
+ /// codice evento dell'UDC temporaneo (IN) che si crea
+ ///
+ protected string codEventoUdcIn = "UDC_TRATT";
+ protected string cssOk = "stileComandoOk";
+ protected string cssErr = "stileComandoKo";
+ protected string cssWait = "stileComandoND";
+ protected string cssAtt = "stileAttesa";
+ protected string cssWarn = "stileComandoWarn";
+ protected string cssAdd = "stileComandoAdd";
+ public event EventHandler eh_reqUpdate;
+ ///
+ /// Codice AL sulla linea...
+ ///
+ protected string currAL
{
- if (!Page.IsPostBack)
+ get
{
- currParticolare = "";
- lblDTFus.Text = string.Format("{0:ddd dd/MM/yyyy, HH:mm}", dataFus);
- lblLinFus.Text = lineaFus;
- Postazione.messaggiText = "";
- Postazione.warningText = "";
- fixCella();
- traduciObj();
+ string answ = "";
+ try
+ {
+ answ = MagClass.magazzino.taAL.getByKey(Postazione.currCodLinea)[0].CurrVal;
+ }
+ catch
+ { }
+ return answ;
+ }
+ set
+ {
+ MagClass.magazzino.taAL.updateCurrVal(Postazione.currCodLinea, value);
+ }
+ }
+ ///
+ /// Codice AL in carico
+ ///
+ protected string sourceAL
+ {
+ get
+ {
+ return lblAL.Text.Trim();
+ }
+ set
+ {
+ lblAL.Text = value;
+ }
+ }
+ ///
+ /// ultimo valore barcode letto (x confronto conferme doppio input...)
+ ///
+ protected string lastBarcodeIn
+ {
+ get
+ {
+ return memLayer.ML.StringSessionObj(string.Format("lastBCode_{0}", uid));
+ }
+ set
+ {
+ memLayer.ML.setSessionVal(string.Format("lastBCode_{0}", uid), value, false);
+ }
+ }
+ ///
+ /// Codice AL della cella corrente
+ ///
+ protected string destAL
+ {
+ get
+ {
+ return lblDestAL.Text.Trim();
+ }
+ set
+ {
+ lblDestAL.Text = value;
+ }
+ }
+ ///
+ /// Codice AL associato alla cella corrente...
+ ///
+ protected string AlByCella
+ {
+ get
+ {
+ string answ = "";
+ try
+ {
+ answ = string.Format("ALF00{0}", Postazione.currCodCella);
+ // controllo se esista AL sennò lo creo...
+ if (MagClass.magazzino.taEA.getByAL(answ).Rows.Count == 0)
+ {
+ MagClass.magazzino.taEA.Insert(answ, true, DateTime.Now, MagClass.magazzino.CodSoggCurrUser, "", "");
+ }
+ }
+ catch
+ { }
+ return answ;
+ }
+ }
+ ///
+ /// indica il codice articolo correntemente selezionato
+ ///
+ protected string currParticolare
+ {
+ get
+ {
+ return memLayer.ML.StringSessionObj(string.Format("currParticolare_{0}", uid));
+ }
+ set
+ {
+ memLayer.ML.setSessionVal(string.Format("currParticolare_{0}", uid), value, memLayer.ML.confReadBool("keepParticolareSel"));
+ }
+ }
+ ///
+ /// indica UDC correntemente selezionato
+ ///
+ protected string currUDC
+ {
+ get
+ {
+ return memLayer.ML.StringSessionObj(string.Format("UDC_{0}", uid));
+ }
+ set
+ {
+ memLayer.ML.setSessionVal(string.Format("UDC_{0}", uid), value, memLayer.ML.confReadBool("keepParticolareSel"));
+ }
+ }
+ ///
+ /// num pezzi dell'ultimo UDC di uguale particolare e stato fatto...
+ ///
+ public int pezziUdc
+ {
+ get
+ {
+ int answ = 0;
+ try
+ {
+ answ = (int)MagClass.magazzino.taCartellini.getLastByParticolareStatoConImb(memLayer.ML.StringSessionObj("CodCS"), currParticolare, statoUdcOut)[0].Qta;
+ }
+ catch
+ {
+ answ = memLayer.ML.cdvi("QtaImballoFiniti");
+ }
+ return answ;
+ }
+ }
+ ///
+ /// cod imballo dell'ultimo UDC del particolare generato
+ ///
+ public string lastCodImb
+ {
+ get
+ {
+ string answ = "";
+ try
+ {
+ answ = MagClass.magazzino.taCartellini.getLastByParticolareStatoConImb(memLayer.ML.StringSessionObj("CodCS"), currParticolare, statoUdcOut)[0].CodImballo;
+ }
+ catch
+ {
+ answ = memLayer.ML.cdv("CodImballoFiniti");
+ }
+ return answ;
}
- doChecks();
}
///
/// qta pezzi x UDC
@@ -71,128 +223,6 @@ namespace GMW.WebUserControls
{
txtQta.Text = value.ToString();
}
- }
- ///
- /// data fusione impostata SALVATA SU DB...
- ///
- public DateTime dataFus
- {
- get
- {
- DateTime answ = Convert.ToDateTime("1900-01-01");
- try
- {
-
- answ = Convert.ToDateTime(utils.obj.RTVal(user_std.pagCorrente, "dataFus" + Postazione.currCodLinea));
- }
- catch
- { }
- return answ;
- }
- set
- {
- utils.obj.taRTPV.upsert(user_std.pagCorrente, "dataFus" + Postazione.currCodLinea, string.Format("{0:yyyy/MM/dd HH:mm}", value));
- lblDTFus.Text = string.Format("{0:ddd dd/MM/yyyy, HH:mm}", value);
- }
- }
- ///
- /// LINEA fusione impostata SALVATA SU DB...
- ///
- public string lineaFus
- {
- get
- {
- string answ = "";
- try
- {
-
- answ = utils.obj.RTVal(user_std.pagCorrente, "lineaFus" + Postazione.currCodLinea);
- }
- catch
- { }
- //2016.01.25 se vuoto metto ND!!!
- if (answ == "")
- {
- answ = "ND";
- }
- return answ;
- }
- set
- {
- utils.obj.taRTPV.upsert(user_std.pagCorrente, "lineaFus" + Postazione.currCodLinea, value);
- lblLinFus.Text = value;
- }
- }
- ///
- /// aggiorna visualizzazioen dati particolare
- ///
- private void updatePart()
- {
- if (currParticolare != "")
- {
- lblParticolareAttivo.Text = string.Format("{0} {1}", traduci("particSel"), currParticolare);
- // aggiungo descrizione del particolare
- string descr = "";
- string disegno = "";
- try
- {
- DS_magazzino.AnagParticolariRow riga = MagClass.magazzino.taAnagPart.likeSearch(currParticolare, memLayer.ML.StringSessionObj("CodCS"))[0];
- descr = riga.DescParticolare;
- disegno = string.Format("( {0} )", riga.DisegnoGrezzo);
- }
- catch
- { }
- lblDescrAttivo.Text = descr;
- lblDisegno.Text = disegno;
- }
- else
- {
- lblParticolareAttivo.Text = "...";
- lblDescrAttivo.Text = "";
- lblDisegno.Text = "";
- }
- }
- ///
- /// verifica se si debab mostrare un campo ricerca UDC attivo...
- ///
- private void fixCella()
- {
- lblIdxCella.Text = Postazione.currIdxCella.ToString();
- }
- ///
- /// richiesta (ri)stampa UDC
- ///
- ///
- ///
- public void ristampa()
- {
- MagClass.magazzino.stampaAL(udcReq, Postazione.printer, Request.UserHostName);
- // registro ri-stampa UDC
- MagClass.magazzino.taSAO.insertQuery(DateTime.Now, MagClass.magazzino.CodSoggCurrUser, Postazione.name, Postazione.IP, udcReq, "", "creaAL", "Ri-Stampato AL Rx NT");
- }
- ///
- /// udc da stampare
- ///
- protected string udcReq
- {
- get
- {
- return memLayer.ML.StringSessionObj("udcSelSAO");
- }
- }
- ///
- /// effettua controlli visibilità
- ///
- private void doChecks()
- {
- checkBarcode();
- }
- ///
- /// sistemo labels oggetti
- ///
- private void traduciObj()
- {
-
}
///
/// wrapper traduzione
@@ -231,23 +261,6 @@ namespace GMW.WebUserControls
}
}
///
- /// Formato Datamatrix dell'ultimo barcode letto
- ///
- protected string FormatoDtmxBarcode
- {
- get
- {
- string answ = "";
- try
- {
- answ = DataMatrix.mgr.taVerifica.GetData(barcodeIn)[0].FormatoDtmx;
- }
- catch
- { }
- return answ;
- }
- }
- ///
/// codice particolare da datamatrix
///
/// bollean:
@@ -259,14 +272,7 @@ namespace GMW.WebUserControls
string answ = "";
if (byTable)
{
- try
- {
- answ = DataMatrix.mgr.taDtxAcquisiti.getByKey(barcodeIn)[0].Particolare; // Decode.GetData(barcodeIn, FormatoDtmxLinea)[0].Particolare;
- }
- catch
- {
- answ = DataMatrix.mgr.taDecode.GetData(barcodeIn, FormatoDtmxLinea)[0].Particolare;
- }
+ answ = DataMatrix.mgr.taDtxAcquisiti.getByKey(barcodeIn)[0].Particolare; // Decode.GetData(barcodeIn, FormatoDtmxLinea)[0].Particolare;
}
else
{
@@ -289,352 +295,749 @@ namespace GMW.WebUserControls
}
}
///
- /// controlla se ci sia un barcode
+ /// caricamento pagina
+ ///
+ ///
+ ///
+ protected void Page_Load(object sender, EventArgs e)
+ {
+ if (!Page.IsPostBack)
+ {
+ Postazione.messaggiText = "";
+ Postazione.warningText = "";
+ qta = 0;
+ currUDC = "";
+ forceDelete = false;
+ sourceAL = "";
+ setDefaultVal();
+ odsAL.DataBind();
+ grViewSource.DataBind();
+ // NON RESETTO... 2014.04.10
+ //sendUpdateTablet("ND", "-", traduci("attesaInput"), "-", "-", "-", "", cssWait, cssWait);
+ }
+ setVisibility();
+ checkBarcode();
+ }
+ ///
+ /// imposta i valori di default ad avvio
+ ///
+ private void setDefaultVal()
+ {
+ if (currAL != "")
+ {
+ sourceAL = currAL;
+ }
+ destAL = AlByCella;
+ }
+ ///
+ /// Sistema css del panel AL
+ ///
+ ///
+ private void fixCssAL(string tipoPanel)
+ {
+ divAL.Attributes.Remove("class");
+ divAL.Attributes.Add("class", string.Format("panel panel-{0} panel-sm", tipoPanel));
+ }
+ ///
+ /// sistema modalità input
+ ///
+ private void setVisibility()
+ {
+ bool showBtn = false;
+ if (sourceAL != "" && currAL == "")
+ {
+ showBtn = true;
+ fixCssAL("warning");
+ }
+ else
+ {
+ fixCssAL("success");
+ }
+ lbtPrendeCaricoAL.Visible = showBtn;
+ // X btn chiusura: solo chiudo SOLO se c'è AL in carico..
+ lbtChiudiAL.Visible = (currAL != "");
+ // ora controllo btn quantità
+ showBtn = false;
+ if (grViewDest.SelectedIndex >= 0)
+ {
+ showBtn = true;
+ }
+ divQta.Visible = showBtn;
+ divImballi.Visible = showBtn;
+ if (showBtn)
+ {
+ selezionaImballo();
+ }
+ }
+ ///
+ /// reset maschera...
+ ///
+ protected void doReset()
+ {
+ // resetta
+ fixCssAL("warning");
+ lastBarcodeIn = "";
+ Postazione.messaggiText = "";
+ Postazione.warningText = "";
+ Postazione.CssClass = cssAtt;
+ doUpdate();
+ // NON RESETTO... 2014.04.10
+ //sendUpdateTablet("ND", "-", traduci("attesaInput"), "-", "-", "-", "", cssWait, cssWait);
+ }
+ ///
+ /// Verifica l'AL se sia ok x procedere:
+ /// - Attivo
+ ///
+ ///
+ /// T/L
+ ///
+ protected bool checkAL(string AL, string tipo)
+ {
+ bool answ = false;
+ try
+ {
+ answ = MagClass.magazzino.taEA.getByAL_TipoAttivo(AL, tipo).Rows.Count > 0;
+ }
+ catch
+ { }
+ if (answ)
+ {
+ Postazione.warningText = "";
+ Postazione.CssClass = "stileComandoOk";
+ }
+ else
+ {
+ Postazione.warningText = traduci("ErroreAlNonTtAttivo");
+ Postazione.CssClass = "stileComandoKo";
+ }
+
+ return answ;
+ }
+ ///
+ /// Verifica l'AL se abbia datamatrix
+ ///
+ ///
+ ///
+ protected bool checkDtxAL(string AL)
+ {
+ bool answ = false;
+ try
+ {
+ answ = DataMatrix.mgr.taDtx2UDC.getByAL(AL).Rows.Count > 0;
+ }
+ catch
+ { }
+ if (!answ)
+ {
+ Postazione.warningText = traduci("ErroreAlNonDtx");
+ Postazione.CssClass = "stileComandoKo";
+ }
+ else
+ {
+ Postazione.warningText = "";
+ Postazione.CssClass = "stileComandoOk";
+ }
+ return answ;
+ }
+ ///
+ /// controlla se ci sia un barcode e cosa farne...
///
private void checkBarcode()
{
- bool okDTL = false;
if (barcodeIn != "")
{
Postazione.messaggiText = string.Format("{0}: {1}", traduci("BCodeIns"), barcodeIn);
- switch (MagClass.tipoBCode_L5(barcodeIn))
+ tipoCodiceBarcode tipoBC = MagClass.tipoBCode_L5(barcodeIn);
+ // per prima cosa: SE NON HO AL SELEZIONATO e non ho sparato un AL o un imballo sollevo errore...
+ if (!(tipoBC == tipoCodiceBarcode.AL || tipoBC == tipoCodiceBarcode.Imballo) && currAL == "")
{
- case tipoCodiceBarcode.DateTime:
- okDTL = getDateTimeLine(barcodeIn, false);
- if (okDTL)
- {
- Postazione.messaggiText = traduci("SetDataFus");
- Postazione.warningText = "";
- Postazione.CssClass = "stileComandoOk";
- }
- else
- {
- Postazione.messaggiText = traduci("ERR-BCD-004");
- Postazione.warningText = "";
- Postazione.CssClass = "stileComandoKo";
- }
- break;
- case tipoCodiceBarcode.DateTimeLine:
- okDTL = getDateTimeLine(barcodeIn, true);
- if (okDTL)
- {
- Postazione.messaggiText = traduci("SetDataFus");
- Postazione.warningText = "";
- Postazione.CssClass = "stileComandoOk";
- }
- else
- {
- Postazione.messaggiText = traduci("ERR-BCD-004");
- Postazione.warningText = "";
- Postazione.CssClass = "stileComandoKo";
- }
- break;
- case tipoCodiceBarcode.Particolare:
- // imposto il particolare corrente
- currParticolare = barcodeIn;
- // controllo esista il particolare scansionato
- if (DataProxy.obj.taAnagParticolari.getByParticolare(currParticolare).Rows.Count == 0)
- {
- currParticolare = "";
- Postazione.messaggiText = traduci("partNotFound");
- Postazione.CssClass = "stileComandoKo";
- }
- else
- {
- Postazione.messaggiText = traduci("partSelected");
- Postazione.warningText = "";
- Postazione.CssClass = "stileComandoOk";
- }
- // leggo la qta dell'ultimo UDC del particolare, SE C'E', e la imposto...
- if (pezziUdc > 0)
- {
- qta = pezziUdc;
- }
- else // rimette default
- {
- qta = memLayer.ML.cdvi("QtaImballoRX");
- }
- break;
- case tipoCodiceBarcode.DataMatrixTrovato:
- // controllo che il DTX non sia già assegnato...
- if (DataMatrix.mgr.taDtx2UDC.getByDtx(barcodeIn).Rows.Count == 0)
- {
- // vers 2.9
- // controllo formato datamatrix sia impostato sulla linea (altrimenti errore linea "non battezzata")
- if (FormatoDtmxLinea == "")
+ // sollevo errore, in primis va definito AL sorgente...
+ Postazione.warningText = traduci("ERR-ALT-001");
+ Postazione.CssClass = cssErr;
+ sendUpdateTablet("ND", "-", traduci("ERR-ALT-001"), "-", "-", "-", cssErr, cssErr, cssErr);
+ }
+ else
+ {
+ switch (tipoBC)
+ {
+ case tipoCodiceBarcode.Imballo:
+ // cerco di selezionare!
+ try
{
- // errore poiché non è stato non specificato tipo Dtmx assegnato alla linea!
- Postazione.messaggiText = barcodeIn;
- Postazione.warningText = traduci("ERR-DTX-013");
+ ddlImballi.SelectedValue = barcodeIn;
+ }
+ catch
+ {
+ Postazione.warningText = traduci("ERR-IMB-001");
Postazione.CssClass = "stileComandoKo";
}
- else
+ break;
+ case tipoCodiceBarcode.Comando:
+ // se è reset cancello tutto!
+ if (barcodeIn == memLayer.ML.cdv("cmdReset"))
{
- // verifico formato datamatrix letto sia quello della linea...
- if (FormatoDtmxBarcode != FormatoDtmxLinea)
+ doReset();
+ }
+ else if (barcodeIn == memLayer.ML.cdv("cmdCloseAL"))
+ {
+ // forza reset linea
+ currAL = "";
+ sourceAL = "";
+ // resetta!
+ doReset();
+ }
+ break;
+ case tipoCodiceBarcode.UDC:
+ // controllo di avere destAL valido, sennò ricarico pagina...
+ if (destAL.Length > 5)
+ {
+ // controllo se sia un UDC valido...
+ if (MagClass.magazzino.checkUDC(barcodeIn))
{
- // errore corrispondenza formato Dtmx
- Postazione.messaggiText = barcodeIn;
- Postazione.warningText = traduci("ERR-DTX-014");
- Postazione.CssClass = "stileComandoKo";
- }
- else
- {
- // controllo esito marcatura...
- bool marcaturaOk = false;
- string formatiSbloccati = memLayer.ML.cdv(string.Format("sbloccoKO#{0}", user_std.pagCorrente)); // sbloccoKO#PostRX_DT
- // verifico da conf SE il formato ha controllo KO sbloccato (default: KO BLOCCATI!!!) in tal caso è già OK!!! ATTENZIONE CERCA #codice#
- if (formatiSbloccati.IndexOf("#" + FormatoDtmxLinea + "#") > 0)
+ // controllo se sia un UDC di finiti LIQ in posizione 4...
+ DS_magazzino.ElencoCartelliniRow cartUDC = MagClass.magazzino.taCartellini.getByUdc(barcodeIn)[0];
+ if (cartUDC.CodStato == statoUdcOut && cartUDC.IdxPosizione == memLayer.ML.cdvi("IdxPosizioneFiniti"))
{
- marcaturaOk = true;
- }
- if (!marcaturaOk)
- {
- // recupero elenco datamatrix
- DS_DataMatrix.v_ElencoDmtxDataTable tabDmtx = DataMatrix.mgr.taVED.getByKey(barcodeIn);
- if (tabDmtx.Rows.Count > 0)
+ // controllo NON ci sia già un UDC di pari particolare caricato nella postazione corrente (non posso avere 2 UDC a pari particolare da riempire...)
+ if (MagClass.magazzino.taCartellini.getByParticolareAL(cartUDC.Particolare, destAL).Rows.Count == 0)
{
- // verifica esitoMarcatura OK
- marcaturaOk = (tabDmtx[0].EsitoMarcatura == "OK");
+ // controllo NON sia UDC in LDP e già PRELEVATO
+ if (MagClass.magazzino.taRigheListePrelievo.getByUdc(barcodeIn).Select("Prelevato = 1").Length == 0)
+ {
+ // se è ok RICARICO UDC in posizione corrente...
+ bool fatto = MagClass.magazzino.liquidiRiprendiInCaricoUDC(barcodeIn, MagClass.magazzino.CodSoggCurrUser, destAL, Postazione.currIdxCella);
+ if (fatto)
+ {
+ Postazione.messaggiText = traduci("RiCaricatoUdcLiq");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssOk;
+ checkUpdateTablet(barcodeIn);
+ }
+ else
+ {
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-LIQ-001");
+ Postazione.CssClass = cssErr;
+ }
+ }
+ else
+ {
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-LIQ-005");
+ Postazione.CssClass = cssErr;
+ }
+ }
+ else
+ {
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-LIQ-004");
+ Postazione.CssClass = cssErr;
}
- }
-
- // verifico se datamatrix SIA KO (marcatura NON OK...)
- if (!marcaturaOk)
- {
- // errore corrispondenza formato Dtmx
- Postazione.messaggiText = barcodeIn;
- Postazione.warningText = traduci("ERR-DTX-012");
- Postazione.CssClass = "stileComandoKo";
}
else
{
-
- // datamatrix ok: setto css e labels
- Postazione.messaggiText = traduci("partSelected");
- Postazione.warningText = "";
- Postazione.CssClass = "stileComandoOk";
- // controllo il particolare da Dtx + check capienza celle
- if (Postazione.currCodCella != "")
- {
- // calcolo particolare!
- try
- {
- // vers 2.9 modifica per multi-datamatrix
- currParticolare = partByDtmx(true);
- //currParticolare = DataMatrix.mgr.taDecode.GetData(barcodeIn, FormatoDtmxLinea)[0].Particolare;
- }
- catch (Exception exc)
- {
- logger.lg.scriviLog(string.Format("Errore in decodifica particolare da DataMatrix:{0}dtx:{1}{0}Formato Linea:{2}{0}Eccezione:{0}{3}", Environment.NewLine, barcodeIn, exc), tipoLog.EXCEPTION);
- currParticolare = "";
- }
- if (currParticolare != "")
- {
- // 2016.01.25 aggiunta lettura codice x data-ora + linea fusione
- // controllo per recuperare da datamatrix i dati di codice linea e data fusione
- DS_DataMatrix.v_ElencoDmtxDataTable tabDmtx = DataMatrix.mgr.taVED.getByKey(barcodeIn);
- if (tabDmtx.Rows.Count > 0)
- {
- if (tabDmtx[0].EtichettaFusione != "")
- {
- try
- {
- // imposto dataOra e linea fusione
- okDTL = getDateTimeLine(tabDmtx[0].EtichettaFusione, true);
- if (okDTL)
- {
- Postazione.warningText = traduci("SetDataFus");
- }
- }
- catch
- { }
- }
- }
-
- // genera eventuale UDC del particolare su cella/posizione corrente
- qta = 1; // tanto poi si ricalcola...
- checkCreaUDC();
- // verifico se devo fare gestione con intervallo dtx... da tab config DB)
- if (memLayer.ML.configDbVal("CreaDtxByInt") == "1")
- //if (utils.obj.configDbVal("CreaDtxByInt") == "1")
- {
- // ora chiamo la stored che fa il check x tutti i particolari nell'intervallo dei Dtx associati alla cella e (se almeno 2) nel caso crea UDC
- checkIntervalloDtx();
- }
- /*-------------------------------------------------------------------------------------------------
- * chiamo la stored che in blocco
- * - associa Dtx a UDC
- * - fa controllo, se ho almeno 2 Dtx ok associo tutti i Dtx compresi nell'intervallo min-MAX
- *--------------------------------------------------------------------------------------------------
- */
- DataMatrix.mgr.taDtx2UDC.RxSetDtx2Udc(barcodeIn, MagClass.magazzino.CodSoggCurrUser, statoUDC, memLayer.ML.cdvi("IdxPosizioneRxTemp"), Postazione.currIdxCella);
-
- // 2017.07.22 svuoto barcodeIn..
- barcodeIn = "";
- }
- }
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-LIQ-002");
+ Postazione.CssClass = cssErr;
}
}
- }
- }
- else
- {
- Postazione.messaggiText = barcodeIn;
- Postazione.warningText = traduci("DtxGiaAssegnato");
- Postazione.CssClass = "stileComandoKo";
- }
- break;
- case tipoCodiceBarcode.DataMatrixDecodificato:
- // SEGNALO che ho trovato un partnumber che è un possibile datamatrix, ma che non è nell'elenco dei datamatrix acquisiti...
- Postazione.warningText = traduci("partNumFoundNoDtx");
- Postazione.CssClass = "stileComandoWarn";
- // faccio le verifiche... verifico formato datamatrix sia COMPATIBILE con formato datamatrix della linea corrente...
- if (FormatoDtmxBarcode != FormatoDtmxLinea)
- {
- // errore corrispondenza formato Dtmx
- Postazione.messaggiText = barcodeIn;
- Postazione.warningText = traduci("ERR-DTX-014");
- Postazione.CssClass = "stileComandoKo";
- }
- else
- {
- // se da web.config permesso il "force" di acquisizione
- if (!memLayer.ML.confReadBool("enableDtxNotAcq"))
- {
- //errore gestione dmtx non acquisizione NON E' permessa
- Postazione.messaggiText = barcodeIn;
- Postazione.warningText = traduci("ERR-DTX-015");
- Postazione.CssClass = "stileComandoKo";
+ else
+ {
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-LIQ-003");
+ Postazione.CssClass = cssErr;
+ }
}
else
{
- // datamatrix ok: setto css e labels
- Postazione.messaggiText = traduci("partSelected");
- Postazione.warningText = "";
- Postazione.CssClass = "stileComandoOk";
- // controllo il particolare da Dtx + check capienza celle
- if (Postazione.currCodCella != "")
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-ALF-001");
+ Postazione.CssClass = cssErr;
+ }
+ break;
+ case tipoCodiceBarcode.AL:
+ // se linea libera...
+ if (currAL == "")
+ {
+ // verifico barcode valido
+ if (checkAL(barcodeIn, "T"))
{
- // calcolo particolare!
+ // verifico AL sia con datamatrix...
+ if (checkDtxAL(barcodeIn))
+ {
+ // controllo: se avevo già letto lo steso AL è conferma presa in carico...
+ if (sourceAL == barcodeIn)
+ {
+ presaCaricoAL();
+ }
+ else
+ {
+ // mostro AL sorgente
+ sourceAL = barcodeIn;
+ fixCssAL("warning");
+ // sistemo grafica
+ Postazione.messaggiText = traduci("ConfermareAL");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssOk;
+ }
+ }
+ else
+ {
+ sourceAL = "";
+ }
+ }
+ else
+ {
+ sourceAL = "";
+ }
+ }
+ else
+ {
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-ALT-002");
+ Postazione.CssClass = cssErr;
+ }
+ break;
+ case tipoCodiceBarcode.DataMatrixTrovato:
+ string OldUDC = "";
+ int IdxPosizione = 0;
+ string NewUDC = "";
+ // verifica preliminare: se OK procedo, se è KO NON LO CONSIDERO PROPRIO
+ bool isOk = false;
+ try
+ {
+ isOk = DataMatrix.mgr.taVerifica.GetData(barcodeIn)[0].StatoDtx == "OK";
+ }
+ catch
+ { }
+ if (!isOk)
+ {
+ // non accetto Dtx e mostro errore
+ Postazione.messaggiText = barcodeIn;
+ Postazione.warningText = traduci("ERR-DTX-012");
+ Postazione.CssClass = cssErr;
+ }
+ else // PROCEDO!!!
+ {
+ // verifico DTX sia in quelli dell'AL sorgente
+ if (DataMatrix.mgr.taDtx2UDC.getByDtxAl(sourceAL, barcodeIn).Rows.Count > 0)
+ {
+ // cerco se ci sia UDC di destinazione
+ DateTime adesso = DateTime.Now;
try
{
- // vers 2.9 modifica per multi-datamatrix
- currParticolare = partByDtmx(false);
+ OldUDC = DataMatrix.mgr.taDtx2UDC.getByDtxAl(sourceAL, barcodeIn)[0].UDC;
+ IdxPosizione = MagClass.magazzino.taCartellini.getByUdc(OldUDC)[0].IdxPosizione;
+ currParticolare = MagClass.magazzino.taCartellini.getByUdc(OldUDC)[0].Particolare;
}
- catch (Exception exc)
+ catch
{
- logger.lg.scriviLog(string.Format("Errore in decodifica particolare da DataMatrix:{0}dtx:{1}{0}Formato Linea:{2}{0}Eccezione:{0}{3}", Environment.NewLine, barcodeIn, exc), tipoLog.EXCEPTION);
currParticolare = "";
}
if (currParticolare != "")
{
- // genera eventuale UDC del particolare su cella/posizione corrente
- qta = 1; // tanto poi si ricalcola...
- checkCreaUDC();
- /*-------------------------------------------------------------------------------------------------
- * chiamo la stored che in blocco
- * - associa Dtx a UDC
- * - fa controllo, se ho almeno 2 Dtx ok associo tutti i Dtx compresi nell'intervallo min-MAX
- *--------------------------------------------------------------------------------------------------
- */
- DataMatrix.mgr.taDtx2UDC.RxSetDtx2Udc(barcodeIn, MagClass.magazzino.CodSoggCurrUser, statoUDC, memLayer.ML.cdvi("IdxPosizioneRxTemp"), Postazione.currIdxCella);
+ try
+ {
+ NewUDC = MagClass.magazzino.taCartellini.getByParticolareAL(currParticolare, destAL)[0].UDC;
+ }
+ catch
+ {
+ NewUDC = "";
+ }
+ if (NewUDC == "")
+ {
+ // CASO 01: DTX in AL sorgente, particolare OK, NON C'E' UDC dest
+ procDtx_Caso01(ref OldUDC, ref NewUDC, adesso);
+ }
+ else
+ {
+ // CASO 02: DTX in AL sorgente, particolare OK, C'E' UDC dest
+ OldUDC = procDtx_Caso02(OldUDC, NewUDC);
+ }
+ checkUpdateTablet(NewUDC);
+ }
+ else
+ {
+ Postazione.messaggiText = barcodeIn;
+ Postazione.warningText = traduci("UdcNonTrovato");
+ Postazione.CssClass = cssErr;
+ }
+ }
+ // se non lo trovo in AL sorgente...
+ else
+ {
+ // faccio ulteriore verifica: se il datamatrix sia "libero" o già tra i "Missing In Action"..
+ if (DataMatrix.mgr.taDtxAvailFree.GetData(barcodeIn).Rows.Count > 0)
+ {
+ // CASO 03: DTX NON in sorgente ma libero/missing in action
+ NewUDC = procDtx_Caso03(NewUDC);
+ }
+ else
+ {
+ // CASO 04: DTX NON in sorgente e NON libero/missing in action
+ procDTX_Caso04(ref OldUDC, ref IdxPosizione, ref NewUDC);
}
}
}
- }
- break;
- default:
- Postazione.warningText = traduci("ERR-UNK-001");
- Postazione.CssClass = "stileComandoND";
- break;
+ break;
+ default:
+ Postazione.warningText = traduci("ERR-BCD-001");
+ Postazione.CssClass = cssErr;
+ break;
+ }
}
barcodeIn = "";
}
- else
- {
- Postazione.messaggiText = traduci("AttesaBCode");
- Postazione.CssClass = "stileAttesa";
- }
doUpdate();
}
+
+ #region metodi processing DataMatrix letto da BarCode
+
///
- /// recupera da barcode dataOra e linea fusione (SE presenti)
+ /// CASO 01: DTX in AL sorgente, particolare OK, NON C'E' UDC dest
///
- /// valore x decodificare dataora - linea
- /// SE si debba cercare ANCHE linea...
- ///
- private bool getDateTimeLine(string val2decode, bool readline)
+ ///
+ ///
+ ///
+ private void procDtx_Caso01(ref string OldUDC, ref string NewUDC, DateTime adesso)
{
- bool okData = false;
- bool okLinea = false;
- DateTime oldDataFus = new DateTime(1900, 1, 1);
- // imposto NUOVA dataora fusione...
- string newData = "";
- string newLinea = "";
- // tento di recuperare e verifico validità dei 2 valori separatamente...
- try
+ // verifico che NON sia modalità "rimozione" datamatrix
+ if (!chkDtxMode.Checked)
{
- newData = val2decode.Replace(memLayer.ML.AppConf["prefDateTime"], "").Substring(0, 10);
- if (newData != "")
+ // scambio UDC e prendo quello TT
+ OldUDC = OldUDC.Replace(flussoTemp, flussoAnc);
+ // calcolo codImballo
+
+ string codImballo = "";
+ try
{
- dataFus = DateTime.ParseExact(newData, "yyMMddHHmm", CultureInfo.InvariantCulture);
- okData = true;
+ codImballo = ddlImballi.SelectedValue;
+ }
+ catch
+ {
+ codImballo = memLayer.ML.cdv("CodImballoFiniti");
+ }
+ // se NON HA selezionato prendo default...
+ if (codImballo == "" || codImballo == "-")
+ {
+ codImballo = memLayer.ML.cdv("CodImballoFiniti");
+ }
+ // controllo se devo usare chiamata a stored unica (UDC + aggancio AL + cella corretta) o due chiamate
+ if (memLayer.ML.confReadBool("useStoredLiqSP"))
+ {
+ // nuova stored con AL e cella......
+ NewUDC = MagClass.magazzino.creaUdcWithAlCella(destAL, sourceAL, barcodeIn, statoUdcOut, Postazione.currCodCella, flusso, "", currParticolare, "", "", "", "", OldUDC, 0, codImballo, "U", MagClass.magazzino.CodSoggCurrUser, pezziUdc, 0, 0, adesso, 0, statoUdcOut, memLayer.ML.cdvi("IdxPosizioneFinTemp"), "IdxPosizioneFinTemp", codEventoUdcOut, "", "", adesso.Year, Request.UserHostName);
+ // registro creazione nuovo UDC
+ MagClass.magazzino.taSAO.insertQuery(adesso, MagClass.magazzino.CodSoggCurrUser, Postazione.name, Postazione.IP, NewUDC, currParticolare, "creaUDC", string.Format("Creato nuovo UDC PostLiquidi DT, qta: {0} {1}", qta, ""));
+ }
+ else
+ {
+ // oppure lo creo...
+ NewUDC = MagClass.magazzino.creaUdc(flusso, "", currParticolare, "", "", "", "", OldUDC, 0, codImballo, "U", MagClass.magazzino.CodSoggCurrUser, pezziUdc, 0, 0, adesso, 0, statoUdcOut, memLayer.ML.cdvi("IdxPosizioneFinTemp"), "IdxPosizioneFinTemp", codEventoUdcOut, "", "", adesso.Year, Request.UserHostName);
+ // registro creazione nuovo UDC
+ MagClass.magazzino.taSAO.insertQuery(adesso, MagClass.magazzino.CodSoggCurrUser, Postazione.name, Postazione.IP, NewUDC, currParticolare, "creaUDC", string.Format("Creato nuovo UDC PostLiquidi DT, qta: {0} {1}", qta, ""));
+ // lo associo all'AL!
+ MagClass.magazzino.taAL2UDC.Insert(destAL, NewUDC, adesso, MagClass.magazzino.CodSoggCurrUser);
+
+
+ DataMatrix.mgr.taDtx2UDC.UpdateUDC(NewUDC, barcodeIn, statoUdcOut, DateTime.Now, MagClass.magazzino.CodSoggCurrUser, false, false);
+ // disattivo AL (se non era già disattivo...) x evitare si possa togliere senza chiudere...
+ MagClass.magazzino.taEA.DisattivaAL(sourceAL);
+ // fix messaggi
+ Postazione.messaggiText = traduci("ConfermatoDtx");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssAtt;
}
}
- catch
+ else
{
- dataFus = oldDataFus;
+ Postazione.messaggiText = barcodeIn;
+ Postazione.warningText = traduci("UdcNonTrovato");
+ Postazione.CssClass = cssErr;
}
- if (readline)
+ }
+ ///
+ /// CASO 02: DTX in AL sorgente, particolare OK, C'E' UDC dest
+ ///
+ ///
+ ///
+ ///
+ private string procDtx_Caso02(string OldUDC, string NewUDC)
+ {
+ // verifico se sia modalità "rimozione" datamatrix x cui tolgo i datamatrix dall'UDC finale..
+ if (chkDtxMode.Checked)
{
- if (okData)
+ // chiamo stored di verifica spostabilità (ovvero: dato Dtx è nell'UDC di dest e UDC TL è ancora in carico ad AL sorgente...)
+ bool dtxInUdcDest = false;
+ bool udcSourceOk = false;
+ try
+ {
+ dtxInUdcDest = DataMatrix.mgr.taDtx2UDC.getByDtx(barcodeIn).Select(string.Format("UDC = '{0}'", NewUDC)).Length > 0;
+ // ricalcolo vecchio UDC
+ OldUDC = ((DS_DataMatrix.Dtx2UDCRow)DataMatrix.mgr.taDtx2UDC.getByDtx(barcodeIn).Select(string.Format("CodStato = '{0}'", statoUdcIn))[0]).UDC.Replace(flussoAnc, flussoTemp);
+ // verifico SE sia in carico ad AL...
+ if (OldUDC != "")
+ {
+ if (MagClass.magazzino.taAL2UDC.getByAL(sourceAL).Select(string.Format("UDC = '{0}'", OldUDC)).Length > 0)
+ {
+ udcSourceOk = true;
+ }
+ }
+ }
+ catch
+ { }
+ if (dtxInUdcDest && udcSourceOk)
+ {
+ // tolgo da AL (se caricato), faccio update e sposto su UDC sorgente...
+ DataMatrix.mgr.taDtx2UDC.UpdateUDC(OldUDC, barcodeIn, statoUdcOut, DateTime.Now, MagClass.magazzino.CodSoggCurrUser, false, false);
+ // fix messaggi
+ Postazione.messaggiText = traduci("ToltoDtxDaDest");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssAtt;
+ }
+ else
+ {
+ if (dtxInUdcDest)
+ {
+ // segno che NON posso spostare DTX
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-DTX-010");
+ Postazione.CssClass = cssAtt;
+ }
+ else
+ {
+ // segno che NON posso spostare DTX
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-DTX-011");
+ Postazione.CssClass = cssAtt;
+ }
+ }
+ }
+ else
+ {
+ // se lo trovo chiamo procedura di spostamento Dtx tra UDC sorgente --> dest (con eventuale creazione dest)
+ DataMatrix.mgr.taDtx2UDC.UpdateUDC(NewUDC, barcodeIn, statoUdcOut, DateTime.Now, MagClass.magazzino.CodSoggCurrUser, false, false);
+ // fix messaggi
+ Postazione.messaggiText = traduci("ConfermatoDtx");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssAtt;
+ }
+ // disattivo AL (se non era già disattivo...) x evitare si possa togliere senza chiudere...
+ MagClass.magazzino.taEA.DisattivaAL(sourceAL);
+ return OldUDC;
+ }
+ ///
+ /// CASO 03: DTX NON in sorgente ma libero/missing in action
+ ///
+ ///
+ ///
+ private string procDtx_Caso03(string NewUDC)
+ {
+ // controllo se sia seconda conferma
+ if (barcodeIn == lastBarcodeIn)
+ {
+ lastBarcodeIn = "";
+ // in questo caso aggiungo Dtx con la catena della storia precedente
+ try
+ {
+ // vers 2.9 modifica per multi-datamatrix
+ currParticolare = partByDtmx(true);
+ // vers vecchia
+ //currParticolare = DataMatrix.mgr.taDecode.GetData(barcodeIn, "")[0].Particolare;
+ }
+ catch
+ {
+ currParticolare = "";
+ }
+ if (currParticolare != "")
{
try
{
- newLinea = val2decode.Replace(memLayer.ML.AppConf["prefDateTime"], "").Substring(10, val2decode.Length - 10 - memLayer.ML.AppConf["prefDateTime"].Length);
- if ((newLinea != "") && (DataProxy.obj.taElPost.getByCod(newLinea).Rows.Count > 0))
- {
- lineaFus = newLinea;
- okLinea = true;
- }
- else
- {
- lineaFus = "";
- dataFus = oldDataFus;
- }
+ NewUDC = MagClass.magazzino.taCartellini.getByParticolareAL(currParticolare, destAL)[0].UDC;
}
catch
{
- lineaFus = "";
- dataFus = oldDataFus;
+ NewUDC = "";
+ }
+ if (NewUDC != "")
+ {
+ // sono in caso di forzatura Dtx, quindi controllo se l'UDC di destinazione esista e abbia qta DataMatrix associati > 0
+ if (DataMatrix.mgr.taDtx2UDC.getByUDC(NewUDC).Rows.Count > 0)
+ // vecchio controllo delal QTA del cartellino
+ //if (MagClass.magazzino.taCartellini.getByUdc(NewUDC)[0].Qta > 0)
+ {
+ // riassocio (se possibile) UDC alla nuova storia (se era un DTX x prove dimensionali post TT non cambio la sua storia ma aggiungo relazioni UDC...)
+ DataMatrix.mgr.taDtx2UDC.RiassociaDtx(NewUDC, barcodeIn, DateTime.Now, MagClass.magazzino.CodSoggCurrUser);
+ // fix messaggi
+ Postazione.messaggiText = traduci("ConfermatoDtx");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssAtt;
+ checkUpdateTablet(NewUDC);
+ }
+ else
+ {
+ // errore! UDC dest con qta == 0
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-DTX-005");
+ Postazione.CssClass = cssErr;
+ }
+ }
+ else
+ {
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-DTX-001");
+ Postazione.CssClass = cssErr;
}
}
else
{
- lineaFus = "";
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-DTX-002");
+ Postazione.CssClass = cssErr;
+ }
+ }
+ // salvo prima conferma del dtx x insert
+ else
+ {
+ lastBarcodeIn = barcodeIn;
+ Postazione.messaggiText = traduci("plsConfDtxLoad");
+ Postazione.warningText = traduci("ERR-DTX-003");
+ Postazione.CssClass = cssAdd;
+ }
+ return NewUDC;
+ }
+ ///
+ /// CASO 04: DTX NON in sorgente e NON libero/missing in action
+ ///
+ ///
+ ///
+ ///
+ private void procDTX_Caso04(ref string OldUDC, ref int IdxPosizione, ref string NewUDC)
+ {
+ // verifico se sia modalità "rimozione" datamatrix x cui tolgo i datamatrix dall'UDC finale..
+ if (chkDtxMode.Checked)
+ {
+ // chiamo stored di verifica spostabilità (ovvero: dato Dtx è nell'UDC di dest e UDC TL è ancora in carico ad AL sorgente...)
+ bool dtxInUdcDest = false;
+ bool udcSourceOk = false;
+ try
+ {
+ // ricalcolo vecchio UDC
+ OldUDC = ((DS_DataMatrix.Dtx2UDCRow)DataMatrix.mgr.taDtx2UDC.getByDtx(barcodeIn).Select(string.Format("CodStato = '{0}'", statoUdcIn))[0]).UDC.Replace(flussoAnc, flussoTemp);
+ IdxPosizione = MagClass.magazzino.taCartellini.getByUdc(OldUDC)[0].IdxPosizione;
+ currParticolare = MagClass.magazzino.taCartellini.getByUdc(OldUDC)[0].Particolare;
+ NewUDC = DataMatrix.mgr.taDtx2UDC.getByDtxAl(destAL, barcodeIn)[0].UDC;
+ // verifico SE sia in carico ad AL...
+ if (OldUDC != "")
+ {
+ if (MagClass.magazzino.taAL2UDC.getByAL(sourceAL).Select(string.Format("UDC = '{0}'", OldUDC)).Length > 0)
+ {
+ udcSourceOk = true;
+ }
+ }
+ dtxInUdcDest = DataMatrix.mgr.taDtx2UDC.getByDtx(barcodeIn).Select(string.Format("UDC = '{0}'", NewUDC)).Length > 0;
+ }
+ catch
+ { }
+ if (dtxInUdcDest && udcSourceOk)
+ {
+ // tolgo da AL (se caricato), faccio update e sposto su UDC sorgente...
+ DataMatrix.mgr.taDtx2UDC.UpdateUDC(OldUDC, barcodeIn, statoUdcOut, DateTime.Now, MagClass.magazzino.CodSoggCurrUser, false, false);
+ // fix messaggi
+ Postazione.messaggiText = traduci("ToltoDtxDaDest");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssAtt;
+ }
+ else
+ {
+ // segno che NON posso spostare DTX
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("ERR-DTX-010");
+ Postazione.CssClass = cssAtt;
}
}
else
{
- okLinea = true;
+ // devo distinguere tra il caso dei Dtx già spostati (quindi segnalare che è già in destinazione)
+
+ // verifico DTX sia in quelli dell'AL destinazione
+ if (DataMatrix.mgr.taDtx2UDC.getByDtxAl(destAL, barcodeIn).Rows.Count > 0)
+ {
+ try
+ {
+ // vers 2.9 modifica per multi-datamatrix
+ currParticolare = partByDtmx(true);
+ // vers vecchia
+ //currParticolare = DataMatrix.mgr.taDecode.GetData(barcodeIn, "")[0].Particolare;
+ }
+ catch
+ {
+ currParticolare = "";
+ }
+ NewUDC = MagClass.magazzino.taCartellini.getByParticolareAL(currParticolare, destAL)[0].UDC;
+ Postazione.messaggiText = barcodeIn;
+ Postazione.warningText = traduci("ERR-DTX-006");
+ Postazione.CssClass = cssWait;
+ // update tablet!
+ checkUpdateTablet(NewUDC);
+ }
+ // ... dal caso generico di un Dtx NON accettabile
+ else
+ {
+ // volendo qui si potrebbe distinguere tra Dtx già con stato Fin e Dtx di RX/TT non ancora preso in carico ai Liquidi
+ // errore generico!
+ Postazione.messaggiText = barcodeIn;
+ Postazione.warningText = traduci("ERR-DTX-004");
+ Postazione.CssClass = cssErr;
+ }
}
- return okData && okLinea;
+ }
+
+ #endregion
+
+ ///
+ /// prende in carico AL indicato...
+ ///
+ private void presaCaricoAL()
+ {
+ // salvo presa in carico AL
+ string AL = MagClass.magazzino.creaAssociaAlTL(sourceAL, tipoAL.AL_LI, MagClass.magazzino.CodSoggCurrUser, Postazione.currCodCella);
+ if (AL != "NA")
+ {
+ // salva ed indica nuovo AL selezionato...
+ sourceAL = AL;
+ currAL = sourceAL;
+ // nascondo elenco UDC dell'AL
+ fixCssAL("success");
+ // sistemo grafica
+ Postazione.messaggiText = traduci("CaricatoAL");
+ Postazione.warningText = "";
+ Postazione.CssClass = cssAtt;
+ }
+ else
+ {
+ // sistemo grafica
+ Postazione.messaggiText = "";
+ Postazione.warningText = traduci("[ERR-ALL-001]");
+ Postazione.CssClass = cssErr;
+ }
+ }
+ ///
+ /// resetta AL sorgente
+ ///
+ public void resetSourceAL()
+ {
+ sourceAL = "";
}
///
/// aggiorna tabella + focus a barcode
///
public void doUpdate()
{
- fixCella();
- grView.DataBind();
- // fix dataFus
- lblDTFus.Text = string.Format("{0:ddd dd/MM/yyyy, HH:mm}", dataFus);
- lblLinFus.Text = lineaFus;
- // aggiorno le qta!
- qta = pezziUdc;
- // update particolare
- updatePart();
+ setDefaultVal();
+ setVisibility();
+ grViewSource.DataBind();
+ grViewDest.DataBind();
// raise dell'evento
if (eh_reqUpdate != null)
{
@@ -644,325 +1047,363 @@ namespace GMW.WebUserControls
txtBarcode.Focus();
}
///
- /// effettua reset dati
- ///
- private void doResetData()
- {
- // resetto i dati QtaTot e particolare...
- doChecks();
- }
- ///
- /// indica il codice articolo correntemente selezionato
- ///
- protected string currParticolare
- {
- get
- {
- return memLayer.ML.StringSessionObj(string.Format("currParticolare_{0}", uid));
- }
- set
- {
- memLayer.ML.setSessionVal(string.Format("currParticolare_{0}", uid), value, memLayer.ML.confReadBool("keepParticolareSel"));
- }
- }
- ///
- /// num pezzi dell'intero AL (temporaneo)
- ///
- public int pezziUdc
- {
- get
- {
- int answ = 0;
- try
- {
- DS_magazzino.v_UdcDetailDataTable tabUdc = MagClass.magazzino.taDettUDC.getUdcDetailByIdxCella(Convert.ToInt32(lblIdxCella.Text));
- if (tabUdc.Rows.Count > 0)
- {
- answ = Convert.ToInt32(float.Parse(tabUdc.Compute("Sum(Qta)", "").ToString()));
- }
- }
- catch (Exception exc)
- {
- if (memLayer.ML.confReadInt("_logLevel") > 5) logger.lg.scriviLog(exc.ToString(), tipoLog.EXCEPTION);
- answ = 0;
- }
- return answ;
- }
- }
- ///
- /// traduce gli header delle colonne
+ /// evento selezione grView destinazione: ricarico dati!
///
///
///
- 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} / 6", totRecord);
- }
- else
- {
- lblNumRec.Text = "";
- }
- }
- ///
- /// creo il nuovo UDC da particolare corrente!
- ///
- ///
- ///
- protected void lbtAddUdc_Click(object sender, EventArgs e)
- {
- // controlli preliminari
- if (Postazione.currCodCella != "")
- {
- if (currParticolare != "")
- {
- if (qta > 0)
- {
- checkCreaUDC();
- }
- else
- {
- Postazione.warningText = traduci("ErroreNoQta");
- Postazione.CssClass = "stileComandoKo";
- }
- }
- else
- {
- Postazione.warningText = traduci("ErroreNoPart");
- Postazione.CssClass = "stileComandoKo";
- }
- }
- else
- {
- Postazione.warningText = traduci("ErroreNoSelLinea");
- Postazione.CssClass = "stileComandoKo";
- }
- doUpdate();
- }
-
- ///
- /// verifica tutti i DTX associati e se almeno 2 verifica ci siano UDC x tutti i particolari definiti nell'intervallo...
- ///
- ///
- private void checkIntervalloDtx()
- {
- // recupero elenco intervallo e se ho almeno 2 particolari faccio check...
- DS_DataMatrix.stp_conteggioDtxDataTable tabConteggi = DataMatrix.mgr.taConteggio.getByCodCella(Postazione.currCodCella);
- if (tabConteggi.Rows.Count > 1)
- {
- // salvo particoalre x riassegnarlo alla fine...
- string partSel = currParticolare;
- // per ogni cella
- foreach (DS_DataMatrix.stp_conteggioDtxRow riga in tabConteggi)
- {
- // imposto particolare corrente
- currParticolare = riga.Particolare;
- // faccio check...
- checkCreaUDC();
- }
- currParticolare = partSel;
- }
- }
- ///
- /// crea eventualmente UDC per particolare
- ///
- ///
- ///
- private void checkCreaUDC()
- {
- string newUdcChild = "";
- string noteTrim = "";
- DateTime adesso = DateTime.Now;
- // verifico se ho già quel particolare tra quelli inseriti in linea...
- try
- {
- newUdcChild = DataProxy.obj.taCartellini.getByParticolareIdxPosIdxCella(currParticolare, memLayer.ML.cdvi("IdxPosizioneRxTemp"), Postazione.currIdxCella)[0].UDC;
- }
- catch
- {
- newUdcChild = "";
- }
- if (newUdcChild == "")
- {
- // controllo NON ci siano troppi UDC in posizione... da capienza ed assegnati
- DS_magazzino.V_statoCelleCapienzaAssegnatiRow riga;
- bool piena = false;
- try
- {
- riga = MagClass.magazzino.taStatoCelle.getByIdxCella(Postazione.currIdxCella)[0];
- if (riga.UdcAssegnati >= riga.Capienza) piena = true;
- }
- catch
- {
- }
- if (!piena)
- {
- try
- {
- // forzo qta a 0 x generare nuovo UDC
- qta = 0;
- // creo nuovo UDC RX
- newUdcChild = MagClass.magazzino.creaUdc(flusso, "", currParticolare, "", "", "", "", "", 0, memLayer.ML.cdv("CodImballoRX"), "U", MagClass.magazzino.CodSoggCurrUser, qta, 0, 0, adesso, 0, statoUDC, memLayer.ML.cdvi("IdxPosizioneRxTemp"), "IdxPosizioneRxTemp", codEventoUdc, noteTrim, "", adesso.Year, Request.UserHostName);
-
- }
- catch (Exception exc)
- {
- logger.lg.scriviLog(string.Format("Errore in creazione UDC temp RX: {0}{1}", Environment.NewLine, exc));
- }
- }
- else
- {
- Postazione.warningText = traduci("ErroreAL-Full");
- doUpdate();
- }
- }
- if (newUdcChild != "")
- {
- // lo posiziono nella cella corrente...
- MagClass.magazzino.spostaUDC(memLayer.ML.StringSessionObj("CodCS"), newUdcChild, Postazione.currIdxCella, memLayer.ML.confReadBool("spostaUdcResettaLdp"), Request.UserHostName);
- Postazione.CssClass = "stileAttesa";
- Postazione.warningText = "";
- Postazione.messaggiText = traduci("partAdded");
-
- // 2014.07.10 aggiungo attributo della data di fusione...
- MagClass.magazzino.taAtt2UDC.upsertVal(newUdcChild, "DF", string.Format("{0:yyyy/MM/dd HH:mm}", dataFus), adesso, MagClass.magazzino.CodSoggCurrUser);
-
- // 2015.06.03 aggiunto attributo linea fusione!
- MagClass.magazzino.taAtt2UDC.upsertVal(newUdcChild, "LF", string.Format("{1} - {0:yy/MM/dd HH:mm}", dataFus, lineaFus), adesso, MagClass.magazzino.CodSoggCurrUser);
-
- currParticolare = "";
- doUpdate();
- }
- }
- ///
- /// evento selezione: ricarico dati!
- ///
- ///
- ///
- protected void grView_SelectedIndexChanged(object sender, EventArgs e)
+ protected void grViewDest_SelectedIndexChanged(object sender, EventArgs e)
{
// ricarico dati dell'UDC come particolare e quantità...
- string UDC = grView.SelectedDataKey["UDC"].ToString();
- if (MagClass.magazzino.checkUDC(UDC))
+ currUDC = grViewDest.SelectedDataKey["UDC"].ToString();
+ int qtaDtx = 0;
+ if (MagClass.magazzino.checkUDC(currUDC))
{
- currParticolare = DataProxy.obj.taCartellini.stp_getByUdc(UDC)[0].Particolare;
+ currParticolare = DataProxy.obj.taCartellini.stp_getByUdc(currUDC)[0].Particolare;
+ qta = Convert.ToInt32(DataProxy.obj.taCartellini.stp_getByUdc(currUDC)[0].Qta);
+ qtaDtx = Convert.ToInt32(MagClass.magazzino.taA2U2D.getByUDC(currUDC)[0].QtaDtx);
+ // imposto particolare...
+ lblPart.Text = currParticolare;
+ ddlImballi.DataBind();
}
Postazione.messaggiText = traduci("partSelected");
Postazione.warningText = "";
Postazione.CssClass = "stileComandoOk";
+ setVisibility();
doUpdate();
+ // fisso focus su note!
+ txtNote.Focus();
+ checkUpdateTablet(currUDC);
}
///
- /// Numero cesta inserito
+ /// effettua check e update tablet
///
- public string numCesta
+ ///
+ private void checkUpdateTablet(string UDC)
{
- get
+ if (memLayer.ML.confReadBool("updateTablet"))
{
- return txtCesta.Text.Trim();
- }
- set
- {
- txtCesta.Text = value;
+ try
+ {
+ string particolare = "";
+ int qtaDtx = 0;
+ int qtaTot = 0;
+ if (MagClass.magazzino.checkUDC(UDC))
+ {
+ DS_Applicazione.ElencoCartelliniRow riga = DataProxy.obj.taCartellini.stp_getByUdc(UDC)[0];
+ particolare = string.Format("{0} - {1}", riga.Particolare, riga.DescParticolare);
+ qtaTot = Convert.ToInt32(DataProxy.obj.taCartellini.stp_getByUdc(UDC)[0].Qta);
+ qtaDtx = Convert.ToInt32(MagClass.magazzino.taA2U2D.getByUDC(UDC)[0].QtaDtx);
+ }
+ // update tablet
+ string css = "";
+ string mess = "";
+ if (qtaDtx > qtaTot)
+ {
+ css = cssErr;
+ mess = traduci("ERR-QTY-001");
+ }
+ else if (qtaDtx == qtaTot)
+ {
+ css = cssOk;
+ mess = traduci("Ready4Print");
+ }
+ else
+ {
+ css = cssWait;
+ mess = "-";
+ }
+ sendUpdateTablet(UDC, particolare, mess, qtaDtx.ToString(), qtaTot.ToString(), string.Format("({0})", qtaDtx - qtaTot), cssOk, cssAtt, css);
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog(string.Format("Errore in fase di check dati x tablet: {0}{1}", Environment.NewLine, exc));
+ }
}
}
///
- /// evento cambio num cesta/grappolo
+ /// prende in carico AL selezionato
///
///
///
- protected void txtCesta_TextChanged(object sender, EventArgs e)
+ protected void lbtPrendeCaricoAL_Click(object sender, EventArgs e)
{
- txtCesta.Text = txtCesta.Text.ToUpper().Trim().PadLeft(4, '0').Substring(0, 4);
+ presaCaricoAL();
doUpdate();
}
///
+ /// chiude l'AL in carico
+ ///
+ ///
+ ///
+ protected void lbtChiudiAL_Click(object sender, EventArgs e)
+ {
+ // controllo se UDC rimasti sono tutti a zero e NON ci sono altri datamatrix
+ if (assiemeIsEmpty(sourceAL) || forceDelete)
+ {
+ // chiamo stored x sistemazione AL:
+ MagClass.magazzino.eliminaEmptyAL(sourceAL, MagClass.magazzino.CodSoggCurrUser);
+ Postazione.warningText = "";
+ Postazione.messaggiText = "";
+ Postazione.CssClass = cssAtt;
+ // ricarico forzato!
+ Response.Redirect("PostLiquidi_DT");
+ }
+ else
+ {
+ // altrimenti chiedo conferma per fase spostamenti forzati...
+ forceDelete = true;
+ Postazione.warningText = traduci("ConfChiusConAnomDtx");
+ Postazione.messaggiText = traduci("RichConfChiusAlDtx");
+ Postazione.CssClass = cssErr;
+ }
+ doUpdate();
+ }
+ ///
+ /// variabile force delete salvata...
+ ///
+ protected bool forceDelete
+ {
+ get
+ {
+ return memLayer.ML.BoolSessionObj(string.Format("ForceDelAL_{0}", uid));
+ }
+ set
+ {
+ memLayer.ML.setSessionVal(string.Format("ForceDelAL_{0}", uid), value);
+ }
+ }
+ ///
+ /// Verifica se Assieme sia vuoto (no DTX negli UDC)
+ ///
+ /// Codice AL
+ ///
+ protected bool assiemeIsEmpty(string AL)
+ {
+ bool answ = false;
+ try
+ {
+ answ = DataMatrix.mgr.taDtx2UDC.getByAL(AL).Rows.Count == 0;
+ }
+ catch { }
+ return answ;
+ }
+ ///
+ /// reset della selezione
+ ///
+ ///
+ ///
+ protected void btnReset_Click(object sender, EventArgs e)
+ {
+ grViewDest.SelectedIndex = -1;
+ qta = 0;
+ currUDC = "";
+ setVisibility();
+ doUpdate();
+ }
+ ///
+ /// update Qty x UDC selezionato...
+ ///
+ ///
+ ///
+ protected void lbtUpdQty_Click(object sender, EventArgs e)
+ {
+ MagClass.magazzino.taCartellini.updateQty(currUDC, MagClass.magazzino.CodSoggCurrUser, "U", codEventoUdcOut, qta);
+ // fix tablet
+ checkUpdateTablet(currUDC);
+ currUDC = "";
+ currParticolare = "";
+ grViewDest.SelectedIndex = -1;
+ doUpdate();
+ }
+ ///
+ /// richiesta (ri)stampa UDC
+ ///
+ ///
+ ///
+ public void ristampa()
+ {
+ bool fatto = false;
+ fatto = MagClass.magazzino.ristampaUdc(udcReq, Postazione.printer, Request.UserHostName);
+ // registro ri-stampa UDC
+ if (fatto) MagClass.magazzino.taSAO.insertQuery(DateTime.Now, MagClass.magazzino.CodSoggCurrUser, Postazione.name, Postazione.IP, udcReq, "", "stampaUDC", string.Format("Ri-Stampato UDC Dtx {0} su linea {1}", currUDC, Postazione.currCodLinea));
+ }
+ ///
/// verifica visibilità btn stampa UDC
///
private void verificaBtnStampa()
{
bool showBtnStampa = false;
- // se ho ALMENO 1 UDC
- DS_magazzino.V_statoCelleCapienzaAssegnatiRow riga;
- bool hasUdc = false;
- try
+ // se ho selezionato udc...
+ if (currUDC != "")
{
- riga = MagClass.magazzino.taStatoCelle.getByIdxCella(Postazione.currIdxCella)[0];
- if (riga.UdcAssegnati > 0) hasUdc = true;
- }
- catch
- {
- }
- if (hasUdc)
- {
- // se ho num cesta...
- if (numCesta != "")
+ DS_magazzino.v_A2U2DRow riga;
+ int qtaUDC = 0;
+ int qtaDtx = 0;
+ try
{
- showBtnStampa = true;
+ riga = MagClass.magazzino.taA2U2D.getByUDC(currUDC)[0];
+ qtaUDC = Convert.ToInt32(riga.Qta);
+ qtaDtx = riga.QtaDtx;
+ }
+ catch
+ { }
+ if (qtaUDC > 0)
+ {
+ // se le qta voluta e dtx sono uguali...
+ if (qtaUDC == qtaDtx)
+ {
+ showBtnStampa = true;
+ }
}
}
divNote.Visible = showBtnStampa;
}
///
- /// genera e stampa AL
+ /// fornisce in output la corretta classe css x icona
+ ///
+ ///
+ ///
+ ///
+ public string cssGlyphByQty(object _qta, object _qtaDtx)
+ {
+ string answ = "glyphicon glyphicon-pencil btn-lg";
+ int qtaUDC = 0;
+ int qtaDtx = -1;
+ try
+ {
+ qtaUDC = Convert.ToInt32(_qta);
+ }
+ catch { }
+ try
+ {
+ qtaDtx = Convert.ToInt32(_qtaDtx);
+ }
+ catch { }
+ if (qtaUDC == qtaDtx)
+ {
+ answ = "glyphicon glyphicon-print btn-lg";
+ }
+ return answ;
+ }
+ ///
+ /// effettua processo di sistemazione UDC e stampa
///
///
///
- protected void lbtGeneraAl_Click(object sender, EventArgs e)
+ protected void lbtStampaUDC_Click(object sender, EventArgs e)
{
// verifico postazione sia valida...
if (Postazione.name != "" && Postazione.IP != "" && Postazione.currCodCella != "")
{
- /* generazione e stampa AL */
- string AL = "";
+ // in base ad AL sorgente e destinazione, fa le operazioni di update x UDC e poi lo stampa
+ bool fatto = false;
string noteTrim = txtNote.Text.Trim();
- // creazione AL ed associazione UDC / spostamento...
try
{
- AL = MagClass.magazzino.creaAssociaAlRxNt(tipoAL.AL_RxNt, Postazione.currCodCella, MagClass.magazzino.CodSoggCurrUser, DateTime.Now.Year, numCesta, noteTrim);
+ // update UDC!
+ fatto = MagClass.magazzino.liquidiFullUpdate(sourceAL, flussoAnc, currUDC, ddlImballi.SelectedValue, noteTrim, MagClass.magazzino.CodSoggCurrUser);
}
catch
{ }
- // lancio stampa
- MagClass.magazzino.stampaAL(AL, Postazione.printer, Request.UserHostName);
- // registro creazione AL
- MagClass.magazzino.taSAO.insertQuery(DateTime.Now, MagClass.magazzino.CodSoggCurrUser, Postazione.name, Postazione.IP, AL, "", "creaAL", string.Format("Creato AL RX su linea {0}, note: {1} ", Postazione.currCodLinea, noteTrim));
- Postazione.CssClass = "stileAttesa";
- Postazione.warningText = "";
- Postazione.messaggiText = traduci("cartAlStampato");
- txtCesta.Text = "";
- // resetto particolare...
- currParticolare = "";
+ if (fatto)
+ {
+ // lancio stampa
+ MagClass.magazzino.stampaUdc(currUDC, Postazione.printer, tipoCartellino.cartFinitiSP, Request.UserHostName);
+ // registro creazione AL
+ MagClass.magazzino.taSAO.insertQuery(DateTime.Now, MagClass.magazzino.CodSoggCurrUser, Postazione.name, Postazione.IP, currUDC, currParticolare, "stampaUDC", string.Format("Stampato UDC Dtx {0} su linea {1}, note: {2} ", currUDC, Postazione.currCodLinea, noteTrim));
+ Postazione.CssClass = cssAtt;
+ Postazione.warningText = "";
+ Postazione.messaggiText = traduci("cartAlStampato");
+ // calcolo particolare completo di descrizione
+ DS_Applicazione.ElencoCartelliniRow riga = DataProxy.obj.taCartellini.stp_getByUdc(currUDC)[0];
+ string particolare = string.Format("{0} - {1}", riga.Particolare, riga.DescParticolare);
+ // indico su tablet come fatto
+ sendUpdateTablet(currUDC, particolare, traduci("cartAlStampato"), qta.ToString(), qta.ToString(), "", cssOk, cssOk, cssOk);
+ // resetto...
+ grViewDest.SelectedIndex = -1;
+ qta = 0;
+ currUDC = "";
+ }
doUpdate();
}
else
{
// ricarico che mi manca postazione!
- Postazione.CssClass = "stileAttesa";
+ Postazione.CssClass = cssAtt;
Postazione.warningText = traduci("ERR-POS-001");
Postazione.messaggiText = "";
Response.Redirect(user_std.pagCorrente);
}
}
-
- protected void ods_Deleted(object sender, ObjectDataSourceStatusEventArgs e)
+ ///
+ /// udc da stampare
+ ///
+ protected string udcReq
{
- // aggiorno le qta!
- qta = pezziUdc;
+ get
+ {
+ return memLayer.ML.StringSessionObj("udcSelSAO");
+ }
}
+ ///
+ /// Effettua update della pagina tablet RT collegata alla postazione liquidi
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ ///
+ protected void sendUpdateTablet(string UDC, string particolare, string mess, string qtaIn, string qtaTot, string qtaRim, string css1, string css2, string css3)
+ {
+ if (memLayer.ML.confReadBool("updateTablet"))
+ {
+ try
+ {
+ string answ = SteamWare.urlUtils.callUrl(string.Format(@"{0}/MBC.aspx?txt01={1}&txt02={2}&txt03={3}&txt04={4}&txt05={5}&txt06={6}&css1={7}&css2={8}&css3={9}", memLayer.ML.confReadString("urlRT"), UDC, particolare, mess, qtaIn, qtaTot, qtaRim, css1, css2, css3), false);
+ }
+ catch (Exception exc)
+ {
+ logger.lg.scriviLog(string.Format("Errore in chiamata a pagina Tablet: {0}{1}", Environment.NewLine, exc));
+ barcodeIn = "";
+ }
+ }
+ }
+ ///
+ /// preseleziono (se possibile) imballo...
+ ///
+ ///
+ ///
+ protected void ddlImballi_DataBound(object sender, EventArgs e)
+ {
+ selezionaImballo();
+ }
+ ///
+ /// seleziona imballo corretto
+ ///
+ private void selezionaImballo()
+ {
+ string codImb = "";
+ // cerco se c'è un imballo x particolare corrente...
+ if (currParticolare != "")
+ {
+ codImb = lastCodImb;
+ }
+ else
+ {
+ codImb = memLayer.ML.cdv("CodImballoFiniti");
+ }
+ try
+ {
+ // preseleziono
+ ddlImballi.SelectedValue = codImb;
+ }
+ catch
+ { }
+ }
+
}
}
\ No newline at end of file
diff --git a/GMW/WebUserControls/mod_PostFin_DT.ascx.designer.cs b/GMW/WebUserControls/mod_PostFin_DT.ascx.designer.cs
index c2d0b6ab..0e4fc437 100644
--- a/GMW/WebUserControls/mod_PostFin_DT.ascx.designer.cs
+++ b/GMW/WebUserControls/mod_PostFin_DT.ascx.designer.cs
@@ -31,58 +31,76 @@ namespace GMW.WebUserControls {
protected global::Microsoft.AspNet.Web.Optimization.WebForms.BundleReference BundleReference2;
///
- /// Controllo grView.
+ /// Controllo divAL.
///
///
/// 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.GridView grView;
+ protected global::System.Web.UI.HtmlControls.HtmlGenericControl divAL;
///
- /// Controllo ods.
+ /// Controllo lblAL.
///
///
/// 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.ObjectDataSource ods;
+ protected global::System.Web.UI.WebControls.Label lblAL;
///
- /// Controllo lblIdxCella.
+ /// Controllo grViewSource.
///
///
/// 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 lblIdxCella;
+ protected global::System.Web.UI.WebControls.GridView grViewSource;
///
- /// Controllo lblNumRec.
+ /// Controllo odsAL.
///
///
/// 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 lblNumRec;
+ protected global::System.Web.UI.WebControls.ObjectDataSource odsAL;
///
- /// Controllo lblDTFus.
+ /// Controllo lbtPrendeCaricoAL.
///
///
/// 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 lblDTFus;
+ protected global::System.Web.UI.WebControls.LinkButton lbtPrendeCaricoAL;
///
- /// Controllo lblLinFus.
+ /// Controllo lbtChiudiAL.
///
///
/// 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 lblLinFus;
+ protected global::System.Web.UI.WebControls.LinkButton lbtChiudiAL;
+
+ ///
+ /// Controllo div1.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlGenericControl div1;
+
+ ///
+ /// Controllo chkDtxMode.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlInputCheckBox chkDtxMode;
///
/// Controllo lblParticolareAttivo.
@@ -157,22 +175,49 @@ namespace GMW.WebUserControls {
protected global::System.Web.UI.WebControls.TextBox txtNote;
///
- /// Controllo lbtGeneraAl.
+ /// Controllo lbtStampaUDC.
///
///
/// 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 lbtGeneraAl;
+ protected global::System.Web.UI.WebControls.LinkButton lbtStampaUDC;
///
- /// Controllo lbtGeneraUDC.
+ /// Controllo lblDestAL.
///
///
/// 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 lbtGeneraUDC;
+ protected global::System.Web.UI.WebControls.Label lblDestAL;
+
+ ///
+ /// Controllo grViewDest.
+ ///
+ ///
+ /// 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.GridView grViewDest;
+
+ ///
+ /// Controllo odsDestAL.
+ ///
+ ///
+ /// 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.ObjectDataSource odsDestAL;
+
+ ///
+ /// Controllo divQta.
+ ///
+ ///
+ /// Campo generato automaticamente.
+ /// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
+ ///
+ protected global::System.Web.UI.HtmlControls.HtmlGenericControl divQta;
///
/// Controllo txtQta.
@@ -184,21 +229,48 @@ namespace GMW.WebUserControls {
protected global::System.Web.UI.WebControls.TextBox txtQta;
///
- /// Controllo lbtAddUdc.
+ /// Controllo lbtUpdQty.
///
///
/// 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 lbtAddUdc;
+ protected global::System.Web.UI.WebControls.LinkButton lbtUpdQty;
///
- /// Controllo txtCesta.
+ /// Controllo divImballi.
///
///
/// 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 txtCesta;
+ protected global::System.Web.UI.HtmlControls.HtmlGenericControl divImballi;
+
+ ///
+ /// Controllo lblPart.
+ ///
+ ///
+ /// 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 lblPart;
+
+ ///
+ /// Controllo ddlImballi.
+ ///
+ ///
+ /// 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.DropDownList ddlImballi;
+
+ ///
+ /// Controllo odsImballi.
+ ///
+ ///
+ /// 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.ObjectDataSource odsImballi;
}
}