コード例 #1
0
ファイル: pfaclitemayor.php プロジェクト: codethics/proteoerp
    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));
            }
        }
    }