115 lines
4.6 KiB
C#
115 lines
4.6 KiB
C#
using SteamWare;
|
|
using System;
|
|
|
|
namespace GMW_data
|
|
{
|
|
/// <summary>
|
|
/// classe gestioen amcchina a stati
|
|
/// </summary>
|
|
public class StateMachine
|
|
{
|
|
#region area table adapters
|
|
|
|
public DS_SMTableAdapters.TabTranPosizEventiTableAdapter taTTPE;
|
|
public DS_SMTableAdapters.AnagTipoDelibereTableAdapter taATD;
|
|
|
|
/// <summary>
|
|
/// init dei table adapters
|
|
/// </summary>
|
|
protected void initTA()
|
|
{
|
|
taTTPE = new GMW_data.DS_SMTableAdapters.TabTranPosizEventiTableAdapter();
|
|
taATD = new GMW_data.DS_SMTableAdapters.AnagTipoDelibereTableAdapter();
|
|
}
|
|
/// <summary>
|
|
/// effettua setup dei connection strings da web.config delal singola applicazione
|
|
/// </summary>
|
|
protected virtual void setupConnectionStringBase()
|
|
{
|
|
// connections del db
|
|
taTTPE.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
|
taATD.Connection.ConnectionString = memLayer.ML.confReadString("GMWConnectionString");
|
|
}
|
|
|
|
#endregion
|
|
|
|
protected StateMachine()
|
|
{
|
|
initTA();
|
|
setupConnectionStringBase();
|
|
}
|
|
|
|
/// <summary>
|
|
/// effettua la delibera dell'UDC andando a processare tramite macchina a stati l'eventuale spostamento di IdxPosizione
|
|
/// </summary>
|
|
/// <param name="UDC"></param>
|
|
/// <param name="CodTipoDelibera"></param>
|
|
/// <param name="CodEvento"></param>
|
|
/// <param name="clientIp">IP del client</param>
|
|
/// <returns></returns>
|
|
public void deliberaUdc(string UDC, string CodTipoDelibera, string CodEvento, string clientIp)
|
|
{
|
|
bool fatto = false;
|
|
try
|
|
{
|
|
// calcolo la prima cella possibile data
|
|
utils.obj.taSTP.stp_UDC_delibera(CodTipoDelibera, UDC, CodEvento, MagClass.magazzino.CodSoggCurrUser, memLayer.ML.cdv("CodCS"));
|
|
// dopo la delibera passo direttamente al consumo se richiesto!
|
|
if (memLayer.ML.confReadBool("Cosumo84PostDelibera"))
|
|
{
|
|
// prendo i dati PRIMA che scarichi l'UDC... e con qta negativa xché qui devo "rimetterlo a posto"...
|
|
DS_magazzino.ElencoCartelliniRow riga = MagClass.magazzino.taCartellini.getDetailsUdcByUdc(UDC)[0];
|
|
string Particolare = riga.Particolare;
|
|
int IdxPosizione = riga.IdxPosizione;
|
|
decimal Quantita = -riga.Qta;
|
|
// da db determino che non faccio scaricamento automatico da altre posizioni terzisti/clienti (solo 84) xché non c'è in TabTranEventi
|
|
fatto = MagClass.magazzino.scaricaUdcMpWip(UDC, clientIp);
|
|
}
|
|
logger.lg.scriviLog(string.Format(" | {0} | deliberato UDC {1} | evento {2} | tipo delibera {2}", clientIp, UDC, CodEvento, CodTipoDelibera), tipoLog.INFO);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
logger.lg.scriviLog(string.Format(" | {5} | Non sono riuscito a fare la delibera di tipo {0} per l'UDC {1} da parte dell'user {2}, messaggio d'errore {3}{4}", CodTipoDelibera, UDC, user_std.UtSn.userNameAD, Environment.NewLine, e, clientIp), SteamWare.tipoLog.ERROR);
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// calcola dalla tabella di transizioni la nuova posizione associata all'evento ed alla posizione attuale
|
|
/// </summary>
|
|
/// <param name="CodEvento"></param>
|
|
/// <param name="IdxPosizione"></param>
|
|
/// <returns></returns>
|
|
public int getIdxPostizioneTo(string CodEvento, int IdxPosizione)
|
|
{
|
|
int answ = 0;
|
|
try
|
|
{
|
|
answ = taTTPE.getByEventoPosizione(CodEvento, IdxPosizione)[0].IdxPosizioneTo;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// calcola dalla tabella di transizioni il blocco di destinazione associato all'evento ed alla posizione attuale
|
|
/// </summary>
|
|
/// <param name="CodEvento"></param>
|
|
/// <param name="IdxPosizione"></param>
|
|
/// <returns></returns>
|
|
public int getIdxBloccoTo(string CodEvento, int IdxPosizione)
|
|
{
|
|
int answ = 0;
|
|
try
|
|
{
|
|
answ = taTTPE.getByEventoPosizione(CodEvento, IdxPosizione)[0].IdxBloccoTo;
|
|
}
|
|
catch
|
|
{ }
|
|
return answ;
|
|
}
|
|
/// <summary>
|
|
/// Singleton accesos a state machine
|
|
/// </summary>
|
|
public static StateMachine SM = new StateMachine();
|
|
}
|
|
}
|