administrador.base.orm.data_format.ajusta_campos_moneda - gamboamartin/administrador GitHub Wiki
ajusta_campos_moneda
La función ajusta_campos_moneda
ajusta y valida los campos de tipo moneda
o double
en un registro, basándose en las definiciones de tipos de datos proporcionadas en el array $tipo_campos
. La función se asegura de que tanto los nombres de los campos como los tipos de datos estén correctamente especificados y realiza las asignaciones correspondientes.
Signatura
final public function ajusta_campos_moneda(array $registro, array $tipo_campos): array
Parámetros
** $registro** (array): Arreglo asociativo que representa un registro donde se ajustarán y validarán los valores de los campos de tipo moneda o double.
** $tipo_campos** (array): Arreglo asociativo que define los tipos de datos de los campos del registro.
-
- Formato: Cada clave es el nombre de un campo, y cada valor es un string que representa el tipo de dato esperado (double, moneda, etc.).
-
- Requisitos: Las claves deben ser cadenas no vacías y los valores deben ser strings no vacíos.
Retorna
- array: Devuelve un array que representa el registro actualizado con los valores de los campos ajustados. Si ocurre un error, el array contiene un mensaje de error.
Explicación Detallada
-
Iteración y Validación de Campos:
-
- La función itera sobre el array $tipo_campos, validando cada campo y su tipo de dato.
-
- Verifica si el nombre del campo ($campo) está vacío. Si es así, retorna un array con un mensaje de error.
-
Validación del Tipo de Dato:
-
- Verifica si el tipo de dato asociado al campo es un string. Si no lo es, la función retorna un array con un mensaje de error y una sugerencia de corrección (fix).
-
- También se asegura de que el tipo de dato no esté vacío. Si lo está, la función retorna un array con un mensaje de error y una sugerencia de corrección.
-
Asignación de Campos:
-
- Si las validaciones son exitosas, la función llama a asignacion_campo_moneda para ajustar y validar el valor del campo en el registro.
-
- Si ocurre un error durante la asignación, la función retorna un array con un mensaje de error.
-
Retorno
-
- La función retorna un array con el registro actualizado si todas las operaciones son exitosas. En caso de error, se devuelve un array con el mensaje de error correspondiente.
-
Posibles Errores
-
- Campo vacío: Si el nombre del campo es una cadena vacía, la función retorna un array con un mensaje de error.
-
- Tipo de dato no string: Si el tipo de dato no es un string, la función retorna un array con un mensaje de error y una sugerencia de corrección.
-
- Tipo de dato vacío: Si el tipo de dato es una cadena vacía, la función retorna un array con un mensaje de error y una sugerencia de corrección.
-
- Error en la asignación: Si ocurre un error durante la asignación de un campo, la función retorna un array con un mensaje de error.
Ejemplos
// Ejemplo 1: Ajustar campos de tipo moneda en un registro
$registro = ['precio' => '123.45', 'impuesto' => '16.78'];
$tipo_campos = ['precio' => 'moneda', 'impuesto' => 'moneda'];
$resultado = $this->ajusta_campos_moneda($registro, $tipo_campos);
if (!isset($resultado['error'])) {
echo "Ajuste exitoso: " . print_r($resultado, true);
} else {
echo "Error: " . $resultado['error'];
}
// Ejemplo 2: Manejo de error con un campo vacío
$registro = ['precio' => '123.45'];
$tipo_campos = ['' => 'moneda'];
$resultado = $this->ajusta_campos_moneda($registro, $tipo_campos);
if (isset($resultado['error'])) {
echo "Error: " . $resultado['error']; // Salida: "Error: Error el campo está vacío"
}
// Ejemplo 3: Manejo de error con un tipo de dato no string
$registro = ['precio' => '123.45'];
$tipo_campos = ['precio' => 123]; // Tipo de dato incorrecto
$resultado = $this->ajusta_campos_moneda($registro, $tipo_campos);
if (isset($resultado['error'])) {
echo "Error: " . $resultado['error'];
echo "Fix: " . $resultado['fix']; // Salida: "Error: Error el tipo_dato debe ser un string"
}
// Ejemplo 4: Manejo de error con un tipo de dato vacío
$registro = ['precio' => '123.45'];
$tipo_campos = ['precio' => ''];
$resultado = $this->ajusta_campos_moneda($registro, $tipo_campos);
if (isset($resultado['error'])) {
echo "Error: " . $resultado['error'];
echo "Fix: " . $resultado['fix']; // Salida: "Error: Error el tipo_dato está vacío"
}
Código de la Función
final public function ajusta_campos_moneda(array $registro, array $tipo_campos): array
{
foreach($tipo_campos as $campo =>$tipo_dato){
$campo = trim($campo);
if($campo === ''){
return $this->error->error(mensaje: 'Error el campo esta vacio',data: $campo,es_final: true);
}
if(!is_string($tipo_dato)){
$fix = 'modelo->tipo_campos debe llevar esta forma $modelo->tipo_campos[campo] = regex
donde el regex debe existir en el paquete de validaciones en validacion->patterns';
return $this->error->error(mensaje: 'Error el tipo_dato debe ser un string', data: $tipo_dato,
es_final: true, fix: $fix);
}
$tipo_dato = trim($tipo_dato);
if($tipo_dato === ''){
$fix = 'modelo->tipo_campos debe llevar esta forma $modelo->tipo_campos[campo] = regex
donde el regex debe existir en el paquete de validaciones en validacion->patterns';
return $this->error->error(mensaje: 'Error el tipo_dato esta vacio', data: $tipo_dato,
es_final: true, fix: $fix);
}
$registro = $this->asignacion_campo_moneda(campo: $campo, registro: $registro,tipo_dato: $tipo_dato);
if(errores::$error){
return $this->error->error(mensaje: 'Error al asignar campo ',data: $registro);
}
}
return $registro;
}