update apgina x gestione anomalie (partendo da liquidi standard...)

This commit is contained in:
Samuele Locatelli
2014-06-05 12:01:20 +02:00
parent 61062a0431
commit 08d6598cf6
17 changed files with 1094 additions and 31 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
+5
View File
@@ -3203,6 +3203,11 @@
<param name="lemma"></param>
<returns></returns>
</member>
<member name="P:SteamWare.UserControl.forceUppercase">
<summary>
indica se i caratteri vadano forzati a maiuscoli
</summary>
</member>
<member name="T:SteamWare.user_std">
<summary>
classe gestione utente: auth e permission/ruoli - versione GENERICA
+1 -7
View File
@@ -29,10 +29,8 @@ namespace GMW
// update vari...
doUpdate();
mod_storicoAzioniOperatore1.eh_stampa += new EventHandler(mod_storicoAzioniOperatore1_eh_stampa);
#if false
mod_LiqDtAnom1.doUpdate();
mod_LiqDtAnom1.eh_reqUpdate += mod_LiqDtAnom1_eh_reqUpdate;
#endif
mod_selLineaNtDt1.eh_lineSelected += mod_selLineaNtDt1_eh_doRefresh;
mod_selLineaNtDt1.eh_showHideStorico += mod_selLineaNtDt1_eh_showHideStorico;
}
@@ -53,9 +51,7 @@ namespace GMW
private void mod_selLineaNtDt1_eh_doRefresh(object sender, EventArgs e)
{
doUpdate();
#if false
mod_LiqDtAnom1.doUpdate();
#endif
}
/// <summary>
/// richiesta update del controllo SAO
@@ -82,9 +78,7 @@ namespace GMW
/// <param name="e"></param>
void mod_storicoAzioniOperatore1_eh_stampa(object sender, EventArgs e)
{
#if false
mod_LiqDtAnom1.ristampa();
#endif
mod_LiqDtAnom1.ristampa();
}
/// <summary>
/// sistemo visualizzazione pannelli
+165 -1
View File
@@ -8,4 +8,168 @@ Gestione anomalie:
<li>possibile leggere singoli datamatrix "anomali"</li>
<li>se storia (trattamento) esiste la tiene, se non c'è emtte tratt 0000 dell'anno corrente (catch all)</li>
<li>deve poter stampare (e quindi congelare) UDC completi o meno (che possano andare ai liquidi "normali")</li>
</ul>
</ul>
<%if (false)
{ %>
<webopt:BundleReference ID="BundleReference1" runat="server" Path="~/Content/css" />
<webopt:BundleReference ID="BundleReference2" runat="server" Path="~/Content/themes/base/css" />
<%} %>
<div class="row">
<div class="col-sm-4 col-lg-3">
<%--<div id="divAL" runat="server" class="panel panel-warning panel-sm">
<div class="panel-heading">
<b><%: traduci("ContenutoAL") %></b>
</div>
<div class="panel-body">
<div class="bg-primary">
<asp:Label runat="server" ID="lblAL" />
</div>
<asp:GridView ID="grViewSource" runat="server" AutoGenerateColumns="False"
DataKeyNames="UDC" DataSourceID="odsAL" Width="100%">
<RowStyle CssClass="ctrRowStyle" />
<AlternatingRowStyle CssClass="ctrAltRowStyle" />
<EditRowStyle CssClass="ctrEditRowStyle" />
<SelectedRowStyle CssClass="ctrSelRowStyle" />
<FooterStyle CssClass="ctrFooter" />
<PagerStyle CssClass="ctrHeaderPager" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle CssClass="ctrHeaderPager" ForeColor="White" Font-Bold="True" />
<EmptyDataRowStyle CssClass="ctrRowStyle" />
<EmptyDataTemplate>
<asp:Label runat="server" ID="lblNoRecord" Text='<%# traduci("noRecord") %>' />
</EmptyDataTemplate>
<Columns>
<asp:TemplateField HeaderText="Particolare" SortExpression="Particolare">
<ItemTemplate>
<b>
<asp:Label ID="lblUdc" runat="server" Text='<%# Eval("UDC") %>' /></b>
<br />
<asp:Label ID="lblParticolare" runat="server" Text='<%# Eval("Particolare") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Qta" SortExpression="Qta" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<span style="padding: 0px 4px;">
<b>
<asp:Label ID="lblQtaDtx" runat="server" Text='<%# Eval("QtaDtx","{0:0}") %>' /></b>
/<asp:Label ID="lblQta" runat="server" Text='<%# Eval("Qta","{0:0}") %>' />
</span>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right"></ItemStyle>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="odsAL" runat="server" OldValuesParameterFormatString="{0}"
SelectMethod="getByAL" TypeName="GMW_data.DS_magazzinoTableAdapters.v_A2U2DTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="lblAL" DefaultValue="AL0000" Name="AL" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:LinkButton runat="server" ID="lbtPrendeCaricoAL" Width="100%" CssClass="btn btn-warning btn-sm" OnClick="lbtPrendeCaricoAL_Click"><i aria-hidden='true' class='fa fa-arrow-circle-down fa-2x'></i> <%: traduci("lbtPrendeCaricoAL") %></asp:LinkButton>
<asp:LinkButton runat="server" ID="lbtChiudiAL" Width="100%" CssClass="btn btn-danger btn-sm" OnClick="lbtChiudiAL_Click"><i aria-hidden='true' class='fa fa-arrow-circle-up fa-2x'></i> <%: traduci("lbtChiudeAL") %></asp:LinkButton>
</div>
</div>--%>
</div>
<div class="col-sm-4 col-lg-6">
<div>
<asp:Label runat="server" ID="lblParticolareAttivo" Font-Size="32pt" Text="" />
</div>
<div>
<asp:Label runat="server" ID="lblDescrAttivo" Font-Size="24pt" Text="" ToolTip="particolare" />
&nbsp
<asp:Label runat="server" ID="lblDisegno" Font-Size="24pt" Text="" ForeColor="#FFFFFF" Font-Bold="true" ToolTip="disegno" />
</div>
<div>
<div id="divBarcode" runat="server">
<div>
<div>
<asp:Label runat="server" ID="lblBarcode" AssociatedControlID="txtBarcode"><%: traduci("lblDataMatrix") %></asp:Label>
</div>
<asp:TextBox runat="server" ID="txtBarcode" Height="56px" Width="100%" Font-Size="32pt" AutoPostBack="True" Style="text-align: center" TabIndex="1" />
</div>
</div>
<div id="divNote" runat="server">
<div>
<%: traduci("Note") %>
</div>
<div>
<asp:TextBox runat="server" ID="txtNote" Height="126px" Width="100%" Font-Size="24pt" Style="text-align: center" TextMode="MultiLine" TabIndex="2" />
</div>
<div>
<asp:LinkButton runat="server" ID="lbtStampaUDC" Width="100%" CssClass="btn btn-warning btn-lg" TabIndex="3" OnClick="lbtStampaUDC_Click"><i aria-hidden='true' class='fa fa-print fa-2x'></i> <%: traduci("lbtGeneraUDC") %></asp:LinkButton>
</div>
</div>
</div>
</div>
<div class="col-sm-4 col-lg-3">
<div class="panel panel-primary panel-sm">
<div class="panel-heading">
<b><%: traduci("Destinazione") %></b> (UDC)
</div>
<div class="panel-body">
<div class="bg-primary">
<asp:Label runat="server" ID="lblDestAL" />
</div>
<asp:GridView ID="grViewDest" runat="server" AutoGenerateColumns="False"
DataKeyNames="UDC" DataSourceID="odsDestAL" Width="100%" OnSelectedIndexChanged="grViewDest_SelectedIndexChanged">
<RowStyle CssClass="ctrRowStyle" />
<AlternatingRowStyle CssClass="ctrAltRowStyle" />
<EditRowStyle CssClass="ctrEditRowStyle" />
<SelectedRowStyle CssClass="ctrSelRowStyle" />
<FooterStyle CssClass="ctrFooter" />
<PagerStyle CssClass="ctrHeaderPager" ForeColor="White" HorizontalAlign="Center" />
<HeaderStyle CssClass="ctrHeaderPager" ForeColor="White" Font-Bold="True" />
<EmptyDataRowStyle CssClass="ctrRowStyle" />
<EmptyDataTemplate>
<asp:Label runat="server" ID="lblNoRecord" Text='<%# traduci("noRecord") %>' />
</EmptyDataTemplate>
<Columns>
<asp:TemplateField ShowHeader="False">
<HeaderTemplate>
<asp:LinkButton ID="btnReset" runat="server" OnClick="btnReset_Click" CssClass="btn btn-default btn-xs"><i class="glyphicon glyphicon-refresh"></i> <%: traduci("Reset") %></asp:LinkButton>
</HeaderTemplate>
<ItemTemplate>
<asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="False" CommandName="Select" CssClass="text-success"><i class='<%# cssGlyphByQty(Eval("QtaDtx"),Eval("Qta"))%>'></i></asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Particolare" SortExpression="Particolare">
<ItemTemplate>
<b>
<asp:Label ID="lblUdc" runat="server" Text='<%# Eval("UDC") %>' /></b>
<br />
<asp:Label ID="lblParticolare" runat="server" Text='<%# Eval("Particolare") %>' />
</ItemTemplate>
</asp:TemplateField>
<asp:TemplateField HeaderText="Qta" SortExpression="Qta" ItemStyle-HorizontalAlign="Right">
<ItemTemplate>
<span style="padding: 0px 4px;">
<b>
<asp:Label ID="lblQtaDtx" runat="server" Text='<%# Eval("QtaDtx","{0:0}") %>' /></b>
/<asp:Label ID="lblQta" runat="server" Text='<%# Eval("Qta","{0:0}") %>' />
</span>
</ItemTemplate>
<ItemStyle HorizontalAlign="Right"></ItemStyle>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="odsDestAL" runat="server" OldValuesParameterFormatString="{0}"
SelectMethod="getByAL" TypeName="GMW_data.DS_magazzinoTableAdapters.v_A2U2DTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="lblDestAL" DefaultValue="AL0000" Name="AL" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
</div>
</div>
<div id="divQta" runat="server" class="panel panel-default panel-sm">
<div class="panel-heading">
<b><%: traduci("lblQtaPart") %></b>
</div>
<div class="panel-body">
<asp:TextBox runat="server" ID="txtQta" Width="100%" Font-Size="28pt" Style="text-align: center" />
<asp:LinkButton runat="server" ID="lbtUpdQty" Font-Size="18pt" CssClass="btn btn-success" Width="100%" OnClick="lbtUpdQty_Click"><i aria-hidden='true' class='glyphicon glyphicon-pencil'></i> <%: traduci("updateQty") %></asp:LinkButton>
</div>
</div>
</div>
</div>
+751 -1
View File
@@ -4,14 +4,764 @@ using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using SteamWare;
using GMW_data;
namespace GMW.WebUserControls
{
public partial class mod_LiqDtAnom : System.Web.UI.UserControl
public partial class mod_LiqDtAnom : SteamWare.UserControl
{
/// <summary>
/// stringa UID univoca
/// </summary>
public string uid
{
get
{
return this.UniqueID.Replace("$", "_").Replace("-", "_");
}
}
/// <summary>
/// flusso associato (hard coded) a LI (finiti)
/// </summary>
protected string flusso = "FI";
/// <summary>
/// flusso associato (hard coded) ad ancestor TT (Trattati)
/// </summary>
protected string flussoAnc = "TT";
/// <summary>
/// flusso associato (hard coded) a temporaneo TL (Trattati/Liquidi)
/// </summary>
protected string flussoTemp = "TL";
/// <summary>
/// stato associato (hard coded) a UDC in OUT: Finito
/// </summary>
protected string statoUdcOut = "Fin";
/// <summary>
/// stato associato (hard coded) a UDC in IN: Trattato da travaso AL
/// </summary>
protected string statoUdcIn = "Tratt";
/// <summary>
/// codice evento dell'UDC definitivo (OUT) che si crea
/// </summary>
protected string codEventoUdcOut = "UDC_TL_DT";
/// <summary>
/// codice evento dell'UDC temporaneo (IN) che si crea
/// </summary>
protected string codEventoUdcIn = "UDC_TRATT";
protected string cssOk = "stileComandoOk";
protected string cssErr = "stileComandoKo";
protected string cssWait = "stileComandoND";
protected string cssAtt = "stileAttesa";
protected string cssWarn = "stileComandoWarn";
protected string cssAdd = "stileComandoAdd";
public event EventHandler eh_reqUpdate;
/// <summary>
/// ultimo valore barcode letto (x confronto conferme doppio input...)
/// </summary>
protected string lastBarcodeIn
{
get
{
return memLayer.ML.StringSessionObj(string.Format("lastBCode_{0}", uid));
}
set
{
memLayer.ML.setSessionVal(string.Format("lastBCode_{0}", uid), value, false);
}
}
/// <summary>
/// Codice AL della cella corrente
/// </summary>
protected string destAL
{
get
{
return lblDestAL.Text.Trim();
}
set
{
lblDestAL.Text = value;
}
}
/// <summary>
/// Codice AL associato alla cella corrente...
/// </summary>
protected string AlByCella
{
get
{
string answ = "";
try
{
answ = string.Format("ALF00{0}", Postazione.currCodCella);
// controllo se esista AL sennò lo creo...
if (MagClass.magazzino.taEA.getByAL(answ).Rows.Count == 0)
{
MagClass.magazzino.taEA.Insert(answ, true, DateTime.Now, MagClass.magazzino.CodSoggCurrUser, "", "");
}
}
catch
{ }
return answ;
}
}
/// <summary>
/// indica il codice articolo correntemente selezionato
/// </summary>
protected string currParticolare
{
get
{
return memLayer.ML.StringSessionObj(string.Format("currParticolare_{0}", uid));
}
set
{
memLayer.ML.setSessionVal(string.Format("currParticolare_{0}", uid), value, memLayer.ML.confReadBool("keepParticolareSel"));
}
}
/// <summary>
/// indica UDC correntemente selezionato
/// </summary>
protected string currUDC
{
get
{
return memLayer.ML.StringSessionObj(string.Format("UDC_{0}", uid));
}
set
{
memLayer.ML.setSessionVal(string.Format("UDC_{0}", uid), value, memLayer.ML.confReadBool("keepParticolareSel"));
}
}
/// <summary>
/// num pezzi dell'ultimo UDC di uguale particolare e stato fatto...
/// </summary>
public int pezziUdc
{
get
{
int answ = 0;
try
{
answ = (int)MagClass.magazzino.taCartellini.getLastByParticolareStato(memLayer.ML.StringSessionObj("CodCS"), currParticolare, statoUdcOut)[0].Qta;
}
catch
{
answ = memLayer.ML.confReadInt("QtaImballoFiniti");
}
return answ;
}
}
/// <summary>
/// qta pezzi x UDC
/// </summary>
public 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 string barcodeIn
{
get
{
return txtBarcode.Text.Trim();
}
set
{
txtBarcode.Text = value;
}
}
/// <summary>
/// caricamento pagina
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
qta = 0;
currUDC = "";
setDefaultVal();
}
setVisibility();
checkBarcode();
}
/// <summary>
/// imposta i valori di default ad avvio
/// </summary>
private void setDefaultVal()
{
destAL = AlByCella;
}
/// <summary>
/// sistema modalità input
/// </summary>
private void setVisibility()
{
bool showBtn = false;
// ora controllo btn quantità
if (grViewDest.SelectedIndex >= 0)
{
showBtn = true;
}
divQta.Visible = showBtn;
}
/// <summary>
/// reset maschera...
/// </summary>
protected void doReset()
{
// resetta
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 = "stileComandoOk";
}
else
{
Postazione.warningText = traduci("ErroreAlNonTtAttivo");
Postazione.CssClass = "stileComandoKo";
}
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 = "stileComandoKo";
}
else
{
Postazione.warningText = "";
Postazione.CssClass = "stileComandoOk";
}
return answ;
}
/// <summary>
/// controlla se ci sia un barcode e cosa farne...
/// </summary>
private void checkBarcode()
{
if (barcodeIn != "")
{
Postazione.messaggiText = string.Format("{0}: {1}", traduci("BCodeIns"), barcodeIn);
switch (MagClass.tipoBCode(barcodeIn))
{
case tipoCodiceBarcode.Comando:
// se è reset cancello tutto!
if (barcodeIn == memLayer.ML.confReadString("cmdReset"))
{
doReset();
}
break;
case tipoCodiceBarcode.UDC:
// controllo di avere destAL valido, sennò ricarico pagina...
if (destAL.Length > 5)
{
// controllo se sia un UDC valido...
if (MagClass.magazzino.checkUDC(barcodeIn))
{
// controllo se sia un UDC di finiti LIQ in posizione 4...
DS_magazzino.ElencoCartelliniRow cartUDC = MagClass.magazzino.taCartellini.getByUdc(barcodeIn)[0];
if (cartUDC.CodStato == statoUdcOut && cartUDC.IdxPosizione == memLayer.ML.confReadInt("IdxPosizioneFiniti"))
{
// 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)
{
// 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;
}
else
{
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-LIQ-001");
Postazione.CssClass = cssErr;
}
}
else
{
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-LIQ-004");
Postazione.CssClass = cssErr;
}
}
else
{
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-LIQ-002");
Postazione.CssClass = cssErr;
}
}
else
{
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-LIQ-003");
Postazione.CssClass = cssErr;
}
}
else
{
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-ALF-001");
Postazione.CssClass = cssErr;
}
break;
case tipoCodiceBarcode.DataMatrix:
string OldUDC = "";
int IdxPosizione = 0;
string NewUDC = "";
// verifico DTX sia in quelli dell'AL sorgente
#if false
if (DataMatrix.mgr.taDtx2UDC.getByDtxAl(sourceAL, barcodeIn).Rows.Count > 0)
#endif
if (false)
{
// cerco se ci sia UDC di destinazione
DateTime adesso = DateTime.Now;
try
{
#if false
OldUDC = DataMatrix.mgr.taDtx2UDC.getByDtxAl(sourceAL, barcodeIn)[0].UDC;
#endif
IdxPosizione = MagClass.magazzino.taCartellini.getByUdc(OldUDC)[0].IdxPosizione;
currParticolare = MagClass.magazzino.taCartellini.getByUdc(OldUDC)[0].Particolare;
}
catch
{
currParticolare = "";
}
if (currParticolare != "")
{
try
{
NewUDC = MagClass.magazzino.taCartellini.getByParticolareAL(currParticolare, destAL)[0].UDC;
}
catch
{
NewUDC = "";
}
if (NewUDC == "")
{
// scambio UDC e prendo quello TT
OldUDC = OldUDC.Replace(flussoTemp, flussoAnc);
// controllo se devo usare chiamata a stored unica (UDC + aggancio AL + cella corretta) o due chiamate
if (memLayer.ML.confReadBool("useStoredLiqSP"))
{
#if false
// nuova stored con AL e cella......
NewUDC = MagClass.magazzino.creaUdcWithAlCella(destAL, sourceAL, barcodeIn, statoUdcOut, Postazione.currCodCella, flusso, "", currParticolare, "", "", "", "", OldUDC, 0, memLayer.ML.confReadString("CodImballoFiniti"), "U", MagClass.magazzino.CodSoggCurrUser, pezziUdc, 0, 0, adesso, 0, statoUdcOut, memLayer.ML.confReadInt("IdxPosizioneFinTemp"), "IdxPosizioneFinTemp", codEventoUdcOut, "", "", adesso.Year, Request.UserHostName);
#endif
}
else
{
// oppure lo creo...
NewUDC = MagClass.magazzino.creaUdc(flusso, "", currParticolare, "", "", "", "", OldUDC, 0, memLayer.ML.confReadString("CodImballoFiniti"), "U", MagClass.magazzino.CodSoggCurrUser, pezziUdc, 0, 0, adesso, 0, statoUdcOut, memLayer.ML.confReadInt("IdxPosizioneFinTemp"), "IdxPosizioneFinTemp", codEventoUdcOut, "", "", adesso.Year, Request.UserHostName);
// lo associo all'AL!
MagClass.magazzino.taAL2UDC.Insert(destAL, NewUDC, adesso, MagClass.magazzino.CodSoggCurrUser);
// se lo trovo chiamo procedura di spostamento Dtx tra UDC sorgente --> dest (con eventuale creazione dest)
DataMatrix.mgr.taDtx2UDC.UpdateUDC(NewUDC, barcodeIn, statoUdcOut, DateTime.Now, MagClass.magazzino.CodSoggCurrUser);
}
}
else
{
// se lo trovo chiamo procedura di spostamento Dtx tra UDC sorgente --> dest (con eventuale creazione dest)
DataMatrix.mgr.taDtx2UDC.UpdateUDC(NewUDC, barcodeIn, statoUdcOut, DateTime.Now, MagClass.magazzino.CodSoggCurrUser);
}
// fix messaggi
Postazione.messaggiText = traduci("ConfermatoDtx");
Postazione.warningText = "";
Postazione.CssClass = cssAtt;
}
else
{
Postazione.messaggiText = barcodeIn;
Postazione.warningText = traduci("UdcNonTrovato");
Postazione.CssClass = cssErr;
}
}
// se non lo trovo --> errore!
else
{
// faccio ulteriore verifica: se il datamatrix sia "libero" o già tra i "Missing In Action"..
if (DataMatrix.mgr.taDtxAvailFree.GetData(barcodeIn).Rows.Count > 0)
{
// controllo se sia seconda conferma
if (barcodeIn == lastBarcodeIn)
{
lastBarcodeIn = "";
// in questo caso aggiungo Dtx con la catena della storia precedente
try
{
currParticolare = DataMatrix.mgr.taDecode.GetData(barcodeIn)[0].Particolare;
}
catch
{
currParticolare = "";
}
if (currParticolare != "")
{
try
{
NewUDC = MagClass.magazzino.taCartellini.getByParticolareAL(currParticolare, destAL)[0].UDC;
}
catch
{
NewUDC = "";
}
if (NewUDC != "")
{
// sono in caso di forzatura Dtx, quindi controllo se l'UDC di destinazione esista e abbia qta > 0
if (MagClass.magazzino.taCartellini.getByUdc(NewUDC)[0].Qta > 0)
{
// riassocio (se possibile) UDC alla nuova storia (se era un DTX x prove dimensionali post TT non cambio la sua storia ma aggiungo relazioni UDC...)
DataMatrix.mgr.taDtx2UDC.RiassociaDtx(NewUDC, barcodeIn, DateTime.Now, MagClass.magazzino.CodSoggCurrUser);
// fix messaggi
Postazione.messaggiText = traduci("ConfermatoDtx");
Postazione.warningText = "";
Postazione.CssClass = cssAtt;
}
else
{
// errore! UDC dest con qta == 0
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-DTX-005");
Postazione.CssClass = cssErr;
}
}
else
{
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-DTX-001");
Postazione.CssClass = cssErr;
}
}
else
{
Postazione.messaggiText = "";
Postazione.warningText = traduci("ERR-DTX-002");
Postazione.CssClass = cssErr;
}
}
// salvo prima conferma del dtx x insert
else
{
lastBarcodeIn = barcodeIn;
Postazione.messaggiText = traduci("plsConfDtxLoad");
Postazione.warningText = traduci("ERR-DTX-003");
Postazione.CssClass = cssAdd;
}
}
else
{
// devo distinguere tra il caso dei Dtx già spostati (quindi segnalare che è già in destinazione)
// verifico DTX sia in quelli dell'AL destinazione
if (DataMatrix.mgr.taDtx2UDC.getByDtxAl(destAL, barcodeIn).Rows.Count > 0)
{
try
{
currParticolare = DataMatrix.mgr.taDecode.GetData(barcodeIn)[0].Particolare;
}
catch
{
currParticolare = "";
}
NewUDC = MagClass.magazzino.taCartellini.getByParticolareAL(currParticolare, destAL)[0].UDC;
Postazione.messaggiText = barcodeIn;
Postazione.warningText = traduci("ERR-DTX-006");
Postazione.CssClass = cssWait;
}
// ... dal caso generico di un Dtx NON accettabile
else
{
// volendo qui si potrebbe distinguere tra Dtx già con stato Fin e Dtx di RX/TT non ancora preso in carico ai Liquidi
// errore generico!
Postazione.messaggiText = barcodeIn;
Postazione.warningText = traduci("ERR-DTX-004");
Postazione.CssClass = cssErr;
}
}
}
break;
default:
Postazione.warningText = traduci("ERR-BCD-001");
Postazione.CssClass = cssErr;
break;
}
barcodeIn = "";
}
doUpdate();
}
/// <summary>
/// aggiorna tabella + focus a barcode
/// </summary>
public void doUpdate()
{
setDefaultVal();
setVisibility();
grViewDest.DataBind();
// raise dell'evento
if (eh_reqUpdate != null)
{
eh_reqUpdate(this, new EventArgs());
}
verificaBtnStampa();
txtBarcode.Focus();
}
/// <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);
}
Postazione.messaggiText = traduci("partSelected");
Postazione.warningText = "";
Postazione.CssClass = "stileComandoOk";
setVisibility();
doUpdate();
// fisso focus su note!
txtNote.Focus();
}
/// <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>
protected void btnReset_Click(object sender, EventArgs e)
{
grViewDest.SelectedIndex = -1;
qta = 0;
currUDC = "";
setVisibility();
doUpdate();
}
/// <summary>
/// update Qty x UDC selezionato...
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void lbtUpdQty_Click(object sender, EventArgs e)
{
MagClass.magazzino.taCartellini.updateQty(currUDC, MagClass.magazzino.CodSoggCurrUser, "U", codEventoUdcOut, qta);
// fix tablet
currUDC = "";
currParticolare = "";
grViewDest.SelectedIndex = -1;
doUpdate();
}
/// <summary>
/// richiesta (ri)stampa UDC
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
public void ristampa()
{
MagClass.magazzino.stampaUdc(udcReq, Postazione.printer, tipoCartellino.cartFinitiSP, Request.UserHostName);
// registro ri-stampa UDC
MagClass.magazzino.taSAO.insertQuery(DateTime.Now, MagClass.magazzino.CodSoggCurrUser, Postazione.name, Postazione.IP, udcReq, "", "stampaUDC", string.Format("Ri-Stampato UDC Dtx {0} su linea {1}", currUDC, Postazione.currCodLinea));
}
/// <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
{
#if false
// update UDC!
fatto = MagClass.magazzino.liquidiFullUpdate(sourceAL, flussoAnc, currUDC, noteTrim, MagClass.magazzino.CodSoggCurrUser);
#endif
}
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);
// 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>
/// udc da stampare
/// </summary>
protected string udcReq
{
get
{
return memLayer.ML.StringSessionObj("udcSelSAO");
}
}
}
}
+158 -7
View File
@@ -3,15 +3,166 @@
// This code was generated by a tool.
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace GMW.WebUserControls
{
public partial class mod_LiqDtAnom
{
namespace GMW.WebUserControls {
public partial class mod_LiqDtAnom {
/// <summary>
/// BundleReference1 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::Microsoft.AspNet.Web.Optimization.WebForms.BundleReference BundleReference1;
/// <summary>
/// BundleReference2 control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::Microsoft.AspNet.Web.Optimization.WebForms.BundleReference BundleReference2;
/// <summary>
/// lblParticolareAttivo control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblParticolareAttivo;
/// <summary>
/// lblDescrAttivo control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblDescrAttivo;
/// <summary>
/// lblDisegno control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblDisegno;
/// <summary>
/// divBarcode control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divBarcode;
/// <summary>
/// lblBarcode control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblBarcode;
/// <summary>
/// txtBarcode control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtBarcode;
/// <summary>
/// divNote control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divNote;
/// <summary>
/// txtNote control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtNote;
/// <summary>
/// lbtStampaUDC control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtStampaUDC;
/// <summary>
/// lblDestAL control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblDestAL;
/// <summary>
/// grViewDest control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.GridView grViewDest;
/// <summary>
/// odsDestAL control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.ObjectDataSource odsDestAL;
/// <summary>
/// divQta control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divQta;
/// <summary>
/// txtQta control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.TextBox txtQta;
/// <summary>
/// lbtUpdQty control.
/// </summary>
/// <remarks>
/// Auto-generated field.
/// To modify move field declaration from designer file to code-behind file.
/// </remarks>
protected global::System.Web.UI.WebControls.LinkButton lbtUpdQty;
}
}
@@ -179,17 +179,6 @@ namespace GMW.WebUserControls
lblShowHideStorico.Text = traduci("btnShowStorico");
}
}
#if false
/// <summary>
/// wrapper traduzione
/// </summary>
/// <param name="lemma"></param>
/// <returns></returns>
public string traduci(object lemma)
{
return user_std.UtSn.Traduci(lemma.ToString());
}
#endif
/// <summary>
/// URL pagina NT
/// </summary>
BIN
View File
Binary file not shown.
Binary file not shown.
Binary file not shown.
+5
View File
@@ -3203,6 +3203,11 @@
<param name="lemma"></param>
<returns></returns>
</member>
<member name="P:SteamWare.UserControl.forceUppercase">
<summary>
indica se i caratteri vadano forzati a maiuscoli
</summary>
</member>
<member name="T:SteamWare.user_std">
<summary>
classe gestione utente: auth e permission/ruoli - versione GENERICA
Binary file not shown.
+5
View File
@@ -3203,6 +3203,11 @@
<param name="lemma"></param>
<returns></returns>
</member>
<member name="P:SteamWare.UserControl.forceUppercase">
<summary>
indica se i caratteri vadano forzati a maiuscoli
</summary>
</member>
<member name="T:SteamWare.user_std">
<summary>
classe gestione utente: auth e permission/ruoli - versione GENERICA
+2 -2
View File
@@ -5,7 +5,7 @@
using System.Reflection;
[assembly: AssemblyVersion("2.5.691.1599")]
[assembly: AssemblyFileVersion("2.5.691.1599")]
[assembly: AssemblyVersion("2.5.692.1616")]
[assembly: AssemblyFileVersion("2.5.692.1616")]
[assembly: AssemblyCopyright("Steamware © 2007-2014")]
[assembly: AssemblyCompany("Steamware")]
+2 -2
View File
@@ -6,8 +6,8 @@
using System.Reflection;
[assembly: AssemblyVersion("2.5.691.<#= this.RevisionNumber #>")]
[assembly: AssemblyFileVersion("2.5.691.<#= this.RevisionNumber #>")]
[assembly: AssemblyVersion("2.5.692.<#= this.RevisionNumber #>")]
[assembly: AssemblyFileVersion("2.5.692.<#= this.RevisionNumber #>")]
[assembly: AssemblyCopyright("Steamware © 2007-<#= DateTime.Now.Year #>")]
[assembly: AssemblyCompany("Steamware")]
<#+