Exemplo n.º 1
0
 function pprov($id_sprv)
 {
     $id_sprv = intval($id_sprv);
     $row = $this->datasis->damerow('SELECT proveed,nombre,rif FROM sprv WHERE id=' . $id_sprv);
     if (empty($row)) {
         echo 'El usuario debe tener registrado un cajero para poder usar este modulo';
         return '';
     }
     $proveed = $row['proveed'];
     $sprv_nombre = $row['nombre'];
     $sprv_rif = $row['rif'];
     if (date('d') <= 15) {
         $pdia = '01';
         $dia = '15';
     } else {
         $pdia = '16';
         $dia = date('d', mktime(0, 0, 0, date('n'), 0));
     }
     $rivafechai = date('Ym' . $pdia);
     $rivafechac = date('Ym' . $dia);
     $this->rapyd->load('dataobject', 'datadetails');
     $do = new DataObject('sprm');
     $do->rel_one_to_many('itppro', 'itppro', array('tipo_doc' => 'tipoppro', 'numero' => 'numppro', 'cod_prv' => 'cod_prv', 'transac' => 'transac'));
     $do->order_by('itppro', 'itppro.fecha');
     $edit = new DataDetails('Pago a proveedor', $do);
     $edit->on_save_redirect = false;
     $edit->set_rel_title('itppro', 'Efecto <#o#>');
     //$edit->set_rel_title('sfpa'  , 'Forma de pago <#o#>');
     $edit->pre_process('insert', '_pre_pprv_insert');
     $edit->pre_process('update', '_pre_pprv_update');
     $edit->pre_process('delete', '_pre_pprv_delete');
     $edit->post_process('insert', '_post_pprv_insert');
     //$edit->post_process('delete', '_post_pprv_delete');
     $edit->cod_prv = new hiddenField('Proveedor', 'cod_prv');
     $edit->cod_prv->rule = 'existesprv';
     $edit->cod_prv->size = 7;
     $edit->cod_prv->insertValue = $proveed;
     $edit->cod_prv->maxlength = 5;
     $edit->nombre = new inputField('Nombre', 'nombre');
     $edit->nombre->rule = 'max_length[40]';
     $edit->nombre->size = 42;
     $edit->nombre->maxlength = 40;
     $edit->tipo_doc = new dropdownField('Tipo doc.', 'tipo_doc');
     $edit->tipo_doc->option('AB', 'Abono');
     $edit->tipo_doc->option('NC', 'Nota de credito');
     $edit->tipo_doc->option('AN', 'Anticipo');
     $edit->tipo_doc->onchange = 'chtipodoc()';
     $edit->tipo_doc->style = 'width:140px;';
     $edit->tipo_doc->rule = 'enum[AB,NC,AN]|required';
     $edit->codigo = new dropdownField('Motivo', 'codigo');
     $edit->codigo->option('', 'Seleccionar');
     $edit->codigo->options('SELECT TRIM(codigo) AS cod, nombre FROM botr WHERE tipo=\'P\' ORDER BY nombre');
     $edit->codigo->style = 'width:200px;';
     $edit->codigo->rule = 'condi_required|callback_chobligatipo[NC]';
     $edit->numero = new inputField('N&uacute;mero', 'numero');
     $edit->numero->rule = 'max_length[8]';
     $edit->numero->size = 10;
     $edit->numero->maxlength = 8;
     $edit->fecha = new dateonlyField('Fecha', 'fecha');
     $edit->fecha->size = 12;
     $edit->fecha->maxlength = 8;
     $edit->fecha->insertValue = date('Y-m-d');
     $edit->fecha->calendar = false;
     $edit->fecha->rule = 'chfecha|required';
     $edit->monto = new inputField('Total a pagar', 'monto');
     $edit->monto->rule = 'required|max_length[17]|numeric';
     $edit->monto->css_class = 'inputnum';
     $edit->monto->size = 19;
     $edit->monto->maxlength = 17;
     $edit->monto->type = 'inputhidden';
     $edit->observa1 = new textareaField('Concepto:', 'observa1');
     $edit->observa1->cols = 70;
     $edit->observa1->rows = 2;
     $edit->observa1->style = 'width:100%;';
     $edit->observa2 = new textareaField('', 'observa2');
     $edit->observa2->cols = 70;
     $edit->observa2->rows = 2;
     $edit->observa2->style = 'width:100%;';
     $edit->observa2->when = array('show');
     $edit->depto = new dropdownField('Asignar a departamento', 'depto');
     $edit->depto->option('', 'Seleccionar');
     $edit->depto->options('SELECT depto,CONCAT_WS(\'-\',depto,TRIM(descrip)) AS descrip FROM dpto WHERE tipo IN (\'G\',\'A\') ORDER BY descrip');
     $edit->depto->style = 'width:180px;';
     $edit->depto->rule = 'condi_required|callback_chdepto';
     $edit->usuario = new autoUpdateField('usuario', $this->secu->usuario(), $this->secu->usuario());
     $edit->estampa = new autoUpdateField('estampa', date('Ymd'), date('Ymd'));
     $edit->hora = new autoUpdateField('hora', date('H:i:s'), date('H:i:s'));
     //Campos propios de las NC
     //Campos comodines
     $arr_ptasa = array();
     $edit->apltasa = new dropdownField('', 'apltasa');
     $mSQL = 'SELECT fecha,tasa,redutasa,sobretasa FROM civa ORDER BY fecha DESC LIMIT 3';
     $query = $this->db->query($mSQL);
     foreach ($query->result() as $row) {
         $arr_ptasa[] = array(floatval($row->tasa), floatval($row->redutasa), floatval($row->sobretasa));
         $edit->apltasa->option($row->fecha, dbdate_to_human($row->fecha));
     }
     $edit->apltasa->onchange = 'chapltasa()';
     $edit->apltasa->style = 'width:100px;';
     $edit->apltasa->rule = 'condi_required|callback_chobligatipo[NC]';
     $ivas = $this->datasis->ivaplica();
     $edit->ptasa = new inputField('', 'ptasa');
     $edit->ptasa->rule = 'numeric';
     $edit->ptasa->type = 'inputhidden';
     $edit->ptasa->insertValue = $ivas['tasa'];
     $edit->ptasa->showformat = 'decimal';
     $edit->preducida = new inputField('', 'preducida');
     $edit->preducida->rule = 'numeric';
     $edit->preducida->type = 'inputhidden';
     $edit->preducida->insertValue = $ivas['redutasa'];
     $edit->preducida->showformat = 'decimal';
     $edit->padicional = new inputField('', 'padicional');
     $edit->padicional->rule = 'numeric';
     $edit->padicional->type = 'inputhidden';
     $edit->padicional->insertValue = $ivas['sobretasa'];
     $edit->padicional->showformat = 'decimal';
     //Fin de los comodines
     $edit->serie = new inputField('N&uacute;mero', 'serie');
     $edit->serie->rule = 'condi_required|callback_chobligatipo[NC]';
     $edit->serie->size = 15;
     $edit->serie->maxlength = 17;
     $edit->nfiscal = new inputField('Control F&iacute;scal', 'nfiscal');
     $edit->nfiscal->rule = 'condi_required|callback_chobligatipo[NC]';
     $edit->nfiscal->size = 15;
     $edit->nfiscal->maxlength = 17;
     $edit->montasa = new inputField('Montasa', 'montasa');
     $edit->montasa->rule = 'max_length[17]|numeric|positive';
     $edit->montasa->css_class = 'inputnum';
     $edit->montasa->size = 19;
     $edit->montasa->maxlength = 17;
     $edit->montasa->rule = 'condi_required|callback_chobligatipo[NC]';
     $edit->monredu = new inputField('Monredu', 'monredu');
     $edit->monredu->rule = 'max_length[17]|numeric|positive';
     $edit->monredu->css_class = 'inputnum';
     $edit->monredu->size = 19;
     $edit->monredu->maxlength = 17;
     $edit->monredu->rule = 'condi_required|callback_chobligatipo[NC]';
     $edit->monadic = new inputField('Monadic', 'monadic');
     $edit->monadic->rule = 'max_length[17]|numeric|positive';
     $edit->monadic->css_class = 'inputnum';
     $edit->monadic->size = 19;
     $edit->monadic->maxlength = 17;
     $edit->monadic->rule = 'condi_required|callback_chobligatipo[NC]';
     $edit->tasa = new inputField('general', 'tasa');
     $edit->tasa->rule = 'max_length[17]|numeric';
     $edit->tasa->css_class = 'inputnum';
     $edit->tasa->size = 12;
     $edit->tasa->maxlength = 17;
     $edit->tasa->rule = 'condi_required|callback_chobligatipo[NC]|callback_chmontasa[G]';
     $edit->reducida = new inputField('reducida', 'reducida');
     $edit->reducida->rule = 'max_length[17]|numeric|positive';
     $edit->reducida->css_class = 'inputnum';
     $edit->reducida->size = 12;
     $edit->reducida->maxlength = 17;
     $edit->reducida->rule = 'condi_required|callback_chobligatipo[NC]|callback_chmontasa[R]';
     $edit->sobretasa = new inputField('adicional', 'sobretasa');
     $edit->sobretasa->rule = 'max_length[17]|numeric|positive';
     $edit->sobretasa->css_class = 'inputnum';
     $edit->sobretasa->size = 12;
     $edit->sobretasa->maxlength = 17;
     $edit->sobretasa->rule = 'condi_required|callback_chobligatipo[NC]|callback_chmontasa[A]|positive';
     $edit->exento = new inputField('exento', 'exento');
     $edit->exento->rule = 'max_length[17]|numeric';
     $edit->exento->css_class = 'inputnum';
     $edit->exento->size = 19;
     $edit->exento->maxlength = 17;
     $edit->exento->rule = 'condi_required|callback_chobligatipo[NC]|positive';
     $edit->reteiva = new inputField('Ret. IVA', 'reteiva');
     $edit->reteiva->rule = 'max_length[17]|numeric';
     $edit->reteiva->css_class = 'inputnum';
     $edit->reteiva->size = 19;
     $edit->reteiva->maxlength = 17;
     $edit->reteiva->insertValue = '0';
     $edit->reteiva->rule = 'condi_required|callback_chobligatipo[NC]|positive';
     $edit->afecta = new inputField('Factura Afectada', 'afecta');
     $edit->afecta->rule = 'callback_chafectanc';
     $edit->afecta->size = 15;
     $edit->afecta->maxlength = 12;
     //Para la retencion de iva si aplica
     $contribu = trim($this->datasis->traevalor('CONTRIBUYENTE'));
     $rif = trim($this->datasis->traevalor('RIF'));
     if ($contribu == 'ESPECIAL' && strtoupper($rif[0]) != 'V') {
         $por_rete = $this->datasis->dameval('SELECT reteiva FROM sprv WHERE proveed=' . $this->db->escape($proveed));
         if ($por_rete != 100) {
             $por_rete = 0.75;
         } else {
             $por_rete = $por_rete / 100;
         }
     } else {
         $por_rete = -1;
     }
     //fin de la retencion
     //Fin de los campos para la nc
     //Detalle del pago
     $edit->banco = new dropdownField('Banco', 'banco');
     $edit->banco->option('', 'Seleccionar');
     $edit->banco->options('SELECT TRIM(codbanc) AS codbanc,CONCAT_WS(\' \',TRIM(codbanc),TRIM(banco),numcuent) FROM banc ORDER BY banco');
     $edit->banco->style = 'width:200px;';
     $edit->banco->rule = 'condi_required|callback_chbanc';
     $edit->tipo_op = new dropdownField('Tipo', 'tipo_op');
     $edit->tipo_op->option('CH', 'Cheque');
     $edit->tipo_op->option('ND', 'Nota de debito');
     $edit->tipo_op->style = 'width:150px;';
     $edit->tipo_op->rule = 'condi_required|enum[CH,ND]|callback_chtipoop';
     $edit->numche = new inputField('N&uacute;mero', 'numche');
     $edit->numche->size = 12;
     $edit->numche->rule = 'condi_required|callback_chbmovrep';
     $edit->benefi = new inputField('Beneficiario', 'benefi');
     $edit->benefi->size = 12;
     $edit->benefi->rule = 'condi_required|callback_chtipo';
     $edit->benefi->style = 'width:90%;';
     $edit->benefi->insertValue = $sprv_nombre;
     $edit->posdata = new dateonlyField('Fecha', 'posdata');
     $edit->posdata->size = 12;
     $edit->posdata->maxlength = 8;
     $edit->posdata->insertValue = date('Y-m-d');
     $edit->posdata->calendar = false;
     $edit->posdata->rule = 'condi_required|chfecha';
     //Fin del detalle del pago
     //************************************************
     //inicio detalle itppro
     //************************************************
     $i = 0;
     $arr_ivas = array();
     $edit->detail_expand_except('itppro');
     $sel = array('a.tipo_doc', 'a.numero', 'a.fecha', 'a.vence', 'a.monto', 'a.abonos', 'a.monto - a.abonos AS saldo', 'impuesto', 'reteiva', 'montasa', 'monredu', 'monadic', 'tasa', 'reducida', 'sobretasa', 'exento');
     $this->db->select($sel);
     $this->db->from('sprm AS a');
     $this->db->where('a.cod_prv', $proveed);
     $transac = $edit->get_from_dataobjetct('transac');
     if ($transac !== false) {
         $tipo_doc = $edit->get_from_dataobjetct('tipo_doc');
         $dbtransac = $this->db->escape($transac);
         $this->db->join('itppro AS b', 'a.tipo_doc = b.tipoccli AND a.numero=b.numccli AND a.transac=' . $dbtransac);
         $this->db->where('a.tipo_doc', $tipo_doc);
     } else {
         $this->db->where('a.monto > a.abonos');
         $this->db->where_in('a.tipo_doc', array('FC', 'ND', 'GI'));
     }
     $this->db->order_by('a.fecha');
     $query = $this->db->get();
     //echo $this->db->last_query();
     foreach ($query->result() as $row) {
         $row->montasa = floatval($row->montasa);
         $row->monredu = floatval($row->monredu);
         $row->monadic = floatval($row->monadic);
         $row->tasa = floatval($row->tasa);
         $row->reducida = floatval($row->reducida);
         $row->sobretasa = floatval($row->sobretasa);
         $row->exento = floatval($row->exento);
         if ($row->montasa + $row->monredu + $row->monadic + $row->tasa + $row->reducida + $row->sobretasa + $row->exento > 0) {
             $arr_ivas[$i] = array('montasa' => $row->montasa, 'monredu' => $row->monredu, 'monadic' => $row->monadic, 'tasa' => $row->tasa, 'reducida' => $row->reducida, 'sobretasa' => $row->sobretasa, 'exento' => $row->exento);
         } else {
             $arr_ivas[$i] = array('montasa' => $row->monto - $row->impuesto, 'monredu' => 0, 'monadic' => 0, 'tasa' => floatval($row->impuesto), 'reducida' => 0, 'sobretasa' => 0, 'exento' => $row->exento);
         }
         $obj = 'cod_prv_' . $i;
         $edit->{$obj} = new autoUpdateField('cod_prv', $proveed, $proveed);
         $edit->{$obj}->rel_id = 'itppro';
         $edit->{$obj}->ind = $i;
         $obj = 'tipo_doc_' . $i;
         $edit->{$obj} = new inputField('Tipo_doc', $obj);
         $edit->{$obj}->db_name = 'tipo_doc';
         $edit->{$obj}->rel_id = 'itppro';
         $edit->{$obj}->rule = 'max_length[2]';
         $edit->{$obj}->insertValue = $row->tipo_doc;
         $edit->{$obj}->size = 4;
         $edit->{$obj}->maxlength = 2;
         $edit->{$obj}->ind = $i;
         $edit->{$obj}->type = 'inputhidden';
         $obj = 'numero_' . $i;
         $edit->{$obj} = new inputField('Numero', $obj);
         $edit->{$obj}->db_name = 'numero';
         $edit->{$obj}->rel_id = 'itppro';
         $edit->{$obj}->rule = 'max_length[8]';
         $edit->{$obj}->insertValue = $row->numero;
         $edit->{$obj}->size = 10;
         $edit->{$obj}->maxlength = 8;
         $edit->{$obj}->ind = $i;
         $edit->{$obj}->type = 'inputhidden';
         $obj = 'fecha_' . $i;
         $edit->{$obj} = new dateonlyField('Fecha', $obj);
         $edit->{$obj}->db_name = 'fecha';
         $edit->{$obj}->rel_id = 'itppro';
         $edit->{$obj}->rule = 'chfecha';
         $edit->{$obj}->insertValue = $row->fecha;
         $edit->{$obj}->size = 10;
         $edit->{$obj}->maxlength = 8;
         $edit->{$obj}->ind = $i;
         $edit->{$obj}->type = 'inputhidden';
         $obj = 'monto_' . $i;
         $edit->{$obj} = new inputField('Monto', $obj);
         $edit->{$obj}->db_name = 'monto';
         $edit->{$obj}->rel_id = 'itppro';
         $edit->{$obj}->rule = 'max_length[18]|numeric';
         $edit->{$obj}->css_class = 'inputnum';
         $edit->{$obj}->size = 20;
         $edit->{$obj}->insertValue = $row->monto;
         $edit->{$obj}->maxlength = 18;
         $edit->{$obj}->ind = $i;
         $edit->{$obj}->showformat = 'decimal';
         $edit->{$obj}->type = 'inputhidden';
         $obj = 'riva_' . $i;
         $edit->{$obj} = new hiddenField('riva', $obj);
         $edit->{$obj}->db_name = 'riva';
         $edit->{$obj}->rel_id = 'itppro';
         $fecha = str_replace('-', '', $row->fecha);
         if (floatval($row->reteiva) > 0) {
             if ($fecha >= $rivafechai && $fecha <= $rivafechac) {
                 $aplrete = 'S';
             } else {
                 $aplrete = 'V';
             }
         } else {
             $aplrete = 'N';
         }
         $edit->{$obj}->insertValue = $aplrete;
         $edit->{$obj}->ind = $i;
         $edit->{$obj}->showformat = 'decimal';
         $obj = 'saldo_' . $i;
         $edit->{$obj} = new freeField($obj, $obj, nformat($row->saldo));
         $edit->{$obj}->ind = $i;
         $obj = 'vence_' . $i;
         $edit->{$obj} = new freeField($obj, $obj, dbdate_to_human($row->vence));
         $edit->{$obj}->ind = $i;
         $obj = 'abono_' . $i;
         $edit->{$obj} = new inputField('Abono', $obj);
         $edit->{$obj}->db_name = 'abono';
         $edit->{$obj}->rel_id = 'itppro';
         $edit->{$obj}->rule = "max_length[18]|numeric|positive|callback_chabono[{$i}]";
         $edit->{$obj}->css_class = 'inputnum';
         $edit->{$obj}->showformat = 'decimal';
         $edit->{$obj}->autocomplete = false;
         $edit->{$obj}->disable_paste = true;
         $edit->{$obj}->size = 15;
         $edit->{$obj}->maxlength = 18;
         $edit->{$obj}->ind = $i;
         $edit->{$obj}->onfocus = 'itsaldo(this,' . round($row->saldo, 2) . ');';
         $i++;
     }
     //************************************************
     //fin de campos para detalle
     //************************************************
     $edit->tipo_doc = new dropdownField('Tipo doc.', 'tipo_doc');
     if ($i > 0) {
         $edit->tipo_doc->option('AB', 'Abono');
         $edit->tipo_doc->option('NC', 'Nota de credito');
     } else {
         $edit->tipo_doc->insertValue = 'AN';
     }
     $edit->tipo_doc->option('AN', 'Anticipo');
     $edit->tipo_doc->onchange = 'chtipodoc()';
     $edit->tipo_doc->style = 'width:140px;';
     $edit->tipo_doc->rule = 'enum[AB,NC,AN]|required';
     $edit->buttons('add_rel');
     $edit->build();
     if ($edit->on_success()) {
         $rt = array('status' => 'A', 'mensaje' => 'Registro guardado', 'pk' => $edit->_dataobject->pk);
         echo json_encode($rt);
     } else {
         $conten['json_ptasa'] = json_encode($arr_ptasa);
         $conten['json_ivas'] = json_encode($arr_ivas);
         $conten['cana'] = $i;
         $conten['form'] =& $edit;
         $conten['title'] = heading("Pago a proveedor: ({$proveed}) {$sprv_nombre} {$sprv_rif}");
         $conten['por_rete'] = $por_rete;
         $this->load->view('view_pprv', $conten);
     }
 }
