07-07-2021, 01:22 PM
(This post was last modified: 07-07-2021, 01:26 PM by dremy_kelupallun.)
Hi, I am trying to use codeigniter rules.
I have a validation at the js level, and now I am applying at the php level.
When validating, it prints this message:
required|maxlength is not a valid rule.
Sorry for my english, i'm chilean.
My controller code:
Code: <?php namespace App\Controllers\Viaticos;
class Ctrl_viaticos extends BaseController {
protected $validaViatico;
public function __construct() {
$this->validaViatico = [
"rut" => "required",
"total" => "required",
"calidad_juridica" => "required",
"establecimiento" => "required",
"grado" => "required",
"departamento" => "required",
"cargo" => "required|max_length[45]|regex_match[/a-zA-ZñÑáÁéÉíÍóÓúÚ /]",
"motivo" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]",
"lugar" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]",
"viatico_100" => "required|numeric",
"valor_100" => "required|numeric",
"viatico_40" => "required|numeric",
"valor_40" => "required|numeric",
"viatico_20" => "required|numeric",
"valor_20" => "required|numeric",
"pernocta" => "required",
"fecha_desde" => "required",
"fecha_hasta" => "required",
"forma_pago" => "required",
"banco" => "required",
"n_cuenta" => "required|max_length[20]|numeric",
];
}
public function guardar_viatico() {
if ($this->request->getMethod() == "post" && $this->validate($this->validaViatico)) {
define("PENDIENTE", 0);
define("OK", 1);
$rut = $this->request->getPost("rut");
$total = $this->request->getPost("total");
$calidad_juridica = $this->request->getPost("calidad_juridica");
$establecimiento = $this->request->getPost("establecimiento");
$grado = $this->request->getPost("grado");
$departamento = $this->request->getPost("departamento");
$cargo = $this->request->getPost("cargo");
$id_nomina = $this->request->getPost("id_nomina");
$motivo = $this->request->getPost("motivo");
$lugar = $this->request->getPost("lugar");
$viatico_100 = $this->request->getPost("viatico_100");
$valor_100 = $this->request->getPost("valor_100");
$viatico_40 = $this->request->getPost("viatico_40");
$valor_40 = $this->request->getPost("valor_40");
$viatico_20 = $this->request->getPost("viatico_20");
$valor_20 = $this->request->getPost("valor_20");
$pernocta = $this->request->getPost("pernocta");
$noches = $this->request->getPost("noches");
$fecha_desde = $this->request->getPost("fecha_desde");
$fecha_hasta = $this->request->getPost("fecha_hasta");
$forma_pago = $this->request->getPost("forma_pago");
$banco = $this->request->getPost("banco");
$n_cuenta = $this->request->getPost("n_cuenta");
$direccion = $this->request->getPost("direccion");
$departamento2 = $this->request->getPost("departamento2");
$subdepartamento = $this->request->getPost("subdepartamento");
$seccion = $this->request->getPost("seccion");
$procedimiento_2 = $this->request->getPost("procedimiento_2");
$movil = $this->request->getPost("movil");
$qth = $this->request->getPost("qth");
$hora_salida = $this->request->getPost("hora_salida");
$hora_llegada = $this->request->getPost("hora_llegada");
$tiempo_encomienda = $this->request->getPost("tiempo_encomienda");
$rut_usuario = $this->sesión->rut_ses;
$fecha = date("Y-m-d H:i:s");
$this->db->transStart();
$datosViatico = [
"rut_funcionario" => $rut,
"motivo" => $motivo,
"lugar" => $lugar,
"dias_100" => $viatico_100,
"monto_entero" => $valor_100,
"dias_40" => $viatico_40,
"monto_medio" => $valor_40,
"dias_20" => $viatico_20,
"monto_medio20" => $valor_20,
"pernocta" => $pernocta,
"noches" => $noches,
"fecha_desde" => $fecha_desde,
"fecha_hasta" => $fecha_hasta,
"total" => $total,
"aprobacion" => PENDIENTE,
"rut_usuario" => $rut_usuario,
"fecha" => $fecha,
"samu_2procedimiento" => $procedimiento_2,
"samu_movil" => $movil,
"samu_qth" => $qth,
"samu_hora_salida" => $hora_salida,
"samu_hora_llegada" => $hora_llegada,
"samu_tiempo_encomienda" => $tiempo_encomienda,
"forma_pago" => $forma_pago,
"banco" => $banco,
"n_cuenta" => $n_cuenta,
"cargo" => $cargo,
"departamento" => $departamento,
"grado" => $grado,
"est_cod" => $establecimiento,
"cjuridica" => $calidad_juridica,
"direccion_subdireccion" => $direccion,
"departamento_enc" => $departamento2,
"subdepartamento" => $subdepartamento,
"seccion" => $seccion
];
$this->viaticos->save($datosViatico);
$datosUsuarios = [
"rut" => $rut,
"forma_pago" => $forma_pago,
"banco" => $banco,
"n_cuenta" => $n_cuenta,
"cargo" => $cargo,
"departamento" => $departamento,
"direccion_subdireccion" => $direccion,
"departamento_enc" => $departamento2,
"subdepartamento" => $subdepartamento,
"seccion" => $seccion
];
$this->usuarios->save($datosUsuarios);
$obtener_id = $this->viaticos->select("max(codigo) as id_viatico")->first();
$id_viatico = $obtener_id["id_viatico"];
$datosViaticoTraza = [
"id_viatico" => $id_viatico,
"estado" => PENDIENTE,
"rut_usuario" => $rut_usuario,
"fecha" => $fecha
];
$this->viaticos_traza->save($datosViaticoTraza);
$datosNominaDetalle = [
"id_carpeta" => $id_nomina,
"id_documento" => $id_viatico
];
$this->carpeta_detalle->insert($datosNominaDetalle);
$this->db->transComplete();
if ($this->db->transStatus()) {
echo OK;
} else {
echo "Error al registrar el viático";
}
}
}
}
?>
07-08-2021, 06:53 AM
(This post was last modified: 07-08-2021, 07:00 AM by dremy_kelupallun.)
It is a snippet of the code, I leave the complete copy of the controller code
PHP Code: <?php namespace App\Controllers\Viaticos;
use App\Controllers\BaseController; use App\Models\Configuracion\Md_usuarios; use App\Models\Viaticos\Md_calidad_juridica; use App\Models\Viaticos\Md_establecimientos; use App\Models\Viaticos\Md_grados_descripcion; use App\Models\Viaticos\Md_departamentos; use App\Models\Viaticos\Md_forma_pago; use App\Models\Viaticos\Md_banco; use App\Models\Viaticos\Md_dep_direc_subdirec; use App\Models\Viaticos\Md_dep_departamentos_enc; use App\Models\Viaticos\Md_dep_sub_departamentos; use App\Models\Viaticos\Md_dep_secciones; use App\Models\Viaticos\Md_temporadas; use App\Models\Viaticos\Md_viaticos; use App\Models\Viaticos\Md_viaticos_traza; use App\Models\Nominas\Md_carpeta_documentos; use App\Models\Nominas\Md_carpeta_detalle; use \Mpdf\Mpdf;
class Ctrl_viaticos extends BaseController { protected $usuarios; protected $calidad_juridica; protected $establecimientos; protected $grados_descripcion; protected $departamentos; protected $forma_pago; protected $banco; protected $direccion; protected $departamentos2; protected $subdepartamentos; protected $secciones; protected $temporadas; protected $viaticos; protected $viaticos_traza; protected $carpeta_documentos; protected $carpeta_detalle; protected $sesión; protected $db; protected $validaViatico; // protected $mpdf;
public function __construct() { $this->usuarios = new Md_usuarios(); $this->calidad_juridica = new Md_calidad_juridica(); $this->establecimientos = new Md_establecimientos(); $this->grados_descripcion = new Md_grados_descripcion(); $this->departamentos = new Md_departamentos(); $this->forma_pago = new Md_forma_pago(); $this->banco = new Md_banco(); $this->direccion = new Md_dep_direc_subdirec(); $this->departamentos2 = new Md_dep_departamentos_enc(); $this->subdepartamentos = new Md_dep_sub_departamentos(); $this->secciones = new Md_dep_secciones(); $this->temporadas = new Md_temporadas(); $this->viaticos = new Md_viaticos(); $this->viaticos_traza = new Md_viaticos_traza(); $this->carpeta_documentos = new Md_carpeta_documentos(); $this->carpeta_detalle = new Md_carpeta_detalle(); $this->sesión = session(); $this->db = \Config\Database::connect();
$this->validaViatico = [ "rut" => "required", "total" => "required", "calidad_juridica" => "required", "establecimiento" => "required", "grado" => "required", "departamento" => "required", "cargo" => "required|max_length[45]|regex_match[/a-zA-ZñÑáÁéÉíÍóÓúÚ /]", "motivo" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]", "lugar" => "required|max_length[500]|regex_match[/^;\"'{}\[\]^<>=/]", "viatico_100" => "required|numeric", "valor_100" => "required|numeric", "viatico_40" => "required|numeric", "valor_40" => "required|numeric", "viatico_20" => "required|numeric", "valor_20" => "required|numeric", "pernocta" => "required", "fecha_desde" => "required", "fecha_hasta" => "required", "forma_pago" => "required", "banco" => "required", "n_cuenta" => "required|max_length[20]|numeric", ]; // $this->mpdf = new \Mpdf\Mpdf([ // 'mode' => 'utf-8', // 'format' => [48, 75], // 'margin_top' => 2, // 'margin_left' => 5, // 'margin_right' => 3, // 'margin_bottom' => 3 // ]); }
public function validar_sesion() { if (!$this->sesión->has("rut_ses")) { echo "La sesión expiró, actualice el sitio web con F5"; exit(); } }
public function buscar_funcionario() { $this->validar_sesion(); echo view("Viaticos/buscar_funcionario"); }
public function datatable_buscar_funcionario() { $this->validar_sesion(); return $this->usuarios->datatable_buscar_funcionario($this->db); }
public function llenar_cmb_calidad_juridica() { $this->validar_sesion(); $datosCalidadJuridica = $this->calidad_juridica->select("codigo as id")->select("cal_descripcion as calidad_juridica")->where("activar", 1)->findAll();
return json_encode($datosCalidadJuridica); }
public function llenar_cmb_establecimiento() { $this->validar_sesion(); $datosEstab = $this->establecimientos->select("codigo as id")->select("est_descripcion as establecimiento")->findAll();
return json_encode($datosEstab); }
public function llenar_cmb_grado() { $this->validar_sesion(); $datosGrados = $this->grados_descripcion->select("id_grado as id")->select("descripcion as grado")->findAll();
return json_encode($datosGrados); }
public function llenar_cmb_departamento() { $this->validar_sesion(); $datosDepa = $this->departamentos->select("codigo as id")->select("descripcion as departamento")->where("activar", 1)->findAll();
return json_encode($datosDepa); }
public function llenar_cmb_forma_pago() { $this->validar_sesion(); $datosFormaPago = $this->forma_pago->select("codigo as id")->select("forma_descripcion as forma_pago")->findAll();
return json_encode($datosFormaPago); }
public function llenar_cmb_banco() { $this->validar_sesion(); $datosBanco = $this->banco->select("codigo as id")->select("banco_descripcion as banco")->findAll();
return json_encode($datosBanco); }
public function llenar_cmb_direccion() { $this->validar_sesion(); $datosDireccion = $this->direccion->select("id")->select("glosa as direccion")->where("activar", 1)->findAll();
return json_encode($datosDireccion); }
public function llenar_cmb_departamento2($datos) { $this->validar_sesion(); $datos = json_decode($datos, true); $id_direccion = $datos["id_direccion"];
if ($id_direccion != "") { $datosDepartamento = $this->departamentos2->select("id")->select("glosa as departamento")->where("id_direc", $id_direccion)->where("activar", 1)->findAll(); } else { $datosDepartamento = $this->departamentos2->select("id")->select("glosa as departamento")->where("activar", 1)->findAll(); }
return json_encode($datosDepartamento); }
public function llenar_cmb_subdepartamento($datos) { $this->validar_sesion(); $datos = json_decode($datos, true); $id_departamento = $datos["id_departamento"];
if ($id_departamento != "") { $datosSubdepa = $this->subdepartamentos->select("id")->select("glosa as subdepartamento")->where("id_departamento", $id_departamento)->where("activar", 1)->findAll(); } else { $datosSubdepa = $this->subdepartamentos->select("id")->select("glosa as subdepartamento")->where("activar", 1)->findAll(); }
return json_encode($datosSubdepa); }
public function llenar_cmb_seccion($datos) { $this->validar_sesion(); $datos = json_decode($datos, true); $id_subdepartamento = $datos["id_subdepartamento"];
if ($id_subdepartamento != "") { $datosSeccion = $this->secciones->select("id")->select("glosa as seccion")->where("id_subdepto", $id_subdepartamento)->where("activar", 1)->findAll(); } else { $datosSeccion = $this->secciones->select("id")->select("glosa as seccion")->where("activar", 1)->findAll(); }
return json_encode($datosSeccion); }
public function consulta_año() { $this->validar_sesion(); $fecha_desde = $this->request->getPost("fecha_desde");
echo $this->temporadas->consulta_año($this->db, $fecha_desde); }
public function consultar_monto_temporada() { $this->validar_sesion(); $fecha_desde = $this->request->getPost("fecha_desde"); $rut = $this->request->getPost("rut");
echo $this->temporadas->consultar_monto_temporada($this->db, $fecha_desde, $rut); }
public function buscar_nomina() { $this->validar_sesion(); echo view("Viaticos/buscar_nomina"); }
public function datatable_buscar_nomina() { $this->validar_sesion(); define("ACTIVO", 1); $id_usuario = $this->sesión->rut_ses;
$datosNominas = $this->carpeta_documentos->select("id")->select("glosa as nombre_nomina")->select("IFNULL(ELT(FIELD(TIPO, 1, 2, 3),'Viáticos','Pasajes','Documentos'),'Sin registro') as tipo_carpeta")->where("usuario", $id_usuario)->where("estado", ACTIVO)->findAll();
$salida = array('data' => $datosNominas); return json_encode($salida); }
public function guardar_viatico() { $this->validar_sesion(); if ($this->request->getMethod() == "post" && $this->validate($this->validaViatico)) { define("PENDIENTE", 0); define("OK", 1);
$rut = $this->request->getPost("rut"); $total = $this->request->getPost("total"); $calidad_juridica = $this->request->getPost("calidad_juridica"); $establecimiento = $this->request->getPost("establecimiento"); $grado = $this->request->getPost("grado"); $departamento = $this->request->getPost("departamento"); $cargo = $this->request->getPost("cargo"); $id_nomina = $this->request->getPost("id_nomina"); $motivo = $this->request->getPost("motivo"); $lugar = $this->request->getPost("lugar"); $viatico_100 = $this->request->getPost("viatico_100"); $valor_100 = $this->request->getPost("valor_100"); $viatico_40 = $this->request->getPost("viatico_40"); $valor_40 = $this->request->getPost("valor_40"); $viatico_20 = $this->request->getPost("viatico_20"); $valor_20 = $this->request->getPost("valor_20"); $pernocta = $this->request->getPost("pernocta"); $noches = $this->request->getPost("noches"); $fecha_desde = $this->request->getPost("fecha_desde"); $fecha_hasta = $this->request->getPost("fecha_hasta"); $forma_pago = $this->request->getPost("forma_pago"); $banco = $this->request->getPost("banco"); $n_cuenta = $this->request->getPost("n_cuenta"); $direccion = $this->request->getPost("direccion"); $departamento2 = $this->request->getPost("departamento2"); $subdepartamento = $this->request->getPost("subdepartamento"); $seccion = $this->request->getPost("seccion"); $procedimiento_2 = $this->request->getPost("procedimiento_2"); $movil = $this->request->getPost("movil"); $qth = $this->request->getPost("qth"); $hora_salida = $this->request->getPost("hora_salida"); $hora_llegada = $this->request->getPost("hora_llegada"); $tiempo_encomienda = $this->request->getPost("tiempo_encomienda");
$rut_usuario = $this->sesión->rut_ses; $fecha = date("Y-m-d H:i:s");
$this->db->transStart();
$datosViatico = [ "rut_funcionario" => $rut, "motivo" => $motivo, "lugar" => $lugar, "dias_100" => $viatico_100, "monto_entero" => $valor_100, "dias_40" => $viatico_40, "monto_medio" => $valor_40, "dias_20" => $viatico_20, "monto_medio20" => $valor_20, "pernocta" => $pernocta, "noches" => $noches, "fecha_desde" => $fecha_desde, "fecha_hasta" => $fecha_hasta, "total" => $total, "aprobacion" => PENDIENTE, "rut_usuario" => $rut_usuario, "fecha" => $fecha, "samu_2procedimiento" => $procedimiento_2, "samu_movil" => $movil, "samu_qth" => $qth, "samu_hora_salida" => $hora_salida, "samu_hora_llegada" => $hora_llegada, "samu_tiempo_encomienda" => $tiempo_encomienda, "forma_pago" => $forma_pago, "banco" => $banco, "n_cuenta" => $n_cuenta, "cargo" => $cargo, "departamento" => $departamento, "grado" => $grado, "est_cod" => $establecimiento, "cjuridica" => $calidad_juridica, "direccion_subdireccion" => $direccion, "departamento_enc" => $departamento2, "subdepartamento" => $subdepartamento, "seccion" => $seccion ];
$this->viaticos->save($datosViatico);
$datosUsuarios = [ "rut" => $rut, "forma_pago" => $forma_pago, "banco" => $banco, "n_cuenta" => $n_cuenta, "cargo" => $cargo, "departamento" => $departamento, "direccion_subdireccion" => $direccion, "departamento_enc" => $departamento2, "subdepartamento" => $subdepartamento, "seccion" => $seccion ];
$this->usuarios->save($datosUsuarios);
$obtener_id = $this->viaticos->select("max(codigo) as id_viatico")->first(); $id_viatico = $obtener_id["id_viatico"];
$datosViaticoTraza = [ "id_viatico" => $id_viatico, "estado" => PENDIENTE, "rut_usuario" => $rut_usuario, "fecha" => $fecha ];
$this->viaticos_traza->save($datosViaticoTraza);
$datosNominaDetalle = [ "id_carpeta" => $id_nomina, "id_documento" => $id_viatico ];
$this->carpeta_detalle->insert($datosNominaDetalle);
$this->db->transComplete();
if ($this->db->transStatus()) { echo OK; } else { echo "Error al registrar el viático"; } } } } ?>
View:
Code: <div class="content-header">
<div class="container-fluid">
<div class="row mb-2">
<div class="col-sm-6">
<h1 class="m-0">Ingreso Viáticos</h1>
</div>
<div class="col-sm-6">
<ol class="breadcrumb float-sm-right">
<li class="breadcrumb-item active">Viáticos</li>
<li class="breadcrumb-item active">Ingreso Viáticos</li>
</ol>
</div>
</div>
</div>
</div>
<section class="content">
<div class="container-fluid">
<div class="card">
<div class="card-body">
<div class="container-fluid">
<center>
<button class="btn btn-success" id="btn_aceptar" name="btn_aceptar" type="button"><i class="fas fa-save"></i> Aceptar</button>
<button class="btn btn-info" id="btn_limpiar" name="btn_limpiar" type="button"><i class="fas fa-broom"></i> Limpiar</button>
</center>
</div>
</div>
</div>
<div class="card">
<div class="card-header">
<div class="card-title">
Formulario Ingreso de Viáticos
</div>
</div>
<div class="card-body">
<form id="form_viatico" name="form_viatico" enctype="multipart/form-data">
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_total">Total a Pagar</label>
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text">$</span>
</div>
<input type='text' class="form-control bg-info" id='txt_total' name="txt_total" style="font-size: 120%;" />
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_rut">RUN Funcionario</label>
<div class="input-group">
<input type='text' class="form-control" id='txt_rut' name="txt_rut" placeholder="Ingrese RUN y presione ENTER" />
<div class="input-group-append">
<button class="btn btn-outline-dark" type="button" id="btn_buscar_func" name="btn_buscar_func"><i class="fas fa-search"></i> Busqueda Avanzada</button>
</div>
</div>
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_nombre_completo">Nombre Completo</label>
<input type='text' class="form-control" id='txt_nombre_completo' name="txt_nombre_completo" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_calidad_juridica">Calidad Jurídica</label>
<select id="cmb_calidad_juridica" name="cmb_calidad_juridica" class="form-control"></select>
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_establecimiento">Establecimiento</label>
<select id="cmb_establecimiento" name="cmb_establecimiento" class="form-control"></select>
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_grado">Grado</label>
<select id="cmb_grado" name="cmb_grado" class="form-control"></select>
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_cargo">Cargo</label>
<input type='text' class="form-control" id='txt_cargo' name="txt_cargo" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_departamento">Departamento</label>
<select id="cmb_departamento" name="cmb_departamento" class="form-control"></select>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="container-fluid">
<div class="row">
<div class="card-title">Buscar Nómina (Opcional)</div>
</div>
<div class="row">
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_id_nomina">Id. Nómina</label>
<input type='text' class="form-control" id='txt_id_nomina' name="txt_id_nomina" />
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_nombre_nomina">Nombre Nómina</label>
<div class="input-group">
<input type='text' class="form-control" id='txt_nombre_nomina' name="txt_nombre_nomina" />
<div class="input-group-append">
<button class="btn btn-outline-dark" type="button" id="btn_buscar_nomina" name="btn_buscar_nomina"><i class="fas fa-search"></i> Buscar Nómina</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<a class="nav-link active" id="home-tab" data-toggle="tab" href="#home" role="tab" aria-controls="home" aria-selected="true">Ingreso de Datos</a>
</li>
<li class="nav-item" role="presentation">
<a class="nav-link" id="profile-tab" data-toggle="tab" href="#profile" role="tab" aria-controls="profile" aria-selected="false">Detalle SAMU</a>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
<div class="container-fluid">
<br>
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-check">
<input class="form-check-input" type="checkbox" value="" name="chk_viatico_0" id="chk_viatico_0">
<label class="form-check-label" for="chk_viatico_0">Viático costo $0</label>
</div>
</div>
</div>
<div class="row">
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_motivo">Motivo</label>
<textarea class="form-control" id="txt_motivo" name="txt_motivo" rows="3"></textarea>
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_lugar">Lugar</label>
<textarea class="form-control" id="txt_lugar" name="txt_lugar" rows="3"></textarea>
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_viatico_100">Viático Completo 100%</label>
<input type='number' class="form-control" id='txt_viatico_100' name="txt_viatico_100" min="0" value="0" />
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_valor_100">Valor Grado 100%</label>
<input type='text' class="form-control" id='txt_valor_100' name="txt_valor_100" />
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_viatico_40">Viático Parcial 40%</label>
<input type='number' class="form-control" id='txt_viatico_40' name="txt_viatico_40" min="0" value="0" />
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_valor_40">Valor Grado 40%</label>
<input type='text' class="form-control" id='txt_valor_40' name="txt_valor_40" />
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_viatico_20">Viático Parcial 20%</label>
<input type='number' class="form-control" id='txt_viatico_20' name="txt_viatico_20" min="0" value="0" />
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_valor_20">Valor Grado 20%</label>
<input type='text' class="form-control" id='txt_valor_20' name="txt_valor_20" />
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_pernocta">Pernocta Fuera</label>
<input type='text' class="form-control" id='txt_pernocta' name="txt_pernocta" value="No" />
</div>
</div>
<div class="col-xl-2 col-lg-2 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_noches">Noches</label>
<input type='text' class="form-control" id='txt_noches' name="txt_noches" value="0" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="dt_desde">Desde</label>
<input type='text' class="form-control" id='dt_desde' name="dt_desde" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="dt_hasta">Hasta</label>
<input type='text' class="form-control" id='dt_hasta' name="dt_hasta" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_forma_pago">Forma de Pago</label>
<select id="cmb_forma_pago" name="cmb_forma_pago" class="form-control"></select>
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_banco">Banco</label>
<select id="cmb_banco" name="cmb_banco" class="form-control"></select>
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_n_cuenta">N° de Cuenta</label>
<input type='text' class="form-control" id='txt_n_cuenta' name="txt_n_cuenta" />
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_direccion">Dirección/Subdirección</label>
<select id="cmb_direccion" name="cmb_direccion" class="form-control"></select>
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_departamento2">Departamento</label>
<select id="cmb_departamento2" name="cmb_departamento2" class="form-control"></select>
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_subdepartamento">Subdepartamento</label>
<select id="cmb_subdepartamento" name="cmb_subdepartamento" class="form-control"></select>
</div>
</div>
<div class="col-xl-6 col-lg-6 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="cmb_seccion">Sección</label>
<select id="cmb_seccion" name="cmb_seccion" class="form-control"></select>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<div class="container-fluid">
<br>
<div class="card">
<div class="card-body">
<div class="row">
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_procedimiento_2">2° Procedimiento</label>
<input type='text' class="form-control" id='txt_procedimiento_2' name="txt_procedimiento_2" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_movil">Móvil</label>
<input type='text' class="form-control" id='txt_movil' name="txt_movil" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_qth">QTH</label>
<input type='text' class="form-control" id='txt_qth' name="txt_qth" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_hora_salida">Hora Salida</label>
<input type='text' class="form-control" id='txt_hora_salida' name="txt_hora_salida" value="00:00" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_hora_llegada">Hora Llegada</label>
<input type='text' class="form-control" id='txt_hora_llegada' name="txt_hora_llegada" value="00:00" />
</div>
</div>
<div class="col-xl-4 col-lg-4 col-md-6 col-sm-12">
<div class="form-group">
<label class="small mb-1" for="txt_tiempo_encomienda">Tiempo Encomienda</label>
<input type='text' class="form-control" id='txt_tiempo_encomienda' name="txt_tiempo_encomienda" value="00:00" />
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</section>
<div id="dlg_buscar" class="modal fade" role="dialog">
<div class="modal-dialog modal-xl">
<div class="modal-content">
<div class="modal-header">
<h4 id="titulo_modal" class="modal-title"></h4>
</div>
<div class="modal-body">
<input type="hidden" name="txt_origen" id="txt_origen" value="ingresar_viatico">
<div id="divContenedorBuscar"></div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-dark" data-dismiss="modal">Cerrar</button>
</div>
</div>
</div>
</div>
<script type="text/javascript" src="<?php echo base_url(); ?>/js/Viaticos/ingresar_viatico.js"></script>
JS, function:
Code: function guardar_viatico() {
var rut = $("#txt_rut").val();
var total = $("#txt_total").val();
var calidad_juridica = $("#cmb_calidad_juridica").val();
var establecimiento = $("#cmb_establecimiento").val();
var grado = $("#cmb_grado").val();
var departamento = $("#cmb_departamento").val();
var cargo = $("#txt_cargo").val();
var id_nomina = $("#txt_id_nomina").val();
var motivo = $("#txt_motivo").val();
var lugar = $("#txt_lugar").val();
var viatico_100 = $("#txt_viatico_100").val();
var valor_100 = $("#txt_valor_100").val();
var viatico_40 = $("#txt_viatico_40").val();
var valor_40 = $("#txt_valor_40").val();
var viatico_20 = $("#txt_viatico_20").val();
var valor_20 = $("#txt_valor_20").val();
var pernocta = $("#txt_pernocta").val();
var noches = $("#txt_noches").val();
var fecha_desde = $("#dt_desde").val();
var fecha_hasta = $("#dt_hasta").val();
var forma_pago = $("#cmb_forma_pago").val();
var banco = $("#cmb_banco").val();
var n_cuenta = $("#txt_n_cuenta").val();
var direccion = $("#cmb_direccion").val();
var departamento2 = $("#cmb_departamento2").val();
var subdepartamento = $("#cmb_subdepartamento").val();
var seccion = $("#cmb_seccion").val();
var procedimiento_2 = $("#txt_procedimiento_2").val();
var movil = $("#txt_movil").val();
var qth = $("#txt_qth").val();
var hora_salida = $("#txt_hora_salida").val();
var hora_llegada = $("#txt_hora_llegada").val();
var tiempo_encomienda = $("#txt_tiempo_encomienda").val();
if (viatico_20 > 0 || viatico_40 > 0 || viatico_100 > 0) {
if ($("#dt_desde").data("DateTimePicker").date() <= $("#dt_hasta").data("DateTimePicker").date()) {
if (pernocta=="Si"){
pernocta="S";
}else if(pernocta=="No"){
pernocta="N";
}
$.ajax({
url: base_url + "/index.php/Viaticos/Ctrl_viaticos/guardar_viatico",
type: "POST",
async: false,
data: {
rut: rut,
total: total,
calidad_juridica: calidad_juridica,
establecimiento: establecimiento,
grado: grado,
departamento: departamento,
cargo: cargo,
id_nomina: id_nomina,
motivo: motivo,
lugar: lugar,
viatico_100: viatico_100,
valor_100: valor_100,
viatico_40: viatico_40,
valor_40: valor_40,
viatico_20: viatico_20,
valor_20: valor_20,
pernocta: pernocta,
noches: noches,
fecha_desde: fecha_desde,
fecha_hasta: fecha_hasta,
forma_pago: forma_pago,
banco: banco,
n_cuenta: n_cuenta,
direccion: direccion,
departamento2: departamento2,
subdepartamento: subdepartamento,
seccion: seccion,
procedimiento_2: procedimiento_2,
movil: movil,
qth: qth,
hora_salida: hora_salida,
hora_llegada: hora_llegada,
tiempo_encomienda: tiempo_encomienda
},
success: function(respuesta) {
const OK = 1;
if (respuesta == OK) {
Toast.create("Éxito", "Viático guardado con éxito", TOAST_STATUS.SUCCESS, 5000);
// viatico_pdf();
limpiar_datos();
} else {
Toast.create("Error", respuesta, TOAST_STATUS.DANGER, 5000);
}
},
error: function(error) {
respuesta = JSON.parse(error["responseText"]);
Toast.create("Error", respuesta.message, TOAST_STATUS.DANGER, 5000);
}
});
} else {
Toast.create("Aviso", "Tiene que seleccionar al menos un viático (parcial o completo).", TOAST_STATUS.WARNING, 5000);
}
} else {
Toast.create("Aviso", "Tiene que seleccionar al menos un viático (parcial o completo).", TOAST_STATUS.WARNING, 5000);
}
}
-
paulbalandan
External Auditor
-
Posts: 285
Threads: 6
Joined: Jul 2020
Reputation:
24
Your validation rules seems correct. Can you share the full error message, including the stack trace if any?
07-08-2021, 01:21 PM
(This post was last modified: 07-08-2021, 01:32 PM by dremy_kelupallun.)
Complete response:
Code: {
"title": "CodeIgniter\\Validation\\Exceptions\\ValidationException",
"type": "CodeIgniter\\Validation\\Exceptions\\ValidationException",
"code": 500,
"message": "required|max_length is not a valid rule.",
"file": "/srv/http/trazador/system/Validation/Validation.php",
"line": 321,
"trace": [
{
"file": "/srv/http/trazador/system/Validation/Validation.php",
"line": 321,
"function": "forRuleNotFound",
"class": "CodeIgniter\\Validation\\Exceptions\\ValidationException",
"type": "::"
},
{
"file": "/srv/http/trazador/system/Validation/Validation.php",
"line": 159,
"function": "processRules",
"class": "CodeIgniter\\Validation\\Validation",
"type": "->"
},
{
"file": "/srv/http/trazador/system/Controller.php",
"line": 183,
"function": "run",
"class": "CodeIgniter\\Validation\\Validation",
"type": "->"
},
{
"file": "/srv/http/trazador/app/Controllers/Viaticos/Ctrl_viaticos.php",
"line": 234,
"function": "validate",
"class": "CodeIgniter\\Controller",
"type": "->"
},
{
"file": "/srv/http/trazador/system/CodeIgniter.php",
"line": 928,
"function": "guardar_viatico",
"class": "App\\Controllers\\Viaticos\\Ctrl_viaticos",
"type": "->"
},
{
"file": "/srv/http/trazador/system/CodeIgniter.php",
"line": 436,
"function": "runController",
"class": "CodeIgniter\\CodeIgniter",
"type": "->"
},
{
"file": "/srv/http/trazador/system/CodeIgniter.php",
"line": 336,
"function": "handleRequest",
"class": "CodeIgniter\\CodeIgniter",
"type": "->"
},
{
"file": "/srv/http/trazador/public/index.php",
"line": 37,
"function": "run",
"class": "CodeIgniter\\CodeIgniter",
"type": "->"
}
]
}
-
paulbalandan
External Auditor
-
Posts: 285
Threads: 6
Joined: Jul 2020
Reputation:
24
Let's try to bisect this. In your validaViatico rules, remove ALL rules that contains this regex match rule
regex_match[/^;\"'{}\[\]^<>=/]"
Then try to run again. I'm thinking the validation service is having a hard time splitting this rule.
(07-08-2021, 02:13 PM)paulbalandan Wrote: Let's try to bisect this. In your validaViatico rules, remove ALL rules that contains this regex match rule
regex_match[/^;\"'{}\[\]^<>=/]"
Then try to run again. I'm thinking the validation service is having a hard time splitting this rule. Yes friend, I took the regex out of him, and it worked. But I need that validation, is there a way to do it without failing?
And thank you very much for the help.
-
paulbalandan
External Auditor
-
Posts: 285
Threads: 6
Joined: Jul 2020
Reputation:
24
So this is a confirmed bug. Please open an issue ticket at GitHub, please.
github.com/codeigniter4/CodeIgniter4
(07-09-2021, 05:25 AM)paulbalandan Wrote: So this is a confirmed bug. Please open an issue ticket at GitHub, please.
github.com/codeigniter4/CodeIgniter4
I don't know if I opened the ticket correctly.
https://github.com/codeigniter4/CodeIgni...ssues/4929
Thank you very much for the help.
-
paulbalandan
External Auditor
-
Posts: 285
Threads: 6
Joined: Jul 2020
Reputation:
24
|