Files
2018-07-04 19:03:57 +02:00

296 lines
9.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SteamWare;
using GMW_data;
namespace GMW_Term.WebUserControls
{
public partial class mod_makeMov : System.Web.UI.UserControl
{
protected int logLevel;
/// <summary>
/// wrapper traduzione termini
/// </summary>
/// <param name="lemma"></param>
/// <returns></returns>
public string traduci(string lemma)
{
return user_std.UtSn.Traduci(lemma);
}
/// <summary>
/// chiamata principale
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
logLevel = memLayer.ML.confReadInt("_logLevel");
updateMakeMov();
}
/// <summary>
/// aggiorna lo stato dell'operazione di movimentazione
/// </summary>
public void updateMakeMov()
{
if (logLevel > 6)
{
logger.lg.scriviLog("chiamata updateMakeMov");
}
// recupero barcode e controllo sia valido
string _UDC = memLayer.ML.StringSessionObj("UDC_sel");
string _AL = memLayer.ML.StringSessionObj("AL_sel");
// se ho AL --> uso quello...
int _idxCella = memLayer.ML.IntSessionObj("IdxCella_sel");
string _codCella = memLayer.ML.StringSessionObj("codCella_sel");
if (logLevel > 6)
{
logger.lg.scriviLog(string.Format("Valori letti: UDC {0}, IdxCella {1}, codCella {2}", _UDC, _idxCella, _codCella), tipoLog.INFO);
}
// aggiorno labels standard
lblCella.Text = traduci("lblCella");
//2018.07.04 secondo AL/UDC mostro uno o altro...
// se AL in sessione
if (_AL != "")
{
lblUDC.Text = traduci("lblAL");
lblCodUDC.Text = _AL;
}
else
{
lblUDC.Text = traduci("lblUDC");
lblCodUDC.Text = _UDC;
}
btnConferma.Text = traduci("btnConferma");
btnAnnulla.Text = traduci("btnAnnulla");
// aggiorno labels valori
lblCodCella.Text = _codCella;
// controllo se ci siano [UDC/AL] + Cella validi
if (_codCella != "")
{
// se si tratta di UDC...
if (_UDC != "")
{
// SE cella vuota procedo!
if (!MagClass.magazzino.cellaPiena(memLayer.ML.confReadString("codCS"), _idxCella))
{
if (logLevel > 6)
{
logger.lg.scriviLog("Cella vuota, procedo a spostamento UDC");
}
spostaUdc(_UDC, _idxCella, _codCella);
}
else
{
if (logLevel > 6)
{
logger.lg.scriviLog("Cella piena, chiedo conferma");
}
// se cella piena chiedo conferma
btnConferma.Visible = true;
btnAnnulla.Visible = true;
}
}
// se si tratta di AL...
else if (_AL != "")
{
// SE cella vuota procedo!
if (!MagClass.magazzino.cellaPiena(memLayer.ML.confReadString("codCS"), _idxCella))
{
if (logLevel > 6)
{
logger.lg.scriviLog("Cella vuota, procedo a spostamento AL");
}
// recupero elenco UDC da AL...
var tabUDC = MagClass.magazzino.taAL2UDC.getByAL(_AL);
foreach (var item in tabUDC)
{
spostaUdc(item.UDC, _idxCella, _codCella);
}
}
else
{
if (logLevel > 6)
{
logger.lg.scriviLog("Cella piena, chiedo conferma");
}
// se cella piena chiedo conferma
btnConferma.Visible = true;
btnAnnulla.Visible = true;
}
}
else
{
if (logLevel > 6)
{
logger.lg.scriviLog("Mancano UDC o AL");
}
btnConferma.Visible = false;
btnAnnulla.Visible = false;
}
}
else
{
if (logLevel > 6)
{
logger.lg.scriviLog("Manca Cella");
}
btnConferma.Visible = false;
btnAnnulla.Visible = false;
}
}
/// <summary>
/// effettua spostamento UDC sparato da barcode
/// </summary>
/// <param name="_UDC"></param>
/// <param name="_idxCella"></param>
/// <param name="_codCella"></param>
private void spostaUdc(string _UDC, int _idxCella, string _codCella)
{
if (logLevel > 6)
{
logger.lg.scriviLog("Spostamento UDC: step 1");
}
// controllo UDC sia spostabile (ovvero NON in RLP bloccata)
if (MagClass.magazzino.checkUDC_mov(_UDC))
{
// calcolo posizione udc
int idxPos = 0;
try
{
idxPos = MagClass.magazzino.IdxPosizioneUdc(_UDC);
}
catch
{
logger.lg.scriviLog("Errore in calcolo idxposizione udc", tipoLog.EXCEPTION);
}
// verifico UDC NON sia consumato
if (idxPos > 0)
{
// verifico UDC NON sia in posizione 200-999 = spedito
if (!(idxPos >= 200 && idxPos <= 999))
{
if (logLevel > 6)
{
logger.lg.scriviLog("Spostamento UDC: step 2");
}
bool fatto = false;
fatto = MagClass.magazzino.spostaUDC(memLayer.ML.confReadString("codCS"), _UDC, _idxCella, memLayer.ML.confReadBool("spostaUdcResettaLdp"), Request.UserHostName);
btnConferma.Visible = false;
btnAnnulla.Visible = false;
if (fatto)
{
lblEsito.Text = string.Format("{0} {1} --> {2} ", traduci("ConfermaSpostatoUDC"), _UDC, _codCella);
}
else
{
lblEsito.Text = string.Format("{0} {1} --> {2} ", traduci("ERR-UDC-MOV-01"), _UDC, _codCella);
}
if (logLevel > 6)
{
logger.lg.scriviLog("Spostamento UDC: step 3");
}
}
else
{
// segnalo errore UDC con idxPosizione 200-999 = spedito ...
lblEsito.Text = string.Format("{0} {1}", traduci("ERR-UDC-POS-002"), _UDC);
}
}
else
{
// segnalo errore UDC con idxPosizione < 0...
lblEsito.Text = string.Format("{0} {1}", traduci("ERR-UDC-POS-001"), _UDC);
}
}
else
{
lblEsito.Text = string.Format("{0} {1}", traduci("UdcNonSpostabile"), _UDC);
}
resetAndUpdate();
}
/// <summary>
/// CONFERMA associazione UDC/CELLA
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnConferma_Click(object sender, EventArgs e)
{
// calcolo valori
string _UDC = memLayer.ML.StringSessionObj("UDC_sel");
int _idxCella = memLayer.ML.IntSessionObj("IdxCella_sel");
string _codCella = memLayer.ML.StringSessionObj("codCella_sel");
if (logLevel > 6)
{
logger.lg.scriviLog("Conferma Spostamento UDC: step 1");
}
// controllo UDC sia spostabile (ovvero NON in RLP bloccata)
if (MagClass.magazzino.checkUDC_mov(_UDC))
{
if (logLevel > 6)
{
logger.lg.scriviLog("Conferma Spostamento UDC: step 2");
}
// sposto UDC precedente in posizione preimpostata da web.config
string codCellaErroriAnime = memLayer.ML.confReadString("codCellaErroriAnime");
int idxCellaTo = MagClass.magazzino.taCelle.getByCodCella(codCellaErroriAnime)[0].IdxCella;
string udc2move = MagClass.magazzino.udcInCella(memLayer.ML.confReadString("codCS"), _idxCella);
// 2015.01.29 procedo SOLO SE c'è un UDC da spostare
if (udc2move != "")
{
// sposto udc in posizione "errori anime"...
if (logLevel > 6)
{
logger.lg.scriviLog("Conferma Spostamento UDC: step 3");
}
MagClass.magazzino.spostaUDC(memLayer.ML.confReadString("codCS"), udc2move, idxCellaTo, memLayer.ML.confReadBool("spostaUdcResettaLdp"), Request.UserHostName);
lblEsito.Text = string.Format("{0} {1} --> {2} ", traduci("ConfermaSpostatoUDC"), _UDC, _codCella);
}
// sposto "vero" UDC
if (logLevel > 6)
{
logger.lg.scriviLog("Conferma Spostamento UDC: step 4");
}
spostaUdc(_UDC, _idxCella, _codCella);
}
else
{
lblEsito.Text = string.Format("{0} {1}", traduci("UdcNonSpostabile"), _UDC);
}
resetAndUpdate();
if (logLevel > 6)
{
logger.lg.scriviLog("Conferma Spostamento UDC: step 5");
}
}
/// <summary>
/// aggiorna visualizzazioni e resetta
/// </summary>
private void resetAndUpdate()
{
//memLayer.ML.emptySessionVal("UDC_sel");
//memLayer.ML.emptySessionVal("IdxCella_sel");
//memLayer.ML.emptySessionVal("codCella_sel");
GMW_data.TermClass.Ter.resetScanBarcode(true, true, false);
// aggiorno visualizzazione
updateMakeMov();
lblErrore.Visible = false;
}
/// <summary>
/// annulla associazione UDC / CELLA
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnAnnulla_Click(object sender, EventArgs e)
{
resetAndUpdate();
}
}
}