333 lines
12 KiB
C#
333 lines
12 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 XPS_data;
|
|
|
|
namespace XPST.WebUserControls
|
|
{
|
|
public partial class mod_btnComandi : System.Web.UI.UserControl
|
|
{
|
|
/// <summary>
|
|
/// evento comando clicked
|
|
/// </summary>
|
|
public event EventHandler eh_clickComando;
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
setupComandiBarcode();
|
|
disegnaBtn();
|
|
}
|
|
/// <summary>
|
|
/// effettua disegno dei buttons
|
|
/// </summary>
|
|
private void disegnaBtn()
|
|
{
|
|
// carico i comandi nei buttons
|
|
btn1.Text = comandiAmmessi["04"];
|
|
btn2.Text = comandiAmmessi["05"];
|
|
btn3.Text = comandiAmmessi["06"];
|
|
btn4.Text = comandiAmmessi["07"];
|
|
btn5.Text = comandiAmmessi["ok"];
|
|
btn6.Text = comandiAmmessi["ko"];
|
|
updateBtn();
|
|
}
|
|
/// <summary>
|
|
/// Restituisce email dest da codCliente + check conf da web.config con forzatura a email interna
|
|
/// </summary>
|
|
/// <param name="CodCliente"></param>
|
|
/// <returns></returns>
|
|
protected string getEmailDest(string CodCliente)
|
|
{
|
|
string answ = "";
|
|
if (memLayer.ML.CRS("_forcedDestEmail") != "")
|
|
{
|
|
answ = memLayer.ML.CRS("_forcedDestEmail");
|
|
}
|
|
else
|
|
{
|
|
answ = XPS_data.XPS.obj.taAnCli.getByKey(CodCliente)[0].email;
|
|
}
|
|
return answ;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Aggiorna stato buttons
|
|
/// </summary>
|
|
public void updateBtn()
|
|
{
|
|
// determino visibilità btn4: SOLO se ho un UDC valido ed è in stato 05...
|
|
int currState = 0;
|
|
bool emailReq = false;
|
|
string emailSent = "";
|
|
string emailDest = "";
|
|
string CodCliente = "";
|
|
DS_applicazione.IstObjRow rigaIstObj;
|
|
// calcolo lo stato dell'oggetto...
|
|
try
|
|
{
|
|
rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
|
|
currState = Convert.ToInt32(rigaIstObj.CodStato);
|
|
emailReq = rigaIstObj.emailReq;
|
|
CodCliente = rigaIstObj.CodCliente;
|
|
emailDest = getEmailDest(CodCliente);
|
|
}
|
|
catch
|
|
{ }
|
|
try
|
|
{
|
|
rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
|
|
emailSent = rigaIstObj.emailSent.ToString("dd/MM/yy HH:mm");
|
|
}
|
|
catch
|
|
{ }
|
|
|
|
switch (currState)
|
|
{
|
|
case 1:
|
|
case 2:
|
|
case 3:
|
|
btn1.Enabled = true;
|
|
btn2.Enabled = false;
|
|
btn3.Enabled = false;
|
|
btn4.Enabled = false;
|
|
break;
|
|
case 4:
|
|
btn1.Enabled = false;
|
|
btn2.Enabled = true;
|
|
btn3.Enabled = false;
|
|
btn4.Enabled = false;
|
|
break;
|
|
case 5:
|
|
btn1.Enabled = false;
|
|
btn2.Enabled = false;
|
|
btn3.Enabled = true;
|
|
btn4.Enabled = true;
|
|
break;
|
|
case 6:
|
|
btn1.Enabled = false;
|
|
btn2.Enabled = false;
|
|
btn3.Enabled = false;
|
|
btn4.Enabled = true;
|
|
break;
|
|
case 7:
|
|
btn1.Enabled = false;
|
|
btn2.Enabled = false;
|
|
btn3.Enabled = false;
|
|
btn4.Enabled = true;
|
|
break;
|
|
default:
|
|
btn1.Enabled = false;
|
|
btn2.Enabled = false;
|
|
btn3.Enabled = false;
|
|
btn4.Enabled = false;
|
|
break;
|
|
}
|
|
|
|
if (currState >= 5)
|
|
{
|
|
// controllo se c'è email del cliente...
|
|
if (emailDest != "")
|
|
{
|
|
btn4.Enabled = true;
|
|
}
|
|
else
|
|
{
|
|
btn4.Enabled = false;
|
|
}
|
|
// controllo se era indicato email richiesta!
|
|
if (emailReq)
|
|
{
|
|
btn4.Text = string.Format("{0}{1}{2}", comandiAmmessi["07"], Environment.NewLine, user_std.UtSn.Traduci("emailReq"));
|
|
}
|
|
else
|
|
{
|
|
btn4.Enabled = false;
|
|
}
|
|
// controllo se mai spedita email...
|
|
if (emailSent != "")
|
|
{
|
|
btn4.Text += string.Format("{0}{1}: {2}", Environment.NewLine, user_std.UtSn.Traduci("emailSent"), emailSent);
|
|
}
|
|
}
|
|
// se autoconferma nascondo button conferma...
|
|
if (memLayer.ML.confReadBool("autoConfCmd"))
|
|
{
|
|
btn5.Visible = false;
|
|
}
|
|
else
|
|
{
|
|
btn5.Visible = true;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// carico da tab i comandi ammessi per il barcode...
|
|
/// </summary>
|
|
private void setupComandiBarcode()
|
|
{
|
|
XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter taTrEv2St = new XPS_data.DS_applicazioneTableAdapters.TraEv2StatiTableAdapter();
|
|
DS_applicazione.TraEv2StatiDataTable _tabTran = taTrEv2St.getByCodMappa("E_BC");
|
|
Dictionary<string, string> comandi = new Dictionary<string, string>();
|
|
foreach (DS_applicazione.TraEv2StatiRow riga in _tabTran)
|
|
{
|
|
comandi.Add(riga.CodEvento, user_std.UtSn.Traduci(riga.text2show));
|
|
}
|
|
// impongo i comandi al barcode...
|
|
comandiAmmessi = comandi;
|
|
}
|
|
/// <summary>
|
|
/// dictionary comandi ammessi
|
|
/// </summary>
|
|
protected Dictionary<string, string> _comandi = new Dictionary<string, string>();
|
|
/// <summary>
|
|
/// elenco dei comandi riconosciuti
|
|
/// </summary>
|
|
public Dictionary<string, string> comandiAmmessi
|
|
{
|
|
get
|
|
{
|
|
return _comandi;
|
|
}
|
|
set
|
|
{
|
|
_comandi = value;
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// segnala click su button comando
|
|
/// </summary>
|
|
public void segnalaClick()
|
|
{
|
|
if (eh_clickComando != null)
|
|
{
|
|
eh_clickComando(this, new EventArgs());
|
|
}
|
|
|
|
}
|
|
|
|
protected void btn1_Click(object sender, EventArgs e)
|
|
{
|
|
memLayer.ML.setSessionVal("btnCmdPress", "04", false);
|
|
segnalaClick();
|
|
}
|
|
protected void btn2_Click(object sender, EventArgs e)
|
|
{
|
|
memLayer.ML.setSessionVal("btnCmdPress", "05", false);
|
|
segnalaClick();
|
|
}
|
|
protected void btn3_Click(object sender, EventArgs e)
|
|
{
|
|
memLayer.ML.setSessionVal("btnCmdPress", "06", false);
|
|
segnalaClick();
|
|
}
|
|
protected void btn4_Click(object sender, EventArgs e)
|
|
{
|
|
logger.lg.scriviLog("Richiesto invio email...");
|
|
// mi limito a mandare email e non segnalo altro... carico dati!
|
|
// determino visibilità btn4: SOLO se ho un UDC valido ed è in stato 05...
|
|
int currState = 0;
|
|
bool emailReq = false;
|
|
string emailSent = "";
|
|
string emailDest = "";
|
|
string CodCliente = "";
|
|
string ddt = "";
|
|
string dataRif = "";
|
|
string descr = "";
|
|
string peso = "";
|
|
DS_applicazione.IstObjRow rigaIstObj = null;
|
|
|
|
// calcolo lo stato dell'oggetto...
|
|
try
|
|
{
|
|
rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
|
|
currState = Convert.ToInt32(rigaIstObj.CodStato);
|
|
emailReq = rigaIstObj.emailReq;
|
|
CodCliente = rigaIstObj.CodCliente;
|
|
emailDest = getEmailDest(CodCliente);
|
|
logger.lg.scriviLog(string.Format("Recuperati dati per invio email: {0} | {1} | {2}", comando.valore, CodCliente, emailDest));
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
logger.lg.scriviLog(String.Format("Eccezione in recupero dati commessa x email: {0}", exc), tipoLog.EXCEPTION);
|
|
}
|
|
try
|
|
{
|
|
rigaIstObj = XPS_data.XPS.obj.taObj.getByIdxObj(comando.valore)[0];
|
|
emailSent = rigaIstObj.emailSent.ToString("dd/MM/yy HH:mm");
|
|
}
|
|
catch(Exception exc)
|
|
{
|
|
logger.lg.scriviLog(String.Format("Eccezione in invio email: {0}", exc), tipoLog.EXCEPTION);
|
|
}
|
|
try
|
|
{
|
|
ddt = rigaIstObj.Nome;
|
|
dataRif = rigaIstObj.DataRif.ToString("dd/MM/yy HH:mm");
|
|
descr = rigaIstObj.Note;
|
|
peso = rigaIstObj.Peso.ToString();
|
|
}
|
|
catch (Exception exc)
|
|
{
|
|
ddt = "n.d.";
|
|
dataRif = "n.d.";
|
|
descr = "n.d.";
|
|
peso = "n.d.";
|
|
logger.lg.scriviLog(String.Format("Eccezione in recupero dati x email: {0}", exc), tipoLog.EXCEPTION);
|
|
}
|
|
if (currState >= 5 && emailDest != "")
|
|
{
|
|
// invio email
|
|
string subject = user_std.UtSn.Traduci("emailSubject"); // 'Notifica merce pronta'
|
|
string bodyMsg = string.Format(user_std.UtSn.Traduci("emailBody"), ddt, dataRif, descr, peso); //'Attenzione, la merce relativa al DDT {0} del {1}, ({2}, peso {3} kg) è pronta per il ritiro presso EQUA s.p.a di Pedrengo'
|
|
// se è forzato invio interno cambio subject e body...
|
|
if (memLayer.ML.CRS("_forcedDestEmail") != "")
|
|
{
|
|
DS_applicazione.v_commesseRow rigaComm= XPS_data.XPS.obj.taComm.getByCod(comando.valore)[0];
|
|
subject += string.Format(" | cliente: {0}", rigaComm.Cliente);
|
|
bodyMsg += string.Format("<br/><br/><a href=\"{0}detComm?CodDDT={1}\">Link diretto al DDT {2} - {3}</a>", memLayer.ML.CRS("mainSite"), rigaComm.Cod, rigaComm.DDT, rigaComm.descrizione);
|
|
}
|
|
// invio email!
|
|
bool fatto = gestEmail.geAuth.mandaEmail(memLayer.ML.confReadString("_emailUser"), emailDest, subject, bodyMsg);
|
|
if (fatto)
|
|
{
|
|
// aggiorno stato obj
|
|
XPS_data.XPS.obj.taObj.updateEmailSent(comando.valore);
|
|
}
|
|
}
|
|
updateBtn();
|
|
}
|
|
protected void btn5_Click(object sender, EventArgs e)
|
|
{
|
|
memLayer.ML.setSessionVal("btnCmdPress", "ok", false);
|
|
segnalaClick();
|
|
}
|
|
protected void btn6_Click(object sender, EventArgs e)
|
|
{
|
|
memLayer.ML.setSessionVal("btnCmdPress", "ko", false);
|
|
segnalaClick();
|
|
}
|
|
|
|
/// <summary>
|
|
/// oggetto comando locale alla classe
|
|
/// </summary>
|
|
protected inputComando comando
|
|
{
|
|
get
|
|
{
|
|
inputComando answ;
|
|
if (memLayer.ML.isInSessionObject("barcodeCmd"))
|
|
{
|
|
answ = (inputComando)memLayer.ML.objSessionObj("barcodeCmd");
|
|
}
|
|
else
|
|
{
|
|
answ = new inputComando();
|
|
}
|
|
return answ;
|
|
}
|
|
}
|
|
}
|
|
} |