function dataedit($cliente = '', $status = '', $id = '') { $this->datasis->modulo_id(143, 1); if (!$this->_exitescli($cliente)) { redirect($this->url . 'filterscli'); } $this->db->select_sum('a.monto*IF(tipo_doc IN ("FC","ND","GI"),1,-1)', 'saldo'); $this->db->from('smov AS a'); $this->db->where('a.cod_cli', $cliente); $q = $this->db->get(); $row = $q->row_array(); $saldo = empty($row['saldo']) ? 0 : $row['saldo']; $this->rapyd->load('dataobject', 'datadetails'); $this->load->helper('form'); $vd = $this->secu->getvendedor(); $dbvd = $this->db->escape($vd); $do = new DataObject('pfac'); $do->rel_one_to_many('itpfac', 'itpfac', array('numero' => 'numa')); $do->pointer('scli', 'scli.cliente=pfac.cod_cli', 'scli.tipo AS sclitipo', 'left'); $do->rel_pointer('itpfac', 'sinv', 'itpfac.codigoa=sinv.codigo', ' sinv.iva AS sinviva, sinv.existen AS pexisten, sinv.marca AS pmarca, sinv.descrip AS pdesca, sinv.peso AS ppeso'); $do->order_by('itpfac', 'sinv.marca', ' '); $do->order_by('itpfac', 'sinv.descrip', ' '); $edit = new DataDetails('Pedidos', $do); $edit->back_url = site_url('ventas/pfaclite/filteredgrid'); $edit->set_rel_title('itpfac', 'Producto <#o#>'); $edit->pre_process('insert', '_pre_insert'); $edit->pre_process('update', '_pre_update'); $edit->pre_process('delete', '_pre_delete'); $edit->post_process('insert', '_post_insert'); $edit->post_process('update', '_post_update'); $edit->post_process('delete', '_post_delete'); $fenvia = strtotime($edit->get_from_dataobjetct('fenvia')); $faplica = strtotime($edit->get_from_dataobjetct('faplica')); $hoy = strtotime(date('Y-m-d')); $edit->fecha = new inputField('Fecha', 'fecha'); $edit->fecha->insertValue = date('Y-m-d'); $edit->fecha->mode = 'autohide'; $edit->fecha->size = 10; $edit->mmargen = new inputField('mmargen', 'mmargen'); $edit->numero = new inputField('Número', 'numero'); $edit->numero->size = 10; $edit->numero->mode = 'autohide'; $edit->numero->maxlength = 8; $edit->numero->apply_rules = false; //necesario cuando el campo es clave y no se pide al usuario $edit->numero->when = array('show', 'modify'); $edit->cliente = new hiddenField('Cliente', 'cod_cli'); $edit->cliente->insertValue = $cliente; $edit->cliente->rule = 'required'; $dbcliente = $this->db->escape($cliente); $nombre = $this->datasis->dameval("SELECT nombre FROM scli WHERE cliente={$dbcliente}"); $edit->nombre = new freeField('Nombre', 'nombre', $nombre); $edit->observa = new inputField('Observaciones', 'observa'); $edit->observa->size = 40; // Campos para el detalle $edit->codigoa = new inputField('Código <#o#>', 'codigoa_<#i#>'); $edit->codigoa->size = 12; $edit->codigoa->db_name = 'codigoa'; $edit->codigoa->rel_id = 'itpfac'; $edit->codigoa->rule = 'callback_chcodigoa'; $edit->codigoa->type = 'inputhidden'; $edit->pdesca = new inputField('Descripción <#o#>', 'pdesca_<#i#>'); $edit->pdesca->size = 32; $edit->pdesca->db_name = 'desca'; $edit->pdesca->maxlength = 50; $edit->pdesca->readonly = true; $edit->pdesca->rel_id = 'itpfac'; $edit->pdesca->type = 'inputhidden'; $edit->pdesca->pointer = true; $edit->itdesca = new hiddenField('descrip', 'itdesca_<#i#>'); $edit->itdesca->insertValue = ''; $edit->itdesca->db_name = 'desca'; $edit->itdesca->rel_id = 'itpfac'; $edit->pexisten = new inputField('Existencia <#o#>', 'pexisten_<#i#>'); $edit->pexisten->size = 10; $edit->pexisten->db_name = 'pexisten'; $edit->pexisten->rel_id = 'itpfac'; $edit->pexisten->type = 'inputhidden'; $edit->pexisten->pointer = true; $edit->cana = new inputField('Cantidad <#o#>', 'cana_<#i#>'); $edit->cana->db_name = 'cana'; $edit->cana->css_class = 'inputnum'; $edit->cana->rel_id = 'itpfac'; $edit->cana->maxlength = 10; $edit->cana->size = 4; $edit->cana->rule = 'positive|callback_chcana[<#i#>]'; $edit->cana->autocomplete = false; $edit->cana->onkeyup = 'total(\'<#i#>\')'; $edit->cana->style = "height: 30px; font-size: 18px;"; $edit->preca = new dropdownField('Precio <#o#>', 'preca_<#i#>'); $edit->preca->db_name = 'preca'; $edit->preca->css_class = 'inputnum'; $edit->preca->rel_id = 'itpfac'; $edit->preca->rule = 'positive|callback_chpreca[<#i#>]'; $edit->itiva = new hiddenField('', 'itiva_<#i#>'); $edit->itiva->db_name = 'iva'; $edit->itiva->rel_id = 'itpfac'; $edit->pmarca = new inputField('', 'pmarca_<#i#>'); $edit->pmarca->db_name = 'pmarca'; $edit->pmarca->rel_id = 'itpfac'; $edit->pmarca->pointer = true; // fin de campos para detalle $edit->totalg = new hiddenField('Monto Total', 'totalg'); $edit->totalg->css_class = 'inputnum'; $edit->totalg->readonly = true; $edit->totalg->size = 10; $edit->iva = new hiddenField('Impuesto', 'iva'); $edit->iva->css_class = 'inputnum'; $edit->iva->readonly = true; $edit->iva->size = 10; $edit->usuario = new autoUpdateField('usuario', $this->session->userdata('usuario'), $this->session->userdata('usuario')); $edit->estampa = new autoUpdateField('estampa', date('Ymd'), date('Ymd')); $edit->hora = new autoUpdateField('hora', date('H:i:s'), date('H:i:s')); $control = $this->rapyd->uri->get_edited_id(); if ($edit->getstatus() == 'show') { $action = "javascript:window.location='" . site_url($this->url . 'filterscli') . "'"; $edit->button('btn_add', 'Incluir nuevo pedido', $action, 'TR'); } $iusr = $edit->get_from_dataobjetct('usuario'); if ($fenvia < $hoy && $iusr == $this->secu->usuario()) { $edit->buttons('modify', 'save', 'delete', 'undo', 'back', 'add_rel'); $PFACRESERVA = $this->datasis->traevalor('PFACRESERVA', 'indica si un pedido descuenta de inventario los producto'); if ($PFACRESERVA == 'S') { $accion = "javascript:window.location='" . site_url('ventas/pfaclite/reserva/' . $control) . "/pfaclite'"; $edit->button_status('btn_envia', 'Enviar Pedido', $accion, 'TR', 'show'); } } else { $edit->buttons('save', 'undo', 'back', 'add_rel'); } //$edit->button_status('btn_load','Subir desde Excel',$accion,'TL','show'); //$edit->button_status('btn_load','Subir desde Excel',$accion,'TL','create'); //$edit->button_status('btn_load','Subir desde Excel',$accion,'TL','modify'); $alma = $this->secu->getalmacen(); $dbalma = $this->db->escape($alma); $tiposcli = $this->datasis->dameval("SELECT tipo FROM scli WHERE cliente={$dbcliente}"); if ($tiposcli < 1) { $tiposcli = 1; } elseif ($tiposcli > 4) { $tiposcli = 4; } $sel = array('TRIM(a.codigo) AS codigo', 'a.descrip', 'a.precio1', 'a.precio2', 'a.precio3', 'a.precio4', 'a.exdes', 'a.marca', 'b.existen', 'a.iva', 'a.peso'); $this->db->from('sinv AS a'); $this->db->where('a.activo', 'S'); $this->db->where('a.tipo', 'Articulo'); $this->db->group_by('a.codigo'); $this->db->order_by('a.marca , a.descrip , a.peso'); $this->db->limit($this->limit); $act_meta = false; if ($status == 'create' || $status == 'insert') { $this->db->join('itsinv AS b', 'a.codigo=b.codigo AND b.alma=' . $dbalma); $this->db->where('b.existen > 0'); if ($this->db->table_exists('metas')) { $pmargen = $this->datasis->dameval('SELECT pmargen FROM vend WHERE vendedor=' . $dbvd); if (empty($pmargen)) { $pmargen = 0; } else { $pmargen = $pmargen / 100; } $mmes = date('Ym'); $uday = days_in_month(substr($mmes, 4), substr($mmes, 0, 4)); $this->db->join('metas AS c', 'a.codigo=c.codigo AND c.fecha=' . $mmes, 'left'); $this->db->join('sitems AS d', 'd.codigoa=c.codigo AND vendedor=' . $dbvd . ' AND d.fecha BETWEEN ' . $mmes . '01 AND ' . $mmes . $uday, 'left'); $sel[] = "COALESCE(c.cantidad,0)*{$pmargen} AS meta"; $sel[] = 'COALESCE(SUM(d.cana*IF(tipoa=\'D\',-1,1)),0) AS vendido'; $act_meta = true; } } elseif ($status == 'show') { $this->db->join('itsinv AS b', 'a.codigo=b.codigo'); } else { $this->db->where('b.existen > 0'); $this->db->join('itsinv AS b', 'a.codigo=b.codigo AND b.alma=' . $dbalma); } $this->db->select($sel); $sinv = $this->db->get(); $sinv = $sinv->result_array(); $sinv_arr = array(); foreach ($sinv as $k => $v) { $sinv_arr[$v['codigo']] = array('descrip' => $v['descrip'], 'precio1' => $v['precio1'] * 100 / (100 + $v['iva']), 'precio2' => $v['precio2'] * 100 / (100 + $v['iva']), 'precio3' => $v['precio3'] * 100 / (100 + $v['iva']), 'precio4' => $v['precio4'] * 100 / (100 + $v['iva']), 'marca' => $v['marca'], 'existen' => $v['existen'], 'iva' => $v['iva'], 'peso' => $v['peso'], 'codigo' => $v['codigo'], 'exdes' => $v['exdes']); if ($act_meta) { $sinv_arr[$v['codigo']]['meta'] = $v['meta']; $sinv_arr[$v['codigo']]['vendido'] = $v['vendido']; } } $pedido = array(); if ($status == 'create' || $status == 'insert' || $status == 'modify' || $status == 'update') { $vds = array(); $mmSQL = "SELECT TRIM(vendedor) AS vd FROM usuario WHERE almacen={$dbalma}"; $qquery = $this->db->query($mmSQL); foreach ($qquery->result() as $rrow) { $vds[] = $this->db->escape($rrow->vd); } $vds = implode(',', $vds); $mmSQL = "SELECT TRIM(a.codigoa) AS codigo,SUM(a.cana) AS cana\n\t\t\t\tFROM itpfac AS a\n\t\t\t\tJOIN pfac AS b ON b.numero=a.numa\n\t\t\tWHERE b.status='P' AND b.vd IN ({$vds})\n\t\t\tGROUP BY a.codigoa"; $qquery = $this->db->query($mmSQL); foreach ($qquery->result() as $rrow) { $pedido[$rrow->codigo] = $rrow->cana; } } if ($edit->getstatus() == 'update') { $pfacnum = $edit->get_from_dataobjetct('numero'); $dbpfacnum = $this->db->escape($pfacnum); $mmSQL = "SELECT TRIM(a.codigoa) AS codigo,SUM(a.cana) AS cana\n\t\t\t\tFROM itpfac AS a\n\t\t\tWHERE a.numa={$dbpfacnum}\n\t\t\tGROUP BY a.codigoa"; $qquery = $this->db->query($mmSQL); foreach ($qquery->result() as $rrow) { $lleva[$rrow->codigo] = floatval($rrow->cana); } } else { $lleva = array(); } if ($this->genesal) { $edit->build(); $conten['lleva'] = $lleva; $conten['status'] = $status; $conten['pedido'] = $pedido; $conten['saldo'] = $saldo; $conten['act_meta'] = $act_meta; $conten['tiposcli'] = $tiposcli; $conten['form'] =& $edit; $conten['sinv'] = $sinv_arr; $data['content'] = $this->load->view('view_pfaclite', $conten, true); $data['head'] = style('mayor/estilo.css'); //$data['title'] = heading('Pedidos No. '.$edit->numero->value); $data['title'] = heading('Pedidos ligeros'); $this->load->view('view_ventanas_lite', $data); } else { $edit->on_save_redirect = false; $edit->build(); if ($edit->on_success()) { $numero = $edit->_dataobject->get('numero'); $rt = 'Pedido del cliente ' . $edit->cliente->value . ' - ' . $edit->nombre->value . ' ha sido guardado bajo el número ' . $numero . '.'; } elseif ($edit->on_error()) { $rt = html_entity_decode(preg_replace('/<[^>]*>/', '', $edit->error_string)); } else { $rt = ''; } return $rt; } }