Example #1
0
 function dataedit()
 {
     $this->rapyd->load('dataobject', 'datadetails');
     $tipo_rete = $this->datasis->traevalor('CONTRIBUYENTE');
     $rif = $this->datasis->traevalor('RIF');
     $fields = $this->db->field_data('gser');
     $url_pk = $this->uri->segment_array();
     $coun = 0;
     $pk = array();
     foreach ($fields as $field) {
         if ($field->primary_key == 1) {
             $coun++;
             $pk[] = $field->name;
         }
     }
     $values = array_slice($url_pk, -$coun);
     $claves = array_combine(array_reverse($pk), $values);
     $query = "UPDATE gitser AS a\n\t\t\tJOIN gser AS b on a.numero=b.numero and a.fecha = b.fecha and a.proveed = b.proveed\n\t\t\tSET a.idgser=b.id\n\t\t\tWHERE a.id=" . $claves['id'] . " ";
     $this->db->simple_query($query);
     $mSPRV = array('tabla' => 'sprv', 'columnas' => array('proveed' => 'Coodigo', 'nombre' => 'Nombre', 'rif' => 'Rif'), 'filtro' => array('proveed' => 'Codigo', 'nombre' => 'Nombre'), 'retornar' => array('proveed' => 'proveed', 'nombre' => 'nombre', 'tipo' => 'sprvtipo', 'reteiva' => 'sprvreteiva'), 'script' => array('post_sprv_modbus()'), 'titulo' => 'Buscar Proveedor');
     $bSPRV = $this->datasis->modbus($mSPRV);
     $do = new DataObject('gser');
     $do->pointer('sprv', 'sprv.proveed=gser.proveed', 'sprv.tipo AS sprvtipo, sprv.reteiva AS sprvreteiva', 'left');
     $do->rel_one_to_many('gitser', 'gitser', array('id' => 'idgser'));
     $do->rel_one_to_many('gereten', 'gereten', array('id' => 'idd'));
     $do->where_rel_one_to_many('gereten', array('gereten.origen', 'GSER'));
     //$do->rel_pointer('rete','rete','gereten.codigorete=rete.codigo','rete.pama1 AS retepama1');
     $edit = new DataDetails('Gastos', $do);
     if ($edit->_status == 'show') {
         $edit->back_url = site_url('finanzas/gser/filteredgrid');
     } else {
         $edit->back_url = site_url('finanzas/gser/agregar');
     }
     $edit->set_rel_title('gitser', 'Gasto <#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');
     $edit->tipo_doc = new dropdownField('Documento', 'tipo_doc');
     $edit->tipo_doc->style = 'width:80px';
     $edit->tipo_doc->option('FC', 'Factura');
     $edit->tipo_doc->option('ND', 'N. Debito');
     if ($edit->_status == 'show') {
         $edit->tipo_doc->option('XX', 'Anulado');
         $edit->tipo_doc->option('AD', 'Amortizacion');
         $edit->tipo_doc->option('GA', 'Gasto de Nomina');
     }
     $edit->ffactura = new DateonlyField('Fecha', 'ffactura', 'd/m/Y');
     $edit->ffactura->insertValue = date('Y-m-d');
     $edit->ffactura->size = 12;
     $edit->ffactura->rule = 'required';
     $edit->ffactura->calendar = false;
     $edit->fecha = new DateonlyField('Registro', 'fecha');
     $edit->fecha->insertValue = date('Y-m-d');
     $edit->fecha->size = 12;
     $edit->fecha->rule = 'required';
     $edit->fecha->calendar = false;
     $edit->vence = new DateonlyField('Vence', 'vence', 'd/m/Y');
     $edit->vence->insertValue = date('Y-m-d');
     $edit->vence->size = 12;
     $edit->vence->calendar = false;
     $edit->compra = new inputField('Doc.Asociado', 'compra');
     $edit->compra->rule = 'max_length[8]';
     $edit->compra->size = 10;
     $edit->compra->maxlength = 8;
     $edit->afecta = new inputField('Doc.Afectado', 'afecta');
     $edit->afecta->rule = '';
     $edit->afecta->size = 10;
     $edit->numero = new inputField('Documento Nro.', 'serie');
     $edit->numero->size = 10;
     $edit->numero->maxlength = 12;
     $edit->numero->autocomplete = false;
     $edit->numero->rule = 'condi_required|callback_chnumero|callback_chdupli';
     $edit->proveed = new inputField('Proveedor', 'proveed');
     $edit->proveed->size = 6;
     $edit->proveed->append($bSPRV);
     $edit->proveed->rule = 'existesprv|required';
     $edit->tercero = new inputField('Facturado a nombre de Tercero', 'tercero');
     $edit->tercero->size = 6;
     //$edit->tercero->append($bSPRV);
     $edit->tercero->rule = '';
     $edit->reteter = new inputField('Ret IVA Bs', 'reteter');
     $edit->reteter->rule = 'numeric|positive';
     $edit->reteter->size = 10;
     $edit->reteter->maxlength = 10;
     $edit->reteter->css_class = 'inputnum';
     $edit->reteter->showformat = 'decimal';
     $edit->reteter->autocomplete = false;
     $edit->nfiscal = new inputField('Control Fiscal', 'nfiscal');
     $edit->nfiscal->size = 10;
     $edit->nfiscal->autocomplete = false;
     $edit->nfiscal->maxlength = 20;
     $edit->nombre = new inputField('Nombre', 'nombre');
     $edit->nombre->size = 30;
     $edit->nombre->maxlength = 40;
     $edit->nombre->type = 'inputhidden';
     $edit->nombre->rule = 'required';
     $edit->sprvtipo = new hiddenField('', 'sprvtipo');
     $edit->sprvtipo->db_name = 'sclitipo';
     $edit->sprvtipo->pointer = true;
     $edit->sprvreteiva = new hiddenField('', 'sprvreteiva');
     $edit->sprvreteiva->db_name = 'sprvreteiva';
     $edit->sprvreteiva->insertValue = $tipo_rete == 'ESPECIAL' && strtoupper($rif[0]) != 'V' ? '75' : '0';
     $edit->sprvreteiva->pointer = true;
     $edit->totpre = new inputField('Sub.Total', 'totpre');
     $edit->totpre->size = 10;
     $edit->totpre->css_class = 'inputnum';
     $edit->totpre->readonly = true;
     $edit->totpre->showformat = 'decimal';
     $edit->totpre->type = 'inputhidden';
     $edit->totbruto = new inputField('Total', 'totbruto');
     $edit->totbruto->size = 10;
     $edit->totbruto->css_class = 'inputnum';
     $edit->totbruto->showformat = 'decimal';
     $edit->totbruto->type = 'inputhidden';
     $edit->totiva = new inputField('Total IVA', 'totiva');
     $edit->totiva->css_class = 'inputnum';
     $edit->totiva->size = 10;
     $edit->totiva->showformat = 'decimal';
     $edit->totiva->type = 'inputhidden';
     $edit->reteica = new inputField('Ret. ICA', 'reteica');
     $edit->reteica->css_class = 'inputnum';
     $edit->reteica->when = array('show');
     $edit->reteica->size = 10;
     $edit->reteica->showformat = 'decimal';
     $edit->retesimple = new inputField('Ret', 'retesimple');
     $edit->retesimple->css_class = 'inputnum';
     $edit->retesimple->when = array('show');
     $edit->retesimple->size = 10;
     $edit->retesimple->showformat = 'decimal';
     $edit->codb1 = new dropdownField('Caja/Banco', 'codb1');
     $edit->codb1->option('', 'Ninguno');
     $edit->codb1->options("SELECT TRIM(codbanc) AS ind, CONCAT_WS('-',codbanc,banco) AS label FROM banc WHERE activo='S' AND codbanc<>'00' ORDER BY codbanc");
     $edit->codb1->rule = 'max_length[5]|callback_chcodb|condi_required';
     $edit->codb1->style = 'width:120px';
     $edit->codb1->onchange = "esbancaja(this.value)";
     $edit->fondo = new dropdownField('Fondo', 'fondo');
     $edit->fondo->option('', 'Ninguno');
     $edit->fondo->options("SELECT TRIM(codbanc) AS ind, CONCAT_WS('-',codbanc,banco) AS label FROM banc WHERE activo='S' AND codbanc<>'00' AND tbanco='FO' ORDER BY codbanc");
     $edit->fondo->style = 'width:160px';
     $edit->tipo1 = new dropdownField('Tipo', 'tipo1');
     $edit->tipo1->option('', 'Ninguno');
     $edit->tipo1->option('C', 'Cheque');
     $edit->tipo1->option('D', 'N.Debito');
     $edit->tipo1->rule = 'condi_required|callback_chtipoe';
     $edit->tipo1->style = 'width:70px';
     $edit->cheque1 = new inputField('N&uacute;mero', 'cheque1');
     $edit->cheque1->rule = 'condi_required|callback_chobliganumerog';
     $edit->cheque1->size = 12;
     $edit->cheque1->maxlength = 20;
     $edit->benefi = new inputField('Beneficiario', 'benefi');
     $edit->benefi->size = 39;
     $edit->benefi->maxlength = 40;
     $edit->monto1 = new inputField('Contado', 'monto1');
     $edit->monto1->rule = 'numeric|positive';
     $edit->monto1->size = 10;
     $edit->monto1->css_class = 'inputnum';
     $edit->monto1->onkeyup = 'contado()';
     $edit->monto1->rule = 'condi_required|callback_chmontocontado|positive';
     $edit->monto1->autocomplete = false;
     $edit->monto1->showformat = 'decimal';
     $edit->credito = new inputField('Monto a Cr&eacute;dito', 'credito');
     $edit->credito->rule = 'numeric|positive';
     $edit->credito->size = 10;
     $edit->credito->showformat = 'decimal';
     $edit->credito->css_class = 'inputnum';
     $edit->credito->onkeyup = 'ccredito()';
     $edit->credito->autocomplete = false;
     //$edit->credito->readonly=true;
     $edit->reten = new inputField('Ret. ISLR', 'reten');
     $edit->reten->rule = 'numeric|positive';
     $edit->reten->size = 10;
     $edit->reten->maxlength = 10;
     $edit->reten->css_class = 'inputnum';
     //$edit->reten->when=array('show');
     $edit->reten->showformat = 'decimal';
     $edit->reten->type = 'inputhidden';
     $edit->reteiva = new inputField('Ret de IVA', 'reteiva');
     $edit->reteiva->rule = 'numeric|positive';
     $edit->reteiva->size = 10;
     $edit->reteiva->maxlength = 10;
     $edit->reteiva->rule = 'callback_chreteiva';
     $edit->reteiva->onchange = 'totalizar()';
     $edit->reteiva->css_class = 'inputnum';
     $edit->reteiva->showformat = 'decimal';
     $edit->reteiva->autocomplete = false;
     //$edit->reteiva->onkeyup="reteiva()";
     $edit->cnd = new checkboxField('IVA Deducible', 'cnd', 'S', 'N');
     $edit->cnd->insertValue = 'S';
     $edit->reteica = new inputField('Ret. ICA', 'reteica');
     $edit->reteica->size = 10;
     $edit->reteica->maxlength = 10;
     //$edit->reteica->rule = 'callback_chreteiva';
     $edit->reteica->css_class = 'inputnum';
     $edit->reteica->when = array('show');
     $edit->totneto = new inputField('Monto Neto', 'totneto');
     $edit->totneto->rule = 'numeric|positive';
     $edit->totneto->size = 10;
     $edit->totneto->maxlength = 10;
     $edit->totneto->css_class = 'inputnum';
     $edit->totneto->readonly = true;
     $edit->totneto->showformat = 'decimal';
     //$edit->totneto->type='inputhidden';
     $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'));
     //**************************************************************
     //   Campos para el detalle 1
     //
     $edit->codigo = new inputField('Codigo <#o#>', 'codigo_<#i#>');
     $edit->codigo->size = 7;
     $edit->codigo->db_name = 'codigo';
     //$edit->codigo->append($btn);
     $edit->codigo->rule = 'required|existemgas';
     $edit->codigo->rel_id = 'gitser';
     $edit->descrip = new inputField('Descripcion <#o#>', 'descrip_<#i#>');
     $edit->descrip->size = 40;
     $edit->descrip->db_name = 'descrip';
     $edit->descrip->maxlength = 50;
     $edit->descrip->rel_id = 'gitser';
     $edit->precio = new inputField('Precio <#o#>', 'precio_<#i#>');
     $edit->precio->db_name = 'precio';
     $edit->precio->css_class = 'inputnum';
     $edit->precio->size = 10;
     $edit->precio->rule = 'required|positive';
     $edit->precio->rel_id = 'gitser';
     $edit->precio->autocomplete = false;
     $edit->precio->onkeyup = 'importe(<#i#>)';
     $edit->precio->showformat = 'decimal';
     $ivas = $this->datasis->ivaplica();
     $edit->tasaiva = new dropdownField('IVA <#o#>', 'tasaiva_<#i#>');
     $edit->tasaiva->option($ivas['tasa'], $ivas['tasa'] . '%');
     $edit->tasaiva->option($ivas['redutasa'], $ivas['redutasa'] . '%');
     $edit->tasaiva->option($ivas['sobretasa'], $ivas['sobretasa'] . '%');
     $edit->tasaiva->option('0', '0.00%');
     $edit->tasaiva->db_name = 'tasaiva';
     $edit->tasaiva->rule = 'positive';
     $edit->tasaiva->style = "30px";
     $edit->tasaiva->rel_id = 'gitser';
     $edit->tasaiva->onchange = 'importe(<#i#>)';
     $edit->iva = new inputField('importe <#o#>', 'iva_<#i#>');
     $edit->iva->db_name = 'iva';
     $edit->iva->css_class = 'inputnum';
     $edit->iva->rel_id = 'gitser';
     $edit->iva->size = 8;
     $edit->iva->rule = 'positive|callback_chretiva';
     $edit->iva->onkeyup = 'valida(<#i#>)';
     $edit->iva->showformat = 'decimal';
     $edit->iva->type = 'inputhidden';
     $edit->importe = new inputField('importe <#o#>', 'importe_<#i#>');
     $edit->importe->db_name = 'importe';
     $edit->importe->css_class = 'inputnum';
     $edit->importe->rel_id = 'gitser';
     $edit->importe->size = 10;
     $edit->importe->onkeyup = 'valida(<#i#>)';
     $edit->importe->showformat = 'decimal';
     $edit->importe->type = 'inputhidden';
     $edit->departa = new dropdownField('Departamento <#o#>', 'departa_<#i#>');
     $edit->departa->option('', 'Seleccionar');
     $edit->departa->options("SELECT TRIM(depto) AS codigo, CONCAT_WS('-',depto,TRIM(descrip)) AS label FROM dpto WHERE tipo IN ('G','A') ORDER BY depto");
     $edit->departa->db_name = 'departa';
     $edit->departa->rule = 'required';
     $edit->departa->style = 'width:70px';
     $edit->departa->rel_id = 'gitser';
     $edit->departa->onchange = "gdeparta(this.value)";
     $edit->sucursal = new dropdownField('Sucursal <#o#>', 'sucursal_<#i#>');
     $edit->sucursal->options("SELECT codigo,codigo AS sucursal FROM sucu ORDER BY codigo");
     $edit->sucursal->db_name = 'sucursal';
     $edit->sucursal->rule = 'required';
     $edit->sucursal->style = 'width:40px';
     $edit->sucursal->title = 'Sucursal';
     $edit->sucursal->rel_id = 'gitser';
     $edit->sucursal->onchange = "gsucursal(this.value)";
     $edit->cargo = new dropdownField('Cargo <#o#>', 'cargo_<#i#>');
     $edit->cargo->option('', 'Seleccionar');
     $edit->cargo->options("SELECT id, CONCAT(codigo,' ',nombre) nombre FROM usol WHERE activo='S' ORDER BY codigo");
     $edit->cargo->db_name = 'gcargo';
     $edit->cargo->style = 'width:50px';
     $edit->cargo->title = 'Cargo';
     $edit->cargo->rel_id = 'gitser';
     $edit->cargo->onchange = "gcargo(this.value)";
     //================= Fin de campos para detalle =================
     //**************************************************************
     //   Campos para el detalle reten
     //
     $edit->itorigen = new autoUpdateField('origen', 'GSER', 'GSER');
     $edit->itorigen->rel_id = 'gereten';
     $edit->codigorete = new dropdownField('', 'codigorete_<#i#>');
     $edit->codigorete->option('', 'Seleccionar');
     $edit->codigorete->options('SELECT TRIM(codigo) AS codigo,TRIM(CONCAT_WS("-",tipo,codigo,activida)) AS activida FROM rete ORDER BY tipo,codigo');
     $edit->codigorete->db_name = 'codigorete';
     $edit->codigorete->rule = 'max_length[4]';
     $edit->codigorete->style = 'width: 300px';
     $edit->codigorete->rel_id = 'gereten';
     $edit->codigorete->onchange = 'post_codigoreteselec(<#i#>,this.value)';
     $edit->base = new inputField('base', 'base_<#i#>');
     $edit->base->db_name = 'base';
     $edit->base->rule = 'max_length[10]|numeric|positive';
     $edit->base->css_class = 'inputnum';
     $edit->base->size = 12;
     $edit->base->autocomplete = false;
     $edit->base->rel_id = 'gereten';
     $edit->base->maxlength = 10;
     $edit->base->onkeyup = 'importerete(<#i#>)';
     $edit->base->showformat = 'decimal';
     $edit->porcen = new inputField('porcen', 'porcen_<#i#>');
     $edit->porcen->db_name = 'porcen';
     $edit->porcen->rule = 'max_length[5]|numeric|positive';
     $edit->porcen->css_class = 'inputnum';
     $edit->porcen->size = 7;
     $edit->porcen->rel_id = 'gereten';
     $edit->porcen->readonly = true;
     $edit->porcen->maxlength = 5;
     $edit->porcen->showformat = 'decimal';
     $edit->porcen->type = 'inputhidden';
     $edit->monto = new inputField('monto', 'monto_<#i#>');
     $edit->monto->db_name = 'monto';
     $edit->monto->rule = 'max_length[10]|numeric|positive';
     $edit->monto->css_class = 'inputnum';
     $edit->monto->rel_id = 'gereten';
     $edit->monto->size = 12;
     $edit->monto->readonly = true;
     $edit->monto->maxlength = 8;
     $edit->monto->showformat = 'decimal';
     $edit->monto->type = 'inputhidden';
     $edit->terceroi = new checkboxField('terceroi', 'terceroi_<#i#>', 'S', 'N');
     $edit->terceroi->insertValue = 'N';
     $edit->terceroi->rel_id = 'gereten';
     $edit->terceroi->db_name = 'tercero';
     //********************************
     // Fin de campos para detalle
     //
     $edit->buttons('add_rel');
     $edit->on_save_redirect = false;
     $edit->build();
     if ($edit->on_success()) {
         $rt = array('status' => 'A', 'mensaje' => 'Registro guardado', 'pk' => $edit->_dataobject->pk);
         echo json_encode($rt);
     } else {
         if ($this->genesal) {
             $conten['form'] =& $edit;
             $conten['solo'] = $this->solo;
             $data['content'] = $this->load->view('view_gser', $conten);
         } else {
             $rt = array('status' => 'B', 'mensaje' => html_entity_decode($edit->error_string), 'pk' => '');
             echo json_encode($rt);
         }
     }
 }
