administrador.base.orm._result.total_rs_acumula.21.22.0 - gamboamartin/administrador GitHub Wiki

total_rs_acumula

Esta función privada se utiliza para acumular valores de un campo específico en un objeto stdClass de totales.

Signatura

private function total_rs_acumula(string $campo, array $row, stdClass $totales_rs): stdClass|array

Parámetros

  • $campo (string): El nombre del campo del cual se acumularán los valores.
  • $row (array): El arreglo que contiene los datos del registro actual.
  • $totales_rs (stdClass): El objeto stdClass que contiene los totales acumulados.

Retorna

  • Tipo: stdClass|array
  • Descripción: Devuelve el objeto stdClass actualizado con los totales acumulados. Si hay algún error en la validación de los datos, devuelve un arreglo con información detallada sobre el error.

Explicación Detallada

Validación del campo en el registro: Se verifica si el campo especificado existe en el registro y si su valor es numérico. Si hay algún error en la validación, se devuelve un mensaje de error.

Acumulación de totales: Se agrega el valor del campo al total acumulado en el objeto stdClass de totales. Si el campo no existe en el objeto de totales, se inicializa con un valor de cero antes de agregar el valor del campo.

Retorno de resultado: Se devuelve el objeto stdClass actualizado con los totales acumulados. Si hubo un error en la validación de los datos, se devuelve un arreglo con información detallada sobre el error, incluyendo el mensaje de error.

Ejemplos

// Ejemplo: Acumular totales de un campo
$campo = 'total';
$row = array(
    'total' => 100,
    // Otros campos...
);
$totales_rs = new stdClass();
$resultado = total_rs_acumula($campo, $row, $totales_rs);
if (is_object($resultado)) {
    echo "Totales actualizados: ";
    print_r($resultado);
} else {
    echo "Error: " . $resultado['mensaje'];
}

Código de la Función

private function total_rs_acumula(string $campo, array $row, stdClass $totales_rs): stdClass|array
    {

        $valida = $this->valida_totales(campo: $campo, row: $row);
        if(errores::$error){
            return $this->error->error(mensaje: 'Error al validar row',data: $valida);
        }

        if(!isset($totales_rs->$campo)){
            $totales_rs->$campo = 0;
        }

        $totales_rs->$campo += $row[$campo];
        return $totales_rs;

    }