Salta al contingut
Tornar a PlantillaERP Centre d'ajuda

Llistats a mida: columnes calculades i «suma d’una altra taula»

A més dels camps de les taules, un llistat pot portar columnes que es calculen: el marge, un percentatge, una diferència, el que val l’estoc… I columnes que sumen files d’una altra taula, com el pendent en rebuts de cada client.

Columnes calculades

Al pas 2 · Columnes, sota les columnes del llistat, prem Columna calculada. S’afegeix al final una columna amb la seva lletra; obre-la amb Format, amplada i més i tria el càlcul:

Una columna calculada: Marge % = G (Marge) sobre D (Base imposable)

  1. A: la primera columna del càlcul.
  2. Càlcul: A + B, A − B, A × B, A ÷ B, A sobre B (%) (A dividit per B, per cent) o Variació d’A sobre B (%) (quant ha pujat o baixat A respecte de B).
  3. B: la segona columna, o un número fix (per multiplicar per 1,21, restar una quantitat…).

Les columnes es trien per la seva lletra i només valen les que són abans que la calculada; si mous columnes, les lletres canvien soles. Una columna que només cal per al càlcul (el cost unitari, per exemple) es marca Oculta (només per a càlculs): entra al càlcul però no es veu.

Exemple: el marge per família i article

És el model de fàbrica Vendes per família i article amb marge (taula: línies de factures de client):

LletraColumnaQuè és
CQuantitatcamp de la línia, total Suma
DBase imposableel net de la línia, total Suma
ECostcost unitari de la línia, oculta
FPreu de costcalculada: C × E
GMargecalculada: D − F
HMarge %calculada: G sobre D (%), total El càlcul amb els totals

El resultat: marge i marge % per família i referència

El total d’un percentatge: «El càlcul amb els totals»

El total d’una columna de percentatge no és la suma dels percentatges de les files (ni la seva mitjana). Perquè el subtotal de la família digui el marge de veritat de la família, la columna porta el total El càlcul amb els totals: repeteix el càlcul amb els totals del grup (marge del grup sobre base del grup). Fes-lo servir sempre a les columnes de percentatge i de variació.

Una columna que compta només «quan…»

El model Clients: facturat a l’any i pendent posa dues vegades el total de les factures: una tal qual (Facturat) i l’altra que només compta quan la factura no està pagada (Pendent). Amb les dues, una calculada «Pendent sobre Facturat (%)».

El facturat i el pendent de cada client, amb el % pendent

Aquesta condició («compta només quan la casella Pagada és no») ve a la plantilla; per tenir-la en un altre llistat, parteix d’aquest model (vegeu Plantilles i duplicar) o posa-la al JSON, com a l’apartat següent.

Columnes «suma d’una altra taula»

De vegades la dada és en una taula que apunta a la fila del llistat: els rebuts pendents d’un client, els apunts d’una subcompte. No és una taula relacionada (d’un client en surten molts rebuts), així que es fa servir una columna suma d’una altra taula: suma (o compta) les files d’aquella altra taula que són de la fila del llistat, amb els seus propis filtres.

Exemple: el pendent de cada client davant del seu saldo comptable

Dos números que haurien de coincidir i que, quan no ho fan, hi ha alguna cosa a mirar: el que diuen els rebuts pendents de cada client i el saldo de la seva subcompte a la comptabilitat.

Clients en què el pendent en rebuts no quadra amb el saldo comptable

  • Pendent en rebuts: suma de l’import dels rebuts del client que no estan pagats.
  • Saldo comptable: suma del deure menys l’haver dels apunts de la seva subcompte.
  • Diferència: una calculada A − B.
  • I l’opció «només les files en què les dues columnes no coincideixen», per veure només els clients que no quadren.

Aquestes columnes no es creen des del dissenyador: es munten amb un JSON i es porten amb Importar JSON a la llista de llistats. Després, al dissenyador, se’ls pot canviar el títol, el format, l’ordre i els totals com a qualsevol altra. Aquest és el JSON de l’exemple; desa’l en un fitxer .json i importa’l:

{
  "nombre": "Clients: rebuts pendents davant del saldo comptable",
  "descripcion": "El pendent en rebuts de cada client contra el saldo de la seva subcompte; només els que no quadren.",
  "apartado": "contabilidad",
  "definicion": {
    "tabla": "clientes",
    "columnas": [
      { "id": "c1", "origen": "t0", "campo": "codcliente" },
      { "id": "c2", "origen": "t0", "campo": "nombre" },
      { "id": "c3", "origen": "t0", "campo": "codsubcuenta" },
      { "id": "c4", "titulo": "Pendent en rebuts", "formato": "moneda", "total": "suma",
        "agregado": { "tabla": "recibospagoscli", "columna": "codcliente", "origen": "t0", "destino": "codcliente",
          "campo": "importe", "op": "suma", "filtros": [{ "campo": "pagado", "op": "no" }] } },
      { "id": "c5", "titulo": "Saldo comptable", "formato": "moneda", "total": "suma",
        "agregado": { "tabla": "partidas", "columna": "idsubcuenta", "origen": "t0", "destino": "codsubcuenta",
          "campo": "debe", "menos": "haber", "op": "suma",
          "via": { "tabla": "subcuentas", "clave": "idsubcuenta", "campo": "codsubcuenta" } } },
      { "id": "c6", "titulo": "Diferència", "calculo": { "op": "resta", "a": "c4", "b": "c5" }, "formato": "moneda", "total": "suma" }
    ],
    "orden": [{ "col": "c2", "dir": "asc" }],
    "distintas": { "a": "c4", "b": "c5" },
    "totalGeneral": true
  }
}

Com es llegeix la columna agregado:

  • tabla i columna: l’altra taula i la seva columna que apunta a la fila (els rebuts guarden el codcliente).
  • destino: la columna de la fila del llistat amb què es compara (el codcliente del client).
  • campo (i menos): el que se suma (importe; o debe menys haber). Amb "op": "cuenta" compta files en lloc de sumar.
  • filtros: només les files de l’altra taula que compleixen això (els rebuts amb pagado = no). Valen els mateixos operadors i dreceres de data que als filtres normals.
  • via: quan l’altra taula no guarda la dada de la fila sinó la clau d’una d’intermèdia. Els apunts guarden la subcompte pel seu número intern (idsubcuenta), i el client la té pel seu codi (codsubcuenta): via diu com passar de l’una a l’altra.
  • por (opcional): només les files el «pare» de les quals compleix uns filtres, per exemple els apunts dels assentaments d’aquest any: "por": { "columna": "idasiento", "tabla": "asientos", "destino": "idasiento", "filtros": [{ "campo": "fecha", "op": "entre", "atajo": "este-anio" }] }.

I distintas (a, b) deixa només les files en què aquestes dues columnes no coincideixen. L’empresa activa s’aplica també a l’altra taula. En importar, el llistat queda només per a tu; després decideixes amb qui compartir-lo.

Última actualització: 14 d’octubre del 2026

Més articles d'aquesta categoria