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_execUdc : System.Web.UI.UserControl
{
#region variabili globali controllo
///
/// codice company/sito in sessione
///
protected string _CodCS
{
get
{
return memLayer.ML.StringSessionObj("CodCS");
}
}
///
/// UDC correntemente selezionato
///
protected string _UDC
{
get
{
return memLayer.ML.StringSessionObj("UDC_sel");
}
set
{
memLayer.ML.setSessionVal("UDC_sel", value);
}
}
///
/// CodLista della lsita di prelievo correntemente attiva
///
protected string _CodLista
{
get
{
return memLayer.ML.StringSessionObj("CodListaAttiva");
}
set
{
memLayer.ML.setSessionVal("CodListaAttiva", value);
}
}
///
/// Particolare dell'UDC correntemente selezionato
///
protected string _PartUdc
{
get
{
string answ = "";
try
{
answ = MagClass.magazzino.taDettUDC.getByFullUdc(_UDC, _CodCS)[0].Particolare;
}
catch
{ }
return answ;
}
}
///
/// Indica se l'UDC correntemente selezionato sia disponibile x prelievo
///
protected bool _UdcDisp
{
get
{
bool answ = false;
try
{
answ = (MagClass.magazzino.taRigheListePrelievo.getPrelevateByUdc(_UDC).Rows.Count == 0);
}
catch
{ }
return answ;
}
}
///
/// Indica se la cella DI DESTINAZIONE dell'azione sia da indicare come piena
///
protected bool _cellaPiena
{
get
{
return memLayer.ML.BoolSessionObj("cellaPiena");
}
set
{
memLayer.ML.setSessionVal("cellaPiena", value);
}
}
///
/// Particolare della Lista di Prelievo correntemente attiva
///
protected string _PartLdP
{
get
{
string answ = "";
if (_CodLista != "")
{
try
{
answ = MagClass.magazzino.taElencoListePrelievo.getByCodLista(_CodLista)[0].Particolare;
}
catch
{ }
}
return answ;
}
}
///
/// valore della scansione barcode
///
public string valoreScanUdc
{
get
{
return memLayer.ML.StringSessionObj("scannedValueUdc");
}
set
{
memLayer.ML.setSessionVal("scannedValueUdc", value, false);
}
}
///
/// tipologia di edit attivo (in session...)
///
protected tipoEditUdc editAttivo
{
get
{
tipoEditUdc answ = tipoEditUdc.nd;
try
{
answ = (tipoEditUdc)memLayer.ML.objSessionObj("EditAttivo");
}
catch
{ }
return answ;
}
set
{
memLayer.ML.setSessionVal("EditAttivo", value, false);
}
}
#endregion
#region setup modulo
///
/// caricamento pagina
///
///
///
protected void Page_Load(object sender, EventArgs e)
{
mod_btnUdc1.eh_btnPressed += new EventHandler(mod_btnUdc1_eh_btnPressed);
}
///
/// premuto un bottone, di conseguenza adatta grafica e/o funzionalità
///
///
///
void mod_btnUdc1_eh_btnPressed(object sender, EventArgs e)
{
switch (editAttivo)
{
case tipoEditUdc.nd:
break;
case tipoEditUdc.deliberaFusi:
deliberaUdc();
break;
case tipoEditUdc.deliberaWipPost:
deliberaUdc();
break;
case tipoEditUdc.deliberaWipPre:
deliberaUdc();
break;
case tipoEditUdc.deposito:
depositaUdc(_cellaPiena);
break;
case tipoEditUdc.prelievo:
break;
case tipoEditUdc.rettifica:
frmView.ChangeMode(FormViewMode.Edit);
break;
case tipoEditUdc.spostamento:
spostaUdc(_cellaPiena);
break;
default:
break;
}
}
///
/// wrapper traduzione termini
///
///
///
public string traduci(string lemma)
{
return user_std.UtSn.Traduci(lemma);
}
#endregion
#region metodi operativi interni
///
/// effattua al delibera dell'UDC indicato
///
private void deliberaUdc()
{
string tipoDelibera = "";
switch (editAttivo)
{
case tipoEditUdc.deliberaFusi:
tipoDelibera = "DelibFusi";
break;
case tipoEditUdc.deliberaWipPost:
tipoDelibera = "DelibWipPost";
break;
case tipoEditUdc.deliberaWipPre:
tipoDelibera = "DelibWipPre";
break;
default:
break;
}
if (tipoDelibera != "")
{
// chiamo stored x fare delibera con state machine
string CodEvento = tipoDelibera;
try
{
CodEvento = StateMachine.SM.taATD.getByKey(tipoDelibera)[0].CodEvento;
}
catch
{ }
StateMachine.SM.deliberaUdc(_UDC, tipoDelibera, CodEvento, Request.UserHostName);
}
// resetto buttons
mod_btnUdc1.doReset();
// aggiorna dati
frmView.DataBind();
}
///
/// effettua salvataggio, mostra cella updated, eventuale set piena della cella
///
///
private void depositaUdc(bool setCellaPiena)
{
// controllo UDC sia spostabile (ovvero NON in RLP bloccata)
if (MagClass.magazzino.checkUDC_mov(_UDC))
{
// cerco id della cella...
int idxCella = MagClass.magazzino.IdxCellaByCodCella(_CodCS, valoreScanUdc);
// salva le info facendo caricamento
MagClass.magazzino.spostaUDC(_CodCS, _UDC, idxCella, memLayer.ML.confReadBool("spostaUdcResettaLdp"), Request.UserHostName);
if (setCellaPiena)
{
MagClass.magazzino.taCelle.stp_celle_updPiena(idxCella, true);
}
}
// resetto buttons
mod_btnUdc1.doReset();
// aggiorna dati
frmView.DataBind();
}
///
/// chiama lo spostamento dell'UDC tra la cella attuale e la nuova...
///
///
private void spostaUdc(bool setCellaPiena)
{
// controllo UDC sia spostabile (ovvero NON in RLP bloccata)
if (MagClass.magazzino.checkUDC_mov(_UDC))
{
// cerco id delle celle...
int idxCellaFrom = MagClass.magazzino.taDettUDC.getByFullUdc(_UDC, _CodCS)[0].IdxCella;
int idxCellaTo = MagClass.magazzino.IdxCellaByCodCella(_CodCS, valoreScanUdc);
// salva le info facendo caricamento
MagClass.magazzino.spostaUDC(_CodCS, _UDC, idxCellaTo, memLayer.ML.confReadBool("spostaUdcResettaLdp"), Request.UserHostName);
// dopo aver spostato UDC sistemo eventuali Righe di Prelievo x lo stesso UDC pending...
MagClass.magazzino.taRigheListePrelievo.stp_RLP_sbloccaNonPrelevate("ND", _UDC); // metto "ND" perché voglio sbloccare tutti gli impieghi di quell'UDC
// la cella di partenza la indico come disponibile (comunque ho tolto un UDC...)
MagClass.magazzino.taCelle.stp_celle_updPiena(idxCellaFrom, false);
if (setCellaPiena)
{
MagClass.magazzino.taCelle.stp_celle_updPiena(idxCellaTo, true);
}
}
// resetto buttons
mod_btnUdc1.doReset();
// aggiorna dati
frmView.DataBind();
}
#endregion
#region gestione interazione (buttons & update...)
#region area frmView & co
///
/// eseguo alla chiusura della fase di update
///
///
///
protected void frmView_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
{
//fixBtnPostUpdateQta();
}
///
/// mostra di nuovo buttons post fase di editing
///
private void fixBtnPostUpdateQta()
{
// aggiorno frmView
frmView.DataBind();
mod_btnUdc1.doReset();
}
///
/// alla chiusura fase di editing
///
///
///
protected void frmView_ModeChanged(object sender, EventArgs e)
{
// se sono in item mode mostro di nuovo i buttons...
if (frmView.CurrentMode == FormViewMode.ReadOnly)
{
fixBtnPostUpdateQta();
}
}
///
/// evento on update
///
///
///
protected void ods_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
// controllo UDC sia modificabile qta
if (MagClass.magazzino.checkUDC_qty(_UDC))
{
decimal qta = Convert.ToDecimal(e.InputParameters["Qta"]);
// intercetto l'evento e chiamo una stored ad hoc!
MagClass.magazzino.taCartellini.updateQty(_UDC, MagClass.magazzino.CodSoggCurrUser, "U", "UDC_QTY", qta);
// aggiorno anche eventuali righe inliste prelievo
MagClass.magazzino.taRigheListePrelievo.stp_RLP_updateQty(_UDC, qta);
}
// annullo update!
e.Cancel = true;
}
#endregion
#endregion
}
}
///
/// enumerazione tipo di editing effettuato su UDC
///
public enum tipoEditUdc
{
nd,
deliberaFusi,
deliberaWipPost,
deliberaWipPre,
deposito,
prelievo,
rettifica,
spostamento
}