Example #2
0
 function dataedit()
 {
     $this->rapyd->load('dataobject', 'datadetails');
     $modbus = array('tabla' => 'sinv', 'columnas' => array('codigo' => 'C&oacute;digo', 'descrip' => 'Descripci&oacute;n'), 'filtro' => array('codigo' => 'C&oacute;digo', 'descrip' => 'Descripci&oacute;n'), 'retornar' => array('codigo' => 'codigo_<#i#>', 'descrip' => 'descrip_<#i#>', 'pond' => 'costo_<#i#>', 'iva' => 'iva_<#i#>', 'peso' => 'sinvpeso_<#i#>'), 'p_uri' => array(4 => '<#i#>'), 'script' => array('post_modbus_sinv(<#i#>)'), 'titulo' => 'Buscar Art&iacute;culo', 'where' => 'activo = "S"');
     $sprvbus = array('tabla' => 'sprv', 'columnas' => array('proveed' => 'C&oacute;digo Proveedor', 'nombre' => 'Nombre', 'rif' => 'RIF'), 'filtro' => array('proveed' => 'C&oacute;digo Proveedor', 'nombre' => 'Nombre'), 'retornar' => array('proveed' => 'proveed', 'nombre' => 'nombre'), 'script' => array('post_modbus_sprv()'), 'titulo' => 'Buscar Proveedor');
     $do = new DataObject('scst');
     $do->rel_one_to_many('itscst', 'itscst', 'control');
     $do->rel_one_to_many('gereten', 'gereten', array('id' => 'idd'));
     $do->rel_one_to_many('scstordc', 'scstordc', array('control' => 'compra'));
     $do->pointer('sprv', 'sprv.proveed=scst.proveed', 'sprv.nombre AS sprvnombre,sprv.reteiva AS sprvreteiva', 'left');
     $do->rel_pointer('itscst', 'sinv', 'itscst.codigo=sinv.codigo', 'sinv.descrip AS sinvdescrip, sinv.base1 AS sinvprecio1, sinv.base2 AS sinvprecio2, sinv.base3 AS sinvprecio3, sinv.base4 AS sinvprecio4, sinv.iva AS sinviva, sinv.peso AS sinvpeso,sinv.tipo AS sinvtipo');
     $do->where_rel_one_to_many('gereten', array('gereten.origen', 'SCST'));
     $edit = new DataDetails('Compras', $do);
     $edit->set_rel_title('itscst', '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');
     $edit->on_save_redirect = false;
     //$edit->back_url = $this->back_dataedit;
     $edit->fecha = new DateonlyField('Fecha', 'fecha');
     $edit->fecha->insertValue = date('Y-m-d');
     $edit->fecha->size = 10;
     $edit->fecha->rule = 'required|chfecha';
     $edit->fecha->calendar = false;
     //$transac=$edit->get_from_dataobjetct('transac');
     $edit->vence = new DateonlyField('Vence', 'vence');
     $edit->vence->insertValue = date('Y-m-d');
     $edit->vence->size = 10;
     $edit->vence->rule = 'required|chfecha';
     $edit->vence->calendar = false;
     $edit->actuali = new DateonlyField('Actualizado', 'actuali');
     //$edit->actuali->insertValue = date('Y-m-d');
     $edit->actuali->when = array('show');
     $edit->actuali->size = 10;
     $edit->actuali->mode = 'autohide';
     $edit->actuali->calendar = false;
     $edit->recep = new DateonlyField('recibido', 'recibido');
     //$edit->recep->insertValue = date('Y-m-d');
     $edit->recep->size = 10;
     $edit->recep->mode = 'autohide';
     $edit->recep->when = array('show');
     $edit->recep->calendar = false;
     $edit->serie = new inputField('N&uacute;mero', 'serie');
     $edit->serie->size = 15;
     $edit->serie->autocomplete = false;
     $edit->serie->rule = 'required|callback_chdupli';
     $edit->serie->mode = 'autohide';
     $edit->serie->maxlength = 20;
     $edit->fafecta = new inputField('Fact.Afectada', 'fafecta');
     $edit->fafecta->size = 15;
     $edit->fafecta->autocomplete = false;
     $edit->fafecta->rule = 'condi_required|callback_chproveeddev';
     $edit->fafecta->maxlength = 10;
     $edit->proveed = new inputField('Proveedor', 'proveed');
     $edit->proveed->size = 7;
     $edit->proveed->autocomplete = false;
     $edit->proveed->rule = 'required';
     $edit->proveed->append($this->datasis->modbus($sprvbus));
     $edit->nombre = new hiddenField('Nombre', 'nombre');
     $edit->nombre->size = 50;
     $edit->nombre->maxlength = 40;
     $edit->aplrete = new hiddenField('aplrete', 'aplrete');
     $edit->sprvreteiva = new hiddenField('', 'sprvreteiva');
     $edit->sprvreteiva->pointer = true;
     $contribu = $this->datasis->traevalor('CONTRIBUYENTE');
     $rif = $this->datasis->traevalor('RIF');
     if ($contribu == 'ESPECIAL' && strtoupper($rif[0]) != 'V') {
         $edit->sprvreteiva->insertValue = '75';
         $tipo_doc = $edit->get_from_dataobjetct('tipo_doc');
         if ($tipo_doc == 'NC') {
             $reteiva = floatval($edit->get_from_dataobjetct('reteiva'));
             if ($reteiva > 0) {
                 $edit->aplrete->insertValue = '1';
             } else {
                 $edit->aplrete->insertValue = '0';
             }
         } else {
             $edit->aplrete->insertValue = '1';
         }
     } else {
         $edit->aplrete->insertValue = '0';
     }
     $edit->cfis = new inputField('Nro.Fiscal', 'nfiscal');
     $edit->cfis->size = 15;
     $edit->cfis->autocomplete = false;
     //$edit->cfis->rule = 'required';
     $edit->cfis->maxlength = 12;
     $edit->almacen = new dropdownField('Almac&eacute;n', 'depo');
     $edit->almacen->options('SELECT ubica, CONCAT(ubica," ",ubides) nombre FROM caub WHERE gasto<>"S" AND invfis="N" ORDER BY ubica');
     $edit->almacen->rule = 'required';
     $edit->almacen->style = 'width:130px;';
     $edit->almacen->insertValue = trim($this->datasis->traevalor('ALMACEN'));
     $edit->tipo = new dropdownField('Tipo', 'tipo_doc');
     $edit->tipo->option('FC', 'Factura a Cr&eacute;dito');
     $edit->tipo->option('NC', 'Nota de Cr&eacute;dito');
     $edit->tipo->option('NE', 'Nota de Entrega');
     $edit->tipo->rule = 'required';
     $edit->tipo->style = 'width:130px;';
     $edit->tipo->onchange = 'chtipodoc()';
     $edit->peso = new hiddenField('Peso', 'peso');
     $edit->peso->size = 20;
     $edit->peso->css_class = 'inputnum';
     $edit->orden = new inputField('Orden', 'orden');
     $edit->orden->when = array('show');
     $edit->orden->size = 15;
     $edit->credito = new inputField('Cr&eacute;dito', 'credito');
     $edit->credito->size = 12;
     $edit->credito->css_class = 'inputnum';
     $edit->credito->when = array('show');
     $edit->montotot = new inputField('Subtotal', 'montotot');
     $edit->montotot->size = 12;
     $edit->montotot->autocomplete = false;
     $edit->montotot->css_class = 'inputnum';
     $edit->montoiva = new inputField('IVA', 'montoiva');
     $edit->montoiva->size = 12;
     $edit->montoiva->autocomplete = false;
     $edit->montoiva->css_class = 'inputnum';
     $edit->montonet = new hiddenField('Total', 'montonet');
     $edit->anticipo = new inputField('Anticipo', 'anticipo');
     $edit->anticipo->size = 12;
     $edit->anticipo->css_class = 'inputnum';
     $edit->anticipo->when = array('show');
     $edit->inicial = new inputField('Contado', 'inicial');
     $edit->inicial->size = 12;
     $edit->inicial->css_class = 'inputnum';
     $edit->inicial->when = array('show');
     $edit->rislr = new inputField('Retenci&oacute;n ISLR', 'reten');
     $edit->rislr->size = 12;
     $edit->rislr->css_class = 'inputnum';
     $edit->rislr->when = array('show');
     $edit->riva = new inputField('Retenci&oacute;n IVA', 'reteiva');
     $edit->riva->size = 11;
     $edit->riva->css_class = 'inputnum';
     $edit->mdolar = new inputField('Monto US $', 'mdolar');
     $edit->mdolar->size = 12;
     $edit->mdolar->css_class = 'inputnum';
     $edit->mdolar->when = array('show');
     $edit->observa1 = new textareaField('Observaci&oacute;n', 'observa1');
     $edit->observa1->cols = 50;
     $edit->observa1->rows = 2;
     $edit->observa2 = new textareaField('Observaci&oacute;n', 'observa2');
     $edit->observa2->when = array('show');
     $edit->observa2->rows = 3;
     $edit->observa3 = new textareaField('Observaci&oacute;n', 'observa3');
     $edit->observa3->when = array('show');
     $edit->observa3->rows = 3;
     //****************************
     //Campos para el detalle
     //
     $edit->codigo = new inputField('C&oacute;digo', 'codigo_<#i#>');
     $edit->codigo->size = 12;
     $edit->codigo->autocomplete = false;
     $edit->codigo->rule = 'required|callback_chcodigoa';
     $edit->codigo->db_name = 'codigo';
     $edit->codigo->rel_id = 'itscst';
     $edit->descrip = new hiddenField('Descripci&oacute;n', 'descrip_<#i#>');
     $edit->descrip->size = 30;
     $edit->descrip->db_name = 'descrip';
     $edit->descrip->maxlength = 12;
     $edit->descrip->rel_id = 'itscst';
     $edit->cantidad = new inputField('Cantidad', 'cantidad_<#i#>');
     $edit->cantidad->db_name = 'cantidad';
     $edit->cantidad->css_class = 'inputnum';
     $edit->cantidad->rel_id = 'itscst';
     $edit->cantidad->maxlength = 10;
     $edit->cantidad->size = 8;
     $edit->cantidad->autocomplete = false;
     $edit->cantidad->onkeyup = 'importe(<#i#>)';
     $edit->cantidad->rule = 'required|positive';
     $edit->cantidad->showformat = 'decimal';
     $edit->costo = new inputField('Costo', 'costo_<#i#>');
     $edit->costo->css_class = 'inputnum';
     $edit->costo->rule = 'required|positive';
     $edit->costo->onkeyup = 'importe(<#i#>)';
     $edit->costo->size = 9;
     $edit->costo->autocomplete = false;
     $edit->costo->db_name = 'costo';
     $edit->costo->rel_id = 'itscst';
     $edit->costo->showformat = 'decimal';
     $edit->importe = new inputField('Importe', 'importe_<#i#>');
     $edit->importe->rule = 'numeric';
     $edit->importe->db_name = 'importe';
     $edit->importe->size = 12;
     $edit->importe->rel_id = 'itscst';
     $edit->importe->autocomplete = false;
     $edit->importe->onkeyup = 'costo(<#i#>)';
     $edit->importe->css_class = 'inputnum';
     $edit->importe->showformat = 'decimal';
     $edit->precio1 = new inputField('PVP', 'precio1_<#i#>');
     $edit->precio1->rule = 'numeric';
     $edit->precio1->db_name = 'precio1';
     $edit->precio1->size = 9;
     $edit->precio1->rel_id = 'itscst';
     $edit->precio1->autocomplete = false;
     $edit->precio1->css_class = 'inputnum';
     $edit->precio1->showformat = 'decimal';
     $edit->sinvpeso = new hiddenField('', 'sinvpeso_<#i#>');
     $edit->sinvpeso->db_name = 'sinvpeso';
     $edit->sinvpeso->rel_id = 'itscst';
     $edit->sinvpeso->pointer = true;
     $edit->sinvpeso->showformat = 'decimal';
     $edit->iva = new hiddenField('Impuesto', 'iva_<#i#>');
     $edit->iva->db_name = 'iva';
     $edit->iva->rel_id = 'itscst';
     $edit->iva->showformat = 'decimal';
     $edit->nentrega = new hiddenField('Nota de entrega', 'nentrega_<#i#>');
     $edit->nentrega->autocomplete = false;
     $edit->nentrega->rule = 'callback_chnentrega[<#i#>]';
     $edit->nentrega->db_name = 'nentrega';
     $edit->nentrega->rel_id = 'itscst';
     //fin de campos para detalle
     $edit->usuario = new autoUpdateField('usuario', $this->session->userdata('usuario'), $this->session->userdata('usuario'));
     //*****************************
     //Campos para el detalle reten
     //
     $edit->codigorete = new dropdownField('', 'codigorete_<#i#>');
     $edit->codigorete->option('', 'Seleccionar');
     $edit->codigorete->options('SELECT TRIM(codigo) AS codigo,TRIM(CONCAT_WS("-",tipo,codigo,activida)) AS activida FROM rete ORDER BY tipo,codigo');
     $edit->codigorete->db_name = 'codigorete';
     $edit->codigorete->rule = 'max_length[4]';
     $edit->codigorete->style = 'width: 320px';
     $edit->codigorete->rel_id = 'gereten';
     $edit->codigorete->onchange = 'post_codigoreteselec(<#i#>,this.value)';
     $edit->base = new inputField('base', 'base_<#i#>');
     $edit->base->db_name = 'base';
     $edit->base->rule = 'max_length[10]|numeric|positive';
     $edit->base->css_class = 'inputnum';
     $edit->base->size = 12;
     $edit->base->autocomplete = false;
     $edit->base->rel_id = 'gereten';
     $edit->base->maxlength = 10;
     $edit->base->onkeyup = 'importerete(<#i#>)';
     $edit->base->showformat = 'decimal';
     $edit->porcen = new inputField('porcen', 'porcen_<#i#>');
     $edit->porcen->db_name = 'porcen';
     $edit->porcen->rule = 'max_length[5]|numeric|positive';
     $edit->porcen->css_class = 'inputnum';
     $edit->porcen->size = 7;
     $edit->porcen->rel_id = 'gereten';
     $edit->porcen->readonly = true;
     $edit->porcen->maxlength = 5;
     $edit->porcen->showformat = 'decimal';
     $edit->porcen->type = 'inputhidden';
     $edit->monto = new inputField('monto', 'monto_<#i#>');
     $edit->monto->db_name = 'monto';
     $edit->monto->rule = 'max_length[10]|numeric|positive';
     $edit->monto->css_class = 'inputnum';
     $edit->monto->rel_id = 'gereten';
     $edit->monto->size = 12;
     $edit->monto->readonly = true;
     $edit->monto->maxlength = 8;
     $edit->monto->showformat = 'decimal';
     $edit->monto->type = 'inputhidden';
     //
     //Fin de campos para detalle
     //*****************************
     //*****************************
     //Campos relacionados con ordc
     //
     $edit->ordc = new hiddenField('', 'ordc_<#i#>');
     $edit->ordc->db_name = 'orden';
     $edit->ordc->rel_id = 'scstordc';
     //
     //Fin de campos ordc
     //*****************************
     $recep = strtotime($edit->get_from_dataobjetct('recep'));
     $fecha = strtotime($edit->get_from_dataobjetct('fecha'));
     $actuali = strtotime($edit->get_from_dataobjetct('actuali'));
     if ($actuali < $fecha) {
         $control = $this->rapyd->uri->get_edited_id();
         $accion = "javascript:window.location='" . site_url('compras/scst/actualizar/' . $control) . "'";
         $accio2 = "javascript:window.location='" . site_url('compras/scst/cprecios/' . $control) . "'";
         $accio3 = "javascript:window.location='" . site_url('compras/scst/montoscxp/modify/' . $control) . "'";
         $edit->button_status('btn_actuali', 'Actualizar', $accion, 'TR', 'show');
         $edit->button_status('btn_precio', 'Asignar precios', $accio2, 'TR', 'show');
         $edit->button_status('btn_cxp', 'Ajuste CxP', $accio3, 'TR', 'show');
         $edit->buttons('save', 'delete', 'modify', 'exit', 'add_rel', 'add');
     } else {
         $control = $this->rapyd->uri->get_edited_id();
         $accion = "javascript:window.location='" . site_url('compras/scst/reversar/' . $control) . "'";
         $edit->button_status('btn_reversar', 'Reversar', $accion, 'TR', 'show');
         $edit->buttons('save', 'exit', 'add_rel');
     }
     if ($this->genesal) {
         $edit->build();
         $smenu['link'] = barra_menu('201');
         $data['smenu'] = $this->load->view('view_sub_menu', $smenu, true);
         $conten['form'] =& $edit;
         $conten['solo'] = $this->solo;
         $ffecha = $edit->get_from_dataobjetct('fecha');
         $conten['alicuota'] = $this->datasis->ivaplica($ffecha == false ? null : $ffecha);
         if ($this->solo) {
             $this->load->view('view_compras', $conten);
         } else {
             $data['script'] = script('jquery.js');
             $data['script'] .= script('jquery-ui.js');
             $data['script'] .= script('plugins/jquery.numeric.pack.js');
             $data['script'] .= script('plugins/jquery.floatnumber.js');
             $data['script'] .= script('plugins/jquery.ui.autocomplete.autoSelectOne.js');
             $data['script'] .= phpscript('nformat.js');
             $data['head'] = $this->rapyd->get_head();
             $data['head'] .= style('redmond/jquery-ui-1.8.1.custom.css');
             $data['content'] = $this->load->view('view_compras', $conten, true);
             $data['title'] = heading('Compras');
             $this->load->view('view_ventanas', $data);
         }
     } else {
         $edit->on_save_redirect = false;
         $edit->build();
         if ($edit->on_success()) {
             $this->claves = $edit->_dataobject->pk;
             $this->claves['control'] = $edit->_dataobject->get('control');
             $rt = 'Compra Guardada';
         } elseif ($edit->on_error()) {
             $rt = html_entity_decode(preg_replace('/<[^>]*>/', '', $edit->error_string));
         }
         return $rt;
     }
 }