Editable Grid Parameter not saving correctly

I´m trying to create an editable grid in which the user can add or delete several rows.

I have four columns (Material,Unit Price, Quantity, Total Price), and TotalPrice is the product of Price and Quantity (when the user enters both values, the product is created automatically). But the fact is that, even though the product is created correctly, it seems like it is not saved correctly like the other data values

Here is a picture of the interface

In the next picture you can see the column "Importe Total" and its values don´t appear

To create the editable grid and save the values temporarily (because after that I write them to a record) I created a local variable (data). Basically, I followed the instruction of an Appian Community Video about editable grids from scratch. I leave here the code and some captures.

In the end, I updated the records directly in the interface. I don´t know if it is a correct way to do it, or if I should write the records in the process model as a best practice:

Any help would be useful. Thanks a lot!

a!localVariables(
  local!data,
  {
    a!sectionLayout(
      label: "",
      contents: {
        a!columnsLayout(
          columns: {
            a!columnLayout(
              contents: {
                a!textField(
                  label: "Id Factura",
                  labelPosition: "ABOVE",
                  value: ri!recordFact['recordType!{51d44df6-c727-4443-8114-aef8a7509b41}CPF Maestro Facturas.fields.{6f993c32-7f64-424a-859f-d779194c4a18}id_factura'],
                  saveInto: ri!recordLineasFact['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{9c440183-9c71-423b-a300-eb4c3ea747fb}idFactura'],
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            ),
            a!columnLayout(
              contents: {
                a!textField(
                  label: "Id Pedido",
                  labelPosition: "ABOVE",
                  value: ri!recordFact['recordType!{51d44df6-c727-4443-8114-aef8a7509b41}CPF Maestro Facturas.fields.{e8009662-ca1c-43da-9c72-2840463214be}id_pedido'],
                  saveInto: ri!recordLineasFact['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{60774c8e-9b47-486f-9fea-b32c525c05fd}idPedido'],
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            ),
            a!columnLayout(
              contents: {
                a!textField(
                  label: "Proveedor",
                  labelPosition: "ABOVE",
                  value: ri!recordFact['recordType!{51d44df6-c727-4443-8114-aef8a7509b41}CPF Maestro Facturas.fields.{c2a60669-567e-41b8-acdd-29729912b3e5}nomProveedor'],
                  saveInto: ri!recordLineasFact['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{844be35b-6de5-434e-9c69-e7c7b8a148dd}proveedor'],
                  refreshAfter: "UNFOCUS",
                  validations: {}
                )
              }
            )
          }
        )
      }
    ),
    a!gridLayout(
      label: "A continuación, incorpore las líneas de factura correspondientes y pulse el botón de creación",
      headerCells: {
        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:"ICON")


      },
      rows: a!forEach(
        items: local!data,
        expression: a!gridRowLayout(
          contents: {
 
            a!textField(value:fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{019eb28b-727b-4e2c-8160-1bcf8a747ef1}material'], saveInto: fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{019eb28b-727b-4e2c-8160-1bcf8a747ef1}material']
            ),
            a!floatingPointField( value: fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{eda9bda7-ae57-44e7-a651-d097c8581021}precioUnit'],
            saveInto: fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{eda9bda7-ae57-44e7-a651-d097c8581021}precioUnit'],
            required: true,
            validations: {if(a!isNotNullOrEmpty(fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{eda9bda7-ae57-44e7-a651-d097c8581021}precioUnit'])=false,"", if(
              fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{eda9bda7-ae57-44e7-a651-d097c8581021}precioUnit'] < 0,
              "El precio unitario debe ser superior a cero",
              ""
            ))}),
            a!integerField( value: fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{b1b5fc0b-5be4-45be-8342-381cdc56017d}cantidad'],
            saveInto: fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{b1b5fc0b-5be4-45be-8342-381cdc56017d}cantidad'],
            required: true,
            validations: {if(a!isNotNullOrEmpty(fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{b1b5fc0b-5be4-45be-8342-381cdc56017d}cantidad'])=false,"", if(
              fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{b1b5fc0b-5be4-45be-8342-381cdc56017d}cantidad'] < 1,
              "La cantidad debe ser superior a cero",
              ""
            ))}),
            a!floatingPointField(
              value: if(
                or(isnull(fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{b1b5fc0b-5be4-45be-8342-381cdc56017d}cantidad']), isnull(fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{eda9bda7-ae57-44e7-a651-d097c8581021}precioUnit'])),
                0,
                fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{b1b5fc0b-5be4-45be-8342-381cdc56017d}cantidad'] * fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{eda9bda7-ae57-44e7-a651-d097c8581021}precioUnit']
              ),
              saveInto: fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{53f231a2-9bf7-40a1-af07-74373fa7bd9f}importe'],
              required: true,
              validations: {if(a!isNotNullOrEmpty(fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{53f231a2-9bf7-40a1-af07-74373fa7bd9f}importe'])=false,"", if(
                fv!item['recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura.fields.{53f231a2-9bf7-40a1-af07-74373fa7bd9f}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!data, fv!index),
                      saveInto: local!data
                    ),
                    linkstyle: "STANDALONE",
                    color: "NEGATIVE"
                  )

                }
              )

          }
        )
      ),
      addrowlink: a!dynamicLink(
        label: "Añadir nueva Línea de Factura",
        value: append(
          local!data,                             
          'recordType!{6e637180-b344-49d2-a1f7-f87eed0041ba}CPF Lineas Factura'()
        ),
        saveInto: local!data
      )
    )
    ,
    a!buttonLayout(
      primaryButtons: {
        a!buttonWidget(
          label: "Completar Creación Factura",
          saveInto: a!writeRecords(
            records:local!data,
            onSuccess: a!save(local!data, fv!recordsUpdated)
          ),
          submit: true,
          style: "PRIMARY",
          validate:true
        )
      },
      secondaryButtons: {
        a!buttonWidget(
          label: "Cancelar",
          value: true,
          saveInto: ri!cancel2,
          submit: true,
          style: "NORMAL",
          validate: false
        )
      }
    )

  }
)

  Discussion posts and replies are publicly visible

Parents Reply Children