Example #1
0
    function dataedit($cliente)
    {
        if (!$this->_exitescli($cliente)) {
            redirect($this->url . 'filterscli');
        }
        $this->rapyd->load('dataobject', 'dataedit');
        $this->rapyd->uri->keep_persistence();
        $this->load->helper('form');
        $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.descrip AS sinvdescrip,
			sinv.iva AS sinviva,
			sinv.pond AS sinvpond,
			sinv.mmargen AS sinvmmargen,
			sinv.ultimo sinvultimo,sinv.formcal AS sinvformcal,
			sinv.pm AS sinvpm,
			sinv.existen AS pexisten,
			sinv.marca AS pmarca,
			sinv.descrip AS pdesca,
			sinv.escala1  AS sinvescala1,
			sinv.pescala1 AS sinvpescala1,
			sinv.escala2  AS sinvescala2,
			sinv.pescala2 AS sinvpescala2,
			sinv.escala3  AS sinvescala3,
			sinv.pescala3 AS sinvpescala3');
        $do->order_by('itpfac', 'sinv.marca', ' ');
        $do->order_by('itpfac', 'sinv.descrip', ' ');
        $edit = new DataEdit('Pedidos', $do);
        $edit->back_url = site_url('ventas/pfaclitemayor/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');
        $edit->fecha = new inputField('Fecha', 'fecha');
        $edit->fecha->insertValue = date('Y-m-d');
        //$edit->fecha->rule = 'required';
        $edit->fecha->mode = 'autohide';
        $edit->fecha->size = 10;
        $usr = $this->session->userdata('usuario');
        $vd = $this->datasis->dameval("SELECT vendedor FROM usuario WHERE us_codigo='{$usr}'");
        $edit->vd = new hiddenField('Vendedor', 'vd');
        $edit->vd->value = $vd;
        $edit->mmargen = new inputField('mmargen', 'mmargen');
        $edit->numero = new inputField('N&uacute;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->options("SELECT cliente, nombre FROM scli WHERE vendedor='$vd' LIMIT 5");
        $edit->rifci = new inputField('RIF/CI', 'rifci');
        $edit->rifci->autocomplete = false;
        $edit->rifci->size = 15;
        $edit->rifci->type = 'inputhidden';
        $edit->direc = new inputField('Direcci&oacute;n', 'direc');
        $edit->direc->size = 40;
        $edit->direc->type = 'inputhidden';
        $edit->observa = new inputField('Observaciones', 'observa');
        $edit->observa->size = 25;
        $edit->observ1 = new inputField('Observaciones', 'observ1');
        $edit->observ1->size = 25;
        //Descuento por grupo y cliente
        $sel = array('a.mmargen', 'b.margen');
        $this->db->select($sel);
        $this->db->from('scli AS a');
        $this->db->join('zona AS b', 'a.zona=b.codigo', 'left');
        $this->db->where('a.cliente', $cliente);
        $qdes = $this->db->get();
        if ($qdes->num_rows() > 0) {
            $rdes = $qdes->row();
        } else {
            $rdes = new stdClass();
            $rdes->mmargen = 0;
            $rdes->margen = 0;
        }
        // Campos para el detalle
        $i = 0;
        $sel = array('a.codigo', 'a.descrip', 'a.existen', 'a.marca', 'a.iva', 'e.sinv_id', 'ROUND(IF(formcal="U",ultimo,IF(formcal="P",pond,GREATEST(ultimo,pond)))*(100+a.mmargen)/100,2) AS precio', 'IF(formcal="U",ultimo,IF(formcal="P",pond,GREATEST(ultimo,pond))) AS costo', 'a.mmargen', 'a.mmargenplus', 'c.margen AS DM', 'd.margen AS DG', 'a.escala1', 'a.pescala1', 'a.escala2', 'a.pescala2', 'a.escala3', 'a.pescala3');
        $this->db->distinct();
        $this->db->select($sel);
        $this->db->from('sinv AS a');
        $this->db->join('sinvfot AS e', 'a.id=e.sinv_id', 'left');
        $this->db->where('a.activo', 'S');
        $this->db->where('a.tipo', 'Articulo');
        $this->db->orderby('a.marca');
        $this->db->orderby('a.descrip');
        $numero = $edit->get_from_dataobjetct('numero');
        if ($numero !== false) {
            $dbnumero = $this->db->escape($numero);
            $this->db->join('itpfac AS b', 'a.codigo=b.codigoa AND b.numa=' . $dbnumero);
        }
        $this->db->join('marc AS c', 'a.marca=c.marca');
        $this->db->join('grup AS d', 'a.grupo=d.grupo');
        $renglones = $this->datasis->traevalor('PFACMAYRENGLONES', 'Limites de renglones en el pedido al mayor');
        if (empty($renglones)) {
            $renglones = 300;
        }
        $this->db->limit($renglones);
        $query = $this->db->get();
        foreach ($query->result() as $row) {
            $obj = 'codigoa_' . $i;
            $edit->{$obj} = new hiddenField('C&oacute;digo <#o#>', $obj);
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->size = 12;
            $edit->{$obj}->db_name = 'codigoa';
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->rule = 'callback_chcodigoa';
            $edit->{$obj}->insertValue = $row->codigo;
            $obj = 'desca_' . $i;
            $desca = ucfirst(strtolower($row->descrip));
            if (!empty($row->sinv_id)) {
                $urldir = $this->config->slash_item('base_url') . 'images/foto.gif';
                $desca .= ' <img src="' . $urldir . '" onclick="verimage(\'' . $row->sinv_id . '\')">';
            }
            $edit->{$obj} = new freeField($obj, $obj, $desca);
            $edit->{$obj}->ind = $i;
            $obj = 'pexisten_' . $i;
            $edit->{$obj} = new freeField($obj, $obj, $row->existen);
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->pointer = true;
            $obj = 'cana_' . $i;
            $edit->{$obj} = new inputField('Cantidad <#o#>', $obj);
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->db_name = 'cana';
            $edit->{$obj}->css_class = 'inputnum';
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->maxlength = 10;
            $edit->{$obj}->size = 5;
            $edit->{$obj}->autocomplete = false;
            $edit->{$obj}->style = "height:25px;font-size:14";
            $edit->{$obj}->onkeyup = "cescala('{$i}')";
            $edit->{$obj}->rule = "callback_chescala[{$i}]";
            $obj = 'pmarca_' . $i;
            $edit->{$obj} = new inputField('', $obj);
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->db_name = 'pmarca';
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->pointer = true;
            $edit->{$obj}->insertValue = $row->marca;
            $obj = 'preca_' . $i;
            $edit->{$obj} = new inputField('Precio <#o#>', $obj);
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->db_name = 'preca';
            $edit->{$obj}->css_class = 'inputnum';
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->type = 'inputhidden';
            $edit->{$obj}->insertValue = $row->precio;
            $edit->{$obj}->rule = 'positive|callback_chpreca[<#i#>]';
            $obj = 'itiva_' . $i;
            $edit->{$obj} = new hiddenField('', $obj);
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->db_name = 'iva';
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->insertValue = $row->iva;
            $obj = 'dxapli_' . $i;
            $edit->{$obj} = new autoUpdateField('dxapli', '0', '0');
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->ind = $i;
            $obj = 'dxm_' . $i;
            if ($row->DM > 0) {
                $edit->{$obj} = new checkboxField('dxm', $obj, $row->DM, '0');
                $edit->{$obj}->insertValue = 0;
                $edit->{$obj}->onchange = "cprecio('{$i}')";
            } else {
                $edit->{$obj} = new autoUpdateField('dxm', '0', '0');
            }
            $edit->{$obj}->db_name = 'dxm';
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->rel_id = 'itpfac';
            $obj = 'dxg_' . $i;
            if ($row->DG > 0) {
                $edit->{$obj} = new checkboxField('dxg', $obj, $row->DG, '0');
                $edit->{$obj}->insertValue = 0;
                $edit->{$obj}->onchange = "cprecio('{$i}')";
            } else {
                $edit->{$obj} = new autoUpdateField('dxg', '0', '0');
            }
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->db_name = 'dxg';
            $edit->{$obj}->rel_id = 'itpfac';
            $obj = 'dxz_' . $i;
            if ($rdes->margen > 0) {
                $edit->{$obj} = new checkboxField('dxz', $obj, $rdes->margen, '0');
                $edit->{$obj}->insertValue = 0;
                $edit->{$obj}->onchange = "cprecio('{$i}')";
            } else {
                $edit->{$obj} = new autoUpdateField('dxz', '0', '0');
            }
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->db_name = 'dxz';
            $edit->{$obj}->ind = $i;
            $obj = 'dxc_' . $i;
            if ($rdes->mmargen > 0) {
                $edit->{$obj} = new checkboxField('dxe', $obj, $rdes->mmargen, '0');
                $edit->{$obj}->insertValue = 0;
                $edit->{$obj}->onchange = "cprecio('{$i}')";
            } else {
                $edit->{$obj} = new autoUpdateField('dxe', '0', '0');
            }
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->db_name = 'dxc';
            $edit->{$obj}->ind = $i;
            $obj = 'dxp_' . $i;
            if ($row->mmargenplus > 0) {
                $edit->{$obj} = new checkboxField('dxp', $obj, $row->mmargenplus, '0');
                $edit->{$obj}->insertValue = 0;
                $edit->{$obj}->onchange = "cprecio('{$i}')";
            } else {
                $edit->{$obj} = new autoUpdateField('dxp', '0', '0');
            }
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->db_name = 'dxp';
            $edit->{$obj}->ind = $i;
            $p_es = 0;
            for ($u = 1; $u < 4; $u++) {
                $nom = "escala{$u}";
                $obj = "{$nom}_{$i}";
                $edit->{$obj} = new hiddenField('', $obj);
                $edit->{$obj}->insertValue = $row->{$nom};
                $edit->{$obj}->rel_id = 'itpfac';
                $edit->{$obj}->db_name = 'sinv' . $nom;
                $edit->{$obj}->ind = $i;
                $edit->{$obj}->pointer = true;
                $nom = "pescala{$u}";
                $obj = "{$nom}_{$i}";
                $edit->{$obj} = new hiddenField('', $obj);
                $edit->{$obj}->insertValue = $row->{$nom};
                $edit->{$obj}->rel_id = 'itpfac';
                $edit->{$obj}->db_name = 'sinv' . $nom;
                $edit->{$obj}->ind = $i;
                $edit->{$obj}->pointer = true;
                $p_es += $row->{$nom};
            }
            $gdxe = $edit->get_from_dataobjetct_rel('itpfac', 'dxe', $i);
            $obj = 'dxe_' . $i;
            if ($p_es > 0) {
                $gdxe = $edit->get_from_dataobjetct_rel('itpfac', 'dxe', $i);
                $edit->{$obj} = new checkboxField('dxe', $obj, $gdxe == false ? '0' : $gdxe, '0');
                $edit->{$obj}->onchange = "cescala('{$i}')";
            } else {
                $edit->{$obj} = new autoUpdateField('dxp', '0', '0');
            }
            //$edit->$obj->insertValue = 0;
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->db_name = 'dxe';
            $edit->{$obj}->ind = $i;
            $obj = 'sinvmmargen_' . $i;
            $edit->{$obj} = new hiddenField('', $obj);
            $edit->{$obj}->insertValue = $row->mmargen;
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->db_name = 'sinvmmargen';
            $edit->{$obj}->ind = $i;
            $edit->{$obj}->pointer = true;
            $obj = 'costo_' . $i;
            $edit->{$obj} = new hiddenField('', $obj);
            $edit->{$obj}->insertValue = $row->costo;
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->db_name = 'costo';
            $edit->{$obj}->ind = $i;
            $obj = 'tota_' . $i;
            $edit->{$obj} = new hiddenField('', $obj);
            $edit->{$obj}->insertValue = 0;
            $edit->{$obj}->rel_id = 'itpfac';
            $edit->{$obj}->db_name = 'tota';
            $edit->{$obj}->ind = $i;
            $i++;
        }
        $sinvcana = $i;
        // fin de campos para detalle
        $edit->ivat = new inputField('Impuesto', 'iva');
        $edit->ivat->css_class = 'inputnum';
        $edit->ivat->type = 'inputhidden';
        $edit->ivat->readonly = true;
        $edit->ivat->size = 10;
        $edit->totals = new inputField('Sub-Total', 'totals');
        $edit->totals->css_class = 'inputnum';
        $edit->totals->type = 'inputhidden';
        $edit->totals->readonly = true;
        $edit->totals->size = 10;
        $edit->totalg = new inputField('Monto Total', 'totalg');
        $edit->totalg->css_class = 'inputnum';
        $edit->totalg->type = 'inputhidden';
        $edit->totalg->readonly = true;
        $edit->totalg->size = 10;
        $edit->estampa = new autoUpdateField('estampa', date('Ymd'), date('Ymd'));
        $edit->hora = new autoUpdateField('hora', date('H:i:s'), date('H:i:s'));
        $edit->usuario = new autoUpdateField('usuario', $this->secu->usuario(), $this->secu->usuario());
        $control = $this->rapyd->uri->get_edited_id();
        if ($edit->getstatus() == 'show') {
            $action = "javascript:window.location='" . site_url($this->url . 'filterscli') . "'";
            $edit->button('btn_add', 'Agregar', $action, 'TR');
        }
        $edit->buttons('save', 'undo', 'modify', 'delete', 'back');
        if ($this->genesal) {
            $edit->build();
            $conten['cana'] = $sinvcana;
            $conten['form'] =& $edit;
            $conten['title'] = heading('Pedidos No. ' . $edit->numero->value);
            $data['head'] = style('mayor/estilo.css');
            $data['script'] = script('jquery.js');
            $data['script'] .= phpscript('nformat.js');
            $data['content'] = $this->load->view('view_pfaclitemayor', $conten, true);
            $data['title'] = '';
            $this->load->view('view_ventanas_lite', $data);
        } else {
            $edit->on_save_redirect = false;
            $edit->build();
            if ($edit->on_success()) {
                echo 'Pedido Guardado';
            } elseif ($edit->on_error()) {
                echo html_entity_decode(preg_replace('/<[^>]*>/', '', $edit->error_string));
            }
        }
    }