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); } }