administrador.base.orm._result.totales_rs_acumula.21.23.0 - gamboamartin/administrador GitHub Wiki
totales_rs_acumula
La función totales_rs_acumula se utiliza para acumular totales para un campo específico dentro de un conjunto de registros. Es útil cuando se necesita calcular totales o sumas de valores en un arreglo de datos.
Signatura
private function totales_rs_acumula(string $campo, array $new_array, stdClass $totales_rs): array|stdClass
Parámetros
- $campo: El nombre del campo para el cual se acumularán los totales.
- $new_array: Un arreglo de registros para los cuales se acumularán los totales.
- $totales_rs: Un objeto stdClass que contiene los totales acumulados hasta el momento.
Retorna
- array|stdClass: Retorna un objeto stdClass que contiene los totales acumulados actualizados.
Explicación Detallada
Inicia proporcionando el nombre del campo ($campo) para el cual deseas calcular los totales, el conjunto de registros ($new_array) en el que deseas realizar los cálculos y un objeto stdClass ($totales_rs) que contendrá los totales acumulados.
Verifica que el nombre del campo no esté vacío y que el conjunto de registros sea un arreglo válido.
Por cada registro en el arreglo $new_array, realiza los siguientes pasos:
- Verifica que el registro sea un arreglo válido.
- Valida el campo proporcionado para acumular los totales.
- Acumula el valor del campo en el objeto $totales_rs.
- Retorna el objeto $totales_rs con los totales acumulados actualizados.
Ejemplos
$campo = "cantidad";
$new_array = [
["cantidad" => 10],
["cantidad" => 15],
["cantidad" => 20]
];
$totales_rs = new stdClass();
$resultado = totales_rs_acumula($campo, $new_array, $totales_rs);
echo "Total acumulado para el campo 'cantidad': " . $resultado->$campo;
//Total acumulado para el campo 'cantidad': 45
$campo = "precio";
$new_array = [
["precio" => 25.50],
["precio" => 30.75],
["precio" => 15.25]
];
$totales_rs = new stdClass();
$resultado = totales_rs_acumula($campo, $new_array, $totales_rs);
echo "Total acumulado para el campo 'precio': " . $resultado->$campo;
//Total acumulado para el campo 'precio': 71.50
Código de la Función
private function totales_rs_acumula(string $campo, array $new_array, stdClass $totales_rs): array|stdClass
{
$campo = trim($campo);
if($campo === ''){
return $this->error->error(mensaje: 'Error campo esta vacio',data: $campo, es_final: true);
}
foreach ($new_array as $row){
if(!is_array($row)){
return $this->error->error(mensaje: 'Error row debe ser un array',data: $row, es_final: true);
}
$valida = $this->valida_totales(campo: $campo, row: $row);
if(errores::$error){
return $this->error->error(mensaje: 'Error al validar row',data: $valida);
}
$totales_rs = $this->total_rs_acumula(campo: $campo,row: $row,totales_rs: $totales_rs);
if(errores::$error){
return $this->error->error(mensaje: 'Error acumular total',data: $totales_rs);
}
}
return $totales_rs;
}