protected void INLocation_RowSelected(PXCache cache, PXRowSelectedEventArgs e)
{
INLocation row = (INLocation)e.Row;
INLocationExt rowExt = row.GetExtension<INLocationExt>();
if (rowExt != null)
{
// Accede a la nueva columna y realiza acciones adicionales
decimal? valorNuevaColumna = rowExt.UsrVolumen;
decimal? valorNuevaColumna2 = 78;
// Verifica si es necesario actualizar el objeto INSite
INSite orderInCache = Orders.Current as INSite;
if (orderInCache != null)
{
// Ajusta para actualizar el campo usrSumVolumen
Orders.Cache.SetValueExt<INSiteExt.usrSumVolumen>(orderInCache, valorNuevaColumna2);
PXTrace.WriteInformation("EMPEZAMOS - Nuevo valor: " + valorNuevaColumna2.ToString());
// Persiste el cambio
Orders.Cache.Persist(PXDBOperation.Update);
// Presiona el botón Save para asegurar que los cambios se reflejen en la interfaz de usuario
Orders.Cache.Graph.Actions.PressSave();
}
else
{
PXTrace.WriteInformation("orderInCache es nulo");
}
}
else
{
PXTrace.WriteInformation("rowExt es nulo");
}
}
When reviewing the Last Requests, if it brings the requested values but does not insert it in UsrSumVolumen, can you help me solve it?
Solved
Enter the Warehouses screen and the datafield is filled automatically
Best answer by darylbowman
Try this:
protected virtual void _(Events.FieldSelecting<INSite, INSiteExt.usrSumVolumen> e)
{
INSite row = e.Row;
if (row is null) return;
decimal sum = 0m;
foreach (INLocation location in Base.location.Select())
{
var locationExt = row.GetExtension<INLocationExt>();
sum += locationExt?.UsrVolumen ?? 0m;
}
e.ReturnValue = sum;
}
This is assuming that UsrSumVolumen is a non-persisted field. FieldSelecting should NOT be used on a persisted field.
Reply
Enter your E-mail address. We'll send you an e-mail with instructions to reset your password.