COmpletato add, edit, incr/decr x remnants
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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>
|
||||
}
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user