Por favor, les suplico que me respondan esta pregunta, necesito resolverlo con urgencia
Por favor, respondeme esta pregunta, estoy estancado con esto y necesito solucionarlo con urgencia
Hola Matias,
lo que te vine mencionando hasta el momento es mas o menos lo que esta haciendo G3, la unica opcion que te puedo ofrecer para intentar acercarte una respuesta que te destrabe es que me pastees la parte del codigo del CI (asumiendo que todo el resto en metadatos esta OK, cosa que quedaria a revisar en caso de no encontrar nada raro).
Subime tambien por favor una foto del arbol de componentes de la operacion asi me hago una idea de que CI es y que dependencias tiene adentro.
Saludos
Este es el código del ci:
<?php
class ci_empresas extends sindicato_ci
{
protected $s__datos_filtro;
function get_relacion()
{
return $this->dependencia('datos');
}
//---- Filtro -----------------------------------------------------------------------
function conf__filtro(toba_ei_formulario $filtro)
{
if (isset($this->s__datos_filtro)) {
$filtro->set_datos($this->s__datos_filtro);
}
}
function evt__filtro__filtrar($datos)
{
$this->s__datos_filtro = $datos;
}
function evt__filtro__cancelar()
{
unset($this->s__datos_filtro);
}
//---- Cuadro -----------------------------------------------------------------------
function conf__cuadro(toba_ei_cuadro $cuadro)
{
$this->dep('datos')->get_persistidor()->activar_perfil_de_datos();
if(isset($this->s__datos_filtro))
{
$cuadro->set_datos($this->dep('datos')->tabla('empresas')->get_listado($this->s__datos_filtro));
} else {
$cuadro->set_datos($this->dep('datos')->tabla('empresas')->get_listado());
}
}
function evt__cuadro__eliminar($datos)
{
$this->dep('datos')->resetear();
$this->dep('datos')->cargar($datos);
$this->dep('datos')->eliminar_todo();
$this->dep('datos')->resetear();
}
function evt__cuadro__seleccion($datos)
{
$this->dep('datos')->cargar($datos);
$this->set_pantalla('pant_edicion');
}
//---- Formulario -------------------------------------------------------------------
function resetear()
{
$this->dep('datos')->resetear();
$this->set_pantalla('pant_seleccion');
}
//---- EVENTOS CI -------------------------------------------------------------------
function evt__agregar()
{
$this->set_pantalla('pant_edicion');
}
function evt__volver()
{
$this->resetear();
}
function evt__eliminar()
{
$this->dep('datos')->eliminar_todo();
$this->resetear();
}
function evt__guardar()
{
$this->dep('datos')->sincronizar();
$this->resetear();
}
//-----------------------------------------------------------------------------------
//---- Configuraciones --------------------------------------------------------------
//-----------------------------------------------------------------------------------
function conf__pant_edicion(toba_ei_pantalla $pantalla)
{
if(!$this->get_relacion()->esta_cargada())
{
$pantalla->eliminar_evento('eliminar');
}
}
}
?>
Y esta es la captura de pantalla de la operación:
Me pueden responder esta pregunta por favor? Necesito resolverlo lo más pronto posible.
Hola Matias,
esta linea parece ser la invocacion de un metodo donde ejecutas una SQL propia.. por lo que esta linea:
$this->dep('datos')->get_persistidor()->activar_perfil_de_datos();
No sirve para absolutamente NADA, ya que no estas usando la carga de datos del DT.
No se que tenes dentro del metodo get_listado
pero antes de hacer el $db->consultar($sql);
hace una invocacion $sql_filtrada = toba::perfil_de_datos()->filtrar($sql);
y luego consulta con la nueva variable.
Un concepto importante es que el uso del DT/DR implica que vos no haces la gestion manual de las consultas (se encarga la instancia particular), si haces esto ultimo entende que va por fuera de esos objetos y todo el manejo lo haces manual como si estuvieras usando una clase comun y corriente.
Si recapitulas un poco el hilo, Jhon te habia planteado la solucion pero no tenias los gatillos adecuados aparentemente, pasamos luego al uso de DT a pedido tuyo… pero eso se trunca si tenemos una mezcla en el uso.
En este caso, si no es un problema de definicion del perfil… el inconveniente tiene que venir por parte del metodo get_listado
… por favor subite un snippet para ver que esta haciendo.
Saludos
Ya puse esa línea en el método get_listado del dt, pero me sigue sin filtrar porque la línea $tablas_gatillo_encontradas = $this->buscar_tablas_gatillo_en_sql( $sql, $fuente_datos );
en el método filtrar_sql
de la clase toba_perfil_datos
me devuelve un array vacío porque solo estoy haciendo un select para la tabla de la dimensión sin ningún gatillo.
Este es el código del método get_listado del dt:
function get_listado($filtro=array())
{
$where = array();
if (isset($filtro['numero_empresa'])) {
$where[] = "numero_empresa = ".quote($filtro['numero_empresa']);
}
if (isset($filtro['nombre_fantasia'])) {
$where[] = "nombre_fantasia ILIKE ".quote("%{$filtro['nombre_fantasia']}%");
}
if (isset($filtro['razon_social'])) {
$where[] = "razon_social ILIKE ".quote("%{$filtro['razon_social']}%");
}
if (isset($filtro['cuit'])) {
$where[] = "cuit = ".quote($filtro['cuit']);
}
if (isset($filtro['habilitacion_policial'])) {
$where[] = "habilitacion_policial ILIKE ".quote("%{$filtro['habilitacion_policial']}%");
}
if (isset($filtro['email'])) {
$where[] = "email ILIKE ".quote("%{$filtro['email']}%");
}
$sql = "SELECT
t_e.id_empresa,
t_e.numero_empresa,
t_e.nombre_fantasia,
t_e.razon_social,
t_e.director_responsable,
t_e.numero_documento,
t_e.calle,
t_e.numero,
t_e.piso,
t_e.oficina,
t_e.barrio,
t_e.codigo_postal,
t_e.localidad,
t_e.provincia,
t_e.cuit,
t_e.habilitacion_policial,
t_e.telefono_1,
t_e.telefono_2,
t_e.inicio_actividades,
t_e.email,
t_e.declaracion_jurada,
t_e.observaciones
FROM
empresas as t_e
ORDER BY razon_social";
$sql_filtrado = toba::perfil_de_datos()->filtrar($sql);
if (count($where)>0) {
$sql_filtrado = sql_concatenar_where($sql_filtrado, $where);
}
return toba::db('sindicato')->consultar($sql_filtrado);
}
¿Cómo puedo solucionar eso?
Hola Matias,
necesito que me cuentes un poco lo siguiente:
-
cual es la tabla que filtra la dimension?.. porque de las imagenes previas pareciera que tenes 2 dimensiones distintas?
-
la tabla empresas que relacion tiene con la tabla que filtraria los datos?, hay alguna otra tabla involucrada o simplemente queres filtrar la empresa?
Recorda que una tabla es gatillo_directo de si misma fijate en el ejemplo este de la doc como esta definido el caso para ona_pais, revisa que no te este faltando eso.
Saludos