How to save the sum of fields in an interface and write them to a different record
Hi! I´m making an interface in which the user can add new rows. After filling the price and the quantity, the column "Importe Total" is calculated

I would want to save and show the value of the sum of the values in the column "Importe Total", to make a "Total Sum", show this in another cell and save the value into another record (the data of the PO lines are saved in a different record, specific for PO Lines, and the value of the total sum would be saved in a Record of "global" PO)
*In the case of the pic, the TotalSum = 200
I leave here pics of the configuration and the code inserted (applied the magic button to order it and make it more readable)
1-Logic of the pxq (Total Importe Column) --> the logic was applied in the "cantidad" and "precio unitario" columns in order to save the value "Importe Total" correctly

2- The entire code:
a!localVariables(
local!grid,
{
a!sectionLayout(
label: "LÃ%ADneas Pedido",
labelIcon: "list-alt-solid",
contents: {
a!gridLayout(
label: "A continuación, incorpore las lÃ%ADneas de factura correspondientes y pulse el botón de creación",
headerCells: {
a!gridLayoutHeaderCell(label: "Linea Pedido"),
a!gridLayoutHeaderCell(label: "Pedido"),
a!gridLayoutHeaderCell(label: "Proveedor"),
a!gridLayoutHeaderCell(label: "Material"),
a!gridLayoutHeaderCell(label: "Precio Unitario"),
a!gridLayoutHeaderCell(label: "Cantidad"),
a!gridLayoutHeaderCell(label: "Importe Total"),
a!gridLayoutHeaderCell()
},
columnConfigs: {
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "DISTRIBUTE"),
a!gridLayoutColumnConfig(width: "ICON")
},
rows: a!forEach(
items: local!grid,
expression: a!gridRowLayout(
contents: {
a!textField(value: {fv!index}, saveInto: {'recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{fcfa4b36-4398-4430-8055-ecfa59daf13a}idLineaPedido'}),
a!textField(
value: fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{71427dbb-12db-4f83-bd99-f625bf9af271}idPedido'],
saveInto: {
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{71427dbb-12db-4f83-bd99-f625bf9af271}idPedido']
}
),
a!textField(
value: fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{464f0883-d6d5-4c58-b054-4de8e9e99902}Proveedor'],
saveInto: {
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{464f0883-d6d5-4c58-b054-4de8e9e99902}Proveedor']
}
),
a!textField(
value: fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{69e9a834-b2fb-4f35-a36d-3c526c97f4ac}Material'],
saveInto: {
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{69e9a834-b2fb-4f35-a36d-3c526c97f4ac}Material']
}
),
a!floatingPointField(
value: fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit'],
saveInto: {
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit'],
a!save(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{beb59a89-a332-46d3-b718-a8285f58f942}Importe'],
if(
or(
isnull(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad']
),
isnull(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit']
)
),
0,
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad'] * fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit']
)
)
},
required: true,
validations: {
if(
a!isNotNullOrEmpty(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit']
) = false,
"",
if(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit'] < 0,
"El precio unitario debe ser superior a cero",
""
)
)
}
),
a!integerField(
value: fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad'],
saveInto: {
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad'],
a!save(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{beb59a89-a332-46d3-b718-a8285f58f942}Importe'],
if(
or(
isnull(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad']
),
isnull(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit']
)
),
0,
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad'] * fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit']
)
)
},
required: true,
validations: {
if(
a!isNotNullOrEmpty(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad']
) = false,
"",
if(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad'] < 1,
"La cantidad debe ser superior a cero",
""
)
)
}
),
a!floatingPointField(
value: if(
or(
isnull(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad']
),
isnull(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit']
)
),
0,
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{e78c5b35-026f-4713-8404-05077c6c9152}Cantidad'] * fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{47f4bf32-2e41-4c5a-a7e7-9fc7786bd753}PrecioUnit']
),
saveInto: {
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{beb59a89-a332-46d3-b718-a8285f58f942}Importe']
},
required: true,
validations: {
if(
a!isNotNullOrEmpty(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{beb59a89-a332-46d3-b718-a8285f58f942}Importe']
) = false,
"",
if(
fv!item['recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{beb59a89-a332-46d3-b718-a8285f58f942}Importe'] < 0,
"El importe debe ser superior a cero",
""
)
)
},
align: "RIGHT"
),
a!richTextDisplayField(
value: {
a!richTextIcon(
icon: "times-circle",
link: a!dynamicLink(
value: remove(local!grid, fv!index),
saveInto: local!grid
),
linkstyle: "STANDALONE",
color: "NEGATIVE"
)
}
)
}
)
),
addrowlink: a!dynamicLink(
label: "Añadir nueva LÃ%ADnea de Pedido",
saveInto: a!save(
target: local!grid,
value: append(
local!grid,
'recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido'(
'recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{71427dbb-12db-4f83-bd99-f625bf9af271}idPedido': ri!record['recordType!{3c95c0e4-e69d-43f6-b485-e72b24252af7}CPF Maestro Pedidos.fields.{7309402c-2312-4a4e-bdaa-5654789bffb2}idPedido'],
'recordType!{495578a9-1b23-4253-8145-6418faabe727}CPF Lineas Pedido.fields.{464f0883-d6d5-4c58-b054-4de8e9e99902}Proveedor': ri!record['recordType!{3c95c0e4-e69d-43f6-b485-e72b24252af7}CPF Maestro Pedidos.fields.{e11e6206-fc23-4a4b-9819-4db5a5bab685}nomProveedor']
)
)
)
)
)
}
),
a!buttonLayout(
primaryButtons: {
a!buttonWidget(
label: "Completar Creación Pedido",
saveInto: a!writeRecords(
records: local!grid,
onSuccess: { a!save(local!grid, fv!recordsUpdated) }
),
submit: true,
style: "PRIMARY",
validate: true
)
},
secondaryButtons: {
a!buttonWidget(
label: "Cancelar",
value: true,
saveInto: ri!cancel2,
submit: true,
style: "NORMAL",
validate: false
)
}
)
}
)
Thanks a lot for your help!
