COmpletato add, edit, incr/decr x remnants

This commit is contained in:
Samuele Locatelli
2021-11-19 12:20:10 +01:00
parent 5864eb448a
commit 06b8edc0b2
6 changed files with 243 additions and 38 deletions
@@ -60,6 +60,7 @@ namespace NKC.Data.Controllers
.DbSetRemnants
.Where(x => (x.MatID == matId || matId == 0) && (x.QtyAvail >= minQty || minQty == 0))
//.OrderBy(o => o.Area)
.Include(m => m.MaterialNav)
.ToList();
}
return dbResult;
@@ -107,5 +108,57 @@ namespace NKC.Data.Controllers
}
return answ;
}
public bool RemnantsUpsert(RemnantsModel updItem)
{
bool done = false;
using (NKCContext localDbCtx = new NKCContext(_configuration))
{
try
{
RemnantsModel currData = localDbCtx
.DbSetRemnants
.Where(x => x.RemnID == updItem.RemnID)
.FirstOrDefault();
if (currData != null)
{
// aggiorno valori
currData.MatID = updItem.MatID;
currData.DtMod = updItem.DtMod;
currData.Location = updItem.Location;
currData.Note = updItem.Note;
currData.QtyAvail = updItem.QtyAvail;
currData.LMm = updItem.LMm;
currData.WMm = updItem.WMm;
currData.TMm = updItem.TMm;
localDbCtx.Entry(currData).State = EntityState.Modified;
}
else
{
currData = new RemnantsModel()
{
MatID = updItem.MatID,
DtMod = updItem.DtMod,
Location = updItem.Location,
Note = updItem.Note,
QtyAvail = updItem.QtyAvail,
LMm = updItem.LMm,
WMm = updItem.WMm,
TMm = updItem.TMm
};
localDbCtx
.DbSetRemnants
.Add(currData);
}
localDbCtx.SaveChanges();
done = true;
}
catch (Exception exc)
{
Log.Error($"Eccezione in PlantUpdate:{Environment.NewLine}{exc}");
}
}
return done;
}
}
}
+71 -25
View File
@@ -6,36 +6,82 @@
<EditForm Model="@_currItem">
<DataAnnotationsValidator />
<div class="row">
<div class="col-12 col-lg-5">
@*<ParamSet PlantIdSel="@PlantId" ParamUidSel="@ParamUid"></ParamSet>*@
</div>
<div class="col-12 col-lg-5 align-items-center">
<div class="d-flex">
<div class="p-2">
<b>@_currItem.MaterialNav.MatExtCode</b>
</div>
<div class="p-2 text-right">
@_currItem.MaterialNav.MatDesc
</div>
</div>
@*<div class="row">
<div class="col">
<div class="input-group">
<div class="input-group-prepend">
<button @onclick="() => setCalc()" class="btn btn-primary">@CalcVal.ToString("N3") <i class="fas fa-arrow-alt-circle-right"></i></button>
<div class="col-12 col-lg-10">
<div class="row">
<div class="col-4">
<div class="d-flex">
<div class="p-2">
<b>@_currItem.MaterialNav.MatExtCode</b>
</div>
<InputNumber @bind-Value="@_currItem.reqValDec" class="form-control text-right"></InputNumber>
<div class="input-group-append">
<span class="input-group-text" title="Valore Richiesto">Act: <b>@_currItem.value</b></span>
<div class="p-2 text-right">
@_currItem.MaterialNav.MatDesc
</div>
</div>
</div>
</div>*@
@*<div class="row">
<div class="col">
<ParamSendEditor PlantIdSel="@PlantId" ParamUidSel="@ParamUid"></ParamSendEditor>
<div class="col-2 text-right">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
Qty Avail
</span>
</div>
<InputNumber @bind-Value="@_currItem.QtyAvail" class="form-control text-right"></InputNumber>
</div>
</div>
</div>*@
<div class="col-6">
<div class="input-group">
<InputText @bind-Value="@_currItem.Location" class="form-control text-right"></InputText>
<div class="input-group-append">
<span class="input-group-text">
Location
</span>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
L mm
</span>
</div>
<InputNumber @bind-Value="@_currItem.LMm" class="form-control text-right"></InputNumber>
</div>
</div>
<div class="col-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
W mm
</span>
</div>
<InputNumber @bind-Value="@_currItem.WMm" class="form-control text-right"></InputNumber>
</div>
</div>
<div class="col-2">
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text">
T mm
</span>
</div>
<InputNumber @bind-Value="@_currItem.TMm" class="form-control text-right"></InputNumber>
</div>
</div>
<div class="col-6 text-right">
<div class="input-group">
<InputText @bind-Value="@_currItem.Note" class="form-control text-right"></InputText>
<div class="input-group-append">
<span class="input-group-text">
Note
</span>
</div>
</div>
</div>
</div>
</div>
<div class="col-12 col-lg-2">
<button type="button" class="btn btn-warning btn-block" value="Cancel" @onclick="cancelUpdate">Cancel <i class="fas fa-ban"></i></button>
+2 -2
View File
@@ -71,12 +71,12 @@ namespace REMAN.Components
private async Task saveUpdate()
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Sicuro di voler inviare il valore per parametro richiesto?"))
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Are you sure to create new record?"))
return;
if (_currItem != null)
{
//await DataService.updateMachineParameter(IdxMacchina, _currItem.uid, _currItem.reqValue);
await DataService.RemnantsUpsert(currItem);
await DataUpdated.InvokeAsync(0);
}
else
+46
View File
@@ -142,6 +142,52 @@ namespace REMAN.Data
return await Task.FromResult(dbResult);
}
public async Task<bool> RemnantsUpsert(RemnantsModel currItem)
{
bool done = false;
try
{
done = dbController.RemnantsUpsert(currItem);
await InvalidateAllCache();
}
catch (Exception exc)
{
Log.Error($"Eccezione in RemnantsUpsert:{Environment.NewLine}{exc}");
}
return await Task.FromResult(done);
}
public async Task<bool> RemnantsMovMag(RemnantsModel currItem, int deltaQty)
{
bool done = false;
try
{
// modifico qty entro limiti >=0..
if (currItem.QtyAvail + deltaQty >= 0)
{
currItem.QtyAvail += deltaQty;
done = dbController.RemnantsUpsert(currItem);
await InvalidateAllCache();
}
}
catch (Exception exc)
{
Log.Error($"Eccezione in RemnantsMovMag:{Environment.NewLine}{exc}");
}
return await Task.FromResult(done);
}
/// <summary>
/// invalida tutta la cache in caso di update
/// </summary>
/// <returns></returns>
public async Task InvalidateAllCache()
{
await distributedCache.RemoveAsync(rKeyMaterials);
await distributedCache.RemoveAsync(rKeyRemnants);
}
public void rollBackEdit(object item)
{
dbController.rollBackEntity(item);
+26 -6
View File
@@ -64,8 +64,9 @@
<tr>
<th></th>
<th>Cod</th>
<th>Descr</th>
<th>Location</th>
<th>Qty</th>
<th class="text-center">Qty</th>
<th class="text-right">L x W x T (mm)</th>
<th class="text-right">Note</th>
</tr>
@@ -75,24 +76,43 @@
{
<tr>
<td class="text-nowrap">
<button class="btn btn-sm btn-info" @onclick="() => Select(record)">
<i class="oi oi-magnifying-glass"></i>
<button class="btn btn-sm btn-info" @onclick="() => Select(record)" title="Show Detail">
<i class="fas fa-search"></i>
</button>
<button class="btn btn-sm btn-primary" @onclick="() => Edit(record)" title="Edit">
<i class="fas fa-pencil-alt"></i>
</button>
<button class="btn btn-sm btn-warning" @onclick="() => Clone(record)" title="Duplicate">
<i class="fas fa-code-branch"></i>
</button>
</td>
<td>
<b>@record.MaterialNav.MatExtCode</b>
</td>
<td>
<span class="small">@record.MaterialNav.MatDesc</span>
</td>
<td>
@record.Location
</td>
<td>
<b>@record.QtyAvail</b>
<div class="d-flex justify-content-center">
<div class="px-2">
<button class="btn btn-sm btn-danger" @onclick="() => remQty(record)"><i class="fas fa-minus"></i></button>
</div>
<div class="px-2">
<b>@record.QtyAvail</b>
</div>
<div class="px-2">
<button class="btn btn-sm btn-success" @onclick="() => addQty(record)"><i class="fas fa-plus"></i></button>
</div>
</div>
</td>
<td class="text-right">
<span>@record.LMm x @record.WMm x @record.TMm</span>
<span class="small">@record.LMm x @record.WMm x @record.TMm</span>
</td>
<td class="text-right">
@record.Note
<span class="small">@record.Note</span>
</td>
</tr>
}
+45 -5
View File
@@ -112,18 +112,58 @@ namespace REMAN.Pages
protected void Select(RemnantsModel selRecord)
{
currRecord = selRecord;
}
protected void Edit(RemnantsModel selRecord)
{
currRecord = selRecord;
}
protected void Clone(RemnantsModel selRecord)
{
currRecord = new RemnantsModel()
{
MatID = selRecord.MatID,
DtMod = DateTime.Now,
Location = selRecord.Location,
QtyAvail = selRecord.QtyAvail,
LMm = selRecord.LMm,
TMm = selRecord.TMm,
WMm = selRecord.WMm,
Note = selRecord.Note,
MaterialNav = selRecord.MaterialNav
};
}
protected async Task addQty(RemnantsModel selRecord)
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Confirm qtantity increase?"))
return;
await DataService.RemnantsMovMag(selRecord, 1);
await ReloadData();
}
protected async Task remQty(RemnantsModel selRecord)
{
if (!await JSRuntime.InvokeAsync<bool>("confirm", "Confirm qtantity decrease?"))
return;
await DataService.RemnantsMovMag(selRecord, -1);
await ReloadData();
}
protected MaterialModel currMat
{
get
{
MaterialModel answ = new MaterialModel();
var selMat = MaterialsList
.Where(x => x.MatID == SelMatID)
.FirstOrDefault();
answ = selMat != null ? selMat : answ;
return answ;
}
}
protected void AddNew()
{
// recupero il materiale selezionato
var currMat = MaterialsList
.Where(x => x.MatID == SelMatID)
.FirstOrDefault();
if (currMat != null)
{
// creo record da materiale...
@@ -137,7 +177,7 @@ namespace REMAN.Pages
TMm = currMat.TMm,
WMm = currMat.WMm,
Note = "",
MaterialNav=currMat
MaterialNav = currMat
};
}
}