Example #1
0
 function anular($numero)
 {
     $this->rapyd->load('dataobject');
     $error = '';
     $dop = new DataObject("ingpresup");
     $do = new DataObject("ingresos");
     $do->rel_one_to_many('ingmbanc', 'ingmbanc', array('numero' => 'ingreso'));
     $do->rel_one_to_many('itingresos', 'itingresos', array('numero' => 'numero'));
     $do->rel_pointer('ingmbanc', 'mbanc', 'ingmbanc.codmbanc=mbanc.id', "mbanc.status statusm,mbanc.codbanc codbancm,mbanc.destino destinom,mbanc.tipo_doc tipo_docm,mbanc.cheque chequem,mbanc.fecha fecham,mbanc.monto montom,mbanc.benefi benefim,mbanc.observa observam");
     $do->load($numero);
     $status = $do->get('status');
     if ($status == 'C') {
         for ($i = 0; $i < $do->count_rel('itingresos'); $i++) {
             $codigopres = $do->get_rel('itingresos', 'codigopres', $i);
             $monto = $do->get_rel('itingresos', 'monto', $i);
             $dop->load($codigopres);
             $recaudado = $dop->get('recaudado');
             //if($monto>$recaudado)
             //$error.="El Monto ($monto) a devolver es mayor al Recaudado ($recaudado)";
         }
         $ids = array();
         for ($i = 0; $i < $do->count_rel('ingmbanc'); $i++) {
             $mstatus = $do->get_rel_pointer('ingmbanc', 'statusm', $i);
             $codbanc = $do->get_rel_pointer('ingmbanc', 'codbancm', $i);
             $tipo_doc = $do->get_rel_pointer('ingmbanc', 'tipo_docm', $i);
             $fecha = $do->get_rel_pointer('ingmbanc', 'fecham', $i);
             $monto = $do->get_rel_pointer('ingmbanc', 'montom', $i);
             $cheque = $do->get_rel_pointer('ingmbanc', 'chequem', $i);
             $ids[] = $mid = $do->get_rel_pointer('ingmbanc', 'idm', $i);
             $staing = $do->get_rel_pointer('ingmbanc', 'staing', $i);
             if ($mstatus != 'J2') {
                 $error .= "Error, no se puede realizar la operacion para el movimiento {$cheque}";
             }
             //if($staing!='C')
             //$error.="Error, EL movimiento $cheque no ha sido utilizado para un ingreso";
         }
     } elseif ($status == 'P') {
     } else {
         $error .= 'No se puede anular el Ingreso';
     }
     if (empty($error) && $status != 'P') {
         for ($i = 0; $i < $do->count_rel('itingresos'); $i++) {
             $codigopres = $do->get_rel('itingresos', 'codigopres', $i);
             $monto = $do->get_rel('itingresos', 'monto', $i);
             $dop->load($codigopres);
             $recaudado = $dop->get('recaudado');
             $dop->set('recaudado', $recaudado - $monto);
             $dop->save();
         }
         $ids = implode("','", $ids);
         $this->db->simple_query("UPDATE mbanc SET staing='P' WHERE id IN ('{$ids}')");
     }
     if (empty($error)) {
         $this->db->simple_query("UPDATE ingresos SET status='A' WHERE numero={$numero}");
         //$do->set('status','A');
         //$do->save();
         logusu('ingresos', "Anulo Ingreso nro {$numero}");
         redirect($this->url . "dataedit/show/{$numero}");
     } else {
         logusu('cdisp', "Marco como terminado ingreso nro {$numero} con ERROR {$error}");
         $data['content'] = '<div class="error">' . $error . '</div></br>' . anchor($this->url . "dataedit/show/{$numero}", 'Regresar');
         $data['title'] = " {$this->t**s}";
         $data["head"] = $this->rapyd->get_head();
         $this->load->view('view_ventanas', $data);
     }
 }