administrador.base.orm.data_format.asignacion_campo_moneda - gamboamartin/administrador GitHub Wiki
asignacion_campo_moneda
La función asignacion_campo_moneda
asigna un valor de un campo de tipo monetario a un registro dado, validando que el campo y el tipo de dato sean correctos. Esta función es útil para asegurar que los campos relacionados con valores monetarios sean correctamente procesados y validados en un registro.
Signatura
private function asignacion_campo_moneda(string $campo, array $registro, string $tipo_dato): array
Parámetros
** $campo** (string): Nombre del campo en el registro que se desea procesar.
-
- Requisitos: No debe estar vacío. Se realiza un trim para eliminar espacios en blanco.
** $registro** (array): Arreglo que contiene los datos del registro, donde se almacenará el valor procesado del campo.
-
- Requisitos: Debe contener el campo especificado en $campo si se desea realizar la asignación.
** $tipo_dato** (string): Tipo de dato esperado para el campo (double o moneda).
-
- Requisitos: Debe ser una cadena no vacía.
-
- Comportamiento: Si está vacío, la función retorna un error con un mensaje de corrección (fix) que explica cómo debería estar estructurado el tipo de dato en el modelo.
Retorna
- array: Siempre se devuelve un array. Si la asignación es exitosa, el array contiene el registro actualizado con el valor del campo convertido a double. Si ocurre un error, el array contiene el mensaje de error correspondiente.
Explicación Detallada
-
Validación del Campo:
-
- La función verifica si el nombre del campo ($campo) está vacío. Si es así, retorna un array con un mensaje de error indicando que el campo no debe estar vacío.
-
Validación del Tipo de Dato:
-
- Luego, se valida que el tipo de dato ($tipo_dato) no esté vacío. Si lo está, la función retorna un array con un mensaje de error y un mensaje de corrección.
-
Asignación del Campo:
-
- Si el campo existe en el registro y el tipo de dato es double o moneda, la función realiza la asignación y convierte el valor a double.
-
Manejo de Errores:
-
- Si ocurre un error durante la asignación del campo, la función retorna un array con el mensaje de error especificando el problema.
Ejemplos
// Ejemplo 1: Asignar un campo de tipo moneda en un registro
$registro = ['precio' => 100.00];
$tipo_dato = 'moneda';
$campo = 'precio';
$resultado = $this->asignacion_campo_moneda($campo, $registro, $tipo_dato);
if (!isset($resultado['error'])) {
echo "Asignación exitosa: " . print_r($resultado, true);
} else {
echo "Error: " . $resultado['error'];
}
// Ejemplo 2: Manejo de error al pasar un campo vacío
$registro = ['precio' => 100.00];
$tipo_dato = 'moneda';
$campo = '';
$resultado = $this->asignacion_campo_moneda($campo, $registro, $tipo_dato);
if (isset($resultado['error'])) {
echo "Error: " . $resultado['error']; // Salida: "Error: Error el campo está vacío"
}
// Ejemplo 3: Manejo de error al pasar un tipo de dato vacío
$registro = ['precio' => 100.00];
$tipo_dato = '';
$campo = 'precio';
$resultado = $this->asignacion_campo_moneda($campo, $registro, $tipo_dato);
if (isset($resultado['error'])) {
echo "Error: " . $resultado['error'];
echo "Fix: " . $resultado['fix']; // Salida: "Error: Error el tipo_dato está vacío"
}
// Ejemplo 4: Asignación exitosa y retorno del valor convertido a double
$registro = ['precio' => '123.45'];
$tipo_dato = 'moneda';
$campo = 'precio';
$resultado = $this->asignacion_campo_moneda($campo, $registro, $tipo_dato);
if (!isset($resultado['error'])) {
echo "Valor convertido a double: " . print_r($resultado, true);
// Ejemplo de salida: ["precio" => 123.45]
}
Código de la Función
private function asignacion_campo_moneda(string $campo, array $registro, string $tipo_dato): array
{
$campo = trim($campo);
if($campo === ''){
return $this->error->error(mensaje: 'Error el campo esta vacio',data: $campo, es_final: true);
}
$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);
}
if(isset($registro[$campo]) && ($tipo_dato === 'double' || $tipo_dato === 'moneda')){
$registro = $this->asigna_campo_moneda(campo: $campo, registro: $registro);
if(errores::$error){
return $this->error->error(mensaje: 'Error al asignar campo ',data: $registro);
}
}
return $registro;
}