function jsaAmortizarLetras($persona, $credito, $letra, $amortizable)
{
    $NLetra = $letra + 1;
    $xCred = new cCredito($credito);
    $xCred->init();
    if ($xCred->isAFinalDePlazo() == false) {
        $xPlan = new cPlanDePagos();
        $xPlan->initByCredito($credito);
        $msg = "";
        $DPlan = $xPlan->getLetrasInArray(OPERACION_CLAVE_PLAN_CAPITAL, $NLetra);
        $amortizable = setNoMenorQueCero($amortizable);
        for ($ixletra = $NLetra; $ixletra <= $xCred->getPagosAutorizados(); $ixletra++) {
            if (isset($DPlan[$ixletra])) {
                $monto = setNoMenorQueCero($DPlan[$ixletra]);
                if ($amortizable > 0) {
                    if ($amortizable >= $monto) {
                        //cancelar
                        $xPlan->setNeutralizarParcialidad($ixletra);
                    } else {
                        $xPlan->setActualizarParcialidad($ixletra, $monto - $amortizable, false, false);
                    }
                }
                $msg .= "WARN\t  {$ixletra} --- {$amortizable} {$monto};\r\n";
                $amortizable -= $monto;
            }
        }
        $msg .= $xPlan->getMessages();
        if (MODO_DEBUG == true) {
            setLog($msg);
        }
    }
}
 function setCreditoPagado($fecha = false)
 {
     $fecha = $fecha == false ? fechasys() : $fecha;
     //efectuar las operaciones de cierre de credito
     if ($this->getPeriocidadDePago() == CREDITO_TIPO_PERIOCIDAD_FINAL_DE_PLAZO) {
         $idPlan = $this->getNumeroDePlanDePagos();
         if (isset($idPlan) and $idPlan > 1) {
             $xPlan = new cPlanDePagos($idPlan);
             $xPlan->setEliminar();
             $this->mMessages .= $xPlan->getMessages();
         }
     }
     $this->setUpdate(array("saldo_conciliado" => 0, "saldo_actual" => 0, "saldo_vencido" => 0, "fecha_conciliada" => $fecha, "fecha_revision" => $fecha, "ultimo_periodo_afectado" => $this->getPagosAutorizados(), "sdo_int_ant" => 0, "fecha_ultimo_mvto" => $fecha));
 }
             $capital = $xT->cFloat($cont[5], 2);
             $total_parcial = $xT->cFloat($cont[6], 2);
             $saldo_inicial = $xT->cFloat($cont[2], 2);
             $saldo_final = $xT->cFloat($cont[7], 2);
             $xPlan->setMontoOperado($total_parcial);
             $xPlan->setSaldoInicial($saldo_inicial);
             $xPlan->setSaldoFinal($saldo_final);
             $xPlan->addMvtoDeInteres($interes, $fecha, $periodo);
             $xPlan->addMvtoDeIVA($fecha, $periodo);
             $xPlan->addMvtoDeCapital($capital, $fecha, $periodo);
         } else {
             $msg .= "WARN\tLINEA OMITIDA\r\n";
         }
     }
     $msg .= $xCred->getMessages();
     $msg .= $xPlan->getMessages();
     $mObj = $xPlan->getObjRec();
     if ($mObj != null) {
         $mObj->setFinalizarRecibo(true);
         $msg .= $mObj->getMessages(OUT_TXT);
     }
 }
 $msg .= $xFil->getMessages();
 if (MODO_DEBUG == true) {
     $xFl = new cFileLog();
     $xFl->setWrite($msg);
     $xFl->setClose();
     $xFRM->addHTML($xFl->getLinkDownload("archivo de eventos"));
 } else {
     echo JS_CLOSE;
 }