FINALMENTE crea PODL dei KIT!!!!

This commit is contained in:
Samuele E. Locatelli
2018-10-25 16:47:05 +02:00
parent 70c39840fc
commit fa3392044d
10 changed files with 286 additions and 242 deletions
+49 -7
View File
@@ -43,6 +43,20 @@ namespace MoonProAdmin.WebUserControls
}
}
/// <summary>
/// Valore validazione codici ORDINE come STARTING (es: OPR,KIT)
/// </summary>
public string codOrdPre
{
get
{
return memLayer.ML.StringSessionObj(string.Format("codOrdPre_{0}", uid));
}
set
{
memLayer.ML.setSessionVal(string.Format("codOrdPre_{0}", uid), value);
}
}
public string codArt
{
get
@@ -131,7 +145,17 @@ namespace MoonProAdmin.WebUserControls
memLayer.ML.setSessionVal(string.Format("codGruppo_{0}", uid), value);
}
}
/// <summary>
/// Verifica se il cod ordine è OK:
/// coerenza tra ordine e iniziale ordine (OPR/KIT)
/// </summary>
public bool checkOrdOk
{
get
{
return codOrd.StartsWith(codOrdPre);
}
}
/// <summary>
/// titolo pagina
/// </summary>
@@ -314,12 +338,25 @@ namespace MoonProAdmin.WebUserControls
}
else if (BCodeVal == regExp_OK)
{
comando.isValid = true;
// controllo se ho tutti i dati necessari...
if (codOrd != "" && codArt != "" && codGruppo != "" && idxMacc != "" && qta > 0)
// comando valido SE ho ordine coerente...
if (checkOrdOk)
{
// creo nuova PROMESSA ODL...
DataLayer.obj.taPODL.insertQuery(codOrd, codOrd, true, codArt, codGruppo, idxMacc, qta, 1, DateTime.Now, 1, 1);
comando.isValid = true;
// recupero il codGruppo da macchina... (primo)
if (codGruppo == "")
{
var tabAG = DataLayer.obj.taAG.getFaseByIdxMacc(idxMacc);
if(tabAG.Rows.Count>0)
{
codGruppo = tabAG[0].CodGruppo;
}
}
// controllo se ho tutti i dati necessari...
if (codOrd != "" && codArt != "" && codGruppo != "" && idxMacc != "" && qta > 0)
{
// creo nuova PROMESSA ODL...
DataLayer.obj.taPODL.insertQuery(codOrd, codOrd, true, codArt, codGruppo, idxMacc, qta, 1, DateTime.Now, 1, 1);
}
}
// resetto ricaricando
Response.Redirect(titolo);
@@ -369,6 +406,7 @@ namespace MoonProAdmin.WebUserControls
/// </summary>
private void checkParam()
{
// ho macchina ed articolo?
bool hasAllData = (idxMacc != "" && codArt != "");
string valOut = "";
if (codArt != "")
@@ -391,7 +429,11 @@ namespace MoonProAdmin.WebUserControls
{
comando.descrComando += " - Manca Ordine Produzione - ";
}
if (hasAllData)
if (!checkOrdOk)
{
comando.descrComando += " - Tipo Ordine errato - ";
}
if (hasAllData && checkOrdOk)
{
comando.descrComando = "Confermare caricamento";
}
+124 -72
View File
@@ -1,79 +1,131 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="mod_gestKIT.ascx.cs" Inherits="MoonProAdmin.WebUserControls.mod_gestKIT" %>
<div class="row">
<div class="col-sm-4">
Dati commesse
<hr />
<ol>
<li><s>cmd x reset e ripartire a fare NUOVO kit</s></li>
<li><s>lettura del barcode</s></li>
<li><s>recupero OPR</s></li>
<li><s>decodifica come articolo</s></li>
<li><s>lista di ordini KIT collegati ad OPR IN ROSSO</s></li>
<li>eventuale lista di ordini KIT collegati ad articolo IN VERDE</li>
<li><s>salvataggio OPR in lista (redis session)</s></li>
<li><s>ricerca KIT con articolo(i)</s></li>
<li><s>controllo kit completo</s></li>
<li><s>comando conferma e crea KIT</s></li>
<li>lascio filtro OPR/articolo x mostrare ordine (nei 2 modi rosso/verde)</li>
<li><s>cmd x reset e ripartire a fare NUOVO kit</s></li>
</ol>
<ul>
<li><b>esempio KIT: 8060A00</b></li>
<li>OPR18-20381</li>
<li>OPR18-21855</li>
<li>OPR18-21856</li>
<li>OPR18-22974</li>
</ul>
</div>
<div class="col-sm-4">
Elenco KIT con commesse (RED) + elenco kit con ARTICOLI (green)
<asp:GridView runat="server" ID="grViewIstanzeKIT" DataSourceID="odsIstanzeKIT" AutoGenerateColumns="False" DataKeyNames="KeyKit,KeyExtOrd" CssClass="table table-sm table-striped table-danger">
<EmptyDataTemplate>
Nessun Record (Ordini associati a KIT)
</EmptyDataTemplate>
<Columns>
<asp:BoundField DataField="KeyKit" HeaderText="KeyKit" ReadOnly="True" SortExpression="KeyKit" />
<asp:BoundField DataField="KeyExtOrd" HeaderText="KeyExtOrd" ReadOnly="True" SortExpression="KeyExtOrd" />
<asp:BoundField DataField="CodArtParent" HeaderText="CodArtParent" SortExpression="CodArtParent" />
<asp:BoundField DataField="CodArtChild" HeaderText="CodArtChild" SortExpression="CodArtChild" />
<asp:BoundField DataField="QtyKIT" HeaderText="QtyKIT" SortExpression="QtyKIT" />
<asp:BoundField DataField="QtyART" HeaderText="QtyART" SortExpression="QtyART" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="odsIstanzeKIT" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="getByExtOrd" TypeName="MapoDb.DS_IntServTableAdapters.IstanzeKITTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="hfCodOrdList" Name="KeyExtOrd" PropertyName="Value" Type="String" DefaultValue="" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:HiddenField runat="server" ID="hfCodOrdList" />
</div>
<div class="col-sm-4">
<b>Elenco KIT compatibili</b>
<asp:GridView runat="server" ID="grViewKitSel" DataSourceID="odsKitSel" AutoGenerateColumns="False" CssClass="table table-striped table-secondary" DataKeyNames="CodArtParent" OnSelectedIndexChanged="grViewKitSel_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="CodArtParent" HeaderText="Codice KIT" SortExpression="CodArtParent" />
<asp:BoundField DataField="TotalScore" HeaderText="Coerenza KIT" ReadOnly="True" SortExpression="TotalScore" DataFormatString="{0:P2}" ItemStyle-HorizontalAlign="Right" />
<asp:TemplateField HeaderText="Azione">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lbtCreatePODL" Visible='<%# Eval("TotalScore","{0:P0}") == "100%" %>' CssClass="btn btn-success btn-sm" ToolTip="Crea ordine KIT" CommandName="select">
<div class="col-sm-12">
<div class="card-deck">
<div class="card">
<div class="card-header bg-primary text-light">
<h4>Composizione KIT</h4>
</div>
<div class="card-body">
<b>Ordini selezionati:</b>
<asp:GridView runat="server" ID="grViewWSK" DataSourceID="odsWSK" AutoGenerateColumns="False" DataKeyNames="KeyFilt,CodOrd" CssClass="table table-sm table-striped">
<EmptyDataTemplate>
Nessun Ordine caricato
</EmptyDataTemplate>
<Columns>
<asp:BoundField DataField="CodOrd" HeaderText="OPR" ReadOnly="True" SortExpression="CodOrd" ItemStyle-CssClass="text-nowrap" />
<asp:BoundField DataField="CodArt" HeaderText="Cod.Art" SortExpression="CodArt" ItemStyle-CssClass="font-weight-bold" />
<asp:BoundField DataField="DescArt" HeaderText="Desc.Art" SortExpression="DescArt" ItemStyle-CssClass="small" />
<asp:BoundField DataField="Qta" HeaderText="Qta" SortExpression="Qta" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource runat="server" ID="odsWSK" OldValuesParameterFormatString="original_{0}" SelectMethod="getByFilt" TypeName="MapoDb.DS_IntServTableAdapters.WipSetupKitTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="hlCodKitTemp" Name="KeyFilt" PropertyName="Value" Type="String" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:HiddenField runat="server" ID="hlCodKitTemp" />
<ul>
<li><b>esempio KIT: 8060A00</b></li>
<li>OPR18-20381</li>
<li>OPR18-21855</li>
<li>OPR18-21856</li>
<li>OPR18-21857</li>
<li>OPR18-22974 (NON VA BENE A313)</li>
</ul>
</div>
<div class="card-footer py-1 bg-primary text-light">
Cod temp: <b><%: hlCodKitTemp.Value %></b>
</div>
</div>
<div class="card">
<div class="card-header bg-success text-light">
<h4>Verifica KIT</h4>
</div>
<div class="card-body">
<b>Elenco KIT compatibili</b>
<asp:GridView runat="server" ID="grViewKitSel" DataSourceID="odsKitSel" AutoGenerateColumns="False" CssClass="table table-striped table-sm" DataKeyNames="CodArtParent" OnSelectedIndexChanged="grViewKitSel_SelectedIndexChanged">
<Columns>
<asp:BoundField DataField="CodArtParent" HeaderText="Codice KIT" SortExpression="CodArtParent" />
<asp:BoundField DataField="TotalScore" HeaderText="Coerenza KIT" ReadOnly="True" SortExpression="TotalScore" DataFormatString="{0:P2}" ItemStyle-HorizontalAlign="Right" />
<asp:TemplateField HeaderText="Azione">
<ItemTemplate>
<asp:LinkButton runat="server" ID="lbtCreatePODL" Visible='<%# Eval("TotalScore","{0:P0}") == "100%" %>' CssClass="btn btn-success btn-sm" ToolTip="Crea ordine KIT" CommandName="select">
<i class="fa fa-plus-square"></i> Prom.ODL <i class="fa fa-plus-square"></i>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:LinkButton>
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
<asp:ObjectDataSource runat="server" ID="odsKitSel" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="MapoDb.DS_IntServTableAdapters.TKS_SearchTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="hfCodArtList" DefaultValue="###" Name="CodArtChildMulti" PropertyName="Value" Type="String" />
<asp:Parameter DefaultValue="3" Name="maxResult" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:HiddenField runat="server" ID="hfCodArtList" />
</asp:GridView>
<asp:ObjectDataSource runat="server" ID="odsKitSel" OldValuesParameterFormatString="original_{0}" SelectMethod="GetData" TypeName="MapoDb.DS_IntServTableAdapters.TKS_SearchTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="hfCodArtList" DefaultValue="###" Name="CodArtChildMulti" PropertyName="Value" Type="String" />
<asp:Parameter DefaultValue="3" Name="maxResult" Type="Int32" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:HiddenField runat="server" ID="hfCodArtList" />
</div>
<div class="card-footer py-1 bg-secondary text-light">
altro
</div>
</div>
<div class="card">
<div class="card-header bg-secondary text-light">
<h4>INFO</h4>
</div>
<div class="card-body">
centro
Elenco KIT con commesse (RED) + elenco kit con ARTICOLI (green)
<ol>
<li><s>cmd x reset e ripartire a fare NUOVO kit</s></li>
<li><s>lettura del barcode</s></li>
<li><s>recupero OPR</s></li>
<li><s>decodifica come articolo</s></li>
<li><s>lista di ordini KIT collegati ad OPR IN ROSSO</s></li>
<li>eventuale lista di ordini KIT collegati ad articolo IN VERDE</li>
<li><s>salvataggio OPR in lista (redis session)</s></li>
<li><s>ricerca KIT con articolo(i)</s></li>
<li><s>controllo kit completo</s></li>
<li><s>comando conferma e crea KIT</s></li>
<li>lascio filtro OPR/articolo x mostrare ordine (nei 2 modi rosso/verde)</li>
<li><s>cmd x reset e ripartire a fare NUOVO kit</s></li>
</ol>
</div>
<div class="card-footer py-1 bg-secondary text-light">
altro
</div>
</div>
<div class="card">
<div class="card-header bg-danger text-light">
<h4>KIT già composti</h4>
</div>
<div class="card-body">
<b>Elenco KIT già associati agli ordini</b>
<asp:GridView runat="server" ID="grViewIstanzeKIT" DataSourceID="odsIstanzeKIT" AutoGenerateColumns="False" DataKeyNames="KeyKit,KeyExtOrd" CssClass="table table-sm table-striped table-danger">
<EmptyDataTemplate>
Nessun Record (Ordini associati a KIT)
</EmptyDataTemplate>
<Columns>
<asp:BoundField DataField="KeyKit" HeaderText="Cod.KIT" ReadOnly="True" SortExpression="KeyKit" />
<asp:BoundField DataField="KeyExtOrd" HeaderText="KeyExtOrd" ReadOnly="True" SortExpression="KeyExtOrd" />
<asp:BoundField DataField="CodArtParent" HeaderText="Art.KIT" SortExpression="CodArtParent" />
<asp:BoundField DataField="CodArtChild" HeaderText="Cod.Art" SortExpression="CodArtChild" />
</Columns>
</asp:GridView>
<asp:ObjectDataSource ID="odsIstanzeKIT" runat="server" OldValuesParameterFormatString="original_{0}" SelectMethod="getByExtOrd" TypeName="MapoDb.DS_IntServTableAdapters.IstanzeKITTableAdapter">
<SelectParameters>
<asp:ControlParameter ControlID="hfCodOrdList" Name="KeyExtOrd" PropertyName="Value" Type="String" DefaultValue="" />
</SelectParameters>
</asp:ObjectDataSource>
<asp:HiddenField runat="server" ID="hfCodOrdList" />
</div>
<div class="card-footer py-1 bg-secondary text-light">
altro
</div>
</div>
</div>
</div>
</div>
<div class="row">
@@ -145,4 +197,4 @@ exec stp_IstKit_byKeyExtOrd 'OPR-123321,OPR-123456,'
exec stp_IstKit_getKey
--%>
--%>
+9 -117
View File
@@ -149,42 +149,10 @@ namespace MoonProAdmin.WebUserControls
set
{
memLayer.ML.setSessionVal(string.Format("codKitTemp_{0}", uid), value);
hlCodKitTemp.Value = value;
grViewWSK.DataBind();
}
}
#if false
/// <summary>
/// Oggetto KIT in composizione gestito in sessione
/// </summary>
public OrdineProdKit OrdineKit
{
get
{
OrdineProdKit answ;
string serVal = memLayer.ML.StringSessionObj(string.Format("OrdineKit_{0}", uid));
// deserializzo SE C'E'...
if (serVal != "")
{
//var objDeser = memLayer.ML.deserializeVal(serVal);
//answ = (OrdineProdKit)objDeser;
answ = JsonConvert.DeserializeObject<OrdineProdKit>(serVal);
}
else
{
answ = new OrdineProdKit();
}
return answ;
}
set
{
// serializzo...
string serVal = memLayer.ML.serializeVal(value);
//string serVal = JsonConvert.SerializeObject(value);
// salvo
memLayer.ML.setSessionVal(string.Format("OrdineKit_{0}", uid), serVal);
}
}
#endif
/// <summary>
/// Aggiunge (in obj OrdineKit) l'ordine coi parametri indicati
/// </summary>
@@ -201,52 +169,7 @@ namespace MoonProAdmin.WebUserControls
// salvo info x il cod temporaneo...
DataLayer.obj.taWKS.insertQuery(codKitTemp, codOrd, codArt, descArt, qta);
answ = true;
#if false
var currOrd = OrdineKit;
// creo oggetto articolo
Articolo newArt = new Articolo
{
Codice = codArt,
Descrizione = descArt
};
// creo un nuovo oggetto OrdineArticolo
OrdineProdArt newOrdArt = new OrdineProdArt
{
OrdNum = codOrd,
ArtOrd = newArt,
Qta = qta
};
var orderList = new List<OrdineProdArt>();
// se nullo inizializzo...
if (currOrd == null || currOrd.Codice == null)
{
orderList.Add(newOrdArt);
currOrd = new OrdineProdKit
{
OrdNum = "000000",
Codice = "KIT_UNKNOWN",
Qta = 1,
OrdiniArt = orderList
};
}
else
{
// cerco duplicato...
int idx = currOrd.OrdiniArt.FindIndex(x => x.OrdNum.Equals(codOrd));
if (idx >= 0)
{
// se ci fosse riga la cancello...
currOrd.OrdiniArt.RemoveAt(idx);
}
// aggiungo SOLO la riga articolo
currOrd.OrdiniArt.Add(newOrdArt);
}
// salvo ordine...
OrdineKit = currOrd;
answ = true;
#endif
grViewWSK.DataBind();
return answ;
}
@@ -324,21 +247,6 @@ namespace MoonProAdmin.WebUserControls
elCodOrd += item.CodOrd + ",";
}
}
#if false
var currOrd = OrdineKit;
if (currOrd != null && currOrd.Codice != null)
{
sb.AppendLine(string.Format("OrdNum:{0}, TemplateKIT: {1}, Qta: {2}<br/>", currOrd.OrdNum, currOrd.Codice, currOrd.Qta));
foreach (var item in OrdineKit.OrdiniArt)
{
sb.AppendLine(string.Format("OrdNum:{0}, CodArt: {1}, Descr: {2}, Qta: {3}<br/>", item.OrdNum, item.ArtOrd.Codice, item.ArtOrd.Descrizione, item.Qta));
elCodArt += item.ArtOrd.Codice + ",";
elCodOrd += item.OrdNum + ",";
}
}
#endif
// accodo...
messOut += sb.ToString();
hfCodArtList.Value = elCodArt;
@@ -352,9 +260,6 @@ namespace MoonProAdmin.WebUserControls
kitCode = "";
qta = 0;
descArt = "";
#if false
OrdineKit = new OrdineProdKit();
#endif
// elimino eventuali record ODL
DataLayer.obj.taWKS.deleteQuery(codKitTemp);
codKitTemp = "";
@@ -386,8 +291,10 @@ namespace MoonProAdmin.WebUserControls
protected void grViewKitSel_SelectedIndexChanged(object sender, EventArgs e)
{
// se ho selezionato recupero CHIAVE
// se ho selezionato recupero CHIAVE = CodArticolo del KIT
string CodArtParent = grViewKitSel.SelectedValue.ToString();
// recupero conf x quel kit...
string KeyKit = "";
// calcolo NUOVO codice kit...
var tabKey = DataLayer.obj.taIstK.getNewKey();
@@ -395,27 +302,12 @@ namespace MoonProAdmin.WebUserControls
{
// stacco un NUOVO codice KIT
KeyKit = tabKey[0].KeyKit;
// inserisco!
// inserisco ISTANZA KIT!
DataLayer.obj.taIstK.insertByWKS(KeyKit, CodArtParent, codKitTemp);
//CREO la P.ODL...
// faccio reset valori WKS...
doReset();
// !!! FARE!!! nuovo metodo x creazione PODL
#if false
// recupero dati
var currOrd = OrdineKit;
// ora calcolo codice ordine...
currOrd.Codice = CodKit;
// creo NUOVA IstanzaKIT PER OGNI ordine
if (currOrd != null && currOrd.Codice != null)
{
foreach (var item in OrdineKit.OrdiniArt)
{
DataLayer.obj.taIstK.insertQuery(newCodKit, item.OrdNum, currOrd.Codice, item.ArtOrd.Codice, item.Qta, item.Qta);
}
OrdineKit = new OrdineProdKit();
}
#endif
hfCodArtList.Value = "";
hfCodOrdList.Value = "";
// ora resetto ordine caricato...
+33 -6
View File
@@ -13,31 +13,31 @@ namespace MoonProAdmin.WebUserControls {
public partial class mod_gestKIT {
/// <summary>
/// Controllo grViewIstanzeKIT.
/// Controllo grViewWSK.
/// </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.GridView grViewIstanzeKIT;
protected global::System.Web.UI.WebControls.GridView grViewWSK;
/// <summary>
/// Controllo odsIstanzeKIT.
/// Controllo odsWSK.
/// </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 odsIstanzeKIT;
protected global::System.Web.UI.WebControls.ObjectDataSource odsWSK;
/// <summary>
/// Controllo hfCodOrdList.
/// Controllo hlCodKitTemp.
/// </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.HiddenField hfCodOrdList;
protected global::System.Web.UI.WebControls.HiddenField hlCodKitTemp;
/// <summary>
/// Controllo grViewKitSel.
@@ -66,6 +66,33 @@ namespace MoonProAdmin.WebUserControls {
/// </remarks>
protected global::System.Web.UI.WebControls.HiddenField hfCodArtList;
/// <summary>
/// Controllo grViewIstanzeKIT.
/// </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.GridView grViewIstanzeKIT;
/// <summary>
/// Controllo odsIstanzeKIT.
/// </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 odsIstanzeKIT;
/// <summary>
/// Controllo hfCodOrdList.
/// </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.HiddenField hfCodOrdList;
/// <summary>
/// Controllo hlLastInput.
/// </summary>