function filteredgrid() { $this->datasis->modulo_id($this->id, 1); if ($this->input->post('btn_cambio_2') !== false) { unset($_POST['btn_cambio_2']); $_POST['btn_submit'] = 'a'; $_cambiomin = true; } else { $_cambiomin = false; } $this->rapyd->load("datafilter2", "datagrid"); $mSPRV = array('tabla' => 'sprv', 'columnas' => array('proveed' => 'Cóodigo', 'nombre' => 'Nombre', 'contacto' => 'Contacto'), 'filtro' => array('proveed' => 'Código', 'nombre' => 'Nombre'), 'retornar' => array('proveed' => 'proveed'), 'titulo' => 'Buscar Proveedor'); $bSPRV = $this->datasis->modbus($mSPRV); $link2 = site_url('inventario/common/get_linea'); $link3 = site_url('inventario/common/get_grupo'); $script = ' $(document).ready(function(){ $("#depto").change(function(){ depto(); $.post("' . $link2 . '",{ depto:$(this).val() },function(data){$("#linea").html(data);}) $.post("' . $link3 . '",{ linea:"" },function(data){$("#grupo").html(data);}) }); $("#linea").change(function(){ linea(); $.post("' . $link3 . '",{ linea:$(this).val() },function(data){$("#grupo").html(data);}) }); $("#grupo").change(function(){ grupo(); }); depto(); linea(); grupo(); }); function depto(){ if($("#depto").val()!=""){ $("#nom_depto").attr("disabled","disabled"); } else{ $("#nom_depto").attr("disabled",""); } } function linea(){ if($("#linea").val()!=""){ $("#nom_linea").attr("disabled","disabled"); } else{ $("#nom_linea").attr("disabled",""); } } function grupo(){ if($("#grupo").val()!=""){ $("#nom_grupo").attr("disabled","disabled"); } else{ $("#nom_grupo").attr("disabled",""); } }'; $filter = new DataFilter2("Filtro por Producto"); $filter->script($script); $filter->db->select('a.codigo'); $filter->db->select('a.descrip'); $filter->db->select('s.exmin'); $filter->db->select('s.id'); $filter->db->from('eventas as a'); $filter->db->join('grup AS b', 'a.grupo=b.grupo'); //$filter->db->join('line AS c' ,'c.linea=b.linea'); //$filter->db->join('dpto AS d' ,'c.depto=d.depto'); $filter->db->join('sinv AS s', 'a.codigo=s.codigo'); //$filter->db->where('s.activo','S'); $filter->db->where('s.tipo', 'Articulo'); $filter->db->groupby('a.descrip'); //Agregar proveedor y filtro de activo, columna de activo maximo=doble minu +1 predeterminado, guardar historial de cambios //Diferencias porcentual enete el minimo calculado y el minimo actual- $filter->fechad = new dateonlyField("Desde", "fechad", 'm/Y'); $filter->fechah = new dateonlyField("Hasta", "fechah", 'm/Y'); $filter->fechad->dbformat = 'Y-m-'; $filter->fechah->dbformat = 'Y-m-'; $filter->fechah->rule = "required"; $filter->fechad->rule = "required"; $filter->fechad->clause = $filter->fechah->clause = ''; $filter->fechad->insertValue = date("Y-m-d", mktime(0, 0, 0, date('m') - 12, date('j'), date('Y'))); $filter->fechah->insertValue = date("Y-m-d"); $filter->fechah->size = $filter->fechad->size = 9; $filter->depto = new dropdownField("Departamento", "depto"); $filter->depto->db_name = "a.depto"; $filter->depto->option("", "Seleccione un Departamento"); $filter->depto->options("SELECT depto, descrip FROM dpto WHERE tipo='I' ORDER BY depto"); $filter->linea2 = new dropdownField("Línea", "linea"); $filter->linea2->db_name = "a.linea"; $filter->linea2->option("", "Seleccione un Departamento primero"); $depto = $filter->getval('depto'); if ($depto !== FALSE) { $filter->linea2->options("SELECT linea, descrip FROM line WHERE depto='{$depto}' ORDER BY descrip"); } else { $filter->linea2->option("", "Seleccione un Departamento primero"); } $filter->grupo = new dropdownField("Grupo", "grupo"); $filter->grupo->db_name = 'a.grupo'; $filter->grupo->option("", "Seleccione una Línea primero"); $linea = $filter->getval('linea2'); if ($linea !== FALSE) { $filter->grupo->options("SELECT grupo, nom_grup FROM grup WHERE linea='{$linea}' ORDER BY nom_grup"); } else { $filter->grupo->option("", "Seleccione un Departamento primero"); } $filter->marca = new dropdownField("Marca", "marca"); $filter->marca->option('', 'Todas'); $filter->marca->options("SELECT TRIM(marca) AS clave, TRIM(marca) AS valor FROM marc ORDER BY marca"); $filter->marca->style = 'width:220px;'; $filter->estadistica = new dropdownField('Estadística a usar', 'estadistica'); $filter->estadistica->clause = ''; $filter->estadistica->rule = 'required'; $filter->estadistica->option('promediot', 'Promedio truncado'); $filter->estadistica->option('promedio', 'Promedio'); $filter->estadistica->option('mediana', 'Mediana'); $filter->estadistica->option('maximo', 'Valor Máximo'); $filter->estadistica->option('minimo', 'Valor Mínimo'); //$filter->estadistica->option('moda' ,'Moda'); $filter->estadistica->group = 'Configuración'; $filter->maximos = new dropdownField('Cálculo de máximos', 'maximos'); $filter->maximos->clause = ''; $filter->maximos->option('', 'No alterar'); $filter->maximos->option('max_dupli', 'Doble del mínimo'); $filter->maximos->group = 'Configuración'; $filter->frecuencia = new dropdownField('Frecuencia', 'frecuencia'); $filter->frecuencia->clause = ''; $filter->frecuencia->rule = 'required'; $filter->frecuencia->option('1', 'Mensual'); $filter->frecuencia->option('2', 'BiMenusal'); $filter->frecuencia->option('4', 'Semanal'); $filter->frecuencia->option('8', 'BiSemanal'); $filter->frecuencia->group = 'Configuración'; $filter->buttons('reset', 'search'); if ($this->rapyd->uri->is_set('search')) { $filter->submit('btn_cambio_2', 'Actualizar todos', "BR"); } $filter->build(); $uri = 'inventario/sinv/dataedit/show/<#codigo#>'; $tabla = ''; if ($filter->is_valid()) { $estadistica = $filter->estadistica->newValue; $maximos = $filter->maximos->newValue; $frecuencia = $filter->frecuencia->newValue; $udia = days_in_month(substr($filter->fechah->newValue, 4), substr($filter->fechah->newValue, 0, 4)); $fechad = $filter->fechad->newValue . '01'; $fechah = $filter->fechah->newValue . $udia; $filter->db->where('a.fecha >=', $fechad); $filter->db->where('a.fecha <=', $fechah); $datetime1 = new DateTime($fechad); $datetime2 = new DateTime($fechah); $interval = $datetime1->diff($datetime2); $ffechad = explode('-', $fechad); $grid = new DataGrid('Lista de Artículos'); $grid->order_by('codigo', 'asc'); $grid->use_function('divisor', $estadistica); $grid->per_page = 15; $grid->column('Código', 'codigo'); $grid->column('Descripción', 'descrip'); $columncal = $ccolumncal = array(); for ($i = 0; $i <= $interval->m + 1; $i++) { $mk = mktime(0, 0, 0, $ffechad[1] + $i, 1, $ffechad[0]); $udia = days_in_month(date('m', $mk), date('Y', $mk)); $sqdesde = date("Y-m-d", $mk); $sqhasta = date("Y-m-", $mk) . $udia; $etiq = date("m/Y", $mk); $select = "SUM(cana*(fecha BETWEEN '{$sqdesde}' AND '{$sqhasta}')) AS '{$etiq}'"; $filter->db->select($select); $grid->column($etiq, "<nformat><#{$etiq}#></nformat>", 'align=right'); $columncal[] = "<#{$etiq}#>"; $ccolumncal[] = $etiq; } $grid->column('Promedio', '<b style="color:red"><nformat><divisor><' . $estadistica . '>' . implode('|', $columncal) . '</' . $estadistica . '>|' . $frecuencia . '</divisor></nformat></b>', 'align=right'); $grid->column('Mínimo', '<nformat><#exmin#></nformat>', 'align=right'); $grid->column(' ', '<a href="javascript:actumin(\'<#id#>\',\'<divisor><' . $estadistica . '>' . implode('|', $columncal) . '</' . $estadistica . '>|' . $frecuencia . '</divisor>\')" >Actualizar</a>', 'align=right'); if ($_cambiomin) { //echo 'Cambios de todos'; unset($_POST['btn_cambio_2']); $_POST['btn_submit'] = 'a'; $sql = $filter->db->_compile_select(); $query = $this->db->query($sql); if ($query->num_rows() > 0) { foreach ($query->result() as $row) { $param = array(); foreach ($ccolumncal as $obj) { $param[] = $row->{$obj}; } $min = ceil($estadistica($param) / $frecuencia); $where = 'codigo =' . $this->db->escape($row->codigo); $data = array('exmin' => $min); if (!empty($maximos)) { $data['exmax'] = $maximos($min); } $sSQL = $this->db->update_string('sinv', $data, $where); $this->db->simple_query($sSQL); } } } $grid->build(); $tabla = $grid->output; } $url = site_url('inventario/comparativo/actumin/') . '/'; $data['script'] = '<script language="javascript" type="text/javascript"> function actumin(id,val){ vval = prompt("Actualizar minimo a:",val); if(vval) $.get("' . $url . '"+id+"/"+vval, function(data) { alert(data); }); } </script>'; $data['content'] = $filter->output . $tabla; $data['title'] = header('Comparativo de Mínimos de Inventario'); $data['head'] = script('jquery.pack.js') . script("plugins/jquery.numeric.pack.js") . script("plugins/jquery.floatnumber.js") . script("sinvmaes2.js") . $this->rapyd->get_head(); $this->load->view('view_ventanas', $data); }