Looplex Knowledge Base
CumSum
O tube cumSum faz a soma dos elementos numéricos de um vetor.
Formato:
|vect|.cumSum("field")cumSum(|vect|, "field")
Parâmetros:
vect: vetor de valores numéricos ou de Struct com algum field numérico. Os valores podem ser do tipo Integer, Real ou Currency.
field: caso vect seja um vetor de Struct, field é o alias do operando que se deseja somar. Note que é necessário informá-lo entre aspas.
Retorno:
O valor da soma de todos os elementos numéricos do vetor
Exemplos
1. CumSum com atribuição
. Considere o vetor de Struct de cobranças indevidas |cobrancasIndevidas|
, contendo o field [valor]
, do tipo Currency, designando o valor da cobrança. É interessante utilizar uma variável oculta <totalCobrancas>
para atribuir o valor total das cobranças indevidas. Para isso, faz-se a atribuição do valor de <totalCobrancas>
com o tube cumSum.
<totalCobrancas> = |cobrancasIndevidas|.cumSum("valor")
2. CumSum com expandedNumber e printIf. Considere um vetor de Struct de produtos adquiridos, contendo o field [qteUnidades]
, do tipo Integer, designando o número de unidades adquiridas daquele produto. Com o tube cumSum, é possível fazer o print do número total de produtos adquiridos somando os fields [qteUnidades]
de cada elemento do vetor. No print, utilizaremos também o tube expandedNumber para indicar a quantidade por extenso, e printIf para a concordância de "produtos".
print "O Reclamante adquiriu " & expandedNumber(cumSum(|produtos|, "qteUnidades")) & " " & printIf(cumSum(|produtos|, "qteUnidades") > 1, "produtos", "produto") & "."
Observação: o tube grammar não consegue ser operado cumulativamente com outro tube. Caso queira utilizá-lo em vez de printIf, será necessário primeiro atribuir o valor obtido do tube cumSum a uma variável do tipo Integer (veja como no exemplo anterior), e depois utilizar essa variável para operar com grammar.
3. CumSum com error. Considere, para uma ata de assembleia de limitada, um vetor de Struct de sócios presentes, contendo o field [percentualCapSocial]
, do tipo Real, designando a participação percentual no capital social da empresa. É possível utilizar o tube error em conjunto com cumSum para se certificar de que a participação total dos sócios presentes não exceda 100% do capital social.
if (cumSum(|sociosPresentes|, "percentualCapSocial") > 100) { |sociosPresentes|.error("Erro: o total do capital social presente está excedendo 100%.")}
4. CumSum com filter. Caso não se deseje a soma de todos os elementos do vetor, mas apenas alguns, segundo algum critério de filtragem, é possível combinar o uso do tube cumSum com filter para se obter apenas a soma dos elementos de interesse. Considere um vetor de Struct para o histórico de débitos de um réu, contendo os fields [valorDebito]
, do tipo Currency, e [estaQuitado]
, do tipo Boolean. É possível combinar os usos de cumSum e filter para se obter o valor total de débitos ainda não quitados do réu.
print "O réu possui R$ " & cumSum(|historicoDebitos|.filter([this.estaQuitado] == false), "valorDebito") & " em débitos não quitados."