1006 lines
42 KiB
C#
1006 lines
42 KiB
C#
using GMW_data;
|
|
using SteamWare;
|
|
using System;
|
|
using System.Web.UI;
|
|
using System.Web.UI.WebControls;
|
|
|
|
namespace GMW.WebUserControls
|
|
{
|
|
/// <summary>
|
|
/// Pagina finiti DT
|
|
/// </summary>
|
|
public partial class mod_PostFin_DT : GMW_data.UserControlBCodeMan
|
|
{
|
|
/// <summary>
|
|
/// Imposta variabili specifiche classe
|
|
/// </summary>
|
|
public override void setupVariabili()
|
|
{
|
|
flusso = "FI";
|
|
flussoAnc = "TT";
|
|
// temporaneo TL (Trattati/Liquidi)
|
|
flussoTemp = "TL";
|
|
statoUDC = "Fin";
|
|
statoUDC_pre = "Tratt";
|
|
eventoUDC = "UDC_TL_DT"; //UDC_FINWIP ???
|
|
eventoUDC_qta = "UDC_QTY";
|
|
eventoUDC_temp = "UDC_TRATT";
|
|
codLineaKo = "W8200";
|
|
QtaImballoStd = memLayer.ML.cdvi("QtaImballoFiniti");
|
|
CodImballoStd = memLayer.ML.cdv("CodImballoFiniti");
|
|
sVarIdxCella = "IdxCellaLineaFinitiDtx";
|
|
IdxPosizioneIn = memLayer.ML.cdvi("IdxPosizioneTrattati");
|
|
IdxPosizioneOut = memLayer.ML.cdvi("IdxPosizioneFiniti");
|
|
|
|
|
|
tipoUdcLinea = "Finito";
|
|
IdxPosizioneOutTempName = "IdxPosizioneFinTemp";
|
|
IdxPosizioneOutTemp = memLayer.ML.cdvi(IdxPosizioneOutTempName);
|
|
tipoCartCurr = tipoCartellino.cartFiniti;
|
|
enableBCodeParticolare = false;
|
|
}
|
|
/// <summary>
|
|
/// Codice AL in carico
|
|
/// </summary>
|
|
public override string sourceAL
|
|
{
|
|
get
|
|
{
|
|
return lblAL.Text.Trim();
|
|
}
|
|
set
|
|
{
|
|
lblAL.Text = value;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Codice AL della cella corrente
|
|
/// </summary>
|
|
public override string destAL
|
|
{
|
|
get
|
|
{
|
|
return lblDestAL.Text.Trim();
|
|
}
|
|
set
|
|
{
|
|
lblDestAL.Text = value;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// qta pezzi x UDC
|
|
/// </summary>
|
|
public override int qta
|
|
{
|
|
get
|
|
{
|
|
int qta = 0;
|
|
try
|
|
{
|
|
qta = Convert.ToInt32(txtQta.Text.Trim());
|
|
}
|
|
catch
|
|
{ }
|
|
return qta;
|
|
}
|
|
set
|
|
{
|
|
txtQta.Text = value.ToString();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// valore barcode
|
|
/// </summary>
|
|
public override string barcodeIn
|
|
{
|
|
get
|
|
{
|
|
return txtBarcode.Text.Trim();
|
|
}
|
|
set
|
|
{
|
|
txtBarcode.Text = value;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// caricamento pagina
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
public override void Page_Load(object sender, EventArgs e)
|
|
{
|
|
// inizializzazione base!
|
|
base.Page_Load(sender, e);
|
|
// inizializzazione custom...
|
|
if (!Page.IsPostBack)
|
|
{
|
|
currUDC = "";
|
|
forceDelete = false;
|
|
setDefaultVal();
|
|
#if false
|
|
odsAL.DataBind();
|
|
#endif
|
|
grViewSource.DataBind();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// imposta i valori di default all'avvio
|
|
/// </summary>
|
|
private void setDefaultVal()
|
|
{
|
|
sourceAL = currAL != "" ? currAL : "";
|
|
destAL = AlByCella;
|
|
}
|
|
/// <summary>
|
|
/// Sistema css del panel AL
|
|
/// </summary>
|
|
/// <param name="tipoPanel"></param>
|
|
private void fixCssAL(string tipoPanel)
|
|
{
|
|
divAL.Attributes.Remove("class");
|
|
divAL.Attributes.Add("class", string.Format("panel panel-{0} panel-sm", tipoPanel));
|
|
}
|
|
/// <summary>
|
|
/// sistema modalità input
|
|
/// </summary>
|
|
public override void setVisibility()
|
|
{
|
|
bool showBtn = false;
|
|
if (sourceAL != "" && currAL == "")
|
|
{
|
|
showBtn = true;
|
|
fixCssAL("warning");
|
|
}
|
|
else
|
|
{
|
|
fixCssAL("success");
|
|
}
|
|
// ora controllo btn quantità
|
|
showBtn = false;
|
|
if (grViewDest.SelectedIndex >= 0)
|
|
{
|
|
showBtn = true;
|
|
}
|
|
divQta.Visible = showBtn;
|
|
divImballi.Visible = showBtn;
|
|
if (showBtn)
|
|
{
|
|
selezionaImballo();
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// reset maschera...
|
|
/// </summary>
|
|
protected void doReset()
|
|
{
|
|
// resetta
|
|
fixCssAL("warning");
|
|
lastBarcodeIn = "";
|
|
Postazione.messaggiText = "";
|
|
Postazione.warningText = "";
|
|
Postazione.CssClass = cssAtt;
|
|
doUpdate();
|
|
}
|
|
/// <summary>
|
|
/// Verifica l'AL se sia ok x procedere:
|
|
/// - Attivo
|
|
/// </summary>
|
|
/// <param name="AL"></param>
|
|
/// <param name="Tipo">T/L</param>
|
|
/// <returns></returns>
|
|
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 = cssOk;
|
|
}
|
|
else
|
|
{
|
|
Postazione.warningText = traduci("ErroreAlNonTtAttivo");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// Verifica l'AL se abbia datamatrix
|
|
/// </summary>
|
|
/// <param name="AL"></param>
|
|
/// <returns></returns>
|
|
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 = cssErr;
|
|
}
|
|
else
|
|
{
|
|
Postazione.warningText = "";
|
|
Postazione.CssClass = cssOk;
|
|
}
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// Recupera num trattamento da UDC
|
|
/// </summary>
|
|
/// <param name="UDC"></param>
|
|
/// <returns></returns>
|
|
public string trattUdc(object UDC)
|
|
{
|
|
string answ = "";
|
|
try
|
|
{
|
|
DS_magazzino.Attr2UDCRow riga = (DS_magazzino.Attr2UDCRow)MagClass.magazzino.taAtt2UDC.getByUdc(UDC.ToString()).Select("CodAttr = 'NT'")[0];
|
|
answ = riga.ValAttr;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// controlla se ci sia un barcode e cosa farne...
|
|
/// </summary>
|
|
public override void checkBarcode()
|
|
{
|
|
if (barcodeIn != "")
|
|
{
|
|
Postazione.messaggiText = string.Format("{0}: {1}", traduci("BCodeIns"), barcodeIn);
|
|
tipoCodiceBarcode tipoBC = MagClass.tipoBCode_L5(barcodeIn);
|
|
// per prima cosa se non ho almeno un UDC trattamenti od un AL (che ne porti uno) sollevo un errore...
|
|
int numUdcCella = 0;
|
|
try
|
|
{
|
|
numUdcCella = MagClass.magazzino.taDettUDC.getUdcDetailByIdxCella(idxCella).Rows.Count;
|
|
}
|
|
catch
|
|
{ }
|
|
if (tipoBC == tipoCodiceBarcode.ND)
|
|
{
|
|
// sollevo errore, in primis va caricato qualche UDC sorgente...
|
|
Postazione.warningText = traduci("ERR-BCD-001");
|
|
Postazione.CssClass = cssErr;
|
|
sendUpdateTablet("ND", "-", traduci("ERR-UDC-MIS-TT01"), "-", "-", "-", cssErr, cssErr, cssErr);
|
|
}
|
|
else if (numUdcCella == 0 && !(tipoBC == tipoCodiceBarcode.AL || tipoBC == tipoCodiceBarcode.UDC))
|
|
{
|
|
// sollevo errore, in primis va caricato qualche UDC sorgente...
|
|
Postazione.warningText = traduci("ERR-UDC-MIS-TT01");
|
|
Postazione.CssClass = cssErr;
|
|
sendUpdateTablet("ND", "-", traduci("ERR-UDC-MIS-TT01"), "-", "-", "-", cssErr, cssErr, cssErr);
|
|
}
|
|
else
|
|
{
|
|
switch (tipoBC)
|
|
{
|
|
case tipoCodiceBarcode.Imballo:
|
|
// cerco di selezionare!
|
|
try
|
|
{
|
|
ddlImballi.SelectedValue = barcodeIn;
|
|
}
|
|
catch
|
|
{
|
|
Postazione.warningText = traduci("ERR-IMB-001");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
break;
|
|
case tipoCodiceBarcode.Comando:
|
|
// se è reset cancello tutto!
|
|
if (barcodeIn == memLayer.ML.cdv("cmdReset"))
|
|
{
|
|
doReset();
|
|
}
|
|
break;
|
|
case tipoCodiceBarcode.UDC:
|
|
// controllo di avere destAL valido, sennò ricarico pagina...
|
|
if (destAL.Length <= 5)
|
|
{
|
|
//Postazione.messaggiText = "";
|
|
Postazione.warningText = traduci("ERR-ALF-001");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
// controllo se sia un UDC valido...
|
|
if (!MagClass.magazzino.checkUDC(barcodeIn))
|
|
|
|
{
|
|
//Postazione.messaggiText = "";
|
|
Postazione.warningText = traduci("ERR-LIQ-003");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
// recupero UDC!
|
|
DS_magazzino.ElencoCartelliniRow cartUDC = MagClass.magazzino.taCartellini.getByUdc(barcodeIn)[0];
|
|
// verifico che il particolare dell'UDC sia compatibile con i formati datamatrix permessi sulla linea...
|
|
if (FormatoDtmxPartic(cartUDC.Particolare) != FormatoDtmxLinea)
|
|
{
|
|
//Postazione.messaggiText = "UDC: " + barcodeIn;
|
|
Postazione.warningText = traduci("ERR-UDC-DTX-001");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
// verifico UDC in ingresso NON abbia DTX associati
|
|
int numDtx = DataMatrix.mgr.taDtx2UDC.getByUDC(barcodeIn).Count;
|
|
if (numDtx > 0)
|
|
{
|
|
Postazione.warningText = traduci("ERR-UDC-DTX-002");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
// verifico stato (statoUdc/statoUdc_pre) e posizioni (IdxPosizioneIn/IdxPosizioneOut): tratt a sx da consumare, fin a dx da stampare/ricaricare...
|
|
if (cartUDC.CodStato == statoUDC_pre && cartUDC.IdxPosizione == IdxPosizioneIn)
|
|
{
|
|
// verifico che abbia attributo trattamento
|
|
int numTratt = MagClass.magazzino.taAtt2UDC.getByUdc(barcodeIn).Select("CodAttr = 'NT'").Length;
|
|
if (numTratt == 0)
|
|
{
|
|
Postazione.warningText = traduci("ERR-UDC-DTX-003");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
currParticolare = cartUDC.Particolare;
|
|
origParticolare = cartUDC.Particolare;
|
|
// procedo a caricare UDC a SX, eventualmente consumando precedente...
|
|
if (currParticolare != "")
|
|
{
|
|
|
|
int idxCellaCurr = 0;
|
|
try
|
|
{
|
|
idxCellaCurr = MagClass.magazzino.taPosUdcCorr.getByUDC(barcodeIn)[0].IdxCella;
|
|
}
|
|
catch
|
|
{ }
|
|
string codBloccoCurr = "";
|
|
int idxBlocco = 0;
|
|
try
|
|
{
|
|
idxBlocco = MagClass.magazzino.taCelle.getByIdxCella(idxCellaCurr)[0].IdxBlocco;
|
|
codBloccoCurr = MagClass.magazzino.taBlocchi.getByIdx(idxBlocco)[0].CodBlocco;
|
|
}
|
|
catch
|
|
{ }
|
|
// 2015.01.12 controllo UDC non già su altre postazioni...
|
|
if (codBloccoCurr == Postazione.currCodBlocco && idxCellaCurr != Postazione.currIdxCella)
|
|
{
|
|
Postazione.messaggiText += " - Attenzione, UDC già caricato su ALTRA LINEA!";
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
processUdcInOut(idxCellaCurr);
|
|
}
|
|
}
|
|
//Postazione.messaggiText += traduci("UDC-TRATT-ACQ");
|
|
//Postazione.CssClass = cssOk;
|
|
}
|
|
}
|
|
else if (cartUDC.CodStato == statoUDC && cartUDC.IdxPosizione == IdxPosizioneOut)
|
|
{
|
|
// ricarico UDC SOLO SE ha già attributo "XX"
|
|
|
|
|
|
|
|
Postazione.warningText = traduci("UDC-FIN-REL");
|
|
Postazione.CssClass = cssOk;
|
|
|
|
#if false
|
|
// 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)
|
|
{
|
|
// 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;
|
|
}
|
|
#endif
|
|
}
|
|
else
|
|
{
|
|
//Postazione.messaggiText = "";
|
|
Postazione.warningText = traduci("ERR-LIQ-002");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
break;
|
|
case tipoCodiceBarcode.DataMatrixTrovato:
|
|
Postazione.messaggiText = barcodeIn;
|
|
string udcDest = "";
|
|
// 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.warningText = traduci("ERR-DTX-012");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
// recupero particolare UDC caricati (trattati!!!)
|
|
try
|
|
{
|
|
currParticolare = MagClass.magazzino.taDettUDC.getUdcDetailByIdxCella(idxCella)[0].Particolare;
|
|
}
|
|
catch
|
|
{ }
|
|
// verifico NON sia associato ad ALCUN UDC
|
|
bool dtxFree = false;
|
|
bool dtxInDestAL = false;
|
|
try
|
|
{
|
|
dtxFree = DataMatrix.mgr.taDtx2UDC.getByDtx(barcodeIn).Count == 0;
|
|
}
|
|
catch
|
|
{ }
|
|
try
|
|
{
|
|
dtxInDestAL = DataMatrix.mgr.taDtx2UDC.getByDtxAl(destAL, barcodeIn).Rows.Count == 1;
|
|
}
|
|
catch
|
|
{ }
|
|
if (!dtxFree && !dtxInDestAL)
|
|
{
|
|
Postazione.warningText = traduci("ERR-DTX-017");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
// verifico particolare UDC == particolare DTX
|
|
string partDtx = "";
|
|
try
|
|
{
|
|
partDtx = DataMatrix.mgr.taDtxAcq.getByKey(barcodeIn)[0].Particolare;
|
|
}
|
|
catch
|
|
{ }
|
|
if (currParticolare != partDtx)
|
|
{
|
|
Postazione.warningText = traduci("ERR-UDC-DTX-004");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
DateTime adesso = DateTime.Now;
|
|
if (currParticolare != "")
|
|
{
|
|
try
|
|
{
|
|
udcDest = MagClass.magazzino.taCartellini.getByParticolareAL(currParticolare, destAL)[0].UDC;
|
|
}
|
|
catch
|
|
{
|
|
udcDest = "";
|
|
}
|
|
if (udcDest == "")
|
|
{
|
|
// crea UDC DEST...
|
|
udcDest = checkCreaUDC();
|
|
}
|
|
procDtx(udcDest);
|
|
checkUpdateTablet(udcDest);
|
|
}
|
|
else
|
|
{
|
|
Postazione.warningText = traduci("UdcNonTrovato");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
break;
|
|
default:
|
|
Postazione.warningText = traduci("ERR-BCD-001");
|
|
Postazione.CssClass = cssErr;
|
|
break;
|
|
}
|
|
}
|
|
barcodeIn = "";
|
|
}
|
|
doUpdate();
|
|
}
|
|
|
|
#region metodi processing DataMatrix letto da BarCode
|
|
|
|
/// <summary>
|
|
/// max quantità da anagrafica...
|
|
/// </summary>
|
|
public int maxQta
|
|
{
|
|
get
|
|
{
|
|
int answ = 0;
|
|
// calcola qtaMax da particoalre corrente...
|
|
try
|
|
{
|
|
answ = DataProxy.obj.taAnagPartImb.getByStatoParticolare(CodCs, statoUDC, currParticolare)[0].QtaStd;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// processo DTX...
|
|
/// </summary>
|
|
/// <param name="udcDest"></param>
|
|
/// <returns></returns>
|
|
private bool procDtx(string udcDest)
|
|
{
|
|
bool fatto = false;
|
|
// verifico se sia modalità "rimozione" datamatrix x cui tolgo i datamatrix dall'UDC finale..
|
|
if (chkDtxMode.Checked)
|
|
{
|
|
// verifico che sia nell'AL DEST x poter rimuovere...
|
|
if (DataMatrix.mgr.taDtx2UDC.getByDtxAl(destAL, barcodeIn).Rows.Count != 1)
|
|
{
|
|
Postazione.warningText = traduci("ERR-DTX-018");
|
|
Postazione.CssClass = cssAtt;
|
|
}
|
|
else
|
|
{
|
|
// elimino associazione DTX e UDC dest...
|
|
DataMatrix.mgr.taDtx2UDC.deleteQuery(udcDest, barcodeIn, MagClass.magazzino.CodSoggCurrUser, IdxPosizioneOut, Postazione.currIdxCella);
|
|
fatto = true;
|
|
Postazione.messaggiText += " " + traduci("DtxRem");
|
|
Postazione.warningText = "";
|
|
Postazione.CssClass = cssAtt;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
// verifico qtaMax NON sia superata...
|
|
if (MagClass.magazzino.taA2U2D.getByUDC(udcDest)[0].QtaDtx >= maxQta)
|
|
{
|
|
Postazione.warningText = traduci("ERR-UDC-DTX-005");
|
|
Postazione.CssClass = cssErr;
|
|
}
|
|
else
|
|
{
|
|
// verifico che NON sia nell'AL DEST x poter aggiungere...
|
|
if (DataMatrix.mgr.taDtx2UDC.getByDtxAl(destAL, barcodeIn).Rows.Count == 1)
|
|
{
|
|
Postazione.warningText = traduci("ERR-DTX-006");
|
|
Postazione.CssClass = cssAtt;
|
|
}
|
|
else
|
|
{
|
|
// se lo trovo chiamo procedura di spostamento Dtx tra UDC sorgente --> dest (con eventuale creazione dest)
|
|
DataMatrix.mgr.taDtx2UDC.UpdateUDC(udcDest, barcodeIn, statoUDC, DateTime.Now, MagClass.magazzino.CodSoggCurrUser, false, false);
|
|
// fix messaggi
|
|
Postazione.messaggiText += " " + traduci("ConfermatoDtx");
|
|
Postazione.warningText = "";
|
|
Postazione.CssClass = cssAtt;
|
|
fatto = true;
|
|
}
|
|
}
|
|
}
|
|
return fatto;
|
|
}
|
|
|
|
#endregion
|
|
|
|
/// <summary>
|
|
/// aggiorna tabella + focus a barcode
|
|
/// </summary>
|
|
public override void doUpdate()
|
|
{
|
|
base.doUpdate();
|
|
setDefaultVal();
|
|
grViewSource.DataBind();
|
|
grViewDest.DataBind();
|
|
raiseEvent(ucEvType.ReqUpdateParent);
|
|
verificaBtnStampa();
|
|
txtBarcode.Focus();
|
|
}
|
|
/// <summary>
|
|
/// traduce gli header delle colonne
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void grViewSource_DataBound(object sender, EventArgs e)
|
|
{
|
|
if (grViewSource.Rows.Count > 0)
|
|
{
|
|
LinkButton lb;
|
|
// aggiorno gli headers
|
|
foreach (TableCell cella in grViewSource.HeaderRow.Cells)
|
|
{
|
|
try
|
|
{
|
|
lb = (LinkButton)cella.Controls[0];
|
|
lb.Text = traduci(lb.Text);
|
|
}
|
|
catch
|
|
{ }
|
|
}
|
|
int totRecord = grViewSource.Rows.Count + grViewSource.PageSize * (grViewSource.PageCount - 1);
|
|
lblNumRec.Text = string.Format("{0} records of ~ {1}", grViewSource.Rows.Count, totRecord);
|
|
}
|
|
else
|
|
{
|
|
lblNumRec.Text = "";
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// qui la selezione è x scaricare...
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void grViewSource_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
consumaUdc(grViewSource.SelectedValue.ToString());
|
|
doUpdate();
|
|
}
|
|
/// <summary>
|
|
/// evento selezione grView destinazione: ricarico dati!
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void grViewDest_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// ricarico dati dell'UDC come particolare e quantità...
|
|
currUDC = grViewDest.SelectedDataKey["UDC"].ToString();
|
|
int qtaDtx = 0;
|
|
if (MagClass.magazzino.checkUDC(currUDC))
|
|
{
|
|
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 = cssOk;
|
|
setVisibility();
|
|
doUpdate();
|
|
// fisso focus su note!
|
|
txtNote.Focus();
|
|
checkUpdateTablet(currUDC);
|
|
}
|
|
/// <summary>
|
|
/// effettua check e update tablet
|
|
/// </summary>
|
|
/// <param name="UDC"></param>
|
|
private void checkUpdateTablet(string UDC)
|
|
{
|
|
if (memLayer.ML.confReadBool("updateTablet"))
|
|
{
|
|
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));
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// chiude l'AL in carico
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
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();
|
|
}
|
|
/// <summary>
|
|
/// variabile force delete salvata...
|
|
/// </summary>
|
|
protected bool forceDelete
|
|
{
|
|
get
|
|
{
|
|
return memLayer.ML.BoolSessionObj(string.Format("ForceDelAL_{0}", uid));
|
|
}
|
|
set
|
|
{
|
|
memLayer.ML.setSessionVal(string.Format("ForceDelAL_{0}", uid), value);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Verifica se Assieme sia vuoto (no DTX negli UDC)
|
|
/// </summary>
|
|
/// <param name="AL">Codice AL</param>
|
|
/// <returns></returns>
|
|
protected bool assiemeIsEmpty(string AL)
|
|
{
|
|
bool answ = false;
|
|
try
|
|
{
|
|
answ = DataMatrix.mgr.taDtx2UDC.getByAL(AL).Rows.Count == 0;
|
|
}
|
|
catch { }
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// reset della selezione
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
public override void btnReset_Click(object sender, EventArgs e)
|
|
{
|
|
grViewDest.SelectedIndex = -1;
|
|
base.btnReset_Click(sender, e);
|
|
}
|
|
/// <summary>
|
|
/// update Qty x UDC selezionato...
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
public override void lbtUpdQty_Click(object sender, EventArgs e)
|
|
{
|
|
base.lbtUpdQty_Click(sender, e);
|
|
// fix tablet
|
|
checkUpdateTablet(currUDC);
|
|
grViewDest.SelectedIndex = -1;
|
|
doUpdate();
|
|
}
|
|
/// <summary>
|
|
/// Metodo aggiornamento qta
|
|
/// </summary>
|
|
public override void aggiornaQta()
|
|
{
|
|
// verifico NON sia superata la quantità MAX permessa...
|
|
qta = qta > maxQta ? maxQta : qta;
|
|
// eseguo metodo base!
|
|
base.aggiornaQta();
|
|
}
|
|
/// <summary>
|
|
/// verifica visibilità btn stampa UDC
|
|
/// </summary>
|
|
private void verificaBtnStampa()
|
|
{
|
|
bool showBtnStampa = false;
|
|
// se ho selezionato udc...
|
|
if (currUDC != "")
|
|
{
|
|
DS_magazzino.v_A2U2DRow riga;
|
|
int qtaUDC = 0;
|
|
int qtaDtx = 0;
|
|
try
|
|
{
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// fornisce in output la corretta classe css x icona
|
|
/// </summary>
|
|
/// <param name="qta"></param>
|
|
/// <param name="qtaDtx"></param>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
/// <summary>
|
|
/// effettua processo di sistemazione UDC e stampa
|
|
/// </summary>
|
|
/// <param name="sender"></param>
|
|
/// <param name="e"></param>
|
|
protected void lbtStampaUDC_Click(object sender, EventArgs e)
|
|
{
|
|
// verifico postazione sia valida...
|
|
if (Postazione.name != "" && Postazione.IP != "" && Postazione.currCodCella != "")
|
|
{
|
|
// 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();
|
|
try
|
|
{
|
|
// update UDC!
|
|
fatto = MagClass.magazzino.liquidiFullUpdate(sourceAL, flussoAnc, currUDC, ddlImballi.SelectedValue, noteTrim, MagClass.magazzino.CodSoggCurrUser);
|
|
}
|
|
catch
|
|
{ }
|
|
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 = cssAtt;
|
|
Postazione.warningText = traduci("ERR-POS-001");
|
|
Postazione.messaggiText = "";
|
|
Response.Redirect(user_std.pagCorrente);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Effettua update della pagina tablet RT collegata alla postazione liquidi
|
|
/// </summary>
|
|
/// <param name="UDC"></param>
|
|
/// <param name="particolare"></param>
|
|
/// <param name="mess"></param>
|
|
/// <param name="qtaIn"></param>
|
|
/// <param name="qtaTot"></param>
|
|
/// <param name="qtaRim"></param>
|
|
/// <param name="css1"></param>
|
|
/// <param name="css2"></param>
|
|
/// <param name="css3"></param>
|
|
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 = "";
|
|
}
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// Imposta e legge imballo selezionato
|
|
/// </summary>
|
|
public override string imballoSel
|
|
{
|
|
get
|
|
{
|
|
return ddlImballi.SelectedValue;
|
|
}
|
|
set
|
|
{
|
|
ddlImballi.SelectedValue = value;
|
|
}
|
|
}
|
|
}
|
|
} |