Exemplo n.º 2
0
    function ccli($id_scli)
    {
        $id_scli = intval($id_scli);
        $row = $this->datasis->damerow("SELECT cliente,nombre,rifci FROM scli WHERE id={$id_scli}");
        if (empty($row)) {
            echo 'Cliente inexistente';
            return '';
        }
        $cliente = $row['cliente'];
        $dbcliente = $this->db->escape($cliente);
        $scli_nombre = $row['nombre'];
        $scli_rif = $row['rifci'];
        $cajero = $this->secu->getcajero();
        if (empty($cajero)) {
            echo 'El usuario debe tener registrado un cajero para poder usar este modulo';
            exit;
        }
        $this->rapyd->load('dataobject', 'datadetails');
        $this->rapyd->uri->keep_persistence();
        $do = new DataObject('smov');
        $do->rel_one_to_many('itccli', 'itccli', array('tipo_doc' => 'tipoccli', 'numero' => 'numccli', 'cod_cli' => 'cod_cli', 'transac' => 'transac'));
        $do->rel_one_to_many('sfpa', 'sfpa', array('transac' => 'transac', 'numero' => 'numero', 'tipo_doc' => 'tipo_doc'));
        $do->order_by('itccli', 'itccli.fecha');
        $edit = new DataDetails('Cobro a cliente', $do);
        $edit->on_save_redirect = false;
        $edit->back_url = site_url('finanzas/ccli/filteredgrid');
        $edit->set_rel_title('itccli', 'Efecto <#o#>');
        $edit->set_rel_title('sfpa', 'Forma de pago <#o#>');
        $edit->pre_process('insert', '_pre_ccli_insert');
        $edit->pre_process('update', '_pre_ccli_update');
        $edit->pre_process('delete', '_pre_ccli_delete');
        $edit->post_process('insert', '_post_ccli_insert');
        //$edit->post_process('delete', '_post_delete');
        $edit->cod_cli = new hiddenField('Cliente', 'cod_cli');
        $edit->cod_cli->rule = 'max_length[5]';
        $edit->cod_cli->size = 7;
        $edit->cod_cli->insertValue = $cliente;
        $edit->cod_cli->maxlength = 5;
        $edit->nombre = new inputField('Nombre', 'nombre');
        $edit->nombre->rule = 'max_length[40]';
        $edit->nombre->size = 42;
        $edit->nombre->maxlength = 40;
        $edit->codigo = new dropdownField('Motivo', 'codigo');
        $edit->codigo->option('', 'Seleccionar');
        $edit->codigo->options('SELECT TRIM(codigo) AS cod, nombre FROM botr WHERE tipo=\'C\' ORDER BY nombre');
        $edit->codigo->style = 'width:200px;';
        $edit->codigo->rule = '';
        $edit->vendedor = new dropdownField('Cobrador', 'vd');
        $edit->vendedor->option('', 'Seleccione cobrador');
        $edit->vendedor->options('SELECT TRIM(vendedor) AS vendedor, CONCAT(vendedor,\' \',nombre) nombre FROM vend WHERE tipo <> "V" ORDER BY vendedor');
        $edit->vendedor->style = 'width:200px;';
        $edit->vendedor->insertValue = trim($this->secu->getvendedor());
        $edit->vendedor->db_name = 'vendedor';
        $edit->numero = new inputField('N&uacute;mero', 'numero');
        $edit->numero->rule = 'max_length[8]';
        $edit->numero->size = 10;
        $edit->numero->maxlength = 8;
        $edit->fecdoc = new dateonlyField('Fecha', 'fecdoc');
        $edit->fecdoc->db_name = 'fecha';
        $edit->fecdoc->size = 12;
        $edit->fecdoc->maxlength = 8;
        $edit->fecdoc->insertValue = date('Y-m-d');
        $edit->fecdoc->calendar = false;
        $edit->fecdoc->rule = 'chfecha|chfechafut|required|callback_chcierre';
        $edit->monto = new inputField('Total', 'monto');
        $edit->monto->rule = 'max_length[17]|numeric';
        $edit->monto->css_class = 'inputnum';
        $edit->monto->size = 19;
        $edit->monto->maxlength = 17;
        $edit->monto->type = 'inputhidden';
        $edit->observa1 = new textareaField('Concepto:', 'observa1');
        $edit->observa1->cols = 70;
        $edit->observa1->rows = 2;
        $edit->observa1->style = 'width:100%;';
        $edit->observa2 = new textareaField('', 'observa2');
        $edit->observa2->cols = 70;
        $edit->observa2->rows = 2;
        $edit->observa2->style = 'width:100%;';
        $edit->observa2->when = array('show');
        $edit->codigo = new dropdownField('Motivo', 'codigo');
        $edit->codigo->option('', 'Ninguno');
        $edit->codigo->options('SELECT TRIM(codigo) AS cod, nombre FROM botr WHERE tipo=\'C\' ORDER BY nombre');
        $edit->codigo->style = 'width:200px;';
        $edit->codigo->rule = 'condi_required|callback_chobligatipo[NC]';
        $edit->nroex = new inputField('Referencia Externa', 'nroex');
        $edit->nroex->rule = 'max_length[15]';
        $edit->nroex->size = 15;
        $edit->nroex->maxlength = 15;
        $edit->usuario = new autoUpdateField('usuario', $this->secu->usuario(), $this->secu->usuario());
        $edit->estampa = new autoUpdateField('estampa', date('Ymd'), date('Ymd'));
        $edit->hora = new autoUpdateField('hora', date('H:i:s'), date('H:i:s'));
        //$edit->fecha   = new autoUpdateField('fecha'   ,date('Ymd'), date('Ymd'));
        //**************************************************************
        //inicio detalle itccli
        //
        $i = 0;
        $arr_ivas = array();
        $edit->detail_expand_except('itccli');
        $sel = array('a.tipo_doc', 'a.numero', 'a.fecha', 'a.monto', 'a.abonos', 'a.monto - a.abonos AS saldo');
        $this->db->select($sel);
        $this->db->from('smov AS a');
        $this->db->where('a.cod_cli', $cliente);
        $transac = $edit->get_from_dataobjetct('transac');
        if ($transac !== false) {
            $tipo_doc = $edit->get_from_dataobjetct('tipo_doc');
            $dbtransac = $this->db->escape($transac);
            $this->db->join('itccli AS b', 'a.tipo_doc = b.tipoccli AND a.numero=b.numccli AND a.transac=' . $dbtransac);
            $this->db->where('a.tipo_doc', $tipo_doc);
        } else {
            $this->db->where('a.monto > a.abonos');
            $this->db->where_in('a.tipo_doc', array('FC', 'ND', 'GI'));
        }
        $this->db->order_by('a.fecha');
        $query = $this->db->get();
        //echo $this->db->last_query();
        foreach ($query->result() as $row) {
            //$arr_ivas[$i]=array('');
            $obj = 'cod_cli_' . $i;
            $edit->{$obj} = new autoUpdateField('cod_cli', $cliente, $cliente);
            $edit->{$obj}->rel_id = 'itccli';
            $edit->{$obj}->ind = $i;
            $obj = 'tipo_doc_' . $i;
            $edit->{$obj} = new inputField('Tipo_doc', $obj);
            $edit->{$obj}->db_name = 'tipo_doc';
            $edit->{$obj}->rel_id = 'itccli';
            $edit->{$obj}->rule = 'max_length[2]';
            $edit->{$obj}->insertValue = $row->tipo_doc;
            $edit->{$obj}->size = 4;
            $edit->{$obj}->maxlength = 2;
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->type = 'inputhidden';
            $obj = 'numero_' . $i;
            $edit->{$obj} = new inputField('Numero', $obj);
            $edit->{$obj}->db_name = 'numero';
            $edit->{$obj}->rel_id = 'itccli';
            $edit->{$obj}->rule = 'max_length[8]';
            $edit->{$obj}->insertValue = $row->numero;
            $edit->{$obj}->size = 10;
            $edit->{$obj}->maxlength = 8;
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->type = 'inputhidden';
            $obj = 'fecha_' . $i;
            $edit->{$obj} = new dateonlyField('Fecha', $obj);
            $edit->{$obj}->db_name = 'fecha';
            $edit->{$obj}->rel_id = 'itccli';
            $edit->{$obj}->rule = 'chfecha';
            $edit->{$obj}->insertValue = $row->fecha;
            $edit->{$obj}->size = 10;
            $edit->{$obj}->maxlength = 8;
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->type = 'inputhidden';
            $obj = 'monto_' . $i;
            $edit->{$obj} = new inputField('Monto', $obj);
            $edit->{$obj}->db_name = 'monto';
            $edit->{$obj}->rel_id = 'itccli';
            $edit->{$obj}->rule = 'max_length[18]|numeric';
            $edit->{$obj}->css_class = 'inputnum';
            $edit->{$obj}->size = 20;
            $edit->{$obj}->insertValue = $row->monto;
            $edit->{$obj}->maxlength = 18;
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->showformat = 'decimal';
            $edit->{$obj}->type = 'inputhidden';
            $obj = 'saldo_' . $i;
            $edit->{$obj} = new freeField($obj, $obj, nformat($row->saldo));
            $edit->{$obj}->ind = $i;
            $obj = 'abono_' . $i;
            $edit->{$obj} = new inputField('Abono', $obj);
            $edit->{$obj}->db_name = 'abono';
            $edit->{$obj}->rel_id = 'itccli';
            $edit->{$obj}->rule = "max_length[18]|numeric|positive|callback_chabono[{$i}]";
            $edit->{$obj}->css_class = 'inputnum';
            $edit->{$obj}->showformat = 'decimal';
            $edit->{$obj}->autocomplete = false;
            $edit->{$obj}->disable_paste = true;
            $edit->{$obj}->size = 15;
            $edit->{$obj}->maxlength = 18;
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->onfocus = 'itsaldo(this,' . round($row->saldo, 2) . ');';
            $obj = 'ppago_' . $i;
            $edit->{$obj} = new inputField('Pronto Pago', $obj);
            $edit->{$obj}->db_name = 'ppago';
            $edit->{$obj}->rel_id = 'itccli';
            $edit->{$obj}->rule = "max_length[18]|numeric|positive|callback_chppago[{$i}]";
            $edit->{$obj}->css_class = 'inputnum';
            $edit->{$obj}->showformat = 'decimal';
            $edit->{$obj}->autocomplete = false;
            $edit->{$obj}->disable_paste = true;
            $edit->{$obj}->size = 15;
            $edit->{$obj}->maxlength = 18;
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->onchange = "itppago(this,'{$i}');";
            $i++;
        }
        $edit->tipo_doc = new dropdownField('Tipo doc.', 'tipo_doc');
        if ($i > 0) {
            $edit->tipo_doc->option('AB', 'Abono');
            $edit->tipo_doc->option('NC', 'Nota de credito');
        } else {
            $edit->tipo_doc->insertValue = 'AN';
        }
        $edit->tipo_doc->option('AN', 'Anticipo');
        $edit->tipo_doc->style = 'width:140px;';
        $edit->tipo_doc->onchange = 'chtipodoc()';
        $edit->tipo_doc->rule = 'enum[AB,NC,AN]|required';
        //**************************************************************
        //fin de campos para detalle,inicio detalle2 sfpa
        //
        $edit->tipo = new dropdownField('Tipo <#o#>', 'tipo_<#i#>');
        $edit->tipo->option('', 'Ninguno');
        $edit->tipo->options('SELECT tipo, nombre FROM tarjeta WHERE activo=\'S\' ORDER BY nombre');
        $edit->tipo->db_name = 'tipo';
        $edit->tipo->rel_id = 'sfpa';
        $edit->tipo->style = 'width:160px;';
        $edit->tipo->rule = 'condi_required|callback_chsfpatipo[<#i#>]';
        $edit->tipo->insertValue = 'EF';
        $edit->tipo->onchange = 'sfpatipo(<#i#>)';
        $edit->tipo->rule = 'callback_chbmovrep[<#i#>]';
        $edit->sfpafecha = new dateonlyField('Fecha', 'sfpafecha_<#i#>');
        $edit->sfpafecha->rel_id = 'sfpa';
        $edit->sfpafecha->db_name = 'fecha';
        $edit->sfpafecha->size = 12;
        $edit->sfpafecha->maxlength = 8;
        $edit->sfpafecha->calendar = false;
        $edit->sfpafecha->rule = 'condi_required|chitfecha|callback_chtipo[<#i#>]';
        $edit->numref = new inputField('Numero <#o#>', 'num_ref_<#i#>');
        $edit->numref->size = 15;
        $edit->numref->db_name = 'num_ref';
        $edit->numref->rel_id = 'sfpa';
        $edit->numref->rule = 'trim|condi_required|callback_chtipo[<#i#>]|callback_chnumrep[<#i#>]';
        $edit->banco = new dropdownField('Banco <#o#>', 'banco_<#i#>');
        $edit->banco->option('', 'Ninguno');
        $edit->banco->options('SELECT cod_banc,nomb_banc
			FROM tban
			WHERE cod_banc<>\'CAJ\'
		UNION ALL
			SELECT codbanc,CONCAT_WS(\' \',TRIM(banco),numcuent)
			FROM banc
			WHERE tbanco <> \'CAJ\' ORDER BY nomb_banc');
        $edit->banco->db_name = 'banco';
        $edit->banco->rel_id = 'sfpa';
        $edit->banco->style = 'width:200px;';
        $edit->banco->rule = 'condi_required|callback_chtipo[<#i#>]';
        $edit->itmonto = new inputField('Monto <#o#>', 'itmonto_<#i#>');
        $edit->itmonto->db_name = 'monto';
        $edit->itmonto->css_class = 'inputnum';
        $edit->itmonto->rel_id = 'sfpa';
        $edit->itmonto->size = 14;
        $edit->itmonto->rule = 'condi_required|positive|callback_chmontosfpa[<#i#>]';
        $edit->itmonto->showformat = 'decimal';
        $edit->itmonto->autocomplete = false;
        //**************************************************************
        // Fin detalle 2 (sfpa)
        //
        $edit->buttons('add_rel');
        $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['cana'] = $i;
                $conten['form'] =& $edit;
                $conten['title'] = heading("Cobro a cliente: ({$cliente}) {$scli_nombre} {$scli_rif}");
                $data['content'] = $this->load->view('view_ccli.php', $conten);
            } else {
                if ($edit->on_error()) {
                    $rt = array('status' => 'B', 'mensaje' => preg_replace('/<[^>]*>/', '', $edit->error_string), 'pk' => null);
                    echo json_encode($rt);
                }
                if ($edit->on_success()) {
                    $rt = array('status' => 'A', 'mensaje' => 'Registro guardado', 'pk' => null);
                    echo json_encode($rt);
                }
            }
        }
    }