Update redis + fix conferma prod x doppia tavola OK
This commit is contained in:
@@ -2,60 +2,73 @@
|
||||
<%@ Register Src="~/WebUserControls/mod_tempoMSMC.ascx" TagPrefix="uc1" TagName="mod_tempoMSMC" %>
|
||||
|
||||
<% if (false)
|
||||
{ %>
|
||||
{ %>
|
||||
<link href="../Style.css" rel="stylesheet" type="text/css" />
|
||||
<% } %>
|
||||
<div class="clearDiv" style="background-color: transparent;">
|
||||
<h1>Dichiarazione Attrezzaggio</h1>
|
||||
<div class="ui-grid-a semaforoRosso" id="divWarningArt" runat="server" visible="false">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<h3>ATTENZIONE: articolo in revisione</h3>
|
||||
</div>
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:Button runat="server" ID="btnConfNewRevProd" Text="CONFERMA produzione nuova REV" data-role="button" data-iconpos="bottom" data-icon="star"
|
||||
data-theme="d" OnClick="btnConfNewRevProd_Click" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaNuovaRev") %>' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-grid-a">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<asp:DropDownList runat="server" ID="ddlODL" DataSourceID="odsODL" DataTextField="label" DataValueField="value" OnSelectedIndexChanged="ddlODL_SelectedIndexChanged" AutoPostBack="True">
|
||||
</asp:DropDownList>
|
||||
<asp:ObjectDataSource runat="server" ID="odsODL" OldValuesParameterFormatString="original_{0}" SelectMethod="getUnused" TypeName="MapoDb.DS_UtilityTableAdapters.v_selODLTableAdapter"></asp:ObjectDataSource>
|
||||
<div runat="server" id="divNote" visible="false">
|
||||
<asp:TextBox runat="server" ID="txtNote" TextMode="MultiLine" Height="4em" placeholder="Note attrezzaggio" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:Button runat="server" ID="btnStartAttr" Text="INIZIO Attrezzaggio" data-role="button" data-iconpos="bottom" data-icon="check"
|
||||
data-theme="b" OnClick="btnStartAttr_Click" />
|
||||
<div runat="server" id="divTempo" visible="false">
|
||||
<uc1:mod_tempoMSMC runat="server" ID="mod_tempoMSMC" modoControllo="selettori" modoTempo="MS" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-grid-a" data-role="content">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<asp:Button runat="server" ID="btnStartProd" Text="FINE Attrezzaggio / INIZIO Produzione" data-role="button" data-iconpos="bottom" data-icon="check"
|
||||
data-theme="e" OnClick="btnStartProd_Click" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaInizioProd") %>' />
|
||||
</div>
|
||||
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:Button runat="server" ID="btnEndProd" Text="FINE Produzione" data-role="button" data-iconpos="bottom" data-icon="delete"
|
||||
data-theme="b" OnClick="btnEndProd_Click" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaFineProd") %>' />
|
||||
</div>
|
||||
<div class="ui-grid-a">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<h1>Dichiarazione Attrezzaggio</h1>
|
||||
</div>
|
||||
<div class="ui-grid-a" data-role="content">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<asp:Button runat="server" ID="btnShowSplitODL" Text="Mostra Riattrezzaggio" data-role="button" data-iconpos="bottom" data-icon="alert"
|
||||
data-theme="c" OnClick="btnShowSplitODL_Click" />
|
||||
</div>
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:CheckBox runat="server" ID="chkCloseOdl" Checked="false" Text="Chiudi ODL inevaso" data-theme="e" />
|
||||
<asp:Button runat="server" ID="btnSplitODL" Text="Effettua Riattrezzaggio" data-role="button" data-iconpos="bottom" data-icon="alert"
|
||||
data-theme="c" OnClick="btnSplitODL_Click" Visible="false" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaRiattrezzaggio") %>' />
|
||||
</div>
|
||||
<div class="ui-block-b" data-role="content" runat="server" id="divSelMacc">
|
||||
<asp:DropDownList runat="server" ID="ddlSubMacc" DataSourceID="ods" DataTextField="CodMaccArticolo" DataValueField="IdxMacchina" AutoPostBack="True" OnSelectedIndexChanged="ddlSubMacc_SelectedIndexChanged"></asp:DropDownList>
|
||||
<asp:ObjectDataSource runat="server" ID="ods" OldValuesParameterFormatString="original_{0}" SelectMethod="getMulti" TypeName="MapoDb.DS_applicazioneTableAdapters.MSFDTableAdapter" FilterExpression="idxMacchina LIKE '%#%'">
|
||||
<SelectParameters>
|
||||
<asp:SessionParameter DefaultValue="0" Name="IdxMacchina" SessionField="IdxMacchina" Type="String" />
|
||||
</SelectParameters>
|
||||
</asp:ObjectDataSource>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-grid-a semaforoRosso" id="divWarningArt" runat="server" visible="false">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<h3>ATTENZIONE: articolo in revisione</h3>
|
||||
</div>
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:Button runat="server" ID="btnConfNewRevProd" Text="CONFERMA produzione nuova REV" data-role="button" data-iconpos="bottom" data-icon="star"
|
||||
data-theme="d" OnClick="btnConfNewRevProd_Click" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaNuovaRev") %>' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-grid-a">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<asp:DropDownList runat="server" ID="ddlODL" DataSourceID="odsODL" DataTextField="label" DataValueField="value" OnSelectedIndexChanged="ddlODL_SelectedIndexChanged" AutoPostBack="True">
|
||||
</asp:DropDownList>
|
||||
<asp:ObjectDataSource runat="server" ID="odsODL" OldValuesParameterFormatString="original_{0}" SelectMethod="getUnused" TypeName="MapoDb.DS_UtilityTableAdapters.v_selODLTableAdapter"></asp:ObjectDataSource>
|
||||
<div runat="server" id="divNote" visible="false">
|
||||
<asp:TextBox runat="server" ID="txtNote" TextMode="MultiLine" Height="4em" placeholder="Note attrezzaggio" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:Button runat="server" ID="btnStartAttr" Text="INIZIO Attrezzaggio" data-role="button" data-iconpos="bottom" data-icon="check"
|
||||
data-theme="b" OnClick="btnStartAttr_Click" />
|
||||
<div runat="server" id="divTempo" visible="false">
|
||||
<uc1:mod_tempoMSMC runat="server" ID="mod_tempoMSMC" modoControllo="selettori" modoTempo="MS" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-grid-a" data-role="content">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<asp:Button runat="server" ID="btnStartProd" Text="FINE Attrezzaggio / INIZIO Produzione" data-role="button" data-iconpos="bottom" data-icon="check"
|
||||
data-theme="e" OnClick="btnStartProd_Click" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaInizioProd") %>' />
|
||||
</div>
|
||||
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:Button runat="server" ID="btnEndProd" Text="FINE Produzione" data-role="button" data-iconpos="bottom" data-icon="delete"
|
||||
data-theme="b" OnClick="btnEndProd_Click" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaFineProd") %>' />
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-grid-a" data-role="content">
|
||||
<div class="ui-block-a" data-role="content">
|
||||
<asp:Button runat="server" ID="btnShowSplitODL" Text="Mostra Riattrezzaggio" data-role="button" data-iconpos="bottom" data-icon="alert"
|
||||
data-theme="c" OnClick="btnShowSplitODL_Click" />
|
||||
</div>
|
||||
<div class="ui-block-b" data-role="content">
|
||||
<asp:CheckBox runat="server" ID="chkCloseOdl" Checked="false" Text="Chiudi ODL inevaso" data-theme="e" />
|
||||
<asp:Button runat="server" ID="btnSplitODL" Text="Effettua Riattrezzaggio" data-role="button" data-iconpos="bottom" data-icon="alert"
|
||||
data-theme="c" OnClick="btnSplitODL_Click" Visible="false" OnClientClick='<%# SteamWare.jsUtils.getCBE("confermaRiattrezzaggio") %>' />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="ui-grid-solo" data-role="content" data-theme="a">
|
||||
<asp:Label runat="server" ID="lblOut" ForeColor="Red" />
|
||||
<asp:Label runat="server" ID="lblOut" ForeColor="Red" />
|
||||
</div>
|
||||
|
||||
@@ -29,6 +29,33 @@ namespace MoonProTablet.WebUserControls
|
||||
/// idx macchina selezionata
|
||||
/// </summary>
|
||||
public string idxMacchina
|
||||
{
|
||||
get
|
||||
{
|
||||
string answ = memLayer.ML.StringSessionObj("IdxMacchina");
|
||||
// verifoc: se multi uso selettore tendina...
|
||||
if (isMulti)
|
||||
{
|
||||
if (ddlSubMacc.SelectedValue == "")
|
||||
{
|
||||
ddlSubMacc.DataBind();
|
||||
}
|
||||
if (ddlSubMacc.SelectedValue != "")
|
||||
{
|
||||
answ = ddlSubMacc.SelectedValue;
|
||||
}
|
||||
}
|
||||
return answ;
|
||||
}
|
||||
set
|
||||
{
|
||||
memLayer.ML.setSessionVal("IdxMacchina", value);
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// idx macchina selezionata
|
||||
/// </summary>
|
||||
public string idxMacchinaSession
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -83,11 +110,36 @@ namespace MoonProTablet.WebUserControls
|
||||
checkBtnStatus();
|
||||
if (!Page.IsPostBack)
|
||||
{
|
||||
lblOut.Text = "";
|
||||
chkCloseOdl.Checked = memLayer.ML.cdvb("chkCloseOdl");
|
||||
chkCloseOdl.Visible = memLayer.ML.cdvb("showChkCloseOdl");
|
||||
checkAll();
|
||||
}
|
||||
}
|
||||
|
||||
private void checkAll()
|
||||
{
|
||||
fixSelMacc();
|
||||
lblOut.Text = "";
|
||||
chkCloseOdl.Checked = memLayer.ML.cdvb("chkCloseOdl");
|
||||
chkCloseOdl.Visible = memLayer.ML.cdvb("showChkCloseOdl");
|
||||
}
|
||||
/// <summary>
|
||||
/// Verifica se la macchina MAIN sia MULTI (da DatiMacchina / redis...)
|
||||
/// </summary>
|
||||
protected bool isMulti
|
||||
{
|
||||
get
|
||||
{
|
||||
return DataLayer.isMulti(idxMacchinaSession);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Se la machcina è MULTI --> mostro selettore
|
||||
/// </summary>
|
||||
private void fixSelMacc()
|
||||
{
|
||||
divSelMacc.Visible = isMulti;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// controlla stato bottoni abilitato
|
||||
/// </summary>
|
||||
@@ -97,8 +149,7 @@ namespace MoonProTablet.WebUserControls
|
||||
btnShowSplitODL.Enabled = isEnabled;
|
||||
btnSplitODL.Enabled = isEnabled;
|
||||
chkCloseOdl.Enabled = isEnabled;
|
||||
|
||||
|
||||
|
||||
// condizioni booleane
|
||||
bool inAttr = false;
|
||||
bool currHasOdl = false;
|
||||
@@ -495,5 +546,11 @@ namespace MoonProTablet.WebUserControls
|
||||
DataLayer.obj.taAnagArt.setNewRev(CodArticolo);
|
||||
checkBtnStatus();
|
||||
}
|
||||
|
||||
|
||||
protected void ddlSubMacc_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
checkAll();
|
||||
}
|
||||
}
|
||||
}
|
||||
+27
@@ -12,6 +12,33 @@ namespace MoonProTablet.WebUserControls {
|
||||
|
||||
public partial class mod_ODL {
|
||||
|
||||
/// <summary>
|
||||
/// Controllo divSelMacc.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.HtmlControls.HtmlGenericControl divSelMacc;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo ddlSubMacc.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.DropDownList ddlSubMacc;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo ods.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Campo generato automaticamente.
|
||||
/// Per la modifica, spostare la dichiarazione di campo dal file di progettazione al file code-behind.
|
||||
/// </remarks>
|
||||
protected global::System.Web.UI.WebControls.ObjectDataSource ods;
|
||||
|
||||
/// <summary>
|
||||
/// Controllo divWarningArt.
|
||||
/// </summary>
|
||||
|
||||
@@ -71,7 +71,7 @@ namespace MoonProTablet.WebUserControls
|
||||
int idxOdl = 0; // userò ODL del turno
|
||||
try
|
||||
{
|
||||
idxOdl = DataLayer.obj.taMSE.getByIdxMacchina(idxMacchina)[0].idxODL;
|
||||
idxOdl = DataLayer.obj.taODL.getByMacchina(idxMacchina)[0].IdxODL;
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -223,7 +223,7 @@ namespace MoonProTablet.WebUserControls
|
||||
/// <param name="e"></param>
|
||||
protected void btnSalva_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (memLayer.ML.confReadInt("modoConfProd") == 2)
|
||||
if (memLayer.ML.CRI("modoConfProd") == 2)
|
||||
{
|
||||
confermaPerTurni();
|
||||
}
|
||||
@@ -248,12 +248,6 @@ namespace MoonProTablet.WebUserControls
|
||||
/// </summary>
|
||||
private void confermaPerGiorni()
|
||||
{
|
||||
// vecchia chiamata esplicita, uso metodo datalayer (singleton) nuovo...
|
||||
#if false
|
||||
DS_ProdTempi.stp_PzProd_getByMacchinaRow rigaProd = DataLayer.obj.taPzProd2conf.GetData(idxMacchina.ToString())[0];
|
||||
// chiamo stored stp_ConfermaProduzCompleta(idxMacchina,MatrApp,dataFrom,dataTo,pezziConf)
|
||||
DataLayer.obj.taPzProd2conf.stp_ConfermaProduzCompleta(idxMacchina.ToString(), DataLayer.MatrOpr, rigaProd.DataFrom, rigaProd.DataTo, numPzConfermati, memLayer.ML.confReadInt("modoConfProd"));
|
||||
#endif
|
||||
DataLayer.obj.confermaProdMacchina(idxMacchina.ToString(), memLayer.ML.confReadInt("modoConfProd"), numPzConfermati, numPzScarto);
|
||||
}
|
||||
/// <summary>
|
||||
@@ -261,109 +255,6 @@ namespace MoonProTablet.WebUserControls
|
||||
/// </summary>
|
||||
private void confermaPerTurni()
|
||||
{
|
||||
// vecchia chiamata esplicita, uso metodo datalayer (singleton) nuovo...
|
||||
#if false
|
||||
// carico i dati preliminari: ODL
|
||||
int idxOdl = 0; // userò ODL del turno
|
||||
try
|
||||
{
|
||||
idxOdl = DataLayer.obj.taODL.getByMacchina(idxMacchina.ToString())[0].IdxODL;
|
||||
}
|
||||
catch
|
||||
{
|
||||
logger.lg.scriviLog(string.Format("Errore a recuperare ODL per la macchina {0}", idxMacchina), tipoLog.ERROR);
|
||||
}
|
||||
// carico i dati preliminari: operatore
|
||||
int MatrAppr = DataLayer.MatrOpr;
|
||||
// variabile per ODL del turno
|
||||
DS_ProdTempi.ODLDataTable elencoOdlTurno;
|
||||
// carico i dati da confermare...
|
||||
DS_ProdTempi.stp_PzProd_getByMacchinaRow rigaProd = DataLayer.obj.taPzProd2conf.GetData(idxMacchina.ToString())[0];
|
||||
// chiamo la stored
|
||||
try
|
||||
{
|
||||
// ricavo i turni della macchina da anagrafica
|
||||
// !!!FARE!!! da db incrociando dati da anagrafica... x ora calcolo con turno 8 h x 7 gg/week
|
||||
int shiftTurno = 6;
|
||||
int durataTurno = 8;
|
||||
// calcolo quanti turni da approvare ci siano
|
||||
int numTurni2appr = (int)Math.Ceiling(rigaProd.DataTo.Subtract(rigaProd.DataFrom).TotalHours / durataTurno);
|
||||
// questa dataora rappresenta l'inizio del turno che man mano vado ad approvare
|
||||
DateTime dataCurr = rigaProd.DataFrom;
|
||||
turnoLavoro turnoCurr;
|
||||
int pzProd = 0;
|
||||
int idxStatoProd = 13; // hard coded!!!
|
||||
// definisco intervallo date x fare query (inizialmente è turno)
|
||||
intervalloDate periodoOdl = new intervalloDate();
|
||||
intervalloDate periodoProd = new intervalloDate();
|
||||
// vado a ciclare da dataFrom a dataTo per ogni turno compreso fino all'ultimo turno intero
|
||||
for (int i = 0; i < numTurni2appr; i++)
|
||||
{
|
||||
// calcolo il turno che comprende la data da approvare
|
||||
turnoCurr = datario.mngr.getTurnoByDateTime(dataCurr, shiftTurno, durataTurno);
|
||||
// recupero elenco ODL del turno (in modo che se ne ho + di 1 faccio + inserimenti produzione)
|
||||
elencoOdlTurno = DataLayer.obj.taODL.getByMacchinaPeriodoNoNull(idxMacchina.ToString(), turnoCurr.inizio, turnoCurr.fine);
|
||||
// se ho almeno 1 ODL approvo...
|
||||
foreach (DS_ProdTempi.ODLRow odl in elencoOdlTurno)
|
||||
{
|
||||
idxOdl = odl.IdxODL;
|
||||
// calcolo periodo ODL
|
||||
periodoOdl = datario.mngr.setIntervallo(odl.DataInizio, odl.DataFine);
|
||||
// calcolo intersezione periodi: tra turno e validità ODL
|
||||
periodoProd = datario.mngr.intersecaIntervalli(periodoOdl, turnoCurr.periodo);
|
||||
// calcolo i pezzi da confermare x l'ODL in esame... ovvero imposto inizio/fine periodo da intersezione periodo ODL + turno
|
||||
try
|
||||
{
|
||||
// approvando tanto la produzione
|
||||
pzProd = DataLayer.obj.taPzProd2conf.getByMacchinaPeriodo(idxMacchina.ToString(), periodoProd.inizio, periodoProd.fine)[0].pezziNonConfermati;
|
||||
}
|
||||
catch
|
||||
{
|
||||
pzProd = 0;
|
||||
}
|
||||
// carico i dati x Turno ed ODL
|
||||
try
|
||||
{
|
||||
DataLayer.obj.taPzProd2conf.stp_DatiConf_conferma(idxOdl, idxMacchina.ToString(), MatrAppr, turnoCurr.inizio, turnoCurr.fine, turnoCurr.TNum, idxStatoProd, pzProd);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
logger.lg.scriviLog(string.Format("Errore in INSERT dati x tab DatiConfermati: odl: {0}, idxMacchina: {1}, turno da {2} a {3}, errore{4}{5}", idxOdl, idxMacchina, turnoCurr.inizio, turnoCurr.fine, Environment.NewLine, exc), tipoLog.ERROR);
|
||||
}
|
||||
}
|
||||
// qui non ho + cambiato nulla per multi/ODL
|
||||
try
|
||||
{
|
||||
// chiamo stored inserimento dati produzione per il turno
|
||||
DataLayer.obj.taDatiProd.stp_DatiProd_insAllPeriodo(idxMacchina.ToString(), turnoCurr.inizio, turnoCurr.fine, turnoCurr.inizio.Date, turnoCurr.TNum, MatrAppr);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
logger.lg.scriviLog(string.Format("Errore in insert x tab DatiProduzione per il turno: odl: {0}, idxMacchina: {1}, turno da {2} a {3}, errore{4}{5}", idxOdl, idxMacchina, turnoCurr.inizio, turnoCurr.fine, Environment.NewLine, exc), tipoLog.ERROR);
|
||||
}
|
||||
dataCurr = dataCurr.AddHours(durataTurno);
|
||||
}
|
||||
// IN FINE confermo la produzione della DIFFERENZA tra quanto rilevato a sistema dai tempi ciclo rilevati e quanto dichiarato all'istante della dichiarazione
|
||||
try
|
||||
{
|
||||
pzProd = DataLayer.obj.taPzProd2conf.getByMacchinaPeriodo(idxMacchina.ToString(), rigaProd.DataFrom, rigaProd.DataTo)[0].pezziNonConfermati;
|
||||
}
|
||||
catch
|
||||
{
|
||||
pzProd = 0;
|
||||
}
|
||||
// confermo DELTA tab DatiConfermati
|
||||
DataLayer.obj.taPzProd2conf.stp_DatiConf_conferma(idxOdl, idxMacchina.ToString(), MatrAppr, DateTime.Now, DateTime.Now, 1, idxStatoProd, numPzConfermati - pzProd);
|
||||
// confermo DELTA tab DatiProduzione - ATTENZIONE NON METTO TEMPO NEGATIVO!!!
|
||||
DataLayer.obj.taDatiProd.stp_DatiProd_insert(idxOdl, idxMacchina.ToString(), MatrAppr, DateTime.Now, DateTime.Now, 1, numPzConfermati - pzProd, 0, "T_CorrProd");
|
||||
// mostro output
|
||||
lblOut.Text = string.Format("Confermata la produzione per {0} pezzi!", numPzConfermati);
|
||||
}
|
||||
catch (Exception exc)
|
||||
{
|
||||
logger.lg.scriviLog(string.Format("Errore nella chiamata a stored di conferma dati!{0}{1}", Environment.NewLine, exc), tipoLog.ERROR);
|
||||
}
|
||||
#endif
|
||||
DataLayer.obj.confermaProdMacchina(idxMacchina.ToString(), memLayer.ML.confReadInt("modoConfProd"), numPzConfermati, numPzScarto);
|
||||
}
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user