Solved

Enter the Warehouses screen and the datafield is filled automatically

  • 29 November 2023
  • 3 replies
  • 44 views

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?
icon

Best answer by darylbowman 29 November 2023, 15:49

View original

3 replies

Badge +11

RowSelected is not the correct event for this situation. Without seeing your custom field definition, it's hard to say what you're trying to accomplish. If you're trying to set the value of an unbound field, you should use FieldSelecting for each field to calculate and display the value. If you're trying to default a value that can be modified, use FieldDefaulting.

The purpose is to add the values of the volume column (image 2) so that the result is added to sumvolume (image 3), this is what appears in the last requests

When we add a new field, if you perform the operation at this moment, assign it the 78 and not the sum, but it only adds it when modifying as shown in the image below

I already tried what you told me about with FieldSelecting and FieldDefaulting. Can you help me, I would appreciate it very much.

Badge +11

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


About Acumatica ERP system
Acumatica Cloud ERP provides the best business management solution for transforming your company to thrive in the new digital economy. Built on a future-proof platform with open architecture for rapid integrations, scalability, and ease of use, Acumatica delivers unparalleled value to small and midmarket organizations. Connected Business. Delivered.
© 2008 — 2024  Acumatica, Inc. All rights reserved