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."
Edit this page on GitHub