[SOLUCIONADO]Inconveniente al eliminar columna del cuadro

Hola buen día.

Tengo un problema al eliminar una columna del cuadro, cuando elimino una, se borran todas las siguientes.

Hola Sandra,

la eliminacion que mencionas, es via toba_editor o via codigo?.. en este ultimo caso, tenes el codigo del CI a mano como para ubicarme mejor?

Saludos

Hola Buen día Richard.

La columna lo elimino vía código.
para el caso que menciono la columna que se elimina es comprobante_mv

Adjunto el código del cuadro

  function conf__cuadro(toba_ei_cuadro $cuadro) {

        $documentos = $this->cn()->get_documentos_html_con_link(array('id_expediente' => $this->s__id_expediente, 'limit' => false));

        $clave2 = 0;

        if (isset($documentos) && $documentos != null) {

            $id_documento_max_remision = dao_expedientes::get_id_documento_max_remision(array('id_expediente' => $this->s__id_expediente, 'id_dependencia' => toba::usuario()->get_dependencia_id()));

            foreach ($documentos as $clave => $documento) {
                $dependencias_empleado = toba::usuario()->get_array_dependencias_empleados();
                if (!is_null($dependencias_empleado)) {
                    if (in_array($documentos[$clave]['id_dependencia'], $dependencias_empleado)) {
                        $empleado_dependencia = 1;
                    } else {
                        $empleado_dependencia = 0;
                    }
                } else {
                    $empleado_dependencia = 0;
                }
                $documentos[$clave]['fecha_carga'] = $documentos[$clave]['fecha_carga'] . ' ' . $documentos[$clave]['hora_carga'];
                if (($documentos[$clave]['id_dependencia'] != toba::usuario()->get_dependencia_id() && $documentos[$clave]['documento_adjunto'] != null && $documentos[$clave]['estado'] != 'AN') || $documentos[$clave]['id_dependencia'] == toba::usuario()->get_dependencia_id() || $empleado_dependencia == 1 || (isset($id_documento_max_remision) && $documentos[$clave]['id_documento_html'] <= $id_documento_max_remision && ($documentos[$clave]['estado'] == 'DE'
                        OR $documentos[$clave]['estado'] == 'FI'
                        OR $documentos[$clave]['estado'] == 'LF' 
                        OR $documentos[$clave]['estado'] == 'FP' 
                        ))) {

                    $documentos2[$clave2]['id_documento_html'] = $documentos[$clave]['id_documento_html'];
                    $documentos2[$clave2]['nombre'] = $documentos[$clave]['nombre'];
                    
                    $documentos2[$clave2]['fecha_carga'] = $documentos[$clave]['fecha_carga'];
                    $documentos2[$clave2]['procedencia'] = $documentos[$clave]['procedencia'];
                    $documentos2[$clave2]['observaciones'] = $documentos[$clave]['observaciones'];
                    $documentos2[$clave2]['desc_estado'] = $documentos[$clave]['desc_estado'];
                    $documentos2[$clave2]['estado'] = $documentos[$clave]['estado'];
                    if ($documentos[$clave]['id_dependencia'] == toba::usuario()->get_dependencia_id() || $empleado_dependencia == 1) {
                        if (($documentos[$clave]['estado'] == 'BO' || $documentos[$clave]['estado'] == 'LV') && toba::usuario()->get_pasar_definitivo_interno() == 'S') {
                            $documentos2[$clave2]['pasar_definitivo'] = dao_expedientes::agregar_icono_pasar_definitivo($documentos[$clave]['id_documento_html'], '103000742');
                        }
                    }
                    $documentos2[$clave2]['desc_tipo_documento'] = $documentos[$clave]['desc_tipo_documento'];
                    $documentos2[$clave2]['fecha_firma'] = $documentos[$clave]['desc_fecha_firma'];
                    
                    $documentos2[$clave2]['tipo_documento'] = $documentos[$clave]['tipo_documento'];
                    $documentos2[$clave2]['tiene_medida'] = $documentos[$clave]['tiene_medida'];
                    
                    if (constantes::get_valor_constante("MEDIDAS_VIOLENCIAS") == 'SI' && $this->s__rejumev_voces==true){
                        if($documentos2[$clave2]['tiene_medida'] == 'S' && ($documentos2[$clave2]['tipo_documento'] ==4 || $documentos2[$clave2]['tipo_documento'] ==5)){
                            $documento_medida = dao_expedientes::get_documentos_medidas(array('id_documento_html' => $documentos[$clave]['id_documento_html']));
                            if (isset($documento_medida[0])) {
                                $path = $this->cn()->get_path_documentos_internos_medidas($documento_medida[0]);
                                $temp_nombre = $documentos[$clave]['id_documento_html'] . '_medidas_violencias.pdf';

                                $path_descarga = $path['path_corto'] . $temp_nombre;

                                $param = array('file' => $path_descarga);
                                $url_descarga = toba::vinculador()->get_url('expediente', '115000016', $param);
                                $img_med_viol = toba_recurso::imagen_proyecto('med_viol.png',true,null,null,"Medida de Violencia");
								$documentos2[$clave2]['comprobante_mv'] = "<a style='text-align:center;display:block;' onclick='downloadDoc(\"$url_descarga\");return false;' href=# target='_blank'>" . $img_med_viol . '</a>';
                            } else{
                                $documentos2[$clave2]['comprobante_mv'] = 'Falta generar la Medida de violenvia';
                                $documentos2[$clave2]['pasar_definitivo']='';
                            }
                            
                        }elseif($documentos2[$clave2]['tiene_medida'] == 'S' && $documentos2[$clave2]['tipo_documento'] ==3){
                            $documentos_medidas_violencias = dao_expedientes::get_documentos_medidas_violencias(array('id_documento_seleccionado' => $documentos[$clave]['id_documento_html']));
                            if(count($documentos_medidas_violencias) > 0){
                                $documentos2[$clave2]['comprobante_mv'] = count($documentos_medidas_violencias) . ' Medida asignada'; 
                            }else{
                                $documentos2[$clave2]['pasar_definitivo']='';
                            }
                        }
                        
                    }else{
                        $cuadro->eliminar_columnas(array('comprobante_mv'));
                    }

                    if (constantes::get_valor_constante("MEDIDAS_VIOLENCIAS") == 'SI' && ($this->s__rejumev_voces==true || $this->s__protocolo==true)){
                        $documentos2[$clave2]['protocolo'] = $documentos[$clave]['protocolo'];
                        if($documentos2[$clave2]['tiene_medida'] == 'N' &&
                           (($documentos2[$clave2]['tipo_documento']==5 || $documentos2[$clave2]['tipo_documento'] == 15)
                            || ($this->s__protocolo==true && $documentos2[$clave2]['tipo_documento']==30))){
                            $tiene_voces = self::registra_voces($documentos2[$clave2]['id_documento_html']);
                            if($tiene_voces==false){
                                $documentos2[$clave2]['pasar_definitivo']='';
                            }
                        }
                    }else{
                        $cuadro->eliminar_columnas(array('protocolo'));
                    }
                    
                    $fecha_hora = explode(' ', $documentos[$clave]['fecha_carga']);
                    $fecha = explode('-', $fecha_hora[0]);
                    $hora = $fecha_hora[1];

		    //convierto la fecha a un entero
                    $entero = gregoriantojd($fecha[1], $fecha[2], $fecha[0]);
                    $entero .= str_replace(':', '', $hora);

                    $documentos2[$clave2]['entero_fecha'] = $entero;

                    $clave2++;
                }
            }
        }

        if (isset($documentos2) && $documentos2 != null) {
            $campo = 'entero_fecha';
            $datos = dao_consultas::ordenar_algoritmo_burbuja($documentos2, $campo, false);
            $cuadro->set_datos($datos);
        }
    }

