/**
  * Funcion que genera el Credito Reconvenido
  * @param float $monto_reconvenido	Monto del capital por el Cual se reconviene el credito
  * @param float $interes_reconvenido	Monto del interes por el Cual se reconviene el credito
  *
  * @return boolean false/true 			segun el resultado de la funcion
  */
 function setReconvenido($monto_reconvenido, $interes_reconvenido, $tasa_reconvenida, $periocidad_reconvenida, $pagos_reconvenidos, $observaciones = "", $fecha = false, $recibo = false, $FormaDePago = false, $producto = false, $conservarPlan = false)
 {
     $sucess = false;
     $fecha = $fecha == false ? fechasys() : $fecha;
     $producto = $producto == false ? $this->getClaveDeProducto() : $producto;
     $plan_de_pagos = $this->getNumeroDePlanDePagos();
     if ($this->mCreditoInicializado == true) {
         $dias = $periocidad_reconvenida * $pagos_reconvenidos;
         $vence = sumardias($fecha, $dias);
         $credito = $this->getNumeroDeCredito();
         //$interes_normal = ($saldo_historico * $dias_normales * ($tasa_interes * $factor_interes)) / EACP_DIAS_INTERES;
         $interes_normal = 0;
         $FInteres = new cFormula("interes_normal");
         $saldo_historico = $this->getMontoAutorizado();
         // $monto_reconvenido;
         $saldo_actual = $this->getSaldoActual();
         //$monto_reconvenido;
         $dias_normales = $dias;
         $tasa_interes = $tasa_reconvenida;
         $factor_interes = 1;
         if ($this->mIVAIncluido == "1") {
             $factor_interes = 1 / (1 + $this->getTasaIVA());
         }
         //eval( $FInteres->getFormula() );
         //Agregar el SQL
         $xRC = new cCreditos_reconvenio();
         $idconvenio = $xRC->query()->getLastID();
         $xRC->idcreditos_reconvenio($idconvenio);
         $xClon = $this->setClonar($saldo_actual, $saldo_historico);
         $xRC->numero_solicitud($xClon);
         $xRC->codigo($this->getClaveDePersona());
         $xRC->credito_origen($this->getNumeroDeCredito());
         $xRC->dias($dias);
         $xRC->eacp(EACP_CLAVE);
         $xRC->fecha_reconvenio($fecha);
         $xRC->idusuario(getUsuarioActual());
         $xRC->interes_diario_re($interes_normal);
         $xRC->interes_pendiente($interes_reconvenido);
         $xRC->monto_reconvenido($monto_reconvenido);
         $xRC->pagos_reconvenidos($pagos_reconvenidos);
         $xRC->periocidad_reconvenida($periocidad_reconvenida);
         $xRC->sucursal(getSucursal());
         $xRC->tasa_reconvenida($tasa_reconvenida);
         $xRC->vence($vence);
         $x = $xRC->query()->insert()->save();
         if ($x != false) {
             //Modificar movimientos
             $observaciones = $observaciones == "" ? "" : "RNV {$idconvenio}. {$credito}|{$xClon}";
             //Agregare el Movimiento
             $cRecReest = new cReciboDeOperacion(RECIBOS_TIPO_ESTADISTICO, true, $recibo);
             if ($recibo == false) {
                 $cRecReest->setNuevoRecibo($this->mNumeroSocio, $xClon, $fecha, 1, RECIBOS_TIPO_ESTADISTICO, $observaciones, DEFAULT_CHEQUE, TESORERIA_COBRO_NINGUNO, DEFAULT_RECIBO_FISCAL, $this->mGrupoAsociado);
             }
             /*
              * No generar poliza, ya que no ha cumplido el pago sostenido
              */
             //agregar Movimiento por el Monto Reconvenido
             $cRecReest->setNuevoMvto($fecha, $monto_reconvenido, OPERACION_CLAVE_REESTRUCTURA, 1, $observaciones, 1);
             $this->mMessages .= $cRecReest->getMessages();
             //agregar el Movimiento por Intereses no pagados
             $xCredClon = new cCredito($xClon);
             $xCredClon->init();
             //Actualizar el saldo y demas
             $cEsUp = array($this->obj()->tipo_autorizacion()->get() => CREDITO_AUTORIZACION_REESTRUCTURADO, $this->obj()->saldo_vencido()->get() => 0);
             $xCredClon->setUpdate($cEsUp);
             $this->setUpdate($cEsUp);
             $xCredClon->setAbonoCapital($this->getSaldoActual(), $this->mParcialidadActual, DEFAULT_CHEQUE, TESORERIA_COBRO_NINGUNO, DEFAULT_RECIBO_FISCAL, $observaciones);
             $this->mMessages .= $xCredClon->getMessages();
             $sucess = true;
             $this->mMessages .= $this->setChangeNumeroDeSolicitud($xClon, true);
             //Cambiar Producto
             $this->mMessages .= $this->setCambioProducto($producto, $tasa_reconvenida);
             //cambiar fecha de ministracion
             $this->mMessages .= $this->setCambiarFechaMinistracion($fecha);
             //Cambiar Monto Ministrado
             //
             $this->mMessages .= $this->setCambiarMontoAutorizado($monto_reconvenido, true);
             //Ministrar
             $this->setForceMinistracion();
             $this->setMinistrar(DEFAULT_RECIBO_FISCAL, DEFAULT_CHEQUE, $monto_reconvenido, DEFAULT_CUENTA_BANCARIA, 0, 0, "REESTRUCTURA DE CREDITO {$xClon} ", $fecha, false, TESORERIA_PAGO_NINGUNO);
             if ($this->getTasaDeInteres() != $tasa_reconvenida) {
                 $this->mMessages .= $this->setCambiarTasaNormal($tasa_reconvenida);
             }
             $this->mMessages .= $this->setCambiarPeriocidad($periocidad_reconvenida, $pagos_reconvenidos, $FormaDePago);
             $this->mMessages .= $this->setCambiarMontoMinistrado($monto_reconvenido, true);
             if ($conservarPlan == true) {
                 if ($plan_de_pagos != false) {
                     //$xRec		= new cReciboDeOperacion(RECIBOS_TIPO_PLAN_DE_PAGO, true, $plan_de_pagos);
                     //$xRec->init();
                     //$xRec->setDocumento($this->getNumeroDeCredito());
                     $xPlan = new cPlanDePagos($plan_de_pagos);
                     //$xPlan->init();
                     $xPlan->setCambiarRelacionados($credito);
                     $this->mMessages .= $xPlan->getMessages(OUT_TXT);
                 }
             }
         }
         //END IF
         //$this->setReestructurarIntereses();
     }
     //END Credito Inicializado
     return $sucess;
 }
     if (strtotime($rw["fecha_operacion"]) < strtotime($fecha_inicial) or strtotime($rw["fecha_operacion"]) > strtotime($fecha_final)) {
         $mtd = "";
     }
     $mes = $xF->mes();
     $trs .= $mtd;
     $i++;
     //Imprime en pantalla el Aviso de NO COINCIDENCIA
 }
 //$sdo1		=
 if (round($sdo, 2) != round($sdoTemp, 2)) {
     if (FORCE_CUADRE_EN_OPERACIONES == true) {
         if ($cFC->getEstadoActual() == CREDITO_ESTADO_AUTORIZADO or $cFC->getEstadoActual() == CREDITO_ESTADO_SOLICITADO) {
             $sdo = 0;
         }
         $arrUp = array("saldo_actual" => $sdo);
         $cFC->setUpdate($arrUp);
     }
     if ($cFC->getEstadoActual() != CREDITO_ESTADO_AUTORIZADO and $cFC->getEstadoActual() != CREDITO_ESTADO_SOLICITADO) {
         if ($output != OUT_EXCEL) {
             //echo "<style> body { background-image: url(\"../images/error_saldos.png\");	background-repeat: repeat; } </style>";
         }
     }
 }
 $tSdos += $sdo;
 @mysql_free_result($rs);
 //Imprime la Tabla de Mvtos
 if ($PieInts != SYS_NINGUNO) {
     $IntAct = $cFC->getInteresDevengado();
     $IntDevNorm = $cFC->getInteresNormalDevengado();
     $IntDevMor = $cFC->getInteresMoratorioDev();
     $IntPerNom = $IntAct[SYS_INTERES_NORMAL];
function Common_c5fe0408555dbf392918c6f77a4d01b2($params)
{
    $stdDiv = STD_LITERAL_DIVISOR;
    $DPar = explode($stdDiv, $params, 10);
    //mensajes
    //grupo
    $xTip = new cTipos();
    //
    $socio = $xTip->cInt($DPar[0]);
    $credito = $xTip->cInt($DPar[1]);
    $letra = $xTip->cInt($DPar[2]);
    $capital = $xTip->cFloat($DPar[3]);
    $interes = $xTip->cFloat($DPar[4]);
    $iva = $xTip->cFloat($DPar[5]);
    $ahorro = $xTip->cFloat($DPar[6]);
    $nota = $xTip->cChar($DPar[7]);
    $numero = $xTip->cInt($DPar[8]);
    $limit = $xTip->cInt($DPar[9]);
    $msg = "====================== MOVIMIENTO {$numero} DE {$limit} ====================\r\n";
    //Datos del Credito
    $Cred = new cCredito($credito, $socio);
    $Cred->initCredito();
    $DCred = $Cred->getDatosDeCredito();
    $saldo = $DCred["saldo_actual"] - $capital;
    $contrato_captacion = $DCred["contrato_corriente_relacionado"];
    $grupo = $DCred["grupo_asociado"];
    $msg .= $Cred->getMessages();
    if (isset($_SESSION["recibo_en_proceso"])) {
        $recibo = $_SESSION["recibo_en_proceso"];
        $fecha = fechasys();
        $_SESSION["total_recibo_en_proceso"] += $capital + $interes + $ahorro;
        $xRec = new cReciboDeOperacion(200, false, $recibo);
        $xRec->setNumeroDeRecibo($recibo, true);
        $xRec->setNumeroDeRecibo($recibo, true);
        $DRec = $xRec->getDatosInArray();
        $cheque = $DRec["cheque_afectador"];
        $tipopago = $DRec["tipo_pago"];
        $recibofiscal = $DRec["recibo_fiscal"];
        $xRec->setGenerarPoliza();
        $msg .= "{$socio}\t{$credito}\tCREDITO\tMovimiento {$i} del Credito {$credito} del Socio {$socio} con Saldo {$saldo}\r\n ";
        $msg .= "{$socio}\t{$credito}\tMONTOS\tCapital: {$capital} || Interes: {$interes} || Ahorro: {$ahorro} \r\n";
        //Agregando Capital
        if ($capital > 0) {
            $xRec->setNuevoMvto($fecha, $capital, 120, $letra, $nota . ";SDO:" . $saldo, 1, TM_ABONO, $socio, $credito);
            $arrCred = array("saldo_actual" => $saldo);
            $Cred->setUpdate($arrCred);
        }
        //Agregando Interes
        if ($interes > 0) {
            $xRec->setNuevoMvto($fecha, $interes, 140, $letra, $nota, 1, TM_ABONO, $socio, $credito);
        }
        //agregando el IVA
        if ($interes > 0) {
            $xRec->setNuevoMvto($fecha, $iva, 151, $letra, $nota, 1, TM_ABONO, $socio, $credito);
        }
        //Agregando Ahorro
        if ($ahorro > 0) {
            $xC = new cCuentaALaVista($contrato_captacion);
            if (!isset($contrato_captacion) or $contrato_captacion == CTA_GLOBAL_CORRIENTE or $contrato_captacion == 0) {
                $contrato_captacion = $xC->setNuevaCuenta(2, 1, $socio, "CUENTA_AUTOMATICA", $credito);
                $msg .= "{$socio}\t{$credito}\tNuevaCta\tse dio de alta a la cuenta {$contrato_captacion}\r\n";
                //2011-nov-30 se agrego la actualizacion del contrato relacionado
                $arrCred = array("contrato_corriente_relacionado" => $contrato_captacion);
                $Cred->setUpdate($arrCred);
            }
            $xC = new cCuentaALaVista($contrato_captacion);
            $xC->setSocioTitular($socio);
            $xC->setReciboDeOperacion($recibo);
            $xC->setDeposito($ahorro, $cheque, $tipopago, $recibofiscal, $nota, $grupo, $fecha, $recibo);
            $msg .= $xC->getMessages("txt");
            $msg .= "{$socio}\t{$credito}\tAhorro\t El Saldo Quedo en " . $xC->getNuevoSaldo() . "\r\n";
        }
        $msg .= "{$socio}\t{$credito}\tObservacion\t {$nota}\r\n";
        $msg .= $xRec->getMessages("txt");
    } else {
        $msg .= "NO_SE_HA_DEFINIDO_UN_RECIBO";
    }
    $xLog = new cFileLog("log_de_recibo_" . $recibo);
    $xLog->setWrite($msg);
    $xLog->setClose();
    $MsgEnd = "";
    if ($numero == $limit) {
        $xRec->setForceUpdateSaldos();
        $xRec->setFinalizarRecibo(true);
        //$MsgEnd		.= "**** proceso terminado ****";
    }
    //retorna el id del control de origen para neutralizar
    return "-{$numero}";
}
 $dias_normales = $dias_netos;
 $interes_diario = $total_de_intereses / $dias_netos;
 //===================================================================================================================================
 $OProd = $xCred->getOProductoDeCredito();
 $OPer = $xCred->getOPeriocidad();
 $fecha_de_mora = $xF->setSumarDias($OProd->getDiasTolerados() + 1, $fecha_de_vencimiento);
 $vencimiento_dinamico = $xF->setSumarDias($OPer->getDiasToleradosEnVencer(), $fecha_de_mora);
 $arrUpdate = array("plazo_en_dias" => $dias_netos, "dias_autorizados" => $dias_netos, "fecha_vencimiento" => $fecha_de_vencimiento, "monto_parcialidad" => $primera_parcialidad, "contrato_corriente_relacionado" => $cuenta_captacion, "tipo_de_pago" => $FormaDePago, "fecha_ministracion" => $fecha_ministracion, "interes_diario" => $interes_diario, "fecha_mora" => $fecha_de_mora, "fecha_vencimiento_dinamico" => $vencimiento_dinamico, "fecha_de_primer_pago" => $fecha_primer_abono);
 if ($xCred->getSaldoActual() == $xCred->getMontoAutorizado() or $xCred->getEsAfectable() == false) {
     $arrUpdate["ultimo_periodo_afectado"] = SYS_CERO;
 }
 //Pagos de solo interes
 if ($xCred->getPagosSinCapital() == true) {
     $arrUpdate["ultimo_periodo_afectado"] = $ultima_parcialidad;
 }
 $xCred->setUpdate($arrUpdate);
 // -------------------------------------------- Actualiza el Saldo del Recibo
 $xCred->init();
 $xFRM->addHTML($xCred->getFicha(true, "", false, true));
 $xFRM->addHTML($xPlan->getFicha());
 $sqlparc = "SELECT periodo_socio AS 'parcialidad', MAX(fecha_afectacion) AS 'fecha_de_pago', SUM((afectacion_real * valor_afectacion)) AS 'total_parcialidad',\n\t\t\t\t\t MAX(saldo_anterior) AS 'saldo_anterior_', MIN(saldo_actual) AS 'saldo_actual_' FROM operaciones_mvtos\n\t\t\t\tWHERE recibo_afectado={$idrecibo} GROUP BY periodo_socio ORDER BY periodo_socio";
 $cTMvtos = new cTabla($sqlparc);
 $cTMvtos->setWidth();
 $xFRM->addHTML($cTMvtos->Show());
 $urctr = $xCred->getPathDelContrato();
 $urlsend = $DProducto->getPathPagare($solicitud);
 $xFRM->addAviso("Dias Totales: {$dias_netos} -- Vence: {$fecha_de_vencimiento}");
 $xFRM->addToolbar($xBtn->getBasic($xFRM->lang("imprimir", "plan de pagos"), "jsImprimirPlanPagos({$idrecibo})", "lista", "cm1", false));
 $xFRM->addToolbar($xBtn->getBasic($xFRM->lang("imprimir", "orden de desembolso"), "jsImprimirOrdenDesembolso()", "lista", "cm2", false));
 $xFRM->addToolbar($xBtn->getBasic($xFRM->lang(array("imprimir", "CONTRATO de", "credito")), "jsImprimirContrato()", "lista", "cm3", false));
 $xFRM->addToolbar($xBtn->getBasic($xFRM->lang("imprimir", "recibo"), "jsImprimirReciboDePrestamo()", "lista", "cm4", false));
if ($xCred->getPagosAutorizados() <= $nueva_parcialidad) {
    if ($nuevo_saldo > TOLERANCIA_SALDOS) {
        $msg .= "WARN\tLa parcialidad no se Actualiza, el saldo queda a {$nuevo_saldo} de la Parcialidad {$nueva_parcialidad}\r\n";
        $actualizar_parcialidad = false;
    }
}
if ($nueva_parcialidad < $xCred->getPeriodoActual()) {
    $msg .= "WARN\tLa Parcialidad {$nueva_parcialidad} no se mueve por ser menor al actual " . $xCred->getSaldoActual() . "\r\n";
    $actualizar_parcialidad = false;
}
if ($actualizar_parcialidad == true) {
    $arrUCredito["ultimo_periodo_afectado"] = $nueva_parcialidad;
}
$arrUCredito["interes_normal_pagado"] = $xCred->getInteresNormalPagado() + $baseM140;
$arrUCredito["interes_moratorio_pagado"] = $xCred->getInteresMoratorioPagado() + $baseM141;
$xCred->setUpdate($arrUCredito);
//---------------------------- Agrega Movimientos extras ---------------------------------
if ($interesanticipado != 0) {
    $tds .= "<tr>\n                <th></th>\n                <td>Compensacion Intereses Cobrado por Ant</td>\n                <td class='mny'>" . getFMoney($interesanticipado) . "</td>\n            </tr>";
    $SQL_ICA = "UPDATE operaciones_mvtos SET estatus_mvto=60, docto_neutralizador={$recibo_pago} WHERE tipo_operacion=351 AND socio_afectado={$socio} AND estatus_mvto=30";
    my_query($SQL_ICA);
    //setPolizaProforma($recibo_pago, 352, $interesanticipado, $socio, $solicitud, TM_CARGO);
}
//FIXME: Verificar validez
if ($interescorriente != 0) {
    $tds .= "<tr><th></th>\n                <td>Recalculo de Interes Corriente</td>\n                <td class='mny'>" . getFMoney($interescorriente) . "</td></tr>";
    //setPolizaProforma($recibo_pago, 436, $interescorriente, $socio, $solicitud, TM_ABONO);
}
if ($interesmoroso != 0) {
    $tds .= "<tr><th></th>\n                <td>Recalculo de Interes Moroso</td>\n                <td class='mny'>" . getFMoney($interesmoroso) . "</td></tr>";
    //setPolizaProforma($recibo_pago, 436, $interesmoroso, $socio, $solicitud, TM_ABONO);