accumulate
Acumular
Percorre os registos por grupo e por ordem e leva saldos de um para o seguinte, com regras.
- Kind:
step - Key:
accumulate - Categoria:
transform - Envelope: mapa (um objeto JSON em
config)
Campos
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
groupBy | list de string | não | [] | Colunas do grupo, pelos nomes do envelope: cada grupo tem os seus saldos. Vazio = um só grupo. Um registo sem valor numa delas passa sem ser percorrido (no_group). | - |
orderBy | list de map | sim | [] | A ordem do percurso dentro de cada grupo. | - |
tieBreak | expression | não | "" | Desempate opcional depois da ordem, sobre row.x. Ex.: if(row.tipo == 'entrada', 0, 1) põe as entradas antes das saídas do mesmo dia. | expressões {{record.coluna}} |
openingSource | uuid | não | "" | Carimbo _source do conjunto de abertura (opcional): o id da tabela lida em append. Casa pelo grupo; a última de cada grupo vale. É consumido. | feature (uuid) |
balances | list de map | sim | [] | Os saldos com nome que correm de registo em registo. | - |
rules | list de map | sim | [] | As regras, por ordem. Sem continue, a primeira que casa é a última. Um registo sem regra passa com os saldos como estavam. | - |
writeBack | list de string | não | [] | Saldos escritos em cada registo, com o nome do saldo, já depois dele. | - |
finalBalances | boolean | não | false | Um registo por grupo com as colunas do grupo e os saldos finais (_source = id do passo). | - |
orderBy[]
Cada elemento de orderBy é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
column | string | sim | - | Coluna, pelo nome que tem no envelope. | - |
descending | boolean | não | false | Do maior para o menor. | - |
balances[]
Cada elemento de balances é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
name | string | sim | - | Nome do saldo: before.<nome> e after.<nome> nas fórmulas, e nome da coluna escrita. | - |
start | number | não | 0 | Valor inicial quando não há abertura (ou campo) no grupo. | - |
openingField | string | não | "" | Campo do registo de abertura com o valor inicial. | - |
decimals | integer | não | - | Casas decimais à saída; o saldo corre sem arredondar. | - |
rules[]
Cada elemento de rules é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
label | string | não | "" | Nome da regra, para as anotações. | - |
condition | expression | não | "" | Fórmula com row.x, before.x (saldos antes do registo) e after.x (saldos já mexidos). Ex.: row.tipo == 'saida' and before.custo_medio == 0. Vazia casa sempre. | expressões {{record.coluna}} |
effects | list de map | não | [] | Correm por ordem: um saldo definido fica em after.x, uma coluna escrita fica em row.x. | - |
continue | boolean | não | false | As regras seguintes também se aplicam. | - |
rules[].effects[]
Cada elemento de rules[].effects é um objeto:
| Chave | Tipo | Obrigatório | Omissão | Descrição | Referência |
|---|---|---|---|---|---|
kind | enumeration | não | "balance" | Saldo ou coluna do registo. | - |
target | string | sim | - | O saldo ou a coluna. | - |
expression | expression | não | "" | Ex.: before.saldo + row.quantidade. Uma falha marca o registo formula_error e o run segue. | expressões {{record.coluna}} |
decimals | integer | não | - | Só nas colunas: casas decimais. | - |
Exemplo JSON
{
"groupBy": [],
"orderBy": [],
"tieBreak": "",
"openingSource": "$f_exemplo",
"balances": [],
"rules": [],
"writeBack": [],
"finalBalances": false
}
Gerado de definitions.json versão 35a57cb3aa07. Esta página nasce no build: não se edita à mão.