Adjunto la configuración del cuadro y como se visualiza desde la aplicación.


cuadro.png

cuadro.png

aplicacion.png

aplicacion.png

Hola Sandra buen dia,

Creo que el inconveniente viene porque la eliminacion de las columnas te quedo adentro del foreach con lo cual intentan eliminarse cuando ya fueron eliminadas.
Probablemente tambien hay un bug escondido alli, ya que deberia fallar con una excepcion y/o no hacer nada en cualquier caso.
Para solucionarlo creo que podrias hacer algo asi

  
function conf__cuadro(toba_ei_cuadro $cuadro) {

        $documentos = $this->cn()->get_documentos_html_con_link(array('id_expediente' => $this->s__id_expediente, 'limit' => false));
        $clave2 = 0;

        //Determinaciones estaticas que no dependen de datos en el ciclo
        $columnas_eliminables = [];
        $medidas_violencia_habilitadas = (constantes::get_valor_constante("MEDIDAS_VIOLENCIAS") == 'SI' && $this->s__rejumev_voces==true);
        $protocolo_violencia_habilitado = ($medidas_violencia_habilitadas || $this->s__protocolo===true);

       if (! $medidas_violencia_habilitadas) {
            $columnas_eliminables[] = 'comprobante_mv';
       }
       if (! $protocolo_violencia_habilitado) {
           $columnas_eliminables[] = 'protocolo';
       }
        if (isset($documentos) && $documentos != null) {
            $id_documento_max_remision = dao_expedientes::get_id_documento_max_remision(array('id_expediente' => $this->s__id_expediente, 'id_dependencia' => toba::usuario()->get_dependencia_id()));

            foreach ($documentos as $clave => $documento) {
                $dependencias_empleado = toba::usuario()->get_array_dependencias_empleados();
                if (!is_null($dependencias_empleado)) {
                    if (in_array($documentos[$clave]['id_dependencia'], $dependencias_empleado)) {
                        $empleado_dependencia = 1;
                    } else {
                        $empleado_dependencia = 0;
                    }
                } else {
                    $empleado_dependencia = 0;
                }
                $documentos[$clave]['fecha_carga'] = $documentos[$clave]['fecha_carga'] . ' ' . $documentos[$clave]['hora_carga'];
                if (($documentos[$clave]['id_dependencia'] != toba::usuario()->get_dependencia_id() && $documentos[$clave]['documento_adjunto'] != null && $documentos[$clave]['estado'] != 'AN') || $documentos[$clave]['id_dependencia'] == toba::usuario()->get_dependencia_id() || $empleado_dependencia == 1 || (isset($id_documento_max_remision) && $documentos[$clave]['id_documento_html'] <= $id_documento_max_remision && ($documentos[$clave]['estado'] == 'DE'
                        OR $documentos[$clave]['estado'] == 'FI'
                        OR $documentos[$clave]['estado'] == 'LF' 
                        OR $documentos[$clave]['estado'] == 'FP' 
                        ))) {

                    $documentos2[$clave2]['id_documento_html'] = $documentos[$clave]['id_documento_html'];
                    $documentos2[$clave2]['nombre'] = $documentos[$clave]['nombre'];
                    
                    $documentos2[$clave2]['fecha_carga'] = $documentos[$clave]['fecha_carga'];
                    $documentos2[$clave2]['procedencia'] = $documentos[$clave]['procedencia'];
                    $documentos2[$clave2]['observaciones'] = $documentos[$clave]['observaciones'];
                    $documentos2[$clave2]['desc_estado'] = $documentos[$clave]['desc_estado'];
                    $documentos2[$clave2]['estado'] = $documentos[$clave]['estado'];
                    if ($documentos[$clave]['id_dependencia'] == toba::usuario()->get_dependencia_id() || $empleado_dependencia == 1) {
                        if (($documentos[$clave]['estado'] == 'BO' || $documentos[$clave]['estado'] == 'LV') && toba::usuario()->get_pasar_definitivo_interno() == 'S') {
                            $documentos2[$clave2]['pasar_definitivo'] = dao_expedientes::agregar_icono_pasar_definitivo($documentos[$clave]['id_documento_html'], '103000742');
                        }
                    }
                    $documentos2[$clave2]['desc_tipo_documento'] = $documentos[$clave]['desc_tipo_documento'];
                    $documentos2[$clave2]['fecha_firma'] = $documentos[$clave]['desc_fecha_firma'];
                    
                    $documentos2[$clave2]['tipo_documento'] = $documentos[$clave]['tipo_documento'];
                    $documentos2[$clave2]['tiene_medida'] = $documentos[$clave]['tiene_medida'];
                    
                    if ($medidas_violencia_habilitadas){
                        if($documentos2[$clave2]['tiene_medida'] == 'S' && ($documentos2[$clave2]['tipo_documento'] ==4 || $documentos2[$clave2]['tipo_documento'] ==5)){
                            $documento_medida = dao_expedientes::get_documentos_medidas(array('id_documento_html' => $documentos[$clave]['id_documento_html']));
                            if (isset($documento_medida[0])) {
                                $path = $this->cn()->get_path_documentos_internos_medidas($documento_medida[0]);
                                $temp_nombre = $documentos[$clave]['id_documento_html'] . '_medidas_violencias.pdf';

                                $path_descarga = $path['path_corto'] . $temp_nombre;

                                $param = array('file' => $path_descarga);
                                $url_descarga = toba::vinculador()->get_url('expediente', '115000016', $param);
                                $img_med_viol = toba_recurso::imagen_proyecto('med_viol.png',true,null,null,"Medida de Violencia");
								$documentos2[$clave2]['comprobante_mv'] = "<a style='text-align:center;display:block;' onclick='downloadDoc(\"$url_descarga\");return false;' href=# target='_blank'>" . $img_med_viol . '</a>';
                            } else{
                                $documentos2[$clave2]['comprobante_mv'] = 'Falta generar la Medida de violenvia';
                                $documentos2[$clave2]['pasar_definitivo']='';
                            }
                            
                        }elseif($documentos2[$clave2]['tiene_medida'] == 'S' && $documentos2[$clave2]['tipo_documento'] ==3){
                            $documentos_medidas_violencias = dao_expedientes::get_documentos_medidas_violencias(array('id_documento_seleccionado' => $documentos[$clave]['id_documento_html']));
                            if(count($documentos_medidas_violencias) > 0){
                                $documentos2[$clave2]['comprobante_mv'] = count($documentos_medidas_violencias) . ' Medida asignada'; 
                            }else{
                                $documentos2[$clave2]['pasar_definitivo']='';
                            }
                        }                        
                    }

                    if (protocolo_violencia_habilitado){
                        $documentos2[$clave2]['protocolo'] = $documentos[$clave]['protocolo'];
                        if($documentos2[$clave2]['tiene_medida'] == 'N' &&
                           (($documentos2[$clave2]['tipo_documento']==5 || $documentos2[$clave2]['tipo_documento'] == 15)
                            || ($this->s__protocolo==true && $documentos2[$clave2]['tipo_documento']==30))){
                            $tiene_voces = self::registra_voces($documentos2[$clave2]['id_documento_html']);
                            if($tiene_voces==false){
                                $documentos2[$clave2]['pasar_definitivo']='';
                            }
                        }
                    }
                    
                    $fecha_hora = explode(' ', $documentos[$clave]['fecha_carga']);
                    $fecha = explode('-', $fecha_hora[0]);
                    $hora = $fecha_hora[1];

		    //convierto la fecha a un entero
                    $entero = gregoriantojd($fecha[1], $fecha[2], $fecha[0]);
                    $entero .= str_replace(':', '', $hora);

                    $documentos2[$clave2]['entero_fecha'] = $entero;

                    $clave2++;
                }
            }
        }

        if (isset($documentos2) && $documentos2 != null) {
            if (! empty($columnas_eliminables)) {
                $cuadro->eliminar_columnas($columnas_eliminables);
            }
            $campo = 'entero_fecha';
            $datos = dao_consultas::ordenar_algoritmo_burbuja($documentos2, $campo, false);
            $cuadro->set_datos($datos);
        }
    }

Saludos

Hola Richard, buen día.

Muchas gracias!. No me di cuenta que al eliminar dentro del foreach se genera este inconveniente.

Saludos